#include <bits/stdc++.h>   using namespace std;   long long ceil(long long a, long long b) {     long long res = a / b;     if (a % b != 0) res++;     return res;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     int n, m, q;     cin >> n >> m >> q;     vector<int> a(n), b(m);     long long total = 0;     for (int i = 0; i < n; i++) {       cin >> a[i];       if (i % 2 == 0) {         total += a[i];       } else {         total -= a[i];       }     }     for (int i = 0; i < m; i++) {       cin >> b[i];     }     set<long long> pos_sum;     long long sum_even = 0, sum_odd = 0;     for (int i = 0; i < n; i++) {       if (i % 2 == 0) {         sum_even += b[i];       } else {         sum_odd += b[i];       }     }     for (int j = 0; j < m - n + 1; j++) {       if (j != 0) {         if ((j - 1) % 2 == 0) {           sum_even -= b[j - 1];         } else {           sum_odd -= b[j - 1];         }         if ((j + n - 1) % 2 == 0) {           sum_even += b[j + n - 1];         } else {           sum_odd += b[j + n - 1];         }       }       if (j % 2 == 0) {         pos_sum.insert(-sum_odd + sum_even);       } else {         pos_sum.insert(-sum_even + sum_odd);       }     }     auto find = [&]() {       auto ub = pos_sum.upper_bound(total);       long long res = LONG_LONG_MAX;       if (ub != pos_sum.end()) {         res = min(res, abs(total - *ub));       }       if (ub != pos_sum.begin()) {         ub--;         res = min(res, abs(total - *ub));       }       return res;     };     cout << find() <<   n ;     while (q--) {       int l, r, x;       cin >> l >> r >> x;       l--, r--;       long long len = r - l + 1;       if (l % 2 == 0) {         total += ceil(len, 2) * x;         total -= (len / 2) * x;       } else {         total -= ceil(len, 2) * x;         total += (len / 2) * x;       }       cout << find() <<   n ;     }     return 0;   }   