编程题
### 问题描述
这天小蓝在蓝桥镇散步,他在路边捡到一个魔法万花筒,万花筒里有一个由 $N$ 个整数组成的序列 $A$。万花筒上贴有一个纸条,上面写着在这个 $A$ 序列中,如果一个子序列的所有元素都是不同的,那么这个子序列便是合格的。
小蓝找了镇上的大魔法师询问才知道,如果从序列 $A$ 中找出所有的不同的、非空的合格子序列,那么便可以打开这个万花筒,得到里面的宝物。
现在你能告诉小蓝有多少不同的、非空的合格的子序列吗?于这个数量可能非常大,所以你只需要输出这个数量模 $10^9 + 7$ 的结果。
注意,两个子序列被认为是不同的,如果它们选择的下标不同。例如,在序列 $[1, 1]$ 中,有三个不同的非空子序列:$[1]$(第一个元素),$[1]$(第二个元素)和 $[1, 1]$。在这三个子序列中,前两个是合格的,最后一个则不是。
### 输入格式
第一行包含一个正整数 $N$,表示序列 $A$ 的长度。
第二行包含 $N$ 个空格分隔的整数,表示序列 $A$ 的元素。
数据范围保证:$1 \leq N \leq 20$,$1 \leq A_i \leq 10^3$。
### 输出格式
输出一个整数,表示好的子序列的数量模 $10^9 + 7$ 的结果。
### 样例输入
```text
2
1 1
```
### 样例输出
```text
2
```