你正在尝试组织一群朋友去看电影。这件事情变得很复杂,因为你的朋友们会根据其他人是否参加来决定自己是否参加。如果你给其中一位朋友打电话,你会进行如下对话:
你:“嘿 Fred,想和我们一起去看 7:30 场《来自意外二次方泻湖的编码恐怖》吗?”
Fred:“嗯,我不知道……Francine 会去吗?”
事实上,对于你的每一位朋友 $X$,都有且仅有一位朋友 $Y$,使得 $X$ 只有在 $Y$ 也参加的情况下才会参加。当然,你必须邀请朋友的一个子集,使得所有被邀请的人都知道还有谁被邀请,并且都愿意参加,同时没有未被邀请的人需要参加。
问题是,有多少种这样的朋友子集?你不想独自去看电影,所以每个集合必须至少包含一名朋友。
输入格式
第一行包含一个整数 $n$ ($2 \le n \le 10^5$)。这是你可能邀请去看电影的朋友数量。你用从 $1$ 到 $n$ 的数字来标识你的朋友。
接下来的 $n$ 行,每行包含一个整数 $y$ ($1 \le y \le n$)。这表示朋友 $x$ 只有在朋友 $y$ 也去电影院的情况下才会去,其中第一个 $y$ 值对应 $x=1$,第二个 $y$ 值对应 $x=2$,以此类推。没有人会是自己的朋友!(即 $x \neq y$)
输出格式
输出一个整数,表示你可以邀请的不同的非空朋友子集数量,使得所有被邀请的人都愿意参加。由于这个数字可能非常大,请输出其对 $10^9 + 7$ 取模的结果。
样例
样例输入 1
4 2 3 4 3
样例输出 1
3
样例输入 2
5 2 3 1 5 4
样例输出 2
3