#include <bits/stdc++.h>
using namespace std;
int in() {
  int x;
  scanf("%d", &x);
  return x;
}
long long lin() {
  long long x;
  scanf("%lld", &x);
  return x;
}
long long MOD = 1e9 + 7;
long long n, m, k;
long long a[1055050], b[1055050];
template <typename Monoid>
struct SegmentTree {
  using F = function<Monoid(Monoid, Monoid)>;
  int sz;
  vector<Monoid> seg;
  const F f;
  const Monoid M1;
  SegmentTree(int n, const F f, const Monoid &M1) : f(f), M1(M1) {
    sz = 1;
    while (sz < n) sz <<= 1;
    seg.assign(2 * sz, M1);
  }
  void set(int k, const Monoid &x) { seg[k + sz] = x; }
  void build() {
    for (int k = sz - 1; k > 0; k--) {
      seg[k] = f(seg[2 * k + 0], seg[2 * k + 1]);
    }
  }
  void update(int k, const Monoid &x) {
    k += sz;
    seg[k] = x;
    while (k >>= 1) {
      seg[k] = f(seg[2 * k + 0], seg[2 * k + 1]);
    }
  }
  Monoid query(int a, int b) {
    Monoid L = M1, R = M1;
    for (a += sz, b += sz; a < b; a >>= 1, b >>= 1) {
      if (a & 1) L = f(L, seg[a++]);
      if (b & 1) R = f(seg[--b], R);
    }
    return f(L, R);
  }
  Monoid operator[](const int &k) const { return seg[k + sz]; }
};
int main() {
  n = in();
  int q = in();
  SegmentTree<long long> seg(
      n * 2 + 1, [](long long a, long long b) { return min(a, b); }, 1e9 + 7);
  long long sum = 0;
  for (long long i = 0; i < n * 2; i++) {
    a[i] = in();
    sum += a[i];
  }
  int count = 0;
  long long dif = 0;
  for (long long i = 0; i < n * 2; i++) {
    b[i] = in();
    if (i == 0 || i == n * 2 - 1) continue;
    if (b[i] > a[i]) {
      seg.set(i, b[i] - a[i]);
      dif += b[i] - a[i];
      count++;
    }
  }
  seg.build();
  for (long long iii = 0; iii < q; iii++) {
    int p = in();
    p--;
    long long prea = a[p], preb = b[p];
    a[p] = lin();
    b[p] = in();
    sum += a[p] - prea;
    if (p == 0 || p == n * 2 - 1) {
      goto G;
    }
    if (preb > prea) {
      count--;
      dif -= preb - prea;
    }
    if (b[p] > a[p]) {
      count++;
      seg.update(p, b[p] - a[p]);
      dif += b[p] - a[p];
    }
  G:
    if (count % 2) {
      cout << sum + dif - seg.query(0, 2 * n) << "\n";
    } else
      cout << sum + dif << "\n";
  }
}
