#include #define REP(i,n) for(int i=0,i##_len=(n);i>W>>H; vector> M(W,vector(H)); REP(i,H) REP(j,W) cin>>M[j][i]; int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1}; vector> used(W,vector(H,false)); auto dfs=[&](auto &&f,int x,int y,int px,int py)->bool{ used[x][y]=true; bool ret=false; REP(i,4){ int nx=x+dx[i],ny=y+dy[i]; if(nx<0||W<=nx||ny<0||H<=ny||(nx==px&&ny==py)||M[nx][ny]!=M[x][y]) continue; if(used[nx][ny]) return true; if(f(f,nx,ny,x,y)){ ret=true; break; } } used[x][y]=false; return ret; }; bool ans=false; REP(i,H) REP(j,W) ans=ans|dfs(dfs,j,i,j,i); if(ans) cout<<"possible"<