#include <iostream>
#define MAX 17
using namespace std;
int K, x, y;
int cnt = 0;
int map[MAX][MAX] = {};
bool isNotHole(int x, int y, int len) {
for (int i=x; i<x+len; i++) {
for (int j=y; j<y+len; j++) {
if(map[i][j]!=0) return false;
}
}
return true;
}
void search(int x, int y, int len) {
cnt++;
int halfLen = len/2;
if(isNotHole(x, y, halfLen)) map[x+halfLen-1][y+halfLen-1] = cnt;
if(isNotHole(x, y+halfLen, halfLen)) map[x+halfLen-1][y+halfLen] = cnt;
if(isNotHole(x+halfLen, y, halfLen)) map[x+halfLen][y+halfLen-1] = cnt;
if(isNotHole(x+halfLen, y+halfLen, halfLen)) map[x+halfLen][y+halfLen] = cnt;
if(len == 2) return;
search(x, y, halfLen);
search(x, y+halfLen, halfLen);
search(x+halfLen, y, halfLen);
search(x+halfLen, y+halfLen, halfLen);
}
int main() {
ios_base :: sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> K >> x >> y;
map[x-1][y-1] = -1;
search(0, 0, (1<<K));
for(int i=(1<<K)-1; i>=0; i--) {
for(int j=0; j<(1<<K); j++) {
cout << map[i][j] << ' ';
}
cout << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojZGVmaW5lIE1BWCAxNwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBLLCB4LCB5OwppbnQgY250ID0gMDsKaW50IG1hcFtNQVhdW01BWF0gPSB7fTsKCmJvb2wgaXNOb3RIb2xlKGludCB4LCBpbnQgeSwgaW50IGxlbikgewoJZm9yIChpbnQgaT14OyBpPHgrbGVuOyBpKyspIHsKCQlmb3IgKGludCBqPXk7IGo8eStsZW47IGorKykgewoJCQlpZihtYXBbaV1bal0hPTApIHJldHVybiBmYWxzZTsKCQl9Cgl9CglyZXR1cm4gdHJ1ZTsKfQoKdm9pZCBzZWFyY2goaW50IHgsIGludCB5LCBpbnQgbGVuKSB7CgljbnQrKzsKCWludCBoYWxmTGVuID0gbGVuLzI7CgkKCWlmKGlzTm90SG9sZSh4LCB5LCBoYWxmTGVuKSkgbWFwW3graGFsZkxlbi0xXVt5K2hhbGZMZW4tMV0gPSBjbnQ7CglpZihpc05vdEhvbGUoeCwgeStoYWxmTGVuLCBoYWxmTGVuKSkgbWFwW3graGFsZkxlbi0xXVt5K2hhbGZMZW5dID0gY250OwoJaWYoaXNOb3RIb2xlKHgraGFsZkxlbiwgeSwgaGFsZkxlbikpIG1hcFt4K2hhbGZMZW5dW3kraGFsZkxlbi0xXSA9IGNudDsKCWlmKGlzTm90SG9sZSh4K2hhbGZMZW4sIHkraGFsZkxlbiwgaGFsZkxlbikpIG1hcFt4K2hhbGZMZW5dW3kraGFsZkxlbl0gPSBjbnQ7CgkKCWlmKGxlbiA9PSAyKSByZXR1cm47CgkKCXNlYXJjaCh4LCB5LCBoYWxmTGVuKTsKCXNlYXJjaCh4LCB5K2hhbGZMZW4sIGhhbGZMZW4pOwoJc2VhcmNoKHgraGFsZkxlbiwgeSwgaGFsZkxlbik7CglzZWFyY2goeCtoYWxmTGVuLCB5K2hhbGZMZW4sIGhhbGZMZW4pOwoJCn0KCgppbnQgbWFpbigpIHsKCWlvc19iYXNlIDo6IHN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKE5VTEwpOyBjb3V0LnRpZShOVUxMKTsKCQoJY2luID4+IEsgPj4geCA+PiB5OwoJbWFwW3gtMV1beS0xXSA9IC0xOwoJCglzZWFyY2goMCwgMCwgKDE8PEspKTsKCQoJZm9yKGludCBpPSgxPDxLKS0xOyBpPj0wOyBpLS0pIHsKCQlmb3IoaW50IGo9MDsgajwoMTw8Syk7IGorKykgewoJCQljb3V0IDw8IG1hcFtpXVtqXSA8PCAnICc7CgkJfQoJCWNvdXQgPDwgJ1xuJzsKCX0KCQoJcmV0dXJuIDA7Cn0=