B. Восстановление IPv6
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

IPv6-адрес — это некоторое 128-битное число. Для удобства это число записывают блоками по 16 бит в шестнадцатеричной системе счисления, разделяя блоки двоеточиями — всего 8 блоков, в каждом из которых по 4 шестнадцатеричные цифры. Вот пример корректной записи адреса IPv6: «0124:5678:90ab:cdef:0124:5678:90ab:cdef». Будем называть такой формат записи IPv6-адреса полным.

Помимо полного формата записи IPv6-адреса, существует сокращенный формат записи. Запись IPv6-адреса может быть сокращена путем удаления одного или нескольких ведущих нулей в начале каждого блока. Однако каждый из блоков в итоге должен содержать хотя бы одну цифру. Например, ведущие нули можно сократить следующим образом: «a56f:00d3:0000:0124:0001:f19a:1000:0000»  →  «a56f:d3:0:0124:01:f19a:1000:00». Существуют и другие способы сократить нули в этом IPv6-адресе.

Некоторые IPv6-адреса содержат длинные последовательности нулей. Сплошные последовательности из нулевых 16-битных блоков могут быть сокращены до «::». Последовательность должна состоять из одного или нескольких последовательных блоков, все 16 бит в которых равны 0.

Примеры сокращения последовательностей нулевых блоков можно видеть ниже:

  • «a56f:00d3:0000:0124:0001:0000:0000:0000»  →  «a56f:00d3:0000:0124:0001::»;
  • «a56f:0000:0000:0124:0001:0000:1234:0ff0»  →  «a56f::0124:0001:0000:1234:0ff0»;
  • «a56f:0000:0000:0000:0001:0000:1234:0ff0»  →  «a56f:0000::0000:0001:0000:1234:0ff0»;
  • «a56f:00d3:0000:0124:0001:0000:0000:0000»  →  «a56f:00d3:0000:0124:0001::0000»;
  • «0000:0000:0000:0000:0000:0000:0000:0000»  →  «::».

Сокращение нулевых блоков в адресе разрешается использовать не более одного раза. Это означает, что в сокращенной записи последовательность символов «::» может встретиться не более одного раза. В противном случае иногда будет невозможно определить число нулевых блоков, представленных каждым двойным двоеточием.

Формат записи IPv6-адреса после удаления ведущих нулей и сокращения нулевых блоков называется сокращенным.

Вам даны несколько сокращенных записей IPv6-адресов. Восстановите их полную запись.

Входные данные

В первой строке записано единственное целое число n — количество записей для восстановления (1 ≤ n ≤ 100).

В каждой из последующих n строк записано по одной строке — сокращенные IPv6-адреса. Каждая строка состоит только из символов строки «0123456789abcdef:».

Гарантируется, что каждый сокращенный адрес получен путем, описанным в условии, из некоторого полного IPv6-адреса.

Выходные данные

Для каждого сокращенного IPv6-адреса из входных данных выведите его полную запись на отдельной строке. Полные записи для сокращенных IPv6-адресов выводите в том порядке, в котором сокращенные записи идут во входных данных.

Примеры
Входные данные
6
a56f:d3:0:0124:01:f19a:1000:00
a56f:00d3:0000:0124:0001::
a56f::0124:0001:0000:1234:0ff0
a56f:0000::0000:0001:0000:1234:0ff0
::
0ea::4d:f4:6:0
Выходные данные
a56f:00d3:0000:0124:0001:f19a:1000:0000
a56f:00d3:0000:0124:0001:0000:0000:0000
a56f:0000:0000:0124:0001:0000:1234:0ff0
a56f:0000:0000:0000:0001:0000:1234:0ff0
0000:0000:0000:0000:0000:0000:0000:0000
00ea:0000:0000:0000:004d:00f4:0006:0000