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) if par O[par][v] = 1 end return if visited[v] visited[v] = true E[v].each do |u| next if u == par next if visited[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