#include <bits/stdc++.h>
using namespace std;
const double SUCK = 999999999999999999.99;
const int MX = 51 * 101;
int n;
int r;
int f[55];
int s[55];
int p[55];
double cp[55];
double dp[55][MX];
bool isOk(double det) {
  for (int i = 0; i <= r; i++) {
    dp[n][i] = 0;
  }
  for (int i = n - 1; i >= 0; i--) {
    for (int j = 0; j <= r; j++) {
      dp[i][j] = det;
      double togo = 0;
      if (j + f[i] > r) {
        togo = det;
      } else {
        togo += cp[i] * (f[i] + dp[i + 1][j + f[i]]);
        if (j + s[i] > r)
          togo += (1 - cp[i]) * (s[i] + det);
        else
          togo += (1 - cp[i]) * (s[i] + dp[i + 1][j + s[i]]);
      }
      dp[i][j] = min(det, togo);
    }
  }
  if (dp[0][0] >= det) return false;
  return true;
}
const double eps = 0.000000001;
time_t bg;
double getTime() {
  time_t en = clock();
  double ret = (double)(en - bg) / CLOCKS_PER_SEC;
  return ret;
}
double bsearch(double l, double r) {
  double m = (l + r) / 2;
  if (r - l < eps) return m;
  if (getTime() >= 1.95) return m;
  if (isOk(m))
    return bsearch(l, m);
  else
    return bsearch(m, r);
}
int main() {
  bg = clock();
  scanf("%d%d", &n, &r);
  for (int i = 0; i < n; i++) scanf("%d%d%d", &f[i], &s[i], &p[i]);
  for (int i = 0; i < n; i++) cp[i] = 0.010000 * p[i];
  double ans = bsearch(n, 50000000);
  printf("%.12f", ans);
  return 0;
}
