#include <bits/stdc++.h>
inline int cmp(double x, double y = 0, double tol = 1e-9) {
  return (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1;
}
int n, a, b;
int health[20];
int damage[20];
int mem[20][20][20];
int times_at[20][20][20];
int kill(int pos, int power) {
  if (health[pos] >= damage[pos])
    return (health[pos] - damage[pos]) / power + 1;
  return 0;
}
int solve(int pos) {
  if (mem[pos][damage[pos - 1]][damage[pos]] != -1)
    return mem[pos][damage[pos - 1]][damage[pos]];
  int min = 0, max = 0;
  if (pos == n - 1) {
    max = std::max(kill(pos - 1, b), kill(pos + 1, b));
    max = std::max(kill(pos, a), max);
    return mem[pos][damage[pos - 1]][damage[pos]] =
               times_at[pos][damage[pos - 1]][damage[pos]] = max;
  }
  min = kill(pos - 1, b);
  max = std::max(kill(pos, a), kill(pos + 1, b));
  max = std::max(min, max);
  int aux, best_times, best = 500;
  for (int times = min; times <= max; ++times) {
    damage[pos - 1] += times * b;
    damage[pos + 1] += times * b;
    damage[pos] += times * a;
    aux = times + solve(pos + 1);
    if (aux < best) {
      best = aux;
      best_times = times;
    }
    damage[pos - 1] -= times * b;
    damage[pos + 1] -= times * b;
    damage[pos] -= times * a;
  }
  mem[pos][damage[pos - 1]][damage[pos]] = best;
  times_at[pos][damage[pos - 1]][damage[pos]] = best_times;
  return best;
}
void build_path(int pos) {
  if (pos == n) {
    std::cout << std::endl;
    return;
  }
  int times = times_at[pos][damage[pos - 1]][damage[pos]];
  for (int i = 0; i < times; ++i) std::cout << pos << " ";
  damage[pos - 1] += times * b;
  damage[pos + 1] += times * b;
  damage[pos] += times * a;
  build_path(pos + 1);
}
int main() {
  memset(mem, -1, sizeof(mem));
  std::cin >> n >> a >> b;
  for (int i = 1; i <= n; ++i) std::cin >> health[i];
  std::cout << solve(2) << std::endl;
  build_path(2);
  return 0;
}
