WA on 33,69……
#include<cstdio>
#include<algorithm>
int n,m,a[4][500005];
long long l1[500005],l2[500005],ans=-1e18;
struct node{
int l,r,v;
void in(){
scanf("%d%d%d",&l,&r,&v);
}
}con[500005];
long long sgt[8000005],smax[8000005],tag[8000005];
bool cmr(node d,node z){
return d.r<z.r;
}
void build(int l=1,int r=n,int o=1){
sgt[o]=smax[o]=-1e18;
if(l==r)return;
int mid=(l+r)>>1;
build(l,mid,o*2);
build(mid+1,r,o*2+1);
}
void push_down(int o){
sgt[o*2]+=tag[o],tag[o*2]+=tag[o],smax[o*2]=std::max(smax[o*2],sgt[o*2]);
sgt[o*2+1]+=tag[o],tag[o*2+1]+=tag[o],tag[o]=0,smax[o*2+1]=std::max(smax[o*2+1],sgt[o*2+1]);
}
void fix(int x,long long v,int l=1,int r=n,int o=1){//printf("%d %d\n",l,r);
if(l==r){
sgt[o]=std::max(sgt[o],v);smax[o]=std::max(smax[o],v);
return;
}
int mid=(l+r)>>1;
push_down(o);
if(x<=mid)fix(x,v,l,mid,o*2);
else fix(x,v,mid+1,r,o*2+1);
sgt[o]=std::max(sgt[o*2],sgt[o*2+1]);
smax[o]=std::max(smax[o],sgt[o]);
}
void add(int ll,int rr,long long v,int l=1,int r=n,int o=1){
if(ll>rr)return;
if(l!=r)push_down(o);
if(l>=ll&&r<=rr){
sgt[o]+=v;
tag[o]+=v;
smax[o]=std::max(smax[o],sgt[o]);
return;
}
int mid=(l+r)>>1;
if(ll<=mid)add(ll,rr,v,l,mid,o*2);
if(rr>mid)add(ll,rr,v,mid+1,r,o*2+1);
sgt[o]=std::max(sgt[o*2],sgt[o*2+1]);
smax[o]=std::max(smax[o],sgt[o]);
}
long long qu(int ll,int rr,int l=1,int r=n,int o=1){//printf("%d %d\n",l,r);
if(l!=r)push_down(o);
if(l>=ll&&r<=rr)return smax[o];
int mid=(l+r)>>1;long long ans=-1e18;
if(ll<=mid)ans=qu(ll,rr,l,mid,o*2);
if(rr>mid)ans=std::max(ans,qu(ll,rr,mid+1,r,o*2+1));
return ans;
}
long long qu2(int ll,int rr,int l=1,int r=n,int o=1){
if(l!=r)push_down(o);
if(l>=ll&&r<=rr)return sgt[o];
int mid=(l+r)>>1;long long ans=-1e18;
if(ll<=mid)ans=qu2(ll,rr,l,mid,o*2);
if(rr>mid)ans=std::max(ans,qu2(ll,rr,mid+1,r,o*2+1));
return ans;
}
void init1(){
std::sort(con+1,con+m+1,cmr);
int pos=0;
build();
for(int i=1;i<=n;i++){
fix(i,l1[i]+a[2][i]+l2[i]);
add(1,i-1,a[2][i]-a[3][i-1]);//if(i>1)printf("%lld]]",qu(1,3));
while(con[pos+1].r==i){
pos++;//printf("%d %d::",con[pos].l,i);
long long nowans=qu(con[pos].l,i)-con[pos].v;
ans=std::max(ans,nowans);
if(i!=n){
fix(i+1,qu2(con[pos].l,i)-con[pos].v+a[2][i+1]-a[3][i]);
}
}
}
}
int main(){
// freopen("seg.in","r",stdin);
// freopen("seg.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[1][i]),l1[i]=a[1][i]+l1[i-1];
for(int i=1;i<=n;i++)scanf("%d",&a[2][i]);
for(int i=1;i<=n;i++)scanf("%d",&a[3][i]);
for(int i=n;i;i--)l2[i]=l2[i+1]+a[3][i];
for(int i=1;i<=m;i++)con[i].in();
init1();
printf("%lld",ans);
}