#include <bits/stdc++.h>
using namespace std;
clock_t _start_clock = clock();
inline void _time() {}
inline int log(const char *format, ...) { return 0; }
const double EPS = 10e-8;
const int MAX_N = 25;
const int MAX = 1 << 22;
const double INF = 1e10;
double X[MAX_N];
double Y[MAX_N];
double A[MAX_N];
double dp[MAX];
int n;
double l, r;
complex<double> rotate(const complex<double> &p, double theta) {
  double x = cos(theta) * p.real() - sin(theta) * p.imag();
  double y = sin(theta) * p.real() + cos(theta) * p.imag();
  return complex<double>(x, y);
}
complex<double> intersection(complex<double> a, complex<double> b,
                             bool &parallel) {
  complex<double> c(-10000, 0);
  complex<double> d(10000, 0);
  double a1 = a.imag() - b.imag();
  double b1 = b.real() - a.real();
  double c1 = a.real() * a1 + a.imag() * b1;
  double a2 = c.imag() - d.imag();
  double b2 = d.real() - c.real();
  double c2 = c.real() * a2 + c.imag() * b2;
  double D = a1 * b2 - a2 * b1;
  if (abs(D) < 1e-10) parallel = true;
  double Dx = b2 * c1 - b1 * c2;
  double Dy = a1 * c2 - a2 * c1;
  return complex<double>(Dx / D, Dy / D);
}
double add_light(double start, int pos) {
  complex<double> a(X[pos], Y[pos]);
  complex<double> u(start - X[pos], -Y[pos]);
  complex<double> rot = rotate(u, A[pos]);
  complex<double> b = a + rot;
  bool parallel = false;
  complex<double> p = intersection(a, b, parallel);
  if (parallel || p.real() < start)
    return r;
  else
    return p.real();
}
double solve(int status) {
  double &ans = dp[status];
  if (ans > -INF) return ans;
  ans = -INF;
  for (int i = 0; i < n; i++) {
    if (status & (1 << i)) {
      double val = solve(status ^ (1 << i));
      ans = max(ans, add_light(val, i));
    }
  }
  return ans;
}
int main(int argc, char **argv) {
  int i;
  scanf("%d %lf %lf", &n, &l, &r);
  for (i = 0; i < n; i++) {
    scanf("%lf %lf %lf", &X[i], &Y[i], &A[i]);
    A[i] = (A[i] * M_PI) / 180;
  }
  dp[0] = l;
  for (i = 1; i < MAX; i++) dp[i] = -INF;
  double ans = min(r - l, solve((1 << n) - 1) - l);
  printf("%.10lf", ans);
  return EXIT_SUCCESS;
}
