#include <bits/stdc++.h>
using namespace std;
long long bsum[100100];
int b[100100];
vector<long long> bv;
long long asum;
int k;
long long solve() {
  auto y = lower_bound(bv.begin(), bv.end(), asum);
  long long ans;
  if (y == bv.begin()) {
    ans = abs(asum - bv[0]);
  } else if (y == bv.end()) {
    ans = abs(asum - bv[k]);
  } else {
    ans = min(abs(asum - *y), abs(asum - *(y - 1)));
  }
  return ans;
}
int main() {
  int n, m, q;
  scanf("%d%d%d", &(n), &(m), &(q));
  k = m - n;
  int sg = 1;
  for (int i = 0; i < n; i++) {
    int a;
    scanf("%d", &(a));
    asum += (long long)sg * a;
    sg *= -1;
  }
  int bsg = 1;
  int j = 0;
  for (int i = 0; i < m; i++) {
    int bb;
    scanf("%d", &(bb));
    b[i] = bsg * bb;
    bsg *= -1;
    if (i >= n) {
      j++;
      bsum[j] = bsum[j - 1] - b[i - n];
    }
    bsum[j] += b[i];
  }
  long long sgsum = 1;
  for (int i = 0; i <= k; i++) {
    bv.push_back(sgsum * bsum[i]);
    sgsum *= -1;
  }
  sort(bv.begin(), bv.end());
  printf(
      "%lld"
      "\n",
      solve());
  for (int i = 0; i < q; i++) {
    int l, r, x;
    scanf("%d%d%d", &(l), &(r), &(x));
    l--;
    if ((r - l) % 2 == 1) {
      if (l % 2 == 0)
        asum += x;
      else
        asum -= x;
    }
    printf(
        "%lld"
        "\n",
        solve());
  }
  return 0;
}
