from functools import reduce items = [] ops = [] decide = [] points = [] tests = [] # garbage parser because i fucking hate this day already def readMonke(): input() items.append([int(s) for s in input()[18:].split(', ')]) op_l = input()[23:] op = op_l[0] arg = None self = op_l[2:] == "old" if not self: arg = int(op_l[2:]) if self and op == "*": ops.append(lambda x: x * x) elif not self and op == "*": ops.append(lambda x: x * arg) elif not self and op == "+": ops.append(lambda x: x + arg) else: raise "fuck shit piss" test = int(input()[21:]) tests.append(test) onTrue = int(input()[29:]) onFalse = int(input()[30:]) decide.append(lambda x: onTrue if x % test == 0 else onFalse) points.append(0) while True: readMonke() try: input() except EOFError: break lcm = reduce(lambda a,b:a*b, tests) # all prime numbers, no lcm on town def doRound(): for monkey in range(len(items)): points[monkey] += len(items[monkey]) for item in items[monkey]: item = ops[monkey](item) % lcm items[decide[monkey](item)].append(item) items[monkey] = [] for _ in range(10000): doRound() a, b = sorted(points)[-2:] print(a * b)