#include <cstdio>
#include <algorithm>
using namespace std;
#define int long long
const int mod = 1e9 + 7;
int n, a[405][405], b[405][405];
int Power(int q, int c) {
if (c == 0)return 1;
if (q == 0)return 0;
int ans = Power(q * q % mod, c / 2);
if (c % 2 == 1)ans = ans * q % mod;
return ans % mod;
}
bool Get_Inverse_Matrix() {
for (int i = 1; i <= n; i++) {
for (int j = i; j <= n; j++) {
if (a[j][i] != 0) {
for (int k = 1; k <= n; k++)swap(a[i][k], a[j][k]);
for (int k = 1; k <= n; k++)swap(b[i][k], b[j][k]);
goto next;
}
}
return false;
next:;
int tmp = Power(a[i][i], mod - 2);
for (int k = 1; k <= n; k++)a[i][k] = a[i][k] * tmp % mod;
for (int k = 1; k <= n; k++)b[i][k] = b[i][k] * tmp % mod;
for (int j = 1; j <= n; j++) {
if (j == i)continue;
tmp = a[j][i];
for (int k = 1; k <= n; k++)a[j][k] -= tmp * a[i][k] % mod, a[j][k] += mod, a[j][k] %= mod;
for (int k = 1; k <= n; k++)b[j][k] -= tmp * b[i][k] % mod, b[j][k] += mod, b[j][k] %= mod;
}
}
return true;
}
signed main() {
// freopen("in", "r", stdin), freopen("out", "w", stdout);
scanf("%lld", &n);
for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)scanf("%lld", &a[i][j]);
for (int i = 1; i <= n; i++)b[i][i] = 1;
if (Get_Inverse_Matrix()) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)printf("%lld ", b[i][j]);
printf("\n");
}
} else printf("No Solution\n");
return 0;
}