#include <bits/stdc++.h>
 
using namespace std;
 
#define ll long long
#define maxn 1000005
#define FOR(i , a , b) for(int i = a ; i <= b; i++)
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define REP(i , a , b) for(int i = a ; i < b ; i++)
 
int n , t;
 
int d[maxn];
 
bool F(int k){
    priority_queue<int,vector<int> , greater<int>> q;
    FOR(i , 1 , k) q.push(d[i]);
 
    FOR(i , k + 1 , n){
        int cur_time = q.top();
        q.pop();
        q.push(d[i] + cur_time);
    }
 
    int max_time = 0;
    while(!q.empty()){
        int cur_time = q.top();
        q.pop();
        max_time = max(max_time , cur_time);
    }
    return max_time <= t;
}
 
int main(){
 
    FAST;
    cin >> n >> t;
    FOR(i , 1 , n) cin >> d[i];
 
    int l = 0;
    int r = n + 1;
    while(r - l > 1){
        int mid = (l + r) / 2;
        if(F(mid)) r = mid;
        else l = mid;
    }
 
    cout << r;  
}
    