// Infoarena. Arhiva Educationala. Algoritmul lui Gauss.
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
void ReadMatrix(float[][310],int,int);
void ReadVector(float[],int);
void PrintMatrix(float[][310],int,int);
void PrintVector(float[],int);
int FindMaxColoumn(float[][310],int,int);
void ChangeLines(float[][310],int,int,int);
void ReduceLines(float[][310],int,int,int);
void SolveUpperTriungular(float [][310],int,float[310]);
int main(){
freopen("gauss.in","r",stdin);
freopen("gauss.out","w",stdout);
int n,m; //n -> nr. de ecuatii; m -> nr. de necunoscute;
float A[310][310],X[310];
cin>>n>>m;
ReadMatrix(A,n,m+1);
for(int i=1;i<=m;i++){
X[i]=0;
}
int pasi=(n<m)?n:m;
for(int k=1;k<=pasi-1;k++){
int p=FindMaxColoumn(A,n,k);
if(p!=k) ChangeLines(A,m+1,p,k);
for(int i=k+1;i<=n;i++){
ReduceLines(A,m+1,i,k);
}
}
if(n==m){
SolveUpperTriungular(A,n,X);
PrintVector(X,n);
return 0;
}
if(m>n){
for(int i=n+1;i<=m;i++) X[i]=0;
for(int i=1;i<=n;i++){
A[i][n+1]=A[i][m+1];
}
SolveUpperTriungular(A,n,X);
PrintVector(X,m);
return 0;
}
if(n>m){
for(int i=m+1;i<=n;i++){
for(int j=1;j<=m+1;j++){
if(A[i][j]!=0){
cout<<"Imposibil";
return 0;
}
}
}
SolveUpperTriungular(A,m,X);
PrintVector(X,m);
}
}
void ReadMatrix(float A[][310],int n,int m){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>A[i][j];
}
}
}
void PrintMatrix(float A[][310],int n,int m){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<A[i][j]<<" ";
}
cout<<"\n";
}
cout<<"\n";
}
void PrintVector(float B[],int n){
for(int i=1;i<=n;i++){
cout<<B[i]<<" ";
}
//cout<<"\n\n";
}
int FindMaxColoumn(float A[][310],int n,int k){
int p=k;
float m=fabs(A[k][k]);
for(int i=k+1;i<=n;i++){
if(fabs(A[i][k])>m){
m=fabs(A[i][k]);
p=i;
}
}
return p;
}
void ChangeLines(float A[][310],int m,int p, int k){
for(int j=1;j<=m;j++){
swap(A[p][j],A[k][j]);
}
}
void ReduceLines(float A[][310],int m,int i,int k){
float aux=A[i][k]/A[k][k];
for(int j=k;j<=m;j++){
A[i][j]=A[i][j]-A[k][j]*aux;
}
}
void SolveUpperTriungular(float A[][310],int n,float X[310]){
X[n]=A[n][n+1]/A[n][n];
for(int i=n-1;i>=1;i--){
float s=0;
for(int j=i+1;j<=n;j++){
s+=A[i][j]*X[j];
}
X[i]=(A[i][n+1]-s)/A[i][i];
}
}