Sean is trying to save a large file to a USB flash drive. He has n USB flash drives with capacities equal to a_1, a_2, ..., a_{n} megabytes. The file size is equal to m megabytes. 

Find the minimum number of USB flash drives needed to write Sean's file, if he can split the file between drives.


-----Input-----

The first line contains positive integer n (1 ≤ n ≤ 100) — the number of USB flash drives.

The second line contains positive integer m (1 ≤ m ≤ 10^5) — the size of Sean's file.

Each of the next n lines contains positive integer a_{i} (1 ≤ a_{i} ≤ 1000) — the sizes of USB flash drives in megabytes.

It is guaranteed that the answer exists, i. e. the sum of all a_{i} is not less than m.


-----Output-----

Print the minimum number of USB flash drives to write Sean's file, if he can split the file between drives.


-----Examples-----
Input
3
5
2
1
3

Output
2

Input
3
6
2
3
2

Output
3

Input
2
5
5
10

Output
1



-----Note-----

In the first example Sean needs only two USB flash drives — the first and the third.

In the second example Sean needs all three USB flash drives.

In the third example Sean needs only one USB flash drive and he can use any available USB flash drive — the first or the second.

Difficulty: interview

Starter code:

Solutions:
ct = 0
x = int(input())
y = int(input())
z = [int(input()) for i in range(x)]
z.sort()
z.reverse()
for i in z:
    if y <= 0:
        print(ct)
        quit()
        
    y-=i
    ct+=1
print(ct)


#!/usr/bin/env python3

def solve():
    N = int(input())
    M = int(input())
    sizes = [int(input()) for _ in range(N)]

    sizes.sort(reverse=True)

    cnt = 0
    while M > 0:
        M -= sizes[cnt]
        cnt +=1
    print(cnt)

def __starting_point():
    solve()

__starting_point()

n = int(input())
m = int(input())

v = []
for i in range(n):
    v.append(int(input()))

v = sorted(v)[::-1]

sol = 0
for i in range(0, len(v)):
    if m <= 0:
        break

    sol += 1
    m -= v[i]

print(sol)


n = int(input())
m = int(input())
p = []
for i in range(n):
    k = int(input())
    p.append(k)
p.sort()
col = 0
pos = n - 1 
while m > 0:
    m -= p[pos]
    pos -= 1
    col += 1
print(col)


n = int(input())
m = int(input())
L = [int(input()) for _ in range(n)]
r = 1
L.sort()
while m > 0:
    m = m - L[n-r]
    r+=1
print(r-1)


n=int(input())
m=int(input())
a=[0]*n
for i in range(n):
    a[i]=int(input())
a.sort(reverse=True)
k=0
z=0
while z<m:
    z+=a[k]
    k+=1
print(k)

from bisect import *
def inpList():
    return list(map(int,input().split()))
def inp():
    return int(input())
n=inp()
m=inp()
a=[]
for i in range(n):
    a.append(inp())
a.sort()
a.reverse()
for i in range(1,n):
    a[i]+=a[i-1]
print(bisect_left(a,m)+1)


#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import time

n   = int(input())
m   = int(input())
a   = []

for i in range(n):
    x = int(input())
    a.append(x)

start = time.time()

a   = sorted(a, key = lambda x: -x)
ans = 0

while(m > 0):
    m   -= a[ans]
    ans += 1


print(ans)
finish = time.time()
#print(finish - start)


n, m, v = int(input()), int(input()), 0
for i, c in enumerate(sorted((int(input()) for i in range(n)), reverse=True)):
    v += c
    if v >= m:
        print(i + 1)
        break


n = int(input())
m = int(input())
flash = []
for i in range(n):
    flash.append(int(input()))
flash.sort(key = lambda x : -x)
prefix = 0
for i in range(n):
    prefix += flash[i]
    if m <= prefix:
        print(i+1)
        break
else:
    print('?')


#In the name of Allah

from sys import stdin, stdout
input = stdin.readline

n = int(input())
m = int(input())

a = [int(input())for i in range(n)]

a.sort(reverse = True)

i = 0
cap = 0
while cap < m:
        cap += a[i]
        i += 1
stdout.write(str(i))


__author__ = 'Utena'
n=int(input())
m=int(input())
x=sorted([int(input())for i in range(n)])
t=0
for j in range(n):
    m-=x[n-j-1]
    t+=1
    if m<=0:
        break
print(t)

n=int(input())
m=int(input())
L=[]
for i in range(n):
    L.append(int(input()))
L.sort()
ans=0
while m>0:
    ans+=1
    m-=L.pop()
print(ans)


n = int(input())
size = int(input())
k = []
for m in range(n):
	k.append(int(input()))
k.sort()
num = 0
while size > 0:
	size = size - k.pop()
	num = num + 1
print(num)

n=int(input())
m=int(input())
l=[]
for i in range(n):
    l.append(int(input()))

l.sort()
k=0
r=0
i=n-1
while(i>=0):
    k+=l[i]
    r+=1
    if(k>=m):
        break
    i-=1

print(r)

n = int(input())
m = int(input())
flashed = [int(input()) for i in range(n)]

flashed.sort(reverse=True)
counter, sumSize = 0, 0
for size in flashed:
    sumSize += size
    counter += 1
    if sumSize >= m:
        break
print(counter)


r = lambda: int(input())
n = r()
m = r()
a = sorted([r() for i in range(n)], reverse = 1)
cnt = cur = i = 0
while cur < m:
    cur += a[i]
    cnt += 1
    i += 1
print(cnt)


n = int(input())
size = int(input())
ary = [int(input()) for _ in range(n)]

ary.sort()
ary.reverse()

count = 0
while size > 0:
	count += 1
	size -= ary[count - 1]

print(count)


n=int(input())
m=int(input())
USB=[]
for i in range(n):
    USB.append(int(input()))
USB.sort()
for i in range(n):
    nu=i
    m-=USB[n-1-i]
    if m<=0:
        break
print(nu+1)
        


n=int(input())
m=int(input())
k=0;c=0;o=0
a=[]
for i in range(n):
    k=int(input())
    a.append(k)
a.sort()
for i in range(n-1,-1,-1):
    c+=a[i]
    o+=1
    if c>=m:
        print(o)
        break


USBs = int(input())
fileSize = int(input())
USBList = []
for USB in range(USBs):
    USBList.append(int(input()))

USBCount = 0
storedAmount = 0
while storedAmount < fileSize:
    USBCount += 1
    currentUSB = max(USBList)
    storedAmount += currentUSB
    USBList.remove(currentUSB)

print(USBCount)

n = int(input())
m = int(input())
a = [0]*n
for i in range(n):
	a[i] = int(input())

a.sort(reverse=True)
for i in range(0, n):
	m -= a[i]
	if m <= 0:
		print(i+1)
		break


n = int(input())
m = int(input())

lst = []
rem = m

for i in range(n):
    tmp = int(input())
    lst.append(tmp)

lst.sort(reverse=True)

for i, x in enumerate(lst):
    rem -= x
    if rem <= 0:
        break

print(i+1)


n=int(input())
m=int(input())
k=sorted([int(input()) for i in range(n)])[::-1]
b=k[0]
s=1
for i in range(1,n+1):
    if b>m or b==m:
        print(s)
        break
    else:
        b+=k[i]
        s+=1

n = int(input())
m = int(input())
a = []
counter = 0

for i in range(n):
    a.append(int(input()))

a.sort()

for i in reversed(a):
    if m> 0:
        m -= i
        counter += 1

print(counter)