#include<stdio.h> int last; typedef struct node{ int a; int b; int pre; int zong; }node; int A; int B; int C; int vist[99][99]; node dui[100]; void bfs() { int tou=0; int wei=1; dui[tou].a=0; dui[tou].b=0; dui[tou].pre=-1; while(tou<wei) { if(dui[tou].b==C) { last=tou; break; } for(int i=0;i<6;i++) { int na=dui[tou].a; int nb=dui[tou].b; if(i==0) { if(vist[A][dui[tou].b]==0) { vist[A][dui[tou].b]=1; dui[wei].a=A; dui[wei].b=dui[tou].b; dui[wei].pre=tou; dui[wei++].zong=i; } } else if(i==1) { if(vist[0][dui[tou].b]==0) { vist[0][dui[tou].b]=1; dui[wei].a=0; dui[wei].b=dui[tou].b; dui[wei].pre=tou; dui[wei++].zong=i; } } else if(i==2) { if(vist[dui[tou].a][0]==0) { vist[dui[tou].a][0]=1; dui[wei].a=dui[tou].a; dui[wei].b=0; dui[wei].pre=tou; dui[wei++].zong=i; } } else if(i==3) { if(vist[dui[tou].a][B]==0) { vist[dui[tou].a][B]=1; dui[wei].a=dui[tou].a; dui[wei].b=B; dui[wei].pre=tou; dui[wei++].zong=i; } } else if(i==4) { if(na+nb>=B) { if(vist[na+nb-B][B]==0) { vist[na+nb-B][B]=1; dui[wei].a=na+nb-B; dui[wei].b=B; dui[wei].pre=tou; dui[wei++].zong=i; } } else { if(vist[0][na+nb]==0) { vist[0][na+nb]=1; dui[wei].a=0; dui[wei].b=na+nb; dui[wei].pre=tou; dui[wei++].zong=i; } } } else if(i==5) { if(na+nb>=A) { if(vist[A][na+nb-A]==0) { vist[A][na+nb-A]=1; dui[wei].a=A; dui[wei].b=na+nb-A; dui[wei].pre=tou; dui[wei++].zong=i; } } else { if(vist[na+nb][0]==0) { vist[na+nb][0]=1; dui[wei].a=na+nb; dui[wei].b=0; dui[wei].pre=tou; dui[wei++].zong=i; } } } } tou++; } } void dayin(int a) { if(a==0) return ; dayin(dui[a].pre); int i=dui[a].zong; if(i==0) printf("fill A \n"); else if(i==1) printf("empty A\n"); else if(i==2) printf("empty B\n"); else if(i==3) printf("fill B\n"); else if(i==4) printf("pour A B\n"); else if(i==5) printf("pour B A\n"); } int main() { //freopen ("in.txt","r",stdin); while(scanf("%d %d %d",&A,&B,&C)!=EOF) { for(int i=0;i<99;i++) { for(int j=0;j<99;j++) { vist[i][j]=0; } } bfs(); dayin(last); printf("success\n"); } return 0; }