#include <bits/stdc++.h>
#define FOR(i, a, b) for (int i = a; i <= b; ++i)
using namespace std;
const int N = 150005;
int sub, t, n, m, q;
vector<pair<int,int>> person[N];
vector<int> poisen[N];
int last[N];
vector<int> gay;
vector<vector<int>> S;
bool cmp(const vector<int> &a, const vector<int> &b) {
return a.size() < b.size();
}
void solve() {
cin >> n >> m >> q;
FOR(i,1,n) { person[i].clear(); last[i]=0; }
FOR(i,1,m) poisen[i].clear();
gay.clear(); S.clear();
FOR(i,1,q) {
char type; int p, d, t;
cin >> type >> p;
if(type=='+') {
cin >> d >> t;
person[p].push_back({d,t});
poisen[d].push_back(p);
} else {
cin >> t;
last[p] = t;
}
}
FOR(i,1,m) {
sort(poisen[i].begin(), poisen[i].end());
poisen[i].erase(unique(poisen[i].begin(), poisen[i].end()), poisen[i].end());
}
FOR(i,1,n) if(last[i]) gay.push_back(i);
if(gay.empty()) {
int ans=0;
FOR(i,1,m) ans = max(ans, (int)poisen[i].size());
cout << ans << ' ';
return;
}
bool ok = true;
for(int x : gay) {
vector<int> tmp;
for(auto [d,t] : person[x]) if(t < last[x]) tmp.push_back(d);
if(tmp.empty()) ok = false;
sort(tmp.begin(), tmp.end());
tmp.erase(unique(tmp.begin(), tmp.end()), tmp.end());
S.push_back(tmp);
}
if(!ok) {
cout << "-1 ";
return;
}
sort(S.begin(), S.end(), cmp);
set<int> cand;
for(int x : S[0]) cand.insert(x);
for(int i=1;i<S.size();i++){
set<int> nxt;
for(int x : S[i]) if(cand.count(x)) nxt.insert(x);
swap(nxt,cand);
if(cand.empty()) {
cout << "-1 ";
return;
}
}
int ans = 0;
for(int x : cand) ans = max(ans, (int)poisen[x].size());
cout << ans << ' ';
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if(fopen("diduduadi.inp","r")){
freopen("diduduadi.inp","r",stdin);
freopen("diduduadi.out","w",stdout);
}
cin >> sub >> t;
while(t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvciAoaW50IGkgPSBhOyBpIDw9IGI7ICsraSkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBOID0gMTUwMDA1OwoKaW50IHN1YiwgdCwgbiwgbSwgcTsKdmVjdG9yPHBhaXI8aW50LGludD4+IHBlcnNvbltOXTsgCnZlY3RvcjxpbnQ+IHBvaXNlbltOXTsgICAgICAgICAgIAppbnQgbGFzdFtOXTsgICAgICAgICAgICAgICAgICAgICAgCnZlY3RvcjxpbnQ+IGdheTsgICAgICAgICAgICAgICAgIAp2ZWN0b3I8dmVjdG9yPGludD4+IFM7ICAgICAgICAgIAoKYm9vbCBjbXAoY29uc3QgdmVjdG9yPGludD4gJmEsIGNvbnN0IHZlY3RvcjxpbnQ+ICZiKSB7CiAgICByZXR1cm4gYS5zaXplKCkgPCBiLnNpemUoKTsKfQoKdm9pZCBzb2x2ZSgpIHsKICAgIGNpbiA+PiBuID4+IG0gPj4gcTsKICAgIEZPUihpLDEsbikgeyBwZXJzb25baV0uY2xlYXIoKTsgbGFzdFtpXT0wOyB9CiAgICBGT1IoaSwxLG0pIHBvaXNlbltpXS5jbGVhcigpOwogICAgZ2F5LmNsZWFyKCk7IFMuY2xlYXIoKTsKCiAgICBGT1IoaSwxLHEpIHsKICAgICAgICBjaGFyIHR5cGU7IGludCBwLCBkLCB0OwogICAgICAgIGNpbiA+PiB0eXBlID4+IHA7CiAgICAgICAgaWYodHlwZT09JysnKSB7CiAgICAgICAgICAgIGNpbiA+PiBkID4+IHQ7CiAgICAgICAgICAgIHBlcnNvbltwXS5wdXNoX2JhY2soe2QsdH0pOwogICAgICAgICAgICBwb2lzZW5bZF0ucHVzaF9iYWNrKHApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNpbiA+PiB0OwogICAgICAgICAgICBsYXN0W3BdID0gdDsKICAgICAgICB9CiAgICB9CgogICAgRk9SKGksMSxtKSB7CiAgICAgICAgc29ydChwb2lzZW5baV0uYmVnaW4oKSwgcG9pc2VuW2ldLmVuZCgpKTsKICAgICAgICBwb2lzZW5baV0uZXJhc2UodW5pcXVlKHBvaXNlbltpXS5iZWdpbigpLCBwb2lzZW5baV0uZW5kKCkpLCBwb2lzZW5baV0uZW5kKCkpOwogICAgfQoKICAgIEZPUihpLDEsbikgaWYobGFzdFtpXSkgZ2F5LnB1c2hfYmFjayhpKTsKCiAgICBpZihnYXkuZW1wdHkoKSkgewogICAgICAgIGludCBhbnM9MDsKICAgICAgICBGT1IoaSwxLG0pIGFucyA9IG1heChhbnMsIChpbnQpcG9pc2VuW2ldLnNpemUoKSk7CiAgICAgICAgY291dCA8PCBhbnMgPDwgJyAnOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBib29sIG9rID0gdHJ1ZTsKICAgIGZvcihpbnQgeCA6IGdheSkgewogICAgICAgIHZlY3RvcjxpbnQ+IHRtcDsKICAgICAgICBmb3IoYXV0byBbZCx0XSA6IHBlcnNvblt4XSkgaWYodCA8IGxhc3RbeF0pIHRtcC5wdXNoX2JhY2soZCk7CiAgICAgICAgaWYodG1wLmVtcHR5KCkpIG9rID0gZmFsc2U7CiAgICAgICAgc29ydCh0bXAuYmVnaW4oKSwgdG1wLmVuZCgpKTsKICAgICAgICB0bXAuZXJhc2UodW5pcXVlKHRtcC5iZWdpbigpLCB0bXAuZW5kKCkpLCB0bXAuZW5kKCkpOwogICAgICAgIFMucHVzaF9iYWNrKHRtcCk7CiAgICB9CgogICAgaWYoIW9rKSB7CiAgICAgICAgY291dCA8PCAiLTEgIjsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc29ydChTLmJlZ2luKCksIFMuZW5kKCksIGNtcCk7CgogICAgc2V0PGludD4gY2FuZDsKICAgIGZvcihpbnQgeCA6IFNbMF0pIGNhbmQuaW5zZXJ0KHgpOwogICAgZm9yKGludCBpPTE7aTxTLnNpemUoKTtpKyspewogICAgICAgIHNldDxpbnQ+IG54dDsKICAgICAgICBmb3IoaW50IHggOiBTW2ldKSBpZihjYW5kLmNvdW50KHgpKSBueHQuaW5zZXJ0KHgpOwogICAgICAgIHN3YXAobnh0LGNhbmQpOwogICAgICAgIGlmKGNhbmQuZW1wdHkoKSkgewogICAgICAgICAgICBjb3V0IDw8ICItMSAiOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGludCBhbnMgPSAwOwogICAgZm9yKGludCB4IDogY2FuZCkgYW5zID0gbWF4KGFucywgKGludClwb2lzZW5beF0uc2l6ZSgpKTsKICAgIGNvdXQgPDwgYW5zIDw8ICcgJzsKfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgaWYoZm9wZW4oImRpZHVkdWFkaS5pbnAiLCJyIikpewogICAgICAgIGZyZW9wZW4oImRpZHVkdWFkaS5pbnAiLCJyIixzdGRpbik7CiAgICAgICAgZnJlb3BlbigiZGlkdWR1YWRpLm91dCIsInciLHN0ZG91dCk7CiAgICB9CgogICAgY2luID4+IHN1YiA+PiB0OwogICAgd2hpbGUodC0tKSBzb2x2ZSgpOwogICAgCiAgICByZXR1cm4gMDsKfQ==