#include <bits/stdc++.h>
using namespace std;
double prob[20][20];
double dp[1 << 19];
double pmove(int bitMask, int fish, int& n) {
  int k = __builtin_popcount(bitMask);
  long long len = (k * (k - 1)) / 2;
  double probability = 0;
  for (int i = 0; i < n; i++) {
    if (bitMask & (1 << i)) {
      probability += prob[i + 1][fish + 1];
    }
  }
  return probability / (1.0 * len);
}
double solve(int bit_mask, int& n) {
  int alive = __builtin_popcount(bit_mask);
  if (alive == n) return 1;
  if (dp[bit_mask] > -0.9) return dp[bit_mask];
  double ans = 0;
  for (int fish = 0; fish < n; fish++) {
    if (!(bit_mask & 1 << fish)) {
      int prev_bitmask = (bit_mask ^ (1 << fish));
      double prev_state = solve(prev_bitmask, n);
      ans += prev_state * pmove(prev_bitmask, fish, n);
    }
  }
  return dp[bit_mask] = ans;
}
int main() {
  memset(dp, -1, sizeof(dp));
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      cin >> prob[i][j];
    }
  }
  for (int i = 0; i < n; i++) {
    cout << fixed << setprecision(10) << solve((1 << i), n) << " ";
  }
  cout << "\n";
  return 0;
}
