#include using namespace std; typedef long long ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vvi; typedef vector vvvi; typedef vector vvvvi; typedef vector vii; #define x first #define y second #define pb push_back #define eb emplace_back #define all(v) (v).begin(), (v).end() ll get_close(const vi& A, const vi& B, ll t) { ll i = 0, j = B.size()-1; ll best = A[0]+B[0]; while (i < A.size() && j >= 0) { ll v = A[i] + B[j]; if (abs(v-t) < abs(best-t)) { best = v; } if (v < t) { i++; } else { j--; } } return best; } ld best(ld r1, ld r2, ld t) { if (abs(r1-t) < abs(r2-t)) { return r1; } else { return r2; } } const ll INF = 4'000'000'000'000'000'000; void run() { ll n, k, t; cin >> n >> k >> t; vi A(n); ll s = 0; for (ll i = 0; i < n; i++) { cin >> A[i]; s += A[i]; } sort(all(A)); set T1{-INF,INF}; set T2{-INF,INF}; ld res = ((ld) s)/n; for (ll i = 0; i < n; i++) { if (k >= 1) res = best(res, ((ld)s-A[i])/(n-1),t); for (ll j = i+1; j < n; j++) { if (k >= 2) res = best(res, ((ld)s-A[i]-A[j])/(n-2),t); auto p11 = T1.lower_bound(s-A[i]-A[j]-t*(n-3)); auto p12 = T1.lower_bound(s-A[i]-A[j]-t*(n-3)); p12--; auto p21 = T2.lower_bound(s-A[i]-A[j]-t*(n-4)); auto p22 = T2.lower_bound(s-A[i]-A[j]-t*(n-4)); p22--; if (k >= 3) res = best(res, ((ld)s-A[i]-A[j]-*p11)/(n-3),t); if (k >= 3) res = best(res, ((ld)s-A[i]-A[j]-*p12)/(n-3),t); if (k >= 4) res = best(res, ((ld)s-A[i]-A[j]-*p21)/(n-4),t); if (k >= 4) res = best(res, ((ld)s-A[i]-A[j]-*p22)/(n-4),t); } T1.insert(A[i]); for (ll j = 0; j < i; j++) { T2.insert(A[i]+A[j]); } } cout << abs(res - t) << endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout << fixed << setprecision(20); run(); return 0; }