#include<bits/stdc++.h>
using namespace std;
int n;
double ans[105];
struct Node{
double w[105];
}a[105];
bool bj;
signed main(){
ios::sync_with_stdio(0),cin.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
cin>>a[i].w[j];
}
}
for(int i=1;i<=n;i++){
int tmp=i;
for(int j=i;j<=n;j++){
if(a[j].w[i]>a[tmp].w[i]||a[tmp].w[i]==0){
tmp=j;
}
}
if(a[tmp].w[i]==0){
bj=1;
continue;
}
for(int j=i;j<=n;j++){
if(j==tmp){
continue;
}
for(int k=n+1;k>=i;k--){
a[j].w[k]-=a[j].w[i]/a[tmp].w[i]*a[tmp].w[k];
}
}
swap(a[tmp],a[i]);
// for(int j=i;j<=n;j++){
// for(int k=1;k<=n+1;k++){
// printf("%.2lf ",a[j].w[k]);
// }
// printf("\n");
// }
}
for(int i=n;i>=1;i--){
for(int j=n;j>=i+n-n;j--){
a[i].w[n+1]-=ans[j]*a[i].w[j];
}
if(a[i].w[n+1]!=0&&a[i].w[i]==0){
printf("-1");
return 0;
}
else if(a[i].w[i]==0){
bj=1;
continue;
}
ans[i]=a[i].w[n+1]/a[i].w[i];
}
if(bj){
printf("0");
return 0;
}
for(int i=1;i<=n;i++){
printf("x%d=%.2lf\n",i,ans[i]);
}
return 0;
}
判断无数解出错求调