class Node:
def __init__(self, value=None):
self.value = value
self.next = self
def Next(self):
return self.next
def SetNext(self, node):
self.next = node
def Value(self):
return self.value
def AddAfter(self, node):
node.SetNext(self.Next())
self.next = node
return node
def AddBefore(self, node):
curr = self
while curr.Next() != self:
curr = curr.Next()
curr.AddAfter(node)
return node
def __str__(self):
return str(self.value)
node = Node()
node1 = node.AddAfter(Node(1))
node2 = node1.AddAfter(Node(2))
node3 = node2.AddBefore(Node(3))
print(node.Next(), node.Next().Next(), node.Next().Next().Next())
Y2xhc3MgTm9kZToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9Tm9uZSk6CiAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCiAgICAgICAgc2VsZi5uZXh0ID0gc2VsZgoKICAgIGRlZiBOZXh0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLm5leHQKCiAgICBkZWYgU2V0TmV4dChzZWxmLCBub2RlKToKICAgICAgICBzZWxmLm5leHQgPSBub2RlCgogICAgZGVmIFZhbHVlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnZhbHVlCgogICAgZGVmIEFkZEFmdGVyKHNlbGYsIG5vZGUpOgogICAgICAgIG5vZGUuU2V0TmV4dChzZWxmLk5leHQoKSkKICAgICAgICBzZWxmLm5leHQgPSBub2RlCiAgICAgICAgcmV0dXJuIG5vZGUKCiAgICBkZWYgQWRkQmVmb3JlKHNlbGYsIG5vZGUpOgogICAgICAgIGN1cnIgPSBzZWxmCiAgICAgICAgd2hpbGUgY3Vyci5OZXh0KCkgIT0gc2VsZjoKICAgICAgICAgICAgY3VyciA9IGN1cnIuTmV4dCgpCiAgICAgICAgY3Vyci5BZGRBZnRlcihub2RlKQogICAgICAgIHJldHVybiBub2RlCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHN0cihzZWxmLnZhbHVlKQoKbm9kZSA9IE5vZGUoKQpub2RlMSA9IG5vZGUuQWRkQWZ0ZXIoTm9kZSgxKSkKbm9kZTIgPSBub2RlMS5BZGRBZnRlcihOb2RlKDIpKQpub2RlMyA9IG5vZGUyLkFkZEJlZm9yZShOb2RlKDMpKQoKcHJpbnQobm9kZS5OZXh0KCksIG5vZGUuTmV4dCgpLk5leHQoKSwgbm9kZS5OZXh0KCkuTmV4dCgpLk5leHQoKSk=