import numpy as np
import math


dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]

def step(A, days=1):
    B = A.copy()
    for _ in range(days):
        for i in range(A.shape[0]):
            for j in range(A.shape[1]):
                if A[i,j] == -1: 
                    continue
                for d in range(4):
                    if i+dy[d] >= 0 and i+dy[d] < A.shape[0] and j+dx[d] >= 0 and j+dx[d] < A.shape[1]:
                        if A[i+dy[d],j+dx[d]] != -1:
                            B[i,j] += A[i+dy[d],j+dx[d]]
        np.copyto(A, B)
    return B

def make_rand(n, sz=6):
    A = np.zeros((n, n))
  #  A = np.random.rand(n, n)
  #  A[A < 0.5] = 0
  #  A[A >= 0.5] = 1
    # A[ind[2]] = -1 

    B = np.zeros((sz, sz))
    for i in range(sz):
        for j in range(sz):
            if np.random.random() < 0.7:
                B[i,j] = 1
    B[sz//2,sz//2] = 1

    s = n // 2 - sz // 2
    A[s:s + sz, s:s+sz] = B
    return A

def solve(n):
    if(n < 1e5):
        print(n)
        for i in range(n):
            print(0, 2 * i, 1)

        print(n, 1)
        for i in range(n):
            print(0, 2 * i)

        return



    while True:
        dims = 100
        days = int(math.log10(n))
        A = make_rand(dims, 30) #min(100, max(5, days)))
        start = A.copy()
        A = step(A, days // 2);
       
        for d in range(days):
            A = step(A, 1)

            a = A.ravel()
            b = np.argsort(a)[::-1]
            left = n
            take = []
            for i in b:
                if a[i] > 0 and a[i] <= left:
                    left -= a[i] 
                    take.append(i)
                    if left == 0:
                        break

            #if left < 1e5:
            #    print(left)
            #    quit()

            if left == 0:
                print(start.size)
                for i in range(start.shape[0]):
                    for j in range(start.shape[1]):
                        print(i, j, int(start[i, j])) 

                print(len(take), days // 2 + 1 + d)
                # print(take)
                for i in take:
                    print(i // dims, i % dims)
                    # print(a[i])
                    # print(A[i // dims, i % dims])

                return

solve(int(input()))