#include <bits/stdc++.h>
const int inf = 2e9;
using namespace std;
pair<long long, int> C[300006];
int main() {
  long long n, x1, x2;
  scanf("%lld%lld%lld", &n, &x1, &x2);
  for (int i = 0; i < n; ++i) {
    scanf("%lld", &C[i].first);
    C[i].second = i + 1;
  }
  sort(C, C + n);
  long long mi = min(x1, x2), ma = max(x1, x2);
  int i = n - 1;
  for (; i > -1; i--) {
    if (C[i].first * (n - i) >= ma) break;
  }
  int j = i - 1;
  for (; j > -1; j--) {
    if (C[j].first * (i - j) >= mi) break;
  }
  int i1 = n - 1;
  for (; i1 > -1; i1--) {
    if (C[i1].first * (n - i1) >= mi) break;
  }
  int j1 = i1 - 1;
  for (; j1 > -1; j1--) {
    if (C[j1].first * (i1 - j1) >= ma) break;
  }
  if (j <= -1 && j1 <= -1) {
    return !printf("No\n");
  } else {
    printf("Yes\n");
    if (mi == x1) {
      if (j != -1) {
        cout << i - j << " " << n - i << endl;
        for (int k = j; k < i; ++k) {
          cout << C[k].second << " ";
        }
        cout << endl;
        for (int k = i; k < n; ++k) {
          cout << C[k].second << " ";
        }
      } else {
        if (j1 != -1) {
          cout << n - i1 << " " << i1 - j1 << endl;
          for (int k = i1; k < n; ++k) {
            cout << C[k].second << " ";
          }
          cout << endl;
          for (int k = j1; k < i1; ++k) {
            cout << C[k].second << " ";
          }
        }
      }
    } else {
      if (j != -1) {
        cout << n - i << " " << i - j << endl;
        for (int k = i; k < n; ++k) {
          cout << C[k].second << " ";
        }
        cout << endl;
        for (int k = j; k < i; ++k) {
          cout << C[k].second << " ";
        }
      } else {
        if (j1 != -1) {
          cout << i1 - j1 << " " << n - i1 << endl;
          for (int k = j1; k < i1; ++k) {
            cout << C[k].second << " ";
          }
          cout << endl;
          for (int k = i1; k < n; ++k) {
            cout << C[k].second << " ";
          }
        }
      }
    }
  }
  return 0;
}
