#include<iostream>
#include <stdio.h>
#include<cmath>
#include <bits/stdc++.h>
using namespace std;

int check(int d,int h,int d0,int h0){
    int a,b;
    if(d%2==1){
        a=d/2+1;
    }
    else{
        a=d/2;
    }
    if(h%2==1){
        b=h/2+1;
    }
    else{
        b=h/2;
    }
    if(d0>a || h0<b){
        return 1;
    }
    return 0;
}
int main()
{
    int n,d,h;
    cin>>n>>d>>h;
    double mini=0.0;
    while(n--){
        int d0,h0;
        cin>>d0>>h0;
         
        double a1=(((h-h0) * (1.0*d))/ (d-d0));
        a1=h-a1;
        mini=max(mini,a1);
        


        
        
    }
    cout<<mini<<endl;

    return 0;
}


#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <utility>
#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <cstdio>
#include <limits>
#define rep(i,n) for(int i = 0; i < n; ++i)
#define rep1(i,n) for(int i = 1; i <= n; ++i)
using namespace std;
template<class T>bool chmax(T &a, const T &b) { if(a < b){ a = b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if(a > b){ a = b; return 1; } return 0; }
template<class T> inline int  sz(T &a) { return a.size(); }
using ll = long long; using ld = long double;
using pi = pair<int,int>; using pl = pair<ll,ll>;
using vi = vector<int>; using vvi = vector<vi>;
using vl = vector<ll>; using vvl = vector<vl>;
const int inf = numeric_limits<int>::max();
const ll infll = numeric_limits<ll>::max();
int main()
{
  int n; cin >> n;
  ld D,H; cin >> D >> H;
  vector<ld> d(n),h(n);
  rep(i,n) cin >> d[i] >> h[i];

  ld res = 0;
  rep(i,n) {
    ld tmp = H + D * (h[i]-H)/(D-d[i]);
    tmp = max((ld)0, tmp);
    chmax(res, tmp);
  }
  printf("%.10Lf\n", res);
  return 0;
}
