#include <bits/stdc++.h>
using namespace std;
const int maxn = 2000 + 10;
const long long INF = 0x3f3f3f3f3f3f3f3fl;
int a, n, m;
bool mark[maxn];
long long dp[maxn];
int x[maxn], p[maxn];
int main() {
  cin >> a >> n >> m;
  a++;
  for (int i = 1; i <= n; i++) {
    int l, r;
    cin >> l >> r;
    l++;
    r++;
    for (int j = l; j < r; j++) mark[j] = true;
  }
  for (int i = 1; i <= m; i++) {
    cin >> x[i] >> p[i];
    x[i]++;
  }
  memset(dp, 0x3f, sizeof dp);
  dp[0] = 0;
  for (int i = 1; i <= a; i++) {
    if (!mark[i - 1]) {
      dp[i] = dp[i - 1];
    }
    for (int j = 1; j <= m; j++) {
      if (x[j] < i && dp[x[j] - 1] != INF) {
        dp[i] = min(dp[i], dp[x[j]] + (i - x[j]) * p[j]);
      }
    }
  }
  if (dp[a] == INF)
    cout << -1 << endl;
  else
    cout << dp[a] << endl;
  return 0;
}
