#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
const double PI = 3.141592653589793238462, eps = 1e-8;
int n, p, q, x[20], y[20];
double f[1 << 20], a[20];
double get(double x1, double y1, double x2, double y2) {
  double tmp = x1 * x2 + y1 * y2;
  return acos(tmp / sqrt(x1 * x1 + y1 * y1) / sqrt(x2 * x2 + y2 * y2));
}
double dfs(int w) {
  if (f[w] >= 0) return f[w];
  int i;
  double tmp, X1, Y1, X2, Y2;
  f[w] = 0;
  for (i = 0; i < n; ++i)
    if (w & (1 << i)) {
      tmp = dfs(w - (1 << i));
      X1 = tmp + p - x[i];
      Y1 = -y[i];
      if (get(X1, Y1, q - x[i], -y[i]) <= a[i]) {
        f[w] = q - p;
        break;
      }
      X2 = X1 * cos(a[i]) - Y1 * sin(a[i]);
      Y2 = X1 * sin(a[i]) + Y1 * cos(a[i]);
      Y2 = fabs(Y2);
      tmp = x[i] + y[i] / Y2 * X2;
      f[w] = max(f[w], tmp - p);
    }
  return f[w];
}
int main() {
  int i;
  n = read();
  p = read();
  q = read();
  for (i = 0; i < n; ++i) {
    x[i] = read();
    y[i] = read();
    a[i] = double(1.0) * read() / 180.0 * PI;
  }
  for (i = 1; i < (1 << n); ++i) f[i] = -1;
  f[0] = 0;
  printf("%.9lf\n", dfs((1 << n) - 1));
  return 0;
}
