#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
****************************************************************/