#include <bits/stdc++.h>
using std::cin;
using std::cos;
using std::cout;
using std::endl;
using std::make_pair;
using std::max;
using std::min;
using std::next_permutation;
using std::pair;
using std::priority_queue;
using std::queue;
using std::random_shuffle;
using std::set;
using std::sin;
using std::sort;
using std::sqrt;
using std::stack;
using std::string;
using std::stringstream;
using std::swap;
using std::vector;
const long double PI = 3.14159265358979323846;
int main() {
  int n, d, a;
  cin >> n >> a >> d;
  vector<double> time(n);
  int t, v;
  for (int i = 0; i < n; ++i) {
    scanf("\n%d %d", &t, &v);
    if ((long long)(v)*v > (long long)(2 * a) * d)
      time[i] = sqrt((double)(2 * d) / a) + t;
    else
      time[i] = (double)(d) / v + (double)(v) / (2 * a) + t;
  }
  double maxTime = 0.0;
  for (int i = 0; i < n; ++i) {
    maxTime = max(maxTime, time[i]);
    printf("%0.10f\n", maxTime);
  }
  return 0;
}
