#include <bits/stdc++.h>
double f, h, l[505], r[505];
inline double calc(double x, double y) {
  if (!x || !y) return 0;
  if (x < 0) {
    x = -x;
    y = -y;
  }
  if (x > y) std::swap(x, y);
  if (y * (f - h) > x * (f + h)) return x * (1 + (f + h) / (f - h)) * h;
  double a = f * (y - x) / (y + x), z = x * (f + a) / (f - h);
  return ((y + z) * (h - a) + (x + z) * (h + a)) / 2;
}
int main() {
  int n;
  scanf("%d%lf%lf", &n, &h, &f);
  for (int i = 0; i < n; i++) {
    scanf("%lf%lf", l + i, r + i);
    if (l[i] < 0 && r[i] > 0) {
      r[i + 1] = r[i];
      r[i++] = 0;
      n++;
    }
  }
  double ans = 0;
  for (int i = 0; i < n; i++)
    ans += (r[i] - l[i]) * (1 + (f + h) / (f - h)) * h * 2;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if ((l[i] < 0 && l[j] < 0) || (r[i] > 0 && r[j] > 0))
        ans -= calc(l[i], l[j]) + calc(r[i], r[j]) - calc(l[i], r[j]) -
               calc(r[i], l[j]);
    }
  }
  printf("%.10lf\n", ans);
  return 0;
}
