#include <bits/stdc++.h>

using namespace std ;

const int MAX = 2e5 + 10 ;

int arr[MAX] ;
int n ;
long long k ;

stack<int>s ;
int L[MAX] , R[MAX] ;

vector< pair<int , int> >vp ;
set<int>st ;

void preprocess()
{
	while(s.size())
		s.pop() ;
	for(int i = 1 ; i <= n ; ++i)
	{
		while(s.size() > 0 && arr[s.top()] % arr[i] == 0)
			s.pop() ;
		if(s.size())
			L[i] = s.top() + 1 ;
		else
			L[i] = 1 ;
		s.push(i) ;
	}
	while(s.size())
		s.pop() ;
	for(int i = n ; i >= 1 ; --i)
	{
		while(s.size() > 0 && arr[s.top()] % arr[i] == 0)
			s.pop() ;
		if(s.size())
			R[i] = s.top() - 1 ;
		else
			R[i] = n ;
		s.push(i) ;
	}
}

int main()
{
	ios_base::sync_with_stdio(0) ;
	cin.tie(0) ;
	int t ;
	cin>>t ;
	while(t--)
	{
		vp.clear() , st.clear() ;
		cin>>n>>k ;
		for(int i = 1 ; i <= n ; ++i)
			cin>>arr[i] ;
		preprocess() ;
		for(int i = 1 ; i <= n ; ++i)
		{
			if(i < n)
				st.insert(i) ;
			vp.emplace_back(arr[i] , i) ;
		}
		sort(vp.begin() , vp.end()) ;
		long long ans = 0 ;
		for(auto &p : vp)
		{
			if(p.first > k)
				break ;
			int i = p.second ; 
			while(st.size())
			{
				auto it = st.lower_bound(L[i]) ;
				if(it == st.end())
					break ;
				int idx = (*it) ;
				if(idx >= R[i])
					break ;
				ans += p.first ;
				st.erase(idx) ;
			}
		}
		ans += 1ll * st.size() * k ;
		cout<<ans<<"\n" ;
	}
	return 0 ;
}		