#include <bits/stdc++.h>
using namespace std;
long long i, n, a, b, o;
pair<long long, long long> s[1001000];
void solve(long long f) {
  long long t = 0;
  vector<long long> ansa, ansb;
  for (i = 1; i <= n; i++) {
    if (1.0 * a / i <= s[i].first) {
      ansa.push_back(s[i].second);
      break;
    }
    ansa.push_back(s[i].second);
  }
  t = i;
  if (t > n) return;
  for (i = t + 1; i <= n; i++) {
    if (1.0 * b / (i - t) <= s[i].first) {
      ansb.push_back(s[i].second);
      break;
    }
    ansb.push_back(s[i].second);
  }
  if (i > n) return;
  if (f) swap(ansa, ansb);
  printf("Yes\n");
  printf("%lld\n", (long long)ansa.size());
  printf("%lld\n", (long long)ansb.size());
  for (auto i : ansa) printf("%lld ", i);
  printf("\n");
  for (auto i : ansb) printf("%lld ", i);
  printf("\n");
  exit(0);
}
int main() {
  scanf("%lld %lld %lld", &n, &a, &b);
  for (i = 1; i <= n; i++) {
    scanf("%lld", &o);
    s[i] = make_pair(o, i);
  }
  sort(s + 1, s + 1 + n, greater<pair<long long, long long> >());
  solve(0);
  swap(a, b);
  solve(1);
  printf("No\n");
}
