n, m = map(int, input().split())
w = [int(input()) for _ in range(n)]
v = [0 for _ in range(n+1)]
cnt = 1e5
def dfs(k, p):
global cnt, w, v
# 最优先性剪枝
if p >= cnt :
return
if k == n:
cnt = p
return
for i in range(p):
if w[k] + v[i] <= m: # 可行性剪枝
v[i] += w[k]
dfs(k+1, p)
v[i] -= w[k]
v[p] = w[k]
dfs(k+1,p+1)
v[p] = 0
w.sort()
w = w[::-1]
dfs(0,0)
print(cnt)