#include <iostream>
#include <vector>
#include <math.h>
#include <iomanip>
using namespace std;

struct krug
{
	long double x0;
	long double y0;
};

int main()
{
	long double w, h, r, q;
	vector<krug> lista_zalogaja;
	cin >> w >> h >> r >> q;
	for (int i = 0; i < q; i++)
	{
		int z;
		cin >> z;
		if (z == 1)
		{
			krug novi_ugriz;
			long double x0;
			long double y0;
			cin >> x0 >> y0;
			novi_ugriz.x0 = x0;
			novi_ugriz.y0 = y0;
			lista_zalogaja.push_back(novi_ugriz);
		}
		else
		{
			long double n;
			cin >> n;
			if (lista_zalogaja.size() == 0)
			{
				cout << fixed << showpoint << setprecision(8) << h << endl;
			}
			else
			{
				long double min_deo = h;
				for (int j = 0; j < lista_zalogaja.size(); j++)
				{
					long double y = lista_zalogaja[j].y0 - sqrtl(-(n*n) + 2 * lista_zalogaja[j].x0*n - (lista_zalogaja[j].x0*lista_zalogaja[j].x0) + r * r);
					if (y < 0)
						y = 0;
					else if (y > h)
						y = h;
					if (y < min_deo)
						min_deo = y;
				}
				cout << fixed << showpoint << setprecision(8) << min_deo << endl;
			}
		}
	}
}