#include <bits/stdc++.h>
using namespace std;
long long N, Q;
long long a[200005], b[200005];
long long dif[200005];
long long pseg[1 << 19];
void pinit() {
  for (int i = 0; i < (1 << 19); i++) pseg[i] = 1000000000000000000;
}
void pupdate(long long k, long long val) {
  k += 1 << 18;
  pseg[k] = val;
  while (k > 1) {
    k /= 2;
    pseg[k] = min(pseg[2 * k], pseg[2 * k + 1]);
  }
}
long long pquery(long long a, long long b, long long k, long long l,
                 long long r) {
  if (r < a || b < l) return 1000000000000000000;
  if (a <= l && r <= b) return pseg[k];
  long long lval = pquery(a, b, k * 2, l, (l + r) / 2);
  long long rval = pquery(a, b, k * 2 + 1, (l + r) / 2 + 1, r);
  return min(lval, rval);
}
long long nseg[1 << 19];
void ninit() {
  for (int i = 0; i < (1 << 19); i++) nseg[i] = -1000000000000000000;
}
void nupdate(long long k, long long val) {
  k += 1 << 18;
  nseg[k] = val;
  while (k > 1) {
    k /= 2;
    nseg[k] = max(nseg[2 * k], nseg[2 * k + 1]);
  }
}
long long nquery(long long a, long long b, long long k, long long l,
                 long long r) {
  if (r < a || b < l) return -1000000000000000000;
  if (a <= l && r <= b) return nseg[k];
  long long lval = nquery(a, b, k * 2, l, (l + r) / 2);
  long long rval = nquery(a, b, k * 2 + 1, (l + r) / 2 + 1, r);
  return max(lval, rval);
}
int main(void) {
  pinit(), ninit();
  cin >> N >> Q;
  for (int i = 1; i <= 2 * N; i++) cin >> a[i];
  for (int i = 1; i <= 2 * N; i++) cin >> b[i];
  long long asum = 0;
  for (int i = 1; i <= 2 * N; i++) {
    asum += a[i];
    dif[i] = b[i] - a[i];
  }
  long long pcnt = 0, psum = 0;
  for (int i = 2; i <= 2 * N - 1; i++) {
    if (dif[i] >= 0) {
      pupdate(i, dif[i]);
      pcnt++;
      psum += dif[i];
    } else
      nupdate(i, dif[i]);
  }
  long long p, x, y;
  for (int q = 0; q < Q; q++) {
    cin >> p >> x >> y;
    if (p == 1 || p == 2 * N) {
      asum = asum - a[p] + x;
      continue;
    }
    if (dif[p] >= 0 && y - x < 0) pcnt--;
    if (dif[p] < 0 && y - x >= 0) pcnt++;
    asum = asum - a[p] + x;
    a[p] = x;
    if (dif[p] >= 0) {
      pupdate(p, 1000000000000000000);
      psum -= dif[p];
    } else
      nupdate(p, -1000000000000000000);
    dif[p] = y - x;
    if (dif[p] >= 0) {
      pupdate(p, dif[p]);
      psum += dif[p];
    } else
      nupdate(p, dif[p]);
    long long ans;
    if (pcnt % 2 == 0)
      ans = asum + psum;
    else {
      ans = max(asum + psum + nquery(2, 2 * N - 1, 1, 0, (1 << 18) - 1),
                asum + psum - pquery(2, 2 * N - 1, 1, 0, (1 << 18) - 1));
    }
    cout << ans << endl;
  }
  return 0;
}
