#include <iostream>
#include <string.h>
using namespace std;
bool can[10001],last[10001];
int main() {
int n;
cin>>n;
while(n--){
memset(can,0,sizeof(can));
memset(last,0,sizeof(last));
int t,k,max,step[100];
bool hole[10001] = {},yes = 0;
cin>>t>>k>>max;
for(int i=0;i<t;i++)
cin>>step[i];
for(int i=0;i<k;i++){
int x;
cin>>x;
hole[x] = 1;
}
can[0] = 1;
bool *now = can,*before = last;
for(int i=0;i<t;i++){
memset(before,0,sizeof(can));
for(int j=0;j<=10000;j++){
if(now[j]){
int next = j+step[i];
if(next<=max&&!hole[next]){
before[next] = 1;
}
next = j-step[i];
if(next>0&&!hole[next])
before[next] = 1;
}
}
bool *temp = now;
now = before;
before = temp;
}
for(int i=max;i>0;i--){
if(now[i]){
cout<<i<<endl;
yes = 1;
break;
}
}
if(!yes)
cout<<"-1"<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJvb2wgY2FuWzEwMDAxXSxsYXN0WzEwMDAxXTsKaW50IG1haW4oKSB7CglpbnQgbjsKCWNpbj4+bjsKCXdoaWxlKG4tLSl7CgkJbWVtc2V0KGNhbiwwLHNpemVvZihjYW4pKTsKCQltZW1zZXQobGFzdCwwLHNpemVvZihsYXN0KSk7CgkJaW50IHQsayxtYXgsc3RlcFsxMDBdOwoJCWJvb2wgaG9sZVsxMDAwMV0gPSB7fSx5ZXMgPSAwOwoJCWNpbj4+dD4+az4+bWF4OwoJCWZvcihpbnQgaT0wO2k8dDtpKyspCgkJCWNpbj4+c3RlcFtpXTsKCQlmb3IoaW50IGk9MDtpPGs7aSsrKXsKCQkJaW50IHg7CgkJCWNpbj4+eDsKCQkJaG9sZVt4XSA9IDE7CgkJfQoJCWNhblswXSA9IDE7CgkJYm9vbCAqbm93ID0gY2FuLCpiZWZvcmUgPSBsYXN0OwoJCWZvcihpbnQgaT0wO2k8dDtpKyspewoJCQltZW1zZXQoYmVmb3JlLDAsc2l6ZW9mKGNhbikpOwoJCQlmb3IoaW50IGo9MDtqPD0xMDAwMDtqKyspewoJCQkJaWYobm93W2pdKXsKCQkJCQlpbnQgbmV4dCA9IGorc3RlcFtpXTsKCQkJCQlpZihuZXh0PD1tYXgmJiFob2xlW25leHRdKXsKCQkJCQkJYmVmb3JlW25leHRdID0gMTsKCQkJCQl9CgkJCQkJbmV4dCA9IGotc3RlcFtpXTsKCQkJCQlpZihuZXh0PjAmJiFob2xlW25leHRdKQoJCQkJCQliZWZvcmVbbmV4dF0gPSAxOwoJCQkJfQoJCQl9CgkJCWJvb2wgKnRlbXAgPSBub3c7CgkJCW5vdyA9IGJlZm9yZTsKCQkJYmVmb3JlID0gdGVtcDsKCQl9CgkJZm9yKGludCBpPW1heDtpPjA7aS0tKXsKCQkJaWYobm93W2ldKXsKCQkJCWNvdXQ8PGk8PGVuZGw7CgkJCQl5ZXMgPSAxOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJaWYoIXllcykKCQkJY291dDw8Ii0xIjw8ZW5kbDsKCX0KCXJldHVybiAwOwp9