#include <bits/stdc++.h>
using namespace std;
int xx[] = {1,-1,0,0,1,-1,1,-1};
int yy[] = {0,0,1,-1,1,-1,-1,1};
int hei[1005][1005];
int vis[1005][1005];
int n;
int bfs(int x,int y,int opt){
int cnt=1;
if(vis[x][y]==1 or x>n or y>n or x<1 or y<1)return 0;
vis[x][y]=1;
if(opt==1){
for(int i=0;i<=7;i++){
int dx = xx[i],dy = yy[i];
if(x+dx>n or y+dy>n or x+dx<1 or y+dy<1)continue;
if(hei[x+dx][y+dy]>hei[x][y])return -1;
}
}else{
for(int i=0;i<=7;i++){
int dx = xx[i],dy = yy[i];
if(x+dx>n or y+dy>n or x+dx<1 or y+dy<1)continue;
if(hei[x+dx][y+dy]<hei[x][y])return -1;
}
}
for(int i=0;i<=7;i++){
if(hei[x+xx[i]][y+yy[i]]==hei[x][y]){
int tmp = bfs(x+xx[i],y+yy[i],opt);
if(tmp == -1){
return -1;
}else{
cnt+=tmp;
}
}
}
return cnt;
}
int main(){
cin>>n;
int f = 0,g = 0;
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>hei[i][j];
}
}
int cnt = 0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
int tmp =bfs(i,j,1);
if(tmp!=0 and tmp!=-1){f++;}
}
}
memset(vis,0,sizeof(vis));
cnt = 0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
int tmp =bfs(i,j,2);
if(tmp!=0 and tmp!=-1){g++;}
}
}
cout<<f<<" "<<g<<endl;
}