public ListNode mergeHelper(List<ListNode> lists, int begin, int end) {
        if (begin >= end)
            return lists.get(begin);
        int mid = begin + (end - begin) / 2;
        ListNode left = mergeHelper(lists, begin, mid);
        ListNode right = mergeHelper(lists, mid + 1, end);
        return merge(left, right);
    }