#include <iostream>
#include <stdio.h>
#include <fstream>
using namespace std;
const int Nmax=1010;
const int d[9]={0,-1,-1,-1, 1,1,1, 0,0};
const int c[9]={0,-1, 0, 1,-1,0,1,-1,1};
int n,m,rest=0;
int a[Nmax][Nmax],b[Nmax][Nmax];
void get_data()
{
int i,j;
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1; j<=m;j++) cin>>a[i][j];
for(int u=1;u<=n;u++)
for(int v=1;v<=m;v++) b[u][v]=1;
}
void DFS1(int x,int y,int s)
{
for(int i=1;i<=8;i++)
{
int u=x+d[i];
int v=y+c[i];
if(0<u && u<=n && 0<v && v<=m &&
b[u][v] && a[u][v]<=a[x][y] && a[u][v]<s)
{
b[u][v]=0;
DFS1(u,v,s);
}
}
}
//============
void DFS2(int x,int y)
{
for(int i=1;i<=8;i++)
{
int u=x+d[i];
int v=y+c[i];
if(0<u && u<=n && 0<v && v<=m && b[u][v])
{
b[u][v]=0;
DFS2(u,v);
}
}
}
//=================
void output()
{
for(int u=1;u<=n;u++)
for(int v=1;v<=m;v++)
if(a[u][v]!=-1) DFS1(u,v,a[u][v]);
for(int u=1;u<=n;u++)
for(int v=1;v<=m;v++)
if(b[u][v])
{
DFS2(u,v);
rest++;
}
cout<<rest<<endl;
}
int main()
{
get_data();
output();
}