#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,a,n) for(int i=(a); i<(int)(n); i++) #define rep(i,n) REP(i,0,n) #define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it) #define ALLOF(c) (c).begin(), (c).end() typedef long long ll; string memo[505][505]; struct ST { int X; }; bool operator<(const ST& a, const ST& b){ if(memo[a.X][b.X] == "<") return true; if(memo[a.X][b.X] == ">") return false; if(memo[b.X][a.X] == ">") return true; if(memo[b.X][a.X] == "<") return false; return true; } int main(){ int N; cin >> N; vector< pair > v; rep(i,N){ REP(j,i+1,N){ v.push_back(make_pair(i+1,j+1)); } } int idx = 0; while(idx < v.size()){ cout << "?"; int bgn = idx; rep(i,N){ if(idx> tmp; if(tmp == "="){ ; }else{ memo[v[bgn].first][v[bgn].second] = tmp; bgn++; } } } vector w; rep(i,N){ w.push_back((ST){i+1}); } sort(ALLOF(w)); cout << "!"; rep(i,N){ cout << " " << w[i].X; } cout << endl; return 0; }