#include <bits/stdc++.h>
using namespace std;
const int MAXN = 15;
int n, a, b;
int h[MAXN];
vector<int> ans;
vector<int> temp_ans;
vector<int> before;
void solve(int pos, int prev_health, int next_damage) {
  if (pos >= n) {
    if (h[pos] <= next_damage &&
        (temp_ans.size() < ans.size() || ans.size() == 0)) {
      ans = temp_ans;
    }
    return;
  }
  for (int i = 0;; i++) {
    if (i != 0) {
      temp_ans.push_back(pos);
    }
    if (prev_health - i * b <= 0) {
      solve(pos + 1, h[pos] - next_damage - i * a, i * b);
      if (h[pos] - next_damage - i * a <= 0) {
        break;
      }
    }
  }
  while (temp_ans.size() > 0 && temp_ans.back() == pos) {
    temp_ans.pop_back();
  }
  return;
}
int main(void) {
  scanf(" %d %d %d", &n, &a, &b);
  for (int i = 1; i <= n; i++) {
    scanf(" %d", &h[i]);
    h[i]++;
  }
  while (h[1] > 0) {
    h[3] -= b;
    h[2] -= a;
    h[1] -= b;
    before.push_back(2);
  }
  while (h[n] > 0) {
    h[n - 2] -= b;
    h[n - 1] -= a;
    h[n] -= b;
    before.push_back(n - 1);
  }
  solve(2, h[1], 0);
  while (before.size() > 0) {
    ans.push_back(before.back());
    before.pop_back();
  }
  printf("%d\n", (int)ans.size());
  for (int i = 0; i < (int)ans.size(); i++) {
    if (i != 0) {
      printf(" ");
    }
    printf("%d", ans[i]);
  }
  return 0;
}
