/**
*    author:  shu8Cream
*    created: 02.05.2021 10:37:54
**/

#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int i=0; i<(n); i++)
#define all(x) (x).begin(), (x).end()
using ll = long long;
using P = pair<ll,ll>;
using vi = vector<double>;
using vvi = vector<vi>;

int n;
double D,H;

bool check(double mid, vi &d, vi & h){
    rep(i,n){
        if((h[i]-mid)*D>(H-mid)*d[i]) return false;
    }
    return true;
}

int main() {
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    cin >> n >> D >> H;
    vi d(n),h(n);
    rep(i,n) cin >> d[i] >> h[i];
    double ok = 0.0, ng = 10000.0;
    int loop = 100;
    while(loop--){
        double mid = (ok + ng) / 2.0;
        if(check(mid,d,h)) ng = mid;
        else ok = mid; 
    }
    printf("%.10lf\n", ok);
}
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define Mp make_pair
#define pb push_back

typedef long long ll;
typedef double db;
typedef pair<int, int> pii;
typedef vector<int> vi;
mt19937 mrand(time(0));
#define debug(...) fprintf(stderr, __VA_ARGS__)
ll get(ll r) { return ((ll)mrand() * mrand() % r + r) % r; }
ll get(ll l, ll r) { return get(r - l + 1) + l; }

int n, D, H; db ans;
signed main() {
    scanf("%d %d %d", &n, &D, &H);
    for(int i = 1; i <= n; i++) {
        int d, h; scanf("%d %d", &d, &h);
        // y = (H - h) / (D - d) * (x - D) + H
        // x = 0  ==>  y = (H - h) / (D - d) * (0 - D) + H
        ans = max(ans, 1. * (H - h) / (D - d) * (0 - D) + H);
    }
    printf("%.10f\n", ans);
    debug("time=%.4f\n", (db)clock()/CLOCKS_PER_SEC);
    return 0;
}