#include <bits/stdc++.h>
using namespace std;
const int inf = 2 * (1e9) + 10;
const long long MOD = 1000000009;
const int NMAX = 300005;
const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, 1, 0, -1};
long long n, c1, c2;
pair<long long, int> A[NMAX];
long long mxarea[NMAX];
long long mxind[NMAX];
long long area(int pos, int sz) { return A[pos].first * (n - pos + 1 - sz); }
int main() {
  cin >> n >> c1 >> c2;
  for (int i = 1; i <= n; ++i) {
    cin >> A[i].first;
    A[i].second = i;
  }
  sort(A + 1, A + 1 + n);
  for (int i = n; i >= 1; --i) {
    long long are = A[i].first * (n - i + 1);
    if (are > mxarea[i + 1]) {
      mxarea[i] = are;
      mxind[i] = i;
    } else {
      mxarea[i] = mxarea[i + 1];
      mxind[i] = mxind[i + 1];
    }
  }
  for (int i = 1; i < n; ++i) {
    int nr1 = i;
    int hh = (c1 + nr1 - 1) / nr1;
    int l = 1;
    int r = n;
    if (A[n - i + 1].first < hh) {
      continue;
    }
    while (l < r) {
      int m = (l + r) >> 1;
      if (A[m].first >= hh) {
        r = m;
      } else {
        l = m + 1;
      }
    }
    int fst = l;
    if (mxarea[fst + i] >= c2) {
      cout << "Yes\n";
      int j = mxind[fst + i];
      cout << i << " " << n - j + 1 << "\n";
      for (int k = fst; k <= fst + i - 1; ++k) {
        cout << A[k].second << " ";
      }
      cout << "\n";
      for (int k = j; k <= n; ++k) {
        if (k >= fst && k <= fst + i - 1) continue;
        cout << A[k].second << " ";
      }
      return 0;
    }
    int tl = 1;
    int tr = fst - 1;
    while (tr - tl > 5) {
      int p1 = tl + (tr - tl) / 3;
      int p2 = tr - (tr - tl) / 3;
      if (area(p1, i) > area(p2, i))
        tr = p2;
      else
        tl = p1;
    }
    for (int j = tl; j <= tr; ++j) {
      if (area(j, i) >= c2) {
        cout << "Yes\n";
        cout << i << " " << n - j + 1 - i << "\n";
        for (int k = fst; k <= fst + i - 1; ++k) {
          cout << A[k].second << " ";
        }
        cout << "\n";
        for (int k = j; k <= n; ++k) {
          if (k >= fst && k <= fst + i - 1) continue;
          cout << A[k].second << " ";
        }
        return 0;
      }
    }
  }
  cout << "No\n";
  return 0;
}
