#include <bits/stdc++.h>
using namespace std;
int di[] = {0, 0, 1, -1, 1, 1, -1, -1};
int dj[] = {1, -1, 0, 0, -1, 1, 1, -1};
const double PI = 3.14159265359, EPS = 1e-9;
const int N = 300005, M = 202, Mod = 1000000007, OO = 1000000000;
pair<int, int> arr[N];
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0), cout.precision(10),
      cout << fixed;
  int n, x1, x2;
  cin >> n >> x1 >> x2;
  for (int i = 0; i < n; ++i) {
    cin >> arr[i].first;
    arr[i].second = i + 1;
  }
  sort(arr, arr + n);
  bool flag = true;
  if (x1 > x2) {
    flag = false;
    swap(x1, x2);
  }
  bool f = true;
  for (int i = n - 1; i >= 0; --i) {
    if (f) {
      if ((x2 + (n - i - 1)) / (n - i) <= arr[i].first) {
        for (int j = 0; j < i; ++j) {
          if ((x1 + (i - j - 1)) / (i - j) <= arr[j].first) {
            cout << "Yes\n";
            if (flag) {
              cout << i - j << ' ' << n - i << '\n';
              for (int k = j; k < i; ++k) {
                cout << arr[k].second << ' ';
              }
              cout << '\n';
              for (int k = i; k < n; ++k) {
                cout << arr[k].second << ' ';
              }
              cout << '\n';
            } else {
              cout << n - i << ' ' << i - j << '\n';
              for (int k = i; k < n; ++k) {
                cout << arr[k].second << ' ';
              }
              cout << '\n';
              for (int k = j; k < i; ++k) {
                cout << arr[k].second << ' ';
              }
              cout << '\n';
            }
            return 0;
          }
        }
        f = false;
      }
    } else {
      int cnt = (x2 + (arr[i].first - 1)) / arr[i].first;
      if (i + cnt < n) {
        if (arr[i + cnt].first >=
            (x1 + (n - (i + cnt) - 1)) / (n - (i + cnt))) {
          cout << "Yes\n";
          if (flag) {
            cout << n - (i + cnt) << ' ' << cnt << '\n';
            for (int k = i + cnt; k < n; ++k) {
              cout << arr[k].second << ' ';
            }
            cout << '\n';
            for (int k = i; k < i + cnt; ++k) {
              cout << arr[k].second << ' ';
            }
            cout << '\n';
          } else {
            cout << cnt << ' ' << n - (i + cnt) << '\n';
            for (int k = i; k < i + cnt; ++k) {
              cout << arr[k].second << ' ';
            }
            cout << '\n';
            for (int k = i + cnt; k < n; ++k) {
              cout << arr[k].second << ' ';
            }
            cout << '\n';
          }
          return 0;
        }
      }
    }
  }
  cout << "No\n";
  return 0;
}
