#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 7;
int n, g, p, d, a, b, act, nxt;
long long res;
int Next[(1000000 + 6)];
pair<int, int> Stacje[(1000000 + 6)];
stack<int> S;
int main() {
  scanf("%d %d %d", &d, &g, &n);
  p = g;
  for (int i = 1; i <= n; i++) {
    scanf("%d %d", &a, &b);
    Stacje[i] = make_pair(a, b);
  }
  Stacje[0] = make_pair(0, INF);
  Stacje[n + 1] = make_pair(d, -INF);
  sort(Stacje + 1, Stacje + n + 1);
  for (int i = n + 1; i >= 0; i--) {
    while (!S.empty() && Stacje[S.top()].second > Stacje[i].second) {
      S.pop();
    }
    Next[i] = S.empty() ? -1 : S.top();
    S.push(i);
  }
  while (act != n + 1) {
    if (Stacje[Next[act]].first - Stacje[act].first <= g) {
      int dis = Stacje[Next[act]].first - Stacje[act].first;
      p -= dis;
      if (p < 0) {
        res += (-p) * (long long)Stacje[act].second;
        p = 0;
      }
      act = Next[act];
    } else {
      int dis = Stacje[act + 1].first - Stacje[act].first;
      if (dis > g) {
        break;
      }
      res += (g - p) * (long long)Stacje[act].second;
      p = g - dis;
      act++;
    }
  }
  printf("%lld\n", act != n + 1 ? -1 : res);
}
