from __future__ import division
from sys import stdin, stdout

rint = lambda: int(stdin.readline())
rints = lambda: [int(x) for x in stdin.readline().split()]
rint_2d = lambda n: [rint() for _ in range(n)]
rints_2d = lambda n: [rints() for _ in range(n)]
rint_enu = lambda: [(int(x), i + 1) for i, x in enumerate(rints())]
pr = lambda args, sep: stdout.write(sep.join(map(str, args)) + '\n')
ceil1, out = lambda a, b: (a + b - 1) // b, []

n, s1, s2 = rints()
a, ans = sorted(rint_enu()), 'No'

for i in range(1, min(s1 + 1, n)):
    d1, d2 = ceil1(s1, i), ceil1(s2, n - i)

    if d1 <= d2:
        if a[0][0] >= d1 and a[i][0] >= d2:
            out.append('Yes')
            out.append('%d %d' % (i, n - i))
            t1, t2 = [], []
            for j in range(i):
                t1.append(a[j][1])

            for j in range(i, n):
                t2.append(a[j][1])

            out.append(' '.join(map(str, t1)))
            out.append(' '.join(map(str, t2)))
            pr(out, '\n')
            exit()
    else:
        if a[n - i][0] >= d1 and a[0][0] >= d2:
            out.append('Yes')
            out.append('%d %d' % (i, n - i))
            t1, t2 = [], []
            for j in range(n - i):
                t1.append(a[j][1])

            for j in range(n - i, n):
                t2.append(a[j][1])

            out.append(' '.join(map(str, t2)))
            out.append(' '.join(map(str, t1)))
            pr(out, '\n')
            exit()

print('No')
