'''
완전이진 트리의 리프노드 1000이하 자연수 저장
리프 노드를 제외한 노드에는 자식노드에 저장된 값의 합이 들어있음
단말노드 번호와 저장된 값이 주어지면 나머지 노드에 자식 노드 값의 합을 저장, 지정한 노드 번호에 저장된 값을 출력
후위 순회 방식, 재귀호출로 풀어본다
단말노드(공백노드)에서는 0을 올라오게 함
전부 0으로 한 뒤 아래부터 누적돼서 값이 올라오면 되지 않을까...!
'''

for tc in range(1,int(input())+1):
    #노드수, 단말노드 수 , 출력할 노드번호
    N,M,L = map(int,input().split())
    T = [0] * (N+1)
    for _ in range(M):
        num, val = map(int,input().split())
        T[num] = val

    #1.
    def dfs(v):
        #공백노드일때 0을 리턴
        if v > N: return 0
        #왼쪽으로 가라
        l = dfs(v*2)
        #오른쪽으로 가라
        r = dfs(v*2+1)

        #원래 값을 건들이지 않고 더한값을 넣기 위해 누적 함!(왼쪽 오른쪽 더한 값을 원래 값에 더해줌)
        T[v] += l + r
        return T[v]

    dfs(1)
    print(f'#{tc} {T[L]}')

    #2.채워야 될 마지막의 idx(N-M)를 구해서 채우면서 올라가기(N-M부터 1까지 채우기)
    for i in range(N-M.0,-1):
        #i가 배열의 idx이자 노드번호
        # 왼족자식, 오른쪽 자식 더함
        T[i] = T[i*2]
        #오른쪽 자식은 없을 수도 있기 때문에 범위체크하고 더해줌
        if i * 2 + 1 <= N:
            T[i] += T[i*2+1]
    print(T[L])
