#include <iostream>
#include <queue>
using namespace std;
const int arr = 1e3 + 10;
int dr[8] = {0, -1, -1, -1, 0, 1, 1, 1};
int dc[8] = {-1, -1, 0, 1, 1, 1, 0, -1};
int n, m;
bool vis[arr][arr];
int h[arr][arr];
void read(){
cin >> n >> m;
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= m; ++j){
cin >> h[i][j];
}
}
}
bool valid(int r, int c){
return (r > 0 && c > 0 && r <= n && c <= m);
}
int dfs(int r, int c){
vis[r][c] = 1;
int res = 0;
for(int i = 0; i < 8; ++i){
int nxt_r = r + dr[i];
int nxt_c = c + dc[i];
if(valid(nxt_r, nxt_c)){
if(h[nxt_r][nxt_c] == h[r][c] && !vis[nxt_r][nxt_c]){
res += dfs(nxt_r, nxt_c);
}
else if(h[nxt_r][nxt_c] > h[r][c]) res++;
}
}
return res;
}
int bfs(int r, int c){
vis[r][c] = 1;
queue<pair<int, int>> q;
q.push({r, c});
int higher = 0;
while(!q.empty()){
int r = q.front().first;
int c = q.front().second;
q.pop();
for(int i = 0; i < 8; ++i){
int nxt_r = r + dr[i];
int nxt_c = c + dc[i];
if(valid(nxt_r, nxt_c)){
if(h[nxt_r][nxt_c] > h[r][c]){
higher++;
}
else if(h[nxt_r][nxt_c] == h[r][c] && !vis[nxt_r][nxt_c]){
q.push({nxt_r, nxt_c});
vis[nxt_r][nxt_c] = 1;
}
}
}
}
return higher;
}
void solve(){
int ans = 0;
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= m; ++j){
if(!vis[i][j]){
int higher = bfs(i, j);
if(higher == 0) ans++;
}
}
}
cout << ans;
}
int main()
{
read();
solve();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgYXJyID0gMWUzICsgMTA7CmludCBkcls4XSA9IHswLCAtMSwgLTEsIC0xLCAwLCAxLCAxLCAxfTsKaW50IGRjWzhdID0gey0xLCAtMSwgMCwgMSwgMSwgMSwgMCwgLTF9OwppbnQgbiwgbTsKYm9vbCB2aXNbYXJyXVthcnJdOwppbnQgaFthcnJdW2Fycl07Cgp2b2lkIHJlYWQoKXsKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47ICsraSl7CiAgICAgICAgZm9yKGludCBqID0gMTsgaiA8PSBtOyArK2opewogICAgICAgICAgICBjaW4gPj4gaFtpXVtqXTsKICAgICAgICB9CiAgICB9Cn0KCmJvb2wgdmFsaWQoaW50IHIsIGludCBjKXsKICAgIHJldHVybiAociA+IDAgJiYgYyA+IDAgJiYgciA8PSBuICYmIGMgPD0gbSk7Cn0KCmludCBkZnMoaW50IHIsIGludCBjKXsKICAgIHZpc1tyXVtjXSA9IDE7CiAgICBpbnQgcmVzID0gMDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCA4OyArK2kpewogICAgICAgIGludCBueHRfciA9IHIgKyBkcltpXTsKICAgICAgICBpbnQgbnh0X2MgPSBjICsgZGNbaV07CiAgICAgICAgaWYodmFsaWQobnh0X3IsIG54dF9jKSl7CiAgICAgICAgICAgIGlmKGhbbnh0X3JdW254dF9jXSA9PSBoW3JdW2NdICYmICF2aXNbbnh0X3JdW254dF9jXSl7CiAgICAgICAgICAgICAgICByZXMgKz0gZGZzKG54dF9yLCBueHRfYyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihoW254dF9yXVtueHRfY10gPiBoW3JdW2NdKSByZXMrKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmVzOwp9CgppbnQgYmZzKGludCByLCBpbnQgYyl7CiAgICB2aXNbcl1bY10gPSAxOwogICAgcXVldWU8cGFpcjxpbnQsIGludD4+IHE7CiAgICBxLnB1c2goe3IsIGN9KTsKICAgIGludCBoaWdoZXIgPSAwOwogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgaW50IHIgPSBxLmZyb250KCkuZmlyc3Q7CiAgICAgICAgaW50IGMgPSBxLmZyb250KCkuc2Vjb25kOwogICAgICAgIHEucG9wKCk7CiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IDg7ICsraSl7CiAgICAgICAgICAgIGludCBueHRfciA9IHIgKyBkcltpXTsKICAgICAgICAgICAgaW50IG54dF9jID0gYyArIGRjW2ldOwogICAgICAgICAgICBpZih2YWxpZChueHRfciwgbnh0X2MpKXsKICAgICAgICAgICAgICAgIGlmKGhbbnh0X3JdW254dF9jXSA+IGhbcl1bY10pewogICAgICAgICAgICAgICAgICAgIGhpZ2hlcisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZihoW254dF9yXVtueHRfY10gPT0gaFtyXVtjXSAmJiAhdmlzW254dF9yXVtueHRfY10pewogICAgICAgICAgICAgICAgICAgIHEucHVzaCh7bnh0X3IsIG54dF9jfSk7CiAgICAgICAgICAgICAgICAgICAgdmlzW254dF9yXVtueHRfY10gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGhpZ2hlcjsKfQoKdm9pZCBzb2x2ZSgpewogICAgaW50IGFucyA9IDA7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47ICsraSl7CiAgICAgICAgZm9yKGludCBqID0gMTsgaiA8PSBtOyArK2opewogICAgICAgICAgICBpZighdmlzW2ldW2pdKXsKICAgICAgICAgICAgICAgIGludCBoaWdoZXIgPSBiZnMoaSwgaik7CiAgICAgICAgICAgICAgICBpZihoaWdoZXIgPT0gMCkgYW5zKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGFuczsKfQoKaW50IG1haW4oKQp7CiAgICByZWFkKCk7CiAgICBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K