#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, x1, x2;
  cin >> n >> x1 >> x2;
  pair<int, pair<int, int> > A[n];
  for (int i = 0; i < n; i++) {
    cin >> A[i].first;
    A[i].second.second = i + 1;
  }
  sort(A, A + n);
  int _1 = 1, i, ___1, ___2;
  bool __1, __2, fnd = false;
loop:
  __1 = false;
  __2 = false;
  for (int j = 0; j < n; j++) A[j].second.first = 0;
  for (i = n - 1; i >= 0; i--) {
    A[i].second.first = _1;
    if ((_1 == 1 ? x1 : x2) <= A[i].first * (n - i)) {
      __1 = true;
      break;
    }
  }
  ___1 = n - i;
  _1 = _1 - _1 * 2 + 3;
  i--;
  for (; i >= 0; i--) {
    A[i].second.first = _1;
    if ((_1 == 1 ? x1 : x2) <= A[i].first * (n - i - ___1)) {
      __2 = true;
      break;
    }
  }
  ___2 = n - i - ___1;
  if (_1 == 1) ___1 ^= ___2 ^= ___1 ^= ___2;
  if (__1 && __2) {
    fnd = true;
    goto exit;
  }
  if (_1 > 1) goto loop;
exit:
  _1 = 1;
  if (!fnd) {
    cout << "No";
    goto ret;
  }
  cout << "Yes\n" << ___1 << " " << ___2 << "\n";
loop2:
  for (int i = 0; i < n; i++) {
    if (A[i].second.first == _1) cout << A[i].second.second << " ";
  }
  cout << endl;
  _1++;
  if (_1 == 2) goto loop2;
ret:
  return 0;
}
