class Node:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
def createNode(parent, i, created, root):
if created[i] is not None:
created[i] = Node(i)
if parent[i] == -1:
root[0] = created[i]
return
if created[parent[i]] is None:
createNode(parent, parent[i], created, root )
p = created[parent[i]]
if p.left is None:
p.left = created[i]
else:
p.right = created[i]
def createTree(parent):
n = len(parent)
created = [None for i in range(n+1)]
root = [None]
for i in range(n):
createNode(parent, i, created, root)
return root[0]
def printLevelOrder(root):
h = height(root)
for i in range(1, h+1):
printGivenLevel(root, i)
def printGivenLevel(root , level):
if root is None:
return
if level == 1:
print "%d" %(root.data),
elif level > 1 :
printGivenLevel(root.left , level-1)
printGivenLevel(root.right , level-1)
def height(node):
if node is None:
return 0
else :
lheight = height(node.left)
rheight = height(node.right)
if lheight > rheight :
return lheight+1
else:
return rheight+1
n=int(raw_input())
parent = raw_input()
numbers = map(int, parent.split())
root = createTree(parent)
printLevelOrder(root)
Y2xhc3MgTm9kZToKCWRlZiBfX2luaXRfXyhzZWxmLCBrZXkpOgoJCXNlbGYua2V5ID0ga2V5CgkJc2VsZi5sZWZ0ID0gTm9uZQoJCXNlbGYucmlnaHQgPSBOb25lCgpkZWYgY3JlYXRlTm9kZShwYXJlbnQsIGksIGNyZWF0ZWQsIHJvb3QpOgoJaWYgY3JlYXRlZFtpXSBpcyBub3QgTm9uZToKCQljcmVhdGVkW2ldID0gTm9kZShpKQoJaWYgcGFyZW50W2ldID09IC0xOgoJCXJvb3RbMF0gPSBjcmVhdGVkW2ldCgkJcmV0dXJuCglpZiBjcmVhdGVkW3BhcmVudFtpXV0gaXMgTm9uZToKCQljcmVhdGVOb2RlKHBhcmVudCwgcGFyZW50W2ldLCBjcmVhdGVkLCByb290ICkKCQlwID0gY3JlYXRlZFtwYXJlbnRbaV1dCglpZiBwLmxlZnQgaXMgTm9uZToKCQlwLmxlZnQgPSBjcmVhdGVkW2ldCgllbHNlOgoJCXAucmlnaHQgPSBjcmVhdGVkW2ldCgpkZWYgY3JlYXRlVHJlZShwYXJlbnQpOgoJbiA9IGxlbihwYXJlbnQpCgljcmVhdGVkID0gW05vbmUgZm9yIGkgaW4gcmFuZ2UobisxKV0KCXJvb3QgPSBbTm9uZV0KCWZvciBpIGluIHJhbmdlKG4pOgoJCWNyZWF0ZU5vZGUocGFyZW50LCBpLCBjcmVhdGVkLCByb290KQoJcmV0dXJuIHJvb3RbMF0KCmRlZiBwcmludExldmVsT3JkZXIocm9vdCk6CgloID0gaGVpZ2h0KHJvb3QpCglmb3IgaSBpbiByYW5nZSgxLCBoKzEpOgoJCXByaW50R2l2ZW5MZXZlbChyb290LCBpKQoKCmRlZiBwcmludEdpdmVuTGV2ZWwocm9vdCAsIGxldmVsKToKCWlmIHJvb3QgaXMgTm9uZToKCQlyZXR1cm4KCWlmIGxldmVsID09IDE6CgkJcHJpbnQgIiVkIiAlKHJvb3QuZGF0YSksCgllbGlmIGxldmVsID4gMSA6CgkJcHJpbnRHaXZlbkxldmVsKHJvb3QubGVmdCAsIGxldmVsLTEpCgkJcHJpbnRHaXZlbkxldmVsKHJvb3QucmlnaHQgLCBsZXZlbC0xKQoKZGVmIGhlaWdodChub2RlKToKCWlmIG5vZGUgaXMgTm9uZToKCQlyZXR1cm4gMAoJZWxzZSA6CgkJbGhlaWdodCA9IGhlaWdodChub2RlLmxlZnQpCgkJcmhlaWdodCA9IGhlaWdodChub2RlLnJpZ2h0KQoKCQlpZiBsaGVpZ2h0ID4gcmhlaWdodCA6CgkJCXJldHVybiBsaGVpZ2h0KzEKCQllbHNlOgoJCQlyZXR1cm4gcmhlaWdodCsxCgpuPWludChyYXdfaW5wdXQoKSkKcGFyZW50ID0gcmF3X2lucHV0KCkKbnVtYmVycyA9IG1hcChpbnQsIHBhcmVudC5zcGxpdCgpKQpyb290ID0gY3JlYXRlVHJlZShwYXJlbnQpCnByaW50TGV2ZWxPcmRlcihyb290KQ==