#include<bits/stdc++.h>
const int maxn=31;
inline const void read(int &a)
{
a=0;
char c=getchar();
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9')
{
a=(a<<1)+(a<<3)+c-'0';
c=getchar();
}
}
inline const void write(int a)
{
if(a>9)write(a/10);
putchar(a%10+'0');
}
int n,m,v[maxn];
double p[maxn],f[2][maxn][500000];
int hash[10000000],ex_hash[500000];
int main()
{
read(n);read(m);
for(int i=1;i<=n;i++)
{
int o;
read(v[i]);read(o);
p[i]=double(o)/100;
}
memset(ex_hash,0,sizeof(ex_hash));
memset(hash,0,sizeof(hash));
memset(f,0,sizeof(f));
int d=-1,x=0;
hash[0]=++d;ex_hash[d]=0;
hash[m]=++d;ex_hash[d]=m;
f[x][0][0]=1;
for(int i=1;i<=n;i++)
{
x^=1;
for(int j=0;j<=i;j++)
for(int k=0;k<=d;k++)
{
int r=ex_hash[k]+v[i];
if(!hash[r])
{
if(r<m){hash[r]=++d;ex_hash[d]=r;}
else r=m;
}
if(j)f[x][j][k]+=f[x^1][j-1][k]*(1.0-p[i]);
f[x][j][hash[r]]+=f[x^1][j][k]*p[i];
}
}
for(int i=0;i<=n;i++)printf("%.3lf\n",f[x][i][hash[m]]);
return 0;
}