#include <bits/stdc++.h>
using namespace std;
int data[20][20], n, cnt;
bool mark[1005];
int main() {
  scanf("%d", &n);
  data[0][1] = data[1][0] = 1;
  data[0][2] = data[2][0] = 2;
  data[1][2] = data[2][1] = 3;
  cnt = 3;
  for (int i = 3; i < n; i++) {
    int k = 0;
    for (int j = 1; j < i; j++) {
      int d = 0;
      while (d == k || d == j) d++;
      if (data[j][d] < data[k][d]) k = j;
    }
    data[i][k] = data[k][i] = 0;
    for (int j = 0; j < i; j++)
      if (j != k) {
        int d = 0;
        while (d == k || d == j) d++;
        data[i][j] = data[j][i] = -data[k][d] + data[j][d];
      }
    for (int k = 4; k <= 1000; k++) {
      bool flag = true;
      for (int j = 0; j < i; j++)
        if (mark[data[i][j] + k]) flag = false;
      if (!flag) continue;
      for (int j = 0; j < i; j++) {
        data[i][j] += k;
        data[j][i] += k;
        mark[data[i][j]] = true;
      }
      break;
    }
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      printf("%d%c", data[i][j], j == n - 1 ? '\n' : ' ');
  return 0;
}
