编程题
### 问题描述
丽丽是一名热爱彩虹的艺术家,她正在创建一幅特殊的彩虹画作。据说这幅画作需要使用 $n$ 种颜色,每种颜色都对应一个彩虹色带上的色块。丽丽需要将这些颜色块放置在正确的位置上,以完成她心目中的完美彩虹画。
然而,每个位置都有一个数字,代表该位置所需颜色的编号。每种颜色块只能放在与其编号不同的位置上。也就是说,颜色块 $i$ 只能放在编号不等于 $i$ 的位置上。
现在,请你计算有多少种合法的方案,可以将这 $n$ 种颜色块放置在这 $n$ 个位置上,使得每个位置都有一个颜色块,并且颜色块的放置顺序符合丽丽的要求。
### 输入格式
第一行一个整数 $n$($1\leq n \leq 200$),表示颜色块和位置的数量。
第二行 $n$ 个整数 $a_1,a_2,\cdots,a_n$($1\leq a_i \leq n$),表示每个位置对应的颜色编号。
### 输出格式
输出一个整数,表示合法的方案数。由于答案可能很大,你需要对 $10^9+7$ 取模。
### 样例输入
```
3
2 1 3
```
### 样例输出
```
2
```
### 数据范围
$1 \leq n \leq 2\times 10^3$,$1 \leq a_i \leq n$。