#!/usr/bin/env python3 from bisect import bisect def find(target, used): i = min(q, bisect(ps, (target, 0))) return (p[0] for p in ps[max(0, i - 1):i + 1] if all(j not in used for j in p[1:])) (n, k, goal), xs = (list(map(int, input().split())) for _ in "__") m, e = abs(goal - (s := sum(xs)) / n), enumerate if k >= 1: m = min(m, *(abs(goal - (s - a) / (n - 1)) for a in xs)) if k >= 2: m = min(m, *(abs(goal - (s - a - b) / (n - 2)) for i, a in e(xs) for b in xs[:i])) if k >= 3: q = len(ps := sorted(((a + b, i, j) for i, a in e(xs) for j, b in e(xs[:i])), key=lambda t: t[0])) - 1 # Passing `m` twice, in case the generator is empty, because `min(m, *[])` throws an error in Python m = min(m, m, *(abs(goal - (s - a - p) / (n - 3)) for i, a in e(xs) for p in find(s - a - goal * (n - 3), (i,)))) if k >= 4: m = min(m, m, *(abs(goal - (s - a - b - p) / (n - 4)) for i, a in e(xs) for j, b in e(xs[:i]) for p in find(s - a - b - goal * (n - 4), (i, j)))) print(m)