#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { int n; cin >> n; vector v(n); for(int i=0; i> v[i]; vector dp = v; vector prev(n, -1); for(int i=0; i= 0 && dp[i] < dp[i-j] + v[i]){ dp[i] = dp[i-j] + v[i]; prev[i] = i - j; } } } vector ans; ans.push_back(max_element(dp.begin(), dp.end()) - dp.begin()); while(prev[ans.back()] != -1) ans.push_back(prev[ans.back()]); cout << dp[ans.front()] << endl; for(int i=ans.size()-1; i>0; --i) cout << (ans[i] + 1) << ' '; cout << (ans[0] + 1) << endl; return 0; }