#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#define ll long long
using namespace std;

const int N=200005;

struct ST{
	int l,r;
	ll a,b;
}t[N<<2];
int n,T,p,x,y;
int a[N],b[N];

void update(int k){
	t[k].a=max(t[k<<1].a+t[k<<1|1].a,t[k<<1].b+t[k<<1|1].b);
	t[k].b=max(t[k<<1].a+t[k<<1|1].b,t[k<<1].b+t[k<<1|1].a);
}

void build(int k,int l,int r){
	t[k].l=l; t[k].r=r;
	if (l==r){
		t[k].a=1ll*a[l];
		t[k].b=1ll*b[l];
		return;
	}
	int mid=(l+r)>>1;
	build(k<<1,l,mid);
	build(k<<1|1,mid+1,r);
	update(k);
}

void modify(int k,int p){
	if (t[k].l==t[k].r){
		t[k].a=1ll*a[p];
		t[k].b=1ll*b[p];
		return;
	}
	int mid=(t[k].l+t[k].r)>>1;
	if (p<=mid) modify(k<<1,p);
	else modify(k<<1|1,p);
	update(k);
}

int main(){
	int i;
	scanf("%d%d",&n,&T);
	n<<=1;
	for (i=1;i<=n;i++) scanf("%d",&a[i]);
	for (i=1;i<=n;i++) scanf("%d",&b[i]);
	if (n==2){
		while (T--){
			scanf("%d%d%d",&p,&x,&y);
			a[p]=x; b[p]=y;
			printf("%d\n",a[1]+a[2]);
		}
		return 0;
	}
	build(1,2,n-1);
	while (T--){
		scanf("%d%d%d",&p,&x,&y);
		a[p]=x; b[p]=y;
		if (p>1&&p<n) modify(1,p);
		printf("%lld\n",t[1].a+1ll*(a[1]+a[n]));
	}
	return 0;
} 