#include <bits/stdc++.h>
using namespace std;
double ans[100005];
double n, a, d;
double t[100005], v[100005];
int ht[100005];
double gett(double dis, double vlimit) {
  double t1 = vlimit / (a * 1.0);
  double dis1 = 0.5 * a * t1 * t1;
  if (dis1 > dis) {
    return sqrt(dis / (0.5 * a));
  } else {
    return t1 + (dis - dis1) / vlimit;
  }
}
double gets(double vlimit, double tlimit) {
  double t1 = vlimit / (a * 1.0);
  if (t1 > tlimit) {
    return 0.5 * a * tlimit * tlimit;
  } else {
    return 0.5 * a * t1 * t1 + (tlimit - t1) * vlimit;
  }
}
int main() {
  scanf("%lf%lf%lf", &n, &a, &d);
  for (int i = 0; i < n; ++i) scanf("%lf%lf", &t[i], &v[i]);
  ans[0] = t[0] + gett(d, v[0]);
  for (int i = 1; i < n; ++i) {
    ans[i] = max(ans[i - 1], t[i] + gett(d, v[i]));
  }
  for (int i = 0; i < n; ++i) printf("%.10lf\n", ans[i]);
}
