#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#define mod 1000000007
using namespace std;
int n, a[20][20], f[100000];
long long t[100000];
int find(int x){cout<<x<<"!!"<<endl;
if(f[x] != -1)return f[x];
int y = x, ff = 0;
for(; x; x = (x - 1) & y)
if(x != y && ((x&(1<<(n - 1))) != 0)){cout<<x<<"##"<<endl;
int z = y - x;
ff = ((t[z] * (t[x] - find(x))) % mod + ff) % mod;
}
if(!ff)f[y] = 1;else f[y] = t[y] - ff;
printf("AAA%d %d\n", y, f[y]);
return t[y] - f[y];
}
int main()
{
scanf("%d", &n);
memset(f, -1, sizeof(f));
long long ans = 1;
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= n; j ++)scanf("%d", &a[i][j]);
for(int k = 1; k < (1<<n); k ++){ t[k] = 1;
for(int i = 1; i <= n; i ++)
for(int j = i + 1; j <= n; j ++)
if(((k & (1<<(i - 1)))!= 0) && ((k & (1<<(j - 1))) != 0)){t[k] *= (long long)(a[i][j] + 1); t[k] %= mod;}
printf("@@@%d %d\n", k, t[k]);}
cout<<ans - find((1<<(n))-1)<<endl;
system("pause");
return 0;
}
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#define mod 1000000007
using namespace std;
int n, a[20][20], f[100000];
long long t[100000];
int find(int x){cout<<x<<"!!"<<endl;
if(f[x] != -1)return f[x];
int y = x, ff = 0;
for(; x; x = (x - 1) & y)
if(x != y && ((x&(1<<(n - 1))) != 0)){cout<<x<<"##"<<endl;
int z = y - x;
ff = ((t[z] * (t[x] - find(x))) % mod + ff) % mod;
}
if(!ff)f[y] = 1;else f[y] = t[y] - ff;
printf("AAA%d %d\n", y, f[y]);
return t[y] - f[y];
}
int main()
{
scanf("%d", &n);
memset(f, -1, sizeof(f));
long long ans = 1;
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= n; j ++)scanf("%d", &a[i][j]);
for(int k = 1; k < (1<<n); k ++){ t[k] = 1;
for(int i = 1; i <= n; i ++)
for(int j = i + 1; j <= n; j ++)
if(((k & (1<<(i - 1)))!= 0) && ((k & (1<<(j - 1))) != 0)){t[k] *= (long long)(a[i][j] + 1); t[k] %= mod;}
printf("@@@%d %d\n", k, t[k]);}
cout<<ans - find((1<<(n))-1)<<endl;
system("pause");
return 0;
}