#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3e5 + 42;
int n, x1, x2;
pair<int, int> arr[MAXN];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> x1 >> x2;
  for (int i = 0; i < n; ++i) {
    cin >> arr[i].first;
    arr[i].second = i;
  }
  sort(arr, arr + n);
  int aaa = -1;
  for (int i = n - 1; i >= 0; --i) {
    int nn = x2 / arr[i].first + min(1, x2 % arr[i].first);
    if (nn + i <= n) {
      aaa = i;
      break;
    }
  }
  for (int i = 0; i < n; ++i) {
    int need_f = x1 / arr[i].first + min(1, x1 % arr[i].first);
    if (i + need_f > aaa)
      continue;
    else {
      cout << "Yes\n";
      cout << need_f << ' ' << n - aaa << '\n';
      for (int j = i; j < i + need_f; ++j) {
        cout << arr[j].second + 1 << ' ';
      }
      cout << '\n';
      for (int j = aaa; j < n; ++j) {
        cout << arr[j].second + 1 << ' ';
      }
      return 0;
    }
  }
  swap(x1, x2);
  aaa = -1;
  for (int i = n - 1; i >= 0; --i) {
    int nn = x2 / arr[i].first + min(1, x2 % arr[i].first);
    if (nn + i <= n) {
      aaa = i;
      break;
    }
  }
  for (int i = 0; i < n; ++i) {
    int need_f = x1 / arr[i].first + min(1, x1 % arr[i].first);
    if (i + need_f > aaa)
      continue;
    else {
      cout << "Yes\n";
      cout << n - aaa << ' ' << need_f << '\n';
      for (int j = aaa; j < n; ++j) {
        cout << arr[j].second + 1 << ' ';
      }
      cout << '\n';
      for (int j = i; j < i + need_f; ++j) {
        cout << arr[j].second + 1 << ' ';
      }
      return 0;
    }
  }
  cout << "No\n";
}
