#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-10;
const int oo = ~0u >> 2, mo = (int)1e9 + 7;
const int mn = 510, mm = mn * 2;
int x[mm];
int n, h, f;
double Ans(0), S;
int sgn(double x) {
  if (fabs(x) <= eps) return 0;
  if (x > -eps) return 1;
  return -1;
}
double calc(double x1, double x2) {
  double x3 = x1 * (f + h) / (f - h), x4 = x2 * (f + h) / (f - h);
  if (sgn(x1 - x4) > 0 && sgn(x3 - x2) > 0) return (x4 + x2) * h;
  if (sgn(x4 - x1) > 0 && sgn(x2 - x3) > 0) return (x1 + x3) * h;
  if (sgn((x1 + x2) - (x3 + x4)) > 0) swap(x1, x4), swap(x2, x3);
  double S = h * (x1 + x2);
  double a = x4 - x1, b = x3 - x2;
  if (sgn(a + b) > 0) {
    double h1 = h * b / (a + b), h2 = h - h1;
    double ST = h * (a + b), S1 = b * h1, S2 = a * h2;
    S += (ST - S1 - S2) / 2.;
  }
  return S;
}
int main() {
  cin >> n >> h >> f;
  for (int i = (1); i <= (n); ++i) cin >> x[i + i - 1] >> x[i + i];
  sort(x + 1, x + n * 2 + 1);
  for (int i = (1); i <= (n); ++i) {
    double a = x[i + i] - x[i + i - 1];
    double b = a * (f + h) / (f - h);
    S = (a + b) * h * 2, Ans += S;
  }
  for (int i = (1); i <= (n); ++i)
    for (int j = (1); j <= (n); ++j) {
      S = calc(x[i + i], x[j + j]), Ans -= S;
      S = calc(x[i + i - 1], x[j + j - 1]), Ans -= S;
      S = calc(x[i + i], x[j + j - 1]), Ans += S;
      S = calc(x[i + i - 1], x[j + j]), Ans += S;
    }
  cout << fixed << setprecision(10) << Ans << endl;
}
