#include <bits/stdc++.h>
using namespace std;
int n, l, r, i, mask;
double res;
struct slights {
  int x, y, a;
} light[25];
double dist[2100000];
double mod(double nr) {
  if (nr < 0) return -nr;
  return nr;
}
ostream& operator<<(ostream& out, pair<double, double> p) {
  out << p.first << ' ' << p.second;
  return out;
}
pair<double, double> operator+(pair<double, double> p1,
                               pair<double, double> p2) {
  pair<double, double> p;
  p.first = p1.first + p2.first;
  p.second = p1.second + p2.second;
  return p;
}
pair<double, double> operator-(pair<double, double> p1,
                               pair<double, double> p2) {
  p2.first = -p2.first;
  p2.second = -p2.second;
  return p1 + p2;
}
pair<double, double> operator*(pair<double, double> p1,
                               pair<double, double> p2) {
  pair<double, double> p;
  p.first = p1.first * p2.first - p1.second * p2.second;
  p.second = p1.first * p2.second + p1.second * p2.first;
  return p;
}
pair<double, double> rot(pair<double, double> i, pair<double, double> c,
                         double angle) {
  pair<double, double> p3;
  p3.first = cos(angle);
  p3.second = sin(angle);
  pair<double, double> p;
  p = (i - c) * p3 + c;
  return p;
}
pair<double, double> fline(pair<double, double> p1, pair<double, double> p2) {
  pair<double, double> p;
  p.first = (p2.second - p1.second) / (p2.first - p1.first);
  p.second = p1.second - p.first * p1.first;
  return p;
}
double point0(pair<double, double> line) {
  double ax = line.second / line.first;
  return -ax;
}
double add(double sp, int i) {
  double d = sp;
  double ix = light[i].x;
  double iy = light[i].y;
  double ia = light[i].a * (atan(1) * 4) / 180;
  double r = point0(
      fline(rot(make_pair(d, 0), make_pair(ix, iy), ia), make_pair(ix, iy)));
  if (r < d) r = 2000000000;
  return r - d;
}
double fd(int mask) {
  if (dist[mask] != -2000000000) return dist[mask];
  int i;
  double da;
  double mxd = -2000000000;
  for (i = 0; (1 << i) <= mask; i++)
    if ((mask & (1 << i)) != 0) {
      da = fd(mask - (1 << i));
      mxd = max(mxd, da + add(da, i));
      if (mxd - r > -0.00000001) {
        dist[mask] = r;
        return r;
      }
    }
  dist[mask] = mxd;
  return dist[mask];
}
int main(void) {
  cin >> n >> l >> r;
  for (i = 0; i < n; i++) cin >> light[i].x >> light[i].y >> light[i].a;
  mask = 0;
  for (i = 0; i < n; i++) mask = mask * 2 + 1;
  for (i = 0; i <= mask; i++) dist[i] = -2000000000;
  dist[0] = l;
  res = fd(mask) - l;
  cout << setprecision(10) << res;
  return 0;
}
