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

int main() {
  double N, D, H, maxi;
  cin >> N >> D >> H;
//  cout << " N " << N << " D " << D << " H " << H;  
  vector<double> d(N), h(N);
  double a = H/D, ans;
//  cout << " a " << a << " ans " << ans <<endl;  
  for(int i = 0; i < N; i++){
    cin >> d.at(i) >> h.at(i);
    if (a > (H-h.at(i))/(D-d.at(i))){
      maxi = i;
      a = (H-h.at(i))/(D-d.at(i));
//      cout << " a " << a << " i " << i << " maxi " << maxi << endl;
    }
  }
  ans = H - D * a;
  cout << ans << endl;
}

/*	author:  Kite_kuma
	created: 2021.01.23 20:57:55 */

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

#define rep(i, n) for(int i = 0; i < n; i++)

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout << fixed << setprecision(15);

	int n, m, k;
	cin >> n >> m >> k;
	vector<int> furidashi_ni_modoru(n + m + 1);

	{
		vector<int> a;
		rep(_, k) {
			int b;
			cin >> b;
			furidashi_ni_modoru[b] = 1;
			a.push_back(b);
		}

		rep(i, k - m + 1) {
			if(a[i + m - 1] - a[i] == m - 1) {
				cout << -1 << endl;
				return 0;
			}
		}
	}

	// x := dp[i] ( = answer)
	// dp[i] = a[i] * x + b[i]
	vector<double> a(n + m + 1), b(n + m + 1);
	double a_sum = 0, b_sum = 0;

	for(int i = n - 1; i >= 0; i--) {
		if(furidashi_ni_modoru[i]) {
			a[i] = 1;
		} else {
			a[i] = a_sum / m;
			b[i] = 1.0 + b_sum / m;
		}
		a_sum += a[i] - a[i + m];
		b_sum += b[i] - b[i + m];
	}

	// x == a[0] * x + b[0]
	cout << b[0] / (1.0 - a[0]) << '\n';

	return 0;
}
