Una dirección IPv6 es una secuencia de 8 grupos de 4 dígitos hexadecimales, separados por dos puntos (:), como las siguientes:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
2001:0DB8:0000:CD30:0000:0000:0000:0000
2002:0000:0000:00AA:0000:0000:0A00:0001
0000:0000:0000:0000:0000:0000:FFFF:FFFF
0000:0000:0000:0000:0000:0000:0000:0000
En comparación con las antiguas direcciones IPv4, las direcciones IPv6 son tan largas que se han ideado las siguientes abreviaturas:
Por ejemplo, si aplicáramos la primera abreviatura las direcciones anteriores quedarían:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
2001:DB8:0:CD30:0:0:0:0
2002:0:0:AA:0:0:A00:1
0:0:0:0:0:0:FFFF:FFFF
0:0:0:0:0:0:0:0
Y si además aplicásemos la segunda abreviatura (en nuestro caso, reemplazando siempre el grupo de ceros más largo, y en caso de empate, el de más a la izquierda) obtendríamos:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
2001:DB8:0:CD30::
2002::AA:0:0:A00:1
::FFFF:FFFF
::
En este problema te pedios que pases direcciones IPv6 de un formato (abreviado o sin abreviar) a otro.
Entrada
Cada entrada contiene varios casos. La primera línea de la entrada contiene una letra (C, 1 o 2) según si se te pide escribir la dirección IPv6 en formato extendido (C), aplicar la primera abreviatura (1), o las dos primeras abreviaturas (2).
La segunda línea de la entrada contiene el número n de casos, no superior a 1000. Las n líneas restantes contienen direcciones IPv6 que tienes que transcribir. Si se te pide 1 o 2, recibirás una dirección IPv6 sin abreviar, que deberás abreviar siguiendo las reglas descritas anteriormente. (Para la segunda abreviatura, abrevia siempre la mayor cantidad de ceros posible y, en caso de haber varias, abrevia el grupo de ceros más a la izquierda, como se hace en el tercer ejemplo).
Si se te pide C, recibirás una dirección IPv6 abreviada (o parcialmente abreviada) que deberás escribir en formato extendido (8 grupos de 4 dígitos hexadecimales).
Salida
Para cada caso, escribe una única línea (acabada en salto de línea) con la dirección IPv6, abreviada o sin abreviar, según se te pida.
Puntuación
Resolver varias entradas donde se te pide aplicar la primera abreviatura (1), como el Ejemplo 1.
Resolver varias entradas donde se te pide extender (C) direcciones IPv6 que no han sido abreviadas según la segunda norma (es decir, no contendrán ::), como el Ejemplo 2.
Resolver varias entradas donde se te pide aplicar las dos primeras abrevituras (2), como el Ejemplo 3.
Resolver varias entradas donde se te pide extender (C) direcciones IPv6 de cualquier tipo, como el Ejemplo 4.
Input
1 5 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:0DB8:0000:CD30:0000:0000:0000:0000 2002:0000:0000:00AA:0000:0000:0A00:0001 0000:0000:0000:0000:0000:0000:FFFF:FFFF 0000:0000:0000:0000:0000:0000:0000:0000
Output
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:DB8:0:CD30:0:0:0:0 2002:0:0:AA:0:0:A00:1 0:0:0:0:0:0:FFFF:FFFF 0:0:0:0:0:0:0:0
Input
C 5 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:DB8:0:CD30:0:0:0:0 2002:0:0000:00AA:0:00:A00:01 0000:0:0:0:0:0:FFFF:FFFF 0:0:0:0:0:0:0:0
Output
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:0DB8:0000:CD30:0000:0000:0000:0000 2002:0000:0000:00AA:0000:0000:0A00:0001 0000:0000:0000:0000:0000:0000:FFFF:FFFF 0000:0000:0000:0000:0000:0000:0000:0000
Input
2 5 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:0DB8:0000:CD30:0000:0000:0000:0000 2002:0000:0000:00AA:0000:0000:0A00:0001 0000:0000:0000:0000:0000:0000:FFFF:FFFF 0000:0000:0000:0000:0000:0000:0000:0000
Output
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:DB8:0:CD30:: 2002::AA:0:0:A00:1 ::FFFF:FFFF ::
Input
C 6 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:DB8:0:CD30:: 2002:0:0:00AA:0:0:A00:01 0000:0::FFFF:FFFF 0:0::0:0 ::
Output
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:0DB8:0000:CD30:0000:0000:0000:0000 2002:0000:0000:00AA:0000:0000:0A00:0001 0000:0000:0000:0000:0000:0000:FFFF:FFFF 0000:0000:0000:0000:0000:0000:0000:0000 0000:0000:0000:0000:0000:0000:0000:0000