#include #include #include using namespace std; using namespace atcoder; using mint = modint1000000007; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 1000000000000000001 int main(){ vector> a = {{6,12,7,9},{15,1,14,4},{10,8,11,5},{3,13,2,16}}; int n; cin>>n; if(n>=8){ rep(i,4){ rep(j,4)a[i].push_back(a[i][j]); } rep(i,4)a.push_back(a[i]); rep(i,8){ rep(j,8){ int x = i/4,y = j/4; if(x&&y)a[i][j] += 48; else if(x)a[i][j] += 16; else if(y)a[i][j] += 32; } } } if(n>=16){ rep(i,8){ rep(j,8)a[i].push_back(a[i][j]); } rep(i,8)a.push_back(a[i]); rep(i,16){ rep(j,16){ int x = i/8,y = j/8; if(x&&y)a[i][j] += 96; else if(x)a[i][j] += 32; else if(y)a[i][j] += 64; } } } int x,y,z; cin>>x>>y>>z; x--,y--; int ii,jj; rep(i,a.size()){ rep(j,a.size()){ if(a[i][j]==z){ ii = i,jj = j; } } } while(x!=ii){ a.insert(a.begin(),a.back()); a.pop_back(); ii = (ii+1)%n; } while(y!=jj){ rep(i,a.size()){ a[i].insert(a[i].begin(),a[i].back()); a[i].pop_back(); } jj = (jj+1)%n; } rep(i,n){ rep(j,n){ if(j)printf(" "); printf("%d",a[i][j]); } printf("\n"); } return 0; }