#coding:utf-8
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 , m , n ):
        # write code here
        dummy = ListNode(x=-1)
        print ("dummy val: ", dummy.val)
        #return 
        dummy.next = head
        print ("dummy next val: ", dummy.next.val)
        #return 
        prev = dummy
        pos = head
        for i in range(0, m - 1):
            prev = pos
            pos = pos.next 
        
        t = pos
        p = pos.next 
        for i in range(0, n - m):
            tmp = p.next
            p.next = t
            t = p
            p = tmp 
        prev.next = t
        pos.next = p
        return dummy.next