func_code_string: #include <bits/stdc++.h>   const long double PI = acos(-1.0);   using namespace std;   int n, m;   long long dp[505][505];   int a[505];   long long cal(int l, int r) {     if (l >= r) return 1;     long long &ret = dp[l][r];     if (ret != -1) return ret;     ret = 0;     int mn = n + 1, idx = 0;     for (int i = l; i <= r; i++) {       if (a[i] < mn) {         mn = a[i];         idx = i;       }     }     long long lft = cal(l, idx - 1);     long long rgh = cal(idx + 1, r);     for (int i = l; i < idx; i++) {       lft += cal(l, i) * cal(i + 1, idx - 1);       lft %= 998244353;     }     for (int i = idx + 1; i <= r; i++) {       rgh += cal(idx + 1, i) * cal(i + 1, r);       rgh %= 998244353;     }     lft %= 998244353;     rgh %= 998244353;     ret = rgh * lft;     ret %= 998244353;     return ret;   }   void init() { memset(dp, -1, sizeof dp); }   void read_input() {     cin >> n >> m;     for (int i = 0; i < n; i++) cin >> a[i];   }   void solve() {     init();     cal(0, n - 1);   }   void print_ans() { cout << cal(0, n - 1) <<   n ; }   int main() {     int t = 1;     while (t--) {       read_input();       solve();       print_ans();       if (t) init();     }   }   