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()