#include <iostream>
#include <stdlib.h>
#include <math.h>

using namespace std;

int main()
{
    int w, h, r, q;
    cin >> w >> h >> r >> q;
    
    double val[q];
    float odgrizeni_deo[w + 1][3];
    for(int i = 0; i <= w; i++){
        odgrizeni_deo[i][0] = 0;
        odgrizeni_deo[i][1] = 0;
        odgrizeni_deo[i][2] = h;
        val[i] = 0.0;
    }
    
    int broj_ispisivanja = 0;
    
    for(int i = 0; i < q; i++){
        int pokazivac;
        cin >> pokazivac;
        if (pokazivac == 1){
            int x, y;
            cin >> x >> y;
            for (int j = 0; j <= w; j++){
                if ((x - r < j) || (x + r > j)){
                    float merenje = sqrt(r * r - (j - x) * (j - x)) * 2;
                    if(merenje > odgrizeni_deo[j][0]){
                        odgrizeni_deo[j][0] = merenje;
                    }
                    float gornja_crta = y + merenje / 2;
                    float donja_crta = y - merenje / 2;
                    if (gornja_crta > odgrizeni_deo[j][1]){
                        odgrizeni_deo[j][1] = gornja_crta;
                    }
                    if (donja_crta < odgrizeni_deo[j][2]){
                        odgrizeni_deo[j][2] = donja_crta;
                    }
                    if (odgrizeni_deo[j][1] > h){
                        odgrizeni_deo[j][1] = h;
                    }
                    if (odgrizeni_deo[j][2] < 0){
                        odgrizeni_deo[j][2] = 0;
                    }
                }
            }
        } else {
            int x;
            cin >> x;
            if ((odgrizeni_deo[x][1] != 0) && (odgrizeni_deo[x][2] != h)){
                val[broj_ispisivanja] = h - (odgrizeni_deo[x][1] - odgrizeni_deo[x][2]);
                broj_ispisivanja++;
            } else {
                val[broj_ispisivanja] = h;
                broj_ispisivanja++;
            }
        }
    }
    
    for(int i = 0; i < broj_ispisivanja; i++){
        
        cout << val[i] << endl;
        
    }
}