#include "bits/stdc++.h" using namespace std; #define FOR(i,j,k) for(int (i)=(j);(i)<(int)(k);++(i)) #define rep(i,j) FOR(i,0,j) #define each(x,y) for(auto &(x):(y)) #define mp make_pair #define all(x) (x).begin(),(x).end() #define debug(x) cout<<#x<<": "<<(x)< pii; typedef vector vi; typedef vector vll; string nstr(){ static const int MAX_LEN = 100001; static char res_[MAX_LEN]; scanf("%s",res_); return string(res_); } int N; vector q1_(){ vector res(N); rep(i, N)res[i] = nstr(); return res; } vector q1(vi &lr){ printf("?"); rep(i, N*2) printf(" %d", lr[i]); printf("\n"); fflush(stdout); return q1_(); } void q2(vi &ans){ printf("!"); rep(i, sz(ans))printf(" %d", ans[i]); printf("\n"); fflush(stdout); } int main(){ scanf("%d", &N); q1_(); vi ans(N); iota(all(ans), 1); int ok = 1; do{ ok = 1; rep(s, 2){ vi Q(N * 2); FOR(i, s, N)Q[i - s] = ans[i]; auto C = q1(Q); for(int i = 0, j = 0; i < N && s + i * 2 + 1 < N; i += 2, ++j){ char c = C[j][0]; if(c == '>'){ ok = 0; swap(ans[s + i * 2], ans[s + i * 2 + 1]); } } } } while(ok); q2(ans); }