MKnez's ConstructiveForces Task (Codeforces 1779B)
Tags: Math, constructive algorithms

MKnez wants to construct an array $$$s_1,s_2, \ldots , s_n$$$ satisfying the following conditions:  Each element is an integer number different from $$$0$$$;  For each pair of adjacent elements their sum is equal to the sum of the whole array. More formally, $$$s_i \neq 0$$$ must hold for each $$$1 \leq i \leq n$$$. Moreover, it must hold that $$$s_1 + s_2 + \cdots + s_n = s_i + s_{i+1}$$$ for each $$$1 \leq i < n$$$.Help MKnez to construct an array with these properties or determine that it does not exist.

Input: Each test contains multiple test cases. The first line contains the number of test cases $$$t$$$ ($$$1 \leq t \leq 100$$$). The description of the test cases follows.The only line of each test case contains a single integer $$$n$$$ ($$$2 \leq n \leq 1000$$$) — the length of the array.

Output: For each test case, print "YES" if an array of length $$$n$$$ satisfying the conditions exists. Otherwise, print "NO". If the answer is "YES", on the next line print a sequence $$$s_1,s_2, \ldots, s_n$$$ satisfying the conditions. Each element should be a non-zero integer in the range $$$[-5000,5000]$$$, i. e. $$$-5000 \leq s_i \leq 5000$$$ and $$$s_i \neq 0$$$ should hold for each $$$1 \leq i \leq n$$$.It can be proved that if a solution exists then there also exists one which satisfies the additional constraints on the range.If there are several correct answers, print any of them. 

Note: In the first test case, $$$[9,5]$$$ is a valid answer since $$$9+5$$$ (the sum of the two adjacent elements $$$s_1+s_2$$$) is equal to $$$9+5$$$ (the sum of all elements). Other solutions include $$$[6,-9], [-1,-2], [-5000,5000], \ldots$$$For the second test case, let us show why some arrays do not satisfy the constraints:  $$$[1,1,1]$$$  — $$$s_1+s_2 = 1+1 = 2$$$ and $$$s_1+s_2+s_3=1+1+1 = 3$$$ differ;  $$$[1,-1,1]$$$  — $$$s_1+s_2=1+(-1)=0$$$ and $$$s_1+s_2+s_3=1+(-1)+1 = 1$$$ differ;  $$$[0,0,0]$$$  — The array $$$s$$$ cannot contain a $$$0$$$. This is not a proof, but it can be shown that the answer is "NO".

Sample Inputs:
2
2
3

Sample Outputs:
YES
9 5
NO

Solution (Python):
n = int(input())
for i in range(n):
    k = int(input())
    if k % 2 and k != 3:
        print('YES')
        n = k // 2
        b = -n
        a = n - 1
        print(f'{a} {b} ' * n + f'{a}')
    elif k == 3:
        print('NO')
    else:
        print('YES')
        print(('1 -1 ' * (k // 2)).strip())

Solution (Python):
t = int(input())
for tc in range(t):
    n = int(input())
    if n % 2 == 0:
        print('YES')
        print('1 -1 ' * (n // 2))
    elif n == 3:
        print('NO')
    else:
        k = (n - 1) // 2
        print('YES')
        print((str(k - 1) + ' ' + str(-k) + ' ') * k + str(k - 1))

Solution (Python):
out = []
for _ in range(int(input())):
    n = int(input())
    if n % 2 == 0:
        out.append('YES')
        out.append('-1 1 ' * (n // 2))
    elif n == 3:
        out.append('NO')
    else:
        b = n - 1
        a = 3 - n
        out.append('YES')
        out.append(f'{a} {b} ' * (n // 2) + str(a))
for i in out:
    print(i)