#include <bits/stdc++.h>   using namespace std;   const int maxn = 200005;   inline int gi() {     char c = getchar();     while (c <  0  || c >  9 ) c = getchar();     int sum = 0;     while ( 0  <= c && c <=  9 ) sum = sum * 10 + c - 48, c = getchar();     return sum;   }   int n, m, q, A[maxn], B[maxn];   vector<pair<int, int>> vec[maxn];   long long sum[maxn], Min[maxn << 2], tag[maxn << 2];   priority_queue<long long, vector<long long>, greater<long long>> q1, q2;   void build(int s, int l, int r) {     if (l == r) return Min[s] = B[l - 1], void();     build((s << 1), l, ((l + r) >> 1));     build((s << 1 | 1), ((l + r) >> 1) + 1, r);     Min[s] = min(Min[(s << 1)], Min[(s << 1 | 1)]);   }   void modify(int s, int l, int r, int ql, int qr, int v) {     if (ql <= l && r <= qr) return tag[s] += v, Min[s] += v, void();     if (ql <= ((l + r) >> 1)) modify((s << 1), l, ((l + r) >> 1), ql, qr, v);     if (qr >= ((l + r) >> 1) + 1)       modify((s << 1 | 1), ((l + r) >> 1) + 1, r, ql, qr, v);     Min[s] = min(Min[(s << 1)], Min[(s << 1 | 1)]) + tag[s];   }   int main() {     n = gi();     m = gi();     q = gi();     for (int i = 1; i < n; ++i) A[i] = gi(), B[i] = gi();     for (int u, v, w, i = 1; i <= m; ++i) {       u = gi();       v = gi();       w = gi();       vec[u].push_back(make_pair(v, w));     }     build(1, 1, n);     for (int i = 1; i <= n; ++i) {       for (auto j : vec[i]) modify(1, 1, n, 1, j.first, j.second);       sum[i] = Min[1];       q1.push(sum[i] + A[i]);     }     printf( %lld n , q1.top());     for (int i = 1, x, v; i <= q; ++i) {       x = gi();       v = gi();       q2.push(A[x] + sum[x]);       q1.push((A[x] = v) + sum[x]);       while (!q1.empty() && !q2.empty() && q1.top() == q2.top())         q1.pop(), q2.pop();       printf( %lld n , q1.top());     }     return 0;   }   