#include <bits/stdc++.h>
using namespace std;
pair<long long, long long> a[200005], b[200005];
vector<long long> c[200005];
long long tree[5 * 200005], lazy[5 * 200005];
inline void build(long long u, long long s, long long e) {
  if (s == e) {
    tree[u] = -b[s].second;
    return;
  }
  long long m = (s + e) / 2;
  build(2 * u + 1, s, m);
  build(2 * u + 2, m + 1, e);
  tree[u] = max(tree[2 * u + 1], tree[2 * u + 2]);
}
inline void upd(long long u, long long s, long long e, long long idx,
                long long val) {
  if (lazy[u] != 0) {
    tree[u] += lazy[u];
    if (s != e) {
      lazy[2 * u + 1] += lazy[u];
      lazy[2 * u + 2] += lazy[u];
    }
    lazy[u] = 0;
  }
  if (e < idx) return;
  if (s >= idx) {
    tree[u] += val;
    if (s != e) {
      lazy[2 * u + 1] += val;
      lazy[2 * u + 2] += val;
    }
    return;
  }
  long long m = (s + e) / 2;
  upd(2 * u + 1, s, m, idx, val);
  upd(2 * u + 2, m + 1, e, idx, val);
  tree[u] = max(tree[2 * u + 1], tree[2 * u + 2]);
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long n, m, p, x1 = 100000000000000LL, y1 = 100000000000000LL;
  cin >> n >> m >> p;
  for (long long i = 0; i < n; i++) {
    cin >> a[i].first >> a[i].second;
    x1 = min(x1, a[i].second);
  }
  for (long long i = 0; i < m; i++) {
    cin >> b[i].first >> b[i].second;
    y1 = min(y1, b[i].second);
  }
  sort(a, a + n);
  sort(b, b + m);
  for (long long i = n - 2; i >= 0; i--)
    a[i].second = min(a[i].second, a[i + 1].second);
  for (long long i = 0; i < p; i++) {
    long long x, y, z;
    cin >> x >> y >> z;
    c[i].push_back(x);
    c[i].push_back(y);
    c[i].push_back(z);
  }
  sort(c, c + p);
  build(0, 0, m - 1);
  long long a1[n], b1[m];
  for (long long i = 0; i < n; i++) a1[i] = a[i].first;
  for (long long i = 0; i < m; i++) b1[i] = b[i].first;
  long long ans = 0 - x1 - y1;
  for (long long i = 0; i < p; i++) {
    long long x = upper_bound(a1, a1 + n, c[i][0]) - a1;
    if (x == n) break;
    long long y = upper_bound(b1, b1 + m, c[i][1]) - b1;
    if (y != m) upd(0, 0, m - 1, y, c[i][2]);
    long long temp = tree[0] - a[x].second;
    ans = max(ans, temp);
  }
  cout << ans << '\n';
}
