def ll_create_node(name, phone):
    return {'name': name, 'phone': phone, 'next': None}

def ll_insert(head, name, phone):
    if head is None:
        return ll_create_node(name, phone)
    current = head
    while current:
        if current ['name'] == name:
            current['phone'] = phone
            return head
        if current ['next'] is None:
            break
        current = current['next']
    current['next'] = ll_create_node(name, phone)
    return head

def ll_find(head, name):
    current = head
    while current:
        if current['name'] == name:
            return current['phone']
        current = current['next']
    return None

def ll_delete(head, name):
    if head is None:
        return None
    if head['name'] == name:
        return head['next']
    
    current = head
    while current['next']:
        if current['next']['name'] == name:
            current['next'] = current['next']['next']
            return head
        
        current = current['next']
    return head
        
def ll_list_all(head):
    items = []
    current = head
    while current:
        items.append((current['name'], current['phone']))
        current = current['next']
    return sorted(items, key=lambda x:x[0])