#include <bits/stdc++.h>
using namespace std;
int n, a, m, x, y, arr[2010], num[2010];
vector<pair<int, int> > umb;
int main() {
  for (int i = 0; i < 2010; i++) num[i] = INT_MAX;
  scanf("%d %d %d", &a, &n, &m);
  for (int i = 0; i < n; i++) {
    scanf("%d %d", &x, &y);
    for (int j = x; j < y; j++) arr[j] = 1;
  }
  for (int i = 0; i < m; i++) {
    scanf("%d %d", &x, &y);
    umb.push_back(make_pair(x, y));
  }
  sort(umb.begin(), umb.end());
  for (int i = 0; i < m; i++) {
    int j = umb[i].first - 1;
    while (j >= 0 && arr[j] != 1) j--;
    int prev = 0;
    if (j >= 0) prev = num[j];
    int c = 1;
    for (j = umb[i].first; j < 2010; j++) {
      num[j] = min(num[j], prev + (c * umb[i].second));
      c++;
    }
  }
  int j = 2010 - 1;
  while (arr[j] != 1) j--;
  int ans = num[j];
  for (int i = 0; i < 2010; i++) {
    if (arr[i] == 1 && num[i] == INT_MAX) {
      ans = -1;
      break;
    }
  }
  printf("%d\n", ans);
  return 0;
}
