#include <bits/stdc++.h>
using namespace std;
#define ll long long int
#define ll                    long long int
#define ull                   unsigned long long int
#define loop(i,a,b)          for(ll i=(ll)a;i<=(ll)b;i++)
#define count_1(n)            __builtin_popcountll(n)
#define pb                    push_back
#define eb                    emplace_back
#define ab(a)                 (a<0)?(-1*a):a
#define pc                    putchar
#define gc                    getchar
#define mset(a,b,c)           loop(i,0,b) a[i]=c
#define F                     first
#define S                     second
#define mp                    make_pair
#define clr(x)                x.clear()
#define MAX                   1e9
#define MIN                   -1e9
#define itoc(c)               ((char)(((int)'0')+c))
#define vi                    vector<int>
#define vvi                   vector<vi>
#define pll                   pair<ll,ll>
#define pii                   pair<int,int>
#define all(p)                p.begin(),p.end()
#define max(x,y)              ((x>y)?x:y)
#define min(x,y)              ((x<y)?x:y)
#define mid(s,e)              (s+(e-s)/2)
const int MX = 10010896;
const int lmt = 3164;
const int N = 10000001;
const int MOD = 1000000007;
#define sv()                  long long int t; cin>>t; while(t--)
const int req=200000;

ll A[req+5],tree[4*req+5];
void build(ll node, ll start, ll end)
{
    if(start == end)
    {
        tree[node] = A[start];
    }
    else
    {
        int mid = (start + end) / 2;
        build(2*node, start, mid);
        build(2*node+1, mid+1, end);
        tree[node] = tree[2*node] + tree[2*node+1];
    }
}
void update(ll node, ll start, ll end, ll idx, ll val)
{
    if(start == end)
    {
        A[idx] += val;
        tree[node] += val;
    }
    else
    {
        ll mid = (start + end) / 2;
        if(start <= idx and idx <= mid)
        {
            update(2*node, start, mid, idx, val);
        }
        else
        {
            update(2*node+1, mid+1, end, idx, val);
        }
        tree[node] = tree[2*node] + tree[2*node+1];
    }
}
int query(int node, int start, int end, int l, int r)
{
    if(r < start or end < l)
    {
        return 0;
    }
    if(l <= start and end <= r)
    {
        return tree[node];
    }
    int mid = (start + end) / 2;
    int p1 = query(2*node, start, mid, l, r);
    int p2 = query(2*node+1, mid+1, end, l, r);
    return (p1 + p2);
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
 
    sv()
    {
        ll i,j,k,n,u,v;
        cin >>n >> u >> v;
        ll arr[n+5];
        for(i=1;i<=n;i++)
        {
            cin >> arr[i];
        }
        ll mini=u+v;
        mini=min(mini,2*v);
        for(i=2;i<=n;i++)
        {
            if(arr[i] < arr[i-1]-1)
            {
            mini=min(0,mini);
            }
            else if(arr[i]==arr[i-1]-1)
            {
                mini=min(u,mini);
                mini=min(v,mini);
            }
            else if(arr[i]> arr[i-1]+1)
            {
                  mini=min(0,mini);
            }
            else if(arr[i]==arr[i-1]+1)
            {
                  mini=min(u,mini);
                  mini=min(v,mini);
            }
            
        }
        cout << mini << endl;
        
    }
  
}