#include <bits/stdc++.h>
using namespace std;
typedef char* cstr;
const int oo = (~0u) >> 1;
const long long int ooll = (~0ull) >> 1;
const double inf = 1e100;
const double eps = 1e-8;
const double pi = acos(-1.0);
template <typename type>
inline bool cmax(type& a, const type& b) {
  return a < b ? a = b, true : false;
}
template <typename type>
inline bool cmin(type& a, const type& b) {
  return a > b ? a = b, true : false;
}
template <typename type>
inline int sgn(const type& first) {
  return (first > 0) - (first < 0);
}
template <>
inline int sgn(const double& first) {
  return (first > +eps) - (first < -eps);
}
template <typename type>
void inc(vector<type>& st, int first, type inc) {
  while (first < ((int)(st).size()))
    st[first] += inc, first += (first) & (-(first));
}
template <typename type>
type sum(vector<type>& st, int first) {
  type s = 0;
  while (first > 0) s += st[first], first -= (first) & (-(first));
  return s;
}
int main() {
  int n;
  double a, d;
  cin >> n >> a >> d;
  double t1 = sqrt(d / (0.5 * a));
  vector<double> t(n), v(n), ans(n);
  for (int i = 0; i < (n); ++i) {
    cin >> t[i] >> v[i];
    if (t1 * a > v[i]) {
      double t2 = v[i] / a;
      double d1 = d - 0.5 * a * (t2) * (t2);
      double t3 = d1 / v[i];
      ans[i] = t[i] + t2 + t3;
    } else
      ans[i] = t[i] + t1;
  }
  for (int i = (1); i <= (n - 1); ++i) cmax(ans[i], ans[i - 1]);
  for (int i = 0; i < (n); ++i) printf("%.50f\n", ans[i]);
}
