import re
def parse(file):
    robots = []
    for line in file:
        match = re.findall(r'-?\d+', line)
        px,py, vx,vy = [int(x) for x in match]
        robots.append(((px,py),(vx,vy)))
    return robots

def solve(file, W, H):
    robots = parse(file)
    #print(robots)

    robots100 = [iterate(r, 100, W, H) for r in robots]
    #print(robots100)

    q = quad_score(robots100, W, H)
    print(q)

    minq = float('inf')
    mint = 0
    for t in range(0, W*H):
        rs = (iterate(r, t, W, H) for r in robots)
        q = quad_score(rs, W, H)
        if minq > q:
            minq = q
            mint = t

    picture = [["."]*W for _ in range(H)]
    for r in robots:
        (x,y),_ = iterate(r, mint, W, H)
        picture[y][x] = "#"
    for line in picture:
        print("".join(line))

    print("t = ", mint, "q = ", minq)

def quad_score(robots, W, H):
    mx = W//2
    my = H//2
    q1, q2, q3, q4 = 0, 0, 0, 0
    for (x,y),_ in robots:
        if x < mx and y < my: q1 += 1
        if x > mx and y < my: q2 += 1
        if x < mx and y > my: q3 += 1
        if x > mx and y > my: q4 += 1
    return q1*q2*q3*q4

def iterate(robot, t, W, H):
    (px,py), (vx,vy) = robot
    px = (px+vx*t)%W
    py = (py+vy*t)%H
    return (px,py), (vx,vy)

solve(open("sample1.in"), 11, 7)
solve(open("input"), 101, 103)