#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 20;
double G[MAX_N][MAX_N];
double dp[1 << MAX_N];
bool inq[1 << MAX_N];
int main() {
  int N;
  scanf("%d", &N);
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      scanf("%lf", &G[i][j]);
    }
  }
  for (int S = 1; S < (1 << N); S++) {
    dp[S] = 0;
  }
  dp[0] = 1;
  queue<int> que;
  que.push(0);
  inq[0] = true;
  while (!que.empty()) {
    int S = que.front();
    que.pop();
    for (int i = 0; i < N; i++) {
      if (S & (1 << i)) continue;
      int cnt = 0;
      int cnt2 = 0;
      double sp = 0;
      for (int j = 0; j < N; j++) {
        if (S & (1 << j)) continue;
        cnt++;
        if (i == j) continue;
        if (G[j][i] == 0) continue;
        sp = sp + G[j][i];
        cnt2++;
      }
      if (cnt == 0) continue;
      dp[S | (1 << i)] += dp[S] * sp / ((cnt - 1) * cnt / 2);
      if (!inq[S | (1 << i)]) {
        que.push(S | (1 << i));
        inq[S | (1 << i)] = true;
      }
    }
  }
  for (int i = 0; i < N; i++) {
    int S = (1 << N) - 1;
    S = S ^ (1 << i);
    printf("%lf%c", dp[S], i == N - 1 ? '\n' : ' ');
  }
}
