#include <bits/stdc++.h>
int p[20];
int n;
int h[1005] = {};
int go(int lev) {
  if (lev == n) {
    for (int i = 0; i < n; i++, puts(""))
      for (int j = 0; j < n; j++) printf("%d ", i == j ? 0 : p[i] + p[j]);
    return 1;
  }
  for (p[lev] = p[lev - 1] + 1; p[lev] <= 500; p[lev]++) {
    int i;
    for (i = 0; i < lev; i++) {
      if (h[p[i] + p[lev]] < lev) break;
      h[p[i] + p[lev]] = lev;
    }
    if (i == lev && go(lev + 1)) return 1;
  }
  return 0;
}
int main(void) {
  scanf("%d", &n);
  p[0] = 1;
  for (int i = 1; i <= 1000; i++) h[i] = 1000;
  go(1);
  return 0;
}
