#include <bits/stdc++.h>
const int N = 1000005;
long long f[N][2];
int n, a, b, T;
inline long long Min(long long p, long long q) { return p < q ? p : q; }
inline void fr(int &num) {
  num = 0;
  char c = getchar();
  int p = 1;
  while (c < '0' || c > '9') c == '-' ? p = -1, c = getchar() : c = getchar();
  while (c >= '0' && c <= '9') num = num * 10 + c - '0', c = getchar();
  num *= p;
}
int main() {
  fr(T);
  register char c;
  while (T--) {
    fr(n), fr(a), fr(b);
    c = getchar();
    while (c < '0' || c > '9') c = getchar();
    f[0][0] = a + b, f[0][1] = 1e9;
    for (register int i = 1; i < n; ++i)
      c = getchar(),
      f[i][1] = (c == '0' ? Min(f[i - 1][0] + a, f[i - 1][1] + b) + a + b
                          : Min(f[i - 1][0] + a, f[i - 1][1]) + a + 2 * b),
      f[i][0] =
          ((c == '0') ? Min(f[i - 1][0] + a + b, f[i - 1][1] + 2 * (a + b))
                      : 1e18);
    printf("%lld\n", f[n - 1][0] + b);
  }
  return 0;
}
