#include <bits/stdc++.h>
#pragma GCC optimize "O3"
using namespace std;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const int N = 2e5 + 5;
long long n, d, ans;
int m;
long long ost, bak;
pair<int, int> stacja[N];
deque<pair<int, int> > fajne;
void solve() {
  cin >> d >> n >> m;
  for (int i = 1; i <= m; i++) cin >> stacja[i].first >> stacja[i].second;
  m++;
  stacja[m] = {d, 0};
  sort(stacja + 1, stacja + m + 1);
  ost = 0, bak = n;
  for (int i = 1; i <= m; i++) {
    long long trzeba = stacja[i].first - ost - bak;
    while (trzeba > 0) {
      if (fajne.empty()) {
        cout << -1 << '\n';
        return;
      }
      auto gosc = fajne.front();
      long long mogetam = min({n, trzeba, n - (bak - (gosc.first - ost))});
      if (mogetam <= 0) {
        fajne.pop_front();
        continue;
      }
      ans += mogetam * gosc.second;
      bak = bak - (gosc.first - ost) + mogetam;
      ost = gosc.first;
      trzeba = stacja[i].first - ost - bak;
    }
    while (((int)fajne.size()) && fajne.back().second >= stacja[i].second)
      fajne.pop_back();
    fajne.push_back(stacja[i]);
  }
  cout << ans << '\n';
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  solve();
  return 0;
}
