#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<bitset>
#include<string>
#include<cmath>
#define pb push_back
#define mp make_pair
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
typedef __int64 big;
const int N=2010;
int a[N][N],b[N][N];
pair<int,int>q[N*N];
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
bool vis[N][N];
int s1=0,s2=0,n;
big det(const PII &S,const PII &A,const PII &B)
{
	static big x1,x2,y1,y2;
	x1=A.x-S.x;y1=A.y-S.y;x2=B.x-S.x;y2=B.y-S.y;
	return x1*y2-x2*y1;
}
double dis(const PII &A,const PII &B)
{
	return sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));
}
void ff(pair<int,int>S)
{
	static int h,tail;
	h=tail=1;q[h]=S;
	pair<int,int>s,A;
	static int i;
	A=S;
	int sum=0;
	double d=0;
	while(h<=tail)
	{
		s=q[h++];
		d=max(d,dis(S,s));
		for(i=0;i<4;i++)
		if(a[s.x+dx[i]][s.y+dy[i]]&&!vis[s.x+dx[i]][s.y+dy[i]])
		{
			q[++tail]=mp(s.x+dx[i],s.y+dy[i]);
			vis[s.x+dx[i]][s.y+dy[i]]=true;
		}
	}
	if(tail<160)return ;
	double area1,area2;
	area1=fabs(0.25*d*d*M_PI-tail);
	area2=fabs(0.5*d*d-tail);
	//printf("%lf %lf\n",area1,area2);
	if(area1<area2)s1++;
	else s2++;
}
int main()
{
	int i,j,k,p;
	//freopen("a.in","r",stdin);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	for(j=1;j<=n;j++)
	scanf("%d",&b[i][j]);
	int tot;
	for(i=1;i+4<=n;i++)
	for(j=1;j+4<=n;j++)
	{
		tot=0;
		for(k=0;k<=4;k++)
		for(p=0;p<=4;p++)
		tot+=b[k+i][p+j];
		if(tot>=15)a[i][j]=1;
	}
	n-=4;
	for(i=1;i<=n;i++)
	for(j=1;j<=n;j++)
	if(!vis[i][j]&&a[i][j])ff(mp(i,j));
	printf("%d %d\n",s1,s2);
	//while(1);
}
