#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
long long sum[maxn], sum1[maxn], sum2[maxn], ans;
long long n, m, q, l, r, x, x1;
inline long long abs1(long long x) { return (x) > 0ll ? (x) : (-x); }
long long work(long long ans) {
  long long answer;
  int pos = lower_bound(sum, sum + m - n + 1, -ans) - sum;
  if (pos == 0)
    answer = abs(ans + sum[pos]);
  else if (pos == m - n + 1)
    answer = abs1(ans + sum[m - n]);
  else
    answer = min(abs1(ans + sum[pos - 1]), abs1(ans + sum[pos]));
  return answer;
}
int main() {
  scanf("%I64d%I64d%I64d", &n, &m, &q);
  for (long long i = 1; i <= n; i++) {
    scanf("%I64d", &x);
    if (i & 1)
      ans += x;
    else
      ans -= x;
  }
  for (long long i = 1; i <= m; i++) {
    scanf("%I64d", &x);
    if (i & 1)
      sum1[i] = sum1[i - 1] - x;
    else
      sum1[i] = sum1[i - 1] + x;
  }
  for (long long i = 0; i <= m - n; i++) {
    long long r = i + n;
    if (i & 1)
      sum[i] = -(sum1[r] - sum1[i]);
    else
      sum[i] = sum1[r] - sum1[i];
  }
  sort(sum, sum + m - n + 1);
  printf("%I64d\n", work(ans));
  for (long long i = 1; i <= q; i++) {
    scanf("%I64d%I64d%I64d", &l, &r, &x);
    if ((r - l + 1) & 1) {
      if (l & 1)
        ans += x;
      else
        ans -= x;
    }
    printf("%I64d\n", work(ans));
  }
  return 0;
}
