#include <bits/stdc++.h>
using namespace std;
enum STATE { IN, OUT, BOUNDRY };
const double PI = acos(-1.0);
void fast_in_out() {
  std::ios_base::sync_with_stdio(NULL);
  cin.tie(NULL);
  cout.tie(NULL);
}
int dx[] = {0, 0, -1, 1, -1, 1, -1, 1, 0};
int dy[] = {-1, 1, 0, 0, -1, -1, 1, 1, 0};
int lx[] = {2, 2, -1, 1, -2, -2, -1, 1};
int ly[] = {-1, 1, 2, 2, 1, -1, -2, -2};
const int N = 19, M = 200 + 10, mod = 998244353;
const double eps = 1e-9;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
int n;
double ar[N][N];
double dp[N][(1 << N)];
int main() {
  fast_in_out();
  cout << fixed << setprecision(9);
  cin >> n;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) cin >> ar[i][j];
    dp[i][1 << i] = 1;
  }
  for (int mask = 3; mask < (1 << n); mask++) {
    int cnt = __builtin_popcount(mask);
    if (cnt == 1) continue;
    cnt = cnt * (cnt - 1) / 2;
    double lose[N]{0};
    for (int i = 0; i < n; i++) {
      for (int j = i + 1; j < n && (mask & (1 << i)); j++) {
        if (mask & (1 << j)) {
          lose[j] += ar[i][j] / cnt;
          lose[i] += ar[j][i] / cnt;
        }
      }
    }
    for (int i = 0; i < n; i++) {
      for (int j = i + 1; j < n && (mask & (1 << i)); j++) {
        if (mask & (1 << j)) {
          dp[j][mask] += dp[j][mask - (1 << i)] * lose[i];
          dp[i][mask] += dp[i][mask - (1 << j)] * lose[j];
        }
      }
    }
  }
  for (int i = 0; i < n; i++) cout << dp[i][(1 << n) - 1] << " ";
  return 0;
}
