#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  srand(time(0));
  ll n, x1, x2;
  cin >> n >> x1 >> x2;
  pair<ll, ll> v[1 + n];
  for (int i = 1; i <= n; i++) {
    cin >> v[i].first;
    v[i].second = i;
  }
  sort(v + 1, v + 1 + n);
  int x1p = 0, x2p = 0;
  for (int j = n; j >= 1; j--) {
    if (v[j].first * (n + 1 - j) >= x1) x1p = max(x1p, j);
    if (v[j].first * (n + 1 - j) >= x2) x2p = max(x2p, j);
  }
  if (x1p == 0 and x2p == 0) {
    cout << "No" << '\n';
    return 0;
  }
  int x1q = 0, x2q = 0;
  for (int i = x1p - 1; i >= 1; i--) {
    if (v[i].first * (x1p - i) >= x2) {
      x2q = i;
      break;
    }
  }
  for (int i = x2p - 1; i >= 1; i--) {
    if (v[i].first * (x2p - i) >= x1) {
      x1q = i;
      break;
    }
  }
  if (x1q == 0 and x2q == 0) {
    cout << "No" << '\n';
    return 0;
  }
  if (x2q > 0 and x1p > 0) {
    cerr << "~!" << x2q << ' ' << x1p << endl;
    cout << "Yes" << '\n';
    cout << n + 1 - x1p << ' ' << x1p - x2q << '\n';
    for (int i = x1p; i <= n; i++) cout << v[i].second << ' ';
    cout << '\n';
    for (int i = x2q; i < x1p; i++) cout << v[i].second << ' ';
    cout << '\n';
  } else if (x1q > 0 and x2p > 0) {
    cout << "Yes" << '\n';
    cout << x2p - x1q << ' ' << n + 1 - x2p << '\n';
    for (int i = x1q; i < x2p; i++) cout << v[i].second << ' ';
    cout << '\n';
    for (int i = x2p; i <= n; i++) cout << v[i].second << ' ';
    cout << '\n';
  } else {
    cout << "No" << '\n';
  }
  return 0;
}
