You are given a linked list where each node contains two pointers:
next pointer**:** Points to the next node in the main linked list.
bottom pointer**:** Points to the head of another sorted sub-linked list.
Each sub-linked list is sorted in ascending order. Flatten the Link List so all the nodes appear in a single level while maintaining the sorted order.
Note: The flattened linked list should be printed using the bottom pointer instead of the next pointer. Refer to the printList() function in the driver code for better understanding.