#include <bits/stdc++.h>
using namespace std;
const int N = 2002;
int a, n, s;
int has[N];
int cost[N];
bool need[N];
long long dp[N][N];
long long calc(int i, int u) {
  if (i == a) return 0;
  long long &ret = dp[i][u];
  if (ret != -1) return ret;
  ret = 1e17;
  if (need[i]) {
    if (u != s) ret = min(ret, cost[u] + calc(i + 1, u));
  } else {
    if (u != s) ret = min(ret, cost[u] + calc(i + 1, u));
    ret = min(ret, calc(i + 1, s));
  }
  if (has[i] != -1) ret = min(ret, cost[has[i]] + calc(i + 1, has[i]));
  return ret;
}
int main() {
  scanf("%d%d%d", &a, &n, &s);
  for (int i = 0; i < n; ++i) {
    int l, r;
    scanf("%d%d", &l, &r);
    for (int i = l; i + 1 <= r; ++i) need[i] = true;
  }
  memset(has, -1, sizeof(has));
  for (int i = 0; i < s; ++i) {
    int x, y;
    scanf("%d", &x);
    scanf("%d", &y);
    cost[i] = y;
    if (has[x] == -1)
      has[x] = i;
    else if (cost[has[x]] > y)
      has[x] = i;
  }
  memset(dp, -1, sizeof(dp));
  long long res = calc(0, s);
  if (res > 1e10) res = -1;
  printf("%lld\n", res);
  return 0;
}
