#include <bits/stdc++.h>
using namespace std;
const long long N = 2e5 + 5;
pair<long long, long long> a[N];
long long segt[4 * N], lazy[4 * N];
void constr(long long l, long long r, long long pos) {
  if (l == r)
    segt[pos] = -a[l].second;
  else {
    long long mid = (l + r) / 2;
    constr(l, mid, pos * 2);
    constr(mid + 1, r, pos * 2 + 1);
    segt[pos] = max(segt[pos * 2], segt[pos * 2 + 1]);
  }
}
void add(long long l, long long r, long long pos, long long att, long long c) {
  if (lazy[pos]) {
    segt[pos] += lazy[pos];
    if (l != r) lazy[pos * 2] += lazy[pos], lazy[pos * 2 + 1] += lazy[pos];
    lazy[pos] = 0;
  }
  if (a[l].first > att) {
    segt[pos] += c;
    if (l != r) lazy[pos * 2] += c, lazy[pos * 2 + 1] += c;
  } else if (a[r].first > att) {
    long long mid = (l + r) / 2;
    add(l, mid, pos * 2, att, c);
    add(mid + 1, r, pos * 2 + 1, att, c);
    segt[pos] = max(segt[pos * 2], segt[pos * 2 + 1]);
  }
}
long long mxx(long long m) {
  if (lazy[1]) {
    segt[1] += lazy[1];
    if (m != 1) lazy[2] += lazy[1], lazy[3] += lazy[1];
    lazy[1] = 0;
  }
  return segt[1];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n, m, p;
  cin >> n >> m >> p;
  pair<long long, long long> w[n];
  for (auto &i : w) cin >> i.first >> i.second;
  sort(w, w + n);
  for (long long i = 1; i <= m; i++) cin >> a[i].first >> a[i].second;
  sort(a + 1, a + 1 + m);
  constr(1, m, 1);
  pair<pair<long long, long long>, long long> mon[p];
  for (auto &i : mon) cin >> i.first.first >> i.first.second >> i.second;
  sort(mon, mon + p);
  long long res = -((long long)(2e18)), cmon = 0;
  for (auto i : w) {
    long long att = i.first, c = i.second;
    while (cmon < p && mon[cmon].first.first < att)
      add(1, m, 1, mon[cmon].first.second, mon[cmon].second), cmon++;
    res = max(res, mxx(m) - c);
  }
  cout << res;
  return 0;
}
