#include <bits/stdc++.h>
const int MAXN = 3e5 + 10;
int n;
int x, y;
std::pair<int, int> a[MAXN];
std::pair<int, int> xr[MAXN];
std::pair<int, int> yr[MAXN];
int main() {
  scanf("%d%d%d", &n, &x, &y);
  for (int i = 1; i <= n; i++) {
    int tmp;
    scanf("%d", &tmp);
    a[i].first = tmp;
    a[i].second = i;
  }
  std::sort(a + 1, a + n + 1);
  int cx = 0, cy = 0;
  int minl = n + 1;
  int minlp = 0;
  int mincnt = n + 1;
  int mincntp = 0;
  for (int i = 1; i <= n; i++) {
    int k = (x + a[i].first - 1) / a[i].first;
    if (k + i - 1 <= n) {
      if (i + k - 1 < minl) {
        minl = i + k - 1;
        minlp = i;
      }
      if (k < mincnt) {
        mincnt = k;
        mincntp = i;
      }
    }
  }
  std::sort(xr, xr + cx);
  for (int i = 1; i <= n; i++) {
    int k = (y + a[i].first - 1) / a[i].first;
    if (k + i - 1 <= n) {
      if (i > minl) {
        puts("Yes");
        printf("%d %d\n", minl - minlp + 1, k);
        for (int j = minlp; j <= minl; j++) printf("%d ", a[j].second);
        puts("");
        for (int j = 0; j < k; j++) printf("%d ", a[i + j].second);
        puts("");
        exit(0);
      }
      if (n - (i + k) + 1 >= mincnt) {
        puts("Yes");
        printf("%d %d\n", mincnt, k);
        for (int j = 0; j < mincnt; j++) printf("%d ", a[mincntp + j].second);
        puts("");
        for (int j = i + (i == mincntp ? mincnt : 0), cnt = 0; cnt < k;
             j = j + 1 + (j + 1 == mincntp ? mincnt : 0)) {
          printf("%d ", a[j].second);
          ++cnt;
        }
        puts("");
        exit(0);
      }
    }
  }
  puts("No");
  return 0;
}
