import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void add(long list[],long a,long c,int s,int num)
{
for(int i=s;i<num;i++)
{
list[i] = (list[i]%c + a%c)%c;
}
}
public static long mulmod(long val,long b,long c)
{
long temp = b;
if(val<=10000000000L && b<=1000000000L)
{
long ret = ((val%c)*(temp%c))%c;
return ret;
}
long ret = 0L;
val=val%c;
while(temp > 0L){
if(temp%2!=0) {
ret =(ret+val)%c;
}
val = (val<<1L)%c;
temp>>=1L;
}
return (ret%c);
}
public static void multiply(long list[],long b,long c,int s, int num)
{
for(int i=s;i<num;i++)
{
list[i]=mulmod(list[i],b,c);
}
}
public static void reverse(long list[],long c,int s,int num)
{ int to=num-1;
/* while(s<j)
{
long temp = list[s]%c;
list[s]=list[j]%c;
list[j]=temp;
s++;
j--;
}*/
for(int j=s;j<to;j++,to--){
list[j]^=list[to]^=list[j]^=list[to];
}
}
{
// your code goes here
//BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Scanner in
= new Scanner
(System.
in); //int test = Integer.parseInt(br.readLine());
int test = in.nextInt();
while(test-->0)
{
//int num = Integer.parseInt(br.readLine());
int num = in.nextInt();
long list[] = new long[num+1];
int i,j;
for(i=0;i<num;i++)
{
list[i]= in.nextLong();
}
long a = in.nextLong();
long b= in.nextLong();
long c=in.nextLong();
for(i=0;i<num;i++)
{
if(s.charAt(i)=='R')
reverse(list,c,i,num);
else if(s.charAt(i)=='A')
add(list,a,c,i,num);
else if(s.charAt(i)=='M')
multiply(list,b,c,i,num);
}
for(i=0;i<num;i++)
{
System.
out.
print((list
[i
]%c
) + " "); }
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CiAKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7ICAgCglwdWJsaWMgc3RhdGljIHZvaWQgYWRkKGxvbmcgbGlzdFtdLGxvbmcgYSxsb25nIGMsaW50IHMsaW50IG51bSkKCXsKCQlmb3IoaW50IGk9cztpPG51bTtpKyspCgkJewoJCQlsaXN0W2ldID0gKGxpc3RbaV0lYyArIGElYyklYzsKCQl9Cgl9CgkKCXB1YmxpYyBzdGF0aWMgbG9uZyBtdWxtb2QobG9uZyB2YWwsbG9uZyBiLGxvbmcgYykKCXsKCQlsb25nIHRlbXAgPSBiOwogICAgICAgIGlmKHZhbDw9MTAwMDAwMDAwMDBMICYmIGI8PTEwMDAwMDAwMDBMKQogICAgICAgIHsKICAgICAgICAgbG9uZyByZXQgPSAoKHZhbCVjKSoodGVtcCVjKSklYzsKICAgICAgICByZXR1cm4gcmV0OwogICAgICAgIH0KIAogICAgICAgIGxvbmcgcmV0ID0gMEw7CiAgICAgICAgIHZhbD12YWwlYzsKICAgICAgICB3aGlsZSh0ZW1wID4gMEwpewogICAgICAgIGlmKHRlbXAlMiE9MCkgewogICAgICAgICAgICByZXQgPShyZXQrdmFsKSVjOwogICAgICAgIH0KICAgICAgICB2YWwgPSAodmFsPDwxTCklYzsKICAgICAgICB0ZW1wPj49MUw7CiAgICB9CiAgICByZXR1cm4gKHJldCVjKTsKCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIG11bHRpcGx5KGxvbmcgbGlzdFtdLGxvbmcgYixsb25nIGMsaW50IHMsIGludCBudW0pCgl7CgkJZm9yKGludCBpPXM7aTxudW07aSsrKQoJCXsKCQkJbGlzdFtpXT1tdWxtb2QobGlzdFtpXSxiLGMpOwoJCX0KCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIHJldmVyc2UobG9uZyBsaXN0W10sbG9uZyBjLGludCBzLGludCBudW0pCgl7IGludCB0bz1udW0tMTsKICAgICAgIC8qIHdoaWxlKHM8aikKICAgICAgICB7IAogICAgICAgICBsb25nIHRlbXAgPSBsaXN0W3NdJWM7CiAgICAgICAgIGxpc3Rbc109bGlzdFtqXSVjOwogICAgICAgICBsaXN0W2pdPXRlbXA7CiAgICAgICAgIHMrKzsKICAgICAgICAgai0tOwogICAgICAgIH0qLwogICAgICAgICAgZm9yKGludCBqPXM7ajx0bztqKyssdG8tLSl7CiAgICAgICAgICAgICAgICAgICAgbGlzdFtqXV49bGlzdFt0b11ePWxpc3Rbal1ePWxpc3RbdG9dOwogICAgICAgICAgfQoJfQoJCgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQkvL0J1ZmZlcmVkUmVhZGVyIGJyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKCQlTY2FubmVyIGluID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCQkvL2ludCB0ZXN0ID0gSW50ZWdlci5wYXJzZUludChici5yZWFkTGluZSgpKTsKCQlpbnQgdGVzdCA9IGluLm5leHRJbnQoKTsKCQl3aGlsZSh0ZXN0LS0+MCkKCQl7CgkJCS8vaW50IG51bSA9IEludGVnZXIucGFyc2VJbnQoYnIucmVhZExpbmUoKSk7CgkJCWludCBudW0gPSBpbi5uZXh0SW50KCk7CgkJCWxvbmcgbGlzdFtdID0gbmV3IGxvbmdbbnVtKzFdOwoJCQlpbnQgaSxqOwoJCQlmb3IoaT0wO2k8bnVtO2krKykKCQkJewoJCQkJbGlzdFtpXT0gaW4ubmV4dExvbmcoKTsKCQkJfQoJCQlsb25nIGEgPSBpbi5uZXh0TG9uZygpOwoJCQlsb25nIGI9IGluLm5leHRMb25nKCk7CgkJCWxvbmcgYz1pbi5uZXh0TG9uZygpOwoJCQlTdHJpbmcgcz0gaW4ubmV4dCgpOwoJCQlmb3IoaT0wO2k8bnVtO2krKykKCQkJewoJCQkJaWYocy5jaGFyQXQoaSk9PSdSJykKCQkJCXJldmVyc2UobGlzdCxjLGksbnVtKTsKCQkJCWVsc2UgaWYocy5jaGFyQXQoaSk9PSdBJykKCQkJCWFkZChsaXN0LGEsYyxpLG51bSk7CgkJCQllbHNlIGlmKHMuY2hhckF0KGkpPT0nTScpCgkJCQltdWx0aXBseShsaXN0LGIsYyxpLG51bSk7CgkJCX0KCQkgICAgZm9yKGk9MDtpPG51bTtpKyspCgkJICAgIHsKCQkgICAgCVN5c3RlbS5vdXQucHJpbnQoKGxpc3RbaV0lYykgKyAiICIpOwoJCSAgICB9CgkJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CgkJfQoJCQoJfQp9IA==