object Main extends App {
  val Array(n,c,k) = readLine.split(" ").map{_.toInt}
  val t = (1 to n).map{_ => readInt}.toArray.sorted
  
  var ans = 0
  var i = 0
  var t_temp = t
  
  while (i < n) {
    ans += 1
    val c_th_id = t(Array(n-1,i+c-1).min)
    val num_within_k = t_temp.takeWhile{_ <= t(i)+k}.length
    
    if(c <= num_within_k) {
      i += c
      t_temp = t_temp.drop(c)
    } else {
      i += num_within_k
      t_temp = t_temp.drop(num_within_k)
    }
  }
  
  println(ans)
}