#include <bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define sz(x) (int)(x).size()
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define FORD(i,a,b) for(int i=(a);i>=(b);--i)
#define pb push_back
#define fi first
#define se second
#define el "\n"
typedef long long ll;
const ll MOD=1e9+7,INF=1e18;
int n,mai[21][21],dp[1<<21];
void solve(){
cin>>n;
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
cin>>mai[i][j];
}
}
dp[0]=1;
int nm=(1<<n);
for (int m=0;m<nm-1;m++)
{
if (dp[m]==0) continue;
int i=__builtin_popcount(m);
for (int j=0;j<n;j++)
{
if (mai[i][j]==1 and !(m&(1<<j)))
{
int nx=m|(1<<j);
dp[nx]+=dp[m];
}
}
}
cout<<dp[nm-1]<<el;
}
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t=1;//cin>>t;
while(t--)solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgYWxsKHgpICh4KS5iZWdpbigpLCh4KS5lbmQoKQojZGVmaW5lIHN6KHgpIChpbnQpKHgpLnNpemUoKQojZGVmaW5lIEZPUihpLGEsYikgZm9yKGludCBpPShhKTtpPD0oYik7KytpKQojZGVmaW5lIEZPUkQoaSxhLGIpIGZvcihpbnQgaT0oYSk7aT49KGIpOy0taSkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGVsICJcbiIKdHlwZWRlZiBsb25nIGxvbmcgbGw7CmNvbnN0IGxsIE1PRD0xZTkrNyxJTkY9MWUxODsKaW50IG4sbWFpWzIxXVsyMV0sZHBbMTw8MjFdOwp2b2lkIHNvbHZlKCl7CiAgICBjaW4+Pm47CiAgICBmb3IgKGludCBpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBmb3IgKGludCBqPTA7ajxuO2orKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbj4+bWFpW2ldW2pdOwogICAgICAgIH0KICAgIH0KICAgIGRwWzBdPTE7CiAgICBpbnQgbm09KDE8PG4pOwogICAgZm9yIChpbnQgbT0wO208bm0tMTttKyspCiAgICB7CiAgICAgICAgaWYgKGRwW21dPT0wKSBjb250aW51ZTsKICAgICAgICBpbnQgaT1fX2J1aWx0aW5fcG9wY291bnQobSk7CiAgICAgICAgZm9yIChpbnQgaj0wO2o8bjtqKyspCiAgICAgICAgewogICAgICAgICAgICBpZiAobWFpW2ldW2pdPT0xIGFuZCAhKG0mKDE8PGopKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IG54PW18KDE8PGopOwogICAgICAgICAgICAgICAgZHBbbnhdKz1kcFttXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNvdXQ8PGRwW25tLTFdPDxlbDsKfQoKaW50IG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiAgICBpbnQgdD0xOy8vY2luPj50OwogICAgd2hpbGUodC0tKXNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQo=