#include <bits/stdc++.h>
using namespace std;
long long get(vector<pair<long long, long long> > c, long long n, long long x) {
  for (long long i = n - 1; i >= 0; --i) {
    long long k = n - i;
    if (c[i].first * k >= x) {
      return i;
    }
  }
  return -1;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  long long n, x1, x2;
  cin >> n >> x1 >> x2;
  vector<pair<long long, long long> > c(n);
  for (long long i = 0; i < n; ++i) {
    cin >> c[i].first;
    c[i].second = i;
  }
  sort(c.begin(), c.end());
  long long a = get(c, n, x1);
  long long b = get(c, a, x2);
  bool rev = false;
  if (b == -1) {
    rev = true;
    a = get(c, n, x2);
    b = get(c, a, x1);
  }
  if (b == -1) {
    cout << "No\n";
    return 0;
  }
  cout << "Yes\n";
  vector<long long> fi, se;
  for (long long i = a; i < n; ++i) {
    fi.push_back(c[i].second + 1);
  }
  for (long long i = b; i < a; ++i) {
    se.push_back(c[i].second + 1);
  }
  if (rev) fi.swap(se);
  cout << ((long long)(fi).size()) << ' ' << ((long long)(se).size()) << '\n';
  for (auto i : fi) cout << i << ' ';
  cout << '\n';
  for (auto i : se) cout << i << ' ';
  cout << '\n';
}
