#include <bits/stdc++.h>
using namespace std;
int a, n, m;
int rain[2100];
int umbrellas[2100];
int dp[2100][2100];
int OO = 1e9;
int solve(int i, int u) {
  if (i == a) return 0;
  int &ret = dp[i][u];
  if (ret != -1) return ret;
  ret = OO;
  if (u != a + 2) {
    ret = solve(i + 1, u) + umbrellas[u];
  }
  if (umbrellas[i]) {
    ret = min(ret, solve(i + 1, i) + umbrellas[i]);
  }
  if (!(rain[i] && rain[i + 1] && rain[i] == rain[i + 1])) {
    ret = min(ret, solve(i + 1, a + 2));
  }
  return ret;
}
int main() {
  cin.tie(0);
  cin.sync_with_stdio(0);
  memset((dp), (-1), sizeof(dp));
  cin >> a >> n >> m;
  int rr = 1;
  for (int i = 0; i < n; i++) {
    int l, r;
    cin >> l >> r;
    for (int j = l; j <= r; j++) {
      rain[j] = i + 1;
    }
  }
  for (int i = 0; i < m; i++) {
    int pos, weight;
    cin >> pos >> weight;
    if (!umbrellas[pos])
      umbrellas[pos] = weight;
    else
      umbrellas[pos] = min(umbrellas[pos], weight);
  }
  int ans = solve(0, a + 2);
  if (ans >= OO) ans = -1;
  cout << ans;
}
