# -*- coding: utf-8 -*-

from statistics import mean

from math import factorial as fact



n,a,b = list(map(int, input().split()))

v = sorted([int(x) for x in input().split()], reverse=True)

sel = v[:a]

print((mean(sel)))



vn = v.count(sel[-1])

na = sel.count(sel[-1])

nb = min(b-a, vn-na)

# print(na,nb,vn,len(sel),sel[-1])



if na!=len(sel):

    print((fact(vn)//(fact(na)*fact(vn-na))))

elif nb==0:

    print((1))

else:

    ret = 0

    for bi in range(na,na+nb+1):

        ret += fact(vn)//(fact(bi)*fact(vn-bi))

    print(ret)

from math import factorial

from collections import Counter

def combination(a,b):

    if a < b:

        a, b = b, a

    comb = 1

    for i in range(b):

        comb *= a-i

    comb //= factorial(b)

    return comb



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

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

V.sort(reverse = True)

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

S = list( set(V))

S.sort(reverse = True)

CV = Counter(V)

ans = 0

K = CV[S[0]]

if A <= K:

    for i in range(A, min(K, B)+1):

        ans += combination(K, i)

else:

    cnt = A

    for x in S:

        if cnt <= CV[x]:

            ans += combination(CV[x],cnt)

            break

        else:

            cnt -= CV[x]

print(ans)
# -*- coding: utf-8 -*-
from statistics import mean
from math import factorial as fact

n, a, b = list(map(int, input().split()))
v = sorted([int(x) for x in input().split()], reverse=True)
sel = v[:a]
print((mean(sel)))
vn = v.count(sel[-1])
na = sel.count(sel[-1])
nb = min(b - a, vn - na)
# print(na,nb,vn,len(sel),sel[-1])
if na != len(sel):
    print((fact(vn) // (fact(na) * fact(vn - na))))
elif nb == 0:
    print((1))
else:
    ret = 0
    for bi in range(na, na + nb + 1):
        ret += fact(vn) // (fact(bi) * fact(vn - bi))
    print(ret)

from math import factorial
from collections import Counter


def combination(a, b):
    if a < b:
        a, b = b, a
    comb = 1
    for i in range(b):
        comb *= a - i
    comb //= factorial(b)
    return comb


N, A, B = list(map(int, input().split()))
V = list(map(int, input().split()))
V.sort(reverse=True)
print((sum(V[:A]) / A))
S = list(set(V))
S.sort(reverse=True)
CV = Counter(V)
ans = 0
K = CV[S[0]]
if A <= K:
    for i in range(A, min(K, B) + 1):
        ans += combination(K, i)
else:
    cnt = A
    for x in S:
        if cnt <= CV[x]:
            ans += combination(CV[x], cnt)
            break
        else:
            cnt -= CV[x]
print(ans)

-# -*- coding: utf-8 -*- -from statistics import mean -from math import factorial as fact +from math import factorial +from collections import Counter -n, a, b = list(map(int, input().split())) -v = sorted([int(x) for x in input().split()], reverse=True) -sel = v[:a] -print((mean(sel))) -vn = v.count(sel[-1]) -na = sel.count(sel[-1]) -nb = min(b - a, vn - na) -# print(na,nb,vn,len(sel),sel[-1]) -if na != len(sel): -    print((fact(vn) // (fact(na) * fact(vn - na)))) -elif nb == 0: -    print((1)) + +def combination(a, b): +    if a < b: +        a, b = b, a +    comb = 1 +    for i in range(b): +        comb *= a - i +    comb //= factorial(b) +    return comb + + +N, A, B = list(map(int, input().split())) +V = list(map(int, input().split())) +V.sort(reverse=True) +print((sum(V[:A]) / A)) +S = list(set(V)) +S.sort(reverse=True) +CV = Counter(V) +ans = 0 +K = CV[S[0]] +if A <= K: +    for i in range(A, min(K, B) + 1): +        ans += combination(K, i) -    ret = 0 -    for bi in range(na, na + nb + 1): -        ret += fact(vn) // (fact(bi) * fact(vn - bi)) -    print(ret) +    cnt = A +    for x in S: +        if cnt <= CV[x]: +            ans += combination(CV[x], cnt) +            break +        else: +            cnt -= CV[x] +print(ans)