#include <bits/stdc++.h>
struct Car {
  double v1;
  double time;
  double need;
} car[100005];
double qiugen(double a, double b, double c) {
  return (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
}
int main() {
  double n, a, l;
  scanf("%lf %lf %lf", &n, &a, &l);
  for (int i = 1; i <= n; i++) {
    scanf("%lf %lf", &car[i].time, &car[i].v1);
    if (car[i].v1 * car[i].v1 / (2 * a) >= l) {
      car[i].need = car[i].time + sqrt(2 * l / a);
    } else {
      car[i].need = car[i].time + car[i].v1 / a +
                    (l - car[i].v1 * car[i].v1 / (2 * a)) / car[i].v1;
    }
    if (i != 1) {
      if (car[i].need <= car[i - 1].need) {
        car[i].need = car[i - 1].need;
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    printf("%.10lf\n", car[i].need);
  }
}
