import java.util.*;
import java.lang.*;
import java.io.*;

class Node {
	int value;
	Node left, right, parent;

	public Node(int value) {
		this.value = value;
	}

	public void setLeft(Node left) {
		this.left = left;
		left.parent = this;
	}

	public void setRight(Node right) {
		this.right = right;
		right.parent = this;
	}

	public Node first() {
		Node n = this;
		while (n.left != null) n = n.left;
		return n;
	}

	public Node next() {
		if (right != null) return right.first();
		for (Node n = this; ; n = n.parent) {
			if (n.parent == null) return null;
			if (n == n.parent.left) return n.parent;
		}
	}
}

class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		//             8
		//            / \
		//           /   \
		//          /     \
		//         3       10
		//        / \       \
		//       /   \       \
		//      1     6       14
		//           / \      /
		//          4   7   13
		Node n8 = new Node(8),
			n3 = new Node(3), n10 = new Node(10),
			n1 = new Node(1), n6 = new Node(6), n14 = new Node(14),
			n4 = new Node(4), n7 = new Node(7), n13 = new Node(13);
		Node root = n8;
		n8.setLeft(n3); n8.setRight(n10);
		n3.setLeft(n1); n3.setRight(n6);
		n6.setLeft(n4); n6.setRight(n7);
		n10.setRight(n14);
		n14.setLeft(n13);
		
		Node n = root.first();
		while (n != null) {
			System.out.printf("%d ", n.value);
			n = n.next();
		}
	}
}