최소 스칼라 곱 (Large)

아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

길이가 같은 두 정수 벡터 v1=(x1,x2,,xn)v_1 = (x_1, x_2, \dots, x_n)v2=(y1,y2,,yn)v_2 = (y_1, y_2, \dots, y_n)이 주어진다. 두 벡터의 스칼라 곱은 x1y1+x2y2++xnynx_1 y_1 + x_2 y_2 + \dots + x_n y_n으로 계산하는 하나의 수이다.

각 벡터의 좌표 순서는 원하는 대로 바꿀 수 있다. 두 벡터의 좌표를 각각 재배열해서 스칼라 곱을 가장 작게 만들고, 그 최솟값을 출력한다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다.

각 테스트 케이스는 세 줄로 이루어진다. 첫 줄에 정수 nn이 주어지고, 다음 두 줄에 각각 nn개의 정수가 주어진다. 두 번째 줄은 v1v_1의 좌표, 세 번째 줄은 v2v_2의 좌표이다.

제한

  • 1T101 \le T \le 10
  • 1n8001 \le n \le 800
  • 100000xi,yi100000-100000 \le x_i, y_i \le 100000

출력

각 테스트 케이스마다 한 줄에 다음 형식으로 출력한다.

Case #X: Y

XX는 1부터 시작하는 테스트 케이스 번호이고, YY는 두 벡터의 좌표를 재배열해서 얻을 수 있는 스칼라 곱의 최솟값이다.