#include <bits/stdc++.h>
using namespace std;
int __i__, __j__;
class _Debug {
 public:
  template <typename T>
  _Debug& operator,(T val) {
    cout << val << endl;
    return *this;
  }
};
int n;
int adj[18][18];
vector<long long int> dp[1 << 14][14];
int main() {
  int i, j;
  char c;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) scanf(" %c", &c), adj[i][j] = (c == '1');
  }
  int k, l;
  for (i = 1; i < (1 << n); i++) {
    int b = 0;
    vector<int> v;
    for (j = 0; j < n; j++) {
      if (i & (1 << j)) b++, v.push_back(j);
    }
    for (j = 0; j < v.size(); j++) dp[i][v[j]].resize(1 << (b - 1));
    if (b == 1)
      dp[i][v[0]][0] = 1;
    else {
      for (j = 0; j < v.size(); j++) {
        for (k = 0; k < v.size(); k++) {
          if (k != j) {
            for (l = 0; l < dp[i ^ (1 << v[j])][v[k]].size(); l++)
              dp[i][v[j]][(l << 1) | adj[v[j]][v[k]]] +=
                  dp[i ^ (1 << v[j])][v[k]][l];
          }
        }
      }
    }
  }
  for (i = 0; i < (1 << (n - 1)); i++) {
    long long int ans = 0;
    for (j = 0; j < n; j++) ans += dp[(1 << n) - 1][j][i];
    printf("%I64d ", ans);
  }
  printf("\n");
  return 0;
}
