#include <bits/stdc++.h>
using namespace std;
template <class T, class L>
bool smax(T &x, L y) {
  return x < y ? (x = y, 1) : 0;
}
template <class T, class L>
bool smin(T &x, L y) {
  return y < x ? (x = y, 1) : 0;
}
const int maxn = 1e3 + 17;
int n, a[maxn][maxn];
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n;
  for (int i = 0; i < n - 1; i++)
    for (int j = 0; j < n - 1; j++)
      if (i != j) a[i][j] = (i + j) % (n - 1) + 1;
  for (int i = 0; i < n - 1; i++)
    a[i][n - 1] = a[n - 1][i] = 2 * i % (n - 1) + 1;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) cout << a[i][j] << " \n"[j == n - 1];
  return 0;
}
