경험과 행운

NYPC 2021 · 본선

에띠가 기획하고 있는 게임에는 레벨이 11부터 NN까지 총 NN 개가 있다. 각 레벨에는 경험과 행운이라는 수치가 있고, 이 수치를 사용해서 에띠는 게임 밸런싱을 하려고 한다.

레벨 ii경험AiA_i이다. 경험은 절대 늙지 않는다는 말이 있듯, 경험은 레벨이 오름에 따라서 감소하지 않아야 한다. 즉, 1i<N1 \le i \lt Nii에 대해 AiAi+1A_i \le A_{i+1}이다.

레벨 ii행운BiB_i이다. 초심자의 행운이란 말이 있듯, 행운은 레벨이 오름에 따라서 증가하지 않아야 한다. 즉, 1i<N1 \le i \lt Nii에 대해 BiBi+1B_i \ge B_{i+1}이다.

레벨 ii실력 CiC_i는 행운과 경험을 합한 수치인 Ai+BiA_i+B_i이다.

에띠는 레벨별로 게임이 가장 재밌을 만한 실력 값 C1,C2,,CNC_1, C_2, \cdots, C_N을 정해놓았다. 이때, 행운과 경험을 적당히 정해서 원하는 레벨별 실력 값을 만들 수 있는지 구하여라.

입력 형식

첫 줄에 레벨의 수를 나타내는 정수 NN이 주어진다. (1N200000(1 \le N \le 200\, 000)

두 번째 줄에 원하는 실력 수치인 C1,C2,,CNC_1, C_2, \cdots, C_N를 나타내는 NN 개의 정수가 공백으로 구분되어 주어진다. (Ci109|C_i| \le 10^9)

출력 형식

행운과 경험을 어떻게 정하든 원하는 레벨별 실력 값을 만들 수 없으면, 첫 줄에 NO를 출력한다.

행운과 경험을 적당히 정해서 원하는 레벨별 실력 값을 만들 수 있으면, 첫 줄에 YES를 출력하고, 두 번째 줄에 경험을 나타내는 NN 개의 정수 A1,A2,,ANA_1, A_2, \cdots, A_N를, 세 번째 줄에 행운을 나타내는 NN 개의 정수 B1,B2,,BNB_1, B_2, \cdots, B_N를 공백으로 구분하여 출력한다. 단, 출력하는 수 AiA_iBiB_i는 절댓값이 101410^{14} 이하여야 한다.

만약 답이 여러 가지라면, 그중 아무거나 하나를 출력한다.

행운과 경험을 적당히 정해서 주어진 레벨별 실력 값을 만들 수 있으면, AiA_i, BiB_i의 절댓값이 101410^{14} 이하인 답이 반드시 존재함을 증명할 수 있다.

예제 1

입력

4 5 13 102 1001

출력

YES 1 10 100 1000 4 3 2 1

예제 2

입력

5 1 0 1 4 9

출력

YES 1 4 9 16 25 0 -4 -8 -12 -16

예제 3

입력

4 5 6 6 5

출력

YES 1 3 3 4 4 3 3 1

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 11

N10000;N \le 10\, 000; 주어지는 C1,C2,,CNC_1, C_2, \cdots, C_N은 감소하지 않는 수열이거나, 증가하지 않는 수열이다.

종류 2: 38

N10000N \le 10\, 000

종류 3: 51

추가적인 제한 조건이 없음.

해설