#include <iostream>
#include <string.h>
#include <vector>
#include <set>
using namespace std;
struct E{
long long int num,no;
bool commit;
};
struct E2{
int l,r,x,y,z;
};
const int maxS=600000;
int R=262143;
int no0=0;
vector<E2> copyData;
vector<long long int> areaSum;
E segA[maxS];
long long int fSegASet(int no,int p1,int l2,int r2,long long int num){
if(r2<p1 || p1<l2)return segA[no].num;
if(l2==r2){
segA[no].num=num;
return segA[no].num;
}
int m=(l2+r2)/2;
long long int res=fSegASet(no*2+1,p1,l2,m,num);
res+=fSegASet(no*2+2,p1,m+1,r2,num);
segA[no].num=res;
return res;
}
long long int calc(int no,int no2,int no3,int l,int r,int l2,int r2,bool commit){
//cout<<"<"<<commit<<" "<<no<<",no2="<<no2<<",no3="<<no3<<",l="<<l<<",r="<<r<<","<<l2<<","<<r2<<",>";
if(commit==true){
//cout<<1<<" "<<segA[no].num<<endl;
if(l2==4 && r2==5){
cout<<"?1>"<<segA[no].num<<endl;
}
return segA[no].num;
}else{
E2 e2=copyData[no2];
if(e2.x<=l2 && r2<=e2.x+e2.z){
int l3=e2.y+(l2-e2.x+1);
int r3=l3+(r2-l2)+1;
long long int t=areaSum[r3]-areaSum[l3];
if(l2==4 && r2==5){
cout<<"?2>"<<t<<endl;
}
return t;
}
e2=copyData[no3];
//cout<<3<<e2.x<<" "<<e2.z<<endl;
long long int t=areaSum[e2.x+e2.z]-areaSum[e2.x];
if(l2==4 && r2==5){
cout<<"?3>"<<t<<endl;
}
return t;
}
}
long long int fSegACalcAns(int no,int l,int r,int l2,int r2,int no2,bool commit){
commit=commit && segA[no].commit;
no2=(no2<segA[no].no)?segA[no].no:no2;
long long int res=calc(no,no2,no2,l,r,l2,r2,commit);
if(r2<l || r<l2)return 0;
if(l2==r2){
return res;
}
if(l<=l2 && r2<=r){
return res;
}else{
int m=(l2+r2)/2;
res=fSegACalcAns(no*2+1,l,r,l2,m,no2,commit);
res+=fSegACalcAns(no*2+2,l,r,m+1,r2,no2,commit);
return res;
}
}
long long int fSegAUpData(int no,int l,int r,int l2,int r2,int no2,int no3,bool commit){
commit=commit && segA[no].commit;
no3=(no3<segA[no].no)?segA[no].no:no3;
long long int res=calc(no,no2,no3,l,r,l2,r2,commit);
if(r2<l || r<l2)return res;
res=calc(no,no2,no3,l,r,l2,r2,false);
segA[no].commit=true;
if(l2==r2){
segA[no].no=no0;
segA[no].num=res;
segA[no].commit=true;
return res;
}
if(l<=l2 && r2<=r){
segA[no].no=no0;
segA[no].num=res;
segA[no].commit=true;
segA[no*2+1].commit=false;
segA[no*2+2].commit=false;
return res;
}else{
int m=(l2+r2)/2;
res=fSegAUpData(no*2+1,l,r,l2,m,no2,no3,commit);
res+=fSegAUpData(no*2+2,l,r,m+1,r2,no2,no3,commit);
segA[no].num=res;
segA[no].commit=true;
return res;
}
}
int main() {
for(int i=0;i<maxS;i++){
segA[i].num=0;
segA[i].no=-1;
segA[i].commit=true;
}
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++){
long long int num;
cin>>num;
fSegASet(0,i,0,R,num);
}
areaSum.push_back(0);
long long int sum=0;
for(int i=0;i<n;i++){
long long int num;
cin>>num;
sum+=num;
areaSum.push_back(sum);
}
for(int i=0;i<maxS;i++){
areaSum.push_back(sum);
}
for(int i=0;i<m;i++){
int c1,l,r,x,y,z;
cin>>c1;
if(c1==0){
cin>>x>>y>>z;
E2 e2;
e2.l=y-1;
e2.r=y-2+z;
e2.x=x-1;
e2.y=y-1;
e2.z=z;
l=x-1;
r=x-2+z;
copyData.push_back(e2);
fSegAUpData(0,l,r,0,R,no0,-1,true);
no0++;
}else{
cin>>l>>r;
l--;
r--;
long long int t=fSegACalcAns(0,l,r,0,R,-1,true);
cout<<t<<endl;
}
//for(int i=0;i<maxS;i++){
//cout<<"("<<i<<","<<segA[i].num<<")";
//}
//cout<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxzZXQ+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgRXsKCWxvbmcgbG9uZyBpbnQgbnVtLG5vOwoJYm9vbCBjb21taXQ7Cn07CnN0cnVjdCBFMnsKCWludCBsLHIseCx5LHo7Cn07CmNvbnN0IGludCBtYXhTPTYwMDAwMDsKaW50IFI9MjYyMTQzOwppbnQgbm8wPTA7CnZlY3RvcjxFMj4gY29weURhdGE7CnZlY3Rvcjxsb25nIGxvbmcgaW50PiBhcmVhU3VtOwpFIHNlZ0FbbWF4U107Cgpsb25nIGxvbmcgaW50IGZTZWdBU2V0KGludCBubyxpbnQgcDEsaW50IGwyLGludCByMixsb25nIGxvbmcgaW50IG51bSl7CglpZihyMjxwMSB8fCBwMTxsMilyZXR1cm4gc2VnQVtub10ubnVtOwoJaWYobDI9PXIyKXsKCQlzZWdBW25vXS5udW09bnVtOwoJCXJldHVybiBzZWdBW25vXS5udW07Cgl9CglpbnQgbT0obDIrcjIpLzI7Cglsb25nIGxvbmcgaW50IHJlcz1mU2VnQVNldChubyoyKzEscDEsbDIsbSxudW0pOwoJcmVzKz1mU2VnQVNldChubyoyKzIscDEsbSsxLHIyLG51bSk7CglzZWdBW25vXS5udW09cmVzOwoJcmV0dXJuIHJlczsKfQoKbG9uZyBsb25nIGludCBjYWxjKGludCBubyxpbnQgbm8yLGludCBubzMsaW50IGwsaW50IHIsaW50IGwyLGludCByMixib29sIGNvbW1pdCl7CgkvL2NvdXQ8PCI8Ijw8Y29tbWl0PDwiICI8PG5vPDwiLG5vMj0iPDxubzI8PCIsbm8zPSI8PG5vMzw8IixsPSI8PGw8PCIscj0iPDxyPDwiLCI8PGwyPDwiLCI8PHIyPDwiLD4iOwoJCglpZihjb21taXQ9PXRydWUpewoJCS8vY291dDw8MTw8IiAiPDxzZWdBW25vXS5udW08PGVuZGw7CgkJaWYobDI9PTQgJiYgcjI9PTUpewoJCQljb3V0PDwiPzE+Ijw8c2VnQVtub10ubnVtPDxlbmRsOwoJCX0KCQlyZXR1cm4gc2VnQVtub10ubnVtOwoJfWVsc2V7CgkJRTIgZTI9Y29weURhdGFbbm8yXTsKCQlpZihlMi54PD1sMiAmJiByMjw9ZTIueCtlMi56KXsKCQkJaW50IGwzPWUyLnkrKGwyLWUyLngrMSk7CgkJCWludCByMz1sMysocjItbDIpKzE7CgkJCWxvbmcgbG9uZyBpbnQgdD1hcmVhU3VtW3IzXS1hcmVhU3VtW2wzXTsKCQkJaWYobDI9PTQgJiYgcjI9PTUpewoJCQkJY291dDw8Ij8yPiI8PHQ8PGVuZGw7CgkJCX0KCQkJcmV0dXJuIHQ7CgkJfQoJCWUyPWNvcHlEYXRhW25vM107CgkJLy9jb3V0PDwzPDxlMi54PDwiICI8PGUyLno8PGVuZGw7CgkJCgkJbG9uZyBsb25nIGludCB0PWFyZWFTdW1bZTIueCtlMi56XS1hcmVhU3VtW2UyLnhdOwoJCWlmKGwyPT00ICYmIHIyPT01KXsKCQkJY291dDw8Ij8zPiI8PHQ8PGVuZGw7CgkJfQoJCXJldHVybiB0OwoJfQp9CgoKbG9uZyBsb25nIGludCBmU2VnQUNhbGNBbnMoaW50IG5vLGludCBsLGludCByLGludCBsMixpbnQgcjIsaW50IG5vMixib29sIGNvbW1pdCl7Cgljb21taXQ9Y29tbWl0ICYmIHNlZ0Fbbm9dLmNvbW1pdDsKCW5vMj0obm8yPHNlZ0Fbbm9dLm5vKT9zZWdBW25vXS5ubzpubzI7Cglsb25nIGxvbmcgaW50IHJlcz1jYWxjKG5vLG5vMixubzIsbCxyLGwyLHIyLGNvbW1pdCk7CglpZihyMjxsIHx8IHI8bDIpcmV0dXJuIDA7CgoJaWYobDI9PXIyKXsKCgkJcmV0dXJuIHJlczsKCX0KCWlmKGw8PWwyICYmIHIyPD1yKXsKCQlyZXR1cm4gcmVzOwoJfWVsc2V7CgkJaW50IG09KGwyK3IyKS8yOwoJCXJlcz1mU2VnQUNhbGNBbnMobm8qMisxLGwscixsMixtLG5vMixjb21taXQpOwoJCXJlcys9ZlNlZ0FDYWxjQW5zKG5vKjIrMixsLHIsbSsxLHIyLG5vMixjb21taXQpOwoJCXJldHVybiByZXM7Cgl9Cn0KCmxvbmcgbG9uZyBpbnQgZlNlZ0FVcERhdGEoaW50IG5vLGludCBsLGludCByLGludCBsMixpbnQgcjIsaW50IG5vMixpbnQgbm8zLGJvb2wgY29tbWl0KXsKCWNvbW1pdD1jb21taXQgJiYgc2VnQVtub10uY29tbWl0OwoJbm8zPShubzM8c2VnQVtub10ubm8pP3NlZ0Fbbm9dLm5vOm5vMzsKCWxvbmcgbG9uZyBpbnQgcmVzPWNhbGMobm8sbm8yLG5vMyxsLHIsbDIscjIsY29tbWl0KTsKCWlmKHIyPGwgfHwgcjxsMilyZXR1cm4gcmVzOwoJcmVzPWNhbGMobm8sbm8yLG5vMyxsLHIsbDIscjIsZmFsc2UpOwoJc2VnQVtub10uY29tbWl0PXRydWU7CgoJaWYobDI9PXIyKXsKCgkJc2VnQVtub10ubm89bm8wOwoJCXNlZ0Fbbm9dLm51bT1yZXM7CgkJc2VnQVtub10uY29tbWl0PXRydWU7CgkJcmV0dXJuIHJlczsKCX0KCWlmKGw8PWwyICYmIHIyPD1yKXsKCQlzZWdBW25vXS5ubz1ubzA7CgkJc2VnQVtub10ubnVtPXJlczsKCQlzZWdBW25vXS5jb21taXQ9dHJ1ZTsKCQlzZWdBW25vKjIrMV0uY29tbWl0PWZhbHNlOwoJCXNlZ0Fbbm8qMisyXS5jb21taXQ9ZmFsc2U7CgkJcmV0dXJuIHJlczsKCX1lbHNlewoJCWludCBtPShsMityMikvMjsKCQlyZXM9ZlNlZ0FVcERhdGEobm8qMisxLGwscixsMixtLG5vMixubzMsY29tbWl0KTsKCQlyZXMrPWZTZWdBVXBEYXRhKG5vKjIrMixsLHIsbSsxLHIyLG5vMixubzMsY29tbWl0KTsKCQlzZWdBW25vXS5udW09cmVzOwoJCXNlZ0Fbbm9dLmNvbW1pdD10cnVlOwoJCXJldHVybiByZXM7Cgl9Cn0KCmludCBtYWluKCkgewoJZm9yKGludCBpPTA7aTxtYXhTO2krKyl7CgkJc2VnQVtpXS5udW09MDsKCQlzZWdBW2ldLm5vPS0xOwoJCXNlZ0FbaV0uY29tbWl0PXRydWU7Cgl9CglpbnQgbixtOwoJY2luPj5uPj5tOwoJZm9yKGludCBpPTA7aTxuO2krKyl7CgkJbG9uZyBsb25nIGludCBudW07CgkJY2luPj5udW07CgkJZlNlZ0FTZXQoMCxpLDAsUixudW0pOwoJfQoJYXJlYVN1bS5wdXNoX2JhY2soMCk7Cglsb25nIGxvbmcgaW50IHN1bT0wOwoJZm9yKGludCBpPTA7aTxuO2krKyl7CgkJbG9uZyBsb25nIGludCBudW07CgkJY2luPj5udW07CgkJc3VtKz1udW07CgkJYXJlYVN1bS5wdXNoX2JhY2soc3VtKTsKCX0KCWZvcihpbnQgaT0wO2k8bWF4UztpKyspewoJCWFyZWFTdW0ucHVzaF9iYWNrKHN1bSk7Cgl9CgkKCWZvcihpbnQgaT0wO2k8bTtpKyspewoJCWludCBjMSxsLHIseCx5LHo7CgkJY2luPj5jMTsKCQlpZihjMT09MCl7CgkJCWNpbj4+eD4+eT4+ejsKCQkJRTIgZTI7CgkJCWUyLmw9eS0xOwoJCQllMi5yPXktMit6OwoJCQllMi54PXgtMTsKCQkJZTIueT15LTE7CgkJCWUyLno9ejsKCQkJbD14LTE7CgkJCXI9eC0yK3o7CgkJCWNvcHlEYXRhLnB1c2hfYmFjayhlMik7CgkJCWZTZWdBVXBEYXRhKDAsbCxyLDAsUixubzAsLTEsdHJ1ZSk7CgkJCW5vMCsrOwoJCX1lbHNlewoJCQljaW4+Pmw+PnI7CgkJCWwtLTsKCQkJci0tOwoJCQlsb25nIGxvbmcgaW50IHQ9ZlNlZ0FDYWxjQW5zKDAsbCxyLDAsUiwtMSx0cnVlKTsKCQkJY291dDw8dDw8ZW5kbDsKCQl9CgkJLy9mb3IoaW50IGk9MDtpPG1heFM7aSsrKXsKCQkJLy9jb3V0PDwiKCI8PGk8PCIsIjw8c2VnQVtpXS5udW08PCIpIjsKCQkvL30KCS8vY291dDw8ZW5kbDsKCX0KCXJldHVybiAwOwp9