#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 5;
int N, a, b;
string cad;
long long dp[MAXN][2];
long long f(int pos, int level) {
  if (cad[pos] == '1' && !level) return 1000000000000000000;
  if (pos == N - 1) {
    if (level == 0) return (a + b);
    return (2 * a + b);
  }
  if (dp[pos][level] != -1) return dp[pos][level];
  long long ans = 1000000000000000000;
  if (cad[pos] == '0' && level == 0) {
    if (cad[pos + 1] == '1') {
      ans = min(ans, 2 * (a + b) + f(pos + 1, 1));
    } else {
      ans = min(ans, (a + b) + f(pos + 1, 0));
    }
  } else if (cad[pos] == '0' && level == 1) {
    if (cad[pos + 1] == '0') {
      ans = min(ans, 2 * a + b + f(pos + 1, 0));
    }
    ans = min(ans, 2 * b + a + f(pos + 1, 1));
  } else if (cad[pos] == '1') {
    ans = min(ans, 2 * b + a + f(pos + 1, 1));
  }
  return dp[pos][level] = ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int T;
  cin >> T;
  while (T--) {
    cin >> N >> a >> b;
    cin >> cad;
    memset(dp, -1, sizeof dp);
    cout << f(0, 0) + b << "\n";
  }
}
