#include <bits/stdc++.h>
using namespace std;
long long n, a, b;
long long h[20];
long long dp[20][20][20][20];
const long long INF = 1e16;
long long solve(long long id, long long hl, long long hc, long long hr) {
  if (id == n) {
    if (hc == 0 && hl == 0 && hr == 0) return 0;
    return INF;
  }
  if (dp[id][hl][hc][hr] != -1) return dp[id][hl][hc][hr];
  long long ret = 0;
  if (hl == 0 && hc == 0 && hr == 0) {
    ret = solve(id + 1, hc, hr, h[id + 2]);
  } else {
    ret = 1 + solve(id, max(0LL, hl - b), max(0LL, hc - a), max(0LL, hr - b));
    if (hl == 0) {
      ret = min(ret, solve(id + 1, hc, hr, h[id + 2]));
    }
  }
  return dp[id][hl][hc][hr] = ret;
}
void trace(long long id, long long hl, long long hc, long long hr) {
  if (id == n) {
    return;
  }
  if (hl == 0 && hc == 0 && hr == 0)
    return trace(id + 1, hc, hr, h[id + 2]);
  else {
    long long opt = solve(id, hl, hc, hr);
    if (opt ==
        1 + solve(id, max(0LL, hl - b), max(0LL, hc - a), max(0LL, hr - b))) {
      cout << id << " ";
      return trace(id, max(0LL, hl - b), max(0LL, hc - a), max(0LL, hr - b));
    } else {
      return trace(id + 1, hc, hr, h[id + 2]);
    }
  }
}
int main() {
  cin >> n >> a >> b;
  for (long long i = 1; i <= n; i++) {
    cin >> h[i];
    h[i]++;
  }
  memset(dp, -1, sizeof dp);
  long long ans = solve(2, h[1], h[2], h[3]);
  cout << ans << endl;
  trace(2, h[1], h[2], h[3]);
  return 0;
}
