# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @param m int整型
# @param n int整型
# @return ListNode类
#
class Solution:
    def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode:
        # write code here
        dummy = ListNode(-1)
        dummy.next= head
        cur = dummy
        m1 = m
        while m1:
            p0 = cur
            cur = cur.next
            m1 -= 1
        pre = None
        for _ in range(n-m+1):
            nxt = cur.next
            cur.next = pre
            pre =cur
            cur = nxt
        nxt = p0.next
        nxt.next = cur
        p0.next = pre
        p0 = nxt
        return dummy.next