class Graph
  include Comparable
  attr_reader :id, :depth
  @@nodes = Array.new
  def initialize(id, left = nil, right = nil)
    @id = id
    @left = left == -1? nil: left
    @right = right == -1? nil: right
    @degree = 0
    @degree += 1 if @left
    @degree += 1 if @right
    @depth = -1
    @parent = -1
    @sibling = -1
    @@nodes[id] = self
  end
  
  def set_parent(other)
    @parent = other
  end
  
  def set_child
    @@nodes[@left].set_parent(self) if @left
    @@nodes[@right].set_parent(self) if @right
    if @left and @right
      @@nodes[@left].set_sib(@@nodes[@right])
      @@nodes[@right].set_sib(@@nodes[@left])
    end
  end
  
  def set_children
    set_child
    @@nodes[@left].set_children if @left
    @@nodes[@right].set_children if @right
  end
  
  def set_sib(other)
    @sibling = other
  end
  
  def depth
    if @parent != -1
      @parent.depth + 1
    else
      0
    end
  end
  
  def height
    left = @left? @@nodes[@left].height: -1
    right = @right? @@nodes[@right].height: -1
    if left < right
      right + 1
    else
      left + 1
    end
  end
  
  def <=>(other)
    if Graph === other
      @id <=> other.id
    else
      @id <=> other
    end
  end
  
  def type
    if @parent == -1
      return "root"
    elsif @degree == 0
      return "leaf"
    else
      return "internal node"
    end
  end
  
  def order(n)
    arr = []
    if n == 0
      preorder(arr)
      return ["Preorder", arr.join(" ")]
    elsif n == 1
      inorder(arr)
      return ["Inorder", arr.join(" ")]
    else
      postorder(arr)
      return ["Postorder", arr.join(" ")]
    end
  end
  
  def preorder(arr)
    arr << @id
    if @left and @right
      @@nodes[@left].preorder(arr)
      @@nodes[@right].preorder(arr)
    end
  end
  
  def inorder(arr)
    if @left and @right
      @@nodes[@left].inorder(arr)
      arr << @id
      @@nodes[@right].inorder(arr)
    else
      arr << @id
    end
  end
  
  def postorder(arr)
    if @left and @right
      @@nodes[@left].postorder(arr)
      @@nodes[@right].postorder(arr)
    end
    arr << @id
  end
  
  def inspect
  end
  
  def to_s
    "node #{@id}: parent = #{@parent.id}, sibling = #{@sibling.id}, degree = #{@degree}, depth = #{depth}, height = #{height}, #{type}"
  end
end
def main
  arr = []
  gets.to_i.times do
    arr << Graph.new(*gets.split(" ").map(&:to_i))
  end
  root = 0
  arr.each{|item|
    if item.type == "root"
      item.set_children
      root = item
    end
  }
  arr.sort!
  3.times do |n|
    puts root.order(n)
  end
end
main