#include <bits/stdc++.h>
using namespace std;
int a[25][25];
int b[25];
int main() {
  memset(a, 0, sizeof(a));
  a[0][1] = a[1][0] = 1;
  a[0][2] = a[2][0] = 2;
  a[1][2] = a[2][1] = 3;
  set<int> S;
  S.insert(1);
  S.insert(2);
  S.insert(3);
  for (int i = 3; i < 20; ++i) {
    memset(b, 0, sizeof(b));
    for (int j = 0; j < i - 1; ++j) b[j] = a[i - 1][j];
    b[i - 1] = b[0] + a[i - 1][1] - a[0][1];
    while (true) {
      bool ispos = true;
      for (int j = 0; j < i; ++j)
        if (S.find(b[j]) != S.end()) ispos = false;
      if (ispos) break;
      for (int j = 0; j < i; ++j) b[j]++;
    }
    for (int j = 0; j < i; ++j) {
      a[i][j] = a[j][i] = b[j];
      S.insert(b[j]);
    }
  }
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) printf("%d ", a[i][j]);
    printf("\n");
  }
}
