N = gets.to_i O = Hash.new { |h, k| h[k] = {} } E = Array.new(N + 1) { [] } OE = [] N.times do a, b = gets.split.map(&:to_i) E[a] << b E[b] << a OE << [a, b] end def dfs(v, par, visited) return if visited[v] visited[v] = true if par O[par][v] = 1 end E[v].each do |u| dfs(u, v, visited) end end visited = Array.new(N + 1, false) 1.upto(N) do |v| next if visited[v] dfs(v, nil, visited) end OE.each do |a, b| if O[a][b] puts '<-' else puts '->' end end