Plan main:
    Execute go_to(blue_ball)
    Execute pickup
    Execute right
    Execute drop
    Execute go_to(green_key)
    Execute pickup
    Execute go_to(green_door)
    Execute toggle
    Execute right
    Execute drop

Policy main:
    if carrying(green_key) and not green_door.is_open:
        if at(green_door):
            Execute toggle
        elif reachable(green_door):
            Execute go_to(green_door)

    elif carrying(grey_key) and not grey_door.is_open:
        if at(grey_door):
            Execute toggle
        elif reachable(grey_door):
            Execute go_to(grey_door)
    
    elif reachable(goal):
        Execute go_to(goal)

    elif carrying(green_key) and not reachable(green_door):
        Execute drop

    elif carrying(grey_key) and not reachable(grey_door):
        Execute drop

Effect main:
    if at(Lava) and A == forward:
        S' -> S*0
        Reward -1
    if not at(Door) and A == toggle:
        S' -> S
        Reward 0
    if carrying_something() and A == pickup:
        S' -> S
        Reward 0
    if at(Wall) and A == forward:
        S' -> S
        Reward 0
