#agc062d. [agc062_d]Walk Around Neighborhood

[agc062_d]Walk Around Neighborhood

問題文

二次元平面の原点 (0,0)(0,0) にメモ帳を持った高橋君がいます。メモ帳には NN 個の偶数 Di(1leqileqN)D_i\\ (1\\leq i \\leq N) が書かれています。

これから高橋君は二次元平面上で以下の行動を NN 回行います。

  • メモ帳に書かれている偶数を 11 つ選んで消す。選んだ偶数を dd としたとき、マンハッタン距離でちょうど dd だけ離れた点へ移動する。より正確には、現在高橋君がいる点の座標を (x,y)(x,y) としたとき、xx+yy=d|x-x'|+|y-y'|=d を満たす点 (x,y)(x',y') へ移動する。

NN 回の行動を行った後、高橋君は原点 (0,0)(0,0) に戻っていなければなりません。

そのように NN 回の行動を行うことができるか判定してください。可能な場合、ii 回目の行動を終えた後高橋君がいる座標を (xi,yi)(x_i,y_i) としたときの displaystylemax1leqileqN(xi+yi)\\displaystyle \\max_{1\\leq i \\leq N}(|x_i|+|y_i|) の最小値を求めてください(この値は整数になることが証明できます)。

制約

  • 1leqNleq2times1051 \\leq N \\leq 2 \\times 10^5
  • 2leqDileq2times1052 \\leq D_i \\leq 2 \\times 10^5
  • Di(1leqileqN)D_i\\ (1\\leq i \\leq N) は偶数
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられます。

NN D1D_1 D2D_2 dots\\dots DND_N

出力

上記のように NN 回の行動を行うことが不可能な場合、-1 を出力してください。可能な場合、displaystylemax1leqileqN(xi+yi)\\displaystyle \\max_{1\\leq i \\leq N}(|x_i|+|y_i|) の最小値を整数で出力してください。


入力例 1

3
2 4 6

出力例 1

高橋君が 11 回目から 33 回目の行動でそれぞれ 2,6,42,6,4 をメモ帳から消し、 (0,0)rightarrow(0,2)rightarrow(4,0)rightarrow(0,0)(0,0)\\rightarrow (0,2) \\rightarrow (-4,0) \\rightarrow (0,0) と移動すると displaystylemax1leqileqN(xi+yi)\\displaystyle \\max_{1\\leq i \\leq N}(|x_i|+|y_i|)44 になり、これが最小です。


入力例 2

5
2 2 2 2 6

出力例 2

高橋君が 11 回目から 55 回目の行動でそれぞれ 2,2,6,2,22,2,6,2,2 をメモ帳から消し、 (0,0)rightarrow(frac12,frac32)rightarrow(0,3)rightarrow(0,3)rightarrow(frac12,frac32)rightarrow(0,0)(0,0)\\rightarrow (\\frac{1}{2},\\frac{3}{2})\\rightarrow (0,3) \\rightarrow (0,-3) \\rightarrow (-\\frac{1}{2},-\\frac{3}{2}) \\rightarrow (0,0) と移動すると displaystylemax1leqileqN(xi+yi)\\displaystyle \\max_{1\\leq i \\leq N}(|x_i|+|y_i|)33 になり、これが最小です。

高橋君は格子点以外にも移動できます。


入力例 3

2
2 200000

出力例 3

-1

高橋君は上記のように NN 回行動した後、原点に戻ることはできません。