#include <bits/stdc++.h>
using namespace std;
const int N = 20, maxn = 3e5 + 10;
double a[N][N], dp[maxn][N], c[N];
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      cin >> a[i][j];
    }
  }
  for (int mask = 1; mask < (1 << n); mask++) {
    if (__builtin_popcount(mask) == 1) {
      dp[mask][__builtin_ctz(mask)] = 1;
      continue;
    }
    fill(c, c + n, 0);
    for (int i = 0; i < n; i++) {
      for (int j = i + 1; j < n; j++) {
        if ((mask & (1 << i)) && (mask & (1 << j))) {
          c[i] += a[j][i];
          c[j] += a[i][j];
        }
      }
    }
    for (int i = 0; i < n; i++) {
      if (!(mask & (1 << i))) continue;
      int tmp = __builtin_popcount(mask);
      c[i] /= (tmp * (tmp - 1)) / 2;
      for (int j = 0; j < n; j++) {
        dp[mask][j] += dp[mask - (1 << i)][j] * c[i];
      }
    }
  }
  for (int i = 0; i < n; i++) {
    cout << fixed << setprecision(6) << dp[(1 << n) - 1][i] << ' ';
  }
}
