#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll k, mod;
vector<ll>b;
vector<ll>c;
vector<vector<ll>> multiply(vector<vector<ll>>A,vector<vector<ll>>B)
{
vector<vector<ll>> ans(k+2, vector<ll>(k+2));
for(int i=1; i<=k+1; i++)
{
for(int j=1; j<=k+1; j++)
{
ll fin = 0;
for(int ff=1; ff<=k+1; ff++)
fin = ( fin+ ((A[i][ff]*B[ff][j])%mod) )%mod;
ans[i][j] = fin;
}
}
return ans;
}
vector<vector<ll>> pow(vector<vector<ll>>T, ll n)
{
if(n==1) return T;
if(n&1)
return multiply(T,pow(T,n-1));
else
{
vector<vector<ll>> X = pow(T, n/2);
return multiply(X, X);
}
}
ll compute(ll n)
{
if(n<=0) return -1;
if(n<=k)
{
ll finsum = 0;
for(int i=1; i<=n; i++)
finsum = (finsum+b[i-1])%mod;
return finsum;
}
vector<ll>F(k+2);
F[1] = 0;
for(int i=0; i<k; i++)
F[i+2] = b[i];
// for(int i=1; i<=k+1; i++)
// cout<<F[i]<<endl;
// cout<<"***"<<endl;
vector<vector<ll>>T(k+2, vector<ll>(k+2, 0));
T[1][1] = 1;
T[1][2] = 1;
for(int i=2; i<=k; i++)
{
for(int j=1; j<=k+1; j++)
{
if(i==j-1)
T[i][j] = 1;
}
}
for(int i=1; i<=k; i++)
T[k+1][i+1] = c[k-i];
// for(int i=1; i<=k+1; i++)
// {
// for(int j=1; j<=k+1; j++)
// cout<<T[i][j]<<" ";
// cout<<endl;
// }
// cout<<"***"<<endl;
T = pow(T, n);
// for(int i=1; i<=k+1; i++)
// {
// for(int j=1; j<=k+1; j++)
// cout<<T[i][j]<<" ";
// cout<<endl;
// }
// cout<<"***"<<endl;
ll finans = 0;
for(int i=1; i<=k+1; i++)
finans = ( finans + ((T[1][i]*F[i])%mod) )%mod;
return finans;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
ll t, val, n, m;
cin>>t;
while(t--)
{
cin>>k;
b.clear();
c.clear();
b.reserve(k);
c.reserve(k);
for(int i=0; i<k; i++)
{
cin>>val;
b.push_back(val);
}
for(int i=0; i<k; i++)
{
cin>>val;
c.push_back(val);
}
cin>>m;
cin>>n;
cin>>mod;
ll aa = compute(m-1);
ll bb = compute(n);
// cout<<bb<<" "<<aa<<endl;
ll finans = (bb-aa+mod)%mod;
cout<<finans<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGwgbG9uZyBsb25nCgoKbGwgaywgbW9kOwp2ZWN0b3I8bGw+YjsKdmVjdG9yPGxsPmM7Cgp2ZWN0b3I8dmVjdG9yPGxsPj4gbXVsdGlwbHkodmVjdG9yPHZlY3RvcjxsbD4+QSx2ZWN0b3I8dmVjdG9yPGxsPj5CKQp7Cgl2ZWN0b3I8dmVjdG9yPGxsPj4gYW5zKGsrMiwgdmVjdG9yPGxsPihrKzIpKTsKCWZvcihpbnQgaT0xOyBpPD1rKzE7IGkrKykKCXsKCQlmb3IoaW50IGo9MTsgajw9aysxOyBqKyspCgkJewoJCQlsbCBmaW4gPSAwOwoJCQlmb3IoaW50IGZmPTE7IGZmPD1rKzE7IGZmKyspCgkJCQlmaW4gPSAoICBmaW4rICgoQVtpXVtmZl0qQltmZl1bal0pJW1vZCkgKSVtb2Q7CgkJCWFuc1tpXVtqXSA9IGZpbjsKCQl9Cgl9CglyZXR1cm4gYW5zOwp9CgoKdmVjdG9yPHZlY3RvcjxsbD4+IHBvdyh2ZWN0b3I8dmVjdG9yPGxsPj5ULCBsbCBuKQp7CglpZihuPT0xKSByZXR1cm4gVDsKCglpZihuJjEpCgkJcmV0dXJuIG11bHRpcGx5KFQscG93KFQsbi0xKSk7CgllbHNlCgl7CgkJdmVjdG9yPHZlY3RvcjxsbD4+IFggPSBwb3coVCwgbi8yKTsKCQlyZXR1cm4gbXVsdGlwbHkoWCwgWCk7Cgl9Cn0KCgpsbCBjb21wdXRlKGxsIG4pCnsKCglpZihuPD0wKQlyZXR1cm4gLTE7CgkKCWlmKG48PWspCgl7CgkJbGwgZmluc3VtID0gMDsKCQlmb3IoaW50IGk9MTsgaTw9bjsgaSsrKQoJCQlmaW5zdW0gPSAoZmluc3VtK2JbaS0xXSklbW9kOwoJCXJldHVybiBmaW5zdW07Cgl9CgoJdmVjdG9yPGxsPkYoaysyKTsKCglGWzFdID0gMDsKCWZvcihpbnQgaT0wOyBpPGs7IGkrKykKCQlGW2krMl0gPSBiW2ldOwoKCS8vIGZvcihpbnQgaT0xOyBpPD1rKzE7IGkrKykKCS8vIAljb3V0PDxGW2ldPDxlbmRsOwoJLy8gY291dDw8IioqKiI8PGVuZGw7CgoJdmVjdG9yPHZlY3RvcjxsbD4+VChrKzIsIHZlY3RvcjxsbD4oaysyLCAwKSk7CgoJVFsxXVsxXSA9IDE7CglUWzFdWzJdID0gMTsKCglmb3IoaW50IGk9MjsgaTw9azsgaSsrKQoJewoJCWZvcihpbnQgaj0xOyBqPD1rKzE7IGorKykKCQl7CgkJCWlmKGk9PWotMSkKCQkJCVRbaV1bal0gPSAxOwoJCX0KCX0KCgoKCWZvcihpbnQgaT0xOyBpPD1rOyBpKyspCgkJVFtrKzFdW2krMV0gPSBjW2staV07CgoJLy8gZm9yKGludCBpPTE7IGk8PWsrMTsgaSsrKQoJLy8gewoJLy8gCWZvcihpbnQgaj0xOyBqPD1rKzE7IGorKykKCS8vIAkJY291dDw8VFtpXVtqXTw8IiAiOwoJLy8gCWNvdXQ8PGVuZGw7CgkvLyB9CgkvLyBjb3V0PDwiKioqIjw8ZW5kbDsKCglUID0gcG93KFQsIG4pOwoKCS8vIGZvcihpbnQgaT0xOyBpPD1rKzE7IGkrKykKCS8vIHsKCS8vIAlmb3IoaW50IGo9MTsgajw9aysxOyBqKyspCgkvLyAJCWNvdXQ8PFRbaV1bal08PCIgIjsKCS8vIAljb3V0PDxlbmRsOwoJLy8gfQoJLy8gY291dDw8IioqKiI8PGVuZGw7CgoJbGwgZmluYW5zID0gMDsKCWZvcihpbnQgaT0xOyBpPD1rKzE7IGkrKykKCQlmaW5hbnMgPSAoIGZpbmFucyArICgoVFsxXVtpXSpGW2ldKSVtb2QpICklbW9kOwoKCXJldHVybiBmaW5hbnM7Cgp9CgoKaW50IG1haW4oKQp7CgoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7ICAgCiAgICBjaW4udGllKDApOwogICAgI2lmbmRlZiBPTkxJTkVfSlVER0UgICAKICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOyAgIAogICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsgICAKICAgICNlbmRpZgoKCWxsIHQsIHZhbCwgbiwgbTsKCWNpbj4+dDsKCXdoaWxlKHQtLSkKCXsKCQkKCQljaW4+Pms7CgkJYi5jbGVhcigpOwoJCWMuY2xlYXIoKTsKCQliLnJlc2VydmUoayk7CgkJYy5yZXNlcnZlKGspOwoKCQlmb3IoaW50IGk9MDsgaTxrOyBpKyspCgkJewoJCQljaW4+PnZhbDsKCQkJYi5wdXNoX2JhY2sodmFsKTsKCQl9CgoJCWZvcihpbnQgaT0wOyBpPGs7IGkrKykKCQl7CgkJCWNpbj4+dmFsOwoJCQljLnB1c2hfYmFjayh2YWwpOwoJCX0KCgkJY2luPj5tOwoJCWNpbj4+bjsKCQljaW4+Pm1vZDsKCgkJbGwgYWEgPSBjb21wdXRlKG0tMSk7CgkJbGwgYmIgPSBjb21wdXRlKG4pOwoJCS8vIGNvdXQ8PGJiPDwiICI8PGFhPDxlbmRsOwoJCWxsIGZpbmFucyA9IChiYi1hYSttb2QpJW1vZDsKCQljb3V0PDxmaW5hbnM8PGVuZGw7CgoJfQoKCXJldHVybiAwOwp9