#include <bits/stdc++.h>
using namespace std;
template <class K>
inline bool cmax(K& a, const K& b) {
  return (a < b) ? a = b, 1 : 0;
}
template <class K>
inline bool cmin(K& a, const K& b) {
  return (a > b) ? a = b, 1 : 0;
}
int T, n;
char s[200007];
long long f[200007][2], a, b;
inline int read() {
  register int s = 0;
  register char c = getchar();
  while (!isdigit(c)) c = getchar();
  while (isdigit(c)) s = (s << 1) + (s << 3) + c - '0', c = getchar();
  return s;
}
int main() {
  int i, j;
  T = read();
  while (T--) {
    n = read(), a = read(), b = read();
    scanf("%s", s + 1);
    f[0][0] = b, f[0][1] = 1e18;
    for (i = 1; i <= n; i++) {
      f[i][0] = min(f[i - 1][1] + a, f[i - 1][0]) + a + b;
      f[i][1] = min(f[i - 1][0] + a, f[i - 1][1]) + a + 2 * b;
      if (i < n && (s[i + 1] - '0' || s[i] - '0')) f[i][0] = 1e18;
    }
    printf("%I64d\n", f[n][0]);
  }
  return 0;
}
