Java Solution using DoublyLinkedList
```java []
class ListNode {
    public int val;
    public ListNode prev;
    public ListNode next;
    ListNode(int val) { this.val = val; }
}
class Solution {
    boolean checkIfSorted(ListNode head)
    {
        if (head.next==null) return true;
        ListNode temp = head;
        while(temp.next!=null)
        {
            if(temp.val>temp.next.val) return false;
            temp = temp.next;
        }
        return true;
    }
    public int minimumPairRemoval(int[] nums) 
    {
        ListNode dummyHead = new ListNode(-1001);
        ListNode curr = dummyHead;

        for(int i=0; i<nums.length; i++)
        {
            ListNode newNode = new ListNode(nums[i]); 
            curr.next = newNode;
            newNode.prev =curr;
            curr = newNode;
        }
        curr = dummyHead.next;
        ListNode minSumFirstNode = curr;
        int minSum = Integer.MAX_VALUE;
        int count=0;
        int pairSum = 0;

        while(checkIfSorted(dummyHead.next)==false &&  curr.next!=null)
        {
            pairSum = curr.val + curr.next.val;
            if(pairSum<minSum) 
            {
                minSum = pairSum;
                minSumFirstNode = curr;
            }
            curr = curr.next;
            if(curr.next==null)
            {
                minSumFirstNode.val = minSum;
                minSumFirstNode.next = minSumFirstNode.next.next;
                count++;
                curr = dummyHead.next;
                minSum = Integer.MAX_VALUE;
            }            
        }
        return count;        
    }
}
```
['Doubly-Linked List', 'Java']