#include <bits/stdc++.h>
using namespace std;
int main() {
  int t;
  cin >> t;
  for (int k = 0; k < t; k++) {
    int n, m;
    cin >> n >> m;
    vector<vector<int>> a(n, vector<int>(m));
    vector<pair<int, int>> nach(n);
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        cin >> a[i][j];
        if (j == 0) {
          nach[i] = {a[i][j], i};
        }
      }
    }
    sort(nach.begin(), nach.end());
    vector<pair<int, int>> vozm(n);
    vector<int> z(n);
    for (int i = 0; i < m; i++) {
      for (int j = 0; j < n; j++) {
        cin >> vozm[j].first;
        vozm[j].second = j;
      }
      sort(vozm.begin(), vozm.end());
      int ff = 0;
      for (int h = 0; h < n; h++) {
        if (vozm[h].first != nach[h].first) {
          ff = 1;
          break;
        }
      }
      if (ff == 0) {
        for (int h = 0; h < n; h++) {
          nach[h].first = vozm[h].second;
        }
        sort(nach.begin(), nach.end());
        for (int h = 0; h < n; h++) {
          for (int l = 0; l < m; l++) {
            cout << a[nach[h].second][l] << ' ';
          }
          cout << endl;
        }
      }
    }
  }
  return 0;
}
