#include #include #include #include #include #include using namespace std; const int N = 2000009; int visit[N]; struct node{ int a[5]; } re[N]; int ans[N]; int map[4][4]; void makemap(int k) { for(int i=0;i<3;i++) for(int j=0;j<3;j++) { map[i][j]=k%5; k/=5; } } struct quenod{ int s,step; }; queue que; bool v[5]; bool oor(int x,int y) { if(x<0||x>2) return false; if(y<0||y>2) return false; return true; } int dx[]={0,0,-1,1}; int dy[]={-1,1,0,0}; bool ok(int x,int y,int n) { memset(v,0,sizeof(v)); int tx,ty; for(int i=0;i<4;i++) { tx = x+dx[i],ty=y+dy[i]; if(!oor(tx,ty)) continue; v[map[tx][ty]]=true; } for(int i=1;i=w) { ou = true; printf("Case %d: %d\n",T++,ans[i]); break; } } if(!ou) { printf("Case %d: Impossible\n",T++); } } return 0; }