#include <bits/stdc++.h>
using namespace std;
long long nChooseR(int n, int k);
int gcd(unsigned long long a, unsigned long long b);
void strCountsort(string& arr);
void intCountSort(vector<int>& arr);
long long n, m, a, r, l, x, y, d;
long long ans;
int primes[100005];
bool isPrime(int h) {
  for (int i = 0; primes[i] * primes[i] <= h; i++)
    if (h % primes[i] == 0) return 0;
  return 1;
}
double power(double a, long long b) {
  if (b == 1) return a;
  if (b == 0) return 1.0;
  double h = power(a, b / 2);
  if (b % 2 == 0) return h * h;
  return a * h * h;
}
int main() {
  cout.precision(12);
  string s;
  cin >> n >> a >> d;
  double o = 0.0;
  long t, v;
  while (n--) {
    scanf("%d %d", &t, &v);
    double time = min((double)v / a, sqrt(d * 2.0 / a)),
           dis = d - (time * time / 2.0 * a);
    o = max(o, t + time + dis / v);
    cout << fixed << o << endl;
  }
  return 0;
}
long long nChooseR(int n, int k) {
  if (k > n) return 0;
  if (k * 2 > n) k = n - k;
  if (k == 0) return 1;
  long long result = n;
  for (int i = 2; i <= k; ++i) {
    result *= (n - i + 1);
    result /= i;
  }
  return result;
}
int gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
void strCountsort(string& arr) {
  string output = arr;
  int max = *max_element(arr.begin(), arr.end());
  int min = *min_element(arr.begin(), arr.end());
  int range = max - min + 1;
  vector<int> count(range);
  int n = arr.size();
  for (int i = 0; i < n; i++) count[arr[i] - min]++;
  n = count.size();
  for (int i = 1; i < n; i++) count[i] += count[i - 1];
  n = arr.size();
  for (int i = n - 1; i >= 0; i--) {
    output[count[arr[i] - min] - 1] = arr[i];
    count[arr[i] - min]--;
  }
  arr = output;
}
void intCountSort(vector<int>& arr) {
  int max = *max_element(arr.begin(), arr.end());
  int min = *min_element(arr.begin(), arr.end());
  int range = max - min + 1;
  vector<int> count(range), output(arr.size());
  int n = arr.size();
  for (int i = 0; i < n; i++) count[arr[i] - min]++;
  n = count.size();
  for (int i = 1; i < n; i++) count[i] += count[i - 1];
  n = arr.size();
  for (int i = n - 1; i >= 0; i--) {
    output[count[arr[i] - min] - 1] = arr[i];
    count[arr[i] - min]--;
  }
  for (int i = 0; i < n; i++) arr[i] = output[i];
}
