#include #include #include #include #include #include using namespace std; int n,a[65],vis[65],sum; bool cmp(int a,int b) { return a>b; } int dfs(int now,int len,int pos,int q,int num) { int i,j; int cut; cut=0; if(len==0)cut=1; if(num==0) return 1; if(q%2!=(len+num*now)%2) return 0; for(i=pos;inow) continue; if(vis[i])continue; vis[i]=1; if(a[i]+len==now) { if(a[i]%2==1) { if(dfs(now,0,0,q-1,num-1)) return 1; } else { if(dfs(now,0,0,q,num-1)) return 1; } vis[i]=0; return 0; } else { if(a[i]%2==1) { if(dfs(now,len+a[i],i+1,q-1,num)) return 1; } else { if(dfs(now,len+a[i],i+1,q,num)) return 1; } vis[i]=0; if(cut) return 0; while(i