#include <bits/stdc++.h>   using namespace std;   inline long long read() {     long long x = 0, f = 1;     char ch = getchar();     while (!isdigit(ch)) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while (isdigit(ch)) {       x = (x << 1) + (x << 3) + ch -  0 ;       ch = getchar();     }     return x * f;   }   const long long maxn = 2e5 + 1e2;   struct Node {     long long a, b, w;   };   struct stt {     long long f[4 * maxn];     long long add[4 * maxn];     long long val[4 * maxn];     void up(long long root) { f[root] = min(f[root << 1], f[root << 1 | 1]); }     void pushdown(long long root, long long l, long long r) {       if (add[root]) {         add[root << 1] += add[root];         add[root << 1 | 1] += add[root];         f[root << 1] += add[root];         f[root << 1 | 1] += add[root];         add[root] = 0;       }     }     void build(long long root, long long l, long long r) {       if (l == r) {         f[root] = val[l];         return;       }       long long mid = l + r >> 1;       build(root << 1, l, mid);       build(root << 1 | 1, mid + 1, r);       up(root);     }     void update(long long root, long long l, long long r, long long x,                 long long y, long long p) {       if (x <= l && r <= y) {         f[root] += p;         add[root] += p;         return;       }       pushdown(root, l, r);       long long mid = l + r >> 1;       if (x <= mid) update(root << 1, l, mid, x, y, p);       if (y > mid) update(root << 1 | 1, mid + 1, r, x, y, p);       up(root);     }   };   stt a, b;   Node ymh[maxn];   long long n, m, cnt;   long long pp[maxn];   long long q;   vector<pair<long long, long long> > v[maxn];   void print(long long x) {     if (x >= 10) print(x / 10);     putchar(x % 10 +  0 );   }   signed main() {     n = read(), m = read();     q = read();     for (register long long i = 1; i < n; ++i)       a.val[i] = read(), pp[i] = a.val[i], b.val[i + 1] = read();     for (register long long i = 1; i <= m; ++i) {       ymh[i].a = read(), ymh[i].b = read(), ymh[i].w = read();       v[ymh[i].a].push_back(make_pair(ymh[i].b, ymh[i].w));     }     b.build(1, 1, n);     for (register long long i = 1; i <= n; ++i) {       for (register long long j = 0; j < v[i].size(); ++j) {         b.update(1, 1, n, 1, v[i][j].first, v[i][j].second);       }       a.val[i] += b.f[1];     }     a.build(1, 1, n);     cout << a.f[1] << endl;     for (long long i = 1; i <= q; i++) {       long long x = read(), y = read();       a.update(1, 1, n, x, x, y - pp[x]);       pp[x] = y;       print(a.f[1]);       puts(  );     }     return 0;   }   