#include <bits/stdc++.h>
using namespace std;
string itosm(long long x) {
  if (x == 0) return "0";
  string ans = "";
  while (x > 0) {
    ans += ((x % 10) + '0');
    x /= 10;
  }
  reverse(ans.begin(), ans.end());
  return ans;
}
long long stoim(string str) {
  long long ans = 0;
  long long k = 1;
  int p = 0;
  if (str[0] == '-') p++;
  for (int i = str.length() - 1; i >= p; i--) {
    ans += (str[i] - '0') * k;
    k *= 10;
  }
  return ans;
}
const long long infll = 1e18 + 3;
const int inf = 1009000999;
const long double eps = 1e-7;
const int maxn = 1e6 + 1146;
const int baseint = 1000200013;
const long long basell = 1e18 + 3;
const long double PI = acos(-1.0);
const long long mod = 1e9 + 9;
pair<int, int> a[maxn];
void solve() {
  int n, x1, x2;
  cin >> n >> x1 >> x2;
  bool sw = 0;
  if (x1 > x2) {
    swap(x1, x2);
    sw = 1;
  }
  for (int i = 0; i < n; i++) {
    cin >> a[i].first;
    a[i].second = i + 1;
  }
  sort(a, a + n);
  int j2 = -1;
  for (int i = n - 1; i >= 0; i--) {
    if (a[i].first * (n - i) >= x2) {
      j2 = i;
      break;
    }
  }
  if (j2 != -1)
    for (int i = j2 - 1; i >= 0; i--) {
      if (a[i].first * (j2 - i) >= x1) {
        cout << "Yes\n";
        vector<int> a1, a2;
        if (sw) {
          for (int j = i; j < j2; j++) a2.push_back(a[j].second);
          for (int j = j2; j < n; j++) a1.push_back(a[j].second);
        } else {
          for (int j = i; j < j2; j++) a1.push_back(a[j].second);
          for (int j = j2; j < n; j++) a2.push_back(a[j].second);
        }
        cout << a1.size() << " " << a2.size() << "\n";
        for (int x : a1) cout << x << " ";
        cout << "\n";
        for (int x : a2) cout << x << " ";
        return;
      }
    }
  sw ^= 1;
  swap(x1, x2);
  j2 = -1;
  for (int i = n - 1; i >= 0; i--) {
    if (a[i].first * (n - i) >= x2) {
      j2 = i;
      break;
    }
  }
  if (j2 == -1) {
    cout << "No";
    return;
  }
  for (int i = j2 - 1; i >= 0; i--) {
    if (a[i].first * (j2 - i) >= x1) {
      cout << "Yes\n";
      vector<int> a1, a2;
      if (sw) {
        for (int j = i; j < j2; j++) a2.push_back(a[j].second);
        for (int j = j2; j < n; j++) a1.push_back(a[j].second);
      } else {
        for (int j = i; j < j2; j++) a1.push_back(a[j].second);
        for (int j = j2; j < n; j++) a2.push_back(a[j].second);
      }
      cout << a1.size() << " " << a2.size() << "\n";
      for (int x : a1) cout << x << " ";
      cout << "\n";
      for (int x : a2) cout << x << " ";
      return;
    }
  }
  cout << "No";
}
int main() {
  ios_base::sync_with_stdio(0);
  ;
  cin.tie(0);
  cout.tie(0);
  solve();
  return 0;
}
