#include <iostream>
#include <algorithm>
#include <queue>
#include <cstring>
using namespace std;
int N, M;
int graph[301][301];
bool visited[301][301];
int dir[4][2] = { {0,1},{1,0},{0,-1},{-1,0} };
void check(int r, int c ) {
queue<pair<int, int>>q;
q.push({ r,c });
while (!q.empty()) {
int cr = q.front().first;
int cc = q.front().second;
q.pop();
for (int i = 0; i < 4; i++) {
int nr = cr + dir[i][0];
int nc = cc + dir[i][1];
if (nr >= 0 && nr < N && nc >= 0 && nc < M) {
if (graph[nr][nc] != 0 && !visited[nr][nc]) {
q.push({ nr,nc });
visited[nr][nc] = true;
}
}
}
}
}
void bfs(int r, int c) {
queue<pair<int, int>>q;
q.push({ r,c });
while (!q.empty()) {
int cr = q.front().first;
int cc = q.front().second;
q.pop();
for (int i = 0; i < 4; i++) {
int nr = cr + dir[i][0];
int nc = cc + dir[i][1];
if (nr >= 0 && nr < N && nc >= 0 && nc < M) {
if (graph[nr][nc] == 0 && !visited[nr][nc]) {
q.push({ nr,nc });
visited[nr][nc] = true;
}
else if (graph[nr][nc] > 0) {
graph[nr][nc]--;
visited[nr][nc] = true;
}
}
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> N >> M;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cin >> graph[i][j];
if (i == 0 || i == N - 1 || j == 0 || j == M - 1)
graph[i][j] = 0;
}
}
int time = 1;
while (true) {
memset(visited, false, sizeof(visited));
//빙산 녹이기 0인 구역 탐색
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (!visited[i][j] && graph[i][j] == 0) {
bfs(i, j);
}
}
}
memset(visited, false, sizeof(visited));
//나뉘어졌는지, 빙산이 다 녹았는지 검사
int cnt = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (!visited[i][j] && graph[i][j] != 0) {
check(i, j);
cnt++;
}
}
}
//빙산이 다 녹았다면
if (cnt == 0) {
cout << 0;
break;
}
//빙산이 두 덩이 이상이라면
else if (cnt >= 2) {
cout << time;
break;
}
time++;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxjc3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgTiwgTTsKaW50IGdyYXBoWzMwMV1bMzAxXTsKYm9vbCB2aXNpdGVkWzMwMV1bMzAxXTsKaW50IGRpcls0XVsyXSA9IHsgezAsMX0sezEsMH0sezAsLTF9LHstMSwwfSB9OwoKdm9pZCBjaGVjayhpbnQgciwgaW50IGMgKSB7CglxdWV1ZTxwYWlyPGludCwgaW50Pj5xOwoJcS5wdXNoKHsgcixjIH0pOwoKCXdoaWxlICghcS5lbXB0eSgpKSB7CgkJaW50IGNyID0gcS5mcm9udCgpLmZpcnN0OwoJCWludCBjYyA9IHEuZnJvbnQoKS5zZWNvbmQ7CgkJcS5wb3AoKTsKCgkJZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKCQkJaW50IG5yID0gY3IgKyBkaXJbaV1bMF07CgkJCWludCBuYyA9IGNjICsgZGlyW2ldWzFdOwoKCQkJaWYgKG5yID49IDAgJiYgbnIgPCBOICYmIG5jID49IDAgJiYgbmMgPCBNKSB7CgkJCQlpZiAoZ3JhcGhbbnJdW25jXSAhPSAwICYmICF2aXNpdGVkW25yXVtuY10pIHsKCQkJCQlxLnB1c2goeyBucixuYyB9KTsKCQkJCQl2aXNpdGVkW25yXVtuY10gPSB0cnVlOwoJCQkJfQoJCQl9CgkJfQoJfQp9Cgp2b2lkIGJmcyhpbnQgciwgaW50IGMpIHsKCXF1ZXVlPHBhaXI8aW50LCBpbnQ+PnE7CglxLnB1c2goeyByLGMgfSk7CgoJd2hpbGUgKCFxLmVtcHR5KCkpIHsKCQlpbnQgY3IgPSBxLmZyb250KCkuZmlyc3Q7CgkJaW50IGNjID0gcS5mcm9udCgpLnNlY29uZDsKCQlxLnBvcCgpOwoKCQlmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewoJCQlpbnQgbnIgPSBjciArIGRpcltpXVswXTsKCQkJaW50IG5jID0gY2MgKyBkaXJbaV1bMV07CgoJCQlpZiAobnIgPj0gMCAmJiBuciA8IE4gJiYgbmMgPj0gMCAmJiBuYyA8IE0pIHsKCQkJCWlmIChncmFwaFtucl1bbmNdID09IDAgJiYgIXZpc2l0ZWRbbnJdW25jXSkgewoJCQkJCXEucHVzaCh7IG5yLG5jIH0pOwoJCQkJCXZpc2l0ZWRbbnJdW25jXSA9IHRydWU7CgkJCQl9CgkJCQllbHNlIGlmIChncmFwaFtucl1bbmNdID4gMCkgewoJCQkJCWdyYXBoW25yXVtuY10tLTsKCQkJCQl2aXNpdGVkW25yXVtuY10gPSB0cnVlOwoJCQkJfQoJCQl9CgkJfQoJfQp9CgppbnQgbWFpbigpIHsKCglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKDApOwoJY291dC50aWUoMCk7CgljaW4gPj4gTiA+PiBNOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKCQlmb3IgKGludCBqID0gMDsgaiA8IE07IGorKykgewoJCQljaW4gPj4gZ3JhcGhbaV1bal07CgkJCWlmIChpID09IDAgfHwgaSA9PSBOIC0gMSB8fCBqID09IDAgfHwgaiA9PSBNIC0gMSkKCQkJCWdyYXBoW2ldW2pdID0gMDsKCQl9Cgl9CglpbnQgdGltZSA9IDE7Cgl3aGlsZSAodHJ1ZSkgewogICAgICAgIG1lbXNldCh2aXNpdGVkLCBmYWxzZSwgc2l6ZW9mKHZpc2l0ZWQpKTsKICAgICAgICAvL+u5meyCsCDrhbnsnbTquLAgMOyduCDqtazsl60g7YOQ7IOJCgkJZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKCQkJZm9yIChpbnQgaiA9IDA7IGogPCBNOyBqKyspIHsKCQkJCWlmICghdmlzaXRlZFtpXVtqXSAmJiBncmFwaFtpXVtqXSA9PSAwKSB7CgkJCQkJYmZzKGksIGopOwoJCQkJfQoJCQl9CgkJfQogICAgICAgIG1lbXNldCh2aXNpdGVkLCBmYWxzZSwgc2l6ZW9mKHZpc2l0ZWQpKTsKICAgICAgICAKCQkvL+uCmOuJmOyWtOyhjOuKlOyngCwg67mZ7IKw7J20IOuLpCDrhbnslZjripTsp4Ag6rKA7IKsCgkJaW50IGNudCA9IDA7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKCQkJZm9yIChpbnQgaiA9IDA7IGogPCBNOyBqKyspIHsKCQkJCWlmICghdmlzaXRlZFtpXVtqXSAmJiBncmFwaFtpXVtqXSAhPSAwKSB7CgkJCQkJY2hlY2soaSwgaik7CgkJCQkJY250Kys7CgkJCQl9CgkJCX0KCQl9CgkJLy/ruZnsgrDsnbQg64ukIOuFueyVmOuLpOuptAoJCWlmIChjbnQgPT0gMCkgewoJCQljb3V0IDw8IDA7CgkJCWJyZWFrOwoJCX0KCQkvL+u5meyCsOydtCDrkZAg642p7J20IOydtOyDgeydtOudvOuptAoJCWVsc2UgaWYgKGNudCA+PSAyKSB7CgkJCWNvdXQgPDwgdGltZTsKCQkJYnJlYWs7CgkJfQoJCQoJCXRpbWUrKzsKCX0KCXJldHVybiAwOwp9Cg==