#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 5005;
const ll INF = 1e18;
int n, a[N], B[N][N];
ll dp[N][N], s[N];
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a[i]; s[i] = s[i - 1] + a[i];
for (int j = 0; j < i; ++j) dp[i][j] = INF;
}
dp[1][0] = a[B[1][0] = 1];
for (int i = 1; i < n; ++i)
for (int j = 0; j < i; ++j)
if (dp[i][j] != INF){
//ghep chung nhom voi nhom hien tai
if (dp[i + 1][j + 1] > dp[i][j] + a[i + 1])
dp[i + 1][j + 1] = dp[i][j] + a[i + 1],
B[i + 1][j + 1] = B[i][j];
//tao 1 nhom moi
int l = i + 1, r = n, p = -1;
while (l <= r){
int mid = l + ((r - l) >> 1);
if (s[mid] - s[i] >= dp[i][j]){
p = mid;
r = mid - 1;
} else
l = mid + 1;
}
if (p != -1 && dp[p][j + p - i - 1] > s[p] - s[i]){
B[p][j + p - i - 1] = i + 1;
dp[p][j + p - i - 1] = s[p] - s[i];
}
}
// for (int i = 1; i <= n; ++i)
// for (int j = 0; j < i; ++j) if (dp[i][j] != INF)
// cout << i << " " << j << "\t" << dp[i][j] << "\n";
for (int i = 0; i < n; ++i)
if (dp[n][i] != INF){
cout << n - i << "\n";
stack<int> st;
int cur = i, id = n;
while (id){
st.push(dp[id][cur]);
int nc = cur - (id - B[id][cur]);
id = B[id][cur] - 1;
cur = nc;
// cerr << "\t" << cur << "\n";
}
while (!st.empty()) cout << st.top() << " ", st.pop();
return 0;
}
}