#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int maxn=100005;
const ll inf=1e15;
bool A[20][20];
ll n,f[1050006][20];
void solve()
{
memset(f,0,sizeof f);
cin>>n;
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
cin>>A[i][j];
for(int i=0;i<n;i++)
f[0][i]=1;
for(int mask=0;mask<(1<<n);mask++)
{
int k=__builtin_popcount(mask);
if(k==n) continue;
for(int i=0;i<n;i++)
{
if(A[i][k] && ((mask&(1<<i))==0))
{
f[mask|(1<<i)][k+1]+=f[mask][k];
}
}
}
cout<<f[(1<<n)-1][n]<<'\n';
}
int main()
{
int test;
cin>>test;
while(test--)
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbGw9bG9uZyBsb25nOwoKY29uc3QgaW50IG1heG49MTAwMDA1Owpjb25zdCBsbCBpbmY9MWUxNTsKCmJvb2wgQVsyMF1bMjBdOwpsbCBuLGZbMTA1MDAwNl1bMjBdOwp2b2lkIHNvbHZlKCkKewogICAgbWVtc2V0KGYsMCxzaXplb2YgZik7CiAgICBjaW4+Pm47CiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspCiAgICAgICAgZm9yKGludCBqPTA7IGo8bjsgaisrKQogICAgICAgICAgICBjaW4+PkFbaV1bal07CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgIGZbMF1baV09MTsKICAgIGZvcihpbnQgbWFzaz0wO21hc2s8KDE8PG4pO21hc2srKykKICAgIHsKICAgICAgICBpbnQgaz1fX2J1aWx0aW5fcG9wY291bnQobWFzayk7CiAgICAgICAgaWYoaz09bikgY29udGludWU7CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKEFbaV1ba10gJiYgKChtYXNrJigxPDxpKSk9PTApKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmW21hc2t8KDE8PGkpXVtrKzFdKz1mW21hc2tdW2tdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dDw8ZlsoMTw8biktMV1bbl08PCdcbic7Cgp9CmludCBtYWluKCkKewogICAgaW50IHRlc3Q7CiAgICBjaW4+PnRlc3Q7CiAgICB3aGlsZSh0ZXN0LS0pCiAgICAgICAgc29sdmUoKTsKfQo=