func_code_string: #include <bits/stdc++.h>   using namespace std;   const int IINF = 1e9;   const long long LINF = 1e18;   const int K = 1e5 + 5;   const int KL = 1e6 + 5;   int n;   int a[505];   int mem[505][505];   bool tok[505];   int dp(int l, int r) {     if (l == r) return 1;     if (l > r) return 0;     if (mem[l][r] != -1) return mem[l][r];     int k;     int ans = 505, ans2 = 505, ans3 = 505;     if (a[l] == a[l + 1]) ans2 = min(ans2, 1 + dp(l + 2, r));     for (int k = l + 2; k <= r; k++)       if (a[l] == a[k]) {         ans = min(ans, dp(l + 1, k - 1) + dp(k + 1, r));       }     ans3 = 1 + dp(l + 1, r);     return mem[l][r] = min({ans, ans2, ans3});   }   int main() {     memset(mem, -1, sizeof mem);     scanf( %d , &n);     for (int i = 1; i <= n; i++) scanf( %d , &a[i]);     printf( %d n , dp(1, n));     return 0;   }   