Implement the following problems in the linked list: (In your next assignment (#05), you have to use them) 1. Pop and concatenate, as discussed in class. 2. Insertion: Node *linked_list_insert_at(Node **head, int n, int x) The function takes a position n and a value x. It traverses through the list, goes up to the (n-1)th node, creates a new node, assigns the value, and finally adds the node to the list at the nth position, i.e., after the (n-1)th node. It returns NULL in case of failure and the address of the newly added node if successful. For example, if there are fewer than n-2 nodes, it will fail. 3. Deletion: int linked_list_delete(Node **head, int x) The function takes a value x, traverses through the list, and when it finds a node with x, it deletes the node. For the same, it first does proper linking and then frees the deleted node. It returns 0 in case of failure and a positive integer n indicating the position at which the node is deleted. 4. Reverse a linked list: Node *reverse(Node **head) Given the head of a linked list, it relinks the nodes in such a way that the order of the nodes reverses. For example, let head--> 2 --> 5 --> 8 --> 9-->end be the input linked list. Then the output linked list will be head--> 9 --> 8 --> 5 --> 2--> end. Don't change the values. 5. Make a proper menu to give a choice of linked list functions. Preferably use switch case. Keep the show_list function as default so that after every operation, it shows an error. Happy Bosonto Utsab!!!