#include <bits/stdc++.h>
using namespace std;
const int INF = 2e9;
const double eps = 1e-12;
template <typename T>
inline void read(T &x) {
  x = 0;
  int f = 1;
  char ch = getchar();
  while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
  if (ch == '-') {
    f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  x *= f;
}
const long long N = 200010;
long long n, m, q;
long long va[N], vb[N], A[N];
struct EDGE {
  long long ca, cb, val;
  inline void in() {
    read(ca);
    read(cb);
    read(val);
  }
  bool operator<(const EDGE &a) const { return ca < a.ca; }
} e[N];
namespace SEG {
const long long ALL = N << 2;
long long MinB[ALL], lazB[ALL];
void BuildB(long long u, long long l, long long r) {
  if (l == r) {
    MinB[u] = vb[l];
    return;
  }
  BuildB((u << 1), l, ((l + r) >> 1));
  BuildB(((u << 1) | 1), ((l + r) >> 1) + 1, r);
  MinB[u] = min(MinB[(u << 1)], MinB[((u << 1) | 1)]);
}
inline void UpdateB(long long u, long long v) {
  MinB[u] += v;
  lazB[u] += v;
}
inline void Push_DnB(long long u) {
  if (lazB[u]) {
    UpdateB((u << 1), lazB[u]);
    UpdateB(((u << 1) | 1), lazB[u]);
    lazB[u] = 0;
  }
}
void AddB(long long u, long long l, long long r, long long L, long long R,
          long long v) {
  if (L <= l && r <= R) {
    UpdateB(u, v);
    return;
  }
  Push_DnB(u);
  if (L <= ((l + r) >> 1)) AddB((u << 1), l, ((l + r) >> 1), L, R, v);
  if (R > ((l + r) >> 1)) AddB(((u << 1) | 1), ((l + r) >> 1) + 1, r, L, R, v);
  MinB[u] = min(MinB[(u << 1)], MinB[((u << 1) | 1)]);
}
long long MinA[ALL];
void BuildA(long long u, long long l, long long r) {
  if (l == r) {
    MinA[u] = va[l] + A[l];
    return;
  }
  BuildA((u << 1), l, ((l + r) >> 1));
  BuildA(((u << 1) | 1), ((l + r) >> 1) + 1, r);
  MinA[u] = min(MinA[(u << 1)], MinA[((u << 1) | 1)]);
}
void Modify(long long u, long long l, long long r, long long x, long long del) {
  if (l == r && l == x) {
    MinA[u] += del;
    return;
  }
  if (x <= ((l + r) >> 1))
    Modify((u << 1), l, ((l + r) >> 1), x, del);
  else
    Modify(((u << 1) | 1), ((l + r) >> 1) + 1, r, x, del);
  MinA[u] = min(MinA[(u << 1)], MinA[((u << 1) | 1)]);
}
}  // namespace SEG
signed main() {
  read(n);
  read(m);
  read(q);
  for (long long i = 1; i < n; i++) {
    read(va[i]);
    read(vb[i + 1]);
  }
  for (long long i = 1; i <= m; i++) e[i].in();
  sort(e + 1, e + m + 1);
  SEG::BuildB(1, 1, n);
  long long cur = 1;
  for (long long i = 1; i <= n; i++) {
    while (cur <= n && e[cur].ca == i)
      SEG::AddB(1, 1, n, 1, e[cur].cb, e[cur].val), ++cur;
    A[i] = SEG::MinB[1];
  }
  SEG::BuildA(1, 1, n);
  long long ans = SEG::MinA[1];
  printf("%lld\n", ans);
  for (long long i = 1; i <= q; i++) {
    long long x, v;
    read(x);
    read(v);
    long long delta = -va[x] + v;
    va[x] = v;
    SEG::Modify(1, 1, n, x, delta);
    ans = SEG::MinA[1];
    printf("%lld\n", ans);
  }
  return 0;
}
