#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
namespace fastIO {
bool IOerror = 0;
inline char nc() {
  static char buf[100000], *p1 = buf + 100000, *pend = buf + 100000;
  if (p1 == pend) {
    p1 = buf;
    pend = buf + fread(buf, 1, 100000, stdin);
    if (pend == p1) {
      IOerror = 1;
      return -1;
    }
  }
  return *p1++;
}
inline bool blank(char ch) {
  return ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t';
}
inline bool read(int &x) {
  char ch;
  bool ne = false;
  while (blank(ch = nc()))
    ;
  if (IOerror) return false;
  if (ch == '-') ne = true, ch = nc();
  for (x = ch - '0'; (ch = nc()) >= '0' && ch <= '9'; x = x * 10 + ch - '0')
    ;
  if (ne) x = -x;
  return true;
}
inline bool read(long long &x) {
  char ch;
  bool ne = false;
  while (blank(ch = nc()))
    ;
  if (IOerror) return false;
  if (ch == '-') ne = true, ch = nc();
  for (x = ch - '0'; (ch = nc()) >= '0' && ch <= '9'; x = x * 10 + ch - '0')
    ;
  if (ne) x = -x;
  return true;
}
};  // namespace fastIO
using namespace fastIO;
const int N = 30;
int h[N];
vector<char> cnt;
vector<char> mem;
int n;
inline int check() {
  int tmp = max_element(h + 1, h + n - 1) - h;
  if (h[tmp] >= 0)
    return tmp;
  else
    return -1;
}
int a, b, ans;
set<vector<char>> mp;
void dfs(int pos) {
  if (mp.count(mem)) return;
  mp.insert(mem);
  int tmp = check();
  if (tmp == -1) {
    if (ans > pos) cnt = mem, ans = pos;
    return;
  }
  int tt = 0;
  for (int i = 1; i < (n - 1); i++) {
    if (h[i] < 0 && h[i - 1] < 0) continue;
    h[i] -= a;
    h[i - 1] -= b;
    h[i + 1] -= b;
    mem[i]++;
    dfs(pos + 1);
    h[i] += a;
    h[i - 1] += b;
    h[i + 1] += b;
    mem[i]--;
    if (tt++ > 1) break;
  }
}
int main() {
  read(n), read(a), read(b);
  for (int i = 0; i < (n); i++) read(h[i]), cnt.push_back(0);
  if (n == 3) {
    cnt[1] = max((h[0] + b) / b, (h[2] + b) / b);
    h[1] -= cnt[1] * a;
    if (h[1] >= 0) cnt[1] += (h[1] + a) / a;
    ans = 0;
    for (int i = 1; i < (n); i++) ans += cnt[i];
  } else {
    cnt[1] = (h[0] + b) / b;
    cnt[n - 2] = (h[n - 1] + b) / b;
    h[1] -= cnt[1] * a;
    h[2] -= cnt[1] * b;
    h[n - 2] -= cnt[n - 2] * a;
    h[n - 3] -= cnt[n - 2] * b;
    mem = cnt;
    ans = INF;
    mp.clear();
    dfs(cnt[1] + cnt[n - 2]);
  }
  cout << ans << "\n";
  for (int i = 1; i < (n); i++)
    while (cnt[i]) {
      cout << i + 1 << " ";
      cnt[i]--;
    }
}
