#include<bits/stdc++.h>
using namespace std;
struct matrix
{
long long v[20][20];
} mat,ans;
long long d,n,mod,F[20];
matrix multiply(matrix a, matrix b)
{
matrix r;
for(int i=0; i<d; i++)
{
for(int j=0; j<d; j++)
{
long long sum = 0;
r.v[i][j] = 0;
for(int k=0; k<d; k++)
{
sum+=a.v[i][k]*b.v[k][j];
sum%=mod;
}
r.v[i][j] = sum;
}
}
return r;
}
matrix power(long long p)
{
if(p==1)
{
return mat;
}
if(p%2==1)
{
return multiply(mat,power(p-1));
}
matrix ret = power(p/2);
ret = multiply(ret,ret);
return ret;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
while(cin>>d>>n>>mod)
{
if(d==0 && n==0 && mod==0)
break;
memset(mat.v,0,sizeof(mat.v));
for(int i=0; i<d; i++)
{
cin>>mat.v[0][i];
}
for(int i=0; i<d; i++)
{
cin>>F[i];
}
if(n<=d)
printf("%lld\n",F[n-1]%mod);
else
{
for(int i = 1; i < d; ++i)
{
mat.v[i][i-1] = 1;
}
long long res = 0;
ans = power(n-d);
for(int i=0; i<d; i++)
{
res += (F[d-i-1]*ans.v[0][i])%mod;
res = res%mod;
}
printf("%lld\n", res);
}
}
return 0;
}