#include <bits/stdc++.h>
#define LL long long
#define lowbit(x) (x&-x)
#define ls(x) (x<<1)
#define rs(x) (x<<1|1)
#define INF 2147483647
namespace IO{
inline LL read(){
LL x=0,f=1;char ch=getchar();
for (;!isdigit(ch);ch=getchar())if (ch=='-')f=-1;
for (;isdigit(ch);ch=getchar())x=(x<<3)+(x<<1)+(ch^48);
return x*f;
}
inline void write(LL x,char c='\n'){
if (x){
if (x<0)x=-x,putchar('-');
char a[30];short l;
for (l=0;x;x/=10)a[l++]=x%10^48;
for (l--;l>=0;l--)putchar(a[l]);
}
else putchar('0');putchar(c);
}
}
using namespace IO;
using namespace std;
const int N = 50;
struct node{
int x,y;
string name;
}a[10010];
bool vis[N][N];
int n,m,k,tot;
int main(){
n=read(),m=read(),k=read();
for (int i=1;i<=k;i++){
int opt=read();
string name;
if (opt==1){
int x=read(),y=read();cin>>name;
if (!vis[x][y]){
a[++tot].x=x,a[tot].y=y,a[tot].name=name;
vis[x][y]=1;
}
else{
if (y==m)y=1,x++;
else y++;
while (vis[x][y]&&x<=n){
y++;
if (y-1==m)y=1,x++;
}
if (x<=n){
a[++tot].x=x,a[tot].y=y,a[tot].name=name;
vis[x][y]=1;
}
}
}
else{
bool flag=1;cin>>name;
for (int j=1;j<=tot;j++)
if (a[j].name==name){
printf("%d %d\n",a[j].x,a[j].y);
flag=vis[a[j].x][a[j].y]=0;
a[j].x=-1,a[j].y=-1,a[j].name="";
break;
}
if (flag)puts("-1 -1\n");
}
}
return 0;
}
样例过了,但测试点 1 显示 UKE