"""
# Definition for a Node.
class Node:
def __init__(self, val, next):
self.val = val
self.next = next
"""
def cprint(head):
tp = head
print(tp.val)
tp = tp.next
while tp != head:
print(tp.val)
tp = tp.next
class Solution:
def insert(self, head, insertVal):
"""
:type head: Node
:type insertVal: int
:rtype: Node
"""
r = head
a = insertVal
if not r:
ret = Node(a, None)
ret.next = ret
return ret
if r.next == r:
newnode = Node(a, None)
r.next = newnode
newnode.next = r
return head
tmphead = r.next
maxval = r.val
minval = r.val
while tmphead != r:
maxval = max(maxval, tmphead.val)
minval = min(minval, tmphead.val)
tmphead = tmphead.next
#print(maxval,minval)
if maxval == minval:
tmphead = r.next
newnode = Node(a, None)
r.next = newnode
newnode.next = tmphead
else:
tmphead = r
saveprev = r
while 1:
if tmphead.val == minval and saveprev.val == maxval:
break
saveprev = tmphead
tmphead = tmphead.next
#print(tmphead.val,saveprev.val)
if a <= minval or a >= maxval:
#cprint(head)
#print(saveprev.val)
tmphead = saveprev.next
nn = Node(a, tmphead)
saveprev.next = nn
#cprint(head)
else:
while a > tmphead.val:
saveprev = tmphead
tmphead = tmphead.next
#print(tmphead.val)
nn = Node(a,None)
saveprev.next = nn
nn.next = tmphead
return head
while tmphead.val != minval and saveprev != maxval:
while 1:
if tmphead.val == minval and saveprev == maxval:
break