#include <iostream>
#include <algorithm>
#include <string>
#include <cmath>
#include <vector>
#include <iomanip>
#include <random>
#include <climits>
#include <set>
#include <map>

using namespace std;

/*

*/



int main() {

	int n;
	long double D, H;
	cin >> n >> D >> H;

	vector<long double> d(n);
	vector<long double> h(n);

	for (int i = 0; i < n; ++i) {
		cin >> d[i] >> h[i];
	}

	long double height = 1100;
	long double a = 0;
	long double b = 0;
	bool flag = true;


	for (int i = 0; i < n; ++i) {
		flag = true;
		a = (H - h[i]) / (D - d[i]);
		b = h[i] - a * d[i];
		//cout << a << endl;
		//cout << b << endl;
		if (b <= 0)continue;

		for (int j = 0; j < n; ++j) {
			if (i == j)continue;
			if (h[j] > a * d[j] + b) {
				flag = false;
				break;
			}
		}
		if (flag) {
			height = min(height, b);
		}

	}

	if (height != 1100)cout << height << endl;
	else cout << "0.0" << endl;


	return 0;
}
#include<bits/stdc++.h>
typedef unsigned long long ull;
typedef long long ll;
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define nep(i,r,l) for(int i=r;i>=l;i--)
void sc(int &x){scanf("%d",&x);}
void sc(int &x,int &y){scanf("%d%d",&x,&y);}
void sc(int &x,int &y,int &z){scanf("%d%d%d",&x,&y,&z);}
void sc(ll &x){scanf("%lld",&x);}
void sc(ll &x,ll &y){scanf("%lld%lld",&x,&y);}
void sc(ll &x,ll &y,ll &z){scanf("%lld%lld%lld",&x,&y,&z);}
void sc(char *x){scanf("%s",x);}
void sc(char *x,char *y){scanf("%s%s",x,y);}
void sc(char *x,char *y,char *z){scanf("%s%s%s",x,y,z);}
void out(int x){printf("%d\n",x);}
void out(ll x){printf("%lld\n",x);}
void out(int x,int y){printf("%d %d\n",x,y);}
void out(ll x,ll y){printf("%lld %lld\n",x,y);}
void out(int x,int y,int z){printf("%d %d %d\n",x,y,z);}
void out(ll x,ll y,ll z){printf("%lld %lld %lld\n",x,y,z);}
using namespace std;
const int N=3e5+5;
int n,d,h;
struct node
{
    double x,y;
    void sc()
    {
        scanf("%lf%lf",&x,&y);
    }
}a,b,x;
int main()
{
    //freopen("1.in","r",stdin);freopen("1.out","w",stdout);
    sc(n);
    a.sc();
    x.x=0;
    double ans=0;
    while(n--)
    {
        b.sc();
        double d=atan2((b.y-a.y),(b.x-a.x));
        double l=0,r=2000;
        for(int i=1;i<=50;i++)
        {
            double m=(l+r)/2;
            if(a.x+m*cos(d)<=0) r=m;
            else l=m;
        }
        ans=max(ans,a.y+(l+r)/2*sin(d));
    }
    printf("%.10f\n",ans);
}
