#include<bits/stdc++.h>
using namespace std;

const int maxn = 500009;
struct point{
	double v, t;
} u, q[maxn];
int n, L, l = 1, r;
double X, Y;

int main(){
	scanf("%d%d", &n, &L);
	for (int i=1; i<=n; i++){
		scanf("%lf%lf", &u.t, &u.v);
		X += u.v; Y += u.v*u.t;
		while (L < X){
			if (X-L >= q[l].v){ Y -= q[l].v * q[l].t; X -= q[l++].v; }
			else { Y -= q[l].t*(X-L); q[l].v -= X-L; X = L; }
		}
		printf("%.8lf\n", Y/X);
		while (l <= r && q[r].t >= u.t){
			u.t = (q[r].t*q[r].v + u.t*u.v) / (q[r].v+u.v);
			u.v += q[r--].v;
		}
		q[++r] = u;
	}
	return 0;
}