# child_count = 3
# candy_sum = 70
# requirement_list = [20, 30, 10]
N = 2 # 入力は2行
# for i in range(N):
#     line = input()
#     print(type(line)) # str
#     print(line) # 1行目だけ
for i in range(N):
    line = input() # 入力を1行受け取る
    if i == 0: # 1行目
        child_count, candy_sum = map(int, line.split())
    else: # 2行目
        requirement_list = list(map(int, line.split()))
# print(child_count, candy_sum, requirement_list)
satisfied_count = 0
requirement_list.sort() # 昇順に並び替え
requirement_list.reverse() # 降順に並び替え
# print(requirement_list)
# 最後の人を考慮漏れ
for i in range(child_count): # len(requirement_list) == child_count
    requirement = requirement_list[i]
    # print(i, candy_sum, requirement)
    if i == child_count-1: # 最後の人(残りのお菓子がほしい数と一致するか)
        if requirement == candy_sum:
            satisfied_count += 1
    else: # 1人目からchild_count-1人目まで
        if requirement <= candy_sum:
            candy_sum -= requirement
            satisfied_count += 1
# for requirement in requirement_list:
#     if requirement <= candy_sum:
#         candy_sum -= requirement
#         satisfied_count += 1
#         print(requirement, candy_sum)
#     # requirement > candy_sumのときは何もしない。
#     # candy_sum = 20のケースがあるので、
#     # [30, 20, 10]のときに最初が30だからといってbreakもしない
print(satisfied_count)
