#include <bits/stdc++.h>
using namespace std;
int seg[2003], um[2003];
int a, n, m;
long long dp[2003][2003];
long long sol(int p, int u) {
  if (p == a) return 0;
  if (dp[p][u] != -1) return dp[p][u];
  long long ans = 1e14;
  if (seg[p]) {
    if (u != a + 1) {
      if (um[p]) {
        ans = min(ans, sol(p + 1, p) + um[p]);
      }
      ans = min(ans, sol(p + 1, u) + um[u]);
    } else {
      if (um[p]) ans = min(ans, sol(p + 1, p) + um[p]);
    }
  } else {
    ans = min(ans, sol(p + 1, a + 1));
    if (u != a + 1) {
      ans = min(ans, sol(p + 1, u) + um[u]);
    }
    if (um[p]) {
      ans = min(ans, sol(p + 1, p) + um[p]);
    }
  }
  return dp[p][u] = ans;
}
int main() {
  scanf("%d%d%d", &a, &n, &m);
  memset(dp, -1, sizeof dp);
  for (int i = 0; i < n; i++) {
    int l, r;
    scanf("%d%d", &l, &r);
    for (int i = l; i < r; i++) {
      seg[i] = 1;
    }
  }
  for (int i = 0; i < m; i++) {
    int p, w;
    scanf("%d%d", &p, &w);
    if (um[p])
      um[p] = min(um[p], w);
    else
      um[p] = w;
  }
  long long ans = sol(0, a + 1);
  if (ans > 1e13)
    puts("-1");
  else
    printf("%lld", ans);
  return 0;
}
