#include <bits/stdc++.h>
using namespace std;
struct node {
  int t, v;
} pnt[100005];
int n, a, d;
double calu(int v, int t) {
  double at = (double)v / a + (1e-8);
  double dis = (double)a * at * at / 2;
  if (d >= dis)
    return (double)(d - dis) / v + t + at;
  else
    return sqrt(2 * (double)d / a) + t;
}
int main() {
  cin >> n >> a >> d;
  for (int i = 0; i < n; i++) cin >> pnt[i].t >> pnt[i].v;
  double pretime = calu(pnt[0].v, pnt[0].t);
  printf("%5lf\n", pretime);
  for (int i = 1; i < n; i++) {
    double time = calu(pnt[i].v, pnt[i].t);
    if (time < pretime)
      printf("%5lf\n", pretime);
    else
      printf("%5lf\n", time);
    pretime = max(time, pretime);
  }
  return 0;
}
