#include <bits/stdc++.h>
using namespace std;

#define long int64_t
#define endl '\n'

#ifdef OFFLINE
	#define logan(...) logg(#__VA_ARGS__, __VA_ARGS__)
	template<class Arg>
	void logg(const char* name, Arg&& arg){ cerr << name << ": " << arg << '\n'; }
	template<class Arg, class ... Args>
	void logg(const char* name, Arg&& arg, Args&& ... args){
		char *next = (char*)name, *cand;
		int depth = 0;
		do{
			if(depth){ next = strchr(next+1, ')'); --depth; }
			else if((cand = strchr(next+1, '('))){ next = cand; ++depth; }
			else{ next = strchr(next+1, ','); }
		}while(depth);
		cerr.write(name, next-name) << ": " << arg << ",";
		logg(next+1, args...);
	}
	#define timeme 1.0*clock()/CLOCKS_PER_SEC
#else
	#define logan(...) {}
	#define timeme {}
#endif

double a[100'001];

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	cerr.tie(nullptr);

	int h, w, r, q;
	cin >> w >> h >> r >> q;

	for(int i = 0; i <= w; ++i){
		a[i] = (double)h;
	}

	for(;q--;){
		int cmd;
		cin >> cmd;
		--cmd;

		if(cmd){
			int x; cin >> x;
			cout << fixed << setprecision(20) << a[x] << endl;
		}else{
			int x, y;
			cin >> x >> y;

			for(int i = max(x-r, 0); i <= x+r; ++i){
				a[i] = min(a[i], y-sqrt(r*r-(x-i)*(x-i)));
			}
		}
	}

}