#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
struct ST {
  int l, r;
  long long 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;
    modify(1, p);
    printf("%lld\n", t[1].a + 1ll * (a[1] + a[n]));
  }
  return 0;
}
