#include <bits/stdc++.h>
using namespace std;
int n, a[300005], res, x1, x2, k1, k2, id1, id2, id[300005];
void Nhap() {
  cin >> n >> x1 >> x2;
  for (int i = 1; i <= n; ++i) cin >> a[i], id[i] = i;
}
void QuickSort(int l, int r) {
  int i = l, j = r;
  int x = a[(l + r) / 2];
  while (i <= j) {
    while (a[i] < x) ++i;
    while (a[j] > x) --j;
    if (i <= j) {
      swap(a[i], a[j]);
      swap(id[i], id[j]);
      ++i;
      --j;
    }
  }
  if (i < r) QuickSort(i, r);
  if (l < j) QuickSort(l, j);
}
void process1() {
  int x;
  k1 = 0;
  k2 = 0;
  for (int i = 1; i <= n; ++i) {
    x = x1 / i;
    if (x1 % i > 0) x++;
    if (a[n - i + 1] >= x) {
      k1 = i;
      id1 = n - i + 1;
      break;
    }
  }
  for (int i = 1; i <= n; ++i) {
    x = x2 / i;
    if (x2 % i > 0) x++;
    if (n - k1 - i + 1 <= 0) break;
    if (a[n - k1 - i + 1] >= x) {
      k2 = i;
      id2 = n - k1 - k2 + 1;
      break;
    }
  }
  if (k1 && k2) {
    cout << "Yes\n";
    cout << k1 << " " << k2 << "\n";
    while (k1) {
      k1--;
      cout << id[id1] << " ";
      id1++;
    }
    cout << "\n";
    while (k2) {
      k2--;
      cout << id[id2] << " ";
      id2++;
    }
  } else
    cout << "No";
}
void process() {
  int x;
  for (int i = 1; i <= n; ++i) {
    x = x2 / i;
    if (x2 % i > 0) x++;
    if (a[n - i + 1] >= x) {
      k2 = i;
      id2 = n - i + 1;
      break;
    }
  }
  for (int i = 1; i <= n; ++i) {
    x = x1 / i;
    if (x1 % i > 0) x++;
    if (n - k2 - i + 1 <= 0) break;
    if (a[n - k2 - i + 1] >= x) {
      k1 = i;
      id1 = n - k2 - k1 + 1;
      break;
    }
  }
  if (k1 && k2) {
    cout << "Yes\n";
    cout << k1 << " " << k2 << "\n";
    while (k1) {
      k1--;
      cout << id[id1] << " ";
      id1++;
    }
    cout << "\n";
    while (k2) {
      k2--;
      cout << id[id2] << " ";
      id2++;
    }
  } else
    process1();
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  Nhap();
  QuickSort(1, n);
  process();
  return 0;
}
