N,A,B = list(map(int, input().split()))

H = [int(eval(input())) for _ in range(N)]





def f(n, H, A, B): #n回の爆発で魔物を全て倒せるか判定

    c = 0

    for i in range(len(H)):

        t = H[i]

        t -= B*n

        if t > 0:

            c += t//(A-B) + min(1, t%(A-B))

    if c > n:

        return False

    else:

        return True

    

    

def g(u, l, H, A, B): #魔物を倒すことができる爆発の最小回数を二分探索

    if u-l < 2:

        if f(l, H, A, B):

            return l

        else:

            return u

    m = (u+l)//2

    if f(m, H, A, B):

        return g(m, l, H, A, B)

    else:

        return g(u, m, H, A, B)

    

    

ans = g(10**9, 1, H, A, B)

print(ans)
N,A,B = list(map(int, input().split()))

H = [int(eval(input())) for _ in range(N)]



def f(n):

    cnt = 0

    flag = True

    for h in H:

        x = (h-B*n)//(A-B) + min((h-B*n)%(A-B), 1)

        cnt += max(0, x)

    if cnt <= n:

        return True

    else:

        return False

        

l = 0

r = 10**9

while r-l > 1:

    m = (r+l)//2

    if f(m):

        r = m

    else:

        l = m

        

if f(l):

    print(l)

else:

    print(r)
N, A, B = list(map(int, input().split()))
H = [int(eval(input())) for _ in range(N)]


def f(n, H, A, B):  # n回の爆発で魔物を全て倒せるか判定
    c = 0
    for i in range(len(H)):
        t = H[i]
        t -= B * n
        if t > 0:
            c += t // (A - B) + min(1, t % (A - B))
    if c > n:
        return False
    else:
        return True


def g(u, l, H, A, B):  # 魔物を倒すことができる爆発の最小回数を二分探索
    if u - l < 2:
        if f(l, H, A, B):
            return l
        else:
            return u
    m = (u + l) // 2
    if f(m, H, A, B):
        return g(m, l, H, A, B)
    else:
        return g(u, m, H, A, B)


ans = g(10**9, 1, H, A, B)
print(ans)

N, A, B = list(map(int, input().split()))
H = [int(eval(input())) for _ in range(N)]


def f(n):
    cnt = 0
    flag = True
    for h in H:
        x = (h - B * n) // (A - B) + min((h - B * n) % (A - B), 1)
        cnt += max(0, x)
    if cnt <= n:
        return True
    else:
        return False


l = 0
r = 10**9
while r - l > 1:
    m = (r + l) // 2
    if f(m):
        r = m
    else:
        l = m
if f(l):
    print(l)
else:
    print(r)

-def f(n, H, A, B):  # n回の爆発で魔物を全て倒せるか判定 -    c = 0 -    for i in range(len(H)): -        t = H[i] -        t -= B * n -        if t > 0: -            c += t // (A - B) + min(1, t % (A - B)) -    if c > n: +def f(n): +    cnt = 0 +    flag = True +    for h in H: +        x = (h - B * n) // (A - B) + min((h - B * n) % (A - B), 1) +        cnt += max(0, x) +    if cnt <= n: +        return True +    else: -    else: -        return True -def g(u, l, H, A, B):  # 魔物を倒すことができる爆発の最小回数を二分探索 -    if u - l < 2: -        if f(l, H, A, B): -            return l -        else: -            return u -    m = (u + l) // 2 -    if f(m, H, A, B): -        return g(m, l, H, A, B) +l = 0 +r = 10**9 +while r - l > 1: +    m = (r + l) // 2 +    if f(m): +        r = m -        return g(u, m, H, A, B) - - -ans = g(10**9, 1, H, A, B) -print(ans) +        l = m +if f(l): +    print(l) +else: +    print(r)