← Home
package main

import (
	"io"
	"os"
)

func main() {
	input, _ := io.ReadAll(os.Stdin)
	var pos int

	nextInt := func() int {
		for pos < len(input) && (input[pos] < '0' || input[pos] > '9') {
			pos++
		}
		if pos >= len(input) {
			return 0
		}
		res := 0
		for pos < len(input) && input[pos] >= '0' && input[pos] <= '9' {
			res = res*10 + int(input[pos]-'0')
			pos++
		}
		return res
	}

	n := nextInt()
	if n == 0 {
		return
	}

	stacks := make([][]int, n+1)
	for i := 1; i <= n; i++ {
		k := nextInt()
		if k > 0 {
			stacks[i] = make([]int, k)
			for j := 0; j < k; j++ {
				stacks[i][j] = nextInt()
			}
		}
	}

	ans := make([]int, n+1)
	done := make([]bool, n+1)
	inPath := make([]bool, n+1)
	path := make([]int, 0, n+1)

	for i := 1; i <= n; i++ {
		if done[i] {
			continue
		}

		path = append(path, i)
		inPath[i] = true

		for len(path) > 0 {
			u := path[len(path)-1]

			if len(stacks[u]) == 0 {
				for _, x := range path {
					ans[x] = u
					done[x] = true
					inPath[x] = false
				}
				path = path[:0]
				break
			}

			nxt := stacks[u][len(stacks[u])-1]

			if done[nxt] {
				for _, x := range path {
					ans[x] = ans[nxt]
					done[x] = true
					inPath[x] = false
				}
				path = path[:0]
				break
			} else if inPath[nxt] {
				var idx int
				for j := len(path) - 1; j >= 0; j-- {
					if path[j] == nxt {
						idx = j
						break
					}
				}

				stacks[nxt] = stacks[nxt][:len(stacks[nxt])-1]
				for j := idx + 1; j < len(path); j++ {
					node := path[j]
					stacks[node] = stacks[node][:len(stacks[node])-1]
					inPath[node] = false
				}

				path = path[:idx+1]
			} else {
				path = append(path, nxt)
				inPath[nxt] = true
			}
		}
	}

	out := make([]byte, 0, n*8)
	for i := 1; i <= n; i++ {
		if i > 1 {
			out = append(out, ' ')
		}
		out = appendInt(out, ans[i])
	}
	out = append(out, '\n')
	os.Stdout.Write(out)
}

func appendInt(b []byte, v int) []byte {
	if v == 0 {
		return append(b, '0')
	}
	var buf [20]byte
	i := 19
	for v > 0 {
		buf[i] = byte('0' + v%10)
		v /= 10
		i--
	}
	return append(b, buf[i+1:]...)
}