#include using namespace std; #define int long long #define yes cout << "Yes\n" #define no cout << "No\n" #define coutfix(num, ans) (cout << fixed << setprecision(num) << ans << '\n') mt19937_64 rnd(chrono::steady_clock::now().time_since_epoch().count()); const int MOD = 998244353; int dp[5005][5005]; void solve() { int n; cin >> n; vector a(n + 1); for (int i = 1; i <= n; i++) { cin >> a[i]; } dp[0][0] = 1; for (int i = 1; i <= n; i++) { int l=i,r=i; while(l >= 1 && a[l] >= a[i]) { l--; } while(r <= n && a[r] >= a[i]) { r++; } for (int j = 0; j <= n; j++) { dp[i][j] = dp[i-1][j]; } for (int j = l+1; j < r; j++) { dp[i][j] = (dp[i][j] + dp[i][j-1]) % MOD; } } cout << dp[n][n] << endl; } signed main() { cin.tie(0)->sync_with_stdio(0); int t = 1; // cin >> t; while (t--) { solve(); } return 0; }