#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int i, j, k, n, x1, x2, x, res1 = -1, res2 = -1, c = 0, l;
  double temp;
  vector<pair<int, int> > v;
  cin >> n >> x1 >> x2;
  for (i = 1; i <= n; i++) {
    cin >> x;
    v.push_back(make_pair(x, i));
  }
  sort(v.begin(), v.end());
  reverse(v.begin(), v.end());
  for (i = 0; i < n; i++) {
    temp = (x1 * 1.0) / ((i + 1) * 1.0);
    if (v[i].first >= temp) {
      res1 = i;
      for (j = i + 1, k = 1; j < n; j++, k++) {
        temp = (x2 * 1.0) / (k * 1.0);
        if (v[j].first >= temp) {
          res2 = j;
          c = 1;
          break;
        }
      }
      if (c) break;
    }
  }
  if (res1 != -1 && res2 != -1) {
    cout << "Yes" << endl << i + 1 << " " << k << endl;
    for (j = 0; j <= i; j++) cout << v[j].second << " ";
    cout << endl;
    for (j = i + 1, l = 1; l <= k; j++, l++) cout << v[j].second << " ";
    cout << endl;
    return 0;
  }
  res1 = res2 = -1;
  c = 0;
  for (i = 0; i < n; i++) {
    temp = (x2 * 1.0) / ((i + 1) * 1.0);
    if (v[i].first >= temp) {
      res1 = i;
      for (j = i + 1, k = 1; j < n; j++, k++) {
        temp = (x1 * 1.0) / (k * 1.0);
        if (v[j].first >= temp) {
          res2 = j;
          c = 1;
          break;
        }
      }
      if (c) break;
    }
  }
  if (res1 != -1 && res2 != -1) {
    cout << "Yes" << endl << i + 1 << " " << k << endl;
    for (j = 0; j <= i; j++) cout << v[j].second << " ";
    cout << endl;
    for (j = i + 1, l = 1; l <= k; j++, l++) cout << v[j].second << " ";
    cout << endl;
    return 0;
  }
  cout << "No" << endl;
  return 0;
}
