#include<stdio.h>
int s[1001][1001], dt[1001][1001];
int f(int r, int c)
{
    if( r == 0 && c == 0 ) return s[r][c];
    if( s[r][c] ) return f(r-1,c) + f(r, c-1);
    return 0;
}
int main(void)
{
    int n, i, j;
    freopen(".10.in","r",stdin);
    freopen(".10.out","w",stdout);
    scanf("%d", &n);
    for( i = 0 ; i < n ; i++ )
         for( j = 0 ; j < n ; j++ )
              scanf("%d", &s[i][j]);
    for( i = 0 ; i < n ; i++ )
         for( j = 0 ; j < n ; j++ )
              if( i == 0 && j == 0 )
                  dt[i][j] = s[i][j];
              else
                  dt[i][j] = s[i][j]?dt[i][j-1]+dt[i-1][j]:0, dt[i][j]%=1000000007;

    //int sol = f(n-1, n-1);
    //printf("%d\n", sol?sol:-1);
    printf("%d\n", dt[n-1][n-1]%1000000007?dt[n-1][n-1]%1000000007:-1);
    return 0;
} 
