#include <bits/stdc++.h>
using namespace std;
const double inf = 1e10;
inline int cmp(double x, double y = 0, double tol = 1e-7) {
  return (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1;
}
struct ball {
  double x, v, m;
  int id;
  ball(double x = 0.0, double v = 0.0, double m = 0.0) : x(x), v(v), m(m) {}
  bool operator<(const ball &q) const { return cmp(x, q.x) < 0; }
};
bool comp(ball a, ball b) { return a.id < b.id; }
ball p[100];
int n, T;
inline double calcula(double m1, double m2, double v1, double v2) {
  return ((m1 - m2) * v1 + 2 * m2 * v2) / (m1 + m2);
}
void solve() {
  double t = 0.0;
  while (cmp(t, T) < 0) {
    double time = inf;
    for (int i = 0; i < n - 1; i++) {
      int j = i + 1;
      if (cmp(p[i].v - p[j].v) == 0) continue;
      double tmp = (p[j].x - p[i].x) / (p[i].v - p[j].v);
      if (cmp(tmp) <= 0) continue;
      time = min(time, tmp);
    }
    if (cmp(time, inf) == 0 || cmp(T, t + time) <= 0) break;
    for (int i = 0; i < n; i++) p[i].x = p[i].x + time * p[i].v;
    for (int i = 0; i < n - 1; i++) {
      int id1 = i, id2 = i + 1;
      if (cmp(p[id1].x, p[id2].x) != 0) continue;
      double aux = p[id1].v;
      p[id1].v = calcula(p[id1].m, p[id2].m, p[id1].v, p[id2].v);
      p[id2].v = calcula(p[id2].m, p[id1].m, p[id2].v, aux);
    }
    t += time;
  }
  for (int i = 0; i < n; i++) p[i].x = p[i].x + (T - t) * p[i].v;
}
int main() {
  cin >> n >> T;
  for (int i = 0; i < n; i++) {
    scanf("%lf %lf %lf", &p[i].x, &p[i].v, &p[i].m);
    p[i].id = i;
  }
  sort(p, p + n);
  solve();
  sort(p, p + n, comp);
  for (int i = 0; i < n; i++) printf("%.9lf\n", p[i].x);
  return 0;
}
