def roof(a, b):

    if a%b == 0:

        return a//b

    else:

        return a//b + 1



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

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



low, high = 0, 10**9

while high - low > 1:

    mid = (low + high)//2

    count = 0

    for i in range(N):

        if H[i] - (B * mid) > 0:

            count += roof(H[i]-(B*mid), A-B)

    if count > mid:

        low = mid

    else:

        high = mid

print(high)
import sys



def solve():

    input = sys.stdin.readline

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

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

    low = 0; high = 10 ** 20

    while high - low > 1:

        mid = (low + high) // 2

        explosion = B * mid

        direct = 0

        for h in H:

            if h - explosion > 0:

                direct += (h - explosion) // (A - B)

                if (h - explosion) % (A - B) > 0: direct += 1

        if direct <= mid: high = mid

        else: low = mid

    print(high)



    return 0



if __name__ == "__main__":

    solve()
def roof(a, b):
    if a % b == 0:
        return a // b
    else:
        return a // b + 1


N, A, B = list(map(int, input().split()))
H = [int(eval(input())) for i in range(N)]
low, high = 0, 10**9
while high - low > 1:
    mid = (low + high) // 2
    count = 0
    for i in range(N):
        if H[i] - (B * mid) > 0:
            count += roof(H[i] - (B * mid), A - B)
    if count > mid:
        low = mid
    else:
        high = mid
print(high)

import sys


def solve():
    input = sys.stdin.readline
    N, A, B = list(map(int, input().split()))
    H = [int(eval(input())) for _ in range(N)]
    low = 0
    high = 10**20
    while high - low > 1:
        mid = (low + high) // 2
        explosion = B * mid
        direct = 0
        for h in H:
            if h - explosion > 0:
                direct += (h - explosion) // (A - B)
                if (h - explosion) % (A - B) > 0:
                    direct += 1
        if direct <= mid:
            high = mid
        else:
            low = mid
    print(high)
    return 0


if __name__ == "__main__":
    solve()

-def roof(a, b): -    if a % b == 0: -        return a // b -    else: -        return a // b + 1 +import sys -N, A, B = list(map(int, input().split())) -H = [int(eval(input())) for i in range(N)] -low, high = 0, 10**9 -while high - low > 1: -    mid = (low + high) // 2 -    count = 0 -    for i in range(N): -        if H[i] - (B * mid) > 0: -            count += roof(H[i] - (B * mid), A - B) -    if count > mid: -        low = mid -    else: -        high = mid -print(high) +def solve(): +    input = sys.stdin.readline +    N, A, B = list(map(int, input().split())) +    H = [int(eval(input())) for _ in range(N)] +    low = 0 +    high = 10**20 +    while high - low > 1: +        mid = (low + high) // 2 +        explosion = B * mid +        direct = 0 +        for h in H: +            if h - explosion > 0: +                direct += (h - explosion) // (A - B) +                if (h - explosion) % (A - B) > 0: +                    direct += 1 +        if direct <= mid: +            high = mid +        else: +            low = mid +    print(high) +    return 0 + + +if __name__ == "__main__": +    solve()