import sys N = int(sys.stdin.readline()) # 1. グラフの構築 edges = [] # グループA (0-(N-1)) for i in range(N-1): edges.append((i, i+1, 2*i+1)) # グループB (1-i) group_b_start = len(edges) for i in range(2, N): edges.append((1, i, 2*i)) # グラフ出力 print(len(edges)) for u, v, c in edges: print(f"{u} {v} {c}") # 2. パス出力 for i in range(N): for j in range(i+1, N): path = [] if i == 0: # 0からjまで歩く for k in range(j): path.append(k) else: # 解説通り: i -> ... -> 1 -> (i+1) -> ... -> j # 1. i から 1 まで戻る (グループA) for k in range(i-1, 0, -1): path.append(k) # 2. 1 から (i+1) へジャンプ (グループB) # 頂点1と「target」を結ぶ辺Bのインデックスは group_b_start + (target - 2) path.append(group_b_start + (i + 1 - 2)) # 3. (i+1) から j まで歩く (グループA) for k in range(i+1, j): path.append(k) print(f"{len(path)} {' '.join(map(str, path))}")