#include <bits/stdc++.h>
using namespace std;
const int N = 50;
int a[N], A, B;
int n, dp[N][N][N];
pair<int, int> to[N][N][N];
int calcdp(int r, int sr1, int sr2) {
  int &res = dp[r][sr1][sr2];
  if (res != -1) return res;
  res = 1e9;
  int ar = a[r] - sr1 * B;
  int ar1 = a[r + 1] - sr1 * A - sr2 * B;
  if (r == 0 && ar1 < 0) return res = 0;
  if (ar1 >= 0 && r + 1 != n - 1) {
    int d = calcdp(r, sr1 + 1, sr2) + 1;
    if (d < res) {
      to[r][sr1][sr2] = make_pair(r + 1, 1);
      res = d;
    }
  }
  if (r > 0) {
    int sr = 0;
    if (ar1 >= 0) sr = ar1 / B + 1;
    ar -= sr * A;
    int d = calcdp(r - 1, sr, sr1) + sr;
    if (d < res) {
      to[r][sr1][sr2] = make_pair(r, sr);
      res = d;
    }
  }
  return res;
}
bool read() {
  if (!(cin >> n >> A >> B)) return false;
  for (int i = 0; i < int(n); ++i) cin >> a[i];
  return true;
}
vector<int> res;
void restore(int r, int sr1, int sr2) {
  if (calcdp(r, sr1, sr2) == 0) return;
  pair<int, int> p = to[r][sr1][sr2];
  for (int i = 0; i < int(p.second); ++i) res.push_back(p.first);
  if (p.first == r) {
    restore(r - 1, p.second, sr1);
  } else {
    assert(p.first == r + 1);
    restore(r, sr1 + p.second, sr2);
  }
}
void solve() {
  memset(dp, -1, sizeof dp);
  res = vector<int>();
  while (a[0] >= 0) {
    res.push_back(1);
    a[0] -= B;
    a[1] -= A;
    a[2] -= B;
  }
  restore(n - 2, 0, 0);
  cout << int(res.size()) << endl;
  for (int i = 0; i < int(int(res.size())); ++i) cout << res[i] + 1 << " ";
  puts("");
}
int main() {
  while (read()) solve();
  return 0;
}
