#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
int n, x1, x2;
pair<int, int> c[N], f[2];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> x1 >> x2;
  for (int i = 0; i < n; i++) cin >> c[i].first, c[i].second = i;
  sort(c, c + n);
  int i = n - 1;
  for (; ~i; --i)
    if (i + (x1 + c[i].first - 1) / c[i].first - 1 < n) {
      f[0] = {i, i + (x1 + c[i].first - 1) / c[i].first};
      break;
    }
  int j = i;
  for (; ~i; --i)
    if (i + (x2 + c[i].first - 1) / c[i].first - 1 < j) {
      f[1] = {i, i + (x2 + c[i].first - 1) / c[i].first};
      break;
    }
  if (i >= 0) {
    cout << "Yes\n";
    cout << f[0].second - f[0].first << " " << f[1].second - f[1].first << "\n";
    for (; f[0].first < f[0].second; f[0].first++)
      cout << c[f[0].first].second + 1 << " ";
    cout << "\n";
    for (; f[1].first < f[1].second; f[1].first++)
      cout << c[f[1].first].second + 1 << " ";
    return 0;
  }
  i = n - 1;
  for (; ~i; --i)
    if (i + (x2 + c[i].first - 1) / c[i].first - 1 < n) {
      f[1] = {i, i + (x2 + c[i].first - 1) / c[i].first};
      break;
    }
  j = i;
  for (; ~i; --i)
    if (i + (x1 + c[i].first - 1) / c[i].first - 1 < j) {
      f[0] = {i, i + (x1 + c[i].first - 1) / c[i].first};
      break;
    }
  if (i >= 0) {
    cout << "Yes\n";
    cout << f[0].second - f[0].first << " " << f[1].second - f[1].first << "\n";
    for (; f[0].first < f[0].second; f[0].first++)
      cout << c[f[0].first].second + 1 << " ";
    cout << "\n";
    for (; f[1].first < f[1].second; f[1].first++)
      cout << c[f[1].first].second + 1 << " ";
    return 0;
  }
  cout << "No";
  return 0;
}
