#include using namespace std; long long dp[5][1<<16][16]; int win[16][16]; int main(){ int mat[16][16]; for(int i=0;i<16;i++) for(int j=0;j<16;j++) cin>>mat[i][j]; for(int i=0;i<16;i++) for(int j=0;j<16;j++) if(i==j)win[i][j]=i; else{ int a=min(i,j),b=max(i,j); win[i][j]=mat[a][b]==1?a:b; } for(int i=0;i<16;i++) dp[0][1<>1; for(int m=0;m<(1<<16);m++) if(__builtin_popcount(m)==s) for(int L=m;;L=(L-1)&m){ if(__builtin_popcount(L)==h){ int R=m^L; for(int x=0;x<16;x++) if(m>>x&1) if(L>>x&1){ long long lw=dp[k-1][L][x]; long long rs=0; for(int y=0;y<16;y++) if(R>>y&1&&win[x][y]==x) rs+=dp[k-1][R][y]; dp[k][m][x]+=lw*rs; }else{ long long rw=dp[k-1][R][x]; long long ls=0; for(int y=0;y<16;y++) if(L>>y&1&&win[x][y]==x) ls+=dp[k-1][L][y]; dp[k][m][x]+=rw*ls; } } if(L==0)break; } } int f=(1<<16)-1; for(int i=0;i<16;i++) cout<