func_code_string: #include <bits/stdc++.h>   using namespace std;   void smain();   int main() {     ios::sync_with_stdio(false);     smain();     return 0;   }   const int maxn = 300000 + 10;   int num[maxn];   int num1[maxn], num2[maxn];   int tot = 1;   int min1[maxn], min2[maxn];   int la1[maxn], la2[maxn];   int flo(int a, int b) {     int ans = a / b;     if (a % b != 0) ans++;     return ans;   }   const int INF = 2e9;   int a1[maxn], a2[maxn];   int flag[maxn];   bool cal(int n, int *Min, int *La, int *This, int *a1, int *a2) {     bool flagg = false;     int A1, A2;     for (int i = (2); i <= (n); ++i) {       if (Min[i - 1] == INF || This[i] == INF) continue;       if (Min[i - 1] + This[i] <= i) {         flagg = true;         A1 = La[i - 1];         A2 = i;         break;       }     }     if (!flagg) return false;     a1[0] = Min[A1];     a2[0] = This[A2];     int i = 1, j = 1;     for (j = 1; j < a1[0]; ++i) {       a1[j] = flag[i];       ++j;     }     a1[j] = flag[A1];     for (j = 1; j < a2[0]; ++i) {       if (i == A1) continue;       a2[j] = flag[i];       ++j;     }     a2[j] = flag[A2];     return true;   }   struct Node {     int o, flag;   } node[maxn];   bool cmp(Node a, Node b) { return a.o > b.o; }   void smain() {     int n, x1, x2;     cin >> n >> x1 >> x2;     for (int i = (1); i <= (n); ++i) cin >> num[i];     for (int i = (1); i <= (n); ++i) node[i].o = num[i], node[i].flag = i;     sort(node + 1, node + n + 1, cmp);     for (int i = (1); i <= (n); ++i) num[i] = node[i].o, flag[i] = node[i].flag;     int tmp;     for (int i = (1); i <= (n); ++i) {       tmp = flo(x1, num[i]);       if (tmp > i) tmp = INF;       min1[i] = num1[i] = tmp;       tmp = flo(x2, num[i]);       if (tmp > i) tmp = INF;       min2[i] = num2[i] = tmp;       la1[i] = la2[i] = i;     }     for (int i = (2); i <= (n); ++i) {       if (min1[i - 1] <= min1[i]) {         min1[i] = min1[i - 1];         la1[i] = la1[i - 1];       }       if (min2[i - 1] <= min2[i]) {         min2[i] = min2[i - 1];         la2[i] = la2[i - 1];       }     }     int ans1 = -1, ans2 = -1;     if (cal(n, min1, la1, num2, a1, a2)) {     } else if (cal(n, min2, la2, num1, a2, a1)) {     } else {       cout <<  No  << endl;       return;     }     cout <<  Yes  << endl;     cout << a1[0] <<     << a2[0] << endl;     for (int i = 1; a1[i] != 0; ++i) cout << a1[i] <<    ;     cout << endl;     for (int i = 1; a2[i] != 0; ++i) cout << a2[i] <<    ;   }   