use feature 'say'; $|=1; $,=$"; $n=<>; $i=1; $j=1; $b=1; while(@a<$n){ $a=-1; while($a+1<$b){ $c=$a<0?0:$a+$b>>1; say"?",$c+$j,@a[0..$c-1],($i)x$j; ${<>=~Y?a:b}=$c; } if($a<0){ ++$i; $j=1; $b=@a+1; }else{ splice@a,$a,0,$i; ++$j; } } say"!",@a;