#include <bits/stdc++.h>
using namespace std;
using namespace std;
const long long int M = 998244353;
long long int fpow(long long int a, long long int b) {
  b %= (M - 1);
  long long int res = 1;
  while (b > 0) {
    if (b & 1) {
      res = res * a % M;
    }
    a = a * a % M;
    b >>= 1;
  }
  return res;
}
long long int t[8 * 100000] = {0};
long long int lazy[8 * 100000] = {0};
void push(int v) {
  t[v * 2] += lazy[v];
  lazy[v * 2] += lazy[v];
  t[v * 2 + 1] += lazy[v];
  lazy[v * 2 + 1] += lazy[v];
  lazy[v] = 0;
}
void update(int v, int tl, int tr, int l, int r, int addend) {
  if (l > r) return;
  if (l == tl && tr == r) {
    t[v] += addend;
    lazy[v] += addend;
  } else {
    push(v);
    int tm = (tl + tr) / 2;
    update(v * 2, tl, tm, l, min(r, tm), addend);
    update(v * 2 + 1, tm + 1, tr, max(l, tm + 1), r, addend);
    t[v] = max(t[v * 2], t[v * 2 + 1]);
  }
}
long long int query(int v, int tl, int tr, int l, int r) {
  if (l <= tl && tr <= r) return t[v];
  push(v);
  int tm = (tl + tr) / 2;
  return max(query(v * 2, tl, tm, l, min(r, tm)),
             query(v * 2 + 1, tm + 1, tr, max(l, tm + 1), r));
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int n, m, p;
  cin >> n >> m >> p;
  vector<pair<int, int>> a(n);
  vector<pair<int, int>> b(m);
  vector<int> be(m);
  vector<pair<int, pair<int, int>>> mons(p);
  for (int i = 0; i < n; i++) {
    int u, v;
    cin >> u >> v;
    a[i] = {u, v};
  }
  for (int i = 0; i < m; i++) {
    int u, v;
    cin >> u >> v;
    b[i] = {u, v};
    be[i] = u;
  }
  for (int i = 0; i < p; i++) {
    int x, y, z;
    cin >> x >> y >> z;
    mons[i] = {x, {y, z}};
  }
  sort((a).begin(), (a).end());
  sort((b).begin(), (b).end());
  sort((mons).begin(), (mons).end());
  sort((be).begin(), (be).end());
  long long int ans = -1e17;
  int cp = -1;
  for (int i = 0; i < m; i++) {
    update(1, 0, m - 1, i, i, -b[i].second);
  }
  for (int i = 0; i < n; i++) {
    if (cp != p - 1) {
      while (mons[cp + 1].first < a[i].first) {
        cp++;
        auto l = upper_bound(be.begin(), be.end(), mons[cp].second.first) -
                 be.begin();
        if (l != m) {
          update(1, 0, m - 1, l, m - 1, mons[cp].second.second);
        }
        if (cp == p - 1) {
          break;
        }
      }
    }
    ans = max(ans, query(1, 0, m - 1, 0, m - 1) - a[i].second);
  }
  cout << ans << endl;
  return 0;
}
