C++ Solution (Don't forget to free memory for removed nodes)
\nclass Solution {\npublic:\n    ListNode* mergeInBetween(ListNode* list1, int a, int b, ListNode* list2) {\n        int splitPosition = 0;\n        ListNode* c
```\nclass Solution {\npublic:\n    ListNode* mergeInBetween(ListNode* list1, int a, int b, ListNode* list2) {\n        int splitPosition = 0;\n        ListNode* current = list1;\n        while(splitPosition != a - 1)\n        {\n            current = current->next;\n            splitPosition++;\n        }\n        \n        ListNode* removeNodes = current->next;\n        current->next = list2;\n        splitPosition++;\n        \n        while(splitPosition != b + 1)\n        {\n            ListNode* deleteNode = removeNodes;\n            removeNodes = removeNodes->next;\n            delete deleteNode; \n            splitPosition++;\n        }\n        \n        ListNode* endNodeOfList2 = list2;\n        while(endNodeOfList2->next != NULL)\n            endNodeOfList2 = endNodeOfList2->next;\n        \n        endNodeOfList2->next = removeNodes;\n        \n        return list1;\n    }\n};\n```
['C']