/*----<Bồ tác phù hộ code không bị bug>--------
_oo0oo_
o8888888o
88" . "88
(| -_- |)
0\ = /0
___/`---'\___
.' \| |// '.
/ \||| : |||// \
/ _||||| -:- |||||- \
| | \ - /// | |
| \_| ''\---/'' |_/ |
\ .-\__ '-' ___/-. /
___'. .' /--.--\ `. .'___
."" '< `.___\_<|>_/___.' >' "".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `_. \_ __\ /__ _/ .-` / /
=====`-.____`.___ \_____/___.-`___.-'=====
`=---='
------------------<>-------------------------*/
#include <bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define fr(x, l, r) for (int x = l; x < r; x++)
#define frr(x, l, r) for (int x = l; x <= r; x++)
#define fd(x, l, r) for (int x = l; x >= r; x--)
#define cs const
#define TIME (1.0*clock() / CLOCKS_PER_SEC)
#define RUNTIME cerr << "\n" << "Runtime: " << TIME << "s\n";
#define Fastio ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
typedef double db;
typedef std::string str;
typedef std::vector<int> vi;
typedef std::greater<int> gi;
typedef std::map<int, int> mii;
typedef std::pair<int, int> ii;
cs int N = 1e6 + 5;
cs int oo = 1e18;
using namespace std;
signed main(){
Fastio;
int n; cin >> n;
vector<vector<int>> a(n,vector<int>(n));
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
cin >> a[i][j];
}
}
vi b(n);
for (int i = 0; i < n; i++) b[i] = sqrt(a[i][i]);
for (int i = 0; i < n; i++) cout << b[i] << " ";
RUNTIME;
return 0;
}
LyotLS0tPELhu5MgdMOhYyBwaMO5IGjhu5kgY29kZSBraMO0bmcgYuG7iyBidWc+LS0tLS0tLS0KICAgICAgICAgICAgICAgX29vMG9vXyAKICAgICAgICAgICAgICBvODg4ODg4OG8gCiAgICAgICAgICAgICAgODgiIC4gIjg4IAogICAgICAgICAgICAgICh8IC1fLSB8KSAKICAgICAgICAgICAgICAwXCAgPSAgLzAgCiAgICAgICAgICAgIF9fXy9gLS0tJ1xfX18gCiAgICAgICAgICAuJyBcfCAgICAgfC8vICcuIAogICAgICAgICAvIFx8fHwgIDogIHx8fC8vIFwgCiAgICAgICAgLyBffHx8fHwgLTotIHx8fHx8LSBcIAogICAgICAgfCAgIHwgXCAgLSAgLy8vIHwgICB8IAogICAgICAgfCBcX3wgICcnXC0tLS8nJyAgfF8vIHwgCiAgICAgICBcICAuLVxfXyAgJy0nICBfX18vLS4gLyAKICAgICBfX18nLiAuJyAgLy0tLi0tXCAgYC4gLidfX18gCiAgLiIiICc8ICBgLl9fX1xfPHw+Xy9fX18uJyA+JyAiIi4gCiB8IHwgOiAgYC0gXGAuO2BcIF8gL2A7LmAvIC0gYCA6IHwgfCAKIFwgIFwgYF8uICAgXF8gX19cIC9fXyBfLyAgIC4tYCAvICAvIAo9PT09PWAtLl9fX19gLl9fXyBcX19fX18vX19fLi1gX19fLi0nPT09PT0gCiAgICAgICAgICAgICAgIGA9LS0tPScKLS0tLS0tLS0tLS0tLS0tLS0tPD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgoKI2RlZmluZSBpbnQgICAgICAgICAgICBsb25nIGxvbmcKI2RlZmluZSBmaSAgICAgICAgICAgICBmaXJzdAojZGVmaW5lIHNlICAgICAgICAgICAgIHNlY29uZAojZGVmaW5lIGFsbCh4KSAgICAgICAgIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIHJhbGwoeCkgICAgICAgIHgucmJlZ2luKCksIHgucmVuZCgpCiNkZWZpbmUgZnIoeCwgbCwgcikgICAgZm9yIChpbnQgeCA9IGw7IHggPCByOyB4KyspCiNkZWZpbmUgZnJyKHgsIGwsIHIpICAgZm9yIChpbnQgeCA9IGw7IHggPD0gcjsgeCsrKQojZGVmaW5lIGZkKHgsIGwsIHIpICAgIGZvciAoaW50IHggPSBsOyB4ID49IHI7IHgtLSkKI2RlZmluZSBjcyAgICAgICAgICAgICBjb25zdAojZGVmaW5lIFRJTUUgICAgICAgICAgICgxLjAqY2xvY2soKSAvIENMT0NLU19QRVJfU0VDKQojZGVmaW5lIFJVTlRJTUUgICAgICAgIGNlcnIgPDwgIlxuIiA8PCAiUnVudGltZTogIiA8PCBUSU1FIDw8ICJzXG4iOwojZGVmaW5lIEZhc3RpbyAgICAgICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKG51bGxwdHIpOyBjb3V0LnRpZShudWxscHRyKTsKCnR5cGVkZWYgZG91YmxlICAgICAgICAgICAgICAgZGI7CnR5cGVkZWYgc3RkOjpzdHJpbmcgICAgICAgICBzdHI7CnR5cGVkZWYgc3RkOjp2ZWN0b3I8aW50PiAgICB2aTsKdHlwZWRlZiBzdGQ6OmdyZWF0ZXI8aW50PiAgIGdpOwp0eXBlZGVmIHN0ZDo6bWFwPGludCwgaW50PiAgbWlpOwp0eXBlZGVmIHN0ZDo6cGFpcjxpbnQsIGludD4gaWk7CgpjcyBpbnQgTiAgID0gMWU2ICsgNTsKY3MgaW50IG9vICA9IDFlMTg7CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnNpZ25lZCBtYWluKCl7CiAgIEZhc3RpbzsKICAgIGludCBuOyBjaW4gPj4gbjsKICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBhKG4sdmVjdG9yPGludD4obikpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICBmb3IgKGludCBqID0gMDsgaiA8IG47IGorKyl7CiAgICAgICAgICAgIGNpbiA+PiBhW2ldW2pdOwogICAgICB9CiAgICB9CiAgICB2aSBiKG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGJbaV0gPSBzcXJ0KGFbaV1baV0pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNvdXQgPDwgYltpXSA8PCAiICI7CiAgUlVOVElNRTsKICAgIHJldHVybiAwOwp9ICAgICAgICAg