Which operation typically requires traversal from both the beginning and end of a doubly linked list?
1) Insertion at the beginning
2) Insertion at the end
3) Deletion from the middle
4) Accessing elements randomly