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,j=num-1;
while(s<j)
{
long temp = list[s]%c;
list[s]=list[j]%c;
list[j]=temp;
s++;
j--;
}
}
{
// 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
) + " "); }
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CiAKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7ICAgCglwdWJsaWMgc3RhdGljIHZvaWQgYWRkKGxvbmcgbGlzdFtdLGxvbmcgYSxsb25nIGMsaW50IHMsaW50IG51bSkKCXsKCQlmb3IoaW50IGk9cztpPG51bTtpKyspCgkJewoJCQlsaXN0W2ldID0gKGxpc3RbaV0lYyArIGElYyklYzsKCQl9Cgl9CgkKCXB1YmxpYyBzdGF0aWMgbG9uZyBtdWxtb2QobG9uZyB2YWwsbG9uZyBiLGxvbmcgYykKCXsKCQlsb25nIHRlbXAgPSBiOwogICAgICAgIGlmKHZhbDw9MTAwMDAwMDAwMDBMICYmIGI8PTEwMDAwMDAwMDBMKQogICAgICAgIHsKICAgICAgICAgbG9uZyByZXQgPSAoKHZhbCVjKSoodGVtcCVjKSklYzsKICAgICAgICByZXR1cm4gcmV0OwogICAgICAgIH0KIAogICAgICAgIGxvbmcgcmV0ID0gMEw7CiAgICAgICAgIHZhbD12YWwlYzsKICAgICAgICB3aGlsZSh0ZW1wID4gMEwpewogICAgICAgIGlmKHRlbXAlMiE9MCkgewogICAgICAgICAgICByZXQgPShyZXQrdmFsKSVjOwogICAgICAgIH0KICAgICAgICB2YWwgPSAodmFsPDwxTCklYzsKICAgICAgICB0ZW1wPj49MUw7CiAgICB9CiAgICByZXR1cm4gKHJldCVjKTsKCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIG11bHRpcGx5KGxvbmcgbGlzdFtdLGxvbmcgYixsb25nIGMsaW50IHMsIGludCBudW0pCgl7CgkJZm9yKGludCBpPXM7aTxudW07aSsrKQoJCXsKCQkJbGlzdFtpXT1tdWxtb2QobGlzdFtpXSxiLGMpOwoJCX0KCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIHJldmVyc2UobG9uZyBsaXN0W10sbG9uZyBjLGludCBzLGludCBudW0pCgl7IGludCB0bz1udW0saj1udW0tMTsKICAgICAgICB3aGlsZShzPGopCiAgICAgICAgeyAKICAgICAgICAgbG9uZyB0ZW1wID0gbGlzdFtzXSVjOwogICAgICAgICBsaXN0W3NdPWxpc3Rbal0lYzsKICAgICAgICAgbGlzdFtqXT10ZW1wOwogICAgICAgICBzKys7CiAgICAgICAgIGotLTsKICAgICAgICB9Cgl9CgkKCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJCS8vQnVmZmVyZWRSZWFkZXIgYnIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwoJCVNjYW5uZXIgaW4gPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoJCS8vaW50IHRlc3QgPSBJbnRlZ2VyLnBhcnNlSW50KGJyLnJlYWRMaW5lKCkpOwoJCWludCB0ZXN0ID0gaW4ubmV4dEludCgpOwoJCXdoaWxlKHRlc3QtLT4wKQoJCXsKCQkJLy9pbnQgbnVtID0gSW50ZWdlci5wYXJzZUludChici5yZWFkTGluZSgpKTsKCQkJaW50IG51bSA9IGluLm5leHRJbnQoKTsKCQkJbG9uZyBsaXN0W10gPSBuZXcgbG9uZ1tudW0rMV07CgkJCWludCBpLGo7CgkJCWZvcihpPTA7aTxudW07aSsrKQoJCQl7CgkJCQlsaXN0W2ldPSBpbi5uZXh0TG9uZygpOwoJCQl9CgkJCWxvbmcgYSA9IGluLm5leHRMb25nKCk7CgkJCWxvbmcgYj0gaW4ubmV4dExvbmcoKTsKCQkJbG9uZyBjPWluLm5leHRMb25nKCk7CgkJCVN0cmluZyBzPSBpbi5uZXh0KCk7CgkJCWZvcihpPTA7aTxudW07aSsrKQoJCQl7CgkJCQlpZihzLmNoYXJBdChpKT09J1InKQoJCQkJcmV2ZXJzZShsaXN0LGMsaSxudW0pOwoJCQkJZWxzZSBpZihzLmNoYXJBdChpKT09J0EnKQoJCQkJYWRkKGxpc3QsYSxjLGksbnVtKTsKCQkJCWVsc2UgaWYocy5jaGFyQXQoaSk9PSdNJykKCQkJCW11bHRpcGx5KGxpc3QsYixjLGksbnVtKTsKCQkJfQoJCSAgICBmb3IoaT0wO2k8bnVtO2krKykKCQkgICAgewoJCSAgICAJU3lzdGVtLm91dC5wcmludCgobGlzdFtpXSVjKSArICIgIik7CgkJICAgIH0KCQkgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKCQl9CgkJCgl9Cn0g