#!/usr/bin/env python
#copyright Igor Rivin, 2005, all rights reserved.
# this takes as input a graph in  the form:
# numverts
# vert1 neighb1 ... neighbk
# vert2 neighb1 ... neighbk
# etc, and returns a list of lines, weach of which is a connected component of the graph.

import sys
import string
import os
import math
import random

def markvert(vnum, curcomp, distarray, varray):
	if distarray[vnum] != -1:
		return
	na = varray[vnum]
	distarray[vnum] = curcomp
	for i in xrange(len(na)):
		markvert(na[i], curcomp, distarray, varray)

def complist(varray):
	numverts = len(varray)
	distarray = [-1 for i in xrange(numverts)]
	curcomp = 0
	for i in xrange(numverts):
		markvert(i, curcomp, distarray, varray)
		curcomp += 1
	ordered = [(distarray[i], i)  for i in xrange(numverts)]
	ordered.sort()
	return ordered

def main(argv):
	broken = [i.split() for i in sys.stdin]
	broken = [map(string.atoi, i) for i in broken]
	numverts = broken.pop(0)[0]
	vars = [(x[0], x[1:]) for x in broken]
	varray = [[] for i in xrange(numverts)]
	for i in vars:
		varray[i[0]] = i[1]
	ordered = complist(varray)
	compno = 0
	outstr = ""
	for i in ordered:
		if i[0] == compno:
			outstr += "%d " % i[1]
		else:
			print outstr 
			outstr = "%d " % i[1]
			compno += 1
	print outstr
	return 0

if __name__ == '__main__':
	sys.exit(main(sys.argv))
