func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, x1, x2;   struct server {     int c, ind;     bool b1, b2;     int r1, r2;   } * *srv;   void qs(server** a, int l, int r) {     int i = l, j = r;     int p = a[(l + r) >> 1]->c;     do {       while (i < r && a[i]->c < p) i++;       while (j > l && a[j]->c > p) j--;       if (i <= j) swap(a[i++], a[j--]);     } while (i <= j);     if (i < r) qs(a, i, r);     if (j > l) qs(a, l, j);   }   int main() {     scanf( %d %d %d , &n, &x1, &x2);     srv = new server*[n];     for (int i = 0; i < n; i++) {       srv[i] = new server;       scanf( %d , &srv[i]->c);       srv[i]->ind = i;     }     qs(srv, 0, n - 1);     for (int i = n - 1; i >= 0; i--) {       srv[i]->r1 = ((long long)x1 + (long long)srv[i]->c - (long long)1) /                    (long long)srv[i]->c;       srv[i]->r2 = ((long long)x2 + (long long)srv[i]->c - (long long)1) /                    (long long)srv[i]->c;       if (i < n - 1 && srv[i + 1]->b1)         srv[i]->b1 = 1;       else if (srv[i]->r1 <= n - i)         srv[i]->b1 = 1;       else         srv[i]->b1 = 0;       if (i < n - 1 && srv[i + 1]->b2)         srv[i]->b2 = 1;       else if (srv[i]->r2 <= n - i)         srv[i]->b2 = 1;       else         srv[i]->b2 = 0;     }     for (int i = 0; i < n - 1; i++) {       if (srv[i]->r1 < n - i && srv[i + srv[i]->r1]->b2) {         for (int j = i + srv[i]->r1; j < n; j++) {           if (srv[j]->r2 <= n - j) {             printf( Yes n );             printf( %d %d n , srv[i]->r1, srv[j]->r2);             for (int k = 0; k < srv[i]->r1; k++)               printf( %d  , srv[i + k]->ind + 1);             printf(  n );             for (int k = 0; k < srv[j]->r2; k++)               printf( %d  , srv[j + k]->ind + 1);             printf(  n );             return 0;           }         }       }     }     for (int i = 0; i < n - 1; i++) {       if (srv[i]->r2 < n - i && srv[i + srv[i]->r2]->b1) {         for (int j = i + srv[i]->r2; j < n; j++) {           if (srv[j]->r1 <= n - j) {             printf( Yes n );             printf( %d %d n , srv[j]->r1, srv[i]->r2);             for (int k = 0; k < srv[j]->r1; k++)               printf( %d  , srv[j + k]->ind + 1);             printf(  n );             for (int k = 0; k < srv[i]->r2; k++)               printf( %d  , srv[i + k]->ind + 1);             printf(  n );             return 0;           }         }       }     }     printf( No n );     return 0;   }   