Born Slippy
시간 제한6초메모리 제한256 MB
루트 트리의 각 정점에서 조상 방향으로 올라가며 연속한 두 가중치를 AND, OR, XOR로 결합할 때 얻는 최댓값을 구하고, 이를 가중 합으로 출력한다.
문제
Zhang 교수는 정점이 으로 번호가 매겨진 루트 있는 트리를 가지고 있다. 번 정점에는 정수 가중치 가 있다.
각 에 대해, Zhang 교수는 다음 조건을 만족하는 정점 수열 을 찾으려 한다.
- 이고, 각 에 대해 는 의 조상이다.
- 값 가 최대가 된다. 여기서 연산 는 두 정수의 비트 AND, OR, XOR 연산이다.
입력
여러 개의 테스트 케이스가 주어진다. 입력의 첫째 줄에는 테스트 케이스의 수를 나타내는 정수 가 주어진다. 각 테스트 케이스는 다음과 같다.
첫째 줄에는 정수 과 문자열 가 주어진다 (, ). 은 정점의 수이고 는 연산이다. 둘째 줄에는 개의 정수 이 주어진다 (). 셋째 줄에는 개의 정수 이 주어지며, 는 정점 의 부모이다 ().
테스트 케이스는 약 개이고, 모든 테스트 케이스에서 의 합은 을 넘지 않는다.
출력
각 테스트 케이스에 대해 정수 를 로 나눈 나머지를 출력한다.