#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
const long long INF = 1e18;
long long get(long long x) {
  if (x < 0) x = -x;
  return x;
}
long long a[MAXN], b[MAXN], c[MAXN], x, s[MAXN];
int n, m, q;
int main() {
  scanf("%d%d%d", &n, &m, &q);
  int sg = 1;
  for (int i = 1; i <= n; i++) {
    scanf("%lld", a + i);
    x += a[i] * sg;
    sg = -sg;
  }
  for (int i = 1; i <= m; i++) scanf("%lld", b + i);
  sg = 1;
  for (int i = 1; i <= m; i++) {
    s[i] = s[i - 1] + sg * b[i];
    sg *= (-1);
  }
  for (int j = 0; j <= m - n; j++) {
    c[j] = s[j + n] - s[j];
    if (j % 2) c[j] = -c[j];
  }
  sort(c, c + m - n + 1);
  int pos = lower_bound(c, c + m - n + 1, x) - c;
  long long ans = INF;
  if (pos != m - n + 1) ans = min(ans, get(c[pos] - x));
  if (pos) ans = min(ans, get(c[pos - 1] - x));
  printf("%lld\n", ans);
  while (q--) {
    int l, r, alt;
    scanf("%d%d%d", &l, &r, &alt);
    if (r % 2 == l % 2) {
      if (l % 2)
        x += alt;
      else
        x -= alt;
    }
    pos = lower_bound(c, c + m - n + 1, x) - c;
    ans = INF;
    if (pos != m - n + 1) ans = min(ans, get(c[pos] - x));
    if (pos) ans = min(ans, get(c[pos - 1] - x));
    printf("%lld\n", ans);
  }
  return 0;
}
