#include <iostream>
using namespace std;
#pragma warning (disable: 4996)

const int BASE = (1 << 20);

long long N, L;
long long T[1 << 19], V[1 << 19];

int cl, cr;
long double X[1 << 21], Y[1 << 21];
long double offset_x, offset_y;

int main() {
	scanf("%lld%lld", &N, &L);
	for (int i = 1; i <= N; i++) scanf("%lld%lld", &T[i], &V[i]);

	cl = BASE; cr = BASE;
	X[cr - 1] = 0; Y[cr - 1] = 0; cr++;
	X[cr - 1] = L; Y[cr - 1] = 0; cr++;

	for (int i = 1; i <= N; i++) {
		offset_x += V[i];
		offset_y += T[i] * V[i];

		while (true) {
			if (cr - cl >= 2 && X[cr - 2] + offset_x > 1.0L * L) { X[cr - 1] = 0; Y[cr - 1] = 0; cr--; }
			else if (X[cr - 1] + offset_x > L) {
				long double E = Y[cr - 2] + 1.0L * (Y[cr - 1] - Y[cr - 2]) * ((L - offset_x) - X[cr - 2]) / (X[cr - 1] - X[cr - 2]);
				X[cr - 1] = L - offset_x;
				Y[cr - 1] = E;
				break;
			}
			else break;
		}

		while (cr - cl >= 2) {
			long double a1 = (Y[cl] + offset_y) / (X[cl] + offset_x);
			long double a2 = (Y[cl + 1] + offset_y) / (X[cl + 1] + offset_x);
			if (a1 <= a2) { X[cl] = 0; Y[cl] = 0; cl++; }
			else break;
		}

		cl--;
		X[cl] = -offset_x;
		Y[cl] = -offset_y;
		printf("%.12Lf\n", 1.0L * (Y[cr - 1] + offset_y) / L);
	}
	return 0;
}