n = int(input()) q = int(input()) x = [0]*(n+1) y = [0]*(n+1) a = [1]*(n+1) b = [1]*(n+1) def refresh(to, a_, b_): for i in range(to): if b_ <= i: b[i+1] = y[i]*b[i]+1 if a_ <= i or b_ <= i: a[i+1] = x[i]*b[i]**2 + a[i] return a[to] a_ = 0 b_ = 0 for i in range(q): query = input().split() if query[0] == "a": '''print(a) print(x) print(b) print(y)''' n = int(query[1]) print(refresh(n, a_, b_)%1000000007) a_, b_ = (max(n, a_), max(n, b_)) elif query[0] == "x": x[int(query[1])] = int(query[2]) a_ = min(a_, int(query[1])) elif query[0] == "y": y[int(query[1])] = int(query[2]) b_ = min(b_, int(query[1]))