def merge_ranges(ranges):
ranges = sorted(ranges, key=lambda x: x[0])
merged = []
for start, end in ranges:
if not merged or start > merged[-1][1]:
merged.append([start, end])
else:
merged[-1][1] = max(merged[-1][1], end)
return [tuple(r) for r in merged]
ranges = [(302, 447), (488, 489), (121, 234), (200, 421), (140, 354)]
print(merge_ranges(ranges))
'''
run:
[(121, 447), (488, 489)]
'''