#include <iostream>
#include <string.h>
#include <vector>
#include <set>
using namespace std;
//堀江伸一 会津大学オンラインジャッジ問0437 Copy and Sum 合格コード。めっちゃ試行錯誤した
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;
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);
int r3=l3+(r2-l2)+1;
long long int t=areaSum[r3]-areaSum[l3];
return t;
}
e2=copyData[no3];
//cout<<3<<e2.x<<" "<<e2.z<<endl;
return areaSum[e2.x+e2.z]-areaSum[e2.x];
}
}
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;
segA[no].commit=commit;
long long int res=calc(no,no2,no2,l,r,l2,r2,commit);
if(r2<l || r<l2){
return 0;
}
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;
segA[no].commit=commit;
long long int res=calc(no,no3,no3,l,r,l2,r2,commit);
if(r2<l || r<l2){
return res;
}
res=calc(no,no2,no2,l,r,l2,r2,false);
if(l2==r2){
segA[no].no=no2;
segA[no].num=res;
return res;
}
if(l<=l2 && r2<=r){
segA[no].no=no2;
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+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8v5aCA5rGf5Ly45LiAICDkvJrmtKXlpKflrabjgqrjg7Pjg6njgqTjg7Pjgrjjg6Pjg4PjgrjllY8wNDM3IENvcHkgYW5kIFN1bSDlkIjmoLzjgrPjg7zjg4njgILjgoHjgaPjgaHjgoPoqabooYzpjK/oqqTjgZfjgZ8Kc3RydWN0IEV7Cglsb25nIGxvbmcgaW50IG51bSxubzsKCWJvb2wgY29tbWl0Owp9OwpzdHJ1Y3QgRTJ7CglpbnQgbCxyLHgseSx6Owp9Owpjb25zdCBpbnQgbWF4Uz02MDAwMDA7CmludCBSPTI2MjE0MzsKaW50IG5vMD0wOwp2ZWN0b3I8RTI+IGNvcHlEYXRhOwp2ZWN0b3I8bG9uZyBsb25nIGludD4gYXJlYVN1bTsKRSBzZWdBW21heFNdOwoKbG9uZyBsb25nIGludCBmU2VnQVNldChpbnQgbm8saW50IHAxLGludCBsMixpbnQgcjIsbG9uZyBsb25nIGludCBudW0pewoJaWYocjI8cDEgfHwgcDE8bDIpcmV0dXJuIHNlZ0Fbbm9dLm51bTsKCWlmKGwyPT1yMil7CgkJc2VnQVtub10ubnVtPW51bTsKCQlyZXR1cm4gc2VnQVtub10ubnVtOwoJfQoJaW50IG09KGwyK3IyKS8yOwoJbG9uZyBsb25nIGludCByZXM9ZlNlZ0FTZXQobm8qMisxLHAxLGwyLG0sbnVtKTsKCXJlcys9ZlNlZ0FTZXQobm8qMisyLHAxLG0rMSxyMixudW0pOwoJc2VnQVtub10ubnVtPXJlczsKCXJldHVybiByZXM7Cn0KCmxvbmcgbG9uZyBpbnQgY2FsYyhpbnQgbm8saW50IG5vMixpbnQgbm8zLGludCBsLGludCByLGludCBsMixpbnQgcjIsYm9vbCBjb21taXQpewoJLy9jb3V0PDwiPCI8PGNvbW1pdDw8IiAiPDxubzw8IixubzI9Ijw8bm8yPDwiLG5vMz0iPDxubzM8PCIsbD0iPDxsPDwiLHI9Ijw8cjw8IiwiPDxsMjw8IiwiPDxyMjw8Iiw+IjsKCQoJaWYoY29tbWl0PT10cnVlKXsKCQkvL2NvdXQ8PDE8PCIgIjw8c2VnQVtub10ubnVtPDxlbmRsOwoJCQoJCXJldHVybiBzZWdBW25vXS5udW07Cgl9ZWxzZXsKCQlFMiBlMj1jb3B5RGF0YVtubzJdOwoJCWlmKGUyLng8PWwyICYmIHIyPD1lMi54K2UyLnopewoJCQlpbnQgbDM9ZTIueSsobDItZTIueCk7CgkJCWludCByMz1sMysocjItbDIpKzE7CgkJCWxvbmcgbG9uZyBpbnQgdD1hcmVhU3VtW3IzXS1hcmVhU3VtW2wzXTsKCQkJcmV0dXJuIHQ7CgkJfQoJCWUyPWNvcHlEYXRhW25vM107CgkJLy9jb3V0PDwzPDxlMi54PDwiICI8PGUyLno8PGVuZGw7CgkJcmV0dXJuIGFyZWFTdW1bZTIueCtlMi56XS1hcmVhU3VtW2UyLnhdOwoJfQp9CgoKbG9uZyBsb25nIGludCBmU2VnQUNhbGNBbnMoaW50IG5vLGludCBsLGludCByLGludCBsMixpbnQgcjIsaW50IG5vMixib29sIGNvbW1pdCl7Cgljb21taXQ9Y29tbWl0ICYmIHNlZ0Fbbm9dLmNvbW1pdDsKCW5vMj0obm8yPHNlZ0Fbbm9dLm5vKT9zZWdBW25vXS5ubzpubzI7CglzZWdBW25vXS5jb21taXQ9Y29tbWl0OwoJbG9uZyBsb25nIGludCByZXM9Y2FsYyhubyxubzIsbm8yLGwscixsMixyMixjb21taXQpOwoJaWYocjI8bCB8fCByPGwyKXsKCQlyZXR1cm4gMDsKCX0KCglpZihsPD1sMiAmJiByMjw9cil7CgkJcmV0dXJuIHJlczsKCX1lbHNlewoJCWludCBtPShsMityMikvMjsKCQlyZXM9ZlNlZ0FDYWxjQW5zKG5vKjIrMSxsLHIsbDIsbSxubzIsY29tbWl0KTsKCQlyZXMrPWZTZWdBQ2FsY0FucyhubyoyKzIsbCxyLG0rMSxyMixubzIsY29tbWl0KTsKCQlyZXR1cm4gcmVzOwoJfQp9Cgpsb25nIGxvbmcgaW50IGZTZWdBVXBEYXRhKGludCBubyxpbnQgbCxpbnQgcixpbnQgbDIsaW50IHIyLGludCBubzIsaW50IG5vMyxib29sIGNvbW1pdCl7Cgljb21taXQ9Y29tbWl0ICYmIHNlZ0Fbbm9dLmNvbW1pdDsKCW5vMz0obm8zPHNlZ0Fbbm9dLm5vKT9zZWdBW25vXS5ubzpubzM7CglzZWdBW25vXS5jb21taXQ9Y29tbWl0OwoJbG9uZyBsb25nIGludCByZXM9Y2FsYyhubyxubzMsbm8zLGwscixsMixyMixjb21taXQpOwoJCglpZihyMjxsIHx8IHI8bDIpewoJCXJldHVybiByZXM7Cgl9CglyZXM9Y2FsYyhubyxubzIsbm8yLGwscixsMixyMixmYWxzZSk7CglpZihsMj09cjIpewoJCXNlZ0Fbbm9dLm5vPW5vMjsKCQlzZWdBW25vXS5udW09cmVzOwoJCXJldHVybiByZXM7Cgl9CglpZihsPD1sMiAmJiByMjw9cil7CgkJc2VnQVtub10ubm89bm8yOwoJCXNlZ0Fbbm9dLm51bT1yZXM7CgkJc2VnQVtub10uY29tbWl0PXRydWU7CgkJc2VnQVtubyoyKzFdLmNvbW1pdD1mYWxzZTsKCQlzZWdBW25vKjIrMl0uY29tbWl0PWZhbHNlOwoJCXJldHVybiByZXM7Cgl9ZWxzZXsKCQlpbnQgbT0obDIrcjIpLzI7CgkJcmVzPWZTZWdBVXBEYXRhKG5vKjIrMSxsLHIsbDIsbSxubzIsbm8zLGNvbW1pdCk7CgkJcmVzKz1mU2VnQVVwRGF0YShubyoyKzIsbCxyLG0rMSxyMixubzIsbm8zLGNvbW1pdCk7CgkJc2VnQVtub10ubnVtPXJlczsKCQlzZWdBW25vXS5jb21taXQ9dHJ1ZTsKCQlyZXR1cm4gcmVzOwoJfQp9CgppbnQgbWFpbigpIHsKCWZvcihpbnQgaT0wO2k8bWF4UztpKyspewoJCXNlZ0FbaV0ubnVtPTA7CgkJc2VnQVtpXS5ubz0tMTsKCQlzZWdBW2ldLmNvbW1pdD10cnVlOwoJfQoJaW50IG4sbTsKCWNpbj4+bj4+bTsKCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCWxvbmcgbG9uZyBpbnQgbnVtOwoJCWNpbj4+bnVtOwoJCWZTZWdBU2V0KDAsaSwwLFIsbnVtKTsKCX0KCWFyZWFTdW0ucHVzaF9iYWNrKDApOwoJbG9uZyBsb25nIGludCBzdW09MDsKCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCWxvbmcgbG9uZyBpbnQgbnVtOwoJCWNpbj4+bnVtOwoJCXN1bSs9bnVtOwoJCWFyZWFTdW0ucHVzaF9iYWNrKHN1bSk7Cgl9Cglmb3IoaW50IGk9MDtpPG1heFM7aSsrKXsKCQlhcmVhU3VtLnB1c2hfYmFjayhzdW0pOwoJfQoJCglmb3IoaW50IGk9MDtpPG07aSsrKXsKCQlpbnQgYzEsbCxyLHgseSx6OwoJCWNpbj4+YzE7CgkJaWYoYzE9PTApewoJCQljaW4+Png+Pnk+Pno7CgkJCUUyIGUyOwoJCQllMi5sPXktMTsKCQkJZTIucj15LTIrejsKCQkJZTIueD14LTE7CgkJCWUyLnk9eS0xOwoJCQllMi56PXo7CgkJCWw9eC0xOwoJCQlyPXgtMit6OwoJCQljb3B5RGF0YS5wdXNoX2JhY2soZTIpOwoJCQlmU2VnQVVwRGF0YSgwLGwsciwwLFIsbm8wLC0xLHRydWUpOwoJCQlubzArKzsKCQl9ZWxzZXsKCQkJY2luPj5sPj5yOwoJCQlsLS07CgkJCXItLTsKCQkJbG9uZyBsb25nIGludCB0PWZTZWdBQ2FsY0FucygwLGwsciwwLFIsLTEsdHJ1ZSk7CgkJCWNvdXQ8PHQ8PGVuZGw7CgkJfQoJCS8vZm9yKGludCBpPTA7aTxtYXhTO2krKyl7CgkJCS8vY291dDw8IigiPDxpPDwiLCI8PHNlZ0FbaV0ubnVtPDwiKSI7CgkJLy99CgkvL2NvdXQ8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==