import java.io.*;
import java.util.*;
public class platformplacing_xiaowuc1 {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
    StringTokenizer st = new StringTokenizer(br.readLine());
    int n = Integer.parseInt(st.nextToken());
    int ld = Integer.parseInt(st.nextToken());
    int rd = Integer.parseInt(st.nextToken());
    long[] v = new long[n];
    for(int i = 0; i < n; i++) {
      v[i] = Integer.parseInt(br.readLine());
      v[i] *= 2;
    }
    Arrays.sort(v);
    for(int i = 0; i + 1 < n; i++) {
      if(v[i+1] - v[i] < 2 * ld) {
        pw.println("-1");
        pw.close();
      }
    }
    long lhs = -(1L << 60);
    long ret = 0;
    for(int i = 0; i < n; i++) {
      long rhs = (1L << 60);
      if(i+1 < n) rhs = v[i+1] - ld;
      long maxallowed = Math.min(rd, Math.min(v[i] - lhs, rhs - v[i]));
      ret += maxallowed;
      lhs = v[i] + maxallowed;
    }
    pw.println(ret);
    pw.close();
  }
}
