#include <bits/stdc++.h>
using namespace std;
long long n, x1, x2, m, ans = 0;
vector<pair<long long, long long> > c;
int main() {
  ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  cin >> n >> x1 >> x2;
  c.resize(n);
  for (int i = 0; i < n; ++i) {
    cin >> c[i].first;
    c[i].second = i + 1;
  }
  sort(c.begin(), c.end());
  reverse(c.begin(), c.end());
  bool flag1 = true, flag2 = true;
  for (int i = 0; i < n - 1; ++i) {
    if (flag1 && c[i].first * (i + 1) >= x1) {
      for (int j = i + 1; j < n; ++j) {
        if (c[j].first * (j - i) >= x2) {
          cout << "Yes\n";
          cout << i + 1 << ' ' << j - i << endl;
          for (int k = 0; k <= i; ++k) cout << c[k].second << ' ';
          cout << endl;
          for (int k = i + 1; k <= j; ++k) cout << c[k].second << ' ';
          return 0;
        }
      }
      flag1 = false;
    }
    if (flag2 && c[i].first * (i + 1) >= x2) {
      for (int j = i + 1; j < n; ++j) {
        if (c[j].first * (j - i) >= x1) {
          cout << "Yes\n";
          cout << j - i << ' ' << i + 1 << endl;
          for (int k = i + 1; k <= j; ++k) cout << c[k].second << ' ';
          cout << endl;
          for (int k = 0; k <= i; ++k) cout << c[k].second << ' ';
          return 0;
        }
      }
      flag2 = false;
    }
  }
  cout << "No";
}
