#include <bits/stdc++.h>
long long int dp[505][505];
int a[505];
using namespace std;
long long int dfs(int s, int e) {
  if (s == e) return 1;
  if (s > e) return 1;
  if (dp[s][e] != -1) return dp[s][e];
  long long ans = 0;
  for (int i = s + 1; i <= e; i++) {
    if (i == e || a[i + 1] > a[s + 1])
      ans += (dfs(s + 1, i) * dfs(i, e)) % 1000000007;
    ans %= 1000000007;
  }
  dp[s][e] = ans;
  return ans;
}
void init() { memset(dp, -1, sizeof(dp)); }
int main() {
  int n;
  scanf("%d", &n);
  init();
  for (int i = 1; i <= n; i++) {
    scanf("%d", a + i);
  }
  long long int ans = dfs(1, n);
  printf("%I64d\n", ans);
}
