#include <bits/stdc++.h>
namespace io {
int F() {
  int n = 0, F = 1;
  char ch;
  while ((ch = getchar()) != '-' && (ch < '0' || ch > '9'))
    ;
  ch == '-' ? F = 0 : n = ch - '0';
  while ((ch = getchar()) >= '0' && ch <= '9')
    n = (n << 1) + (n << 3) + ch - '0';
  return F ? n : -n;
}
long long G() {
  long long n = 0, F = 1;
  char ch;
  while ((ch = getchar()) != '-' && (ch < '0' || ch > '9'))
    ;
  ch == '-' ? F = 0 : n = ch - '0';
  while ((ch = getchar()) >= '0' && ch <= '9')
    n = (n << 1) + (n << 3) + ch - '0';
  return F ? n : -n;
}
}  // namespace io
int a[111111];
int v[111111];
std::multiset<int> pos, neg;
long long sp;
int main() {
  int n = io::F() << 1, Q = io::F();
  long long ans = 0;
  for (int i = 1; i <= n; ++i) ans += a[i] = io::F();
  io::F();
  for (int i = 2; i < n; ++i) v[i] = io::F() - a[i];
  io::F();
  for (int i = 2; i < n; ++i)
    v[i] >= 0 ? sp += v[i], pos.insert(v[i]) : neg.insert(v[i]);
  for (int i = 1; i <= Q; ++i) {
    int p = io::F(), x = io::F(), y = io::F();
    ans -= a[p];
    ans += a[p] = x;
    if (p == 1 || p == n) goto skip;
    v[p] >= 0                     ? sp -= v[p],
        pos.erase(pos.find(v[p])) : neg.erase(neg.find(v[p]));
    v[p] = y - x;
    v[p] >= 0 ? sp += v[p], pos.insert(v[p]) : neg.insert(v[p]);
  skip:;
    if (pos.size() & 1) {
      if (*pos.begin() > -*neg.rbegin())
        printf("%lld\n", ans + sp + *neg.rbegin());
      else
        printf("%lld\n", ans + sp - *pos.begin());
    } else
      printf("%lld\n", ans + sp);
  }
  return 0;
}
