#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAX 1002 int n; int v[MAX]; int pre[MAX]; int dp[MAX]; long long int val = -1LL; int ind = -1; int main(){ scanf("%d", &n); for (int i = 0; i < n; i++){ scanf("%d", &v[i]); } for (int i = 0; i < n; i++){ long long int k = v[i]; if (ind != -1){ k += val; } pre[i] = ind; dp[i] = k; if (i - 1 >= 0 && dp[i - 1] > val){ val = dp[i - 1]; ind = i - 1; } } val = -1LL; for (int i = 0; i < n; i++){ if (val < dp[i]){ val = dp[i]; ind = i; } } vector ans; ans.clear(); while (ind >= 0){ ans.push_back(ind + 1); ind = pre[ind]; } printf("%lld\n", val); for (int i = ans.size() - 1; i >= 0; i--){ if (i != ans.size() - 1){ printf(" "); } printf("%d", ans[i]); } puts(""); return 0; }