내비라크의 완전한 수열

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

요약
1부터 K까지의 값으로 이루어진 수열이 주어질 때, 모든 값이 같은 횟수씩 나타나도록 만드는 단 하나의 추가, 삭제, 교체 연산을 찾는다.
난이도

보통10점 중 4점

유형
배열, 해시맵, 그리디
정답자
아직 제출이 없습니다

문제

내비라크는 쉽게 싫증을 내는 젊은 선원이다. 정수 수열을 좋아하고, 수열을 분류하는 방법을 만드는 것도 좋아한다. 내비라크는 정수 KK를 하나 정해 두고, 수열이 11 이상 KK 이하의 정수만 담고 있으면서 11부터 KK까지의 정수가 모두 같은 횟수만큼 나타나면 그 수열을 완전하다고 부른다. 원소가 하나도 없는 수열도 모든 정수가 00번씩 나타나므로 완전하다.

바다가 잔잔해 할 일이 없을 때를 위해 내비라크는 동료와 함께 즐길 놀이를 하나 만들었다. 먼저 양의 정수 KK를 고르고, 분필로 갑판에 11 이상 KK 이하의 정수 NN개로 이루어진 수열 SS를 적는다. 그다음 동료 한 명에게 도전한다. 도전을 받은 동료는 아래 세 연산 중 정확히 하나를 수행해서 SS를 완전한 수열로 만들어야 한다.

  • -x: SS에서 정수 xx가 나타나는 자리 하나를 지운다.
  • +x: 값이 xx인 정수를 SS에 새로 넣는다.
  • -x +y: SS에서 정수 xx가 나타나는 자리 하나를 값이 yy인 정수로 바꾼다.

내비라크는 머리가 좋다. 이미 완전한 수열은 절대 적지 않고, 적는 정수에 규칙이 없을 때가 많아서 퍼즐을 푸는 연산을 찾기가 꽤 어렵다. 내비라크와 자주 항해하는 친구는 이 놀이에서 매번 지는 데 지쳤다. 다음 항해를 떠나기 전에, 놀이의 답을 찾아 주는 프로그램을 만들어 친구를 도와주자.

입력

첫째 줄에 두 정수 KK와 NN이 주어진다 (3≤K≤10003 \le K \le 1000, 1≤N≤1041 \le N \le 10^4). KK는 내비라크가 놀이를 시작할 때 고른 정수이고, NN은 갑판에 적은 수열의 길이다. 둘째 줄에 갑판에 적힌 수열을 나타내는 정수 NN개 S1,S2,…,SNS_1, S_2, \dots, S_N이 주어진다 (1≤Si≤K1 \le S_i \le K). 주어지는 수열은 완전하지 않다.

출력

친구가 놀이에서 이길 수 있는 연산을 한 줄에 출력한다. 이기는 방법이 없으면 별표 * 하나를 출력한다. 연산은 문제에 나온 형식, 즉 -x, +x, -x +y 중 하나로 적어야 한다. 이기는 연산이 있으면 그 연산은 유일하다.

예제4

  1. 예제 1

    입력
    3 5
    1 3 2 3 1
    
    예상 출력
    +2
    
  2. 예제 2

    입력
    3 7
    1 2 3 3 3 2 1
    
    예상 출력
    -3
    
  3. 예제 3

    입력
    3 6
    3 1 2 1 3 1
    
    예상 출력
    -1 +2
    
  4. 예제 4

    입력
    3 6
    2 3 2 2 2 1
    
    예상 출력
    *