#include <bits/stdc++.h>
using namespace std;
const int nax = 3e5 + 5;
long long n, x1, x2;
array<long long, 2> c[nax];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> x1 >> x2;
  for (int i = 0; i < n; i++) cin >> c[i][0], c[i][1] = i;
  sort(c, c + n);
  for (int rep = 0; rep < 2; rep++) {
    int best = n - 1;
    for (; ~best; --best)
      if (c[best][0] >= (x2 + n - best - 1) / (n - best)) break;
    if (best == -1) continue;
    for (int k = 1; k < n; k++) {
      int j = lower_bound(c, c + n, array<long long, 2>{(x1 + k - 1) / k}) - c;
      if (j + k - 1 >= best) continue;
      cout << "Yes\n";
      if (rep == 0) {
        cout << k << " " << n - best << "\n";
        for (int i = j; i < j + k; i++) cout << c[i][1] + 1 << " ";
        cout << "\n";
        for (int i = best; i < n; i++) cout << c[i][1] + 1 << " ";
        cout << "\n";
      } else {
        cout << n - best << " " << k << "\n";
        for (int i = best; i < n; i++) cout << c[i][1] + 1 << " ";
        cout << "\n";
        for (int i = j; i < j + k; i++) cout << c[i][1] + 1 << " ";
        cout << "\n";
      }
      exit(0);
    }
    swap(x1, x2);
  }
  cout << "No\n";
}
