#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e+9;
const double EPS = 1e-9;
const long long MOD = 1000000007;
const long long dx[] = {1, 0, -1, 0}, dy[] = {0, -1, 0, 1};
class RMQ {
  long long n, seg, init;
  vector<long long> dat;

 public:
  RMQ(long long siz, long long def) : n(siz), init(def), seg(1) {
    while (seg < n) seg *= 2;
    dat.resize(seg * 2 - 1);
    for (long long i = 0; i < seg * 2 - 1; i++) dat[i] = init;
  }
  void update(long long i, long long x) {
    i += seg - 1;
    dat[i] = x;
    while (i) {
      i = (i - 1) / 2;
      dat[i] = min(dat[i * 2 + 1], dat[i * 2 + 2]);
    }
  }
  long long get(long long a = 0, long long b = -1, long long k = 0,
                long long l = 0, long long r = -1) {
    if (b == -1) b = seg;
    if (r == -1) r = seg;
    if (b <= l || r <= a) return init;
    if (a <= l && r <= b) return dat[k];
    return min(get(a, b, k * 2 + 1, l, (l + r) / 2),
               get(a, b, k * 2 + 2, (l + r) / 2, r));
  }
};
signed main() {
  long long n, q, a[200000], b[200000], sum = 0, pos = 0, add = 0;
  cin >> n >> q;
  vector<RMQ> rmq(2, RMQ(n * 2, INF));
  for (long long i = 0; i < n * 2; i++) {
    cin >> a[i];
    sum += a[i];
  }
  for (long long i = 0; i < n * 2; i++) {
    cin >> b[i];
    b[i] -= a[i];
    if (!i || i == n * 2 - 1) continue;
    if (b[i] >= 0) {
      rmq[0].update(i, b[i]);
      pos++;
      add += b[i];
    } else
      rmq[1].update(i, -b[i]);
  }
  for (long long i = 0; i < q; i++) {
    long long p, x, y;
    cin >> p >> x >> y;
    p--;
    sum += x - a[p];
    a[p] = x;
    if (!(!p || p == n * 2 - 1)) {
      long long nb = y - x;
      if (nb >= 0) {
        rmq[0].update(p, nb);
        rmq[1].update(p, INF);
        if (b[p] < 0) {
          pos++;
          add += nb;
        } else
          add += nb - b[p];
      } else {
        rmq[0].update(p, INF);
        rmq[1].update(p, -nb);
        if (b[p] >= 0) {
          pos--;
          add -= b[p];
        }
      }
    }
    if (pos % 2 == 0)
      cout << sum + add << endl;
    else
      cout << sum + max(add - rmq[0].get(0, n),
                        add + rmq[0].get(0, n) - rmq[1].get(0, n))
           << endl;
  }
  return 0;
}
