#include #include #include using namespace std; int dr[]={-1, 0, 1, 0}, dc[]={0, -1, 0, 1}; int visited[110][110]; bool dfs(const vector>& a, int r, int c, int pr, int pc) { if (visited[r][c]) return true; visited[r][c]++; for(int i=0;i<4;++i) { int nr=r+dr[i], nc=c+dc[i]; if ((nr==pr and nc==pc) or a[nr][nc]!=a[r][c]) continue; if (dfs(a, nr, nc, r, c)) return true; } return false; } int main() { int w, h; while (cin>>w>>h) { vector> a(h+2, vector(w+2, -1)); for(int i=0;i>a[i+1][j+1]; bool possible=false; memset(visited, 0, sizeof(visited)); for(int i=1;i<=h;++i) for(int j=1;j<=w;++j) if (!visited[i][j]) if (possible=dfs(a, i, j, -1, -1)) goto END; END: cout<<("impossible"+2*possible)<