#include #include #include using namespace std; typedef long long LL; const int N = 1000010; int n, q, idx; map cf; // 存非零 map mm; string ToStr() { string ret = ""; for (auto [pos, cnt] : cf) { if (cnt == 0) continue; ret += to_string(pos); ret += ','; ret += to_string(cnt); ret += ';'; } return ret; } int main() { // freopen("seq.in", "r", stdin); // freopen("seq.out", "w", stdout); scanf("%d%d", &n, &q); string ss = ToStr(); if (!mm.count(ss)) mm[ss] = 0; for (int i = 1; i <= q; ++i) { char op; scanf(" %c", &op); if (op == '!') { int l, r, k; scanf("%d%d%d", &l, &r, &k); cf[l] += k, cf[r] -= k; if (cf[l] == 0) cf.erase(l); if (cf[r] == 0) cf.erase(r); string s = ToStr(); if (!mm.count(s)) mm[s] = i; } else { string s = ToStr(); printf("%d\n", mm[s]); } } return 0; }