#include <bits/stdc++.h>
using namespace std;

#define for_(i,a,b) for(int i=a;i<b;++i)
#define for_rev(i,a,b) for(int i=a;i>=b;--i)
#define allof(a) a.begin(),a.end()
#define minit(a,b) memset(a,b,sizeof(a))
#define size_of(a) (int)a.size()

typedef long long lint;
typedef pair<int, int> pii;
typedef double Double;

inline int POPCNT(int _x) { return __builtin_popcount(_x); }
inline int POPCNT(lint _x) { return __builtin_popcountll(_x); }

const int iINF = 1L << 30;
const lint lINF = 1LL << 60;
const Double EPS = 1e-9;

int N, M, L;
int P[110], T[110], V[110];

Double prob[110][55];
Double goal[110][55];

lint combination(int n, int m) {
	lint res = 1;
	if (2 * m > n) m = n - m;
	for_(i,0,m) res = res * (n - i) / (i + 1);
	return res;
}

Double calc_prob(int p, int s) {
	Double res = 1.0;
	
	Double time_p = goal[p][s];
	
	for_(i,0,N) {
		if (i == p) continue;
		Double sum = 0.0;
		int ind = upper_bound(goal[i], goal[i] + M + 1, time_p) - goal[i];
		for_(j,ind,M+1) sum += prob[i][j];
		res *= sum;
	}
	
	return res;
}

void solve() {
	for_(i,0,N) {
		Double f_goal = (Double)L / (Double)V[i];
		
		for_(j,0,M + 1) {
			prob[i][j] = (Double)combination(M, j) * pow((Double)P[i] / 100.0, j) * pow((Double)(100 - P[i]) / 100.0, M - j);
			goal[i][j] = f_goal + (Double)j * (Double)T[i];
		}
	}
	/*
	for_(i,0,N) {
		for_(j,0,M + 1) cout << prob[i][j] << " ";
		cout << endl;
	}
	*/
	
	for_(i,0,N) {
		Double ansi = 0.0;
		for_(j,0,M + 1) ansi += calc_prob(i, j) * prob[i][j];
		printf("%.9lf\n", ansi);
	}
}

int main() {
	cin >> N >> M >> L;
	for_(i,0,N) cin >> P[i] >> T[i] >> V[i];
	solve();
	return 0;
}