#include <bits/stdc++.h>
using namespace std;
using INT = long long;
const int NN = 303030;
int p[NN];
INT dp[NN], ans[NN];
int CalcAns(int n), CalcDp(int n);
vector<int> buf;
int CalcAns(int n) {
  if (n <= 1) return 0;
  if (ans[n] == dp[n]) return CalcDp(n);
  return CalcDp(n - 1);
}
int n;
int CalcDp(int n) {
  if (n == 1) {
    buf.push_back(1);
    return 0;
  }
  if (dp[n] == ans[n - 1] + p[n]) {
    if (n < ::n) buf.push_back(n);
    buf.push_back(n - 1);
    return CalcAns(n - 1);
  }
  if (dp[n] == ans[n - 2] + max(p[n], p[n - 1])) {
    buf.push_back(n - 1);
    if (n < ::n) buf.push_back(n);
    if (n > 2) buf.push_back(n - 2);
    return CalcAns(n - 2);
  }
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    scanf("%d", p + i);
  }
  dp[1] = p[1];
  for (int i = 2; i <= n; i++) {
    dp[i] = min(ans[i - 1] + p[i], ans[i - 2] + max(p[i], p[i - 1]));
    ans[i] = min(dp[i - 1], dp[i]);
  }
  CalcAns(n);
  vector<int> tmp;
  for (auto u : buf) {
    if (u <= 0 || u >= n) continue;
    int x = min(p[u], p[u + 1]);
    if (x == 0) continue;
    p[u] -= x;
    p[u + 1] -= x;
    tmp.push_back(u);
  }
  cout << tmp.size() << endl;
  for (auto u : tmp) printf("%d ", u);
}
