#include <bits/stdc++.h>
using namespace std;
double a, d;
struct node {
  double t;
  double v;
} bus[100005];
double T[100005];
int TT(int i) {
  node &aa = bus[i];
  double t = sqrt(2 * d / a);
  double tt = aa.v / a;
  if (t > tt) {
    t = aa.v / a + (d - (aa.v * aa.v / a / 2.0)) / aa.v;
  }
  T[i] = t + bus[i].t;
  return 0;
}
int main() {
  int n;
  cin >> n >> a >> d;
  for (int i = 0; i < n; ++i) {
    scanf("%lf%lf", &bus[i].t, &bus[i].v);
  }
  for (int i = 0; i < n; i++) {
    TT(i);
  }
  printf("%.10lf\n", T[0]);
  double t = T[0];
  for (int i = 1; i < n; ++i) {
    if (T[i] < t) {
      printf("%.10lf\n", t);
    } else {
      printf("%.10lf\n", T[i]);
      t = T[i];
    }
  }
  return 0;
}
