#include <bits/stdc++.h>
using namespace std;
pair<long long, long long> s[1000000];
long long d[1000000][2];
signed main() {
  long long n, first, second;
  cin >> n >> first >> second;
  for (long long i = 0; i < n; i++) {
    cin >> s[i].first;
    s[i].second = i;
  }
  sort(s, s + n);
  d[n][0] = -1;
  d[n][1] = -1;
  for (long long i = n - 1; i >= 0; i--) {
    d[i][0] = d[i + 1][0];
    d[i][1] = d[i + 1][1];
    long long k = (first + s[i].first - 1) / s[i].first;
    if (i + k <= n) {
      d[i][0] = i;
    }
    k = (second + s[i].first - 1) / s[i].first;
    if (i + k <= n) {
      d[i][1] = i;
    }
  }
  for (long long i = 0; i < n; i++) {
    long long k = (first + s[i].first - 1) / s[i].first;
    if (i + k < n && d[i + k][1] != -1) {
      cout << "Yes\n";
      long long j = d[i + k][1];
      long long m = (second + s[j].first - 1) / s[j].first;
      cout << k << ' ' << m << '\n';
      for (long long l = i; l < i + k; l++) {
        cout << s[l].second + 1 << ' ';
      }
      cout << '\n';
      for (long long l = j; l < j + m; l++) {
        cout << s[l].second + 1 << ' ';
      }
      return 0;
    }
    k = (second + s[i].first - 1) / s[i].first;
    if (i + k < n && d[i + k][0] != -1) {
      cout << "Yes\n";
      long long j = d[i + k][0];
      long long m = (first + s[j].first - 1) / s[j].first;
      cout << m << ' ' << k << '\n';
      for (long long l = j; l < j + m; l++) {
        cout << s[l].second + 1 << ' ';
      }
      cout << '\n';
      for (long long l = i; l < i + k; l++) {
        cout << s[l].second + 1 << ' ';
      }
      return 0;
    }
  }
  cout << "No\n";
}
