/*
                              _,add8ba,
                            ,d888888888b,
                           d8888888888888b                        _,ad8ba,_
   WUTAN                  d888888888888888)                     ,d888888888b,
                          I8888888888888888 _________          ,8888888888888b
                __________`Y88888888888888P"""""""""""baaa,__ ,888888888888888,
            ,adP"""""""""""9888888888P""^                 ^""Y8888888888888888I
         ,a8"^           ,d888P"888P^                           ^"Y8888888888P'
       ,a8^            ,d8888'                                     ^Y8888888P'
      a88'           ,d8888P'                                        I88P"^
    ,d88'           d88888P'                                          "b,
   ,d88'           d888888'                                            `b,
  ,d88'           d888888I                                              `b,
  d88I           ,8888888'            ___                                `b,
 ,888'           d8888888          ,d88888b,              ____            `b,
 d888           ,8888888I         d88888888b,           ,d8888b,           `b
,8888           I8888888I        d8888888888I          ,88888888b           8,
I8888           88888888b       d88888888888'          8888888888b          8I
d8886           888888888       Y888888888P'           Y8888888888,        ,8b
88888b          I88888888b      `Y8888888^             `Y888888888I        d88,
Y88888b         `888888888b,      `""""^                `Y8888888P'       d888I
`888888b         88888888888b,                           `Y8888P^        d88888
 Y888888b       ,8888888888888ba,_          _______        `""^        ,d888888
 I8888888b,    ,888888888888888888ba,_     d88888888b               ,ad8888888I
 `888888888b,  I8888888888888888888888b,    ^"Y888P"^      ____.,ad88888888888I
  88888888888b,`888888888888888888888888b,     ""      ad888888888888888888888'
  8888888888888698888888888888888888888888b_,ad88ba,_,d88888888888888888888888
  88888888888888888888888888888888888888888b,`"""^ d8888888888888888888888888I
  8888888888888888888888888888888888888888888baaad888888888888888888888888888'
  Y8888888888888888888888888888888888888888888888888888888888888888888888888P
  I888888888888888888888888888888888888888888888P^  ^Y8888888888888888888888'
  `Y88888888888888888P88888888888888888888888888'     ^88888888888888888888I
   `Y8888888888888888 `8888888888888888888888888       8888888888888888888P'
    `Y888888888888888  `888888888888888888888888,     ,888888888888888888P'
     `Y88888888888888b  `88888888888888888888888I     I888888888888888888'
       "Y8888888888888b  `8888888888888888888888I     I88888888888888888'
         "Y88888888888P   `888888888888888888888b     d8888888888888888'
            ^""""""""^     `Y88888888888888888888,    888888888888888P'
                             "8888888888888888888b,   Y888888888888P^
                              `Y888888888888888888b   `Y8888888P"^
                                "Y8888888888888888P     `""""^
                                  `"YY88888888888P'
                                       ^""""""""'
*/
#include <bits/stdc++.h>
#define io_faster ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define EL cout<<'\n'
#define DOC(x) cin>>x
#define XUAT(x) cout<<x
#define el printf("\n")
#define doc(x) scanf("%d",&x)
#define xuat(x) printf("%d",x)
#define fi first
#define se second
#define PROB "Matching"

using namespace std;
typedef long long ll;
typedef unsigned long long ull;

void file(){
	freopen(PROB".inp","r",stdin);
	freopen(PROB".out","w",stdout);
}


const int N = 22;
const ll mod = 1e9 + 7;
ll f[1<<22];
int n, a[N][N];

int getbit(int s, int i){
    return (s >> (i-1)) & 1;
}

int turnoff (int s, int i){
    int t = ~(1 << (i-1));
    return (s & t);
}

void solve(){
    cin >> n;
    for (int i=1;i<=n;i++)
    for (int j=1;j<=n;j++)
        cin >> a[i][j];
    int m = (1 << n);
    for (int s = 0; s < m; s ++ ){
        int k = __builtin_popcount(s);
        if (k == 0){
            f[s] = 1;
            continue;
        }
        for (int i=1;i<=n;i++){
            if (!getbit(s,i)) continue;
            int d = turnoff(s,i);
            if (!a[i][k]) continue;
            f[s]+= f[d];
            f[s]%= mod;
        }
    }
    cout << f[m-1];
}

int main(){
    io_faster
   // file();
    int t = 1;
    while (t--){
        solve();
    }
}


Measured memory_bytes: 18688