#!/usr/bin/env python3
from math import gcd
from fractions import Fraction
import random


MAX_N = 2*10**5
MAX_E = 10**5
MAX_X = 10**6

steps = []
totstep = 0
q = 1
while totstep + q <= MAX_X:
    for p in range(q+1):
        if gcd(p, q) == 1:
            if totstep + p + q > MAX_X:
                break
            totstep += p + q
            steps.append((p, q))
    q += 1


    

steps.sort(key = lambda f: Fraction(f[0], f[1]))
(x, y) = (1, totstep)
base_pts = [(x, y)]
for (p, q) in steps:
    x += q
    y -= p
    base_pts.append((x, y))
steps.pop()
for (p, q) in reversed(steps):
    x += p
    y -= q
    base_pts.append((x, y))

reps = min(MAX_N // len(base_pts), MAX_X-totstep+1)

n = len(base_pts)*reps

pts = []
for i in range(reps):
    random.shuffle(base_pts)
    for (x, y) in base_pts:
        pts.append((x+i, y+i, len(pts)))

random.shuffle(pts)

print(n)
for (x, y, _) in pts:
    print(x, y)

events = [None]*MAX_E
for (idx, (x, y, i)) in enumerate(pts):
    e = len(pts) - i - 1
    if e < MAX_E // 2:
        t = min(100, MAX_X // x, MAX_X // y)
        while True:
            dx = random.randint(-5*t, 5*t)
            dy = random.randint(-5*t, 5*t)
            if (dx >= 0 or dy >= 0) and (x*t+dx > 0 and y*t + dy > 0): break
        events[2*e] = 'c %d %d %d' % (t, x*t + dx, y*t + dy)
        events[2*e+1] = 'q %d' % (idx+1)

print(len(events))
for ev in events:
    print(ev)
    
