# hayai kana? sub f{ my($i)=@_; if($a[$i][1]==-2){ $a[$i][0]=-1; }else{ my$c1=$i*2+1; my$c2=$i*2+2; my$c; if($a[$c1][0]<0){ $c=$c2; }elsif($a[$c2][0]<0){ $c=$c1; }elsif($a[$i][1]>=0){ $c=$i[$a[$i][1]]?$c1:$c2; } if($c){ $a[$i][1]=-1; $a[$i][0]=$a[$c][0]; $a[$c][0]=0; } if($a[$c1][0]==0){ f($c1); } if($a[$c2][0]==0){ f($c2); } if($a[$c1][0]>0&&$a[$c2][0]>0){ $a[$i][1]=$iid++; print"? $a[$c1][0] $a[$c2][0]\n"; } } } $n=<>; @a=(map([0,-1],0..$n-2),map([$_,-2],1..$n)); while(@b<$n){ f(0); if($a[0][0]>0){ push@b,$a[0][0]; $a[0][0]=0; } $|=1; $|=0; while(@i<$iid){ push@i,0+<>; } } print"! $#b @b"