#include #define elif else if #define ll long long #define vll vector #define vec vector #define embk emplace_back #define rep(i, n) for (ll i = 0; i < n; i++) #define rep3(i, n, k) for (ll i = k; i < n; i++) #define all(a) a.begin(), a.end() #define YNeos(bool) (bool ? "Yes" : "No") #define vllin(a, n) vll a(n); rep(i, n) cin >> a[i] #define vchin(a, n) vec a(n); rep(i, n) cin >> a[i] using namespace std; const ll INF = 1LL << 60; const ll mod = 998244353; //const ll mod = 1000000007; const double pi = acos(-1); //#ifdef ATCODER #include using namespace atcoder; using mint = modint998244353; //#endif //Prototype declaration template void gin(T&&, U&&...); template vector read(ll); template void printvec(const T&); template void printany(T&&, U&&...); vector ruisekiwa (vector a) { vector suma(a.size() + 1); suma.at(0) = 0; for (int i = 0; i < a.size(); i++) suma.at(i + 1) = suma.at(i) + a.at(i); return suma; } //Main Program int main() { ll n, x; gin(n, x); vllin(a, n); vll a2(n*2); rep(i, n) { a2[i] = a[i]; a2[i+n] = a[i]; } auto ruia2 = ruisekiwa(a2); ll ans = 0; ll l = 0, r = 1; while(l != n*2 && r != n*2) { if (ruia2[r] - ruia2[l] <= x) ans = max(ans, ruia2[r] - ruia2[l]); if (r == n*2) l++; elif(l == r) r++; elif (ruia2[r+1] - ruia2[l] <= x) r++; else l++; } cout << ans << endl; } //Function Definition void gin() {return;} template void gin(T&& now, U&&... next) { cin >> now; gin(forward (next)...); } template vector read(ll n) { vector v(n); for (int i = 0; i < n; i++) cin >> v[i]; return v; } template void printvec(const T& a) { for (int i = 0; i < a.size(); i++) { cout << a[i]; if (i == a.size() - 1) cout << endl; else cout << ' '; } } void printany() {cout << endl;} template void printany(T&& now, U&&... next) { cout << now << ' '; printany(forward (next)...); }