from scipy.misc import comb

N, A, B = list(map(int, input().split()))

V = list(map(int, input().split()))





V.sort(reverse=True)

print((sum(V[:A]) / A))





Ath_CNT = V.count(V[A - 1])

V_than_Ath_CNT = len([v for v in V if v > V[A - 1]])

if max(V) == V[A - 1]:

    ans = 0

    for k in range(A, B + 1):

        ans += comb(Ath_CNT, k, 1)

else:

    ans = comb(Ath_CNT, A - V_than_Ath_CNT, 1)

print(ans)

from collections import Counter

from math import factorial

N, A, B = list(map(int, input().split()))

V = sorted(list(map(int, input().split())), reverse=True)



MAX_AVE = sum(V[:A]) / A

C = Counter(V)





def nCr(n, r):

    return int(factorial(n) / (factorial(r) * factorial(n - r)))





Ath_V = V[A - 1]

if Ath_V == max(V):

    ans = 0

    for r in range(A, min(B + 1, C[Ath_V] + 1)):

        ans += nCr(C[Ath_V], r)

    print(MAX_AVE)

    print(ans)



else:

    print(MAX_AVE)

    for i, v in enumerate(V):

        if v == Ath_V:

            used = i

            break

    print((nCr(C[Ath_V], A - used)))

from scipy.misc import comb

N, A, B = list(map(int, input().split()))
V = list(map(int, input().split()))
V.sort(reverse=True)
print((sum(V[:A]) / A))
Ath_CNT = V.count(V[A - 1])
V_than_Ath_CNT = len([v for v in V if v > V[A - 1]])
if max(V) == V[A - 1]:
    ans = 0
    for k in range(A, B + 1):
        ans += comb(Ath_CNT, k, 1)
else:
    ans = comb(Ath_CNT, A - V_than_Ath_CNT, 1)
print(ans)

from collections import Counter
from math import factorial

N, A, B = list(map(int, input().split()))
V = sorted(list(map(int, input().split())), reverse=True)
MAX_AVE = sum(V[:A]) / A
C = Counter(V)


def nCr(n, r):
    return int(factorial(n) / (factorial(r) * factorial(n - r)))


Ath_V = V[A - 1]
if Ath_V == max(V):
    ans = 0
    for r in range(A, min(B + 1, C[Ath_V] + 1)):
        ans += nCr(C[Ath_V], r)
    print(MAX_AVE)
    print(ans)
else:
    print(MAX_AVE)
    for i, v in enumerate(V):
        if v == Ath_V:
            used = i
            break
    print((nCr(C[Ath_V], A - used)))

-from scipy.misc import comb +from collections import Counter +from math import factorial -V = list(map(int, input().split())) -V.sort(reverse=True) -print((sum(V[:A]) / A)) -Ath_CNT = V.count(V[A - 1]) -V_than_Ath_CNT = len([v for v in V if v > V[A - 1]]) -if max(V) == V[A - 1]: +V = sorted(list(map(int, input().split())), reverse=True) +MAX_AVE = sum(V[:A]) / A +C = Counter(V) + + +def nCr(n, r): +    return int(factorial(n) / (factorial(r) * factorial(n - r))) + + +Ath_V = V[A - 1] +if Ath_V == max(V): -    for k in range(A, B + 1): -        ans += comb(Ath_CNT, k, 1) +    for r in range(A, min(B + 1, C[Ath_V] + 1)): +        ans += nCr(C[Ath_V], r) +    print(MAX_AVE) +    print(ans) -    ans = comb(Ath_CNT, A - V_than_Ath_CNT, 1) -print(ans) +    print(MAX_AVE) +    for i, v in enumerate(V): +        if v == Ath_V: +            used = i +            break +    print((nCr(C[Ath_V], A - used)))