#include<stdio.h>
#include<queue>
using namespace std;
int n, t;
int D[121212];
int f(int x) {
priority_queue<int>Q;
int i;
for (i = 0; i < x; i++) {
Q.push(-D[i]);
}
for (i = x; i < n; i++) {
int now = Q.top();
Q.pop();
Q.push(now - D[i]);
}
while (Q.size() > 1)Q.pop();
return -Q.top() <= t;
}
int main() {
int i, j;
scanf("%d%d", &n, &t);
for (i = 0; i < n; i++)scanf("%d", &D[i]);
int s = 1, e = n;
int ans;
while (s <= e) {
int m = (s + e) / 2;
if (f(m)) {
ans = m;
e = m - 1;
}
else s = m + 1;
}
printf("%d", ans);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8cXVldWU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCB0OwppbnQgRFsxMjEyMTJdOwppbnQgZihpbnQgeCkgewoJcHJpb3JpdHlfcXVldWU8aW50PlE7CglpbnQgaTsKCWZvciAoaSA9IDA7IGkgPCB4OyBpKyspIHsKCQlRLnB1c2goLURbaV0pOwoJfQoJZm9yIChpID0geDsgaSA8IG47IGkrKykgewoJCWludCBub3cgPSBRLnRvcCgpOwoJCVEucG9wKCk7CgkJUS5wdXNoKG5vdyAtIERbaV0pOwoJfQoJd2hpbGUgKFEuc2l6ZSgpID4gMSlRLnBvcCgpOwoJcmV0dXJuIC1RLnRvcCgpIDw9IHQ7Cn0KaW50IG1haW4oKSB7CglpbnQgaSwgajsKCXNjYW5mKCIlZCVkIiwgJm4sICZ0KTsKCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspc2NhbmYoIiVkIiwgJkRbaV0pOwoJaW50IHMgPSAxLCBlID0gbjsKCWludCBhbnM7Cgl3aGlsZSAocyA8PSBlKSB7CgkJaW50IG0gPSAocyArIGUpIC8gMjsKCQlpZiAoZihtKSkgewoJCQlhbnMgPSBtOwoJCQllID0gbSAtIDE7CgkJfQoJCWVsc2UgcyA9IG0gKyAxOwoJfQoJcHJpbnRmKCIlZCIsIGFucyk7CglyZXR1cm4gMDsKfQ==