$|=1; $n=<>; for$v(2..$n*($n-1)){ print "? $v 1\n"; $k=<>; ($a,$b)=glob$k; push @{$h{$k}},$v; $amin=$a if $amin>$a; $amax=$a if $amax<$a; $bmin=$b if $bmin>$b; $bmax=$b if $bmax<$b; $c=$v if $a==$amin && $b==$bmax; } if($amax-$amin>$bmax-$bmin){ $na=1; $nb=$n; }else{ $na=$n; $nb=1; } sub mkn{ ($_[0]-$amin)*$na+($_[1]-$bmin)*$nb+$n; } $z[0]=mkn(0,0); for$k(keys(%h)){ ($a,$b)=glob$k; ($v0,$v1)=@{$h{$k}}; if($v1){ print "? $c $v0\n"; ($a1,$b1)=glob<>; if($b1-$a1>$bmax-$amin){ ($v0,$v1)=($v1,$v0); } $z[$v1-1]=mkn($b,$a); } $z[$v0-1]=mkn($a,$b); } print "! @z\n";