import java.util.Scanner; public class Main { static final int MOD = 1000000007; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] a = new int[n+1]; long[] dp= new long[n+1]; for (int i = 1; i <= n; ++i) { a[i] = scanner.nextInt(); } dp[0] = 1; /* * 审题 * 全排列是指没有重复数字 * 如果索引1-3最大值是1和3就代表1,2,3均出现过了 * */ for (int i = 1; i <= n; ++i) { int mx = a[i], mi = a[i]; for (int j = i; j >= 1; j--) { mx = Math.max(mx, a[j]); mi = Math.min(mi, a[j]); //线性dp if (mx - mi == i - j) { dp[i] = (dp[i] + dp[j - 1]) % MOD; } } } System.out.println(dp[n]); } }