func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 300005;   pair<int, int> pa[maxn];   int main() {     int n, a, b;     scanf( %d%d%d , &n, &a, &b);     for (int i = 0; i < n; ++i) {       scanf( %d , &pa[i].first);       pa[i].second = i + 1;     }     sort(pa, pa + n);     for (int i = 0; i < n; ++i) {       int c = (a + pa[i].first - 1) / pa[i].first + i;       if (c < n && (b + pa[c].first - 1) / pa[c].first <= n - c) {         int d = (b + pa[c].first - 1) / pa[c].first;         puts( Yes );         printf( %d %d n , c - i, d);         printf( %d , pa[i].second);         for (int j = i + 1; j < c; ++j) printf(  %d , pa[j].second);         printf(  n );         printf( %d , pa[c].second);         for (int j = 1; j < d; ++j) printf(  %d , pa[c + j].second);         printf(  n );         return 0;       }     }     swap(a, b);     for (int i = 0; i < n; ++i) {       int c = (a + pa[i].first - 1) / pa[i].first + i;       if (c < n && (b + pa[c].first - 1) / pa[c].first <= n - c) {         int d = (b + pa[c].first - 1) / pa[c].first;         puts( Yes );         printf( %d %d n , d, c - i);         printf( %d , pa[c].second);         for (int j = 1; j < d; ++j) printf(  %d , pa[c + j].second);         printf(  n );         printf( %d , pa[i].second);         for (int j = i + 1; j < c; ++j) printf(  %d , pa[j].second);         printf(  n );         return 0;       }     }     puts( No );     return 0;   }   