#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, x1, x2;
  cin >> n >> x1 >> x2;
  long long x;
  vector<pair<long, long>> a(n);
  vector<long long> sums(n), maxs(n);
  for (int i = 0; i < n; i++) {
    cin >> x;
    a[i] = make_pair(x, i);
  }
  sort(a.begin(), a.end());
  for (int i = 0; i < n; i++) {
    sums[i] = (n - i) * a[i].first;
  }
  maxs[n - 1] = n - 1;
  for (int i = n - 2; i >= 0; i--) {
    maxs[i] = maxs[i + 1];
    if (sums[i] > sums[maxs[i]]) maxs[i] = i;
  }
  for (int i = 0; i < n; i++) {
    int m = (x1 + a[i].first - 1) / a[i].first;
    if (i + m < n) {
      int begin2 = i + m;
      if (sums[maxs[begin2]] >= x2) {
        cout << "Yes" << endl;
        cout << m << " " << n - maxs[begin2] << endl;
        for (int j = i; j < begin2; j++) cout << a[j].second + 1 << " ";
        cout << endl;
        for (int j = maxs[begin2]; j < n; j++) cout << a[j].second + 1 << " ";
        return 0;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    int m = (x2 + a[i].first - 1) / a[i].first;
    if (i + m < n) {
      int begin2 = i + m;
      if (sums[maxs[begin2]] >= x1) {
        cout << "Yes" << endl;
        cout << n - maxs[begin2] << " " << m << endl;
        for (int j = maxs[begin2]; j < n; j++) cout << a[j].second + 1 << " ";
        cout << endl;
        for (int j = i; j < begin2; j++) cout << a[j].second + 1 << " ";
        return 0;
      }
    }
  }
  cout << "No";
}
