#include<stdio.h>
int move(int,int,int,int,int,int,int,int,int,int,int,int);
int kui1(int,int,int,int,int,int,int,int,int,int,int,int);
int kui2(int,int,int,int,int,int,int,int,int,int,int,int);
int kui3(int,int,int,int,int,int,int,int,int,int,int,int);
int main(){
int hanoi[300]={0},d=0,e=100,f=200,n=0,m=100,l=200,s=0,v=0,w=0,z=0,lena=0,lenb=0,lenc=0,lend=0;
scanf("%d",&w);
for(w,v; w >= 1; w--, v++)
hanoi[v] = w;
n = v;
lena = v + 1;
while(hanoi[200+v] != 1)
kui1(d,e,f,n,m,l,z,lena,lenb,lenc,lend,hanoi[300]);
return 0;
}
int move(int d,int e,int f,int n,int m,int l,int z,int lena,int lenb,int lenc,int lend,int hanoi[300]){
if(hanoi[z] == 0 || hanoi[n] < hanoi[m] || hanoi[n] < hanoi[l]){
hanoi[z] = hanoi[n];
printf("%d %d %d\n",hanoi[n],(n / 100) + 1,(z / 100) + 1);
lena--;
hanoi[n] = 0;
if(z < 200){
m++;
lenb++;
}
else{
l++;
lenc++;
}
n--;
}
else if(hanoi[100] > hanoi[200]){
if((lena % 2) == 0)
kui2(d,e,f,n,m,l,z,lena,lenb,lenc,lend,hanoi[300]);
else
kui3(d,e,f,n,m,l,z,lena,lenb,lenc,lend,hanoi[300]);
}
else{
if((lena % 2) == 0)
kui2(d,e,f,n,m,l,z,lena,lenb,lenc,lend,hanoi[300]);
else
kui3(d,e,f,n,m,l,z,lena,lenb,lenc,lend,hanoi[300]);
}
return 0;
}
int kui1(int d,int e,int f,int n,int m,int l,int z,int lena,int lenb,int lenc,int lend,int hanoi[300]){
while(hanoi[d] != 0){
if((lena % 2) == 0)
move(d,e,f,n,m,l,m,lena,lenb,lenc,lend,hanoi[300]);
else
move(d,e,f,n,m,l,l,lena,lenb,lenc,lend,hanoi[300]);
}
if(hanoi[e] == 0)
return 0;
else{
while(hanoi[e] != 0){
kui2(d,e,f,n,m,l,z,lena,lenb,lenc,lend,hanoi[300]);
}
}
return 0;
}
int kui2(int d,int e,int f,int n,int m,int l,int z,int lena,int lenb,int lenc,int lend,int hanoi[300]){
for(lenb;lenb > 0;lenb--){
if((lenb % 2) == 0){
n++;
move(d,e,f,n,m,l,e,lena,lenb,lenc,lend,hanoi[300]);
}
else{
l++;
move(d,e,f,n,m,l,e,lena,lenb,lenc,lend,hanoi[300]);
}
}
return 0;
}
int kui3(int d,int e,int f,int n,int m,int l,int z,int lena,int lenb,int lenc,int lend,int hanoi[300]){
for(lenc;lenc > 0;lenc--){
if((lenc % 2) == 0){
n++;
move(d,e,f,n,m,l,e,lena,lenb,lenc,lend,hanoi[300]);
}
else{
m++;
hanoi[m] = hanoi[l];
l--;
lenb++;
lenc--;
move(d,e,f,n,m,l,f,lena,lenb,lenc,lend,hanoi[300]);
}
return 0;
}