#551. 数组切分

数组切分

问题描述

已知一个长度为 NN 的数组:A1,A2,A3,,ANA_1, A_2, A_3, \dots, A_N,它恰好是 1N1 \sim N 的一个排列。

现在要求你将数组 AA 切分成若干个(最少一个,最多 NN 个)连续的子数组,并且每个子数组中包含的整数恰好可以组成一段连续的自然数

例如,对于 A=[1,3,2,4]A = [1, 3, 2, 4],一共有 55 种切分方法:

  • $\lbrace 1 \rbrace, \lbrace 3 \rbrace, \lbrace 2 \rbrace, \lbrace 4 \rbrace$ :每个单独的数显然是长度为 11 的连续自然数段。
  • $\lbrace 1 \rbrace, \lbrace 3, 2 \rbrace, \lbrace 4 \rbrace$ :3,2{3, 2} 包含 232 \sim 3,是一段连续的自然数,另外 1144 显然也是。
  • {1},{3,2,4}\lbrace 1 \rbrace, \lbrace 3, 2, 4 \rbrace3,2,4{3, 2, 4} 包含 242 \sim 4,是一段连续的自然数,另外 11 也显然成立。
  • {1,3,2},{4}\lbrace 1, 3, 2 \rbrace, \lbrace 4 \rbrace1,3,2{1, 3, 2} 包含 131 \sim 3,是一段连续的自然数,另外 44 也成立。
  • {1,3,2,4}\lbrace 1, 3, 2, 4 \rbrace :只有一个子数组,包含 141 \sim 4,是一段连续的自然数。

输入格式

第一行包含一个整数 NN。 第二行包含 NN 个整数,代表数组 AA

输出格式

输出一个整数,表示切分方法数目对 10000000071000000007 取模后的结果。

样例输入

4
1 3 2 4

样例输出

5

数据范围

对于 30%30\% 的数据,1N201 \le N \le 20

对于 100%100\% 的数据,1N100001 \le N \le 10000