#54929: 請問有人可以告訴我錯在哪嗎 直接私訊我就好了


saul.sl.wu@gmail.com (一次就AC)


import sys

def solve():
    data = sys.stdin.read().split()
    if not data:
        return
    
    N = int(data[0]) 
    M = int(data[1]) 
    
    intervals = []
    for i in range(M):
        s = int(data[2 + i*2])
        e = int(data[3 + i*2])
        intervals.append((s, e))
    
   
    intervals.sort()
    
   
    merged = []
    if M > 0:
        curr_s, curr_e = intervals[0]
        for i in range(1, M):
            next_s, next_e = intervals[i]
            if next_s <= curr_e:
               
                curr_e = max(curr_e, next_e)
            else:
                merged.append((curr_s, curr_e))
                curr_s, curr_e = next_s, next_e
        merged.append((curr_s, curr_e))
    

    last_pushed_end = 0
    
    for s, e in merged:
        if s > last_pushed_end:
            
            print(f"{last_pushed_end} {s}")
        
        
        if e > last_pushed_end:
            last_pushed_end = e
            
   
    if last_pushed_end < N:
        print(f"{last_pushed_end} {N}")

if __name__ == "__main__":
    solve()