#include #include #include #include #include #include #include #include #include #include static const int MOD = 1000000007; using ll = long long; using u32 = uint32_t; using namespace std; template constexpr T INF = ::numeric_limits::max() / 32 * 15 + 208; int main() { int n; cin >> n; vector v(n); for (auto &&i : v) scanf("%d", &i); vector dp(n+1); vector from(n+1); for (int i = 1; i <= n; ++i) { for (int j = 0; j < i-1; ++j) { if(dp[i] < dp[j]){ dp[i] = dp[j]; from[i] = j; } } dp[i] += v[i-1]; } int cur = max_element(dp.begin(),dp.end()) - dp.begin(); int ans = dp[cur]; vector ans2; while(cur){ ans2.emplace_back(cur); cur = from[cur]; } reverse(ans2.begin(),ans2.end()); cout << ans << "\n"; for (int i = 0; i < ans2.size(); ++i) { if(i) printf(" "); printf("%d", ans2[i]); } puts(""); return 0; }