import std.stdio;
import std.conv, std.array, std.algorithm, std.string;
import std.math, std.random, std.range, std.datetime;
import std.bigint;
import std.container;
string read(){ static string[] ss; while(!ss.length) ss = readln.chomp.split; string res = ss[0]; ss.popFront; return res; }
long binarySearch(long min, long max, bool delegate(long) f){
	if(!f(min)) return min - 1; if(f(max)) return max;
	long mid; while(max - min > 1){ mid = min + (max - min) / 2; if(f(mid)) min = mid; else max = mid; } return min;
	}

void main(){
	long n = read.to!long;
	long a = read.to!long;
	long b = read.to!long;
	
	debug writeln("a ", a, "; b ", b);
	
	long[] hs;
	foreach(i; 0 .. n) hs ~= read.to!long;
	debug writeln("hs ", hs);
	
	bool isImpossible(long x){
		long[] qs = hs.map!(h => h - b * x).map!(q => max(0, q)).array;
		long count = 0;
		foreach(q; qs) count += (q + (a - b - 1)) / (a - b);
		debug writeln(x, "; qs ", qs, "; ", count);
		return (count > x);
		}
	
	long ans = 1 + binarySearch(1, long.max, x => isImpossible(x));
	
	ans.writeln;
	}
