#include <bits/stdc++.h>
using namespace std;
int A[550];
long long D[550][550];
long long MOD = 1e9 + 7;
int n;
long long dp(int l, int r) {
  if (l >= r) return 1;
  if (D[l][r] != -1) return D[l][r];
  D[l][r] = dp(l + 1, r) % MOD;
  for (int i = l + 1; i <= r; ++i) {
    if (A[l] < A[i]) {
      D[l][r] += dp(l + 1, i - 1) % MOD * dp(i, r) % MOD;
      D[l][r] %= MOD;
    }
  }
  return D[l][r];
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &A[i]);
  }
  memset(D, -1, sizeof(D));
  cout << dp(1, n - 1) << endl;
  return 0;
}
