$|=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){
	# (a,b)=(lo,hi)
	$z[0]=(0-$amin)+$n*(0-$bmin)+$n;
	for$k(keys(%h)){
		($a,$b)=glob$k;
		if(@{$h{$k}}==2){
			($v0,$v1)=@{$h{$k}};
			print "? $c $v0\n";
			($a1,$b1)=glob<>;
			if($b1-$a1>$bmax-$amin){
				$z[$v0-1]=($b-$amin)+$n*($a-$bmin)+$n;
				$z[$v1-1]=($a-$amin)+$n*($b-$bmin)+$n;
			}else{
				$z[$v0-1]=($a-$amin)+$n*($b-$bmin)+$n;
				$z[$v1-1]=($b-$amin)+$n*($a-$bmin)+$n;
			}
		}else{
			$v=${$h{$k}}[0];
			$z[$v-1]=($a-$amin)+$n*($b-$bmin)+$n;
		}
	}
}else{
	# (a,b)=(hi,lo)
	$z[0]=(0-$bmin)+$n*(0-$amin)+$n;
	for$k(keys(%h)){
		($a,$b)=glob$k;
		if(@{$h{$k}}==2){
			$v0=${$h{$k}}[0];
			$v1=${$h{$k}}[1];
			print "? $c $v0\n";
			($a1,$b1)=glob<>;
			if($b1-$a1>$bmax-$amin){
				$z[$v0-1]=($a-$bmin)+$n*($b-$amin)+$n;
				$z[$v1-1]=($b-$bmin)+$n*($a-$amin)+$n;
			}else{
				$z[$v0-1]=($b-$bmin)+$n*($a-$amin)+$n;
				$z[$v1-1]=($a-$bmin)+$n*($b-$amin)+$n;
			}
		}else{
			$v=${$h{$k}}[0];
			$z[$v-1]=($b-$bmin)+$n*($a-$amin)+$n;
		}
	}
}

print "! @z\n";