#include <bits/stdc++.h>
#define int long long
#include <bits/stdc++.h>
class Num {
std::string num;
public:
Num() : num("0") {}
Num(const std::string& s) : num(s) {}
void normalize() {
int i = 0;
while (i + 1 < (int)num.size() && num[i] == '0') i++;
num = num.substr(i);
}
Num& operator+=(const Num& o) {
std::string a = num;
std::string b = o.num;
if (b.size() > a.size()) std::swap(a, b);
int n = a.size();
int m = b.size();
std::string res = a;
int carry = 0;
for (int i = 0; i < n; i++) {
int da = a[n - 1 - i] - '0';
int db = (i < m ? b[m - 1 - i] - '0' : 0);
int sum = da + db + carry;
res[n - 1 - i] = char('0' + (sum % 10));
carry = sum / 10;
}
if (carry) {
res = char('0' + carry) + res;
}
num = res;
normalize();
return *this;
}
Num operator+(const Num& o) const {
Num res = *this;
res += o;
return res;
}
void print() const {
std::cout << num;
}
};
int n,in;
Num dp[120][120];
signed main() {
std::cin >> n;
dp[0][0]=Num("1");
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
std::cin >> in;
if(in==0)continue;
dp[i+in][j]+=dp[i][j];
dp[i][j+in]+=dp[i][j];
}
}
dp[n-1][n-1].print();
}