#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define int long long
int mp[410][410];
void solve()
{
memset(mp,0,sizeof mp);
int n,num;
cin>>n>>num;
if(num)
for(int k=0; k<=n-1; k++)
{
int j=1+k;
for(int i=1; i<=n; i++)
{
mp[i][j]=1;
j++;
num--;
if(num==0)
break;
if(j==n+1)
j=1;
}
if(num==0)
break;
}
int ans=0;
int minv=n+1;
int maxv=-1;
for(int i=1; i<=n; i++)
{
int ans1=0;
for(int j=1; j<=n; j++)
if(mp[i][j]==1)
ans1++;
minv=min(minv,ans1);
maxv=max(maxv,ans1);
}
ans+=(maxv-minv)*(maxv-minv);
minv=n+1;
maxv=-1;
for(int j=1; j<=n; j++)
{
int ans1=0;
for(int i=1; i<=n; i++)
if(mp[i][j]==1)
ans1++;
minv=min(minv,ans1);
maxv=max(maxv,ans1);
}
ans+=(maxv-minv)*(maxv-minv);
cout<<ans<<endl;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
cout<<mp[i][j];
cout<<endl;
}
}
signed main()
{
int t;
cin>>t;
while(t--)
solve();
}