#include <bits/stdc++.h>
using namespace std;
template <class _T_>
void read(_T_& d) {
  d = 0;
  int f = 1;
  char c = getchar();
  for (; c < '0' || c > '9'; c = getchar())
    if (c == '-') f *= -1;
  for (; c >= '0' && c <= '9'; c = getchar()) d = d * 10 + c - '0';
  d *= f;
}
int n;
long long s1, s2;
pair<long long, int> z[300005];
int q[300005], h = 1, t;
int main() {
  read(n);
  read(s1);
  read(s2);
  for (int i = 1; i <= n; ++i) {
    read(z[i].first);
    z[i].second = i;
  }
  sort(z + 1, z + n + 1);
  int i;
  for (i = n; i; --i) {
    if (z[i].first * (n - i + 1) < s1 && z[i].first * (n - i + 1) < s2)
      continue;
    int H = max(s1, s2);
    for (int j = i - 1; j; --j) {
      if (z[j].first * (i - j) < H) continue;
      if (s1 == H) {
        printf("Yes\n%d %d\n", i - j, n - i + 1);
        for (int k = j; k < i; ++k)
          printf("%d%c", z[k].second, " \n"[k == i - 1]);
        for (int k = i; k <= n; ++k) printf("%d%c", z[k].second, " \n"[k == n]);
        return 0;
      } else {
        printf("Yes\n%d %d\n", n - i + 1, i - j);
        for (int k = i; k <= n; ++k) printf("%d%c", z[k].second, " \n"[k == n]);
        for (int k = j; k < i; ++k)
          printf("%d%c", z[k].second, " \n"[k == i - 1]);
        return 0;
      }
    }
    break;
  }
  for (i = i - 1; i > 0; --i) {
    if (z[i].first * (n - i + 1) < s1 || z[i].first * (n - i + 1) < s2)
      continue;
    int H = min(s1, s2);
    for (int j = i - 1; j; --j) {
      if (z[j].first * (i - j) < H) continue;
      if (s1 == H) {
        printf("Yes\n%d %d\n", i - j, n - i + 1);
        for (int k = j; k < i; ++k)
          printf("%d%c", z[k].second, " \n"[k == i - 1]);
        for (int k = i; k <= n; ++k) printf("%d%c", z[k].second, " \n"[k == n]);
        return 0;
      } else {
        printf("Yes\n%d %d\n", n - i + 1, i - j);
        for (int k = i; k <= n; ++k) printf("%d%c", z[k].second, " \n"[k == n]);
        for (int k = j; k < i; ++k)
          printf("%d%c", z[k].second, " \n"[k == i - 1]);
        return 0;
      }
    }
    break;
  }
  puts("No");
  return 0;
}
