#include <bits/stdc++.h>
using namespace std;
using std::ios;
constexpr int MOD = 1e9 + 7;
constexpr int mod = 998244353;
template <typename T>
T power(T a, T b) {
  T r = 1;
  while (b) {
    if (b & 1) r *= a;
    b /= 2;
    a *= a;
  }
  return r;
}
const int mxn = 3e6 + 5;
bool solve(vector<pair<long long, long long> > &a, int st, long long x1,
           long long x2) {
  int n = a.size();
  for (long long i = 0; i < n; i++) {
    long long k1 = x1 / a[i].first + (x1 % a[i].first != 0);
    if (i + k1 >= n) continue;
    long long k2 = x2 / a[i + k1].first + (x2 % a[i + k1].first != 0);
    if (k2 > n - i - k1) continue;
    vector<int> res1, res2;
    for (int j = i; j < k1 + i; j++) res1.push_back(a[j].second);
    for (int j = k1 + i; j < i + k1 + k2; j++) res2.push_back(a[j].second);
    if (st) swap(res1, res2);
    cout << "Yes\n" << res1.size() << ' ' << res2.size() << '\n';
    for (int i : res1) cout << i << ' ';
    cout << '\n';
    for (int i : res2) cout << i << ' ';
    return 1;
  }
  return 0;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  int n, x1, x2;
  cin >> n >> x1 >> x2;
  bool sp = 0;
  vector<pair<long long, long long> > a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i].first;
    a[i].second = i + 1;
  }
  sort((a).begin(), (a).end());
  if (solve(a, 0, x1, x2) || solve(a, 1, x2, x1)) return 0;
  cout << "No";
}
