#include "bits/stdc++.h"
 
using namespace std;
 
#define ll long long
 
#define       forn(i,n)              for(int i=0;i<n;i++)
#define          all(v)              v.begin(), v.end()
#define         rall(v)              v.rbegin(),v.rend()
 
#define            pb                push_back
#define          sz(a)               (int)a.size()
#define         fastio               ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define      GR(a,n,m)               vector<vector<int>> a(n, vector<int>(m, 0));

struct Point
{
    double x;
    double y;
};
bool onSegment(Point p, Point q, Point r)
{
    if (q.x <= max(p.x, r.x) && q.x >= min(p.x, r.x) &&
        q.y <= max(p.y, r.y) && q.y >= min(p.y, r.y))
       return true;
  
    return false;
}
int orientation(Point p, Point q, Point r)
{
    double val = (q.y - p.y) * (r.x - q.x) -
              (q.x - p.x) * (r.y - q.y);
  
    if (val == 0) return 0;
  
    return (val > 0)? 1: 2;
}
bool doIntersect(Point p1, Point q1, Point p2, Point q2)
{
    int o1 = orientation(p1, q1, p2);
    int o2 = orientation(p1, q1, q2);
    int o3 = orientation(p2, q2, p1);
    int o4 = orientation(p2, q2, q1);
    if (o1 != o2 && o3 != o4)
        return true;
    if (o1 == 0 && onSegment(p1, p2, q1)) return true;
    if (o2 == 0 && onSegment(p1, q2, q1)) return true;
    if (o3 == 0 && onSegment(p2, p1, q2)) return true;
    if (o4 == 0 && onSegment(p2, q1, q2)) return true;
    return false;
}
void solve()
{
	ll n, d, h;
	cin >> n >> d >> h;
	vector<int> a(n),b(n);
	for(int i = 0;i < n;i++)
		cin >> a[i] >> b[i];


	double l = 0, r = 1000;
	double ans = r;
	for(int p = 0;p < 100;p++)
	{
		double mid = (double)(l + r) / 2.0;
		bool ok = true;

		Point A1 = {0, mid};
		Point A2 = {d,h};

		for(int i = 0;i < n;i++)
		{
			Point B1 = {a[i], 0};
			Point B2 = {a[i], b[i]};

			if(doIntersect(A1,A2,B1,B2)){
				ok=false;
			}
		}
		if(ok){
			ans = mid;
			r = mid;
		}else{
			l=mid;
		}
	}
	cout << fixed << setprecision(16) << ans << "\n";
}
 
int32_t main()
{
	fastio;
	int t = 1;
	//cin >> t;
	for(int tt = 0;tt < t;tt++)
	{
		solve();
	}
}
#include <bits/stdc++.h>
//#include <atcoder/all>
using namespace std;
//using namespace atcoder;
using ll=long long;
using ld=long double;
using pll=pair<ll, ll>;
//using mint = modint1000000007;
#define rep(i,n) for (ll i=0; i<n; ++i)
#define all(c) begin(c),end(c)
#define PI acos(-1)
#define oo 2e18
template<typename T1, typename T2>
bool chmax(T1 &a,T2 b){if(a<b){a=b;return true;}else return false;}
template<typename T1, typename T2>
bool chmin(T1 &a,T2 b){if(a>b){a=b;return true;}else return false;}
//priority_queue<ll, vector<ll>, greater<ll>> Q;
/*

*/
int main(){
  cin.tie(0);
  ios::sync_with_stdio(0);
  cout << fixed << setprecision(10);
  ll N;
  ld D, H;
  cin >> N >> D >> H;
  ld ans=0.0;
  rep(i, N){
    ld d, h;
    cin >> d >> h;
    // 下半分
    ld tmp = h;
    // 比率をひく
    tmp -= (H-h)/(D-d) * d;
    chmax(ans, tmp);
  }
  cout << ans << endl;
}
