#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,ssse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define ld long double
#define LLMax LLONG_MAX
#define LLMin LLONG_MIN
#define Max INT_MAX
#define Min INT_MIN
#define FOR1(i,a,b) for(int i=(a);i<(b);i++)
#define FOR2(i,a,b) for(int i=(a);i<=(b);i++)
#define DWN(j,b,a) for(int j=(b);j>=(a);j--)
#define SETN1(a) memset(a,-1,sizeof(a))
#define SET0(a) memset(a,0,sizeof(a))
#define pb push_back
#define IOS ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define int long long
//#define int __int128
#define lowbit(x) ((x)&(-x))
const int INF=0x3f3f3f3f;
const int NINF=-INF-1;
const double PI=acos(-1);
const int mod=1e9+7;
const int maxn=1e5+50;
const double eps=1e-8;
using namespace std;
void read() {}
template<typename T,typename... T2>inline void read(T &x,T2 &... oth) { x=0;int ch=getchar(),f=0;while(ch<'0'||ch>'9') { if (ch=='-') f=1;ch=getchar();}while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}if(f)x=-x;read(oth...);}
inline void write(int a) {if(a<0) putchar('-'),a=-a;if(a>=10)write(a/10);putchar(a%10+48);}
int a[101];
signed main() {
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    //IOS;
    int t;read(t);
    while(t--) {
        int n,u,v;
        read(n,u,v);
        bool flag=0;
        FOR2(i,1,n) {
            read(a[i]);
            if(i!=1&&a[i]!=a[i-1]) flag=1;
        }
        bool flag1=0;
        FOR2(i,2,n) {
            if(abs(a[i-1]-a[i])>1) {
                flag1=1;
                break;
            }
        }
        int ans;
        if(flag1) ans=0;
        else if(flag) ans=min(u,v);
        else ans=min(2*v,u+v);
        write(ans),putchar('\n');
    }
    return 0;
}