#include <bits/stdc++.h>
using namespace std;
template <class T>
T sqr(T x) {
  return x * x;
}
const int mod = 1e9 + 7;
int n;
long long a[601];
long long f[601][601];
long long dp(int l, int r) {
  if (l >= r) return 1;
  if (f[l][r] >= 0) return f[l][r];
  f[l][r] = dp(l + 1, r);
  for (int pp = l; pp <= r; pp++)
    if (a[pp] > a[l]) f[l][r] = (f[l][r] + dp(l + 1, pp - 1) * dp(pp, r)) % mod;
  return f[l][r];
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  memset(f, 255, sizeof(f));
  cout << dp(2, n) << endl;
  fclose(stdin);
}
