#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#define Nmax 305
#define EPS 0.000001
using namespace std;
double D[Nmax][Nmax],X[Nmax];
int N,M;
void swap_line(int A,int B)
{
for(int i = 1; i <= M+1; ++i)
swap(D[A][i],D[B][i]);
}
void Read()
{
int aux;
scanf("%d%d",&N,&M);
for(int i = 1; i <= N; ++i)
for(int j = 1; j <= M + 1; ++j)
scanf("%lf",&D[i][j]);
}
void Killing_Gauss(){/// lol :D poor Gauss
int i = 1,j = 1,k,l;
double val;
for(int step = 1; step < N; ++step,++i,++j)
{
for(k = i; k <= N; ++k)
if(fabs(D[k][j]) > EPS)
break;
if(k == N + 1) continue;
if(k != i) swap_line(i,k);
for(k = i + 1; k <= N; ++k)
{
val = - D[k][j] / D[i][j];
for(l = j; l <= M + 1; ++l)
{
D[k][l] += D[i][l] * val;
if(fabs(D[k][l]) < EPS)
D[k][l] = 0;
}
}
}
}
void Get_sol()
{
int i,j,k,l;
for(i = N; i >= 1; --i)
for(j = 1; j <= M + 1; ++j)
if(fabs(D[i][j]) > EPS)
{
if(j == M + 1){
printf("Imposibil\n");
exit(0);
}
X[i] = D[i][M+1];
for(k = j + 1; k <= M; ++k)
X[i] -= X[k]*D[i][k];
X[i] /= D[i][j];
break;
}
double aux;
for(int i = 1; i <= M; ++i)
{
aux = X[i];
printf("%.10lf ",aux);
}
}
int main()
{
freopen("gauss.in","r",stdin);
freopen("gauss.out","w",stdout);
Read();
Killing_Gauss();
Get_sol();
return 0;
}