← Home
```go
package main

import "fmt"

const mod = 1000000007

func main() {
	var n int
	fmt.Scan(&n)
	b := make([]int, n+1)
	for i := 1; i <= n; i++ {
		fmt.Scan(&b[i])
	}
	dp := make([][]int64, n+1)
	for i := 0; i <= n; i++ {
		dp[i] = make([]int64, n+1)
	}
	for i := 1; i <= n; i++ {
		dp[i][i] = 1
	}
	for d := 2; d <= n; d++ {
		for l := 1; l <= n-d+1; l++ {
			r := l + d - 1
			total_sum := make([]int64, n+1)
			for pos := r; pos >= l+1; pos-- {
				var s int64 = 0
				for m := pos; m <= r; m++ {
					var aval int64 = 0
					if m+1 > r {
						aval = 1
					} else {
						if b[pos] < b[m+1] {
							aval = total_sum[m+1]
						}
					}
					s = (s + dp[pos][m]*aval%mod) % mod
				}
				total_sum[pos] = s
			}
			dp[l][r] = total_sum[l+1] % mod
		}
	}
	fmt.Println(dp[1][n])
}
```