#include <bits/stdc++.h>
using namespace std;
int main() {
  long long n, x1, x2;
  vector<pair<long long, long long>> cc;
  cin >> n >> x1 >> x2;
  cc.resize(n);
  for (int i = 0; i < n; i++) cin >> cc[i].first, cc[i].second = i;
  sort(cc.begin(), cc.end());
  for (int i = 0; i < n; i++) {
    {
      long long cnt = n - i;
      long long c1 = cc[i].first;
      long long cnt1 = (c1 + x1 - 1) / c1;
      long long cnt2 = cnt - cnt1;
      if (cnt2 > 0) {
        long long idm = i + cnt1;
        if (cnt2 * cc[idm].first >= x2) {
          cout << "Yes"
               << "\n";
          cout << cnt1 << " " << cnt2 << "\n";
          for (int j = 0; j < cnt1; j++) cout << 1 + cc[i + j].second << " ";
          cout << "\n";
          for (int j = (int)cnt1; i + j < n; j++)
            cout << 1 + cc[i + j].second << " ";
          return 0;
        }
      }
    }
    swap(x1, x2);
    {
      long long cnt = n - i;
      long long c1 = cc[i].first;
      long long cnt1 = (c1 + x1 - 1) / c1;
      long long cnt2 = cnt - cnt1;
      if (cnt2 > 0) {
        long long idm = i + cnt1;
        if (cnt2 * cc[idm].first >= x2) {
          cout << "Yes"
               << "\n";
          cout << cnt2 << " " << cnt1 << "\n";
          for (int j = (int)cnt1; i + j < n; j++)
            cout << 1 + cc[i + j].second << " ";
          cout << "\n";
          for (int j = 0; j < cnt1; j++) cout << 1 + cc[i + j].second << " ";
          return 0;
        }
      }
    }
    swap(x1, x2);
  }
  cout << "No\n";
}
