// practice with kaiboy
import java.io.*;
import java.util.*;

public class CF967D extends PrintWriter {
	CF967D() { super(System.out); }
	Scanner sc = new Scanner(System.in);
	public static void main(String[] $) {
		CF967D o = new CF967D(); o.main(); o.flush();
	}

	void main() {
		int n = sc.nextInt();
		int x1 = sc.nextInt();
		int x2 = sc.nextInt();
		int[] aa = new int[n];
		Integer[] ii = new Integer[n];
		for (int i = 0; i < n; i++) {
			aa[i] = sc.nextInt();
			ii[i] = i;
		}
		Arrays.sort(ii, (i, j) -> aa[j] - aa[i]);
		int[] pp = new int[n];
		int[] qq = new int[n];
		for (int i = 0; i < n; i++) {
			int a = aa[ii[i]];
			int k = (x2 + a - 1) / a;
			pp[i] = qq[i] = i + 1 - k;
		}
		for (int i = 1; i < n; i++)
			pp[i] = Math.max(pp[i], pp[i - 1]);
		for (int i = n - 2; i >= 0; i--)
			qq[i] = Math.max(qq[i], qq[i + 1]);
		for (int i = 0; i < n; i++) {
			int a = aa[ii[i]];
			int k = (x1 + a - 1) / a;
			if (i + 1 >= k) {
				if (i >= k && pp[i - k] >= 0 || i + 1 < n && qq[i + 1] >= k) {
					println("Yes");
					int k1 = k, k2 = 0;
					for (int j = 0; j < n; j++) {
						if (i >= j && j > i - k1)
							continue;
						a = aa[ii[j]];
						k = (x2 + a - 1) / a;
						if (++k2 >= k)
							break;
					}
					println(k1 + " " + k2);
					for (int j = i; j > i - k1; j--)
						print(ii[j] + 1 + " ");
					println();
					for (int j = 0; j < n; j++) {
						if (i >= j && j > i - k1)
							continue;
						print(ii[j] + 1 + " ");
						if (--k2 == 0)
							break;
					}
					println();
					return;
				}
			}
		}
		println("No");
	}
}
