#include <bits/stdc++.h>
using namespace std;
/*
dp0[i]: max matches we can get on prefix [1..i] if we have NOT used the removal,
and we *do* end with a match at i (i.e. after operations, a[i]==b[i]).
dp1[i]: max matches we can get on prefix [1..i] if we HAVE used the removal,
and we *do* end with a match at i.
We only need to look at whether the two pairs (a[i-1],b[i-1]) and (a[i],b[i])
share any value to decide if we can extend a matching "chain" from i-1 to i
without doing a removal right there. If they intersect, both dp0 and dp1
transition by +1. Otherwise, we can only get a new match at i by "resetting"—
either by using our one removal at i-1 (transition from dp0 to dp1), or by
starting fresh after we've already removed (staying in dp1).
*/
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
while (T--){
int n;
cin >> n;
vector<int> a(n+1), b(n+1);
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++) cin >> b[i];
// Base case: at i=1, you cannot match without a neighbor,
// so dp0=0. If you choose to remove at i=1 (not really helpful),
// dp1=0 as well.
int dp0 = 0, dp1 = 0;
int answer = 0;
for (int i = 2; i <= n; i++){
// can we extend a match-chain from (i-1) to i without a removal?
bool intersect =
a[i] == a[i-1] ||
a[i] == b[i-1] ||
b[i] == a[i-1] ||
b[i] == b[i-1];
int new0, new1;
if (intersect) {
// both states extend
new0 = dp0 + 1;
new1 = dp1 + 1;
} else {
// can't extend dp0 (no removal used) so we'd have to start fresh:
new0 = 1;
// for dp1, either we already removed (dp1) and start fresh, or
// we remove right here (dp0 -> dp1) and start fresh: both give dp0+1
new1 = max(dp1 + 1, dp0 + 1);
}
dp0 = new0;
dp1 = new1;
answer = max({answer, dp0, dp1});
}
// If n==1, you can never match because there is no i+1 to pull from,
// so answer = 0 in that edge case.
if (n == 1) answer = 0;
cout << answer << "\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovKgogZHAwW2ldOiBtYXggbWF0Y2hlcyB3ZSBjYW4gZ2V0IG9uIHByZWZpeCBbMS4uaV0gaWYgd2UgaGF2ZSBOT1QgdXNlZCB0aGUgcmVtb3ZhbCwKICAgICAgICAgIGFuZCB3ZSAqZG8qIGVuZCB3aXRoIGEgbWF0Y2ggYXQgaSAoaS5lLiBhZnRlciBvcGVyYXRpb25zLCBhW2ldPT1iW2ldKS4KIGRwMVtpXTogbWF4IG1hdGNoZXMgd2UgY2FuIGdldCBvbiBwcmVmaXggWzEuLmldIGlmIHdlIEhBVkUgdXNlZCB0aGUgcmVtb3ZhbCwKICAgICAgICAgIGFuZCB3ZSAqZG8qIGVuZCB3aXRoIGEgbWF0Y2ggYXQgaS4KCiBXZSBvbmx5IG5lZWQgdG8gbG9vayBhdCB3aGV0aGVyIHRoZSB0d28gcGFpcnMgKGFbaS0xXSxiW2ktMV0pIGFuZCAoYVtpXSxiW2ldKQogc2hhcmUgYW55IHZhbHVlIHRvIGRlY2lkZSBpZiB3ZSBjYW4gZXh0ZW5kIGEgbWF0Y2hpbmcgImNoYWluIiBmcm9tIGktMSB0byBpCiB3aXRob3V0IGRvaW5nIGEgcmVtb3ZhbCByaWdodCB0aGVyZS4gIElmIHRoZXkgaW50ZXJzZWN0LCBib3RoIGRwMCBhbmQgZHAxCiB0cmFuc2l0aW9uIGJ5ICsxLiAgT3RoZXJ3aXNlLCB3ZSBjYW4gb25seSBnZXQgYSBuZXcgbWF0Y2ggYXQgaSBieSAicmVzZXR0aW5nIuKAlAogZWl0aGVyIGJ5IHVzaW5nIG91ciBvbmUgcmVtb3ZhbCBhdCBpLTEgKHRyYW5zaXRpb24gZnJvbSBkcDAgdG8gZHAxKSwgb3IgYnkKIHN0YXJ0aW5nIGZyZXNoIGFmdGVyIHdlJ3ZlIGFscmVhZHkgcmVtb3ZlZCAoc3RheWluZyBpbiBkcDEpLgoqLwoKaW50IG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IFQ7IAogICAgY2luID4+IFQ7CiAgICB3aGlsZSAoVC0tKXsKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICB2ZWN0b3I8aW50PiBhKG4rMSksIGIobisxKTsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY2luID4+IGJbaV07CgogICAgICAgIC8vIEJhc2UgY2FzZTogYXQgaT0xLCB5b3UgY2Fubm90IG1hdGNoIHdpdGhvdXQgYSBuZWlnaGJvciwKICAgICAgICAvLyBzbyBkcDA9MC4gIElmIHlvdSBjaG9vc2UgdG8gcmVtb3ZlIGF0IGk9MSAobm90IHJlYWxseSBoZWxwZnVsKSwKICAgICAgICAvLyBkcDE9MCBhcyB3ZWxsLgogICAgICAgIGludCBkcDAgPSAwLCBkcDEgPSAwOwogICAgICAgIGludCBhbnN3ZXIgPSAwOwoKICAgICAgICBmb3IgKGludCBpID0gMjsgaSA8PSBuOyBpKyspewogICAgICAgICAgICAvLyBjYW4gd2UgZXh0ZW5kIGEgbWF0Y2gtY2hhaW4gZnJvbSAoaS0xKSB0byBpIHdpdGhvdXQgYSByZW1vdmFsPwogICAgICAgICAgICBib29sIGludGVyc2VjdCA9IAogICAgICAgICAgICAgICAgYVtpXSA9PSBhW2ktMV0gfHwKICAgICAgICAgICAgICAgIGFbaV0gPT0gYltpLTFdIHx8CiAgICAgICAgICAgICAgICBiW2ldID09IGFbaS0xXSB8fAogICAgICAgICAgICAgICAgYltpXSA9PSBiW2ktMV07CgogICAgICAgICAgICBpbnQgbmV3MCwgbmV3MTsKICAgICAgICAgICAgaWYgKGludGVyc2VjdCkgewogICAgICAgICAgICAgICAgLy8gYm90aCBzdGF0ZXMgZXh0ZW5kCiAgICAgICAgICAgICAgICBuZXcwID0gZHAwICsgMTsKICAgICAgICAgICAgICAgIG5ldzEgPSBkcDEgKyAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gY2FuJ3QgZXh0ZW5kIGRwMCAobm8gcmVtb3ZhbCB1c2VkKSBzbyB3ZSdkIGhhdmUgdG8gc3RhcnQgZnJlc2g6CiAgICAgICAgICAgICAgICBuZXcwID0gMTsgCiAgICAgICAgICAgICAgICAvLyBmb3IgZHAxLCBlaXRoZXIgd2UgYWxyZWFkeSByZW1vdmVkIChkcDEpIGFuZCBzdGFydCBmcmVzaCwgb3IKICAgICAgICAgICAgICAgIC8vIHdlIHJlbW92ZSByaWdodCBoZXJlIChkcDAgLT4gZHAxKSBhbmQgc3RhcnQgZnJlc2g6IGJvdGggZ2l2ZSBkcDArMQogICAgICAgICAgICAgICAgbmV3MSA9IG1heChkcDEgKyAxLCBkcDAgKyAxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBkcDAgPSBuZXcwOwogICAgICAgICAgICBkcDEgPSBuZXcxOwogICAgICAgICAgICBhbnN3ZXIgPSBtYXgoe2Fuc3dlciwgZHAwLCBkcDF9KTsKICAgICAgICB9CgogICAgICAgIC8vIElmIG49PTEsIHlvdSBjYW4gbmV2ZXIgbWF0Y2ggYmVjYXVzZSB0aGVyZSBpcyBubyBpKzEgdG8gcHVsbCBmcm9tLAogICAgICAgIC8vIHNvIGFuc3dlciA9IDAgaW4gdGhhdCBlZGdlIGNhc2UuCiAgICAgICAgaWYgKG4gPT0gMSkgYW5zd2VyID0gMDsKCiAgICAgICAgY291dCA8PCBhbnN3ZXIgPDwgIlxuIjsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==
MTAKNAoxIDMgMSA0CjQgMyAyIDIKNgoyIDEgNSAzIDYgNAozIDIgNCA1IDEgNgoyCjEgMgoyIDEKNgoyIDUgMSAzIDYgNAozIDUgMiAzIDQgNgo0CjEgMyAyIDIKMiAxIDMgNAo4CjMgMSA0IDYgMiAyIDUgNwo0IDIgMyA3IDEgMSA2IDUKMTAKNSAxIDIgNyAzIDkgNCAxMCA2IDgKNiAyIDMgNiA0IDEwIDUgMSA3IDkKNQozIDIgNCAxIDUKMiA0IDUgMSAzCjcKMiAyIDYgNCAxIDMgNQozIDEgNiA1IDEgNCAyCjUKNCAxIDMgMiA1CjMgMiAxIDUgNAo=
10
4
1 3 1 4
4 3 2 2
6
2 1 5 3 6 4
3 2 4 5 1 6
2
1 2
2 1
6
2 5 1 3 6 4
3 5 2 3 4 6
4
1 3 2 2
2 1 3 4
8
3 1 4 6 2 2 5 7
4 2 3 7 1 1 6 5
10
5 1 2 7 3 9 4 10 6 8
6 2 3 6 4 10 5 1 7 9
5
3 2 4 1 5
2 4 5 1 3
7
2 2 6 4 1 3 5
3 1 6 5 1 4 2
5
4 1 3 2 5
3 2 1 5 4