#include <bits/stdc++.h>
using namespace std;
long long inf = 1000000000000000000;
long long dat[800010];
long long u;
void seginit(long long n) {
  for (int i = 0;; i++) {
    long long y = pow(2, i);
    if (y >= n) {
      u = y;
      break;
    }
  }
  fill(dat, dat + 2 * u, inf);
}
void add(long long n, long long x) {
  long long i = n + u - 1;
  dat[i] = x;
  while (i > 0) {
    i = (i - 1) / 2;
    dat[i] = min(dat[2 * i + 1], dat[i * 2 + 2]);
  }
}
long long que(long long a, long long b, long long k, long long l, long long r) {
  if (a >= r || b <= l) return inf;
  if (a <= l && b >= r) return dat[k];
  long long m1 = que(a, b, 2 * k + 1, l, (l + r) / 2);
  long long m2 = que(a, b, 2 * k + 2, (l + r) / 2, r);
  return min(m1, m2);
}
int main() {
  long long n, q;
  cin >> n >> q;
  seginit(2 * n);
  long long a[2 * n], b[2 * n];
  for (int i = 0; i < 2 * n; i++) cin >> a[i];
  long long sum = 0;
  long long c = 0;
  long long z = 0;
  for (int i = 0; i < 2 * n; i++) {
    cin >> b[i];
    if (i == 0 || i == 2 * n - 1) {
      sum += a[i];
    } else {
      if (a[i] >= b[i]) {
        sum += a[i];
        add(i, a[i] - b[i]);
        if (a[i] == b[i]) z++;
      } else {
        c = (c + 1) % 2;
        sum += b[i];
        add(i, b[i] - a[i]);
      }
    }
  }
  for (int i = 0; i < q; i++) {
    long long p, x, y;
    cin >> p >> x >> y;
    p--;
    if (p == 0 || p == 2 * n - 1) {
      sum += -a[p] + x;
      long long g = 0;
      if (c == 1) {
        g = que(1, 2 * n - 1, 0, 0, 2 * n);
      }
      cout << sum - g << endl;
      continue;
    }
    if (((a[p] - b[p]) >= 0 && x < y) || ((a[p] - b[p]) < 0 && x >= y)) {
      c = (c + 1) % 2;
    }
    sum += -max(a[p], b[p]) + max(x, y);
    add(p, abs(x - y));
    if (a[p] == b[p]) z--;
    if (x == y) z++;
    a[p] = x;
    b[p] = y;
    if (z > 0) {
      cout << sum << endl;
      c = 0;
      continue;
    }
    long long f = 0;
    if (c == 1) {
      f = que(1, 2 * n - 1, 0, 0, 2 * n);
    }
    cout << sum - f << endl;
  }
}
