#include <bits/stdc++.h>
using namespace std;
struct node {
  double x, v, m;
};
int n;
double t;
node a[12];
double b[12][12];
pair<vector<int>, double> timMin() {
  pair<vector<int>, double> c;
  c.second = 101;
  for (int i = 0; i < n - 1; i++) {
    for (int j = i + 1; j < n; j++) {
      if (abs(b[i][j] - c.second) < 1e-6) {
        c.first.push_back(i);
        c.first.push_back(j);
      } else if (b[i][j] < c.second) {
        c.first.clear();
        c.first.push_back(i);
        c.first.push_back(j);
        c.second = b[i][j];
      }
    }
  }
  return c;
}
void capnhat(double t) {
  for (int i = 0; i < n - 1; i++) {
    for (int j = i + 1; j < n; j++) {
      b[i][j] = 100001;
      if ((a[i].x - a[j].x) * (a[i].v - a[j].v) < 0) {
        b[i][j] = -(a[i].x - a[j].x) / (a[i].v - a[j].v);
      }
    }
  }
  pair<vector<int>, double> c = timMin();
  if (t > c.second) {
    for (int i = 0; i < n; i++) a[i].x += a[i].v * c.second;
    for (int i = 0; i < c.first.size(); i += 2) {
      int k = c.first[i], l = c.first[i + 1];
      double v1 = (a[k].m - a[l].m) * a[k].v + 2 * a[l].m * a[l].v;
      v1 /= a[k].m + a[l].m;
      double v2 = (a[l].m - a[k].m) * a[l].v + 2 * a[k].m * a[k].v;
      v2 /= a[k].m + a[l].m;
      a[k].v = v1;
      a[l].v = v2;
      a[k].x = a[l].x;
    }
    capnhat(t - c.second);
  } else {
    for (int i = 0; i < n; i++) a[i].x += a[i].v * t;
  }
}
int main() {
  cin >> n >> t;
  for (int i = 0; i < n; i++) {
    cin >> a[i].x >> a[i].v >> a[i].m;
  }
  capnhat(t);
  for (int i = 0; i < n; i++) cout << a[i].x << endl;
  return 0;
}
