#include <bits/stdc++.h>
using namespace std;
const double EPS = 1E-10;
int main() {
  int N, T;
  while (2 == scanf("%d%d", &N, &T)) {
    double X[20], V[20], M[20];
    for (int i = 0; i < (int)(N); i++) scanf("%lf%lf%lf", X + i, V + i, M + i);
    vector<pair<double, int> > ord(N);
    for (int i = 0; i < (int)(N); i++) ord[i] = make_pair(X[i], i);
    sort((ord).begin(), (ord).end());
    double t = 0;
    while (t < T - EPS) {
      double dt = T - t;
      for (int k = 0; k < (int)(N - 1); k++) {
        int i = ord[k].second, j = ord[k + 1].second;
        double dx = X[j] - X[i];
        double v = V[i] - V[j];
        if (v > EPS) dt = min(dt, dx / v);
      }
      t += dt;
      for (int i = 0; i < (int)(N); i++) X[i] += V[i] * dt;
      for (int k = 0; k < (int)(N - 1); k++) {
        int i = ord[k].second, j = ord[k + 1].second;
        if (X[i] < X[j] - EPS) continue;
        double m1 = M[i], m2 = M[j];
        double v1 = V[i], v2 = V[j];
        double tv1 = ((m1 - m2) * v1 + 2 * m2 * v2) / (m1 + m2);
        double tv2 = ((m2 - m1) * v2 + 2 * m1 * v1) / (m1 + m2);
        V[i] = tv1;
        V[j] = tv2;
      }
    }
    for (int i = 0; i < (int)(N); i++) printf("%.10f\n", X[i]);
  }
  return 0;
}
