#include <bits/stdc++.h>
#define cincout
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) > (b) ? (a) : (b))
#define abs(x) ((x) < 0 ? -(x) : (x))
using namespace std;
typedef long long ll;
priority_queue <ll, vector <ll>, greater <ll> > dryer;
ll tmp_ans,mid,le,ri,tmp_processed,t,l,n,m,d,wash[100005],tmp;
int tcs;
vector <ll> washes;
int main() {
#ifdef cincout
cin.sync_with_stdio(0);
cin.tie(0);
#endif
cin >> t; tcs=0;
while (t--) {
++tcs;
cin >> l >> n >> m >> d;
for (int i=0;i<n;++i) cin >> wash[i];
while (!dryer.empty()) dryer.pop();
m=min(l,m);
tmp_ans=3000000000000000LL;
le=0; ri=3000000000000000LL;
while (le<=ri) {
mid=(le+ri)>>1;
tmp_processed=0;
for (int i=0;i<n;++i) tmp_processed+=mid/wash[i];
if (tmp_processed>=l) {
tmp_ans=min(mid,tmp_ans);
ri=mid-1;
} else le=mid+1;
}
washes.clear();
for (int i=0;i<n;++i) {
tmp=tmp_ans/wash[i];
for (ll j=1;j<=tmp;++j) washes.push_back(wash[i]*j);
}
sort(washes.begin(),washes.end());
for (int i=0;i<m;++i) dryer.push(0);
for (int i=0;i<l;++i) {
tmp=dryer.top();
dryer.pop();
dryer.push(max(tmp,washes[i])+d);
}
while (!dryer.empty()) {
tmp=dryer.top();
dryer.pop();
}
cout << "Case #" << tcs << ": " << tmp << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgY2luY291dAojZGVmaW5lIG1pbihhLGIpICgoYSkgPCAoYikgPyAoYSkgOiAoYikpCiNkZWZpbmUgbWF4KGEsYikgKChhKSA+IChiKSA/IChhKSA6IChiKSkKI2RlZmluZSBhYnMoeCkgKCh4KSA8IDAgPyAtKHgpIDogKHgpKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCnByaW9yaXR5X3F1ZXVlIDxsbCwgdmVjdG9yIDxsbD4sIGdyZWF0ZXIgPGxsPiA+IGRyeWVyOwpsbCB0bXBfYW5zLG1pZCxsZSxyaSx0bXBfcHJvY2Vzc2VkLHQsbCxuLG0sZCx3YXNoWzEwMDAwNV0sdG1wOwppbnQgdGNzOwp2ZWN0b3IgPGxsPiB3YXNoZXM7CgppbnQgbWFpbigpIHsKCSNpZmRlZiBjaW5jb3V0CgkJY2luLnN5bmNfd2l0aF9zdGRpbygwKTsKCQljaW4udGllKDApOwoJI2VuZGlmCgljaW4gPj4gdDsgdGNzPTA7Cgl3aGlsZSAodC0tKSB7CgkJKyt0Y3M7CgkJY2luID4+IGwgPj4gbiA+PiBtID4+IGQ7CgkJZm9yIChpbnQgaT0wO2k8bjsrK2kpIGNpbiA+PiB3YXNoW2ldOwoJCXdoaWxlICghZHJ5ZXIuZW1wdHkoKSkgZHJ5ZXIucG9wKCk7CgkJbT1taW4obCxtKTsKCQl0bXBfYW5zPTMwMDAwMDAwMDAwMDAwMDBMTDsKCQlsZT0wOyByaT0zMDAwMDAwMDAwMDAwMDAwTEw7CgkJd2hpbGUgKGxlPD1yaSkgewoJCQltaWQ9KGxlK3JpKT4+MTsKCQkJdG1wX3Byb2Nlc3NlZD0wOwoJCQlmb3IgKGludCBpPTA7aTxuOysraSkgdG1wX3Byb2Nlc3NlZCs9bWlkL3dhc2hbaV07CgkJCWlmICh0bXBfcHJvY2Vzc2VkPj1sKSB7CgkJCQl0bXBfYW5zPW1pbihtaWQsdG1wX2Fucyk7CgkJCQlyaT1taWQtMTsKCQkJfSBlbHNlIGxlPW1pZCsxOwoJCX0KCQl3YXNoZXMuY2xlYXIoKTsKCQlmb3IgKGludCBpPTA7aTxuOysraSkgewoJCQl0bXA9dG1wX2Fucy93YXNoW2ldOwoJCQlmb3IgKGxsIGo9MTtqPD10bXA7KytqKSB3YXNoZXMucHVzaF9iYWNrKHdhc2hbaV0qaik7CgkJfQoJCXNvcnQod2FzaGVzLmJlZ2luKCksd2FzaGVzLmVuZCgpKTsKCQlmb3IgKGludCBpPTA7aTxtOysraSkgZHJ5ZXIucHVzaCgwKTsKCQlmb3IgKGludCBpPTA7aTxsOysraSkgewoJCQl0bXA9ZHJ5ZXIudG9wKCk7CgkJCWRyeWVyLnBvcCgpOwoJCQlkcnllci5wdXNoKG1heCh0bXAsd2FzaGVzW2ldKStkKTsKCQl9CgkJd2hpbGUgKCFkcnllci5lbXB0eSgpKSB7CgkJCXRtcD1kcnllci50b3AoKTsKCQkJZHJ5ZXIucG9wKCk7CgkJfQoJCWNvdXQgPDwgIkNhc2UgIyIgPDwgdGNzIDw8ICI6ICIgPDwgdG1wIDw8ICdcbic7Cgl9CglyZXR1cm4gMDsKfQo=