#include <bits/stdc++.h>
using namespace std;
int a, n, m;
vector<pair<int, int>> rain(1005);
vector<pair<int, int>> ubre(2005);
vector<vector<int>> dp(2005, vector<int>(2005, -1));
int main() {
  cin >> a >> n >> m;
  for (int i = 0; i < n; i += 1) {
    cin >> rain[i].first >> rain[i].second;
  }
  sort(rain.begin(), rain.begin() + n);
  for (int i = 0; i < m; i += 1) {
    cin >> ubre[i].first >> ubre[i].second;
  }
  sort(ubre.begin(), ubre.begin() + m);
  int res = 0;
  for (int i = 0, k = 0; i <= a; i += 1) {
    int T = 1e9;
    bool r = false;
    while (k < n) {
      if (i > rain[k].second)
        k += 1;
      else
        break;
    }
    if (k < n && i - 1 >= rain[k].first) r = true;
    int unum = -1;
    for (int j = 0; j < m; j += 1) {
      if (i == ubre[j].first) {
        if (unum == -1 || ubre[j].second < ubre[unum].second) unum = j;
      } else if (i > 0 && dp[i - 1][j] != -1) {
        dp[i][j] = dp[i - 1][j] + ubre[j].second;
        T = min(T, dp[i][j]);
      }
    }
    if (r) {
      if (T == 1e9) {
        res = -1;
        break;
      }
      res = T;
      if (unum != -1) dp[i][unum] = T;
    } else {
      res = min(T, res);
      if (unum != -1) dp[i][unum] = res;
    }
  }
  cout << res << endl;
}
