import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

public class D {

	public static void main(String[] args) throws IOException {
		Scanner sc=new Scanner(System.in);
		PrintWriter pw=new PrintWriter(System.out);
		int n=sc.nextInt(),x1=sc.nextInt(),x2=sc.nextInt();
		int minK1=0,minK2=0;
		pair []a=new pair [n];
		for(int i=0;i<n;i++)
			a[i]=new pair(sc.nextInt(),i);
		Arrays.sort(a);
		for(int i=n-1;i>=0;i--)
		{
			minK1++;
			int minNeeded=(x1+minK1-1)/minK1;
			if(a[i].v>=minNeeded)
				break;
		}
		for(int i=n-1;i>=0;i--)
		{
			minK2++;
			int minNeeded=(x2+minK2-1)/minK2;
			if(a[i].v>=minNeeded)
				break;
		}
		for(int k1=1;k1<n;k1++)
		{
			int p1=(x1+k1-1)/k1;
			int lo=0;
			int hi=n-1;
			int start1=-1;
			while(lo<=hi)
			{
				int mid=(lo+hi)/2;
				if(a[mid].v<p1)
					lo=mid+1;
				else
				{
					hi=mid-1;
					start1=mid;
				}
			}
			if(start1==-1)
				continue;
			int end1=start1+k1-1;
			int start2=end1+1;
			int end2=start2+minK2-1;
			if(end2>=n)
				continue;
			pw.println("Yes");
			pw.println(k1+" "+(end2-start2+1));
			for(int j=start1;j<=end1;j++)
				pw.print(a[j].idx+" ");
			pw.println();
			for(int j=start2;j<=end2;j++)
				pw.print(a[j].idx+" ");
			pw.println();
			pw.close();
			return;
		}
		for(int k2=1;k2<n;k2++)
		{
			int p2=(x2+k2-1)/k2;
			int lo=0;
			int hi=n-1;
			int start1=-1;
			while(lo<=hi)
			{
				int mid=(lo+hi)/2;
				if(a[mid].v<p2)
					lo=mid+1;
				else
				{
					hi=mid-1;
					start1=mid;
				}
			}
			if(start1==-1)
				continue;
			int end1=start1+k2-1;
			int start2=end1+1;
			int end2=start2+minK1-1;
			if(end2>=n)
				continue;
			pw.println("Yes");
			pw.println((end2-start2+1)+" "+k2);
			
			for(int j=start2;j<=end2;j++)
				pw.print(a[j].idx+" ");
			pw.println();
			for(int j=start1;j<=end1;j++)
				pw.print(a[j].idx+" ");
			pw.println();
			pw.close();
			return;
		}
		pw.println("No");
		pw.close();

	}
	static class pair implements Comparable<pair>
	{

		int idx,v;
		pair(int a,int b)
		{
			v=a;
			idx=b+1;
		}
		public int compareTo(pair o) {
			if(v!=o.v)
				return v-o.v;
			else
				return 0;
		}
		
	}
	
	static class Scanner
	{
		BufferedReader br;
		StringTokenizer st;
		public Scanner(InputStream s)
		{
			br=new BufferedReader(new InputStreamReader(s));
		}
		public String nextLine() throws IOException
		{
			return br.readLine();
		}
		public String next() throws IOException
		{
			while(st==null || !st.hasMoreTokens())
				st=new StringTokenizer(br.readLine());
			return st.nextToken();
		}
		public int nextInt() throws IOException
		{
			return Integer.parseInt(next());
			
		}
		public double nextDouble() throws IOException
		{
			return Double.parseDouble(next());
		}
		public boolean ready() throws IOException
		{
			return br.ready();
		}
		public long nextLong() throws IOException
		{
			return Long.parseLong(next());
		}
	}
}
