#include <bits/stdc++.h>
using namespace std;
pair<int, int> a[300010];
int b[300010], c[300010];
int main() {
  int n, x1, x2, i, j;
  scanf("%d%d%d", &n, &x1, &x2);
  for (i = 1; i <= n; i++) {
    scanf("%d", &a[i].first);
    a[i].second = i;
  }
  sort(a + 1, a + n + 1);
  for (j = 1; j <= 2; j++) {
    for (i = 1; i <= n; i++) {
      b[i] = (x1 + a[i].first - 1) / a[i].first;
      c[i] = (x2 + a[i].first - 1) / a[i].first;
    }
    for (i = 1; i <= n; i++)
      if (i + b[i] - 1 < n && i + b[i] - 1 + c[i + b[i]] <= n) {
        if (j == 1) {
          printf("Yes\n%d %d\n", b[i], c[i + b[i]]);
          for (int l = i; l <= i + b[i] - 1; l++) printf("%d ", a[l].second);
          printf("\n");
          for (int l = i + b[i]; l <= i + b[i] + c[i + b[i]] - 1; l++)
            printf("%d ", a[l].second);
          return 0;
        } else {
          printf("Yes\n%d %d\n", c[i + b[i]], b[i]);
          for (int l = i + b[i]; l <= i + b[i] + c[i + b[i]] - 1; l++)
            printf("%d ", a[l].second);
          printf("\n");
          for (int l = i; l <= i + b[i] - 1; l++) printf("%d ", a[l].second);
          return 0;
        }
      }
    swap(x1, x2);
  }
  printf("No\n");
  return 0;
}
