func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 300005;   int n;   long long x1, x2;   struct sss {     long long val;     int num;   } a[maxn];   bool cmp(const sss &a, const sss &b) { return a.val > b.val; }   void scanff() {     scanf( %d%I64d%I64d , &n, &x1, &x2);     for (int i = 1; i <= n; i++) {       scanf( %I64d , &a[i].val);       a[i].num = i;     }     sort(a + 1, a + n + 1, cmp);   }   void work() {     int now1, now2;     bool flag = false;     if (x1 < x2) {       swap(x1, x2);       flag = true;     }     for (now1 = 1; now1 <= n; now1++) {       if (a[now1].val * now1 >= x1) break;     }     if (now1 > n) {       printf( No n );       return;     }     for (now2 = now1 + 1; now2 <= n; now2++) {       if (a[now2].val * (now2 - now1) >= x2) break;     }     if (now2 > n) {       int head = 1, tail = now1;       for (;;) {         if (tail + 1 <= n) {           if (a[tail + 1].val * (tail - head + 1) >= x1) {             tail++;             head++;             if (a[head - 1].val * (head - 1) >= x2) {               printf( Yes n );               if (!flag) {                 printf( %d %d n , tail - head + 1, head - 1);                 for (int i = head; i <= tail; i++) {                   printf( %d  , a[i].num);                 }                 printf(  n );                 for (int i = 1; i <= head - 1; i++) {                   printf( %d  , a[i].num);                 }                 return;               } else {                 printf( %d %d n , head - 1, tail - head + 1);                 for (int i = 1; i <= head - 1; i++) {                   printf( %d  , a[i].num);                 }                 printf(  n );                 for (int i = head; i <= tail; i++) {                   printf( %d  , a[i].num);                 }                 return;               }             }           } else {             tail++;           }         } else           break;       }       printf( No n );       return;     }     printf( Yes n );     if (!flag) {       printf( %d %d n , now1, now2 - now1);       for (int i = 1; i <= now1; i++) {         printf( %d  , a[i].num);       }       printf(  n );       for (int i = now1 + 1; i <= now2; i++) {         printf( %d  , a[i].num);       }     } else {       printf( %d %d n , now2 - now1, now1);       for (int i = now1 + 1; i <= now2; i++) {         printf( %d  , a[i].num);       }       printf(  n );       for (int i = 1; i <= now1; i++) {         printf( %d  , a[i].num);       }     }   }   int main() {     scanff();     work();     return 0;   }   