#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
const double eps = 1e-15;
int n, tp;
int a[N], b[N];
long long t;
double bv;
double p[N];
pair<double, double> sp[N], h[N];
int sgn(double x) { return fabs(x) < eps ? 0 : (x > 0 ? 1 : -1); }
const pair<double, double> operator-(const pair<double, double>& x,
                                     const pair<double, double>& y) {
  return make_pair(x.first - y.first, x.second - y.second);
}
double operator*(const pair<double, double>& x, const pair<double, double>& y) {
  return x.first * y.second - x.second * y.first;
}
struct matrix {
  double a[3][3];
  matrix() { memset(a, 0, sizeof(a)); }
  const matrix operator*(const matrix& x) const {
    matrix res;
    for (int i = 0; i < 3; i++)
      for (int k = 0; k < 3; k++)
        for (int j = 0; j < 3; j++) res.a[i][j] += a[i][k] * a[k][j];
    return res;
  }
};
struct Vector {
  double a[3];
  Vector(double a0 = 0, double a1 = 0, double a2 = 0) {
    a[0] = a0;
    a[1] = a1;
    a[2] = a2;
  }
  const Vector operator*(const matrix& x) const {
    Vector res;
    for (int k = 0; k < 3; k++)
      for (int j = 0; j < 3; j++) res.a[j] += a[k] * x.a[k][j];
    return res;
  }
};
matrix mk[40];
int main() {
  scanf("%d%lld", &n, &t);
  for (int i = 1; i <= n; i++) scanf("%d%d%lf", a + i, b + i, p + i);
  for (int i = 1; i <= n; i++) bv = max(bv, b[i] * p[i]);
  for (int i = 1; i <= n; i++) sp[i] = make_pair(p[i], p[i] * a[i]);
  sort(sp + 1, sp + n + 1);
  for (int i = 1; i <= n; i++) {
    if (i < n && !sgn(sp[i + 1].first - sp[i].first)) continue;
    for (; tp > 1 && sgn((h[tp] - h[tp - 1]) * (sp[i] - h[tp])) >= 0; tp--)
      ;
    h[++tp] = sp[i];
  }
  h[tp + 1] = make_pair(h[tp].first + 1, -1e20);
  tp++;
  long long st = 0;
  Vector fcur(0, 0, 1);
  for (int i = 1; i < tp; i++) {
    double k = (h[i + 1].second - h[i].second) / (h[i + 1].first - h[i].first);
    mk[0] = matrix();
    mk[0].a[0][0] = 1 - h[i].first;
    mk[0].a[1][0] = h[i].first * bv;
    mk[0].a[2][0] = h[i].second;
    mk[0].a[1][1] = mk[0].a[2][1] = 1;
    mk[0].a[2][2] = 1;
    for (int j = 1; j <= 34; j++) mk[j] = mk[j - 1] * mk[j - 1];
    for (int j = 34; j >= 0; j--) {
      if (st + (1ll << j) > t) continue;
      Vector fnxt = fcur * mk[j];
      if (sgn(fnxt.a[0] - (st + (1ll << j)) * bv - k) >= 0)
        st += 1ll << j, fcur = fnxt;
    }
    if (st < t && sgn(fcur.a[0] - st * bv - k) >= 0) st++, fcur = fcur * mk[0];
  }
  printf("%.12lf\n", fcur.a[0]);
  return 0;
}
