#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]; } vll ruia2 = ruisekiwa(a2); ll ans = 0; rep (i, n*2) { auto itr = lower_bound(all(ruia2), x + ruia2[i]); itr--; ans = max(ans, *itr - ruia2[i]); //printany(i, itr - ruia2.begin(), *itr - ruia2[i]); } 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)...); }