#include <bits/stdc++.h>
using ll = long long;
using ld = long double;
using ull = unsigned long long;
using namespace std;
template <class T>
using Ve = vector<T>;
#define ALL(v) (v).begin(), (v).end()
#define pii pair<ll, ll>
#define rep(i, a, b) for(ll i = (a); i <= (b); ++i)
#define per(i, a, b) for(ll i = (a); i >= (b); --i)
#define pb push_back
bool Mbe;
ll read() {
ll x = 0, f = 1; char ch = getchar();
while(ch < '0' || ch > '9') {if(ch == '-') f = -1; ch = getchar();}
while(ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
return x * f;
}
void write(ll x) {
if(x < 0) putchar('-'), x = -x;
if(x > 9) write(x / 10);
putchar(x % 10 + '0');
}
const ll N = 6e5 + 9, INF = 1e9;
ll n, m, a[N], b[N], pos[N], bel[N];
Ve<ll> vec[N];
ll tr[N << 2], tag[N << 2];
void Pushtag(ll x, ll k) {
tr[x] += k, tag[x] += k;
}
void Pushup(ll x) {
tr[x] = min(tr[x << 1], tr[x << 1 | 1]);
}
void Build(ll x, ll l, ll r) {
tag[x] = 0;
if(l == r) return tr[x] = (-l % m + m) % m, void();
ll mid = (l + r) >> 1;
Build(x << 1, l, mid), Build(x << 1 | 1, mid + 1, r);
Pushup(x);
}
void Pushdown(ll x) {
if(!tag[x]) return ;
Pushtag(x << 1, tag[x]);
Pushtag(x << 1 | 1, tag[x]);
tag[x] = 0;
}
void Upd(ll x, ll l, ll r, ll ql, ll qr, ll k) {
if(ql <= l && r <= qr) return Pushtag(x, k), void();
ll mid = (l + r) >> 1;
Pushdown(x);
if(ql <= mid) Upd(x << 1, l, mid, ql, qr, k);
if(qr > mid) Upd(x << 1 | 1, mid + 1, r, ql, qr, k);
Pushup(x);
}
set<ll> S;
void Ext(ll x, ll l, ll r) {
if(tr[x]) return ;
if(l == r) {
tr[x] = INF;
if(!vec[l].empty()) S.insert(l);
return ;
}
ll mid = (l + r) >> 1;
Pushdown(x);
Ext(x << 1, l, mid), Ext(x << 1 | 1, mid + 1, r);
Pushup(x);
}
void solve() {
n = read(), m = read();
rep(i, 1, n * m) a[i] = read();
rep(i, 0, n * m * 2) pos[i] = 0, vec[i].clear();
rep(i, 1, n * m) b[i] = read(), pos[b[i]] = i;
rep(i, 1, n * m) bel[i] = (i - 1) / m + 1;
bool ok = 0;
ll ed = n * m;
rep(i, 1, n * m) {
if(!pos[a[i]]) ok = 1;
else if(i > 1) {
if(pos[a[i]] - i < pos[a[i - 1]] - (i - 1)) ok = 1;
if(pos[a[i - 1]] < m * bel[i - 1] && pos[a[i]] - i > pos[a[i - 1]] - (i - 1)) ok = 1;
}
if(ok) {
ll L = (bel[i] - 1) * m + 1;
if(L + (L + m - i) > pos[a[L]]) ed = L - 1;
else ed = i - 1;
break;
}
}
write(n * m - ed), putchar('\n');
if(ed == n * m) return ;
Ve<pii> ans;
if(ed == 0) {
per(i, n * m, 1) ans.pb({1, b[i]});
}
else {
ll j = 0;
rep(i, 1, ed) {
++j;
while(b[j] != a[i]) vec[i - 1].pb(b[j]), ++j;
}
rep(i, pos[a[ed]] + 1, n * m) vec[ed].pb(b[i]);
S.clear();
Build(1, 0, ed), Ext(1, 0, ed);
while(!S.empty()) {
ll u = *S.rbegin();
ans.pb({bel[u] + 1, vec[u].back()});
vec[u].pop_back();
if(u < ed) Upd(1, 0, ed, u + 1, ed, -1);
if(vec[u].empty()) S.erase(u);
Ext(1, 0, ed);
}
}
for(auto [u, v] : ans) write(u), putchar(' '), write(v), putchar('\n');
}
bool Med;
int main() {
cerr << fabs(&Med - &Mbe) / 1048576.0 << "MB\n";
ll T = read();
while(T--) solve();
cerr << "\n" << clock() * 1.0 / CLOCKS_PER_SEC * 1000 << "ms\n";
return 0;
}
/*
....:---:::::::..::-=====--:--::---===. :=====---=======++++++==+++++++****+*++++***++=++=-==
.....:---::::. .:-==-::-==--=====. ::-=====--========*******+++++*********===+**#*++**+++=
......:-::::. .--:::----=+++=: .=+======+-======+==*******+++**********=-==++*****+++==:
.......::::-. .--:::--=++++=: . .=======+=-===++++++*************######=-====+***#*+++==:
.......::::-==. .-:---:-=+**+=-:. ...-=====+=-==+++++++*######****#######*=-======*####***=::
......::::---=- : .:-:.-==::===++=------===========++++++++*#############%%%#*=======-=+#%%%#=:...
::::::::::-----:..::-::..:-:--====**+===============++++++++*########%%%%%%##*+=+++=======+#%%%#:...
::::::::-:-----=====--==+++***######%%####***++===+++++++++*#######%%%%%#*++====+++++======+##%%%:..
::::::::-------===+++++*******#######%%%%%%%%%%%%#######**#%%%%%%%%%%%%%%%%%%##*++==+++====+*%%@@=-=
:::::::::----==+++++++*********######%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+=++++++++*#=..:
:::::::::-=++++++++++***********########%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++++=---:.-=
:::::::-=+++++++++++++++***********#######%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++++=-==-.-%
:::::-++++++++++++++++++++++++++********######%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=+===**=--
::::-+++++++++++++++++++++++++++++++++*******#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+=--**=-=
::::=++++++++++++++++==============++++++++++******######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@*==*++===
::::=++++++++++=================+=+++++++++++++++++*******#############%%%%%@@@@@@@@@@@@@@@@++*++===
::::=+++++++=====--========++++++++++++++++===++++++++++++++++++++*******###%%%%@@@@@@@@@@@@%=+++===
:::::=++++=====-==========+++++++++++++++++++++=+++++*********+++++++++*****###%%%@@@@@@@@@@@#=++===
::::::=++========----====+++++++++++++=-----+*%#*++*****#####*****++++********###%%%@@@@@@@@@@#=+===
:::::::-=+=======-::--===++++++++++**-:....:+:=@@%++**###########***++++********###%%%@@@@@@@@@#====
:::::::::-======-:..-:===+++++++++**+::........*@@#=**##############**++++*++*****##%%%%@@@@@@@@*+==
::::::::--:-====-....:===+++++++++***:........:*@@*+**#######%%%%%####**+=++++++****###%%%@@@@@@%*==
::::::::------==-:...-===+++++++++***=::....:-*@%*+**########%%%%%######**===++++++***##%%@@@@@@@#==
::::::::::----==--::-====+++++++++****+==--=+*#*****##########%%%%%%#####**=---==-==++***+*%@@@@@#==
:::::::::---:-===========+++++++++*****************############%%%%#######**+- :..:-=+=:..:*%@@%#+*
:::::::::::--=============+++++++++****************#############%########****=. ======+++===+*#%%#+#
:::::::-...:-=============+++++++++++*************######################**++**--+=+===+++++***+-=*+*
::....-------===============++++++++++*************#####################**+=+*+====+++++++++++=:.-**
::...:---================++++++++++++++************#####################*+===*====+++++++++++++++***
:::--====================--=+++++++++++++***********###################**+=--======++++++++*++++**++
::.:-==================== =+++++++++++++***********#################**++=----========+++++++++**=:
:...-=====================-==+++++++++++++++***********##############**++==----==============+++**=:
:::::--======-==================+++++++++++++************#########****+++==----==============+++*#=:
--:-------------==================+++++++++++++**********************+++===--================+++*#=:
--------:::------===================+++++++++++++******************+++++===-================+++*##=:
------==::::::-----===================+++++++++++++++++******+++++++++++++===================+*###=:
======+=::::::::::---======================++++++++++++++++++++++++++++++++================+##*****+
++==+++=:::::::::::::---======================================++++++***++++++=+==+==+===+++#@%++++++
++++++++:::::::::::::::--==============----------------=====++++++*********++++++++++++++=-#@@*=++++
**++++++-::::::::::::----============-------------========++++++**************+++++++++++..+@@%=++++
=======-:::::::::::::::::-============---------========+++++++************************+*=..=%@@+++++
******#+:::::::::::-------===========================++++++*****************************-..-#@@*=+++
********-::---------------========================++++++++******************************:..:*@@#=+++
++++++++-------------===========================++++++++*******************#####*******+...:+%@%++++
+++++++*=-------========++==================++++++++++*****************###########*****+...:=#@@++++
+++++++*=-=======++++++++++============++++++++++*******************###############****+...-=*@@*+++
+++++++*========+++++++++++=========+++++++++++***********#*********################***+..-==*@@*=++
+++++++*+======++++++++++++=======++++++++++++**********#########**#################***+.:-:-*@@*+++
+++++++*======++++++++++++======+++++++++++++++*********############################***+:.:.-*%@#=++
++++++++=======+++++++++++=====+++++++++++++++**********############################****:...-+%@#=++
*/