#include <bits/stdc++.h>
using namespace std;
inline int add(int _a, int _b) {
  if (_a < 0) {
    _a += 1000000007;
  }
  if (_b < 0) {
    _b += 1000000007;
  }
  if (_a + _b >= 1000000007) {
    return _a + _b - 1000000007;
  }
  return _a + _b;
}
inline int mul(int _a, int _b) {
  if (_a < 0) {
    _a += 1000000007;
  }
  if (_b < 0) {
    _b += 1000000007;
  }
  return ((long long int)((long long int)_a * (long long int)_b)) % 1000000007;
}
const int N = 14;
int g[N + 5][N + 5], n, cntl[N][(1 << N) + 5][(1 << 7) + 5],
    cntr[N][(1 << N) + 5][(1 << 7) + 5];
long long int sol[(1 << (N - 1)) + 10];
char str[N + 5][N + 5];
void solve() {
  int i, j, k, l;
  if (n <= 2) {
    if (g[0][1])
      sol[1] += 2;
    else
      sol[0] += 2;
    printf("%lld %lld", sol[0], sol[1]);
    return;
  }
  for (k = 0; k < n; ++k) {
    for (i = 0; i < 1 << n; ++i) {
      int pop = __builtin_popcount(i);
      if (!(pop == (n - 1) >> 1 || pop == n >> 1)) continue;
      if (i & 1 << k) continue;
      int perm[N];
      for (j = l = 0; j < n; ++j)
        if (i & 1 << j) perm[l++] = j;
      do {
        int mask = 0;
        for (j = 1; j < pop; ++j)
          if (g[perm[j - 1]][perm[j]]) mask |= 1 << (j - 1);
        if (pop == (n - 1) >> 1) {
          if (pop) {
            if (g[perm[pop - 1]][k])
              cntl[k][i][mask | 1 << (pop - 1)]++;
            else
              cntl[k][i][mask]++;
          }
        }
        if (pop == n >> 1) {
          if (pop) {
            if (g[k][perm[0]])
              cntr[k][i][mask << 1 | 1]++;
            else
              cntr[k][i][mask << 1]++;
          }
        }
      } while (std ::next_permutation(perm, perm + pop));
    }
    for (i = 0; i < 1 << n; ++i) {
      int pop = __builtin_popcount(i);
      if (pop != (n - 1) >> 1) continue;
      if (i & 1 << k) continue;
      int rev_i = ((1 << n) - 1) ^ i ^ 1 << k;
      for (j = 0; j < 1 << pop; ++j) {
        for (l = 0; l < 1 << (n - 1 - pop); ++l) {
          sol[l << pop | j] +=
              (long long int)cntl[k][i][j] * (long long int)cntr[k][rev_i][l];
        }
      }
    }
  }
  for (i = 0; i < 1 << (n - 1); ++i) {
    if (i) {
      printf(" ");
    }
    printf("%lld", sol[i]);
  }
  puts("");
}
int main() {
  int i, j;
  scanf("%d", &n);
  for (i = 0; i < n; ++i) scanf("%s", str[i]);
  for (i = 0; i < n; ++i)
    for (j = 0; j < n; ++j) g[i][j] = str[i][j] - '0';
  solve();
}
