#include <bits/stdc++.h>
using namespace std;
const int maxn = 100050;
const int mod = 1000000007;
map<int, pair<int, int> > mem;
int v[21];
const int MAX = 1001;
bool pintado[MAX];
bool completar(int q, int w) {
  if (q == 20) return true;
  int t = w;
  while (t < MAX) {
    bool flag = true;
    for (int i = (0); i < (q); i++)
      if (pintado[v[i] + t]) {
        flag = false;
        break;
      }
    if (flag) {
      v[q] = t;
      for (int i = (0); i < (q); i++) pintado[v[i] + t] = true;
      if (completar(q + 1, t + 1)) return true;
      for (int i = (0); i < (q); i++) pintado[v[i] + t] = false;
    }
    t++;
  }
}
int main() {
  for (int i = (0); i < (MAX); i++) pintado[i] = false;
  completar(0, 0);
  int n;
  cin >> n;
  for (int i = (0); i < (n); i++) {
    for (int j = (0); j < (n); j++) {
      if (j > 0) cout << " ";
      if (i == j)
        cout << 0;
      else
        cout << v[i] + v[j];
    }
    cout << endl;
  }
}
