#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;

typedef long long s64;
typedef double r32;

inline int getint()
{
	static char c;
	while ((c = getchar()) < '0' || c > '9');

	int res = c - '0';
	while ((c = getchar()) >= '0' && c <= '9')
		res = res * 10 + c - '0';
	return res;
}

const int MaxN = 500000;

struct item
{
	r32 t;
	int v;
	item() {}
	item(const r32 &_t, const int &_v)
		: t(_t), v(_v) {}

	inline r32 calc() const
	{
		return t * v;
	}
};

int n, l;

int q_l = 1, q_r = 0;
item q[MaxN + 1];

int main()
{
	cin >> n >> l;

	r32 sum = 0;
	for (int i = 0; i < n; ++i)
	{
		r32 t = getint();
		int v = getint();

		int cur = v;
		while (q_l <= q_r && cur >= q[q_l].v)
			cur -= q[q_l].v, sum -= q[q_l++].calc();

		sum += v * t;
		if (q_l <= q_r && cur)
		{
			sum -= q[q_l].calc();
			q[q_l].v -= cur;
			sum += q[q_l].calc();
		}

		while (q_l <= q_r && q[q_r].t > t)
		{
			t = (v * t + q[q_r].calc()) / (v + q[q_r].v);
			v += q[q_r--].v;
		}

		q[++q_r] = item(t, v);

		printf("%.12f\n", sum / l);
	}

	return 0;
}