#include #include #include #include #include #include #include #include #include #include #define inf 1<<30 #define M 60005 #define N 10005 #define maxn 300005 #define eps 1e-10 #define zero(a) fabs(a)(b)?(a):(b)) #define pb(a) push_back(a) #define mem(a,b) memset(a,b,sizeof(a)) #define LL long long #define lson step<<1 #define rson step<<1|1 #define MOD 1000000009 using namespace std; int maze[10][10]; int n; int way[4][2]={0,1,0,-1,1,0,-1,0}; int vis[10][10]; bool check(int x,int y) { if(x<0||y<0||x>=n||y>=n) return false; return true; } void floodfill(int x,int y,int c) { vis[x][y]=1; for(int i=0;i<4;i++) { int tx=x+way[i][0]; int ty=y+way[i][1]; if(!check(tx,ty)) continue; if(vis[tx][ty]==1) continue; if(maze[tx][ty]==c) floodfill(tx,ty,c); else vis[tx][ty]=2; } } int get_cnt(int col) { int cnt=0; for(int i=0;idepth) return false; for(int i=0;i<6;i++) { int tmp[10][10]; memcpy(tmp,vis,sizeof(vis)); if(get_cnt(i)==0) continue; if(IDAstar(dep+1)) return true; memcpy(vis,tmp,sizeof(vis)); } return false; } int main() { while(scanf("%d",&n)!=EOF&&n) { for(int i=0;i