#include #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; using ll = long long; int main() { int n, b, c; cin >> n >> b >> c; vector a(n); rep(i, n) cin >> a[i]; vector s(n+1); rep(i, n) s[i+1] = s[i]+a[i]; vector f(n+1), g(n+1); deque q1, q2; q1.push_back(0); q2.push_back(0); for (int i = 1; i <= n; ++i) { while (q1.size() and q1.front() < i-c+1) q1.pop_front(); while (q2.size() and q2.front() < i-b+1) q2.pop_front(); int j = q1.front(); f[i] = s[i] + g[j] - s[j]; g[i] = f[q2.front()]; while (q1.size() and g[q1.back()]-s[q1.back()] <= g[i]-s[i]) q1.pop_back(); q1.push_back(i); while (q2.size() and f[q2.back()] <= f[i]) q2.pop_back(); q2.push_back(i); } ll ans = max(f[n], g[n]); cout << ans << '\n'; return 0; }