#include<bits/stdc++.h> #define SINGLE_INPUT #define ll long long #define ull unsigned long long #define N 500005 #define MOD 998244353 usingnamespace std;
random_device seed; ranlux48 engine(seed()); intrandom(int l, int r){ uniform_int_distribution<> distrib(l, r); returndistrib(engine); } template<classt,classu> ostream& operator<<(ostream& os,const pair<t,u>& p) { return os<<'['<<p.first<<", "<<p.second<<']'; } template<classt> ostream& operator<<(ostream& os,const vector<t>& v) { os<<'['; int s = 1; for(auto e:v) { if (s) s = 0; else os << ", "; os << e; } return os<<']'; } template<classt,classu> ostream& operator<<(ostream& os,const map<t,u>& mp){ os<<'{'; int s = 1; for(auto [x,y]:mp) { if (s) s = 0; else os << ", "; os<<x<<": "<<y; } return os<<'}'; }
voidsol(){ int n; cin >> n; vector<vector<int>> a(n, vector<int>(n)); int p = 0; for (int x=0; x<n; x+=4) { for (int y=0; y<n; y+=4) { for (int i=0; i<4; i++) { for (int j=0; j<4; j++) { a[x+i][y+j] = p++; } } } } for (auto& i:a) { for (auto& j:i) { cout << j << " "; } cout << "\n"; } // for (int i=0; i<n; i++) { // int x0 = 0, x1 = 0; // for (int j=0; j<n; j++) { // x0 ^= a[i][j]; // x1 ^= a[j][i]; // } // if (x0 || x1) { // cout << "NO\n"; // } // } }