Botter @ 2024-02-29 17:20:23
//
// Created by Botter on 2024/2/29.
//
#include "iostream"
using namespace std;
int s,e,k;
#define zs dfs(x+n-1,y+n-1,x,y,n);
#define ys dfs(x+n-1,y+n,x,y+n,n);
#define zx dfs(x+n,y+n-1,x+n,y,n);
#define yx dfs(x+n,y+n,x+n,y+n,n);
void dfs(int sx , int sy , int x , int y , int n){
if (n == 1) return; // 递归终止条件
n >>= 1;
if (sx - x < n && sy - y < n) {
printf("%d %d 1\n" ,x+n, y+n);
dfs(sx , sy , x , y , n);
ys;zx;yx;
}
if (sx - x < n && sy - y >= n ){
printf("%d %d 2\n" , x+n , y+n-1);
zs;
dfs(sx , sy , x, y+n ,n);
zx; yx;
}
if (sx - x >= n && sy - y < n ){
printf("%d %d 3\n" , x+n-1 , y+n);
zs ; ys;
dfs(sx , sy, x+n , y , n);
yx;
}
if (sx - x >= n && sy - y >= n){
printf("%d %d 4\n",x+n-1 , y+n-1);
zs;ys;zx;
dfs(sx , sy , x+n , y+n , n);
}
}
int main(void){
scanf("%d%d%d",&s,&e,&k);
dfs(s,e,1,1,1<<k);
return 0;
}