#include <bits/stdc++.h>
using namespace std;
const int N = 1000000;
const int M = 305;
const int mod = 10000007;
const int INF = 0x3f3f3f3f;
const long long LINF = 0x3f3f3f3f3f3f3f3f;
const double eps = 1e-9;
const double pai = acos(-1.0);
int m, t, r;
int w[M];
priority_queue<int, vector<int>, greater<int> > q;
int ans;
int main() {
  scanf("%d %d %d", &m, &t, &r);
  for (int i = 0; i < m; i++) scanf("%d", &w[i]);
  if (t < r) {
    puts("-1");
    return 0;
  }
  ans = 0;
  for (int i = 0; i < m; i++) {
    while (!q.empty() && q.top() < w[i]) q.pop();
    int len = q.size();
    if (len < r) {
      for (int j = w[i] - 1, k = 0; k < r - len; j--, k++) {
        q.push(j + t);
        ans++;
      }
    }
  }
  printf("%d\n", ans);
}
