#include <bits/stdc++.h>
using namespace std;
long long pow_mod(long long x, long long n) {
  long long ret = 1;
  while (n > 0) {
    if (n & 1) ret = ret * x % 1000000007;
    n >>= 1;
    x = x * x % 1000000007;
  }
  return ret;
}
long long n, s[2], x;
pair<long long, int> c[300005];
vector<int> ans[2];
bool check(int k) {
  int flag[2] = {0, 0};
  ans[0].clear();
  ans[1].clear();
  for (int i = 0, j = n - 1; i < 2 && j >= 0; i++, k = (k + 1) % 2) {
    int si = 0;
    for (; j >= 0; j--) {
      si++;
      ans[k].push_back(c[j].second);
      if (1.0 * s[k] / si <= 1.0 * c[j].first) {
        flag[k] = 1;
        j--;
        break;
      }
    }
  }
  if (flag[0] && flag[1]) return true;
  return false;
}
int main() {
  cin >> n >> s[0] >> s[1];
  for (int i = 0; i < n; i++) {
    scanf("%lld", &x);
    c[i] = pair<long long, int>(x, i + 1);
  }
  sort(c, c + n);
  if (check(0) || check(1)) {
    puts("Yes");
    printf("%d %d\n", ans[0].size(), ans[1].size());
    for (auto i : ans[0]) printf("%d ", i);
    printf("\n");
    for (auto i : ans[1]) printf("%d ", i);
    printf("\n");
  } else
    printf("No\n");
  return 0;
}
