#include <bits/stdc++.h>
int a[1005][1005];
using namespace std;
int main() {
  int n;
  while (cin >> n) {
    memset(a, 0, sizeof(a));
    int l = 1, r = n - 1;
    int sum = 0;
    for (int i = 1; i <= 1; i++) {
      for (int j = 1; j <= n; j++) {
        if (i != j) {
          if (sum % 2 == 0) {
            a[i][j] = a[j][i] = l;
            l++;
          } else {
            a[i][j] = a[j][i] = r;
            r--;
          }
          sum++;
        }
      }
    }
    for (int i = 2; i <= n; i++) {
      for (int j = 2; j <= n; j++) {
        a[i][j] = a[i - 1][j + 1];
      }
    }
    l = n - 1, r = 1;
    for (int j = 2; j <= n / 2; j++) {
      a[n][j] = l;
      l--;
    }
    for (int j = n / 2 + 1; j <= n - 1; j++) {
      a[n][j] = r;
      r++;
    }
    for (int j = 2; j <= n - 1; j++) {
      a[j][n] = a[n][j];
    }
    l = n - 1;
    r = 1;
    sum = 0;
    for (int i = 3; i <= n - 1; i++) {
      if (sum % 2 == 0) {
        a[n - 1][i] = r;
        r++;
      } else {
        a[n - 1][i] = l;
        l--;
      }
      sum++;
    }
    int ans = 0;
    for (int i = n - 2; i >= 3; i--) {
      for (int j = n - i - 1; j <= n - 1; j++) {
        if (a[i][j] == 0) a[i][j] = a[i + 1][j - 1];
      }
    }
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= n; j++) {
        if (i == j) a[i][j] = 0;
      }
    }
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= n; j++) cout << a[i][j] << " ";
      cout << endl;
    }
  }
}
