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 i = N - 1 while i >= s: ssum += A[i] i -= k # print(k, s, ssum) 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)