#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const double EPS = 1e-9; typedef vector vint; typedef vector> v2int; typedef vector>> v3int; typedef vector vll; typedef vector> v2ll; typedef vector>> v3ll; typedef list liint; typedef pair pint; typedef vector> vpint; typedef vector> vpll; typedef vector> vpll_int; typedef vector> vpint_ll; typedef set> spint; typedef set> spll; typedef unordered_map> Graph; const int INF = int(2e9); const ll LINF = ll(2e9) * ll(2e9); #define rep(i, n) REP(i, 0, n) #define ALL(v) v.begin(), v.end() #define MSG(a) cout << #a << " " << a << endl; #define REP(i, x, n) for(int i = x; i < n; i++) template void chmax(T& a, C b) { a > b ? : a = b; } template void chmin(T& a, C b) { a < b ? : a = b; } ll mod(ll val, ll m) { ll res = val % m; if (res < 0) res += m; return res; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N; cin >> N; v2int ans(N, vint(N)); rep(i, N) { int x = i * 2; x = mod(x, N); rep(j, N) { ans[i][mod(-j, N)] = x + 1; x++; x = mod(x, N); } x += 2; x = mod(x, N); } rep(i, N) { rep(j, N) { cout << ans[i][j] << " "; } cout << endl; } //cout << ans << endl; return 0; }