#include <bits/stdc++.h>
using namespace std;
const int MAXN = 18;
double d[1 << MAXN][MAXN];
double p[MAXN][MAXN];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      scanf("%lf", &p[i][j]);
    }
  }
  memset(d, 0, sizeof(d));
  d[(1 << n) - 1][0] = 1.0;
  for (int tot = 0; tot < n - 1; tot++) {
    double tmp = (n - tot) * (n - tot - 1);
    for (int mask = 0; mask < (1 << n); mask++) {
      if (d[mask][tot] < 1e-8) {
        continue;
      }
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
          if (i == j) {
            continue;
          }
          if ((mask & (1 << i)) && (mask & (1 << j))) {
            d[mask ^ (1 << j)][tot + 1] += p[i][j] * d[mask][tot] / tmp;
            d[mask ^ (1 << i)][tot + 1] += p[j][i] * d[mask][tot] / tmp;
          }
        }
      }
    }
  }
  for (int i = 0; i < n; i++) {
    if (i) {
      putchar(' ');
    }
    printf("%.6lf", d[1 << i][n - 1]);
  }
  puts("");
  return 0;
}
