#include<iostream>
#include<algorithm>
#include<vector>
#include<iomanip>
#include<map>
using namespace std;
typedef long long ll;

ll COM(ll n, ll k) {
	if (k < 0 || n < k) return 0;
	int64_t ret = 1;
	for (int64_t i = 1; i <= k; ++i) {
		ret *= n--;
		ret /= i;
	}
	return ret;
}

int main() {
	ll n, a, b;
	cin >> n >> a >> b;
	ll v[n];
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	sort(v, v + n);
	reverse(v, v + n);
	ll sum = 0;
	for (int i = 0; i < a; i++) {
		sum += v[i];
	}
	map<ll, ll>mp1;
	map<ll, ll>mp2;
	printf("%lf\n", (double)sum / a);
	sum = 0;
	if (v[0] == v[a - 1]) {
		int num = 0;
		for (int i = 0; i < n; i++) {
			if (v[i] == v[0])num++;
		}
		for (int i = a; i <= b; i++) {
			sum += COM(num, i);
		}
		cout << sum << endl;
	}
	else {
		for (int i = 0; i < a; i++) {
			mp1[v[i]]++;
		}
		for (int i = 0; i < n; i++) {
			mp2[v[i]]++;
		}
		cout << COM(mp2[v[a - 1]], mp1[v[a - 1]]) << endl;
	}
}
