#include<iostream>
using namespace std;
int main()
{
	long long int n,d,h,i,j,k,a[200],b[200];
	double s=0;
	cin>>n>>d>>h;
	for(i=0;i<n;i++)
	{
		cin>>a[i]>>b[i];
	double	x=d-a[i];
	double	y=h-b[i];
	double m=y/x;
	double k=m*(-1)*d+h;
	s=max(s,k);
	}
	if(s==0)cout<<"0.0"<<endl;
	else
	printf("%.13lf\n",s);
	
}
	
#include<stdio.h>
#define rep(i,N) for(int i=0;i<(int)N;i++)
const int MOD=1e9+7;
static long IN(void)
{
  long x=0,f=1,c=getchar();while(c<48||c>57){if(c==45){f=-f;}c=getchar();}
  while(c>47&&c<58){x=x*10+c-48,c=getchar();}return f*x;
}
static void OUT(int x){if(x<0){putchar('-'),x=-x;}if(x>=10){OUT(x/10);}putchar(x-x/10*10+48);}
int Nx[1000000],Ls[200001],To[1000000],pos=1;long pow2[61],b[61][2],dat[1000000];
static void Set(int x,int y,long z){Nx[++pos]=Ls[x];Ls[x]=pos;To[pos]=y;dat[pos]=z;}
static void DG(int x,int fa,long w)
{
  rep(i,61){b[i][(w&pow2[i])>0?1:0]++;}
  for(int i=Ls[x];i;i=Nx[i]){int y=To[i];if(y==fa){continue;}DG(y,x,w^dat[i]);}
}
int main(void)
{
  int N=IN(),x=0,y=0,a=0;long z=0;pow2[0]=1l;
  rep(i,60){pow2[i+1]=2*pow2[i];}N--;
  while(N--){x=IN(),y=IN(),z=IN();Set(x,y,z);Set(y,x,z);}
  DG(1,0,0);
  rep(i,61)
  {
    z=pow2[i]-pow2[i]/MOD*MOD;z=z*b[i][0]-z*b[i][0]/MOD*MOD;
    z=z*b[i][1]-z*b[i][1]/MOD*MOD;z+=a;if(z+1l>1l*MOD){z-=MOD;}a=z;
  }
  OUT(a);
}