from bisect import bisect_right N, S = map(int, input().split()) A = list(map(int, input().split())) A.sort() if sum(A) < S: exit(print(1)) if A[-1] >= S: exit(print(A[-1])) # S = 20, k=10 # [7, 9, 13, 15, 19] # k秒で終わるか? def judge(k): s = bisect_right(A, k) if s == N: return True # T = A[s:] ssum = 0 for i in range(N-1, s-1, -k): ssum += A[i] return ssum <= S ok = A[-1] ng = 0 while abs(ok-ng) > 1: mid = (ok+ng) // 2 if judge(mid): ok = mid else: ng = mid print(ok)