#include <bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define ull unsigned long long
#define rep(i,a,n) for (long long i=a;i<=n;i++)
#define per(i,a,n) for (long long i=n;i>=a;i--)
#define fi first
#define se second
#define INF 0x3f3f3f3f
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef long long ll;
typedef pair<ll,ll> PI;
const int mod=1e9+7;
const int MAXN=2e5+5;
typedef double db;
template <typename T> void chkmax(T &x,T y){x<y?x=y:T();}
template <typename T> void chkmin(T &x,T y){x>y?x=y:T();}
template <typename T> void read(T &x)
{
	x=0;ll f=1;char c;
	for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1;
	for(;isdigit(c);c=getchar())x=x*10+c-'0';
	x*=f;
}
map<ll,ll>mp1,mp2;
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
ll i,j,k,u,n,m,t,len,x1,x2,y,k1,z,v,a[MAXN],b[MAXN],tot=0,x,k2,minn,ans,flag,maxx,dp[MAXN];
vector<ll> G1,G2;
char s1[MAXN];
int main()
{
	//ios::sync_with_stdio(false);
	//cin.tie(0);cout.tie(0);
	read(t);
	while (t--)
	{
		read(n);read(u);read(v);ans=1e18;
		for (i=1;i<=n;i++) read(a[i]);
		for (i=1;i<=n-1;i++)
		{
			if (a[i]==a[i+1]) ans=min(ans,min(2*v,u+v));
			else if (abs(a[i]-a[i+1])==1) ans=min(ans,min(u,v));
			else ans=0;
		}
		cout<<ans<<endl;
	} 
    return 0;
}