#include <fstream>
#include <iomanip>
#include <algorithm>
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
int n, m, i, j, poz, p;
double sol[301], v[302][302], eps = 1e-9;
int main() {
fin >> n >> m;
for (i = 1; i <= n; i++) {
for (j = 1; j <= m + 1; j++) {
fin >> v[i][j];
}
}
i = j = 1;
while (i <= n && j <= m) {
poz = i;
for (int k = i; k <= n; k++) {
if (abs(v[k][j]) > eps) {
poz = k;
break;
}
}
if (abs(v[poz][j]) < eps) {
j++;
continue;
}
if (poz != i) {
for (int k = j; k <= m + 1; k++) {
swap(v[i][k], v[poz][k]);
}
}
double div = v[i][j];
for (int k = j; k <= m + 1; k++) {
v[i][k] /= div;
}
for (int k = i + 1; k <= n; k++) {
double factor = v[k][j];
for (int p = j; p <= m + 1; p++) {
v[k][p] -= v[i][p] * factor;
}
}
i++;
j++;
}
for (j = 1; j <= m; j++) {
sol[j] = 0;
}
for (i = n; i >= 1; i--) {
int col = 0;
for (j = 1; j <= m; j++) {
if (abs(v[i][j]) > eps) {
col = j;
break;
}
}
if (col == 0) {
if (abs(v[i][m+1]) > eps) {
fout << "Imposibil";
return 0;
}
continue;
}
double sum = v[i][m+1];
for (j = col + 1; j <= m; j++) {
sum -= v[i][j] * sol[j];
}
sol[col] = sum;
}
for (j = 1; j <= m; j++) {
fout << fixed << setprecision(10) << sol[j] << " ";
}
return 0;
}