#include<stdio.h>
#include<string.h>
#define MOD 998244353
long long n,var,equ,pic[256][256],x[256];
long long ans[256];
long long abs(long long x)
{
return (x>0)?x:-x;
}
long long QPow(long long bas,long long t)
{
long long ret=1;
for(;t;t>>=1,bas=(bas*bas)%MOD)
{
if(t&1LL)
{
ret=(ret*bas)%MOD;
}
}
return ret;
}
void Gauss()
{
long long i,j,k,col,maxr;
for(k=0,col=0;k<equ&&col<var;k++,col++)
{
maxr=k;
for(i=k+1;i<equ;i++)
{
if(abs(pic[i][col])>abs(pic[maxr][col]))
{
maxr=i;
}
}
if(k!=maxr)
{
for(j=col;j<var;j++)
{
long long temp=pic[k][j];
pic[k][j]=pic[maxr][j];
pic[maxr][j]=temp;
}
long long temp=x[k];
x[k]=x[maxr];
x[maxr]=temp;
}
x[k]*=QPow(pic[k][col],998244351);
x[k]%=MOD;
for(j=col+1;j<var;j++)
{
pic[k][j]=(pic[k][j]%MOD*QPow(pic[k][col],998244351))%MOD;
}
pic[k][col]=1;
for(i=0;i<equ;i++)
{
if(i!=k)
{
x[i]-=x[k]*pic[i][col];
x[i]%=MOD;
for(j=col+1;j<var;j++)
{
pic[i][j]-=pic[k][j]*pic[i][col];
pic[i][j]%=MOD;
}
pic[i][col]=0;
}
}
}
}
int main()
{
while(~scanf("%d",&n))
{
var=equ=n;
int i;
for(i=0;i<n;i++)
{
int j;
for(j=0;j<n;j++)
{
scanf("%lld",&pic[i][j]);
}
}
for(i=0;i<n;i++)
{
scanf("%lld",&x[i]);
ans[i]=x[i];
}
Gauss();
long long l=0;
for(i=0;i<n;i++)
{
l+=(ans[i]*x[i])%MOD;
l%=MOD;
}
printf("%lld\n",(l>=0?l:l+MOD));
}
return 0;
}