Topcaria 王国正计划进行一系列旨在改善其基础设施的发展项目。每个项目都有特定的前置条件,必须在项目启动前完成。发展部请求你帮助确定一个可行的顺序,以便完成所有项目。
给你以下信息:
- $n$,项目的数量,项目编号从 $1$ 到 $n$。
- $m$,这些项目之间的前置关系数量。
- 一个包含 $m$ 个对的列表,其中每个对 $(a, b)$ 表示项目 $a$ 必须在项目 $b$ 开始之前完成。
你的任务是确定一个可以完成所有项目的顺序。如果由于循环依赖而无法完成所有项目,则输出 "IMPOSSIBLE"。如果存在多个有效的顺序,请输出其中字典序最小的一个。
输入格式
第一行包含两个整数 $n$ 和 $m$ — 项目的数量和前置关系的数量。
接下来的 $m$ 行,每行包含两个整数 $a$ 和 $b$ — 表示项目 $a$ 必须在项目 $b$ 之前完成的前置关系对。
输出格式
如果无法完成,输出 "IMPOSSIBLE"。
如果可以完成所有项目,输出单行,包含 $n$ 个整数 — 一个有效的项目完成顺序。如果存在多个可能的顺序,输出字典序最小的一个。一个顺序在第一个不同位置上的项目编号小于另一个顺序在相同位置上的项目编号,则称该顺序的字典序更小。
数据范围
- $1 \le n \le 10^5$
- $0 \le m \le 2 \times 10^5$
- $a, b \in \{1, 2, \dots, n\}$
- $a \ne b$
- 给定的关系对中没有重复的对。
样例
输入样例 1
5 5 1 2 2 3 2 4 2 5 3 4
输出样例 1
1 2 3 4 5
输入样例 2
5 4 1 2 2 3 3 1 5 4
输出样例 2
IMPOSSIBLE