N, S = map(int, input().split()) A = sorted(map(int, input().split())) T = S-1 def func(time): idx = -1 for i, a in enumerate(A): if time < a: idx = i break if idx == -1: return True B = A[idx:] SUM = 0 while B: SUM += B.pop() for _ in range(time-1): if not B: break B.pop() return SUM <= T left = 0 right = max(A) while left+1 < right: mid = (left+right)//2 if not func(mid): left = mid else: right = mid print(right)