#pragma GCC optimize("Ofast")
#include "bits/stdc++.h"
typedef long long ll;
using namespace std;

	#define sim template < class c
	#define ris return * this
	#define dor > debug & operator <<
	#define eni(x) sim > typename \
enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
	sim > struct rge { c b, e; };
	sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
	sim > auto dud(c* x) -> decltype(cerr << *x, 0);
	sim > char dud(...);
	struct debug {
			// #ifdef LOCAL
		~debug() { cerr << endl; }
		eni(!=) cerr << boolalpha << i; ris; }
		eni(==) ris << range(begin(i), end(i)); }
		sim, class b dor(pair < b, c > d) {
			ris << "(" << d.first << ", " << d.second << ")";
		}
		sim dor(rge<c> d) {
			*this << "[";
			for (auto it = d.b; it != d.e; ++it)
				*this << ", " + 2 * (it == d.b) << *it;
			ris << "]";
		}

			// sim dor(const c&) { ris; }
	};
	#ifdef ASJKD
}
	#endif
	#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
	#define read(x) for(auto &i : (x)){cin>>i;}
	#define all(x) begin(x), end(x)
	#define pb push_back
#define maxn 1500
ll mod = 998244353;
int INF = 1e9;
ll INF64 = 1e18;

long long binpow(long long a, long long b, long long m) {
	a %= m;
	long long res = 1;
	while (b > 0) {
		if (b & 1){
			res = res * a % m;
		}
		a = a * a % m;
		b >>= 1;
	}
	return res;
}

bool check(vector<pair<int, int>> &a, long double pos, int d, int h){
	// myx = 0
	// myy = pos
	int n =a.size();
	long double coef = (long double)(h-pos) / ((long double)d);
	long double c = pos;
	// debug() << imie(coef) imie(c);
	bool ok = 1;
	for(int i=0;i<n;i++){

		ok &= ((coef * a[i].first) + c) > (double)a[i].second;
		if(!ok) break;
	}
	return ok;
}
double eps = 1e-6;
void test_case(int tnum){
	int n, d, h;
	cin>>n>>d>>h;
	vector<pair<int, int>> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i].first>>a[i].second;
	}
	double hi = 1000;
	double lo = 0;
	while(hi-eps > lo){
		double mid = (hi + lo) / 2;
		if(check(a, mid, d, h)){
			hi = mid;
		} else{
			lo = mid;
		}
	}
	// debug() << imie(check(a, 2, d, h));
	cout <<setprecision(14) << fixed<< hi << '\n';
}	
int main(){
	cin.tie(0);
	cout.tie(0);
	ios_base::sync_with_stdio(false);
	int t=1;
	// cin>>t;
	for(int test=1;test<=t;test++){
		test_case(test);
	}
	return 0;
}
#include <iostream>
#include <string>
#include <vector>
//#include <math.h>       /* tan */
#include <cmath>
#include <algorithm>    // std::max

using namespace std;

int main(){
  int N;
  long D;
  long H;
  cin >> N >> D >> H;

  vector<vector<long>> q(N,vector<long>(2));
  for(int i = 0; i < N; i++){
    cin >> q[i][0] >> q[i][1];
  }

  double max = 0;
  for(auto h : q){
    double angle = atan2((H - h[1]), (D - h[0]));

    double t = D * tan(angle);
    double tmp = H - t;
    if(max < tmp){
      max = tmp;
    }
  }

  cout << max << endl;

  return 0;
}