#include <bits/stdc++.h>
using namespace std;
const int maxn = 12;
const int maxh = 17;
const int inf = 10 * 1000;
int n;
int h[maxn];
int a, b;
int d[maxn][maxh][maxh];
pair<int, pair<int, int> > par[maxn][maxh][maxh];
vector<int> ans;
void findans(int i, int j, int k) {
  pair<int, pair<int, int> > pi = par[i][j][k];
  int ip = pi.first;
  int jp = pi.second.first;
  int kp = pi.second.second;
  if (ip == -1) return;
  int mv = 1;
  if (ip != i) mv = d[i][j][k] - d[ip][jp][kp];
  for (int t = 0; t < mv; ++t) ans.push_back(i + 1);
  findans(ip, jp, kp);
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> a >> b;
  for (int i = 0; i < n; ++i) cin >> h[i];
  if (n == 3) {
    int nu = max(h[0] / b, max(h[1] / a, h[2] / b)) + 1;
    cout << nu << endl;
    for (int i = 0; i < nu; ++i) cout << 2 << " ";
    cout << endl;
    return 0;
  }
  h[1] -= (h[0] / b + 1) * a;
  h[n - 2] -= (h[n - 1] / b + 1) * a;
  h[2] -= (h[0] / b + 1) * b;
  h[n - 3] -= (h[n - 1] / b + 1) * b;
  if (h[1] < 0) h[1] = -1;
  if (h[2] < 0) h[2] = -1;
  if (h[n - 2] < 0) h[n - 2] = -1;
  if (h[n - 3] < 0) h[n - 3] = -1;
  for (int i = 0; i < maxn; ++i)
    for (int j = 0; j < maxh; ++j)
      for (int k = 0; k < maxh; ++k) d[i][j][k] = inf;
  d[1][max(h[1] + 1, 0)][max(h[2] + 1, 0)] = 0;
  par[1][max(h[1] + 1, 0)][max(h[2] + 1, 0)] =
      pair<int, pair<int, int> >(-1, pair<int, int>(0, 0));
  for (int i = 1; i < n - 1; ++i) {
    for (int j = max(h[i] + 2, 1) - 1; j >= 0; --j) {
      int hp1 = j - 1;
      for (int j2 = max(h[i + 1] + 2, 1) - 1; j2 >= 0; --j2) {
        if (d[i][j][j2] != inf) {
        }
        if (hp1 == -1) {
          if (d[i + 1][j2][max(h[i + 2] + 1, 0)] > d[i][j][j2]) {
            d[i + 1][j2][max(h[i + 2] + 1, 0)] = d[i][j][j2];
            par[i + 1][j2][max(h[i + 2] + 1, 0)] =
                pair<int, pair<int, int> >(i, pair<int, int>(j, j2));
          }
          continue;
        }
        if (d[i][max(j - a, 0)][max(j2 - b, 0)] > d[i][j][j2] + 1) {
          d[i][max(j - a, 0)][max(j2 - b, 0)] = d[i][j][j2] + 1;
          par[i][max(j - a, 0)][max(j2 - b, 0)] =
              pair<int, pair<int, int> >(i, pair<int, int>(j, j2));
        }
        int mv = hp1 / b + 1;
        if (i != n - 2) {
          if (d[i + 1][max(j2 - mv * a, 0)][max(h[i + 2] + 1 - mv * b, 0)] >
              d[i][j][j2] + mv) {
            d[i + 1][max(j2 - mv * a, 0)][max(h[i + 2] + 1 - mv * b, 0)] =
                d[i][j][j2] + mv;
            par[i + 1][max(j2 - mv * a, 0)][max(h[i + 2] + 1 - mv * b, 0)] =
                pair<int, pair<int, int> >(i, pair<int, int>(j, j2));
          }
        }
      }
    }
  }
  int mj = 0, mk = 0;
  for (int j = 0; j < maxh; ++j)
    for (int k = 0; k < maxh; ++k)
      if (d[n - 1][j][k] < d[n - 1][mj][mk]) {
        mj = j;
        mk = k;
      }
  for (int i = 0; i < h[n - 1] / b + 1; ++i) ans.push_back(n - 1);
  findans(n - 1, mj, mk);
  for (int i = 0; i < h[0] / b + 1; ++i) ans.push_back(2);
  reverse((ans).begin(), (ans).end());
  cout << (int)(ans).size() << endl;
  for (int i = 0; i < (int)(ans).size(); ++i) cout << ans[i] << " ";
  cout << endl;
  return 0;
}
