#include <bits/stdc++.h>
using namespace std;
int dp[15][20][20], n, a, b, h[20];
int X[15][20][20], Y[15][20][20];
void output(int dep, int x, int y) {
  if (dep == 2) return;
  output(dep - 1, X[dep][x][y], Y[dep][x][y]);
  for (int i = 0; i < dp[dep][x][y] - dp[dep - 1][X[dep][x][y]][Y[dep][x][y]];
       i++)
    printf("%d ", dep - 1);
}
int main() {
  scanf("%d%d%d", &n, &a, &b);
  for (int i = 1; i <= n; i++) scanf("%d", &h[i]), h[i]++;
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= 16; j++)
      for (int k = 0; k <= 16; k++) dp[i][j][k] = 99999999;
  dp[2][h[1]][h[2]] = 0;
  for (int i = 2; i < n; i++) {
    for (int j = 0; j <= h[i - 1]; j++) {
      for (int k = 0; k <= h[i]; k++) {
        if (dp[i][j][k] == 99999999) continue;
        int from = (j + b - 1) / b;
        int to = max(from, max((k + a - 1) / a, (h[i + 1] + b - 1) / b));
        for (int hit = from; hit <= to; hit++) {
          if (dp[i + 1][max(0, k - a * hit)][max(0, h[i + 1] - b * hit)] >
              dp[i][j][k] + hit) {
            dp[i + 1][max(0, k - a * hit)][max(0, h[i + 1] - b * hit)] =
                dp[i][j][k] + hit;
            X[i + 1][max(0, k - a * hit)][max(0, h[i + 1] - b * hit)] = j;
            Y[i + 1][max(0, k - a * hit)][max(0, h[i + 1] - b * hit)] = k;
          }
        }
      }
    }
  }
  printf("%d\n", dp[n][0][0]);
  output(n, 0, 0);
  puts("");
  return 0;
}
