#include <bits/stdc++.h>
using namespace std;
int main() {
int N,Q;
cin >> N>>Q;
deque<long long int> D;
long long int arr[N];
long long int K;
for(int i=0;i<N;i++){
cin >>K;
D.push_back(K);
}
long long int num;
while(Q--){
cin >> num;
if(num==1){
long long int temp=D.front();
D.pop_front();
D.push_back(temp);
}else if(num==2){
long long int temp=D.back();
D.pop_back();
D.push_front(temp);
}else if(num==3){
int a,b,c;
cin>>a>>b>>c;
for(int i=0;i<N;i++){
arr[i]=D.front();
D.pop_front();
if(a<=i+1 && i+1<=b){
arr[i]+=c;
}
D.push_back(arr[i]);
}
}else{
int a,b;
cin>>a>>b;
long long int ans=0;
for(int i=0;i<N;i++){
arr[i]=D.front();
D.pop_front();
if(a<=i+1 && i+1<=b){
ans+=arr[i];
}
D.push_back(arr[i]);
}cout <<ans<< '\n';
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWludCBOLFE7CgljaW4gPj4gTj4+UTsKCWRlcXVlPGxvbmcgbG9uZyBpbnQ+IEQ7Cglsb25nIGxvbmcgaW50IGFycltOXTsKCWxvbmcgbG9uZyBpbnQgSzsKCWZvcihpbnQgaT0wO2k8TjtpKyspewoJCWNpbiA+Pks7CgkJRC5wdXNoX2JhY2soSyk7Cgl9Cglsb25nIGxvbmcgaW50IG51bTsKCXdoaWxlKFEtLSl7CgkJY2luID4+IG51bTsKCQlpZihudW09PTEpewoJCQlsb25nIGxvbmcgaW50IHRlbXA9RC5mcm9udCgpOwoJCQlELnBvcF9mcm9udCgpOwoJCQlELnB1c2hfYmFjayh0ZW1wKTsKCQl9ZWxzZSBpZihudW09PTIpewoJCQlsb25nIGxvbmcgaW50IHRlbXA9RC5iYWNrKCk7CgkJCUQucG9wX2JhY2soKTsKCQkJRC5wdXNoX2Zyb250KHRlbXApOwoJCX1lbHNlIGlmKG51bT09Myl7CgkJCWludCBhLGIsYzsKCQkJY2luPj5hPj5iPj5jOwoJCQlmb3IoaW50IGk9MDtpPE47aSsrKXsKCQkJCWFycltpXT1ELmZyb250KCk7CgkJCQlELnBvcF9mcm9udCgpOwoJCQkJaWYoYTw9aSsxICYmIGkrMTw9Yil7CgkJCQkJYXJyW2ldKz1jOwoJCQkJfQoJCQkJRC5wdXNoX2JhY2soYXJyW2ldKTsKCQkJfQoJCX1lbHNlewoJCQlpbnQgYSxiOwoJCQljaW4+PmE+PmI7CgkJCWxvbmcgbG9uZyBpbnQgYW5zPTA7CgkJCWZvcihpbnQgaT0wO2k8TjtpKyspewoJCQkJYXJyW2ldPUQuZnJvbnQoKTsKCQkJCUQucG9wX2Zyb250KCk7CgkJCQlpZihhPD1pKzEgJiYgaSsxPD1iKXsKCQkJCQlhbnMrPWFycltpXTsKCQkJCX0KCQkJCUQucHVzaF9iYWNrKGFycltpXSk7CgkJCX1jb3V0IDw8YW5zPDwgJ1xuJzsKCQl9Cgl9Cn0=