#include <bits/stdc++.h>
using namespace std;
const int INF = 2000000000;
const double pi = acos(-1.0);
int x[1205], cc[1205];
int m, t, r;
int check(long long int n) {
  memset(cc, 0, sizeof(cc));
  long long int cnt = 0;
  for (int i = 1200; i >= 0; i--) {
    if (x[i]) {
      int l = i - t;
      int ctr = 0;
      for (int k = l; k < i; k++) ctr += cc[k];
      int rc = r - ctr;
      for (int k = l; k < i; k++) {
        if (rc == 0) break;
        if (cc[k] == 0) {
          cc[k] = 1;
          cnt++;
          rc--;
        }
      }
      if (rc > 0) return false;
    }
  }
  return cnt <= n;
}
int main() {
  ios_base ::sync_with_stdio(false);
  while (cin >> m >> t >> r) {
    memset(x, 0, sizeof(x));
    int z;
    for (int i = 0; i < m; i++) {
      cin >> z;
      x[z + 600] = 1;
    }
    long long int lb = r, ub = 1000000000;
    long long int ans = INF;
    while (lb <= ub) {
      long long int mid = (lb + ub) / 2;
      if (check(mid)) {
        ans = ((ans) < (mid) ? (ans) : (mid));
        ub = mid - 1;
      } else {
        lb = mid + 1;
      }
    }
    if (ans == INF)
      cout << -1 << endl;
    else
      cout << ans << endl;
  }
  return 0;
}
