#include <bits/stdc++.h>
using namespace std;
const int p=1000000007;
int f[600][600],g[600][600],h[600][600];
int i,j,k,n;
int main()
{
cin>>n;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
cin>>g[i][j];
for (i=1;i<=n;i++)
f[i][i]=1;
for (i=1;i<n;i++)
for (j=1;i+j<=n;j++)
{
for (k=j;k<=i+j;k++)
f[j][i+j]=(f[j][i+j]+1LL*f[j][k]*h[k][i+j])%p;
if (g[j][i+j])
for (k=j;k<i+j;k++)
h[j][i+j]=(h[j][i+j]+1LL*f[j][k]*f[k+1][i+j])%p;
f[j][i+j]=(f[j][i+j]+h[j][i+j])%p;
}
cout<<f[1][n];
}
1516B - AGAGA XOOORRR | 1515A - Phoenix and Gold |
1515B - Phoenix and Puzzle | 155A - I_love_username |
49A - Sleuth | 1541A - Pretty Permutations |
1632C - Strange Test | 673A - Bear and Game |
276A - Lunch Rush | 1205A - Almost Equal |
1020B - Badge | 1353A - Most Unstable Array |
770A - New Password | 1646B - Quality vs Quantity |
80A - Panoramix's Prediction | 1354B - Ternary String |
122B - Lucky Substring | 266B - Queue at the School |
1490A - Dense Array | 1650B - DIV + MOD |
1549B - Gregor and the Pawn Game | 553A - Kyoya and Colored Balls |
1364A - XXXXX | 1499B - Binary Removals |
1569C - Jury Meeting | 108A - Palindromic Times |
46A - Ball Game | 114A - Cifera |
776A - A Serial Killer | 25B - Phone numbers |