using System;
    using System.Linq;
    using System.Collections.Generic;
    using System.Text.RegularExpressions;
    using System.Text;
    using System.Net;

     
    public class Program
    {

        public void Proc() {
            long[] inpt = Reader.ReadLine().Split(' ').Select(a=>long.Parse(a)).ToArray();

            this.Items = new long[inpt[0]];
            this.DamageBig = inpt[1];
            this.DamageSmall = inpt[2];

            long min = long.MaxValue;
            long total = 0;
            for(int i=0; i<Items.Length; i++) {
                long tmp = long.Parse(Reader.ReadLine());
                min = Math.Min(min, tmp);
                total+=tmp;
                if(!ItemDic.ContainsKey(tmp)) {
                    ItemDic.Add(tmp, 0);
                }
                Items[i] = tmp;
                ItemDic[tmp]++;
            }
            Items = Items.OrderByDescending(a=>a).ToArray();
            long minCount = ItemDic.First().Key / DamageBig;
            long maxCount = ItemDic.Last().Key / DamageSmall + 1;

            long ans = GetAns(minCount, maxCount);
            Console.WriteLine(ans);
        }

        private long GetAns(long min, long max) {
            if(max-min<=1) {
                if(IsValid(min)) {
                    return min;
                }
                return max;
            }
            long mid = (max+min)/2;
            if(IsValid(mid)) {
                return GetAns(min, mid);
            } else {
                return GetAns(mid, max);
            }
        }

        private bool IsValid(long num) {
            long totalCnt = 0;
            for(int i=0; i<Items.Length; i++) {
                if(Items[i]<=num*DamageSmall) {
                    break;
                }
                long diff = Items[i]-(num*DamageSmall);
                long cnt = diff/(DamageBig-DamageSmall);
                if(diff%(DamageBig-DamageSmall)>0) {
                    cnt++;
                }
                totalCnt+=cnt;
                if(totalCnt>num) {
                    return false;
                }
            }
            return true;
        }

        private SortedDictionary<long, int> ItemDic = new SortedDictionary<long, int>();

        long[] Items;

        long DamageSmall = 0;
        long DamageBig = 0;


        public class Reader {
            public static bool IsDebug = false;
            private static System.IO.StringReader SReader;
            private static string InitText = @"




5 2 1
900000000
900000000
1000000000
1000000000
1000000000





";
            public static string ReadLine() {
                if(IsDebug) {
                    if(SReader == null) {
                        SReader = new System.IO.StringReader(InitText.Trim());
                    }
                    return SReader.ReadLine();
                } else {
                    return Console.ReadLine();
                }
            }
        }
        public static void Main(string[] args)
        {
            #if DEBUG
            Reader.IsDebug = true;
            #endif
            Program prg = new Program();
            prg.Proc();
        }
    }

Measured memory_bytes: 30048