#include <bits/stdc++.h>
using namespace std;
long long int INF = 1000000000000LL;
long long int acc[2010], w[2010];
vector<pair<long long int, long long int> > umb[2010];
long long int a, n, m;
char memo[2010][2010];
long long int dp[2010][2010];
long long int solve(long long int pos, long long int id) {
  if (acc[pos] > 0 && id == 0) return INF;
  if (pos == a) return w[id];
  if (memo[pos][id]) return dp[pos][id];
  memo[pos][id] = 1;
  long long int ans = INF;
  ans = min(ans, w[id] + solve(pos + 1, id));
  ans = min(ans, w[id] + solve(pos + 1, 0));
  for (long long int i = 0; i < umb[pos].size(); i++)
    ans = min(ans, w[id] + solve(pos + 1, umb[pos][i].second));
  return dp[pos][id] = ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> a >> n >> m;
  long long int l, r, x;
  for (long long int i = 0; i < n; i++) {
    cin >> l >> r;
    acc[l + 1]++;
    acc[r + 1]--;
  }
  for (long long int i = 1; i <= a; i++) acc[i] += acc[i - 1];
  for (long long int i = 1; i <= m; i++) {
    cin >> x >> w[i];
    umb[x].push_back(make_pair(w[i], i));
  }
  long long int ans = solve(0, 0);
  if (ans >= INF) ans = -1;
  cout << ans << "\n";
  return 0;
}
