시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
팩스 데이터는 실행 길이 인코딩(RLE)으로 압축되어 있다. 인코딩된 데이터는 패킷들의 연속이며, 각 패킷은 1바이트짜리 제어 바이트로 시작한다.
제어 바이트의 최상위 비트가 0이면 리터럴 패킷이다. 남은 7비트에 저장된 값에 1을 더한 개수만큼의 바이트가 제어 바이트 바로 뒤에 오며, 이 바이트들은 디코딩 결과에 그대로 복사된다. 따라서 리터럴 패킷은 1바이트부터 128바이트까지 저장할 수 있다.
제어 바이트의 최상위 비트가 1이면 반복 패킷이다. 남은 7비트에 저장된 값에 3을 더한 수가 반복 횟수이고, 바로 뒤의 1바이트가 반복할 값이다. 따라서 반복 패킷은 같은 바이트를 3번부터 130번까지 나타낼 수 있다.
주어진 인코딩 바이트열을 해독하여 원래의 바이트열을 출력하라.
첫째 줄에 데이터 세트 수 P (1 <= P <= 1000)가 주어진다.
각 데이터 세트는 먼저 인코딩된 바이트 수 B (1 <= B <= 5000)를 나타내는 정수 하나로 시작한다. 이어지는 줄에는 정확히 B바이트의 인코딩 데이터가 16진수로 주어진다. 꽉 찬 줄에는 16진수 숫자 80개가 들어 있으며, 각 데이터 세트의 마지막 줄은 80개보다 적을 수 있다.
16진수 숫자 2개가 한 바이트를 나타낸다. 16진수 숫자는 0부터 9, A부터 F까지이다.
각 데이터 세트마다 여러 줄을 출력한다.
먼저 디코딩된 바이트 수를 출력한다. 그다음 디코딩된 바이트열을 대문자 16진수로 출력한다. 꽉 찬 줄에는 16진수 숫자 80개를 출력하며, 각 데이터 세트의 마지막 줄은 80개보다 적을 수 있다.