How do you insert an item into an already sorted linked list while keeping it sorted? Implement the operation for a singly linked list in ascending order, reusing existing nodes and returning the possibly updated head. The input is a Node head and integer value; output is the new Node head. Handle an empty list, insertion before the head, insertion between nodes, insertion after the tail, and duplicate values.
def insert_sorted(head, value):