t = int(input())
for _ in range(t):
n = int(input())
skill = list(map(int, input().split()))
damage = list(map(int, input().split()))
zeros = sorted([d for s, d in zip(skill, damage) if s == 0], reverse=True)
ones = sorted([d for s, d in zip(skill, damage) if s == 1], reverse=True)
idx = min(len(zeros), len(ones))
res = sum(2 * ones[:idx] + ones[idx:] + 2 * zeros[:idx] + zeros[idx:])
if len(zeros) == len(ones):
res -= min(damage)
print(res)
1299A - Anu Has a Function | 1111A - Superhero Transformation |
954A - Diagonal Walking | 39F - Pacifist frogs |
1451C - String Equality | 386A - Second-Price Auction |
1690E - Price Maximization | 282B - Painting Eggs |
440A - Forgotten Episode | 233B - Non-square Equation |
628B - New Skateboard | 262B - Roma and Changing Signs |
755C - PolandBall and Forest | 456B - Fedya and Maths |
376B - IOU | 1623B - Game on Ranges |
1118A - Water Buying | 1462C - Unique Number |
301A - Yaroslav and Sequence | 38A - Army |
38C - Blinds | 1197A - DIY Wooden Ladder |
1717D - Madoka and The Corruption Scheme | 1296D - Fight with Monsters |
729D - Sea Battle | 788A - Functions again |
1245B - Restricted RPS | 1490D - Permutation Transformation |
1087B - Div Times Mod | 1213B - Bad Prices |