#include <stdio.h>
#include <stdlib.h>
int Partition(int*,int,int);
void QuickSort(int*,int,int);
int main () {
int n,b;
int i;
int sum=0;
scanf("%d%d",&n,&b);
int *h=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++){
scanf("%d",&h[i]);
}
QuickSort(h,0,n-1);
for(i=0;i<n;i++){
sum+=h[i];
if(sum>=b)
break;
}
printf("%d",i+1);
return 0;
}
int Partition(int *A,int low,int high){
int pivot=A[low];
while(low<high){
while(low<high && A[high]<=pivot) high--;
A[low]=A[high];
while(low<high && A[low]>=pivot) low++;
A[high]=A[low];
}
A[low]=pivot;
return low;
}
void QuickSort(int *A,int low,int high){
if(low<high){
int pivotpos=Partition(A,low,high);
QuickSort(A,low,pivotpos-1);
QuickSort(A,pivotpos+1,high);
}
}