#include<bits/stdc++.h>
using namespace std;
int w[1232322];
int a[1233222];
void build(int id,int l,int r){
if(l==r){
w[id]=a[l];
return ;
}
int mid=l+r>>1;
build(id<<1,l,mid);
build(id<<1|1,mid+1,r);
w[id]=w[id*2]+w[id*2+1];
}
int find(int id,int l,int r,int L,int R){
if(l==L&&R==r){
return w[id];
}
int mid=l+r>>1;
if(R<=mid) return find(id<<1,l,mid,L,R);
else if(L>mid) return find(id<<1|1,mid+1,r,L,R);
else return find(id<<1,l,mid,L,mid)+find(id*2+1,mid+1,r,mid+1,R);
}
void add(int id,int l,int r,int pos,int c){
if(l==r) {
w[id]+=c;
return;
}
int mid=l+r>>1;
if(pos<=mid) add(id*2,l,mid,pos,c);
else add(id<<1|1,mid+1,r,pos,c);
w[id]=w[id*2]+w[id*2+1];
}
int n;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
int m;
cin>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
build(1,1,n);
while(m--){
int op;
cin>>op;
int x,y;
cin>>x>>y;
if(op==2){
cout<<find(1,1,n,x,y)<<endl;
}
else{
int c;
cin>>c;
for(int i=x;i<=y;i++){
add(1,1,n,i,c);
}
}
}
}
/*
5
1 1 1 1 1
3
1 1 2
1 1 3
1 2 4
*/