지금 밥이 문제냐

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

평소 전공 공부를 열심히 하는 황제는 시험기간에 형들이 IPv4 주소와 IPv6 주소를 저장하는 데 각각 최소 4바이트, 6바이트가 필요하다는 이야기를 듣고 아람이에게 물었다.

  • 황제: "IPv8 주소를 저장하려면 최소 몇 바이트가 필요할까?"
  • 아람: "당연히 8바이트지."
  • 황제: "아하! 컴퓨터는 모든 수를 이진수로만 저장하니까, 127.0.0.1이라는 IPv4 주소는 127은 01111111, 0은 00000000, 0은 00000000, 1은 00000001로 저장되겠구나. 그런데 이 네 값은 따로 저장되지 않고 부호가 없는 정수형 변수 하나에 들어가니까, 그 변수에는 네 이진수를 앞에서부터 이어 붙인 01111111000000000000000000000001이 담기겠네. 음... 십진수로 출력하면 2130706433이겠다."
  • 아람: "응, 맞아."
  • 황제: "그러면 어떤 IPv8 주소를 부호가 없는 정수형 변수에 저장한 뒤 십진수로 바꾸면 어떤 값이 나올까? 반대로 부호가 없는 정수를 IPv8 주소로 바꾸려면 어떻게 해야 할까?"
  • 아람: "..... 배고파. 밥이나 먹으러 가자!"

황제는 궁금증이 풀릴 때까지는 밥을 먹으러 갈 수 없다며 자리를 지킨다. 두 사람이 점심시간에 맞춰 밥을 먹도록 황제를 도와주자.

IPv8 주소는 0부터 255까지의 정수 여덟 개를 마침표로 이어 붙인 문자열이다. 이 주소를 부호가 없는 정수로 바꿀 때는 여덟 개의 값을 각각 8비트 이진수로 적고 앞에서부터 이어 붙인 64비트 값을 십진수로 읽는다. 정수를 주소로 바꿀 때는 같은 과정을 거꾸로 밟는다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다.

다음 TT개의 줄에는 각각 변환의 종류를 나타내는 값 MM과 변환할 값 NN이 공백으로 구분되어 주어진다.

MM은 IPv8 주소를 부호가 없는 정수로 바꾸는 변환이면 1, 부호가 없는 정수를 IPv8 주소로 바꾸는 변환이면 2이다.

MM이 1이면 NN은 0부터 255까지의 정수 여덟 개로 이루어진 IPv8 주소이고, MM이 2이면 NN은 부호가 없는 정수이다.

주어지는 부호가 없는 정수는 64비트 부호가 없는 정수의 범위를 넘지 않는다.

출력

각 테스트 케이스마다 변환한 값을 한 줄에 하나씩 출력한다.

MM이 1이면 십진수 정수 하나를, MM이 2이면 마침표로 구분한 IPv8 주소를 출력한다. 주소의 각 값은 앞에 0을 붙이지 않고 그대로 쓴다.

힌트

실제로 IPv4와 IPv6은 전혀 다른 포맷을 쓰며, IPv6 주소를 표현하려면 16바이트가 필요하다. (링크)