```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])
}
```