← Home
package main

import (
	"fmt"
)

func main() {
	var n int
	fmt.Scan(&n)

	l := make([]int, n+1)
	r := make([]int, n+1)

	for i := 1; i <= n; i++ {
		fmt.Scan(&l[i], &r[i])
	}

	var heads []int
	var tails []int

	for i := 1; i <= n; i++ {
		if l[i] == 0 {
			heads = append(heads, i)
			curr := i
			for r[curr] != 0 {
				curr = r[curr]
			}
			tails = append(tails, curr)
		}
	}

	for i := 0; i < len(heads)-1; i++ {
		r[tails[i]] = heads[i+1]
		l[heads[i+1]] = tails[i]
	}

	for i := 1; i <= n; i++ {
		fmt.Printf("%d %d\n", l[i], r[i])
	}
}