#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ii = pair<int, int>;
using pll = pair<ll, ll>;
using pdd = pair<double, double>;
using vi = vector<int>;
using vii = vector<ii>;
using vs = vector<string>;
const double PI = acos(-1.0);
const double EPS = 1e-14;
const int MOD = 1e9 + 7;
const int INF = 1e9;
const ll INFLL = 4e18;
const int MAX = 50;
struct data {
  int fast, slow;
  double ch;
};
int N, R;
data arr[MAX + 5];
double memo[MAX + 5][6000];
double top = 1e18, bot = 0.0, mid;
void read() {
  cin >> N >> R;
  for (int i = 0; i < (int)N; i++) {
    cin >> arr[i].fast >> arr[i].slow >> arr[i].ch;
  }
}
double dp(int pos, int cur) {
  double &ret = memo[pos][cur];
  if (ret <= -0.8) {
    if (cur > R)
      ret = mid;
    else if (pos == N)
      ret = 0.0;
    else {
      ret = arr[pos].ch / 100.0 *
                (arr[pos].fast + dp(pos + 1, cur + arr[pos].fast)) +
            (100 - arr[pos].ch) / 100.0 *
                (arr[pos].slow + dp(pos + 1, cur + arr[pos].slow));
      ret = min(ret, mid);
    }
  }
  return ret;
}
void solve() {
  for (int loop = 0; loop < (int)200; loop++) {
    mid = (top + bot) / 2.0;
    for (int i = 0; i < (int)MAX + 5; i++)
      for (int j = 0; j < (int)6000; j++) memo[i][j] = -1.0;
    if (dp(0, 0) >= mid)
      bot = mid;
    else
      top = mid;
  }
  cout << fixed << setprecision(12) << (top + bot) / 2.0 << "\n";
}
int main() {
  int TC = 1;
  while (TC--) {
    read();
    solve();
  }
}
