#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000009;
const long long MOD = 119 << 23 | 1;
class {
 public:
  long long Max[4100009], lz[4100009];
  int a[MAXN], b[MAXN];
  pair<pair<int, int>, int> mon[200009];
  void solve() {
    int n, m, p;
    cin >> n >> m >> p;
    for (int i = 0; i < MAXN; ++i) a[i] = b[i] = 1e9;
    int R = 0, L = 0;
    for (int i = 0; i < n; ++i) {
      int u, v;
      cin >> u >> v;
      a[u] = min(a[u], v);
      L = max(L, u);
    }
    for (int i = 0; i < m; ++i) {
      int u, v;
      cin >> u >> v;
      b[u] = min(b[u], v);
      R = max(R, u);
    }
    for (int i = 0; i < p; ++i) {
      cin >> mon[i].first.first >> mon[i].first.second >> mon[i].second;
    }
    sort(mon, mon + p);
    for (int i = L; i > 0; --i) {
      if (a[i] > a[i + 1]) a[i] = a[i + 1];
    }
    for (int i = R; i > 0; --i) {
      if (b[i] > b[i + 1]) b[i] = b[i + 1];
      update(1, 1, R, i, i, -b[i]);
    }
    long long ans = -2e9;
    for (int i = 0, pos = 0; i <= L; ++i) {
      while (pos < p && mon[pos].first.first < i) {
        if (mon[pos].first.second + 1 <= R)
          update(1, 1, R, mon[pos].first.second + 1, R, mon[pos].second);
        pos++;
      }
      ans = max(ans, -a[i] + Max[1]);
    }
    cout << ans << "\n";
  }
  void update(int rt, int l, int r, int ll, int rr, int v) {
    if (ll <= l && rr >= r) {
      Max[rt] += v;
      lz[rt] += v;
      return;
    }
    if (lz[rt]) {
      Max[rt << 1] += lz[rt];
      Max[rt << 1 | 1] += lz[rt];
      lz[rt << 1 | 1] += lz[rt];
      lz[rt << 1] += lz[rt];
      lz[rt] = 0;
    }
    int mid = l + r >> 1;
    if (ll <= mid) update(rt << 1, l, mid, ll, rr, v);
    if (rr > mid) update(rt << 1 | 1, mid + 1, r, ll, rr, v);
    Max[rt] = max(Max[rt << 1], Max[rt << 1 | 1]);
  }
} NSPACE;
int main() {
  ;
  ios_base::sync_with_stdio(false);
  cout.tie(0);
  cin.tie(0);
  NSPACE.solve();
}
