#!/usr/bin/env python3
# Random event simulation.
import sys
import random

seed = int(sys.argv[1])
random.seed(seed)

n = int(sys.argv[2]) # Number of children.
m = int(sys.argv[3]) # Number of toys.
b = int(sys.argv[4]) # Max time.
r = int(sys.argv[5]) # Maximum number of random events to generate.
MAX_WAIT = int(sys.argv[6]) # Maximum time before (trying) to switch toy.

child_event = {}

# Child k plays with t from s1 to s2.
def play_with(k, t, s1, s2):
    if k not in child_event:
        child_event[k] = []
    child_event[k].append((t, s1, s2))

busy = [0] * n
until = [0] * m
last = 0

# Generate random event queue for each child.
for _ in range(r // 2):
    k = random.randint(0,n-1)
    t = random.randint(0,m-1)
    s1 = max(busy[k], until[t])
    s_min = s1 + 1
    s_max = min(s1 + MAX_WAIT, b)
    if s_min < s_max:
        s2 = random.randint(s_min, s_max)
        busy[k] = s2
        until[t] = s2
        play_with(k, t, s1, s2)
        last = max(s2, last)

event = []
for k, queue in child_event.items():
    prev = None # Previous toy.
    s0 = 0 # Time when stopped playing
    for t, s1, s2 in queue:
        if prev == t:
            # Continues playing with t (no event generated).
            continue
        if prev != None and s0 != s1:
            # Insert stop event.
            event += [(s0, k+1, 0)]
        event += [(s1, k+1, t+1)]
        prev = t
        s0 = s2
    if s0 < b - 1:
        event += [(s0, k+1, 0)]

print(f'{n} {m}')
print(f'{last+1} {len(event)}')
for si, k, t in sorted(event, key=lambda x:x[0]):
    print(f'{si} {k} {t}')
