#include <bits/stdc++.h>
using namespace std;
int h[20], n, a, b, dp[500][20][500];
int ans(int prv, int pos, int cur) {
  if (dp[prv + 250][pos][cur + 250] != -1) return dp[prv + 250][pos][cur + 250];
  if (pos == n) {
    if (cur < 0)
      return dp[prv + 250][pos][cur + 250] = 0;
    else
      return dp[prv + 250][pos][cur + 250] = 10000000;
  }
  int y = 10000000, nxt = h[pos + 1];
  for (int i = 0;; ++i) {
    if (prv - i * b < 0) {
      y = min(y, i + ans(cur - i * a, pos + 1, nxt - i * b));
    }
    if (nxt - i * b < 0 && prv - i * b < 0 && cur - i * a < 0) break;
  }
  return dp[prv + 250][pos][cur + 250] = y;
}
void printans(int prv, int pos, int cur) {
  if (pos == n) {
    return;
  }
  int y = ans(prv, pos, cur), nxt = h[pos + 1];
  for (int i = 0;; ++i) {
    if (prv - i * b < 0) {
      if (y == i + ans(cur - i * a, pos + 1, nxt - i * b)) {
        for (int j = 0; j < i; ++j) {
          printf("%d ", pos);
        }
        printans(cur - i * a, pos + 1, nxt - i * b);
        return;
      }
    }
    if (nxt - i * b < 0 && prv - i * b < 0 && cur - i * a < 0) break;
  }
}
int main() {
  scanf("%d", &n);
  scanf("%d", &a);
  scanf("%d", &b);
  memset(h, -1, sizeof(h));
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &h[i]);
  }
  memset(dp, -1, sizeof(dp));
  printf("%d\n", ans(h[1], 2, h[2]));
  printans(h[1], 2, h[2]);
  return 0;
}
