#include <bits/stdc++.h>
using namespace std;
int dir[4][2] = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}};
const int maxn = 300005;
int n, m;
int ans1[maxn], ans2[maxn], pop1, pop2;
pair<int, int> getans[maxn];
int check(long long x, long long y) {
  int i;
  int cur = n;
  pop1 = 0;
  pop2 = 0;
  for (i = cur; i >= 1; i--) {
    ans1[++pop1] = getans[i].second;
    if (getans[i].first * (cur - i + 1) >= x) {
      cur = i - 1;
      break;
    }
  }
  for (i = cur; i >= 1; i--) {
    ans2[++pop2] = getans[i].second;
    if (getans[i].first * (cur - i + 1) >= y) {
      cur = i - 1;
      break;
    }
  }
  return i;
}
int main() {
  long long x1, x2;
  cin >> n >> x1 >> x2;
  for (int i = 1; i <= n; i++) {
    cin >> getans[i].first;
    getans[i].second = i;
  }
  sort(getans + 1, getans + n + 1);
  if (check(x1, x2)) {
    cout << "Yes" << endl;
    cout << pop1 << " " << pop2 << endl;
    for (int i = 1; i <= pop1; i++) {
      cout << ans1[i] << " ";
    }
    cout << endl;
    for (int i = 1; i <= pop2; i++) {
      cout << ans2[i] << " ";
    }
    cout << endl;
  } else if (check(x2, x1)) {
    cout << "Yes" << endl;
    cout << pop2 << " " << pop1 << endl;
    for (int i = 1; i <= pop2; i++) {
      cout << ans2[i] << " ";
    }
    cout << endl;
    for (int i = 1; i <= pop1; i++) {
      cout << ans1[i] << " ";
    }
    cout << endl;
  } else {
    cout << "No" << endl;
  }
}
