#include <bits/stdc++.h>
using namespace std;
int main() {
  long long x1, x2;
  int n;
  cin >> n >> x1 >> x2;
  long long x;
  vector<pair<long long, int>> v;
  for (int i = 0; i < n; ++i) {
    cin >> x;
    v.push_back({x, i + 1});
  }
  sort(v.begin(), v.end());
  vector<int> v1, v2;
  int m1, m2, j, m = n;
  bool found;
  for (int i = 0; i < n; ++i) {
    found = false;
    x = v[i].first;
    m1 = (x1 + x - 1) / x;
    j = i + m1;
    if (j < n) {
      x = v[j].first;
      m2 = (x2 + x - 1) / x;
      if (m1 + m2 <= m) found = true;
    }
    if (found) {
      for (int k = 0; k < m1; ++k) v1.push_back(v[i + k].second);
      for (int k = 0; k < m2; ++k) v2.push_back(v[j + k].second);
      break;
    }
    x = v[i].first;
    m1 = (x2 + x - 1) / x;
    j = i + m1;
    if (j < n) {
      x = v[j].first;
      m2 = (x1 + x - 1) / x;
      if (m1 + m2 <= m) found = true;
    }
    if (found) {
      for (int k = 0; k < m1; ++k) v2.push_back(v[i + k].second);
      for (int k = 0; k < m2; ++k) v1.push_back(v[j + k].second);
      break;
    }
    m--;
  }
  if (found) {
    cout << "Yes\n";
    cout << v1.size() << " " << v2.size() << endl;
    for (auto V : v1) cout << V << " ";
    cout << endl;
    for (auto V : v2) cout << V << " ";
    cout << endl;
  } else
    cout << "No\n";
  return 0;
}
