#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int N, X1, X2;
  cin >> N >> X1 >> X2;
  vector<pair<int, int> > C(N);
  for (int i = 0; i < N; ++i) {
    cin >> C[i].first;
    C[i].second = i + 1;
  }
  sort(C.begin(), C.end());
  reverse(C.begin(), C.end());
  const int dMax = 1000000000;
  vector<int> ns_needed1(N, 0), ns_needed2(N, 0);
  vector<int> ns_left1(N, 0), ns_left2(N, 0);
  vector<int> minneed1(N, dMax), minneed2(N, dMax);
  for (int i = 0; i < N; ++i) {
    ns_needed1[i] =
        (X1 % C[i].first) ? (X1 / C[i].first + 1) : (X1 / C[i].first);
    ns_needed2[i] =
        (X2 % C[i].first) ? (X2 / C[i].first + 1) : (X2 / C[i].first);
    ns_left1[i] = (i + 1) - ns_needed1[i];
    ns_left2[i] = (i + 1) - ns_needed2[i];
    if (i) {
      if (ns_needed1[i] <= (i + 1)) {
        minneed1[i] = min(ns_needed1[i], minneed1[i - 1]);
      } else {
        minneed1[i] = minneed1[i - 1];
      }
      if (ns_needed2[i] <= (i + 1)) {
        minneed2[i] = min(ns_needed2[i], minneed2[i - 1]);
      } else {
        minneed2[i] = minneed2[i - 1];
      }
    } else {
      if (ns_needed1[0] == 1) {
        minneed1[i] = ns_needed1[i];
      }
      if (ns_needed2[0] == 1) {
        minneed2[i] = ns_needed2[i];
      }
    }
  }
  for (int i = 1; i < N; ++i) {
    if (ns_left1[i] >= minneed2[i - 1]) {
      for (int j = 0; j < i; ++j) {
        if ((ns_needed2[j] <= ns_left1[i]) && (ns_needed2[j] <= (j + 1))) {
          cout << "Yes" << endl;
          cout << i - j << " " << j + 1 << endl;
          for (int k = 0, n = j + 1; n <= i; ++k, ++n) {
            if (k) cout << " ";
            cout << C[n].second;
          }
          cout << endl;
          for (int k = 0; k <= j; ++k) {
            if (k) cout << " ";
            cout << C[k].second;
          }
          cout << endl;
          return 0;
        }
      }
    }
  }
  for (int i = 1; i < N; ++i) {
    if (ns_left2[i] >= minneed1[i - 1]) {
      for (int j = 0; j < i; ++j) {
        if ((ns_needed1[j] <= ns_left2[i]) && (ns_needed1[j] <= (j + 1))) {
          cout << "Yes" << endl;
          cout << j + 1 << " " << i - j << endl;
          for (int k = 0; k <= j; ++k) {
            if (k) cout << " ";
            cout << C[k].second;
          }
          cout << endl;
          for (int k = 0, n = j + 1; n <= i; ++k, ++n) {
            if (k) cout << " ";
            cout << C[n].second;
          }
          cout << endl;
          return 0;
        }
      }
    }
  }
  cout << "No" << endl;
  return 0;
}
