#include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <set>
using namespace std;
#define el endl
#define dl double
#define ll long long
#define faster ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define op 1005
#define _c const int
_c N = op;
int n,m,a[N][N];
bool visited[N][N];
int dx[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
int dy[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
bool kt;
bool board(int i1, int j1){
return i1 >= 0 && i1 < n && j1 >= 0 && j1 < m;
}
void dfs(int i, int j, int h){
visited[i][j]=true;
for(int k = 0; k < 8; k++){
int i1 = i + dx[k];
int j1 = j + dy[k];
if(!board(i1,j1)) continue;
if(a[i1][j1] > h){
kt = false;
}
if(!visited[i1][j1] && a[i1][j1]==h){
dfs(i1,j1,h);
}
}
}
void inp(){
cin >> n >> m;
for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) cin >> a[i][j];
int cnt = 0;
memset(visited,false,sizeof(visited));
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(!visited[i][j]){
kt =true;
dfs(i,j,a[i][j]);
if(kt) ++cnt;
}
}
}
cout << cnt;
}
int main(){
inp();
faster;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNldD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBlbCBlbmRsCiNkZWZpbmUgZGwgZG91YmxlCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZmFzdGVyIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKI2RlZmluZSBvcCAxMDA1CiNkZWZpbmUgX2MgY29uc3QgaW50IApfYyBOID0gb3A7CmludCBuLG0sYVtOXVtOXTsKYm9vbCB2aXNpdGVkW05dW05dOwppbnQgZHhbOF0gPSB7LTEsIC0xLCAtMSwgIDAsIDAsIDEsIDEsIDF9OwppbnQgZHlbOF0gPSB7LTEsICAwLCAgMSwgLTEsIDEsIC0xLCAwLCAxfTsKYm9vbCBrdDsKYm9vbCBib2FyZChpbnQgaTEsIGludCBqMSl7CglyZXR1cm4gaTEgPj0gMCAmJiBpMSA8IG4gJiYgajEgPj0gMCAmJiBqMSA8IG07Cn0Kdm9pZCBkZnMoaW50IGksIGludCBqLCBpbnQgaCl7Cgl2aXNpdGVkW2ldW2pdPXRydWU7Cglmb3IoaW50IGsgPSAwOyBrIDwgODsgaysrKXsKCQlpbnQgaTEgPSBpICsgZHhba107CgkJaW50IGoxID0gaiArIGR5W2tdOwoJCWlmKCFib2FyZChpMSxqMSkpIGNvbnRpbnVlOwoJCWlmKGFbaTFdW2oxXSA+IGgpewoJCQlrdCA9IGZhbHNlOwoJCX0KCQlpZighdmlzaXRlZFtpMV1bajFdICYmIGFbaTFdW2oxXT09aCl7CgkJCWRmcyhpMSxqMSxoKTsKCQl9Cgl9Cn0Kdm9pZCBpbnAoKXsKCWNpbiA+PiBuID4+IG07Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSBmb3IoaW50IGogPSAwOyBqIDwgbTsgaisrKSBjaW4gPj4gYVtpXVtqXTsKCWludCBjbnQgPSAwOwoJbWVtc2V0KHZpc2l0ZWQsZmFsc2Usc2l6ZW9mKHZpc2l0ZWQpKTsKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewoJCWZvcihpbnQgaiA9IDA7IGogPCBtOyBqKyspewoJCQlpZighdmlzaXRlZFtpXVtqXSl7CgkJCQlrdCA9dHJ1ZTsKCQkJCWRmcyhpLGosYVtpXVtqXSk7CgkJCQlpZihrdCkgKytjbnQ7CgkJCX0KCQkJCgkJfQoJfQoJY291dCA8PCBjbnQ7Cn0KaW50IG1haW4oKXsKCWlucCgpOwoJZmFzdGVyOwoJcmV0dXJuIDA7Cn0=