#include <bits/stdc++.h>
using namespace std;
int n;
long double P[20][20], memo[(1 << 18)][19], dp[(1 << 18)][19];
long double solve(int mask, int id, int cnt) {
  if (cnt == 1) return 1;
  long double &ret = memo[mask][id];
  if (ret == ret) return ret;
  ret = 0;
  for (int i = 0; i < n; ++i) {
    if (!(mask & (1 << i))) continue;
    if (i == id) continue;
    ret += dp[mask][i] * solve(mask - (1 << i), id, cnt - 1);
  }
  return ret;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j) cin >> P[i][j];
  for (int mask = 0; mask < (1 << n); ++mask) {
    int cnt = __builtin_popcount(mask);
    for (int i = 0; i < n; ++i) {
      if (!(mask & (1 << i))) continue;
      for (int j = 0; j < n; ++j) {
        if (mask & (1 << j)) {
          dp[mask][i] += (1.0 / ((cnt * (cnt - 1)) >> 1)) * P[j][i];
        }
      }
    }
  }
  memset(memo, -1, sizeof memo);
  cout << fixed << setprecision(8);
  for (int i = 0; i < n; ++i) cout << solve((1 << n) - 1, i, n) << " ";
}
