#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 500005
using namespace std;
int n,l;
struct point{
	double x,y;
	point(){}
	point(double x,double y):x(x),y(y){}
	friend point operator+(const point &a,const point &b)  {return point(a.x+b.x,a.y+b.y);}
	friend point operator-(const point &a,const point &b)  {return point(a.x-b.x,a.y-b.y);}
	friend double dot(const point &a,const point &b)  {return a.x*b.x+a.y*b.y;}
	friend double cross(const point &a,const point &b)  {return a.x*b.y-a.y*b.x;}
}p[N],Q[N];
int main(){
	int x,y,L=0,R=0;
	scanf("%d%d",&n,&l);
	point O=point(0,0);
	for(int i=1;i<=n;++i){
		scanf("%d%d",&y,&x);
		p[i]=point(O.x-x,O.y-(1.0*x*y)),O=p[i];
		while(L<R&&Q[L+1].x-p[i].x>=l)  L++;
		if(L!=R&&Q[L].x-p[i].x>l){
			double slope=(Q[L].y-Q[L+1].y)/(Q[L].x-Q[L+1].x);
			Q[L]=point(p[i].x+l,Q[L+1].y+(l-(Q[L+1].x-p[i].x))*slope);
		}
		while(L<R&&cross(Q[R]-p[i],Q[R-1]-p[i])>=0)  R--;
		Q[++R]=p[i];
		printf("%lf\n",(Q[L].y-p[i].y)/l);
	}
	return 0;
}