#include <bits/stdc++.h>
using namespace std;
long long n, k1, k2, temp;
pair<long long, long long> ar[300005];
bool comp(pair<long long, long long> a, pair<long long, long long> b) {
  return a > b;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n >> k1 >> k2;
  for (long long i = 0; i < n; i++) {
    cin >> ar[i].first;
    ar[i].second = i + 1;
  }
  sort(ar, ar + n, comp);
  for (long long i = 0; i < 2; i++) {
    long long cont = 0;
    temp = 0;
    while (ar[cont].first * (cont + 1) < k1 && cont < n) {
      cont++;
    }
    if (cont < n && ar[cont].first * (cont + 1) >= k1) {
      temp = cont;
      cont++;
      while (ar[cont].first * (cont - temp) < k2 && cont < n) {
        cont++;
      }
      if (cont < n && ar[cont].first * (cont - temp) >= k2) {
        cout << "Yes\n";
        if (i == 0) {
          cout << temp + 1 << ' ' << cont - temp << '\n';
          for (long long j = 0; j <= temp; j++) cout << ar[j].second << ' ';
          cout << '\n';
          for (long long j = temp + 1; j <= cont; j++)
            cout << ar[j].second << ' ';
        } else {
          cout << cont - temp << ' ' << temp + 1 << '\n';
          for (long long j = temp + 1; j <= cont; j++)
            cout << ar[j].second << ' ';
          cout << '\n';
          for (long long j = 0; j <= temp; j++) cout << ar[j].second << ' ';
        }
        return 0;
      }
    }
    swap(k1, k2);
  }
  cout << "No";
  return 0;
}
