#include <bits/stdc++.h>
using namespace std;
struct node {
  double t, mv;
} bus[100010];
double dis, a;
int n;
double ans[100010];
int main() {
  int i, j;
  double t, tmp;
  while (scanf("%d%lf%lf", &n, &a, &dis) != EOF) {
    for (i = 0; i < n; i++) {
      scanf("%lf%lf", &bus[i].t, &bus[i].mv);
    }
    for (i = 0; i < n; i++) {
      t = sqrt(2 * dis * 1.0 / a);
      if (a * t > bus[i].mv) {
        t = bus[i].mv * 1.0 / a;
        tmp = bus[i].mv * bus[i].mv * 1.0 / (2 * a);
        t += (dis - tmp) * 1.0 / bus[i].mv;
      }
      ans[i] = t + bus[i].t;
    }
    for (i = 1; i < n; i++) {
      if (ans[i] < ans[i - 1]) ans[i] = ans[i - 1];
    }
    for (i = 0; i < n; i++) {
      printf("%.10lf\n", ans[i]);
    }
  }
  return 0;
}
