// Original C++ solution (slower):
#include<stdio.h>

#include<cstring>

#include<iostream>

#include<string>



using namespace std;



const double eps = 1e-12;

#define REP(i, x) for (int i=0;i<x;i++)



double tmp[107][107];

double rest[107][107],rsum[107][107];

int N,M,L;

int p[107],t[107],v[107];

double pp[107];



int main()

{

    while (scanf("%d%d%d",&N,&M,&L) != EOF)

    {

        REP(i,N) scanf("%d%d%d",&p[i],&t[i],&v[i]);

        REP(i,N) pp[i] = p[i] / 100.0;

        REP(i,N)

        {

            REP(j,M+1) REP(k,M+1) tmp[j][k] = 0;

            tmp[0][0] = 1.00;

            for (int j = 1;j <= M;++j)

                for (int k = 0;k <= j;++k)

                {

                    tmp[j][k] = tmp[j-1][k] * (1-pp[i]);

                    if (k) tmp[j][k] += tmp[j-1][k-1] * pp[i];

                }

            for (int j = M;j >= 0;--j)

            {

                rest[i][j] = tmp[M][j];

                rsum[i][j] = tmp[M][j];

           //     cout<<rest[i][j]<<" ";

                if (j!=M) rsum[i][j] += rsum[i][j+1];

            }

        }

        REP(i,N)

        {

            double ans = 0;

            for (int times = 0;times <= M && v[i] != 0;++times)

            {

                double part = 1.00;

                double use = L / (double)v[i] + t[i] * times;

                for (int k = 0;k < N;++k)

                    if (k != i)

                    {

                        if (v[k] == 0) continue;

                        int l = 0,r = M;

                        while (l < r)

                        {

                            int mid = (l+r)>>1;

                            double total = L / (double) v[k] + t[k] * mid;

                            if (total <= use)

                                l = mid+1;

                            else r = mid;

                        }

                        double total = L / (double) v[k] + t[k] * l;

                        

                      //  --l;

                        if (total <= use)

                        {

                            part = 0.00;

                            break;

                        } else

                            part *= rsum[k][l];

                    }

                ans += rest[i][times] * part;

            }

            printf("%.8f\n",ans);

        }

    }

    return 0;

}

// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

#include <cmath>

#include <algorithm>

#include <vector>



using namespace std;



#define MAXN 110

#define INF 0x3f3f3f3f

#define PI acos(-1.0)

#define MAX(a,b) (a>b?a:b)

#define MIN(a,b) (a<b?a:b)

#define ABS(m) (m<0?-m:m)

typedef long long LL;



int n,m,l;

LL c[MAXN][MAXN];

int p[MAXN],t[MAXN],v[MAXN];



void Init()

{

    int i,j;

    scanf("%d%d%d",&n,&m,&l);

    for(i=1;i<=n;++i)

        scanf("%d%d%d",p+i,t+i,v+i);

    c[0][0]=1;

    for(i=1;i<=50;++i)

        for(j=1,c[i][0]=1;j<=i;++j)

            c[i][j]=c[i-1][j]+c[i-1][j-1];

}



long double C(long double P,int N,int M)

{

    int i; long double ans=c[N][M];

    for(i=1;i<=M;++i) ans*=P;

    for(;i<=N;++i) ans*=(1-P);

    return ans;

}



void Work()

{

    int i,j,k,x;

    long double ans,r1,r2;

    long double P[MAXN][2];

    LL t1,t2;

    for(i=1;i<=n;++i){

        for(ans=0,j=0;j<=m;++j){

            t1=l+1LL*j*t[i]*v[i];

            r1=C(p[i]/100.0,m,j);

            for(k=1;k<=n;++k){

                if(k==i) continue;

                for(x=1,P[0][0]=P[0][1]=1;x<=m;++x)

                    P[x][0]=P[x-1][0]*p[k]/100.0,P[x][1]=P[x-1][1]*(1-p[k]/100.0);

                for(x=r2=0,t2=l;x<=m&&t2*v[i]<=t1*v[k];t2+=1LL*t[k]*v[k],++x);

                for(r2=0;x<=m;++x) r2+=((long double)c[m][x])*P[x][0]*P[m-x][1];

                r1*=r2;

            }

            ans+=r1;

        }

        printf("%.12f\n",(double)ans);

    }

}



int main()

{

    Init();

    Work();

    return 0;

}

// Fastest known solution for this problem: