#include<bits/stdc++.h>
#define int long long
using namespace std;
struct matrix
{
int jz[20][20];
};
matrix ans,base;
int k;
int c[25];
int m,n,p;
int ans1,ans2;
matrix operator *(matrix x,matrix y)
{
matrix c;
for(int i=1;i<=15;i++)
for(int j=1;j<=15;j++)
{
int sum=0;
for(int k=1;k<=15;k++)
sum=(sum+((x.jz[i][k]*y.jz[k][j])%p))%p;
c.jz[i][j]=sum;
}
return c;
}
void make_base()
{
// for(int i=1;i<k;i++) //列
// for(int j=1;j<=k+1;j++) //行
// {
// base.jz[j][i]=0;
// if(j==i+1)
// base.jz[j][i]=1;
// }
// base.jz[1][k]=0;
// for(int i=1;i<=k;i++)
// base.jz[i+1][k]=c[i];
// base.jz[k][k+1]=base.jz[k+1][k+1]=1;
//
for(int i=1;i<=k-1;i++)
for(int j=1;j<=k;j++)
{
base.jz[j][i]=0;
if(j==i+1)
base.jz[j][i]=1;
}
for(int i=1;i<=k;i++)
base.jz[i][k]=c[k+1-i];
base.jz[k+1][k]=0;
for(int i=1;i<=k+1;i++)
base.jz[i][k+1]=0;
base.jz[k+1][k+1]=1;
base.jz[2][k+1]=1;
}
signed main()
{
cin>>k;
for(int i=1;i<=k;i++)
cin>>ans.jz[1][i];
for(int i=1;i<=k;i++)
cin>>c[i];
ans.jz[1][k+1]=ans.jz[1][1];
cin>>m>>n>>p;
make_base();
// //
// cout<<"startjz:"<<"\n";
// for(int i=1;i<=k+1;i++)
// {
// for(int j=1;j<=k+1;j++)
// cout<<base.jz[i][j]<<" ";
// cout<<"\n";
// }
// puts("");
// ans=ans*base;
// cout<<"ans:\n";
// for(int i=1;i<=k+1;i++)
// cout<<ans.jz[1][i]<<" ";
// cout<<"\n\n";
//
int power=m-2;
while(power>0)
{
// cout<<"进来了\n";
if(power&1)
ans=ans*base;
power>>=1;
base=base*base;
}
ans1=ans.jz[1][k+1];
// cout<<"原来的ans:"<<"\n";
// for(int i=1;i<=k+1;i++)
// cout<<ans.jz[1][i]<<" ";
// cout<<"\n\n";
//
//第二次
//
power=n-m+1;
// cout<<"power:"<<power<<"\n";
make_base();
//
// ans=ans*base;
// cout<<"ans:\n";
// for(int i=1;i<=k+1;i++)
// cout<<ans.jz[1][i]<<" ";
// cout<<"\n\n";
//
// for(int i=1;i<=k+1;i++)
// {
// for(int j=1;j<=k+1;j++)
// cout<<base.jz[i][j];
// cout<<"\n";
// }
// ans=ans*base;
// for(int i=1;i<=k+1;i++)
// cout<<ans.jz[1][i]<<" ";
// cout<<"\n\n";
while(power>0)
{
if(power&1)
ans=ans*base;
// cout<<ans.jz[1][k+1]<<"\n";
power>>=1;
base=base*base;
}
ans2=ans.jz[1][k+1];
// power=n-1;
// while(power>0){
// if(power&1)
// ans=ans*base;
// power>>=1;
// base=base*base;
// }
// int anss=ans.jz[1][1];
// cout<<ans1<<" "<<ans2<<" "<<"\n";
// cout<<ans.jz[1][1]<<"\n";
cout<<ans2-ans1;
return 0;
}
/*
2
1 1
1 2
2 10 1000003
*/