#include <bits/stdc++.h>
using namespace std;
int n, m, k;
bool debug = false;
double h, f, l[505], r[505];
double judge(double x) {
  if (abs(x) < 1e-8) return 0;
  return x > 0 ? 1 : -1;
}
double cal(double a, double b) {
  if (judge(a) == 0 || judge(b) == 0 || judge(a) * judge(b) < 0) return 0;
  if (judge(a) < 0) {
    a *= -1;
    b *= -1;
  }
  double k1 = (h - f) / a, b1 = f;
  double k2 = (-h + f) / b, b2 = -f;
  double x = (b1 - b2) / (k2 - k1), y = k1 * x + b1;
  if (y > h) return b * ((f + h) / (f - h) + 1) * h;
  if (y < -h) return a * ((f + h) / (f - h) + 1) * h;
  return (a + x) * (h - y) / 2 + (b + x) * (y + h) / 2;
}
int main() {
  scanf("%d%lf%lf", &n, &h, &f);
  double ans = 0;
  for (int i = 0; i < n; i++) {
    scanf("%lf%lf", l + i, r + i);
    ans += (r[i] - l[i]) * ((f + h) / (f - h) + 1) * 2 * h;
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) {
      ans -=
          cal(l[i], l[j]) + cal(r[i], r[j]) - cal(l[i], r[j]) - cal(l[j], r[i]);
    }
  printf("%.10lf\n", ans);
  return 0;
}
