#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int n, a, b;
int h[N];
map<pair<pair<int, int>, int>, int> dp;
map<pair<pair<int, int>, int>, int> pick;
int needs(int hp, int damage) {
  if (hp < 0) return 0;
  return hp / damage + 1;
}
int hit(int id, int n, bool hitPrev = false) {
  for (int i = -1; i <= +1; i++) {
    if (i >= 0 || hitPrev) {
      h[id + i] -= (i == 0 ? a : b) * n;
      if (h[id + i] < 0) h[id + i] = -1;
    }
  }
  return n;
}
int go(int id, int minHits) {
  pair<pair<int, int>, int> key = make_pair(make_pair(id, h[id]), minHits);
  if (dp.find(key) != dp.end()) return dp[key];
  if (id == n - 2) {
    int best = max(minHits, needs(h[id], a));
    dp[key] = best;
    pick[key] = best;
    return best;
  }
  int best = 0x7fffffff;
  int p = -1;
  for (int x = max(minHits, needs(h[id], a)); x >= minHits; x--) {
    int save[2];
    for (int i = 0; i < 2; i++) save[i] = h[id + i];
    hit(id, x);
    int cost = x + go(id + 1, needs(h[id], b));
    if (cost < best) {
      best = cost;
      p = x;
    }
    for (int i = 0; i < 2; i++) h[id + i] = save[i];
  }
  pick[key] = p;
  return dp[key] = best;
}
int main() {
  cin >> n >> a >> b;
  for (int i = 0; i < n; i++) cin >> h[i];
  vector<int> r;
  for (int i = hit(1, needs(h[0], b), true); i--;) r.push_back(2);
  for (int i = hit(n - 2, needs(h[n - 1], b), true); i--;) r.push_back(n - 1);
  go(1, 0);
  int id = 1, minHits = 0;
  while (id < n - 1) {
    pair<pair<int, int>, int> key = make_pair(make_pair(id, h[id]), minHits);
    int x = pick[key];
    hit(id, x);
    minHits = needs(h[id], b);
    id++;
    while (x--) r.push_back(id);
  }
  cout << r.size() << endl;
  for (int i = 0; i < r.size(); i++) {
    if (i > 0) cout << ' ';
    cout << r[i];
  }
  cout << endl;
  return 0;
}
