Generate program that has the following intention:

This is the structure of the `NAME_1` class:
````
class NAME_1:
    def __init__(
        self,
        value=None,
        successor=None,
        successors=[],
        predecessors=[],
        incoming_nodes=[],
        outgoing_nodes=[],
    ):
        self.value = value
        self.successor = successor
        self.successors = successors
        self.predecessors = predecessors
        self.incoming_nodes = incoming_nodes
        self.outgoing_nodes = outgoing_nodes
````

The intention of the program is to implement a function called p5 that determines whether a given NAME_1 in a linked list is a "tortoise" or a "hare". A tortoise NAME_1 is a NAME_1 that has no successor, while a hare NAME_1 is a NAME_1 that has a successor that is also a successor of the tortoise NAME_1. The function p5 takes a NAME_1 as input and recursively traverses the linked list to determine whether the given NAME_1 is a tortoise or a hare. It returns True if the given NAME_1 is a tortoise and False otherwise.

In the NAME_1 class, the attributes value, successor, successors, predecessors, incoming_nodes, and outgoing_nodes represent the value stored at the NAME_1, the successor of the NAME_1, the list of successor nodes, the list of predecessor nodes, the list of incoming nodes, and the list of outgoing nodes, respectively. The init method initializes these attributes to their default values.

In the p5 function, the hare and tortoise variables are used to keep track of the current NAME_1 and the tortoise NAME_1, respectively. The while loop continues as long as the hare NAME_1 has a successor and the tortoise NAME_1 has not been reached. The if statement inside the while loop determines whether the hare NAME_1 is equal to the tortoise NAME_1. If they are equal, it means that the given NAME_1 is a tortoise and the function returns True. If not, the function continues to recursively traverse the linked list until it determines whether the given NAME_1 is a tortoise or a hare.
 Your answer should have exactly 3 paragraphs. Make sure that the first paragraph starts with the word "sources" and that each paragraph is separated by two new lines.
user