#include <bits/stdc++.h>
using namespace std;
inline int read(register int ans = 0, register int sgn = ' ',
                register int ch = getchar()) {
  for (; ch < '0' || ch > '9'; sgn = ch, ch = getchar())
    ;
  for (; ch >= '0' && ch <= '9'; (ans *= 10) += ch - '0', ch = getchar())
    ;
  return sgn - '-' ? ans : -ans;
}
char _Ob[1000000 + 5], *_O = _Ob, _Os[25], *_Ot;
template <typename T>
inline void Out(T x) {
  if (!x) {
    (*_O++ = '0');
    return;
  }
  if (x < 0) (*_O++ = '-'), x = -x;
  for (_Ot = _Os; x; *_Ot++ = x % 10 + '0', x /= 10)
    ;
  for (; _Ot != _Os; (*_O++ = *--_Ot))
    ;
  if (_O - _Ob >= 1000000 - 50) fwrite(_Ob, 1, _O - _Ob, stdout), _O = _Ob;
}
int n, q, a[100000 + 5], b[100000 + 5];
multiset<int> Pos, Neg;
multiset<int>::iterator it;
long long base, sum;
int main() {
  n = read() << 1, q = read();
  for (register int i = 1; i <= n; base += (a[i++] = read()))
    ;
  for (register int i = 1; i <= n; b[i++] = read())
    ;
  for (register int i = 2; i < n; b[i] >= a[i] ? sum += b[i] - a[i],
                    Pos.insert(b[i] - a[i])    : Neg.insert(b[i] - a[i]), i++)
    ;
  for (register int p; q--;
       Out(base +
           (Pos.size() & 1
                ? max(sum + (Neg.size() ? *--Neg.end() : 0x3f3f3f3f3f3f3f3fll),
                      sum - *Pos.begin())
                : sum)),
       (*_O++ = '\n')) {
    p = read(), base -= a[p],
    p > 1 && p < n ? it = (b[p] >= a[p]          ? sum -= b[p] - a[p],
                           Pos.find(b[p] - a[p]) : Neg.find(b[p] - a[p])),
    (b[p] >= a[p] ? Pos : Neg).erase(it), 0 : 0;
    a[p] = read(), b[p] = read(), base += a[p],
    p > 1 && p < n ? b[p] >= a[p] ? sum += b[p] - a[p],
    Pos.insert(b[p] - a[p]) : Neg.insert(b[p] - a[p]), 0 : 0;
  }
  fwrite(_Ob, 1, _O - _Ob, stdout), _O = _Ob;
  return 0;
}
