#include <bits/stdc++.h>
#define int long long

using namespace std;

struct info {
    int x, y;
};

int m, n;
int a[1111][1111];
int lab[1111 * 1111];
int dx[] = {0, 0, 1, -1};
int dy[] = {-1, 1, 0, 0};

unordered_map<int, int> freq;

int getIndex(int x, int y) {
    return (x - 1) * n + y;
}

void init() {
    for (int i = 0; i < m * n; i += 1) {
        lab[i] = -1;
    }
}

int Find(int u) {
    if (lab[u] < 0) return u;

    lab[u] = Find(lab[u]);

    return lab[u];
}

void Union(int u, int v) {
    int r1 = Find(u);
    int r2 = Find(v);

    if (r1 == r2) return;

    if (abs(r1) < abs(r2)) swap(r1, r2);

    lab[r1] += lab[r2];
    lab[r2] = r1;
}

int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    freopen("ISLANDS.INP", "r", stdin);
    freopen("ISLANDS.OUT", "w", stdout);

    cin >> m >> n;

    init();

    int high = 0;
    for (int i = 1; i <= m; i += 1) {
        for (int j = 1; j <= n; j += 1) {
            cin >> a[i][j];
            high = max(high, a[i][j]);
            freq[a[i][j]] += 1;
        }
    }

    int res = 0;

    for (int k = high; k >= 0; k -= 1) {
        if (freq[k] > 0) {

            unordered_set<int> cnt;

            for (int i = 1; i <= m; i += 1) {
                for (int j = 1; j <= n; j += 1) {

                    if (a[i][j] < k) continue;

                    for (int d = 0; d < 4; d += 1) {
                        info h = {i + dx[d], j + dy[d]};

                        if (h.x < 1 || h.y < 1 || h.x > m || h.y > n) continue;

                        if (a[h.x][h.y] >= k) {
                            Union(getIndex(i, j), getIndex(h.x, h.y));
                        }
                    }
                }
            }


            for (int i = 1; i <= m; i += 1) {
                for (int j = 1; j <= n; j += 1) {
                    if (a[i][j] >= k) {
                        cnt.insert(Find(getIndex(i, j)));
                    }
                }
            }

            res = max(res, (int)cnt.size());
        }
    }

    cout << res;

    return 0;
}