//


#include <iostream>
#include <string>

using namespace std;


int main() {
  int N, D, H;
  cin >> N >> D >> H;
  int O[N][2];
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < 2; j++)
      cin >> O[i][j];
  }
  int noview = 0;
  int ans = 0;
  for (int i = 0; i <= H; i++) {
    float m = ((float)H - (float)i) / (float) D;
    noview = 0;
    for (int j = 0; j < N; j++) {
      if (O[j][1] > (int) ((float)i + m * (float) O[j][0])) {
	noview = 1;
	break;
      }
    }
    if (noview) {
      ans++;
      continue;
    }
    else 
      break;
  }
  if (ans > 0) {
    float mar = (float) (ans - 1);
    while (mar < (float) ans) {
      mar += 0.0005;
      float m = ((float) H - mar) / (float) D;
      noview = 0;
      for (int j = 0; j < N; j++) {
	if (O[j][1] > (int) (mar + m * (float) O[j][0])) {
	  noview = 1;
	  break;
	}
      }
      if (noview)
	continue;
      else
	break;
    }
    cout << mar << "\n";
  }
  else
    cout << (float) ans << "\n";
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int INFint = 1e9+1;
const ll INFll = (ll)1e18+1;
const int MOD=1e9+7;

int main(){
  int N, D, H;
  cin>>N>>D>>H;
  double a = INFint;
  for(int i = 0; i < N; ++i) {
    int d, h;
    cin>>d>>h;
    a = min(a, (H - h)/(double(D - d)));
  }
  cout << setprecision(15) << max(0.0, H - a * D) << endl;
  return 0;
}
