#include using namespace std; int main(){ int W,H; cin >> W >> H; vector> M(H,vector(W)); for(int i=0;i> M[i][j]; bool flag = false; vector dx = {1,0,0,-1}; vector dy = {0,1,-1,0}; for(int i=0;i> seen(H,vector(W,false)); seen[i][j] = true; int N = M[i][j]; queue,int>> que; que.push(make_pair(make_pair(i,j),-1)); while(!que.empty()){ int x = que.front().first.first; int y = que.front().first.second; int d = que.front().second; que.pop(); for(int k=0;k<4;k++){ int nx = x+dx[k]; int ny = y+dy[k]; if(nx < 0 || nx >= H || ny < 0 || ny >= W) continue; if(k == 3-d) continue; if(M[nx][ny] != N) continue; if(seen[nx][ny]){ flag = true; break; } else{ seen[nx][ny] = true; que.push(make_pair(make_pair(nx,ny),k)); } } if(flag) break; } } } if(flag) cout << "possible" << endl; else cout << "impossible" << endl; }