#include <bits/stdc++.h>
using namespace std;
template <class T>
T inline sqr(T x) {
  return x * x;
}
template <class T>
inline void relaxMin(T &a, T b) {
  a = min(a, b);
}
template <class T>
inline void relaxMax(T &a, T b) {
  a = max(a, b);
}
template <class T>
inline T sign(T x) {
  return x > 0 ? 1 : (x < 0 ? -1 : 0);
}
template <class T>
inline T myAbs(T a) {
  return a > 0 ? a : -a;
}
template <class T>
T iteratorK(T a, int k) {
  while (k--) a++;
  return a;
}
void err(const char *fmt, ...) {}
void Assert(bool f, const char *fmt = "", ...) {
  if (!f) {
    va_list list;
    va_start(list, fmt);
    err(fmt, list);
    exit(1);
  }
}
unsigned R() { return (rand() << 15) + rand(); }
double start = clock();
void TimeStamp() {
  fprintf(stderr, "time = %.2f\n", (clock() - start) / CLOCKS_PER_SEC);
  start = clock();
}
const int maxN = (int)1e5 + 10;
int n, a, d;
int main() {
  scanf("%d%d%d", &n, &a, &d);
  long double minT = 0;
  for (int i = 0; i < (int)(n); i++) {
    int t, v;
    scanf("%d%d", &t, &v);
    long double D, T, T0 = (long double)v / a;
    if ((D = 0.5 * T0 * T0 * a) >= d)
      T = sqrt((long double)2.0 * d / a);
    else
      T = T0 + (long double)(d - D) / v;
    T += t;
    minT = T = max(minT, T);
    printf("%.20f\n", (double)T);
  }
  return 0;
}
