#include <bits/stdc++.h>
using namespace std;
long long n;
long long a[15][15];
long long f[15];
int main(void) {
  cin >> n;
  a[1][2] = a[2][1] = 1;
  f[0] = 0, f[1] = 1, f[2] = 2;
  for (int z = 3; z <= 10; z++) {
    f[z] = 1;
    while (1) {
      vector<long long> vec;
      for (int i = 1; i <= z; i++) {
        vec.push_back(f[i]);
        for (int j = 1; j <= z; j++) {
          if (i < j) vec.push_back(f[i] + f[j]);
        }
      }
      sort(vec.begin(), vec.end());
      bool flag = true;
      for (int i = 1; i < vec.size(); i++) {
        if (vec[i - 1] == vec[i]) flag = false;
      }
      if (flag) break;
      f[z]++;
    }
  }
  for (int i = 3; i <= n; i++) {
    for (int x = 1; x <= i - 1; x++) {
      for (int y = 1; y <= i - 1; y++) {
        a[x][y] *= f[i - 1] + f[i - 2] + 1;
      }
    }
    for (int j = 1; j < i; j++) {
      a[i][j] = a[j][i] = f[j];
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      cout << a[i][j] << " ";
    }
    cout << endl;
  }
  return 0;
}
