from random import *

LWSS = [
    [(1, 0), (0, 1), (4, 1), (0, 2), (0, 3), (1, 3), (2, 3), (3, 3)],
    [(1, 0), (2, 0), (0, 1), (1, 1), (3, 1), (4, 1), (1, 2), (2, 2), (3, 2), (2, 3), (3, 3)],
    [(0, 0), (1, 0), (2, 0), (3, 0), (0, 1), (0, 2), (4, 2), (1, 3)],
    [(2, 0), (3, 0), (1, 1), (2, 1), (3, 1), (0, 2), (1, 2), (3, 2), (4, 2), (1, 3), (2, 3)]
]



def put_LWSS(num):
    o = []

    x = randint(9, 20) + 5

    for _ in range(num):
        p = choice(LWSS)
        y = randint(-6, 6)
        o += [(i + x, j + y) for i, j in p]
        x += randint(9, 20)

    return o


def RLEcompress(raw):
    RLE = []
    
    for c in raw:
        if not RLE or c != RLE[-1][0]:
            RLE.append([c, 1])
        else:
            RLE[-1][1] += 1
    
    RLE2 = []
    
    for a, b in RLE:
        if b > 1:
            RLE2.append(str(b))
        RLE2.append(a)
    
    return "".join(RLE2)



def asRLE(st):
    minx = 99999999
    miny = 99999999
    maxx = 0
    maxy = 0

    for x, y in st:
        minx = min(minx, x)
        miny = min(miny, y)
        maxx = max(maxx, x)
        maxy = max(maxy, y)
    
    st = set(st)

    def gen():
        for y in range(miny, maxy + 1):
            for x in range(minx, maxx + 1):
                yield "bo"[(x, y) in st]
            yield "$"
    
    return RLEcompress(gen())


while 1:
    a = randint(0, 4)
    b = randint(0, 5 - a)
    c = randint(0, 5 - a - b)
    d = 5 - a - b - c

    ls = put_LWSS(a)

    for i in (b, c, d):
        ls = [(y, -x) for x, y in ls]
        ls.extend(put_LWSS(i))
    
    print("x = 0, y = 0, rule = B3-ry4acenqt5eir6-ek/S2-a3-a4nq5aeknr6-ak")
    print(asRLE(ls) + "!")