만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

메시지 해독

시간 제한1초메모리 제한1024 MB

요약
각 바이트 값의 개수가 주어질 때, 모든 순열을 256진법 수로 읽은 값들의 곱을 65535로 나눈 나머지를 구합니다.
난이도

보통10점 중 7점

유형
수학, 정수론, 조합론
정답자
아직 제출이 없습니다

문제

외계인이 사람들과 접촉해서 "삶, 우주, 그리고 모든 것에 대한 궁극의 질문"의 답이 담긴 메시지를 보냈다.

사람들은 nn개의 바이트(0부터 255까지의 정수)를 받았다. 해독 알고리즘은 다음과 같다.

  • 받은 바이트들의 모든 순열, 즉 n!n!개를 고려한다.
  • 각 순열을 256진법으로 쓴 수로 읽는다. 같은 수가 나올 수도 있다.
  • 이 수들을 모두 곱한 값을 65 53565\,535로 나눈 나머지를 구한다.
  • 그 나머지가 해독된 메시지다.

각 바이트 ii에 대해, 받은 바이트 중 값이 ii인 것의 개수 cic_i가 주어진다. 메시지를 해독하라.

입력

첫 줄에 테스트 케이스의 수 tt (1≤t≤1001 \le t \le 100)가 주어진다. 각 테스트 케이스의 첫 줄에는 ci≠0c_i \neq 0인 바이트 값 ii의 개수 kk (1≤k≤2561 \le k \le 256)가 주어진다. 다음 kk개 줄에는 정수 두 개 ii, cic_i (0≤i≤2550 \le i \le 255, 1≤ci≤1091 \le c_i \le 10^9)가 주어진다. 주어지는 ii 값은 모두 서로 다르다. 나머지 256−k256 - k개의 바이트 값에 대해서는 cic_i가 0이다. ∑i=0255ci=n≤109\sum_{i=0}^{255} c_i = n \le 10^9이 보장된다.

출력

각 테스트 케이스마다 해독된 메시지를 정수 하나로 출력한다.

예제1

  1. 예제 1

    입력
    5
    1
    42 1
    2
    0 1
    1 1
    1
    239 2
    2
    1 1
    2 1
    3
    1 1
    2 2
    3 2
    
    예상 출력
    42
    256
    514
    1284
    61726