#include using namespace std; using i64 = long long; i64 dp[16][1 << 16]; int win[16][16]; int pcnt[1 << 16]; int main() { for (int i = 0; i < 16; i ++) { for (int j = 0; j < 16; j ++) { scanf("%d", &win[i][j]); } } for (int i = 0; i < 16; i ++) { for (int j = 0; j < i; j ++) { win[i][j] = - win[j][i]; } } for (int i = 0; i < 16; i ++) dp[i][1 << i] = 1; for (int i = 1; i < (1 << 16); i ++) pcnt[i] = pcnt[i - (i & (-i))] + 1; for (int s = 1; s < (1 << 16); s ++) if (pcnt[pcnt[s]] == 1) { for (int i = 0; i < 16; i ++) if ((s >> i) & 1) { for (int t = s; t != 0; t = (t - 1) & s) { if ((t >> i) & 1) continue; if (pcnt[t] != pcnt[s] / 2) continue; for (int j = 0; j < 16; j ++) if (((t >> j) & 1) != 0 && win[i][j] == 1) { dp[i][s] += 2 * dp[i][s - t] * dp[j][t]; } } } } for (int i = 0; i < 16; i ++) printf("%lld\n", dp[i][(1 << 16) - 1]); return 0; }