#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair i_i; typedef pair ll_i; typedef pair d_i; typedef pair ll_ll; typedef pair d_d; struct edge { int u, v; ll w; }; ll MOD = 1000000007; ll _MOD = 1000000009; int main() { int N; cin >> N; vector v(N + 2); for (int i = 0; i < N; i++) cin >> v[i]; N += 2; vector dp(N); for (int i = 0; i < N; i++) { if (i - 2 >= 0) dp[i] = max(dp[i], dp[i - 2]); if (i - 3 >= 0) dp[i] = max(dp[i], dp[i - 3]); dp[i] += v[i]; } int i = N - 1; vector w; for (;;) { if (i - 2 >= 0 && dp[i - 2] + v[i] == dp[i]) i -= 2; else if (i - 3 >= 0 && dp[i - 3] + v[i] == dp[i]) i -= 3; else break; w.push_back(i); } reverse(w.begin(), w.end()); cout << dp[N - 1] << endl; for (int k = 0; k < w.size(); k++) cout << w[k] + 1 << ' '; cout << endl; }