output_description: Print the minimum number of explosions that needs to be caused in order to
  vanish all the monsters.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N A B
      h_1
      h_2
      :
      h_N
attempt: import sys
  import heapq
  import re
  from itertools import permutations
  from bisect import bisect_left, bisect_right
  from collections import Counter, deque
  from math import factorial, sqrt, ceil, gcd
  from functools import lru_cache, reduce
  from decimal import Decimal
  from operator import mul
  
  INF = 1 << 60
  MOD = 1000000007
  sys.setrecursionlimit(10**7)
  
  
  # UnionFind
  class UnionFind:
      def __init__(self, n):
          self.n = n
          self.parents = [-1] * n
  
      def find(self, x):
          if self.parents[x] < 0:
              return x
          else:
              self.parents[x] = self.find(self.parents[x])
              return self.parents[x]
  
      def union(self, x, y):
          x = self.find(x)
          y = self.find(y)
  
          if x == y:
              return
  
          if self.parents[x] > self.parents[y]:
              x, y = y, x
  
          self.parents[x] += self.parents[y]
          self.parents[y] = x
  
      def size(self, x):
          return -self.parents[self.find(x)]
  
      def same(self, x, y):
          return self.find(x) == self.find(y)
  
      def members(self, x):
          root = self.find(x)
          return [i for i in range(self.n) if self.find(i) == root]
  
      def roots(self):
          return [i for i, x in enumerate(self.parents) if x < 0]
  
      def group_count(self):
          return len(self.roots())
  
      def all_group_members(self):
          return {r: self.members(r) for r in self.roots()}
  
      def __str__(self):
          return "\n".join("{}: {}".format(r, self.members(r)) for r in self.roots())
  
  
  # ダイクストラ
  def dijkstra_heap(s, edge, n):
      # 始点sから各頂点への最短距離
      d = [10**20] * n
      used = [True] * n  # True:未確定
      d[s] = 0
      used[s] = False
      edgelist = []
      for a, b in edge[s]:
          heapq.heappush(edgelist, a * (10**6) + b)
      while len(edgelist):
          minedge = heapq.heappop(edgelist)
          # まだ使われてない頂点の中から最小の距離のものを探す
          if not used[minedge % (10**6)]:
              continue
          v = minedge % (10**6)
          d[v] = minedge // (10**6)
          used[v] = False
          for e in edge[v]:
              if used[e[1]]:
                  heapq.heappush(edgelist, (e[0] + d[v]) * (10**6) + e[1])
      return d
  
  
  # 素因数分解
  def factorization(n):
      arr = []
      temp = n
      for i in range(2, int(-(-(n**0.5) // 1)) + 1):
          if temp % i == 0:
              cnt = 0
              while temp % i == 0:
                  cnt += 1
                  temp //= i
              arr.append([i, cnt])
  
      if temp != 1:
          arr.append([temp, 1])
  
      if arr == []:
          arr.append([n, 1])
  
      return arr
  
  
  # 組合せnCr
  def combinations_count(n, r):
      if n < r:
          return 0
      r = min(r, n - r)
      numer = reduce(mul, range(n, n - r, -1), 1)
      denom = reduce(mul, range(1, r + 1), 1)
      return numer // denom
  
  
  # 2数の最小公倍数
  def lcm(x, y):
      return (x * y) // gcd(x, y)
  
  
  # リストの要素の最小公倍数
  def lcm_list(numbers):
      return reduce(lcm, numbers, 1)
  
  
  # リストの要素の最大公約数
  def gcd_list(numbers):
      return reduce(gcd, numbers)
  
  
  # 素数判定
  def is_prime(n):
      if n <= 1:
          return False
      p = 2
      while True:
          if p**2 > n:
              break
          if n % p == 0:
              return False
          p += 1
      return True
  
  
  # limit以下の素数を列挙
  def eratosthenes(limit):
      A = [i for i in range(2, limit + 1)]
      P = []
  
      while True:
          prime = min(A)
  
          if prime > sqrt(limit):
              break
  
          P.append(prime)
  
          i = 0
          while i < len(A):
              if A[i] % prime == 0:
                  A.pop(i)
                  continue
              i += 1
  
      for a in A:
          P.append(a)
  
      return P
  
  
  # 同じものを含む順列
  def permutation_with_duplicates(L):
  
      if L == []:
          return [[]]
  
      else:
          ret = []
  
          # set（集合）型で重複を削除、ソート
          S = sorted(set(L))
  
          for i in S:
  
              data = L[:]
              data.remove(i)
  
              for j in permutation_with_duplicates(data):
                  ret.append([i] + j)
  
          return ret
  
  
  def make_divisors(n):
      lower_divisors, upper_divisors = [], []
      i = 1
      while i * i <= n:
          if n % i == 0:
              lower_divisors.append(i)
              if i != n // i:
                  upper_divisors.append(n // i)
          i += 1
      return lower_divisors + upper_divisors[::-1]
  
  
  # ここから書き始める
  def is_ok(key, h, a, b, n):
      total = 0
      for i in range(n):
          total += -(-(h[i] - b * key) // (-b + a))
      if total <= key:
          return True
      return False
  
  
  n, a, b = map(int, input().split())
  h = [int(input()) for i in range(n)]
  
  x = -(-max(h) // b)
  ng = 0
  ok = x + 1
  
  while abs(ok - ng) > 1:
      mid = (ok + ng) // 2
      if is_ok(mid, h, a, b, n):
          ok = mid
      else:
          ng = mid
  print(ok)
  
problem_description: Statement
  
  You are going out for a walk, when you suddenly encounter N monsters. Each
  monster has a parameter called _health_ , and the health of the i-th monster
  is h_i at the moment of encounter. A monster will vanish immediately when its
  health drops to 0 or below.
  
  Fortunately, you are a skilled magician, capable of causing explosions that
  damage monsters. In one explosion, you can damage monsters as follows:
  
    * Select an alive monster, and cause an explosion centered at that monster. The health of the monster at the center of the explosion will decrease by A, and the health of each of the other monsters will decrease by B. Here, A and B are predetermined parameters, and A > B holds.
  
  At least how many explosions do you need to cause in order to vanish all the
  monsters?
samples: [{"input": "4 5 3\n    8\n    7\n    4\n    2", "output": "2\n    \n\nYou can vanish all the monsters in two explosion, as follows:\n\n  * First, cause an explosion centered at the monster with 8 health. The healths of the four monsters become 3, 4, 1 and -1, respectively, and the last monster vanishes.\n  * Second, cause an explosion centered at the monster with 4 health remaining. The healths of the three remaining monsters become 0, -1 and -2, respectively, and all the monsters are now vanished.\n\n* * *"}, {"input": "2 10 4\n    20\n    20", "output": "4\n    \n\nYou need to cause two explosions centered at each monster, for a total of\nfour.\n\n* * *"}, {"input": "5 2 1\n    900000000\n    900000000\n    1000000000\n    1000000000\n    1000000000", "output": "800000000"}]