#include <bits/stdc++.h>
using namespace std;
int maps[15];
int ans = 99999;
int a, b;
int n;
int fireans[15];
int firetmp[15];
void dfs(int now, int times) {
  if (times >= ans) return;
  if (now == n - 1) {
    int firetime =
        (int)max(max(maps[now - 1], maps[now + 1]) / b, maps[now] / a) + 1;
    if (times + firetime < ans) {
      ans = times + firetime;
      for (int i = 0; i < 15; i++) {
        fireans[i] = firetmp[i];
      }
      fireans[n - 1] += firetime;
    }
    return;
  }
  if (maps[now - 1] >= 0) {
    int firetime = maps[now - 1] / b + 1;
    maps[now - 1] -= firetime * b;
    maps[now] -= firetime * a;
    maps[now + 1] -= firetime * b;
    firetmp[now] += firetime;
    dfs(now, times + firetime);
    firetmp[now] -= firetime;
    maps[now - 1] += firetime * b;
    maps[now] += firetime * a;
    maps[now + 1] += firetime * b;
  } else {
    {
      int firetime =
          max(max(maps[now - 1], maps[now + 1]) / b, maps[now] / a) + 1;
      for (int i = 0; i <= firetime; i++) {
        maps[now - 1] -= i * b;
        maps[now] -= i * a;
        maps[now + 1] -= i * b;
        firetmp[now] += i;
        dfs(now + 1, times + i);
        firetmp[now] -= i;
        maps[now - 1] += i * b;
        maps[now] += i * a;
        maps[now + 1] += i * b;
      }
    }
  }
}
int main() {
  cin >> n >> a >> b;
  for (int i = 1; i <= n; i++) {
    cin >> maps[i];
  }
  dfs(2, 0);
  cout << ans << endl;
  vector<int> VI;
  VI.clear();
  for (int i = 0; i < 15; i++) {
    for (int j = 0; j < fireans[i]; j++) VI.push_back(i);
  }
  cout << VI[0];
  for (int i = 1; i < VI.size(); i++) {
    cout << " " << VI[i];
  }
  cout << endl;
  return 0;
}
