#include <bits/stdc++.h>
using namespace std;
const long long MOD = (long long)1e9 + 7;
const long long N = 18, inf = 1e9 + 5000;
long long add(long long x, long long y) {
  x += y;
  if (x >= MOD) return x - MOD;
  return x;
}
long long sub(long long x, long long y) {
  x -= y;
  if (x < 0) return x + MOD;
  return x;
}
long long mult(long long x, long long y) { return (x * y) % MOD; }
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
double a[N][N];
double dp[N][1 << N];
bool done[N][1 << N];
double sums[N][1 << N];
int n;
double f(int x, int mask) {
  if (done[x][mask]) return dp[x][mask];
  double still_alive = __builtin_popcount(mask);
  if (still_alive == 1) return (mask & (1 << x)) > 0;
  double ans = 0;
  double i_j_chosen = 2.0 / (still_alive * (still_alive - 1));
  for (int i = 0; i < n; i++) {
    if (mask & (1 << i)) {
      double p_killed = i_j_chosen * sums[i][mask];
      ans += p_killed * f(x, mask ^ (1 << i));
    }
  }
  done[x][mask] = true;
  return dp[x][mask] = ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n;
  for (long long i = 0; i < n; i++)
    for (long long j = 0; j < n; j++) cin >> a[i][j];
  for (long long i = 0; i < n; i++) {
    for (int mask = 0; mask < (1 << n); mask++) {
      int mask1 = mask;
      while (mask1) {
        int j = __builtin_ctz(mask1);
        sums[i][mask] += a[j][i];
        mask1 ^= mask1 & -mask1;
      }
    }
  }
  for (long long i = 0; i < n; i++)
    cout << setprecision(15) << fixed << f(i, (1 << n) - 1) << endl;
  return 0;
}
