#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 7, INF = 1e9 + 7;
const long long INF64 = (long long)1e18 + 3;
pair<int, int> c[N];
int x1, x2;
int n;
int divUp(int a, int b) { return a / b + (a % b != 0); }
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n >> x1 >> x2;
  for (int i = 0; i < (int)(n); ++i) {
    int t;
    cin >> t;
    c[i] = make_pair(t, i);
  }
  c[n] = make_pair(INF, n);
  sort(c, c + n);
  for (int i = 0; i < (int)(n); ++i) fprintf(stderr, "%i ", c[i]);
  fflush(stderr);
  fprintf(stderr, "\n");
  fflush(stderr);
  for (int l = 0; l < (int)(n); ++l) {
    int r = l + divUp(x1, c[l].first);
    if (r > n) continue;
    int rr = r + divUp(x2, c[r].first);
    if (rr > n) continue;
    cout << "Yes\n" << r - l << ' ' << rr - r << '\n';
    for (int i = l; i < r; ++i) cout << c[i].second + 1 << ' ';
    cout << '\n';
    for (int i = r; i < rr; ++i) cout << c[i].second + 1 << ' ';
    return 0;
  }
  for (int l = 0; l < (int)(n); ++l) {
    int r = l + divUp(x2, c[l].first);
    if (r > n) continue;
    int rr = r + divUp(x1, c[r].first);
    if (rr > n) continue;
    cout << "Yes\n" << rr - r << ' ' << r - l << '\n';
    for (int i = r; i < rr; ++i) cout << c[i].second + 1 << ' ';
    cout << '\n';
    for (int i = l; i < r; ++i) cout << c[i].second + 1 << ' ';
    return 0;
  }
  cout << "No\n";
  return 0;
}
