iSharp

시간 제한1초메모리 제한128 MB

문제

선영이는 C, C++, Java와는 다른, 아주 세련된 프로그래밍 언어를 만들고 그 이름을 i#으로 지었다.

i#은 기본 자료형과 함께 배열([]), 참조(&), 포인터(*)를 제공한다. 배열, 참조, 포인터는 순서에 상관없이 자유롭게 섞어 쓸 수 있다. 예를 들어 int의 참조의 참조의 배열의 포인터도 올바른 타입이며, 이는 int&&[]*로 적는다.

i#에서는 여러 변수를 한 줄에 함께 선언할 수 있다. 먼저 공통된 자료형을 쓴 뒤, 이어서 각 변수의 이름과 그 변수에만 추가로 붙는 자료형 기호를 쓰면 된다. 예를 들어

int& a*[]&, b, c*;

에서 각 변수의 타입은 다음과 같다.

  • a의 타입은 int&&[]*
  • b의 타입은 int&
  • c의 타입은 int&*

변수 이름의 오른쪽에 붙은 자료형 기호들은, 기호 단위로 순서를 뒤집어 이름의 왼쪽(공통 자료형 뒤)으로 옮길 수 있다. 여기서 []는 하나의 기호로 취급한다. 따라서 int*& aint a&*와 같다.

이렇게 한 줄에 여러 변수를 선언하면 알아보기 어렵기 때문에, 앞으로는 한 줄에 하나씩 선언하려고 한다.

i#의 변수 선언문이 하나 주어졌을 때, 각 변수의 오른쪽에 있는 자료형 기호를 모두 규칙에 따라 왼쪽으로 옮기고, 한 줄에 한 변수씩 선언하는 프로그램을 작성하시오.

입력

첫째 줄에 i#의 변수 선언문이 하나 주어진다. 이 선언문에는 여러 개의 변수가 포함될 수 있다.

선언문은 다음 순서로 이루어진다.

  • 맨 앞에 기본 자료형이 온다.
  • 그 뒤에 공통 자료형 기호가 이어진다(없을 수도 있다).
  • 공백을 하나 둔 뒤, 변수 선언들이 이어진다. 각 변수 선언은 콤마와 공백(, )으로 구분되며, 전체는 ;로 끝난다.
  • 각 변수 선언은 변수 이름으로 시작하고, 그 뒤에 그 변수에만 붙는 추가 자료형 기호가 이어진다(없을 수도 있다).

기본 자료형 이름과 변수 이름은 서로 같지 않으며, 알파벳 소문자와 대문자로만 이루어진다. 자료형 기호는 &, *, []뿐이다. 입력 줄의 길이는 120글자를 넘지 않는다.

출력

입력으로 주어진 변수 선언문을 문제의 규칙에 따라 변형하여, 한 줄에 한 변수씩 출력한다. 각 줄에는 그 변수의 완성된 자료형과 변수 이름을 출력하고, 자료형과 변수 이름 사이에는 공백을 하나 둔다. 각 줄은 ;로 끝난다. 변수는 입력에 선언된 순서대로 출력한다.