MORTIF test correctness.
!< MORTIF test correctness. program mortif_test_correctness !----------------------------------------------------------------------------------------------------------------------------------- !< MORTIF test correctness. !----------------------------------------------------------------------------------------------------------------------------------- use, intrinsic :: iso_fortran_env, only : int32, int64 use mortif use tester !----------------------------------------------------------------------------------------------------------------------------------- !----------------------------------------------------------------------------------------------------------------------------------- type(tester_t) :: tester_mort !----------------------------------------------------------------------------------------------------------------------------------- !----------------------------------------------------------------------------------------------------------------------------------- call tester_mort%init ! tests for extrema call test_morton3D(tester_handler=tester_mort, indexes=[0_int32, 0_int32, 0_int32], reference=0_int64) !call test_morton3D(tester_handler=tester_mort, indexes=[2**21_int32-1_int32,7_int32, 0_int32], reference=1317624576693539547_int64) ! 4096 tests for 16x16x16 matrix ! call test_16_16_16(tester_handler=tester_mort) call tester_mort%print !----------------------------------------------------------------------------------------------------------------------------------- contains subroutine test_morton3D(tester_handler, indexes, reference) !--------------------------------------------------------------------------------------------------------------------------------- !< Test morton3 encoder/decoder. !--------------------------------------------------------------------------------------------------------------------------------- type(tester_t), intent(inout) :: tester_handler !< Tester handler. integer(int32), intent(in) :: indexes(1:3) !< Indexes. integer(int64), intent(in) :: reference !< Reference morton code. integer(int64) :: morton !< Morton code. integer(int32) :: de_indexes(1:3) !< Indexes computed by decoding reference. !--------------------------------------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------------------------------------- morton = morton3D(i=indexes(1), j=indexes(2), k=indexes(3)) call demorton3D(code=reference, i=de_indexes(1), j=de_indexes(2), k=de_indexes(3)) call tester_handler%assert_equal(int(morton, int32), int(reference, int32)) ! call tester_handler%assert_equal(.true., all(de_indexes==indexes)) ! TODO reintroduce !--------------------------------------------------------------------------------------------------------------------------------- endsubroutine test_morton3D subroutine test_16_16_16(tester_handler) !--------------------------------------------------------------------------------------------------------------------------------- !< Test morton3 encoder/decoder for the matrix [(0,0,0), (1,0,0), ... (15,15,15)], namely 4096 tests. !--------------------------------------------------------------------------------------------------------------------------------- type(tester_t), intent(inout) :: tester_handler !< Tester handler. integer(int64) :: reference_morton(1:4096) !< Morton code references. integer(int32) :: reference_indexes(1:3, 1:4096) !< Indexes references. integer(int32) :: unit_scratch !< Unit of scratch file. integer(int64) :: morton !< Morton encode result. integer(int32) :: indexes(1:3) !< Indexes decoding result. integer(int32) :: i !< Counter. integer(int32) :: j !< Counter. integer(int32) :: t !< Counter. !--------------------------------------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------------------------------------- call create_morton_file(u=unit_scratch) read(unit_scratch, *)reference_morton close(unit=unit_scratch) call create_indexes_file(u=unit_scratch) read(unit_scratch, *)((reference_indexes(i, j), i=3,1,-1), j=1,4096) close(unit=unit_scratch) do t=1, size(reference_morton, dim=1) morton = morton3D(i=reference_indexes(1,t), j=reference_indexes(2,t), k=reference_indexes(3,t)) ! call tester_handler%assert_equal(morton, reference_morton(t)) ! TODO reintroduce enddo !--------------------------------------------------------------------------------------------------------------------------------- endsubroutine test_16_16_16 subroutine create_morton_file(u) !--------------------------------------------------------------------------------------------------------------------------------- !< Create the scratch file containing the validation Morton's codes. !--------------------------------------------------------------------------------------------------------------------------------- integer(int32), intent(out) :: u !< Unit of scratch file. !--------------------------------------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------------------------------------- open(newunit=u, status='scratch') write(u,*)0 , 4 , 32 , 36 , 256 , 260 , 288 , 292 , 2048 , 2052 , 2080 , 2084 , 2304 , 2308 , 2336 , 2340 , 2 write(u,*)6 , 34 , 38 , 258 , 262 , 290 , 294 , 2050 , 2054 , 2082 , 2086 , 2306 , 2310 , 2338 , 2342 , 16 write(u,*)20 , 48 , 52 , 272 , 276 , 304 , 308 , 2064 , 2068 , 2096 , 2100 , 2320 , 2324 , 2352 , 2356 , 18 write(u,*)22 , 50 , 54 , 274 , 278 , 306 , 310 , 2066 , 2070 , 2098 , 2102 , 2322 , 2326 , 2354 , 2358 , 128 write(u,*)132 , 160 , 164 , 384 , 388 , 416 , 420 , 2176 , 2180 , 2208 , 2212 , 2432 , 2436 , 2464 , 2468 , 130 write(u,*)134 , 162 , 166 , 386 , 390 , 418 , 422 , 2178 , 2182 , 2210 , 2214 , 2434 , 2438 , 2466 , 2470 , 144 write(u,*)148 , 176 , 180 , 400 , 404 , 432 , 436 , 2192 , 2196 , 2224 , 2228 , 2448 , 2452 , 2480 , 2484 , 146 write(u,*)150 , 178 , 182 , 402 , 406 , 434 , 438 , 2194 , 2198 , 2226 , 2230 , 2450 , 2454 , 2482 , 2486 , 1024 write(u,*)1028 , 1056 , 1060 , 1280 , 1284 , 1312 , 1316 , 3072 , 3076 , 3104 , 3108 , 3328 , 3332 , 3360 , 3364 , 1026 write(u,*)1030 , 1058 , 1062 , 1282 , 1286 , 1314 , 1318 , 3074 , 3078 , 3106 , 3110 , 3330 , 3334 , 3362 , 3366 , 1040 write(u,*)1044 , 1072 , 1076 , 1296 , 1300 , 1328 , 1332 , 3088 , 3092 , 3120 , 3124 , 3344 , 3348 , 3376 , 3380 , 1042 write(u,*)1046 , 1074 , 1078 , 1298 , 1302 , 1330 , 1334 , 3090 , 3094 , 3122 , 3126 , 3346 , 3350 , 3378 , 3382 , 1152 write(u,*)1156 , 1184 , 1188 , 1408 , 1412 , 1440 , 1444 , 3200 , 3204 , 3232 , 3236 , 3456 , 3460 , 3488 , 3492 , 1154 write(u,*)1158 , 1186 , 1190 , 1410 , 1414 , 1442 , 1446 , 3202 , 3206 , 3234 , 3238 , 3458 , 3462 , 3490 , 3494 , 1168 write(u,*)1172 , 1200 , 1204 , 1424 , 1428 , 1456 , 1460 , 3216 , 3220 , 3248 , 3252 , 3472 , 3476 , 3504 , 3508 , 1170 write(u,*)1174 , 1202 , 1206 , 1426 , 1430 , 1458 , 1462 , 3218 , 3222 , 3250 , 3254 , 3474 , 3478 , 3506 , 3510 , 1 write(u,*)5 , 33 , 37 , 257 , 261 , 289 , 293 , 2049 , 2053 , 2081 , 2085 , 2305 , 2309 , 2337 , 2341 , 3 write(u,*)7 , 35 , 39 , 259 , 263 , 291 , 295 , 2051 , 2055 , 2083 , 2087 , 2307 , 2311 , 2339 , 2343 , 17 write(u,*)21 , 49 , 53 , 273 , 277 , 305 , 309 , 2065 , 2069 , 2097 , 2101 , 2321 , 2325 , 2353 , 2357 , 19 write(u,*)23 , 51 , 55 , 275 , 279 , 307 , 311 , 2067 , 2071 , 2099 , 2103 , 2323 , 2327 , 2355 , 2359 , 129 write(u,*)133 , 161 , 165 , 385 , 389 , 417 , 421 , 2177 , 2181 , 2209 , 2213 , 2433 , 2437 , 2465 , 2469 , 131 write(u,*)135 , 163 , 167 , 387 , 391 , 419 , 423 , 2179 , 2183 , 2211 , 2215 , 2435 , 2439 , 2467 , 2471 , 145 write(u,*)149 , 177 , 181 , 401 , 405 , 433 , 437 , 2193 , 2197 , 2225 , 2229 , 2449 , 2453 , 2481 , 2485 , 147 write(u,*)151 , 179 , 183 , 403 , 407 , 435 , 439 , 2195 , 2199 , 2227 , 2231 , 2451 , 2455 , 2483 , 2487 , 1025 write(u,*)1029 , 1057 , 1061 , 1281 , 1285 , 1313 , 1317 , 3073 , 3077 , 3105 , 3109 , 3329 , 3333 , 3361 , 3365 , 1027 write(u,*)1031 , 1059 , 1063 , 1283 , 1287 , 1315 , 1319 , 3075 , 3079 , 3107 , 3111 , 3331 , 3335 , 3363 , 3367 , 1041 write(u,*)1045 , 1073 , 1077 , 1297 , 1301 , 1329 , 1333 , 3089 , 3093 , 3121 , 3125 , 3345 , 3349 , 3377 , 3381 , 1043 write(u,*)1047 , 1075 , 1079 , 1299 , 1303 , 1331 , 1335 , 3091 , 3095 , 3123 , 3127 , 3347 , 3351 , 3379 , 3383 , 1153 write(u,*)1157 , 1185 , 1189 , 1409 , 1413 , 1441 , 1445 , 3201 , 3205 , 3233 , 3237 , 3457 , 3461 , 3489 , 3493 , 1155 write(u,*)1159 , 1187 , 1191 , 1411 , 1415 , 1443 , 1447 , 3203 , 3207 , 3235 , 3239 , 3459 , 3463 , 3491 , 3495 , 1169 write(u,*)1173 , 1201 , 1205 , 1425 , 1429 , 1457 , 1461 , 3217 , 3221 , 3249 , 3253 , 3473 , 3477 , 3505 , 3509 , 1171 write(u,*)1175 , 1203 , 1207 , 1427 , 1431 , 1459 , 1463 , 3219 , 3223 , 3251 , 3255 , 3475 , 3479 , 3507 , 3511 , 8 write(u,*)12 , 40 , 44 , 264 , 268 , 296 , 300 , 2056 , 2060 , 2088 , 2092 , 2312 , 2316 , 2344 , 2348 , 10 write(u,*)14 , 42 , 46 , 266 , 270 , 298 , 302 , 2058 , 2062 , 2090 , 2094 , 2314 , 2318 , 2346 , 2350 , 24 write(u,*)28 , 56 , 60 , 280 , 284 , 312 , 316 , 2072 , 2076 , 2104 , 2108 , 2328 , 2332 , 2360 , 2364 , 26 write(u,*)30 , 58 , 62 , 282 , 286 , 314 , 318 , 2074 , 2078 , 2106 , 2110 , 2330 , 2334 , 2362 , 2366 , 136 write(u,*)140 , 168 , 172 , 392 , 396 , 424 , 428 , 2184 , 2188 , 2216 , 2220 , 2440 , 2444 , 2472 , 2476 , 138 write(u,*)142 , 170 , 174 , 394 , 398 , 426 , 430 , 2186 , 2190 , 2218 , 2222 , 2442 , 2446 , 2474 , 2478 , 152 write(u,*)156 , 184 , 188 , 408 , 412 , 440 , 444 , 2200 , 2204 , 2232 , 2236 , 2456 , 2460 , 2488 , 2492 , 154 write(u,*)158 , 186 , 190 , 410 , 414 , 442 , 446 , 2202 , 2206 , 2234 , 2238 , 2458 , 2462 , 2490 , 2494 , 1032 write(u,*)1036 , 1064 , 1068 , 1288 , 1292 , 1320 , 1324 , 3080 , 3084 , 3112 , 3116 , 3336 , 3340 , 3368 , 3372 , 1034 write(u,*)1038 , 1066 , 1070 , 1290 , 1294 , 1322 , 1326 , 3082 , 3086 , 3114 , 3118 , 3338 , 3342 , 3370 , 3374 , 1048 write(u,*)1052 , 1080 , 1084 , 1304 , 1308 , 1336 , 1340 , 3096 , 3100 , 3128 , 3132 , 3352 , 3356 , 3384 , 3388 , 1050 write(u,*)1054 , 1082 , 1086 , 1306 , 1310 , 1338 , 1342 , 3098 , 3102 , 3130 , 3134 , 3354 , 3358 , 3386 , 3390 , 1160 write(u,*)1164 , 1192 , 1196 , 1416 , 1420 , 1448 , 1452 , 3208 , 3212 , 3240 , 3244 , 3464 , 3468 , 3496 , 3500 , 1162 write(u,*)1166 , 1194 , 1198 , 1418 , 1422 , 1450 , 1454 , 3210 , 3214 , 3242 , 3246 , 3466 , 3470 , 3498 , 3502 , 1176 write(u,*)1180 , 1208 , 1212 , 1432 , 1436 , 1464 , 1468 , 3224 , 3228 , 3256 , 3260 , 3480 , 3484 , 3512 , 3516 , 1178 write(u,*)1182 , 1210 , 1214 , 1434 , 1438 , 1466 , 1470 , 3226 , 3230 , 3258 , 3262 , 3482 , 3486 , 3514 , 3518 , 9 write(u,*)13 , 41 , 45 , 265 , 269 , 297 , 301 , 2057 , 2061 , 2089 , 2093 , 2313 , 2317 , 2345 , 2349 , 11 write(u,*)15 , 43 , 47 , 267 , 271 , 299 , 303 , 2059 , 2063 , 2091 , 2095 , 2315 , 2319 , 2347 , 2351 , 25 write(u,*)29 , 57 , 61 , 281 , 285 , 313 , 317 , 2073 , 2077 , 2105 , 2109 , 2329 , 2333 , 2361 , 2365 , 27 write(u,*)31 , 59 , 63 , 283 , 287 , 315 , 319 , 2075 , 2079 , 2107 , 2111 , 2331 , 2335 , 2363 , 2367 , 137 write(u,*)141 , 169 , 173 , 393 , 397 , 425 , 429 , 2185 , 2189 , 2217 , 2221 , 2441 , 2445 , 2473 , 2477 , 139 write(u,*)143 , 171 , 175 , 395 , 399 , 427 , 431 , 2187 , 2191 , 2219 , 2223 , 2443 , 2447 , 2475 , 2479 , 153 write(u,*)157 , 185 , 189 , 409 , 413 , 441 , 445 , 2201 , 2205 , 2233 , 2237 , 2457 , 2461 , 2489 , 2493 , 155 write(u,*)159 , 187 , 191 , 411 , 415 , 443 , 447 , 2203 , 2207 , 2235 , 2239 , 2459 , 2463 , 2491 , 2495 , 1033 write(u,*)1037 , 1065 , 1069 , 1289 , 1293 , 1321 , 1325 , 3081 , 3085 , 3113 , 3117 , 3337 , 3341 , 3369 , 3373 , 1035 write(u,*)1039 , 1067 , 1071 , 1291 , 1295 , 1323 , 1327 , 3083 , 3087 , 3115 , 3119 , 3339 , 3343 , 3371 , 3375 , 1049 write(u,*)1053 , 1081 , 1085 , 1305 , 1309 , 1337 , 1341 , 3097 , 3101 , 3129 , 3133 , 3353 , 3357 , 3385 , 3389 , 1051 write(u,*)1055 , 1083 , 1087 , 1307 , 1311 , 1339 , 1343 , 3099 , 3103 , 3131 , 3135 , 3355 , 3359 , 3387 , 3391 , 1161 write(u,*)1165 , 1193 , 1197 , 1417 , 1421 , 1449 , 1453 , 3209 , 3213 , 3241 , 3245 , 3465 , 3469 , 3497 , 3501 , 1163 write(u,*)1167 , 1195 , 1199 , 1419 , 1423 , 1451 , 1455 , 3211 , 3215 , 3243 , 3247 , 3467 , 3471 , 3499 , 3503 , 1177 write(u,*)1181 , 1209 , 1213 , 1433 , 1437 , 1465 , 1469 , 3225 , 3229 , 3257 , 3261 , 3481 , 3485 , 3513 , 3517 , 1179 write(u,*)1183 , 1211 , 1215 , 1435 , 1439 , 1467 , 1471 , 3227 , 3231 , 3259 , 3263 , 3483 , 3487 , 3515 , 3519 , 64 write(u,*)68 , 96 , 100 , 320 , 324 , 352 , 356 , 2112 , 2116 , 2144 , 2148 , 2368 , 2372 , 2400 , 2404 , 66 write(u,*)70 , 98 , 102 , 322 , 326 , 354 , 358 , 2114 , 2118 , 2146 , 2150 , 2370 , 2374 , 2402 , 2406 , 80 write(u,*)84 , 112 , 116 , 336 , 340 , 368 , 372 , 2128 , 2132 , 2160 , 2164 , 2384 , 2388 , 2416 , 2420 , 82 write(u,*)86 , 114 , 118 , 338 , 342 , 370 , 374 , 2130 , 2134 , 2162 , 2166 , 2386 , 2390 , 2418 , 2422 , 192 write(u,*)196 , 224 , 228 , 448 , 452 , 480 , 484 , 2240 , 2244 , 2272 , 2276 , 2496 , 2500 , 2528 , 2532 , 194 write(u,*)198 , 226 , 230 , 450 , 454 , 482 , 486 , 2242 , 2246 , 2274 , 2278 , 2498 , 2502 , 2530 , 2534 , 208 write(u,*)212 , 240 , 244 , 464 , 468 , 496 , 500 , 2256 , 2260 , 2288 , 2292 , 2512 , 2516 , 2544 , 2548 , 210 write(u,*)214 , 242 , 246 , 466 , 470 , 498 , 502 , 2258 , 2262 , 2290 , 2294 , 2514 , 2518 , 2546 , 2550 , 1088 write(u,*)1092 , 1120 , 1124 , 1344 , 1348 , 1376 , 1380 , 3136 , 3140 , 3168 , 3172 , 3392 , 3396 , 3424 , 3428 , 1090 write(u,*)1094 , 1122 , 1126 , 1346 , 1350 , 1378 , 1382 , 3138 , 3142 , 3170 , 3174 , 3394 , 3398 , 3426 , 3430 , 1104 write(u,*)1108 , 1136 , 1140 , 1360 , 1364 , 1392 , 1396 , 3152 , 3156 , 3184 , 3188 , 3408 , 3412 , 3440 , 3444 , 1106 write(u,*)1110 , 1138 , 1142 , 1362 , 1366 , 1394 , 1398 , 3154 , 3158 , 3186 , 3190 , 3410 , 3414 , 3442 , 3446 , 1216 write(u,*)1220 , 1248 , 1252 , 1472 , 1476 , 1504 , 1508 , 3264 , 3268 , 3296 , 3300 , 3520 , 3524 , 3552 , 3556 , 1218 write(u,*)1222 , 1250 , 1254 , 1474 , 1478 , 1506 , 1510 , 3266 , 3270 , 3298 , 3302 , 3522 , 3526 , 3554 , 3558 , 1232 write(u,*)1236 , 1264 , 1268 , 1488 , 1492 , 1520 , 1524 , 3280 , 3284 , 3312 , 3316 , 3536 , 3540 , 3568 , 3572 , 1234 write(u,*)1238 , 1266 , 1270 , 1490 , 1494 , 1522 , 1526 , 3282 , 3286 , 3314 , 3318 , 3538 , 3542 , 3570 , 3574 , 65 write(u,*)69 , 97 , 101 , 321 , 325 , 353 , 357 , 2113 , 2117 , 2145 , 2149 , 2369 , 2373 , 2401 , 2405 , 67 write(u,*)71 , 99 , 103 , 323 , 327 , 355 , 359 , 2115 , 2119 , 2147 , 2151 , 2371 , 2375 , 2403 , 2407 , 81 write(u,*)85 , 113 , 117 , 337 , 341 , 369 , 373 , 2129 , 2133 , 2161 , 2165 , 2385 , 2389 , 2417 , 2421 , 83 write(u,*)87 , 115 , 119 , 339 , 343 , 371 , 375 , 2131 , 2135 , 2163 , 2167 , 2387 , 2391 , 2419 , 2423 , 193 write(u,*)197 , 225 , 229 , 449 , 453 , 481 , 485 , 2241 , 2245 , 2273 , 2277 , 2497 , 2501 , 2529 , 2533 , 195 write(u,*)199 , 227 , 231 , 451 , 455 , 483 , 487 , 2243 , 2247 , 2275 , 2279 , 2499 , 2503 , 2531 , 2535 , 209 write(u,*)213 , 241 , 245 , 465 , 469 , 497 , 501 , 2257 , 2261 , 2289 , 2293 , 2513 , 2517 , 2545 , 2549 , 211 write(u,*)215 , 243 , 247 , 467 , 471 , 499 , 503 , 2259 , 2263 , 2291 , 2295 , 2515 , 2519 , 2547 , 2551 , 1089 write(u,*)1093 , 1121 , 1125 , 1345 , 1349 , 1377 , 1381 , 3137 , 3141 , 3169 , 3173 , 3393 , 3397 , 3425 , 3429 , 1091 write(u,*)1095 , 1123 , 1127 , 1347 , 1351 , 1379 , 1383 , 3139 , 3143 , 3171 , 3175 , 3395 , 3399 , 3427 , 3431 , 1105 write(u,*)1109 , 1137 , 1141 , 1361 , 1365 , 1393 , 1397 , 3153 , 3157 , 3185 , 3189 , 3409 , 3413 , 3441 , 3445 , 1107 write(u,*)1111 , 1139 , 1143 , 1363 , 1367 , 1395 , 1399 , 3155 , 3159 , 3187 , 3191 , 3411 , 3415 , 3443 , 3447 , 1217 write(u,*)1221 , 1249 , 1253 , 1473 , 1477 , 1505 , 1509 , 3265 , 3269 , 3297 , 3301 , 3521 , 3525 , 3553 , 3557 , 1219 write(u,*)1223 , 1251 , 1255 , 1475 , 1479 , 1507 , 1511 , 3267 , 3271 , 3299 , 3303 , 3523 , 3527 , 3555 , 3559 , 1233 write(u,*)1237 , 1265 , 1269 , 1489 , 1493 , 1521 , 1525 , 3281 , 3285 , 3313 , 3317 , 3537 , 3541 , 3569 , 3573 , 1235 write(u,*)1239 , 1267 , 1271 , 1491 , 1495 , 1523 , 1527 , 3283 , 3287 , 3315 , 3319 , 3539 , 3543 , 3571 , 3575 , 72 write(u,*)76 , 104 , 108 , 328 , 332 , 360 , 364 , 2120 , 2124 , 2152 , 2156 , 2376 , 2380 , 2408 , 2412 , 74 write(u,*)78 , 106 , 110 , 330 , 334 , 362 , 366 , 2122 , 2126 , 2154 , 2158 , 2378 , 2382 , 2410 , 2414 , 88 write(u,*)92 , 120 , 124 , 344 , 348 , 376 , 380 , 2136 , 2140 , 2168 , 2172 , 2392 , 2396 , 2424 , 2428 , 90 write(u,*)94 , 122 , 126 , 346 , 350 , 378 , 382 , 2138 , 2142 , 2170 , 2174 , 2394 , 2398 , 2426 , 2430 , 200 write(u,*)204 , 232 , 236 , 456 , 460 , 488 , 492 , 2248 , 2252 , 2280 , 2284 , 2504 , 2508 , 2536 , 2540 , 202 write(u,*)206 , 234 , 238 , 458 , 462 , 490 , 494 , 2250 , 2254 , 2282 , 2286 , 2506 , 2510 , 2538 , 2542 , 216 write(u,*)220 , 248 , 252 , 472 , 476 , 504 , 508 , 2264 , 2268 , 2296 , 2300 , 2520 , 2524 , 2552 , 2556 , 218 write(u,*)222 , 250 , 254 , 474 , 478 , 506 , 510 , 2266 , 2270 , 2298 , 2302 , 2522 , 2526 , 2554 , 2558 , 1096 write(u,*)1100 , 1128 , 1132 , 1352 , 1356 , 1384 , 1388 , 3144 , 3148 , 3176 , 3180 , 3400 , 3404 , 3432 , 3436 , 1098 write(u,*)1102 , 1130 , 1134 , 1354 , 1358 , 1386 , 1390 , 3146 , 3150 , 3178 , 3182 , 3402 , 3406 , 3434 , 3438 , 1112 write(u,*)1116 , 1144 , 1148 , 1368 , 1372 , 1400 , 1404 , 3160 , 3164 , 3192 , 3196 , 3416 , 3420 , 3448 , 3452 , 1114 write(u,*)1118 , 1146 , 1150 , 1370 , 1374 , 1402 , 1406 , 3162 , 3166 , 3194 , 3198 , 3418 , 3422 , 3450 , 3454 , 1224 write(u,*)1228 , 1256 , 1260 , 1480 , 1484 , 1512 , 1516 , 3272 , 3276 , 3304 , 3308 , 3528 , 3532 , 3560 , 3564 , 1226 write(u,*)1230 , 1258 , 1262 , 1482 , 1486 , 1514 , 1518 , 3274 , 3278 , 3306 , 3310 , 3530 , 3534 , 3562 , 3566 , 1240 write(u,*)1244 , 1272 , 1276 , 1496 , 1500 , 1528 , 1532 , 3288 , 3292 , 3320 , 3324 , 3544 , 3548 , 3576 , 3580 , 1242 write(u,*)1246 , 1274 , 1278 , 1498 , 1502 , 1530 , 1534 , 3290 , 3294 , 3322 , 3326 , 3546 , 3550 , 3578 , 3582 , 73 write(u,*)77 , 105 , 109 , 329 , 333 , 361 , 365 , 2121 , 2125 , 2153 , 2157 , 2377 , 2381 , 2409 , 2413 , 75 write(u,*)79 , 107 , 111 , 331 , 335 , 363 , 367 , 2123 , 2127 , 2155 , 2159 , 2379 , 2383 , 2411 , 2415 , 89 write(u,*)93 , 121 , 125 , 345 , 349 , 377 , 381 , 2137 , 2141 , 2169 , 2173 , 2393 , 2397 , 2425 , 2429 , 91 write(u,*)95 , 123 , 127 , 347 , 351 , 379 , 383 , 2139 , 2143 , 2171 , 2175 , 2395 , 2399 , 2427 , 2431 , 201 write(u,*)205 , 233 , 237 , 457 , 461 , 489 , 493 , 2249 , 2253 , 2281 , 2285 , 2505 , 2509 , 2537 , 2541 , 203 write(u,*)207 , 235 , 239 , 459 , 463 , 491 , 495 , 2251 , 2255 , 2283 , 2287 , 2507 , 2511 , 2539 , 2543 , 217 write(u,*)221 , 249 , 253 , 473 , 477 , 505 , 509 , 2265 , 2269 , 2297 , 2301 , 2521 , 2525 , 2553 , 2557 , 219 write(u,*)223 , 251 , 255 , 475 , 479 , 507 , 511 , 2267 , 2271 , 2299 , 2303 , 2523 , 2527 , 2555 , 2559 , 1097 write(u,*)1101 , 1129 , 1133 , 1353 , 1357 , 1385 , 1389 , 3145 , 3149 , 3177 , 3181 , 3401 , 3405 , 3433 , 3437 , 1099 write(u,*)1103 , 1131 , 1135 , 1355 , 1359 , 1387 , 1391 , 3147 , 3151 , 3179 , 3183 , 3403 , 3407 , 3435 , 3439 , 1113 write(u,*)1117 , 1145 , 1149 , 1369 , 1373 , 1401 , 1405 , 3161 , 3165 , 3193 , 3197 , 3417 , 3421 , 3449 , 3453 , 1115 write(u,*)1119 , 1147 , 1151 , 1371 , 1375 , 1403 , 1407 , 3163 , 3167 , 3195 , 3199 , 3419 , 3423 , 3451 , 3455 , 1225 write(u,*)1229 , 1257 , 1261 , 1481 , 1485 , 1513 , 1517 , 3273 , 3277 , 3305 , 3309 , 3529 , 3533 , 3561 , 3565 , 1227 write(u,*)1231 , 1259 , 1263 , 1483 , 1487 , 1515 , 1519 , 3275 , 3279 , 3307 , 3311 , 3531 , 3535 , 3563 , 3567 , 1241 write(u,*)1245 , 1273 , 1277 , 1497 , 1501 , 1529 , 1533 , 3289 , 3293 , 3321 , 3325 , 3545 , 3549 , 3577 , 3581 , 1243 write(u,*)1247 , 1275 , 1279 , 1499 , 1503 , 1531 , 1535 , 3291 , 3295 , 3323 , 3327 , 3547 , 3551 , 3579 , 3583 , 512 write(u,*)516 , 544 , 548 , 768 , 772 , 800 , 804 , 2560 , 2564 , 2592 , 2596 , 2816 , 2820 , 2848 , 2852 , 514 write(u,*)518 , 546 , 550 , 770 , 774 , 802 , 806 , 2562 , 2566 , 2594 , 2598 , 2818 , 2822 , 2850 , 2854 , 528 write(u,*)532 , 560 , 564 , 784 , 788 , 816 , 820 , 2576 , 2580 , 2608 , 2612 , 2832 , 2836 , 2864 , 2868 , 530 write(u,*)534 , 562 , 566 , 786 , 790 , 818 , 822 , 2578 , 2582 , 2610 , 2614 , 2834 , 2838 , 2866 , 2870 , 640 write(u,*)644 , 672 , 676 , 896 , 900 , 928 , 932 , 2688 , 2692 , 2720 , 2724 , 2944 , 2948 , 2976 , 2980 , 642 write(u,*)646 , 674 , 678 , 898 , 902 , 930 , 934 , 2690 , 2694 , 2722 , 2726 , 2946 , 2950 , 2978 , 2982 , 656 write(u,*)660 , 688 , 692 , 912 , 916 , 944 , 948 , 2704 , 2708 , 2736 , 2740 , 2960 , 2964 , 2992 , 2996 , 658 write(u,*)662 , 690 , 694 , 914 , 918 , 946 , 950 , 2706 , 2710 , 2738 , 2742 , 2962 , 2966 , 2994 , 2998 , 1536 write(u,*)1540 , 1568 , 1572 , 1792 , 1796 , 1824 , 1828 , 3584 , 3588 , 3616 , 3620 , 3840 , 3844 , 3872 , 3876 , 1538 write(u,*)1542 , 1570 , 1574 , 1794 , 1798 , 1826 , 1830 , 3586 , 3590 , 3618 , 3622 , 3842 , 3846 , 3874 , 3878 , 1552 write(u,*)1556 , 1584 , 1588 , 1808 , 1812 , 1840 , 1844 , 3600 , 3604 , 3632 , 3636 , 3856 , 3860 , 3888 , 3892 , 1554 write(u,*)1558 , 1586 , 1590 , 1810 , 1814 , 1842 , 1846 , 3602 , 3606 , 3634 , 3638 , 3858 , 3862 , 3890 , 3894 , 1664 write(u,*)1668 , 1696 , 1700 , 1920 , 1924 , 1952 , 1956 , 3712 , 3716 , 3744 , 3748 , 3968 , 3972 , 4000 , 4004 , 1666 write(u,*)1670 , 1698 , 1702 , 1922 , 1926 , 1954 , 1958 , 3714 , 3718 , 3746 , 3750 , 3970 , 3974 , 4002 , 4006 , 1680 write(u,*)1684 , 1712 , 1716 , 1936 , 1940 , 1968 , 1972 , 3728 , 3732 , 3760 , 3764 , 3984 , 3988 , 4016 , 4020 , 1682 write(u,*)1686 , 1714 , 1718 , 1938 , 1942 , 1970 , 1974 , 3730 , 3734 , 3762 , 3766 , 3986 , 3990 , 4018 , 4022 , 513 write(u,*)517 , 545 , 549 , 769 , 773 , 801 , 805 , 2561 , 2565 , 2593 , 2597 , 2817 , 2821 , 2849 , 2853 , 515 write(u,*)519 , 547 , 551 , 771 , 775 , 803 , 807 , 2563 , 2567 , 2595 , 2599 , 2819 , 2823 , 2851 , 2855 , 529 write(u,*)533 , 561 , 565 , 785 , 789 , 817 , 821 , 2577 , 2581 , 2609 , 2613 , 2833 , 2837 , 2865 , 2869 , 531 write(u,*)535 , 563 , 567 , 787 , 791 , 819 , 823 , 2579 , 2583 , 2611 , 2615 , 2835 , 2839 , 2867 , 2871 , 641 write(u,*)645 , 673 , 677 , 897 , 901 , 929 , 933 , 2689 , 2693 , 2721 , 2725 , 2945 , 2949 , 2977 , 2981 , 643 write(u,*)647 , 675 , 679 , 899 , 903 , 931 , 935 , 2691 , 2695 , 2723 , 2727 , 2947 , 2951 , 2979 , 2983 , 657 write(u,*)661 , 689 , 693 , 913 , 917 , 945 , 949 , 2705 , 2709 , 2737 , 2741 , 2961 , 2965 , 2993 , 2997 , 659 write(u,*)663 , 691 , 695 , 915 , 919 , 947 , 951 , 2707 , 2711 , 2739 , 2743 , 2963 , 2967 , 2995 , 2999 , 1537 write(u,*)1541 , 1569 , 1573 , 1793 , 1797 , 1825 , 1829 , 3585 , 3589 , 3617 , 3621 , 3841 , 3845 , 3873 , 3877 , 1539 write(u,*)1543 , 1571 , 1575 , 1795 , 1799 , 1827 , 1831 , 3587 , 3591 , 3619 , 3623 , 3843 , 3847 , 3875 , 3879 , 1553 write(u,*)1557 , 1585 , 1589 , 1809 , 1813 , 1841 , 1845 , 3601 , 3605 , 3633 , 3637 , 3857 , 3861 , 3889 , 3893 , 1555 write(u,*)1559 , 1587 , 1591 , 1811 , 1815 , 1843 , 1847 , 3603 , 3607 , 3635 , 3639 , 3859 , 3863 , 3891 , 3895 , 1665 write(u,*)1669 , 1697 , 1701 , 1921 , 1925 , 1953 , 1957 , 3713 , 3717 , 3745 , 3749 , 3969 , 3973 , 4001 , 4005 , 1667 write(u,*)1671 , 1699 , 1703 , 1923 , 1927 , 1955 , 1959 , 3715 , 3719 , 3747 , 3751 , 3971 , 3975 , 4003 , 4007 , 1681 write(u,*)1685 , 1713 , 1717 , 1937 , 1941 , 1969 , 1973 , 3729 , 3733 , 3761 , 3765 , 3985 , 3989 , 4017 , 4021 , 1683 write(u,*)1687 , 1715 , 1719 , 1939 , 1943 , 1971 , 1975 , 3731 , 3735 , 3763 , 3767 , 3987 , 3991 , 4019 , 4023 , 520 write(u,*)524 , 552 , 556 , 776 , 780 , 808 , 812 , 2568 , 2572 , 2600 , 2604 , 2824 , 2828 , 2856 , 2860 , 522 write(u,*)526 , 554 , 558 , 778 , 782 , 810 , 814 , 2570 , 2574 , 2602 , 2606 , 2826 , 2830 , 2858 , 2862 , 536 write(u,*)540 , 568 , 572 , 792 , 796 , 824 , 828 , 2584 , 2588 , 2616 , 2620 , 2840 , 2844 , 2872 , 2876 , 538 write(u,*)542 , 570 , 574 , 794 , 798 , 826 , 830 , 2586 , 2590 , 2618 , 2622 , 2842 , 2846 , 2874 , 2878 , 648 write(u,*)652 , 680 , 684 , 904 , 908 , 936 , 940 , 2696 , 2700 , 2728 , 2732 , 2952 , 2956 , 2984 , 2988 , 650 write(u,*)654 , 682 , 686 , 906 , 910 , 938 , 942 , 2698 , 2702 , 2730 , 2734 , 2954 , 2958 , 2986 , 2990 , 664 write(u,*)668 , 696 , 700 , 920 , 924 , 952 , 956 , 2712 , 2716 , 2744 , 2748 , 2968 , 2972 , 3000 , 3004 , 666 write(u,*)670 , 698 , 702 , 922 , 926 , 954 , 958 , 2714 , 2718 , 2746 , 2750 , 2970 , 2974 , 3002 , 3006 , 1544 write(u,*)1548 , 1576 , 1580 , 1800 , 1804 , 1832 , 1836 , 3592 , 3596 , 3624 , 3628 , 3848 , 3852 , 3880 , 3884 , 1546 write(u,*)1550 , 1578 , 1582 , 1802 , 1806 , 1834 , 1838 , 3594 , 3598 , 3626 , 3630 , 3850 , 3854 , 3882 , 3886 , 1560 write(u,*)1564 , 1592 , 1596 , 1816 , 1820 , 1848 , 1852 , 3608 , 3612 , 3640 , 3644 , 3864 , 3868 , 3896 , 3900 , 1562 write(u,*)1566 , 1594 , 1598 , 1818 , 1822 , 1850 , 1854 , 3610 , 3614 , 3642 , 3646 , 3866 , 3870 , 3898 , 3902 , 1672 write(u,*)1676 , 1704 , 1708 , 1928 , 1932 , 1960 , 1964 , 3720 , 3724 , 3752 , 3756 , 3976 , 3980 , 4008 , 4012 , 1674 write(u,*)1678 , 1706 , 1710 , 1930 , 1934 , 1962 , 1966 , 3722 , 3726 , 3754 , 3758 , 3978 , 3982 , 4010 , 4014 , 1688 write(u,*)1692 , 1720 , 1724 , 1944 , 1948 , 1976 , 1980 , 3736 , 3740 , 3768 , 3772 , 3992 , 3996 , 4024 , 4028 , 1690 write(u,*)1694 , 1722 , 1726 , 1946 , 1950 , 1978 , 1982 , 3738 , 3742 , 3770 , 3774 , 3994 , 3998 , 4026 , 4030 , 521 write(u,*)525 , 553 , 557 , 777 , 781 , 809 , 813 , 2569 , 2573 , 2601 , 2605 , 2825 , 2829 , 2857 , 2861 , 523 write(u,*)527 , 555 , 559 , 779 , 783 , 811 , 815 , 2571 , 2575 , 2603 , 2607 , 2827 , 2831 , 2859 , 2863 , 537 write(u,*)541 , 569 , 573 , 793 , 797 , 825 , 829 , 2585 , 2589 , 2617 , 2621 , 2841 , 2845 , 2873 , 2877 , 539 write(u,*)543 , 571 , 575 , 795 , 799 , 827 , 831 , 2587 , 2591 , 2619 , 2623 , 2843 , 2847 , 2875 , 2879 , 649 write(u,*)653 , 681 , 685 , 905 , 909 , 937 , 941 , 2697 , 2701 , 2729 , 2733 , 2953 , 2957 , 2985 , 2989 , 651 write(u,*)655 , 683 , 687 , 907 , 911 , 939 , 943 , 2699 , 2703 , 2731 , 2735 , 2955 , 2959 , 2987 , 2991 , 665 write(u,*)669 , 697 , 701 , 921 , 925 , 953 , 957 , 2713 , 2717 , 2745 , 2749 , 2969 , 2973 , 3001 , 3005 , 667 write(u,*)671 , 699 , 703 , 923 , 927 , 955 , 959 , 2715 , 2719 , 2747 , 2751 , 2971 , 2975 , 3003 , 3007 , 1545 write(u,*)1549 , 1577 , 1581 , 1801 , 1805 , 1833 , 1837 , 3593 , 3597 , 3625 , 3629 , 3849 , 3853 , 3881 , 3885 , 1547 write(u,*)1551 , 1579 , 1583 , 1803 , 1807 , 1835 , 1839 , 3595 , 3599 , 3627 , 3631 , 3851 , 3855 , 3883 , 3887 , 1561 write(u,*)1565 , 1593 , 1597 , 1817 , 1821 , 1849 , 1853 , 3609 , 3613 , 3641 , 3645 , 3865 , 3869 , 3897 , 3901 , 1563 write(u,*)1567 , 1595 , 1599 , 1819 , 1823 , 1851 , 1855 , 3611 , 3615 , 3643 , 3647 , 3867 , 3871 , 3899 , 3903 , 1673 write(u,*)1677 , 1705 , 1709 , 1929 , 1933 , 1961 , 1965 , 3721 , 3725 , 3753 , 3757 , 3977 , 3981 , 4009 , 4013 , 1675 write(u,*)1679 , 1707 , 1711 , 1931 , 1935 , 1963 , 1967 , 3723 , 3727 , 3755 , 3759 , 3979 , 3983 , 4011 , 4015 , 1689 write(u,*)1693 , 1721 , 1725 , 1945 , 1949 , 1977 , 1981 , 3737 , 3741 , 3769 , 3773 , 3993 , 3997 , 4025 , 4029 , 1691 write(u,*)1695 , 1723 , 1727 , 1947 , 1951 , 1979 , 1983 , 3739 , 3743 , 3771 , 3775 , 3995 , 3999 , 4027 , 4031 , 576 write(u,*)580 , 608 , 612 , 832 , 836 , 864 , 868 , 2624 , 2628 , 2656 , 2660 , 2880 , 2884 , 2912 , 2916 , 578 write(u,*)582 , 610 , 614 , 834 , 838 , 866 , 870 , 2626 , 2630 , 2658 , 2662 , 2882 , 2886 , 2914 , 2918 , 592 write(u,*)596 , 624 , 628 , 848 , 852 , 880 , 884 , 2640 , 2644 , 2672 , 2676 , 2896 , 2900 , 2928 , 2932 , 594 write(u,*)598 , 626 , 630 , 850 , 854 , 882 , 886 , 2642 , 2646 , 2674 , 2678 , 2898 , 2902 , 2930 , 2934 , 704 write(u,*)708 , 736 , 740 , 960 , 964 , 992 , 996 , 2752 , 2756 , 2784 , 2788 , 3008 , 3012 , 3040 , 3044 , 706 write(u,*)710 , 738 , 742 , 962 , 966 , 994 , 998 , 2754 , 2758 , 2786 , 2790 , 3010 , 3014 , 3042 , 3046 , 720 write(u,*)724 , 752 , 756 , 976 , 980 , 1008 , 1012 , 2768 , 2772 , 2800 , 2804 , 3024 , 3028 , 3056 , 3060 , 722 write(u,*)726 , 754 , 758 , 978 , 982 , 1010 , 1014 , 2770 , 2774 , 2802 , 2806 , 3026 , 3030 , 3058 , 3062 , 1600 write(u,*)1604 , 1632 , 1636 , 1856 , 1860 , 1888 , 1892 , 3648 , 3652 , 3680 , 3684 , 3904 , 3908 , 3936 , 3940 , 1602 write(u,*)1606 , 1634 , 1638 , 1858 , 1862 , 1890 , 1894 , 3650 , 3654 , 3682 , 3686 , 3906 , 3910 , 3938 , 3942 , 1616 write(u,*)1620 , 1648 , 1652 , 1872 , 1876 , 1904 , 1908 , 3664 , 3668 , 3696 , 3700 , 3920 , 3924 , 3952 , 3956 , 1618 write(u,*)1622 , 1650 , 1654 , 1874 , 1878 , 1906 , 1910 , 3666 , 3670 , 3698 , 3702 , 3922 , 3926 , 3954 , 3958 , 1728 write(u,*)1732 , 1760 , 1764 , 1984 , 1988 , 2016 , 2020 , 3776 , 3780 , 3808 , 3812 , 4032 , 4036 , 4064 , 4068 , 1730 write(u,*)1734 , 1762 , 1766 , 1986 , 1990 , 2018 , 2022 , 3778 , 3782 , 3810 , 3814 , 4034 , 4038 , 4066 , 4070 , 1744 write(u,*)1748 , 1776 , 1780 , 2000 , 2004 , 2032 , 2036 , 3792 , 3796 , 3824 , 3828 , 4048 , 4052 , 4080 , 4084 , 1746 write(u,*)1750 , 1778 , 1782 , 2002 , 2006 , 2034 , 2038 , 3794 , 3798 , 3826 , 3830 , 4050 , 4054 , 4082 , 4086 , 577 write(u,*)581 , 609 , 613 , 833 , 837 , 865 , 869 , 2625 , 2629 , 2657 , 2661 , 2881 , 2885 , 2913 , 2917 , 579 write(u,*)583 , 611 , 615 , 835 , 839 , 867 , 871 , 2627 , 2631 , 2659 , 2663 , 2883 , 2887 , 2915 , 2919 , 593 write(u,*)597 , 625 , 629 , 849 , 853 , 881 , 885 , 2641 , 2645 , 2673 , 2677 , 2897 , 2901 , 2929 , 2933 , 595 write(u,*)599 , 627 , 631 , 851 , 855 , 883 , 887 , 2643 , 2647 , 2675 , 2679 , 2899 , 2903 , 2931 , 2935 , 705 write(u,*)709 , 737 , 741 , 961 , 965 , 993 , 997 , 2753 , 2757 , 2785 , 2789 , 3009 , 3013 , 3041 , 3045 , 707 write(u,*)711 , 739 , 743 , 963 , 967 , 995 , 999 , 2755 , 2759 , 2787 , 2791 , 3011 , 3015 , 3043 , 3047 , 721 write(u,*)725 , 753 , 757 , 977 , 981 , 1009 , 1013 , 2769 , 2773 , 2801 , 2805 , 3025 , 3029 , 3057 , 3061 , 723 write(u,*)727 , 755 , 759 , 979 , 983 , 1011 , 1015 , 2771 , 2775 , 2803 , 2807 , 3027 , 3031 , 3059 , 3063 , 1601 write(u,*)1605 , 1633 , 1637 , 1857 , 1861 , 1889 , 1893 , 3649 , 3653 , 3681 , 3685 , 3905 , 3909 , 3937 , 3941 , 1603 write(u,*)1607 , 1635 , 1639 , 1859 , 1863 , 1891 , 1895 , 3651 , 3655 , 3683 , 3687 , 3907 , 3911 , 3939 , 3943 , 1617 write(u,*)1621 , 1649 , 1653 , 1873 , 1877 , 1905 , 1909 , 3665 , 3669 , 3697 , 3701 , 3921 , 3925 , 3953 , 3957 , 1619 write(u,*)1623 , 1651 , 1655 , 1875 , 1879 , 1907 , 1911 , 3667 , 3671 , 3699 , 3703 , 3923 , 3927 , 3955 , 3959 , 1729 write(u,*)1733 , 1761 , 1765 , 1985 , 1989 , 2017 , 2021 , 3777 , 3781 , 3809 , 3813 , 4033 , 4037 , 4065 , 4069 , 1731 write(u,*)1735 , 1763 , 1767 , 1987 , 1991 , 2019 , 2023 , 3779 , 3783 , 3811 , 3815 , 4035 , 4039 , 4067 , 4071 , 1745 write(u,*)1749 , 1777 , 1781 , 2001 , 2005 , 2033 , 2037 , 3793 , 3797 , 3825 , 3829 , 4049 , 4053 , 4081 , 4085 , 1747 write(u,*)1751 , 1779 , 1783 , 2003 , 2007 , 2035 , 2039 , 3795 , 3799 , 3827 , 3831 , 4051 , 4055 , 4083 , 4087 , 584 write(u,*)588 , 616 , 620 , 840 , 844 , 872 , 876 , 2632 , 2636 , 2664 , 2668 , 2888 , 2892 , 2920 , 2924 , 586 write(u,*)590 , 618 , 622 , 842 , 846 , 874 , 878 , 2634 , 2638 , 2666 , 2670 , 2890 , 2894 , 2922 , 2926 , 600 write(u,*)604 , 632 , 636 , 856 , 860 , 888 , 892 , 2648 , 2652 , 2680 , 2684 , 2904 , 2908 , 2936 , 2940 , 602 write(u,*)606 , 634 , 638 , 858 , 862 , 890 , 894 , 2650 , 2654 , 2682 , 2686 , 2906 , 2910 , 2938 , 2942 , 712 write(u,*)716 , 744 , 748 , 968 , 972 , 1000 , 1004 , 2760 , 2764 , 2792 , 2796 , 3016 , 3020 , 3048 , 3052 , 714 write(u,*)718 , 746 , 750 , 970 , 974 , 1002 , 1006 , 2762 , 2766 , 2794 , 2798 , 3018 , 3022 , 3050 , 3054 , 728 write(u,*)732 , 760 , 764 , 984 , 988 , 1016 , 1020 , 2776 , 2780 , 2808 , 2812 , 3032 , 3036 , 3064 , 3068 , 730 write(u,*)734 , 762 , 766 , 986 , 990 , 1018 , 1022 , 2778 , 2782 , 2810 , 2814 , 3034 , 3038 , 3066 , 3070 , 1608 write(u,*)1612 , 1640 , 1644 , 1864 , 1868 , 1896 , 1900 , 3656 , 3660 , 3688 , 3692 , 3912 , 3916 , 3944 , 3948 , 1610 write(u,*)1614 , 1642 , 1646 , 1866 , 1870 , 1898 , 1902 , 3658 , 3662 , 3690 , 3694 , 3914 , 3918 , 3946 , 3950 , 1624 write(u,*)1628 , 1656 , 1660 , 1880 , 1884 , 1912 , 1916 , 3672 , 3676 , 3704 , 3708 , 3928 , 3932 , 3960 , 3964 , 1626 write(u,*)1630 , 1658 , 1662 , 1882 , 1886 , 1914 , 1918 , 3674 , 3678 , 3706 , 3710 , 3930 , 3934 , 3962 , 3966 , 1736 write(u,*)1740 , 1768 , 1772 , 1992 , 1996 , 2024 , 2028 , 3784 , 3788 , 3816 , 3820 , 4040 , 4044 , 4072 , 4076 , 1738 write(u,*)1742 , 1770 , 1774 , 1994 , 1998 , 2026 , 2030 , 3786 , 3790 , 3818 , 3822 , 4042 , 4046 , 4074 , 4078 , 1752 write(u,*)1756 , 1784 , 1788 , 2008 , 2012 , 2040 , 2044 , 3800 , 3804 , 3832 , 3836 , 4056 , 4060 , 4088 , 4092 , 1754 write(u,*)1758 , 1786 , 1790 , 2010 , 2014 , 2042 , 2046 , 3802 , 3806 , 3834 , 3838 , 4058 , 4062 , 4090 , 4094 , 585 write(u,*)589 , 617 , 621 , 841 , 845 , 873 , 877 , 2633 , 2637 , 2665 , 2669 , 2889 , 2893 , 2921 , 2925 , 587 write(u,*)591 , 619 , 623 , 843 , 847 , 875 , 879 , 2635 , 2639 , 2667 , 2671 , 2891 , 2895 , 2923 , 2927 , 601 write(u,*)605 , 633 , 637 , 857 , 861 , 889 , 893 , 2649 , 2653 , 2681 , 2685 , 2905 , 2909 , 2937 , 2941 , 603 write(u,*)607 , 635 , 639 , 859 , 863 , 891 , 895 , 2651 , 2655 , 2683 , 2687 , 2907 , 2911 , 2939 , 2943 , 713 write(u,*)717 , 745 , 749 , 969 , 973 , 1001 , 1005 , 2761 , 2765 , 2793 , 2797 , 3017 , 3021 , 3049 , 3053 , 715 write(u,*)719 , 747 , 751 , 971 , 975 , 1003 , 1007 , 2763 , 2767 , 2795 , 2799 , 3019 , 3023 , 3051 , 3055 , 729 write(u,*)733 , 761 , 765 , 985 , 989 , 1017 , 1021 , 2777 , 2781 , 2809 , 2813 , 3033 , 3037 , 3065 , 3069 , 731 write(u,*)735 , 763 , 767 , 987 , 991 , 1019 , 1023 , 2779 , 2783 , 2811 , 2815 , 3035 , 3039 , 3067 , 3071 , 1609 write(u,*)1613 , 1641 , 1645 , 1865 , 1869 , 1897 , 1901 , 3657 , 3661 , 3689 , 3693 , 3913 , 3917 , 3945 , 3949 , 1611 write(u,*)1615 , 1643 , 1647 , 1867 , 1871 , 1899 , 1903 , 3659 , 3663 , 3691 , 3695 , 3915 , 3919 , 3947 , 3951 , 1625 write(u,*)1629 , 1657 , 1661 , 1881 , 1885 , 1913 , 1917 , 3673 , 3677 , 3705 , 3709 , 3929 , 3933 , 3961 , 3965 , 1627 write(u,*)1631 , 1659 , 1663 , 1883 , 1887 , 1915 , 1919 , 3675 , 3679 , 3707 , 3711 , 3931 , 3935 , 3963 , 3967 , 1737 write(u,*)1741 , 1769 , 1773 , 1993 , 1997 , 2025 , 2029 , 3785 , 3789 , 3817 , 3821 , 4041 , 4045 , 4073 , 4077 , 1739 write(u,*)1743 , 1771 , 1775 , 1995 , 1999 , 2027 , 2031 , 3787 , 3791 , 3819 , 3823 , 4043 , 4047 , 4075 , 4079 , 1753 write(u,*)1757 , 1785 , 1789 , 2009 , 2013 , 2041 , 2045 , 3801 , 3805 , 3833 , 3837 , 4057 , 4061 , 4089 , 4093 , 1755 write(u,*)1759 , 1787 , 1791 , 2011 , 2015 , 2043 , 2047 , 3803 , 3807 , 3835 , 3839 , 4059 , 4063 , 4091 , 4095 rewind(u) !--------------------------------------------------------------------------------------------------------------------------------- endsubroutine create_morton_file subroutine create_indexes_file(u) !--------------------------------------------------------------------------------------------------------------------------------- !< Create the scratch file containing the validation indexes of Morton's codes. !--------------------------------------------------------------------------------------------------------------------------------- integer(int32), intent(out) :: u !< Unit of scratch file. !--------------------------------------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------------------------------------- open(newunit=u, status='scratch') write(u,*)0,0,0 write(u,*)1,0,0 , 0,1,0 , 1,1,0 , 0,0,1 , 1,0,1 , 0,1,1 , 1,1,1 , 2,0,0 write(u,*)3,0,0 , 2,1,0 , 3,1,0 , 2,0,1 , 3,0,1 , 2,1,1 , 3,1,1 , 0,2,0 write(u,*)1,2,0 , 0,3,0 , 1,3,0 , 0,2,1 , 1,2,1 , 0,3,1 , 1,3,1 , 2,2,0 write(u,*)3,2,0 , 2,3,0 , 3,3,0 , 2,2,1 , 3,2,1 , 2,3,1 , 3,3,1 , 0,0,2 write(u,*)1,0,2 , 0,1,2 , 1,1,2 , 0,0,3 , 1,0,3 , 0,1,3 , 1,1,3 , 2,0,2 write(u,*)3,0,2 , 2,1,2 , 3,1,2 , 2,0,3 , 3,0,3 , 2,1,3 , 3,1,3 , 0,2,2 write(u,*)1,2,2 , 0,3,2 , 1,3,2 , 0,2,3 , 1,2,3 , 0,3,3 , 1,3,3 , 2,2,2 write(u,*)3,2,2 , 2,3,2 , 3,3,2 , 2,2,3 , 3,2,3 , 2,3,3 , 3,3,3 , 4,0,0 write(u,*)5,0,0 , 4,1,0 , 5,1,0 , 4,0,1 , 5,0,1 , 4,1,1 , 5,1,1 , 6,0,0 write(u,*)7,0,0 , 6,1,0 , 7,1,0 , 6,0,1 , 7,0,1 , 6,1,1 , 7,1,1 , 4,2,0 write(u,*)5,2,0 , 4,3,0 , 5,3,0 , 4,2,1 , 5,2,1 , 4,3,1 , 5,3,1 , 6,2,0 write(u,*)7,2,0 , 6,3,0 , 7,3,0 , 6,2,1 , 7,2,1 , 6,3,1 , 7,3,1 , 4,0,2 write(u,*)5,0,2 , 4,1,2 , 5,1,2 , 4,0,3 , 5,0,3 , 4,1,3 , 5,1,3 , 6,0,2 write(u,*)7,0,2 , 6,1,2 , 7,1,2 , 6,0,3 , 7,0,3 , 6,1,3 , 7,1,3 , 4,2,2 write(u,*)5,2,2 , 4,3,2 , 5,3,2 , 4,2,3 , 5,2,3 , 4,3,3 , 5,3,3 , 6,2,2 write(u,*)7,2,2 , 6,3,2 , 7,3,2 , 6,2,3 , 7,2,3 , 6,3,3 , 7,3,3 , 0,4,0 write(u,*)1,4,0 , 0,5,0 , 1,5,0 , 0,4,1 , 1,4,1 , 0,5,1 , 1,5,1 , 2,4,0 write(u,*)3,4,0 , 2,5,0 , 3,5,0 , 2,4,1 , 3,4,1 , 2,5,1 , 3,5,1 , 0,6,0 write(u,*)1,6,0 , 0,7,0 , 1,7,0 , 0,6,1 , 1,6,1 , 0,7,1 , 1,7,1 , 2,6,0 write(u,*)3,6,0 , 2,7,0 , 3,7,0 , 2,6,1 , 3,6,1 , 2,7,1 , 3,7,1 , 0,4,2 write(u,*)1,4,2 , 0,5,2 , 1,5,2 , 0,4,3 , 1,4,3 , 0,5,3 , 1,5,3 , 2,4,2 write(u,*)3,4,2 , 2,5,2 , 3,5,2 , 2,4,3 , 3,4,3 , 2,5,3 , 3,5,3 , 0,6,2 write(u,*)1,6,2 , 0,7,2 , 1,7,2 , 0,6,3 , 1,6,3 , 0,7,3 , 1,7,3 , 2,6,2 write(u,*)3,6,2 , 2,7,2 , 3,7,2 , 2,6,3 , 3,6,3 , 2,7,3 , 3,7,3 , 4,4,0 write(u,*)5,4,0 , 4,5,0 , 5,5,0 , 4,4,1 , 5,4,1 , 4,5,1 , 5,5,1 , 6,4,0 write(u,*)7,4,0 , 6,5,0 , 7,5,0 , 6,4,1 , 7,4,1 , 6,5,1 , 7,5,1 , 4,6,0 write(u,*)5,6,0 , 4,7,0 , 5,7,0 , 4,6,1 , 5,6,1 , 4,7,1 , 5,7,1 , 6,6,0 write(u,*)7,6,0 , 6,7,0 , 7,7,0 , 6,6,1 , 7,6,1 , 6,7,1 , 7,7,1 , 4,4,2 write(u,*)5,4,2 , 4,5,2 , 5,5,2 , 4,4,3 , 5,4,3 , 4,5,3 , 5,5,3 , 6,4,2 write(u,*)7,4,2 , 6,5,2 , 7,5,2 , 6,4,3 , 7,4,3 , 6,5,3 , 7,5,3 , 4,6,2 write(u,*)5,6,2 , 4,7,2 , 5,7,2 , 4,6,3 , 5,6,3 , 4,7,3 , 5,7,3 , 6,6,2 write(u,*)7,6,2 , 6,7,2 , 7,7,2 , 6,6,3 , 7,6,3 , 6,7,3 , 7,7,3 , 0,0,4 write(u,*)1,0,4 , 0,1,4 , 1,1,4 , 0,0,5 , 1,0,5 , 0,1,5 , 1,1,5 , 2,0,4 write(u,*)3,0,4 , 2,1,4 , 3,1,4 , 2,0,5 , 3,0,5 , 2,1,5 , 3,1,5 , 0,2,4 write(u,*)1,2,4 , 0,3,4 , 1,3,4 , 0,2,5 , 1,2,5 , 0,3,5 , 1,3,5 , 2,2,4 write(u,*)3,2,4 , 2,3,4 , 3,3,4 , 2,2,5 , 3,2,5 , 2,3,5 , 3,3,5 , 0,0,6 write(u,*)1,0,6 , 0,1,6 , 1,1,6 , 0,0,7 , 1,0,7 , 0,1,7 , 1,1,7 , 2,0,6 write(u,*)3,0,6 , 2,1,6 , 3,1,6 , 2,0,7 , 3,0,7 , 2,1,7 , 3,1,7 , 0,2,6 write(u,*)1,2,6 , 0,3,6 , 1,3,6 , 0,2,7 , 1,2,7 , 0,3,7 , 1,3,7 , 2,2,6 write(u,*)3,2,6 , 2,3,6 , 3,3,6 , 2,2,7 , 3,2,7 , 2,3,7 , 3,3,7 , 4,0,4 write(u,*)5,0,4 , 4,1,4 , 5,1,4 , 4,0,5 , 5,0,5 , 4,1,5 , 5,1,5 , 6,0,4 write(u,*)7,0,4 , 6,1,4 , 7,1,4 , 6,0,5 , 7,0,5 , 6,1,5 , 7,1,5 , 4,2,4 write(u,*)5,2,4 , 4,3,4 , 5,3,4 , 4,2,5 , 5,2,5 , 4,3,5 , 5,3,5 , 6,2,4 write(u,*)7,2,4 , 6,3,4 , 7,3,4 , 6,2,5 , 7,2,5 , 6,3,5 , 7,3,5 , 4,0,6 write(u,*)5,0,6 , 4,1,6 , 5,1,6 , 4,0,7 , 5,0,7 , 4,1,7 , 5,1,7 , 6,0,6 write(u,*)7,0,6 , 6,1,6 , 7,1,6 , 6,0,7 , 7,0,7 , 6,1,7 , 7,1,7 , 4,2,6 write(u,*)5,2,6 , 4,3,6 , 5,3,6 , 4,2,7 , 5,2,7 , 4,3,7 , 5,3,7 , 6,2,6 write(u,*)7,2,6 , 6,3,6 , 7,3,6 , 6,2,7 , 7,2,7 , 6,3,7 , 7,3,7 , 0,4,4 write(u,*)1,4,4 , 0,5,4 , 1,5,4 , 0,4,5 , 1,4,5 , 0,5,5 , 1,5,5 , 2,4,4 write(u,*)3,4,4 , 2,5,4 , 3,5,4 , 2,4,5 , 3,4,5 , 2,5,5 , 3,5,5 , 0,6,4 write(u,*)1,6,4 , 0,7,4 , 1,7,4 , 0,6,5 , 1,6,5 , 0,7,5 , 1,7,5 , 2,6,4 write(u,*)3,6,4 , 2,7,4 , 3,7,4 , 2,6,5 , 3,6,5 , 2,7,5 , 3,7,5 , 0,4,6 write(u,*)1,4,6 , 0,5,6 , 1,5,6 , 0,4,7 , 1,4,7 , 0,5,7 , 1,5,7 , 2,4,6 write(u,*)3,4,6 , 2,5,6 , 3,5,6 , 2,4,7 , 3,4,7 , 2,5,7 , 3,5,7 , 0,6,6 write(u,*)1,6,6 , 0,7,6 , 1,7,6 , 0,6,7 , 1,6,7 , 0,7,7 , 1,7,7 , 2,6,6 write(u,*)3,6,6 , 2,7,6 , 3,7,6 , 2,6,7 , 3,6,7 , 2,7,7 , 3,7,7 , 4,4,4 write(u,*)5,4,4 , 4,5,4 , 5,5,4 , 4,4,5 , 5,4,5 , 4,5,5 , 5,5,5 , 6,4,4 write(u,*)7,4,4 , 6,5,4 , 7,5,4 , 6,4,5 , 7,4,5 , 6,5,5 , 7,5,5 , 4,6,4 write(u,*)5,6,4 , 4,7,4 , 5,7,4 , 4,6,5 , 5,6,5 , 4,7,5 , 5,7,5 , 6,6,4 write(u,*)7,6,4 , 6,7,4 , 7,7,4 , 6,6,5 , 7,6,5 , 6,7,5 , 7,7,5 , 4,4,6 write(u,*)5,4,6 , 4,5,6 , 5,5,6 , 4,4,7 , 5,4,7 , 4,5,7 , 5,5,7 , 6,4,6 write(u,*)7,4,6 , 6,5,6 , 7,5,6 , 6,4,7 , 7,4,7 , 6,5,7 , 7,5,7 , 4,6,6 write(u,*)5,6,6 , 4,7,6 , 5,7,6 , 4,6,7 , 5,6,7 , 4,7,7 , 5,7,7 , 6,6,6 write(u,*)7,6,6 , 6,7,6 , 7,7,6 , 6,6,7 , 7,6,7 , 6,7,7 , 7,7,7 , 8,0,0 write(u,*)9,0,0 , 8,1,0 , 9,1,0 , 8,0,1 , 9,0,1 , 8,1,1 , 9,1,1 , 10,0,0 write(u,*)11,0,0 , 10,1,0 , 11,1,0 , 10,0,1 , 11,0,1 , 10,1,1 , 11,1,1 , 8,2,0 write(u,*)9,2,0 , 8,3,0 , 9,3,0 , 8,2,1 , 9,2,1 , 8,3,1 , 9,3,1 , 10,2,0 write(u,*)11,2,0 , 10,3,0 , 11,3,0 , 10,2,1 , 11,2,1 , 10,3,1 , 11,3,1 , 8,0,2 write(u,*)9,0,2 , 8,1,2 , 9,1,2 , 8,0,3 , 9,0,3 , 8,1,3 , 9,1,3 , 10,0,2 write(u,*)11,0,2 , 10,1,2 , 11,1,2 , 10,0,3 , 11,0,3 , 10,1,3 , 11,1,3 , 8,2,2 write(u,*)9,2,2 , 8,3,2 , 9,3,2 , 8,2,3 , 9,2,3 , 8,3,3 , 9,3,3 , 10,2,2 write(u,*)11,2,2 , 10,3,2 , 11,3,2 , 10,2,3 , 11,2,3 , 10,3,3 , 11,3,3 , 12,0,0 write(u,*)13,0,0 , 12,1,0 , 13,1,0 , 12,0,1 , 13,0,1 , 12,1,1 , 13,1,1 , 14,0,0 write(u,*)15,0,0 , 14,1,0 , 15,1,0 , 14,0,1 , 15,0,1 , 14,1,1 , 15,1,1 , 12,2,0 write(u,*)13,2,0 , 12,3,0 , 13,3,0 , 12,2,1 , 13,2,1 , 12,3,1 , 13,3,1 , 14,2,0 write(u,*)15,2,0 , 14,3,0 , 15,3,0 , 14,2,1 , 15,2,1 , 14,3,1 , 15,3,1 , 12,0,2 write(u,*)13,0,2 , 12,1,2 , 13,1,2 , 12,0,3 , 13,0,3 , 12,1,3 , 13,1,3 , 14,0,2 write(u,*)15,0,2 , 14,1,2 , 15,1,2 , 14,0,3 , 15,0,3 , 14,1,3 , 15,1,3 , 12,2,2 write(u,*)13,2,2 , 12,3,2 , 13,3,2 , 12,2,3 , 13,2,3 , 12,3,3 , 13,3,3 , 14,2,2 write(u,*)15,2,2 , 14,3,2 , 15,3,2 , 14,2,3 , 15,2,3 , 14,3,3 , 15,3,3 , 8,4,0 write(u,*)9,4,0 , 8,5,0 , 9,5,0 , 8,4,1 , 9,4,1 , 8,5,1 , 9,5,1 , 10,4,0 write(u,*)11,4,0 , 10,5,0 , 11,5,0 , 10,4,1 , 11,4,1 , 10,5,1 , 11,5,1 , 8,6,0 write(u,*)9,6,0 , 8,7,0 , 9,7,0 , 8,6,1 , 9,6,1 , 8,7,1 , 9,7,1 , 10,6,0 write(u,*)11,6,0 , 10,7,0 , 11,7,0 , 10,6,1 , 11,6,1 , 10,7,1 , 11,7,1 , 8,4,2 write(u,*)9,4,2 , 8,5,2 , 9,5,2 , 8,4,3 , 9,4,3 , 8,5,3 , 9,5,3 , 10,4,2 write(u,*)11,4,2 , 10,5,2 , 11,5,2 , 10,4,3 , 11,4,3 , 10,5,3 , 11,5,3 , 8,6,2 write(u,*)9,6,2 , 8,7,2 , 9,7,2 , 8,6,3 , 9,6,3 , 8,7,3 , 9,7,3 , 10,6,2 write(u,*)11,6,2 , 10,7,2 , 11,7,2 , 10,6,3 , 11,6,3 , 10,7,3 , 11,7,3 , 12,4,0 write(u,*)13,4,0 , 12,5,0 , 13,5,0 , 12,4,1 , 13,4,1 , 12,5,1 , 13,5,1 , 14,4,0 write(u,*)15,4,0 , 14,5,0 , 15,5,0 , 14,4,1 , 15,4,1 , 14,5,1 , 15,5,1 , 12,6,0 write(u,*)13,6,0 , 12,7,0 , 13,7,0 , 12,6,1 , 13,6,1 , 12,7,1 , 13,7,1 , 14,6,0 write(u,*)15,6,0 , 14,7,0 , 15,7,0 , 14,6,1 , 15,6,1 , 14,7,1 , 15,7,1 , 12,4,2 write(u,*)13,4,2 , 12,5,2 , 13,5,2 , 12,4,3 , 13,4,3 , 12,5,3 , 13,5,3 , 14,4,2 write(u,*)15,4,2 , 14,5,2 , 15,5,2 , 14,4,3 , 15,4,3 , 14,5,3 , 15,5,3 , 12,6,2 write(u,*)13,6,2 , 12,7,2 , 13,7,2 , 12,6,3 , 13,6,3 , 12,7,3 , 13,7,3 , 14,6,2 write(u,*)15,6,2 , 14,7,2 , 15,7,2 , 14,6,3 , 15,6,3 , 14,7,3 , 15,7,3 , 8,0,4 write(u,*)9,0,4 , 8,1,4 , 9,1,4 , 8,0,5 , 9,0,5 , 8,1,5 , 9,1,5 , 10,0,4 write(u,*)11,0,4 , 10,1,4 , 11,1,4 , 10,0,5 , 11,0,5 , 10,1,5 , 11,1,5 , 8,2,4 write(u,*)9,2,4 , 8,3,4 , 9,3,4 , 8,2,5 , 9,2,5 , 8,3,5 , 9,3,5 , 10,2,4 write(u,*)11,2,4 , 10,3,4 , 11,3,4 , 10,2,5 , 11,2,5 , 10,3,5 , 11,3,5 , 8,0,6 write(u,*)9,0,6 , 8,1,6 , 9,1,6 , 8,0,7 , 9,0,7 , 8,1,7 , 9,1,7 , 10,0,6 write(u,*)11,0,6 , 10,1,6 , 11,1,6 , 10,0,7 , 11,0,7 , 10,1,7 , 11,1,7 , 8,2,6 write(u,*)9,2,6 , 8,3,6 , 9,3,6 , 8,2,7 , 9,2,7 , 8,3,7 , 9,3,7 , 10,2,6 write(u,*)11,2,6 , 10,3,6 , 11,3,6 , 10,2,7 , 11,2,7 , 10,3,7 , 11,3,7 , 12,0,4 write(u,*)13,0,4 , 12,1,4 , 13,1,4 , 12,0,5 , 13,0,5 , 12,1,5 , 13,1,5 , 14,0,4 write(u,*)15,0,4 , 14,1,4 , 15,1,4 , 14,0,5 , 15,0,5 , 14,1,5 , 15,1,5 , 12,2,4 write(u,*)13,2,4 , 12,3,4 , 13,3,4 , 12,2,5 , 13,2,5 , 12,3,5 , 13,3,5 , 14,2,4 write(u,*)15,2,4 , 14,3,4 , 15,3,4 , 14,2,5 , 15,2,5 , 14,3,5 , 15,3,5 , 12,0,6 write(u,*)13,0,6 , 12,1,6 , 13,1,6 , 12,0,7 , 13,0,7 , 12,1,7 , 13,1,7 , 14,0,6 write(u,*)15,0,6 , 14,1,6 , 15,1,6 , 14,0,7 , 15,0,7 , 14,1,7 , 15,1,7 , 12,2,6 write(u,*)13,2,6 , 12,3,6 , 13,3,6 , 12,2,7 , 13,2,7 , 12,3,7 , 13,3,7 , 14,2,6 write(u,*)15,2,6 , 14,3,6 , 15,3,6 , 14,2,7 , 15,2,7 , 14,3,7 , 15,3,7 , 8,4,4 write(u,*)9,4,4 , 8,5,4 , 9,5,4 , 8,4,5 , 9,4,5 , 8,5,5 , 9,5,5 , 10,4,4 write(u,*)11,4,4 , 10,5,4 , 11,5,4 , 10,4,5 , 11,4,5 , 10,5,5 , 11,5,5 , 8,6,4 write(u,*)9,6,4 , 8,7,4 , 9,7,4 , 8,6,5 , 9,6,5 , 8,7,5 , 9,7,5 , 10,6,4 write(u,*)11,6,4 , 10,7,4 , 11,7,4 , 10,6,5 , 11,6,5 , 10,7,5 , 11,7,5 , 8,4,6 write(u,*)9,4,6 , 8,5,6 , 9,5,6 , 8,4,7 , 9,4,7 , 8,5,7 , 9,5,7 , 10,4,6 write(u,*)11,4,6 , 10,5,6 , 11,5,6 , 10,4,7 , 11,4,7 , 10,5,7 , 11,5,7 , 8,6,6 write(u,*)9,6,6 , 8,7,6 , 9,7,6 , 8,6,7 , 9,6,7 , 8,7,7 , 9,7,7 , 10,6,6 write(u,*)11,6,6 , 10,7,6 , 11,7,6 , 10,6,7 , 11,6,7 , 10,7,7 , 11,7,7 , 12,4,4 write(u,*)13,4,4 , 12,5,4 , 13,5,4 , 12,4,5 , 13,4,5 , 12,5,5 , 13,5,5 , 14,4,4 write(u,*)15,4,4 , 14,5,4 , 15,5,4 , 14,4,5 , 15,4,5 , 14,5,5 , 15,5,5 , 12,6,4 write(u,*)13,6,4 , 12,7,4 , 13,7,4 , 12,6,5 , 13,6,5 , 12,7,5 , 13,7,5 , 14,6,4 write(u,*)15,6,4 , 14,7,4 , 15,7,4 , 14,6,5 , 15,6,5 , 14,7,5 , 15,7,5 , 12,4,6 write(u,*)13,4,6 , 12,5,6 , 13,5,6 , 12,4,7 , 13,4,7 , 12,5,7 , 13,5,7 , 14,4,6 write(u,*)15,4,6 , 14,5,6 , 15,5,6 , 14,4,7 , 15,4,7 , 14,5,7 , 15,5,7 , 12,6,6 write(u,*)13,6,6 , 12,7,6 , 13,7,6 , 12,6,7 , 13,6,7 , 12,7,7 , 13,7,7 , 14,6,6 write(u,*)15,6,6 , 14,7,6 , 15,7,6 , 14,6,7 , 15,6,7 , 14,7,7 , 15,7,7 , 0,8,0 write(u,*)1,8,0 , 0,9,0 , 1,9,0 , 0,8,1 , 1,8,1 , 0,9,1 , 1,9,1 , 2,8,0 write(u,*)3,8,0 , 2,9,0 , 3,9,0 , 2,8,1 , 3,8,1 , 2,9,1 , 3,9,1 , 0,10,0 write(u,*)1,10,0 , 0,11,0 , 1,11,0 , 0,10,1 , 1,10,1 , 0,11,1 , 1,11,1 , 2,10,0 write(u,*)3,10,0 , 2,11,0 , 3,11,0 , 2,10,1 , 3,10,1 , 2,11,1 , 3,11,1 , 0,8,2 write(u,*)1,8,2 , 0,9,2 , 1,9,2 , 0,8,3 , 1,8,3 , 0,9,3 , 1,9,3 , 2,8,2 write(u,*)3,8,2 , 2,9,2 , 3,9,2 , 2,8,3 , 3,8,3 , 2,9,3 , 3,9,3 , 0,10,2 write(u,*)1,10,2 , 0,11,2 , 1,11,2 , 0,10,3 , 1,10,3 , 0,11,3 , 1,11,3 , 2,10,2 write(u,*)3,10,2 , 2,11,2 , 3,11,2 , 2,10,3 , 3,10,3 , 2,11,3 , 3,11,3 , 4,8,0 write(u,*)5,8,0 , 4,9,0 , 5,9,0 , 4,8,1 , 5,8,1 , 4,9,1 , 5,9,1 , 6,8,0 write(u,*)7,8,0 , 6,9,0 , 7,9,0 , 6,8,1 , 7,8,1 , 6,9,1 , 7,9,1 , 4,10,0 write(u,*)5,10,0 , 4,11,0 , 5,11,0 , 4,10,1 , 5,10,1 , 4,11,1 , 5,11,1 , 6,10,0 write(u,*)7,10,0 , 6,11,0 , 7,11,0 , 6,10,1 , 7,10,1 , 6,11,1 , 7,11,1 , 4,8,2 write(u,*)5,8,2 , 4,9,2 , 5,9,2 , 4,8,3 , 5,8,3 , 4,9,3 , 5,9,3 , 6,8,2 write(u,*)7,8,2 , 6,9,2 , 7,9,2 , 6,8,3 , 7,8,3 , 6,9,3 , 7,9,3 , 4,10,2 write(u,*)5,10,2 , 4,11,2 , 5,11,2 , 4,10,3 , 5,10,3 , 4,11,3 , 5,11,3 , 6,10,2 write(u,*)7,10,2 , 6,11,2 , 7,11,2 , 6,10,3 , 7,10,3 , 6,11,3 , 7,11,3 , 0,12,0 write(u,*)1,12,0 , 0,13,0 , 1,13,0 , 0,12,1 , 1,12,1 , 0,13,1 , 1,13,1 , 2,12,0 write(u,*)3,12,0 , 2,13,0 , 3,13,0 , 2,12,1 , 3,12,1 , 2,13,1 , 3,13,1 , 0,14,0 write(u,*)1,14,0 , 0,15,0 , 1,15,0 , 0,14,1 , 1,14,1 , 0,15,1 , 1,15,1 , 2,14,0 write(u,*)3,14,0 , 2,15,0 , 3,15,0 , 2,14,1 , 3,14,1 , 2,15,1 , 3,15,1 , 0,12,2 write(u,*)1,12,2 , 0,13,2 , 1,13,2 , 0,12,3 , 1,12,3 , 0,13,3 , 1,13,3 , 2,12,2 write(u,*)3,12,2 , 2,13,2 , 3,13,2 , 2,12,3 , 3,12,3 , 2,13,3 , 3,13,3 , 0,14,2 write(u,*)1,14,2 , 0,15,2 , 1,15,2 , 0,14,3 , 1,14,3 , 0,15,3 , 1,15,3 , 2,14,2 write(u,*)3,14,2 , 2,15,2 , 3,15,2 , 2,14,3 , 3,14,3 , 2,15,3 , 3,15,3 , 4,12,0 write(u,*)5,12,0 , 4,13,0 , 5,13,0 , 4,12,1 , 5,12,1 , 4,13,1 , 5,13,1 , 6,12,0 write(u,*)7,12,0 , 6,13,0 , 7,13,0 , 6,12,1 , 7,12,1 , 6,13,1 , 7,13,1 , 4,14,0 write(u,*)5,14,0 , 4,15,0 , 5,15,0 , 4,14,1 , 5,14,1 , 4,15,1 , 5,15,1 , 6,14,0 write(u,*)7,14,0 , 6,15,0 , 7,15,0 , 6,14,1 , 7,14,1 , 6,15,1 , 7,15,1 , 4,12,2 write(u,*)5,12,2 , 4,13,2 , 5,13,2 , 4,12,3 , 5,12,3 , 4,13,3 , 5,13,3 , 6,12,2 write(u,*)7,12,2 , 6,13,2 , 7,13,2 , 6,12,3 , 7,12,3 , 6,13,3 , 7,13,3 , 4,14,2 write(u,*)5,14,2 , 4,15,2 , 5,15,2 , 4,14,3 , 5,14,3 , 4,15,3 , 5,15,3 , 6,14,2 write(u,*)7,14,2 , 6,15,2 , 7,15,2 , 6,14,3 , 7,14,3 , 6,15,3 , 7,15,3 , 0,8,4 write(u,*)1,8,4 , 0,9,4 , 1,9,4 , 0,8,5 , 1,8,5 , 0,9,5 , 1,9,5 , 2,8,4 write(u,*)3,8,4 , 2,9,4 , 3,9,4 , 2,8,5 , 3,8,5 , 2,9,5 , 3,9,5 , 0,10,4 write(u,*)1,10,4 , 0,11,4 , 1,11,4 , 0,10,5 , 1,10,5 , 0,11,5 , 1,11,5 , 2,10,4 write(u,*)3,10,4 , 2,11,4 , 3,11,4 , 2,10,5 , 3,10,5 , 2,11,5 , 3,11,5 , 0,8,6 write(u,*)1,8,6 , 0,9,6 , 1,9,6 , 0,8,7 , 1,8,7 , 0,9,7 , 1,9,7 , 2,8,6 write(u,*)3,8,6 , 2,9,6 , 3,9,6 , 2,8,7 , 3,8,7 , 2,9,7 , 3,9,7 , 0,10,6 write(u,*)1,10,6 , 0,11,6 , 1,11,6 , 0,10,7 , 1,10,7 , 0,11,7 , 1,11,7 , 2,10,6 write(u,*)3,10,6 , 2,11,6 , 3,11,6 , 2,10,7 , 3,10,7 , 2,11,7 , 3,11,7 , 4,8,4 write(u,*)5,8,4 , 4,9,4 , 5,9,4 , 4,8,5 , 5,8,5 , 4,9,5 , 5,9,5 , 6,8,4 write(u,*)7,8,4 , 6,9,4 , 7,9,4 , 6,8,5 , 7,8,5 , 6,9,5 , 7,9,5 , 4,10,4 write(u,*)5,10,4 , 4,11,4 , 5,11,4 , 4,10,5 , 5,10,5 , 4,11,5 , 5,11,5 , 6,10,4 write(u,*)7,10,4 , 6,11,4 , 7,11,4 , 6,10,5 , 7,10,5 , 6,11,5 , 7,11,5 , 4,8,6 write(u,*)5,8,6 , 4,9,6 , 5,9,6 , 4,8,7 , 5,8,7 , 4,9,7 , 5,9,7 , 6,8,6 write(u,*)7,8,6 , 6,9,6 , 7,9,6 , 6,8,7 , 7,8,7 , 6,9,7 , 7,9,7 , 4,10,6 write(u,*)5,10,6 , 4,11,6 , 5,11,6 , 4,10,7 , 5,10,7 , 4,11,7 , 5,11,7 , 6,10,6 write(u,*)7,10,6 , 6,11,6 , 7,11,6 , 6,10,7 , 7,10,7 , 6,11,7 , 7,11,7 , 0,12,4 write(u,*)1,12,4 , 0,13,4 , 1,13,4 , 0,12,5 , 1,12,5 , 0,13,5 , 1,13,5 , 2,12,4 write(u,*)3,12,4 , 2,13,4 , 3,13,4 , 2,12,5 , 3,12,5 , 2,13,5 , 3,13,5 , 0,14,4 write(u,*)1,14,4 , 0,15,4 , 1,15,4 , 0,14,5 , 1,14,5 , 0,15,5 , 1,15,5 , 2,14,4 write(u,*)3,14,4 , 2,15,4 , 3,15,4 , 2,14,5 , 3,14,5 , 2,15,5 , 3,15,5 , 0,12,6 write(u,*)1,12,6 , 0,13,6 , 1,13,6 , 0,12,7 , 1,12,7 , 0,13,7 , 1,13,7 , 2,12,6 write(u,*)3,12,6 , 2,13,6 , 3,13,6 , 2,12,7 , 3,12,7 , 2,13,7 , 3,13,7 , 0,14,6 write(u,*)1,14,6 , 0,15,6 , 1,15,6 , 0,14,7 , 1,14,7 , 0,15,7 , 1,15,7 , 2,14,6 write(u,*)3,14,6 , 2,15,6 , 3,15,6 , 2,14,7 , 3,14,7 , 2,15,7 , 3,15,7 , 4,12,4 write(u,*)5,12,4 , 4,13,4 , 5,13,4 , 4,12,5 , 5,12,5 , 4,13,5 , 5,13,5 , 6,12,4 write(u,*)7,12,4 , 6,13,4 , 7,13,4 , 6,12,5 , 7,12,5 , 6,13,5 , 7,13,5 , 4,14,4 write(u,*)5,14,4 , 4,15,4 , 5,15,4 , 4,14,5 , 5,14,5 , 4,15,5 , 5,15,5 , 6,14,4 write(u,*)7,14,4 , 6,15,4 , 7,15,4 , 6,14,5 , 7,14,5 , 6,15,5 , 7,15,5 , 4,12,6 write(u,*)5,12,6 , 4,13,6 , 5,13,6 , 4,12,7 , 5,12,7 , 4,13,7 , 5,13,7 , 6,12,6 write(u,*)7,12,6 , 6,13,6 , 7,13,6 , 6,12,7 , 7,12,7 , 6,13,7 , 7,13,7 , 4,14,6 write(u,*)5,14,6 , 4,15,6 , 5,15,6 , 4,14,7 , 5,14,7 , 4,15,7 , 5,15,7 , 6,14,6 write(u,*)7,14,6 , 6,15,6 , 7,15,6 , 6,14,7 , 7,14,7 , 6,15,7 , 7,15,7 , 8,8,0 write(u,*)9,8,0 , 8,9,0 , 9,9,0 , 8,8,1 , 9,8,1 , 8,9,1 , 9,9,1 , 10,8,0 write(u,*)11,8,0 , 10,9,0 , 11,9,0 , 10,8,1 , 11,8,1 , 10,9,1 , 11,9,1 , 8,10,0 write(u,*)9,10,0 , 8,11,0 , 9,11,0 , 8,10,1 , 9,10,1 , 8,11,1 , 9,11,1 , 10,10,0 write(u,*)11,10,0 , 10,11,0 , 11,11,0 , 10,10,1 , 11,10,1 , 10,11,1 , 11,11,1 , 8,8,2 write(u,*)9,8,2 , 8,9,2 , 9,9,2 , 8,8,3 , 9,8,3 , 8,9,3 , 9,9,3 , 10,8,2 write(u,*)11,8,2 , 10,9,2 , 11,9,2 , 10,8,3 , 11,8,3 , 10,9,3 , 11,9,3 , 8,10,2 write(u,*)9,10,2 , 8,11,2 , 9,11,2 , 8,10,3 , 9,10,3 , 8,11,3 , 9,11,3 , 10,10,2 write(u,*)11,10,2 , 10,11,2 , 11,11,2 , 10,10,3 , 11,10,3 , 10,11,3 , 11,11,3 , 12,8,0 write(u,*)13,8,0 , 12,9,0 , 13,9,0 , 12,8,1 , 13,8,1 , 12,9,1 , 13,9,1 , 14,8,0 write(u,*)15,8,0 , 14,9,0 , 15,9,0 , 14,8,1 , 15,8,1 , 14,9,1 , 15,9,1 , 12,10,0 write(u,*)13,10,0 , 12,11,0 , 13,11,0 , 12,10,1 , 13,10,1 , 12,11,1 , 13,11,1 , 14,10,0 write(u,*)15,10,0 , 14,11,0 , 15,11,0 , 14,10,1 , 15,10,1 , 14,11,1 , 15,11,1 , 12,8,2 write(u,*)13,8,2 , 12,9,2 , 13,9,2 , 12,8,3 , 13,8,3 , 12,9,3 , 13,9,3 , 14,8,2 write(u,*)15,8,2 , 14,9,2 , 15,9,2 , 14,8,3 , 15,8,3 , 14,9,3 , 15,9,3 , 12,10,2 write(u,*)13,10,2 , 12,11,2 , 13,11,2 , 12,10,3 , 13,10,3 , 12,11,3 , 13,11,3 , 14,10,2 write(u,*)15,10,2 , 14,11,2 , 15,11,2 , 14,10,3 , 15,10,3 , 14,11,3 , 15,11,3 , 8,12,0 write(u,*)9,12,0 , 8,13,0 , 9,13,0 , 8,12,1 , 9,12,1 , 8,13,1 , 9,13,1 , 10,12,0 write(u,*)11,12,0 , 10,13,0 , 11,13,0 , 10,12,1 , 11,12,1 , 10,13,1 , 11,13,1 , 8,14,0 write(u,*)9,14,0 , 8,15,0 , 9,15,0 , 8,14,1 , 9,14,1 , 8,15,1 , 9,15,1 , 10,14,0 write(u,*)11,14,0 , 10,15,0 , 11,15,0 , 10,14,1 , 11,14,1 , 10,15,1 , 11,15,1 , 8,12,2 write(u,*)9,12,2 , 8,13,2 , 9,13,2 , 8,12,3 , 9,12,3 , 8,13,3 , 9,13,3 , 10,12,2 write(u,*)11,12,2 , 10,13,2 , 11,13,2 , 10,12,3 , 11,12,3 , 10,13,3 , 11,13,3 , 8,14,2 write(u,*)9,14,2 , 8,15,2 , 9,15,2 , 8,14,3 , 9,14,3 , 8,15,3 , 9,15,3 , 10,14,2 write(u,*)11,14,2 , 10,15,2 , 11,15,2 , 10,14,3 , 11,14,3 , 10,15,3 , 11,15,3 , 12,12,0 write(u,*)13,12,0 , 12,13,0 , 13,13,0 , 12,12,1 , 13,12,1 , 12,13,1 , 13,13,1 , 14,12,0 write(u,*)15,12,0 , 14,13,0 , 15,13,0 , 14,12,1 , 15,12,1 , 14,13,1 , 15,13,1 , 12,14,0 write(u,*)13,14,0 , 12,15,0 , 13,15,0 , 12,14,1 , 13,14,1 , 12,15,1 , 13,15,1 , 14,14,0 write(u,*)15,14,0 , 14,15,0 , 15,15,0 , 14,14,1 , 15,14,1 , 14,15,1 , 15,15,1 , 12,12,2 write(u,*)13,12,2 , 12,13,2 , 13,13,2 , 12,12,3 , 13,12,3 , 12,13,3 , 13,13,3 , 14,12,2 write(u,*)15,12,2 , 14,13,2 , 15,13,2 , 14,12,3 , 15,12,3 , 14,13,3 , 15,13,3 , 12,14,2 write(u,*)13,14,2 , 12,15,2 , 13,15,2 , 12,14,3 , 13,14,3 , 12,15,3 , 13,15,3 , 14,14,2 write(u,*)15,14,2 , 14,15,2 , 15,15,2 , 14,14,3 , 15,14,3 , 14,15,3 , 15,15,3 , 8,8,4 write(u,*)9,8,4 , 8,9,4 , 9,9,4 , 8,8,5 , 9,8,5 , 8,9,5 , 9,9,5 , 10,8,4 write(u,*)11,8,4 , 10,9,4 , 11,9,4 , 10,8,5 , 11,8,5 , 10,9,5 , 11,9,5 , 8,10,4 write(u,*)9,10,4 , 8,11,4 , 9,11,4 , 8,10,5 , 9,10,5 , 8,11,5 , 9,11,5 , 10,10,4 write(u,*)11,10,4 , 10,11,4 , 11,11,4 , 10,10,5 , 11,10,5 , 10,11,5 , 11,11,5 , 8,8,6 write(u,*)9,8,6 , 8,9,6 , 9,9,6 , 8,8,7 , 9,8,7 , 8,9,7 , 9,9,7 , 10,8,6 write(u,*)11,8,6 , 10,9,6 , 11,9,6 , 10,8,7 , 11,8,7 , 10,9,7 , 11,9,7 , 8,10,6 write(u,*)9,10,6 , 8,11,6 , 9,11,6 , 8,10,7 , 9,10,7 , 8,11,7 , 9,11,7 , 10,10,6 write(u,*)11,10,6 , 10,11,6 , 11,11,6 , 10,10,7 , 11,10,7 , 10,11,7 , 11,11,7 , 12,8,4 write(u,*)13,8,4 , 12,9,4 , 13,9,4 , 12,8,5 , 13,8,5 , 12,9,5 , 13,9,5 , 14,8,4 write(u,*)15,8,4 , 14,9,4 , 15,9,4 , 14,8,5 , 15,8,5 , 14,9,5 , 15,9,5 , 12,10,4 write(u,*)13,10,4 , 12,11,4 , 13,11,4 , 12,10,5 , 13,10,5 , 12,11,5 , 13,11,5 , 14,10,4 write(u,*)15,10,4 , 14,11,4 , 15,11,4 , 14,10,5 , 15,10,5 , 14,11,5 , 15,11,5 , 12,8,6 write(u,*)13,8,6 , 12,9,6 , 13,9,6 , 12,8,7 , 13,8,7 , 12,9,7 , 13,9,7 , 14,8,6 write(u,*)15,8,6 , 14,9,6 , 15,9,6 , 14,8,7 , 15,8,7 , 14,9,7 , 15,9,7 , 12,10,6 write(u,*)13,10,6 , 12,11,6 , 13,11,6 , 12,10,7 , 13,10,7 , 12,11,7 , 13,11,7 , 14,10,6 write(u,*)15,10,6 , 14,11,6 , 15,11,6 , 14,10,7 , 15,10,7 , 14,11,7 , 15,11,7 , 8,12,4 write(u,*)9,12,4 , 8,13,4 , 9,13,4 , 8,12,5 , 9,12,5 , 8,13,5 , 9,13,5 , 10,12,4 write(u,*)11,12,4 , 10,13,4 , 11,13,4 , 10,12,5 , 11,12,5 , 10,13,5 , 11,13,5 , 8,14,4 write(u,*)9,14,4 , 8,15,4 , 9,15,4 , 8,14,5 , 9,14,5 , 8,15,5 , 9,15,5 , 10,14,4 write(u,*)11,14,4 , 10,15,4 , 11,15,4 , 10,14,5 , 11,14,5 , 10,15,5 , 11,15,5 , 8,12,6 write(u,*)9,12,6 , 8,13,6 , 9,13,6 , 8,12,7 , 9,12,7 , 8,13,7 , 9,13,7 , 10,12,6 write(u,*)11,12,6 , 10,13,6 , 11,13,6 , 10,12,7 , 11,12,7 , 10,13,7 , 11,13,7 , 8,14,6 write(u,*)9,14,6 , 8,15,6 , 9,15,6 , 8,14,7 , 9,14,7 , 8,15,7 , 9,15,7 , 10,14,6 write(u,*)11,14,6 , 10,15,6 , 11,15,6 , 10,14,7 , 11,14,7 , 10,15,7 , 11,15,7 , 12,12,4 write(u,*)13,12,4 , 12,13,4 , 13,13,4 , 12,12,5 , 13,12,5 , 12,13,5 , 13,13,5 , 14,12,4 write(u,*)15,12,4 , 14,13,4 , 15,13,4 , 14,12,5 , 15,12,5 , 14,13,5 , 15,13,5 , 12,14,4 write(u,*)13,14,4 , 12,15,4 , 13,15,4 , 12,14,5 , 13,14,5 , 12,15,5 , 13,15,5 , 14,14,4 write(u,*)15,14,4 , 14,15,4 , 15,15,4 , 14,14,5 , 15,14,5 , 14,15,5 , 15,15,5 , 12,12,6 write(u,*)13,12,6 , 12,13,6 , 13,13,6 , 12,12,7 , 13,12,7 , 12,13,7 , 13,13,7 , 14,12,6 write(u,*)15,12,6 , 14,13,6 , 15,13,6 , 14,12,7 , 15,12,7 , 14,13,7 , 15,13,7 , 12,14,6 write(u,*)13,14,6 , 12,15,6 , 13,15,6 , 12,14,7 , 13,14,7 , 12,15,7 , 13,15,7 , 14,14,6 write(u,*)15,14,6 , 14,15,6 , 15,15,6 , 14,14,7 , 15,14,7 , 14,15,7 , 15,15,7 , 0,0,8 write(u,*)1,0,8 , 0,1,8 , 1,1,8 , 0,0,9 , 1,0,9 , 0,1,9 , 1,1,9 , 2,0,8 write(u,*)3,0,8 , 2,1,8 , 3,1,8 , 2,0,9 , 3,0,9 , 2,1,9 , 3,1,9 , 0,2,8 write(u,*)1,2,8 , 0,3,8 , 1,3,8 , 0,2,9 , 1,2,9 , 0,3,9 , 1,3,9 , 2,2,8 write(u,*)3,2,8 , 2,3,8 , 3,3,8 , 2,2,9 , 3,2,9 , 2,3,9 , 3,3,9 , 0,0,10 write(u,*)1,0,10 , 0,1,10 , 1,1,10 , 0,0,11 , 1,0,11 , 0,1,11 , 1,1,11 , 2,0,10 write(u,*)3,0,10 , 2,1,10 , 3,1,10 , 2,0,11 , 3,0,11 , 2,1,11 , 3,1,11 , 0,2,10 write(u,*)1,2,10 , 0,3,10 , 1,3,10 , 0,2,11 , 1,2,11 , 0,3,11 , 1,3,11 , 2,2,10 write(u,*)3,2,10 , 2,3,10 , 3,3,10 , 2,2,11 , 3,2,11 , 2,3,11 , 3,3,11 , 4,0,8 write(u,*)5,0,8 , 4,1,8 , 5,1,8 , 4,0,9 , 5,0,9 , 4,1,9 , 5,1,9 , 6,0,8 write(u,*)7,0,8 , 6,1,8 , 7,1,8 , 6,0,9 , 7,0,9 , 6,1,9 , 7,1,9 , 4,2,8 write(u,*)5,2,8 , 4,3,8 , 5,3,8 , 4,2,9 , 5,2,9 , 4,3,9 , 5,3,9 , 6,2,8 write(u,*)7,2,8 , 6,3,8 , 7,3,8 , 6,2,9 , 7,2,9 , 6,3,9 , 7,3,9 , 4,0,10 write(u,*)5,0,10 , 4,1,10 , 5,1,10 , 4,0,11 , 5,0,11 , 4,1,11 , 5,1,11 , 6,0,10 write(u,*)7,0,10 , 6,1,10 , 7,1,10 , 6,0,11 , 7,0,11 , 6,1,11 , 7,1,11 , 4,2,10 write(u,*)5,2,10 , 4,3,10 , 5,3,10 , 4,2,11 , 5,2,11 , 4,3,11 , 5,3,11 , 6,2,10 write(u,*)7,2,10 , 6,3,10 , 7,3,10 , 6,2,11 , 7,2,11 , 6,3,11 , 7,3,11 , 0,4,8 write(u,*)1,4,8 , 0,5,8 , 1,5,8 , 0,4,9 , 1,4,9 , 0,5,9 , 1,5,9 , 2,4,8 write(u,*)3,4,8 , 2,5,8 , 3,5,8 , 2,4,9 , 3,4,9 , 2,5,9 , 3,5,9 , 0,6,8 write(u,*)1,6,8 , 0,7,8 , 1,7,8 , 0,6,9 , 1,6,9 , 0,7,9 , 1,7,9 , 2,6,8 write(u,*)3,6,8 , 2,7,8 , 3,7,8 , 2,6,9 , 3,6,9 , 2,7,9 , 3,7,9 , 0,4,10 write(u,*)1,4,10 , 0,5,10 , 1,5,10 , 0,4,11 , 1,4,11 , 0,5,11 , 1,5,11 , 2,4,10 write(u,*)3,4,10 , 2,5,10 , 3,5,10 , 2,4,11 , 3,4,11 , 2,5,11 , 3,5,11 , 0,6,10 write(u,*)1,6,10 , 0,7,10 , 1,7,10 , 0,6,11 , 1,6,11 , 0,7,11 , 1,7,11 , 2,6,10 write(u,*)3,6,10 , 2,7,10 , 3,7,10 , 2,6,11 , 3,6,11 , 2,7,11 , 3,7,11 , 4,4,8 write(u,*)5,4,8 , 4,5,8 , 5,5,8 , 4,4,9 , 5,4,9 , 4,5,9 , 5,5,9 , 6,4,8 write(u,*)7,4,8 , 6,5,8 , 7,5,8 , 6,4,9 , 7,4,9 , 6,5,9 , 7,5,9 , 4,6,8 write(u,*)5,6,8 , 4,7,8 , 5,7,8 , 4,6,9 , 5,6,9 , 4,7,9 , 5,7,9 , 6,6,8 write(u,*)7,6,8 , 6,7,8 , 7,7,8 , 6,6,9 , 7,6,9 , 6,7,9 , 7,7,9 , 4,4,10 write(u,*)5,4,10 , 4,5,10 , 5,5,10 , 4,4,11 , 5,4,11 , 4,5,11 , 5,5,11 , 6,4,10 write(u,*)7,4,10 , 6,5,10 , 7,5,10 , 6,4,11 , 7,4,11 , 6,5,11 , 7,5,11 , 4,6,10 write(u,*)5,6,10 , 4,7,10 , 5,7,10 , 4,6,11 , 5,6,11 , 4,7,11 , 5,7,11 , 6,6,10 write(u,*)7,6,10 , 6,7,10 , 7,7,10 , 6,6,11 , 7,6,11 , 6,7,11 , 7,7,11 , 0,0,12 write(u,*)1,0,12 , 0,1,12 , 1,1,12 , 0,0,13 , 1,0,13 , 0,1,13 , 1,1,13 , 2,0,12 write(u,*)3,0,12 , 2,1,12 , 3,1,12 , 2,0,13 , 3,0,13 , 2,1,13 , 3,1,13 , 0,2,12 write(u,*)1,2,12 , 0,3,12 , 1,3,12 , 0,2,13 , 1,2,13 , 0,3,13 , 1,3,13 , 2,2,12 write(u,*)3,2,12 , 2,3,12 , 3,3,12 , 2,2,13 , 3,2,13 , 2,3,13 , 3,3,13 , 0,0,14 write(u,*)1,0,14 , 0,1,14 , 1,1,14 , 0,0,15 , 1,0,15 , 0,1,15 , 1,1,15 , 2,0,14 write(u,*)3,0,14 , 2,1,14 , 3,1,14 , 2,0,15 , 3,0,15 , 2,1,15 , 3,1,15 , 0,2,14 write(u,*)1,2,14 , 0,3,14 , 1,3,14 , 0,2,15 , 1,2,15 , 0,3,15 , 1,3,15 , 2,2,14 write(u,*)3,2,14 , 2,3,14 , 3,3,14 , 2,2,15 , 3,2,15 , 2,3,15 , 3,3,15 , 4,0,12 write(u,*)5,0,12 , 4,1,12 , 5,1,12 , 4,0,13 , 5,0,13 , 4,1,13 , 5,1,13 , 6,0,12 write(u,*)7,0,12 , 6,1,12 , 7,1,12 , 6,0,13 , 7,0,13 , 6,1,13 , 7,1,13 , 4,2,12 write(u,*)5,2,12 , 4,3,12 , 5,3,12 , 4,2,13 , 5,2,13 , 4,3,13 , 5,3,13 , 6,2,12 write(u,*)7,2,12 , 6,3,12 , 7,3,12 , 6,2,13 , 7,2,13 , 6,3,13 , 7,3,13 , 4,0,14 write(u,*)5,0,14 , 4,1,14 , 5,1,14 , 4,0,15 , 5,0,15 , 4,1,15 , 5,1,15 , 6,0,14 write(u,*)7,0,14 , 6,1,14 , 7,1,14 , 6,0,15 , 7,0,15 , 6,1,15 , 7,1,15 , 4,2,14 write(u,*)5,2,14 , 4,3,14 , 5,3,14 , 4,2,15 , 5,2,15 , 4,3,15 , 5,3,15 , 6,2,14 write(u,*)7,2,14 , 6,3,14 , 7,3,14 , 6,2,15 , 7,2,15 , 6,3,15 , 7,3,15 , 0,4,12 write(u,*)1,4,12 , 0,5,12 , 1,5,12 , 0,4,13 , 1,4,13 , 0,5,13 , 1,5,13 , 2,4,12 write(u,*)3,4,12 , 2,5,12 , 3,5,12 , 2,4,13 , 3,4,13 , 2,5,13 , 3,5,13 , 0,6,12 write(u,*)1,6,12 , 0,7,12 , 1,7,12 , 0,6,13 , 1,6,13 , 0,7,13 , 1,7,13 , 2,6,12 write(u,*)3,6,12 , 2,7,12 , 3,7,12 , 2,6,13 , 3,6,13 , 2,7,13 , 3,7,13 , 0,4,14 write(u,*)1,4,14 , 0,5,14 , 1,5,14 , 0,4,15 , 1,4,15 , 0,5,15 , 1,5,15 , 2,4,14 write(u,*)3,4,14 , 2,5,14 , 3,5,14 , 2,4,15 , 3,4,15 , 2,5,15 , 3,5,15 , 0,6,14 write(u,*)1,6,14 , 0,7,14 , 1,7,14 , 0,6,15 , 1,6,15 , 0,7,15 , 1,7,15 , 2,6,14 write(u,*)3,6,14 , 2,7,14 , 3,7,14 , 2,6,15 , 3,6,15 , 2,7,15 , 3,7,15 , 4,4,12 write(u,*)5,4,12 , 4,5,12 , 5,5,12 , 4,4,13 , 5,4,13 , 4,5,13 , 5,5,13 , 6,4,12 write(u,*)7,4,12 , 6,5,12 , 7,5,12 , 6,4,13 , 7,4,13 , 6,5,13 , 7,5,13 , 4,6,12 write(u,*)5,6,12 , 4,7,12 , 5,7,12 , 4,6,13 , 5,6,13 , 4,7,13 , 5,7,13 , 6,6,12 write(u,*)7,6,12 , 6,7,12 , 7,7,12 , 6,6,13 , 7,6,13 , 6,7,13 , 7,7,13 , 4,4,14 write(u,*)5,4,14 , 4,5,14 , 5,5,14 , 4,4,15 , 5,4,15 , 4,5,15 , 5,5,15 , 6,4,14 write(u,*)7,4,14 , 6,5,14 , 7,5,14 , 6,4,15 , 7,4,15 , 6,5,15 , 7,5,15 , 4,6,14 write(u,*)5,6,14 , 4,7,14 , 5,7,14 , 4,6,15 , 5,6,15 , 4,7,15 , 5,7,15 , 6,6,14 write(u,*)7,6,14 , 6,7,14 , 7,7,14 , 6,6,15 , 7,6,15 , 6,7,15 , 7,7,15 , 8,0,8 write(u,*)9,0,8 , 8,1,8 , 9,1,8 , 8,0,9 , 9,0,9 , 8,1,9 , 9,1,9 , 10,0,8 write(u,*)11,0,8 , 10,1,8 , 11,1,8 , 10,0,9 , 11,0,9 , 10,1,9 , 11,1,9 , 8,2,8 write(u,*)9,2,8 , 8,3,8 , 9,3,8 , 8,2,9 , 9,2,9 , 8,3,9 , 9,3,9 , 10,2,8 write(u,*)11,2,8 , 10,3,8 , 11,3,8 , 10,2,9 , 11,2,9 , 10,3,9 , 11,3,9 , 8,0,10 write(u,*)9,0,10 , 8,1,10 , 9,1,10 , 8,0,11 , 9,0,11 , 8,1,11 , 9,1,11 , 10,0,10 write(u,*)11,0,10 , 10,1,10 , 11,1,10 , 10,0,11 , 11,0,11 , 10,1,11 , 11,1,11 , 8,2,10 write(u,*)9,2,10 , 8,3,10 , 9,3,10 , 8,2,11 , 9,2,11 , 8,3,11 , 9,3,11 , 10,2,10 write(u,*)11,2,10 , 10,3,10 , 11,3,10 , 10,2,11 , 11,2,11 , 10,3,11 , 11,3,11 , 12,0,8 write(u,*)13,0,8 , 12,1,8 , 13,1,8 , 12,0,9 , 13,0,9 , 12,1,9 , 13,1,9 , 14,0,8 write(u,*)15,0,8 , 14,1,8 , 15,1,8 , 14,0,9 , 15,0,9 , 14,1,9 , 15,1,9 , 12,2,8 write(u,*)13,2,8 , 12,3,8 , 13,3,8 , 12,2,9 , 13,2,9 , 12,3,9 , 13,3,9 , 14,2,8 write(u,*)15,2,8 , 14,3,8 , 15,3,8 , 14,2,9 , 15,2,9 , 14,3,9 , 15,3,9 , 12,0,10 write(u,*)13,0,10 , 12,1,10 , 13,1,10 , 12,0,11 , 13,0,11 , 12,1,11 , 13,1,11 , 14,0,10 write(u,*)15,0,10 , 14,1,10 , 15,1,10 , 14,0,11 , 15,0,11 , 14,1,11 , 15,1,11 , 12,2,10 write(u,*)13,2,10 , 12,3,10 , 13,3,10 , 12,2,11 , 13,2,11 , 12,3,11 , 13,3,11 , 14,2,10 write(u,*)15,2,10 , 14,3,10 , 15,3,10 , 14,2,11 , 15,2,11 , 14,3,11 , 15,3,11 , 8,4,8 write(u,*)9,4,8 , 8,5,8 , 9,5,8 , 8,4,9 , 9,4,9 , 8,5,9 , 9,5,9 , 10,4,8 write(u,*)11,4,8 , 10,5,8 , 11,5,8 , 10,4,9 , 11,4,9 , 10,5,9 , 11,5,9 , 8,6,8 write(u,*)9,6,8 , 8,7,8 , 9,7,8 , 8,6,9 , 9,6,9 , 8,7,9 , 9,7,9 , 10,6,8 write(u,*)11,6,8 , 10,7,8 , 11,7,8 , 10,6,9 , 11,6,9 , 10,7,9 , 11,7,9 , 8,4,10 write(u,*)9,4,10 , 8,5,10 , 9,5,10 , 8,4,11 , 9,4,11 , 8,5,11 , 9,5,11 , 10,4,10 write(u,*)11,4,10 , 10,5,10 , 11,5,10 , 10,4,11 , 11,4,11 , 10,5,11 , 11,5,11 , 8,6,10 write(u,*)9,6,10 , 8,7,10 , 9,7,10 , 8,6,11 , 9,6,11 , 8,7,11 , 9,7,11 , 10,6,10 write(u,*)11,6,10 , 10,7,10 , 11,7,10 , 10,6,11 , 11,6,11 , 10,7,11 , 11,7,11 , 12,4,8 write(u,*)13,4,8 , 12,5,8 , 13,5,8 , 12,4,9 , 13,4,9 , 12,5,9 , 13,5,9 , 14,4,8 write(u,*)15,4,8 , 14,5,8 , 15,5,8 , 14,4,9 , 15,4,9 , 14,5,9 , 15,5,9 , 12,6,8 write(u,*)13,6,8 , 12,7,8 , 13,7,8 , 12,6,9 , 13,6,9 , 12,7,9 , 13,7,9 , 14,6,8 write(u,*)15,6,8 , 14,7,8 , 15,7,8 , 14,6,9 , 15,6,9 , 14,7,9 , 15,7,9 , 12,4,10 write(u,*)13,4,10 , 12,5,10 , 13,5,10 , 12,4,11 , 13,4,11 , 12,5,11 , 13,5,11 , 14,4,10 write(u,*)15,4,10 , 14,5,10 , 15,5,10 , 14,4,11 , 15,4,11 , 14,5,11 , 15,5,11 , 12,6,10 write(u,*)13,6,10 , 12,7,10 , 13,7,10 , 12,6,11 , 13,6,11 , 12,7,11 , 13,7,11 , 14,6,10 write(u,*)15,6,10 , 14,7,10 , 15,7,10 , 14,6,11 , 15,6,11 , 14,7,11 , 15,7,11 , 8,0,12 write(u,*)9,0,12 , 8,1,12 , 9,1,12 , 8,0,13 , 9,0,13 , 8,1,13 , 9,1,13 , 10,0,12 write(u,*)11,0,12 , 10,1,12 , 11,1,12 , 10,0,13 , 11,0,13 , 10,1,13 , 11,1,13 , 8,2,12 write(u,*)9,2,12 , 8,3,12 , 9,3,12 , 8,2,13 , 9,2,13 , 8,3,13 , 9,3,13 , 10,2,12 write(u,*)11,2,12 , 10,3,12 , 11,3,12 , 10,2,13 , 11,2,13 , 10,3,13 , 11,3,13 , 8,0,14 write(u,*)9,0,14 , 8,1,14 , 9,1,14 , 8,0,15 , 9,0,15 , 8,1,15 , 9,1,15 , 10,0,14 write(u,*)11,0,14 , 10,1,14 , 11,1,14 , 10,0,15 , 11,0,15 , 10,1,15 , 11,1,15 , 8,2,14 write(u,*)9,2,14 , 8,3,14 , 9,3,14 , 8,2,15 , 9,2,15 , 8,3,15 , 9,3,15 , 10,2,14 write(u,*)11,2,14 , 10,3,14 , 11,3,14 , 10,2,15 , 11,2,15 , 10,3,15 , 11,3,15 , 12,0,12 write(u,*)13,0,12 , 12,1,12 , 13,1,12 , 12,0,13 , 13,0,13 , 12,1,13 , 13,1,13 , 14,0,12 write(u,*)15,0,12 , 14,1,12 , 15,1,12 , 14,0,13 , 15,0,13 , 14,1,13 , 15,1,13 , 12,2,12 write(u,*)13,2,12 , 12,3,12 , 13,3,12 , 12,2,13 , 13,2,13 , 12,3,13 , 13,3,13 , 14,2,12 write(u,*)15,2,12 , 14,3,12 , 15,3,12 , 14,2,13 , 15,2,13 , 14,3,13 , 15,3,13 , 12,0,14 write(u,*)13,0,14 , 12,1,14 , 13,1,14 , 12,0,15 , 13,0,15 , 12,1,15 , 13,1,15 , 14,0,14 write(u,*)15,0,14 , 14,1,14 , 15,1,14 , 14,0,15 , 15,0,15 , 14,1,15 , 15,1,15 , 12,2,14 write(u,*)13,2,14 , 12,3,14 , 13,3,14 , 12,2,15 , 13,2,15 , 12,3,15 , 13,3,15 , 14,2,14 write(u,*)15,2,14 , 14,3,14 , 15,3,14 , 14,2,15 , 15,2,15 , 14,3,15 , 15,3,15 , 8,4,12 write(u,*)9,4,12 , 8,5,12 , 9,5,12 , 8,4,13 , 9,4,13 , 8,5,13 , 9,5,13 , 10,4,12 write(u,*)11,4,12 , 10,5,12 , 11,5,12 , 10,4,13 , 11,4,13 , 10,5,13 , 11,5,13 , 8,6,12 write(u,*)9,6,12 , 8,7,12 , 9,7,12 , 8,6,13 , 9,6,13 , 8,7,13 , 9,7,13 , 10,6,12 write(u,*)11,6,12 , 10,7,12 , 11,7,12 , 10,6,13 , 11,6,13 , 10,7,13 , 11,7,13 , 8,4,14 write(u,*)9,4,14 , 8,5,14 , 9,5,14 , 8,4,15 , 9,4,15 , 8,5,15 , 9,5,15 , 10,4,14 write(u,*)11,4,14 , 10,5,14 , 11,5,14 , 10,4,15 , 11,4,15 , 10,5,15 , 11,5,15 , 8,6,14 write(u,*)9,6,14 , 8,7,14 , 9,7,14 , 8,6,15 , 9,6,15 , 8,7,15 , 9,7,15 , 10,6,14 write(u,*)11,6,14 , 10,7,14 , 11,7,14 , 10,6,15 , 11,6,15 , 10,7,15 , 11,7,15 , 12,4,12 write(u,*)13,4,12 , 12,5,12 , 13,5,12 , 12,4,13 , 13,4,13 , 12,5,13 , 13,5,13 , 14,4,12 write(u,*)15,4,12 , 14,5,12 , 15,5,12 , 14,4,13 , 15,4,13 , 14,5,13 , 15,5,13 , 12,6,12 write(u,*)13,6,12 , 12,7,12 , 13,7,12 , 12,6,13 , 13,6,13 , 12,7,13 , 13,7,13 , 14,6,12 write(u,*)15,6,12 , 14,7,12 , 15,7,12 , 14,6,13 , 15,6,13 , 14,7,13 , 15,7,13 , 12,4,14 write(u,*)13,4,14 , 12,5,14 , 13,5,14 , 12,4,15 , 13,4,15 , 12,5,15 , 13,5,15 , 14,4,14 write(u,*)15,4,14 , 14,5,14 , 15,5,14 , 14,4,15 , 15,4,15 , 14,5,15 , 15,5,15 , 12,6,14 write(u,*)13,6,14 , 12,7,14 , 13,7,14 , 12,6,15 , 13,6,15 , 12,7,15 , 13,7,15 , 14,6,14 write(u,*)15,6,14 , 14,7,14 , 15,7,14 , 14,6,15 , 15,6,15 , 14,7,15 , 15,7,15 , 0,8,8 write(u,*)1,8,8 , 0,9,8 , 1,9,8 , 0,8,9 , 1,8,9 , 0,9,9 , 1,9,9 , 2,8,8 write(u,*)3,8,8 , 2,9,8 , 3,9,8 , 2,8,9 , 3,8,9 , 2,9,9 , 3,9,9 , 0,10,8 write(u,*)1,10,8 , 0,11,8 , 1,11,8 , 0,10,9 , 1,10,9 , 0,11,9 , 1,11,9 , 2,10,8 write(u,*)3,10,8 , 2,11,8 , 3,11,8 , 2,10,9 , 3,10,9 , 2,11,9 , 3,11,9 , 0,8,10 write(u,*)1,8,10 , 0,9,10 , 1,9,10 , 0,8,11 , 1,8,11 , 0,9,11 , 1,9,11 , 2,8,10 write(u,*)3,8,10 , 2,9,10 , 3,9,10 , 2,8,11 , 3,8,11 , 2,9,11 , 3,9,11 , 0,10,10 write(u,*)1,10,10 , 0,11,10 , 1,11,10 , 0,10,11 , 1,10,11 , 0,11,11 , 1,11,11 , 2,10,10 write(u,*)3,10,10 , 2,11,10 , 3,11,10 , 2,10,11 , 3,10,11 , 2,11,11 , 3,11,11 , 4,8,8 write(u,*)5,8,8 , 4,9,8 , 5,9,8 , 4,8,9 , 5,8,9 , 4,9,9 , 5,9,9 , 6,8,8 write(u,*)7,8,8 , 6,9,8 , 7,9,8 , 6,8,9 , 7,8,9 , 6,9,9 , 7,9,9 , 4,10,8 write(u,*)5,10,8 , 4,11,8 , 5,11,8 , 4,10,9 , 5,10,9 , 4,11,9 , 5,11,9 , 6,10,8 write(u,*)7,10,8 , 6,11,8 , 7,11,8 , 6,10,9 , 7,10,9 , 6,11,9 , 7,11,9 , 4,8,10 write(u,*)5,8,10 , 4,9,10 , 5,9,10 , 4,8,11 , 5,8,11 , 4,9,11 , 5,9,11 , 6,8,10 write(u,*)7,8,10 , 6,9,10 , 7,9,10 , 6,8,11 , 7,8,11 , 6,9,11 , 7,9,11 , 4,10,10 write(u,*)5,10,10 , 4,11,10 , 5,11,10 , 4,10,11 , 5,10,11 , 4,11,11 , 5,11,11 , 6,10,10 write(u,*)7,10,10 , 6,11,10 , 7,11,10 , 6,10,11 , 7,10,11 , 6,11,11 , 7,11,11 , 0,12,8 write(u,*)1,12,8 , 0,13,8 , 1,13,8 , 0,12,9 , 1,12,9 , 0,13,9 , 1,13,9 , 2,12,8 write(u,*)3,12,8 , 2,13,8 , 3,13,8 , 2,12,9 , 3,12,9 , 2,13,9 , 3,13,9 , 0,14,8 write(u,*)1,14,8 , 0,15,8 , 1,15,8 , 0,14,9 , 1,14,9 , 0,15,9 , 1,15,9 , 2,14,8 write(u,*)3,14,8 , 2,15,8 , 3,15,8 , 2,14,9 , 3,14,9 , 2,15,9 , 3,15,9 , 0,12,10 write(u,*)1,12,10 , 0,13,10 , 1,13,10 , 0,12,11 , 1,12,11 , 0,13,11 , 1,13,11 , 2,12,10 write(u,*)3,12,10 , 2,13,10 , 3,13,10 , 2,12,11 , 3,12,11 , 2,13,11 , 3,13,11 , 0,14,10 write(u,*)1,14,10 , 0,15,10 , 1,15,10 , 0,14,11 , 1,14,11 , 0,15,11 , 1,15,11 , 2,14,10 write(u,*)3,14,10 , 2,15,10 , 3,15,10 , 2,14,11 , 3,14,11 , 2,15,11 , 3,15,11 , 4,12,8 write(u,*)5,12,8 , 4,13,8 , 5,13,8 , 4,12,9 , 5,12,9 , 4,13,9 , 5,13,9 , 6,12,8 write(u,*)7,12,8 , 6,13,8 , 7,13,8 , 6,12,9 , 7,12,9 , 6,13,9 , 7,13,9 , 4,14,8 write(u,*)5,14,8 , 4,15,8 , 5,15,8 , 4,14,9 , 5,14,9 , 4,15,9 , 5,15,9 , 6,14,8 write(u,*)7,14,8 , 6,15,8 , 7,15,8 , 6,14,9 , 7,14,9 , 6,15,9 , 7,15,9 , 4,12,10 write(u,*)5,12,10 , 4,13,10 , 5,13,10 , 4,12,11 , 5,12,11 , 4,13,11 , 5,13,11 , 6,12,10 write(u,*)7,12,10 , 6,13,10 , 7,13,10 , 6,12,11 , 7,12,11 , 6,13,11 , 7,13,11 , 4,14,10 write(u,*)5,14,10 , 4,15,10 , 5,15,10 , 4,14,11 , 5,14,11 , 4,15,11 , 5,15,11 , 6,14,10 write(u,*)7,14,10 , 6,15,10 , 7,15,10 , 6,14,11 , 7,14,11 , 6,15,11 , 7,15,11 , 0,8,12 write(u,*)1,8,12 , 0,9,12 , 1,9,12 , 0,8,13 , 1,8,13 , 0,9,13 , 1,9,13 , 2,8,12 write(u,*)3,8,12 , 2,9,12 , 3,9,12 , 2,8,13 , 3,8,13 , 2,9,13 , 3,9,13 , 0,10,12 write(u,*)1,10,12 , 0,11,12 , 1,11,12 , 0,10,13 , 1,10,13 , 0,11,13 , 1,11,13 , 2,10,12 write(u,*)3,10,12 , 2,11,12 , 3,11,12 , 2,10,13 , 3,10,13 , 2,11,13 , 3,11,13 , 0,8,14 write(u,*)1,8,14 , 0,9,14 , 1,9,14 , 0,8,15 , 1,8,15 , 0,9,15 , 1,9,15 , 2,8,14 write(u,*)3,8,14 , 2,9,14 , 3,9,14 , 2,8,15 , 3,8,15 , 2,9,15 , 3,9,15 , 0,10,14 write(u,*)1,10,14 , 0,11,14 , 1,11,14 , 0,10,15 , 1,10,15 , 0,11,15 , 1,11,15 , 2,10,14 write(u,*)3,10,14 , 2,11,14 , 3,11,14 , 2,10,15 , 3,10,15 , 2,11,15 , 3,11,15 , 4,8,12 write(u,*)5,8,12 , 4,9,12 , 5,9,12 , 4,8,13 , 5,8,13 , 4,9,13 , 5,9,13 , 6,8,12 write(u,*)7,8,12 , 6,9,12 , 7,9,12 , 6,8,13 , 7,8,13 , 6,9,13 , 7,9,13 , 4,10,12 write(u,*)5,10,12 , 4,11,12 , 5,11,12 , 4,10,13 , 5,10,13 , 4,11,13 , 5,11,13 , 6,10,12 write(u,*)7,10,12 , 6,11,12 , 7,11,12 , 6,10,13 , 7,10,13 , 6,11,13 , 7,11,13 , 4,8,14 write(u,*)5,8,14 , 4,9,14 , 5,9,14 , 4,8,15 , 5,8,15 , 4,9,15 , 5,9,15 , 6,8,14 write(u,*)7,8,14 , 6,9,14 , 7,9,14 , 6,8,15 , 7,8,15 , 6,9,15 , 7,9,15 , 4,10,14 write(u,*)5,10,14 , 4,11,14 , 5,11,14 , 4,10,15 , 5,10,15 , 4,11,15 , 5,11,15 , 6,10,14 write(u,*)7,10,14 , 6,11,14 , 7,11,14 , 6,10,15 , 7,10,15 , 6,11,15 , 7,11,15 , 0,12,12 write(u,*)1,12,12 , 0,13,12 , 1,13,12 , 0,12,13 , 1,12,13 , 0,13,13 , 1,13,13 , 2,12,12 write(u,*)3,12,12 , 2,13,12 , 3,13,12 , 2,12,13 , 3,12,13 , 2,13,13 , 3,13,13 , 0,14,12 write(u,*)1,14,12 , 0,15,12 , 1,15,12 , 0,14,13 , 1,14,13 , 0,15,13 , 1,15,13 , 2,14,12 write(u,*)3,14,12 , 2,15,12 , 3,15,12 , 2,14,13 , 3,14,13 , 2,15,13 , 3,15,13 , 0,12,14 write(u,*)1,12,14 , 0,13,14 , 1,13,14 , 0,12,15 , 1,12,15 , 0,13,15 , 1,13,15 , 2,12,14 write(u,*)3,12,14 , 2,13,14 , 3,13,14 , 2,12,15 , 3,12,15 , 2,13,15 , 3,13,15 , 0,14,14 write(u,*)1,14,14 , 0,15,14 , 1,15,14 , 0,14,15 , 1,14,15 , 0,15,15 , 1,15,15 , 2,14,14 write(u,*)3,14,14 , 2,15,14 , 3,15,14 , 2,14,15 , 3,14,15 , 2,15,15 , 3,15,15 , 4,12,12 write(u,*)5,12,12 , 4,13,12 , 5,13,12 , 4,12,13 , 5,12,13 , 4,13,13 , 5,13,13 , 6,12,12 write(u,*)7,12,12 , 6,13,12 , 7,13,12 , 6,12,13 , 7,12,13 , 6,13,13 , 7,13,13 , 4,14,12 write(u,*)5,14,12 , 4,15,12 , 5,15,12 , 4,14,13 , 5,14,13 , 4,15,13 , 5,15,13 , 6,14,12 write(u,*)7,14,12 , 6,15,12 , 7,15,12 , 6,14,13 , 7,14,13 , 6,15,13 , 7,15,13 , 4,12,14 write(u,*)5,12,14 , 4,13,14 , 5,13,14 , 4,12,15 , 5,12,15 , 4,13,15 , 5,13,15 , 6,12,14 write(u,*)7,12,14 , 6,13,14 , 7,13,14 , 6,12,15 , 7,12,15 , 6,13,15 , 7,13,15 , 4,14,14 write(u,*)5,14,14 , 4,15,14 , 5,15,14 , 4,14,15 , 5,14,15 , 4,15,15 , 5,15,15 , 6,14,14 write(u,*)7,14,14 , 6,15,14 , 7,15,14 , 6,14,15 , 7,14,15 , 6,15,15 , 7,15,15 , 8,8,8 write(u,*)9,8,8 , 8,9,8 , 9,9,8 , 8,8,9 , 9,8,9 , 8,9,9 , 9,9,9 , 10,8,8 write(u,*)11,8,8 , 10,9,8 , 11,9,8 , 10,8,9 , 11,8,9 , 10,9,9 , 11,9,9 , 8,10,8 write(u,*)9,10,8 , 8,11,8 , 9,11,8 , 8,10,9 , 9,10,9 , 8,11,9 , 9,11,9 , 10,10,8 write(u,*)11,10,8 , 10,11,8 , 11,11,8 , 10,10,9 , 11,10,9 , 10,11,9 , 11,11,9 , 8,8,10 write(u,*)9,8,10 , 8,9,10 , 9,9,10 , 8,8,11 , 9,8,11 , 8,9,11 , 9,9,11 , 10,8,10 write(u,*)11,8,10 , 10,9,10 , 11,9,10 , 10,8,11 , 11,8,11 , 10,9,11 , 11,9,11 , 8,10,10 write(u,*)9,10,10 , 8,11,10 , 9,11,10 , 8,10,11 , 9,10,11 , 8,11,11 , 9,11,11 , 10,10,10 write(u,*)11,10,10 , 10,11,10 , 11,11,10 , 10,10,11 , 11,10,11 , 10,11,11 , 11,11,11 , 12,8,8 write(u,*)13,8,8 , 12,9,8 , 13,9,8 , 12,8,9 , 13,8,9 , 12,9,9 , 13,9,9 , 14,8,8 write(u,*)15,8,8 , 14,9,8 , 15,9,8 , 14,8,9 , 15,8,9 , 14,9,9 , 15,9,9 , 12,10,8 write(u,*)13,10,8 , 12,11,8 , 13,11,8 , 12,10,9 , 13,10,9 , 12,11,9 , 13,11,9 , 14,10,8 write(u,*)15,10,8 , 14,11,8 , 15,11,8 , 14,10,9 , 15,10,9 , 14,11,9 , 15,11,9 , 12,8,10 write(u,*)13,8,10 , 12,9,10 , 13,9,10 , 12,8,11 , 13,8,11 , 12,9,11 , 13,9,11 , 14,8,10 write(u,*)15,8,10 , 14,9,10 , 15,9,10 , 14,8,11 , 15,8,11 , 14,9,11 , 15,9,11 , 12,10,10 write(u,*)13,10,10 , 12,11,10 , 13,11,10 , 12,10,11 , 13,10,11 , 12,11,11 , 13,11,11 , 14,10,10 write(u,*)15,10,10 , 14,11,10 , 15,11,10 , 14,10,11 , 15,10,11 , 14,11,11 , 15,11,11 , 8,12,8 write(u,*)9,12,8 , 8,13,8 , 9,13,8 , 8,12,9 , 9,12,9 , 8,13,9 , 9,13,9 , 10,12,8 write(u,*)11,12,8 , 10,13,8 , 11,13,8 , 10,12,9 , 11,12,9 , 10,13,9 , 11,13,9 , 8,14,8 write(u,*)9,14,8 , 8,15,8 , 9,15,8 , 8,14,9 , 9,14,9 , 8,15,9 , 9,15,9 , 10,14,8 write(u,*)11,14,8 , 10,15,8 , 11,15,8 , 10,14,9 , 11,14,9 , 10,15,9 , 11,15,9 , 8,12,10 write(u,*)9,12,10 , 8,13,10 , 9,13,10 , 8,12,11 , 9,12,11 , 8,13,11 , 9,13,11 , 10,12,10 write(u,*)11,12,10 , 10,13,10 , 11,13,10 , 10,12,11 , 11,12,11 , 10,13,11 , 11,13,11 , 8,14,10 write(u,*)9,14,10 , 8,15,10 , 9,15,10 , 8,14,11 , 9,14,11 , 8,15,11 , 9,15,11 , 10,14,10 write(u,*)11,14,10 , 10,15,10 , 11,15,10 , 10,14,11 , 11,14,11 , 10,15,11 , 11,15,11 , 12,12,8 write(u,*)13,12,8 , 12,13,8 , 13,13,8 , 12,12,9 , 13,12,9 , 12,13,9 , 13,13,9 , 14,12,8 write(u,*)15,12,8 , 14,13,8 , 15,13,8 , 14,12,9 , 15,12,9 , 14,13,9 , 15,13,9 , 12,14,8 write(u,*)13,14,8 , 12,15,8 , 13,15,8 , 12,14,9 , 13,14,9 , 12,15,9 , 13,15,9 , 14,14,8 write(u,*)15,14,8 , 14,15,8 , 15,15,8 , 14,14,9 , 15,14,9 , 14,15,9 , 15,15,9 , 12,12,10 write(u,*)13,12,10 , 12,13,10 , 13,13,10 , 12,12,11 , 13,12,11 , 12,13,11 , 13,13,11 , 14,12,10 write(u,*)15,12,10 , 14,13,10 , 15,13,10 , 14,12,11 , 15,12,11 , 14,13,11 , 15,13,11 , 12,14,10 write(u,*)13,14,10 , 12,15,10 , 13,15,10 , 12,14,11 , 13,14,11 , 12,15,11 , 13,15,11 , 14,14,10 write(u,*)15,14,10 , 14,15,10 , 15,15,10 , 14,14,11 , 15,14,11 , 14,15,11 , 15,15,11 , 8,8,12 write(u,*)9,8,12 , 8,9,12 , 9,9,12 , 8,8,13 , 9,8,13 , 8,9,13 , 9,9,13 , 10,8,12 write(u,*)11,8,12 , 10,9,12 , 11,9,12 , 10,8,13 , 11,8,13 , 10,9,13 , 11,9,13 , 8,10,12 write(u,*)9,10,12 , 8,11,12 , 9,11,12 , 8,10,13 , 9,10,13 , 8,11,13 , 9,11,13 , 10,10,12 write(u,*)11,10,12 , 10,11,12 , 11,11,12 , 10,10,13 , 11,10,13 , 10,11,13 , 11,11,13 , 8,8,14 write(u,*)9,8,14 , 8,9,14 , 9,9,14 , 8,8,15 , 9,8,15 , 8,9,15 , 9,9,15 , 10,8,14 write(u,*)11,8,14 , 10,9,14 , 11,9,14 , 10,8,15 , 11,8,15 , 10,9,15 , 11,9,15 , 8,10,14 write(u,*)9,10,14 , 8,11,14 , 9,11,14 , 8,10,15 , 9,10,15 , 8,11,15 , 9,11,15 , 10,10,14 write(u,*)11,10,14 , 10,11,14 , 11,11,14 , 10,10,15 , 11,10,15 , 10,11,15 , 11,11,15 , 12,8,12 write(u,*)13,8,12 , 12,9,12 , 13,9,12 , 12,8,13 , 13,8,13 , 12,9,13 , 13,9,13 , 14,8,12 write(u,*)15,8,12 , 14,9,12 , 15,9,12 , 14,8,13 , 15,8,13 , 14,9,13 , 15,9,13 , 12,10,12 write(u,*)13,10,12 , 12,11,12 , 13,11,12 , 12,10,13 , 13,10,13 , 12,11,13 , 13,11,13 , 14,10,12 write(u,*)15,10,12 , 14,11,12 , 15,11,12 , 14,10,13 , 15,10,13 , 14,11,13 , 15,11,13 , 12,8,14 write(u,*)13,8,14 , 12,9,14 , 13,9,14 , 12,8,15 , 13,8,15 , 12,9,15 , 13,9,15 , 14,8,14 write(u,*)15,8,14 , 14,9,14 , 15,9,14 , 14,8,15 , 15,8,15 , 14,9,15 , 15,9,15 , 12,10,14 write(u,*)13,10,14 , 12,11,14 , 13,11,14 , 12,10,15 , 13,10,15 , 12,11,15 , 13,11,15 , 14,10,14 write(u,*)15,10,14 , 14,11,14 , 15,11,14 , 14,10,15 , 15,10,15 , 14,11,15 , 15,11,15 , 8,12,12 write(u,*)9,12,12 , 8,13,12 , 9,13,12 , 8,12,13 , 9,12,13 , 8,13,13 , 9,13,13 , 10,12,12 write(u,*)11,12,12 , 10,13,12 , 11,13,12 , 10,12,13 , 11,12,13 , 10,13,13 , 11,13,13 , 8,14,12 write(u,*)9,14,12 , 8,15,12 , 9,15,12 , 8,14,13 , 9,14,13 , 8,15,13 , 9,15,13 , 10,14,12 write(u,*)11,14,12 , 10,15,12 , 11,15,12 , 10,14,13 , 11,14,13 , 10,15,13 , 11,15,13 , 8,12,14 write(u,*)9,12,14 , 8,13,14 , 9,13,14 , 8,12,15 , 9,12,15 , 8,13,15 , 9,13,15 , 10,12,14 write(u,*)11,12,14 , 10,13,14 , 11,13,14 , 10,12,15 , 11,12,15 , 10,13,15 , 11,13,15 , 8,14,14 write(u,*)9,14,14 , 8,15,14 , 9,15,14 , 8,14,15 , 9,14,15 , 8,15,15 , 9,15,15 , 10,14,14 write(u,*)11,14,14 , 10,15,14 , 11,15,14 , 10,14,15 , 11,14,15 , 10,15,15 , 11,15,15 , 12,12,12 write(u,*)13,12,12 , 12,13,12 , 13,13,12 , 12,12,13 , 13,12,13 , 12,13,13 , 13,13,13 , 14,12,12 write(u,*)15,12,12 , 14,13,12 , 15,13,12 , 14,12,13 , 15,12,13 , 14,13,13 , 15,13,13 , 12,14,12 write(u,*)13,14,12 , 12,15,12 , 13,15,12 , 12,14,13 , 13,14,13 , 12,15,13 , 13,15,13 , 14,14,12 write(u,*)15,14,12 , 14,15,12 , 15,15,12 , 14,14,13 , 15,14,13 , 14,15,13 , 15,15,13 , 12,12,14 write(u,*)13,12,14 , 12,13,14 , 13,13,14 , 12,12,15 , 13,12,15 , 12,13,15 , 13,13,15 , 14,12,14 write(u,*)15,12,14 , 14,13,14 , 15,13,14 , 14,12,15 , 15,12,15 , 14,13,15 , 15,13,15 , 12,14,14 write(u,*)13,14,14 , 12,15,14 , 13,15,14 , 12,14,15 , 13,14,15 , 12,15,15 , 13,15,15 , 14,14,14 write(u,*)15,14,14 , 14,15,14 , 15,15,14 , 14,14,15 , 15,14,15 , 14,15,15 , 15,15,15 rewind(u) !--------------------------------------------------------------------------------------------------------------------------------- endsubroutine create_indexes_file endprogram mortif_test_correctness