计数
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

sun最近对计数问题来了兴趣,现在他有一个问题想问问你:

 

有一个含有n个数字的序列,每个数的大小是不超过1000的正整数,同时这个序列是个单调不增序列。但是很不幸的是,序列在保存过程中有些数字丢失了,请你根据上述条件,计算出有多少种不同的序列满足上述条件,答案对1000000007取模。(具体可以看样例)

输入描述:

第一行包含一个整数n,表示这个序列的长度。
第二行为n个整数a_i,用空格隔开,如果数字是0,代表这个数字丢失了,其他的数字都在1~1000之间

输出描述:

输出一行,表示答案。
示例1

输入

复制
3
9 0 8

输出

复制
2
示例2

输入

复制
2
5 4

输出

复制
1
示例3

输入

复制
3
0 0 0

输出

复制
167167000

备注: