Post-order traversal of a tree is a recursive procedure, where you first the left subtree of a node, then visit its right subtree, and then the node itself:

Visit the left subtree (node.left)

Visit the right subtree (node.right)

Visit the current node

Given a binary tree, you are asked to perform a post-order traversal on it.

Input

The input contains space-separated integers representing the values in the nodes of the binary tree. The order of the values is given by traversing from the left to the right subtree every time. A value of 0 means that the node does not exist. Itβs guaranteed that the input binary tree is valid.

Output

The program should print the values in the nodes of a binary tree when performing a post-order traversal. All the values should be separated by a space.