#include #include #include #include using namespace std; template bool is_all1(Iterator begin,Iterator end) { for(Iterator itr = begin;itr!=end;++itr) { if(*itr=='0'){ return false; } } return true; } template void dump(Iterator begin,Iterator end) { for(Iterator itr = begin;itr!=end;++itr) { cout << *itr << ","; } cout << endl; } bool reverse_coin(string& s,int index) { if(s[index]=='0'){ s[index]='1'; }else{ s[index]='0'; } } bool solve(const vector& coins,string coin_state,map& pattern) { //dump(coin_state.begin(),coin_state.end()); if(is_all1(coin_state.begin(),coin_state.end())) { return true; } if(pattern[coin_state]) { return false; } pattern[coin_state]=true; for(int i=0;i coins; cin >> n; string coin_state; for(int i=0;i> d; coins.push_back(d); } for(int i=0;i> w; coin_state+=w+'0'; } map pattern; cout << (solve(coins,coin_state,pattern)?"Yes":"No") << endl; }