#include <bits/stdc++.h>
using namespace std;
long long n, x1, x2;
vector<pair<long long, long long> > a;
void solve() {
  cin >> n >> x1 >> x2;
  for (long long i = 0; i < n; i++) {
    long long cur;
    cin >> cur;
    a.push_back({cur, i});
  }
  sort(a.begin(), a.end());
  long long pos = n - 1;
  while (pos >= 0) {
    if ((n - pos) * a[pos].first >= x1) {
      break;
    }
    pos--;
  }
  long long ind = pos - 1;
  while (ind >= 0) {
    if ((pos - ind) * a[ind].first >= x2) {
      break;
    }
    ind--;
  }
  if (ind >= 0) {
    cout << "Yes" << endl;
    cout << n - pos << " " << (pos - ind) << endl;
    for (long long i = pos; i < n; i++) {
      cout << a[i].second + 1 << " ";
    }
    cout << endl;
    for (long long i = ind; i < pos; i++) {
      cout << a[i].second + 1 << " ";
    }
    cout << endl;
    return;
  }
  pos = n - 1;
  while (pos >= 0) {
    if ((n - pos) * a[pos].first >= x2) {
      break;
    }
    pos--;
  }
  ind = pos - 1;
  while (ind >= 0) {
    if ((pos - ind) * a[ind].first >= x1) {
      break;
    }
    ind--;
  }
  if (ind >= 0) {
    cout << "Yes" << endl;
    cout << (pos - ind) << " " << n - pos << endl;
    for (long long i = ind; i < pos; i++) {
      cout << a[i].second + 1 << " ";
    }
    cout << endl;
    for (long long i = pos; i < n; i++) {
      cout << a[i].second + 1 << " ";
    }
    cout << endl;
  } else {
    cout << "No" << endl;
    return;
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  solve();
  return 0;
}
