#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define TRUE 1
#define FALSE 0
int a[100][100];
int isValid(int x, int y,int block_length);
void move(int sou_i,int sou_j,int des_i,int des_j);
void clear(int num,int index_x,int index_y);
void Index(int num,int length,int *p_X,int *p_Y);
void move_onto(int source,int destination,int block_length);
void move_over(int source,int destination,int block_length);
void pile_onto(int source,int destination,int block_length);
void pile_over(int source,int destination,int block_length);
int main()
{
char cmd_1[10];
char cmd_2[10];
int sou,des;
int n;
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++){
a[i][0]=i;
a[i][1]=-1;
}
while(1){
scanf("%s",cmd_1);
if(strcmp(cmd_1,"quit")==0) break;
scanf("%d%s%d",&sou,cmd_2,&des);
if((!(isValid(sou,des,n)))||sou>n||des>n)
continue;
else if(!strcmp(cmd_1,"move")&&!strcmp(cmd_2,"onto"))
move_onto(sou,des,n);
else if(!strcmp(cmd_1,"move")&&!strcmp(cmd_2,"over"))
move_over(sou,des,n);
else if(!strcmp(cmd_1,"pile")&&!strcmp(cmd_2,"onto"))
pile_onto(sou,des,n);
else if(!strcmp(cmd_1,"pile")&&!strcmp(cmd_2,"over"))
pile_over(sou,des,n);
}
for( i=0;i<n;i++){
printf("%d:",i);
for( j=0;a[i][j]!=-1;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
void clear(int num,int index_x,int index_y){
int i;
for(i=index_y+1;a[index_x][i]!=-1;i++){
a[a[index_x][i]][0] =a[index_x][i];
a[a[index_x][i]][1]=-1;
}
}
/****************************************************/
void move_onto(int source,int destination,int block_length){
int sou_X,sou_Y;
int des_X,des_Y;
sou_X=sou_Y=des_X=des_Y=0;
Index(source,block_length,&sou_X,&sou_Y);
Index(destination,block_length,&des_X,&des_Y);
clear(source,sou_X,sou_Y);
clear(destination,des_X,des_Y);
a[des_X][des_Y+1]=source;
a[des_X][des_Y+2]=-1;
a[sou_X][sou_Y]=-1;
}
void move_over(int source,int destination,int block_length){
int sou_X,sou_Y;
int des_X,des_Y;
sou_X=sou_Y=des_X=des_Y=0;
Index(source,block_length,&sou_X,&sou_Y);
Index(destination,block_length,&des_X,&des_Y);
clear(source,sou_X,sou_Y);
while(a[des_X][des_Y]!=-1)
des_Y++;
a[des_X][des_Y]=source;
a[des_X][des_Y+1]=-1;
a[sou_X][sou_Y]=-1;
}
void pile_onto(int source,int destination,int block_length){
int sou_X,sou_Y;
int des_X,des_Y;
sou_X=sou_Y=des_X=des_Y=0;
Index(source,block_length,&sou_X,&sou_Y);
Index(destination,block_length,&des_X,&des_Y);
clear(destination,des_X,des_Y);
move(sou_X,sou_Y,des_X,des_Y);
}
void pile_over(int source,int destination,int block_length){
int sou_X,sou_Y;
int des_X,des_Y;
sou_X=sou_Y=des_X=des_Y=0;
Index(source,block_length,&sou_X,&sou_Y);
Index(destination,block_length,&des_X,&des_Y);
move(sou_X,sou_Y,des_X,des_Y);
}
void move(int sou_i,int sou_j,int des_i,int des_j){
int i;
while(a[des_i][des_j]!=-1){
des_j++;
}
i=sou_j;
while(a[sou_i][i]!=-1){
a[des_i][des_j]=a[sou_i][i];
des_j++;
i++;
}
a[des_i][des_j]=-1;
a[sou_i][sou_j]=-1;
}
void Index(int num,int length,int *p_X,int *p_Y){
int i=0; /*it count for x position*/
int j; /*it count for y position*/
while(i<length){
j=0;
while(a[i][j]!=-1){
if(num==a[i][j]){
*p_X=i;
*p_Y=j;
break;
}
j++;
}
i++;
}
}
int isValid(int x, int y,int block_length){
int i,j,k;
if(x==y)
return FALSE;
for( i=0;i<block_length;i++){
for( j=0;a[i][j]!=-1;j++)
if(x==a[i][j]){
for( k=0;a[i][k]!=-1;k++)
if(y==a[i][k])
return FALSE;
}
}
return TRUE;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGU8c3RyaW5nLmg+CgoKCiNkZWZpbmUgVFJVRSAxCiNkZWZpbmUgRkFMU0UgMAoKCgppbnQgYVsxMDBdWzEwMF07CmludCBpc1ZhbGlkKGludCB4LCBpbnQgeSxpbnQgYmxvY2tfbGVuZ3RoKTsKdm9pZCBtb3ZlKGludCBzb3VfaSxpbnQgc291X2osaW50IGRlc19pLGludCBkZXNfaik7CnZvaWQgY2xlYXIoaW50IG51bSxpbnQgaW5kZXhfeCxpbnQgaW5kZXhfeSk7CnZvaWQgSW5kZXgoaW50IG51bSxpbnQgbGVuZ3RoLGludCAqcF9YLGludCAqcF9ZKTsKdm9pZCBtb3ZlX29udG8oaW50IHNvdXJjZSxpbnQgZGVzdGluYXRpb24saW50IGJsb2NrX2xlbmd0aCk7CnZvaWQgbW92ZV9vdmVyKGludCBzb3VyY2UsaW50IGRlc3RpbmF0aW9uLGludCBibG9ja19sZW5ndGgpOwp2b2lkIHBpbGVfb250byhpbnQgc291cmNlLGludCBkZXN0aW5hdGlvbixpbnQgYmxvY2tfbGVuZ3RoKTsKdm9pZCBwaWxlX292ZXIoaW50IHNvdXJjZSxpbnQgZGVzdGluYXRpb24saW50IGJsb2NrX2xlbmd0aCk7CgoKCgoKaW50IG1haW4oKQp7CiAgICBjaGFyIGNtZF8xWzEwXTsKICAgICAgICBjaGFyIGNtZF8yWzEwXTsKICAgICAgICBpbnQgc291LGRlczsKICAgICAgICBpbnQgbjsKICAgICAgICBpbnQgIGksajsKCiAgICAgICAgc2NhbmYoIiVkIiwmbik7CgogICAgICAgIGZvcihpPTA7aTxuO2krKyl7CgogICAgICAgICAgICAgYVtpXVswXT1pOwogICAgICAgICAgICAgYVtpXVsxXT0tMTsKICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB3aGlsZSgxKXsKICAgICAgICAgICAgICAgICAgICBzY2FuZigiJXMiLGNtZF8xKTsKICAgICAgICAgICAgICAgICAgICBpZihzdHJjbXAoY21kXzEsInF1aXQiKT09MCkgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBzY2FuZigiJWQlcyVkIiwmc291LGNtZF8yLCZkZXMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZigoIShpc1ZhbGlkKHNvdSxkZXMsbikpKXx8c291Pm58fGRlcz5uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKCFzdHJjbXAoY21kXzEsIm1vdmUiKSYmIXN0cmNtcChjbWRfMiwib250byIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlX29udG8oc291LGRlcyxuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoIXN0cmNtcChjbWRfMSwibW92ZSIpJiYhc3RyY21wKGNtZF8yLCJvdmVyIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfb3Zlcihzb3UsZGVzLG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZighc3RyY21wKGNtZF8xLCJwaWxlIikmJiFzdHJjbXAoY21kXzIsIm9udG8iKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlsZV9vbnRvKHNvdSxkZXMsbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKCFzdHJjbXAoY21kXzEsInBpbGUiKSYmIXN0cmNtcChjbWRfMiwib3ZlciIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWxlX292ZXIoc291LGRlcyxuKTsKCgogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICBmb3IoIGk9MDtpPG47aSsrKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiVkOiIsaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKCBqPTA7YVtpXVtqXSE9LTE7aisrKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiVkICIsYVtpXVtqXSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOwoKICAgICAgICAgICAgICAgIH0KCgogICAgICAgIHJldHVybiAwOwoKfQoKCgp2b2lkIGNsZWFyKGludCBudW0saW50IGluZGV4X3gsaW50IGluZGV4X3kpewoKICAgIGludCBpOwogICAgZm9yKGk9aW5kZXhfeSsxO2FbaW5kZXhfeF1baV0hPS0xO2krKyl7CiAgICAgICBhW2FbaW5kZXhfeF1baV1dWzBdID1hW2luZGV4X3hdW2ldOwogICAgICAgYVthW2luZGV4X3hdW2ldXVsxXT0tMTsKICAgIH0KCn0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnZvaWQgbW92ZV9vbnRvKGludCBzb3VyY2UsaW50IGRlc3RpbmF0aW9uLGludCBibG9ja19sZW5ndGgpewoKCiAgICAgICAgaW50IHNvdV9YLHNvdV9ZOwogICAgICAgIGludCBkZXNfWCxkZXNfWTsKICAgICAgICBzb3VfWD1zb3VfWT1kZXNfWD1kZXNfWT0wOwogICAgICAgIEluZGV4KHNvdXJjZSxibG9ja19sZW5ndGgsJnNvdV9YLCZzb3VfWSk7CiAgICAgICAgSW5kZXgoZGVzdGluYXRpb24sYmxvY2tfbGVuZ3RoLCZkZXNfWCwmZGVzX1kpOwogICAgICAgIGNsZWFyKHNvdXJjZSxzb3VfWCxzb3VfWSk7CiAgICAgICAgY2xlYXIoZGVzdGluYXRpb24sZGVzX1gsZGVzX1kpOwogICAgICAgIGFbZGVzX1hdW2Rlc19ZKzFdPXNvdXJjZTsKICAgICAgICBhW2Rlc19YXVtkZXNfWSsyXT0tMTsKICAgICAgICBhW3NvdV9YXVtzb3VfWV09LTE7Cgp9Cgp2b2lkIG1vdmVfb3ZlcihpbnQgc291cmNlLGludCBkZXN0aW5hdGlvbixpbnQgYmxvY2tfbGVuZ3RoKXsKCiAgICAgICAgaW50IHNvdV9YLHNvdV9ZOwogICAgICAgIGludCBkZXNfWCxkZXNfWTsKICAgICAgICBzb3VfWD1zb3VfWT1kZXNfWD1kZXNfWT0wOwogICAgICAgICBJbmRleChzb3VyY2UsYmxvY2tfbGVuZ3RoLCZzb3VfWCwmc291X1kpOwogICAgICAgICBJbmRleChkZXN0aW5hdGlvbixibG9ja19sZW5ndGgsJmRlc19YLCZkZXNfWSk7CiAgICAgICAgIGNsZWFyKHNvdXJjZSxzb3VfWCxzb3VfWSk7CgogICAgICAgIHdoaWxlKGFbZGVzX1hdW2Rlc19ZXSE9LTEpCiAgICAgICAgICAgICAgICBkZXNfWSsrOwoKICAgICAgICBhW2Rlc19YXVtkZXNfWV09c291cmNlOwogICAgICAgIGFbZGVzX1hdW2Rlc19ZKzFdPS0xOwogICAgICAgIGFbc291X1hdW3NvdV9ZXT0tMTsKCn0Kdm9pZCBwaWxlX29udG8oaW50IHNvdXJjZSxpbnQgZGVzdGluYXRpb24saW50IGJsb2NrX2xlbmd0aCl7CgogICAgICAgIGludCBzb3VfWCxzb3VfWTsKICAgICAgICBpbnQgZGVzX1gsZGVzX1k7CiAgICAgICAgc291X1g9c291X1k9ZGVzX1g9ZGVzX1k9MDsKICAgICAgICAgSW5kZXgoc291cmNlLGJsb2NrX2xlbmd0aCwmc291X1gsJnNvdV9ZKTsKICAgICAgICAgSW5kZXgoZGVzdGluYXRpb24sYmxvY2tfbGVuZ3RoLCZkZXNfWCwmZGVzX1kpOwoKICAgICAgICBjbGVhcihkZXN0aW5hdGlvbixkZXNfWCxkZXNfWSk7CiAgICAgICAgbW92ZShzb3VfWCxzb3VfWSxkZXNfWCxkZXNfWSk7CgoKCn0KCnZvaWQgcGlsZV9vdmVyKGludCBzb3VyY2UsaW50IGRlc3RpbmF0aW9uLGludCBibG9ja19sZW5ndGgpewoKICAgICAgICBpbnQgc291X1gsc291X1k7CiAgICAgICAgaW50IGRlc19YLGRlc19ZOwogICAgICAgIHNvdV9YPXNvdV9ZPWRlc19YPWRlc19ZPTA7CiAgICAgICAgIEluZGV4KHNvdXJjZSxibG9ja19sZW5ndGgsJnNvdV9YLCZzb3VfWSk7CiAgICAgICAgIEluZGV4KGRlc3RpbmF0aW9uLGJsb2NrX2xlbmd0aCwmZGVzX1gsJmRlc19ZKTsKICAgICAgICAgbW92ZShzb3VfWCxzb3VfWSxkZXNfWCxkZXNfWSk7CgoKCn0Kdm9pZCBtb3ZlKGludCBzb3VfaSxpbnQgc291X2osaW50IGRlc19pLGludCBkZXNfail7CiAgICBpbnQgaTsKICAgICB3aGlsZShhW2Rlc19pXVtkZXNfal0hPS0xKXsKICAgICAgICAgICAgICAgIGRlc19qKys7CiAgICAgfQoKICAgICAgICAgaT1zb3VfajsKICAgICAgICB3aGlsZShhW3NvdV9pXVtpXSE9LTEpewogICAgICAgICAgICAgIGFbZGVzX2ldW2Rlc19qXT1hW3NvdV9pXVtpXTsKICAgICAgICAgICAgICBkZXNfaisrOwogICAgICAgICAgICAgIGkrKzsKICAgICAgICB9CgoKICAgICAgICBhW2Rlc19pXVtkZXNfal09LTE7CiAgICAgICAgYVtzb3VfaV1bc291X2pdPS0xOwp9Cgp2b2lkIEluZGV4KGludCBudW0saW50IGxlbmd0aCxpbnQgKnBfWCxpbnQgKnBfWSl7CgoKICAgIGludCBpPTA7ICAgIC8qaXQgY291bnQgZm9yIHggcG9zaXRpb24qLwogICAgaW50IGo7ICAgICAgLyppdCBjb3VudCBmb3IgeSBwb3NpdGlvbiovCiAgICB3aGlsZShpPGxlbmd0aCl7CiAgICAgICAgaj0wOwogICAgICAgIHdoaWxlKGFbaV1bal0hPS0xKXsKICAgICAgICAgICAgaWYobnVtPT1hW2ldW2pdKXsKICAgICAgICAgICAgICAgICpwX1g9aTsKICAgICAgICAgICAgICAgICpwX1k9ajsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBqKys7CiAgICAgICAgfQogICAgICAgIGkrKzsKCiAgICB9Cgp9CmludCBpc1ZhbGlkKGludCB4LCBpbnQgeSxpbnQgYmxvY2tfbGVuZ3RoKXsKICAgICAgICBpbnQgaSxqLGs7CiAgICAgICAgaWYoeD09eSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwoKICAgICAgICAgICAgICAgIGZvciggaT0wO2k8YmxvY2tfbGVuZ3RoO2krKyl7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciggaj0wO2FbaV1bal0hPS0xO2orKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih4PT1hW2ldW2pdKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciggaz0wO2FbaV1ba10hPS0xO2srKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoeT09YVtpXVtrXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOwp9Cg==