#include <bits/stdc++.h>
using namespace std;
#define ll long long
/*
ALTERNATING OPERATIONS:
op[1] => odd => delete from front
op[2] => even => delete from back
op[3] => odd => delete from front
.
.
.
op[n] => delete last element from arr
element closest to center of arr is the one that requires the most operations to delete => ans
EXAMPLE:
8 3
1 2 3 4 5 5 5 6
2 5 6
middle at indices 3,4
2 => at index 1 => dist = 3-1 = 2
5 => at index 4 => dist = 4-4 = 0
6 => at index 7 => dist = 7-4 = 3
element 5 is closest to center at index 4
OPERATIONS:
1 => remove 1 & 6
2 => remove 2 & 5
3 => remove 3 & 5
4 => remove 4 & 5
total elements removed = 8
Simulate using two pointers
OR:
for alternating operations:
FROM LEFT:
element at index i = 0, deletion requires 1 operation
element at index i = 1, deletion requires 3 operations => 0, n-1, 1
element at index i = 2, deletion requires 5 operations => 0, n-1, 1, n-2, 2
.
.
.
deleting from left: 2*(i+1)-1
FROM RIGHT:
element at index i = n-1, deletion requires 2 operations
element at index i = n-2, deletion requires 4 operations => 0, n-1, 1, n-2
element at index i = n-3, deletion requires 6 operations => 0, n-1, 1, n-2, 2, n-3
.
.
.
deleting from right: 2*(n-i)
*/
void mohemmat() {
int n, m; cin >> n >> m;
vector<int> a(n);
unordered_set<int> b;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
for (int i = 0; i < m; i++) {
int x; cin >> x;
b.insert(x);
}
// FROM CLAUDE
int ans = 0;
for (int i = 0; i < n; i++) {
if (b.count(a[i])) {
int cost = min(2*(i+1)-1, 2*(n-i));
/*
0-index i:
COST OF DELETION FROM LEFT: 2*(i+1)-1
COST OF DELETION FROM RIGHT: 2*(n-i)
*/
ans = max(ans, cost);
}
}
cout << ans << '\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t = 1;
cin >> t;
while (t--) {mohemmat();}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCgovKgogICAgQUxURVJOQVRJTkcgT1BFUkFUSU9OUzoKICAgIG9wWzFdID0+IG9kZCA9PiBkZWxldGUgZnJvbSBmcm9udAogICAgb3BbMl0gPT4gZXZlbiA9PiBkZWxldGUgZnJvbSBiYWNrCiAgICBvcFszXSA9PiBvZGQgPT4gZGVsZXRlIGZyb20gZnJvbnQKICAgIC4KICAgIC4KICAgIC4KICAgIG9wW25dID0+IGRlbGV0ZSBsYXN0IGVsZW1lbnQgZnJvbSBhcnIKCiAgICBlbGVtZW50IGNsb3Nlc3QgdG8gY2VudGVyIG9mIGFyciBpcyB0aGUgb25lIHRoYXQgcmVxdWlyZXMgdGhlIG1vc3Qgb3BlcmF0aW9ucyB0byBkZWxldGUgPT4gYW5zCgogICAgRVhBTVBMRToKICAgIDggMwogICAgMSAyIDMgNCA1IDUgNSA2CiAgICAyIDUgNgogICAgCiAgICBtaWRkbGUgYXQgaW5kaWNlcyAzLDQKICAgIDIgPT4gYXQgaW5kZXggMSA9PiBkaXN0ID0gMy0xID0gMgogICAgNSA9PiBhdCBpbmRleCA0ID0+IGRpc3QgPSA0LTQgPSAwCiAgICA2ID0+IGF0IGluZGV4IDcgPT4gZGlzdCA9IDctNCA9IDMKICAgIGVsZW1lbnQgNSBpcyBjbG9zZXN0IHRvIGNlbnRlciBhdCBpbmRleCA0CiAgICAKICAgIE9QRVJBVElPTlM6CiAgICAxID0+IHJlbW92ZSAxICYgNgogICAgMiA9PiByZW1vdmUgMiAmIDUKICAgIDMgPT4gcmVtb3ZlIDMgJiA1CiAgICA0ID0+IHJlbW92ZSA0ICYgNQogICAgdG90YWwgZWxlbWVudHMgcmVtb3ZlZCA9IDgKCiAgICBTaW11bGF0ZSB1c2luZyB0d28gcG9pbnRlcnMKCiAgICBPUjoKCiAgICBmb3IgYWx0ZXJuYXRpbmcgb3BlcmF0aW9uczoKICAgIAogICAgRlJPTSBMRUZUOgogICAgZWxlbWVudCBhdCBpbmRleCBpID0gMCwgZGVsZXRpb24gcmVxdWlyZXMgMSBvcGVyYXRpb24KICAgIGVsZW1lbnQgYXQgaW5kZXggaSA9IDEsIGRlbGV0aW9uIHJlcXVpcmVzIDMgb3BlcmF0aW9ucyA9PiAwLCBuLTEsIDEKICAgIGVsZW1lbnQgYXQgaW5kZXggaSA9IDIsIGRlbGV0aW9uIHJlcXVpcmVzIDUgb3BlcmF0aW9ucyA9PiAwLCBuLTEsIDEsIG4tMiwgMgogICAgLgogICAgLgogICAgLgogICAgZGVsZXRpbmcgZnJvbSBsZWZ0OiAyKihpKzEpLTEKCiAgICBGUk9NIFJJR0hUOgogICAgZWxlbWVudCBhdCBpbmRleCBpID0gbi0xLCBkZWxldGlvbiByZXF1aXJlcyAyIG9wZXJhdGlvbnMKICAgIGVsZW1lbnQgYXQgaW5kZXggaSA9IG4tMiwgZGVsZXRpb24gcmVxdWlyZXMgNCBvcGVyYXRpb25zID0+IDAsIG4tMSwgMSwgbi0yCiAgICBlbGVtZW50IGF0IGluZGV4IGkgPSBuLTMsIGRlbGV0aW9uIHJlcXVpcmVzIDYgb3BlcmF0aW9ucyA9PiAwLCBuLTEsIDEsIG4tMiwgMiwgbi0zCiAgICAuCiAgICAuCiAgICAuCiAgICBkZWxldGluZyBmcm9tIHJpZ2h0OiAyKihuLWkpCiovCgp2b2lkIG1vaGVtbWF0KCkgewogICAgaW50IG4sIG07IGNpbiA+PiBuID4+IG07CiAgICB2ZWN0b3I8aW50PiBhKG4pOwogICAgdW5vcmRlcmVkX3NldDxpbnQ+IGI7CiAgICAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKICAgICAgICBpbnQgeDsgY2luID4+IHg7CiAgICAgICAgYi5pbnNlcnQoeCk7CiAgICB9CgogICAgLy8gRlJPTSBDTEFVREUKICAgIGludCBhbnMgPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBpZiAoYi5jb3VudChhW2ldKSkgewogICAgICAgICAgICBpbnQgY29zdCA9IG1pbigyKihpKzEpLTEsIDIqKG4taSkpOwogICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgMC1pbmRleCBpOgogICAgICAgICAgICAgICAgQ09TVCBPRiBERUxFVElPTiBGUk9NIExFRlQ6IDIqKGkrMSktMQogICAgICAgICAgICAgICAgQ09TVCBPRiBERUxFVElPTiBGUk9NIFJJR0hUOiAyKihuLWkpCiAgICAgICAgICAgICovCiAgICAgICAgICAgIGFucyA9IG1heChhbnMsIGNvc3QpOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7Cn0KCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGNvdXQudGllKG51bGxwdHIpOwoKICAgIGludCB0ID0gMTsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkge21vaGVtbWF0KCk7fQoKICAgIHJldHVybiAwOwp9