#include<bits/stdc++.h>
using namespace std;
int n,p,x[1000000],a[1000000],m,y,z=0;
struct add{
int num;
int t,g,c;
}add[1000000];
int main(){
cin>>n>>p;
for(int i=1;i<=n;i++){
cin>>x[i];
x[i]%=p;
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>add[i].num>>add[i].t>>add[i].g;
if(add[i].num!=3) cin>>add[i].c;
}
for(int i=1;i<=n;i++){
if(add[i].num==1){
for(int j=add[i].t;j<=add[i].g;j++){
x[j]=x[j]*add[i].c%p;
}
}
else if(add[i].num==2){
for(int j=add[i].t;j<=add[i].g;j++){
x[j]=(x[j]+add[i].c)%p;
}
}
else{
for(int j=add[i].t;j<=add[i].g;j++){
y+=x[j];
y%=p;
}
z++;
a[z]=y;
y=0;
}
}
for(int i=1;i<=z;i++){
if(a[i]) cout<<a[i]<<endl;
}
return 0;
}