/*   @JUDGE_ID:   1705PZ   434   C */
#include <stdio.h>
#include <stdlib.h>

int min(int x,int y)
{
	return (x < y) ? x : y;
}

int main()
{
	int i,j,k,m,n,temp,ansmin,ansmax;
	int *table1,*table2;

	scanf("%d",&n);
	for(k = 0;k < n;k++)
	{

		scanf("%d",&m);
		table1 = (int *)malloc(sizeof(int) * m);
		table2 = (int *)malloc(sizeof(int) * m);

		for(i = 0;i < m;i++)
			scanf("%d",table1 + i);
		for(i = 0;i < m;i++)
			scanf("%d",table2 + i);

		ansmax = 0;
		for(i = 0;i < m;i++)
			for(j = 0;j < m;j++)
				ansmax += min(*(table1 + i),*(table2 + j));

		ansmin = 0;
		for(i = 0;i < m;i++)
			ansmin += *(table1 + i);

		for(j = 0;j < m;j++)
		{
			temp = 1;
			for(i = 0;i < m;i++)
			{
				if(*(table1 + i) == *(table2 + j))
				{

					*(table1 + i) = -1;
					temp = 0;
					break;
				}
			}
			if(temp == 1)
				ansmin += *(table2 + j);
		}

		printf("Matty needs at least %d blocks, and can add at most %d extra blocks.\n",ansmin,ansmax - ansmin);

		free(table1);
		free(table2);
	}
	return 0;
}
@END_OF_SOURCE_CODE
