#include <bits/stdc++.h>
using namespace std;
int f[30][30];
bool flag[30];
int read() {
  int ans = 0;
  char ch = getchar(), last = ' ';
  while (ch < '0' || ch > '9') {
    last = ch;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    ans = ans * 10 + ch - '0';
    ch = getchar();
  }
  if (last == '-') ans = -ans;
  return ans;
}
int main(int argc, char const *argv[]) {
  int n;
  n = read();
  f[1][2] = f[2][1] = 3;
  f[1][3] = f[3][1] = 4;
  f[1][4] = f[4][1] = 6;
  f[1][5] = f[5][1] = 9;
  f[1][6] = f[6][1] = 14;
  f[1][7] = f[7][1] = 22;
  f[1][8] = f[8][1] = 31;
  f[1][9] = f[9][1] = 40;
  f[1][10] = f[10][1] = 54;
  f[1][11] = f[11][1] = 75;
  f[1][12] = f[12][1] = 96;
  f[1][13] = f[13][1] = 129;
  f[1][14] = f[14][1] = 153;
  f[1][15] = f[15][1] = 183;
  f[1][16] = f[16][1] = 213;
  f[1][17] = f[17][1] = 259;
  f[1][18] = f[18][1] = 317;
  f[1][19] = f[19][1] = 375;
  f[1][20] = f[20][1] = 414;
  f[2][3] = f[3][2] = 5;
  for (int j = 4; j <= n; j++) {
    for (int i = 2; i < j; i++) {
      if (i == 2) f[2][j] = f[j][2] = f[2][3] + f[1][j] - f[1][3];
      if (i != 2) f[i][j] = f[j][i] = f[2][i] + f[1][j] - f[1][2];
    }
    if (!f[1][j + 1]) f[1][j + 1] = f[j + 1][1] = f[j - 1][j] + 1;
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) cout << f[i][j] << " ";
    cout << endl;
  }
}
