def merge_intervals(intervals):
if not intervals:
return []
sorted_intervals = sorted(intervals, key=lambda iv: (iv[0], iv[1]))
merged = [[sorted_intervals[0][0], sorted_intervals[0][1]]]
for start, end in sorted_intervals[1:]:
if start <= merged[-1][1]:
if end > merged[-1][1]:
merged[-1][1] = end
else:
merged.append([start, end])
return merged