#include <bits/stdc++.h>
using namespace std;
int n, m, a, b;
vector<pair<int, int>> Ms;
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  cin >> n >> a >> b;
  Ms.resize(n);
  for (int i = 0; i < n; i++) {
    cin >> Ms[i].first;
    Ms[i].second = i + 1;
  }
  sort(Ms.rbegin(), Ms.rend());
  long double need;
  int p1 = -1, p2 = -1;
  for (int i = 0; i < n; i++) {
    need = a * 1.0 / (i + 1);
    if (need <= Ms[i].first) {
      p1 = i;
      break;
    }
  }
  if (p1 == -1) {
    cout << "No";
    return 0;
  }
  for (int i = 1; i < n - p1; i++) {
    need = b * 1.0 / i;
    if (need <= Ms[i + p1].first) {
      cout << "Yes\n";
      cout << p1 + 1 << ' ' << i << "\n";
      for (int j = 0; j <= p1; j++) {
        cout << Ms[j].second << ' ';
      }
      cout << "\n";
      for (int j = p1 + 1; j <= i + p1; j++) {
        cout << Ms[j].second << ' ';
      }
      return 0;
    }
  }
  for (int i = 0; i < n; i++) {
    need = b * 1.0 / (i + 1);
    if (need <= Ms[i].first) {
      p2 = i;
      break;
    }
  }
  if (p2 == -1) {
    cout << "No";
    return 0;
  }
  for (int i = 1; i < n - p2; i++) {
    need = a * 1.0 / i;
    if (need <= Ms[i + p2].first) {
      cout << "Yes\n";
      cout << i << ' ' << p2 + 1 << "\n";
      for (int j = p2 + 1; j <= i + p2; j++) {
        cout << Ms[j].second << ' ';
      }
      cout << "\n";
      for (int j = 0; j <= p2; j++) {
        cout << Ms[j].second << ' ';
      }
      return 0;
    }
  }
  cout << "No";
}
