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, b_): for i in range(to): if b_ <= i: b[i+1] = y[i]*b[i]+1 a[i+1] = x[i]*b[i]**2 + a[i] return a[to] flag = 0 for i in range(q): query = input().split() if query[0] == "a": '''print(a) print(x) print(b) print(y)''' print(refresh(int(query[1]), flag)%1000000007) flag = max(int(query[1]), flag) elif query[0] == "x": x[int(query[1])] = int(query[2]) elif query[0] == "y": y[int(query[1])] = int(query[2]) flag = min(flag, int(query[1]))