Write a fully executable program to solve a given algorithmic problem, handling all corner cases.
Implement merge_intervals(intervals). The input is a list of closed integer intervals [start, end]; return a new list with every overlapping interval merged. Intervals that only touch, such as [1, 2] and [3, 4], remain separate. Return the result sorted by start value.
def merge_intervals(intervals):