#include using namespace std; bool eval(long long n, vector &cards, vector &cols, long long &v, long long numrule, long long lastrule) { if(n==1) { if(cards.size()>=4) { v++; long long numj=0; for(auto c : cards) { if(c==11) numj++; } v+=min(10LL,cards[0])*numj; return 1; } return 0; } if(n==2) { vector seen(4,0); for(auto c : cols) { if(seen[c]) { v*=2; return v!=0; } seen[c]=1; } return 0; } if(n==3) { vector seen(4,0); for(auto c : cols) { seen[c]=1; } for(auto s : seen) { if(!s) return 0; } v*=2; return v!=0; } if(n==4) { long long nb = 0, nr=0; for(auto c : cols) { if(c<2) nr++; else nb++; } if(nb==nr) return 0; v+=abs(nb-nr); return 1; } if(n==5) { if(v%2) return 0; long long toadd=0; for(long long i=1; i*i<=v; i++) { if(v%i == 0) { toadd += v/i+i; } if(i*i==v) toadd-=i; } v+=toadd; return 1; } if(n==6) { long long sevens=0; for(auto c: cards) { if(c==7) sevens++; } if(sevens==4) { v-=11*11; return 1; } return 0; } if(n==7) { if(v>=0) { long long m=20; for(auto c: cards) { m=min(m,c); } m=min(m,10LL); v+=m; return 1; } return 0; } if(n==8) { if(v<0) { v*=-1; return 1; } return 0; } if(n==9) { long long d=0; for(auto c: cols) { if(c==0) d++; } if(d>=3) { v+=1; for(long long i=0; i p(20,0); for(auto c: cards) { p[c]=1; } long long last=0; for(long long i = 0; i=5) { long long numa=0; for(auto c: cards) { if(c==14) numa++; } if(numa) { v+=numa*5; return 1; } return 0; } } return 0; } if(n==11) { if(numrule>8) { long long vv = v, r=0; while(vv) { if(vv%2) { v++; r=1; } vv/=2; } return r; } return 0; } if(n==12) { for(auto c:cards) { if(c==2) { eval(lastrule, cards, cols, v, numrule, lastrule); return 1; } } return 0; } if(n==13) { for(auto c:cards) { if(c==2) { long long mul = 1; if(v!=0 && v!=1) { mul*=v; } v+=mul; return 1; } } return 0; } } int main() { string s; vector cards(5); vector cols(5); long long v=0; for(long long i=0; i<5; i++) { cin >> s; if(s.back()=='D') { cols[i]=0; } if(s.back()=='H') { cols[i]=1; } if(s.back()=='C') { cols[i]=2; } if(s.back()=='S') { cols[i]=3; } if(s[0]<='9' && s[0]>='2') { cards[i]=s[0] - '0'; } if(s[0]=='1') { cards[i]=10; } if(s[0]=='J') { cards[i]=11; } if(s[0]=='Q') { cards[i]=12; } if(s[0]=='K') { cards[i]=13; } if(s[0]=='A') { cards[i]=14; } v += min(cards[i],10LL); } /* for(auto c:cards) { cout << c << " "; } cout << endl; for(auto c:cols) { cout << c << " "; } cout << endl; */ long long numrule=0, lastrule=0, ret=0; for(long long i = 1; i<14; i++) { ret = eval(i, cards, cols, v, numrule, lastrule); if(ret) { numrule++; lastrule=i; } } cout << v; cout << endl; }