//interactive int @id,@n,@m,a[m+1]{},h[m+1]{},v[m+1]; rep(n){ int @c; a[c]=h[c]+=1; } sortA_index(m+1,h,v); int a_num=1; int a_pos=0; int a_sum=0; int a_asked=-1; int b[m+1]{}; int b_num=1; int b_sum=0; int b_asked=-1; int r_sum=0; int r[m+1]; rep(i,m+1){ r[i]=-1; } while(h[a_pos]==0){ ++a_pos; } int waiting=0; while(1){ waiting>>=1; string @s; if(s=="TURN"){ if(a_sumn){ a_sum=n; }else{ if(h[a_pos]==a_num){ ++a_pos; if(v[a_pos-1]>v[a_pos]){ ++a_num; } }else{ ++a_num; } } }else{ if(r_sum=0){ ++i; } wt("ASK",i); }else{ wtN("GUESS"); rep(i,1,m+1){ rep(r[i]-a[i]-b[i]){ wtN(" ",i); } } wt(""); } } } if(s=="WAIT"){ waiting=2; } if(s=="END"){ exit(0); } if(s=="COUNT"){ int @x,@k; if(r[x]<0){ r[x]=k; r_sum+=k; } if(waiting){ if(b_sumn){ b[x]+=n-b_sum; b_sum=n; } } } } if(s=="GUESSED"){ int @x,@k; } }