#include <bits/stdc++.h>
using namespace std;
const int N = 2333;
const int M = 3333333;
const int INF = 123456789;
const int MOD = 420047;
void gcd(long long a, long long b, long long &d, long long &x, long long &y) {
  if (!b) {
    d = a;
    x = 1;
    y = 0;
  } else {
    gcd(b, a % b, d, y, x);
    y -= x * (a / b);
  }
}
int a, n, m, c[N], f[N][N];
bool b[N];
int main() {
  int cases = 1;
  for (int iii = 1; iii <= cases; ++iii) {
    scanf("%d%d%d", &a, &n, &m);
    for (int i = 0; i < n; ++i) {
      int x, y;
      scanf("%d%d", &x, &y);
      for (int j = x + 1; j <= y; ++j) b[j] = true;
    }
    memset(c, -1, sizeof(c));
    for (int i = 0; i < m; ++i) {
      int x, y;
      scanf("%d%d", &x, &y);
      if (c[x] == -1)
        c[x] = y;
      else
        c[x] = min(c[x], y);
    }
    memset(f, -1, sizeof(f));
    f[0][0] = 0;
    f[0][a + 1] = 0;
    for (int i = 1; i <= a; ++i) {
      if (!b[i])
        f[i][a + 1] = f[i - 1][a + 1];
      else {
        for (int j = 0; j < i; ++j) {
          if (f[i - 1][j] == -1) continue;
          if (f[i][a + 1] == -1)
            f[i][a + 1] = f[i - 1][j] + c[j];
          else
            f[i][a + 1] = min(f[i][a + 1], f[i - 1][j] + c[j]);
        }
      }
      if (c[i] != -1) f[i][i] = f[i][a + 1];
      for (int j = 0; j < i; ++j) {
        if (f[i - 1][j] == -1) continue;
        f[i][j] = f[i - 1][j] + c[j];
      }
    }
    printf("%d\n", f[a][a + 1]);
  }
}
