#include <iostream>
using namespace std;
double a[1000][1000]= {0},result=1;
double a1[1000][1000]={0},b[1000]={0},dj[1000][1000]={0},dj_re[1000]={0},x[1000];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>a1[i][j];
}
cin>>b[i];
}
int time=0;
det:
result=1;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(time==i||j==0){
dj[i][0]=b[i];
}
else{
dj[i][j]=a1[i][j];
}
}
}
int t;
for(int i=0; i<n-1; i++) {
while(dj[i][i]==0) {
for(int j=i+1; j<n; j++){
if(dj[j][i]!=0||j==n-1)break;
for(int k=i; k<n; k++){
t=dj[i][k];
dj[i][k]=dj[j][k];
dj[j][k]=-t;
}
if(j==n-1) i++;
}
if(i==n-1) break;
}
for(int k=i+1; k<n; k++){
for(int j=n-1; j>i-1; j--){
dj[k][j]-=dj[i][j]/dj[i][i]*dj[k][i];
}
}
}
for(int i=0; i<n; i++){
result*=dj[i][i];
}
dj_re[time]=result;
time++;
if(time<n)goto det;
double D1=1;
int zn=0;
for(int i=0; i<n-1; i++) {
while(a1[i][i]==0) {
for(int j=i+1; j<n; j++){
if(a1[j][i]!=0||j==n-1)break;
for(int k=i; k<n; k++){
t=a1[i][k];
a1[i][k]=a1[j][k];
a1[j][k]=-t;
}
if(j==n-1)i++;
}
if(i==n-1)break;
}
for(int k=i+1; k<n; k++) for(int j=n-1; j>i-1; j--) a1[k][j]-=a1[i][j]/a1[i][i]*a1[k][i];
}
for(int i=0;i<n;i++){
if(a1[n-1][i]==0)zn+=1;
}
if(zn==n&&b[n-1]!=0){
puts("inconsistent");
exit(0);
}
else if(zn==n&&b[n-1]==0){
puts("infvariable");
exit(0);
}
for(int i=0; i<n; i++){
D1*=a1[i][i];
}
if(D1==0)cout<<"ERROR";
else{
for(int i=0;i<n;i++){
printf("%.3lf ",dj_re[i]/D1);
}
}
cout<<endl;
for(int i=0;i<n;i++){
cout<<(int)dj_re[i]<<" ";
}
cout<<(int)D1;
}