def solve(data): REGS = "abcd" goal = [0, 1, 0, 1, 0, 1, 0, 1] for a in range(0, 1000): insts = data.splitlines() regs = {c: 0 for c in REGS} regs["a"] = a outs = [] i = 0 inst_count = 0 while i < len(insts): inst_count += 1 if inst_count > 100_000: break parts = insts[i].split() cmd = parts[0] if cmd == "cpy": if parts[1] in "abcd": regs[parts[2]] = regs[parts[1]] else: regs[parts[2]] = int(parts[1]) elif cmd == "out": if parts[1] in "abcd": v = regs[parts[1]] else: v = int(parts[1]) outs.append(v) if len(outs) == len(goal): if outs == goal: print(a) return else: # print(outs) pass elif cmd == "jnz": val = 0 if parts[1] in "abcd": val = regs[parts[1]] else: val = int(parts[1]) if val != 0: i += int(parts[2]) continue elif cmd == "inc": regs[parts[1]] += 1 elif cmd == "dec": regs[parts[1]] -= 1 else: assert False i += 1 def main(): data = open(0).read().strip() solve(data) if __name__ == "__main__": main()