#include <bits/stdc++.h>
using namespace std;
mt19937 gen(chrono::system_clock::now().time_since_epoch().count());
const int M = 1e9 + 7;
const int N = 1e6 + 7;
int n, x, y, l, l1, p[N];
vector<long double> s;
vector<pair<long double, int> > ss;
long double a;
int kol(long double x) {
  return (upper_bound(s.begin(), s.end(), -x) - s.begin());
}
int pos(long double x) {
  return (upper_bound(s.begin(), s.end(), -x) - s.begin()) - 1;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> x >> y;
  for (int i = 0; i < n; i++) {
    cin >> a;
    ss.push_back({a, i});
  }
  sort(ss.rbegin(), ss.rend());
  for (int i = 0; i < n; i++) {
    p[i] = ss[i].second;
    s.push_back(-ss[i].first);
  }
  bool f = 0;
  for (int i = n - 1; i >= 0; i--)
    if (1.0 * y / (i + 1) <= -s[i]) l = i, f = 1;
  if (f) {
    for (int i = 0; i < n - l - 1; i++) {
      long double xx = 1.0 * x / (i + 1);
      if (kol(xx) >= i + 1 && kol(xx) - i - 1 > l) {
        cout << "Yes" << '\n';
        cout << i + 1 << ' ' << l + 1 << '\n';
        for (int j = pos(xx), r = 0; r <= i; j--, r++) cout << p[j] + 1 << ' ';
        cout << '\n';
        for (int r = 0; r <= l; r++) cout << p[r] + 1 << ' ';
        return 0;
      }
    }
  }
  f = 0;
  swap(x, y);
  for (int i = n - 1; i >= 0; i--)
    if (1.0 * y / (i + 1) <= -s[i]) l1 = i, f = 1;
  if (!f) {
    cout << "No";
    return 0;
  }
  for (int i = 0; i < n - l1 - 1; i++) {
    long double xx = 1.0 * x / (i + 1);
    if (kol(xx) >= i + 1 && kol(xx) - i - 1 > l1) {
      cout << "Yes" << '\n';
      cout << l1 + 1 << ' ' << i + 1 << '\n';
      for (int r = 0; r <= l1; r++) cout << p[r] + 1 << ' ';
      cout << '\n';
      for (int j = pos(xx), r = 0; r <= i; j--, r++) cout << p[j] + 1 << ' ';
      return 0;
    }
  }
  cout << "No";
  return 0;
}
