#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  register char ch;
  while (!isdigit(ch = getchar()))
    ;
  register long long x = ch ^ '0';
  while (isdigit(ch = getchar())) x = (((x << 2) + x) << 1) + (ch ^ '0');
  return x;
}
vector<pair<long long, long long> > e[200005];
long long n, m, q, a[200005], b[200005], c[200005], sum[200005 << 2],
    lzy[200005 << 2];
void build(long long o, long long l, long long r, long long p[]) {
  lzy[o] = 0;
  if (l == r) {
    sum[o] = p[l];
    return;
  }
  long long mid = l + r >> 1;
  build(o << 1, l, mid, p);
  build(o << 1 | 1, mid + 1, r, p);
  sum[o] = min(sum[o << 1], sum[o << 1 | 1]);
}
void pushdown(long long o) {
  sum[o << 1] += lzy[o];
  sum[o << 1 | 1] += lzy[o];
  lzy[o << 1] += lzy[o];
  lzy[o << 1 | 1] += lzy[o];
  lzy[o] = 0;
}
void updata(long long o, long long l, long long r, long long L, long long R,
            long long val) {
  if (L == l && r == R) {
    sum[o] += val;
    lzy[o] += val;
    return;
  }
  if (lzy[o]) pushdown(o);
  long long mid = l + r >> 1;
  if (L <= mid) updata(o << 1, l, mid, L, min(mid, R), val);
  if (R > mid) updata(o << 1 | 1, mid + 1, r, max(mid + 1, L), R, val);
  sum[o] = min(sum[o << 1], sum[o << 1 | 1]);
}
signed main() {
  n = read();
  m = read();
  q = read();
  for (long long i = 1; i < n; ++i) {
    a[i] = read();
    b[i + 1] = read();
  }
  build(1, 1, n, b);
  for (long long i = 1; i <= m; ++i) {
    long long u, v, w;
    u = read();
    v = read();
    w = read();
    e[u].push_back(make_pair(v, w));
  }
  for (long long i = 1; i <= n; ++i) {
    for (long long j = 0; j < e[i].size(); ++j) {
      long long v = e[i][j].first, w = e[i][j].second;
      updata(1, 1, n, 1, v, w);
    }
    c[i] = sum[1] + a[i];
  }
  build(1, 1, n, c);
  printf("%lld\n", sum[1]);
  while (q--) {
    long long x, y;
    x = read();
    y = read();
    updata(1, 1, n, x, x, y - a[x]);
    a[x] = y;
    printf("%lld\n", sum[1]);
  }
  return 0;
}
