1 4 5 16 17 36 37 64 65 100 2 3 6 15 18 35 38 63 66 99 9 8 7 14 19 34 39 62 67 98 10 11 12 13 20 33 40 61 68 97 25 24 23 22 21 32 41 60 69 96 26 27 28 29 30 31 42 59 70 95 49 48 47 46 45 44 43 58 71 94 50 51 52 53 54 55 56 57 72 93 81 80 79 78 77 76 75 74 73 92 82 83 84 85 86 87 88 89 90 91

ぐねぐねスクエア 2017.3.7 問題

問題の概要

右図のように、1以上の整数が全て並んでいる。
※ 右図は紙面の都合で 100までの数しか並んでいないが本当は正の整数が全て並んでいる。
数をひとつ指定する。上下左右の隣がいくつなのかを、計算せよ。

入力

入力は
10
こんな感じ。説明不要でしょう。

出力

出力は、上下左右の隣のマスに入る数を、上下左右の順に。コンマ区切りで。
隣がない場合には「 - 」を出力すること。
先ほどの入力の場合、

9,25,-,11
と出力すればよい。

補足

サンプルデータ

# 入力 期待
0 10 9,25,-,11
1 1 -,2,-,4
2 2 1,9,-,3
3 4 -,3,1,5
4 26 25,49,-,27
5 43 42,56,44,58
6 72 71,73,57,93
7 82 81,121,-,83
8 91 92,112,90,110
9 100 -,99,65,101
10 122 121,169,-,123
11 141 142,140,104,148
12 145 -,146,144,196
13 320 321,319,261,329
14 504 503,505,465,557
15 563 564,562,498,590
16 906 905,907,895,1019
17 1047 1046,1048,1002,1134
18 1111 1068,1204,1110,1112
19 1338 1257,1401,1339,1337
20 1613 1612,1614,1588,1752
21 1845 1686,1854,1846,1844
22 1921 1922,1920,1780,1952
23 2517 2516,2518,2484,2688
24 2670 2671,2669,2535,2739
25 2798 2613,2821,2799,2797
26 2841 2778,2994,2840,2842
27 2896 2897,2895,2725,2937
28 3050 3001,3225,3049,3051
29 3354 3355,3353,3147,3375
30 3563 3564,3562,3402,3638
31 4454 4261,4525,4455,4453
32 5397 5262,5558,5396,5398
33 5592 5363,5659,5593,5591
34 6122 6121,6123,6047,6363
35 6772 6771,6773,6677,7009

C/C++/Java 用のテストデータ