#include <bits/stdc++.h>
using namespace std;
long long n, x1, x2;
pair<long long, long long> a[300005];
int main() {
  cin >> n >> x1 >> x2;
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &a[i].first);
    a[i].second = i;
  }
  sort(a + 1, a + n + 1);
  int i, j;
  bool can = 1;
  for (i = n; i >= 1 && (n - i + 1) * a[i].first < x2; i--)
    ;
  if (i == 0) can = 0;
  for (j = i; j >= 1 && (i - j) * a[j].first < x1; j--)
    ;
  if (j == 0) can = 0;
  if (can) {
    cout << "Yes\n";
    cout << i - j << " " << n - i + 1 << endl;
    for (int k = j; k < i; k++) printf("%lld ", a[k].second);
    cout << endl;
    for (int k = i; k <= n; k++) printf("%lld ", a[k].second);
    cout << endl;
    return 0;
  }
  can = 1;
  for (i = n; i >= 1 && (n - i + 1) * a[i].first < x1; i--)
    ;
  if (i == 0) can = 0;
  for (j = i; j >= 1 && (i - j) * a[j].first < x2; j--)
    ;
  if (j == 0) can = 0;
  if (can) {
    cout << "Yes\n";
    cout << n - i + 1 << " " << i - j << endl;
    for (int k = i; k <= n; k++) printf("%lld ", a[k].second);
    cout << endl;
    for (int k = j; k < i; k++) printf("%lld ", a[k].second);
    cout << endl;
    return 0;
  }
  cout << "No\n";
  return 0;
}
