output_description: If there exists a tree satisfying the condition in the statement, print `Yes`;
  otherwise, print `No`. Then, if such a tree exists, print the 2N-1 edges of
  such a tree in the subsequent 2N-1 lines, in the following format:
  
      
      
      a_{1} b_{1}
      \vdots
      a_{2N-1} b_{2N-1}
      
  
  Here each pair (a_i, b_i) means that there is an edge connecting Vertex a_i
  and b_i. The edges may be printed in any order.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
attempt: n = int(input())
  p = print
  b = 1 << (n.bit_length() - 1)
  if n == b:
      p("No")
      exit()
  p("Yes")
  p(n + 1, n + 2)
  for i in range(3, n + 1, 2):
      p(1, i)
      p(1, i - 1)
      p(i, n + i - 1)
      p(i - 1, n + i)
  if ~n & 1:
      p(b, n)
      p(n ^ 1 ^ b, n + n)
  
problem_description: Statement
  
  You are given an integer N. Determine if there exists a tree with 2N vertices
  numbered 1 to 2N satisfying the following condition, and show one such tree if
  the answer is yes.
  
    * Assume that, for each integer i between 1 and N (inclusive), Vertex i and N+i have the weight i. Then, for each integer i between 1 and N, the bitwise XOR of the weights of the vertices on the path between Vertex i and N+i (including themselves) is i.
samples: [{"input": "3", "output": "Yes\n    1 2\n    2 3\n    3 4\n    4 5\n    5 6\n    \n\n  * The sample output represents the following graph: \n\n![d004b05438497d50637b534e89f7a511.png](https://img.atcoder.jp/agc035/d004b05438497d50637b534e89f7a511.png)\n\n* * *"}, {"input": "1", "output": "No\n    \n\n  * There is no tree satisfying the condition."}]