#include <bits/stdc++.h>
template <class T>
typename T::value_type arr_sum(const T& v, int n) {
  typename T::value_type sum = 0;
  for (int i = 0; i < n; ++i) sum += v[i];
  return sum;
}
template <class T>
long long arr_count(const T& v, int n, int t) {
  long long count = 0;
  for (int i = 0; i < n; ++i) count += (v[i] == t);
  return count;
}
template <class T>
typename T::value_type arr_maxi(const T& v, int n) {
  typename T::value_type maxi = 0;
  for (int i = 1; i < n; ++i)
    if (v[maxi] < v[i]) maxi = i;
  return maxi;
}
template <class T>
typename T::value_type arr_mini(const T& v, int n) {
  typename T::value_type mini = 0;
  for (int i = 1; i < n; ++i)
    if (v[mini] > v[i]) mini = i;
  return mini;
}
template <class T>
typename T::value_type arr_max(const T& v, int n) {
  typename T::value_type max = v[0];
  for (int i = 1; i < n; ++i)
    if (max < v[i]) max = v[i];
  return max;
}
template <class T>
typename T::value_type arr_min(const T& v, int n) {
  typename T::value_type min = v[0];
  for (int i = 1; i < n; ++i)
    if (min > v[i]) min = v[i];
  return min;
}
using namespace std;
int main() {
  int n, a, d;
  cin >> n >> a >> d;
  vector<long double> v;
  for (int i = 0; i < n; ++i) {
    int t, v1;
    cin >> t >> v1;
    long double t1 = min((long double)v1 / a, sqrt((long double)2 * d / a));
    long double t2 = ((long double)d - a * t1 * t1 / 2) / v1 + t1 + t;
    v.push_back(t2);
  }
  cout << fixed << setprecision(10) << v[0] << endl;
  for (int i = 1; i < n; ++i) {
    v[i] = max(v[i], v[i - 1]);
    cout << fixed << setprecision(10) << v[i] << endl;
  }
}
