#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  long long n, x1, x2;
  cin >> n >> x1 >> x2;
  pair<int, int> c[n];
  for (int i = 0; i < n; ++i) {
    cin >> c[i].first;
    c[i].second = i + 1;
  }
  sort(c, c + n);
  bool ok = false;
  int s1 = -1, s2 = -1;
  for (long long i = n - 1, k = 1; i >= 0; --i, ++k) {
    if ((long long)c[i].first * k >= x2) {
      s2 = i;
      break;
    }
  }
  for (long long i = s2 - 1, k = 1; i >= 0; --i, ++k) {
    if ((long long)c[i].first * k >= x1) {
      s1 = i;
      ok = true;
      break;
    }
  }
  if (ok) {
    int k2 = n - s2;
    int k1 = n - s1 - k2;
    cout << "Yes\n";
    cout << k1 << " " << k2 << "\n";
    for (int i = 0; i < k1; ++i) cout << c[s1 + i].second << " ";
    cout << "\n";
    for (int i = 0; i < k2; ++i) cout << c[s2 + i].second << " ";
    cout << "\n";
    return 0;
  }
  s1 = -1, s2 = -1;
  for (long long i = n - 1, k = 1; i >= 0; --i, ++k) {
    if ((long long)c[i].first * k >= x1) {
      s1 = i;
      break;
    }
  }
  for (long long i = s1 - 1, k = 1; i >= 0; --i, ++k) {
    if ((long long)c[i].first * k >= x2) {
      s2 = i;
      ok = true;
      break;
    }
  }
  if (ok) {
    int k1 = n - s1;
    int k2 = n - s2 - k1;
    cout << "Yes\n";
    cout << k1 << " " << k2 << "\n";
    for (int i = 0; i < k1; ++i) cout << c[s1 + i].second << " ";
    cout << "\n";
    for (int i = 0; i < k2; ++i) cout << c[s2 + i].second << " ";
    cout << "\n";
  } else
    cout << "No\n";
  return 0;
}
