class TreeNode
{
  TreeNode sol;
  int data;
  TreeNode sag;

  public TreeNode(int d)
  {
  data=d;
  sol=sag=null;
  }

  public synchronized void gir(int d)
  {
  // not ayni deger iki kere girilmeye calisilirsa
  // ikinci giris dikkate alinmiyacaktir
    if(d<data)
    { if(sol==null) {sol=new TreeNode(d);}
      else         {sol.gir(d);}
    }
    else if(d>data)
    { if(sag==null) {sag=new TreeNode(d);}
      else         {sag.gir(d);}
    }      
  }
}

public class Tree
{
  private TreeNode kok;
  public Tree() {kok=null;}
  public synchronized void gir(int d)
  {
    if(kok==null) kok=new TreeNode(d);
    else kok.gir(d);
  }

  public void node_soldal_sagdal_sirala(){node_soldal_sagdal_siralayici(kok);}
  public void soldal_node_sagdal_sirala(){soldal_node_sagdal_siralayici(kok);}
  public void soldal_sagdal_node_sirala(){soldal_sagdal_node_siralayici(kok);}
  public void node_sagdal_soldal_sirala(){node_sagdal_soldal_siralayici(kok);}
  public void sagdal_node_soldal_sirala(){sagdal_node_soldal_siralayici(kok);}
  public void sagdal_soldal_node_sirala(){sagdal_soldal_node_siralayici(kok);}

  public void node_soldal_sagdal_siralayici(TreeNode node)
  {
  if(node==null) return;
  System.out.print(node.data+" ");
  node_soldal_sagdal_siralayici(node.sol);
  node_soldal_sagdal_siralayici(node.sag);
  }
  public void node_sagdal_soldal_siralayici(TreeNode node)
  {
  if(node==null) return;
  System.out.print(node.data+" ");
  node_sagdal_soldal_siralayici(node.sag);
  node_sagdal_soldal_siralayici(node.sol);
  }
  public void soldal_node_sagdal_siralayici(TreeNode node)
  {
  if(node==null) return;
  soldal_node_sagdal_siralayici(node.sol);
  System.out.print(node.data+" ");
  soldal_node_sagdal_siralayici(node.sag);
  }
  public void sagdal_node_soldal_siralayici(TreeNode node)
  {
  if(node==null) return;
  sagdal_node_soldal_siralayici(node.sag);
  System.out.print(node.data+" ");
  sagdal_node_soldal_siralayici(node.sol);
  }
  public void soldal_sagdal_node_siralayici(TreeNode node)
  {
  if(node==null) return;
  soldal_node_sagdal_siralayici(node.sol);
  soldal_node_sagdal_siralayici(node.sag);
  System.out.print(node.data+" ");
  }
  public void sagdal_soldal_node_siralayici(TreeNode node)
  {
  if(node==null) return;
  sagdal_node_soldal_siralayici(node.sag);
  sagdal_node_soldal_siralayici(node.sol);
  System.out.print(node.data+" ");
  }
}
