#include <bits/stdc++.h>
bool rain[2010], um[2010];
int w[2010];
int f[2010][2010];
inline void cmin(int &p, int x) {
  if (x < p) p = x;
}
int main() {
  memset(f, 0x3f, sizeof f);
  memset(w, 0x3f, sizeof w);
  int a, n, m, l, r;
  scanf("%d%d%d", &a, &n, &m);
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d", &l, &r);
    ++l, ++r;
    for (int j = l; j < r; ++j) rain[j] = true;
  }
  for (int i = 1; i <= m; ++i) {
    scanf("%d%d", &l, &r);
    ++l;
    um[l] = true;
    cmin(w[l], r);
  }
  f[1][0] = w[0] = 0;
  for (int i = 1; i <= a + 1; ++i) {
    for (int j = 0; j <= a + 1; ++j) {
      if (um[i]) cmin(f[i][i], f[i][j]);
      cmin(f[i][0], f[i][j]);
      if (rain[i]) {
        if (j) cmin(f[i + 1][j], f[i][j] + w[j]);
      } else {
        cmin(f[i + 1][j], f[i][j] + w[j]);
      }
    }
    if (um[i]) cmin(f[i][i], f[i][0]);
    if (!rain[i]) cmin(f[i + 1][0], f[i][0]);
    if (rain[i])
      cmin(f[i + 1][i], f[i][i] + w[i]);
    else
      cmin(f[i + 1][i], f[i][i] + w[i]);
  }
  int ans = 0x3f3f3f3f;
  for (int j = 0; j <= a + 1; ++j) cmin(ans, f[a + 1][j]);
  printf("%d", ans == 0x3f3f3f3f ? -1 : ans);
  return 0;
}
