#include #include #include #include using namespace std; const int maxn=125,maxs=8,oo=1000000000; int m,n,s,c[maxn],st[maxn],d[maxn][1<=m+n) return s2==(1<=0) return res; res=oo; if(i>=m) res=dp(i+1,s0,s1,s2); int m0=st[i]&s0,m1=st[i]&s1; s0^=m0; s1=(s1^m1)|m0; s2|=m1; res=min(res,c[i]+dp(i+1,s0,s1,s2)); return res; } int main() { #ifdef local freopen("pro.in","r",stdin); #endif string str; while(getline(cin,str)) { stringstream ss(str); ss>>s>>m>>n; if(s==0) break; for(int i=0;i>c[i]; st[i]=0; while(ss>>x) st[i]|=(1<<(x-1)); } memset(d,-1,sizeof(d)); cout<