#include <bits/stdc++.h>
using namespace std;
using lli = long long;
void solve() {
int n; cin >> n;
vector <int> x(n), rad(n);
for (int i = 0; i < n; ++i) {
cin >> x[i] >> rad[i];
}
vector <double> y(n);
auto calc = [&](int i, int j) -> double {
double l = 0, r = rad[i];
double dx = x[i] - x[j];
for (int iter = 0; iter < 64; ++iter) {
double m = (l + r) / 2;
double dy = (m - y[j]);
if (sqrt(dx * dx + dy * dy) - y[j] >= m)
l = m;
else
r = m;
}
return l;
};
stack <int> st;
for (int i = 0; i < n; ++i) {
while (!st.empty() && calc(i, st.top()) >= y[st.top()]) st.pop();
if (st.empty()) {
y[i] = rad[i];
} else {
y[i] = calc(i, st.top());
}
st.push(i);
}
cout << setprecision(3) << fixed;
for (auto x: y) {
cout << x << '\n';
}
cout << '\n';
}
int main() {
std::cin.tie(0)->sync_with_stdio(0);
#ifdef LOCAL
auto begin = std::chrono::high_resolution_clock::now();
#endif
int tt = 1;
while (tt--) {
solve();
}
#ifdef LOCAL
auto end = std::chrono::high_resolution_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin);
std::cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\n";
#endif
return 0;
}