// Slower C++ solution:
#include <iostream>

#include <algorithm>

#include <cstdlib>

#include <iostream>

#include <algorithm>

#include <cstdlib>

#include <cstring>

#include <string>

#include <vector>

#include <cstdio>

#include <queue>

#include <stack>

#include <cmath>

#include <time.h>

using namespace std;



#define LL long long 

#define clr(x) memset(x,0,sizeof(x))

#define eps 1e-6

#define PI 3.1415926535897932384626433832795028          

#define MAXN 105



struct number{

   

	LL p,t,v;

    double c[MAXN];

	double ps[MAXN];



}mem[MAXN];



LL c[55][55];



void C()

{

	 for(LL i = 0;i < 55; i++ )

	       c[0][i]=1;

	 for(LL i = 1;i < 55; i++ )

	 {

		 for(LL j = i;j < 55; j++ )



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

		 

	 }

	 

}



int main()

{



	LL n,m,l,p,t,v;

	C();

	while(scanf("%lld%lld%lld", &n, &m, &l)!=EOF)

	{

		 for(LL i = 0 ;i < n; i++ )

		 {

			 scanf("%lld%lld%lld", &mem[i].p, &mem[i].t, &mem[i].v); 

			 

			 mem[i].c[0]=l*1.0/mem[i].v;

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

			 {

				mem[i].c[j]+=mem[i].t+mem[i].c[j-1];

			 }

            mem[i].ps[0]=c[0][m]*pow(mem[i].p/100.0,0.0)*pow(1.0-mem[i].p/100.0,m*1.0);

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

				mem[i].ps[j]=c[j][m]*(double)pow(mem[i].p/100.0,j*1.0)*pow(1.0-mem[i].p/100.0,(m-j)*1.0);

			//for(int j = 0; j <= m; j++ )

				//printf("%lf ",mem[i].ps[j]);

		 }



		  for(LL i = 0; i< n ; i++ )

		  {

			  double tp,pp=0.0;

			  for(LL j = 0; j <= m; j++ )

			  {

				  tp=mem[i].ps[j];



				  for(LL k = 0; k < n; k++ )

				  {

					  double t=0.0;

					  if(k==i)

						  continue;

					  for(LL q = 0; q <= m; q++ )

						  if(mem[k].c[q]>mem[i].c[j]+eps)

							  t+=mem[k].ps[q];

					  tp*=t;

				  }



				   pp+=tp;

			  }

			  

			  printf("%lf\n",pp);

		  }

	 

	}

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.167912225935031x):
#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;

}