#include <bits/stdc++.h>
int a[1005][1005];
int n;
void solve(int x) {
  for (int flag = 0; flag < n; flag++) {
    if (a[x][flag] == 0) {
      for (int flag1 = flag; flag1 < n; flag1++) {
        a[x][flag1] = a[x][flag1 + 1];
      }
      break;
    }
  }
}
int main() {
  while (scanf("%d", &n) != EOF) {
    memset(a, 0, sizeof(a));
    for (int flag = 0; flag < n; flag++) {
      for (int flag1 = 0; flag1 < n; flag1++) {
        a[flag][flag1] = (flag + flag1) % n;
      }
    }
    for (int flag = 1; flag < n; flag++) {
      solve(flag);
    }
    for (int flag = 1; flag < n; flag++) {
      a[flag][n - 1] = a[flag][flag];
      a[flag][flag] = 0;
    }
    for (int flag = 0; flag < n; flag++) {
      for (int flag1 = 0; flag1 < flag; flag1++) {
        a[flag][flag1] = a[flag1][flag];
      }
    }
    for (int flag = 0; flag < n; flag++) {
      printf("%d", a[flag][0]);
      for (int flag1 = 1; flag1 < n; flag1++) {
        printf(" %d", a[flag][flag1]);
      }
      printf("\n");
    }
  }
}
