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

import static java.util.Arrays.fill;
import static java.lang.Math.*;
import static java.util.Arrays.sort;
import static java.util.Collections.sort;


public class D967 
{

	public static int mod = 1000000007;
	public static long INF = (1L << 60);
	static FastScanner2 in = new FastScanner2();
	static OutputWriter out = new OutputWriter(System.out);
 
	static class Pair implements Comparable<Pair>
	{
		int x,idx;
		Pair(int x,int idx)
		{
			this.x=x;
			this.idx=idx;
		}
		@Override
		public int compareTo(Pair p) {
			// TODO Auto-generated method stub
			return p.x-this.x;
		}
	}

	static int n,x1,x2;
	static Pair[] arr;
	static int n1=0,n2=0;
	
	public static boolean ispossible(int xx1,int xx2)
	{
		n1=1;
		n2=1;
		while(n1<=n && arr[n1-1].x*n1<xx1)
			n1++;
		while(n1+n2<=n && arr[n1+n2-1].x*n2<xx2)
			n2++;
		return (n1+n2)<=n;
	}
	
	public static void main(String[] args) 
	{

		
		n=in.nextInt();
		x1=in.nextInt();
		x2=in.nextInt();
		arr=new Pair[n];
		for(int i=0;i<n;i++)
		{
			arr[i]=new Pair(in.nextInt(), i+1);
		}
		Arrays.sort(arr);
		if(ispossible(x1, x2))
		{
			out.println("Yes");
			out.println((n1)+" "+(n2));
			for(int i=0;i<n1;i++)
				out.print(arr[i].idx+" ");
			out.println();
			for(int i=0;i<n2;i++)
				out.print(arr[n1+i].idx+" ");
			out.flush();
			return;
		}
		n1=0;
		n2=0;
		if(ispossible(x2, x1))
		{
			out.println("Yes");
			out.println(n2+" "+n1);
			for(int i=0;i<n2;i++)
				out.print(arr[n1+i].idx+" ");
			out.println();
			for(int i=0;i<n1;i++)
				out.print(arr[i].idx+" ");
			out.flush();
			return;
		}
		out.println("No");
		
		out.close();

	}
	

	static class FastScanner2 
	{
		private byte[] buf = new byte[1024];
		private int curChar;
		private int snumChars;

		public int read() 
		{
			if (snumChars == -1)
				throw new InputMismatchException();
			if (curChar >= snumChars) 
			{
				curChar = 0;
				try 
				{
					snumChars = System.in.read(buf);
				} catch (IOException e) 
				{
					throw new InputMismatchException();
				}
				if (snumChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}

		public String nextLine() 
		{
			int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do 
			{
				res.appendCodePoint(c);
				c = read();
			} 
			while (!isEndOfLine(c));
			return res.toString();
		}

		public String nextString() 
		{
			int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do 
			{
				res.appendCodePoint(c);
				c = read();
			} 
			while (!isSpaceChar(c));
			return res.toString();
		}

		public long nextLong()
		{
			int c = read();
			while (isSpaceChar(c))
				c = read();
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			long res = 0;
			do 
			{
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = read();
			} 
			while (!isSpaceChar(c));
			return res * sgn;
		}

		public int nextInt() 
		{
			int c = read();
			while (isSpaceChar(c))
				c = read();
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			int res = 0;
			do 
			{
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = read();
			} 
			while (!isSpaceChar(c));
			return res * sgn;
		}

		public int[] nextIntArray(int n)
		{
			int[] arr = new int[n];
			for (int i = 0; i < n; i++) 
			{
				arr[i] = nextInt();
			}
			return arr;
		}

		public long[] nextLongArray(int n)
		{
			long[] arr = new long[n];
			for (int i = 0; i < n; i++) 
			{
				arr[i] = nextLong();
			}
			return arr;
		}

		private boolean isSpaceChar(int c)
		{
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}

		private boolean isEndOfLine(int c) 
		{
			return c == '\n' || c == '\r' || c == -1;
		}
	}


	static class OutputWriter 
	{
		private final PrintWriter writer;

		public OutputWriter(OutputStream outputStream) 
		{
			writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
		}

		public OutputWriter(Writer writer)
		{
			this.writer = new PrintWriter(writer);
		}

		public void print(Object... objects)
		{
			for (int i = 0; i < objects.length; i++) 
			{
				if (i != 0)
					writer.print(' ');
				writer.print(objects[i]);
			}
		}

		public void println(Object... objects)
		{
			print(objects);
			writer.println();
		}

		public void close() 
		{
			writer.close();
		}

		public void flush() 
		{
			writer.flush();
		}
	}
private static boolean oj = System.getProperty("ONLINE_JUDGE") != null;
	
	private static void debug(Object... o) 
	{
		if (!oj)
			System.out.println(Arrays.deepToString(o));
	}
	private static void tr(Object... o) 
	{
		if (!oj)
			System.out.println(Arrays.deepToString(o));
	}
}