#include #include #include #include using namespace std; #define cin fin ifstream fin("match.txt"); #define NIL (-1) class Person { public: vector pref, rank; int cursor; void read( int nperson ) { pref.resize(nperson), rank.resize(nperson); for ( int i = 0; i < nperson; i++ ) cin >> pref[i], pref[i]--, rank[pref[i]] = i; cursor = 0; } void nextLover() { cursor++; } int getLover() { return pref[cursor]; } bool isBetterLover( int newOne, int oldOne ) { return (rank[newOne] < rank[oldOne]); } }; void determine( int m, vector &pm, vector &M, vector &W ) { while ( true ) { const int w = M[m].getLover(); if ( pm[w] == NIL ) { pm[w] = m; break; } if ( W[w].isBetterLover(m, pm[w]) ) swap(m, pm[w]); M[m].nextLover(); } } int main() { int ntest; cin >> ntest; for ( int nt = 0; nt < ntest; nt++ ) { // 好きな順番で入ってくる. int nperson; cin >> nperson; vector M(nperson), W(nperson); for ( int i = 0; i < nperson; i++ ) M[i].read(nperson); for ( int i = 0; i < nperson; i++ ) W[i].read(nperson); vector partnerMan(nperson, NIL); for ( int m = 0; m < nperson; m++ ) determine(m, partnerMan, M, W); cout << M[0].getLover()+1; for ( int i = 1; i < nperson; i++ ) cout << ' ' << M[i].getLover()+1; cout << endl; } return 0; }