# ABC 057 D

import math

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

v = sorted(list(map(int,input().split())))[::-1]



def nCr(n,r):

    return (math.factorial(n)//(math.factorial(r)*math.factorial(n-r)))



a = sum(v[:A])/A

print(a)



s = 0

for k in range(N):

    if v[A-1] == v[k]:

        s += 1

t = 0

for k in range(A):

    if v[A-1] == v[k]:

        t += 1

u = 0

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

    if v[A-1] == v[k]:

        u += 1



if a != v[A-1]:

    print((nCr(s,t)))

else:

    c = 0

    for k in range(A,A+u):

        c += nCr(s,k)

    print(c)

import math

def nCr(n,r):

    return (math.factorial(n)//(math.factorial(r)*math.factorial(n-r)))

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

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

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



t = v[A-1]

m, u = 0, 0

for k in range(A):

    if v[k] == t:

        m += 1

for k in range(A,N):

    if v[k] == t:

        u += 1

if m == A:

    ans = 0

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

        ans += nCr(m+u,k)

    print(ans)

else:

    print((nCr(m+u,m)))

# ABC 057 D
import math

N, A, B = list(map(int, input().split()))
v = sorted(list(map(int, input().split())))[::-1]


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


a = sum(v[:A]) / A
print(a)
s = 0
for k in range(N):
    if v[A - 1] == v[k]:
        s += 1
t = 0
for k in range(A):
    if v[A - 1] == v[k]:
        t += 1
u = 0
for k in range(A - 1, B):
    if v[A - 1] == v[k]:
        u += 1
if a != v[A - 1]:
    print((nCr(s, t)))
else:
    c = 0
    for k in range(A, A + u):
        c += nCr(s, k)
    print(c)

import math


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


N, A, B = list(map(int, input().split()))
v = sorted(list(map(int, input().split())), reverse=True)
print((sum(v[:A]) / A))
t = v[A - 1]
m, u = 0, 0
for k in range(A):
    if v[k] == t:
        m += 1
for k in range(A, N):
    if v[k] == t:
        u += 1
if m == A:
    ans = 0
    for k in range(A, min(A + u + 1, B + 1)):
        ans += nCr(m + u, k)
    print(ans)
else:
    print((nCr(m + u, m)))

-# ABC 057 D - -N, A, B = list(map(int, input().split())) -v = sorted(list(map(int, input().split())))[::-1] -a = sum(v[:A]) / A -print(a) -s = 0 -for k in range(N): -    if v[A - 1] == v[k]: -        s += 1 -t = 0 +N, A, B = list(map(int, input().split())) +v = sorted(list(map(int, input().split())), reverse=True) +print((sum(v[:A]) / A)) +t = v[A - 1] +m, u = 0, 0 -    if v[A - 1] == v[k]: -        t += 1 -u = 0 -for k in range(A - 1, B): -    if v[A - 1] == v[k]: +    if v[k] == t: +        m += 1 +for k in range(A, N): +    if v[k] == t: -if a != v[A - 1]: -    print((nCr(s, t))) +if m == A: +    ans = 0 +    for k in range(A, min(A + u + 1, B + 1)): +        ans += nCr(m + u, k) +    print(ans) -    c = 0 -    for k in range(A, A + u): -        c += nCr(s, k) -    print(c) +    print((nCr(m + u, m)))