#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC target("sse4")
using namespace std;
int n, m, q;
const int large = 2e5 + 1;
pair<int, int> weapons[large], defense[large];
pair<int, pair<int, int> > monsters[large];
pair<int, int> seg[4 * large];
void updatep(int p, int val, int l, int r, int pos) {
  if (l == r)
    seg[pos].first = val;
  else {
    int mid = (l + r) / 2;
    if (p <= mid)
      updatep(p, val, l, mid, 2 * pos + 1);
    else
      updatep(p, val, mid + 1, r, 2 * pos + 2);
    seg[pos].first = max(seg[2 * pos + 1].first, seg[2 * pos + 2].first);
  }
}
void regupdate(int p, int val, int l, int r, int pos) {
  if (l == r) {
    seg[pos].first += val;
    seg[pos].second += val;
  } else {
    int mid = (l + r) / 2;
    if (p < defense[mid].first)
      regupdate(p, val, l, mid, 2 * pos + 1);
    else
      regupdate(p, val, mid + 1, r, 2 * pos + 2);
    seg[pos].first = max(seg[2 * pos + 1].first,
                         seg[2 * pos + 1].second + seg[2 * pos + 2].first);
    seg[pos].second = seg[2 * pos + 1].second + seg[2 * pos + 2].second;
  }
}
void epupdate(int p, int val) { updatep(p, val, 0, m, 0); }
void eregupdate(int p, int val) { regupdate(p, val, 0, m, 0); }
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  memset(seg, 0, sizeof(seg));
  cin >> n >> m >> q;
  for (int i = 0; i < n; i++) cin >> weapons[i].first >> weapons[i].second;
  for (int i = 0; i < m; i++) cin >> defense[i].first >> defense[i].second;
  for (int i = 0; i < q; i++)
    cin >> monsters[i].first >> monsters[i].second.first >>
        monsters[i].second.second;
  sort(defense, defense + m);
  sort(weapons, weapons + n);
  sort(monsters, monsters + q);
  for (int i = 0; i < m; i++) {
    epupdate(i, -defense[i].second);
  }
  epupdate(m, -2000000000);
  int ptr = 0, mprofit = -2000000000;
  for (int i = 0; i < n; i++) {
    while (ptr < q && weapons[i].first > monsters[ptr].first) {
      eregupdate(monsters[ptr].second.first, monsters[ptr].second.second);
      ptr++;
    }
    mprofit = max(mprofit, seg[0].first - weapons[i].second);
  }
  cout << mprofit << endl;
  return 0;
}
