import java.util.*;
public class Solution {
public static ListNode reverseBetween(ListNode head, int m, int n) {
ListNode node=new ListNode(-1);
node.next=head;
ListNode pre=node;
for(int i=1;i<m;i++){
pre=pre.next;
}
ListNode right=pre.next;
ListNode left=pre.next;
for(int i=m;i<n;i++){
right=right.next;
}
ListNode last=right.next;
pre.next=null;
right.next=null;
ListNode list=null;
ListNode cur_left=left;
while(cur_left!=null){
ListNode cur_list=cur_left.next;
cur_left.next=list;
list=cur_left;
cur_left=cur_list;
}
pre.next=right;
left.next=last;
return node.next;
}
}