깊이 k인 완전 이진 트리의 프뤼퍼 코드에서 a, a+d, ..., a+(m-1)d 위치의 값을 m개 더하는 질의 q개에 답한다.
어려움8수학트리분할 정복구현아직 제출이 없습니다시간 제한7초메모리 제한512 MB트리는 노드 n개와 무방향 간선 n−1개로 이루어진 그래프로, 어떤 두 노드든 정확히 하나의 경로로 이어진다. 라벨 트리에서는 각 노드에 1부터 n까지의 서로 다른 정수가 라벨로 붙는다.
라벨 트리의 프뤼퍼 코드는 노드가 두 개만 남을 때까지 노드를 하나씩 지우면서 만드는 수열이다. 매 단계에서 라벨이 가장 작은 잎을 지우고, 그 잎의 유일한 이웃의 라벨을 코드 끝에 덧붙인다. 잎은 이웃이 정확히 하나인 노드다. 따라서 라벨 트리의 프뤼퍼 코드는 길이가 n−2인 정수 수열이고, 이 코드에서 원래 트리를 복원할 수 있다.
깊이가 k인 완전 이진 트리 Ck는 노드가 2k−1개인 라벨 트리로, j<2k−1인 모든 j에 대해 노드 j가 노드 2j, 2j+1과 이어져 있다. Ck의 프뤼퍼 코드를 p1,p2,…,p2k−3이라고 하자.
Ck의 프뤼퍼 코드는 매우 길어질 수 있으므로 코드 자체를 출력하지는 않는다. 대신 코드의 일부 원소의 합을 묻는 질문 q개에 답해야 한다. 각 질문은 정수 a, d, m 세 개로 이루어지고, 답은 pa+pa+d+pa+2d+⋯+pa+(m−1)d이다.
첫째 줄에 완전 이진 트리의 깊이 k와 질문의 개수 q가 주어진다 (2≤k≤30, 1≤q≤300). 다음 q개 줄에는 줄마다 질문 하나가 양의 정수 aj, dj, mj 세 개로 주어진다. aj, dj, aj+(mj−1)dj는 모두 2k−3 이하다.
q개 줄을 출력한다. j번째 줄에는 j번째 질문의 답을 정수 하나로 출력한다.

C3의 프뤼퍼 코드를 만들 때 노드는 4, 5, 2, 1, 6 순서로 지워진다. 따라서 C3의 프뤼퍼 코드는 2, 2, 1, 3, 3이다.