ギャスケット 2017.7.1

0 1 3 4 9 10 12 13 27 28 30 31 36 37 39 40 81 82 84 85 90 91 2 5 11 14 29 32 38 41 83 86 92 6 7 15 16 33 34 42 43 87 88 96 97 8 17 35 44 89 98 18 19 21 22 45 46 48 49 99 100 102 103 20 23 47 50 101 104 24 25 51 52 105 106 26 53 107 54 55 57 58 63 64 66 67 135 136 138 139 144 145 56 59 65 68 137 140 146 60 61 69 70 141 142 150 151 62 71 143 152 72 73 75 76 153 154 156 157 74 77 155 158 78 79 159 160 80 161 162 163 165 166 171 172 174 175 189 190 192 193 198 199 201 202 164 167 173 176 191 194 200 203 168 169 177 178 195 196 204 205 170 179 197 206 180 181 183 184 207 208 210 211 182 185 209 212

問題の概要

右図のように( あるいは 大きな図 のように)、0以上の整数が全て並んでいる。
並び方は

という具合。
で。
数を指定する。
その数の上下左右の隣の値を昇順に出力せよ。

入力

入力は
21
こんな感じ。
ふつうに 10進数。

出力

出力は、入力で指定されたマスの隣接マスの数字を集めて、昇順にコンマ区切りで。
数字の入っていないマスは無視で。

先ほどの入力の場合、
19,22,23
と出力すればよい。

補足

サンプルデータ

# 入力 期待 状況へのリンク
0 21 19,22,23 リンク
1 0 1,2 リンク
2 1 0,3 リンク
3 2 0,6 リンク
4 3 1,4,5 リンク
5 4 3,9 リンク
6 9 4,10,11 リンク
7 15 11,16,17 リンク
8 27 13,28,29 リンク
9 32 30 リンク
10 47 45,51 リンク
11 65 63,69 リンク
12 80 78,162 リンク
13 199 198,201 リンク
14 204 200,205,206 リンク
15 243 121,244,245 リンク
16 493 492 リンク
17 508 507 リンク
18 728 726,1458 リンク
19 793 792,795 リンク
20 902 900,906 リンク
21 981 976,982,983 リンク
22 1093 1092,2187 リンク
23 1202 1200 リンク
24 1300 1299,1305 リンク
25 1962 1952,1963,1964 リンク
26 2188 2187,2190 リンク
27 2405 2403,2409 リンク
28 3326 3324 リンク
29 6561 3280,6562,6563 リンク
30 6612 6608,6613,6614 リンク
31 7058 7056,7062 リンク
32 8444 8442,8448 リンク
33 9841 9840,19683 リンク
34 15243 15239,15244,15245 リンク
35 19946 19944,19950 リンク
36 21148 21147 リンク
37 39365 39363 リンク
38 39366 19682,39367,39368 リンク
39 55694 55692,55698 リンク
40 57245 57243 リンク
41 66430 66429,66432 リンク
42 92740 92739 リンク
43 115250 115248 リンク
44 163031 163029 リンク
45 221143 221142,221157 リンク
46 410353 410352 リンク
47 412649 412647,412659 リンク
48 550391 550389 リンク
49 699921 699880,699922,699923 リンク
50 797161 797160,1594323 リンク
51 1000000 999999,1000002 リンク

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