int dp[maxn][201][3];
int recur(int i, int j, int k, vi &v)
{
if (i == size(v))
return (k == 1);
if (dp[i][j][k] != -1)
return dp[i][j][k];
int &ans = dp[i][j][k] = recur(i + 1, j, k, v);
if ((k == 0 and v[i] > j) or (k == 1 and v[i] < j))
{
ans = (ans + recur(i + 1, v[i], k, v)) % mod;
if (k == 0 and j)
ans = (ans + recur(i + 1, v[i], 2, v)) % mod;
}
if (k == 2 and v[i] < j)
ans = (ans + recur(i + 1, v[i], 1, v)) % mod;
return ans;
}
void solve()
{
int n;
cin >> n;
vi v(n);
cin >> v;
MEM(dp, -1);
cout << recur(0, 0, 0, v) << endl;
}