int main(){ int n;cin>>n; for(int i=0;i<n;++i){ int t;cin>>t; if(t&1)o.pb(t); else e.pb(t); } sort(o.begin(),o.end()); reverse(o.begin(),o.end()); // sort(e.begin(),e.end()); reverse(e.begin(),e.end()); int mx=o[0],now=o[0]; for(int i=1;i+1<o.size();i+=2){ now+=o[i]+o[i+1]; mx=max(mx,now); } for(int i:e)if(i>0)mx+=i; cout<<mx<<endl; }
void even(int n){ int ptr=upper_bound(p.begin(),p.end(),n>>1)-p.begin()-1; while(ptr>=0){ if(sp.find(n-p[ptr])!=sp.end()){ printf("2 %d %d\n",p[ptr],n-p[ptr]); return; } --ptr; } }
int main(){ int ts; cin>>ts; while(ts--){ pos.clear(); int n,k; cin>>n>>k; for(int i=0,t;i<n;++i){ cin>>t; pos.pb(t); } sort(pos.begin(),pos.end()); int L=0,R=1000000000,M; while(R>L){ M=(L+R)>>1; if(can(M,k))R=M; else L=M+1; } cout<<L<<endl; } }
bool dfs(int n,int lft){ if(lft==1){ if(sp.find(n)!=sp.end()){ oa[0]=n;return 1; } return 0; } else if(lft==2){ int ptr=upper_bound(p.begin(),p.end(),n>>1)-p.begin()-1; while(ptr>=0){ oa[1]=p[ptr]; if(dfs(n-p[ptr],lft-1))return 1; } --ptr; return 0; }