N,M,V,P = list(map(int,input().split()))

A = sorted(list(map(int,input().split())))

B = A[:N-P+1]

S = sum(B)

accum = [0]

for i in range(N-P+1):

    accum.append(accum[-1]+B[i])



ans = P-1



for i in range(N-P+1):

    if B[i]+M-B[-1]<0:

        continue

    if B[i]*(N-P-i)-S+accum[i+1]+M*(N-P)>=max(M*(V-P),0):

        ans += 1



print(ans)
N,M,V,P = list(map(int,input().split()))

A = sorted(list(map(int,input().split())))

B = A[:N-P+1]



S = [0]

for i in range(N-P+1):

    S.append(S[-1]+B[i])



ans = P-1



for i in range(N-P+1):

    if B[i]+M-B[-1]<0:

        continue

    if B[i]*(N-P-i)-(S[-1]-S[i+1])+M*(N-P)>=max(M*(V-P),0):

        ans += 1



print(ans)
N, M, V, P = list(map(int, input().split()))
A = sorted(list(map(int, input().split())))
B = A[: N - P + 1]
S = sum(B)
accum = [0]
for i in range(N - P + 1):
    accum.append(accum[-1] + B[i])
ans = P - 1
for i in range(N - P + 1):
    if B[i] + M - B[-1] < 0:
        continue
    if B[i] * (N - P - i) - S + accum[i + 1] + M * (N - P) >= max(M * (V - P), 0):
        ans += 1
print(ans)

N, M, V, P = list(map(int, input().split()))
A = sorted(list(map(int, input().split())))
B = A[: N - P + 1]
S = [0]
for i in range(N - P + 1):
    S.append(S[-1] + B[i])
ans = P - 1
for i in range(N - P + 1):
    if B[i] + M - B[-1] < 0:
        continue
    if B[i] * (N - P - i) - (S[-1] - S[i + 1]) + M * (N - P) >= max(M * (V - P), 0):
        ans += 1
print(ans)

-S = sum(B) -accum = [0] +S = [0] -    accum.append(accum[-1] + B[i]) +    S.append(S[-1] + B[i]) -    if B[i] * (N - P - i) - S + accum[i + 1] + M * (N - P) >= max(M * (V - P), 0): +    if B[i] * (N - P - i) - (S[-1] - S[i + 1]) + M * (N - P) >= max(M * (V - P), 0):