#include <bits/stdc++.h>
#define eps 0.0000000001
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
long double a[309][309], v[309];
bool zero (long double x)
{
if (x>-eps && x<eps)
return 1;
return 0;
}
signed main ()
{
int n, m, i, j, lin, col;
bool ok=1;
f >> n >> m;
for (i=1; i<=n; i++)
for (j=1; j<=m+1; j++)
f >> a[i][j];
lin=1, col=1;
while (lin<=n && col<=m)
{
for (i=lin; i<=n; i++)
{
if (!zero (a[i][col]))
break;
}
if (i!=n+1)
{
if (i!=lin)
swap (a[i], a[lin]);
for (j=col+1; j<=m+1; j++)
a[lin][j]/=a[lin][col];
a[lin][col]=1;
for (i=lin+1; i<=n; i++)
{
for (j=col+1; j<=m+1; j++)
a[i][j]-=a[lin][j]*a[i][col];
a[i][col]=0;
}
lin++;
}
col++;
}
for (lin=n; lin>=1; lin--)
{
for (col=1; col<=m+1; col++)
{
if (!zero(a[lin][col]))
break;
}
if (col==m+1)
{
ok=0;
break;
}
v[col]=a[lin][m+1];
for (j=col+1; j<=m; j++)
v[col]-=a[lin][j]*v[j];
}
if (!ok)
g << "Imposibil";
else
{
for (i=1; i<=m; i++)
g << fixed << setprecision(10) << v[i] << ' ';
}
}