#include <bits/stdc++.h>   using namespace std;   int static_init = []() {     ios_base::sync_with_stdio(false), cin.tie(0), cout << fixed;     return 0;   }();   constexpr int N = 3e5;   int32_t n, x[2], c[N + 1], p[N + 1];   int64_t t[N + 2];   bool run(bool sw) {     for (int k1 = 1; k1 <= n; k1++) {       int i1 =           lower_bound(p + 1, p + n + 2 - k1, x[sw],                       [k1](int i, int x) { return (int64_t)c[i] * k1 < x; }) -           p;       int j = i1 + k1;       if (j <= n && t[j] >= x[!sw]) {         int i2;         for (i2 = n; i2 >= j; i2--) {           if (t[i2] == t[j]) break;         }         int k2 = n - i2 + 1;         if (sw) swap(k1, k2), swap(i1, i2);         cout <<  Yes n  << k1 <<     << k2 << endl;         for (int i = i1; i < i1 + k1; i++)           cout << p[i] << (i == i1 + k1 - 1 ?   n  :    );         for (int i = i2; i < i2 + k2; i++)           cout << p[i] << (i == i2 + k2 - 1 ?   n  :    );         return true;       }     }     return false;   }   int main() {     cin >> n >> x[0] >> x[1];     for (int i = 1; i <= n; i++) cin >> c[i];     iota(p + 1, p + n + 1, 1);     sort(p + 1, p + n + 1, [](int i, int j) { return c[i] < c[j]; });     for (int i = n; i >= 1; i--) {       t[i] = max(t[i + 1], (int64_t)c[p[i]] * (n - i + 1));     }     if (!run(false) && !run(true)) cout <<  No  << endl;     return 0;   }   