#include <bits/stdc++.h>
using namespace std;
struct Ball {
  double x, v, m, t;
};
const double EPS = 1e-10;
vector<Ball> b;
void move(int i, double dt) { b[i].x += b[i].v * dt; }
signed main() {
  {
    if (fopen("input.txt", "r")) {
      freopen("input.txt", "r", stdin);
      freopen("output.txt", "w", stdout);
    }
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
  }
  int n;
  double t;
  cin >> n >> t;
  b.resize(n);
  for (int i = 0; i != n; ++i) {
    cin >> b[i].x >> b[i].v >> b[i].m;
    b[i].t = t;
  }
  while (true) {
    double tmin = t + 100.0;
    int i, j;
    vector<pair<int, int> > coll;
    for (int i = 0; i < n - 1; ++i)
      for (int j = i + 1; j < n; ++j)
        if (fabs(b[i].v - b[j].v) > EPS) {
          double dt = (b[j].x - b[i].x) / (b[i].v - b[j].v);
          if (dt > EPS && dt < tmin - EPS && dt < t) {
            coll.clear();
            tmin = dt;
            coll.push_back(make_pair(i, j));
          } else if (fabs(dt - tmin) < EPS)
            coll.push_back(make_pair(i, j));
        }
    if (tmin >= t) break;
    vector<bool> f(n);
    for (auto p : coll) {
      int i = p.first;
      int j = p.second;
      move(i, tmin);
      b[j].x = b[i].x;
      double iv = b[i].v, jv = b[j].v;
      b[i].v = ((b[i].m - b[j].m) * iv + 2.0 * b[j].m * jv) / (b[i].m + b[j].m);
      b[j].v = ((b[j].m - b[i].m) * jv + 2.0 * b[i].m * iv) / (b[i].m + b[j].m);
      f[i] = f[j] = true;
    }
    for (int i = 0; i != n; ++i)
      if (!f[i]) move(i, tmin);
    t -= tmin;
  }
  cout << fixed;
  cout.precision(4);
  for (int i = 0; i != n; ++i) {
    move(i, t);
    cout << b[i].x << '\n';
  }
  return 0;
}
