#include <bits/stdc++.h>
using namespace std;
const int INF = 1000 * 1000 * 1000 + 7;
const double EPS = 1e-9;
int bit_count(int first) {
  return first == 0 ? 0 : 1 + bit_count(first & (first - 1));
}
inline int low_bit(int first) { return first & -first; }
inline int sign(double first) {
  return first < -EPS ? -1 : first > EPS ? 1 : 0;
}
inline int sign(int first) { return (first > 0) - (first < 0); }
inline int getInt() {
  int a;
  return scanf("%d", &a) ? a : (fprintf(stderr, "trying to read\n"), -1);
}
inline double getDouble() {
  double a;
  return scanf("%lf", &a) ? a : (fprintf(stderr, "trying to read\n"), -1.0);
}
inline double myRand() {
  return ((double)rand() / RAND_MAX) + ((double)rand() / RAND_MAX / RAND_MAX);
}
void myCode() {
  int n = getInt();
  double a = getDouble(), d = getDouble();
  vector<double> ret;
  for (int i = (int)0; i < (int)n; ++i) {
    double t = getDouble(), v = getDouble(), ans;
    if (v * v / (2 * a) > d) {
      ans = t + sqrt(2 * d / a);
    } else {
      ans = t + v / a + (d - v * v / (2 * a)) / v;
    }
    if (i) ans = max(ans, ret.back());
    ret.push_back(ans);
    printf("%lf\n", ans);
  }
}
int main() {
  srand(time(NULL));
  myCode();
  return 0;
}
