#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define dbg(x) cout<<#x<<"="<<x<<" "
#define nl cout<<"\n"
#define fr(i,n) for(int i=0;i<n;i++)///#define part
const int MOD=1e9+7;
ll n,INV[100];struct matrix {ll arr[32][32];};////declaration part
void print(matrix A){
fr(i,n){fr(j,n)cout<<A.arr[i][j]%MOD<<" ";cout<<endl;}
cout<<endl;}
void takemod(ll &a){
if(a<0){
a*=-1;if(a>=MOD)a%=MOD;
if(a!=0)a=MOD-a;
}
else if(a>=MOD)a%=MOD;}////modulo part
matrix mul(matrix &A,matrix &B){
matrix C;memset(C.arr,0,sizeof C.arr);
fr(i,n)fr(j,n)fr(k,n){
C.arr[i][j]+=A.arr[i][k]*B.arr[k][j];
takemod(C.arr[i][j]);
}
return C;}
matrix add(matrix A,matrix B){matrix C;memset(C.arr,0,sizeof C.arr);fr(i,n)fr(j,n){C.arr[i][j]=A.arr[i][j]+B.arr[i][j];takemod(C.arr[i][j]);}return C;}
ll tr(matrix A){ll res=0;fr(i,n){res+=A.arr[i][i];takemod(res);}return res;}
ll fpow(ll a,ll b){
ll res=1;
while(b)
{
if(b&1){res*=a;takemod(res);}
a*=a;takemod(a);
b/=2;
}
return res;}
ll inv(ll a){return fpow(a,MOD-2);}
void asin(matrix &A,ll val){fr(i,n)fr(j,n)A.arr[i][j]=val;}
void scale(matrix &A,ll val){takemod(val);fr(i,n)fr(j,n){A.arr[i][j]*=val;takemod(A.arr[i][j]);}}
int main()
{
for(int i=1;i<=50;i++)INV[i]=inv(i);
matrix g;cin>>n;
matrix gk[32];fr(i,n)gk[0].arr[i][i]=1;
ll coef[32],TR[32];coef[n]=1;
fr(i,n)fr(j,n){cin>>g.arr[i][j];takemod(g.arr[i][j]);}gk[1]=g;
for(int i=2;i<=30;i++)gk[i]=mul(g,gk[i-1]);
for(int i=0;i<=30;i++)TR[i]=tr(gk[i]);
for(int m=1;m<=n;m++){
ll temp=0;
for(int k=1;k<=m;k++){
temp+=coef[n-m+k]*TR[k];
}
temp*=inv(m);temp*=-1;
takemod(temp);
coef[n-m]=temp;
}
matrix Adj_g;memset(Adj_g.arr,0,sizeof Adj_g.arr);
ll detg=coef[0];if(n&1)detg*=-1;takemod(detg);
for(int k=1;k<=n;k++){
matrix temp=gk[k-1];
scale(temp,coef[k]);
Adj_g=add(Adj_g,temp);
}
if(n&1);else fr(i,n)fr(j,n){Adj_g.arr[i][j]*=-1;takemod(Adj_g.arr[i][j]);}
dbg(coef[0]);dbg(detg);
print(mul(g,Adj_g));
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcgCiNkZWZpbmUgZGJnKHgpIGNvdXQ8PCN4PDwiPSI8PHg8PCIgIgojZGVmaW5lIG5sIGNvdXQ8PCJcbiIKI2RlZmluZSBmcihpLG4pIGZvcihpbnQgaT0wO2k8bjtpKyspLy8vI2RlZmluZSBwYXJ0CmNvbnN0IGludCBNT0Q9MWU5Kzc7CmxsIG4sSU5WWzEwMF07c3RydWN0IG1hdHJpeCB7bGwgYXJyWzMyXVszMl07fTsvLy8vZGVjbGFyYXRpb24gcGFydAp2b2lkIHByaW50KG1hdHJpeCBBKXsKICBmcihpLG4pe2ZyKGosbiljb3V0PDxBLmFycltpXVtqXSVNT0Q8PCIgIjtjb3V0PDxlbmRsO30KICBjb3V0PDxlbmRsO30Kdm9pZCB0YWtlbW9kKGxsICZhKXsKICAgIGlmKGE8MCl7CiAgICAgICAgYSo9LTE7aWYoYT49TU9EKWElPU1PRDsKICAgICAgICBpZihhIT0wKWE9TU9ELWE7CiAgICB9CiAgICBlbHNlIGlmKGE+PU1PRClhJT1NT0Q7fS8vLy9tb2R1bG8gcGFydAptYXRyaXggbXVsKG1hdHJpeCAmQSxtYXRyaXggJkIpewogICBtYXRyaXggQzttZW1zZXQoQy5hcnIsMCxzaXplb2YgQy5hcnIpOwogICBmcihpLG4pZnIoaixuKWZyKGssbil7CiAgICBDLmFycltpXVtqXSs9QS5hcnJbaV1ba10qQi5hcnJba11bal07CiAgICB0YWtlbW9kKEMuYXJyW2ldW2pdKTsKICAgIH0KICAgcmV0dXJuIEM7fQptYXRyaXggYWRkKG1hdHJpeCBBLG1hdHJpeCBCKXttYXRyaXggQzttZW1zZXQoQy5hcnIsMCxzaXplb2YgQy5hcnIpO2ZyKGksbilmcihqLG4pe0MuYXJyW2ldW2pdPUEuYXJyW2ldW2pdK0IuYXJyW2ldW2pdO3Rha2Vtb2QoQy5hcnJbaV1bal0pO31yZXR1cm4gQzt9CmxsIHRyKG1hdHJpeCBBKXtsbCByZXM9MDtmcihpLG4pe3Jlcys9QS5hcnJbaV1baV07dGFrZW1vZChyZXMpO31yZXR1cm4gcmVzO30KbGwgZnBvdyhsbCBhLGxsIGIpewogICAgbGwgcmVzPTE7CiAgICB3aGlsZShiKQogICAgewogICAgICAgIGlmKGImMSl7cmVzKj1hO3Rha2Vtb2QocmVzKTt9CiAgICAgICAgYSo9YTt0YWtlbW9kKGEpOwogICAgICAgIGIvPTI7CiAgICB9CiAgICByZXR1cm4gcmVzO30KbGwgaW52KGxsIGEpe3JldHVybiBmcG93KGEsTU9ELTIpO30Kdm9pZCBhc2luKG1hdHJpeCAmQSxsbCB2YWwpe2ZyKGksbilmcihqLG4pQS5hcnJbaV1bal09dmFsO30Kdm9pZCBzY2FsZShtYXRyaXggJkEsbGwgdmFsKXt0YWtlbW9kKHZhbCk7ZnIoaSxuKWZyKGosbil7QS5hcnJbaV1bal0qPXZhbDt0YWtlbW9kKEEuYXJyW2ldW2pdKTt9fQppbnQgbWFpbigpCnsKICBmb3IoaW50IGk9MTtpPD01MDtpKyspSU5WW2ldPWludihpKTsKICBtYXRyaXggZztjaW4+Pm47CiAgbWF0cml4IGdrWzMyXTtmcihpLG4pZ2tbMF0uYXJyW2ldW2ldPTE7CiAgbGwgY29lZlszMl0sVFJbMzJdO2NvZWZbbl09MTsKICBmcihpLG4pZnIoaixuKXtjaW4+PmcuYXJyW2ldW2pdO3Rha2Vtb2QoZy5hcnJbaV1bal0pO31na1sxXT1nOwogIGZvcihpbnQgaT0yO2k8PTMwO2krKylna1tpXT1tdWwoZyxna1tpLTFdKTsKICBmb3IoaW50IGk9MDtpPD0zMDtpKyspVFJbaV09dHIoZ2tbaV0pOwogIGZvcihpbnQgbT0xO208PW47bSsrKXsKICAgIGxsIHRlbXA9MDsKICAgIGZvcihpbnQgaz0xO2s8PW07aysrKXsKICAgICAgICB0ZW1wKz1jb2VmW24tbStrXSpUUltrXTsKICAgIH0KICAgIHRlbXAqPWludihtKTt0ZW1wKj0tMTsKICAgIHRha2Vtb2QodGVtcCk7CiAgICBjb2VmW24tbV09dGVtcDsKICB9IAogIG1hdHJpeCBBZGpfZzttZW1zZXQoQWRqX2cuYXJyLDAsc2l6ZW9mIEFkal9nLmFycik7CiAgbGwgZGV0Zz1jb2VmWzBdO2lmKG4mMSlkZXRnKj0tMTt0YWtlbW9kKGRldGcpOwogIGZvcihpbnQgaz0xO2s8PW47aysrKXsKICAgIG1hdHJpeCB0ZW1wPWdrW2stMV07CiAgICBzY2FsZSh0ZW1wLGNvZWZba10pOwogICAgQWRqX2c9YWRkKEFkal9nLHRlbXApOwogIH0KICBpZihuJjEpO2Vsc2UgZnIoaSxuKWZyKGosbil7QWRqX2cuYXJyW2ldW2pdKj0tMTt0YWtlbW9kKEFkal9nLmFycltpXVtqXSk7fQogIGRiZyhjb2VmWzBdKTtkYmcoZGV0Zyk7CiAgIHByaW50KG11bChnLEFkal9nKSk7Cn0=