#include <bits/stdc++.h>
using namespace std;
int ceil(int p, int q) { return p / q + 1 - (p % q == 0); }
int main() {
  iostream::sync_with_stdio(false);
  int x[2], n;
  cin >> n >> x[0] >> x[1];
  pair<int, int>* c = new pair<int, int>[n];
  for (int i = 0; i < n; i++) cin >> c[i].first;
  for (int i = 0; i < n; i++) c[i].second = i + 1;
  sort(c, c + n);
  vector<int> ans[2];
  for (int t : {0, 1})
    for (int i = 0; i < n; i++) {
      int j = i + ceil(x[t], c[i].first);
      if (j >= n) continue;
      int k = j + ceil(x[1 - t], c[j].first);
      if (k <= n) {
        cout << "Yes\n";
        for (int l = i; l < j; l++) ans[t].push_back(c[l].second);
        for (int l = j; l < k; l++) ans[1 - t].push_back(c[l].second);
        cout << ans[0].size() << ' ' << ans[1].size() << '\n';
        for (int t = 0; t < 2; t++) {
          for (int a : ans[t]) cout << a << ' ';
          cout << '\n';
        }
        return 0;
      }
    }
  cout << "No\n";
}
