#include <bits/stdc++.h>
using namespace std;
const int N = 300005;
int n, x1, x2;
vector<int> ans[2];
int c[N], p[N];
void solve() {
  sort(p, p + n, [&](int x, int y) { return c[x] > c[y]; });
  int mx = max(x1, x2);
  int mn = mx == x1 ? x2 : x1;
  int x = -1, y = -1;
  int haveans = 0;
  for (int i = 0; i < n; i++) {
    if (mx <= 1LL * c[p[i]] * (i + 1)) {
      x = i;
      haveans |= 1;
      break;
    }
  }
  for (int i = x + 1; i < n; i++) {
    if (mn <= 1LL * c[p[i]] * (i - x)) {
      y = i;
      haveans |= 2;
      break;
    }
  }
  if (haveans == 3) {
    puts("Yes");
    for (int i = 0; i <= x; i++) {
      ans[0].push_back(p[i] + 1);
    }
    for (int i = x + 1; i <= y; i++) {
      ans[1].push_back(p[i] + 1);
    }
    if (x1 > x2)
      p[0] = 0, p[1] = 1;
    else
      p[0] = 1, p[1] = 0;
    cout << ans[p[0]].size() << ' ' << ans[p[1]].size() << endl;
    for (int i = 0; i < 2; i++) {
      for (int j = 0; j < ans[p[i]].size(); j++) {
        cout << ans[p[i]][j] << ' ';
      }
      puts("");
    }
    return;
  }
  for (int i = 0; i < n; i++) p[i] = i;
  sort(p, p + n, [&](int x, int y) { return c[x] > c[y]; });
  mx = max(x1, x2);
  mn = mx == x1 ? x2 : x1;
  x = -1, y = -1;
  haveans = 0;
  for (int i = 0; i < n; i++) {
    if (mn <= 1LL * c[p[i]] * (i + 1)) {
      x = i;
      haveans |= 1;
      break;
    }
  }
  for (int i = x + 1; i < n; i++) {
    if (mx <= 1LL * c[p[i]] * (i - x)) {
      y = i;
      haveans |= 2;
      break;
    }
  }
  if (haveans == 3) {
    puts("Yes");
    for (int i = 0; i <= x; i++) {
      ans[0].push_back(p[i] + 1);
    }
    for (int i = x + 1; i <= y; i++) {
      ans[1].push_back(p[i] + 1);
    }
    if (x1 > x2)
      p[0] = 1, p[1] = 0;
    else
      p[0] = 0, p[1] = 1;
    cout << ans[p[0]].size() << ' ' << ans[p[1]].size() << endl;
    for (int i = 0; i < 2; i++) {
      for (int j = 0; j < ans[p[i]].size(); j++) {
        cout << ans[p[i]][j] << ' ';
      }
      puts("");
    }
  } else
    puts("No");
}
int main() {
  scanf("%d%d%d", &n, &x1, &x2);
  for (int i = 0; i < n; i++) {
    scanf("%d", &c[i]);
    p[i] = i;
  }
  solve();
  return 0;
}
