{"raw_statement":[{"iden":"statement","content":"zyl 桌上有 $n$ 张纸条（编号 $1\\sim n$），他要把这些纸条按被写下的时间的前后顺序排好，但是纸条上不会有日期，zyl 需要自己判断。\n\nzyl 可以根据纸条内容的连贯性来确定**紧跟**在一张纸条之后纸条有哪些。同时，他可以通过纸条的破损程度判断内容不连贯的纸条的时间先后顺序。显然，对于一段连贯内容的最后一张纸条，紧跟在它后面的纸条只能通过破损程度来判断。\n\n现在，你会收到按以下规则给出的，每张纸条的信息：\n\n首先，你会得知在这一段连贯内容中紧跟在这张纸条后面的纸条的数量 $m$。\n\n其次，按照时间前后依次告诉你这些纸条的编号。\n\n如果没有「连贯内容中紧跟在后面的纸条」（即在连贯内容的最后一张，$m = 0$），则会按照破损程度给出紧跟它的下一张纸条的编号，如果没有「按照破损程度紧跟它的下一张纸条」，你会得到一个 $-1$ 信号。\n\n**如果对于这一部分理解有困难，可以参照「输入格式」及「样例组」进行理解。**\n\n请你帮助 zyl 将纸条排序，并将这 $n$ 张纸条按时间顺序排序后的编号输出。"},{"iden":"input","content":"输入共 $n+1$ 行。\n\n第一行一个整数 $n$，表示纸条的张数。  \n\n第 $2\\sim n+1$ 行，第 $i+1$ 行具体内容如下：  \n第一个整数 $m$，表示在连贯内容内 $i$ 号纸条之后有多少张纸条。  \n- 如果 $m>0$，则接下来 $m$ 个整数，表示按照时间前后紧跟在 $i$ 号纸条后的纸条编号。\n- 如果 $m = 0$，接下来一个整数，表示按照纸条的破损程度，紧跟在 $i$ 号纸条后面的纸条编号。如果其后没有纸条，则该整数为 $-1$。"},{"iden":"output","content":"输出共一行 $n$ 个整数，表示按时间先后排好序后纸条的编号。"},{"iden":"note","content":"### 样例 1 解释\n\n纸条 $2,1,3$ 是内容连贯的纸条，纸条 $5,4$ 是另一组内容连贯的纸条。\n\n### 数据规模与约定\n\n对于 $20\\%$ 的数据，$n\\leq 5$。  \n对于 $100\\%$ 的数据，$0\\leq m<n\\leq 2\\times10^{3}$。"}],"translated_statement":null,"sample_group":[["5\n1 3\n2 1 3\n0 5\n0 -1\n1 4","2 1 3 5 4"]],"show_order":[],"formal_statement":null,"simple_statement":null,"has_page_source":false}