#include <bits/stdc++.h>
using namespace std;
const int MAX_SIZE=1e7+10;
int n,m,k;
struct Node
{
int num;
int pre;//0 不被占用 1 被占用
int owner;
}N[MAX_SIZE];
int main()
{
std::ios::sync_with_stdio(false);
cin>>n>>m>>k;
for(int i=1;i<=m;i++)
{
N[i].num=0;
N[i].owner=0;
}
while(k--)
{
int type;
cin>>type;
if(type==0)
{
int id,l,r,x;
cin>>id>>l>>r>>x;
int i;
int res=r;
for(i=l;i<=r;i++)
{
if(N[i].owner==0 || N[i].owner==id)
{
N[i].num=x;
N[i].owner=id;
}
else
{
res=i-1;
break;
}
}
if(i==l)
cout<<-1<<endl;
else
cout<<res<<endl;
}
if(type==1)
{
int id,l,r;
cin>>id>>l>>r;
int flag=0;
for(int i=l;i<=r;i++)
{
if(N[i].owner!=id)
{
flag=1;
break;
}
}
if(flag==0)
{
for(int i=l;i<=r;i++)
{
N[i].owner=0;
N[i].pre=id;
}
cout<<"OK"<<endl;
}
else
{
cout<<"FAIL"<<endl;
}
}
if(type==2)
{
int id,l,r;
cin>>id>>l>>r;
int flag=0;
for(int i=l;i<=r;i++)
{
if(N[i].owner!=0 || N[i].pre!=id)
{
flag=1;
break;
}
}
if(flag==0)
{
for(int i=l;i<=r;i++)
{
N[i].owner=id;
}
cout<<"OK"<<endl;
}
else
{
cout<<"FAIL"<<endl;
}
}
if(type==3)
{
int p;
cin>>p;
if(N[p].owner==0)
{
cout<<0<<" "<<0<<endl;
}
else
{
cout<<N[p].owner<<" "<<N[p].num<<endl;
}
}
}
return 0;
}