#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5, inf = 1e9;
int a, m, n, dp[N];
bool rain[N];
int main() {
  scanf("%d %d %d", &a, &m, &n);
  while (m--) {
    int a, b;
    scanf("%d %d", &a, &b);
    for (++a; a <= b; ++a) rain[a] = true;
  }
  vector<pair<int, int> > u;
  while (n--) {
    int a, b;
    scanf("%d %d", &a, &b);
    u.emplace_back(a, b);
  }
  fill(dp, dp + N, inf);
  dp[0] = 0;
  for (int i = 1; i <= a; ++i) {
    if (!rain[i]) {
      dp[i] = dp[i - 1];
      continue;
    }
    for (auto first : u)
      if (first.first < i) {
        dp[i] = min(dp[i], dp[first.first] + (i - first.first) * first.second);
      }
  }
  if (dp[a] == inf) return !printf("-1");
  printf("%d\n", dp[a]);
}
