#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 size_of(a) (int)(a).size()
#define minit(a,b) memset(a,b,sizeof(a))

int N, M, L, P[110], T[110], V[110];
double RP[110][55], RT[110][55];

int main() {
	cin >> N >> M >> L;
	for_(i,0,N) cin >> P[i] >> T[i] >> V[i];
	
	minit(RP, 0);
		
	for_(i,0,N) {
		RT[i][0] = V[i] > 0 ? (double)L / (double)V[i] : 1e9;
		for_(j,0,M) RT[i][j + 1] = RT[i][j] + (double)T[i];
	}
	
	for_(i,0,N) {
		vector< double > p(M+1, 1.0), pm(M+1, 1.0);
		
		for_(k,0,M) {
			p[k + 1] = p[k] * (double)P[i] / 100.0;
			pm[k + 1] = pm[k] * (1.0 - (double)P[i] / 100.0);
		}
		
		long long mCk = 1;
		
		for_(k,0,M + 1) {
			RP[i][k] =  (double)mCk * p[k] * pm[M - k];
			mCk *= (M - k);
			mCk /= k + 1;
		}
		
		for_rev(k,M,1) RP[i][k-1] += RP[i][k];
	}
		
	for_(i,0,N) {
		if (V[i] == 0) {
			cout << "0.000000000" << endl;
			continue;
		}
		
		double ans = 0.0;
		
		for_(k,0,M+1) {
			double t = RT[i][k];
			double p = RP[i][k] - RP[i][k + 1];
						
			for_(ii,0,N) {
				if (ii == i || V[ii] == 0) continue;
				int id = upper_bound(RT[ii], RT[ii] + M + 1, t) - RT[ii];
				p *= RP[ii][id];
			}
			
			ans += p;
		}
		
		cout << setprecision(9) << setiosflags(ios::fixed) << ans << endl;
	}
}