#include <bits/stdc++.h>
using namespace std;
inline long long Getint() {
  char ch = getchar();
  long long x = 0, fh = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') fh = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    (x *= 10) += ch ^ 48;
    ch = getchar();
  }
  return x * fh;
}
const int N = 200005;
struct sid {
  int x, y;
  long long w;
  sid(int a = 0, int b = 0, long long c = 0) {
    x = a;
    y = b;
    w = c;
  }
};
vector<sid> G[N];
int n, m;
long long A[N], B[N];
namespace ST {
int L[N << 2], R[N << 2];
long long mi[N << 2], id[N << 2], tag[N << 2];
inline void Maintain(int v) {
  mi[v] = mi[v << 1];
  id[v] = id[v << 1];
  if (mi[v] > mi[v << 1 | 1]) mi[v] = mi[v << 1 | 1], id[v] = id[v << 1 | 1];
}
void Build(int v, int l, int r) {
  L[v] = l;
  R[v] = r;
  int mid = l + r >> 1;
  if (l == r) {
    mi[v] = B[mid];
    id[v] = mid;
    return;
  }
  Build(v << 1, l, mid);
  Build(v << 1 | 1, mid + 1, r);
  Maintain(v);
}
inline void Addtag(int v, long long w) {
  mi[v] += w;
  tag[v] += w;
}
inline void Pushdown(int v) {
  if (tag[v]) {
    Addtag(v << 1, tag[v]);
    Addtag(v << 1 | 1, tag[v]);
    tag[v] = 0;
  }
}
void Ins(int v, int x, int y, long long w) {
  if (x > R[v] || y < L[v]) return;
  if (x <= L[v] && R[v] <= y) {
    Addtag(v, w);
    return;
  }
  Pushdown(v);
  Ins(v << 1, x, y, w);
  Ins(v << 1 | 1, x, y, w);
  Maintain(v);
}
inline pair<long long, int> Ask(int v, int x, int y) {
  if (x <= L[v] && R[v] <= y) return make_pair(mi[v], id[v]);
  int mid = L[v] + R[v] >> 1;
  Pushdown(v);
  if (y <= mid)
    return Ask(v << 1, x, y);
  else if (x > mid)
    return Ask(v << 1 | 1, x, y);
  return min(Ask(v << 1, x, y), Ask(v << 1 | 1, x, y));
}
}  // namespace ST
pair<long long, int> C[N];
long long D[N];
namespace Q {
priority_queue<long long> Q1, Q2;
inline long long Top() {
  while (Q1.size() && Q2.size()) {
    if (Q1.top() == Q2.top())
      Q1.pop(), Q2.pop();
    else
      break;
  }
  return -Q1.top();
}
inline void Ins(long long w) { Q1.push(-w); }
inline void Del(long long w) { Q2.push(-w); }
}  // namespace Q
int main() {
  int x, y, z;
  n = Getint();
  m = Getint();
  int q = Getint();
  for (int i = 1; i <= n - 1; i++) A[i] = Getint(), B[i] = Getint();
  for (int i = 1; i <= m; i++) {
    x = Getint();
    y = Getint();
    z = Getint();
    G[x].push_back(sid(x, y, z));
  }
  ST::Build(1, 1, n - 1);
  long long su = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < G[i].size(); j++) {
      sid w = G[i][j];
      su += w.w;
      ST::Ins(1, 1, w.y - 1, w.w);
    }
    C[i] = ST::Ask(1, 1, n - 1);
    D[i] = su;
    if (i == n) continue;
    Q::Ins(A[i] + C[i].first);
    Q::Ins(A[i] + D[i]);
  }
  long long raw = ST::Ask(1, 1, n - 1).first;
  cout << min(raw, Q::Top()) << '\n';
  for (int i = 1; i <= q; i++) {
    long long Ans = raw;
    x = Getint();
    y = Getint();
    Q::Del(A[x] + C[x].first);
    Q::Del(A[x] + D[x]);
    Q::Ins((A[x] = y) + C[x].first);
    Q::Ins(A[x] + D[x]);
    cout << min(Ans, Q::Top()) << '\n';
  }
  return 0;
}
