1class Solution:2def totalStrength(self, stp: List[int]) -> int:3st = []4n = len(stp)5m1 = defaultdict(lambda: -1)6ps = [0]7for i in range(n):8while st and stp[st[-1]] >= stp[i]:9st.pop()10if st:11m1[i] = st[-1]12st.append(i)13ps.append(ps[-1] + stp[i])14pss = [0]15for i in ps:16pss.append(pss[-1] + i)17st = []18m2 = defaultdict(lambda: n)19for i in range(n - 1, -1, -1):20while st and stp[st[-1]] > stp[i]:21st.pop()22if st:23m2[i] = st[-1]24st.append(i)2526ans = 027mod = 10**9 + 728for i in range(n):29left = m1[i] + 130right = m2[i]31p1 = (i + 1 - left) * (pss[right + 1] - pss[i + 1])32p2 = (right - i) * (pss[i + 1] - pss[left])33ans = (ans + stp[i] * (p1 - p2)) % mod34return ans