test_senc3d_some_triangles.c (41510B)
1 /* Copyright (C) 2018-2020, 2023, 2024 |Méso|Star> (contact@meso-star.com) 2 * 3 * This program is free software: you can redistribute it and/or modify 4 * it under the terms of the GNU General Public License as published by 5 * the Free Software Foundation, either version 3 of the License, or 6 * (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. */ 15 16 /* This test has been created using the sg3_geometry_dump_as_C_code feature 17 * of star-geometry. It uses output from test_sg3_some_triangles. 18 * This test is similar to test_senc3d_many_triangles that creates a huge 19 * geometry by program. */ 20 21 #include "senc3d.h" 22 #include "test_senc3d_utils.h" 23 24 #include <rsys/double3.h> 25 26 /* Dump of star-geometry 'some_triangles'. */ 27 static const unsigned some_triangles_vertices_count = 536; 28 static const double some_triangles_vertices[1608] = 29 { 30 1, 0, -1, 31 1, 0, -0.8, 32 1, 0, -0.6, 33 1, 0, -0.4, 34 1, 0, -0.2, 35 1, 0, -5.55112e-17, 36 1, 0, 0.2, 37 1, 0, 0.4, 38 1, 0, 0.6, 39 1, 0, 0.8, 40 1, 0, 1, 41 0.866025, 0.5, -1, 42 0.866025, 0.5, -0.8, 43 0.866025, 0.5, -0.6, 44 0.866025, 0.5, -0.4, 45 0.866025, 0.5, -0.2, 46 0.866025, 0.5, -5.55112e-17, 47 0.866025, 0.5, 0.2, 48 0.866025, 0.5, 0.4, 49 0.866025, 0.5, 0.6, 50 0.866025, 0.5, 0.8, 51 0.866025, 0.5, 1, 52 0.5, 0.866025, -1, 53 0.5, 0.866025, -0.8, 54 0.5, 0.866025, -0.6, 55 0.5, 0.866025, -0.4, 56 0.5, 0.866025, -0.2, 57 0.5, 0.866025, -5.55112e-17, 58 0.5, 0.866025, 0.2, 59 0.5, 0.866025, 0.4, 60 0.5, 0.866025, 0.6, 61 0.5, 0.866025, 0.8, 62 0.5, 0.866025, 1, 63 6.12323e-17, 1, -1, 64 6.12323e-17, 1, -0.8, 65 6.12323e-17, 1, -0.6, 66 6.12323e-17, 1, -0.4, 67 6.12323e-17, 1, -0.2, 68 6.12323e-17, 1, -5.55112e-17, 69 6.12323e-17, 1, 0.2, 70 6.12323e-17, 1, 0.4, 71 6.12323e-17, 1, 0.6, 72 6.12323e-17, 1, 0.8, 73 6.12323e-17, 1, 1, 74 -0.5, 0.866025, -1, 75 -0.5, 0.866025, -0.8, 76 -0.5, 0.866025, -0.6, 77 -0.5, 0.866025, -0.4, 78 -0.5, 0.866025, -0.2, 79 -0.5, 0.866025, -5.55112e-17, 80 -0.5, 0.866025, 0.2, 81 -0.5, 0.866025, 0.4, 82 -0.5, 0.866025, 0.6, 83 -0.5, 0.866025, 0.8, 84 -0.5, 0.866025, 1, 85 -0.866025, 0.5, -1, 86 -0.866025, 0.5, -0.8, 87 -0.866025, 0.5, -0.6, 88 -0.866025, 0.5, -0.4, 89 -0.866025, 0.5, -0.2, 90 -0.866025, 0.5, -5.55112e-17, 91 -0.866025, 0.5, 0.2, 92 -0.866025, 0.5, 0.4, 93 -0.866025, 0.5, 0.6, 94 -0.866025, 0.5, 0.8, 95 -0.866025, 0.5, 1, 96 -1, 1.22465e-16, -1, 97 -1, 1.22465e-16, -0.8, 98 -1, 1.22465e-16, -0.6, 99 -1, 1.22465e-16, -0.4, 100 -1, 1.22465e-16, -0.2, 101 -1, 1.22465e-16, -5.55112e-17, 102 -1, 1.22465e-16, 0.2, 103 -1, 1.22465e-16, 0.4, 104 -1, 1.22465e-16, 0.6, 105 -1, 1.22465e-16, 0.8, 106 -1, 1.22465e-16, 1, 107 -0.866025, -0.5, -1, 108 -0.866025, -0.5, -0.8, 109 -0.866025, -0.5, -0.6, 110 -0.866025, -0.5, -0.4, 111 -0.866025, -0.5, -0.2, 112 -0.866025, -0.5, -5.55112e-17, 113 -0.866025, -0.5, 0.2, 114 -0.866025, -0.5, 0.4, 115 -0.866025, -0.5, 0.6, 116 -0.866025, -0.5, 0.8, 117 -0.866025, -0.5, 1, 118 -0.5, -0.866025, -1, 119 -0.5, -0.866025, -0.8, 120 -0.5, -0.866025, -0.6, 121 -0.5, -0.866025, -0.4, 122 -0.5, -0.866025, -0.2, 123 -0.5, -0.866025, -5.55112e-17, 124 -0.5, -0.866025, 0.2, 125 -0.5, -0.866025, 0.4, 126 -0.5, -0.866025, 0.6, 127 -0.5, -0.866025, 0.8, 128 -0.5, -0.866025, 1, 129 -1.83697e-16, -1, -1, 130 -1.83697e-16, -1, -0.8, 131 -1.83697e-16, -1, -0.6, 132 -1.83697e-16, -1, -0.4, 133 -1.83697e-16, -1, -0.2, 134 -1.83697e-16, -1, -5.55112e-17, 135 -1.83697e-16, -1, 0.2, 136 -1.83697e-16, -1, 0.4, 137 -1.83697e-16, -1, 0.6, 138 -1.83697e-16, -1, 0.8, 139 -1.83697e-16, -1, 1, 140 0.5, -0.866025, -1, 141 0.5, -0.866025, -0.8, 142 0.5, -0.866025, -0.6, 143 0.5, -0.866025, -0.4, 144 0.5, -0.866025, -0.2, 145 0.5, -0.866025, -5.55112e-17, 146 0.5, -0.866025, 0.2, 147 0.5, -0.866025, 0.4, 148 0.5, -0.866025, 0.6, 149 0.5, -0.866025, 0.8, 150 0.5, -0.866025, 1, 151 0.866025, -0.5, -1, 152 0.866025, -0.5, -0.8, 153 0.866025, -0.5, -0.6, 154 0.866025, -0.5, -0.4, 155 0.866025, -0.5, -0.2, 156 0.866025, -0.5, -5.55112e-17, 157 0.866025, -0.5, 0.2, 158 0.866025, -0.5, 0.4, 159 0.866025, -0.5, 0.6, 160 0.866025, -0.5, 0.8, 161 0.866025, -0.5, 1, 162 0, 0, -1, 163 0, 0, 1, 164 1, 0, 9, 165 1, 0, 9.2, 166 1, 0, 9.4, 167 1, 0, 9.6, 168 1, 0, 9.8, 169 1, 0, 10, 170 1, 0, 10.2, 171 1, 0, 10.4, 172 1, 0, 10.6, 173 1, 0, 10.8, 174 1, 0, 11, 175 0.866025, 0.5, 9, 176 0.866025, 0.5, 9.2, 177 0.866025, 0.5, 9.4, 178 0.866025, 0.5, 9.6, 179 0.866025, 0.5, 9.8, 180 0.866025, 0.5, 10, 181 0.866025, 0.5, 10.2, 182 0.866025, 0.5, 10.4, 183 0.866025, 0.5, 10.6, 184 0.866025, 0.5, 10.8, 185 0.866025, 0.5, 11, 186 0.5, 0.866025, 9, 187 0.5, 0.866025, 9.2, 188 0.5, 0.866025, 9.4, 189 0.5, 0.866025, 9.6, 190 0.5, 0.866025, 9.8, 191 0.5, 0.866025, 10, 192 0.5, 0.866025, 10.2, 193 0.5, 0.866025, 10.4, 194 0.5, 0.866025, 10.6, 195 0.5, 0.866025, 10.8, 196 0.5, 0.866025, 11, 197 6.12323e-17, 1, 9, 198 6.12323e-17, 1, 9.2, 199 6.12323e-17, 1, 9.4, 200 6.12323e-17, 1, 9.6, 201 6.12323e-17, 1, 9.8, 202 6.12323e-17, 1, 10, 203 6.12323e-17, 1, 10.2, 204 6.12323e-17, 1, 10.4, 205 6.12323e-17, 1, 10.6, 206 6.12323e-17, 1, 10.8, 207 6.12323e-17, 1, 11, 208 -0.5, 0.866025, 9, 209 -0.5, 0.866025, 9.2, 210 -0.5, 0.866025, 9.4, 211 -0.5, 0.866025, 9.6, 212 -0.5, 0.866025, 9.8, 213 -0.5, 0.866025, 10, 214 -0.5, 0.866025, 10.2, 215 -0.5, 0.866025, 10.4, 216 -0.5, 0.866025, 10.6, 217 -0.5, 0.866025, 10.8, 218 -0.5, 0.866025, 11, 219 -0.866025, 0.5, 9, 220 -0.866025, 0.5, 9.2, 221 -0.866025, 0.5, 9.4, 222 -0.866025, 0.5, 9.6, 223 -0.866025, 0.5, 9.8, 224 -0.866025, 0.5, 10, 225 -0.866025, 0.5, 10.2, 226 -0.866025, 0.5, 10.4, 227 -0.866025, 0.5, 10.6, 228 -0.866025, 0.5, 10.8, 229 -0.866025, 0.5, 11, 230 -1, 1.22465e-16, 9, 231 -1, 1.22465e-16, 9.2, 232 -1, 1.22465e-16, 9.4, 233 -1, 1.22465e-16, 9.6, 234 -1, 1.22465e-16, 9.8, 235 -1, 1.22465e-16, 10, 236 -1, 1.22465e-16, 10.2, 237 -1, 1.22465e-16, 10.4, 238 -1, 1.22465e-16, 10.6, 239 -1, 1.22465e-16, 10.8, 240 -1, 1.22465e-16, 11, 241 -0.866025, -0.5, 9, 242 -0.866025, -0.5, 9.2, 243 -0.866025, -0.5, 9.4, 244 -0.866025, -0.5, 9.6, 245 -0.866025, -0.5, 9.8, 246 -0.866025, -0.5, 10, 247 -0.866025, -0.5, 10.2, 248 -0.866025, -0.5, 10.4, 249 -0.866025, -0.5, 10.6, 250 -0.866025, -0.5, 10.8, 251 -0.866025, -0.5, 11, 252 -0.5, -0.866025, 9, 253 -0.5, -0.866025, 9.2, 254 -0.5, -0.866025, 9.4, 255 -0.5, -0.866025, 9.6, 256 -0.5, -0.866025, 9.8, 257 -0.5, -0.866025, 10, 258 -0.5, -0.866025, 10.2, 259 -0.5, -0.866025, 10.4, 260 -0.5, -0.866025, 10.6, 261 -0.5, -0.866025, 10.8, 262 -0.5, -0.866025, 11, 263 -1.83697e-16, -1, 9, 264 -1.83697e-16, -1, 9.2, 265 -1.83697e-16, -1, 9.4, 266 -1.83697e-16, -1, 9.6, 267 -1.83697e-16, -1, 9.8, 268 -1.83697e-16, -1, 10, 269 -1.83697e-16, -1, 10.2, 270 -1.83697e-16, -1, 10.4, 271 -1.83697e-16, -1, 10.6, 272 -1.83697e-16, -1, 10.8, 273 -1.83697e-16, -1, 11, 274 0.5, -0.866025, 9, 275 0.5, -0.866025, 9.2, 276 0.5, -0.866025, 9.4, 277 0.5, -0.866025, 9.6, 278 0.5, -0.866025, 9.8, 279 0.5, -0.866025, 10, 280 0.5, -0.866025, 10.2, 281 0.5, -0.866025, 10.4, 282 0.5, -0.866025, 10.6, 283 0.5, -0.866025, 10.8, 284 0.5, -0.866025, 11, 285 0.866025, -0.5, 9, 286 0.866025, -0.5, 9.2, 287 0.866025, -0.5, 9.4, 288 0.866025, -0.5, 9.6, 289 0.866025, -0.5, 9.8, 290 0.866025, -0.5, 10, 291 0.866025, -0.5, 10.2, 292 0.866025, -0.5, 10.4, 293 0.866025, -0.5, 10.6, 294 0.866025, -0.5, 10.8, 295 0.866025, -0.5, 11, 296 0, 0, 9, 297 0, 0, 11, 298 1, 0, 19, 299 1, 0, 19.2, 300 1, 0, 19.4, 301 1, 0, 19.6, 302 1, 0, 19.8, 303 1, 0, 20, 304 1, 0, 20.2, 305 1, 0, 20.4, 306 1, 0, 20.6, 307 1, 0, 20.8, 308 1, 0, 21, 309 0.866025, 0.5, 19, 310 0.866025, 0.5, 19.2, 311 0.866025, 0.5, 19.4, 312 0.866025, 0.5, 19.6, 313 0.866025, 0.5, 19.8, 314 0.866025, 0.5, 20, 315 0.866025, 0.5, 20.2, 316 0.866025, 0.5, 20.4, 317 0.866025, 0.5, 20.6, 318 0.866025, 0.5, 20.8, 319 0.866025, 0.5, 21, 320 0.5, 0.866025, 19, 321 0.5, 0.866025, 19.2, 322 0.5, 0.866025, 19.4, 323 0.5, 0.866025, 19.6, 324 0.5, 0.866025, 19.8, 325 0.5, 0.866025, 20, 326 0.5, 0.866025, 20.2, 327 0.5, 0.866025, 20.4, 328 0.5, 0.866025, 20.6, 329 0.5, 0.866025, 20.8, 330 0.5, 0.866025, 21, 331 6.12323e-17, 1, 19, 332 6.12323e-17, 1, 19.2, 333 6.12323e-17, 1, 19.4, 334 6.12323e-17, 1, 19.6, 335 6.12323e-17, 1, 19.8, 336 6.12323e-17, 1, 20, 337 6.12323e-17, 1, 20.2, 338 6.12323e-17, 1, 20.4, 339 6.12323e-17, 1, 20.6, 340 6.12323e-17, 1, 20.8, 341 6.12323e-17, 1, 21, 342 -0.5, 0.866025, 19, 343 -0.5, 0.866025, 19.2, 344 -0.5, 0.866025, 19.4, 345 -0.5, 0.866025, 19.6, 346 -0.5, 0.866025, 19.8, 347 -0.5, 0.866025, 20, 348 -0.5, 0.866025, 20.2, 349 -0.5, 0.866025, 20.4, 350 -0.5, 0.866025, 20.6, 351 -0.5, 0.866025, 20.8, 352 -0.5, 0.866025, 21, 353 -0.866025, 0.5, 19, 354 -0.866025, 0.5, 19.2, 355 -0.866025, 0.5, 19.4, 356 -0.866025, 0.5, 19.6, 357 -0.866025, 0.5, 19.8, 358 -0.866025, 0.5, 20, 359 -0.866025, 0.5, 20.2, 360 -0.866025, 0.5, 20.4, 361 -0.866025, 0.5, 20.6, 362 -0.866025, 0.5, 20.8, 363 -0.866025, 0.5, 21, 364 -1, 1.22465e-16, 19, 365 -1, 1.22465e-16, 19.2, 366 -1, 1.22465e-16, 19.4, 367 -1, 1.22465e-16, 19.6, 368 -1, 1.22465e-16, 19.8, 369 -1, 1.22465e-16, 20, 370 -1, 1.22465e-16, 20.2, 371 -1, 1.22465e-16, 20.4, 372 -1, 1.22465e-16, 20.6, 373 -1, 1.22465e-16, 20.8, 374 -1, 1.22465e-16, 21, 375 -0.866025, -0.5, 19, 376 -0.866025, -0.5, 19.2, 377 -0.866025, -0.5, 19.4, 378 -0.866025, -0.5, 19.6, 379 -0.866025, -0.5, 19.8, 380 -0.866025, -0.5, 20, 381 -0.866025, -0.5, 20.2, 382 -0.866025, -0.5, 20.4, 383 -0.866025, -0.5, 20.6, 384 -0.866025, -0.5, 20.8, 385 -0.866025, -0.5, 21, 386 -0.5, -0.866025, 19, 387 -0.5, -0.866025, 19.2, 388 -0.5, -0.866025, 19.4, 389 -0.5, -0.866025, 19.6, 390 -0.5, -0.866025, 19.8, 391 -0.5, -0.866025, 20, 392 -0.5, -0.866025, 20.2, 393 -0.5, -0.866025, 20.4, 394 -0.5, -0.866025, 20.6, 395 -0.5, -0.866025, 20.8, 396 -0.5, -0.866025, 21, 397 -1.83697e-16, -1, 19, 398 -1.83697e-16, -1, 19.2, 399 -1.83697e-16, -1, 19.4, 400 -1.83697e-16, -1, 19.6, 401 -1.83697e-16, -1, 19.8, 402 -1.83697e-16, -1, 20, 403 -1.83697e-16, -1, 20.2, 404 -1.83697e-16, -1, 20.4, 405 -1.83697e-16, -1, 20.6, 406 -1.83697e-16, -1, 20.8, 407 -1.83697e-16, -1, 21, 408 0.5, -0.866025, 19, 409 0.5, -0.866025, 19.2, 410 0.5, -0.866025, 19.4, 411 0.5, -0.866025, 19.6, 412 0.5, -0.866025, 19.8, 413 0.5, -0.866025, 20, 414 0.5, -0.866025, 20.2, 415 0.5, -0.866025, 20.4, 416 0.5, -0.866025, 20.6, 417 0.5, -0.866025, 20.8, 418 0.5, -0.866025, 21, 419 0.866025, -0.5, 19, 420 0.866025, -0.5, 19.2, 421 0.866025, -0.5, 19.4, 422 0.866025, -0.5, 19.6, 423 0.866025, -0.5, 19.8, 424 0.866025, -0.5, 20, 425 0.866025, -0.5, 20.2, 426 0.866025, -0.5, 20.4, 427 0.866025, -0.5, 20.6, 428 0.866025, -0.5, 20.8, 429 0.866025, -0.5, 21, 430 0, 0, 19, 431 0, 0, 21, 432 1, 0, 29, 433 1, 0, 29.2, 434 1, 0, 29.4, 435 1, 0, 29.6, 436 1, 0, 29.8, 437 1, 0, 30, 438 1, 0, 30.2, 439 1, 0, 30.4, 440 1, 0, 30.6, 441 1, 0, 30.8, 442 1, 0, 31, 443 0.866025, 0.5, 29, 444 0.866025, 0.5, 29.2, 445 0.866025, 0.5, 29.4, 446 0.866025, 0.5, 29.6, 447 0.866025, 0.5, 29.8, 448 0.866025, 0.5, 30, 449 0.866025, 0.5, 30.2, 450 0.866025, 0.5, 30.4, 451 0.866025, 0.5, 30.6, 452 0.866025, 0.5, 30.8, 453 0.866025, 0.5, 31, 454 0.5, 0.866025, 29, 455 0.5, 0.866025, 29.2, 456 0.5, 0.866025, 29.4, 457 0.5, 0.866025, 29.6, 458 0.5, 0.866025, 29.8, 459 0.5, 0.866025, 30, 460 0.5, 0.866025, 30.2, 461 0.5, 0.866025, 30.4, 462 0.5, 0.866025, 30.6, 463 0.5, 0.866025, 30.8, 464 0.5, 0.866025, 31, 465 6.12323e-17, 1, 29, 466 6.12323e-17, 1, 29.2, 467 6.12323e-17, 1, 29.4, 468 6.12323e-17, 1, 29.6, 469 6.12323e-17, 1, 29.8, 470 6.12323e-17, 1, 30, 471 6.12323e-17, 1, 30.2, 472 6.12323e-17, 1, 30.4, 473 6.12323e-17, 1, 30.6, 474 6.12323e-17, 1, 30.8, 475 6.12323e-17, 1, 31, 476 -0.5, 0.866025, 29, 477 -0.5, 0.866025, 29.2, 478 -0.5, 0.866025, 29.4, 479 -0.5, 0.866025, 29.6, 480 -0.5, 0.866025, 29.8, 481 -0.5, 0.866025, 30, 482 -0.5, 0.866025, 30.2, 483 -0.5, 0.866025, 30.4, 484 -0.5, 0.866025, 30.6, 485 -0.5, 0.866025, 30.8, 486 -0.5, 0.866025, 31, 487 -0.866025, 0.5, 29, 488 -0.866025, 0.5, 29.2, 489 -0.866025, 0.5, 29.4, 490 -0.866025, 0.5, 29.6, 491 -0.866025, 0.5, 29.8, 492 -0.866025, 0.5, 30, 493 -0.866025, 0.5, 30.2, 494 -0.866025, 0.5, 30.4, 495 -0.866025, 0.5, 30.6, 496 -0.866025, 0.5, 30.8, 497 -0.866025, 0.5, 31, 498 -1, 1.22465e-16, 29, 499 -1, 1.22465e-16, 29.2, 500 -1, 1.22465e-16, 29.4, 501 -1, 1.22465e-16, 29.6, 502 -1, 1.22465e-16, 29.8, 503 -1, 1.22465e-16, 30, 504 -1, 1.22465e-16, 30.2, 505 -1, 1.22465e-16, 30.4, 506 -1, 1.22465e-16, 30.6, 507 -1, 1.22465e-16, 30.8, 508 -1, 1.22465e-16, 31, 509 -0.866025, -0.5, 29, 510 -0.866025, -0.5, 29.2, 511 -0.866025, -0.5, 29.4, 512 -0.866025, -0.5, 29.6, 513 -0.866025, -0.5, 29.8, 514 -0.866025, -0.5, 30, 515 -0.866025, -0.5, 30.2, 516 -0.866025, -0.5, 30.4, 517 -0.866025, -0.5, 30.6, 518 -0.866025, -0.5, 30.8, 519 -0.866025, -0.5, 31, 520 -0.5, -0.866025, 29, 521 -0.5, -0.866025, 29.2, 522 -0.5, -0.866025, 29.4, 523 -0.5, -0.866025, 29.6, 524 -0.5, -0.866025, 29.8, 525 -0.5, -0.866025, 30, 526 -0.5, -0.866025, 30.2, 527 -0.5, -0.866025, 30.4, 528 -0.5, -0.866025, 30.6, 529 -0.5, -0.866025, 30.8, 530 -0.5, -0.866025, 31, 531 -1.83697e-16, -1, 29, 532 -1.83697e-16, -1, 29.2, 533 -1.83697e-16, -1, 29.4, 534 -1.83697e-16, -1, 29.6, 535 -1.83697e-16, -1, 29.8, 536 -1.83697e-16, -1, 30, 537 -1.83697e-16, -1, 30.2, 538 -1.83697e-16, -1, 30.4, 539 -1.83697e-16, -1, 30.6, 540 -1.83697e-16, -1, 30.8, 541 -1.83697e-16, -1, 31, 542 0.5, -0.866025, 29, 543 0.5, -0.866025, 29.2, 544 0.5, -0.866025, 29.4, 545 0.5, -0.866025, 29.6, 546 0.5, -0.866025, 29.8, 547 0.5, -0.866025, 30, 548 0.5, -0.866025, 30.2, 549 0.5, -0.866025, 30.4, 550 0.5, -0.866025, 30.6, 551 0.5, -0.866025, 30.8, 552 0.5, -0.866025, 31, 553 0.866025, -0.5, 29, 554 0.866025, -0.5, 29.2, 555 0.866025, -0.5, 29.4, 556 0.866025, -0.5, 29.6, 557 0.866025, -0.5, 29.8, 558 0.866025, -0.5, 30, 559 0.866025, -0.5, 30.2, 560 0.866025, -0.5, 30.4, 561 0.866025, -0.5, 30.6, 562 0.866025, -0.5, 30.8, 563 0.866025, -0.5, 31, 564 0, 0, 29, 565 0, 0, 31 566 }; 567 static const unsigned some_triangles_triangles_count = 1056; 568 static const unsigned some_triangles_triangles[3168] = 569 { 570 0, 1, 11, 571 11, 1, 12, 572 1, 2, 12, 573 12, 2, 13, 574 2, 3, 13, 575 13, 3, 14, 576 3, 4, 14, 577 14, 4, 15, 578 4, 5, 15, 579 15, 5, 16, 580 5, 6, 16, 581 16, 6, 17, 582 6, 7, 17, 583 17, 7, 18, 584 7, 8, 18, 585 18, 8, 19, 586 8, 9, 19, 587 19, 9, 20, 588 9, 10, 20, 589 20, 10, 21, 590 11, 12, 22, 591 22, 12, 23, 592 12, 13, 23, 593 23, 13, 24, 594 13, 14, 24, 595 24, 14, 25, 596 14, 15, 25, 597 25, 15, 26, 598 15, 16, 26, 599 26, 16, 27, 600 16, 17, 27, 601 27, 17, 28, 602 17, 18, 28, 603 28, 18, 29, 604 18, 19, 29, 605 29, 19, 30, 606 19, 20, 30, 607 30, 20, 31, 608 20, 21, 31, 609 31, 21, 32, 610 22, 23, 33, 611 33, 23, 34, 612 23, 24, 34, 613 34, 24, 35, 614 24, 25, 35, 615 35, 25, 36, 616 25, 26, 36, 617 36, 26, 37, 618 26, 27, 37, 619 37, 27, 38, 620 27, 28, 38, 621 38, 28, 39, 622 28, 29, 39, 623 39, 29, 40, 624 29, 30, 40, 625 40, 30, 41, 626 30, 31, 41, 627 41, 31, 42, 628 31, 32, 42, 629 42, 32, 43, 630 33, 34, 44, 631 44, 34, 45, 632 34, 35, 45, 633 45, 35, 46, 634 35, 36, 46, 635 46, 36, 47, 636 36, 37, 47, 637 47, 37, 48, 638 37, 38, 48, 639 48, 38, 49, 640 38, 39, 49, 641 49, 39, 50, 642 39, 40, 50, 643 50, 40, 51, 644 40, 41, 51, 645 51, 41, 52, 646 41, 42, 52, 647 52, 42, 53, 648 42, 43, 53, 649 53, 43, 54, 650 44, 45, 55, 651 55, 45, 56, 652 45, 46, 56, 653 56, 46, 57, 654 46, 47, 57, 655 57, 47, 58, 656 47, 48, 58, 657 58, 48, 59, 658 48, 49, 59, 659 59, 49, 60, 660 49, 50, 60, 661 60, 50, 61, 662 50, 51, 61, 663 61, 51, 62, 664 51, 52, 62, 665 62, 52, 63, 666 52, 53, 63, 667 63, 53, 64, 668 53, 54, 64, 669 64, 54, 65, 670 55, 56, 66, 671 66, 56, 67, 672 56, 57, 67, 673 67, 57, 68, 674 57, 58, 68, 675 68, 58, 69, 676 58, 59, 69, 677 69, 59, 70, 678 59, 60, 70, 679 70, 60, 71, 680 60, 61, 71, 681 71, 61, 72, 682 61, 62, 72, 683 72, 62, 73, 684 62, 63, 73, 685 73, 63, 74, 686 63, 64, 74, 687 74, 64, 75, 688 64, 65, 75, 689 75, 65, 76, 690 66, 67, 77, 691 77, 67, 78, 692 67, 68, 78, 693 78, 68, 79, 694 68, 69, 79, 695 79, 69, 80, 696 69, 70, 80, 697 80, 70, 81, 698 70, 71, 81, 699 81, 71, 82, 700 71, 72, 82, 701 82, 72, 83, 702 72, 73, 83, 703 83, 73, 84, 704 73, 74, 84, 705 84, 74, 85, 706 74, 75, 85, 707 85, 75, 86, 708 75, 76, 86, 709 86, 76, 87, 710 77, 78, 88, 711 88, 78, 89, 712 78, 79, 89, 713 89, 79, 90, 714 79, 80, 90, 715 90, 80, 91, 716 80, 81, 91, 717 91, 81, 92, 718 81, 82, 92, 719 92, 82, 93, 720 82, 83, 93, 721 93, 83, 94, 722 83, 84, 94, 723 94, 84, 95, 724 84, 85, 95, 725 95, 85, 96, 726 85, 86, 96, 727 96, 86, 97, 728 86, 87, 97, 729 97, 87, 98, 730 88, 89, 99, 731 99, 89, 100, 732 89, 90, 100, 733 100, 90, 101, 734 90, 91, 101, 735 101, 91, 102, 736 91, 92, 102, 737 102, 92, 103, 738 92, 93, 103, 739 103, 93, 104, 740 93, 94, 104, 741 104, 94, 105, 742 94, 95, 105, 743 105, 95, 106, 744 95, 96, 106, 745 106, 96, 107, 746 96, 97, 107, 747 107, 97, 108, 748 97, 98, 108, 749 108, 98, 109, 750 99, 100, 110, 751 110, 100, 111, 752 100, 101, 111, 753 111, 101, 112, 754 101, 102, 112, 755 112, 102, 113, 756 102, 103, 113, 757 113, 103, 114, 758 103, 104, 114, 759 114, 104, 115, 760 104, 105, 115, 761 115, 105, 116, 762 105, 106, 116, 763 116, 106, 117, 764 106, 107, 117, 765 117, 107, 118, 766 107, 108, 118, 767 118, 108, 119, 768 108, 109, 119, 769 119, 109, 120, 770 110, 111, 121, 771 121, 111, 122, 772 111, 112, 122, 773 122, 112, 123, 774 112, 113, 123, 775 123, 113, 124, 776 113, 114, 124, 777 124, 114, 125, 778 114, 115, 125, 779 125, 115, 126, 780 115, 116, 126, 781 126, 116, 127, 782 116, 117, 127, 783 127, 117, 128, 784 117, 118, 128, 785 128, 118, 129, 786 118, 119, 129, 787 129, 119, 130, 788 119, 120, 130, 789 130, 120, 131, 790 121, 122, 0, 791 0, 122, 1, 792 122, 123, 1, 793 1, 123, 2, 794 123, 124, 2, 795 2, 124, 3, 796 124, 125, 3, 797 3, 125, 4, 798 125, 126, 4, 799 4, 126, 5, 800 126, 127, 5, 801 5, 127, 6, 802 127, 128, 6, 803 6, 128, 7, 804 128, 129, 7, 805 7, 129, 8, 806 129, 130, 8, 807 8, 130, 9, 808 130, 131, 9, 809 9, 131, 10, 810 132, 0, 11, 811 132, 11, 22, 812 132, 22, 33, 813 132, 33, 44, 814 132, 44, 55, 815 132, 55, 66, 816 132, 66, 77, 817 132, 77, 88, 818 132, 88, 99, 819 132, 99, 110, 820 132, 110, 121, 821 132, 121, 0, 822 133, 21, 10, 823 133, 32, 21, 824 133, 43, 32, 825 133, 54, 43, 826 133, 65, 54, 827 133, 76, 65, 828 133, 87, 76, 829 133, 98, 87, 830 133, 109, 98, 831 133, 120, 109, 832 133, 131, 120, 833 133, 10, 131, 834 134, 135, 145, 835 145, 135, 146, 836 135, 136, 146, 837 146, 136, 147, 838 136, 137, 147, 839 147, 137, 148, 840 137, 138, 148, 841 148, 138, 149, 842 138, 139, 149, 843 149, 139, 150, 844 139, 140, 150, 845 150, 140, 151, 846 140, 141, 151, 847 151, 141, 152, 848 141, 142, 152, 849 152, 142, 153, 850 142, 143, 153, 851 153, 143, 154, 852 143, 144, 154, 853 154, 144, 155, 854 145, 146, 156, 855 156, 146, 157, 856 146, 147, 157, 857 157, 147, 158, 858 147, 148, 158, 859 158, 148, 159, 860 148, 149, 159, 861 159, 149, 160, 862 149, 150, 160, 863 160, 150, 161, 864 150, 151, 161, 865 161, 151, 162, 866 151, 152, 162, 867 162, 152, 163, 868 152, 153, 163, 869 163, 153, 164, 870 153, 154, 164, 871 164, 154, 165, 872 154, 155, 165, 873 165, 155, 166, 874 156, 157, 167, 875 167, 157, 168, 876 157, 158, 168, 877 168, 158, 169, 878 158, 159, 169, 879 169, 159, 170, 880 159, 160, 170, 881 170, 160, 171, 882 160, 161, 171, 883 171, 161, 172, 884 161, 162, 172, 885 172, 162, 173, 886 162, 163, 173, 887 173, 163, 174, 888 163, 164, 174, 889 174, 164, 175, 890 164, 165, 175, 891 175, 165, 176, 892 165, 166, 176, 893 176, 166, 177, 894 167, 168, 178, 895 178, 168, 179, 896 168, 169, 179, 897 179, 169, 180, 898 169, 170, 180, 899 180, 170, 181, 900 170, 171, 181, 901 181, 171, 182, 902 171, 172, 182, 903 182, 172, 183, 904 172, 173, 183, 905 183, 173, 184, 906 173, 174, 184, 907 184, 174, 185, 908 174, 175, 185, 909 185, 175, 186, 910 175, 176, 186, 911 186, 176, 187, 912 176, 177, 187, 913 187, 177, 188, 914 178, 179, 189, 915 189, 179, 190, 916 179, 180, 190, 917 190, 180, 191, 918 180, 181, 191, 919 191, 181, 192, 920 181, 182, 192, 921 192, 182, 193, 922 182, 183, 193, 923 193, 183, 194, 924 183, 184, 194, 925 194, 184, 195, 926 184, 185, 195, 927 195, 185, 196, 928 185, 186, 196, 929 196, 186, 197, 930 186, 187, 197, 931 197, 187, 198, 932 187, 188, 198, 933 198, 188, 199, 934 189, 190, 200, 935 200, 190, 201, 936 190, 191, 201, 937 201, 191, 202, 938 191, 192, 202, 939 202, 192, 203, 940 192, 193, 203, 941 203, 193, 204, 942 193, 194, 204, 943 204, 194, 205, 944 194, 195, 205, 945 205, 195, 206, 946 195, 196, 206, 947 206, 196, 207, 948 196, 197, 207, 949 207, 197, 208, 950 197, 198, 208, 951 208, 198, 209, 952 198, 199, 209, 953 209, 199, 210, 954 200, 201, 211, 955 211, 201, 212, 956 201, 202, 212, 957 212, 202, 213, 958 202, 203, 213, 959 213, 203, 214, 960 203, 204, 214, 961 214, 204, 215, 962 204, 205, 215, 963 215, 205, 216, 964 205, 206, 216, 965 216, 206, 217, 966 206, 207, 217, 967 217, 207, 218, 968 207, 208, 218, 969 218, 208, 219, 970 208, 209, 219, 971 219, 209, 220, 972 209, 210, 220, 973 220, 210, 221, 974 211, 212, 222, 975 222, 212, 223, 976 212, 213, 223, 977 223, 213, 224, 978 213, 214, 224, 979 224, 214, 225, 980 214, 215, 225, 981 225, 215, 226, 982 215, 216, 226, 983 226, 216, 227, 984 216, 217, 227, 985 227, 217, 228, 986 217, 218, 228, 987 228, 218, 229, 988 218, 219, 229, 989 229, 219, 230, 990 219, 220, 230, 991 230, 220, 231, 992 220, 221, 231, 993 231, 221, 232, 994 222, 223, 233, 995 233, 223, 234, 996 223, 224, 234, 997 234, 224, 235, 998 224, 225, 235, 999 235, 225, 236, 1000 225, 226, 236, 1001 236, 226, 237, 1002 226, 227, 237, 1003 237, 227, 238, 1004 227, 228, 238, 1005 238, 228, 239, 1006 228, 229, 239, 1007 239, 229, 240, 1008 229, 230, 240, 1009 240, 230, 241, 1010 230, 231, 241, 1011 241, 231, 242, 1012 231, 232, 242, 1013 242, 232, 243, 1014 233, 234, 244, 1015 244, 234, 245, 1016 234, 235, 245, 1017 245, 235, 246, 1018 235, 236, 246, 1019 246, 236, 247, 1020 236, 237, 247, 1021 247, 237, 248, 1022 237, 238, 248, 1023 248, 238, 249, 1024 238, 239, 249, 1025 249, 239, 250, 1026 239, 240, 250, 1027 250, 240, 251, 1028 240, 241, 251, 1029 251, 241, 252, 1030 241, 242, 252, 1031 252, 242, 253, 1032 242, 243, 253, 1033 253, 243, 254, 1034 244, 245, 255, 1035 255, 245, 256, 1036 245, 246, 256, 1037 256, 246, 257, 1038 246, 247, 257, 1039 257, 247, 258, 1040 247, 248, 258, 1041 258, 248, 259, 1042 248, 249, 259, 1043 259, 249, 260, 1044 249, 250, 260, 1045 260, 250, 261, 1046 250, 251, 261, 1047 261, 251, 262, 1048 251, 252, 262, 1049 262, 252, 263, 1050 252, 253, 263, 1051 263, 253, 264, 1052 253, 254, 264, 1053 264, 254, 265, 1054 255, 256, 134, 1055 134, 256, 135, 1056 256, 257, 135, 1057 135, 257, 136, 1058 257, 258, 136, 1059 136, 258, 137, 1060 258, 259, 137, 1061 137, 259, 138, 1062 259, 260, 138, 1063 138, 260, 139, 1064 260, 261, 139, 1065 139, 261, 140, 1066 261, 262, 140, 1067 140, 262, 141, 1068 262, 263, 141, 1069 141, 263, 142, 1070 263, 264, 142, 1071 142, 264, 143, 1072 264, 265, 143, 1073 143, 265, 144, 1074 266, 134, 145, 1075 266, 145, 156, 1076 266, 156, 167, 1077 266, 167, 178, 1078 266, 178, 189, 1079 266, 189, 200, 1080 266, 200, 211, 1081 266, 211, 222, 1082 266, 222, 233, 1083 266, 233, 244, 1084 266, 244, 255, 1085 266, 255, 134, 1086 267, 155, 144, 1087 267, 166, 155, 1088 267, 177, 166, 1089 267, 188, 177, 1090 267, 199, 188, 1091 267, 210, 199, 1092 267, 221, 210, 1093 267, 232, 221, 1094 267, 243, 232, 1095 267, 254, 243, 1096 267, 265, 254, 1097 267, 144, 265, 1098 268, 269, 279, 1099 279, 269, 280, 1100 269, 270, 280, 1101 280, 270, 281, 1102 270, 271, 281, 1103 281, 271, 282, 1104 271, 272, 282, 1105 282, 272, 283, 1106 272, 273, 283, 1107 283, 273, 284, 1108 273, 274, 284, 1109 284, 274, 285, 1110 274, 275, 285, 1111 285, 275, 286, 1112 275, 276, 286, 1113 286, 276, 287, 1114 276, 277, 287, 1115 287, 277, 288, 1116 277, 278, 288, 1117 288, 278, 289, 1118 279, 280, 290, 1119 290, 280, 291, 1120 280, 281, 291, 1121 291, 281, 292, 1122 281, 282, 292, 1123 292, 282, 293, 1124 282, 283, 293, 1125 293, 283, 294, 1126 283, 284, 294, 1127 294, 284, 295, 1128 284, 285, 295, 1129 295, 285, 296, 1130 285, 286, 296, 1131 296, 286, 297, 1132 286, 287, 297, 1133 297, 287, 298, 1134 287, 288, 298, 1135 298, 288, 299, 1136 288, 289, 299, 1137 299, 289, 300, 1138 290, 291, 301, 1139 301, 291, 302, 1140 291, 292, 302, 1141 302, 292, 303, 1142 292, 293, 303, 1143 303, 293, 304, 1144 293, 294, 304, 1145 304, 294, 305, 1146 294, 295, 305, 1147 305, 295, 306, 1148 295, 296, 306, 1149 306, 296, 307, 1150 296, 297, 307, 1151 307, 297, 308, 1152 297, 298, 308, 1153 308, 298, 309, 1154 298, 299, 309, 1155 309, 299, 310, 1156 299, 300, 310, 1157 310, 300, 311, 1158 301, 302, 312, 1159 312, 302, 313, 1160 302, 303, 313, 1161 313, 303, 314, 1162 303, 304, 314, 1163 314, 304, 315, 1164 304, 305, 315, 1165 315, 305, 316, 1166 305, 306, 316, 1167 316, 306, 317, 1168 306, 307, 317, 1169 317, 307, 318, 1170 307, 308, 318, 1171 318, 308, 319, 1172 308, 309, 319, 1173 319, 309, 320, 1174 309, 310, 320, 1175 320, 310, 321, 1176 310, 311, 321, 1177 321, 311, 322, 1178 312, 313, 323, 1179 323, 313, 324, 1180 313, 314, 324, 1181 324, 314, 325, 1182 314, 315, 325, 1183 325, 315, 326, 1184 315, 316, 326, 1185 326, 316, 327, 1186 316, 317, 327, 1187 327, 317, 328, 1188 317, 318, 328, 1189 328, 318, 329, 1190 318, 319, 329, 1191 329, 319, 330, 1192 319, 320, 330, 1193 330, 320, 331, 1194 320, 321, 331, 1195 331, 321, 332, 1196 321, 322, 332, 1197 332, 322, 333, 1198 323, 324, 334, 1199 334, 324, 335, 1200 324, 325, 335, 1201 335, 325, 336, 1202 325, 326, 336, 1203 336, 326, 337, 1204 326, 327, 337, 1205 337, 327, 338, 1206 327, 328, 338, 1207 338, 328, 339, 1208 328, 329, 339, 1209 339, 329, 340, 1210 329, 330, 340, 1211 340, 330, 341, 1212 330, 331, 341, 1213 341, 331, 342, 1214 331, 332, 342, 1215 342, 332, 343, 1216 332, 333, 343, 1217 343, 333, 344, 1218 334, 335, 345, 1219 345, 335, 346, 1220 335, 336, 346, 1221 346, 336, 347, 1222 336, 337, 347, 1223 347, 337, 348, 1224 337, 338, 348, 1225 348, 338, 349, 1226 338, 339, 349, 1227 349, 339, 350, 1228 339, 340, 350, 1229 350, 340, 351, 1230 340, 341, 351, 1231 351, 341, 352, 1232 341, 342, 352, 1233 352, 342, 353, 1234 342, 343, 353, 1235 353, 343, 354, 1236 343, 344, 354, 1237 354, 344, 355, 1238 345, 346, 356, 1239 356, 346, 357, 1240 346, 347, 357, 1241 357, 347, 358, 1242 347, 348, 358, 1243 358, 348, 359, 1244 348, 349, 359, 1245 359, 349, 360, 1246 349, 350, 360, 1247 360, 350, 361, 1248 350, 351, 361, 1249 361, 351, 362, 1250 351, 352, 362, 1251 362, 352, 363, 1252 352, 353, 363, 1253 363, 353, 364, 1254 353, 354, 364, 1255 364, 354, 365, 1256 354, 355, 365, 1257 365, 355, 366, 1258 356, 357, 367, 1259 367, 357, 368, 1260 357, 358, 368, 1261 368, 358, 369, 1262 358, 359, 369, 1263 369, 359, 370, 1264 359, 360, 370, 1265 370, 360, 371, 1266 360, 361, 371, 1267 371, 361, 372, 1268 361, 362, 372, 1269 372, 362, 373, 1270 362, 363, 373, 1271 373, 363, 374, 1272 363, 364, 374, 1273 374, 364, 375, 1274 364, 365, 375, 1275 375, 365, 376, 1276 365, 366, 376, 1277 376, 366, 377, 1278 367, 368, 378, 1279 378, 368, 379, 1280 368, 369, 379, 1281 379, 369, 380, 1282 369, 370, 380, 1283 380, 370, 381, 1284 370, 371, 381, 1285 381, 371, 382, 1286 371, 372, 382, 1287 382, 372, 383, 1288 372, 373, 383, 1289 383, 373, 384, 1290 373, 374, 384, 1291 384, 374, 385, 1292 374, 375, 385, 1293 385, 375, 386, 1294 375, 376, 386, 1295 386, 376, 387, 1296 376, 377, 387, 1297 387, 377, 388, 1298 378, 379, 389, 1299 389, 379, 390, 1300 379, 380, 390, 1301 390, 380, 391, 1302 380, 381, 391, 1303 391, 381, 392, 1304 381, 382, 392, 1305 392, 382, 393, 1306 382, 383, 393, 1307 393, 383, 394, 1308 383, 384, 394, 1309 394, 384, 395, 1310 384, 385, 395, 1311 395, 385, 396, 1312 385, 386, 396, 1313 396, 386, 397, 1314 386, 387, 397, 1315 397, 387, 398, 1316 387, 388, 398, 1317 398, 388, 399, 1318 389, 390, 268, 1319 268, 390, 269, 1320 390, 391, 269, 1321 269, 391, 270, 1322 391, 392, 270, 1323 270, 392, 271, 1324 392, 393, 271, 1325 271, 393, 272, 1326 393, 394, 272, 1327 272, 394, 273, 1328 394, 395, 273, 1329 273, 395, 274, 1330 395, 396, 274, 1331 274, 396, 275, 1332 396, 397, 275, 1333 275, 397, 276, 1334 397, 398, 276, 1335 276, 398, 277, 1336 398, 399, 277, 1337 277, 399, 278, 1338 400, 268, 279, 1339 400, 279, 290, 1340 400, 290, 301, 1341 400, 301, 312, 1342 400, 312, 323, 1343 400, 323, 334, 1344 400, 334, 345, 1345 400, 345, 356, 1346 400, 356, 367, 1347 400, 367, 378, 1348 400, 378, 389, 1349 400, 389, 268, 1350 401, 289, 278, 1351 401, 300, 289, 1352 401, 311, 300, 1353 401, 322, 311, 1354 401, 333, 322, 1355 401, 344, 333, 1356 401, 355, 344, 1357 401, 366, 355, 1358 401, 377, 366, 1359 401, 388, 377, 1360 401, 399, 388, 1361 401, 278, 399, 1362 402, 403, 413, 1363 413, 403, 414, 1364 403, 404, 414, 1365 414, 404, 415, 1366 404, 405, 415, 1367 415, 405, 416, 1368 405, 406, 416, 1369 416, 406, 417, 1370 406, 407, 417, 1371 417, 407, 418, 1372 407, 408, 418, 1373 418, 408, 419, 1374 408, 409, 419, 1375 419, 409, 420, 1376 409, 410, 420, 1377 420, 410, 421, 1378 410, 411, 421, 1379 421, 411, 422, 1380 411, 412, 422, 1381 422, 412, 423, 1382 413, 414, 424, 1383 424, 414, 425, 1384 414, 415, 425, 1385 425, 415, 426, 1386 415, 416, 426, 1387 426, 416, 427, 1388 416, 417, 427, 1389 427, 417, 428, 1390 417, 418, 428, 1391 428, 418, 429, 1392 418, 419, 429, 1393 429, 419, 430, 1394 419, 420, 430, 1395 430, 420, 431, 1396 420, 421, 431, 1397 431, 421, 432, 1398 421, 422, 432, 1399 432, 422, 433, 1400 422, 423, 433, 1401 433, 423, 434, 1402 424, 425, 435, 1403 435, 425, 436, 1404 425, 426, 436, 1405 436, 426, 437, 1406 426, 427, 437, 1407 437, 427, 438, 1408 427, 428, 438, 1409 438, 428, 439, 1410 428, 429, 439, 1411 439, 429, 440, 1412 429, 430, 440, 1413 440, 430, 441, 1414 430, 431, 441, 1415 441, 431, 442, 1416 431, 432, 442, 1417 442, 432, 443, 1418 432, 433, 443, 1419 443, 433, 444, 1420 433, 434, 444, 1421 444, 434, 445, 1422 435, 436, 446, 1423 446, 436, 447, 1424 436, 437, 447, 1425 447, 437, 448, 1426 437, 438, 448, 1427 448, 438, 449, 1428 438, 439, 449, 1429 449, 439, 450, 1430 439, 440, 450, 1431 450, 440, 451, 1432 440, 441, 451, 1433 451, 441, 452, 1434 441, 442, 452, 1435 452, 442, 453, 1436 442, 443, 453, 1437 453, 443, 454, 1438 443, 444, 454, 1439 454, 444, 455, 1440 444, 445, 455, 1441 455, 445, 456, 1442 446, 447, 457, 1443 457, 447, 458, 1444 447, 448, 458, 1445 458, 448, 459, 1446 448, 449, 459, 1447 459, 449, 460, 1448 449, 450, 460, 1449 460, 450, 461, 1450 450, 451, 461, 1451 461, 451, 462, 1452 451, 452, 462, 1453 462, 452, 463, 1454 452, 453, 463, 1455 463, 453, 464, 1456 453, 454, 464, 1457 464, 454, 465, 1458 454, 455, 465, 1459 465, 455, 466, 1460 455, 456, 466, 1461 466, 456, 467, 1462 457, 458, 468, 1463 468, 458, 469, 1464 458, 459, 469, 1465 469, 459, 470, 1466 459, 460, 470, 1467 470, 460, 471, 1468 460, 461, 471, 1469 471, 461, 472, 1470 461, 462, 472, 1471 472, 462, 473, 1472 462, 463, 473, 1473 473, 463, 474, 1474 463, 464, 474, 1475 474, 464, 475, 1476 464, 465, 475, 1477 475, 465, 476, 1478 465, 466, 476, 1479 476, 466, 477, 1480 466, 467, 477, 1481 477, 467, 478, 1482 468, 469, 479, 1483 479, 469, 480, 1484 469, 470, 480, 1485 480, 470, 481, 1486 470, 471, 481, 1487 481, 471, 482, 1488 471, 472, 482, 1489 482, 472, 483, 1490 472, 473, 483, 1491 483, 473, 484, 1492 473, 474, 484, 1493 484, 474, 485, 1494 474, 475, 485, 1495 485, 475, 486, 1496 475, 476, 486, 1497 486, 476, 487, 1498 476, 477, 487, 1499 487, 477, 488, 1500 477, 478, 488, 1501 488, 478, 489, 1502 479, 480, 490, 1503 490, 480, 491, 1504 480, 481, 491, 1505 491, 481, 492, 1506 481, 482, 492, 1507 492, 482, 493, 1508 482, 483, 493, 1509 493, 483, 494, 1510 483, 484, 494, 1511 494, 484, 495, 1512 484, 485, 495, 1513 495, 485, 496, 1514 485, 486, 496, 1515 496, 486, 497, 1516 486, 487, 497, 1517 497, 487, 498, 1518 487, 488, 498, 1519 498, 488, 499, 1520 488, 489, 499, 1521 499, 489, 500, 1522 490, 491, 501, 1523 501, 491, 502, 1524 491, 492, 502, 1525 502, 492, 503, 1526 492, 493, 503, 1527 503, 493, 504, 1528 493, 494, 504, 1529 504, 494, 505, 1530 494, 495, 505, 1531 505, 495, 506, 1532 495, 496, 506, 1533 506, 496, 507, 1534 496, 497, 507, 1535 507, 497, 508, 1536 497, 498, 508, 1537 508, 498, 509, 1538 498, 499, 509, 1539 509, 499, 510, 1540 499, 500, 510, 1541 510, 500, 511, 1542 501, 502, 512, 1543 512, 502, 513, 1544 502, 503, 513, 1545 513, 503, 514, 1546 503, 504, 514, 1547 514, 504, 515, 1548 504, 505, 515, 1549 515, 505, 516, 1550 505, 506, 516, 1551 516, 506, 517, 1552 506, 507, 517, 1553 517, 507, 518, 1554 507, 508, 518, 1555 518, 508, 519, 1556 508, 509, 519, 1557 519, 509, 520, 1558 509, 510, 520, 1559 520, 510, 521, 1560 510, 511, 521, 1561 521, 511, 522, 1562 512, 513, 523, 1563 523, 513, 524, 1564 513, 514, 524, 1565 524, 514, 525, 1566 514, 515, 525, 1567 525, 515, 526, 1568 515, 516, 526, 1569 526, 516, 527, 1570 516, 517, 527, 1571 527, 517, 528, 1572 517, 518, 528, 1573 528, 518, 529, 1574 518, 519, 529, 1575 529, 519, 530, 1576 519, 520, 530, 1577 530, 520, 531, 1578 520, 521, 531, 1579 531, 521, 532, 1580 521, 522, 532, 1581 532, 522, 533, 1582 523, 524, 402, 1583 402, 524, 403, 1584 524, 525, 403, 1585 403, 525, 404, 1586 525, 526, 404, 1587 404, 526, 405, 1588 526, 527, 405, 1589 405, 527, 406, 1590 527, 528, 406, 1591 406, 528, 407, 1592 528, 529, 407, 1593 407, 529, 408, 1594 529, 530, 408, 1595 408, 530, 409, 1596 530, 531, 409, 1597 409, 531, 410, 1598 531, 532, 410, 1599 410, 532, 411, 1600 532, 533, 411, 1601 411, 533, 412, 1602 534, 402, 413, 1603 534, 413, 424, 1604 534, 424, 435, 1605 534, 435, 446, 1606 534, 446, 457, 1607 534, 457, 468, 1608 534, 468, 479, 1609 534, 479, 490, 1610 534, 490, 501, 1611 534, 501, 512, 1612 534, 512, 523, 1613 534, 523, 402, 1614 535, 423, 412, 1615 535, 434, 423, 1616 535, 445, 434, 1617 535, 456, 445, 1618 535, 467, 456, 1619 535, 478, 467, 1620 535, 489, 478, 1621 535, 500, 489, 1622 535, 511, 500, 1623 535, 522, 511, 1624 535, 533, 522, 1625 535, 412, 533 1626 }; 1627 static const unsigned some_triangles_properties[3168] = 1628 { 1629 0, 0, 0, 1630 0, 0, 0, 1631 0, 0, 0, 1632 0, 0, 0, 1633 0, 0, 0, 1634 0, 0, 0, 1635 0, 0, 0, 1636 0, 0, 0, 1637 0, 0, 0, 1638 0, 0, 0, 1639 0, 0, 0, 1640 0, 0, 0, 1641 0, 0, 0, 1642 0, 0, 0, 1643 0, 0, 0, 1644 0, 0, 0, 1645 0, 0, 0, 1646 0, 0, 0, 1647 0, 0, 0, 1648 0, 0, 0, 1649 0, 0, 0, 1650 0, 0, 0, 1651 0, 0, 0, 1652 0, 0, 0, 1653 0, 0, 0, 1654 0, 0, 0, 1655 0, 0, 0, 1656 0, 0, 0, 1657 0, 0, 0, 1658 0, 0, 0, 1659 0, 0, 0, 1660 0, 0, 0, 1661 0, 0, 0, 1662 0, 0, 0, 1663 0, 0, 0, 1664 0, 0, 0, 1665 0, 0, 0, 1666 0, 0, 0, 1667 0, 0, 0, 1668 0, 0, 0, 1669 0, 0, 0, 1670 0, 0, 0, 1671 0, 0, 0, 1672 0, 0, 0, 1673 0, 0, 0, 1674 0, 0, 0, 1675 0, 0, 0, 1676 0, 0, 0, 1677 0, 0, 0, 1678 0, 0, 0, 1679 0, 0, 0, 1680 0, 0, 0, 1681 0, 0, 0, 1682 0, 0, 0, 1683 0, 0, 0, 1684 0, 0, 0, 1685 0, 0, 0, 1686 0, 0, 0, 1687 0, 0, 0, 1688 0, 0, 0, 1689 0, 0, 0, 1690 0, 0, 0, 1691 0, 0, 0, 1692 0, 0, 0, 1693 0, 0, 0, 1694 0, 0, 0, 1695 0, 0, 0, 1696 0, 0, 0, 1697 0, 0, 0, 1698 0, 0, 0, 1699 0, 0, 0, 1700 0, 0, 0, 1701 0, 0, 0, 1702 0, 0, 0, 1703 0, 0, 0, 1704 0, 0, 0, 1705 0, 0, 0, 1706 0, 0, 0, 1707 0, 0, 0, 1708 0, 0, 0, 1709 0, 0, 0, 1710 0, 0, 0, 1711 0, 0, 0, 1712 0, 0, 0, 1713 0, 0, 0, 1714 0, 0, 0, 1715 0, 0, 0, 1716 0, 0, 0, 1717 0, 0, 0, 1718 0, 0, 0, 1719 0, 0, 0, 1720 0, 0, 0, 1721 0, 0, 0, 1722 0, 0, 0, 1723 0, 0, 0, 1724 0, 0, 0, 1725 0, 0, 0, 1726 0, 0, 0, 1727 0, 0, 0, 1728 0, 0, 0, 1729 0, 0, 0, 1730 0, 0, 0, 1731 0, 0, 0, 1732 0, 0, 0, 1733 0, 0, 0, 1734 0, 0, 0, 1735 0, 0, 0, 1736 0, 0, 0, 1737 0, 0, 0, 1738 0, 0, 0, 1739 0, 0, 0, 1740 0, 0, 0, 1741 0, 0, 0, 1742 0, 0, 0, 1743 0, 0, 0, 1744 0, 0, 0, 1745 0, 0, 0, 1746 0, 0, 0, 1747 0, 0, 0, 1748 0, 0, 0, 1749 0, 0, 0, 1750 0, 0, 0, 1751 0, 0, 0, 1752 0, 0, 0, 1753 0, 0, 0, 1754 0, 0, 0, 1755 0, 0, 0, 1756 0, 0, 0, 1757 0, 0, 0, 1758 0, 0, 0, 1759 0, 0, 0, 1760 0, 0, 0, 1761 0, 0, 0, 1762 0, 0, 0, 1763 0, 0, 0, 1764 0, 0, 0, 1765 0, 0, 0, 1766 0, 0, 0, 1767 0, 0, 0, 1768 0, 0, 0, 1769 0, 0, 0, 1770 0, 0, 0, 1771 0, 0, 0, 1772 0, 0, 0, 1773 0, 0, 0, 1774 0, 0, 0, 1775 0, 0, 0, 1776 0, 0, 0, 1777 0, 0, 0, 1778 0, 0, 0, 1779 0, 0, 0, 1780 0, 0, 0, 1781 0, 0, 0, 1782 0, 0, 0, 1783 0, 0, 0, 1784 0, 0, 0, 1785 0, 0, 0, 1786 0, 0, 0, 1787 0, 0, 0, 1788 0, 0, 0, 1789 0, 0, 0, 1790 0, 0, 0, 1791 0, 0, 0, 1792 0, 0, 0, 1793 0, 0, 0, 1794 0, 0, 0, 1795 0, 0, 0, 1796 0, 0, 0, 1797 0, 0, 0, 1798 0, 0, 0, 1799 0, 0, 0, 1800 0, 0, 0, 1801 0, 0, 0, 1802 0, 0, 0, 1803 0, 0, 0, 1804 0, 0, 0, 1805 0, 0, 0, 1806 0, 0, 0, 1807 0, 0, 0, 1808 0, 0, 0, 1809 0, 0, 0, 1810 0, 0, 0, 1811 0, 0, 0, 1812 0, 0, 0, 1813 0, 0, 0, 1814 0, 0, 0, 1815 0, 0, 0, 1816 0, 0, 0, 1817 0, 0, 0, 1818 0, 0, 0, 1819 0, 0, 0, 1820 0, 0, 0, 1821 0, 0, 0, 1822 0, 0, 0, 1823 0, 0, 0, 1824 0, 0, 0, 1825 0, 0, 0, 1826 0, 0, 0, 1827 0, 0, 0, 1828 0, 0, 0, 1829 0, 0, 0, 1830 0, 0, 0, 1831 0, 0, 0, 1832 0, 0, 0, 1833 0, 0, 0, 1834 0, 0, 0, 1835 0, 0, 0, 1836 0, 0, 0, 1837 0, 0, 0, 1838 0, 0, 0, 1839 0, 0, 0, 1840 0, 0, 0, 1841 0, 0, 0, 1842 0, 0, 0, 1843 0, 0, 0, 1844 0, 0, 0, 1845 0, 0, 0, 1846 0, 0, 0, 1847 0, 0, 0, 1848 0, 0, 0, 1849 0, 0, 0, 1850 0, 0, 0, 1851 0, 0, 0, 1852 0, 0, 0, 1853 0, 0, 0, 1854 0, 0, 0, 1855 0, 0, 0, 1856 0, 0, 0, 1857 0, 0, 0, 1858 0, 0, 0, 1859 0, 0, 0, 1860 0, 0, 0, 1861 0, 0, 0, 1862 0, 0, 0, 1863 0, 0, 0, 1864 0, 0, 0, 1865 0, 0, 0, 1866 0, 0, 0, 1867 0, 0, 0, 1868 0, 0, 0, 1869 0, 0, 0, 1870 0, 0, 0, 1871 0, 0, 0, 1872 0, 0, 0, 1873 0, 0, 0, 1874 0, 0, 0, 1875 0, 0, 0, 1876 0, 0, 0, 1877 0, 0, 0, 1878 0, 0, 0, 1879 0, 0, 0, 1880 0, 0, 0, 1881 0, 0, 0, 1882 0, 0, 0, 1883 0, 0, 0, 1884 0, 0, 0, 1885 0, 0, 0, 1886 0, 0, 0, 1887 0, 0, 0, 1888 0, 0, 0, 1889 0, 0, 0, 1890 0, 0, 0, 1891 0, 0, 0, 1892 0, 0, 0, 1893 1, 0, 0, 1894 1, 0, 0, 1895 1, 0, 0, 1896 1, 0, 0, 1897 1, 0, 0, 1898 1, 0, 0, 1899 1, 0, 0, 1900 1, 0, 0, 1901 1, 0, 0, 1902 1, 0, 0, 1903 1, 0, 0, 1904 1, 0, 0, 1905 1, 0, 0, 1906 1, 0, 0, 1907 1, 0, 0, 1908 1, 0, 0, 1909 1, 0, 0, 1910 1, 0, 0, 1911 1, 0, 0, 1912 1, 0, 0, 1913 1, 0, 0, 1914 1, 0, 0, 1915 1, 0, 0, 1916 1, 0, 0, 1917 1, 0, 0, 1918 1, 0, 0, 1919 1, 0, 0, 1920 1, 0, 0, 1921 1, 0, 0, 1922 1, 0, 0, 1923 1, 0, 0, 1924 1, 0, 0, 1925 1, 0, 0, 1926 1, 0, 0, 1927 1, 0, 0, 1928 1, 0, 0, 1929 1, 0, 0, 1930 1, 0, 0, 1931 1, 0, 0, 1932 1, 0, 0, 1933 1, 0, 0, 1934 1, 0, 0, 1935 1, 0, 0, 1936 1, 0, 0, 1937 1, 0, 0, 1938 1, 0, 0, 1939 1, 0, 0, 1940 1, 0, 0, 1941 1, 0, 0, 1942 1, 0, 0, 1943 1, 0, 0, 1944 1, 0, 0, 1945 1, 0, 0, 1946 1, 0, 0, 1947 1, 0, 0, 1948 1, 0, 0, 1949 1, 0, 0, 1950 1, 0, 0, 1951 1, 0, 0, 1952 1, 0, 0, 1953 1, 0, 0, 1954 1, 0, 0, 1955 1, 0, 0, 1956 1, 0, 0, 1957 1, 0, 0, 1958 1, 0, 0, 1959 1, 0, 0, 1960 1, 0, 0, 1961 1, 0, 0, 1962 1, 0, 0, 1963 1, 0, 0, 1964 1, 0, 0, 1965 1, 0, 0, 1966 1, 0, 0, 1967 1, 0, 0, 1968 1, 0, 0, 1969 1, 0, 0, 1970 1, 0, 0, 1971 1, 0, 0, 1972 1, 0, 0, 1973 1, 0, 0, 1974 1, 0, 0, 1975 1, 0, 0, 1976 1, 0, 0, 1977 1, 0, 0, 1978 1, 0, 0, 1979 1, 0, 0, 1980 1, 0, 0, 1981 1, 0, 0, 1982 1, 0, 0, 1983 1, 0, 0, 1984 1, 0, 0, 1985 1, 0, 0, 1986 1, 0, 0, 1987 1, 0, 0, 1988 1, 0, 0, 1989 1, 0, 0, 1990 1, 0, 0, 1991 1, 0, 0, 1992 1, 0, 0, 1993 1, 0, 0, 1994 1, 0, 0, 1995 1, 0, 0, 1996 1, 0, 0, 1997 1, 0, 0, 1998 1, 0, 0, 1999 1, 0, 0, 2000 1, 0, 0, 2001 1, 0, 0, 2002 1, 0, 0, 2003 1, 0, 0, 2004 1, 0, 0, 2005 1, 0, 0, 2006 1, 0, 0, 2007 1, 0, 0, 2008 1, 0, 0, 2009 1, 0, 0, 2010 1, 0, 0, 2011 1, 0, 0, 2012 1, 0, 0, 2013 1, 0, 0, 2014 1, 0, 0, 2015 1, 0, 0, 2016 1, 0, 0, 2017 1, 0, 0, 2018 1, 0, 0, 2019 1, 0, 0, 2020 1, 0, 0, 2021 1, 0, 0, 2022 1, 0, 0, 2023 1, 0, 0, 2024 1, 0, 0, 2025 1, 0, 0, 2026 1, 0, 0, 2027 1, 0, 0, 2028 1, 0, 0, 2029 1, 0, 0, 2030 1, 0, 0, 2031 1, 0, 0, 2032 1, 0, 0, 2033 1, 0, 0, 2034 1, 0, 0, 2035 1, 0, 0, 2036 1, 0, 0, 2037 1, 0, 0, 2038 1, 0, 0, 2039 1, 0, 0, 2040 1, 0, 0, 2041 1, 0, 0, 2042 1, 0, 0, 2043 1, 0, 0, 2044 1, 0, 0, 2045 1, 0, 0, 2046 1, 0, 0, 2047 1, 0, 0, 2048 1, 0, 0, 2049 1, 0, 0, 2050 1, 0, 0, 2051 1, 0, 0, 2052 1, 0, 0, 2053 1, 0, 0, 2054 1, 0, 0, 2055 1, 0, 0, 2056 1, 0, 0, 2057 1, 0, 0, 2058 1, 0, 0, 2059 1, 0, 0, 2060 1, 0, 0, 2061 1, 0, 0, 2062 1, 0, 0, 2063 1, 0, 0, 2064 1, 0, 0, 2065 1, 0, 0, 2066 1, 0, 0, 2067 1, 0, 0, 2068 1, 0, 0, 2069 1, 0, 0, 2070 1, 0, 0, 2071 1, 0, 0, 2072 1, 0, 0, 2073 1, 0, 0, 2074 1, 0, 0, 2075 1, 0, 0, 2076 1, 0, 0, 2077 1, 0, 0, 2078 1, 0, 0, 2079 1, 0, 0, 2080 1, 0, 0, 2081 1, 0, 0, 2082 1, 0, 0, 2083 1, 0, 0, 2084 1, 0, 0, 2085 1, 0, 0, 2086 1, 0, 0, 2087 1, 0, 0, 2088 1, 0, 0, 2089 1, 0, 0, 2090 1, 0, 0, 2091 1, 0, 0, 2092 1, 0, 0, 2093 1, 0, 0, 2094 1, 0, 0, 2095 1, 0, 0, 2096 1, 0, 0, 2097 1, 0, 0, 2098 1, 0, 0, 2099 1, 0, 0, 2100 1, 0, 0, 2101 1, 0, 0, 2102 1, 0, 0, 2103 1, 0, 0, 2104 1, 0, 0, 2105 1, 0, 0, 2106 1, 0, 0, 2107 1, 0, 0, 2108 1, 0, 0, 2109 1, 0, 0, 2110 1, 0, 0, 2111 1, 0, 0, 2112 1, 0, 0, 2113 1, 0, 0, 2114 1, 0, 0, 2115 1, 0, 0, 2116 1, 0, 0, 2117 1, 0, 0, 2118 1, 0, 0, 2119 1, 0, 0, 2120 1, 0, 0, 2121 1, 0, 0, 2122 1, 0, 0, 2123 1, 0, 0, 2124 1, 0, 0, 2125 1, 0, 0, 2126 1, 0, 0, 2127 1, 0, 0, 2128 1, 0, 0, 2129 1, 0, 0, 2130 1, 0, 0, 2131 1, 0, 0, 2132 1, 0, 0, 2133 1, 0, 0, 2134 1, 0, 0, 2135 1, 0, 0, 2136 1, 0, 0, 2137 1, 0, 0, 2138 1, 0, 0, 2139 1, 0, 0, 2140 1, 0, 0, 2141 1, 0, 0, 2142 1, 0, 0, 2143 1, 0, 0, 2144 1, 0, 0, 2145 1, 0, 0, 2146 1, 0, 0, 2147 1, 0, 0, 2148 1, 0, 0, 2149 1, 0, 0, 2150 1, 0, 0, 2151 1, 0, 0, 2152 1, 0, 0, 2153 1, 0, 0, 2154 1, 0, 0, 2155 1, 0, 0, 2156 1, 0, 0, 2157 2, 0, 0, 2158 2, 0, 0, 2159 2, 0, 0, 2160 2, 0, 0, 2161 2, 0, 0, 2162 2, 0, 0, 2163 2, 0, 0, 2164 2, 0, 0, 2165 2, 0, 0, 2166 2, 0, 0, 2167 2, 0, 0, 2168 2, 0, 0, 2169 2, 0, 0, 2170 2, 0, 0, 2171 2, 0, 0, 2172 2, 0, 0, 2173 2, 0, 0, 2174 2, 0, 0, 2175 2, 0, 0, 2176 2, 0, 0, 2177 2, 0, 0, 2178 2, 0, 0, 2179 2, 0, 0, 2180 2, 0, 0, 2181 2, 0, 0, 2182 2, 0, 0, 2183 2, 0, 0, 2184 2, 0, 0, 2185 2, 0, 0, 2186 2, 0, 0, 2187 2, 0, 0, 2188 2, 0, 0, 2189 2, 0, 0, 2190 2, 0, 0, 2191 2, 0, 0, 2192 2, 0, 0, 2193 2, 0, 0, 2194 2, 0, 0, 2195 2, 0, 0, 2196 2, 0, 0, 2197 2, 0, 0, 2198 2, 0, 0, 2199 2, 0, 0, 2200 2, 0, 0, 2201 2, 0, 0, 2202 2, 0, 0, 2203 2, 0, 0, 2204 2, 0, 0, 2205 2, 0, 0, 2206 2, 0, 0, 2207 2, 0, 0, 2208 2, 0, 0, 2209 2, 0, 0, 2210 2, 0, 0, 2211 2, 0, 0, 2212 2, 0, 0, 2213 2, 0, 0, 2214 2, 0, 0, 2215 2, 0, 0, 2216 2, 0, 0, 2217 2, 0, 0, 2218 2, 0, 0, 2219 2, 0, 0, 2220 2, 0, 0, 2221 2, 0, 0, 2222 2, 0, 0, 2223 2, 0, 0, 2224 2, 0, 0, 2225 2, 0, 0, 2226 2, 0, 0, 2227 2, 0, 0, 2228 2, 0, 0, 2229 2, 0, 0, 2230 2, 0, 0, 2231 2, 0, 0, 2232 2, 0, 0, 2233 2, 0, 0, 2234 2, 0, 0, 2235 2, 0, 0, 2236 2, 0, 0, 2237 2, 0, 0, 2238 2, 0, 0, 2239 2, 0, 0, 2240 2, 0, 0, 2241 2, 0, 0, 2242 2, 0, 0, 2243 2, 0, 0, 2244 2, 0, 0, 2245 2, 0, 0, 2246 2, 0, 0, 2247 2, 0, 0, 2248 2, 0, 0, 2249 2, 0, 0, 2250 2, 0, 0, 2251 2, 0, 0, 2252 2, 0, 0, 2253 2, 0, 0, 2254 2, 0, 0, 2255 2, 0, 0, 2256 2, 0, 0, 2257 2, 0, 0, 2258 2, 0, 0, 2259 2, 0, 0, 2260 2, 0, 0, 2261 2, 0, 0, 2262 2, 0, 0, 2263 2, 0, 0, 2264 2, 0, 0, 2265 2, 0, 0, 2266 2, 0, 0, 2267 2, 0, 0, 2268 2, 0, 0, 2269 2, 0, 0, 2270 2, 0, 0, 2271 2, 0, 0, 2272 2, 0, 0, 2273 2, 0, 0, 2274 2, 0, 0, 2275 2, 0, 0, 2276 2, 0, 0, 2277 2, 0, 0, 2278 2, 0, 0, 2279 2, 0, 0, 2280 2, 0, 0, 2281 2, 0, 0, 2282 2, 0, 0, 2283 2, 0, 0, 2284 2, 0, 0, 2285 2, 0, 0, 2286 2, 0, 0, 2287 2, 0, 0, 2288 2, 0, 0, 2289 2, 0, 0, 2290 2, 0, 0, 2291 2, 0, 0, 2292 2, 0, 0, 2293 2, 0, 0, 2294 2, 0, 0, 2295 2, 0, 0, 2296 2, 0, 0, 2297 2, 0, 0, 2298 2, 0, 0, 2299 2, 0, 0, 2300 2, 0, 0, 2301 2, 0, 0, 2302 2, 0, 0, 2303 2, 0, 0, 2304 2, 0, 0, 2305 2, 0, 0, 2306 2, 0, 0, 2307 2, 0, 0, 2308 2, 0, 0, 2309 2, 0, 0, 2310 2, 0, 0, 2311 2, 0, 0, 2312 2, 0, 0, 2313 2, 0, 0, 2314 2, 0, 0, 2315 2, 0, 0, 2316 2, 0, 0, 2317 2, 0, 0, 2318 2, 0, 0, 2319 2, 0, 0, 2320 2, 0, 0, 2321 2, 0, 0, 2322 2, 0, 0, 2323 2, 0, 0, 2324 2, 0, 0, 2325 2, 0, 0, 2326 2, 0, 0, 2327 2, 0, 0, 2328 2, 0, 0, 2329 2, 0, 0, 2330 2, 0, 0, 2331 2, 0, 0, 2332 2, 0, 0, 2333 2, 0, 0, 2334 2, 0, 0, 2335 2, 0, 0, 2336 2, 0, 0, 2337 2, 0, 0, 2338 2, 0, 0, 2339 2, 0, 0, 2340 2, 0, 0, 2341 2, 0, 0, 2342 2, 0, 0, 2343 2, 0, 0, 2344 2, 0, 0, 2345 2, 0, 0, 2346 2, 0, 0, 2347 2, 0, 0, 2348 2, 0, 0, 2349 2, 0, 0, 2350 2, 0, 0, 2351 2, 0, 0, 2352 2, 0, 0, 2353 2, 0, 0, 2354 2, 0, 0, 2355 2, 0, 0, 2356 2, 0, 0, 2357 2, 0, 0, 2358 2, 0, 0, 2359 2, 0, 0, 2360 2, 0, 0, 2361 2, 0, 0, 2362 2, 0, 0, 2363 2, 0, 0, 2364 2, 0, 0, 2365 2, 0, 0, 2366 2, 0, 0, 2367 2, 0, 0, 2368 2, 0, 0, 2369 2, 0, 0, 2370 2, 0, 0, 2371 2, 0, 0, 2372 2, 0, 0, 2373 2, 0, 0, 2374 2, 0, 0, 2375 2, 0, 0, 2376 2, 0, 0, 2377 2, 0, 0, 2378 2, 0, 0, 2379 2, 0, 0, 2380 2, 0, 0, 2381 2, 0, 0, 2382 2, 0, 0, 2383 2, 0, 0, 2384 2, 0, 0, 2385 2, 0, 0, 2386 2, 0, 0, 2387 2, 0, 0, 2388 2, 0, 0, 2389 2, 0, 0, 2390 2, 0, 0, 2391 2, 0, 0, 2392 2, 0, 0, 2393 2, 0, 0, 2394 2, 0, 0, 2395 2, 0, 0, 2396 2, 0, 0, 2397 2, 0, 0, 2398 2, 0, 0, 2399 2, 0, 0, 2400 2, 0, 0, 2401 2, 0, 0, 2402 2, 0, 0, 2403 2, 0, 0, 2404 2, 0, 0, 2405 2, 0, 0, 2406 2, 0, 0, 2407 2, 0, 0, 2408 2, 0, 0, 2409 2, 0, 0, 2410 2, 0, 0, 2411 2, 0, 0, 2412 2, 0, 0, 2413 2, 0, 0, 2414 2, 0, 0, 2415 2, 0, 0, 2416 2, 0, 0, 2417 2, 0, 0, 2418 2, 0, 0, 2419 2, 0, 0, 2420 2, 0, 0, 2421 3, 0, 0, 2422 3, 0, 0, 2423 3, 0, 0, 2424 3, 0, 0, 2425 3, 0, 0, 2426 3, 0, 0, 2427 3, 0, 0, 2428 3, 0, 0, 2429 3, 0, 0, 2430 3, 0, 0, 2431 3, 0, 0, 2432 3, 0, 0, 2433 3, 0, 0, 2434 3, 0, 0, 2435 3, 0, 0, 2436 3, 0, 0, 2437 3, 0, 0, 2438 3, 0, 0, 2439 3, 0, 0, 2440 3, 0, 0, 2441 3, 0, 0, 2442 3, 0, 0, 2443 3, 0, 0, 2444 3, 0, 0, 2445 3, 0, 0, 2446 3, 0, 0, 2447 3, 0, 0, 2448 3, 0, 0, 2449 3, 0, 0, 2450 3, 0, 0, 2451 3, 0, 0, 2452 3, 0, 0, 2453 3, 0, 0, 2454 3, 0, 0, 2455 3, 0, 0, 2456 3, 0, 0, 2457 3, 0, 0, 2458 3, 0, 0, 2459 3, 0, 0, 2460 3, 0, 0, 2461 3, 0, 0, 2462 3, 0, 0, 2463 3, 0, 0, 2464 3, 0, 0, 2465 3, 0, 0, 2466 3, 0, 0, 2467 3, 0, 0, 2468 3, 0, 0, 2469 3, 0, 0, 2470 3, 0, 0, 2471 3, 0, 0, 2472 3, 0, 0, 2473 3, 0, 0, 2474 3, 0, 0, 2475 3, 0, 0, 2476 3, 0, 0, 2477 3, 0, 0, 2478 3, 0, 0, 2479 3, 0, 0, 2480 3, 0, 0, 2481 3, 0, 0, 2482 3, 0, 0, 2483 3, 0, 0, 2484 3, 0, 0, 2485 3, 0, 0, 2486 3, 0, 0, 2487 3, 0, 0, 2488 3, 0, 0, 2489 3, 0, 0, 2490 3, 0, 0, 2491 3, 0, 0, 2492 3, 0, 0, 2493 3, 0, 0, 2494 3, 0, 0, 2495 3, 0, 0, 2496 3, 0, 0, 2497 3, 0, 0, 2498 3, 0, 0, 2499 3, 0, 0, 2500 3, 0, 0, 2501 3, 0, 0, 2502 3, 0, 0, 2503 3, 0, 0, 2504 3, 0, 0, 2505 3, 0, 0, 2506 3, 0, 0, 2507 3, 0, 0, 2508 3, 0, 0, 2509 3, 0, 0, 2510 3, 0, 0, 2511 3, 0, 0, 2512 3, 0, 0, 2513 3, 0, 0, 2514 3, 0, 0, 2515 3, 0, 0, 2516 3, 0, 0, 2517 3, 0, 0, 2518 3, 0, 0, 2519 3, 0, 0, 2520 3, 0, 0, 2521 3, 0, 0, 2522 3, 0, 0, 2523 3, 0, 0, 2524 3, 0, 0, 2525 3, 0, 0, 2526 3, 0, 0, 2527 3, 0, 0, 2528 3, 0, 0, 2529 3, 0, 0, 2530 3, 0, 0, 2531 3, 0, 0, 2532 3, 0, 0, 2533 3, 0, 0, 2534 3, 0, 0, 2535 3, 0, 0, 2536 3, 0, 0, 2537 3, 0, 0, 2538 3, 0, 0, 2539 3, 0, 0, 2540 3, 0, 0, 2541 3, 0, 0, 2542 3, 0, 0, 2543 3, 0, 0, 2544 3, 0, 0, 2545 3, 0, 0, 2546 3, 0, 0, 2547 3, 0, 0, 2548 3, 0, 0, 2549 3, 0, 0, 2550 3, 0, 0, 2551 3, 0, 0, 2552 3, 0, 0, 2553 3, 0, 0, 2554 3, 0, 0, 2555 3, 0, 0, 2556 3, 0, 0, 2557 3, 0, 0, 2558 3, 0, 0, 2559 3, 0, 0, 2560 3, 0, 0, 2561 3, 0, 0, 2562 3, 0, 0, 2563 3, 0, 0, 2564 3, 0, 0, 2565 3, 0, 0, 2566 3, 0, 0, 2567 3, 0, 0, 2568 3, 0, 0, 2569 3, 0, 0, 2570 3, 0, 0, 2571 3, 0, 0, 2572 3, 0, 0, 2573 3, 0, 0, 2574 3, 0, 0, 2575 3, 0, 0, 2576 3, 0, 0, 2577 3, 0, 0, 2578 3, 0, 0, 2579 3, 0, 0, 2580 3, 0, 0, 2581 3, 0, 0, 2582 3, 0, 0, 2583 3, 0, 0, 2584 3, 0, 0, 2585 3, 0, 0, 2586 3, 0, 0, 2587 3, 0, 0, 2588 3, 0, 0, 2589 3, 0, 0, 2590 3, 0, 0, 2591 3, 0, 0, 2592 3, 0, 0, 2593 3, 0, 0, 2594 3, 0, 0, 2595 3, 0, 0, 2596 3, 0, 0, 2597 3, 0, 0, 2598 3, 0, 0, 2599 3, 0, 0, 2600 3, 0, 0, 2601 3, 0, 0, 2602 3, 0, 0, 2603 3, 0, 0, 2604 3, 0, 0, 2605 3, 0, 0, 2606 3, 0, 0, 2607 3, 0, 0, 2608 3, 0, 0, 2609 3, 0, 0, 2610 3, 0, 0, 2611 3, 0, 0, 2612 3, 0, 0, 2613 3, 0, 0, 2614 3, 0, 0, 2615 3, 0, 0, 2616 3, 0, 0, 2617 3, 0, 0, 2618 3, 0, 0, 2619 3, 0, 0, 2620 3, 0, 0, 2621 3, 0, 0, 2622 3, 0, 0, 2623 3, 0, 0, 2624 3, 0, 0, 2625 3, 0, 0, 2626 3, 0, 0, 2627 3, 0, 0, 2628 3, 0, 0, 2629 3, 0, 0, 2630 3, 0, 0, 2631 3, 0, 0, 2632 3, 0, 0, 2633 3, 0, 0, 2634 3, 0, 0, 2635 3, 0, 0, 2636 3, 0, 0, 2637 3, 0, 0, 2638 3, 0, 0, 2639 3, 0, 0, 2640 3, 0, 0, 2641 3, 0, 0, 2642 3, 0, 0, 2643 3, 0, 0, 2644 3, 0, 0, 2645 3, 0, 0, 2646 3, 0, 0, 2647 3, 0, 0, 2648 3, 0, 0, 2649 3, 0, 0, 2650 3, 0, 0, 2651 3, 0, 0, 2652 3, 0, 0, 2653 3, 0, 0, 2654 3, 0, 0, 2655 3, 0, 0, 2656 3, 0, 0, 2657 3, 0, 0, 2658 3, 0, 0, 2659 3, 0, 0, 2660 3, 0, 0, 2661 3, 0, 0, 2662 3, 0, 0, 2663 3, 0, 0, 2664 3, 0, 0, 2665 3, 0, 0, 2666 3, 0, 0, 2667 3, 0, 0, 2668 3, 0, 0, 2669 3, 0, 0, 2670 3, 0, 0, 2671 3, 0, 0, 2672 3, 0, 0, 2673 3, 0, 0, 2674 3, 0, 0, 2675 3, 0, 0, 2676 3, 0, 0, 2677 3, 0, 0, 2678 3, 0, 0, 2679 3, 0, 0, 2680 3, 0, 0, 2681 3, 0, 0, 2682 3, 0, 0, 2683 3, 0, 0, 2684 3, 0, 0 2685 }; 2686 2687 #define NB_CYL 4 2688 #define CYL_VRTX_COUNT 134u 2689 #define CYL_TRG_COUNT 264u 2690 2691 int 2692 main(int argc, char** argv) 2693 { 2694 struct mem_allocator allocator; 2695 struct senc3d_device* dev = NULL; 2696 struct senc3d_scene* scn = NULL; 2697 struct context ctx = CONTEXT_NULL__; 2698 unsigned e, count; 2699 (void)argc, (void)argv; 2700 2701 OK(mem_init_proxy_allocator(&allocator, &mem_default_allocator)); 2702 OK(senc3d_device_create(NULL, &allocator, SENC3D_NTHREADS_DEFAULT, 1, &dev)); 2703 2704 /* Create a scene */ 2705 ctx.positions = some_triangles_vertices; 2706 ctx.indices = some_triangles_triangles; 2707 ctx.properties = some_triangles_properties; 2708 OK(senc3d_scene_create(dev, 2709 SENC3D_CONVENTION_NORMAL_FRONT | SENC3D_CONVENTION_NORMAL_INSIDE, 2710 some_triangles_triangles_count, get_indices, get_media_from_properties, 2711 some_triangles_vertices_count, get_position, &ctx, &scn)); 2712 2713 OK(senc3d_scene_get_vertices_count(scn, &count)); 2714 CHK(count == NB_CYL * CYL_VRTX_COUNT); 2715 OK(senc3d_scene_get_triangles_count(scn, &count)); 2716 CHK(count == NB_CYL * CYL_TRG_COUNT); 2717 2718 OK(senc3d_scene_get_enclosure_count(scn, &count)); 2719 CHK(count == 1 + NB_CYL); 2720 FOR_EACH(e, 0, count) { 2721 struct senc3d_enclosure* enclosure; 2722 struct senc3d_enclosure_header header; 2723 OK(senc3d_scene_get_enclosure(scn, e, &enclosure)); 2724 OK(senc3d_enclosure_get_header(enclosure, &header)); 2725 CHK(header.primitives_count == 2726 (e ? CYL_TRG_COUNT : NB_CYL * CYL_TRG_COUNT)); 2727 OK(senc3d_enclosure_ref_put(enclosure)); 2728 } 2729 2730 OK(senc3d_scene_ref_put(scn)); 2731 OK(senc3d_device_ref_put(dev)); 2732 2733 check_memory_allocator(&allocator); 2734 mem_shutdown_proxy_allocator(&allocator); 2735 CHK(mem_allocated_size() == 0); 2736 return 0; 2737 }