def arrayManipulation(n, queries):
# Write your code here
plus, minus, values = [*zip(*queries)]
# plus, minus = deque(plus), deque(minus)
plus = sorted([*zip(plus, values)], key = lambda x: x[0])
minus = sorted([*zip(minus, values)], key = lambda x: x[0])
n = len(plus)
maximum = 0
current = 0
plus_ind = 0
minus_ind = 0
while minus_ind < n:
if plus_ind < n and plus[min(plus_ind,n-1)][0] <= minus[minus_ind][0]:
current += plus[plus_ind][1] # value added after plus[plus_ind]
plus_ind +=1
else: # value decreased after minus[minus_ind]
current -= minus[minus_ind][1]
minus_ind +=1
maximum = max(current, maximum)
return maximum