output_description: Print one way to set levels to the passages so that the objective is achieved,
  as follows:
  
      
      
      a_{1,2} a_{1,3} ... a_{1,N}
      a_{2,3} ... a_{2,N}
      .
      .
      .
      a_{N-1,N}
      
  
  Here a_{i,j} is the level of the passage connecting Room i and Room j.
  
  If there are multiple solutions, any of them will be accepted.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
attempt: N = int(input())
  
  ANS = [[0] * N for i in range(N)]
  
  
  def line(L, i):
      if len(L) <= 1:
          return
  
      for k in range(len(L)):
          for l in range(k + 1, len(L)):
              if k % 2 != l % 2:
                  ANS[L[k]][L[l]] = i
  
      M = [L[i] for i in range(0, len(L), 2)]
      N = [L[i] for i in range(1, len(L), 2)]
  
      line(M, i + 1)
      line(N, i + 1)
  
  
  line(list(range(N)), 1)
  
  
  for i in range(N - 1):
      print(*ANS[i][i + 1 :])
  
problem_description: Statement
  
  AtCoder's head office consists of N rooms numbered 1 to N. For any two rooms,
  there is a direct passage connecting these rooms.
  
  For security reasons, Takahashi the president asked you to set a **level** for
  every passage, which is a positive integer and must satisfy the following
  condition:
  
    * For each room i\ (1 \leq i \leq N), if we leave Room i, pass through some passages whose levels are all equal and get back to Room i, the number of times we pass through a passage is always even.
  
  Your task is to set levels to the passages so that the highest level of a
  passage is minimized.
samples: [{"input": "3", "output": "1 2\n    1\n    \n\nThe following image describes this output:\n\n![](https://img.atcoder.jp/jsc2019-qual/D-sample.png)\n\nFor example, if we leave Room 2, traverse the path 2 \\to 3 \\to 2 \\to 3 \\to 2\n\\to 1 \\to 2 while only passing passages of level 1 and get back to Room 2, we\npass through a passage six times."}]