require 'pp'
 
n, m, v, p = gets.chomp!.split.map(&:to_i)
a_n = gets.chomp!.split.map(&:to_i).sort!
 
# 上からp個は必ず採用できる
sum = p
last = []
p.times do
    last.unshift(a_n.pop)
end
 
if a_n.length >= v
    a_n.each do |a|
        if a + m >= last[0]
            sum += 1
        end
    end
 
    puts sum
else
    #pp last
    #pp a_n
    #puts "=========="
    sub_sum = 0
    a_n.reverse.each_with_index do |a, index|
        len = a_n.length - index
        if last[last.length - (v - len) - 1]
            if a + m > last[last.length - (v - len) - 1]
                #puts a + m
                #puts last[last.length - (v - len) - 1]
                sum += 1
            else
                t1 = sub_sum + last[0]
                t2 =  (v - (len + last.length - 1)) * m
                t3 = (t1 + t2) / (index + 1) + (((t1 + t2) % (index + 1) == 0) ? 0 : 1)
                if a + m >= t3
                    sum += 1
                end
            end
        else
            t1 = sub_sum + last[0]
            t2 =  (v - (len + last.length - 1)) * m
            t3 = (t1 + t2) / (index + 1) + (((t1 + t2) % (index + 1) == 0) ? 0 : 1)
            if a + m >= t3
                sum += 1
            end
        end
        sub_sum += a
    end
 
    puts sum
end
