시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
4 초 (언어별 추가 시간 없음) 512 MB 449 63 56 26.794%

문제

코드 페스티벌 온라인 예선에 참가하고 있던 라이언은 이제 남은 시간이 00:00:00밖에 없다는 것을 깨닫게 되었다. 라이언은 이미 머릿속에서 풀이를 구상하고 코딩도 완료했기 때문에, 이를 그대로 타이핑하기만 하면 된다.

지금 라이언은 변수들과 정수들끼리 같은지 다른지 비교하는 간단한 조건문 (conditional expression) S를 작성하고자 한다. 자세히 설명하자면,

  • 라이언이 작성하는 변수의 이름은 영문 알파벳으로만 구성된 문자열이다. 예를 들어, kakao, COde, festival은 변수의 이름이 될 수 있지만, C0de, 2018, hello_world는 변수의 이름이 될 수 없다. 변수는 정수 값을 저장하고 있으며, 변수의 은 해당 변수가 저장하고 있는 정수 값을 의미한다.
  • 라이언이 작성하는 정수는 무조건 -109 이상 109 이하이다. 0을 제외한 정수는 숫자 0으로 시작하지 않으며, 0을 표기하는 유일한 방법은 0이다. 예를 들어, 라이언은 0, 123456, -987654321 과 같은 정수는 작성할 수 있지만, -0, 0123, 00000, -009876, 999999999999999와 같은 정수는 작성할 수 없다.
  • 단항식변수 또는 정수이다.
  • 라이언은 아래 두 개의 비교 연산자를 사용하여 논리식을 만든다.
    • 같음 연산자 ==: <a>==<b>와 같이 사용하며, 두 단항식 <a><b>의 값을 계산하여, 같으면 true를, 다르면 false를 반환한다.
    • 다름 연산자 !=: <a>!=<b>와 같이 사용하며, 두 단항식 <a><b>의 값을 계산하여, 다르면 true를, 같으면 false를 반환한다.
    • 위의 두 연산자 모두, 연산자의 좌변과 우변에는 오직 단항식만이 올 수 있다. 예를 들어, (a==b)!=(b==c)!=의 좌변과 우변에 단항식이 아닌 논리식이 들어 있으므로 라이언이 사용하는 논리식이 아니다.
  • 라이언은 논리곱 연산자 &&한 개 이상의 논리식들을 연결하여 조건문을 만든다. 연결한 논리식들이 모두 true를 반환할 때에만 true, 그렇지 않다면 false를 반환하도록 할 것이다. 연결할 때에 공백 등을 삽입하지 않는다. 예를 들어, 라이언이 세 논리식 a==b, b!=c, 1!=a를 연결하고자 한다면, a==b&&b!=c&&1!=a와 같이 연결한다.

라이언이 작성하고자 하는 조건문 S는 위 문단에서 언급한 방법으로만 만들 수 있음이 보장된다.

하지만, 라이언은 남은 시간에 비해 S의 길이가 너무 길다고 생각하여, S와 동치이면서 위에서 제시된 방법으로 만들 수 있는 길이가 가장 짧은 조건문 S'을 대신 입력할 생각이다. 두 조건문 T1T2가 동치라는 것은, 어떤 변수 (조건문에 등장하지 않는 모든 가능한 변수도 포함) 에 어떤 값 (라이언이 작성하지 않는 정수도 가능)을 넣더라도 T1의 참/거짓 여부와 T2의 참/거짓 여부가 같다는 것이다.

라이언을 위해, S'을 대신 구해주는 프로그램을 작성하자. S'이 여러 가지 있다면, 그 중 하나를 아무거나 구해주면 된다.

입력

첫 번째 줄에 라이언이 입력하고자 하는 조건문 S(1 ≤ |S| ≤ 106)가 주어진다.

출력

첫 번째 줄에 S와 동치이면서, 문제 본문에 제시된 방법으로 만들 수 있는 길이가 가장 짧은 조건문 S'을 출력한다.

예제 입력 1

festival==kakao&&festival==2018&&haha==123456&&hoho!=123456

예제 출력 1

festival==2018&&kakao==2018&&haha==123456&&hoho!=haha

예제 입력 2

kakaocodefestival==-20180804&&hello!=-20180804

예제 출력 2

kakaocodefestival==-20180804&&hello!=-20180804

a==-20180804&&kakaocodefestival==a&&hello!=a와 같은 코드는 동치가 아니다. 반례는 a ≠ -20,180,804일 때이다.

예제 입력 3

a==b&&b==c&&c==a

예제 출력 3

a==b&&a==c

a==b&&b==c, c==a&&a==b 등도 가능하다.

예제 입력 4

int==float

예제 출력 4

int==float

비교 연산이 하나밖에 없다면 연결하지 않는다.

예제 입력 5

a==A&&B==b

예제 출력 5

A==a&&b==B

변수의 이름에 들어가는 글자는 대소문자를 구분한다.