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.

Constraints

* N is an integer between 2 and 500 (inclusive).

Input

Input is given from Standard Input in the following format:


N


Output

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.

Example

Input

3


Output

1 2
1
import sys
input = sys.stdin.readline

def I(): return int(input())
def MI(): return map(int, input().split())
def LI(): return list(map(int, input().split()))

"""
奇閉路がないので二部グラフ
まずは最大の二部グラフを作る．
左右それぞれのグループ内の頂点同士を結ぶ辺がない．
この時点でスケールの小さい同問題に帰着，グループ内で二部グラフを作れば良い．
ただ，これを素直にやると構築が面倒そう．

レベルの最大値の最小値はN<=2^mなる最小のm
つまりNの二進数表記での桁数

レベル1 : 000..111...
レベル2 : 00..11..00..11..
みたいに分けるか．
これ，二進数で各bitが異なる頂点とつなげば良い．すでにあるならば無視
"""
def main():
    mod=10**9+7
    N=I()
    M=2**(N-1).bit_length()
    
    ans=[[-1]*N for _ in range(N)]
    
    for k in range(M):#二進数の桁数
        for i in range(N):
            for j in range(i+1,N):
                if (i>>k &1)^(j>>k &1):#iとjのkbit目が違うならば
                    if ans[i][j]==-1:
                        ans[i][j]=k+1
                        
    for i in range(N):
        print(' '.join(map(str, ans[i][i+1:])))
    
    

main()
