#include <iostream>

using namespace std;
bool  postignutaNirvana(int a[], int b[], int n)
{
    for(int i = 0; i < n; i ++)
        if(a[i] % (i+1) != 0 ||  b[i] % (i+1) != 0)
            return false;
    return true;
}
int main()
{
    int t;
    cin>>t;
    for(int i = 0; i < t; i++)
    {
        int n;
        int m;
        cin>>n>>m;
        int a[n][m];
        if(n != m)
            cout<<"-1";
        else
        {
            for(int j = 0;  j < n; j ++)
            {
                for(int k = 0; k < m; k ++)
                {
                    if(k == 0  || j == 0 || k == n-1 || j == n -1)
                        a[j][k] = 1;
                    else if((k+1)%(j+1) == 0 || (j+1)%(k+1) == 0)
                        a[j][k] = 1;
                    else
                        a[j][k] = 0;
                }
            }
            for(int j = 0;  j < n; j ++)
            {
                for(int k = 0; k < m; k ++)
                {
                    cout<<a[j][k]<<' ';
                }
                cout<<endl;
            }
        }

    }
    return 0;
}