#include <bits/stdc++.h>
using namespace std;
int const N=110;
string dp[N][N]={};
string add(string a,string b)
{
string c;
while (a.size()<b.size())
a='0'+a;
while (a.size()>b.size())
b='0'+b;
int sz=a.size();
bool cr=0;
for (int i=sz-1;i>=0;i--)
{
int sm=a[i]-'0'+b[i]-'0'+cr;
cr=sm/10;
sm%=10;
c+=char('0'+sm);
}
if (cr)
c+='1';
while (c.size()>1&&c.back()=='0')
c.pop_back();
reverse(begin(c),end(c));
return c;
}
inline void solve()
{
int n;
cin>>n;
int a[n][n];
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
{
cin>>a[i][j];
dp[i][j]="0";
}
dp[0][0]="1";
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (a[i][j]==0) continue;
for (int k=0;k<=a[i][j];k++)
{
if (k!=0&&k!=a[i][j]) continue;
int r=i+k;
int c=j+a[i][j]-k;
if (r<n&&c<n)
dp[r][c]=add(dp[r][c],dp[i][j]);
}
}
}
cout<<dp[n-1][n-1]<<endl;
}
int main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
for (int i=1;i<=t;i++)
{
solve();
}
}