#include <bits/stdc++.h>
using namespace std;
long long dp[2005], wi[2005];
bool rain[2005];
int main() {
  long long a, m, n;
  while (~scanf("%lld%lld%lld", &a, &n, &m)) {
    memset(rain, false, sizeof(rain));
    memset(wi, 0, sizeof(wi));
    for (int i = 1; i <= n; i++) {
      long long l, r;
      scanf("%lld%lld", &l, &r);
      for (int i = l; i < r; i++) rain[i] = true;
    }
    for (int i = 1; i <= m; i++) {
      long long xi, pi;
      scanf("%lld%lld", &xi, &pi);
      if (!wi[xi])
        wi[xi] = pi;
      else
        wi[xi] = min(wi[xi], pi);
    }
    fill(dp, dp + 2005, 0x3f3f3f3f);
    dp[0] = 0;
    for (int i = 1; i <= a; i++) {
      if (!rain[i - 1])
        dp[i] = dp[i - 1];
      else {
        for (int j = 0; j < i; j++) {
          if (wi[j]) {
            dp[i] = min(dp[i], dp[j] + (long long)(i - j) * wi[j]);
          }
        }
      }
    }
    if (dp[a] == 0x3f3f3f3f)
      printf("-1\n");
    else
      printf("%lld\n", dp[a]);
  }
  return 0;
}
