MOD = 10**9 + 7 n = int(input()) q = int(input()) x = [0] * n y = [0] * n valid_b_up_to = 0 # Initially, only b[0] is valid b = [0] * (n + 1) b[0] = 1 valid_S_up_to = 0 # Initially, S[0] is valid (0) S = [0] * (n + 1) for _ in range(q): parts = input().split() if parts[0] == 'x': i = int(parts[1]) v = int(parts[2]) x[i] = v valid_S_up_to = min(valid_S_up_to, i) elif parts[0] == 'y': i = int(parts[1]) v = int(parts[2]) y[i] = v valid_b_up_to = min(valid_b_up_to, i) valid_S_up_to = 0 # Invalidate entire S array else: i = int(parts[1]) if i == 0: print(1) continue # Recompute b up to i-1 if necessary if valid_b_up_to < i - 1: for j in range(valid_b_up_to + 1, i): prev = j - 1 if prev < 0: b[j] = 1 else: b[j] = (y[prev] * b[prev] + 1) % MOD valid_b_up_to = i - 1 # Recompute S up to i if necessary if valid_S_up_to < i: for j in range(valid_S_up_to + 1, i + 1): if j == 0: S[j] = 0 else: prev_j = j - 1 term = (x[prev_j] * pow(b[prev_j], 2, MOD)) % MOD S[j] = (S[j - 1] + term) % MOD valid_S_up_to = i res = (S[i] + 1) % MOD print(res)