#include <bits/stdc++.h>
using namespace std;
#define int long long
int T, x, y, k, a[110], dp[110][2];
vector <int> num;
void solve () {
if (num[0]) dp[0][1] = dp[0][0] = a[0];
else dp[0][0] = 0;
for (int i = 1; i < num.size(); i ++) {
if (num[i]) {
dp[i][0] = dp[i - 1][0] + a[i];
dp[i][1] = min(dp[i - 1][0] + a[i], dp[i - 1][1]);
} else {
dp[i][0] = min(dp[i - 1][0], dp[i - 1][1] + a[i]);
dp[i][1] = dp[i - 1][1] + a[i];
}
}
cout << min(dp[num.size() - 1][0], a[num.size()] + dp[num.size() - 1][1]) << "\n";
}
signed main() {
ios :: sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> T;
while (T --) {
num.clear();
memset(dp, 0x3f, sizeof(dp));
memset(a, 0, sizeof(a));
cin >> x >> y >> k;
if (x > y) swap(x, y);
if (x == y) {
cout << 0 << "\n";
continue;
}
for (int i = 0; i <= k; i ++) {
cin >> a[i];
}
int tx = y - x;
while (tx) {
num.push_back(tx % 2);
tx >>= 1ll;
}
for (int i = 1; i <= k; i ++) a[i] = min(a[i], a[i - 1] << 1ll);
for (int i = k + 1; i <= num.size(); i ++) a[i] = a[i - 1] << 1ll;
solve ();
}
return 0;
}