#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxN = 2e5 + 5;
const int INF = 1e9;
int n;
ll pre[maxN], S;
struct Seg{
ll st[4*maxN];
void update(int id, int l, int r, int pos, ll val){
if (l > pos || r < pos)
return;
if (l == r){
st[id] = val;
return;
}
int mid = (l + r)/2;
update(id*2, l, mid, pos, val);
update(id*2 + 1, mid+1, r, pos, val);
st[id] = min(st[id*2], st[id*2 + 1]);
}
void update(int pos, ll val){
update(1, 1, n, pos, val);
}
int walk(int id, int l, int r, int u, int v, ll k){
if (st[id] > k || l > v || r < u)
return INF;
if (l == r)
return l;
int mid = (l + r)/2;
int tam = walk(id*2 + 1, mid+1, r, u, v, k);
if (tam == INF){
tam = walk(id*2, l, mid, u, v, k);
}
return tam;
}
int walk(int u, int v, ll k){
return walk(1, 1, n, u, v, k);
}
} seg;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
/*if (fopen(".inp", "r")){
freopen(".inp", "r", stdin);
freopen(".out", "w", stdout);
}*/
cin >> n >> S;
for (int i = 1; i <= n; ++i){
ll x; cin >> x;
pre[i] = pre[i - 1] + x;
seg.update(i, pre[i]);
}
int ans = -1;
for (int l = 0; l < n; ++l){
int tam = seg.walk(l+1, n, S + pre[l]);
if (tam != INF){
ans = max(ans, tam - l);
}
}
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKY29uc3QgaW50IG1heE4gPSAyZTUgKyA1Owpjb25zdCBpbnQgSU5GID0gMWU5OwoKaW50IG47CmxsIHByZVttYXhOXSwgUzsKCnN0cnVjdCBTZWd7CiAgICBsbCBzdFs0Km1heE5dOwoKICAgIHZvaWQgdXBkYXRlKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgcG9zLCBsbCB2YWwpewogICAgICAgIGlmIChsID4gcG9zIHx8IHIgPCBwb3MpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBpZiAobCA9PSByKXsKICAgICAgICAgICAgc3RbaWRdID0gdmFsOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGludCBtaWQgPSAobCArIHIpLzI7CiAgICAgICAgdXBkYXRlKGlkKjIsIGwsIG1pZCwgcG9zLCB2YWwpOwogICAgICAgIHVwZGF0ZShpZCoyICsgMSwgbWlkKzEsIHIsIHBvcywgdmFsKTsKICAgICAgICBzdFtpZF0gPSBtaW4oc3RbaWQqMl0sIHN0W2lkKjIgKyAxXSk7CiAgICB9CgogICAgdm9pZCB1cGRhdGUoaW50IHBvcywgbGwgdmFsKXsKICAgICAgICB1cGRhdGUoMSwgMSwgbiwgcG9zLCB2YWwpOwogICAgfQoKICAgIGludCB3YWxrKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYsIGxsIGspewogICAgICAgIGlmIChzdFtpZF0gPiBrIHx8IGwgPiB2IHx8IHIgPCB1KQogICAgICAgICAgICByZXR1cm4gSU5GOwogICAgICAgIGlmIChsID09IHIpCiAgICAgICAgICAgIHJldHVybiBsOwogICAgICAgIGludCBtaWQgPSAobCArIHIpLzI7CiAgICAgICAgaW50IHRhbSA9IHdhbGsoaWQqMiArIDEsIG1pZCsxLCByLCB1LCB2LCBrKTsKICAgICAgICBpZiAodGFtID09IElORil7CiAgICAgICAgICAgIHRhbSA9IHdhbGsoaWQqMiwgbCwgbWlkLCB1LCB2LCBrKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRhbTsKICAgIH0KCiAgICBpbnQgd2FsayhpbnQgdSwgaW50IHYsIGxsIGspewogICAgICAgIHJldHVybiB3YWxrKDEsIDEsIG4sIHUsIHYsIGspOwogICAgfQp9IHNlZzsKCmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIC8qaWYgKGZvcGVuKCIuaW5wIiwgInIiKSl7CiAgICAgICAgZnJlb3BlbigiLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9Ki8KICAgIGNpbiA+PiBuID4+IFM7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpewogICAgICAgIGxsIHg7IGNpbiA+PiB4OwogICAgICAgIHByZVtpXSA9IHByZVtpIC0gMV0gKyB4OwogICAgICAgIHNlZy51cGRhdGUoaSwgcHJlW2ldKTsKICAgIH0KICAgIGludCBhbnMgPSAtMTsKICAgIGZvciAoaW50IGwgPSAwOyBsIDwgbjsgKytsKXsKICAgICAgICBpbnQgdGFtID0gc2VnLndhbGsobCsxLCBuLCBTICsgcHJlW2xdKTsKICAgICAgICBpZiAodGFtICE9IElORil7CiAgICAgICAgICAgIGFucyA9IG1heChhbnMsIHRhbSAtIGwpOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgYW5zOwoKICAgIHJldHVybiAwOwp9