def ANSWER_4_testanswer(val, original_val = None):  #TEST 44
    """
    (1) This idea won't improve anything, and in fact will actually just make
    your algorithm run n times slower. You're running the same *deterministic*
    algorithm n times on the *same tree*, so no matter how Eve rearranged the
    nodes, you're running the same exact steps n times.

    (2) If depth_limit is finite and less than the depth of the tree (a common
    situation), then the always_zero function is a terrible heuristic, because
    it prevents you from getting any information about non-leaf nodes.
    Your algorithm will likely suffer as a result.

    (3) Similar to above, but even worse. This time, you are possibly returning
    larger and smaller numbers, which would arbitrarily label nodes as being
    better options for MAX (large numbers) or MIN (small numbers).

    (4) This is the least disastrous of the 'wrong' options. At best, it won't
    do much. If your heuristic is decent, a small depth_limit could result in
    fast, well-informed decisions about which branch to take. However, if you're
    only looking one or two levels down in the tree, there won't be much
    opportunity for pruning, and you may get a misleading result if your
    heuristic isn't fantastic.

    (5) This is the best answer. Adding this stochastic step thwarts Eve's
    efforts, because her reordering is no match against a random branch picker.
    Sometimes your algorithm will do great; other times, it will do poorly.
    But on average, it will fare moderately well against Eve's meddling.
    """
    if val == '':
        raise NotImplementedError
    return str(val) == '5'