#include <bits/stdc++.h>
using namespace std;
double v[20], m[20], x[20], ans[20];
int id[20];
double eps = 1e-6;
int dir(int x) { return v[x] < 0 ? -1 : 1; }
int main() {
  int n;
  double t, cur = 0;
  cin >> n >> t;
  for (int i = 1; i <= n; i++) cin >> x[i] >> v[i] >> m[i];
  for (int i = 1; i <= n; i++) id[i] = i;
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++)
      if (x[i] > x[j]) {
        swap(x[i], x[j]);
        swap(v[i], v[j]);
        swap(m[i], m[j]);
        swap(id[i], id[j]);
      }
  int tot = 0;
  while (cur - t < -eps) {
    double collide = 1e40;
    for (int i = 2; i <= n; i++) {
      if (dir(i) == 1 && dir(i - 1) == -1) continue;
      if (dir(i) == 1 && dir(i - 1) == 1) {
        if (fabs(v[i]) > fabs(v[i - 1])) continue;
        collide =
            min(collide, (x[i] - x[i - 1]) / (fabs(v[i - 1]) - fabs(v[i])));
        continue;
      }
      if (dir(i) == -1 && dir(i - 1) == -1) {
        if (fabs(v[i - 1]) - fabs(v[i]) > eps) continue;
        collide =
            min(collide, (x[i] - x[i - 1]) / (fabs(v[i]) - fabs(v[i - 1])));
        continue;
      }
      collide = min(collide, (x[i] - x[i - 1]) / (-v[i] + v[i - 1]));
    }
    if (cur + collide - t > eps) collide = t - cur;
    for (int i = 1; i <= n; i++) x[i] = x[i] + v[i] * collide;
    for (int i = 2; i <= n; i++)
      if (fabs(x[i] - x[i - 1]) <= eps) {
        int j = i - 1;
        double v1 = v[i], v2 = v[i - 1];
        double m1 = m[i], m2 = m[i - 1];
        double K = 2 * (m1 * v1 + m2 * v2) / (m1 + m2);
        v[i] = K - v[i];
        v[j] = K - v[j];
      }
    cur += collide;
  }
  for (int i = 1; i <= n; i++) ans[id[i]] = x[i];
  for (int i = 1; i <= n; i++) printf("%.6lf\n", ans[i]);
  return 0;
}
