from __future__ import division, print_function import array import bisect import collections import decimal import fractions import functools import heapq import itertools import math import random import re import sys try: input = raw_input except NameError: pass # decimal.getcontext().prec = 50 # sys.setrecursionlimit(1000000) # MOD = 10**9 + 7 # INF = float('inf') IMPOSSIBLE = "IMPOSSIBLE" POSSIBLE = "POSSIBLE" def solve(f): n = f.read_int() d = [i-1 for i in f.read_int_list()] c = f.read_int_list() if n > 8: return 0 ans = float('inf') for item in itertools.permutations(range(n)): cnt = 0 res = [0]*(n+1) for i in range(n): s, t, ci = item[i], d[item[i]], c[item[i]] add = max(0, ci-res[s]) cnt += add res[t] += ci res[s] = 0 ans = min(ans, cnt) return ans class Reader(object): def __init__(self, filename=None): self.file = open(filename) if filename is not None else None self.case = 1 def __readline(self): return next(self.file).strip() if self.file else input() def next_case(self): next(self.file) self.case += 1 def read_int(self): return int(self.__readline()) def read_float(self): return float(self.__readline()) def read_decimal(self): return decimal.Decimal(self.__readline()) def read_str(self): return self.__readline() def read_int_list(self): return list(map(int, self.__readline().split())) def read_float_list(self): return list(map(float, self.__readline().split())) def read_decimal_list(self): return list(map(decimal.Decimal, self.__readline().split())) def read_str_list(self): return self.__readline().split() if __name__ == "__main__": filename = sys.argv[1] if len(sys.argv) > 1 else None f = Reader(filename) cases = f.read_int() for case in range(cases): line = "Case #%d: %s\n" % (case + 1, str(solve(f))) print(line, end="")