#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, x1, x2;
  scanf("%d%d%d", &(n), &(x1), &(x2));
  int inf = 1000000000 + 2;
  vector<int> c(n);
  vector<pair<int, int> > ca(n);
  for (int i = 0; i < (n); ++i) {
    scanf("%d", &(c[i]));
    ca[i] = {c[i], i + 1};
  }
  sort(c.begin(), c.end());
  sort(ca.begin(), ca.end());
  map<int, int> m;
  m[inf] = 0;
  for (int i = 0; i < (n); ++i) {
    m[c[n - 1 - i]] = i + 1;
  }
  int k1min = 1;
  int k2min = 1;
  int minsize = (x1 - 1) / k1min + 1;
  auto flb = m.lower_bound(minsize);
  while (k1min < n and flb->second < k1min) {
    k1min++;
    minsize = (x1 - 1) / k1min + 1;
    flb = m.lower_bound(minsize);
  }
  minsize = (x2 - 1) / k2min + 1;
  flb = m.lower_bound(minsize);
  while (k2min < n and flb->second < k2min) {
    k2min++;
    minsize = (x2 - 1) / k2min + 1;
    flb = m.lower_bound(minsize);
  }
  if (k1min + k2min > n) {
    printf("No\n");
    return 0;
  }
  int k2s = k2min;
  minsize = (x2 - 1) / k2s + 1;
  flb = m.lower_bound(minsize);
  while (k1min + k2s <= n and flb->second < k1min + k2s) {
    k2s++;
    minsize = (x2 - 1) / k2s + 1;
    flb = m.lower_bound(minsize);
  }
  if (k1min + k2s <= n) {
    printf("Yes\n");
    printf("%d %d\n", k1min, k2s);
    for (int i = 0; i < (k1min); ++i) {
      printf("%d%c", ca[n - 1 - i].second, i == k1min - 1 ? '\n' : ' ');
    }
    for (int i = 0; i < (k2s); ++i) {
      printf("%d%c", ca[n - 1 - k1min - i].second, i == k2s - 1 ? '\n' : ' ');
    }
    return 0;
  }
  int k1s = k1min;
  minsize = (x1 - 1) / k1s + 1;
  flb = m.lower_bound(minsize);
  while (k2min + k1s <= n and flb->second < k1s + k2min) {
    k1s++;
    minsize = (x1 - 1) / k1s + 1;
    flb = m.lower_bound(minsize);
  }
  if (k1s + k2min <= n) {
    printf("Yes\n");
    printf("%d %d\n", k1s, k2min);
    for (int i = 0; i < (k1s); ++i) {
      printf("%d%c", ca[n - 1 - k2min - i].second, i == k1s - 1 ? '\n' : ' ');
    }
    for (int i = 0; i < (k2min); ++i) {
      printf("%d%c", ca[n - 1 - i].second, i == k2min - 1 ? '\n' : ' ');
    }
    return 0;
  }
  printf("No\n");
  return 0;
}
