#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;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIG1heG4gMTAwMDAwNQojZGVmaW5lIEZPUihpICwgYSAsIGIpIGZvcihpbnQgaSA9IGEgOyBpIDw9IGI7IGkrKykKI2RlZmluZSBGQVNUIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwojZGVmaW5lIFJFUChpICwgYSAsIGIpIGZvcihpbnQgaSA9IGEgOyBpIDwgYiA7IGkrKykKIAppbnQgbiAsIHQ7CiAKaW50IGRbbWF4bl07CiAKYm9vbCBGKGludCBrKXsKICAgIHByaW9yaXR5X3F1ZXVlPGludCx2ZWN0b3I8aW50PiAsIGdyZWF0ZXI8aW50Pj4gcTsKICAgIEZPUihpICwgMSAsIGspIHEucHVzaChkW2ldKTsKIAogICAgRk9SKGkgLCBrICsgMSAsIG4pewogICAgICAgIGludCBjdXJfdGltZSA9IHEudG9wKCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBxLnB1c2goZFtpXSArIGN1cl90aW1lKTsKICAgIH0KIAogICAgaW50IG1heF90aW1lID0gMDsKICAgIHdoaWxlKCFxLmVtcHR5KCkpewogICAgICAgIGludCBjdXJfdGltZSA9IHEudG9wKCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBtYXhfdGltZSA9IG1heChtYXhfdGltZSAsIGN1cl90aW1lKTsKICAgIH0KICAgIHJldHVybiBtYXhfdGltZSA8PSB0Owp9CiAKaW50IG1haW4oKXsKIAogICAgRkFTVDsKICAgIGNpbiA+PiBuID4+IHQ7CiAgICBGT1IoaSAsIDEgLCBuKSBjaW4gPj4gZFtpXTsKIAogICAgaW50IGwgPSAwOwogICAgaW50IHIgPSBuICsgMTsKICAgIHdoaWxlKHIgLSBsID4gMSl7CiAgICAgICAgaW50IG1pZCA9IChsICsgcikgLyAyOwogICAgICAgIGlmKEYobWlkKSkgciA9IG1pZDsKICAgICAgICBlbHNlIGwgPSBtaWQ7CiAgICB9CiAKICAgIGNvdXQgPDwgcjsgIAp9CiAgICA=