#include #include #include #include #include using namespace std; int dx[4] = {1, 0, -1, 0}; int dy[4] = {0, 1, 0, -1}; vector< vector > field; void walk(int x, int y) { if (field[y][x] == 0) { return ; } int road = 0; int dir; for (int i = 0; i < 4; i++) { if (field[y+dy[i]][x+dx[i]] == field[y][x]) { dir = i; road++; } } if (road == 0) { field[y][x] = 0; } else if (road == 1) { field[y][x] = 0; walk(x+dx[dir], y+dy[dir]); } } int main() { int w, h; cin >> w >> h; field.assign(h + 2, vector(w + 2, 0)); for (int i = 1; i <= h; i++) { for (int j = 1; j <= w; j++) { cin >> field[i][j]; } } for (int i = 1; i <= h; i++) { for (int j = 1; j <= w; j++) { walk(j, i); } } for (int i = 1; i <= h; i++) { for (int j = 1; j <= w; j++) { if (field[i][j] > 0) { cout << "possible" << endl; return 0; } } } cout << "impossible" << endl; return 0; }