#binary_tree_restore
class Node
  attr_accessor :myname,:parent,:left,:right

  def initialize(n)
    @myname = n
    @parent = nil
    @left   = nil
    @right  = nil
  end

  def add_left(child)
      self.left    = child
      child.parent = self
  end

  def add_right(child)
      self.right    = child
      child.parent = self
  end

  def postorder(flag)
    if(left != nil && left != -1)
      left.postorder(0)
    end
    if(right!= nil && left != -1)
      right.postorder(0)
    end
    printf("%d",self.myname)
    printf(" ") if flag == 0
  end

end


n = STDIN.gets.split[0].to_i
$tree=Array.new(n+1){|i| Node.new(i)}
$pre =Array.new(n)
$in_ =Array.new(n)


s = STDIN.gets.split
0.upto(n-1){|i|
  $pre[i] = s[i].to_i
}

s = STDIN.gets.split
0.upto(n-1){|i|
  $in_[i]  = s[i].to_i
}

$pre_cnt=0
def get_pre_order
  ret=$pre[$pre_cnt]
  $pre_cnt += 1
  ret
end

def make_tree(array)
  root = get_pre_order

=begin
  printf("root=%d|",root)
  for n in array
    printf("%d ",n)
  end
  printf("[%d]\n",array.length)
=end

  if(array.length == 1)
    $tree[root].left = -1
    $tree[root].right= -1
  else
    pos=array.index(root)
    if(pos==0)
      $tree[root].left = nil
    else
      left_node = make_tree(array[0...pos])
      left_node.parent = $tree[root]
      $tree[root].left = left_node
    end
    if(pos == array.length-1)
      $tree[root].right= nil
    else
      right_node = make_tree(array[pos+1...$tree.length])
      right_node.parent = $tree[root]
      $tree[root].right  = right_node
    end
  end
  $tree[root]
end

make_tree($in_)
$tree[$pre[0]].postorder(1)
printf("\n")