약수 게임
시간 제한1초메모리 제한128 MB
N의 진약수 d마다 Bajtuś가 쓰면 a(d), Bituś가 쓰면 b(d)를 얻는다. 각자가 먼저 둘 때 시작한 쪽의 우세를 최적으로 플레이했을 때 구한다.
문제
Bajtuś와 Bituś가 새로운 게임을 합니다. 처음에 칠판에는 인 정수 이 하나 적혀 있습니다. 두 사람은 번갈아 가며 자기 차례에 현재 칠판에 적힌 수를 그 수 자신과는 다른 약수 중 하나로 바꿉니다. 누군가 수 을 적는 순간 게임이 끝납니다.
자신을 제외한 의 모든 약수 에 대해 두 값 와 가 미리 주어집니다. Bajtuś가 를 적으면 점을 얻고, Bituś가 를 적으면 점을 얻습니다. 두 사람은 모두 자신의 이득, 즉 자신의 총점에서 상대의 총점을 뺀 값을 최대화하려고 합니다.
Bituś는 이미 과 모든 점수를 정해 두었고, 누가 먼저 시작할지는 Bajtuś가 고를 수 있습니다. 두 사람이 모두 최적으로 플레이한다고 할 때, Bajtuś가 먼저 시작하는 경우와 Bituś가 먼저 시작하는 경우 각각에 대해 시작한 사람의 이득을 구하세요.
입력
첫 줄에는 테스트 케이스의 개수인 양의 정수 가 주어집니다. 이어서 각 테스트 케이스가 차례대로 주어집니다.
각 테스트 케이스의 첫 줄에는 네 정수 , , , 가 주어집니다 (, ). 이들의 곱 이 처음에 칠판에 적힌 수이며, 는 의 양의 약수 개수입니다.
다음 개 줄에는 자신을 제외한 의 약수들의 점수가 약수 값이 커지는 순서로 주어집니다. 이 중 번째 줄에는 두 정수 와 가 있으며 (), 이는 의 번째로 작은 약수 를 적을 때 Bajtuś와 Bituś가 각각 얻는 점수입니다.
모든 테스트 케이스에 걸친 의 합은 을 넘지 않습니다.
출력
각 테스트 케이스마다 두 정수 와 를 한 줄에 출력하세요. 는 Bajtuś가 먼저 시작할 때 시작한 사람의 이득이고, 는 Bituś가 먼저 시작할 때 시작한 사람의 이득이며, 둘 다 두 사람이 최적으로 플레이한 결과입니다.
설명
첫 번째 예제에서는 이 소수이므로 시작한 사람은 만 적을 수 있고, 그 즉시 게임이 끝나며 에 부여된 점수를 받습니다. 두 번째 예제에서는 이며, 차례인 사람은 를 적고 상대가 을 적도록 만드는 편이 이득입니다.