#include <bits/stdc++.h>
using namespace std;
double pos(double q) {
  if (q < 0) return -q;
  return q;
}
int main() {
  cout << setiosflags(ios::fixed);
  int n, i, j, place, res[20];
  double t, x[20], v[20], m[20], q, min, w[20], v1, v2, eps = 0.000000001,
                                                        vv[20];
  cin >> n >> t;
  for (i = 0; i < n; i++) {
    cin >> x[i] >> v[i] >> m[i];
    w[i] = x[i];
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      if (x[i] < x[j]) {
        q = x[i];
        x[i] = x[j];
        x[j] = q;
        q = v[i];
        v[i] = v[j];
        v[j] = q;
        q = m[i];
        m[i] = m[j];
        m[j] = q;
      }
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      if (w[i] == x[j]) {
        res[i] = j;
        break;
      }
    }
  }
  while (t > 0) {
    min = 1000000000;
    for (i = 0; i < n - 1; i++) {
      if (x[i] != x[i + 1]) {
        if ((v[i] > 0 && v[i + 1] <= 0)) {
          if (((x[i + 1] - x[i]) / (v[i] + pos(v[i + 1]))) < min) {
            min = (x[i + 1] - x[i]) / (v[i] + pos(v[i + 1]));
          }
        } else if ((v[i] >= 0 && v[i + 1] < 0)) {
          if (((x[i + 1] - x[i]) / (v[i] + pos(v[i + 1]))) < min) {
            min = (x[i + 1] - x[i]) / (v[i] + pos(v[i + 1]));
          }
        } else if ((v[i] > 0 && v[i + 1] > 0 && v[i] > v[i + 1])) {
          if (((x[i + 1] - x[i]) / (v[i] - (v[i + 1])) < min)) {
            min = (x[i + 1] - x[i]) / (v[i] - (v[i + 1]));
          }
        } else if ((v[i] < 0 && v[i + 1] < 0 && v[i] > v[i + 1])) {
          if (((x[i + 1] - x[i]) / (v[i] - v[i + 1])) < min) {
            min = (x[i + 1] - x[i]) / (v[i] - v[i + 1]);
          }
        }
      }
    }
    if (min > t) {
      for (i = 0; i < n; i++) x[i] += (v[i] * t);
      t = 0;
    } else {
      for (i = 0; i < n; i++) vv[i] = v[i];
      for (i = 0; i < n - 1; i++) {
        if (x[i] != x[i + 1]) {
          if ((vv[i] > 0 && vv[i + 1] <= 0)) {
            if (pos((x[i + 1] - x[i]) / (vv[i] + pos(vv[i + 1])) - min) < eps) {
              v1 = vv[i];
              v2 = vv[i + 1];
              v[i] = ((m[i] - m[i + 1]) * v1 + 2 * m[i + 1] * v2) /
                     (m[i] + m[i + 1]);
              v[i + 1] =
                  ((m[i + 1] - m[i]) * v2 + 2 * m[i] * v1) / (m[i] + m[i + 1]);
            }
          } else if ((vv[i] >= 0 && vv[i + 1] < 0)) {
            if (pos((x[i + 1] - x[i]) / (vv[i] + pos(vv[i + 1])) - min) < eps) {
              v1 = vv[i];
              v2 = vv[i + 1];
              v[i] = ((m[i] - m[i + 1]) * v1 + 2 * m[i + 1] * v2) /
                     (m[i] + m[i + 1]);
              v[i + 1] =
                  ((m[i + 1] - m[i]) * v2 + 2 * m[i] * v1) / (m[i] + m[i + 1]);
            }
          } else if ((vv[i] > 0 && vv[i + 1] > 0 && vv[i] > vv[i + 1])) {
            if (pos((x[i + 1] - x[i]) / (vv[i] - vv[i + 1]) - min) < eps) {
              v1 = vv[i];
              v2 = vv[i + 1];
              v[i] = ((m[i] - m[i + 1]) * v1 + 2 * m[i + 1] * v2) /
                     (m[i] + m[i + 1]);
              v[i + 1] =
                  ((m[i + 1] - m[i]) * v2 + 2 * m[i] * v1) / (m[i] + m[i + 1]);
            }
          } else if ((vv[i] < 0 && vv[i + 1] < 0 && vv[i] > vv[i + 1])) {
            if (pos((x[i + 1] - x[i]) / (vv[i] - vv[i + 1]) - min) < eps) {
              v1 = vv[i];
              v2 = vv[i + 1];
              v[i] = ((m[i] - m[i + 1]) * v1 + 2 * m[i + 1] * v2) /
                     (m[i] + m[i + 1]);
              v[i + 1] =
                  ((m[i + 1] - m[i]) * v2 + 2 * m[i] * v1) / (m[i] + m[i + 1]);
            }
          }
        }
      }
      for (i = 0; i < n; i++) x[i] += (vv[i] * min);
      t -= min;
    }
  }
  for (i = 0; i < n; i++) cout << setprecision(6) << x[res[i]] << endl;
  return 0;
}
