#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5;
const long long INF = 1e18;
long long dp[N][2];
tuple<int, int, int> his[N][2];
vector<int> ans;
long long work(long long &a, long long &b, bool &gg) {
  long long c = min(a, b);
  a -= c;
  b -= c;
  if (c == 0) gg = 1;
  return c;
}
long long work(vector<int> a, int off) {
  int n = (int)a.size();
  for (int i = 1; i <= n; ++i) {
    dp[i][0] = dp[i][1] = INF;
    for (int l = 0; l <= 2; ++l) {
      for (int r = 0; r <= 2; ++r) {
        if (l + r + 1 <= i) {
          int j = i - (l + r + 1);
          static long long tmp[5];
          for (int k = 0; k < (l + r + 1); ++k) tmp[k] = a[j + k];
          long long base = 0;
          bool gg = 0;
          if (l >= 1) base += work(tmp[0], tmp[1], gg);
          if (l >= 2) base += work(tmp[1], tmp[2], gg);
          if (r >= 1) base += work(tmp[l + r - 1], tmp[l + r], gg);
          if (r >= 2) base += work(tmp[l + r - 2], tmp[l + r - 1], gg);
          for (int k = 0; k < (l + r + 1); ++k)
            if (k != l) gg |= tmp[k];
          if (gg) continue;
          long long remain = tmp[l];
          int sb = l ? 1 : !remain;
          base += dp[j][sb];
          int tb = r ? 0 : !!remain;
          if (dp[i][tb] > base) {
            dp[i][tb] = base;
            his[i][tb] = make_tuple(l, r, sb);
          }
        }
      }
    }
    if (dp[i][0] < dp[i][1]) {
      dp[i][1] = dp[i][0];
      his[i][1] = his[i][0];
    }
  }
  for (int i = n, j, k = 1; i; i = j) {
    int l, r;
    tie(l, r, k) = his[i][k];
    j = i - (l + r + 1);
    if (l >= 1) ans.push_back(j + off);
    if (l >= 2) ans.push_back(j + off + 1);
    if (r >= 1) ans.push_back(i + off - 2);
    if (r >= 2) ans.push_back(i + off - 3);
  }
  return dp[n][1];
}
int main() {
  int n, las = 1;
  scanf("%d", &n);
  vector<int> a;
  for (int i = 1; i <= n; ++i) {
    int x;
    scanf("%d", &x);
    if (!x) {
      if (!a.empty()) work(a, las);
      a.clear();
      las = i + 1;
    } else
      a.push_back(x);
  }
  if (!a.empty()) work(a, las);
  printf("%d\n", (int)ans.size());
  for (int x : ans) printf("%d\n", x);
}
