//written by syzs
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+25;
long long l,r,tott,tem[N],vol[N],n,L,sum;
struct dsa{
	long long v;
	double t;
} a[N];
int main(){
	cin>>n>>L;
	for(int i=1;i<=n;i++) scanf("%lld%lld",&tem[i],&vol[i]);
	for(int i=1;i<=n;i++){
		while(sum+vol[i]>L){//当水溢出时，优先把单调队列的前几份水排空 
	        int rea=min(sum+vol[i]-L,a[l].v);
	        a[l].v-=rea;
	        sum-=rea;
	        tott-=rea*a[l].t;
	        if(!a[l].v) l++;
		}
		sum+=vol[i];
		tott+=vol[i]*tem[i];
		a[++r].v=vol[i];
		a[r].t=tem[i];
		while(l<r&&a[r].t<a[r-1].t){//考虑混合 
			a[r-1].t=(a[r].t*a[r].v+a[r-1].t*a[r-1].v)/(a[r-1].v+a[r].v);
			a[r-1].v=a[r-1].v+a[r].v;
			r--;
		}
		printf("%.10lf\n",(double)tott/L);
	}
}