#include <bits/stdc++.h>
const int N = 1000007;
using namespace std;
int v[N], vis[N];
int tot[N], ans, t;
void paint(int p, int n) {
  for (int i = p; i >= 0 and n; --i, n--) {
    if (vis[i]) {
      cout << -1 << endl;
      exit(0);
    }
    ans++;
    tot[i + 1]++;
    tot[i + t + 1]--;
    vis[i] = 1;
  }
}
int query(int x) {
  int k = 0;
  for (int j = 0; j <= x; ++j) {
    k += tot[j];
  }
  return k;
}
int main() {
  int m, r, w;
  cin >> m >> t >> r;
  for (int i = 0; i < m; ++i) {
    cin >> w;
    v[w + 305] = 1;
  }
  for (int i = 1; i <= 605; ++i) {
    if (v[i] and query(i) < r) {
      paint(i - 1, r - query(i));
      if (query(i) < r) {
        cout << -1 << endl;
        return 0;
      }
    }
  }
  cout << ans << endl;
}
