#include <bits/stdc++.h>
using namespace std;
long long mod = 1e18 + 7;
long long a[200005];
long long b[2000005];
map<long long, long long> m;
map<long long, long long> m1;
long long ans = 0;
bool comp(const pair<long long, long long>& a,
          const pair<long long, long long>& b) {
  if (a.first == b.first)
    return a.second < b.second;
  else
    return a.first > b.first;
}
bool revcomp(const pair<long long, long long>& a,
             const pair<long long, long long>& b) {
  if (a.first - a.second == b.first - b.second) return a.first > b.second;
  return (a.first - a.second) > (b.first - b.second);
}
long long ceil11(long long a, long long b) {
  if (a % b != 0)
    return a / b + 1;
  else
    return a / b;
}
long long power(long long a, long long b, long long n) {
  long long ans = 1;
  while (b > 0) {
    if (b % 2 == 1) ans = (ans * a) % n;
    a = (a * a) % n;
    b /= 2;
  }
  return ans;
}
long long count1 = 0;
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long primepos(long long fact, long long p) {
  long long res = 0;
  while (fact > 0) {
    res += fact / p;
    fact /= p;
  }
  return res;
}
int main() {
  ios::sync_with_stdio(0);
  long long n;
  cin >> n;
  long long a[n + 1][n + 1];
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      cin >> a[i][j];
    }
  }
  long long ans[n + 1];
  long long vis[n + 1];
  memset(ans, 0, sizeof ans);
  memset(vis, 0, sizeof vis);
  for (int i = 0; i < n; i++) {
    long long x = i;
    long long cnt = 0;
    for (int j = 0; j < n; j++) {
      if (a[j][x] == 0) cnt++;
    }
    for (int j = 0; j < n; j++) {
      if (a[x][j] == 0) cnt++;
    }
    if (cnt == 2 * n) {
      ans[x] = 0;
      vis[x] = 1;
    }
  }
  for (int i = 0; i < n; i++) {
    long long x = i;
    if (vis[i] == 1) continue;
    long long y = -1;
    long long z = -1;
    for (int j = 0; j < n; j++) {
      if (a[x][j] != 0) {
        y = j;
        break;
      }
    }
    for (int j = 0; j < n; j++) {
      if (a[x][j] != 0 && j != y) {
        z = j;
        break;
      }
    }
    ans[x] = sqrt((a[i][y] * a[i][z]) / a[y][z]);
    vis[x] = 1;
  }
  long long idx1 = -1, idx2 = -1;
  for (int i = 0; i < n; i++) {
    if (vis[i] == 0) {
      idx1 = i;
      break;
    }
  }
  for (int i = idx1 + 1; i < n; i++) {
    if (vis[i] == 0) {
      idx2 = i;
      break;
    }
  }
  ans[idx1] = 1;
  ans[idx2] = a[idx1][idx2];
  for (int i = 0; i < n; i++) {
    cout << ans[i] << " ";
  }
  return 0;
}
