만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

타입 차트

시간 제한2초메모리 제한512 MB

요약
단일 또는 이중 타입 Nudgémon에 대한 타입 1 공격의 관찰 결과가 주어졌을 때, 모든 결과와 맞는 타입 표의 첫 번째 행을 출력합니다.
난이도

어려움10점 중 8점

유형
수학, 비트 연산, 구현
정답자
아직 제출이 없습니다

문제

당신은 Nudgémon이라는 게임을 하고 있다. 이 게임의 핵심 요소는 Nudgémon 전투다. 전투에서 두 플레이어는 각자 원하는 Nudgémon을 하나씩 내보낸 뒤 번갈아 상대 Nudgémon을 공격한다.

각 공격에는 타입이 있고(1부터 n 사이의 정수), 상대 Nudgémon은 타입을 하나 또는 두 개 가진다. 타입 조합에 따라 공격이 주는 피해량이 달라진다.

공격 타입 i가 단일 타입 j인 Nudgémon에 맞으면 피해 배율은 a(i,j)a(i, j)다. 여기서 aa는 값이 {0,0.5,1,2}\{0, 0.5, 1, 2\}에 속하는 타입 상성표다. 이중 타입 j, k인 Nudgémon에 맞으면 피해 배율은 a(i,j)×a(i,k)a(i, j) \times a(i, k)다.

게임은 피해 배율 vv에 따라 다른 메시지를 출력한다.

배율메시지
v = 0It had no effect. (x)
0 < v < 1It's not very effective. . . (-)
v = 1메시지 없음 (=)
v > 1It's super effective! (+)

당신은 이 게임이 처음이라 상성표 aa가 어떻게 생겼는지 모른다. 타입 1의 공격으로 여러 Nudgémon을 공격했을 때 나온 출력을 관찰했고, 이 관찰과 일치하는 aa의 첫 번째 행을 복원하려 한다.

입력

첫 줄에 두 정수 n과 m이 주어진다(1≤n≤1051 \le n \le 10^5, 1≤m≤1051 \le m \le 10^5). n은 타입의 수, m은 관찰 횟수다.

이어지는 m개의 줄에는 정수 i, j와 문자 c가 주어진다(1≤i,j≤n1 \le i, j \le n, c는 x, -, =, + 중 하나). c는 타입 i와 j를 가진 Nudgémon을 공격했을 때 관찰된 결과다. i = j이면 그 Nudgémon의 타입은 하나뿐이다.

출력

길이 n의 문자열을 한 줄에 출력한다. i번째 문자는 타입 1의 공격으로 타입 i인 Nudgémon을 공격했을 때의 결과다. 가능한 해가 여러 개면 아무거나 출력해도 된다. 해가 존재함이 보장된다.

예제1

  1. 예제 1

    입력
    5 5
    1 2 -
    2 4 -
    4 5 x
    2 3 =
    3 4 +
    
    예상 출력
    =-+=x