#include<bits/stdc++.h>
#define LL long long
using namespace std;
int mp[1050][1050];
void F(LL l,LL x1,LL y1,LL nx,LL ny){
if(l == 1){
return;
}
l = l >> 1;
if(nx-x1 < l){
if(ny-y1 < l){
cout << x1+l << " " << y1+l << " " << 1 << endl;
F(l,x1,y1,nx,ny);
F(l,x1,y1+l,x1+l-1,y1+l);
F(l,x1+l,y1,x1+l,y1+l-1);
F(l,x1+l,y1+l,y1+l,y1+l);
}
else{
cout << x1+l << " " << y1+(l>>1)-1 << " " << 2 << endl;
F(l,x1,y1,x1+l-1,y1+l-1);
F(l,x1,y1+l,nx,ny);
F(l,x1+l,y1,x1+l,y1+l-1);
F(l,x1+l,y1+l,y1+l,y1+l);
}
}
else{
if(ny-y1 < l){
cout << x1+l-1 << " " << y1+l << " " << 3 << endl;
F(l,x1,y1,x1+l-1,y1+l-1);
F(l,x1,y1+l,x1+l-1,y1+l);
F(l,x1+l,y1,nx,ny);
F(l,x1+l,y1+l,y1+l,y1+l);
}
else{
cout << x1+l-1 << " " << y1+l-1 << " " << 4 << endl;
F(l,x1,y1,x1+l-1,y1+l-1);
F(l,x1,y1+l,x1+l-1,y1+l);
F(l,x1+l,y1,x1+l,y1+l-1);
F(l,x1+l,y1+l,nx,ny);
}
}
}
int main(){
LL x,y,k,l;
cin >> k >> x >> y;
l=1<<k;
F(l,1,1,x,y);
return 0;
}