func_code_string: #include <bits/stdc++.h>   using namespace std;   int MOD = 1e9 + 7;   long long int power(long long int a, long long int b) {     long long int res = 1;     a = a % MOD;     while (b > 0) {       if (b & 1) {         res = (res * a) % MOD;         b--;       }       a = (a * a) % MOD;       b >>= 1;     }     return res;   }   long long int fermat_inv(long long int y) { return power(y, MOD - 2); }   long long int gcd(long long int a, long long int b) {     return (b == 0) ? a : gcd(b, a % b);   }   long long int min(long long int a, long long int b) { return (a > b) ? b : a; }   long long int max(long long int a, long long int b) { return (a > b) ? a : b; }   bool prime[1000001];   vector<int> primes;   void SieveOfEratosthenes(int n) {     memset(prime, true, sizeof(prime));     for (int p = 2; p * p <= n; p++) {       if (prime[p] == true) {         for (int i = p * p; i <= n; i += p) prime[i] = false;       }     }     for (int p = 2; p < 1000001; p++)       if (prime[p]) primes.push_back(p);   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     int t = 1;     cin >> t;     while (t--) {       long long int n, a, b;       string s;       cin >> n >> a >> b >> s;       long long int cost = n * a + (n + 1) * b;       vector<int> v;       long long int j = 1;       for (int i = 1; i < n; i++) {         if (s[i] == s[i - 1])           j++;         else {           v.push_back(j);           j = 1;         }       }       if (v.empty()) {         cout << cost <<   n ;         continue;       }       v.erase(v.begin());       cost += 2 * a;       for (int i = 0; i < v.size(); i++) {         if (i % 2 == 0)           cost += (long long int)(v[i] + 1) * b;         else {           if (2 * a <= (long long int)(v[i] - 1) * b)             cost += 2 * a;           else             cost += (long long int)(v[i] - 1) * b;         }       }       cout << cost <<   n ;     }   }   