16진수 통계

16진수 문자열 S의 각 자리에 대해 16!개의 삭제 순서 전체에서 나타나는 16개 누적 합의 총합의 최솟값, 최댓값, 전체 합을 구한다.

보통7수학조합론정렬아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

16진수로 표기된 정수 NN개가 수열 SS를 이룬다. sum(S)\mathrm{sum}(S)SS의 모든 원소를 더한 값이다.

16진수 숫자 16개를 한 번씩 나열한 순열을 pp라고 하자. 숫자 dd를 지운다는 것은 SS의 모든 원소에서 dd를 전부 지운다는 뜻이다. 남은 숫자는 순서를 그대로 지킨 채 다시 16진수로 읽고, 숫자가 하나도 남지 않은 원소는 0이 된다. 지운 뒤 맨 앞에 0이 와도 값은 달라지지 않는다.

pp의 순서대로 숫자를 하나씩 지우면서 매 단계의 수열을 기록하면 수열 16개를 얻는다. S[d1,,dk]S[d_1,\dots,d_k]SS에서 숫자 d1d_1부터 dkd_k까지 지운 결과라고 쓰면, 이 16개는 S[p1]S[p_1], S[p1,p2]S[p_1,p_2], \dots, S[p1,,p16]S[p_1,\dots,p_{16}]이고 마지막 수열은 모든 원소가 0이다. 여기서 다음과 같이 정의한다.

total(S,p)=sum(S[p1])+sum(S[p1,p2])++sum(S[p1,,p16])\mathrm{total}(S,p) = \mathrm{sum}(S[p_1]) + \mathrm{sum}(S[p_1,p_2]) + \dots + \mathrm{sum}(S[p_1,\dots,p_{16}])

예를 들어 S=[9af47c0b,2545557,ff6447979]S = [\texttt{9af47c0b}, \texttt{2545557}, \texttt{ff6447979}]이고 pp4\texttt{4}, 9\texttt{9}, 5\texttt{5}로 시작하면, 숫자 4\texttt{4}를 지운 S[4]S[\texttt{4}][9af7c0b,255557,ff67979][\texttt{9af7c0b}, \texttt{255557}, \texttt{ff67979}]이고 이어서 숫자 9\texttt{9}를 지운 S[4,9]S[\texttt{4},\texttt{9}][af7c0b,255557,ff677][\texttt{af7c0b}, \texttt{255557}, \texttt{ff677}]이다.

total(S,p)\mathrm{total}(S,p)는 어떤 순열 pp를 쓰는지에 따라 달라진다. 16진수 숫자의 순열 16!16!개를 모두 고려해서 세 값을 구하라. 가장 작은 total, 가장 큰 total, 그리고 순열마다 얻은 total을 모두 더한 값이다. 세 번째 값은 3b9aca07으로 나눈 나머지를 출력한다. 이 수는 10진수로 109+710^9+7이다. 앞의 두 값은 나머지를 취하지 않고 그대로 출력한다.

입력

첫째 줄에 수열의 길이 NN이 주어진다. 다음 NN개의 줄에는 수열 SS의 원소 PP가 입력 순서대로 한 줄에 하나씩 주어진다. NN을 포함해 입력의 모든 수는 소문자를 쓰는 16진수다.

제한

  • 1N3f\texttt{1} \le N \le \texttt{3f}
  • 0Pfffffffff\texttt{0} \le P \le \texttt{fffffffff}

출력

한 줄에 세 정수를 공백 하나로 구분해 소문자 16진수로 출력한다. 차례대로 가장 작은 total, 가장 큰 total, 그리고 16!16!개 순열의 total을 모두 더한 값을 3b9aca07으로 나눈 나머지다.