#!/usr/bin/env python3 from bisect import bisect def find_pair(target, used): i = min(q, bisect(ps, (target, 0))) # The overlap check is done with values here, instead of with indices return (p[0] for p in ps[max(0, i - 1):i + 1] if all(t not in used for t 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, a, b) for i, a in e(xs) for b in 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 a in xs for p in find_pair(s - a - goal * (n - 3), (a,)))) if k >= 4: m = min(m, m, *(abs(goal - (s - a - b - p) / (n - 4)) for i, a in e(xs) for b in xs[:i] for p in find_pair(s - a - b - goal * (n - 4), (a, b)))) print(m)