#include <bits/stdc++.h>
using namespace std;
long long n, a, m;
long long dp[2005][2005];
long long l[2005], r[2005], rain[2005], cost[2005];
long long func(long long idx, long long prev) {
  if (idx == a + 1) return 0;
  long long ans = dp[idx][prev];
  if (ans != -1) return ans;
  long long u[3] = {a + 1, prev, idx};
  ans = 1e18;
  if (rain[idx]) {
    for (long long i = 0; i < 3; i++) {
      if (cost[u[i]]) ans = min(ans, cost[u[i]] + func(idx + 1, u[i]));
    }
  } else {
    for (long long i = 0; i < 3; i++)
      ans = min(ans, cost[u[i]] + func(idx + 1, u[i]));
  }
  return dp[idx][prev] = ans;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  memset(dp, -1, sizeof(dp));
  cin >> a >> n >> m;
  for (long long i = 1; i <= n; i++) {
    cin >> l[i] >> r[i];
    r[i]--;
    for (long long j = l[i]; j <= r[i]; j++) rain[j] = 1;
  }
  for (long long i = 1; i <= m; i++) {
    long long pos, wt;
    cin >> pos >> wt;
    if (cost[pos])
      cost[pos] = min(cost[pos], wt);
    else
      cost[pos] = wt;
  }
  if (func(0, a + 1) < 1e18)
    cout << func(0, a);
  else
    cout << -1;
  return 0;
}
