def merge_intervals(intervals):
if not intervals:
return []
sorted_intervals = sorted(intervals, key=lambda x: x[0])
merged = []
for interval in sorted_intervals:
if not merged or interval[0] > merged[-1][1]:
merged.append(list(interval))
else:
merged[-1][1] = max(merged[-1][1], interval[1])
return merged