t = 1 #t = int(input()) def check(x): cur = 0 now = 0 for i in range(n): if a[i] <= x: break if now == 0: cur += a[i] now = (now+1)%x if cur <= s: return True return False for _ in range(t): n,s = map(int, input().split()) a = list(map(int, input().split())) a.sort(reverse = True) l = 10**18 r = 0 s -= 1 while abs(l-r) > 1: m = (l+r)//2 if check(m): l = m else: r = m print(l)