#include <bits/stdc++.h>
using namespace std;
int n;
vector<pair<int, int> > c;
bool cmp(pair<int, int> b, int a) { return a > b.first; }
void solve(int x1, int x2, bool t) {
  vector<int> ans;
  int need, k(0);
  for (int i = n - 1; i >= 0; i--) {
    k++;
    if (x2 <= k * c[i].first) {
      need = n - i;
      for (int j = n - 1; j >= i; j--) ans.push_back(c[j].second);
      break;
    }
  }
  for (int i = 1; i <= n; i++) {
    int val = (x1 + i - 1) / i,
        id = lower_bound(c.begin(), c.end(), val, cmp) - c.begin();
    if (n - id - i >= need) {
      cout << "Yes\n";
      if (t) {
        cout << i << " " << need << '\n';
        for (int j = id; j < id + i; j++) cout << c[j].second + 1 << " ";
        cout << '\n';
        for (int j = 0; j < need; j++) cout << ans[j] + 1 << " ";
      } else {
        cout << need << " " << i << '\n';
        for (int j = 0; j < need; j++) cout << ans[j] + 1 << " ";
        cout << '\n';
        for (int j = id; j < id + i; j++) cout << c[j].second + 1 << " ";
      }
      exit(0);
    }
  }
}
int main() {
  int x1, x2;
  cin >> n >> x1 >> x2;
  c.resize(n);
  for (int i = 0; i < n; i++) cin >> c[i].first, c[i].second = i;
  sort(c.begin(), c.end());
  solve(x1, x2, 1);
  solve(x2, x1, 0);
  cout << "No";
}
