#include <cstdio>
#include <iomanip>
using namespace std;
const int MAXN = 303;
const double EPS = 0.0000001;
double a[MAXN][MAXN];
double x[MAXN];
int n,m;
void citire()
{
freopen("gauss.in","r",stdin);
freopen("gauss.out","w",stdout);
scanf("%d%d",&n,&m);
for (int i = 1;i <= n;++i)
for (int j = 1;j <= m + 1;++j)
scanf("%lf", &a[i][j]);
}
void interschimba(double &a, double &b)
{
double aux = a;
a = b;
b = aux;
}
void gauss()
{
int i = 1,j = 1,k;
while(i <= n && j <= m)
{
for (k = i;k <= n;++k)
if (!(-EPS < a[k][j] && a[k][j] < EPS))
break;
if (k == n + 1)
{
++j;
continue;
}
if (k != i)
for (int jj = 1;jj <= m + 1;++jj)
interschimba(a[i][jj], a[k][jj]);
for (int jj = j + 1;jj <= m + 1;++jj)
a[i][jj] /= a[i][j];
a[i][j] = 1;
for (int ii = i + 1;ii <= n;++ii)
{
for (int jj = j + 1;jj <= m + 1;++jj)
a[ii][jj] -= a[ii][j] * a[i][jj];
a[ii][j] = 0;
}
++i;
++j;
}
}
bool calculare_necunoscute()
{
for (int i = n;i >= 1;--i)
for (int j = 1;j <= m + 1;++j)
if(!(-EPS < a[i][j] && a[i][j] < EPS))
{
if (j == m + 1)
return false;
x[j] = a[i][m + 1];
for (int k = j + 1;k <= m;++k)
x[j] -= a[i][k] * x[k];
break;
}
return true;
}
int main()
{
citire();
gauss();
bool ok = calculare_necunoscute();
if (!ok)
printf("Imposibil\n");
else
{
for (int i = 1;i <= n;++i)
printf("%.8lf ",x[i]);
printf("\n");
}
return 0;
}