import java.io.*;
import java.util.*;

public class ResourceDistribution {

    private static boolean solve (int[][] servers, long x1, long x2, boolean flip) {
        // just put minimum largest into x1, then into x2...
        long cnt = 0;
        StringBuilder b1 = new StringBuilder();
        StringBuilder b2 = new StringBuilder();
        int i;
        for (i = 0; i < servers.length; i++) {
            int idx = servers.length - 1 - i;
            int s = servers[idx][0];
            cnt++;
            b1.append(" " + servers[idx][1]);
            if (cnt * s >= x1) {
                i++;
                break;
            }
            if (i == servers.length - 1) {
                return false;
            }
        }
        long cnt2 = 0;
        for (; i < servers.length; i++) {
            int idx = servers.length - 1 -i;
            int s = servers[idx][0];
            cnt2++;
            b2.append(" " + servers[idx][1]);
            if (cnt2 * s >= x2) {
                break;
            }
            if (i == servers.length - 1) {
                return false;
            }
        }
        if (cnt == 0 || cnt2 == 0) return false;
        System.out.println("Yes");
        if (flip) {


            System.out.println(cnt2 + " " + cnt);
            System.out.println(b2.toString().substring(1));
            System.out.println(b1.toString().substring(1));
        } else {
            System.out.println(cnt + " " + cnt2);
            System.out.println(b1.toString().substring(1));
            System.out.println(b2.toString().substring(1));
        }
        return true;
    }

    public static void main (String[] args) throws Exception {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String[] spl = in.readLine().split(" ");
        int n = Integer.parseInt(spl[0]);
        long x1 = Integer.parseInt(spl[1]);
        long x2 = Integer.parseInt(spl[2]);
        int[][] servers = new int[n][2];
        spl = in.readLine().split(" ");
        for (int i = 0; i < n; i++) {
            servers[i][0] = Integer.parseInt(spl[i]);
            servers[i][1] = (i + 1);
        }
        Arrays.sort(servers, (a, b) -> (Integer.compare(a[0], b[0])));

        boolean no = solve(servers, x1, x2, false) || solve(servers, x2, x1, true);
        if (!no) {
            System.out.println("No");
        }

    }
}
