#include <bits/stdc++.h>
using namespace std;
vector<long long int> ST, deltas;
vector<int> L, R;
int m;
void range(int p, int l, int r) {
  L[p] = l;
  R[p] = r;
  if (p >= m) return;
  range(2 * p, l, (l + r) / 2);
  range(2 * p + 1, (l + r) / 2 + 1, r);
}
void update(int p) {
  if (p == 0) return;
  ST[p] = max(ST[p], max(ST[2 * p], ST[2 * p + 1]));
  update(p / 2);
}
void build() {
  for (int i = m - 1; i > 0; --i) ST[i] = max(ST[2 * i], ST[2 * i + 1]);
}
void add_value(int p, int value, int l) {
  if (R[p] < l) return;
  if (p >= m) {
    ST[p] += deltas[p];
    deltas[p] = 0;
  } else {
    ST[p] += deltas[p];
    deltas[2 * p] += deltas[p];
    deltas[2 * p + 1] += deltas[p];
    deltas[p] = 0;
  }
  if (L[p] >= l) {
    ST[p] += value;
    update(p / 2);
    if (p < m) {
      deltas[2 * p] += value;
      deltas[2 * p + 1] += value;
    }
  } else {
    add_value(p * 2, value, l);
    add_value(p * 2 + 1, value, l);
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, ar, p;
  cin >> n >> ar >> p;
  vector<vector<int> > W(n, vector<int>(2));
  for (int i = 0; i < n; ++i) cin >> W[i][0] >> W[i][1];
  vector<vector<int> > A(ar, vector<int>(2));
  for (int i = 0; i < ar; ++i) cin >> A[i][0] >> A[i][1];
  vector<vector<int> > M(p, vector<int>(3));
  for (int i = 0; i < p; ++i) cin >> M[i][0] >> M[i][1] >> M[i][2];
  sort(W.begin(), W.end());
  sort(A.begin(), A.end());
  sort(M.begin(), M.end());
  m = pow(2, ceil(log2(ar + 1)));
  ST = vector<long long int>(2 * m, -1e18);
  deltas = vector<long long int>(2 * m, 0);
  R = vector<int>(2 * m);
  L = vector<int>(2 * m);
  range(1, m, 2 * m - 1);
  for (int i = 0; i < ar; ++i) ST[m + i] = -A[i][1];
  build();
  int index = 0;
  long long int answer = -1e18;
  for (int i = 0; i < n; ++i) {
    while (index < p and M[index][0] < W[i][0]) {
      vector<int> busca = {M[index][1] + 1, -1};
      int pos = lower_bound(A.begin(), A.end(), busca) - A.begin();
      add_value(1, M[index][2], m + pos);
      ++index;
    }
    answer = max(answer, ST[1] - W[i][1]);
  }
  cout << answer << endl;
}
