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

public class Source {
    static Node array[];
    static int n, x1, x2;

    static void build(int x, int y, boolean flag) {
        StringBuilder sb1 = new StringBuilder();
        StringBuilder sb2 = new StringBuilder();
        for (int i = 1; i <= n; i++) {
            int val_x1 = array[i].y;
            int servers_x1 = x / val_x1 + (x % val_x1 == 0 ? 0 : 1);
//            System.out.println(i + " " + servers_x1 + " " + (servers_x1 + i - 1) + " " + n);
            if (servers_x1 + i - 1 >= n) continue;
            int val_x2 = array[i + servers_x1].y;
            int servers_x2 = y / val_x2 + (y % val_x2 == 0 ? 0 : 1);
//            System.out.println(servers_x2 + " " + (servers_x1 + servers_x2 + i - 1));
            if (i + servers_x1 + servers_x2 - 1 > n) continue;
            System.out.println("Yes");
            if (!flag)
                System.out.println(servers_x2 + " " + servers_x1);
            else
                System.out.println(servers_x1 + " " + servers_x2);

            int second = servers_x1;
            for (int j = i; servers_x1 > 0; j++) {
//                System.out.println(j + " " + sb1 + " " + servers_x1);
                sb1.append(array[j].x + " ");
                --servers_x1;
            }
            for (int j = i + second; servers_x2 > 0; j++) {
                sb2.append(array[j].x + " ");
                servers_x2--;
            }
            if (!flag) {
                System.out.println(sb2);
                System.out.println(sb1);
            } else {
                System.out.println(sb1);
                System.out.println(sb2);
            }
            System.exit(0);
        }
        return;
    }

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        n = Integer.parseInt(st.nextToken());
        x1 = Integer.parseInt(st.nextToken());
        x2 = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
        array = new Node[n + 1];
        for (int i = 1; i <= n; i++) {
            int a = Integer.parseInt(st.nextToken());
            array[i] = new Node(i, a);
        }
        array[0] = new Node(0, -1);
        Arrays.sort(array);
        build(x1, x2, true);
        build(x2, x1, false);
        System.out.println("No");
    }

    static class Node implements Comparable<Node> {
        int x, y;

        Node(int x, int y) {
            this.x = x;
            this.y = y;
        }

        public int compareTo(Node other) {
            return Integer.compare(y, other.y);
        }

    }
}
