#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10, mod = 1e9 + 7;
vector<pair<int, int> > v1, v2, v3;
int seg[4 * N], flag[4 * N], x[N], y[N], c[N];
void relax(int ind) {
  int x = flag[ind];
  flag[ind] = 0;
  seg[2 * ind] += x;
  flag[2 * ind] += x;
  seg[2 * ind + 1] += x;
  flag[2 * ind + 1] += x;
}
void add(int s, int e, int ind, int l, int r, int val) {
  if (s >= r || e <= l) return;
  if (s >= l && e <= r) {
    seg[ind] += val;
    flag[ind] += val;
    return;
  }
  relax(ind);
  int mid = (s + e) / 2;
  add(s, mid, 2 * ind, l, r, val);
  add(mid, e, 2 * ind + 1, l, r, val);
  seg[ind] = max(seg[2 * ind], seg[2 * ind + 1]);
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, m, p;
  cin >> n >> m >> p;
  for (int i = 0; i < n; i++) {
    int a, c;
    cin >> a >> c;
    v1.push_back({a, c});
  }
  sort(v1.begin(), v1.end());
  int mn = mod;
  for (int i = n - 1; i >= 0; i--) {
    mn = min(mn, v1[i].second);
    v1[i].second = mn;
  }
  for (int i = 0; i < m; i++) {
    int b, c;
    cin >> b >> c;
    v2.push_back({b, c});
  }
  sort(v2.begin(), v2.end());
  mn = mod;
  for (int i = m - 1; i >= 0; i--) {
    mn = min(mn, v2[i].second);
    v2[i].second = mn;
  }
  for (int i = 0; i < m; i++) add(0, m, 1, i, i + 1, -v2[i].second);
  for (int i = 0; i < p; i++) {
    cin >> x[i] >> y[i] >> c[i];
    v3.push_back({x[i], i});
  }
  sort(v3.begin(), v3.end());
  int ans = -v1[0].second - v2[0].second, cur = 0;
  for (int i = 0; i < n; i++) {
    while (cur < p && x[v3[cur].second] < v1[i].first) {
      int ind = lower_bound(v2.begin(), v2.end(),
                            make_pair(y[v3[cur].second] + 1, -1)) -
                v2.begin();
      if (ind < m) add(0, m, 1, ind, m, c[v3[cur].second]);
      cur++;
    }
    ans = max(ans, seg[1] - v1[i].second);
  }
  cout << ans;
  return 0;
}
