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

public class Main implements Runnable {
    static ContestScanner in;
    static Writer out;
    public static void main(String[] args) {
        new Thread(null, new Main(), "", 16 * 1024 * 1024).start();
    }

    public void run() {
        Main main = new Main();
        try {
            in = new ContestScanner();
            out = new Writer();
            main.solve();
            out.close();
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    void solve() throws IOException {
        int n = in.nextInt();
        int x1 = in.nextInt();
        int x2 = in.nextInt();
        Resource[] r = new Resource[n];
        for (int i = 0; i < n; i++) {
            r[i] = new Resource(i + 1, in.nextInt());
        }
        Arrays.sort(r);
        int[][] ans = getAns(n, x1, x2, r);
        if (ans == null) {
            ans = getAns(n, x2, x1, r);

            if (ans == null) {
                System.out.println("No");
                return;
            }

            int[] tmp = ans[0];
            ans[0] = ans[1];
            ans[1] = tmp;
        }
        out.println("Yes");
        out.println(ans[0].length + " " + ans[1].length);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < ans[0].length; i++) {
            if (i > 0) sb.append(" ");
            sb.append(ans[0][i]);
        }
        sb.append("\n");
        for (int i = 0; i < ans[1].length; i++) {
            if (i > 0) sb.append(" ");
            sb.append(ans[1][i]);
        }
        out.println(sb.toString());
    }

    int[][] getAns(int n, int x1, int x2, Resource[] r) {
        int right = -1;
        int resNum = -1;
        for (int i = 0; i < n; i++) {
            long resourceNum = (x2 + r[i].v - 1) / r[i].v;
            if (resourceNum > n - i) continue;
            right = i;
            resNum = (int) resourceNum;
        }
        if (right == -1) return null;

        for (int i = 0; i < n && i < right; i++) {
            long resourceNum = (x1 + r[i].v - 1) / r[i].v;
            if (resourceNum > n - i || resourceNum + i - 1 >= right) continue;
            // OK
            int[] a1 = new int[resNum];
            for (int j = 0; j < resNum; j++) {
                a1[j] = r[right + j].id;
            }
            int[] a2 = new int[(int)resourceNum];
            for (int j = 0; j < resourceNum; j++) {
                a2[j] = r[i + j].id;
            }
            return new int[][]{a2, a1};
        }

        return null;
    }
}

class Resource implements Comparable<Resource> {
    long v;
    int id;
    Resource(int id, long v) {
        this.v = v;
        this.id = id;
    }

    @Override
    public int compareTo(Resource o) {
        return Long.compare(v, o.v);
    }
}

class Writer extends PrintWriter{
    public Writer(String filename)throws IOException
    {super(new BufferedWriter(new FileWriter(filename)));}
    public Writer()throws IOException {super(System.out);}
}
class ContestScanner implements Closeable {
    private BufferedReader in;private int c=-2;
    public ContestScanner()throws IOException
    {in=new BufferedReader(new InputStreamReader(System.in));}
    public ContestScanner(String filename)throws IOException
    {in=new BufferedReader(new InputStreamReader(new FileInputStream(filename)));}
    public String nextToken()throws IOException {
        StringBuilder sb=new StringBuilder();
        while((c=in.read())!=-1&&Character.isWhitespace(c));
        while(c!=-1&&!Character.isWhitespace(c)){sb.append((char)c);c=in.read();}
        return sb.toString();
    }
    public String readLine()throws IOException{
        StringBuilder sb=new StringBuilder();if(c==-2)c=in.read();
        while(c!=-1&&c!='\n'&&c!='\r'){sb.append((char)c);c=in.read();}
        return sb.toString();
    }
    public long nextLong()throws IOException,NumberFormatException
    {return Long.parseLong(nextToken());}
    public int nextInt()throws NumberFormatException,IOException
    {return(int)nextLong();}
    public double nextDouble()throws NumberFormatException,IOException
    {return Double.parseDouble(nextToken());}
    public void close() throws IOException {in.close();}
}
