#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[705][705];
bool used[705][705];
int dx[8] = {1, -1, 0, 0, 1, 1, -1, -1};
int dy[8] = {0, 0, 1, -1, 1, -1, 1, -1};
bool bfs(int sx, int sy) {
queue<pair<int,int>> q;
q.push({sx, sy});
used[sx][sy] = true;
int h = a[sx][sy];
bool is_peak = true;
while (!q.empty()) {
auto [x, y] = q.front();
q.pop();
for (int k = 0; k < 8; k++) {
int u = x + dx[k];
int v = y + dy[k];
if (u < 1 || u > n || v < 1 || v > m) continue;
if (a[u][v] > h)
is_peak = false;
if (!used[u][v] && a[u][v] == h) {
used[u][v] = true;
q.push({u, v});
}
}
}
return is_peak;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> a[i][j];
int cnt = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (!used[i][j]) {
if (bfs(i, j))
cnt++;
}
}
}
cout << cnt << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbiwgbTsKaW50IGFbNzA1XVs3MDVdOwpib29sIHVzZWRbNzA1XVs3MDVdOwoKaW50IGR4WzhdID0gezEsIC0xLCAwLCAwLCAxLCAxLCAtMSwgLTF9OwppbnQgZHlbOF0gPSB7MCwgMCwgMSwgLTEsIDEsIC0xLCAxLCAtMX07Cgpib29sIGJmcyhpbnQgc3gsIGludCBzeSkgewogICAgcXVldWU8cGFpcjxpbnQsaW50Pj4gcTsKICAgIHEucHVzaCh7c3gsIHN5fSk7CiAgICB1c2VkW3N4XVtzeV0gPSB0cnVlOwoKICAgIGludCBoID0gYVtzeF1bc3ldOwogICAgYm9vbCBpc19wZWFrID0gdHJ1ZTsKCiAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgIGF1dG8gW3gsIHldID0gcS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CgogICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgODsgaysrKSB7CiAgICAgICAgICAgIGludCB1ID0geCArIGR4W2tdOwogICAgICAgICAgICBpbnQgdiA9IHkgKyBkeVtrXTsKCiAgICAgICAgICAgIGlmICh1IDwgMSB8fCB1ID4gbiB8fCB2IDwgMSB8fCB2ID4gbSkgY29udGludWU7CgogICAgICAgICAgICBpZiAoYVt1XVt2XSA+IGgpCiAgICAgICAgICAgICAgICBpc19wZWFrID0gZmFsc2U7CgogICAgICAgICAgICBpZiAoIXVzZWRbdV1bdl0gJiYgYVt1XVt2XSA9PSBoKSB7CiAgICAgICAgICAgICAgICB1c2VkW3VdW3ZdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHEucHVzaCh7dSwgdn0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpc19wZWFrOwp9CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgY2luID4+IG4gPj4gbTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspCiAgICAgICAgICAgIGNpbiA+PiBhW2ldW2pdOwoKICAgIGludCBjbnQgPSAwOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG07IGorKykgewogICAgICAgICAgICBpZiAoIXVzZWRbaV1bal0pIHsKICAgICAgICAgICAgICAgIGlmIChiZnMoaSwgaikpCiAgICAgICAgICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCBjbnQgPDwgIlxuIjsKICAgIHJldHVybiAwOwp9Cg==