145. 数组子序列的排列

内存限制:256 MB 时间限制:1.000 S

题目描述

讨厌鬼有一个长度为 n (1 < n < 10^5)的数组,他想知道这个数组有多少个子序列是一个排列? 

子序列的定义: 数组删除若干个元素(也可以不删)后得到的新数组。 

排列的定义: 长度为 m 的数组,1 到 m 每个元素都出现过,且恰好出现 1 次。

输入

第一行输入一个整数 n。 

第二行输入 n 个正整数,a1, a2, ..., an。(1 <= ai <= 10^9)

输出

一行一个整数,表示有多少个子序列是一个排列。由于答案过大,请将答案对 10^ 9 + 7 取模后输出

样例输入 复制

6
1 1 5 2 3 4

样例输出 复制

10

提示

符合要求的子序列有:{1},{1},{1,2},{1,2},{1,2,3},{1,2,3},{1,2,3,4},{1,2,3,4},{1,5,2,3,4},{1,5,2,3,4}共 10 个