#include <bits/stdc++.h>
using namespace std;
const long long N = 1e5 + 4;
const double eps = 1e-12;
struct matrix {
  double a[4][4];
  inline matrix operator*(const matrix &x) const {
    static matrix ret;
    for (long long i = 1; i ^ 4; i++)
      for (long long j = 1; j ^ 4; j++) {
        ret.a[i][j] = 0;
        for (long long k = 1; k ^ 4; k++) ret.a[i][j] += a[i][k] * x.a[k][j];
      }
    return ret;
  }
} f, A[40];
inline long long cmp(double x) { return abs(x) < eps ? 0 : (x < 0 ? -1 : 1); }
struct poin {
  double x, y;
  poin() {}
  poin(double u, double v) : x(u), y(v) {}
} a[N];
inline bool comp(const poin &a, const poin &b) {
  return (!cmp(a.x - b.x)) ? a.y > b.y : a.x < b.x;
}
long long n, t, top, nw;
double M, qwq;
inline double slope(const poin &a, const poin &b) {
  return (a.y - b.y) / (a.x - b.x);
}
inline double calc(long long t, double x) { return M * t - x; }
signed main() {
  scanf("%lld%lld", &n, &t);
  for (long long i = 1, x, y; i <= n; i++) {
    scanf("%lld%lld%lf", &x, &y, &qwq);
    M = max(M, qwq * y);
    a[i] = poin(-qwq, qwq * x);
  }
  sort(a + 1, a + n + 1, comp);
  for (long long i = 1; i <= n; i++) {
    if (i > 1 && !cmp(a[i].x - a[i - 1].x)) continue;
    while (top > 1 && cmp(slope(a[top], a[i]) - slope(a[top], a[top - 1])) == 1)
      top--;
    a[++top] = a[i];
  }
  f.a[1][3] = 1;
  for (long long i = 1; i <= top; i++) cerr << a[i].x << " " << a[i].y << "\n";
  for (long long i = top; i; i--) {
    qwq = slope(a[i - 1], a[i]);
    if (i != 1 && cmp(calc(nw, f.a[1][1]) - qwq) >= 0) continue;
    A[0].a[1][2] = A[0].a[1][3] = A[0].a[2][3] = 0;
    A[0].a[2][2] = A[0].a[3][2] = A[0].a[3][3] = 1;
    A[0].a[1][1] = 1 + a[i].x;
    A[0].a[2][1] = -a[i].x * M;
    A[0].a[3][1] = a[i].y;
    for (long long j = 1; j < 34; j++) A[j] = A[j - 1] * A[j - 1];
    for (long long j = 33; j >= 0; j--)
      if (nw + (1ll << j) < t &&
          (i == 1 ||
           cmp(calc(nw + (1ll << j), (f * A[j]).a[1][1]) - qwq) <= 0)) {
        nw += (1ll << j);
        f = f * A[j];
      }
    nw++;
    f = f * A[0];
    if (nw == t) break;
  }
  printf("%.8lf\n", f.a[1][1]);
  return (0 - 0);
}
