#include <bits/stdc++.h>
using namespace std;
struct node {
  long long v, id;
} c[300005];
bool cmp(node a, node b) { return a.v < b.v; }
long long n, x1, x2;
long long m1[300005], mi1[300005], m2[300005], mi2[300005];
int main() {
  scanf("%lld%lld%lld", &n, &x1, &x2);
  for (long long i = 1; i <= n; i++) {
    scanf("%lld", &c[i].v);
    c[i].id = i;
  }
  sort(c + 1, c + 1 + n, cmp);
  memset(m1, 0, sizeof(m1));
  memset(m2, 0, sizeof(m2));
  for (long long j = n; j >= 1; j--) {
    long long s1 = c[j].v * (n - j + 1);
    if (s1 > m1[j]) {
      m1[j] = s1;
      mi1[j] = j;
    } else {
      mi1[j] = mi1[j + 1];
      m1[j] = m1[j + 1];
    }
  }
  long long l = 1;
  long long r = n;
  long long mid;
  long long ans = -1;
  while (l <= r) {
    mid = (l + r) >> 1;
    long long tmp = -1;
    long long i;
    bool flag = false;
    memset(m2, 0, sizeof(m2));
    for (long long j = 1; j <= n; j++) {
      long long s2 = c[j].v * (n - j - mid + 1);
      if (s2 > m2[j - 1]) {
        m2[j] = s2;
        mi2[j] = j;
      } else {
        m2[j] = m2[j - 1];
        mi2[j] = mi2[j - 1];
      }
    }
    for (long long j = 1; j <= n - mid + 1; j++) {
      if (c[j].v * mid < x1) continue;
      tmp = j;
      if (m1[j + mid] >= x2) {
        flag = true;
        i = mi1[j + mid];
        break;
      }
      if (m2[j - 1] >= x2) {
        flag = true;
        i = mi2[j - 1];
        break;
      }
    }
    if (tmp == -1) {
      l = mid + 1;
      continue;
    }
    if (flag) {
      ans = mid;
      printf("Yes\n");
      long long num;
      if (i < tmp)
        num = n - i - mid + 1;
      else
        num = n - i + 1;
      printf("%lld %lld\n", mid, num);
      printf("%lld", c[tmp].id);
      for (long long j = tmp + 1; j < tmp + mid; j++) {
        printf(" %lld", c[j].id);
      }
      printf("\n");
      printf("%lld", c[i].id);
      for (long long j = i + 1; j <= n; j++) {
        if (j >= tmp && j < tmp + mid) continue;
        printf(" %lld", c[j].id);
      }
      printf("\n");
      break;
    } else {
      r = mid - 1;
    }
  }
  if (ans == -1) printf("No\n");
  return 0;
}
