#include<iostream>
#include<cstdio>
#include<bits/stdc++.h>
#define rep(i,j,k) for(register int i(j);i<=k;++i)
#define drp(i,j,k) for(register int i(j);i>=k;--i)
#define repg(x) for(register int i(G.head[x]);i;i=G.next[i])
#define bug cout<<"~~~~~~~~~~~~~"<<'\n';
#define bugout(x) cout<<x<<'\n';
using std::cin;
using std::cout;
typedef long long lxl;
template<typename T>
inline T max( T a, T b) {
return a > b ? a : b;
}
template<typename T>
inline T min( T a, T b) {
return a < b ? a : b;
}
const double eps=1e-7;
const int N=57;
int n;
double a[N][N],ans[N];
int main() {
std::ios::sync_with_stdio(false);
cin>>n;
rep(i,1,n){
rep(j,1,n+1){
cin>>a[i][j];
}
}
rep(i,1,n){
int pos=i;
rep(j,i+1,n){
if(fabs(a[pos][i])<=fabs(a[j][i])) pos=j;
}
if(fabs(a[pos][i])<eps){
if(a[pos][n+1]) cout<<-1<<'\n';
else
cout<<0<<'\n';
return 0;
}
if(i!=pos) std::swap(a[i],a[pos]);
double div(a[i][i]);
rep(j,i,n+1){
a[i][j]/=div;
}
rep(j,i+1,n){
div=a[j][i];
rep(k,i,n+1){
a[j][k]-=a[i][k]*div;
}
}
}
ans[n]=a[n][n+1];
drp(i,n-1,1){
ans[i]=a[i][n+1];
rep(j,i+1,n){
ans[i]-=a[i][j]*ans[j];
}
}
rep(i,1,n){
cout<<"x"<<i<<"="<<std::fixed<<std::setprecision(2)<<ans[i]<<'\n';
}
return 0;
}