#include <bits/stdc++.h>
int const maxn = 20;
double const pi = std::acos(-1);
double f[(1 << maxn) + 7][maxn + 7];
int n, l, r;
double dis;
struct light {
  int x, y, d;
  double a, ta;
};
light lights[maxn + 7];
double len(double start, int x) {
  if (lights[x].x >= start) {
    double l = lights[x].x - start;
    double h = lights[x].y;
    double t = l / h;
    double ta = lights[x].ta;
    return l - h * (t - ta) / (1.0 + t * ta);
  } else {
    double l = start - lights[x].x;
    double h = lights[x].y;
    double ta = lights[x].ta;
    double tb = l / h;
    if (ta * tb >= 1) return dis;
    double t = (ta + tb) / (1 - ta * tb);
    return t * h - l;
  }
}
int q[maxn];
int tot;
double calc() {
  double ans = 0;
  int up = 1 << n;
  for (int i = 1; i < up; i++) {
    tot = 0;
    for (int j = 0; j < n; j++)
      if ((1 << j) & i) q[tot++] = j + 1;
    if (tot == 1) {
      f[i][q[0]] = len(l, q[0]);
      continue;
    }
    for (int j = 0; j < tot; j++) {
      int tj = i ^ (1 << (q[j] - 1));
      for (int k = 0; k < tot; k++) {
        if (k == j) continue;
        f[i][q[j]] =
            std::max(f[i][q[j]], f[tj][q[k]] + len(l + f[tj][q[k]], q[j]));
        if (f[i][q[j]] > dis) return dis;
      }
    }
  }
  for (int i = 1; i <= n; i++) ans = std::max(ans, f[(1 << n) - 1][i]);
  return ans;
}
int main() {
  std::scanf("%d%d%d", &n, &l, &r);
  dis = r - l;
  for (int i = 1; i <= n; i++) {
    std::scanf("%d%d%d", &lights[i].x, &lights[i].y, &lights[i].d);
    lights[i].a = lights[i].d * pi / 180.0;
    lights[i].ta = std::tan(lights[i].a);
  }
  std::printf("%.10lf\n", std::min(calc(), dis));
}
