#include <bits/stdc++.h>
using namespace std;
const int oo = 0x3f3f3f3f;
const long long ooo = 9223372036854775807ll;
const int _cnt = 1000 * 1000 + 7;
const int _p = 1000 * 1000 * 1000 + 7;
const int N = 100005;
const double PI = acos(-1.0);
const double eps = 1e-9;
int o(int x) { return x % _p; }
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
int lcm(int a, int b) { return a / gcd(a, b) * b; }
void file_put() {
  string s = "/home/jslijin/jslijin/code/";
  freopen((s + "code.in").c_str(), "r", stdin);
  freopen((s + "code.out").c_str(), "w", stdout);
}
struct mat {
  double v[3][3];
} B[N][36];
mat operator*(const mat &a, const mat &b) {
  mat c;
  for (int i = (0); i <= (2); ++i)
    for (int j = (0); j <= (2); ++j) {
      c.v[i][j] = 0;
      for (int k = (0); k <= (2); ++k) c.v[i][j] += a.v[i][k] * b.v[k][j];
    }
  return c;
}
struct state {
  int id;
  long long t;
  mat v;
} s;
vector<state> S;
pair<double, double> p[N];
int n;
long long T;
double a, b, pi, M = 0;
bool check(const mat &A, int x, int y) {
  return (B[x][0] * A).v[0][0] >= (B[y][0] * A).v[0][0];
}
int main() {
  scanf("%d%lld", &n, &T);
  for (int i = (1); i <= (n); ++i)
    scanf("%lf%lf%lf", &a, &b, &pi), M = ((M) > (b * pi) ? (M) : (b * pi)),
                                     p[i] = pair<double, double>{a * pi, pi};
  sort(p + 1, p + n + 1, greater<pair<double, double> >()),
      s.v.v[2][0] = 1, S.push_back(state{1, T, s.v});
  for (int i = (1); i <= (n); ++i)
    B[i][0].v[0][0] = 1 - p[i].second, B[i][0].v[0][1] = p[i].second,
    B[i][0].v[0][2] = p[i].first, B[i][0].v[1][1] = 1, B[i][0].v[1][2] = M,
    B[i][0].v[2][2] = 1;
  for (int i = (1); i <= (n); ++i)
    for (int j = (1); j <= (35); ++j) B[i][j] = B[i][j - 1] * B[i][j - 1];
  for (int i = (2); i <= (n); ++i) {
    while (!check(S.back().v, S.back().id, i)) S.pop_back();
    if (!(s = S.back()).t) continue;
    for (int j = (35); j >= (0); --j)
      if (s.t >= (1ll << j) + 1 && check(B[s.id][j] * s.v, s.id, i))
        s.t -= 1ll << j, s.v = B[s.id][j] * s.v;
    S.push_back(state{i, s.t - 1, B[s.id][0] * s.v});
  }
  s = S.back();
  for (long long k = s.t, i = 0; k; k >>= 1, ++i)
    if (k & 1) s.v = B[s.id][i] * s.v;
  printf("%.12lf\n", s.v.v[0][0]);
  return 0;
}
