#!/usr/bin/env python3 import sys def solve(n, s, a): a.sort(reverse=True) def feasible(t): required = 0 for i in range(0, n, t): if a[i] <= t: break required += a[i] if required >= s: return False return True lo, hi = 0, a[0] while hi - lo > 1: mid = (lo + hi) // 2 if feasible(mid): hi = mid else: lo = mid return hi if __name__ == '__main__': data = list(map(int, sys.stdin.buffer.read().split())) print(solve(data[0], data[1], data[2:]))