out = []
outPicked = []
MX = 63

def putTile(x, y, val): 
  global out
  out += [str(x) + " " + str(y) + " " + str(val) + "\n"]

def createTube(startX, length):
  global MX

  putTile(startX, 0, 1)
  for i in range(1, length):
    putTile(startX, i, 0)

  if length == 0:
    return

  for i in range(MX - length + 1):
    for j in range(MX - length + 1):
      putTile(startX + i, j + length, 0)


def pickTile(x, y):
  global outPicked
  outPicked += [str(x) + " " + str(y) + "\n"]

def pickPowerOf2(power):
  global MX

  for i in range(power + 1):
    pickTile(power*MX*2 + i, MX - i)


for i in range(MX + 1):
  createTube(i*MX*2, MX - i)

print(len(out))

for i in out:
  print(i)

target = int(input())

for i in range(MX):
  mask = 1 << i
  if mask & target:
    pickPowerOf2(i)

print("" + str(len(outPicked)) + " " + str(MX))

for i in outPicked:
  print(i)

