#!/usr/bin/env python3
import argparse
import random

MAX_N = 2*10**5
MAX_C = 10**6

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--maxc', type=int, default=MAX_C)
    parser.add_argument('--minn', type=int, default=1)
    parser.add_argument('--maxn', type=int, default=MAX_N)
    parser.add_argument('--seed', type=int, default=2021)

    args = parser.parse_args()
    random.seed(args.seed)
    maxc = args.maxc
    
    dy = random.choice([-1,1])
    y0 = random.randint(-maxc, maxc)

    maxt = min(maxc, maxc - y0 if dy > 0 else y0 + maxc)
    mint = max(-maxc, -(y0 + maxc) if dy > 0 else -(maxc - y0))
    
    def rand_point():
        t = random.randint(mint, maxt)
        return (t, y0 + t*dy)
    
    n = random.randint(args.minn, args.maxn)
    pts = set()
    while len(pts) < n:
        pts.add(rand_point())
    pts = list(pts)
    random.shuffle(pts)
        
    print(n)
    for (x, y) in pts:
        print(x, y)
    
if __name__=='__main__':
    main()
