# TLE想定のナイーブ import sys N, Q = map(int, sys.stdin.readline().split()) assert 1 <= N <= 100000 assert 1 <= Q <= 100000 ans = [] *A, = map(int, sys.stdin.readline().split()) for i in range(N): assert 0 <= A[i] <= 100000 for q in range(Q): t, *query = map(int, sys.stdin.readline().split()) assert t == 1 or t == 2 if t == 1: x, y = query assert 1 <= x <= N; assert 0 <= y <= 100000; x -= 1 A[x] = y; else: l, r, a, b = query assert 1 <= l <= r <= N assert 0 <= a <= 100000 assert 0 <= b <= 100000 l -= 1 ans.append(0) for i in range(l, r): ans[-1] += max(a, min(b, A[i])) sys.stdout.write("\n".join(map(str, ans))) sys.stdout.write("\n")