#include<bits/stdc++.h>
using namespace std;


int main(){

    int n;
    long long k;
    cin>>n>>k;
    long long sum=0;//不适度总和
    priority_queue<long long, vector<long long>, greater<long long>> heap;
    int a[100000];
    for(int i=0;i<n;i++){
        long long a;
        cin>>a;
        heap.push(a);//入堆
    }

    int day=0;
    while(!heap.empty()){
        long long current_min = heap.top();
        heap.pop();//取出最小值
        if(sum + current_min > k ){//没有口罩可用了
            break;
        }

        sum+=current_min;
        day++;
        heap.push(current_min*2);//翻倍后再入堆
    }

    cout<<day<<endl;

}