## hhttps://yukicoder.me/problems/no/3506 def main(): N = int(input()) edges = [] edges.append((1, 2, 1)) for i in range(2, N): edges.append((1, i + 1, 4)) for i in range(2, N): edges.append((1, i + 1, 8)) ij_map = {} ij_map[(0, 1)] = [1] for j in range(2, N): ij_map[(0, j)] = [j] for j in range(2, N): ij_map[(1, j)] = [1, N + (j - 2)] for i in range(2, N): for j in range(i + 1, N): ij_map[(i, j)] = [N + (i - 2), N + (j - 2)] ij_array = [(key, value) for key, value in ij_map.items()] ij_array.sort(key=lambda x : x[0]) print(len(edges)) for u, v, w in edges: print(u, v, w) for _, value_seq in ij_array: print(len(value_seq), " ".join(map(str, value_seq))) if __name__ == '__main__': main()