#include <bits/stdc++.h>
int out[1100][1100];
int flag[1100][1100];
int cc[1100];
int n;
int main() {
  memset(out, -1, sizeof(out));
  scanf("%d", &n);
  int i, j;
  int a, b;
  for (i = 0; i < n; i++) out[i][i] = 0;
  int x, y;
  memset(flag, 0, sizeof(flag));
  for (i = 1; i < n; i++) {
    x = n - 1, y = i - 1;
    while (x >= 0 && y < n) {
      if (out[x][y] == -1) out[x][y] = n - i, flag[n - i][x] = 1, cc[n - i]++;
      x--, y++;
    }
  }
  for (i = 1; i < n; i++) {
    x = n - 2 - i, y = 1;
    while (x >= 1 && y < n - 1) {
      if (out[x][y] == -1) {
        flag[i][x] = 1;
        out[x][y] = i;
      }
      x--, y++;
    }
  }
  for (i = 1; i < n; i++) {
    int a = -1, b = -1;
    for (j = 0; j < n; j++)
      if (!flag[i][j])
        if (a == -1)
          a = j;
        else
          b = j;
    out[a][b] = out[b][a] = i;
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      printf("%d", out[i][j]);
      if (j < n - 1)
        printf(" ");
      else
        printf("\n");
    }
  }
  return 0;
}
