시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
2^N명의 선수가 토너먼트에 참가한다. 선수 번호는 1부터 2^N까지이다. 첫 번째 라운드에서는 번호가 2k-1인 선수와 2k인 선수가 맞붙고, 각 경기의 패자는 탈락하며 승자는 다음 라운드로 올라간다. 마지막 한 명이 남을 때까지 경기가 계속된다.
토너먼트 결과는 완전 이진 트리로 볼 수 있다. 리프가 아닌 각 노드는 해당 경기의 승자를 나타낸다. 어떤 선수 A가 선수 B를 이기고, B가 선수 C를 이겼다면 A도 C를 이긴 것으로 간주한다.
우승자의 순위는 항상 1위로 확정된다. 다른 선수들은 이미 알려진 승패 관계와 모순되지 않는 한 여러 순위를 주장할 수 있다. 주어진 토너먼트 결과와 질의 선수들에 대해, 각 선수가 가능한 가장 높은 순위와 가장 낮은 순위를 구하라.
첫 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 세 줄로 이루어진다.
첫째 줄에는 N이 주어진다. (1 <= N <= 7)
둘째 줄에는 토너먼트 결과를 나타내는 2^N - 1개의 정수가 주어진다. 정수들은 첫 번째 라운드부터 마지막 라운드까지, 같은 라운드 안에서는 왼쪽 경기부터 오른쪽 경기 순서로 주어진다. 각 정수는 해당 경기의 승자 번호이다.
셋째 줄에는 질의 수 M과 선수 번호 p_1, p_2, ..., p_M이 공백으로 구분되어 주어진다.
각 질의 선수 p_i에 대해 다음 형식으로 한 줄에 하나씩 출력한다.
Player p_i can be ranked as high as h or as low as l.
여기서 h는 가능한 가장 높은 순위, l은 가능한 가장 낮은 순위이다. 질의는 입력에 주어진 순서대로 출력한다. 서로 다른 테스트 케이스의 출력 사이에는 빈 줄을 하나 출력한다.