#include <bits/stdc++.h>
using namespace std;

int a[1100][1100],n,c;
int num[1100][1100]; 
//车的方向数组 
int d[8][2] = {{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,1},{1,-1}};

//设置控制点
void fun(int x,int y,int ox,int oy){
	for(int i = 0;i < 8;i++){
		while(x+d[i][0]>=1&&x+d[i][0]<=n&&y+d[i][1]>=1&&y+d[i][1]<=n&&a[x+d[i][0]][y+d[i][1]]==0){
			num[x+d[i][0]][y+d[i][1]]++;
			if(num[x+d[i][0]][y+d[i][1]] == 1) c++;
			x=x+d[i][0];
			y=y+d[i][1];
		}
		x=ox;
		y=oy; 
		
		if(a[ox][oy] == 1 && i == 3) break;
	}
} 
 
int main(){
	/*
	  思路:遍历每个点,如果该点是车或后则将所有可达点都走一遍并计数 
	*/
	int i,j;
	cin>>n;
	for(i = 1;i <= n;i++){
		for(j = 1;j <= n;j++){
			cin>>a[i][j];
		}                    
	}
		                      
	for(i = 1;i <= n;i++){
		for(j = 1;j <= n;j++){
			//车 
			if(a[i][j] == 1 || a[i][j] == 2){
				c++;
				num[i][j]++;
				fun(i,j,i,j);
			}
		}     
	}
	
//	for(i = 1;i <= n;i++){
//		for(j = 1;j <= n;j++){
//			cout<<setw(5)<<num[i][j];
//		}     
//		cout<<endl;
//	}
	cout<<n * n - c<<endl;
} 	

/**************************************************************
	Problem: 1528
	User: admin
	Language: C++
	Result: Accepted
	Time:478 ms
	Memory:11528 kb
****************************************************************/