#include <bits/stdc++.h>
using namespace std;
const int N = 500010;
typedef double db;
const db eps = 1e-8;
inline int judge(db x) {
  return x > -eps ? x > eps ? 1 : 0 : -1;
}
struct point {
  db x,y;
  point(db x_=0,db y_=0): x(x_), y(y_) {}
  db operator * (const point& a) const {
    return x * a.y - y * a.x;
  }
  point operator + (const point& a) const {
    return point(x + a.x, y + a.y);
  }
  point operator - (const point& a) const {
    return point(x - a.x, y - a.y);
  }
  void operator += (const point& a) {
    *this = *this + a;
  }
  void operator -= (const point& a) {
    *this = *this - a;
  }
} q[N];
int n,cap,t,v,l=1,r;
point cur,tmp;
int main() {
  scanf("%d%d",&n,&cap);
  scanf("%d%d",&t,&v);
  printf("%d.00000000\n",t);
  q[++r] = point(v,1.0 * t * v);
  cur += point(v,1.0 * t * v);
  for (int i = 2 ; i <= n ; ++ i) {
    scanf("%d%d",&t,&v);
    db a = v;
    while (judge(a - q[l].x) >= 0)
      a -= q[l].x, cur -= q[l++];
    cur -= q[l];
    q[l].y *= (q[l].x - a) / q[l].x;
    q[l].x -= a;
    cur += q[l];
    tmp = point(v,1.0 * t * v);
    while (l <= r && judge(q[r] * tmp) <= 0)
      tmp += q[r], cur -= q[r--];
    if (judge(tmp.x - cap) > 0) {
      tmp.y *= cap / tmp.x;
      tmp.x = cap;
    }
    q[++r] = tmp;
    cur += tmp;
    printf("%.8lf\n",cur.y / cur.x);
  }
  return 0;
}