#include <bits/stdc++.h>
using namespace std;
struct data {
  double ti, vi;
};
long long int gcd(long long int r0, long long int r1) {
  if (r0 == 0 || r1 == 0) return 1;
  if (r0 < r1) return gcd(r1, r0);
  if (r0 % r1 == 0) return r1;
  return gcd(r1, r0 % r1);
}
int t, n;
double a, d;
int ni() {
  int temp;
  scanf("%d", &temp);
  return temp;
}
long long int nl() {
  long long int temp;
  scanf("%lld", &temp);
  return temp;
}
long long unsigned int nlu() {
  long long unsigned int temp;
  scanf("%llu", &temp);
  return temp;
}
float nf() {
  float temp;
  scanf("%f", &temp);
  return temp;
}
double nd() {
  double temp;
  scanf("%lf", &temp);
  return temp;
}
data b[100000];
double last;
void see(int at) {
  double time = (b[at].vi / a);
  double dist = a * time * time / 2;
  if (dist > d) {
    time = sqrt(2 * d / a);
  } else {
    time += ((d - dist) / b[at].vi);
  }
  if (last < time + b[at].ti) {
    last = time + b[at].ti;
  }
}
int main() {
  cin >> n >> a >> d;
  for (int i = 0; i < n; i++) {
    cin >> b[i].ti >> b[i].vi;
  }
  last = 0;
  for (int i = 0; i < n; i++) {
    see(i);
    printf("%.5lf\n", last);
  }
  return 0;
}
