#include <bits/stdc++.h>
using namespace std;
const int maxn = 15;
int n, a, b, nowmax;
queue<pair<vector<int>, vector<int> > > Q;
vector<int> now(15), ansx(15), h(15);
set<vector<int> > S;
int main() {
  scanf("%d%d%d", &n, &a, &b);
  for (int i = 1; i <= n; ++i) scanf("%d", &h[i]);
  now[0] = (h[1] + 1) / b + ((h[1] + 1) % b > 0), h[1] -= now[0] * b,
  h[3] -= now[0] * b, h[2] -= now[0] * a, now[2] += now[0];
  if (h[n] >= 0) {
    int tmp = (h[n] + 1) / b + ((h[n] + 1) % b > 0);
    now[0] += tmp, h[n] -= tmp * b, h[n - 1] -= tmp * a, h[n - 2] -= tmp * b,
        now[n - 1] += tmp;
  }
  Q.push(make_pair(now, h));
  while (!Q.empty()) {
    now = Q.front().first, h = Q.front().second, Q.pop();
    now[0]++;
    if (now[0] < nowmax) nowmax = now[0], S.clear();
    for (int i = 2, flag; i < n; ++i) {
      if (h[i] < 0 && h[i - 1] < 0 && h[i + 1] < 0) continue;
      now[i]++;
      h[i] -= a, h[i - 1] -= b, h[i + 1] -= b;
      flag = 0;
      for (int j = 1; j <= n; j++)
        if (h[j] >= 0) {
          flag = 1;
          break;
        }
      if (!flag) {
        printf("%d\n", now[0]);
        for (int i = 2; i < n; ++i)
          while (now[i]--) printf("%d ", i);
        return 0;
      } else if (!S.count(now))
        Q.push(make_pair(now, h)), S.insert(now);
      now[i]--, h[i] += a, h[i - 1] += b, h[i + 1] += b;
    }
  }
  printf("%d\n", now[0] - 1);
  for (int i = 2; i < n; ++i)
    while (now[i]--) printf("%d ", i);
  return 0;
}
