#include<bits/stdc++.h>
using namespace std;
const int N = 2000;
struct node{
long long x,y,pos,upx,upy;
}a[N];
bool cmp(node q,node p){
if(q.upx != p.upx) return q.upx < p.upx;
return q.upy < p.upy;
}
long long g[N][N],k,ans[N][N],cnt=0;
void solve(long long px,long long py,long long x,long long y,long long len){
if(len == 1) return ;
long long nx = px + len - 1,ny = py + len - 1;
long long midx = (px + nx) / 2,midy = (py + ny) / 2;
if(x <= midx && y <= midy){
a[++cnt].x = midx+1,a[cnt].y = midy+1,a[cnt].pos = 1;
a[cnt].upx = midx,a[cnt].upy = midy+1;
solve(px,py,x,y,len/2);
solve(midx+1,py,midx+1,midy,len/2);
solve(midx+1,midy+1,midx+1,midy+1,len/2);
solve(px,midy+1,midx,midy+1,len/2);
}
else if(x > midx && y <= midy){
a[++cnt].x = midx,a[cnt].y = midy+1,a[cnt].pos = 3;
a[cnt].upx = midx,a[cnt].upy = midy;
solve(midx+1,py,x,y,len/2);
solve(midx+1,midy+1,midx+1,midy+1,len/2);
solve(px,midy+1,midx,midy+1,len/2);
solve(px,py,midx,midy,len/2);
}
else if(x > midx && y > midy){
a[++cnt].x = midx,a[cnt].y = midy,a[cnt].pos = 4;
a[cnt].upx = midx,a[cnt].upy = midy;
solve(px,py,midx,midy,len/2);
solve(px,midy+1,midx,midy+1,len/2);
solve(midx+1,midy+1,x,y,len/2);
solve(midx+1,py,midx+1,midy,len/2);
}
else if(x <= midx && y > midy){
a[++cnt].x = midx+1,a[cnt].y = midy,a[cnt].pos = 2;
a[cnt].upx = midx,a[cnt].upy = midy;
solve(px,py,midx,midy,len/2);
solve(px,midy+1,x,y,len/2);
solve(midx+1,py,midx+1,midy,len/2);
solve(midx+1,midy+1,midx+1,midy+1,len/2);
}
}
int main(){
long long x,y;
cin >> k >> x >> y;
long long len = 1 << k;
solve(1,1,x,y,len);
sort(a+1,a+1+cnt,cmp);
int s = 0;
for(long long i = 1;i <= cnt;i++){
if(a[i].pos == 1)
ans[a[i].x][a[i].y] = ans[a[i].x-1][a[i].y] = ans[a[i].x][a[i].y-1] = ++s;
else if(a[i].pos == 2)
ans[a[i].x][a[i].y] = ans[a[i].x-1][a[i].y] = ans[a[i].x][a[i].y+1] = ++s;
else if(a[i].pos == 3)
ans[a[i].x][a[i].y] = ans[a[i].x][a[i].y-1] = ans[a[i].x+1][a[i].y] = ++s;
else if(a[i].pos == 4)
ans[a[i].x][a[i].y] = ans[a[i].x+1][a[i].y] = ans[a[i].x][a[i].y+1] = ++s;
}
for(long long i = 1;i <= len;i++){
for(long long j = 1;j <= len;j++)
cout << ans[i][j] << " ";
cout << endl;
}
return 0;
}