#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 100010;
int ans[1010][1010];
int main() {
  int n, i, j;
  while (~scanf("%d", &n)) {
    for (i = 1; i < n; i++) ans[1][i] = i;
    for (i = 2; i < n; i++) {
      for (j = 1; j < n - 1; j++) ans[i][j] = ans[i - 1][j + 1];
      ans[i][j] = ans[i - 1][1];
    }
    for (i = 1; i < n; i++) {
      ans[n][i] = ans[i][n] = ans[i][i];
      ans[i][i] = 0;
    }
    for (i = 1; i <= n; i++) {
      printf("%d", ans[i][1]);
      for (j = 2; j <= n; j++) printf(" %d", ans[i][j]);
      printf("\n");
    }
  }
  return 0;
}
