시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 512 MB308553616.822%

문제

라그랑주의 네 제곱수 정리란, 어떤 자연수 N을 최대 4개의 제곱수들의 합으로 나타낼 수 있다는 정리이다. 예를 들면, 30 = 12 + 22 + 32 + 42으로 나타낼 수 있고, 1217 = 342 + 62 + 52으로 나타낼 수 있다.

하지만 BOJ에서 문제를 푸는 사람들은 수학을 열심히 공부했기 때문에, 덧셈 뿐만 아니라 뺄셈도 할 줄 안다. 하이비는 이러한 사람들을 위해 위 정리의 업그레이드 버전인 다음 추측을 만들었다.

"정수 N은 1개 이상 M개 이하서로 다른 양의 제곱수들을 더하고 빼서 만들 수 있다."

예를 들면, 30 = 52 + 32 - 22으로, 8 = 32 - 12으로, -16 = -42으로 나타낼 수 있다.

하이비는 위와 같은 추측을 만들었지만, 위 추측을 만족시키는 M을 찾지 못했다. 그래서 당신에게 N이 주어질 때, N을 만들기 위해 필요한 양의 제곱수의 최소 개수를 찾아주는 프로그램을 만들어달라고 부탁해왔다.

하이비를 위해 정수 N을 만들기 위한 양의 제곱수의 최소 개수를 찾는 프로그램을 대신 짜주자.

입력

첫째 줄에 만들어야 할 정수 N이 주어진다.

출력

만약 N을 만들 수 없으면 첫째 줄에 -1을 출력한다.

그렇지 않다면, 첫째 줄에 사용한 양의 제곱수의 개수 K을 출력한 뒤, K개의 줄에 걸쳐서 다음 형식으로 N을 만드는 방식을 출력한다.

  • + X: X2을 더한다.
  • - X: X2을 뺀다.

제한

  • |N| ≤ 1012
  • 1 ≤ K
  • 1 ≤ X ≤ 1012
  • 출력하는 모든 X는 달라야 한다.

예제 입력 1

16

예제 출력 1

1
+ 4

예제 입력 2

1217

예제 출력 2

2
+ 16
+ 31

지문에 나온 1217 = 342 + 62 + 52은 제곱수를 더 많이 사용하므로 답이 될 수 없다.

예제 입력 3

-30

예제 출력 3

3
- 5
- 3
+ 2

이 외에도 102 - 92 - 72 = 100 - 81 - 49 = -30 등이 가능하다.

출처