N = gets.to_i cur = 1 edges = [[1, 2]] queue = [*3..N] d = 0 r = 0 cur = 2 until queue.empty? v = queue.shift edges << [cur, v] if r > 0 r -= 1 else d += 1 r = d cur = v end end puts edges.size edges.each do |u, v| puts "%d %d" % [u, v] end