How would you find the middle node of a linked list?
Implement the solution using a singly linked list and return the middle node's value. If the list has an even number of nodes, return the second middle node. For grading, each node is represented as { "value": number, "next": node_or_null }, and the function receives the head node.
def middle_node(head):