// Slower C++ solution:
# include <math.h>

# include <stdio.h>

# include <string.h>

# include <stdlib.h>

# include <algorithm>

# include <iostream>



# define For(i,x,y)   for((i)=(x);i<(y);(i)++)

# define MAX(x,y)   ((x)>(y)? (x):(y))

# define MIN(x,y)   ((x)<(y)? (x):(y))

# define sz(a)      (sizeof(a))

# define mem(a)     (memset((a),0,sizeof(a)))



# define fop freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);

# define print(x) (printf("%d\n",x))

# define scan(x) (scanf("%d",&x))

# define printc(x) (printf("%c\n",x))

# define scanc(x) (scanf("%c",&x))

# define INF 0x7fffffff



using namespace std;



typedef long long           ll;

ll c[55][55];

double a[105][55],f[105][55],p[105];

int t[105],v[105];

int main()

{

    int i,j,k,n,m,l,ii,jj;

    double ans,tot,tmp;

    c[0][0]=1;

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

      for (j=0;j<=i;j++)

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

    scan(n);scan(m);scan(l);

    //print(n);print(m);print(l);

    For(i,1,n+1)

    {

        scanf("%lf",&p[i]);

        p[i]=p[i]/100.0;

        scan(t[i]);scan(v[i]);

    }

    For(i,1,n+1)

      For(j,0,m+1)

      {

          a[i][j]=pow(p[i],j)*c[m][j]*pow(1-p[i],m-j);

          if (v[i])

          {

              f[i][j]=(double)l/(double)v[i];

              f[i][j]+=j*t[i];

          }

          else f[i][j]=INF;

      }

    For (i,1,n+1)

    {

        ans=0;

        For (j,0,m+1)

        {

            tmp=a[i][j];

            For(ii,1,n+1) if (ii!=i)

            {



              tot=0;

              For (jj,0,m+1)

                if (f[i][j]<f[ii][jj])

                  tot+=a[ii][jj];

              tmp*=tot;

            }

            ans+=tmp;

        }

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

    }

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 3.670611162355824x):
#include <cstdio>

#include <algorithm>

using namespace std;



const double EPS = 1e-8;

const int N = 105;

const int M = 55;



int n, m, l, t[N], v[N];

double dp[N][M];

double sum[N][M];



void gao(double p, double dp[], double sum[]) {

	double q = 1-p, f[2][M] = {};

	f[0][0] = 1;

	for (int i = 1, x = 1; i <= m; ++i, x^=1) {

		f[x][0] = f[!x][0] * q;

		for (int j = 1; j <= i; ++j) {

			f[x][j] = f[!x][j-1] * p + f[!x][j] * q;

		}

	}

	dp[m+1] = sum[m+1] = 0;

	for (int i = m, x = m & 1; i >= 0; --i) {

		sum[i] = sum[i+1] + (dp[i] = f[x][i]);

	}

}



// return true if (i,j) < (x,y)

bool faster(int i, int j, int x, int y) {

	return l*v[x] + t[i]*j*v[i]*v[x] < l*v[i] + t[x]*y*v[i]*v[x];

}



int binsearch(int i, int j, int k) {

	int l = -1, r = m+1, mid;

	while (l + 1 < r) {

		mid = (l+r)>>1;

		faster(i,j,k,mid) ? r=mid : l=mid;

	}

	return r;

}



void debug(double a[], int s, int t) {

	for(int i=s;i<t;++i)printf("%f ", a[i]);puts("");

}



int main() {

	while (3==scanf("%d%d%d", &n, &m, &l)) {

		for (int p,i = 0; i < n; ++i) {

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

			gao(p/100., dp[i], sum[i]);

//			debug(dp[i], 0, m+2);

//			debug(sum[i], 0, m+2); 

		}

		for (int i = 0; i < n; ++i) {

			double ans = 0;

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

				double p = dp[i][j];

				for (int r,k = 0; k < n; ++k) {

					if (i == k) continue;

					r = binsearch(i, j, k);

					p *= sum[k][r];

				}

				ans += p;

			}

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

		}

	}

}