#include<bits/stdc++.h>
const int inf=1e5+10;using namespace std;typedef long long ll;
#define endl '\n'
int k,tx,ty;
int n;
void work(int dx,int dy,int x,int y,int L)
{
if(L<=1)return;
L=L>>1;
if(dx-x<L&&dy-y<L)// part one
{
cout<<L+x<<' '<<L+y<<' '<<1<<endl;
work(dx,dy,x,y,L);
work(L+x,L,L+x,y,L);
work(L,L+y,x,L+y,L);
work(L+x,L+y,L+x,L+y,L);
}
if(dx-x>=L&&dy-y<L)// part two
{
cout<<L<<' '<<L+y<<' '<<2<<endl;
work(L,L,x,y,L);
work(dx,dy,L+x,y,L);
work(L,L+y,x,L+y,L);
work(L+x,L+y,L+x,L+y,L);
}
if(dx-x<L&&dy-y>=L)// part three
{
cout<<L+x<<' '<<L<<' '<<3<<endl;
work(L,L,x,y,L);
work(L+x,L,L+x,y,L);
work(dx,dy,x,L+y,L);
work(L+x,L+y,L+x,L+y,L);
}
if(dx-x>=L&&dy-y>=L)// part four
{
cout<<L<<' '<<L<<' '<<4<<endl;
work(L,L,x,y,L);
work(L+x,L,L+x,y,L);
work(L,L+y,x,L+y,L);
work(dx,dy,L+x,L+y,L);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>k>>tx>>ty;
n=1<<k;
work(tx,ty,1,1,n);
return 0;
}
一道洛谷题
https://www.luogu.com.cn/problem/P1228