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.
Примеры сокращения последовательностей нулевых блоков можно видеть ниже:
Сокращение нулевых блоков в адресе разрешается использовать не более одного раза. Это означает, что в сокращенной записи последовательность символов «::» может встретиться не более одного раза. В противном случае иногда будет невозможно определить число нулевых блоков, представленных каждым двойным двоеточием.
Формат записи 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
Название |
---|