from atcoder.segtree import SegTree def main(): n = int(input()) P = list(map(lambda x: int(x)-1, input().split())) Q = list(map(lambda x: int(x)-1, input().split())) st0 = SegTree(lambda a, b: max(a, b), 0, [0]*n*n) st1 = SegTree(lambda a, b: max(a, b), 0, [0]*n*n) dp = [1] *n*n dp0 = [0] *n*n dp1 = [0] *n*n for pi in range(n): st0_ = SegTree(lambda a, b: max(a, b), 0, [0]*n) st1_ = SegTree(lambda a, b: max(a, b), 0, [0]*n) for qi in range(n): p, q = P[pi], Q[qi] dp[pi*n+qi] = max(st0.prod(qi*n+p, qi*n+n), st1.prod(qi*n, qi*n+p))+1 a = dp[pi*n+qi] st0_.set(q, a) st1_.set(q, a) x, y = st0_.prod(q+1, n), st1_.prod(0, q) #print(p, q, x, y, a, "here", *[st1_.get(i) for i in range(n)]) st0.set(qi*n+p, x) st1.set(qi*n+p, y) if 0: for i in range(n): print(dp[i*n: i*n+n]) print() for i in range(n): print(dp0[i*n: i*n+n]) print() for i in range(n): print(dp1[i*n: i*n+n]) return max(dp) for _ in range(int(input())): print(main())