#include <bits/stdc++.h>
using namespace std;
;
const long long N = 200 * 1000 + 20, inf = 1e18, M = 1e6 + 20;
long long n, m, p, a[N], ca[N], costa[M], b[N], cb[N], costb[M], seg[M << 2],
    lazy[M << 2], tmp[N], x[N], y[N], z[N], ans = -inf;
void shift(int id) {
  seg[id << 1] += lazy[id];
  seg[id << 1 | 1] += lazy[id];
  lazy[id << 1] += lazy[id];
  lazy[id << 1 | 1] += lazy[id];
  lazy[id] = 0;
}
void build(int id = 1, int st = 0, int en = M - 1) {
  if (en - st == 1) {
    seg[id] = -costb[st];
    return;
  }
  int mid = st + en >> 1;
  build(id << 1, st, mid);
  build(id << 1 | 1, mid, en);
  seg[id] = max(seg[id << 1], seg[id << 1 | 1]);
}
void update(int l, int r, long long val, int id = 1, int st = 0,
            int en = M - 1) {
  if (r <= st || en <= l) return;
  if (l <= st && en <= r) {
    seg[id] += val;
    lazy[id] += val;
    return;
  }
  int mid = st + en >> 1;
  shift(id);
  update(l, r, val, id << 1, st, mid);
  update(l, r, val, id << 1 | 1, mid, en);
  seg[id] = max(seg[id << 1], seg[id << 1 | 1]);
}
long long get(int l, int r, int id = 1, int st = 0, int en = M - 1) {
  if (r <= st || en <= l) return 0;
  if (l <= st && en <= r) return seg[id];
  int mid = st + en >> 1;
  shift(id);
  return max(get(l, r, id << 1, st, mid), get(l, r, id << 1 | 1, mid, en));
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> m >> p;
  fill(costa, costa + M, inf);
  fill(costb, costb + M, inf);
  for (int i = 0; i < n; i++) cin >> a[i] >> ca[i];
  for (int i = 0; i < m; i++) cin >> b[i] >> cb[i];
  for (int i = 0; i < p; i++) cin >> x[i] >> y[i] >> z[i];
  for (int i = 0; i < n; i++) costa[a[i]] = min(costa[a[i]], ca[i]);
  for (int i = 0; i < m; i++) costb[b[i]] = min(costb[b[i]], cb[i]);
  for (int i = M - 2; ~i; i--) costa[i] = min(costa[i], costa[i + 1]);
  for (int i = M - 2; ~i; i--) costb[i] = min(costb[i], costb[i + 1]);
  iota(tmp, tmp + p, 0);
  sort(tmp, tmp + p, [](int i, int j) { return x[i] < x[j]; });
  build();
  ans = -(costa[1] + costb[1]);
  for (int i = 0; i < p; i++) {
    update(y[tmp[i]] + 1, M, z[tmp[i]]);
    ans = max(ans, seg[1] - costa[x[tmp[i]] + 1]);
  }
  return cout << ans << endl, 0;
}
