#include <bits/stdc++.h>
using namespace std;
struct NODE {
  int w;
  int l;
} k[300000 + 100];
bool cmp(NODE a, NODE b) { return a.w > b.w; }
int main() {
  int n, xa, xb;
  scanf("%d%d%d", &n, &xa, &xb);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &k[i].w);
    k[i].l = i;
  }
  sort(k + 1, k + 1 + n, cmp);
  int flag = 0;
  for (int i = 1; i <= n; i++) {
    if (i * k[i].w >= xa) {
      for (int j = i + 1; j <= n; j++) {
        if ((j - i) * k[j].w >= xb) {
          printf("Yes\n%d %d\n", i, j - i);
          for (int q = 1; q <= i; q++) printf("%d ", k[q].l);
          puts("");
          for (int q = i + 1; q <= j; q++) printf("%d ", k[q].l);
          puts("");
          return 0;
        }
      }
      break;
    }
  }
  for (int i = 1; i <= n; i++) {
    if (i * k[i].w >= xb) {
      for (int j = i + 1; j <= n; j++) {
        if ((j - i) * k[j].w >= xa) {
          printf("Yes\n%d %d\n", j - i, i);
          for (int q = i + 1; q <= j; q++) printf("%d ", k[q].l);
          puts("");
          for (int q = 1; q <= i; q++) printf("%d ", k[q].l);
          puts("");
          return 0;
        }
      }
      break;
    }
  }
  puts("No");
  return 0;
}
