#include <bits/stdc++.h>
using namespace std;
const int maxn = 100001;
inline char nc() {
  static char buf[100000], *p1 = buf, *p2 = buf;
  return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2)
             ? EOF
             : *p1++;
}
inline int _read() {
  char ch = nc();
  int sum = 0;
  bool flag = 1;
  while (ch != '-' && !(ch >= '0' && ch <= '9')) ch = nc();
  if (ch == '-') flag = 0, ch = nc();
  while (ch >= '0' && ch <= '9') sum = sum * 10 + ch - 48, ch = nc();
  return flag ? sum : -sum;
}
struct E {
  int N, M, Q, n;
  long long sum[maxn], b[maxn], suma;
  void init() {
    long long t;
    N = _read();
    M = _read();
    Q = _read();
    n = M - N;
    for (int i = 1, j = 1; i <= N; i++, j = -j) suma += _read() * j;
    for (int i = 1, j = 1; i <= M; i++, j = -j) b[i] = _read() * j;
    for (int i = 1; i <= N; i++) sum[0] += b[i];
    for (int i = 1, j = N + 1, k = 1; i <= n; i++, j++, k++)
      sum[i] = sum[i - 1] + b[j] - b[k];
    for (int i = 1; i <= n; i += 2) sum[i] = -sum[i];
    sort(sum, sum + n + 1);
  }
  long long binary_search(long long val) {
    int id = lower_bound(sum, sum + n + 1, val) - sum;
    if (id == 0) return sum[0] - val;
    if (id == n + 1) return val - sum[n];
    return min(sum[id] - val, val - sum[id - 1]);
  }
  void work() {
    long long l, r, x;
    printf("%I64d\n", binary_search(suma));
    while (Q--) {
      l = _read();
      r = _read();
      x = _read();
      l %= 2;
      r %= 2;
      if (l == 0 && r == 0) suma -= x;
      if (l == 1 && r == 1) suma += x;
      printf("%I64d\n", binary_search(suma));
    }
  }
} sol;
int main() {
  sol.init();
  sol.work();
  return 0;
}
