#include <bits/stdc++.h>
using namespace std;
struct Latarnia {
  double x, y, a;
  friend istream& operator>>(istream& wejscie, Latarnia& dane) {
    wejscie >> dane.x >> dane.y >> dane.a;
    dane.a = (dane.a / 180.0) * M_PI;
    return wejscie;
  }
};
const int MAX = 20;
const double EPS = 10e-6, INF = 10e6;
int n;
Latarnia t[MAX];
double l, r, wynik[1 << MAX];
void wczytaj_dane() {
  cin >> n >> l >> r;
  for (int i = 0; i < (n); i++) cin >> t[i];
}
double przedluz(double x0, Latarnia& f) {
  double x = x0 - f.x, y = -f.y, a = f.a;
  double dx = x * cos(a) - y * sin(a), dy = x * sin(a) + y * cos(a);
  if (dy > -EPS) return INF;
  return f.x - (dx / dy) * f.y;
}
void wypelnij_wynik() {
  wynik[0] = l;
  for (int i = (1); i <= ((1 << n) - 1); i++) {
    wynik[i] = l;
    for (int j = 0; j < (n); j++)
      if (((i >> j) & 1) == 1) {
        int m = i - (1 << j);
        wynik[i] = max(wynik[i], przedluz(wynik[m], t[j]));
      }
  }
}
void zrob_test() {
  wczytaj_dane();
  wypelnij_wynik();
  cout << min(wynik[(1 << n) - 1], r) - l << '\n';
}
int main() {
  ios_base::sync_with_stdio(0);
  cout.setf(ios::fixed);
  cout.precision(12);
  zrob_test();
  return 0;
}
