#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int N=5e5+5;

typedef long long LL;

typedef double db;

int n,L,Head,Tail,q,l[N],t,v,Now;

db D[N],ans;

char c;

int read()
{
    int x=0,sig=1;
    for (c=getchar();c<'0' || c>'9';c=getchar()) if (c=='-') sig=-1;
    for (;c>='0' && c<='9';c=getchar()) x=x*10+c-48;
    return x*sig;
}

int main()
{
	n=read(); L=read();
	t=read(); v=read();
	printf("%.10lf\n",(db)t);
	l[Head=Tail=1]=v; D[1]=t;
	ans=(db)t*L; Now=L;
	for (int i=2;i<=n;i++)
	{
		t=read(); v=read();
		Now+=v;
		for (;Now>L;)
		{
			if (Now-l[Head]>=L)
			{
				Now-=l[Head];
				ans-=l[Head]*D[Head];
				Head++;
			}else
			{
				ans-=D[Head]*(Now-L);
				l[Head]-=Now-L;
				Now=L;
			}
		}
		l[++Tail]=v; D[Tail]=t; ans+=(db)t*v;
		for (;Head<Tail && D[Tail]<=D[Tail-1];Tail--)
		{
			ans-=D[Tail-1]*l[Tail-1]+D[Tail]*l[Tail];
			D[Tail-1]=(D[Tail-1]*l[Tail-1]+D[Tail]*l[Tail])/(l[Tail]+l[Tail-1]);
			l[Tail-1]+=l[Tail];
			ans+=D[Tail-1]*l[Tail-1];
		}
		printf("%.10lf\n",ans/L);
	}
    return 0;
}