#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 2000000000000000001 int main(){ int N,K; cin>>N>>K; vector p(N),s(N),t(N); rep(i,N){ cin>>p[i]>>s[i]>>t[i]; } int mm = 1; rep(i,N)mm *= 6; vector dp(mm,0.0); dp[0] = 1.0; int x = Inf32,y = -Inf32; double z = 0.0; rep(i,50){ vector ndp(mm,0.0); rep(j,mm){ if(dp[j]==0.0)continue; int tt = min(i,K); vector nums(N); { int cc = j; rep(k,N){ nums[k] = cc%6; cc /= 6; } } rep(k,1<>l)&1){ sum += t[l]; pp *= ((double)nums[l]-tt)/(p[l]-tt); to += cv * nums[l]; } else{ sum += s[l]; pp *= ((double)p[l]-nums[l])/(p[l]-tt); to += cv * (nums[l]+1); } cv *= 6; } if(pp==0.0)continue; if(sum <= 60){ x = min(x,i+1); y = max(y,i+1); z += dp[j]*pp*(i+1); continue; } ndp[to] += dp[j] * pp; } } swap(dp,ndp); } if(x==Inf32){ cout<<-1<