#!/usr/bin/env python3 #@EXPECTED_RESULTS@: RUN_TIME_ERROR, WRONG_ANSWER # WA: Does not consider that the optimum can be not at an integer jump, but at the end of the interval. # RE: As array of interesting times can be empty. n, m = [int(i) for i in input().split()] xs = [int(i) for i in input().split()] # local minimum is whenever s(f) jumps or at f=M # WA: DO NOT do f = M # now all other interesting points fs = {} for x in xs: maxv = (m * x) // 1000 for i in range(1, maxv + 1): f = (i * 1000) / x if not f in fs: fs[f] = 1 else: fs[f] += 1 # enumerate in sorted order # with arbitrary low framerate each level takes 1 frame sf = n ts = [] for f in sorted(fs): t = sf / f ts.append(t) sf += fs[f] # RE: empty minimum print(min(ts))