#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
const int maxN = 14;
long long temp[1 << maxN / 2][maxN], res[1 << maxN], tak[1 << maxN],
    dp[1 << maxN];
int G[maxN], ext[1 << maxN];
void f(vector<int>& inds, bool za) {
  int s = inds.size();
  do {
    int m = 0;
    for (int i = (0); i < (int)(s - 1); i++) {
      int a = inds[i], b = inds[i + 1];
      if (((G[a]) >> (b)&1)) m |= 1 << i;
    }
    temp[m][za ? inds.back() : inds[0]]++;
  } while (next_permutation((inds).begin(), (inds).end()));
}
void solve() {
  int n;
  scanf("%d", &n);
  for (int i = (0); i < (int)(n); i++) {
    G[i] = 0;
    char in[42];
    scanf("%s", in);
    for (int j = (0); j < (int)(n); j++)
      if (in[j] == '1') G[i] |= 1 << j;
  }
  int s = n / 2, s2 = n - s, M = (1 << n) - 1;
  for (int m = (0); m < (int)(1 << n); m++)
    if (__builtin_popcount(m) == s) {
      vector<int> A(0), B(0);
      for (int i = (0); i < (int)(n); i++)
        ((m) >> (i)&1) ? A.push_back(i) : B.push_back(i);
      f(A, true);
      f(B, false);
      for (int m0 = (0); m0 < (int)(1 << s2 - 1); m0++) {
        for (int m2 = (1); m2 < (int)(1 << s2); m2++) {
          int i = __builtin_ctz(m2);
          int m6 = m2 ^ 1 << i;
          ext[m2] = ext[m6] | (1 << B[i]);
          dp[ext[m2]] = dp[ext[m6]] + temp[m0][B[i]];
        }
        0;
        0;
        0;
        0;
        0;
        0;
        for (int m1 = (0); m1 < (int)(1 << s - 1); m1++)
          for (int a : A) {
            int w = m1 | (m0 << s);
            if (m1 == 0) {
              0;
              0;
              0;
            }
            res[w] += temp[m1][a] * dp[(~G[a]) & (~m) & M];
            res[w | (1 << s - 1)] += temp[m1][a] * dp[G[a] & (~m) & M];
          }
      }
      for (int m1 = (0); m1 < (int)(1 << s); m1++)
        for (int i = (0); i < (int)(n); i++) temp[m1][i] = 0;
      for (int m1 = (0); m1 < (int)(1 << n); m1++) dp[m1] = 0;
    }
  for (int m = (0); m < (int)(1 << n - 1); m++) printf("%lld ", res[m]);
  printf("\n");
}
int main() {
  int t;
  t = 1;
  while (t--) solve();
  return 0;
}
