#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 2005;
int a, n, m;
int dp[maxn];
pair<int, int> ub[maxn], rain[maxn];
int main() {
  while (~scanf("%d%d%d", &a, &n, &m)) {
    for (int i = 0; i < n; ++i) {
      scanf("%d%d", &rain[i].first, &rain[i].second);
    }
    for (int i = 0; i < m; ++i) {
      scanf("%d%d", &ub[i].first, &ub[i].second);
    }
    sort(ub, ub + m);
    sort(rain, rain + n);
    rain[n] = pair<int, int>(inf, inf);
    memset(dp, inf, sizeof dp);
    int rpt = 0;
    bool flag = false;
    for (int i = 0; i <= a; ++i) {
      if (i > rain[rpt].second) ++rpt;
      flag = rain[rpt].first < i && i <= rain[rpt].second;
      if (!flag) {
        if (rpt == 0)
          dp[i] = 0;
        else
          dp[i] = dp[rain[rpt - 1].second];
      } else {
        for (int j = 0; j < m; ++j) {
          if (ub[j].first > i) break;
          int temp = (i - ub[j].first) * ub[j].second;
          dp[i] = min(dp[i], dp[ub[j].first] + temp);
        }
      }
    }
    printf("%d\n", dp[a] == inf ? -1 : dp[a]);
  }
  return 0;
}
