#include #include #define int long long #define inf 0x3f3f3f3f3f3f3f3f #define maxn 1234567 #define eps 1e-7 #define mod 1000000007 #define Mod 998244353 #define f(i,a,b) for(int i=a;i<=b;i++) #define r(i,a,b) for(int i=a;i>=b;i--) #define fx(i,a,b,x) for(int i=a;i<=b;i+=x) #define rx(i,a,b,x) for(int i=a;i>=b;i-=x) #define base 19260817 using namespace std; using namespace __gnu_cxx; using namespace __gnu_pbds; int T; int n,q,Hash[maxn]={1},x,L,R,k; mapmp; char op; void solve(){ scanf("%lld%lld",&n,&q); f(i,1,n)Hash[i]=Hash[i-1]*base; f(i,1,q){ cin>>op; if(op=='!'){ scanf("%lld%lld%lld",&L,&R,&k); x+=k*(Hash[R]-Hash[L]); } else printf("%lld\n",mp[x]); if(mp.count(x)==0)mp[x]=i; } } signed main(){ T=1; // scanf("%lld",&T); while(T--)solve(); return 0; }