#pragma GCC optimize("Ofast", "unroll-loops") #include using namespace std; int main(void){ int N; cin >> N; vector> res(N, vector(N, 0)); for (int i = 0; i < N; ++i) res[0][i] = (2 * i + 1) % N; for (int i = 1; i < N; ++i) for (int j = i; j < N; ++j) res[i][j] = (res[i - 1][j - 1] + 1) % N; for (int i = 0; i < N; ++i) for (int j = 0; j < i; ++j) res[i][j] = res[j][i]; for (int i = 0; i < N; ++i) for (int j = 0; j < N; ++j) cout << (res[i][j] == 0 ? N : res[i][j]) << (j == N - 1 ? "\n" : " "); return 0; }