#include<bits/stdc++.h>
using namespace std;
long long kj(long long z);
long long gk(long long x);
long long gj1();
long long gj2();
long long c[20][20],A[20],m,n,c1[20][20],c2[20][20],s;
int k,p;
int main() {
int j,a,b,i;
cin>>k;
for(i=1; i<=k; i++) {
cin>>A[i];
A[k+1]+=A[i];
}
a=1;
b=1;
while(1) {
if(b<k) {
c[a++][++b]=1;
} else {
if(b-k<k) {
cin>>c[a][k-((++b)-k)+1];
c[a+1][k-(b-k)+1]=c[a][k-(b-k)+1];
} else {
break;
}
}
}
c[k+1][k+1]=1;
cin>>m>>n;
s=(kj(n)-kj(m))%p;
cout<<s;
return 0;
}
long long gj1() {
int i,j,z;
for(i=1; i<=k+1; i++) {
for(j=1; j<=k+1; j++) {
for(z=1; z<=k+1; z++) {
c1[i][j]=(c1[i][j]+(c2[z][j]%p)*(c[i][z]%p))%p;
}
}
}
for(i=1; i<=k+1; i++) {
for(j=1; j<=k+1; j++) {
c2[i][j]=c1[i][j];
}
}
}
long long gj2() {
int i,j,z;
for(i=1; i<=k+1; i++) {
for(j=1; j<=k+1; j++) {
for(z=1; z<=k+1; z++) {
c1[i][j]=(c1[i][j]+(c[z][j]%p)*(c[i][z]%p))%p;
}
}
}
for(i=1; i<=k+1; i++) {
for(j=1; j<=k+1; j++) {
c[i][j]=c1[i][j];
}
}
}
long long gk(long long x) {
int i,j;
for(i=1; i<=k+1; i++) {
c2[i][i]=1;
}
while(x!=0) {
if(x&1) {
gj1();//c2*c
}
gj2();//c*c
x=x>>1;
}
}
long long kj(long long z) {
int i,j;
gk(z);
for(i=1; i<=k+1; i++) {
A[k+1]+=c2[k+1][i]*A[i];
A[k+1]%=p;
}
}
DveC++上运行连个输出都没。 有人可以帮我解决吗?谢谢。