#include<bits/stdc++.h>
#define ll long long
#define loop(i,n) for(i=0;i<n;++i)
#define loop1(i,n,x) for(i=x;i<n;++i)
#define loopr(i,n) for(i=n;i>=0;--i)
using namespace std;
typedef vector<int> vi;
ll M=1e9+7;
int main()
{
int t;
cin>>t;
while(t){
--t;
ll a,b,c,d,m;
cin>>a>>b>>c>>d>>m;
long n;
cin>>n;
long i;
a=(a+m)%m;
b=(b+m)%m;
c=(c+m)%m;
d=(d+m)%m;
unordered_map<ll,int>mp;
ll temp;
ll arr[n];
loop(i,n){
cin>>arr[i];
temp=arr[i];
temp=(temp+m)%m;
temp=(temp*temp)%m;
mp.insert({temp,1});
}
ll ans=0;
loop(i,n){
temp=(arr[i]+m)%m;
ll t1=(temp*temp)%m;
ll t2=t1;
t1=((t1%m)*(temp))%m;
t1=((a)*(t1%m))%m;
t2=((t2%m)*(b))%m;
temp=(temp*c)%m;
ll fd=(t1+t2+temp+d)%m;
if(mp.find(fd)!=mp.end()){
ans++;
ans%=M;
}
}
cout<<ans%M<<endl;
}
}