/*
Name: Anuska Alam
Id: 230241021
Report: Gauss Jordan Elimination
*/
#include<bits/stdc++.h>
using namespace std;
int main (){
int n; cin >> n;
double a[101][101+1], x[100], ratio;
for (int i=1; i<=n; i++){
for (int j=1; j<=n+1; j++){
cin >> a[i][j];
}
}
// Convert to uper triangular form using forward elimination
for (int i=1; i<n; i++){
if (a[i][i]==0){
cout << "Error!" << endl;
break;
}
for (int j=i+1; j<=n; j++){
ratio = a[j][i]/a[i][i];
for (int k=1; k<=n+1; k++){
a[j][k] = a[j][k] - a[i][k]*ratio;
}
}
}
for (int i=1; i<=n; i++){
for (int j=1; j<=n+1; j++){
cout << a[i][j] << " ";
}
cout << endl;
}
// Convert to lower triangular form using backward elimination
for (int i = n; i >= 2; i--) {
for (int j = i - 1; j >= 1; j--) {
double ratio = a[j][i] / a[i][i];
for (int k = 1; k <= n + 1; k++) {
a[j][k] = a[j][k] - ratio * a[i][k];
}
}
}
for (int i=1; i<=n; i++){
for (int j=1; j<=n+1; j++){
cout << a[i][j] << " ";
}
cout << endl;
}
for (int i=1; i<=n; i++){
x[i]= a[i][n+1]/a[i][i];
}
for (int i=1; i<=n; i++){
cout << x[i] << endl;
}
}