//#include<stdio.h>
//int ar[7][7]= {};
//int arr[7][7]= {};
//int dfs(int i, int j,int p)
//{
// if(ar[i][j]==p&&i<7&&j<7&&i>=0&&j>=0)
// return 1+dfs(i,j+1,ar[i][j])+dfs(i,j-1,ar[i][j])+dfs(i-1,j,ar[i][j])+dfs(i+1,j,ar[i][j]);
// else return 0;
//}
//int main()
//{
// int i,j,count=0;
// for(i=0; i<7; i++)
// {
// for(j=0; j<7; j++)
// {
//
// scanf("%d",&ar[i][j]);
// }
// }
// for(i=0; i<7; i++)
// {
// for(j=0; j<7; j++)
// {
// if(dfs(i,j,ar[i][j])>=3)
// {
// count++;
// }
// }
// }
// printf("%d",count);
// return 0;
//}
/*
#include<stdio.h>
int map[10][10] = {0};
int join[10][10] = {0};
int visit(int x, int y, int k) {
if(map[x][y] == 0) {
return 0;
}
if(join[x][y] == 1) {
return 0;
}
if(map[x][y] == k) {
join[x][y] = 1;
return 1 + visit(x, y-1, k) + visit(x, y+1, k) + visit(x-1, y, k) + visit(x+1, y, k);
}
else {
return 0;
}
}
int main() {
int i, j;
int c = 0;
for(i=1; i<=7; i++) {
for(j=1; j<=7; j++) {
scanf("%d", &map[i][j]);
}
}
for(i=1; i<=7; i++) {
for(j=1; j<=7; j++) {
if(join[i][j] == 0) {
int k = visit(i, j, map[i][j]);
if (k >= 3) {
c++;
}
}
}
}
printf("%d", c);
}
*/
/*
#include<stdio.h>
char map[102][102]={0};
int join[102][102]={};
int dir[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
int w,h;
void dfs(int i,int j)
{
if(map[i][j]==0){
return;
}
if(join[i][j]==1){
return;
}
if(map[i][j]=='L'){
map[i][j]='.';
for(int k=0;k<8;k++){
dfs(i+dir[k][0],j+dir[k][1]);
map[i+dir[k][0]][j+dir[k][1]]='.';
}
}
}
int main()
{
int i,j,count=0;
scanf("%d %d",&w,&h);
for(i=1;i<=h;i++)
{
for(j=1;j<=w;j++)
{
scanf(" %c",&map[i][j]);
}
}
for(i=1;i<=h;i++)
{
for(j=1;j<=w;j++)
{
if(map[i][j]=='L'){
dfs(i,j);
count++;
}
}
}
printf("%d",count);
return 0;
}
*/
/*
#include<stdio.h>
int m,n,k;
int map[102][102]= {},join[102][102]= {};
int size[100]= {};
int dfs(int i,int j)
{
if(map[i][j]==1||map[i][j]==-1)
{
return 0;
}
else
{
map[i][j]=1;
return 1+dfs(i+1,j)+dfs(i-1,j)+dfs(i,j+1)+dfs(i,j-1);
}
}
int main()
{
int a,b,c,d,i,j,l,count=0;
scanf("%d %d %d",&n,&m,&k);
for(i=0; i<=m+1; i++)
{
for(j=0; j<=n+1; j++)
{
if(i==0||i==m+1){
map[i][j]=-1;
}
if(j==0||j==n+1){
map[i][j]=-1;
}
}
}
for(i=0; i<k; i++)
{
scanf("%d %d %d %d",&a,&b,&c,&d);
for(j=a+1; j<=c; j++)
{
for(l=b+1; l<=d; l++)
{
map[j][l]=1;
}
}
}
for(i=1; i<=m; i++)
{
for(j=1; j<=n; j++)
{
if(map[i][j]==0)
{
size[count]=dfs(i,j);
count++;
}
}
}
for(i=1;i<count;i++)
{
for(j=0;j<count-i;j++)
{
if(size[j]>size[j+1]){
int blank=size[j];
size[j]=size[j+1];
size[j+1]=blank;
}
}
}
printf("%d\n",count);
for(i=0; i<count; i++)
{
printf("%d ",size[i]);
}
return 0;
}
*/
#include<stdio.h>
int n,m;
int map[1002][1002]={};
int main()
{
int i,j;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
scanf("%d",&map[i][j]);
}
}
}
/*
#include<stdio.h>
int map[102][102]= {};
int river[102][102]= {};
int dir[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};
void dfs(int i,int j)
{
if(river[i][j]==-1)
{
return;
}
if(river[i][j]==0)
{
return;
}
river[i][j]=0;
for(int k=0; k<4; k++)
{
dfs(i+dir[k][0],j+dir[k][1]);
}
}
int main()
{
int n,i,j,max=0,count=0,countmax=0;
scanf("%d",&n);
for(i=0; i<=n+1; i++)
{
for(j=0; j<=n+1; j++)
{
if(i==0||i==n+1)
{
river[i][j]==-1;
}
else if(j==0||j==n+1)
{
river[i][j]==-1;
}
else
{
scanf("%d",&map[i][j]);
if(map[i][j]>max)
{
max=map[i][j];
}
}
}
}
for(i=0; i<max; i++)
{
for(j=1; j<=n; j++)
{
for(int k=1; k<=n; k++)
{
if(i<map[j][k])
{
river[j][k]=1;
}
}
}
for(j=1; j<=n; j++)
{
for(int k=1; k<=n; k++)
{
if(river[j][k]==1)
{
dfs(j,k);
count++;
}
}
}
if(countmax<count) countmax=count;
count=0;
}
printf("%d",countmax);
return 0;
}
*/