#include <bits/stdc++.h>
using namespace std;
pair<int, int> point[100];
double ang[100];
double dp[10000000];
int i, j, k, N, M, K, l, r;
void clear() {}
void init() {
  scanf("%d%d%d", &N, &l, &r);
  for (i = 0; i <= N - 1; i++) {
    int first;
    scanf("%d%d%d", &point[i].first, &point[i].second, &first);
    ang[i] = (first * 1.0) * 3.1415926535 / 180.0;
  }
}
double func(int a, int h, double ang, double st) {
  double alpha = atan(fabs(a - st) / h);
  if (a > st) {
    double beta = alpha - ang;
    if (beta > 0) {
      double q = h * tan(beta);
      return min(1.0 * r, a - q);
    } else {
      beta *= -1;
      return min(1.0 * r, a + h * tan(beta));
    }
  } else {
    if (alpha + ang > 3.1415926535 / 2) {
      return 1.0 * r;
    } else {
      double beta = alpha + ang;
      return min(1.0 * r, h * tan(beta) + a);
    }
  }
}
void calc() {
  for (i = 0; i <= (1 << N) - 1; i++) {
    dp[i] = l * 1.0;
  }
  for (i = 0; i <= (1 << N) - 1; i++) {
    for (j = 0; j <= N - 1; j++) {
      if (!(i & (1 << j)))
        dp[i | (1 << j)] =
            max(dp[i | (1 << j)],
                func(point[j].first, point[j].second, ang[j], dp[i]));
    }
  }
  printf("%.8f\n", dp[(1 << N) - 1] - l);
}
int main() {
  clear();
  init();
  calc();
}
