#include <bits/stdc++.h>
using namespace std;
bool foiare[1024], cand[1024], foivert[1024];
int n, a[32];
int main() {
  scanf("%d", &n);
  memset(foiare, false, sizeof(foiare));
  memset(foivert, false, sizeof(foivert));
  for (int i = 0; i < n; i++) {
    for (int j = 1; j <= 1000; j++)
      if (!foivert[j]) {
        bool podej = true;
        memset(cand, false, sizeof(cand));
        for (int k = 0; k < i; k++)
          if (foiare[a[k] + j] or a[k] + j > 1000) {
            podej = false;
            break;
          } else if (cand[a[k] + j]) {
            podej = false;
            break;
          } else
            cand[a[k] + j] = true;
        if (podej) {
          a[i] = j;
          foivert[j] = true;
          for (int k = 0; k < i; k++) foiare[a[k] + a[i]] = true;
          break;
        }
      }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (j) printf(" ");
      if (i == j)
        printf("0");
      else
        printf("%d", a[i] + a[j]);
    }
    printf("\n");
  }
  return 0;
}
