#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1e4 + 9;
const long long INF = 1e9 + 7;
int N, M, T, S;
int a;
pair<int, int> vec[MAX_N];
long long dp[MAX_N];
int vis[MAX_N];
long long umb[MAX_N];
int main() {
  while (cin >> a >> N >> M) {
    memset(vis, 0, sizeof(vis));
    for (int i = 0; i < MAX_N; i++) umb[i] = INF, dp[i] = INF;
    for (int i = 0; i < N; i++) {
      scanf("%d%d", &vec[i].first, &vec[i].second);
      for (int j = vec[i].first + 1; j <= vec[i].second; j++) vis[j] = 1;
    }
    for (int i = 0; i < M; i++) {
      long long x, v;
      scanf("%lld%lld", &x, &v);
      umb[x] = min(umb[x], v);
    }
    dp[0] = 0;
    for (int i = 1; i <= a; i++) {
      if (!vis[i]) {
        dp[i] = dp[i - 1];
      } else {
        for (int j = i - 1; j >= 0; j--) {
          dp[i] = min(dp[i], dp[j] + (i - j) * umb[j]);
        }
      }
    }
    if (dp[a] >= INF)
      cout << -1 << endl;
    else
      cout << dp[a] << endl;
  }
  return 0;
}
