#include <bits/stdc++.h>
using namespace std;
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, x1, x2;
  cin >> n >> x1 >> x2;
  vector<pair<int, int> > a(n);
  vector<int> k1(n);
  vector<int> k2(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i].first;
    a[i].second = i + 1;
  }
  sort(a.begin(), a.end());
  for (int i = 0; i < n; i++) {
    k1[i] = (x1 + a[i].first - 1) / a[i].first;
    k2[i] = (x2 + a[i].first - 1) / a[i].first;
  }
  set<pair<int, int> > suff;
  for (int j = 0; j < n; j++) {
    if (k2[j] <= n - j) suff.insert({k2[j], j});
  }
  for (int i = 0; i < n; i++) {
    if (suff.empty()) break;
    if (suff.begin()->first <= n - i - k1[i]) {
      cout << "Yes\n";
      cout << k1[i] << ' ' << suff.begin()->first << "\n";
      for (int j = i; j < i + k1[i]; j++) {
        cout << a[j].second << ' ';
      }
      cout << "\n";
      for (int j = max(suff.begin()->second, i + k1[i]);
           j < max(i + k1[i], suff.begin()->second) + suff.begin()->first;
           j++) {
        cout << a[j].second << ' ';
      }
      return 0;
    }
    if (suff.count({k2[i], i})) {
      suff.erase({k2[i], i});
    }
  }
  suff.clear();
  for (int j = 0; j < n; j++) {
    if (k1[j] <= n - j) suff.insert({k1[j], j});
  }
  for (int i = 0; i < n; i++) {
    if (suff.empty()) break;
    if (suff.begin()->first <= n - i - k2[i]) {
      cout << "Yes\n";
      cout << suff.begin()->first << ' ' << k2[i] << "\n";
      for (int j = max(suff.begin()->second, i + k2[i]);
           j < max(i + k2[i], suff.begin()->second) + suff.begin()->first;
           j++) {
        cout << a[j].second << ' ';
      }
      cout << "\n";
      for (int j = i; j < i + k2[i]; j++) {
        cout << a[j].second << ' ';
      }
      return 0;
    }
    if (suff.count({k1[i], i})) {
      suff.erase({k1[i], i});
    }
  }
  cout << "No";
  return 0;
}
