#include<bits/stdc++.h>
using namespace std;
long long n,t,m,op,x,y,k,a[200010];
void build1(long long x,long long y,long long k){
for(long long i=x;i<=y;i++){
a[i]*=k;
a[i]%=m;
}
}
void build2(long long x,long long y,long long k){
for(long long i=x;i<=y;i++){
a[i]+=k;
a[i]%=m;
}
}
long long change(long long x,long long y){
long long sum=0;
for(long long i=y;i>=x;i--){
sum+=a[i];
sum%=m;
}
sum%=m;
return sum;
}
int main(){
cin>>n>>t>>m;
for(long long i=1;i<=n;i++){
cin>>a[i];
}
while(t--){
cin>>op>>x>>y;
if(op==1){
cin>>k;
build1(x,y,k);
}else if(op==2){
cin>>k;
build2(x,y,k);
}else{
cout<<change(x,y)<<"\n";
}
}
return 0;
}