#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mapll map<ll,ll>
#define mapint map<int,int>
#define pb push_back
#define f(i, n) for (ll i = 0; i < n; i++)
#define in(a, n) vector<ll> a(n); f(i, n) cin >> a[i];
#define MOD 1000000007
#define eod cout<<endl;return
bool isPrime(ll n);
ll lg(ll a, ll b);
ll power(ll a, ll b, ll mod = MOD);
ll sumofdigits(ll x);
ll factors(ll x);
void solve() {
ll n,k;cin>>n>>k;
ll a[n+1];
for(int i=1;i<=n;i++){cin>>a[i];}
mapll mp1,mp2;
ll sum=0;
mp1[0]=1;
for(int i=1;i<=n;i++){
if(!mp1[sum] && sum!=0){
mp1[sum]=i;}
sum+=a[i];
}
sum=0;
mp2[0]=0;
for(int i=n;i>=1;i--){
if(!mp2[sum] && sum!=0){
mp2[sum]=n-i;}
sum+=a[i];
}ll ans=0;
for(auto [x,y]:mp1){
if((sum-x-k)==0){ans=max(n-y+1,ans);}
else if(mp2[sum-x-k]){ans=max(n-y+1-mp2[sum-x-k],ans);}
}
cout<<ans<<endl;
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr); std::cout.tie(nullptr);
solve();
return 0;
}
bool isPrime(ll n) {
if (n <= 1) return false;
if (n == 2 || n == 3) return true;
for (ll i = 2; i * i <= n; ++i) {
if (n % i == 0) return false;
}
return true;
}
ll lg(ll a, ll b) {
if (b <= 1 || a < b) return 0;
ll k = 0;
while (a >= b) {
a /= b;
k++;
}
return k;
}
ll power(ll a, ll b, ll mod) {
ll res = 1;
while (b) {
if (b & 1) res = (res * a) % mod;
a = (a * a) % mod;
b >>= 1;
}
return res;
}
ll sumofdigits(ll x) {
ll k = 0;
while (x > 0) {
k += x % 10;
x /= 10;
}
return k;
}
ll factors(ll x) {
ll f = 0;
for (ll i = 1; i * i <= x; i++) {
if (x % i == 0) {
f += 2;
if (x == i * i) f--;
}
}
return f;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbWFwbGwgbWFwPGxsLGxsPgojZGVmaW5lIG1hcGludCBtYXA8aW50LGludD4KI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmKGksIG4pIGZvciAobGwgaSA9IDA7IGkgPCBuOyBpKyspCiNkZWZpbmUgaW4oYSwgbikgdmVjdG9yPGxsPiBhKG4pOyBmKGksIG4pIGNpbiA+PiBhW2ldOwojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CiNkZWZpbmUgZW9kIGNvdXQ8PGVuZGw7cmV0dXJuCgpib29sIGlzUHJpbWUobGwgbik7CmxsIGxnKGxsIGEsIGxsIGIpOwpsbCBwb3dlcihsbCBhLCBsbCBiLCBsbCBtb2QgPSBNT0QpOwpsbCBzdW1vZmRpZ2l0cyhsbCB4KTsKbGwgZmFjdG9ycyhsbCB4KTsKCnZvaWQgc29sdmUoKSB7CiAgIGxsIG4saztjaW4+Pm4+Pms7CiAgIGxsIGFbbisxXTsKICAgZm9yKGludCBpPTE7aTw9bjtpKyspe2Npbj4+YVtpXTt9CiAgIG1hcGxsIG1wMSxtcDI7CiAgIGxsIHN1bT0wOwogICBtcDFbMF09MTsKICAgZm9yKGludCBpPTE7aTw9bjtpKyspewogICAgICAgaWYoIW1wMVtzdW1dICYmIHN1bSE9MCl7CiAgICAgICBtcDFbc3VtXT1pO30KICAgICAgIHN1bSs9YVtpXTsKICAgfQogICBzdW09MDsKICAgbXAyWzBdPTA7CiAgIGZvcihpbnQgaT1uO2k+PTE7aS0tKXsKICAgICBpZighbXAyW3N1bV0gJiYgc3VtIT0wKXsKICAgICAgIG1wMltzdW1dPW4taTt9CiAgICAgICBzdW0rPWFbaV07CiAgIH1sbCBhbnM9MDsKICAgZm9yKGF1dG8gW3gseV06bXAxKXsKICAgICAgIGlmKChzdW0teC1rKT09MCl7YW5zPW1heChuLXkrMSxhbnMpO30KICAgICAgIGVsc2UgaWYobXAyW3N1bS14LWtdKXthbnM9bWF4KG4teSsxLW1wMltzdW0teC1rXSxhbnMpO30KICAgfQogICBjb3V0PDxhbnM8PGVuZGw7CiAgIAogICAKfQoKaW50IG1haW4oKSB7CiAgIHN0ZDo6aW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICBzdGQ6OmNpbi50aWUobnVsbHB0cik7IHN0ZDo6Y291dC50aWUobnVsbHB0cik7CgogICAgc29sdmUoKTsKICAgIHJldHVybiAwOwp9Cgpib29sIGlzUHJpbWUobGwgbikgewogICAgaWYgKG4gPD0gMSkgcmV0dXJuIGZhbHNlOwogICAgaWYgKG4gPT0gMiB8fCBuID09IDMpIHJldHVybiB0cnVlOwogICAgZm9yIChsbCBpID0gMjsgaSAqIGkgPD0gbjsgKytpKSB7CiAgICAgICAgaWYgKG4gJSBpID09IDApIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9CgpsbCBsZyhsbCBhLCBsbCBiKSB7CiAgICBpZiAoYiA8PSAxIHx8IGEgPCBiKSByZXR1cm4gMDsKICAgIGxsIGsgPSAwOwogICAgd2hpbGUgKGEgPj0gYikgewogICAgICAgIGEgLz0gYjsKICAgICAgICBrKys7CiAgICB9CiAgICByZXR1cm4gazsKfQoKbGwgcG93ZXIobGwgYSwgbGwgYiwgbGwgbW9kKSB7CiAgICBsbCByZXMgPSAxOwogICAgd2hpbGUgKGIpIHsKICAgICAgICBpZiAoYiAmIDEpIHJlcyA9IChyZXMgKiBhKSAlIG1vZDsKICAgICAgICBhID0gKGEgKiBhKSAlIG1vZDsKICAgICAgICBiID4+PSAxOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKbGwgc3Vtb2ZkaWdpdHMobGwgeCkgewogICAgbGwgayA9IDA7CiAgICB3aGlsZSAoeCA+IDApIHsKICAgICAgICBrICs9IHggJSAxMDsKICAgICAgICB4IC89IDEwOwogICAgfQogICAgcmV0dXJuIGs7Cn0KCmxsIGZhY3RvcnMobGwgeCkgewogICAgbGwgZiA9IDA7CiAgICBmb3IgKGxsIGkgPSAxOyBpICogaSA8PSB4OyBpKyspIHsKICAgICAgICBpZiAoeCAlIGkgPT0gMCkgewogICAgICAgICAgICBmICs9IDI7CiAgICAgICAgICAgIGlmICh4ID09IGkgKiBpKSBmLS07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGY7Cn0=