#include <bits/stdc++.h>
using namespace std;
int N, S1, S2;
int c[300005];
int cal(int y, int x) {
  if (y % x)
    return y / x + 1;
  else
    return y / x;
}
struct Node {
  int d, id;
  bool operator<(const Node& n1) const { return d < n1.d; }
} nList[300005];
int main() {
  ios::sync_with_stdio(0);
  cin >> N >> S1 >> S2;
  for (int i = 1; i <= N; i++) {
    cin >> c[i];
    nList[i].d = c[i];
    nList[i].id = i;
  }
  sort(c + 1, c + 1 + N);
  sort(nList + 1, nList + 1 + N);
  int k1, k2;
  for (int i = 1; i <= N - 1; i++) {
    k1 = cal(S1, c[i]);
    if (k1 + i <= N) {
      k2 = cal(S2, c[k1 + i]);
      if (k1 + k2 + (i - 1) <= N) {
        cout << "Yes" << endl;
        cout << k1 << " " << k2 << endl;
        for (int j = i; j < i + k1; j++) cout << nList[j].id << " ";
        cout << endl;
        for (int j = k1 + i; j <= k1 + i + k2 - 1; j++)
          cout << nList[j].id << " ";
        cout << endl;
        return 0;
      }
    }
    k2 = cal(S2, c[i]);
    if (k2 + i <= N) {
      k1 = cal(S1, c[k2 + i]);
      if (k1 + k2 + (i - 1) <= N) {
        cout << "Yes" << endl;
        cout << k1 << " " << k2 << endl;
        for (int j = i + k2; j <= k1 + i + k2 - 1; j++)
          cout << nList[j].id << " ";
        cout << endl;
        for (int j = i; j < i + k2; j++) cout << nList[j].id << " ";
        cout << endl;
        return 0;
      }
    }
  }
  cout << "No" << endl;
  return 0;
}
