#include <bits/stdc++.h>
std::pair<int, int> a[524288];
int n, p1, p2;
bool check(int x1, int x2) {
  p1 = 1;
  while (p1 < n && !(x1 <= (long long int)p1 * a[p1 - 1].first)) ++p1;
  if (p1 == n) return false;
  p2 = p1 + 1;
  while (p2 < n && !(x2 <= (long long int)(p2 - p1) * a[p2 - 1].first)) ++p2;
  return x2 <= (long long int)(p2 - p1) * a[p2 - 1].first;
}
int main() {
  int x1, x2;
  scanf("%d%d%d", &n, &x1, &x2);
  for (int i = 0; i < n; ++i) scanf("%d", &a[i].first), a[i].second = i + 1;
  std::sort(a, a + n, std::greater<std::pair<int, int> >());
  if (check(x1, x2)) {
    puts("Yes");
    printf("%d %d\n", p1, p2 - p1);
    for (int i = 0; i < p1; ++i) printf(" %d" + !i, a[i].second);
    printf("\n");
    for (int i = p1; i < p2; ++i) printf(" %d" + (i == p1), a[i].second);
    printf("\n");
    return 0;
  }
  if (check(x2, x1)) {
    puts("Yes");
    printf("%d %d\n", p2 - p1, p1);
    for (int i = p1; i < p2; ++i) printf(" %d" + (i == p1), a[i].second);
    printf("\n");
    for (int i = 0; i < p1; ++i) printf(" %d" + !i, a[i].second);
    printf("\n");
    return 0;
  }
  puts("No");
  return 0;
}
