#include <bits/stdc++.h>
using namespace std;
int n, a, b;
int h[15];
int dp[20][20][20][20], g1[20][20][20][20], g2[20][20][20][20],
    g3[20][20][20][20];
void hg(int a1, int a2, int a3, int a4) {
  if (a1 == 0) {
    return;
  }
  for (int i = 0; i < a4; i++) {
    printf("%d ", a1 + 1);
  }
  hg(a1 - 1, g1[a1][a2][a3][a4], g2[a1][a2][a3][a4], g3[a1][a2][a3][a4]);
}
int main() {
  scanf("%d%d%d", &n, &a, &b);
  for (int i = 0; i < n; i++) {
    scanf("%d", &h[i]);
    h[i]++;
  }
  memset(dp, -1, sizeof(dp));
  memset(g1, -1, sizeof(g1));
  memset(g2, -1, sizeof(g2));
  memset(g3, -1, sizeof(g3));
  for (int i = 19; i >= 0; i--) {
    if (h[0] - i * b > 0) {
      break;
    }
    dp[1][max(0, h[1] - i * a)][max(0, h[2] - i * b)][i] = i;
  }
  for (int i = 1; i < n - 1; i++) {
    for (int j = 0; j <= h[i]; j++) {
      for (int k = 0; k <= h[i + 1]; k++) {
        for (int l = 0; l < 20; l++) {
          if (dp[i][j][k][l] == -1) {
            continue;
          }
          for (int m = 19; m >= 0; m--) {
            if (j - m * b > 0) {
              break;
            }
            int a1 = i + 1, a2 = max(0, k - m * a),
                a3 = max(0, h[i + 2] - m * b), a4 = m;
            if (dp[a1][a2][a3][a4] == -1 ||
                dp[a1][a2][a3][a4] > dp[i][j][k][l] + m) {
              dp[a1][a2][a3][a4] = dp[i][j][k][l] + m;
              g1[a1][a2][a3][a4] = j;
              g2[a1][a2][a3][a4] = k;
              g3[a1][a2][a3][a4] = l;
            }
          }
        }
      }
    }
  }
  int mu = 19;
  for (int i = 0; i <= 19; i++) {
    if (dp[n - 2][0][0][i] != -1 && dp[n - 2][0][0][mu] > dp[n - 2][0][0][i]) {
      mu = i;
    }
  }
  printf("%d\n", dp[n - 2][0][0][mu]);
  hg(n - 2, 0, 0, mu);
  return 0;
}
