#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
const double ep = 1e-5;
int n, T;
struct ball {
  double x, v, m;
  bool operator<(const ball &t) const { return x < t.x; }
  int id;
} b[20];
bool cmpi(const ball &a, const ball &b) { return a.id < b.id; }
int sign(double d) { return d < -1e-8 ? -1 : d > 1e-8; }
int main() {
  while (cin >> n >> T) {
    for (int i = 0; i < n; ++i) {
      cin >> b[i].x >> b[i].v >> b[i].m;
      b[i].id = i;
    }
    double maxt = T;
    double sum, sub;
    double v1, v2;
    double x;
    double total = 0;
    double nextTime;
    while (true) {
      nextTime = 1e50;
      for (int i = 0; i < n; ++i)
        for (int j = i + 1; j <= n - 1; ++j) {
          if (sign(b[i].x - b[j].x) * sign(b[i].v - b[j].v) < 0) {
            x = fabs(b[i].x - b[j].x) / fabs(b[i].v - b[j].v);
            ((nextTime) = ((nextTime) < (x) ? (nextTime) : (x)));
          }
        }
      if (total + nextTime > maxt + 1e-8) break;
      total += nextTime;
      for (int i = 0; i < n; ++i) {
        b[i].x += b[i].v * nextTime;
      }
      for (int i = 0; i < n; ++i)
        for (int j = i + 1; j <= n - 1; ++j) {
          if (fabs(b[i].x - b[j].x) < 1e-8 * 100) {
            sub = b[i].m - b[j].m;
            sum = b[i].m + b[j].m;
            v1 = b[i].v;
            v2 = b[j].v;
            b[i].v = (sub * v1 + 2.0 * b[j].m * v2) / sum;
            b[j].v = (-sub * v2 + 2.0 * b[i].m * v1) / sum;
          }
        }
    }
    nextTime = maxt - total;
    for (int i = 0; i < n; ++i) {
      b[i].x += b[i].v * nextTime;
    }
    for (int i = 0; i < n; ++i) {
      printf("%.5f\n", b[i].x);
    }
  }
  return 0;
}
