#include<bits/stdc++.h>
using namespace std;
long long n,m,p,q,a[50005],c[50005];
long long f(long long a,long long b){
long long ans=1;
while(b){
if(b&1)ans*=a;
b>>=1;
a*=a;
}
return ans;
}
int main(){
freopen("verbinden.in","r",stdin);
freopen("verbinden.out","w",stdout);
cin>>n>>m>>p>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
a[i]+=a[i-1];
}
for(int i=1;i<=m;i++){
int g,l,r;
cin>>g>>l>>r;
if(g){
cout<<(a[r]-a[l-1])%p<<endl;
}else{
for(int j=l;j<=r;j++){
int v=f(q,a[j]-a[j-1])-a[j]+a[j-1];
for(int k=j;k<=n;k++){
a[k]+=v;
}
}
}
}
return 0;
}