#include <bits/stdc++.h>
using namespace std;
int dp[11][17][17][17], h[11];
vector<int> v[11][17][17][17];
struct p {
  int t, x, y, z;
};
int main(void) {
  int n, a, b;
  scanf("%d%d%d", &n, &a, &b);
  for (int i = 1; i <= n; ++i) scanf("%d", &h[i]), h[i]++;
  memset(dp, 0x3f, sizeof(dp));
  dp[2][h[1]][h[2]][h[3]] = 0;
  deque<p> q;
  q.push_back({2, h[1], h[2], h[3]});
  while (!q.empty()) {
    p u = q.front();
    q.pop_front();
    p v1 = {u.t, max(0, u.x - b), max(0, u.y - a), max(0, u.z - b)};
    int du = dp[u.t][u.x][u.y][u.z];
    int& dv1 = dp[v1.t][v1.x][v1.y][v1.z];
    if (dv1 > du + 1)
      dv1 = du + 1, q.push_back(v1),
      (v[v1.t][v1.x][v1.y][v1.z] = v[u.t][u.x][u.y][u.z]).push_back(u.t);
    if (u.t + 1 >= n || u.x > 0) continue;
    p v2 = {u.t + 1, u.y, u.z, h[u.t + 2]};
    int& dv2 = dp[v2.t][v2.x][v2.y][v2.z];
    if (dv2 > du)
      dv2 = du, q.push_front(v2),
      (v[v2.t][v2.x][v2.y][v2.z] = v[u.t][u.x][u.y][u.z]);
  }
  printf("%d\n", dp[n - 1][0][0][0]);
  for (int i : v[n - 1][0][0][0]) printf("%d%c", i, ' ');
  for (int i : v[n - 1][0][0][0]) h[i] -= a, h[i - 1] -= b, h[i + 1] -= b;
  for (int i = 1; i <= n; ++i) assert(h[i] <= 0);
  printf("\n");
  return 0;
}
