#include <bits/stdc++.h>
using namespace std;
pair<long long, long long> s[200100 << 2];
int n, a[200100], b[200100], q;
void upd(int o) {
  s[o].first = max(s[o << 1].first + s[o << 1 | 1].first,
                   s[o << 1].second + s[o << 1 | 1].second);
  s[o].second = max(s[o << 1].second + s[o << 1 | 1].first,
                    s[o << 1].first + s[o << 1 | 1].second);
}
void build(int o, int l, int r) {
  if (l == r) {
    s[o] = pair<long long, long long>(b[l], a[l]);
    return;
  }
  int mid = l + r >> 1;
  build(o << 1, l, mid);
  build(o << 1 | 1, mid + 1, r);
  upd(o);
}
void mdy(int o, int l, int r, int k, pair<long long, long long> p) {
  if (l == r) {
    s[o] = p;
    return;
  }
  int mid = l + r >> 1;
  if (k <= mid)
    mdy(o << 1, l, mid, k, p);
  else
    mdy(o << 1 | 1, mid + 1, r, k, p);
  upd(o);
}
int main() {
  scanf("%d%d", &n, &q);
  for (int i = 1; i <= 2 * n; ++i) scanf("%d", &a[i]);
  for (int i = 1; i <= 2 * n; ++i) scanf("%d", &b[i]);
  build(1, 2, 2 * n - 1);
  for (int i = 1, p, x, y; i <= n; ++i) {
    scanf("%d%d%d", &p, &x, &y);
    if (2 <= p && p <= 2 * n - 1)
      mdy(1, 2, 2 * n - 1, p, pair<long long, long long>(y, x));
    else
      a[p] = x, b[p] = y;
    printf("%lld\n", a[1] + a[2 * n] + s[1].first);
  }
}
