def merge_ranges(ranges):

    ranges.sort(key=lambda x: x[0])
    
    merged = []
    
    for current_range in ranges:
     
        if not merged or merged[-1][1] < current_range[0]:
            merged.append(current_range)
        else:
            
            merged[-1][1] = max(merged[-1][1], current_range[1])
    
    return merged

ranges = [[1, 3], [2, 6], [8, 10],[15 ,18]]
print(merge_ranges(ranges))  