#include <bits/stdc++.h>
using namespace std;
const int N = 300;
const int T = 400;
int n, t, r, w[N];
vector<int> candles;
int left(int time) {
  int res = 0;
  for (int i = 0; i < candles.size(); i++)
    if (time > candles[i] && time <= candles[i] + t) res++;
  return res;
}
int main() {
  cin >> n >> t >> r;
  for (int i = 0; i < n; i++) {
    cin >> w[i];
    w[i] += T;
  }
  for (int i = 0; i < 2 * T; i++) {
    bool mustPlace = 0;
    for (int j = 0; j < n; j++) {
      if (w[j] == i) {
        if (left(i) < r) {
          cout << -1 << endl;
          return 0;
        }
      } else if (w[j] > i) {
        int a = left(w[j]);
        int b = max(min(w[j] - i - 1, t), 0);
        if (a + b < r) mustPlace = 1;
      }
    }
    if (mustPlace) candles.push_back(i);
  }
  cout << candles.size() << endl;
  return 0;
}
