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

Visit the left subtree (node.left)

Visit the current node

Visit the right subtree (node.right)

It’s like hanging the binary tree from the root and then reading its values from left to right.

Given a binary tree, you are asked to perform an in-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 an in-order traversal. All the values should be separated by a space.