#include <bits/stdc++.h>
using namespace std;
long long seg[4000002];
long long lazy[4000002];
pair<long long, long long> weapon[200001];
long long armor[1000001];
pair<long long, pair<long long, long long>> monster[200001];
long long ymx = LLONG_MIN;
void build(int s, int e, int ind) {
  if (s == e) {
    seg[ind] = armor[s];
    return;
  }
  int mid = (s + e) / 2;
  build(s, mid, ind * 2);
  build(mid + 1, e, ind * 2 + 1);
  seg[ind] = max(seg[ind * 2], seg[ind * 2 + 1]);
}
void update(int s, int e, int qs, int qe, int ind, long long val) {
  if (s > qe || e < qs) return;
  if (lazy[ind] != 0) {
    seg[ind] += lazy[ind];
    if (s != e) {
      lazy[ind * 2] += lazy[ind];
      lazy[ind * 2 + 1] += lazy[ind];
    }
    lazy[ind] = 0;
  }
  if (qs <= s && e <= qe) {
    seg[ind] += val;
    if (s != e) {
      lazy[ind * 2] += val;
      lazy[ind * 2 + 1] += val;
    }
    return;
  }
  int mid = (s + e) / 2;
  update(s, mid, qs, qe, ind * 2, val);
  update(mid + 1, e, qs, qe, ind * 2 + 1, val);
  seg[ind] =
      max(seg[ind * 2] + lazy[ind * 2], seg[ind * 2 + 1] + lazy[ind * 2 + 1]);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n, m, p, t1, t2;
  cin >> n >> m >> p;
  for (long long i = 0; i < n; i++) cin >> weapon[i].first >> weapon[i].second;
  for (int i = 1; i <= 1000000; i++) armor[i] = LLONG_MIN;
  for (long long i = 0; i < m; i++) {
    cin >> t1 >> t2;
    armor[t1] = max(armor[t1], -t2);
  }
  for (long long i = 0; i < p; i++)
    cin >> monster[i].first >> monster[i].second.first >>
        monster[i].second.second;
  sort(weapon, weapon + n);
  sort(monster, monster + p);
  build(1, 1000000, 1);
  int pos = 0;
  long long ans = LLONG_MIN;
  for (int i = 0; i < n; i++) {
    while (pos < p && monster[pos].first < weapon[i].first) {
      update(1, 1000000, monster[pos].second.first + 1, 1000000, 1,
             monster[pos].second.second);
      pos++;
    }
    ans = max(ans, -weapon[i].second + seg[1]);
  }
  cout << ans;
  return 0;
}
