#include <bits/stdc++.h>
using namespace std;
const vector<pair<long long int, long long int> > dir4 = {
    {-1, 0}, {1, 0}, {0, 1}, {0, -1}};
const vector<pair<long long int, long long int> > dir8 = {
    {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}};
template <class T>
bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
int main() {
  int A, N, M;
  cin >> A >> N >> M;
  vector<int> L(N), R(N);
  for (int i = 0; i < (int)(N); i++) cin >> L[i] >> R[i], R[i]++;
  vector<int> X(M), P(M);
  for (int i = 0; i < (int)(M); i++) cin >> X[i] >> P[i];
  vector<int> rain(A + 1);
  for (int i = 0; i < (int)(N); i++)
    for (int k = (int)(L[i] + 1); k < (int)(R[i]); k++) rain[k] = 1;
  vector<int> dp(A + 1, INT_MAX / 2);
  dp[0] = 0;
  for (int i = (int)(1); i < (int)(A + 1); i++) {
    if (!rain[i])
      dp[i] = dp[i - 1];
    else
      for (int j = 0; j < (int)(M); j++)
        if (X[j] < i) chmin(dp[i], dp[X[j]] + P[j] * (i - X[j]));
  }
  cout << (dp[A] == INT_MAX / 2 ? -1 : dp[A]) << endl;
  ;
  return 0;
}
