#include <bits/stdc++.h>
using namespace std;
long long int max(long long int a, long long int b) {
  if (a > b)
    return a;
  else
    return b;
}
long long int gcd(long long int a, long long int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long int lcm(long long int a, long long int b) {
  return (a * b) / gcd(a, b);
}
bool isPowerOfTwo(long long int n) {
  if (n == 0) return false;
  return (ceil(log2(n)) == floor(log2(n)));
}
bool comp(const pair<long long int, bool>& a,
          const pair<long long int, bool>& b) {
  if (a.second != b.second) {
    return a.first < b.first;
  }
  return false;
}
void solve() {
  long long int n, k;
  cin >> n >> k;
  long long int arr[n][n];
  for (long long int i = 0; i < n; i++)
    for (long long int j = 0; j < n; j++) arr[i][j] = 0;
  long long int x = ceil(k * 1.0 / (n * 1.0));
  bool f = 0;
  for (long long int l = 1; l <= x && k; l++) {
    for (long long int i = 0; i < n && k; i++) {
      for (long long int j = 0; j < n && k; j++) {
        if (i + j == n + l - 2 || i + j == l - 2) arr[i][j] = 1, k--;
      }
    }
  }
  long long int ans = 0, rma = 0, rmi = INT_MAX, cma = 0, cmi = INT_MAX;
  for (long long int i = 0; i < n; i++) {
    long long int c = 0;
    for (long long int j = 0; j < n; j++)
      if (arr[i][j]) c++;
    rma = max(rma, c);
    rmi = min(rmi, c);
  }
  for (long long int i = 0; i < n; i++) {
    long long int c = 0;
    for (long long int j = 0; j < n; j++)
      if (arr[j][i]) c++;
    cma = max(cma, c);
    cmi = min(cmi, c);
  }
  ans = (pow(rma - rmi, 2) + pow(cma - cmi, 2));
  cout << ans << endl;
  for (long long int i = 0; i < n; i++) {
    for (long long int j = 0; j < n; j++) cout << arr[i][j];
    cout << "\n";
  }
}
void solve1() {
  long long int n;
  cin >> n;
  if (n & 1)
    cout << "NO\n";
  else {
    n /= 2;
    if (n & 1)
      cout << "NO\n";
    else
      cout << "YES\n";
  }
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int t = 1;
  cin >> t;
  while (t--) {
    solve();
  }
  return 0;
}
