#include <bits/stdc++.h>
using namespace std;
struct ball {
  double x, w, v;
  int id;
} B[15];
int ca, cb;
bool cmpx(ball a, ball b) { return a.x < b.x; }
bool cmpid(ball a, ball b) { return a.id < b.id; }
double collTime(int n) {
  int i;
  double tmp, min = 110;
  for (i = 0; i < n - 1; i++) {
    if (B[i + 1].v < B[i].v) {
      tmp = (B[i + 1].x - B[i].x) / (B[i].v - B[i + 1].v);
      if (tmp < min) {
        min = tmp;
        ca = i, cb = i + 1;
      }
    }
  }
  return min;
}
void coll(int n, double Time) {
  int i;
  double ta, tb;
  for (i = 0; i < n; i++) {
    B[i].x += (B[i].v * Time);
  }
  ta = ((B[ca].w - B[cb].w) * B[ca].v + 2 * B[cb].w * B[cb].v) /
       (B[ca].w + B[cb].w);
  tb = ((B[cb].w - B[ca].w) * B[cb].v + 2 * B[ca].w * B[ca].v) /
       (B[ca].w + B[cb].w);
  B[ca].v = ta;
  B[cb].v = tb;
}
void lastmove(int n, double Time) {
  int i;
  for (i = 0; i < n; i++) {
    B[i].x += (B[i].v * Time);
  }
}
int main() {
  int n, i;
  double t, tmp, tx, tw, tv;
  while (scanf("%d %lf", &n, &t) != EOF) {
    for (i = 0; i < n; i++) {
      B[i].id = i;
      scanf("%lf %lf %lf", &tx, &tv, &tw);
      B[i].x = tx;
      B[i].w = tw;
      B[i].v = tv;
    }
    sort(B, B + n, cmpx);
    tmp = 0;
    while (1) {
      double Time = collTime(n);
      if (tmp + Time < t) {
        tmp += Time;
        coll(n, Time);
      } else
        break;
    }
    lastmove(n, t - tmp);
    sort(B, B + n, cmpid);
    for (i = 0; i < n; i++) {
      printf("%lf\n", B[i].x);
    }
  }
  return 0;
}
