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