#include <bits/stdc++.h>
using namespace std;

#define MOD 1000000007LL

long long dp[33][4444444];

int main(){
	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[0][0]=1;
	
	unordered_set<int> s;
	s.insert(0);
	
	for(int i=0;i<N;i++){
		unordered_set<int> s_next;
		for(auto j:s){
			dp[i][j]%=MOD;
			for(int w=0;w<N;w++){
				if(a[i][w]==0)continue;
				int k=(1<<w);
				if((j|k)==j)continue;
				dp[i+1][j|k]+=dp[i][j];
				s_next.insert(j|k);
			}
		}
		s=s_next;
	}
	cout << dp[N][(1<<N)-1]%MOD << endl;
	return 0;
}