#include <bits/stdc++.h>
using namespace std;
int main()
{
    int W,H,R,Q;
    double long najm=0, najv=0;
    bool grizao=false;
    cin>>W>>H>>R>>Q;
    int p[Q];
    int x[Q], y[Q];
    for (int i=1; i<=Q; i++)
    {
        cin>>p[i];
        if (p[i]==1)
            cin>>x[i]>>y[i];
        else
            cin>>x[i];
    }
    for (int i=1; i<=Q; i++)
    {
        if (p[i]==1)
        {
            najm=x[i], najv=y[i];
            break;
        }
    }
    int grizx[Q], grizy[Q], t=1;
    double long d, m[Q], s[Q];
    for (int i=1; i<=Q; i++)
    {
        if (p[i]==1)
        {
            grizx[t]=x[i], grizy[t]=y[i];
            grizao=true;
            m[t]=grizx[t]-sqrt(R*R-(y[i]-H)*(y[i]-H));
            s[t]=m[t]+sqrt(R*R-(y[i]-H)*(y[i]-H));
            if (m[t]<najm)
                najm=m[t];
            if (najv<s[t])
                najv=s[t];
            t++;
        }
        else
        {
            if (grizao==false)
                d=H;
            else
                {
                    if (x[i]<=najm || x[i]>=najv)
                        d=H;
                    else
                    {
                    for (int j=1; j<t; j++)
                    {
                        if (x[i]>=m[j]&&x[i]<=s[j])
                            {
                                if (x[i]==grizx[j])
                                    d=grizy[j]-R;
                                else
                                d=grizy[j]-sqrt(R*R-((grizx[j]-x[i])*(grizx[j]-x[i])));
                                break;
                            }
                    }
                    }
                }
            cout << fixed << setprecision(9) << showpoint << d << endl;
        }
    }
}