#include <bits/stdc++.h>
using namespace std;
using pqboro = priority_queue<long long, vector<long long>, less<long long>>;
using pqchoto =
    priority_queue<long long, vector<long long>, greater<long long>>;
template <typename T>
string toString(T Number) {
  stringstream ss;
  ss << Number;
  return ss.str();
}
template <typename T>
long long toll(T str) {
  stringstream ss;
  ss << str;
  long long num;
  ss >> num;
  return num;
}
const int N = 2e+7;
const int M = 1e9 + 7;
const long long inf = 0x7f7f7f7f7f7f7f7f;
int mxn = 5000;
bool chk[5500];
void fun() {
  for (int i = 4; i < mxn; i += 2) chk[i] = true;
  for (int i = 3; i < mxn; i += 2) {
    if (chk[i] == false) {
      for (int j = ((i) * (i)); j < mxn; j += (i + i)) {
        chk[j] = true;
      }
    }
  }
}
long long a[500][500];
void run_for_tcase() {
  long long n, m, i, j, k, x;
  cin >> n;
  x = n - 1;
  for (i = 0; i < x; ++i)
    for (j = 0; j < x; ++j) a[i][j] = 1;
  k = x;
  for (i = 4;; i++) {
    if (chk[i] == true and chk[i + x] == false) {
      k = i;
      break;
    }
  }
  for (i = 0; i < x; ++i) {
    a[x][i] = k;
    a[i][x] = k;
  }
  x = x * k;
  for (i = 4;; i++) {
    if (chk[i] == true and chk[i + x] == false) {
      a[n - 1][n - 1] = i;
      break;
    }
  }
  for (i = 0; i < n; ++i) {
    for (j = 0; j < n; ++j) cout << a[i][j] << ' ';
    cout << endl;
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  memset(chk, false, sizeof chk);
  fun();
  int tc;
  cin >> tc;
  while (tc--) run_for_tcase();
  return 0;
}
