diff --git a/README.md b/README.md index fc8adee..1702ef3 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,11 @@ # STLite-ACM -本项目为 ACM 班数据结构课程(CS1951,2024 春季学期)的课程作业,要求实现与 C++ 标准库类似的数据结构,包括迭代器等。框架接口在已本仓库中给出,只需要实现 `.hpp` 文件内所要求的内容即可。 +本项目为 ACM 班数据结构课程(CS1951,2024 春季学期)的课程作业,要求实现与 C++ +标准库类似的数据结构,包括迭代器等。框架接口在已本仓库中给出,只需要实现 `.hpp` 文件内所要求的内容即可。 -请注意,在本作业中,只允许使用 `cstdio`,`cstring`,`iostream`,`cmath`,`string` 五个 C++ 标准库,如需使用其他功能请自行实现。在下发代码中有 `exceptions.hpp` 和 `utility.hpp` 两个辅助文件,你需要使用其中的异常处理和 `sjtu::pair` 完成 STLite 的实现,但不允许修改其中的任何内容。 +请注意,在本作业中,只允许使用 `cstdio`,`cstring`,`iostream`,`cmath`,`string` 五个 C++ +标准库,如需使用其他功能请自行实现。在下发代码中有 `exceptions.hpp` 和 `utility.hpp` +两个辅助文件,你需要使用其中的异常处理和 `sjtu::pair` 完成 STLite 的实现,但不允许修改其中的任何内容。 本学期要求完成三个容器:`sjtu::vector`,`sjtu::priority_queue`,`sjtu::map`. @@ -12,7 +15,6 @@ 最后,我们会检查内存泄漏。 - ## 评测方法 测试数据将全部下发(见本仓库),供调试使用。最终测试将会在 OJ 上进行,并进行 code review。 @@ -29,6 +31,8 @@ `vector`:3 月 3 日(第二周周日)18:30 前 +`priority_queue`:3 月 24 日(第五周周日)18:30 前 + 未完待续 ## 迟交惩罚 diff --git a/priority_queue/README.md b/priority_queue/README.md new file mode 100644 index 0000000..500481f --- /dev/null +++ b/priority_queue/README.md @@ -0,0 +1,42 @@ +# priority_queue + +## 实现细节 + +最终仅需要提交 `priority_queue.hpp` 的内容。 + +你需要完成的内容: + ++ 构造函数(两种) ++ 析构函数 ++ 赋值重载 ++ 获得队首元素 `top` ++ 元素入队 `push` ++ 队首元素出队 `pop` ++ 队列大小 `size` ++ 判断队列是否为空 `empty` ++ 队列合并 `merge` + +具体细节可以查看下发的 `priority_queue.hpp` 框架。 + +**注意:** + +- 你能使用的头文件仅限于下发框架中提供的头文件; +- `merge` 复杂度不能超过 $O(\log n)$,这意味着你可能需要写可并堆; +- 有测试内存泄漏的数据点; +- Compare 对某些特定的数据可能会抛出异常(exception),这时你应该终止正在进行的操作并将堆恢复原样。 + +**另外,A 班同学需要完成特定堆的复杂度分析报告,要求如下:** +- 请在**配对堆**,**斜堆**,**二项堆**中选择一个来完成; +- 对于每个操作,分析它的时间复杂度;涉及到均摊复杂度的,请具体分析; +- 请自行根据需要来阐明堆的一些定义和性质; +- 如果选择二项堆,你需要说明 `push` 的均摊复杂度是 $O(1)$。 + +## 分数构成 + +正常情况下,在 OJ 上通过测试数据可以获得 80% 的分数,CR 占 20% 的分数。 + +如果在 CR 时,发现有任何违规行为(包括但不限于使用其它头文件、使用非常规方法通过测试点以及 `merge` 复杂度超过 $O(\log n)$),原则上你的最终得分将为 0 分。 + +## 截止日期 + +3 月 24 日(第五周周日)18:30 前 \ No newline at end of file diff --git a/priority_queue/data/five.memcheck/answer.txt b/priority_queue/data/five.memcheck/answer.txt new file mode 100644 index 0000000..8dcc487 --- /dev/null +++ b/priority_queue/data/five.memcheck/answer.txt @@ -0,0 +1 @@ +OKAY diff --git a/priority_queue/data/five.memcheck/code.cpp b/priority_queue/data/five.memcheck/code.cpp new file mode 100644 index 0000000..64a96ec --- /dev/null +++ b/priority_queue/data/five.memcheck/code.cpp @@ -0,0 +1,52 @@ +#include +#include +#include +#include +#include +#include + +#include "priority_queue.hpp" + +int rand() { + static int reed = 1727417277; + return (reed += (reed << 5) + 172741827); +} + +bool testmerge() +{ + sjtu::priority_queue pq1, pq2; + static int buffer[900000]; + int pointer = 0; + const int MAXA = 400000; + const int MAXB = 400000; + for (int i = 1; i <= MAXA; i++) { + pq1.push(buffer[++pointer] = rand()); + } + for (int i = 1; i <= MAXB; i++) { + pq2.push(buffer[++pointer] = rand()); + } + pq1.merge(pq2); + if (!pq2.empty()) { + return false; + } else { + std::sort(buffer + 1, buffer + pointer + 1); + while (pointer > 0) { + if (pq1.top() != buffer[pointer]) { + return false; + } + pq1.pop(); + pointer--; + } + } + return true; +} + +int main(int argc, char *const argv[]) +{ + if (testmerge()) { + std::cout << "OKAY" << std::endl; + } else { + std::cout << "FAIL" << std::endl; + } + return 0; +} diff --git a/priority_queue/data/five/answer.txt b/priority_queue/data/five/answer.txt new file mode 100644 index 0000000..8dcc487 --- /dev/null +++ b/priority_queue/data/five/answer.txt @@ -0,0 +1 @@ +OKAY diff --git a/priority_queue/data/five/code.cpp b/priority_queue/data/five/code.cpp new file mode 100644 index 0000000..64a96ec --- /dev/null +++ b/priority_queue/data/five/code.cpp @@ -0,0 +1,52 @@ +#include +#include +#include +#include +#include +#include + +#include "priority_queue.hpp" + +int rand() { + static int reed = 1727417277; + return (reed += (reed << 5) + 172741827); +} + +bool testmerge() +{ + sjtu::priority_queue pq1, pq2; + static int buffer[900000]; + int pointer = 0; + const int MAXA = 400000; + const int MAXB = 400000; + for (int i = 1; i <= MAXA; i++) { + pq1.push(buffer[++pointer] = rand()); + } + for (int i = 1; i <= MAXB; i++) { + pq2.push(buffer[++pointer] = rand()); + } + pq1.merge(pq2); + if (!pq2.empty()) { + return false; + } else { + std::sort(buffer + 1, buffer + pointer + 1); + while (pointer > 0) { + if (pq1.top() != buffer[pointer]) { + return false; + } + pq1.pop(); + pointer--; + } + } + return true; +} + +int main(int argc, char *const argv[]) +{ + if (testmerge()) { + std::cout << "OKAY" << std::endl; + } else { + std::cout << "FAIL" << std::endl; + } + return 0; +} diff --git a/priority_queue/data/four.memcheck/answer.txt b/priority_queue/data/four.memcheck/answer.txt new file mode 100644 index 0000000..4a568d8 --- /dev/null +++ b/priority_queue/data/four.memcheck/answer.txt @@ -0,0 +1,26 @@ +Testing constructors, destructor and push... +599 598 597 596 595 594 593 592 591 590 589 588 587 586 585 584 583 582 581 580 579 578 577 576 575 574 573 572 571 570 569 568 567 566 565 564 563 562 561 560 559 558 557 556 555 554 553 552 551 550 549 548 547 546 545 544 543 542 541 540 539 538 537 536 535 534 533 532 531 530 529 528 527 526 525 524 523 522 521 520 519 518 517 516 515 514 513 512 511 510 509 508 507 506 505 504 503 502 501 500 499 498 497 496 495 494 493 492 491 490 489 488 487 486 485 484 483 482 481 480 479 478 477 476 475 474 473 472 471 470 469 468 467 466 465 464 463 462 461 460 459 458 457 456 455 454 453 452 451 450 449 448 447 446 445 444 443 442 441 440 439 438 437 436 435 434 433 432 431 430 429 428 427 426 425 424 423 422 421 420 419 418 417 416 415 414 413 412 411 410 409 408 407 406 405 404 403 402 401 400 399 398 397 396 395 394 393 392 391 390 389 388 387 386 385 384 383 382 381 380 379 378 377 376 375 374 373 372 371 370 369 368 367 366 365 364 363 362 361 360 359 358 357 356 355 354 353 352 351 350 349 348 347 346 345 344 343 342 341 340 339 338 337 336 335 334 333 332 331 330 329 328 327 326 325 324 323 322 321 320 319 318 317 316 315 314 313 312 311 310 309 308 307 306 305 304 303 302 301 300 +300 +300 +310 +1209 1208 1207 1206 1205 +300 +Testing size() +100 102 +102 +Testing Exception +Throw correctly +Testing guest +100 +90 89 +95 94 +90 89 +Testing samecopy +50 +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 +40 +78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 +Testing sort +49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +Testing extra +1111100111 1111100110 1111100101 1111100100 1111100011 1111100010 1111100001 1111100000 1111011111 1111011110 1111011101 1111011100 1111011011 1111011010 1111011001 1111011000 1111010111 1111010110 1111010101 1111010100 1111010011 1111010010 1111010001 1111010000 1111001111 1111001110 1111001101 1111001100 1111001011 1111001010 1111001001 1111001000 1111000111 1111000110 1111000101 1111000100 1111000011 1111000010 1111000001 1111000000 1110111111 1110111110 1110111101 1110111100 1110111011 1110111010 1110111001 1110111000 1110110111 1110110110 1110110101 1110110100 1110110011 1110110010 1110110001 1110110000 1110101111 1110101110 1110101101 1110101100 1110101011 1110101010 1110101001 1110101000 1110100111 1110100110 1110100101 1110100100 1110100011 1110100010 1110100001 1110100000 1110011111 1110011110 1110011101 1110011100 1110011011 1110011010 1110011001 1110011000 1110010111 1110010110 1110010101 1110010100 1110010011 1110010010 1110010001 1110010000 1110001111 1110001110 1110001101 1110001100 1110001011 1110001010 1110001001 1110001000 1110000111 1110000110 1110000101 1110000100 1110000011 1110000010 1110000001 1110000000 1101111111 1101111110 1101111101 1101111100 1101111011 1101111010 1101111001 1101111000 1101110111 1101110110 1101110101 1101110100 1101110011 1101110010 1101110001 1101110000 1101101111 1101101110 1101101101 1101101100 1101101011 1101101010 1101101001 1101101000 1101100111 1101100110 1101100101 1101100100 1101100011 1101100010 1101100001 1101100000 1101011111 1101011110 1101011101 1101011100 1101011011 1101011010 1101011001 1101011000 1101010111 1101010110 1101010101 1101010100 1101010011 1101010010 1101010001 1101010000 1101001111 1101001110 1101001101 1101001100 1101001011 1101001010 1101001001 1101001000 1101000111 1101000110 1101000101 1101000100 1101000011 1101000010 1101000001 1101000000 1100111111 1100111110 1100111101 1100111100 1100111011 1100111010 1100111001 1100111000 1100110111 1100110110 1100110101 1100110100 1100110011 1100110010 1100110001 1100110000 1100101111 1100101110 1100101101 1100101100 1100101011 1100101010 1100101001 1100101000 1100100111 1100100110 1100100101 1100100100 1100100011 1100100010 1100100001 1100100000 1100011111 1100011110 1100011101 1100011100 1100011011 1100011010 1100011001 1100011000 1100010111 1100010110 1100010101 1100010100 1100010011 1100010010 1100010001 1100010000 1100001111 1100001110 1100001101 1100001100 1100001011 1100001010 1100001001 1100001000 1100000111 1100000110 1100000101 1100000100 1100000011 1100000010 1100000001 1100000000 1011111111 1011111110 1011111101 1011111100 1011111011 1011111010 1011111001 1011111000 1011110111 1011110110 1011110101 1011110100 1011110011 1011110010 1011110001 1011110000 1011101111 1011101110 1011101101 1011101100 1011101011 1011101010 1011101001 1011101000 1011100111 1011100110 1011100101 1011100100 1011100011 1011100010 1011100001 1011100000 1011011111 1011011110 1011011101 1011011100 1011011011 1011011010 1011011001 1011011000 1011010111 1011010110 1011010101 1011010100 1011010011 1011010010 1011010001 1011010000 1011001111 1011001110 1011001101 1011001100 1011001011 1011001010 1011001001 1011001000 1011000111 1011000110 1011000101 1011000100 1011000011 1011000010 1011000001 1011000000 1010111111 1010111110 1010111101 1010111100 1010111011 1010111010 1010111001 1010111000 1010110111 1010110110 1010110101 1010110100 1010110011 1010110010 1010110001 1010110000 1010101111 1010101110 1010101101 1010101100 1010101011 1010101010 1010101001 1010101000 1010100111 1010100110 1010100101 1010100100 1010100011 1010100010 1010100001 1010100000 1010011111 1010011110 1010011101 1010011100 1010011011 1010011010 1010011001 1010011000 1010010111 1010010110 1010010101 1010010100 1010010011 1010010010 1010010001 1010010000 1010001111 1010001110 1010001101 1010001100 1010001011 1010001010 1010001001 1010001000 1010000111 1010000110 1010000101 1010000100 1010000011 1010000010 1010000001 1010000000 1001111111 1001111110 1001111101 1001111100 1001111011 1001111010 1001111001 1001111000 1001110111 1001110110 1001110101 1001110100 1001110011 1001110010 1001110001 1001110000 1001101111 1001101110 1001101101 1001101100 1001101011 1001101010 1001101001 1001101000 1001100111 1001100110 1001100101 1001100100 1001100011 1001100010 1001100001 1001100000 1001011111 1001011110 1001011101 1001011100 1001011011 1001011010 1001011001 1001011000 1001010111 1001010110 1001010101 1001010100 1001010011 1001010010 1001010001 1001010000 1001001111 1001001110 1001001101 1001001100 1001001011 1001001010 1001001001 1001001000 1001000111 1001000110 1001000101 1001000100 1001000011 1001000010 1001000001 1001000000 1000111111 1000111110 1000111101 1000111100 1000111011 1000111010 1000111001 1000111000 1000110111 1000110110 1000110101 1000110100 1000110011 1000110010 1000110001 1000110000 1000101111 1000101110 1000101101 1000101100 1000101011 1000101010 1000101001 1000101000 1000100111 1000100110 1000100101 1000100100 1000100011 1000100010 1000100001 1000100000 1000011111 1000011110 1000011101 1000011100 1000011011 1000011010 1000011001 1000011000 1000010111 1000010110 1000010101 1000010100 1000010011 1000010010 1000010001 1000010000 1000001111 1000001110 1000001101 1000001100 1000001011 1000001010 1000001001 1000001000 1000000111 1000000110 1000000101 1000000100 1000000011 1000000010 1000000001 1000000000 111111111 111111110 111111101 111111100 111111011 111111010 111111001 111111000 111110111 111110110 111110101 111110100 111110011 111110010 111110001 111110000 111101111 111101110 111101101 111101100 111101011 111101010 111101001 111101000 111100111 111100110 111100101 111100100 111100011 111100010 111100001 111100000 111011111 111011110 111011101 111011100 111011011 111011010 111011001 111011000 111010111 111010110 111010101 111010100 111010011 111010010 111010001 111010000 111001111 111001110 111001101 111001100 111001011 111001010 111001001 111001000 111000111 111000110 111000101 111000100 111000011 111000010 111000001 111000000 110111111 110111110 110111101 110111100 110111011 110111010 110111001 110111000 110110111 110110110 110110101 110110100 110110011 110110010 110110001 110110000 110101111 110101110 110101101 110101100 110101011 110101010 110101001 110101000 110100111 110100110 110100101 110100100 110100011 110100010 110100001 110100000 110011111 110011110 110011101 110011100 110011011 110011010 110011001 110011000 110010111 110010110 110010101 110010100 110010011 110010010 110010001 110010000 110001111 110001110 110001101 110001100 110001011 110001010 110001001 110001000 110000111 110000110 110000101 110000100 110000011 110000010 110000001 110000000 101111111 101111110 101111101 101111100 101111011 101111010 101111001 101111000 101110111 101110110 101110101 101110100 101110011 101110010 101110001 101110000 101101111 101101110 101101101 101101100 101101011 101101010 101101001 101101000 101100111 101100110 101100101 101100100 101100011 101100010 101100001 101100000 101011111 101011110 101011101 101011100 101011011 101011010 101011001 101011000 101010111 101010110 101010101 101010100 101010011 101010010 101010001 101010000 101001111 101001110 101001101 101001100 101001011 101001010 101001001 101001000 101000111 101000110 101000101 101000100 101000011 101000010 101000001 101000000 100111111 100111110 100111101 100111100 100111011 100111010 100111001 100111000 100110111 100110110 100110101 100110100 100110011 100110010 100110001 100110000 100101111 100101110 100101101 100101100 100101011 100101010 100101001 100101000 100100111 100100110 100100101 100100100 100100011 100100010 100100001 100100000 100011111 100011110 100011101 100011100 100011011 100011010 100011001 100011000 100010111 100010110 100010101 100010100 100010011 100010010 100010001 100010000 100001111 100001110 100001101 100001100 100001011 100001010 100001001 100001000 100000111 100000110 100000101 100000100 100000011 100000010 100000001 100000000 11111111 11111110 11111101 11111100 11111011 11111010 11111001 11111000 11110111 11110110 11110101 11110100 11110011 11110010 11110001 11110000 11101111 11101110 11101101 11101100 11101011 11101010 11101001 11101000 11100111 11100110 11100101 11100100 11100011 11100010 11100001 11100000 11011111 11011110 11011101 11011100 11011011 11011010 11011001 11011000 11010111 11010110 11010101 11010100 11010011 11010010 11010001 11010000 11001111 11001110 11001101 11001100 11001011 11001010 11001001 11001000 11000111 11000110 11000101 11000100 11000011 11000010 11000001 11000000 10111111 10111110 10111101 10111100 10111011 10111010 10111001 10111000 10110111 10110110 10110101 10110100 10110011 10110010 10110001 10110000 10101111 10101110 10101101 10101100 10101011 10101010 10101001 10101000 10100111 10100110 10100101 10100100 10100011 10100010 10100001 10100000 10011111 10011110 10011101 10011100 10011011 10011010 10011001 10011000 10010111 10010110 10010101 10010100 10010011 10010010 10010001 10010000 10001111 10001110 10001101 10001100 10001011 10001010 10001001 10001000 10000111 10000110 10000101 10000100 10000011 10000010 10000001 10000000 1111111 1111110 1111101 1111100 1111011 1111010 1111001 1111000 1110111 1110110 1110101 1110100 1110011 1110010 1110001 1110000 1101111 1101110 1101101 1101100 1101011 1101010 1101001 1101000 1100111 1100110 1100101 1100100 1100011 1100010 1100001 1100000 1011111 1011110 1011101 1011100 1011011 1011010 1011001 1011000 1010111 1010110 1010101 1010100 1010011 1010010 1010001 1010000 1001111 1001110 1001101 1001100 1001011 1001010 1001001 1001000 1000111 1000110 1000101 1000100 1000011 1000010 1000001 1000000 111111 111110 111101 111100 111011 111010 111001 111000 110111 110110 110101 110100 110011 110010 110001 110000 101111 101110 101101 101100 101011 101010 101001 101000 100111 100110 100101 100100 100011 100010 100001 100000 11111 11110 11101 11100 11011 11010 11001 11000 10111 10110 10101 10100 10011 10010 10001 10000 1111 1110 1101 1100 1011 1010 1001 1000 111 110 101 100 11 10 1 diff --git a/priority_queue/data/four.memcheck/code.cpp b/priority_queue/data/four.memcheck/code.cpp new file mode 100644 index 0000000..71ef7f1 --- /dev/null +++ b/priority_queue/data/four.memcheck/code.cpp @@ -0,0 +1,216 @@ +// provided by 徐植天 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "priority_queue.hpp" + +void TestConstructorAndPush(){ + std::cout << "Testing constructors, destructor and push..." << std::endl; + sjtu :: priority_queue q; + int up = 600; + for (int i = 0;i < up;i ++){ + q.push(i); + } + for (int i = 0;i < up / 2;i ++){ + std :: cout << q.top() << " "; + q.pop(); + } + std :: cout << std :: endl; + std :: cout << q.size() << std :: endl; + sjtu :: priority_queue nq(q); + std :: cout << nq.size() << std :: endl; + for (int i = up * 2;i < up * 2 + 10;i ++){ + nq.push(i); + } + std :: cout << nq.size() << std :: endl; + for (int i = 0;i < 5;i ++){ + std :: cout << nq.top() << " "; + nq.pop(); + } + std :: cout << std :: endl; + nq = q; + std :: cout << nq.size() << std :: endl; +} +void TestSize(){ + std::cout << "Testing size()" << std::endl; + sjtu :: priority_queueq,q2; + while (!q.empty()) q.pop(); + for (int i = 0;i < 100;i ++) q.push(i); + q2 = q; + q2.push(101),q2.push(102); + std :: cout << q.size() << " " << q2.size() << std :: endl; + q2 = q2; + std :: cout << q2.size() << std :: endl; +} + +void TestException(){ + std::cout << "Testing Exception" << std::endl; + sjtu :: priority_queueq,q2; + while (!q.empty()) q.pop(); + for (int i = 0;i < 100;i ++) q.push(i); + q2 = q; + for (int i = 0;i < 100;i ++) q2.pop(); + int s = 0; + try{ + q2.pop(); + }catch(...){ + ++ s; + } + try{ + std :: cout << q2.top() << std :: endl; + }catch(...){ + ++ s; + } + if (s == 2){ + std :: cout << "Throw correctly" << std :: endl; + } +} +struct guest{ + int x,y; + int getvalue() const{ + return x * 10 + y; + } + guest() : x(0),y(0){} + guest(int a,int b) : x(a),y(b){} + guest (const guest &other){ + x = other.x; + y = other.y; + } + guest &operator= (const guest &other){ + x = other.x; + y = other.y; + return *this; + } +}; +bool operator < (const guest &a,const guest &b){ + return a.x < b.x || (a.x == b.x && a.y < b.y); +} +void Testguest_sp(sjtu :: priority_queuetmp){ + for (int i = 90;i < 95;i ++){ + int x = i / 10; + int y = i % 10; + tmp.push(guest(x,y)); + } + std :: cout << tmp.size() << " " << tmp.top().getvalue() << std :: endl; +} +void Testguest(){ + std :: cout << "Testing guest" << std :: endl; + sjtu :: priority_queueq,q2; + while (!q.empty()) q.pop(); + for (int i = 0;i < 100;i ++){ + int x = i / 10; + int y = i % 10; + q.push(guest(x,y)); + } + std :: cout << q.size() << std :: endl; + q2 = q; + for (int i = 0;i < 10;i ++) q2.pop(); + std :: cout << q2.size() << " " << q2.top().getvalue() << std :: endl; + Testguest_sp(q2); + std :: cout << q2.size() << " " << q2.top().getvalue() << std :: endl; +} +void Testsamecopy(){ + std :: cout << "Testing samecopy" << std :: endl; + sjtu :: priority_queueq; + for (int i = 0;i < 50;i ++){ + int x = i * 2 / 10; + int y = i * 2 % 10; + q.push(guest(x,y)); + } + std :: cout << q.size() << std :: endl; + for (int i = 0;i < q.size();i ++){ + std :: cout << q.top().getvalue() << " "; + } + std :: cout << std :: endl; + q = q; + for (int i = 0;i < 10;i ++) q.pop(); + std :: cout << q.size() << std :: endl; + for (int i = 0;i < q.size();i ++){ + std :: cout << q.top().getvalue() << " "; + } + std :: cout << std :: endl; +} +void Testsort(){ + std :: cout << "Testing sort" << std :: endl; + sjtu :: priority_queueq; + for (int i = 0;i < 50;i ++){ + int x = i / 10; + int y = i % 10; + q.push(guest(x,y)); + } + for (int i = 0;i < 50;i ++){ + std :: cout << q.top().getvalue() << " "; + q.pop(); + } + std :: cout << std :: endl; +} +struct binary{ + int len; + int number[10]; + std :: string getexpression() const{ + std :: string ret = ""; + for (int i = 0;i < len;i ++) ret += char(48 + number[i]); + return ret; + } + binary(int *p = NULL,int l = 0){ + len = l; + for (int i = 0;i < l;i ++) number[i] = p[i]; + } + binary(const binary &other){ + len = other.len; + for (int i = 0;i < len;i ++) number[i] = other.number[i]; + } + binary &operator = (const binary &other){ + len = other.len; + for (int i = 0;i < len;i ++) number[i] = other.number[i]; + } +}; +bool operator < (const binary &a,const binary &b){ + if (a.len != b.len) return a.len < b.len; + for (int i = 0;i < a.len;i ++){ + if (a.number[i] < b.number[i]) return true; + if (a.number[i] > b.number[i]) return false; + } + return false; +} +void Testextra(){ + std :: cout << "Testing extra" << std :: endl; + sjtu :: priority_queueq; + int e[10]; + for (int i = 1;i < 1000;i ++){ + int len = 0,t = i; + while (t){ + e[len ++] = t % 2; + t /= 2; + } + for (int j = 0;j < len / 2;j ++){ + int tmp = e[j]; + e[j] = e[len - 1 - j]; + e[len - 1 - j] = tmp; + } + q.push(binary(e,len)); + } + for (int i = 1;i < 1000;i ++){ + std :: cout << q.top().getexpression() << " "; + q.pop(); + } + std :: cout << std :: endl; +} +int main(){ + TestConstructorAndPush(); + TestSize(); + TestException(); + Testguest(); + Testsamecopy(); + Testsort(); + Testextra(); + return 0; +} diff --git a/priority_queue/data/four/answer.txt b/priority_queue/data/four/answer.txt new file mode 100644 index 0000000..4a568d8 --- /dev/null +++ b/priority_queue/data/four/answer.txt @@ -0,0 +1,26 @@ +Testing constructors, destructor and push... +599 598 597 596 595 594 593 592 591 590 589 588 587 586 585 584 583 582 581 580 579 578 577 576 575 574 573 572 571 570 569 568 567 566 565 564 563 562 561 560 559 558 557 556 555 554 553 552 551 550 549 548 547 546 545 544 543 542 541 540 539 538 537 536 535 534 533 532 531 530 529 528 527 526 525 524 523 522 521 520 519 518 517 516 515 514 513 512 511 510 509 508 507 506 505 504 503 502 501 500 499 498 497 496 495 494 493 492 491 490 489 488 487 486 485 484 483 482 481 480 479 478 477 476 475 474 473 472 471 470 469 468 467 466 465 464 463 462 461 460 459 458 457 456 455 454 453 452 451 450 449 448 447 446 445 444 443 442 441 440 439 438 437 436 435 434 433 432 431 430 429 428 427 426 425 424 423 422 421 420 419 418 417 416 415 414 413 412 411 410 409 408 407 406 405 404 403 402 401 400 399 398 397 396 395 394 393 392 391 390 389 388 387 386 385 384 383 382 381 380 379 378 377 376 375 374 373 372 371 370 369 368 367 366 365 364 363 362 361 360 359 358 357 356 355 354 353 352 351 350 349 348 347 346 345 344 343 342 341 340 339 338 337 336 335 334 333 332 331 330 329 328 327 326 325 324 323 322 321 320 319 318 317 316 315 314 313 312 311 310 309 308 307 306 305 304 303 302 301 300 +300 +300 +310 +1209 1208 1207 1206 1205 +300 +Testing size() +100 102 +102 +Testing Exception +Throw correctly +Testing guest +100 +90 89 +95 94 +90 89 +Testing samecopy +50 +98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 +40 +78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 +Testing sort +49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +Testing extra +1111100111 1111100110 1111100101 1111100100 1111100011 1111100010 1111100001 1111100000 1111011111 1111011110 1111011101 1111011100 1111011011 1111011010 1111011001 1111011000 1111010111 1111010110 1111010101 1111010100 1111010011 1111010010 1111010001 1111010000 1111001111 1111001110 1111001101 1111001100 1111001011 1111001010 1111001001 1111001000 1111000111 1111000110 1111000101 1111000100 1111000011 1111000010 1111000001 1111000000 1110111111 1110111110 1110111101 1110111100 1110111011 1110111010 1110111001 1110111000 1110110111 1110110110 1110110101 1110110100 1110110011 1110110010 1110110001 1110110000 1110101111 1110101110 1110101101 1110101100 1110101011 1110101010 1110101001 1110101000 1110100111 1110100110 1110100101 1110100100 1110100011 1110100010 1110100001 1110100000 1110011111 1110011110 1110011101 1110011100 1110011011 1110011010 1110011001 1110011000 1110010111 1110010110 1110010101 1110010100 1110010011 1110010010 1110010001 1110010000 1110001111 1110001110 1110001101 1110001100 1110001011 1110001010 1110001001 1110001000 1110000111 1110000110 1110000101 1110000100 1110000011 1110000010 1110000001 1110000000 1101111111 1101111110 1101111101 1101111100 1101111011 1101111010 1101111001 1101111000 1101110111 1101110110 1101110101 1101110100 1101110011 1101110010 1101110001 1101110000 1101101111 1101101110 1101101101 1101101100 1101101011 1101101010 1101101001 1101101000 1101100111 1101100110 1101100101 1101100100 1101100011 1101100010 1101100001 1101100000 1101011111 1101011110 1101011101 1101011100 1101011011 1101011010 1101011001 1101011000 1101010111 1101010110 1101010101 1101010100 1101010011 1101010010 1101010001 1101010000 1101001111 1101001110 1101001101 1101001100 1101001011 1101001010 1101001001 1101001000 1101000111 1101000110 1101000101 1101000100 1101000011 1101000010 1101000001 1101000000 1100111111 1100111110 1100111101 1100111100 1100111011 1100111010 1100111001 1100111000 1100110111 1100110110 1100110101 1100110100 1100110011 1100110010 1100110001 1100110000 1100101111 1100101110 1100101101 1100101100 1100101011 1100101010 1100101001 1100101000 1100100111 1100100110 1100100101 1100100100 1100100011 1100100010 1100100001 1100100000 1100011111 1100011110 1100011101 1100011100 1100011011 1100011010 1100011001 1100011000 1100010111 1100010110 1100010101 1100010100 1100010011 1100010010 1100010001 1100010000 1100001111 1100001110 1100001101 1100001100 1100001011 1100001010 1100001001 1100001000 1100000111 1100000110 1100000101 1100000100 1100000011 1100000010 1100000001 1100000000 1011111111 1011111110 1011111101 1011111100 1011111011 1011111010 1011111001 1011111000 1011110111 1011110110 1011110101 1011110100 1011110011 1011110010 1011110001 1011110000 1011101111 1011101110 1011101101 1011101100 1011101011 1011101010 1011101001 1011101000 1011100111 1011100110 1011100101 1011100100 1011100011 1011100010 1011100001 1011100000 1011011111 1011011110 1011011101 1011011100 1011011011 1011011010 1011011001 1011011000 1011010111 1011010110 1011010101 1011010100 1011010011 1011010010 1011010001 1011010000 1011001111 1011001110 1011001101 1011001100 1011001011 1011001010 1011001001 1011001000 1011000111 1011000110 1011000101 1011000100 1011000011 1011000010 1011000001 1011000000 1010111111 1010111110 1010111101 1010111100 1010111011 1010111010 1010111001 1010111000 1010110111 1010110110 1010110101 1010110100 1010110011 1010110010 1010110001 1010110000 1010101111 1010101110 1010101101 1010101100 1010101011 1010101010 1010101001 1010101000 1010100111 1010100110 1010100101 1010100100 1010100011 1010100010 1010100001 1010100000 1010011111 1010011110 1010011101 1010011100 1010011011 1010011010 1010011001 1010011000 1010010111 1010010110 1010010101 1010010100 1010010011 1010010010 1010010001 1010010000 1010001111 1010001110 1010001101 1010001100 1010001011 1010001010 1010001001 1010001000 1010000111 1010000110 1010000101 1010000100 1010000011 1010000010 1010000001 1010000000 1001111111 1001111110 1001111101 1001111100 1001111011 1001111010 1001111001 1001111000 1001110111 1001110110 1001110101 1001110100 1001110011 1001110010 1001110001 1001110000 1001101111 1001101110 1001101101 1001101100 1001101011 1001101010 1001101001 1001101000 1001100111 1001100110 1001100101 1001100100 1001100011 1001100010 1001100001 1001100000 1001011111 1001011110 1001011101 1001011100 1001011011 1001011010 1001011001 1001011000 1001010111 1001010110 1001010101 1001010100 1001010011 1001010010 1001010001 1001010000 1001001111 1001001110 1001001101 1001001100 1001001011 1001001010 1001001001 1001001000 1001000111 1001000110 1001000101 1001000100 1001000011 1001000010 1001000001 1001000000 1000111111 1000111110 1000111101 1000111100 1000111011 1000111010 1000111001 1000111000 1000110111 1000110110 1000110101 1000110100 1000110011 1000110010 1000110001 1000110000 1000101111 1000101110 1000101101 1000101100 1000101011 1000101010 1000101001 1000101000 1000100111 1000100110 1000100101 1000100100 1000100011 1000100010 1000100001 1000100000 1000011111 1000011110 1000011101 1000011100 1000011011 1000011010 1000011001 1000011000 1000010111 1000010110 1000010101 1000010100 1000010011 1000010010 1000010001 1000010000 1000001111 1000001110 1000001101 1000001100 1000001011 1000001010 1000001001 1000001000 1000000111 1000000110 1000000101 1000000100 1000000011 1000000010 1000000001 1000000000 111111111 111111110 111111101 111111100 111111011 111111010 111111001 111111000 111110111 111110110 111110101 111110100 111110011 111110010 111110001 111110000 111101111 111101110 111101101 111101100 111101011 111101010 111101001 111101000 111100111 111100110 111100101 111100100 111100011 111100010 111100001 111100000 111011111 111011110 111011101 111011100 111011011 111011010 111011001 111011000 111010111 111010110 111010101 111010100 111010011 111010010 111010001 111010000 111001111 111001110 111001101 111001100 111001011 111001010 111001001 111001000 111000111 111000110 111000101 111000100 111000011 111000010 111000001 111000000 110111111 110111110 110111101 110111100 110111011 110111010 110111001 110111000 110110111 110110110 110110101 110110100 110110011 110110010 110110001 110110000 110101111 110101110 110101101 110101100 110101011 110101010 110101001 110101000 110100111 110100110 110100101 110100100 110100011 110100010 110100001 110100000 110011111 110011110 110011101 110011100 110011011 110011010 110011001 110011000 110010111 110010110 110010101 110010100 110010011 110010010 110010001 110010000 110001111 110001110 110001101 110001100 110001011 110001010 110001001 110001000 110000111 110000110 110000101 110000100 110000011 110000010 110000001 110000000 101111111 101111110 101111101 101111100 101111011 101111010 101111001 101111000 101110111 101110110 101110101 101110100 101110011 101110010 101110001 101110000 101101111 101101110 101101101 101101100 101101011 101101010 101101001 101101000 101100111 101100110 101100101 101100100 101100011 101100010 101100001 101100000 101011111 101011110 101011101 101011100 101011011 101011010 101011001 101011000 101010111 101010110 101010101 101010100 101010011 101010010 101010001 101010000 101001111 101001110 101001101 101001100 101001011 101001010 101001001 101001000 101000111 101000110 101000101 101000100 101000011 101000010 101000001 101000000 100111111 100111110 100111101 100111100 100111011 100111010 100111001 100111000 100110111 100110110 100110101 100110100 100110011 100110010 100110001 100110000 100101111 100101110 100101101 100101100 100101011 100101010 100101001 100101000 100100111 100100110 100100101 100100100 100100011 100100010 100100001 100100000 100011111 100011110 100011101 100011100 100011011 100011010 100011001 100011000 100010111 100010110 100010101 100010100 100010011 100010010 100010001 100010000 100001111 100001110 100001101 100001100 100001011 100001010 100001001 100001000 100000111 100000110 100000101 100000100 100000011 100000010 100000001 100000000 11111111 11111110 11111101 11111100 11111011 11111010 11111001 11111000 11110111 11110110 11110101 11110100 11110011 11110010 11110001 11110000 11101111 11101110 11101101 11101100 11101011 11101010 11101001 11101000 11100111 11100110 11100101 11100100 11100011 11100010 11100001 11100000 11011111 11011110 11011101 11011100 11011011 11011010 11011001 11011000 11010111 11010110 11010101 11010100 11010011 11010010 11010001 11010000 11001111 11001110 11001101 11001100 11001011 11001010 11001001 11001000 11000111 11000110 11000101 11000100 11000011 11000010 11000001 11000000 10111111 10111110 10111101 10111100 10111011 10111010 10111001 10111000 10110111 10110110 10110101 10110100 10110011 10110010 10110001 10110000 10101111 10101110 10101101 10101100 10101011 10101010 10101001 10101000 10100111 10100110 10100101 10100100 10100011 10100010 10100001 10100000 10011111 10011110 10011101 10011100 10011011 10011010 10011001 10011000 10010111 10010110 10010101 10010100 10010011 10010010 10010001 10010000 10001111 10001110 10001101 10001100 10001011 10001010 10001001 10001000 10000111 10000110 10000101 10000100 10000011 10000010 10000001 10000000 1111111 1111110 1111101 1111100 1111011 1111010 1111001 1111000 1110111 1110110 1110101 1110100 1110011 1110010 1110001 1110000 1101111 1101110 1101101 1101100 1101011 1101010 1101001 1101000 1100111 1100110 1100101 1100100 1100011 1100010 1100001 1100000 1011111 1011110 1011101 1011100 1011011 1011010 1011001 1011000 1010111 1010110 1010101 1010100 1010011 1010010 1010001 1010000 1001111 1001110 1001101 1001100 1001011 1001010 1001001 1001000 1000111 1000110 1000101 1000100 1000011 1000010 1000001 1000000 111111 111110 111101 111100 111011 111010 111001 111000 110111 110110 110101 110100 110011 110010 110001 110000 101111 101110 101101 101100 101011 101010 101001 101000 100111 100110 100101 100100 100011 100010 100001 100000 11111 11110 11101 11100 11011 11010 11001 11000 10111 10110 10101 10100 10011 10010 10001 10000 1111 1110 1101 1100 1011 1010 1001 1000 111 110 101 100 11 10 1 diff --git a/priority_queue/data/four/code.cpp b/priority_queue/data/four/code.cpp new file mode 100644 index 0000000..71ef7f1 --- /dev/null +++ b/priority_queue/data/four/code.cpp @@ -0,0 +1,216 @@ +// provided by 徐植天 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "priority_queue.hpp" + +void TestConstructorAndPush(){ + std::cout << "Testing constructors, destructor and push..." << std::endl; + sjtu :: priority_queue q; + int up = 600; + for (int i = 0;i < up;i ++){ + q.push(i); + } + for (int i = 0;i < up / 2;i ++){ + std :: cout << q.top() << " "; + q.pop(); + } + std :: cout << std :: endl; + std :: cout << q.size() << std :: endl; + sjtu :: priority_queue nq(q); + std :: cout << nq.size() << std :: endl; + for (int i = up * 2;i < up * 2 + 10;i ++){ + nq.push(i); + } + std :: cout << nq.size() << std :: endl; + for (int i = 0;i < 5;i ++){ + std :: cout << nq.top() << " "; + nq.pop(); + } + std :: cout << std :: endl; + nq = q; + std :: cout << nq.size() << std :: endl; +} +void TestSize(){ + std::cout << "Testing size()" << std::endl; + sjtu :: priority_queueq,q2; + while (!q.empty()) q.pop(); + for (int i = 0;i < 100;i ++) q.push(i); + q2 = q; + q2.push(101),q2.push(102); + std :: cout << q.size() << " " << q2.size() << std :: endl; + q2 = q2; + std :: cout << q2.size() << std :: endl; +} + +void TestException(){ + std::cout << "Testing Exception" << std::endl; + sjtu :: priority_queueq,q2; + while (!q.empty()) q.pop(); + for (int i = 0;i < 100;i ++) q.push(i); + q2 = q; + for (int i = 0;i < 100;i ++) q2.pop(); + int s = 0; + try{ + q2.pop(); + }catch(...){ + ++ s; + } + try{ + std :: cout << q2.top() << std :: endl; + }catch(...){ + ++ s; + } + if (s == 2){ + std :: cout << "Throw correctly" << std :: endl; + } +} +struct guest{ + int x,y; + int getvalue() const{ + return x * 10 + y; + } + guest() : x(0),y(0){} + guest(int a,int b) : x(a),y(b){} + guest (const guest &other){ + x = other.x; + y = other.y; + } + guest &operator= (const guest &other){ + x = other.x; + y = other.y; + return *this; + } +}; +bool operator < (const guest &a,const guest &b){ + return a.x < b.x || (a.x == b.x && a.y < b.y); +} +void Testguest_sp(sjtu :: priority_queuetmp){ + for (int i = 90;i < 95;i ++){ + int x = i / 10; + int y = i % 10; + tmp.push(guest(x,y)); + } + std :: cout << tmp.size() << " " << tmp.top().getvalue() << std :: endl; +} +void Testguest(){ + std :: cout << "Testing guest" << std :: endl; + sjtu :: priority_queueq,q2; + while (!q.empty()) q.pop(); + for (int i = 0;i < 100;i ++){ + int x = i / 10; + int y = i % 10; + q.push(guest(x,y)); + } + std :: cout << q.size() << std :: endl; + q2 = q; + for (int i = 0;i < 10;i ++) q2.pop(); + std :: cout << q2.size() << " " << q2.top().getvalue() << std :: endl; + Testguest_sp(q2); + std :: cout << q2.size() << " " << q2.top().getvalue() << std :: endl; +} +void Testsamecopy(){ + std :: cout << "Testing samecopy" << std :: endl; + sjtu :: priority_queueq; + for (int i = 0;i < 50;i ++){ + int x = i * 2 / 10; + int y = i * 2 % 10; + q.push(guest(x,y)); + } + std :: cout << q.size() << std :: endl; + for (int i = 0;i < q.size();i ++){ + std :: cout << q.top().getvalue() << " "; + } + std :: cout << std :: endl; + q = q; + for (int i = 0;i < 10;i ++) q.pop(); + std :: cout << q.size() << std :: endl; + for (int i = 0;i < q.size();i ++){ + std :: cout << q.top().getvalue() << " "; + } + std :: cout << std :: endl; +} +void Testsort(){ + std :: cout << "Testing sort" << std :: endl; + sjtu :: priority_queueq; + for (int i = 0;i < 50;i ++){ + int x = i / 10; + int y = i % 10; + q.push(guest(x,y)); + } + for (int i = 0;i < 50;i ++){ + std :: cout << q.top().getvalue() << " "; + q.pop(); + } + std :: cout << std :: endl; +} +struct binary{ + int len; + int number[10]; + std :: string getexpression() const{ + std :: string ret = ""; + for (int i = 0;i < len;i ++) ret += char(48 + number[i]); + return ret; + } + binary(int *p = NULL,int l = 0){ + len = l; + for (int i = 0;i < l;i ++) number[i] = p[i]; + } + binary(const binary &other){ + len = other.len; + for (int i = 0;i < len;i ++) number[i] = other.number[i]; + } + binary &operator = (const binary &other){ + len = other.len; + for (int i = 0;i < len;i ++) number[i] = other.number[i]; + } +}; +bool operator < (const binary &a,const binary &b){ + if (a.len != b.len) return a.len < b.len; + for (int i = 0;i < a.len;i ++){ + if (a.number[i] < b.number[i]) return true; + if (a.number[i] > b.number[i]) return false; + } + return false; +} +void Testextra(){ + std :: cout << "Testing extra" << std :: endl; + sjtu :: priority_queueq; + int e[10]; + for (int i = 1;i < 1000;i ++){ + int len = 0,t = i; + while (t){ + e[len ++] = t % 2; + t /= 2; + } + for (int j = 0;j < len / 2;j ++){ + int tmp = e[j]; + e[j] = e[len - 1 - j]; + e[len - 1 - j] = tmp; + } + q.push(binary(e,len)); + } + for (int i = 1;i < 1000;i ++){ + std :: cout << q.top().getexpression() << " "; + q.pop(); + } + std :: cout << std :: endl; +} +int main(){ + TestConstructorAndPush(); + TestSize(); + TestException(); + Testguest(); + Testsamecopy(); + Testsort(); + Testextra(); + return 0; +} diff --git a/priority_queue/data/one.memcheck/answer.txt b/priority_queue/data/one.memcheck/answer.txt new file mode 100644 index 0000000..6c2bc0f --- /dev/null +++ b/priority_queue/data/one.memcheck/answer.txt @@ -0,0 +1,9 @@ +Testing constructors, destructor and push... +100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 +900 +9991 +900 +Testing size() +1000 +Throw correctly. +Testing compare exception...ok. diff --git a/priority_queue/data/one.memcheck/code.cpp b/priority_queue/data/one.memcheck/code.cpp new file mode 100644 index 0000000..dc1eddd --- /dev/null +++ b/priority_queue/data/one.memcheck/code.cpp @@ -0,0 +1,119 @@ +#include +#include +#include +#include + +#include "priority_queue.hpp" + +void TestConstructorAndPush() +{ + std::cout << "Testing constructors, destructor and push..." << std::endl; + sjtu::priority_queue pq; + for (int i = 100; i > 0; --i) { + pq.push(i); + } + while (!pq.empty()) { + std::cout << pq.top() << " "; + pq.pop(); + } + std::cout << std::endl; + for (int i = 1000; i > 100; --i) { + pq.push(i); + } + sjtu::priority_queue pqBack(pq); + std::cout << pqBack.size() << std::endl; + sjtu::priority_queue pqBB; + for (int i = 10; i <= 10000; ++i) { + pqBB.push(i); + } + std::cout << pqBB.size() << std::endl; + pqBB = pq; + std::cout << pqBB.size() << std::endl; +} + +void TestSize() +{ + std::cout << "Testing size()" << std::endl; + sjtu::priority_queue pq; + for (int i = 1; i <= 1000; ++i) { + pq.push(rand()); + } + std::cout << pq.size() << std::endl; +} + +void TestException() +{ + sjtu::priority_queue pq; + try { + std::cout << pq.top() << std::endl; + } catch (...) { + std::cout << "Throw correctly." << std::endl; + } +} + +struct Natural { + int x; + + Natural(int _x = 0) { x = _x; } + + friend bool operator<(const Natural &lhs, const Natural &rhs) { + if (lhs.x < 0 || rhs.x < 0) + throw sjtu::runtime_error(); + return lhs.x < rhs.x; + } +}; + +void TestCompareException() { + std::cout << "Testing compare exception..."; + + sjtu::priority_queue pq; + static int dat[2000], ans[2000]; + int pos = 0; + for (int i = 1; i <= 1000; ++i) { + dat[i] = i; + if (rand() % 10 == 0) + dat[i] = -i; + else ans[++pos] = i; + } + + for (int i = 1000; i > 1; --i) { + unsigned int x = rand(); + int p = x % (i - 1) + 1; + std::swap(dat[i], dat[p]); + } + + while (dat[1] < 0) { + unsigned int x = rand(); + int p = x % 1000 + 1; + std::swap(dat[1], dat[p]); + } + + + for (int i = 1; i <= 1000; ++i) { + try { + pq.push(Natural(dat[i])); + } catch (sjtu::runtime_error) { + if (dat[i] >= 0) + return std::cout << std::endl, void(); + } + } + + for (int i = pos; i; --i) { + Natural t = pq.top(); + if (t.x != ans[i]) + return std::cout << std::endl, void(); + pq.pop(); + } + + std::cout << "ok." << std::endl; + +} + +int main(int argc, char *const argv[]) +{ + TestConstructorAndPush(); + TestSize(); + TestException(); + TestCompareException(); + return 0; +} diff --git a/priority_queue/data/one/answer.txt b/priority_queue/data/one/answer.txt new file mode 100644 index 0000000..6c2bc0f --- /dev/null +++ b/priority_queue/data/one/answer.txt @@ -0,0 +1,9 @@ +Testing constructors, destructor and push... +100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 +900 +9991 +900 +Testing size() +1000 +Throw correctly. +Testing compare exception...ok. diff --git a/priority_queue/data/one/code.cpp b/priority_queue/data/one/code.cpp new file mode 100644 index 0000000..dc1eddd --- /dev/null +++ b/priority_queue/data/one/code.cpp @@ -0,0 +1,119 @@ +#include +#include +#include +#include + +#include "priority_queue.hpp" + +void TestConstructorAndPush() +{ + std::cout << "Testing constructors, destructor and push..." << std::endl; + sjtu::priority_queue pq; + for (int i = 100; i > 0; --i) { + pq.push(i); + } + while (!pq.empty()) { + std::cout << pq.top() << " "; + pq.pop(); + } + std::cout << std::endl; + for (int i = 1000; i > 100; --i) { + pq.push(i); + } + sjtu::priority_queue pqBack(pq); + std::cout << pqBack.size() << std::endl; + sjtu::priority_queue pqBB; + for (int i = 10; i <= 10000; ++i) { + pqBB.push(i); + } + std::cout << pqBB.size() << std::endl; + pqBB = pq; + std::cout << pqBB.size() << std::endl; +} + +void TestSize() +{ + std::cout << "Testing size()" << std::endl; + sjtu::priority_queue pq; + for (int i = 1; i <= 1000; ++i) { + pq.push(rand()); + } + std::cout << pq.size() << std::endl; +} + +void TestException() +{ + sjtu::priority_queue pq; + try { + std::cout << pq.top() << std::endl; + } catch (...) { + std::cout << "Throw correctly." << std::endl; + } +} + +struct Natural { + int x; + + Natural(int _x = 0) { x = _x; } + + friend bool operator<(const Natural &lhs, const Natural &rhs) { + if (lhs.x < 0 || rhs.x < 0) + throw sjtu::runtime_error(); + return lhs.x < rhs.x; + } +}; + +void TestCompareException() { + std::cout << "Testing compare exception..."; + + sjtu::priority_queue pq; + static int dat[2000], ans[2000]; + int pos = 0; + for (int i = 1; i <= 1000; ++i) { + dat[i] = i; + if (rand() % 10 == 0) + dat[i] = -i; + else ans[++pos] = i; + } + + for (int i = 1000; i > 1; --i) { + unsigned int x = rand(); + int p = x % (i - 1) + 1; + std::swap(dat[i], dat[p]); + } + + while (dat[1] < 0) { + unsigned int x = rand(); + int p = x % 1000 + 1; + std::swap(dat[1], dat[p]); + } + + + for (int i = 1; i <= 1000; ++i) { + try { + pq.push(Natural(dat[i])); + } catch (sjtu::runtime_error) { + if (dat[i] >= 0) + return std::cout << std::endl, void(); + } + } + + for (int i = pos; i; --i) { + Natural t = pq.top(); + if (t.x != ans[i]) + return std::cout << std::endl, void(); + pq.pop(); + } + + std::cout << "ok." << std::endl; + +} + +int main(int argc, char *const argv[]) +{ + TestConstructorAndPush(); + TestSize(); + TestException(); + TestCompareException(); + return 0; +} diff --git a/priority_queue/data/three.memcheck/answer.txt b/priority_queue/data/three.memcheck/answer.txt new file mode 100644 index 0000000..28b3f5d --- /dev/null +++ b/priority_queue/data/three.memcheck/answer.txt @@ -0,0 +1,603 @@ +Test Start +Normal test... +982602241 100 0 +996868965 200 0 +996868965 300 0 +998445800 400 0 +999728643 500 0 +999728643 600 0 +999728643 700 0 +999728643 800 0 +999728643 900 0 +999728643 1000 0 +999728643 1100 0 +999728643 1200 0 +999728643 1300 0 +999728643 1400 0 +999728643 1500 0 +999728643 1600 0 +999728643 1700 0 +999728643 1800 0 +999728643 1900 0 +999728643 2000 0 +992274188 100 0 +992274188 200 0 +992274188 300 0 +992274188 400 0 +992274188 500 0 +992506721 600 0 +992506721 700 0 +992506721 800 0 +992506721 900 0 +992506721 1000 0 +992506721 1100 0 +997689697 1200 0 +997689697 1300 0 +997689697 1400 0 +997689697 1500 0 +997689697 1600 0 +997689697 1700 0 +997689697 1800 0 +999057935 1900 0 +999248333 2000 0 +995816968 100 0 +997592826 200 0 +997592826 300 0 +997592826 400 0 +997592826 500 0 +999526610 600 0 +999526610 700 0 +999526610 800 0 +999526610 900 0 +999526610 1000 0 +999526610 1100 0 +999526610 1200 0 +999526610 1300 0 +999526610 1400 0 +999526610 1500 0 +999526610 1600 0 +999526610 1700 0 +999526610 1800 0 +999526610 1900 0 +999526610 2000 0 +Normal copy&= test...999978170 2100 0 +999695902 2099 0 +999125452 2098 0 +998647558 2097 0 +998318778 2096 0 +998294892 2095 0 +997257845 2094 0 +996968740 2093 0 +996955629 2092 0 +995414877 2091 0 +999194025 2190 0 +998505026 2189 0 +994764380 2188 0 +993821835 2187 0 +993564892 2186 0 +993411094 2185 0 +993337990 2184 0 +989971433 2183 0 +989695853 2182 0 +989109013 2181 0 +999978170 2100 0 +999695902 2099 0 +999125452 2098 0 +998647558 2097 0 +998318778 2096 0 +998294892 2095 0 +997257845 2094 0 +996955629 2093 0 +995414877 2092 0 +994481585 2091 0 +993821835 2190 0 +993564892 2189 0 +993337990 2188 0 +990836789 2187 0 +989695853 2186 0 +989109013 2185 0 +988821962 2184 0 +988516017 2183 0 +987536948 2182 0 +987163675 2181 0 +999978170 2100 0 +999695902 2099 0 +999125452 2098 0 +998647558 2097 0 +998318778 2096 0 +998294892 2095 0 +997257845 2094 0 +997046486 2093 0 +996955629 2092 0 +995414877 2091 0 +998430519 2190 0 +993821835 2189 0 +993564892 2188 0 +993337990 2187 0 +990078347 2186 0 +989695853 2185 0 +989109013 2184 0 +988821962 2183 0 +988516017 2182 0 +987536948 2181 0 +999978170 2100 0 +999695902 2099 0 +999125452 2098 0 +998647558 2097 0 +998318778 2096 0 +998294892 2095 0 +997257845 2094 0 +996955629 2093 0 +995414877 2092 0 +993821835 2091 0 +998711886 2190 0 +993609666 2189 0 +993564892 2188 0 +993337990 2187 0 +990189463 2186 0 +989695853 2185 0 +989109013 2184 0 +988821962 2183 0 +988516017 2182 0 +987849359 2181 0 +999978170 2100 0 +999695902 2099 0 +999125452 2098 0 +998647558 2097 0 +998318778 2096 0 +998294892 2095 0 +997257845 2094 0 +996955629 2093 0 +995414877 2092 0 +993821835 2091 0 +993564892 2190 0 +993337990 2189 0 +989695853 2188 0 +989109013 2187 0 +988821962 2186 0 +988516017 2185 0 +987536948 2184 0 +987163675 2183 0 +986968956 2182 0 +986827090 2181 0 +999857288 2100 0 +999616351 2099 0 +998368834 2098 0 +997873176 2097 0 +997765653 2096 0 +997408365 2095 0 +997155472 2094 0 +996624988 2093 0 +996554897 2092 0 +995752997 2091 0 +994620752 2190 0 +993501204 2189 0 +992995909 2188 0 +992694883 2187 0 +991833398 2186 0 +991623234 2185 0 +991366167 2184 0 +990890750 2183 0 +990418342 2182 0 +990115872 2181 0 +999857288 2100 0 +999616351 2099 0 +998368834 2098 0 +997873176 2097 0 +997765653 2096 0 +997408365 2095 0 +997155472 2094 0 +996624988 2093 0 +996554897 2092 0 +995752997 2091 0 +994620752 2190 0 +993544580 2189 0 +993501204 2188 0 +992995909 2187 0 +992694883 2186 0 +991833398 2185 0 +991623234 2184 0 +991366167 2183 0 +990418342 2182 0 +990115872 2181 0 +999857288 2100 0 +999616351 2099 0 +998368834 2098 0 +997873176 2097 0 +997765653 2096 0 +997408365 2095 0 +997155472 2094 0 +996624988 2093 0 +996554897 2092 0 +995752997 2091 0 +994620752 2190 0 +993501204 2189 0 +992995909 2188 0 +992694883 2187 0 +991833398 2186 0 +991623234 2185 0 +991366167 2184 0 +990418342 2183 0 +990115872 2182 0 +989916886 2181 0 +999857288 2100 0 +999616351 2099 0 +998368834 2098 0 +997873176 2097 0 +997765653 2096 0 +997408365 2095 0 +997155472 2094 0 +997131146 2093 0 +996624988 2092 0 +996554897 2091 0 +999339046 2190 0 +995752997 2189 0 +994620752 2188 0 +993501204 2187 0 +992995909 2186 0 +992694883 2185 0 +991833398 2184 0 +991668588 2183 0 +991623234 2182 0 +991366167 2181 0 +999857288 2100 0 +999616351 2099 0 +998368834 2098 0 +997873176 2097 0 +997765653 2096 0 +997408365 2095 0 +997155472 2094 0 +997040842 2093 0 +996624988 2092 0 +996554897 2091 0 +995752997 2190 0 +994620752 2189 0 +993501204 2188 0 +992995909 2187 0 +992694883 2186 0 +991833398 2185 0 +991623234 2184 0 +991366167 2183 0 +990418342 2182 0 +990115872 2181 0 +998929008 2100 0 +998892631 2099 0 +998417491 2098 0 +997943448 2097 0 +997794088 2096 0 +997737909 2095 0 +997348902 2094 0 +996520774 2093 0 +995870736 2092 0 +994365434 2091 0 +993620204 2190 0 +993540507 2189 0 +992579113 2188 0 +992538505 2187 0 +992477623 2186 0 +991842087 2185 0 +991701814 2184 0 +991586331 2183 0 +991310511 2182 0 +990808484 2181 0 +998929008 2100 0 +998892631 2099 0 +998417491 2098 0 +998290085 2097 0 +997943448 2096 0 +997794088 2095 0 +997737909 2094 0 +997348902 2093 0 +996520774 2092 0 +995870736 2091 0 +994365434 2190 0 +993620204 2189 0 +993540507 2188 0 +993425143 2187 0 +992900513 2186 0 +992579113 2185 0 +992559230 2184 0 +992538505 2183 0 +992477623 2182 0 +991842087 2181 0 +998929008 2100 0 +998892631 2099 0 +998417491 2098 0 +997943448 2097 0 +997794088 2096 0 +997737909 2095 0 +997348902 2094 0 +996520774 2093 0 +995870736 2092 0 +994365434 2091 0 +999902949 2190 0 +993620204 2189 0 +993540507 2188 0 +992579113 2187 0 +992538505 2186 0 +992477623 2185 0 +991842087 2184 0 +991701814 2183 0 +991586331 2182 0 +991310511 2181 0 +998929008 2100 0 +998892631 2099 0 +998417491 2098 0 +997943448 2097 0 +997794088 2096 0 +997737909 2095 0 +997348902 2094 0 +996520774 2093 0 +995870736 2092 0 +994365434 2091 0 +994553424 2190 0 +993620204 2189 0 +993540507 2188 0 +992579113 2187 0 +992538505 2186 0 +992477623 2185 0 +991842087 2184 0 +991701814 2183 0 +991586331 2182 0 +991310511 2181 0 +998929008 2100 0 +998892631 2099 0 +998417491 2098 0 +997943448 2097 0 +997794088 2096 0 +997737909 2095 0 +997527769 2094 0 +997348902 2093 0 +996520774 2092 0 +995870736 2091 0 +998764387 2190 0 +997519331 2189 0 +996640160 2188 0 +994365434 2187 0 +993620204 2186 0 +993540507 2185 0 +992579113 2184 0 +992538505 2183 0 +992477623 2182 0 +991842087 2181 0 +Advanced test...998494804 100 0 +998494804 200 0 +998494804 300 0 +998494804 400 0 +999259797 500 0 +999259797 600 0 +999259797 700 0 +999597640 800 0 +999597640 900 0 +999597640 1000 0 +999597640 1100 0 +999597640 1200 0 +999597640 1300 0 +999597640 1400 0 +999597640 1500 0 +999597640 1600 0 +999979960 1700 0 +999979960 1800 0 +999979960 1900 0 +999979960 2000 0 +980013016 100 0 +989330455 200 0 +993250383 300 0 +993250383 400 0 +993250383 500 0 +997353629 600 0 +997353629 700 0 +998371001 800 0 +998371001 900 0 +998371001 1000 0 +998371001 1100 0 +998371001 1200 0 +998371001 1300 0 +998371001 1400 0 +998390895 1500 0 +998390895 1600 0 +998390895 1700 0 +998390895 1800 0 +998390895 1900 0 +998390895 2000 0 +Advanced copy&= test...998982356 2100 0 +998758576 2099 0 +997716203 2098 0 +997526203 2097 0 +997288253 2096 0 +997156193 2095 0 +996221304 2094 0 +996050610 2093 0 +995719600 2092 0 +995018448 2091 0 +999901128 2190 0 +994781744 2189 0 +994370972 2188 0 +994274784 2187 0 +993750945 2186 0 +993691118 2185 0 +993252810 2184 0 +993066399 2183 0 +992989829 2182 0 +991827236 2181 0 +999880213 2100 0 +998982356 2099 0 +998758576 2098 0 +998102046 2097 0 +997716203 2096 0 +997288253 2095 0 +997156193 2094 0 +996221304 2093 0 +996050610 2092 0 +995719600 2091 0 +997480983 2190 0 +995018448 2189 0 +994781744 2188 0 +994370972 2187 0 +994274784 2186 0 +993750945 2185 0 +993691118 2184 0 +993252810 2183 0 +993066399 2182 0 +992989829 2181 0 +999852383 2100 0 +998982356 2099 0 +998758576 2098 0 +997975544 2097 0 +997716203 2096 0 +997288253 2095 0 +997156193 2094 0 +996221304 2093 0 +996050610 2092 0 +995719600 2091 0 +998177521 2190 0 +995018448 2189 0 +994781744 2188 0 +994703644 2187 0 +994370972 2186 0 +994274784 2185 0 +993750945 2184 0 +993691118 2183 0 +993252810 2182 0 +993066399 2181 0 +998982356 2100 0 +998758576 2099 0 +997716203 2098 0 +997288253 2097 0 +997156193 2096 0 +996221304 2095 0 +996050610 2094 0 +995719600 2093 0 +995018448 2092 0 +994781744 2091 0 +999276597 2190 0 +994370972 2189 0 +994274784 2188 0 +993750945 2187 0 +993691118 2186 0 +993252810 2185 0 +993066399 2184 0 +992989829 2183 0 +991827236 2182 0 +991056069 2181 0 +998982356 2100 0 +998758576 2099 0 +997716203 2098 0 +997288253 2097 0 +997156193 2096 0 +996221304 2095 0 +996050610 2094 0 +995719600 2093 0 +995018448 2092 0 +994781744 2091 0 +994691086 2190 0 +994370972 2189 0 +994274784 2188 0 +993750945 2187 0 +993691118 2186 0 +993252810 2185 0 +993066399 2184 0 +992989829 2183 0 +991827236 2182 0 +991056069 2181 0 +999981689 2100 0 +999926240 2099 0 +999136949 2098 0 +998310732 2097 0 +998222616 2096 0 +996784238 2095 0 +996513735 2094 0 +996324343 2093 0 +996046886 2092 0 +995959209 2091 0 +999586063 2190 0 +996721585 2189 0 +995827780 2188 0 +995800233 2187 0 +995788874 2186 0 +995611089 2185 0 +994749983 2184 0 +994724323 2183 0 +993979643 2182 0 +993882385 2181 0 +999981689 2100 0 +999926240 2099 0 +999136949 2098 0 +998310732 2097 0 +998222616 2096 0 +996784238 2095 0 +996513735 2094 0 +996498630 2093 0 +996324343 2092 0 +996046886 2091 0 +995959209 2190 0 +995827780 2189 0 +995800233 2188 0 +995788874 2187 0 +994754883 2186 0 +994749983 2185 0 +994724323 2184 0 +993979643 2183 0 +993882385 2182 0 +992805200 2181 0 +999981689 2100 0 +999926240 2099 0 +999136949 2098 0 +998310732 2097 0 +998222616 2096 0 +996784238 2095 0 +996513735 2094 0 +996478182 2093 0 +996324343 2092 0 +996046886 2091 0 +995959209 2190 0 +995827780 2189 0 +995800233 2188 0 +995788874 2187 0 +994749983 2186 0 +994724323 2185 0 +993979643 2184 0 +993882385 2183 0 +992805200 2182 0 +992747081 2181 0 +999981689 2100 0 +999926240 2099 0 +999136949 2098 0 +998310732 2097 0 +998222616 2096 0 +996784238 2095 0 +996513735 2094 0 +996324343 2093 0 +996046886 2092 0 +995959209 2091 0 +995827780 2190 0 +995800233 2189 0 +995788874 2188 0 +994749983 2187 0 +994724323 2186 0 +993979643 2185 0 +993882385 2184 0 +992805200 2183 0 +992747081 2182 0 +990854278 2181 0 +999981689 2100 0 +999926240 2099 0 +999136949 2098 0 +998310732 2097 0 +998240485 2096 0 +998222616 2095 0 +996784238 2094 0 +996513735 2093 0 +996324343 2092 0 +996046886 2091 0 +995959209 2190 0 +995827780 2189 0 +995800233 2188 0 +995788874 2187 0 +994749983 2186 0 +994724323 2185 0 +993979643 2184 0 +993882385 2183 0 +992805200 2182 0 +992747081 2181 0 +Exception test...Accept diff --git a/priority_queue/data/three.memcheck/code.cpp b/priority_queue/data/three.memcheck/code.cpp new file mode 100644 index 0000000..0ea1fd9 --- /dev/null +++ b/priority_queue/data/three.memcheck/code.cpp @@ -0,0 +1,213 @@ +// provided by xzj +#include +#include +#include +#include + +#include "priority_queue.hpp" + +long long aa=13131,bb=5353,MOD=1e9+7,now=1; +int rand() +{ + for(int i=1;i<3;i++) + now=(now * aa + bb) % MOD; + return now; +} +class T1//no_construct +{ +public: + int data; + T1(int key):data(key){} +}; +bool operator == (const T1 &a,const T1 &b) +{ + return a.data == b.data; +} +std::ostream &operator <<(std::ostream &os, const T1 &a){ + os< +void test() +{ + sjtu::priority_queue q; + int test_num=2000; + for(int i=1;i<=test_num;i++) + { + q.push(T(rand())); + if(i % 100==0) + { + std::cout< 900) + q.pop(); + } +} +template +void copy_test() +{ + sjtu::priority_queue q; + int num=2000; + for(int i=1;i<=num;i++) + q.push(T(rand())); + for(int j=1;j<=5;j++) + { + sjtu::priority_queue t(q); + for(int i=1;i<=100;i++) + t.push(T(rand())); + for(int k=1;k<=10;k++) + { + std::cout< p; + p=t; + p=p=p=p; + for(int i=1;i<=100;i++) + p.push(T(rand())); + for(int k=1;k<=10;k++) + { + std::cout<(); + test(); + test(); +} +void advanced_test() +{ + printf("Advanced test..."); + test(); + test(); +} +void normal_copy_test() +{ + printf("Normal copy&= test..."); + copy_test(); + copy_test(); + copy_test(); +} +void advanced_copy_test() +{ + printf("Advanced copy&= test..."); + copy_test(); + copy_test(); +} +void exception_test() +{ + bool flag = 0; + printf("Exception test..."); + sjtu::priority_queue q; + for(int i=1;i<=100;i++) + q.push(rand()); + for(int i=1;i<=100;i++) + q.pop(); + try{ + q.pop(); + } + catch(sjtu::container_is_empty) {flag = 1;} + catch(...){flag = 0;} + if(!flag) + { + puts("Wrong Answer(pop)"); + return; + } + try{ + int tmp(q.top()); + } + catch(sjtu::container_is_empty) {flag = 1;} + catch(...){flag = 0;} + if(!flag) + { + puts("Wrong Answer(top)"); + return; + } + puts("Accept"); +} +int main(int argc, char *const argv[]) +{ + //freopen("testans-priority_queue-advance","w",stdout); + puts("Test Start"); + normal_test(); + normal_copy_test(); + advanced_test(); + advanced_copy_test(); + exception_test(); + return 0; +} diff --git a/priority_queue/data/three/answer.txt b/priority_queue/data/three/answer.txt new file mode 100644 index 0000000..dc0218b --- /dev/null +++ b/priority_queue/data/three/answer.txt @@ -0,0 +1,1003 @@ +Test Start +Normal test... +982602241 100 0 +996868965 200 0 +996868965 300 0 +998445800 400 0 +999728643 500 0 +999728643 600 0 +999728643 700 0 +999728643 800 0 +999728643 900 0 +999728643 1000 0 +999728643 1100 0 +999728643 1200 0 +999728643 1300 0 +999728643 1400 0 +999728643 1500 0 +999728643 1600 0 +999728643 1700 0 +999728643 1800 0 +999728643 1900 0 +999728643 2000 0 +999728643 2100 0 +999728643 2200 0 +999728643 2300 0 +999728643 2400 0 +999728643 2500 0 +999728643 2600 0 +999728643 2700 0 +999728643 2800 0 +999728643 2900 0 +999728643 3000 0 +999728643 3100 0 +999728643 3200 0 +999728643 3300 0 +999728643 3400 0 +999728643 3500 0 +999728643 3600 0 +999728643 3700 0 +999728643 3800 0 +999728643 3900 0 +999728643 4000 0 +999728643 4100 0 +999728643 4200 0 +999728643 4300 0 +999728643 4400 0 +999728643 4500 0 +999728643 4600 0 +999728643 4700 0 +999728643 4800 0 +999728643 4900 0 +999728643 5000 0 +999728643 5100 0 +999728643 5200 0 +999728643 5300 0 +999728643 5400 0 +999728643 5500 0 +999728643 5600 0 +999728643 5700 0 +999728643 5800 0 +999728643 5900 0 +999728643 6000 0 +999728643 6100 0 +999728643 6200 0 +999728643 6300 0 +999728643 6400 0 +999728643 6500 0 +999728643 6600 0 +999728643 6700 0 +999728643 6800 0 +999728643 6900 0 +999728643 7000 0 +999728643 7100 0 +999728643 7200 0 +999728643 7300 0 +999978170 7400 0 +999978170 7500 0 +999978170 7600 0 +999978170 7700 0 +999978170 7800 0 +999978170 7900 0 +999978170 8000 0 +999978170 8100 0 +999978170 8200 0 +999978170 8300 0 +999978170 8400 0 +999978170 8500 0 +999978170 8600 0 +999978170 8700 0 +999978170 8800 0 +999978170 8900 0 +999978170 9000 0 +999978170 9100 0 +999978170 9200 0 +999978170 9300 0 +999978170 9400 0 +999978170 9500 0 +999978170 9600 0 +999978170 9700 0 +999978170 9800 0 +999978170 9900 0 +999978170 10000 0 +984550569 100 0 +991623234 200 0 +998368834 300 0 +998368834 400 0 +999616351 500 0 +999616351 600 0 +999616351 700 0 +999616351 800 0 +999616351 900 0 +999616351 1000 0 +999616351 1100 0 +999616351 1200 0 +999616351 1300 0 +999616351 1400 0 +999616351 1500 0 +999616351 1600 0 +999616351 1700 0 +999616351 1800 0 +999616351 1900 0 +999616351 2000 0 +999616351 2100 0 +999616351 2200 0 +999616351 2300 0 +999616351 2400 0 +999616351 2500 0 +999616351 2600 0 +999616351 2700 0 +999616351 2800 0 +999616351 2900 0 +999616351 3000 0 +999616351 3100 0 +999616351 3200 0 +999616351 3300 0 +999616351 3400 0 +999616351 3500 0 +999616351 3600 0 +999616351 3700 0 +999616351 3800 0 +999616351 3900 0 +999616351 4000 0 +999616351 4100 0 +999616351 4200 0 +999616351 4300 0 +999616351 4400 0 +999616351 4500 0 +999902949 4600 0 +999902949 4700 0 +999902949 4800 0 +999902949 4900 0 +999902949 5000 0 +999902949 5100 0 +999902949 5200 0 +999902949 5300 0 +999902949 5400 0 +999902949 5500 0 +999902949 5600 0 +999902949 5700 0 +999902949 5800 0 +999902949 5900 0 +999902949 6000 0 +999902949 6100 0 +999902949 6200 0 +999902949 6300 0 +999902949 6400 0 +999902949 6500 0 +999902949 6600 0 +999979960 6700 0 +999979960 6800 0 +999979960 6900 0 +999979960 7000 0 +999979960 7100 0 +999979960 7200 0 +999979960 7300 0 +999979960 7400 0 +999979960 7500 0 +999979960 7600 0 +999979960 7700 0 +999979960 7800 0 +999979960 7900 0 +999979960 8000 0 +999979960 8100 0 +999979960 8200 0 +999979960 8300 0 +999979960 8400 0 +999979960 8500 0 +999979960 8600 0 +999979960 8700 0 +999979960 8800 0 +999979960 8900 0 +999979960 9000 0 +999979960 9100 0 +999979960 9200 0 +999979960 9300 0 +999979960 9400 0 +999979960 9500 0 +999979960 9600 0 +999979960 9700 0 +999979960 9800 0 +999979960 9900 0 +999979960 10000 0 +993252810 100 0 +993252810 200 0 +996050610 300 0 +996050610 400 0 +996050610 500 0 +996050610 600 0 +996050610 700 0 +998758576 800 0 +998758576 900 0 +998758576 1000 0 +998758576 1100 0 +999901128 1200 0 +999901128 1300 0 +999901128 1400 0 +999901128 1500 0 +999901128 1600 0 +999901128 1700 0 +999901128 1800 0 +999901128 1900 0 +999901128 2000 0 +999901128 2100 0 +999901128 2200 0 +999901128 2300 0 +999901128 2400 0 +999901128 2500 0 +999926240 2600 0 +999926240 2700 0 +999926240 2800 0 +999926240 2900 0 +999926240 3000 0 +999926240 3100 0 +999981689 3200 0 +999981689 3300 0 +999981689 3400 0 +999981689 3500 0 +999981689 3600 0 +999981689 3700 0 +999981689 3800 0 +999981689 3900 0 +999981689 4000 0 +999981689 4100 0 +999981689 4200 0 +999981689 4300 0 +999981689 4400 0 +999981689 4500 0 +999981689 4600 0 +999981689 4700 0 +999981689 4800 0 +999981689 4900 0 +999981689 5000 0 +999981689 5100 0 +999981689 5200 0 +999981689 5300 0 +999981689 5400 0 +999981689 5500 0 +999981689 5600 0 +999981689 5700 0 +999981689 5800 0 +999981689 5900 0 +999981689 6000 0 +999981689 6100 0 +999981689 6200 0 +999981689 6300 0 +999981689 6400 0 +999981689 6500 0 +999981689 6600 0 +999981689 6700 0 +999981689 6800 0 +999981689 6900 0 +999981689 7000 0 +999981689 7100 0 +999981689 7200 0 +999981689 7300 0 +999981689 7400 0 +999981689 7500 0 +999981689 7600 0 +999981689 7700 0 +999981689 7800 0 +999981689 7900 0 +999981689 8000 0 +999981689 8100 0 +999981689 8200 0 +999981689 8300 0 +999981689 8400 0 +999981689 8500 0 +999981689 8600 0 +999981689 8700 0 +999981689 8800 0 +999981689 8900 0 +999981689 9000 0 +999981689 9100 0 +999981689 9200 0 +999981689 9300 0 +999981689 9400 0 +999981689 9500 0 +999981689 9600 0 +999981689 9700 0 +999981689 9800 0 +999981689 9900 0 +999981689 10000 0 +Normal copy&= test...999847479 5100 0 +999754628 5099 0 +999445255 5098 0 +999398758 5097 0 +999398654 5096 0 +999296068 5095 0 +999170585 5094 0 +998819136 5093 0 +998754298 5092 0 +998644782 5091 0 +998413492 5190 0 +998400011 5189 0 +998338119 5188 0 +998196711 5187 0 +998107396 5186 0 +997987316 5185 0 +997623230 5184 0 +997571094 5183 0 +997539790 5182 0 +997479515 5181 0 +999847479 5100 0 +999754628 5099 0 +999445255 5098 0 +999398758 5097 0 +999398654 5096 0 +999296068 5095 0 +999170585 5094 0 +998819136 5093 0 +998754298 5092 0 +998644782 5091 0 +998413492 5190 0 +998400011 5189 0 +998338119 5188 0 +998196711 5187 0 +998107396 5186 0 +997987316 5185 0 +997623230 5184 0 +997539790 5183 0 +997479515 5182 0 +997337247 5181 0 +999847479 5100 0 +999754628 5099 0 +999445255 5098 0 +999398758 5097 0 +999398654 5096 0 +999296068 5095 0 +999170585 5094 0 +998819136 5093 0 +998754298 5092 0 +998644782 5091 0 +998413492 5190 0 +998400011 5189 0 +998338119 5188 0 +998196711 5187 0 +998107396 5186 0 +997987316 5185 0 +997623230 5184 0 +997539790 5183 0 +997479515 5182 0 +997337247 5181 0 +999847479 5100 0 +999754628 5099 0 +999445255 5098 0 +999398758 5097 0 +999398654 5096 0 +999296068 5095 0 +999170585 5094 0 +998819136 5093 0 +998754298 5092 0 +998644782 5091 0 +998413492 5190 0 +998400011 5189 0 +998338119 5188 0 +998196711 5187 0 +998107396 5186 0 +997987316 5185 0 +997623230 5184 0 +997539790 5183 0 +997479515 5182 0 +997337247 5181 0 +999847479 5100 0 +999754628 5099 0 +999445255 5098 0 +999398758 5097 0 +999398654 5096 0 +999296068 5095 0 +999170585 5094 0 +998819136 5093 0 +998754298 5092 0 +998644782 5091 0 +998413492 5190 0 +998400011 5189 0 +998338119 5188 0 +998196711 5187 0 +998107396 5186 0 +997987316 5185 0 +997623230 5184 0 +997539790 5183 0 +997479515 5182 0 +997337247 5181 0 +999882488 5100 0 +999711038 5099 0 +998987179 5098 0 +998685807 5097 0 +998662358 5096 0 +998599822 5095 0 +998141798 5094 0 +998103264 5093 0 +998078406 5092 0 +997908419 5091 0 +997669250 5190 0 +997380911 5189 0 +996973503 5188 0 +996857069 5187 0 +996817860 5186 0 +996597182 5185 0 +996582910 5184 0 +996056563 5183 0 +996001668 5182 0 +995910550 5181 0 +999882488 5100 0 +999711038 5099 0 +998987179 5098 0 +998685807 5097 0 +998662358 5096 0 +998599822 5095 0 +998141798 5094 0 +998103264 5093 0 +998078406 5092 0 +997908419 5091 0 +997669250 5190 0 +997380911 5189 0 +996973503 5188 0 +996857069 5187 0 +996817860 5186 0 +996582910 5185 0 +996056563 5184 0 +996001668 5183 0 +995910550 5182 0 +995604621 5181 0 +999882488 5100 0 +999711038 5099 0 +998987179 5098 0 +998685807 5097 0 +998662358 5096 0 +998599822 5095 0 +998141798 5094 0 +998103264 5093 0 +998078406 5092 0 +997908419 5091 0 +997669250 5190 0 +997380911 5189 0 +996973503 5188 0 +996857069 5187 0 +996817860 5186 0 +996707045 5185 0 +996582910 5184 0 +996056563 5183 0 +996001668 5182 0 +995910550 5181 0 +999882488 5100 0 +999711038 5099 0 +998987179 5098 0 +998685807 5097 0 +998662358 5096 0 +998599822 5095 0 +998141798 5094 0 +998103264 5093 0 +998078406 5092 0 +997908419 5091 0 +997669250 5190 0 +997380911 5189 0 +996973503 5188 0 +996857069 5187 0 +996817860 5186 0 +996582910 5185 0 +996056563 5184 0 +996001668 5183 0 +995910550 5182 0 +995687899 5181 0 +999882488 5100 0 +999711038 5099 0 +998987179 5098 0 +998685807 5097 0 +998662358 5096 0 +998599822 5095 0 +998141798 5094 0 +998103264 5093 0 +998078406 5092 0 +997908419 5091 0 +999385528 5190 0 +997669250 5189 0 +997380911 5188 0 +996973503 5187 0 +996857069 5186 0 +996817860 5185 0 +996582910 5184 0 +996056563 5183 0 +996001668 5182 0 +995910550 5181 0 +999930781 5100 0 +999846222 5099 0 +999450711 5098 0 +999231980 5097 0 +999207317 5096 0 +999186806 5095 0 +999180725 5094 0 +999176155 5093 0 +998895649 5092 0 +998856121 5091 0 +998693780 5190 0 +998504490 5189 0 +998496342 5188 0 +998345796 5187 0 +998254510 5186 0 +998087912 5185 0 +997829252 5184 0 +997620269 5183 0 +997507373 5182 0 +997503387 5181 0 +999930781 5100 0 +999846222 5099 0 +999450711 5098 0 +999231980 5097 0 +999207317 5096 0 +999186806 5095 0 +999180725 5094 0 +999176155 5093 0 +998895649 5092 0 +998856121 5091 0 +998693780 5190 0 +998504490 5189 0 +998345796 5188 0 +998087912 5187 0 +997829252 5186 0 +997620269 5185 0 +997507373 5184 0 +997503387 5183 0 +996865206 5182 0 +996850731 5181 0 +999930781 5100 0 +999846222 5099 0 +999450711 5098 0 +999231980 5097 0 +999207317 5096 0 +999186806 5095 0 +999180725 5094 0 +999176155 5093 0 +998895649 5092 0 +998856121 5091 0 +999549026 5190 0 +998693780 5189 0 +998504490 5188 0 +998345796 5187 0 +998087912 5186 0 +997829252 5185 0 +997620269 5184 0 +997507373 5183 0 +997503387 5182 0 +996865206 5181 0 +999930781 5100 0 +999846222 5099 0 +999450711 5098 0 +999231980 5097 0 +999207317 5096 0 +999186806 5095 0 +999180725 5094 0 +999176155 5093 0 +998895649 5092 0 +998856121 5091 0 +998693780 5190 0 +998504490 5189 0 +998345796 5188 0 +998087912 5187 0 +997829252 5186 0 +997620269 5185 0 +997507373 5184 0 +997503387 5183 0 +996865206 5182 0 +996850731 5181 0 +999930781 5100 0 +999846222 5099 0 +999450711 5098 0 +999231980 5097 0 +999207317 5096 0 +999186806 5095 0 +999180725 5094 0 +999176155 5093 0 +998895649 5092 0 +998856121 5091 0 +998693780 5190 0 +998504490 5189 0 +998345796 5188 0 +998087912 5187 0 +997841008 5186 0 +997829252 5185 0 +997620269 5184 0 +997507373 5183 0 +997503387 5182 0 +996865206 5181 0 +Advanced test...988760177 100 0 +988760177 200 0 +999015508 300 0 +999015508 400 0 +999015508 500 0 +999015508 600 0 +999015508 700 0 +999015508 800 0 +999015508 900 0 +999015508 1000 0 +999015508 1100 0 +999015508 1200 0 +999015508 1300 0 +999015508 1400 0 +999015508 1500 0 +999015508 1600 0 +999015508 1700 0 +999015508 1800 0 +999015508 1900 0 +999877099 2000 0 +999877099 2100 0 +999877099 2200 0 +999877099 2300 0 +999877099 2400 0 +999877099 2500 0 +999877099 2600 0 +999877099 2700 0 +999877099 2800 0 +999896231 2900 0 +999896231 3000 0 +999896231 3100 0 +999896231 3200 0 +999896231 3300 0 +999896231 3400 0 +999896231 3500 0 +999896231 3600 0 +999896231 3700 0 +999896231 3800 0 +999896231 3900 0 +999896231 4000 0 +999896231 4100 0 +999896231 4200 0 +999896231 4300 0 +999896231 4400 0 +999896231 4500 0 +999896231 4600 0 +999896231 4700 0 +999896231 4800 0 +999896231 4900 0 +999896231 5000 0 +999896231 5100 0 +999896231 5200 0 +999896231 5300 0 +999896231 5400 0 +999896231 5500 0 +999896231 5600 0 +999896231 5700 0 +999896231 5800 0 +999989837 5900 0 +999989837 6000 0 +999989837 6100 0 +999989837 6200 0 +999989837 6300 0 +999989837 6400 0 +999989837 6500 0 +999989837 6600 0 +999989837 6700 0 +999989837 6800 0 +999989837 6900 0 +999989837 7000 0 +999989837 7100 0 +999989837 7200 0 +999989837 7300 0 +999989837 7400 0 +999989837 7500 0 +999989837 7600 0 +999989837 7700 0 +999989837 7800 0 +999989837 7900 0 +999989837 8000 0 +999989837 8100 0 +999989837 8200 0 +999989837 8300 0 +999989837 8400 0 +999989837 8500 0 +999989837 8600 0 +999989837 8700 0 +999989837 8800 0 +999989837 8900 0 +999989837 9000 0 +999989837 9100 0 +999989837 9200 0 +999989837 9300 0 +999989837 9400 0 +999989837 9500 0 +999989837 9600 0 +999989837 9700 0 +999989837 9800 0 +999989837 9900 0 +999989837 10000 0 +998730511 100 0 +998730511 200 0 +998730511 300 0 +998730511 400 0 +998730511 500 0 +998730511 600 0 +998730511 700 0 +998730511 800 0 +998730511 900 0 +998730511 1000 0 +998730511 1100 0 +998730511 1200 0 +998730511 1300 0 +999390963 1400 0 +999390963 1500 0 +999390963 1600 0 +999390963 1700 0 +999390963 1800 0 +999390963 1900 0 +999390963 2000 0 +999390963 2100 0 +999565332 2200 0 +999565332 2300 0 +999565332 2400 0 +999565332 2500 0 +999565332 2600 0 +999565332 2700 0 +999565332 2800 0 +999565332 2900 0 +999565332 3000 0 +999565332 3100 0 +999565332 3200 0 +999565332 3300 0 +999565332 3400 0 +999565332 3500 0 +999565332 3600 0 +999565332 3700 0 +999565332 3800 0 +999565332 3900 0 +999565332 4000 0 +999565332 4100 0 +999565332 4200 0 +999565332 4300 0 +999565332 4400 0 +999565332 4500 0 +999565332 4600 0 +999565332 4700 0 +999565332 4800 0 +999565332 4900 0 +999565332 5000 0 +999565332 5100 0 +999565332 5200 0 +999565332 5300 0 +999565332 5400 0 +999565332 5500 0 +999565332 5600 0 +999565332 5700 0 +999565332 5800 0 +999565332 5900 0 +999565332 6000 0 +999565332 6100 0 +999565332 6200 0 +999565332 6300 0 +999565332 6400 0 +999565332 6500 0 +999565332 6600 0 +999565332 6700 0 +999565332 6800 0 +999565332 6900 0 +999565332 7000 0 +999565332 7100 0 +999565332 7200 0 +999565332 7300 0 +999565332 7400 0 +999565332 7500 0 +999565332 7600 0 +999885949 7700 0 +999885949 7800 0 +999885949 7900 0 +999885949 8000 0 +999885949 8100 0 +999885949 8200 0 +999885949 8300 0 +999885949 8400 0 +999885949 8500 0 +999885949 8600 0 +999885949 8700 0 +999885949 8800 0 +999885949 8900 0 +999885949 9000 0 +999885949 9100 0 +999885949 9200 0 +999885949 9300 0 +999885949 9400 0 +999885949 9500 0 +999885949 9600 0 +999885949 9700 0 +999885949 9800 0 +999885949 9900 0 +999885949 10000 0 +Advanced copy&= test...999904310 5100 0 +999861791 5099 0 +999612043 5098 0 +999596230 5097 0 +999527051 5096 0 +999088829 5095 0 +999051843 5094 0 +998870555 5093 0 +998207745 5092 0 +998170218 5091 0 +997922570 5190 0 +997913231 5189 0 +997908439 5188 0 +997732458 5187 0 +997533194 5186 0 +997530161 5185 0 +997253409 5184 0 +996200048 5183 0 +996191201 5182 0 +996167856 5181 0 +999904310 5100 0 +999861791 5099 0 +999612043 5098 0 +999596230 5097 0 +999527051 5096 0 +999088829 5095 0 +999051843 5094 0 +998870555 5093 0 +998207745 5092 0 +998170218 5091 0 +997922570 5190 0 +997913231 5189 0 +997908439 5188 0 +997732458 5187 0 +997533194 5186 0 +997530161 5185 0 +997253409 5184 0 +996747081 5183 0 +996419041 5182 0 +996200048 5181 0 +999904310 5100 0 +999861791 5099 0 +999612043 5098 0 +999596230 5097 0 +999527051 5096 0 +999088829 5095 0 +999051843 5094 0 +998870555 5093 0 +998207745 5092 0 +998170218 5091 0 +997922570 5190 0 +997913231 5189 0 +997908439 5188 0 +997732458 5187 0 +997533194 5186 0 +997530161 5185 0 +997253409 5184 0 +996200048 5183 0 +996191201 5182 0 +996167856 5181 0 +999904310 5100 0 +999861791 5099 0 +999612043 5098 0 +999596230 5097 0 +999527051 5096 0 +999088829 5095 0 +999051843 5094 0 +998870555 5093 0 +998207745 5092 0 +998170218 5091 0 +999968923 5190 0 +997922570 5189 0 +997913231 5188 0 +997908439 5187 0 +997732458 5186 0 +997533194 5185 0 +997530161 5184 0 +997253409 5183 0 +996437261 5182 0 +996200048 5181 0 +999904310 5100 0 +999861791 5099 0 +999612043 5098 0 +999596230 5097 0 +999527051 5096 0 +999088829 5095 0 +999051843 5094 0 +998870555 5093 0 +998325983 5092 0 +998207745 5091 0 +998170218 5190 0 +997922570 5189 0 +997913231 5188 0 +997908439 5187 0 +997732458 5186 0 +997533194 5185 0 +997530161 5184 0 +997253409 5183 0 +996200048 5182 0 +996191201 5181 0 +999937165 5100 0 +999196974 5099 0 +998599189 5098 0 +998571852 5097 0 +998538484 5096 0 +998499745 5095 0 +998013676 5094 0 +997740021 5093 0 +997299526 5092 0 +996855428 5091 0 +996813165 5190 0 +996789775 5189 0 +996645480 5188 0 +996557666 5187 0 +996493989 5186 0 +995813668 5185 0 +995485945 5184 0 +995211796 5183 0 +995194628 5182 0 +994485709 5181 0 +999937165 5100 0 +999196974 5099 0 +998599189 5098 0 +998571852 5097 0 +998538484 5096 0 +998013676 5095 0 +997740021 5094 0 +997299760 5093 0 +996855428 5092 0 +996813165 5091 0 +996789775 5190 0 +996645480 5189 0 +996557666 5188 0 +996493989 5187 0 +995813668 5186 0 +995503745 5185 0 +995485945 5184 0 +995211796 5183 0 +995194628 5182 0 +994485709 5181 0 +999937165 5100 0 +999196974 5099 0 +998599189 5098 0 +998571852 5097 0 +998538484 5096 0 +998013676 5095 0 +997740021 5094 0 +996855428 5093 0 +996813165 5092 0 +996789775 5091 0 +996645480 5190 0 +996557666 5189 0 +996493989 5188 0 +996094215 5187 0 +995813668 5186 0 +995485945 5185 0 +995211796 5184 0 +995194628 5183 0 +995180615 5182 0 +994485709 5181 0 +999937165 5100 0 +999196974 5099 0 +998599189 5098 0 +998571852 5097 0 +998538484 5096 0 +998013676 5095 0 +997740021 5094 0 +996855428 5093 0 +996813165 5092 0 +996789775 5091 0 +996645480 5190 0 +996557666 5189 0 +996493989 5188 0 +995813668 5187 0 +995485945 5186 0 +995211796 5185 0 +995194628 5184 0 +994485709 5183 0 +994370907 5182 0 +994361745 5181 0 +999937165 5100 0 +999196974 5099 0 +998599189 5098 0 +998571852 5097 0 +998538484 5096 0 +998013676 5095 0 +997740021 5094 0 +996855428 5093 0 +996813165 5092 0 +996789775 5091 0 +996645480 5190 0 +996557666 5189 0 +996493989 5188 0 +995813668 5187 0 +995485945 5186 0 +995211796 5185 0 +995194628 5184 0 +994485709 5183 0 +994370907 5182 0 +994361745 5181 0 +Exception test...Accept diff --git a/priority_queue/data/three/code.cpp b/priority_queue/data/three/code.cpp new file mode 100644 index 0000000..15f38ab --- /dev/null +++ b/priority_queue/data/three/code.cpp @@ -0,0 +1,213 @@ +// provided by xzj +#include +#include +#include +#include + +#include "priority_queue.hpp" + +long long aa=13131,bb=5353,MOD=1e9+7,now=1; +int rand() +{ + for(int i=1;i<3;i++) + now=(now * aa + bb) % MOD; + return now; +} +class T1//no_construct +{ +public: + int data; + T1(int key):data(key){} +}; +bool operator == (const T1 &a,const T1 &b) +{ + return a.data == b.data; +} +std::ostream &operator <<(std::ostream &os, const T1 &a){ + os< +void test() +{ + sjtu::priority_queue q; + int test_num=10000; + for(int i=1;i<=test_num;i++) + { + q.push(T(rand())); + if(i % 100==0) + { + std::cout< 900) + q.pop(); + } +} +template +void copy_test() +{ + sjtu::priority_queue q; + int num=5000; + for(int i=1;i<=num;i++) + q.push(T(rand())); + for(int j=1;j<=5;j++) + { + sjtu::priority_queue t(q); + for(int i=1;i<=100;i++) + t.push(T(rand())); + for(int k=1;k<=10;k++) + { + std::cout< p; + p=t; + p=p=p=p; + for(int i=1;i<=100;i++) + p.push(T(rand())); + for(int k=1;k<=10;k++) + { + std::cout<(); + test(); + test(); +} +void advanced_test() +{ + printf("Advanced test..."); + test(); + test(); +} +void normal_copy_test() +{ + printf("Normal copy&= test..."); + copy_test(); + copy_test(); + copy_test(); +} +void advanced_copy_test() +{ + printf("Advanced copy&= test..."); + copy_test(); + copy_test(); +} +void exception_test() +{ + bool flag = 0; + printf("Exception test..."); + sjtu::priority_queue q; + for(int i=1;i<=100;i++) + q.push(rand()); + for(int i=1;i<=100;i++) + q.pop(); + try{ + q.pop(); + } + catch(sjtu::container_is_empty) {flag = 1;} + catch(...){flag = 0;} + if(!flag) + { + puts("Wrong Answer(pop)"); + return; + } + try{ + int tmp(q.top()); + } + catch(sjtu::container_is_empty) {flag = 1;} + catch(...){flag = 0;} + if(!flag) + { + puts("Wrong Answer(top)"); + return; + } + puts("Accept"); +} +int main(int argc, char *const argv[]) +{ + //freopen("testans-priority_queue-advance","w",stdout); + puts("Test Start"); + normal_test(); + normal_copy_test(); + advanced_test(); + advanced_copy_test(); + exception_test(); + return 0; +} diff --git a/priority_queue/data/two.memcheck/answer.txt b/priority_queue/data/two.memcheck/answer.txt new file mode 100644 index 0000000..85df1e4 --- /dev/null +++ b/priority_queue/data/two.memcheck/answer.txt @@ -0,0 +1,11 @@ +78061 371986 896946 896946 896946 896946 896946 896946 896946 896946 896946 896946 896946 896946 896946 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 +5000 999995999814999690999669999631999479999397999196998981998806998683998443998424998391998182997982997931997767997472997457997262997188997101997095996934996682996452996220995720995288995170995109994828994563994558994181994159993922993795993659993657993600993539993446993231993215993057992360992267992035992006991928991242991113990882990832990294989914989618989605989461989372989305988893988593988580988554987739987704987507987427987385987373987282986908986146985722985711985690985628985541985191984958984908984776984671984639984005983772983682983457983217983112982716982503981765981064980810980739980290980286980222979898979832979219979135979120979058979016978639978584978577978072977767977541977207977128976203976157975752975736975607975479975416975211975075974728974689974580974231974151973713973357973286973002972552972458972340972228972023971981971886971762971741971568971280970513970053969998969923969856969736969546969385969203969028968030967852967615967404967355967155966950966862966027965905965731964951964898964893964780964744964690964185964041963823963817963775963751963722963601963589963495963477963209963108963093962992962899962759962636962632962574962425962161962083962052961583961536961532961240961155961136961077961024960887960863960664960660960655960482960428960026959980959865959540958920958866958835958742958460958192957956957801957759957612957470956877956858956796956629956544956284955828955725955526955475955321955239955166955156955095955034954975954862954654954163954093953412953403953062952710952383952343952238952218952192952050951890951666950584950332950232950194950162950159950136950016949888949727949374949320949285948689948589948567948486948422948252948206948073948004947812947767947389947206947152947113946914946735945925945713944939944848944793944416943923943866943699943659943516942538942327942270941903941897941798941640941491941430941408941401941052941000940835940826940782940450940179940159939980939928939871939618939485939311939257939193939066938887938622938607937273937167937112936950936834936822936796936731936382936361936100935778935752935708935446935394935383934959934664934624934582934427934412934381934238933984933832933672933484932919932820932454932401931744931672931560930586930540930504930272930077929855929774929681929575929559929250929046928589928059928032927773927747927733927687927574927553927111927065926813926497926417926278926060925886925557925370925152924804924786924281924166923668923411923042922612922525922471922421922305922252922102921725921667921168920662920266920216920205920082919926919863919816919549919270918989918974918781918668918179917804917380916721916519916376915645915268915016914777914479914392914382914322914185913981913882913871913682913563913470913331913189913186912735912633912316912258911853911770911740911647911471910994910496910493910304910148910112909921909903909848909724909471909139908775908746908588908339908239907876907606906800906591906238906057905943905176904657904591904590904469904387904346904034903907903889903710902831902664902598902357901612900525900444900257900221900085900083899702899656899585899499899487899387899318899035897933897220897179897087896827896727896509896402896321896222896157896152895977895845895791895523895380895189895119895117894929894887894775894278894159894005893956893947893696893380893065892804892629892493892454892434892290892216892144890897890549890395890251890194889906889788888814888508888495888425888409887899887722887521887352887347887082886890886814886767886419886163885608885495885378885150885141884999884444884360883925883242883010882633882574882569882476882268882087881763881460881436881086880642880508880384880143879994879912879861879379878853878625878014877958877809877753877533877483877191877094877035876966876814876729876390876241876157876107875290875170874991874678874670874662874322874106873979873744873724873606873517873149872535872496872409872352872197872090871971871895871868871543871373871372871249870937870530870524870371870293870263870153870032869684869374869165869118869109868932868875868688868609868326868249868109867313867052866961866746866438866103865892865368865307865187865116864919864870864782864673863969863835863599863081863078862720862412862298862294862118862047861972861950861890861824861810861769861708861497861491861357861062861028861016860693860255859888859620859511859446859391859073858981858080857974857912857582857126856988856972856852856612856148856059856053855552855460855189854671854503854339854256853708853679853675853614853604853504853364853290853266853244853214852833852783852667852463852312852231852173851856851823851214851133851068851044850659850564849941849644849534849143849071848485848442848432848425848369848252848135848084847461847263846975846519846232846039845910845639845587845575845533845503845418845095844605844604844396844387844120844005843845843680843110842960842879842362842137842101841940841407841175841076840631840269839703839386839382839204839143838950838674838581838540838250838217837919837745836884836856836784836702836626836448835837835826835681835466835259834713834603834532834483834387834179834132833564833366833231833093833077833006832873832839832828832654832491832475832331831563831487831316830897830743830714830583830541830164830119830090829866829476829359829285829225829214828524828423828278827749827527827098826986826912826858826552826396826386826184825880825838825648825580825488825217825201824995824994824852824587824487824070823854823690823610823327823291823217823079822941822927822876822781822457822362822225821790821761821100821007820884820868820863820763820572820474820157820090820080820043819615819512819372819281818994818961818838818508817904817627817556817464817435817317817301817259817219817081817029817022816761816605816420816193816053815956815430815044814952813690813584813230812697812676812521812409812293812168811912811335811167811162811044810567810551810527810370810153809070808990808967808639808523808177807830807469807324807310807046807022806897806647806261806210805857805748805590805422805367805281805115805034805010804230804093803816803753803579803533803318803252802842802830802181802116801867801855801728800982800882800865800811800521800432800370800325800264800157800087799721799582799152798996798988798782798643798516798489798371797972797958797945797663797651797302796821796146796085795850795761795708795417795360795276795217794957794951794820794719794380794378794376794312794141793651793622793475793417793326793129793110793104792986792724792466792269792170792134792128792078791654791485791413791032790954790412790349790316790301790027790023789856789624789374789178789128788893788277788221788110787836787774787329787251787068787036786840786804786724786689786671786265786202786126785830785714785139784770784634784497784246783992783822783786783753783389783325782774782574782335782160782003781794781323781153780949780924780835779703779677779461779289779181779165779153778740778673778626778452778281778064777904777866777413777188776969776367776226776136775926775859775831775762775681775419775345775175775169775053774496774457774392774221774049773945773788773780773467773303773177771940771693771576771575771383770910770823770683770568770477770199770060769197768734768651768523768472768450768075768046768015767955767729767486767462767392767362767271767234767204766645766492766185766015765958765605765420765135764231764210763753763402763360763279763240763224763047763013763000762846762786762694762659762461762311762201762166762125762100762035761983761287761268761195761084761026761023760762760643760369759731759656759486759337759319759040758880758823758500758275758036758019758005757344757222757212757106757068757004756901756874756644756474756387756296756047755671755496755380755270755103754669754351754237754001753993753800753771753573753567753351753049753017753015752626752480752352752153752037751864751708751682751470751373751326751018750471750300750242750171750097749772749755749633749537749383749368749330749245748956748879748553748463748449748177748174748054748048747980747579747497747237747224746903746860746843746751745492745486745476745457745323745196745119744933744900744784744721744215744208744117744061743945743684743623743607743061742865742708742602742505741851741732741553741538741431741374741088740857740811740764740653740462740460740285739552739537739365739334739320739048738768738624738536738531738445738171737908737841737493737434737152737121736776736560736328736287736167735462735123734687734611734485734289734259733850733490733398733302733245732905732520732231732143731997731959731792731762731485731153731008730619730603730503730142729981729468729359729310729256729024728903728566728539728440728411728155727396727300727263726966726859726721726003725979725905725690725639725608724930724923724617724596724368723849723613723607723551723529723087722915722679722139721907721422721152721117721062720987720892720457720336720285720283719782719176718941718938718746718483717894717847717694717540717233716984716834716782716288716276715999715932715896715375715287715250714681714540714514714338714193713872713780713550713287712881712819712813712742712345712326712039711988711951711930711851711779711756711409711179710882710824710655710644710559710278710222710019709894709822709341708791708623708429708295708043707947707686707376707347707232706903706820706181706035705993705408705327705020704999704763704746704622704557704528703744703659703442703252703084703079703011702959702477702369701926701310701110700942700871700826700679700668700387700117700082700061699717699548699403699104698880698877698424698009697949697816697684697395697253697020696753696661696453696313695916695873695860695306695158694950694727694717694269694152693906693246693205692978692876692819692648692642691407691232691093690531690431690230690223689915689869689831689369689062688990688875688762688614688347688216688135688130687660687044686839686738686526686413686374686293686113685930685888685851685804685737685301685280684554684547684463684428684374684370684219684171684115683393683250683107682775682752682549682408682311682069681646681619681418681164680809680642680549680316680062680058680022679759679719679018678612678609678348678291678124678026678021678009677979677127676723676535676493676281676158675674675474674778674636674575674476674223674077674040673717673533673214673121672983672924672696672277672193672026671865671675671623671467671152671010670975670917670838670606670444670051669844669821669702669546669475669416669406669325669232669052668960668893668691668626668613668033667820667763667695667534667412667353667052666912666894666856666800666713666419666361666131666106665804665671665617665552664944664592664157664099664050663782663671663345662884662798662191661982661826661578661455661000660851660572660571660565660454660135659839659811659797659644659585659575659549659182659026658944658491658450658303658027657046656530656482656375656360656293655621655555654799654764654654654620654590654524654129653967653806653517652523652290652153651937651780651503651168651059650870650836650806650511650161650156650000649473649159648388647919647662647651647464647368646883646451646387646268645562645446645198645082645055644977644954644932644796644650644595644592644286644281644266643889643748643451643425643127643025642996642894642820642353641880641869641863641556641532641138640901640656640122640011639688639139638322638186638125637709637596637466636614636559636495636462636183636030635837635413634845634667634659633597633267632943632666632121631915631911631816631609631360631336631004630925630923630720630702630459630208630063629960629860629782629770629745629647629613629542628759628506628344628145628032627711627566627565627147627010626961626522625939625784625590625540625500625402625390625199625133625002624968624922624721624398623628623473623306623169623082623058622988622919622855622758622404622155622068621714621534620899620622620565620473620340620086619404619390618629618551618398618384618223618089617623617351617014616708616601615543615121614979614828614574613933612996612519612430612018611981611880611613611561611429610923610791610629609888609656609220609075608327608305607979607531607464607291606355606131606073605993605989605630605468604673604334604078604075603773603391603267602941602680602058601983601981601942601753601057600892600798600666600161600160599585599431599199599063599026598258597986597858597504597083596861596799596764596738596656596001595959595688595034594853594628594360594132594097593696593281593213593155593060592985592777592719592392591995591989591309591055590652590651590565590370590341589795589704589385589286588904588880587956587852587603587007586999586737586672586624586361586352586286585977585968585312585168584882584331584262584204584094583817583590583474583258582497582459582198581953581742581423581183580994580904580192580153579732579599579516579483579245579160579007578920578649578597578346578277577889577853577657577450577366576782576479575910575522575401575372575063574914574541574230574164573309573157572260572117572059572043571853571781571621571189571044570696570626570469570360570201570105570042570030569617569524569495569482569135569055568331568190568149568069568051567942567664567495567350567310566924566909566717566504566340565597565406565389565191564988564632564342564200563420562757562688562303562116561694561673561608561555561536561497561492561017560911560868560666560463560356560297560089560021560012559863559674559573559498559474559056558717558548558383558376558330557932557767557640557448557092556628555686555431555356554821554809554415554402553645553644553574553466553390553058552705552683552484552362552236552228552211552195552038551987551931551876551806551612551499551167551128551124551038550925550893550745550110549696548727548721548516547645547094546920546919546912546730546440546336546116545992545989545964545628545252545235545015544883544831544787544742544713544452544336544070544049543956543691542912542386542128542018541975541945541838541564541307540978540795540184540133540127539698539283539257538995538772538423538271538059537692537610536924536880536829536821536676536551536450536006535838535739535624535024534906534753534505534284534081533609533349533348533280533081532885532704532631532550532391532298532294532276532254532122531923531866531810531521531442531002530944530847530815530486530217530171529853529724529575529541529287529280529244529180529169529168528978528879528392528165527917527897527890527628527397527267527025526964526903526889526541526474526454526407525932525856525758525398524648524395524214523922523662523307523256523003522930522598522559522545522408522400522022521848521756521661521490521432520725520572520523520398520349520211519689519369519277518949518733518223518180518078518061518004517805517585517506517098517082516290516201516151516007515579515497515474515307515028514755514751514627514449514095513950513595513454513114512844512809512795512549512518512510512315512123511746511713511648511503511102511055510953510741510260510119509970509558509448509332509281509039508958508901508808508025508021507800507738507680506892506805506669506580506549506455506437506174505450505260505103505018504941504405503990503847503549503040502964502901502572501920501701501418501415501333501217501216501142500726500262499659499475499470499386499352499121498780498716498578498504498052497923497587497546497088497043496816496718496619496170495615495474495003494772494391494248494043493701493644493621493399493273492921492778492530491848491776491501491016490835490479490340490275490137489780489195488797488747488746488568488513488457488283487962487904487901487868487802487587487441487118487031486999486857486543485962485665485610485569485403485298485274485062484114483844483534483394483317482504481679481634480832480676480333480239479591479491479434479315479235479231479213479111479079478987478947478912478675478557478186477783477696477574477523477371477290477241477225477143476801476053475942475913475544475460475183475013474993474834474776474318474265474216473723473269472561472022471686471258471098471023470820470543470446470439470245470189469658469598469074468987468803468675468523468053468040467943467457467372467358467144467084467034467005466960466553466409465797465230464933464713464579464495464458464380464063463983463896463712463535463371462848462783462573462415462357462108461779461639461447460832460798460787460584459917459614459536458908458319458310458276457962457700456988456962456849456292455796455787455537455497455375455259455177455115454954454491454041453742452863452841452837451852451742451506451257450793450450450353450322450204449738449597449567449133448988448633448532448513448497448458448236448198448072447806447522447504447328446652446304446072446055446028445971445777445510445479445371444803444772444645444627444513444331444087444020443971443913443615443531443034442945442717442137441149440672440606440226440121439989439882439413439397439112438985438967438856438131437783437438436923436799436574436517435991435936435921435733435647435516435186435167434994434863434828434770434559433704433609433543433340432563431931431774431753431682431095431090431036430624430598430361430325430069429605429570429521429118429116429054428797428738428041427927427669427345427304426886426803426786426757426666426294426219426193426189426148425887425866425812425743425722425236424947424814424396424050423635423406423343423132422332422217422047421770421697421421421032420957420818420605420604420360420291419669419555418882417951417327416934416909416856416423416347415749415714415579415550415517415288415269414645414560414152414022413964413920413905413761413745413433413394412817412707412653412559412531412443412340412215412205412195411905411701411460411457411417411337411335410855410500410181410136409660409540409514409341409260409218409096409082408903408772408425408415408242407820407642406898406438406041405800405761405658405611405164404990404701404411404384404292404040403979403466403442403262403152402993402961402384402152402108402032402029401813401543400802399367399290398578398130397810397564397417397272397244397106396858396819396810396319396261395909395766395590395475395466395301394799394731394591394006393917393877393823393809393683393506393455393417393243392371392198391561391512391505391392391096391042390930390855390843390769390513390377390314390270389798389720389197389008388982388867388492388095387492387323387124387035386999386774386540386310386216385884385380385304385267385138384969384920384794384737384441384376383448383229383031382921382803382663382515382300380802380749380715380483380457380193379843379243379089379011378931378688378658378375378342378192377969377814377763377400377354376883376798376682376510376336376252376051375843375675375665375527375417375349375268375259375179375098375001374760374494374399373983373377373276373184373095373016372904372423372325371976371957371587371296371188370985370745370730370696370695370532370338370302370231370013369352369134368850368642368534368392368317368041367845367614367232367123367041366943366534366230366085366055366039365963365757365724365683365666365417365323364423364020363781363723363668363498363495363243362914362713362705362314362247361748361723361555361346361159361020360886360783360464360388360270359746359634359605359348359246358477357801357718357621357601357495357455357447357144356935356912356789356759356702356531356428356357356171355964355891355340355316355056355020354891354448354287354263354186354180353967353847353721353284352991352933352907352489352460352339352294352239352146351904351903351643350930350879350493350444350284350226350181350177350125349742349646349346349014348806347979347770347583347368346761346428346299345848345750345659345335345262344635344496344218344037343971343899343720343697343278342721341893341874341458341423341213341202341149341106341101340930340727340598340550339550339418339359339225338866338622338287338157338033337859337511337467337462337365337301337282337108337095336981336873336691336376336306336060335859335745335726335424335415335386334844334057333597333567333082333017332995332952332826332648332101331940331888331824331587330949330734330635330577330316330197329603329304329196328969328952328894328888328471328397328210327906327747327677327643326571326459326349326314326140325566325519325518325514325513325392325390325339325044324551324358324107324105324054324048323962323820323779323773323634323417323243323214322802322720322695322619322308322134321657321473321419321377321192321081320647320449320333320182319951319847319666319647319440319208319175319151318843318624318074317901317845317665317614317533317494317473317472317201317125317030316714316478316366316255316189315764315612315345315261314941314818314774314580314419314372314225314166314001313992313960313578313470313363312998312944312538312416312079311847311304311115310940310682310270310230309569308142308010307899307828307546307437307325307293307292307273307263307229306722306707305765305728305711305579305295305224304996304828304697304624304267303842303653303609303553303458303201303184303172303155302812302782302679302479302458302043301970301652301641301599301559301512301460301415301240301067301023300980300936300921300736300500300238300220300188300122300042299312299215299112298992298287298006297578297278297201297137296827296542296374296354296200296070295748295605295377295242295185294947294761294594294471294281293938293705293445293241292814292386291903291623291605291549291371291279290871290602290598290452290075289923289828289683289653289467289251289015288589288584288427288415288266288207288087287785287166286849286774286550286305286289286161286097286020285736285542285539285513285484285166284455284326284276284264284206284205284060283658283592283382283162283104282652282222282164281641281274280817280726280627280360280342280139279902279686279656279305278642278638278285278057277059276741276554276276276053275952275905275796275677275344275247274983274343274167274022273826273710273276273053272805272463272449272438272037271884271834271797271644271487271247271181270753270698270665270297270225270086270066269490268790268117268098268086268046267912267733267669267557267356267311267286267224266799266773266664266310266254266092265744265498265358265349265069264798264691264634264439264430264195264091263714263206262716262076261701261447261354260887260791260321260094259874259636259433259277258921258888258772258726258421258333258130257978257503257364256565256469256459256312256158255992255815255721255645255527255450255085254942254938254623254497254100253234253230253105253055252665252451252450252149251933251830251616251518251410251348251324251255251142251110251013250859250537250218250043249961249840249699249691249586249481249045248968248490248431248339248257247226247147246560246532246480246473246431246414246285245926245416245378244969244911244772244748244637244614244502243515243262243101243084242847242740242620242330242027240998240709240670240572240159240151240122240071240064239927239649239570239094238258237944237928237926237841237722237678237649237382237330237098236778236281235628235427234995234988234511234390234329234094234069233721233627233162233050233024232814232708232235232215232105232008231689231425231229230617230335230288229859229776229755229190228378228349228339228020227826227667227610227585227470227469227406227198227189227020226653226212226165225774225771225290225261225144225106224955224905224668224643224414224059223592223450223339223143223100222518222034221902221849221075221073220944220325220234219763219735219587219565219540219220218985218973218611218057217879217792217762217706217647217615217512217421216745216285215952215894215527215393215363215243215156214936214870214652214550214454214110214080213236213057213027212906212801212708212376211993211942211883211702211650211485210980210802210688210446209795209762209733209582209547209439208984208644208528208193207997207844207414207083206312205932205503205500205474205441205400203847203357203331203291203235203097203070203068202558202472201703201297201205201029200541200367200276199840199769199595199443199265199155199108198890198566198285197131197092196853196651196601196580196418196303196255196226195985195843195781195778195367195289194795194409194392194301193960193610192901192824192822192704192336192135191412191296191256190803190785190625190610190590190569190542190420189778189342188793188750188726188523187797187690187399187333187171187165187053186667186647186386186246186181186144185951185869185461185235185101185009184820184622184333184288184073183685182651182478182316182080181782181726181578181413181287180606180340180310180050180015179723179315179295179214178882178554178468178295178179178146177946177923177909177706177657177365177337177184176772176522176441176417176299176214176203175429174963174916174747174632174510174495174486174407174399174057174030173625173593173524173454173380173332173102173022172966172730172522172369171964171799171777171669171570171311171128171122170726170470170030169841169208169140169092168692168064167985167396167273167130166936166923166785166715166652166570166221166164165651165625165467165434165085164888164696164511164331164317163858163684163221163188163069163010162882162799162178162162161958161606161432161275160777160562160218160115160102159741159663159479158729158160158154157638157185156995156954156873156802156280155748155680155644155254155102154998154907154872154766154747154608154066154050153944153732153693152919152755152317151930151537151533151344151236151073150947150457150020149924149787149720149223149159148903148750148734148653148468148033147786147647147616147533147213147177147067146826146547146393145647145496144981144806144774144451144161144158143765142979142806141900141630141276140916140905140477140348139972139752139466139252139194139150138903138580138476138360138130138034137644137414137385137383137208137169137006136747136294136020135999135787135772135738135674135545135000134704134321134126134047133894133776133577133364133229133075133016132803132678132374132329132233132075132038131953131173130972130503130435130421130358130170129925129841129677129229128058127928127869127705127646127617127013126964126690126593126566126565125408125343125210125195125134125053124915124747124676123905123835123673123510123278123222122824122562122448122385121725121458121230121156120851120832120766120532120501120339120188120069119982119816119764119608119517119514119086118699118698118669118497118185117887117683117219117172116878116784116762116719116677116386116383116293116235116010115515115073114848114833114701114688114626114578114317114272114004113998113623113437113015113007112849112725112555112523112238112200112180112126112097111981111807111754111697111542111446111361111308111080110609110589110493110382110218110031109898109833109712109469109411109324109306109145108900108811108772108614108441108318108115108006107776107647107624107231107013106897106250106200106141105988105733105722105606105572105501105362105308105189104963104886104731104702104635104576104504104287104041103867103507103489103141103084103039102757102648102581102224102011102002101957101905101750101480101430100842100769100718100565100461100256994019937699044989549868998454982459776497587974419712696897966949647796355963419607895950958579519694720945149428194135940499388593867937629345593339933239317693142928999267392607926009248691940918519158191530910659009790048892678862688433880728805687850876988765687416871048691686699866938649586380863268631686168859378575485000847988454484449839028374083608835018341483405831198309483073829708274782691825108235482217820428147881073804808039179875795847952479461792627906078919789187885978453777777767077638773607720176641766277608476037759217582875787756407530175075747857422973973737287346673436733247331473289732047312772822727927272672392723257159471449711727085570827707437044369813697286967069618695356946369290688116841668236676856740667240671636707166868667226633266275659206532565019645666441063957638516380363549631636287362739624786194561933615696154861179610846089960883607586058760531600766006459971597685951159346588635864758615580905801057972579125789357785574095712957032568725678856220559695594355891555765548555476554425535455141548805484054790545665451954153540205401553977537885371653697536445360053557534655345653390533775329653267532495297152953529025289952810524115235152296520785194751708515415152651427509465087650872508655082550810508015041450256501214920649022489744883548790487084840048346483374812148030480124785647765477574771447476472444687446809461514600045881457364569345677456104537345274452684504544416444014408243523433934318343070423524231742247419714144041356413084098640896408064069340660405794053040521399103967339584393473908039052389643889538622385503806537966379053782537635373693723037213367323671636713363653618135934357923532735240351223497534967349173483533961337863341333194330043282232450319803191031764307923054030259302483005030004299872934229322292912879128200281682712127094269142689326795264272630926253258192581325811254222538725354248902486524856247252448824465244552418524053237922378323585232312316023005225902186921325209692095020939208602050520482201581963919407190941892518878187521851918171177651714817132163621629216031158221557415264152311500214952147731437314291139081380313681128771212112029120071190711898117471146511448111681090510800107181062410557104921041310317102459666960894049112896088778602847383998332832582537939792778877784777176977114702769836740672166016472635254325399537453705296525849624571445544434083406640304010396638893618329532582883202318061797169214671372131713061159872499 +976200 976200 164759 455886 383215 562572 383215 253958 887518 194078 194078 106786 995898 995898 995898 995898 751449 339810 106786 6557 176848 200776 578087 200776 385154 385154 756939 883754 883754 756939 624364 385154 368012 200776 383513 383513 200776 200776 948990 200776 805824 805824 325731 200776 193641 553417 193641 176848 584547 176848 38598 114253 650185 71429 396846 326867 846736 846736 846736 625484 326867 729323 326867 356370 356370 920411 356370 356370 326867 575348 326867 326867 326867 326867 308947 782247 782247 782247 308947 188841 109869 104684 79292 59980 499041 598184 499041 884070 884070 499041 59980 46567 22536 535914 22536 1626 638370 638370 638370 120790 272676 120790 789577 789577 248368 120790 656623 120790 138329 659884 138329 120790 366221 120790 764288 120790 115973 650443 115973 1626 529345 529345 435777 112811 339999 904527 339999 339999 339999 174240 112811 68189 246095 363953 363953 578288 578288 578288 363953 244853 28060 265778 28060 40878 470060 40878 28060 3962 88879 540195 88879 177918 218735 177918 360712 699836 699836 699836 527319 527319 421596 818179 421596 879704 879704 846110 421596 360712 334460 606103 942778 606103 334460 462771 606251 462771 334460 177918 88879 88879 29119 174524 29119 3962 260544 3962 892339 892339 408640 408640 408640 944279 944279 944279 818896 532738 408640 305578 777205 777205 465017 305578 211847 19001 728112 19001 287992 703603 703603 703603 703603 703603 703603 574297 548170 457541 308185 426186 308185 287992 449421 522371 449421 287992 307277 287992 928249 287992 287992 359376 287992 393481 287992 191365 149157 19001 755409 278631 954901 954901 954901 473634 278631 2590 344554 344554 344554 77005 261499 400064 261499 366350 366350 261499 261499 209414 147377 284090 147377 265594 147377 710097 710097 232133 147377 997299 997299 997299 997299 731038 559121 559121 559121 250316 552661 250316 203956 312574 312574 397595 312574 819017 826605 826605 826605 819017 774019 774019 810074 810074 774019 979889 979889 979889 979889 979889 868775 987797 868775 868775 812661 812661 812661 774019 774019 673468 673468 673468 620748 478802 478563 478563 604208 478563 478563 478563 457619 509596 509596 462254 516143 462254 457619 876281 876281 967719 967719 876281 457619 457081 430059 430059 430059 430059 430059 399793 365406 365406 823688 823688 365406 942473 942473 775325 365406 365406 469899 495980 495980 602796 643346 707115 643346 602796 495980 495980 574232 495980 495980 769090 769090 495980 469899 469899 389617 365406 478099 365406 356183 356183 684408 356183 346501 324141 319262 781137 319262 312574 702614 312574 883793 312574 706724 961507 961507 961507 706724 706724 706724 988587 706724 406028 406028 356585 356585 852051 852051 356585 775495 847534 913646 847534 847534 847534 775495 775495 492944 356585 356585 341252 811094 965589 811094 811094 364036 364036 341252 976990 976990 976990 976990 976990 976990 976990 976990 976990 976990 976990 980431 980431 976990 976990 976990 774114 737034 707052 611553 607928 606262 594996 483378 432843 341252 336205 312574 303491 766210 766210 303491 297732 294262 284721 283701 282320 276121 842589 276121 545346 545346 529572 276121 267269 694386 769378 694386 778224 694386 267269 267269 732412 267269 267269 228838 227498 206643 465517 206643 403934 991631 991631 991631 695053 403934 950817 403934 851180 403934 206643 205387 203956 197522 896052 896052 896052 896052 729808 729808 745288 729808 729808 729808 722741 591521 435153 197522 192222 715404 192222 191934 979764 191934 191934 868747 868747 873763 868747 521084 191934 850685 850685 850685 735690 473837 191934 576078 576078 574350 191934 179121 171257 555039 555039 555039 345529 171257 168827 159174 964774 964774 301958 159174 147377 449074 870755 870755 870755 870755 870755 870755 870755 870755 870755 809292 800167 708363 708363 630669 630669 630669 614600 546051 546051 530100 530100 530100 530100 493735 449074 842955 449074 432117 270750 361531 270750 212631 160169 155854 803277 155854 741832 741832 218044 792384 792384 735671 218044 756268 756268 218044 155854 147377 131495 129725 126269 109774 817230 817230 109774 820071 820071 820071 820071 820071 641044 209122 154571 574890 154571 154571 609061 154571 286000 154571 525382 154571 221786 154571 137751 509088 805132 805132 805132 805132 587463 926646 926646 587463 509088 873990 509088 509088 452961 483581 452961 452961 313241 432625 457289 574054 457289 432625 496805 432625 313241 689273 712533 689273 313241 958826 958826 958826 958826 929166 313241 313241 233742 233742 405488 405488 233742 233285 167941 167941 137751 495122 137751 430620 680648 703285 719673 703285 680648 430620 430620 755307 430620 307666 137751 131726 988720 988720 988720 988720 988720 988720 988720 580505 434109 371785 371785 335328 422100 761948 955676 761948 761948 422100 335328 305902 305902 277271 172949 164423 209611 768431 209611 164423 208345 164423 131726 555962 131726 936064 131726 568128 131726 118163 949585 975068 949585 949585 949585 383153 383153 293353 118163 109774 106554 106221 97936 583222 583222 763250 583222 154065 745277 745277 745277 971822 971822 971822 971822 971822 745277 741750 957262 957262 957262 852516 741750 684522 556857 410438 370435 154065 302917 302917 154065 145689 735036 145689 133707 97936 94398 93621 387478 838797 838797 838797 838797 790394 790394 790394 790394 603179 387478 155742 128342 97434 286432 929758 286432 927182 927182 674755 286432 97434 171088 805039 171088 474680 171088 97434 733770 97434 93621 388518 93621 609550 93621 79664 79664 77005 441769 77005 797967 77005 76046 76046 857200 76046 268766 971570 971570 268766 849398 268766 268766 124432 112298 76046 74475 69576 177133 69576 701225 69576 66728 880189 880189 880189 880189 331290 747043 747043 626069 949064 626069 331290 520457 331290 73871 66728 65889 626956 626956 525482 65889 335190 65889 61526 554869 554869 554869 389405 376744 61526 61005 60147 700327 60147 60147 55451 52724 48854 48812 566053 48812 42955 35680 78915 35680 521287 35680 30772 28397 878021 28397 27558 23028 22835 402236 22835 20629 18425 13864 210833 841278 841278 841278 841278 986560 841278 841278 791184 808827 808827 791184 791184 762950 515387 434181 210833 128266 154660 128266 14160 13864 11467 407294 11467 9869 6682 873550 873550 873550 873550 834410 700848 313347 583486 583486 583486 583486 380599 313347 437058 313347 270919 38869 251859 38869 213673 814178 710807 225358 225358 33658 443201 539470 881419 991718 881419 539470 443201 443201 846023 846023 443201 402219 402219 935702 402219 873867 873867 402219 317297 317297 844009 844009 588125 317297 843243 843243 679942 679942 317297 315384 814613 814613 925505 925505 925505 898281 814613 814613 657360 607087 607087 542869 584708 542869 519320 315384 222355 935204 992576 935204 222355 285014 222355 231061 222355 867587 222355 222355 516841 222355 104258 81760 33658 573406 33658 7193 977976 977976 753450 753450 230642 483893 601884 601884 314018 199039 199039 108743 666263 666263 739112 666263 298293 418769 927537 418769 298293 957336 957336 957336 957336 760862 668710 298293 298293 616226 298293 579912 298293 774743 298293 879666 879666 832388 832388 866116 866116 866116 866116 859800 859800 859800 859800 859800 832388 793474 623655 936172 623655 979679 979679 631565 623655 623655 537213 537213 537213 500824 930408 500824 487460 412441 406690 406690 298293 247724 357576 247724 247724 229476 932208 229476 224642 201011 440607 201011 108743 105704 70579 70579 51748 29204 192391 918664 192391 374263 192391 613083 192391 38281 163853 38281 392343 700824 778368 700824 700824 461718 769943 769943 769943 942191 989285 942191 769943 769943 752291 461718 461718 421636 242764 1868 222158 1868 710059 710059 710059 261921 218411 613004 855800 613004 230179 248220 230179 41231 755426 755426 74242 316060 365348 373906 373906 430044 841075 430044 430044 430044 905548 430044 373906 306328 127900 104466 681575 104466 517486 837673 837673 352808 846743 352808 578410 890128 890128 873403 578410 578410 879205 578410 578410 371696 9071 240815 667859 240815 250873 240815 919359 919359 376162 266135 266135 74134 904516 904516 595263 595263 595263 132842 99562 74134 74134 18984 63040 18984 351597 934702 969197 969197 969197 969197 969197 934702 934702 918071 478064 870553 870553 870553 870553 870553 870553 870553 870553 801249 801249 754254 950846 950846 950846 947249 754254 478064 478064 452447 452447 890845 452447 410068 351597 332114 319057 319057 970397 319057 833700 319057 978208 978208 319057 921944 921944 414876 994602 994602 862408 892313 892313 862408 662411 414876 414876 486899 486899 486899 414876 319057 287112 911620 287112 754405 287112 360536 360536 416481 360536 287112 282610 282610 278497 298710 784429 784429 494676 298710 278497 278497 276379 258275 643132 643132 258275 796566 258275 307575 258275 637889 258275 233829 167255 337636 337636 500955 763020 763020 500955 337636 314395 184878 380237 184878 167255 109962 108408 103519 94737 93064 84523 225927 84523 507510 84523 78966 57226 37891 29921 18984 47176 691655 691655 691655 871313 691655 705608 705608 705608 691655 477060 998121 998121 998121 998121 998121 998121 846482 796923 796923 835102 835102 796923 792837 792837 792837 943271 943271 792837 792837 786392 645166 645166 620869 944446 620869 897726 897726 620869 554179 554179 508666 508666 503231 477060 477060 477060 800360 477060 445381 445381 445381 445381 445066 406532 309519 864210 309519 294855 292640 261916 247690 231690 223939 223939 198775 453243 198775 947071 198775 595074 595074 857697 857697 595074 595074 595074 549104 549104 478354 373003 373003 362203 362203 323541 645086 645086 645086 493327 493327 567910 493327 502514 502514 493327 431240 323541 302754 686819 302754 288928 288928 198775 152833 952718 952718 952718 952718 895876 724693 152833 472804 472804 334456 506638 334456 152833 86512 84826 63480 635857 687027 635857 63480 61155 83151 61155 47176 38428 75546 38428 12801 259016 12801 884510 884510 476304 12801 1647 314999 314999 530572 314999 298007 608119 298007 418609 418609 418609 298007 470484 298007 298007 166714 942767 942767 942767 942767 942767 942767 828858 828858 828858 804158 355713 351807 274950 166714 682909 166714 915685 166714 151992 862889 862889 774167 151992 115791 391923 115791 27649 7260 753167 753167 469040 541750 704732 704732 557977 623742 557977 961356 557977 557977 428081 712127 428081 428081 50984 373596 562809 562809 373596 50984 46032 289947 289947 289947 289947 289947 336876 336876 978871 978871 978871 824219 824219 824219 824219 395395 547061 395395 336876 336876 303317 497820 630962 656271 630962 722917 722917 722917 630962 497820 762230 762230 965635 762230 741716 741716 741716 497820 417639 513526 417639 820730 417639 417639 628432 417639 335155 313582 303317 289947 712597 289947 289947 287160 260604 214246 233217 214246 787010 787010 214246 634724 214246 791183 214246 304209 612237 841992 841992 841992 612237 612237 884676 884676 884676 612237 543991 543991 910796 543991 408698 658302 658302 423555 705953 423555 690821 690821 423555 543419 991625 991625 991625 991625 991625 984812 543419 427527 423555 714356 423555 418981 449303 449303 418981 408698 399193 802058 399193 399193 322891 708159 708159 708159 532318 756033 532318 532318 456704 322891 319876 467138 867399 467138 319876 584585 319876 304209 218885 214246 673978 673978 214246 519634 214246 199029 665236 199029 209292 199029 199029 189546 189463 352884 189463 765980 189463 156834 156796 156796 149824 145443 418319 145443 126189 110890 819891 819891 142204 110890 102440 408183 789113 789113 408183 408183 238711 376016 238711 394969 394969 238711 398385 238711 185574 102440 163345 102440 70128 66063 58705 608368 608368 181723 58705 52500 50372 46032 39955 35214 9928 4049 434165 118648 868812 386660 438149 925708 438149 994128 994128 796508 796508 438149 969997 438149 386660 941321 386660 290262 857930 290262 624603 991600 624603 973097 973097 624603 959790 959790 959790 870647 624603 412680 656678 889759 656678 866874 866874 686845 686845 656678 964905 656678 656678 656678 584329 584329 469880 412680 207177 973245 973245 207177 607684 934734 934734 607684 349169 349169 207177 347712 584447 347712 731879 347712 429676 971348 971348 971348 918084 675850 675850 429676 370106 819610 370106 370106 370106 347712 419640 347712 207177 207177 148628 134177 900472 134177 90896 82711 186266 82711 49752 476795 880884 476795 890119 476795 905368 476795 819231 819231 819231 819231 819231 819231 884879 819231 684713 476795 430194 400309 400309 103680 504419 103680 65900 785554 785554 321968 65900 795609 795609 373909 541897 541897 373909 373909 721180 373909 231495 231495 231495 226135 707530 707530 707530 625925 226135 441795 226135 169544 147622 94655 111377 874813 874813 237847 111377 94655 65900 150830 150830 68762 507879 68762 65900 49752 236153 247553 364125 364125 364125 743240 937008 743240 743240 777792 743240 364125 364125 619819 364125 669657 364125 787576 894227 894227 894227 827247 787576 364125 364125 576178 576178 576178 364125 423550 917127 917127 622814 684348 622814 423550 364125 364125 871136 871136 871136 871136 871136 857445 857445 899380 857445 857445 755692 494045 445616 459279 445616 364125 364125 333285 308532 247553 236153 223678 195434 170296 150620 548744 150620 264260 264260 150620 757178 150620 584824 150620 136773 114265 813140 114265 91836 320192 91836 91286 743994 743994 743994 743994 743994 743994 685653 685653 577698 376452 352707 594767 352707 502031 352707 352700 177626 500354 177626 91286 104911 908344 924935 924935 908344 908344 432830 337039 892514 337039 337039 189231 450382 189231 104911 91286 79942 49752 45068 389306 45068 42896 41479 722457 747998 747998 722457 497237 41479 28645 8564 166410 694747 899737 899737 816923 56509 482878 56509 810297 783052 50066 945770 945770 945770 549726 549726 247040 18507 618028 512083 512083 149788 693972 693972 40929 492890 903359 387992 129662 214414 214414 81750 81750 74422 335307 335307 315492 74422 857402 213845 981552 981552 981552 981552 964636 964636 964636 981602 981602 981602 964636 747019 747019 747019 936644 747019 747019 741258 741258 725813 660324 879012 879012 754121 754121 754121 677516 660324 481057 561916 481057 465804 519047 717143 519047 720668 519047 465804 465804 537139 671266 537139 465804 465804 465804 906140 465804 946224 971928 971928 971928 971928 971928 946224 937923 937923 750615 465804 465804 465804 591494 465804 384173 384173 384173 544497 854577 544497 544497 384173 342044 273057 241279 227185 205267 190571 190571 184935 876977 184935 844577 844577 582705 582705 556722 184935 174776 507824 507824 507824 507824 480248 296063 895590 895590 895590 895590 895590 895590 895590 841382 793114 793114 793114 793114 735317 730649 620979 620979 540510 655238 540510 540510 540510 711949 540510 296063 441850 841096 904656 841096 441850 296063 265969 684399 899888 684399 265969 591290 265969 446912 511101 511101 446912 543739 791387 543739 543739 446912 947810 446912 426766 426766 862188 426766 265969 265969 265715 770813 770813 314742 587568 314742 265715 245639 245639 558320 898732 558320 245639 307692 245639 243519 243519 243519 230892 791469 230892 197007 752886 197007 303669 575136 303669 797393 303669 468227 892219 468227 468227 672151 672151 468227 463245 463245 343535 371872 343535 640754 343535 935954 343535 303669 213939 197007 192688 618167 618167 193853 933491 193853 920785 193853 192688 761106 761106 192688 965064 965064 985457 985457 965064 932998 928545 928545 928545 928545 928545 713997 713997 655171 501370 501370 501370 327693 327693 209988 192688 791213 192688 192688 174776 166749 841469 166749 314475 950899 314475 737725 314475 314475 243659 166749 164406 863158 164406 805841 164406 140749 420567 839957 839957 839957 839957 662058 598621 420567 148276 140749 132742 132742 130711 608019 130711 630140 130711 113189 109010 109010 749488 877388 877388 877388 749488 687389 220318 109010 92370 451452 92370 705563 92370 91083 131256 91083 83920 78834 75985 72006 59567 54253 51477 23724 20042 18012 258291 18012 168094 18012 951380 951380 570613 18012 834304 834304 834304 834304 834304 792994 792994 792994 792994 792994 792994 792994 792994 792520 704507 736158 905994 736158 736158 967922 736158 704507 685269 685269 685269 632814 772751 632814 733333 733333 733333 632814 632814 880617 880617 880617 880617 632814 606611 563319 517455 622950 517455 517455 504675 460861 443751 393136 393136 281056 281056 276665 276665 276665 272399 224436 213391 609685 609685 288875 288875 939419 288875 621313 288875 529405 773235 529405 288875 213391 338953 421547 338953 338953 313463 313463 223028 969754 969754 969754 310776 362256 783695 966472 783695 886234 783695 362256 310776 329849 310776 941806 310776 246754 684524 246754 449480 246754 223028 223028 223028 223028 996545 223028 362958 931927 931927 931927 931927 861873 861873 459916 459916 799890 799890 810120 810120 810120 810120 799890 551370 603560 551370 592241 779276 779276 592241 551370 812151 551370 545469 482425 459916 371629 362958 514129 362958 276301 942750 276301 223028 213391 387394 966360 387394 387394 514662 554759 770739 770739 554759 763621 763621 665062 665062 554759 514662 498548 387394 213391 212859 464494 212859 193906 812742 193906 183832 433626 183832 166517 166466 163142 157353 642024 157353 155075 597170 155075 144848 107375 100566 93727 87553 87414 273036 87414 828071 87414 75051 48983 18012 758764 18012 14262 3648 1395 21656 160520 21656 552623 21656 1395 936474 1395 1395 859031 1395 853 341390 853 59178 394029 783328 394029 769856 394029 59178 812263 59178 853 982209 853 807833 807833 524872 524872 551727 524872 524872 344335 679638 344335 404812 729730 953247 729730 729730 729730 883363 729730 611011 798537 611011 404812 346645 344335 585 580453 680491 580453 90463 849026 849026 505040 505040 733602 505040 391122 883639 477573 56553 130343 144535 164042 576497 164042 164042 144535 399333 144535 682633 144535 130343 339859 339859 339859 654900 339859 130343 721377 721377 673796 902370 925602 902370 673796 130343 670311 130343 117125 856757 856757 117125 849825 898827 898827 849825 698845 698845 117125 86196 61015 495575 61015 56553 778527 56553 595387 56553 790550 56553 48471 3057 320894 953028 953028 639395 639395 340636 834116 834116 929807 938441 938441 929807 898307 898307 898307 834116 647315 647315 937397 937397 647315 647315 626577 514491 314378 232840 891483 232840 232840 720450 232840 232840 959127 232840 200022 250409 200022 780855 200022 140100 35382 561732 288705 13696 391407 836517 251162 562083 562083 362821 251162 795391 795391 991870 795391 347820 251162 337896 776706 337896 517339 517339 337896 310903 251162 749305 548146 277500 493859 493859 493859 493859 478654 253263 236380 923710 947324 947324 158609 964955 419950 669787 518189 518189 91523 491645 401151 401151 534347 401151 708168 401151 39307 519466 973710 160350 611727 973620 611727 606102 837153 837153 428193 435212 707253 435212 428193 805376 805376 844556 805376 428193 6060 295870 811529 912142 85871 822421 371585 371585 800093 993098 800093 371585 925189 925189 925189 925189 925189 925189 925189 730812 427552 864123 864123 864123 739378 739378 739378 739378 738749 578451 937095 937095 937095 937095 728051 728051 731991 728051 728051 610111 610111 578451 578451 495198 495198 804433 495198 776551 776551 944336 776551 830408 992559 992559 992559 992559 907070 907070 878999 878999 830408 830408 827450 776551 722023 698801 495198 427552 427552 505848 427552 386750 639583 386750 982965 386750 371585 818200 818200 531582 371585 762473 371585 734337 734337 564213 371585 648304 371585 465472 897381 465472 371585 349857 553512 553512 553512 349857 342582 284810 258975 785134 959783 785134 258975 251192 238692 753545 753545 395010 395010 238692 237076 515224 915596 915596 915596 915596 912073 797802 797802 797802 515224 312601 585881 585881 585881 528025 312601 846599 312601 363011 312601 237076 237051 165600 466785 165600 165600 161738 152761 152418 286625 152418 139092 114500 562612 114500 72038 72038 731875 72038 118135 683565 809254 809254 809254 809254 809254 809254 809254 683565 683565 616947 616947 519054 519054 641258 519054 519054 519054 955667 955667 955667 899858 899858 899858 899858 519054 592703 592703 577683 919737 919737 577683 961443 961443 577683 519054 511887 540478 540478 540478 511887 511887 511887 499717 499717 499717 478464 716734 478464 615823 615823 773210 773210 773210 856169 979137 979137 856169 856169 773210 615823 610589 610589 610589 534736 509075 714481 714481 765438 714481 912488 714481 714481 509075 496096 496096 496096 496096 478464 478464 471172 857213 857213 857213 663557 690876 663557 471172 471172 883560 883560 883560 883560 686146 616761 471172 467547 553555 467547 447435 383214 407228 383214 383214 625162 625162 383214 440486 769604 440486 880168 440486 440486 440486 409985 383214 381817 373117 667959 373117 367375 360037 358326 350670 456846 350670 332375 332256 302132 929960 302132 302132 292941 292941 865978 865978 292941 292941 288892 708121 708121 518596 518596 288892 593312 288892 288211 681488 681488 427662 288211 742319 288211 282668 449472 282668 493846 282668 266919 250860 227252 517716 227252 196179 189840 711545 189840 174503 180107 430243 180107 598858 180107 174503 467666 637007 467666 467666 467666 729774 729774 729774 729774 745216 729774 729774 729774 600712 522386 467666 807050 467666 427984 396547 381929 351961 665378 351961 255094 174503 790517 790517 535175 535175 535175 196700 174503 167770 159887 143233 900485 900485 900485 900485 900485 900485 823870 421139 365243 283358 257030 143233 133254 337350 337350 617644 337350 133254 138628 241535 717327 241535 138628 723149 138628 996207 138628 537929 537929 537929 138628 134427 532735 134427 158020 507199 507199 616346 507199 926079 926079 926079 789962 956989 789962 789962 555576 555576 558572 558572 555576 516043 623373 623373 516043 980444 516043 516043 791514 842565 791514 791514 802888 791514 791514 791514 791514 676114 516043 822081 516043 516043 507199 481345 471267 372564 285818 280900 194678 535310 535310 870818 870818 871451 870818 535310 952348 952348 952348 952348 865900 895213 972769 972769 895213 895213 865900 814899 814899 814899 808816 808816 767925 535310 809276 940683 809276 535310 514118 514118 484492 426570 460581 426570 361745 636520 361745 352546 268926 194678 171192 158020 769806 158020 134427 685809 830095 685809 953847 953847 685809 685809 513794 693830 693830 977774 977774 693830 693830 513794 417347 197702 145661 778116 145661 134427 302314 134427 133254 849419 849419 849419 312043 626750 766886 766886 766886 791277 766886 766886 626750 528272 312043 781908 312043 312043 312043 312043 173571 170347 133254 413252 133254 125370 124665 124665 130538 124665 118135 114428 105855 100943 859156 859156 859156 657525 478800 100943 100943 438744 100943 95158 94597 94597 952803 94597 91324 86008 402956 86008 73753 72038 275067 72038 761906 761906 519454 521258 521258 519454 252380 523220 252380 335055 698181 698181 698181 698181 641628 613446 835663 613446 541721 541721 541721 966658 541721 872789 541721 663432 663432 541721 541721 459688 335055 335055 285064 276011 276011 276011 252380 223090 200545 162261 637142 637142 414200 162261 976084 976084 912350 912350 162261 870244 162261 196855 162261 110235 72038 537844 72038 70073 65172 57281 276585 57281 490886 490886 490886 232336 977134 977134 817823 817823 817823 817823 377568 377568 272030 976059 272030 316895 561607 561607 316895 272030 233598 232336 711407 232336 974003 974003 974003 974003 974003 974003 974003 827427 827427 709705 709705 709705 929246 709705 709705 838790 709705 911355 959584 959584 911355 911355 911355 709705 709705 675941 675941 539553 432741 356674 232336 232336 858872 858872 481510 481510 264017 232336 673919 232336 232336 232336 686279 232336 887140 232336 232184 470803 232184 602485 232184 215057 197181 197181 197181 197181 575551 197181 869546 197181 333332 197181 189068 375870 189068 523803 523803 848898 985138 848898 848898 523803 813211 813211 813211 813211 572146 523803 259755 191352 189068 665638 189068 188132 182129 172904 291884 172904 156023 671298 156023 152744 152744 572608 152744 126632 112044 108258 253797 882012 253797 108258 821774 821774 108258 739270 108258 825532 108258 85671 79749 609505 609505 714594 609505 942557 942557 647762 609505 276508 79749 76804 72936 741620 825705 825705 741620 806034 806034 988680 988680 806034 741620 506827 355533 837240 355533 690061 944452 690061 865034 865034 690061 355533 338203 854532 854532 854532 523140 523140 338203 338203 490824 683635 683635 993984 993984 993984 993984 683635 586613 699237 586613 490824 572411 572411 572411 572411 572411 490824 338203 916464 916464 593929 734650 593929 998197 998197 593929 785473 593929 581623 828629 581623 581623 338203 333169 325934 486514 325934 299297 702693 702693 299297 677385 677385 299297 887091 887091 299297 274865 261554 261554 250184 241656 241656 545460 570738 570738 570738 545460 540798 810379 540798 540798 379003 786585 379003 241656 360943 241656 236670 209397 889435 209397 632228 632228 632228 376583 376583 376583 209397 202948 191649 996787 191649 190107 190107 164835 790987 164835 164835 510968 164835 164835 225019 164835 788200 164835 224134 164835 150432 327325 327325 327325 596495 327325 263792 222643 150432 113083 836029 113083 104277 104277 94894 92518 892977 892977 952943 892977 934063 892977 892977 796921 796921 796921 470833 452557 903326 903326 902395 452557 439025 786979 439025 876914 439025 92518 91650 800156 91650 72936 72216 69796 254104 69796 66122 64932 62472 408729 459957 408729 62472 618385 618385 972669 972669 972669 972669 618385 985749 985749 770828 618385 348133 219942 943682 219942 205495 62472 440364 883445 440364 62472 57281 924561 924561 924561 924561 870846 870846 870846 870846 870846 870846 833569 833569 833569 696010 621218 617500 617500 934497 617500 772797 617500 816030 816030 816030 877462 877462 877462 877462 816030 617500 617303 499600 499600 453474 326935 314537 305024 236397 699949 236397 236397 226405 225713 71049 894180 71049 445151 506778 445151 71049 57281 55871 193738 55871 54492 693950 717200 717200 693950 693950 693950 637074 481258 986139 986139 964291 481258 231749 54492 53597 557495 53597 51543 51318 871502 871502 871502 641328 515922 515922 76939 51318 862004 51318 426889 596531 426889 890653 426889 51318 635400 51318 50207 404660 674842 674842 675937 674842 903523 674842 871951 674842 448826 448826 404660 404660 404660 487373 487373 404660 426932 404660 972603 972603 404660 918838 404660 234294 216874 174308 167275 59728 50207 47897 238112 238112 165479 47897 47503 183791 47503 46982 45913 43357 42284 830785 830785 812904 812904 812904 812904 429989 429989 920917 429989 316141 316141 471115 316141 287882 317660 364165 420406 364165 364165 317660 287882 539157 287882 833599 833599 287882 197014 588415 197014 84930 42284 39568 39568 822811 39568 39271 538755 39271 39271 617583 617583 509287 39271 177025 39271 289674 39271 173785 673669 673669 551569 173785 173785 39271 152562 152562 39271 117043 341870 527516 527516 527516 519304 519304 960598 519304 891478 891478 891478 891478 721877 874993 874993 874993 721877 519304 519304 519304 519304 485925 466152 432760 531192 432760 432760 430283 341870 741136 341870 338551 250214 718492 947806 718492 250214 249003 249003 231921 166559 142558 130987 117043 39271 456578 39271 38805 36512 623071 623071 983855 623071 175227 469063 469063 469063 194096 175227 175227 175227 119568 46612 36512 855589 855589 855589 855589 778006 778006 767457 911707 911707 911707 911707 911707 862381 767457 717064 139318 122274 117038 714301 714301 276525 817806 915626 915626 915626 974069 974069 915626 817806 817806 817806 817806 817806 673673 462493 453482 905448 453482 435238 276525 242704 117038 116356 412576 116356 80795 79459 388338 79459 36512 849474 36512 36512 622594 36512 549712 36512 656657 36512 35555 32686 606022 32686 844386 32686 31535 30836 565180 565180 613907 565180 565180 481157 215279 215279 132477 30836 601064 702127 702127 702127 601064 406777 281399 281399 529162 529162 529162 529162 472129 442140 281399 106535 76751 537459 537459 745772 537459 471028 76751 256651 76751 30836 29180 24861 135052 529181 135052 24861 24804 23942 23322 809528 809528 809528 809528 557994 873892 557994 465220 465220 280063 85783 869031 869031 518374 518374 551516 551516 551516 784368 551516 769949 769949 769949 551516 518374 955290 518374 405776 231258 580785 747746 879926 879926 879926 747746 580785 386147 386147 294692 498230 936911 936911 936911 498230 701484 701484 701484 575214 575214 498230 780225 498230 490378 372397 736228 736228 736228 372397 299688 294692 576993 294692 293184 769721 973054 769721 293184 592662 293184 231258 216797 219977 216797 197420 894017 894017 646151 197420 197420 197420 369211 197420 197420 154607 154607 787447 154607 326952 154607 139551 138245 148560 138245 127461 104760 85783 956343 956343 783820 783820 89126 85783 84951 198394 84951 857935 857935 511578 511578 101320 84951 55379 23322 21006 19871 102575 19871 19409 857045 857045 505986 570054 570054 570054 505986 663646 879607 663646 663646 505986 505986 989021 505986 380555 494199 494199 380555 380555 486041 380555 909619 380555 657110 657110 910606 910606 910606 910606 847012 777781 777781 914127 777781 777781 848610 848610 848610 777781 761360 657110 657110 612353 682451 612353 744489 612353 612353 700903 612353 565348 745830 565348 519437 519437 489010 380555 304590 951304 951304 951304 951304 951304 786718 786718 786718 753164 753164 626712 673243 673243 626712 626712 626712 626712 585557 704710 704710 704710 585557 782827 782827 782827 782827 782827 791590 870009 870009 870009 818903 934469 818903 791590 785439 782827 585557 585557 581699 555634 874962 555634 555634 543169 455618 748121 455618 933055 455618 963054 455618 389877 376727 376727 324528 324528 304590 293967 293802 284609 272367 798344 798344 272367 562146 272367 575076 272367 268607 256261 234241 231394 231394 226031 701132 701132 701132 778804 778804 778804 778804 701132 564984 411353 358209 322309 310637 226031 181346 931655 931655 931655 931655 931655 762457 762457 488180 452011 181346 176093 165560 224303 600067 224303 290965 724530 724530 724530 724530 707090 619984 290965 224303 459368 459368 459368 288765 224303 166889 525439 867418 867418 525439 608095 525439 549377 549377 525439 300965 166889 257443 166889 166889 556432 166889 166889 165560 165511 163675 156892 146439 144052 439677 439677 529001 439677 836537 439677 319574 144052 132069 121864 113134 89203 461964 89203 429578 620168 620168 961987 961987 961987 961987 927148 927148 620168 548001 429578 305015 133525 89203 83526 79482 256847 79482 702584 79482 55801 41869 85349 41869 28863 731417 28863 946946 946946 232639 28863 637002 637002 626805 626805 272202 372224 272202 28863 25181 19409 472137 19409 18969 222361 477752 963302 963302 963302 983204 983204 983204 983204 983204 963302 957086 957086 957086 957086 920633 918389 918389 823050 823050 823050 809248 585261 585261 521935 477752 262642 256685 445608 256685 547347 256685 222361 222361 621411 222361 662107 222361 196455 868330 196455 625533 196455 202857 196455 128592 85408 853215 85408 648220 85408 44604 33135 18969 15371 767629 15371 14937 13669 11594 19642 11594 811181 11594 9981 8973 873276 893363 893363 873276 977515 873276 873276 873276 717028 567884 567884 313884 310666 8973 8022 192155 991339 991339 991339 436565 485961 436565 678841 840247 678841 436565 210441 533805 210441 192155 8022 988616 988616 988616 988616 988616 988616 988616 988616 936532 936532 936532 936532 808973 808973 808973 808973 808973 808973 808973 716103 716103 716103 716103 716067 716067 716067 698185 696279 669930 622459 930116 622459 622459 611445 625597 611445 611445 595582 551492 533182 533182 866509 533182 531853 933722 933722 531853 865713 531853 457418 396576 396576 396576 939870 939870 835375 835375 835375 396576 598404 396576 348212 348212 341422 341422 309902 775535 775535 309902 813023 813023 714786 896420 896420 896420 896420 843406 740503 824795 824795 740503 835860 856027 980492 856027 835860 835860 740503 740503 714786 683828 683828 709908 683828 461248 461248 461248 320033 309902 242065 242065 241724 213530 209357 191447 989635 191447 679650 191447 187573 187478 185083 169411 157266 737458 737458 217528 157266 260339 875925 875925 692028 896308 896308 896308 896308 896308 864600 864600 737248 737248 848919 737248 692028 631332 615584 970160 970160 615584 260339 645603 260339 848887 260339 194225 194225 739596 194225 157266 682837 157266 307982 157266 157266 123578 353736 123578 123744 123578 264717 298934 444261 501186 444261 298934 264717 956624 264717 877661 264717 123578 86960 79469 808412 79469 77928 682788 739203 739203 739203 682788 682788 608915 608915 608915 531865 531865 539591 531865 531865 414834 340704 223439 223439 135556 135556 130271 128463 609408 128463 128463 515075 128463 116183 116183 116183 116183 99241 95237 734269 734269 381762 95237 658359 95237 77928 72499 61991 971151 61991 55644 46580 454337 46580 36432 35939 20970 18780 914300 914300 23025 45132 23025 592305 592305 539227 785528 785528 575739 575739 539227 511868 511868 64534 211345 920900 920900 211345 143146 64534 680607 64534 23025 655981 23025 636352 23025 18780 932331 18780 18166 721659 721659 721659 599046 459836 459836 223128 18166 423089 18166 16561 10533 8022 7910 6936 192478 6936 92016 883503 92016 620159 92016 150453 248417 623488 248417 150453 558471 150453 598786 150453 270658 812670 270658 150453 931537 931537 931537 668410 928505 668410 150453 485465 150453 92016 609706 92016 73579 6936 1601 180 239048 239048 885764 929130 929130 929130 929130 929130 929130 929130 885764 837856 837856 837856 837856 837856 788499 788499 763225 482478 430813 430813 430813 832280 430813 430813 430813 430813 390375 976709 390375 441954 826019 826019 826019 441954 441954 407675 525024 407675 390375 385416 381923 271391 239048 235249 353556 235249 225535 963630 963630 963630 467805 318777 225535 746175 944213 944213 944213 944213 944213 944213 944213 944213 746175 746175 746175 691977 611616 611616 611419 561537 441344 441344 980558 441344 470183 493270 470183 441344 441344 395217 321699 394747 621546 394747 926544 926544 926544 926544 926544 886996 921435 886996 942784 886996 953347 886996 394747 389069 541171 389069 365973 321699 320531 320531 286474 709834 286474 264946 692885 264946 893500 264946 240805 225535 584011 225535 774148 774148 571653 225535 213441 972301 213441 149034 149034 139549 131984 122867 281334 457274 281334 650314 696963 963099 696963 650314 650314 650314 650314 669019 650314 615847 615847 615847 615847 615847 615847 615847 558238 736304 736304 558238 558238 537156 327132 281334 277241 307041 277241 273904 237538 396761 396761 348805 237538 145568 145568 487392 145568 881855 881855 881855 881855 504709 669725 504709 276491 276491 614026 803794 908486 923580 908486 908486 803794 803794 614026 614026 614026 805625 614026 615118 615118 615118 614026 744703 744703 744703 744703 614026 548151 533229 533229 518757 518757 465298 465298 457916 457916 389386 389386 375626 519935 519935 986486 519935 519935 511485 375626 276491 255471 430946 255471 255471 522515 255471 214722 311462 705000 865281 705000 311462 214722 213471 190217 170711 490511 170711 554247 691117 691117 836427 691117 554247 483668 170711 464365 971325 464365 464365 170711 152291 968206 152291 145568 451767 451767 505364 451767 625768 625768 625768 451767 559038 736950 736950 560406 560406 559038 451767 316885 145568 145482 230729 341564 341564 341564 230729 206490 145482 137173 564391 137173 676239 137173 924704 137173 797883 137173 137173 133064 131730 391853 131730 124730 139123 124730 122867 118029 994883 118029 418579 858927 418579 525653 525653 471007 490964 490964 957022 957022 502691 490964 735334 490964 490964 471030 471030 471007 773346 860998 860998 860998 836059 836059 836059 773346 471007 458223 456762 797154 797154 563393 563393 704564 563393 563393 563393 536940 456762 793189 456762 456762 447302 418579 940355 418579 271330 258963 828532 841445 828532 258963 705303 258963 227111 118029 954480 118029 892854 118029 670034 670034 670034 607382 607382 254004 526367 254004 118029 115109 359869 658584 359869 359869 120235 717291 120235 247601 434090 434090 247601 718371 247601 363083 363083 363083 247601 196829 178001 582169 178001 134954 120235 548509 619109 548509 120235 115109 205908 115109 583605 115109 110701 211877 211877 408609 785048 876096 785048 978153 785048 408609 928353 408609 211877 981051 981051 548050 211877 113001 598648 113001 110701 336562 873943 873943 873943 873943 774770 344741 336562 269941 269941 140493 140493 140493 852275 852275 678264 891231 678264 678264 678264 590247 513157 529911 529911 513157 219107 140493 110701 101802 96024 86103 79057 69203 127548 924732 127548 69203 66126 59864 55686 880471 880471 964490 964490 964490 964490 964490 964490 880471 880471 880471 880471 859918 859918 859918 943082 859918 859918 662987 796595 796595 796595 796595 662987 538912 538912 551820 551820 538912 519431 974712 519431 656200 656200 656200 656200 656200 656200 643511 540392 540392 990204 990204 540392 977120 977120 540392 645514 700512 823599 700512 700512 645514 645514 652124 876876 652124 645514 672509 672509 672509 645514 540392 537669 823448 847704 869770 847704 847704 823448 779509 905302 779509 537669 519431 471835 415215 885865 415215 401359 341034 341034 341034 341034 339080 338585 326906 308098 304668 295632 276856 276856 266983 226118 691778 226118 925132 226118 226118 356043 226118 192885 973408 192885 142050 727951 727951 142050 132532 124709 121586 240621 240621 176749 121586 887712 121586 97043 93769 164922 525846 164922 93769 77882 126394 126394 77882 453838 453838 77882 64727 257091 64727 57450 55686 231703 55686 369564 55686 882857 882857 882857 879404 879404 879404 879404 879404 879404 879404 604015 604015 604411 604411 604411 771787 771787 771787 771787 874894 771787 728347 739908 728347 604411 604015 604015 902547 604015 443817 443817 436427 430040 418575 440520 440520 741002 440520 418575 399318 369727 360826 416805 360826 356065 237870 394785 635268 394785 237870 226524 192771 223769 223769 196709 372204 196709 192771 192771 191547 158827 663059 158827 55877 395994 55877 875605 892266 892266 994780 994780 892266 875605 698071 663525 942566 663525 55877 55686 47681 578775 578775 578775 578775 562494 678954 562494 442980 196506 47681 43889 43857 42826 41566 41566 350541 41566 532115 532115 41566 40925 873717 40925 940440 940440 940440 940440 510786 269822 41198 630987 41198 486039 41198 253845 951977 253845 253845 476183 476183 476183 253845 333450 253845 654626 253845 352575 352575 253845 238832 774629 238832 500807 500807 930582 500807 238832 858330 238832 778486 778486 778486 769697 769697 769697 438068 416559 982142 982142 784120 416559 296671 296671 238832 498658 238832 830939 830939 238832 867454 948918 867454 867454 867454 867454 867454 867454 258827 322663 802344 322663 825403 825403 825403 614085 343130 343130 322663 258827 715220 258827 258827 258827 266267 266267 364307 419051 713577 419051 364307 364307 364307 364307 364307 266267 266267 266267 659433 884597 659433 266267 258827 805484 805484 805484 805484 642744 597693 618095 618095 597693 588909 413483 258827 328718 258827 258827 239162 758165 758165 758165 379094 284992 239162 326023 239162 454922 561429 561429 454922 284554 239162 314005 314005 376683 624902 624902 974568 624902 573251 573251 573251 792920 792920 982557 792920 911711 911711 792920 573251 573251 761046 761046 682591 682591 934044 934044 682591 648347 573251 561818 561818 561818 561818 561818 777686 561818 844352 561818 555507 977289 555507 615084 615084 555507 554260 468430 405570 393540 405651 393540 391198 915130 915130 691166 391198 376683 350272 314005 485607 314005 607655 314005 307492 307492 645048 645048 479605 643657 479605 785251 479605 479605 307492 737471 307492 292140 308577 979010 308577 904663 904663 904663 904663 667563 609834 308577 292140 719906 719906 719906 485599 300506 292140 296064 292140 261660 239162 238832 733660 238832 392335 238832 238832 235224 214947 212959 198377 198121 197433 185483 172038 404614 816127 404614 172038 148082 214460 940472 940472 940472 940472 741350 825718 741350 421177 810741 421177 421177 421177 567698 421177 990960 421177 270752 217363 367722 367722 750325 367722 217363 214460 148082 145672 +5000 999797 999502 999371 999169 999143 999010 998986 998914 998790 998595 998588 998413 998214 998044 997762 997666 997436 997258 996950 996646 996619 996544 996330 996071 995137 994891 994880 994270 994238 993673 993330 993204 992997 992990 992849 992441 992331 992121 992031 991638 991455 991081 990990 989808 989713 989403 989315 989097 988947 988583 988546 988367 988263 988149 988000 987916 987786 987763 987078 987046 986005 985974 985828 985827 985776 985339 985240 984891 984752 984723 984452 984269 984230 984191 984037 983866 983431 983079 983041 982877 982513 982325 982064 982026 982021 981730 981238 980529 980471 980152 980116 980048 979516 979319 979203 978888 978772 978267 978158 977636 977426 977067 977033 976854 976663 976259 976172 976133 975968 975215 974605 974235 974227 974190 973684 973571 973142 972727 972608 972112 971923 971480 971465 971064 970722 970548 970329 970174 970145 969748 969725 969632 969517 969479 969226 969081 968985 968956 968860 968809 968718 968666 967811 967652 967104 966859 966704 966602 966348 965882 965766 965138 964687 964578 964405 964355 964204 964135 964128 963977 963595 963427 963344 963296 962516 962286 962203 961832 961530 961397 961310 961049 960695 960486 960367 959590 959582 959470 959387 959210 959029 958944 958894 958459 958431 957991 957850 957650 957481 957328 957212 957138 957001 956744 956582 956277 956073 955746 955647 955486 954971 954669 954331 954192 954077 954070 953857 953755 953529 953480 953358 953318 953145 952716 952668 952610 952237 952111 952018 951508 951463 951136 950659 950561 950252 949965 949927 949845 949031 949002 948997 948860 948840 948729 948512 948397 948346 948106 947464 947326 947291 947003 946514 946454 946011 945886 945612 945347 945206 945186 945104 945082 945011 944999 944857 944750 944502 944217 944107 944038 943807 943661 943440 943295 943010 942880 942479 942257 942095 941996 941966 941856 941814 941676 941174 940997 940326 939570 939487 939253 939195 938997 938912 938468 938004 937814 937582 936892 936688 936641 936587 936531 936353 936122 936027 935956 935545 935517 935461 935426 935230 934961 934591 934415 934124 934093 933991 933939 933806 933793 933416 933324 932948 932875 932836 932505 932273 931572 931444 931170 930396 930322 930149 930147 929951 929626 929601 929484 929178 929104 928231 927448 927371 927002 926214 926150 926001 925987 925953 925378 925222 925047 924645 924311 924291 924146 924030 923854 921947 921846 921716 921342 921144 920926 920553 920433 920403 920374 920346 920337 920263 920084 919772 919682 919511 919352 919167 918374 918284 918034 917984 917653 917475 917185 917018 916576 916261 916033 915954 915900 915751 915471 915395 914721 914678 914005 913995 913986 913947 913894 913842 913654 913501 912729 912696 912204 912114 912000 911795 911382 911301 911128 911040 910891 910841 910838 910535 910506 910025 910022 909927 909731 909143 909114 908776 908607 908327 908129 907853 907447 907418 907072 906984 906736 906626 906606 906550 906542 906345 906064 905601 905564 905373 905183 905021 904805 904489 904308 903788 903691 903088 902729 902508 902492 902489 902460 902345 902075 902017 901467 901250 900807 900801 900385 900288 900163 899784 899646 899588 899515 899267 898773 898466 898147 898074 897955 897871 897868 897555 897538 897161 897098 897034 896900 896888 896750 896465 896226 896166 895803 895732 895693 895674 895224 895180 894834 894053 893840 893723 893405 893176 892289 892281 892249 891623 891527 891076 890998 890827 890040 889511 889382 889323 889316 889236 889018 888570 888417 888263 888089 887751 887528 887457 887365 887045 886751 886397 886315 886252 886105 886042 885956 885753 885683 885581 885264 884244 884157 884046 883403 883345 882830 882703 882691 882566 882359 882285 881751 881610 881449 881311 881173 881137 881130 880858 880711 880346 880075 879804 879766 879638 879629 879484 879390 879327 879065 878809 878734 878295 878264 878009 877997 877818 877803 877746 877375 877243 877215 876875 876595 876431 876340 876328 875922 875200 875106 875011 875005 874932 874909 874853 874455 874442 874349 874326 874095 873917 873802 872847 872645 872603 872590 871864 871705 871601 871584 871455 871357 870998 870719 870573 870523 870347 870273 870052 869901 869762 869542 869459 869457 869074 868689 868558 868440 868172 868103 868002 867798 867750 867335 867051 866909 866716 866529 866297 866059 866029 865962 864615 864355 864309 864189 864152 863999 863874 863137 863063 862540 862520 862230 862178 862134 861879 861801 861753 861629 861453 860497 860461 860191 860000 859891 859844 859769 858737 858336 858122 857013 856837 856282 856140 856110 855818 855657 855506 855454 855452 855169 855070 855008 854972 854606 854299 854155 853907 853653 853545 853377 852602 852531 852414 852318 852204 851642 851591 851590 851532 851508 851341 851294 851211 851120 850689 850174 850060 849776 849699 849355 849063 848280 847709 847381 847302 847207 846545 846329 846287 845873 845600 845355 845349 845198 845194 845112 845072 844949 844711 844456 844425 844324 844221 844173 842459 842351 842052 841858 841523 841521 841447 841325 841244 841202 841061 840916 840849 840761 840745 840738 840611 840554 840423 840252 840219 840048 840020 839829 839821 839726 839597 839166 839088 839087 839027 838659 838218 838015 837790 837358 837239 837182 836058 835674 835576 835541 834977 834969 834882 834816 834729 834284 834155 834144 834063 833536 833488 833149 832641 832624 832613 832573 832467 832338 832332 832192 832143 832120 832080 831993 831690 831583 831012 830867 830844 830572 830540 830362 830201 830159 830085 830068 830031 829145 829074 828982 828523 828503 828350 827909 827068 826870 826644 826589 826227 826182 826017 824681 824492 824473 824304 824226 823871 823717 823100 823038 822820 822370 821836 821804 821795 821515 821356 821292 821216 821076 821058 821022 820766 820548 820449 820418 820184 820097 819963 819752 819751 819607 819563 819528 819142 818763 818263 818108 817852 817172 817151 816621 816588 816326 816149 815845 815778 815647 815463 815347 814888 814715 814616 814611 814377 814326 814323 814227 814152 814064 813895 813836 813662 813488 813438 813132 813101 812988 812892 812878 812858 812619 812544 812307 812162 812128 812018 811834 811761 811438 811140 811111 810978 810848 810669 810639 810283 809482 808617 808374 808235 808153 808059 807631 807586 807537 807399 807366 807325 807138 806948 806902 806716 806637 806470 806194 805599 805480 805400 805086 805062 804985 804932 804535 804381 804209 803856 803796 803695 803592 803099 802970 802960 802801 802779 802714 802381 802351 802171 802128 802091 802075 801056 801027 800934 800708 800602 800583 800446 800381 800075 800051 799937 799912 799790 799663 799600 799242 798836 798815 798678 798458 798451 798295 798025 797965 797763 797639 797560 797538 797209 797153 796571 795643 795208 795153 795036 794966 794692 794647 794594 793404 792785 792634 792569 792518 792442 792174 792099 792076 791944 791897 791759 791382 791273 791161 790765 790310 790191 790185 790046 789910 789875 789758 789650 789611 789368 789286 788719 788561 787507 787474 787136 787128 786782 786450 786150 786054 786010 785570 785522 785512 785082 785007 784543 784054 783893 783557 783502 782863 782655 782612 782477 782075 782052 782037 781987 781949 781944 781875 781829 781703 781672 781616 781568 781533 781509 781263 780192 779037 779007 778884 778341 778301 778195 778175 778078 777788 777614 776376 776162 775900 775013 774910 774890 774776 774637 774341 774048 773958 773871 773554 773083 773071 772882 772553 772540 772298 772073 771870 771490 771191 771003 770958 770809 770780 770503 770084 770078 770072 769939 769891 769833 769630 769566 769262 769155 768908 768853 768712 768566 768564 768097 767951 767635 767526 767479 767262 767154 767096 767009 766662 766509 766444 766392 765982 765783 765768 765543 765494 765100 764847 764591 764530 764500 764399 764312 764123 763820 763373 762883 762567 762520 762419 762355 762101 762022 762005 761813 761693 761541 761397 761227 761200 761122 760617 760606 760528 760216 760121 760049 760035 759953 759544 759426 759286 758998 758542 758396 758381 757952 757917 757779 757614 757604 757463 757421 757166 756923 756785 756707 756553 756545 755874 755845 755758 755509 755317 755313 755107 755082 755047 754994 754457 754453 754313 754173 754052 753133 752875 752742 752413 751943 751906 751233 751059 751002 750876 750845 750688 750492 750403 750161 749952 749424 749256 749192 749107 749063 749022 748984 748644 748473 748455 748350 748304 748086 747347 747304 747174 747155 747086 747014 746749 746588 745794 745564 745419 745027 744941 744866 744810 744291 744100 743657 743598 743425 743409 743221 743102 742959 742553 742290 742248 742113 741987 741919 741879 741790 741765 741647 741509 741205 740997 740793 740504 740495 740440 740330 740081 740027 739972 739501 739477 738977 738938 738865 738843 738805 737915 737666 737469 736506 736357 735845 735479 735035 734866 734836 733983 733486 733418 733248 733210 732835 732513 732426 732405 732262 732081 731817 731751 731734 731635 731504 731385 731131 730957 730511 730316 730185 730035 729993 729764 729710 729525 729460 729449 729382 729358 728827 727843 727408 727381 727094 727048 726607 726546 726455 726256 726136 725559 725557 725418 725197 725122 724858 724461 724401 724338 724132 724107 724031 723955 723891 723790 723237 723150 722668 722349 722254 722052 721876 721832 721606 721543 721294 721151 720527 720508 720279 719531 719522 719289 719121 719006 718940 718862 718397 718213 718187 718075 717845 717636 716914 716252 716241 716127 715810 715410 715380 715030 714598 714495 714358 714309 714128 714026 713633 713579 713173 712652 711719 711127 711121 710982 710849 710074 710053 710035 709919 709909 709624 709607 709368 709343 709259 709039 708910 708492 708067 707927 707899 706979 706680 706678 706191 706091 706006 705674 705575 705515 705435 705198 704797 704760 704701 704677 704242 704241 704114 704043 704032 703910 703707 703396 703233 703078 702555 701799 701570 701368 701296 700968 700802 700442 700280 700149 699875 699860 699805 699279 699222 698873 698558 698388 698358 698047 697665 697386 696940 696818 696726 696466 696399 696365 696293 695807 695570 694143 694067 693714 693712 693418 692851 692775 692323 692116 692050 691452 691411 691362 691354 691169 691029 690818 690406 690286 690085 690065 690019 689938 689890 689825 689768 689716 689478 689219 689174 688468 688441 688274 687940 687689 687598 687560 687525 687395 686999 686974 686490 686229 686058 686034 685795 685307 685090 685003 684795 684626 684584 684290 684207 683944 683761 683432 683069 682243 682054 681595 680913 680745 680694 680681 680619 680606 680091 679859 678834 678815 678574 678560 678318 678088 678061 677968 677694 677655 677559 677520 677515 677342 677033 676978 676888 676877 676691 676600 676339 676216 676182 676041 676007 675630 675528 675317 675304 675022 675009 674998 674964 674891 673866 673013 673012 672968 672948 672754 672748 672484 672412 672134 672035 672016 671894 671733 671301 671217 671140 671083 670954 670518 670191 670149 670135 669999 669995 669845 669703 669641 669227 669081 668978 668762 668742 668712 668684 668634 668339 667853 667788 667757 667598 667325 666791 666364 666284 665910 665841 665551 665543 665439 665341 665243 665205 664698 664482 664456 664392 663774 663567 663537 663235 662949 662846 662749 662527 662388 661908 661818 661703 661580 661554 661531 661404 661020 660962 660803 660783 660106 660071 659934 659933 659883 659760 659671 658811 658600 658555 658338 658273 658100 658013 657757 657239 657092 656959 656884 656859 656849 656814 656793 656583 656561 656481 656438 656305 656205 656102 656046 655998 655662 655557 655463 655032 654964 654896 654292 653728 653459 653185 652232 651667 651426 651339 651320 651204 651062 650356 650246 650227 650208 650070 649275 649025 648818 648797 648678 648516 648355 648073 647994 647892 647579 647572 647332 647228 647118 646999 646933 646601 646399 646155 646016 645860 645752 645659 645636 645599 645456 645273 644961 644600 644397 644020 643979 643948 643910 643656 643532 643018 642759 642343 642159 642152 641885 641778 641742 640844 640709 640680 640589 640511 640265 640236 640234 640181 638962 638753 638708 638666 638568 638351 638209 637740 637661 637189 636961 636794 636444 636410 636324 636137 635534 635070 634653 634579 634543 634142 634095 633498 633018 632873 632832 632756 632687 632673 632380 632118 631949 631391 630855 630758 630693 630472 630362 630266 630262 630001 629351 629245 629028 628526 627775 627309 626895 626886 626757 626515 626499 626464 626428 626372 625677 625676 625417 625394 625358 625152 624835 624591 624579 624431 624416 624402 624263 624176 624119 624059 624050 623899 623889 623767 623117 623001 622755 622682 622294 622223 621971 621846 621730 621277 621045 620995 620681 620634 620351 620079 620028 619797 619677 619645 619626 619595 619332 618714 618636 618571 618529 618290 618252 618211 618201 618194 617828 617718 617616 617273 617237 616847 615671 615398 615178 615004 614661 614404 613962 613948 613947 613774 613505 613273 613266 613237 613206 613198 613090 612721 612619 612605 612575 612046 612034 611874 611706 611582 611570 611148 610481 610398 609980 609864 609342 608907 608843 608832 608771 608693 608574 608529 608400 608379 608168 608131 607906 607899 606917 606831 606818 606616 606587 606509 606255 606151 605857 605733 605443 605368 605155 605045 604794 604575 604533 604440 604275 603901 603873 603520 603409 603246 603092 603072 602961 602915 602532 602448 602028 601842 601715 601517 601512 601291 601233 600890 600772 600331 600193 600172 600013 599933 599888 599671 599621 599605 599342 599229 598975 598916 598757 598512 598466 598423 597836 597737 597236 597112 597024 597003 596917 596801 596330 596320 596098 596009 595931 595612 595552 594972 594489 594213 593988 593958 593892 593578 592788 592618 592617 592105 591840 591747 591718 591443 591083 591054 590868 590781 590723 590561 590515 590168 590015 589832 589807 589803 589680 589317 589115 589082 588891 588884 588157 587309 587075 586671 586034 585741 585462 585441 585193 584871 584788 584668 584505 584297 584295 583990 583920 583866 583809 583561 583560 583363 583104 582725 582569 582206 581531 581394 581381 581337 581275 580987 580553 580440 580365 580197 579887 579836 579541 579168 579046 578730 578704 578625 578466 577689 577624 577509 577420 577305 577079 576873 576561 576277 576264 575933 575875 575707 575508 575395 575130 574885 574779 574674 574663 574556 574537 574362 574260 574065 573887 573592 572536 572449 572383 572258 572159 571985 571815 571753 571301 571288 571223 571069 570873 570407 570390 570174 569872 569409 569124 568887 568486 568345 568301 568132 567854 567635 567531 567337 567271 567030 566897 566893 566301 566256 566179 565886 565766 565100 565045 564850 564607 564363 563435 563337 562965 562942 562639 562458 562403 562362 562124 562000 561936 561834 561781 561764 561702 561660 561549 561201 560882 560733 560698 560274 560232 559157 559014 559005 558346 558278 558110 558099 558059 557943 557301 557212 557199 557149 556876 556313 556280 556064 555807 555768 555745 555701 555498 555385 555178 555062 554686 554613 554575 554546 554452 554341 554212 553598 553267 552626 552538 552221 552206 551702 551582 551465 551264 550914 550832 550733 550248 550066 549916 549754 549659 549510 549444 549311 549172 548905 548853 548797 547827 547702 547532 547474 547403 547290 547029 546894 546892 546689 546510 546092 545985 545637 545499 545495 545426 545326 545145 545144 545136 544741 544628 544469 544435 544187 543443 543407 543124 543019 542990 542811 542573 542555 541755 541725 541664 541436 541419 541168 541046 540943 540715 540562 540418 540387 539983 539934 539921 539795 539751 539488 539393 538997 538713 538593 537926 537810 537786 537538 537517 537429 537346 537201 537044 536929 536650 536349 536285 536140 535842 535814 535749 535639 535600 535487 535288 534853 534766 534710 534302 534043 533854 533738 533718 533436 533116 533096 532796 532529 532405 532023 531999 531862 531778 531718 531704 531493 531463 531037 530912 530673 530390 529731 529615 529441 529354 529024 528833 528543 528332 528070 527817 527799 527693 527464 527165 526981 526764 526721 526604 526576 526484 526140 526095 526069 525671 525092 524873 524409 524401 524367 524235 523916 523913 523584 523420 522963 522820 522648 522075 521177 520526 520456 520172 520056 519901 519395 519350 519338 519164 519122 519088 518494 517958 517798 517707 517378 516618 516463 516404 516363 515710 515666 515456 515416 515323 515231 514512 514443 514309 514082 513947 513511 512925 512808 512527 512520 511880 511710 511607 511367 511243 510794 510742 510597 510321 510296 510287 510029 509909 509901 509861 509813 509610 509478 509431 509274 508962 508835 508799 508786 508654 508407 508346 508231 508230 508085 508030 507967 507854 507657 507651 507131 506254 506247 505836 505533 505337 504892 504487 504232 504086 504079 503885 503881 503675 503632 503535 503043 502428 502173 501747 501432 501364 501201 501090 501027 500790 500778 500517 500383 500231 499700 499622 499592 499373 499334 499301 499237 499212 499060 498330 498306 498141 498087 497449 497431 497402 497188 497098 496730 496473 496425 496227 495873 495851 495586 495551 495517 495466 495413 495400 495176 495140 494886 494750 493996 493933 493916 493443 493409 492976 492902 492799 492675 492371 491907 491556 491530 491515 491297 491114 491002 490864 490842 490698 490582 490234 490192 490170 490108 489528 489398 488913 488899 488453 488449 488428 488145 488035 487995 487839 487817 487609 487165 487038 486851 486799 486632 485285 484960 484781 484752 484628 484418 484293 483873 483859 482940 482423 482279 481990 481968 481667 481142 480997 480768 480577 480308 480020 479730 479661 479503 479431 479388 479376 479314 479063 478828 478646 478634 478580 478444 478073 477667 477493 477484 477346 477305 477198 476852 476770 476401 476306 476247 476221 476211 475661 475436 474603 474439 474384 474329 474189 474155 474091 473957 473766 472912 472908 472854 472850 472578 472415 471800 471746 471259 471078 471021 470700 470692 470244 470125 469857 469544 469377 468687 468146 468101 468072 468033 467920 467838 467318 466647 466604 466564 466380 466303 466250 465975 465952 465891 465568 465395 465190 464962 464958 464879 464792 464295 464121 464041 463519 463438 463374 463100 462872 462857 462846 462819 462813 462510 462452 462388 462324 462321 462056 461766 461756 461719 461193 461018 460600 460434 460410 460281 460122 459794 459475 459256 459224 459030 459011 458652 458595 458570 458251 458170 457811 457787 457775 457768 457510 457364 457187 457161 457087 456987 456614 456192 455985 455247 454632 454627 454177 454146 453868 453801 453762 453417 453321 453218 452693 452683 452649 452403 452142 452024 451721 451681 451249 451242 450634 450516 450199 450027 449683 449503 449412 449280 448623 448618 448033 447720 447458 447424 447181 446921 446920 446842 446610 446543 446427 446400 446398 446315 446222 446216 446110 445791 445574 444564 444360 444244 444049 443964 443154 443130 442977 442927 442818 442550 441646 441419 441301 441158 440638 440373 440348 439929 439446 439407 439251 439243 438543 438459 438401 438019 437980 437847 437622 437372 437314 437087 436704 436393 436265 436248 436194 436141 435904 435679 435466 435409 435255 435213 435128 435117 435008 434954 434925 434693 434686 434486 434438 434343 434255 434071 433926 433791 433319 432979 432785 432712 432395 432141 432052 431928 431782 431770 431479 431471 431268 431239 431050 431033 431016 430469 430275 430250 430191 430092 429942 429898 429837 429811 428231 427923 427813 427501 427230 426939 426446 426409 426236 425902 425830 425808 425781 425411 425308 425255 425237 425171 424617 424363 424334 424205 424160 424040 424017 423945 423845 423808 423727 423553 423045 422838 422577 422016 421924 421603 421574 421282 421248 421110 420829 420546 420435 420421 420186 419930 419874 419797 419618 419603 419600 419549 419520 419508 419030 419014 418962 418812 418667 418434 418328 418256 417949 417461 417432 417086 416967 416752 416710 416704 416037 415854 415592 415520 415515 415511 415174 414904 414809 414679 414374 414121 414061 413889 413831 413367 413137 412881 412823 412664 412368 412185 411886 411480 411454 410699 410541 410396 410157 409798 409793 409068 408814 408533 408284 407864 407786 407356 407275 407230 407008 406708 406581 406486 406328 406023 406010 405718 405661 405629 405177 405167 404725 404150 403702 403653 403565 403276 402857 402856 402522 402306 402271 402000 401696 401311 401109 400924 400850 400710 400673 400441 400334 400333 400264 399629 399509 399445 399382 399266 399236 399149 398644 398171 397888 397625 397475 396592 396476 396462 396297 396226 396120 395965 395954 395804 395215 395032 394985 394876 394811 394644 394452 394256 394196 393945 393913 393871 393654 393365 393291 393088 392550 392205 392189 392112 391663 391581 391387 391377 391075 391016 391012 390983 390896 390607 390600 390574 390339 390320 390310 390068 389591 389482 389371 388970 388559 388299 387907 387816 387748 387619 387347 387230 387210 387115 386840 386819 386638 386428 386395 385573 385554 385462 385242 385129 384818 384326 384088 383766 383692 383678 383620 383352 383316 383244 383170 383107 382953 382718 382337 382103 381559 381497 381280 381127 380628 380454 380329 380300 380250 380195 380105 380055 379680 379627 379396 379379 378949 378923 378922 378728 378540 378352 378315 378288 378285 377956 377882 377791 377777 377685 377521 377296 377234 376973 375291 375201 375153 375091 375080 375027 374976 374773 374509 373671 373630 373561 373354 373335 373180 373155 373137 372783 372749 372726 372572 372556 372455 372394 372359 372291 372243 372058 372043 371565 371513 371384 370621 370323 370244 370191 370078 369859 369781 369304 368602 368520 368434 368334 368102 368057 367964 367867 367838 367825 367584 367062 366945 366885 366831 366559 366445 366392 366360 365787 365741 365504 365364 365319 365257 365113 364480 364368 364221 364123 364103 363433 362174 362053 361851 361832 361611 361520 361399 361300 361242 361027 360856 360743 360451 360415 360115 360034 359547 359257 359141 358648 358449 358152 357517 357344 357170 357056 356931 356643 356631 356471 356155 356094 355570 355372 355307 355081 354934 354872 354847 354809 354473 354415 354002 353377 353266 353248 353225 352501 352471 352204 351974 351845 351837 351834 351424 351352 351163 351162 350590 350464 350390 350169 350082 349966 349886 349594 349458 349366 349018 348992 348563 348476 348467 347922 347686 347588 347575 347553 347234 347196 347074 346903 345940 345773 345673 345615 345384 345277 345250 345050 344842 344783 344287 344142 344088 344020 343718 343716 343591 343330 343195 343034 342810 342686 342667 342470 341967 341745 341539 341485 341484 341077 340575 340396 340378 340259 339650 339484 339447 339334 339148 338902 338510 338481 337510 337425 337329 337105 337089 336973 336650 336377 336265 336140 336075 335938 335872 335466 335364 335292 335204 335146 335014 334985 334931 334711 334504 334291 334219 333941 333866 333639 333476 333451 333122 332966 332544 332217 331703 331632 331479 331115 330809 330796 330762 330681 330668 330632 330515 330506 330429 330374 330206 329876 329855 329764 329428 328486 328472 327573 327273 326806 326606 326427 325876 325643 325269 324634 324570 324547 324482 324287 324098 324087 323884 323639 323503 323117 322772 322212 322106 321845 321841 320603 320366 320352 319821 319603 319379 319376 318767 318715 318537 318459 317253 317036 316828 316688 316118 315989 315639 315385 315277 315033 315015 314933 314668 314656 314543 314456 314216 314035 313731 313623 313571 313015 312686 312608 312393 311913 311209 310882 310879 310802 310801 310766 310595 310399 310252 310216 310185 310183 309986 309935 309394 309342 309210 308942 308938 308698 308578 307591 307373 306954 306924 306867 306793 306681 306511 306473 306431 306270 306234 305869 305583 305175 304899 304856 304638 304480 304309 304233 304066 303836 303665 303465 302968 302430 302299 301838 301726 301617 301409 301193 300537 300501 300330 300269 299970 299785 299696 299650 299413 299094 298912 298647 298186 298125 297997 297678 297546 297514 297427 297256 297157 297108 296653 296208 295979 295201 295156 295139 294048 293920 293743 293108 292917 292893 292705 292686 292670 292040 292019 291951 291922 291547 291400 291284 291191 291078 291052 290701 290295 290293 290221 290209 289945 289628 289564 289486 288588 288580 288533 288272 287712 287698 287364 286972 286827 286780 286653 286323 286316 286066 285977 285798 285510 285137 285116 284991 284989 284885 284752 284582 284580 284520 284292 283973 283829 283659 283623 283565 283333 283242 283129 282869 282582 282506 282432 282182 282034 281763 281712 281380 281293 279717 279541 279195 279184 279012 278800 278789 278785 278765 278518 278457 278393 277886 277826 277716 277676 277539 277386 276931 276864 276846 276723 276611 276574 276350 276156 275936 275879 275541 275450 275430 275180 275046 274984 274299 274027 274026 273986 273846 273749 273609 273498 273449 272879 272871 272825 272768 272718 272715 272175 271993 271893 271858 271623 271274 271014 270923 270717 270680 270607 270428 269964 269904 269393 269331 269264 269050 268789 268722 268499 268388 267804 267791 267606 267591 267585 267470 267325 267108 267063 266921 266687 266580 266422 266387 266230 266179 265657 265503 265272 265266 265233 265155 264921 264822 264547 264104 263928 263906 263902 263901 263825 263706 263700 263313 263119 262873 262410 262333 262190 262067 262052 261817 261771 261718 261440 260993 260805 260740 260626 260089 259966 259962 259945 259689 259493 259406 259265 258830 258628 258602 258378 258313 257426 257325 256943 256586 256245 256017 255935 255869 255728 255611 255420 255412 255193 254787 254654 254360 254336 254249 254091 253965 253709 253320 253227 253222 252947 252786 252554 251871 251664 251352 251346 250844 250797 250646 250418 250321 250301 249388 249170 249093 248982 248938 248906 248825 248654 248510 248402 247897 247750 247672 247233 247073 246618 246537 246503 246472 246406 246117 245890 245102 245062 244899 244766 244450 243719 243652 243580 243362 243342 243303 243026 242992 242914 242573 242550 242265 242100 241518 241273 241085 240867 240712 240275 240273 239858 239287 239128 239069 238671 238576 238011 237962 237951 237475 236649 236409 236140 235713 235271 234872 234297 234209 233995 233803 233719 233642 233456 233198 233190 232850 232441 232405 232176 232047 232031 231496 231409 231305 231249 231205 230862 230761 230620 230618 230616 230320 229853 229558 229431 229313 229205 229166 228526 228492 228190 228097 227920 227912 227827 227805 227557 227369 227208 226470 226339 226261 226188 226027 225948 225648 225164 225126 224971 224666 223821 223480 223397 223243 223230 223107 222957 222610 222233 222114 221914 221880 221624 221588 221578 221032 220787 220460 220229 220151 220138 220104 219967 219364 218458 218416 217963 217567 217394 216807 216577 216363 215795 215714 215661 215530 215192 215161 215134 215018 214385 214338 214203 213694 213631 213544 213491 213416 213184 213097 212718 212630 211587 211287 211274 210992 210985 210905 210458 210426 210389 209910 209736 209537 209505 209441 209299 209245 208983 208925 208685 208315 208226 208023 207913 207802 207523 207471 207420 207280 207207 206867 206750 206740 206546 205671 205256 205185 205111 204799 204569 204462 203583 203395 203096 202976 202459 202222 201964 201904 201881 201812 201558 201415 201384 201132 200402 200373 200195 200188 199822 199696 199687 199439 199435 199414 199146 199000 198972 198629 198340 198254 198223 197976 197877 197846 197739 197583 197557 196425 196311 196166 195999 195925 195702 195637 195617 195449 195142 194839 194796 194607 194549 194395 194366 194138 193998 193933 193926 193893 193761 193699 193469 193452 193345 193171 192675 192449 192367 192305 192280 192137 191896 191718 191380 190970 190938 190867 190511 190455 190388 190083 189991 189968 189717 189300 189073 188882 188769 188731 188683 188644 188029 187723 187590 187374 187229 187116 186476 186406 186302 186134 186043 185908 185838 185755 185637 185634 185564 185464 184943 184753 184642 184590 184298 184276 184130 183558 183551 183518 183413 183202 182672 182384 181945 181512 181484 181423 181210 181172 181137 181069 180934 180808 180630 180475 180321 180270 180125 179984 179968 179868 179838 179625 179512 179338 179252 179167 178938 177979 177840 177604 177336 177112 177109 176438 176256 176089 176058 175936 175931 175368 175315 175136 174933 174887 174660 174260 174226 173977 173635 173516 173222 173089 172897 172688 172207 172103 172074 172045 172021 171973 171915 170903 170845 170297 169486 168933 168873 168641 168520 168392 168386 168231 168181 168072 167909 167775 167458 167062 166955 166820 166768 166349 166280 166153 166060 165946 165798 165770 165743 165504 165283 164926 164262 164149 164034 163910 163773 163707 163568 163456 162824 162794 162583 162439 161901 161883 161565 160891 160756 160556 160440 160402 160317 160044 159973 159934 159900 159825 159180 158987 158553 158468 158183 158102 157741 157736 157527 157212 157070 156928 156780 156630 156577 156427 156298 156262 155964 155810 155506 155149 154031 153941 153857 152810 152784 152636 152626 152579 152346 152201 152156 152024 151837 151600 151592 151450 151353 151157 151137 151125 150288 150106 149768 149571 149353 149010 148894 148888 148773 148722 148544 148514 148329 148289 148279 148092 148057 147959 147439 147242 147216 146601 146491 146424 146335 146333 146191 145788 145466 145208 144972 144964 144914 144751 144716 144554 143436 142802 142739 142196 141782 141732 141615 141508 141497 141240 141218 140968 140834 140668 140237 140076 139576 139144 138710 138701 138339 138324 138029 138005 137900 137865 137825 137439 136946 136399 136392 136274 136127 135268 135221 135203 134917 134640 134630 134472 134417 134224 134097 134048 133983 133837 133343 133178 132859 132622 132531 132358 132103 131900 131781 131759 131218 130796 130778 130531 130336 130096 129861 129513 129317 129188 128806 128762 128672 128585 128392 128331 128134 128092 128018 127862 127826 127796 127536 127425 126677 126532 126301 126123 126052 126007 125544 125376 125165 124949 124862 124672 124631 124621 124341 124324 123894 123882 123282 123106 122560 122501 121822 121793 121518 121498 121310 120931 120761 120671 120591 120558 120547 120525 120210 119976 119729 119543 119427 119421 119373 119227 117907 117618 117430 117400 117235 117198 116994 116864 116382 116182 116018 116008 115761 115525 115307 115284 115251 115140 115044 114929 114435 114413 113929 113920 113355 113199 112832 112784 112693 112683 112646 112629 112566 112281 112232 111997 111334 111324 111051 110931 110025 109978 109976 109947 109933 109768 109766 109748 109651 109536 109362 108918 108896 108889 108840 108546 108439 108391 106846 106603 106498 106467 106302 105802 105249 105176 104997 104316 104185 103445 103394 103252 103107 102967 102785 102678 102118 101663 101633 101615 101517 101407 101385 101344 101059 101012 101010 100954 100937 100872 100822 100814 100524 100089 99239 99076 99057 99000 98559 98449 97823 97724 97568 97239 97167 97044 96825 96745 96302 96128 96047 95879 95216 94983 94969 94893 94803 94690 94433 94349 94059 94011 93818 93767 93659 93542 93448 93156 92606 92312 92266 91855 91681 91671 91420 91388 91373 91165 91088 90995 90985 90744 90601 90515 90456 90369 90112 90096 89908 89789 89744 89671 88915 88675 88270 88264 88075 87933 87818 87811 87452 87389 87312 87226 87081 87005 86954 86945 86767 86583 85756 85718 85701 85580 85415 85375 84917 84901 84628 84582 84362 84081 83842 83793 83726 83090 82979 82836 82771 82522 82412 82399 82325 82189 82145 82092 81812 81774 81769 81647 81636 81556 81347 81321 81270 81223 81164 81118 80833 80806 80671 80541 80347 80304 79846 79843 79820 79564 79346 79345 78903 78712 78380 77993 77817 77699 77580 77316 77288 77001 76930 76462 76338 76278 76195 76079 75818 75330 75272 75258 75248 75236 75234 75202 75191 75177 74705 74610 74494 74424 74274 73218 73050 72972 72916 72878 72789 72290 71986 71832 71602 71600 71479 71345 71229 71118 70922 70914 70878 70807 70313 70185 70101 70009 70007 69869 69457 68970 68884 68791 68706 68684 68503 68159 67901 67521 67395 67311 67152 66659 66119 65687 65383 65256 64914 64340 64121 63892 63696 63435 63417 63238 63193 63172 62997 62981 62600 62378 62353 62244 62061 61932 61903 61729 61004 60860 60488 60214 60163 60091 59961 59758 59752 59705 59162 58966 58679 58012 57629 57336 57106 57053 56871 56870 56752 56660 56027 55914 55848 55573 55342 55284 54659 54617 54385 54306 54145 54033 53731 53696 53042 52963 52869 52819 52716 52695 52496 52333 52181 51898 51882 51825 51695 51245 50179 49874 49827 49729 49463 49364 49225 49096 49045 48873 48632 48622 48133 47733 47398 47163 47085 46959 46641 46082 45838 45707 45593 45524 45391 44894 44865 44730 44724 44668 44496 44234 43958 43937 43836 43766 43686 43233 42958 42647 42580 42466 42027 41922 41904 41654 41182 41127 40779 40588 40144 39932 39840 39839 39711 39120 38892 38443 38315 38279 38027 37525 37335 37304 37283 37100 36543 36521 36504 35924 35328 35071 34947 34712 34707 34393 34248 33942 33884 33832 33802 33787 33778 33677 33565 33409 33092 33032 32830 32811 32750 32705 32295 32282 32221 32220 32097 31961 31917 31748 31338 31213 31100 30539 30364 30288 30120 30067 29801 29632 29539 29002 28776 28558 28023 28013 27845 27783 27674 27659 27543 27486 27299 27175 26980 26975 26953 26889 26644 26378 26320 26077 25956 25758 25509 25484 25296 25253 25200 25120 25033 24891 24746 24709 24441 24035 23589 23471 23373 23165 23064 22940 22854 22614 22352 22290 21842 21791 21785 21521 21483 20998 20758 20247 19779 19554 19353 19112 18646 18617 18578 18385 18275 18164 18106 17932 17316 17314 17120 17091 16532 16272 16025 15885 15807 15234 14682 14626 14559 14450 14331 13658 13552 13255 13212 12927 12736 12567 12279 11982 11954 11884 11506 10990 10736 10655 10566 10442 10434 10158 9515 9224 9223 8993 8818 8143 8074 7891 7744 7684 7253 6925 6485 6397 6209 5881 5864 5736 5511 5286 5197 5196 4817 4411 4402 4281 4240 4099 3747 3691 3579 3526 2470 2301 2013 1895 1742 1734 1683 1663 1241 689 589 579 349 263 244 115 32 +5000 999776 999515 999290 999049 998627 998411 998382 998279 998152 998045 997796 997467 997320 997216 996893 996602 996044 995824 995448 995319 994821 994520 994172 994166 994122 994061 993896 992817 991635 991345 991022 990815 990300 990149 990107 989249 988970 988729 988619 988419 988180 988010 987546 987328 987143 987062 986893 986639 986637 986573 986118 986076 986009 985872 985422 984849 984560 984263 984259 983544 983479 982264 982103 981852 981746 981731 981311 981245 981225 981188 981136 981049 981044 981030 980924 980889 980798 980694 980542 980054 979942 979592 979456 978994 978923 978842 978801 978611 977642 976622 976317 976055 975694 975681 975627 975617 975578 975234 975019 974954 974521 974364 974035 973838 973634 973618 973129 972997 972914 972786 972575 972189 971938 971851 971546 971479 971373 971285 971100 971037 970908 970734 970711 970362 970171 969719 969575 969144 969011 968873 968523 968436 968400 967942 967855 967732 966969 966656 966588 965955 965471 965326 965224 965070 964760 964708 964674 964668 964539 964485 964432 964226 964224 964127 964019 963997 963832 963621 963274 963066 962847 962830 962774 962694 962628 962464 962416 962342 962272 962200 962171 962135 961824 961787 961766 961739 961556 961389 961301 961286 961272 961164 960880 960833 960134 959593 959497 959435 959379 959355 959285 959274 959024 958948 958663 958633 958612 958177 958139 958090 957887 957878 957873 957786 957617 957501 957242 957176 956914 956675 956501 956481 955781 955456 955190 954949 954797 954509 954383 954218 954014 953973 953716 953704 953606 952546 952107 951919 951723 951174 950976 950787 950695 950335 949652 949651 949615 949550 949410 949149 949129 948743 948631 948625 948463 947999 947519 947394 947273 947070 947046 946955 946269 946185 946018 945376 945254 945227 945171 944993 944540 944500 944431 944384 944098 943862 943574 943460 943405 943092 942974 942972 942895 942561 942186 942155 941836 941718 941495 941404 941387 941087 941001 940507 940429 940269 940018 940015 939953 939811 939541 939493 939378 939258 939216 939145 938943 938704 938665 938274 937511 937230 937186 936906 936757 936201 935520 935429 935255 935020 934785 934767 934672 934499 933238 932728 932726 932699 932561 932465 932439 932106 931949 931840 931279 930409 930355 930296 930293 929864 929694 929253 929153 928713 928382 927952 927799 927780 927603 927451 927268 927152 926812 926674 926382 926357 926249 926185 926063 926056 926034 925427 925350 925108 924994 924963 924816 924407 924094 923949 923913 923803 923740 923420 923165 923088 922995 922890 922769 922739 922560 922164 922123 922072 921686 921246 920860 920640 920269 920129 919902 919844 919620 919541 919196 919051 918597 918375 918181 918149 918090 918004 917917 917752 917739 917095 917061 916823 916811 916554 916256 916231 916209 916061 915988 915562 915419 915040 914852 914788 914723 914243 914010 913762 913441 913278 912908 912653 912457 912346 911737 911154 911153 910690 910652 910438 910059 909631 909584 909419 908598 908390 908326 908298 908211 908186 907970 907776 907457 906958 906320 906041 906020 905937 905508 905461 905179 905154 904963 904735 904731 904567 904498 904371 904107 903721 903663 903581 903561 903237 902982 902879 902772 902746 902744 902634 902511 902427 902222 902169 902054 901960 901727 901702 901406 901285 900808 900369 900168 899018 898941 898698 898414 898322 898287 898235 898118 897870 897852 897355 897249 896702 896147 895869 895725 895645 895637 895126 895087 894798 893769 893760 893466 893056 892949 892712 892695 892621 892534 891294 891182 891159 891092 891048 891024 890943 890885 890774 890479 890418 890380 889870 889701 889477 889365 889264 888649 888072 887539 887428 887306 886828 886292 886210 886097 885835 885769 885578 885480 885259 884937 884783 884742 884686 884654 884541 884472 884448 884386 884278 884180 884075 883966 883937 883863 883647 883346 883131 882741 882562 881838 881715 881696 881299 880854 880307 880269 880151 879981 879688 879337 879231 878432 878293 878126 877666 877463 877070 877024 876983 876908 876750 876519 876363 876282 876270 876160 875702 875644 875475 875252 875219 875208 874297 873720 873080 872996 872082 871366 871162 871105 870727 870679 870447 870438 870411 870298 870202 870018 869704 869486 869334 869310 869132 869023 868997 868589 868572 868527 868510 868485 868239 868127 868063 867884 867726 867710 867698 867679 867598 867059 867030 867006 866828 866306 865992 865730 865710 865571 865499 865131 865098 865046 865043 864877 864549 864391 863962 863912 863759 863538 863358 863347 863333 863120 862991 862743 862086 861970 861774 861410 861251 860813 860549 860452 860174 860119 859743 859675 859520 859242 859055 858525 857739 857511 857165 857158 857154 856491 855894 855827 855639 855436 855039 854979 854522 854252 853632 853574 853476 853144 852692 852689 852634 852581 852164 852138 852095 851794 851736 851706 851520 851470 851075 850782 850630 850312 850283 850269 850257 850254 849796 849635 849561 849507 849491 849364 849246 849172 849022 848947 848630 848222 848201 848011 847804 847589 847530 847369 847212 846781 846143 846113 845968 845817 845721 845344 844932 844925 844517 844247 844191 843893 843410 842982 842555 842443 842091 841534 841515 841492 841035 840419 840191 839618 839596 839442 839422 839410 839254 838969 838595 838518 838064 837509 837503 837319 836804 836684 836581 836484 835754 835723 835608 835558 835296 835060 835057 834875 834860 834773 834556 834381 834336 834237 834197 833838 833826 833753 833454 833338 833317 833117 833014 832984 832879 832612 832595 832453 832305 832243 832187 832105 832044 831954 831877 831564 831529 831172 831099 830968 830800 830501 830218 830217 829894 829089 828567 828533 828519 828504 828471 828359 828250 828130 827968 827897 827786 827654 827611 827364 826849 826715 826706 826012 825566 825526 825114 824856 824812 823949 823380 823258 823222 822852 822798 822586 822555 822449 822433 822326 822325 822218 822152 821778 821630 821571 821430 821424 821377 821303 820978 820855 820535 820451 820412 820312 820032 819541 819430 819318 819082 818766 818671 818622 818595 818499 818324 818323 818302 818182 818131 817951 817895 817722 817109 816953 816645 816534 816356 816130 816012 815949 815614 815149 814705 814604 814419 814139 813306 813177 813076 812994 812719 812582 812553 812379 812023 812017 811976 811885 811748 811742 811691 811689 811655 811245 810752 810457 810406 810404 810282 810278 810277 810230 810096 810065 809656 809447 809337 809309 809225 808929 808682 808239 808119 808049 807890 807428 806935 806908 806844 806827 806600 806492 806193 805340 805219 805161 804854 804847 804506 804229 803972 803908 803422 803361 803148 802844 802809 802295 802229 802199 801868 801739 801707 801417 801336 800952 800606 800468 800410 800372 800257 800070 799736 799591 799490 799420 799105 798923 798701 798688 798514 798495 798431 798334 798329 798285 797937 797509 797174 796930 796437 796378 796372 796246 795998 795986 795797 795749 795616 795246 795198 795069 794866 794695 794690 794583 794544 794400 794373 794338 793922 793903 793848 793122 793075 792805 792659 792230 791998 791938 791825 791578 791300 791242 790534 790461 790267 790137 789948 789497 789472 789295 789035 788570 788428 788370 788213 788098 788026 787817 787604 786990 785671 785619 785615 785506 785352 785303 785119 784917 784866 784864 784153 783892 783650 783559 783457 783414 783336 783307 782889 782805 782525 782512 782343 782080 781610 781348 781327 780905 780776 780740 780480 780456 779905 779898 779832 779625 779613 779439 779426 779368 779265 779211 779094 778861 778652 778630 778349 778220 778073 777995 777812 777319 776550 776448 776420 776191 776050 775809 775526 775408 775332 775091 775084 774450 774265 774241 774073 773549 773482 773091 772301 772176 772128 772015 771843 771776 771760 771373 770473 770390 770379 770130 770113 770039 769757 769741 769711 769575 769521 769446 769318 768829 768755 768673 768615 768182 767784 767755 767404 767232 766946 766243 765565 765458 765443 765361 765264 765187 765101 765066 765051 764811 764608 764209 764011 763839 763834 763471 762892 762780 762701 762612 761628 761533 761331 761302 761111 761036 760795 760698 760562 760537 760447 760379 760269 760131 759957 759889 759745 759460 759114 759052 758913 758442 758033 757982 757827 757454 757138 757108 756865 756459 756212 755982 755953 755603 755344 755339 755197 755081 753496 753281 752993 752974 752765 752643 752581 752567 752370 752348 752283 751420 751355 750838 750827 750658 750642 750529 750416 750065 749912 749580 749486 748797 748761 748672 748318 747891 747701 747278 747048 747045 746929 746814 746788 746599 746391 746180 746179 746076 745998 745526 745482 745283 744953 744754 744700 744404 744284 744235 742925 742379 742341 742315 742041 741973 741838 741596 741065 740962 740321 740226 740206 740030 740011 739887 739535 738986 738950 738690 738552 738524 738379 738232 738201 737986 737218 736429 736009 736003 735732 734994 734732 734253 733935 733767 733764 733688 733644 733577 733560 733412 732952 732803 732752 732644 732534 732476 732354 732330 731862 731756 731412 731118 731095 730806 730751 730632 730308 730138 729996 729768 729755 729106 728898 728502 728154 727976 727554 727371 727243 727156 727024 726977 726893 726714 726700 726578 726538 726536 726385 726282 725660 725615 725376 725358 725296 725109 725018 724941 724459 724379 724339 724336 724095 724055 723601 723591 723581 723456 723355 723353 723312 723265 723143 723089 722979 722402 722363 722051 722035 721891 721774 721644 721236 720942 720246 720217 720082 720047 720021 719682 719469 719449 719373 718887 718469 717709 717178 717027 716368 716003 715505 715436 715192 715191 715152 714978 714839 714764 714375 714200 714099 713866 713749 713696 713464 713460 712664 712453 712390 712386 712161 712134 711746 711400 710560 710392 710360 710066 709984 709930 709922 709722 709648 709610 709603 709577 709502 709130 709010 708993 708451 708127 707869 707755 707058 706999 706845 706742 706275 706226 705737 705727 705471 705176 705172 704706 704022 703865 703695 703679 703543 703171 702953 702456 702414 702267 702253 702187 702092 701687 701615 701417 701237 701026 700933 700643 700629 700610 700413 700063 700019 699880 698997 698738 698013 697945 696829 696811 696684 696660 696415 696383 696357 696356 695980 695914 695675 695364 695190 695189 695124 694771 694647 694027 693659 693340 693079 692762 692595 692514 692265 692181 692126 691883 691825 691776 691709 691478 691465 691283 691151 691024 690993 690760 690425 690317 690218 689816 689741 689724 689630 689526 689492 689144 688349 688292 687990 687898 687724 687338 687299 687283 687264 687163 686835 686808 686795 686722 686663 686375 686199 686121 686042 685592 685474 685443 685346 684539 684054 683861 682959 682955 682933 682835 682611 681755 681305 681015 680842 680537 680421 680299 680259 680009 680000 679910 679504 678986 678947 678808 678715 678507 678255 678177 678096 677834 677486 677477 676791 676260 676143 675879 675212 674349 674287 674214 674180 674157 674017 673688 673643 673542 673439 673381 673223 673025 672962 672658 672561 672425 672261 672084 671900 671813 671761 671416 671338 671246 670863 670779 670705 670566 670279 669848 669387 669243 668836 668820 668791 668652 668438 668424 668307 668124 667756 667743 667273 667157 667121 666993 666809 666722 666309 666198 666138 665897 665736 665607 665364 665357 665350 665253 664976 664773 664659 664538 664110 663376 662767 662456 662162 662073 661959 661744 661478 661305 661116 660613 660400 660376 660336 660252 659876 659854 659743 658995 658653 658571 658506 658425 658259 658222 657771 657697 657610 657336 657233 657121 656994 656809 656717 656685 656565 656362 655307 655120 654162 654117 653292 652479 652418 652402 652262 652215 651952 651903 651896 651682 651613 650734 650522 650498 650393 650226 650186 650131 649834 649409 649253 648939 648765 648336 648209 647928 647895 647834 647727 647513 647339 647283 647050 647049 645869 645521 645317 644780 644659 644295 643266 642911 642875 642852 642523 642397 642223 642175 642095 642061 641753 641548 641405 641024 640793 640674 640322 640093 639816 639626 639177 639078 638991 638980 638250 637977 637873 637744 637292 637218 637080 637016 636862 636755 636704 636675 636326 636321 635682 635045 634972 634654 634580 634555 634463 634381 634378 634374 634310 633876 633854 633504 633224 632895 632297 632247 632034 631806 631541 631219 631100 630838 630778 630536 630346 629622 629359 629341 629247 629216 629214 629127 628991 628904 628784 628116 628058 627996 627771 627688 627250 626988 626983 626838 626708 626348 626343 626238 626200 625826 625536 625055 624843 624741 624694 624293 624148 624083 623986 623976 623720 623673 623481 623286 623278 623247 623038 622987 622952 622342 622201 621701 621347 621169 621041 620768 620489 620409 620322 620299 620217 619789 619653 619506 618955 618698 617991 617792 617735 617573 617063 616519 616476 616427 616259 616107 615585 615448 615447 615339 615273 615224 615071 614712 614660 614509 614364 614306 614232 614135 614040 614027 613929 613425 613396 613388 613251 613211 612866 612793 612540 612489 612247 612134 611873 611401 610459 610414 610314 610108 610038 610021 609940 609603 609389 609322 609255 609250 608893 608477 608399 607879 607631 607616 607404 606900 606819 606631 606628 606627 606552 606516 606451 606224 606221 606072 605943 605696 605625 605579 605310 605213 605010 604981 604949 604852 604354 603986 603930 603866 603674 603542 603502 603498 603405 603318 603165 603058 602962 602911 602715 602516 602447 602193 602187 601874 601570 601043 600057 599958 599882 599790 599779 599497 599346 599245 599120 599083 598967 598872 598583 598186 598104 598031 597684 597544 597525 597373 596539 596513 596326 595669 595663 595601 595001 594818 594232 593851 593821 593778 593668 593508 593410 592952 592927 592884 592405 591726 591460 591344 591009 590965 590913 590544 590450 589804 589745 589460 589453 589356 589194 589066 588877 588876 588702 588151 587633 587626 587280 587156 587069 586100 585818 585686 585658 585484 585051 584903 584758 584672 584648 584629 584184 584101 583865 583758 583601 583585 583568 583434 583312 583231 583171 583135 583113 583091 582738 582406 582379 582330 582222 582152 582151 581288 580975 580927 580887 580757 580273 580110 579834 579042 579015 578944 578939 578348 578156 578059 578029 577864 577717 577623 577466 577413 577248 576740 576675 576322 576298 576223 576122 575784 575775 575730 575499 575440 575333 574928 574304 574299 574241 574188 574123 574106 574102 573680 573493 573224 573108 573039 572376 571596 571454 571310 571164 570808 570605 570199 569746 569743 569456 569292 569079 568872 568446 567745 567727 567668 567647 567625 567606 567465 567431 567212 566741 566661 566314 566272 565754 565691 565634 565595 565436 565327 565170 564752 564175 564015 563943 563753 563737 563679 563536 562487 562390 561852 561742 561642 561632 561566 561564 561499 561446 561255 560906 560630 560448 560424 560395 559886 559718 559536 559317 558862 558430 558239 558139 557907 557709 557519 557508 557450 557147 556933 556789 556788 556636 556551 556197 555884 555643 555604 555291 554892 554802 554373 554278 554054 553843 553337 553299 553013 552574 552322 552310 551979 551909 551592 551534 551249 551088 550628 550484 549973 549828 549819 549435 549124 549059 548789 548514 548333 548193 548167 547944 547840 547769 547671 547617 547145 546916 546725 546411 546001 545455 545406 545231 544487 544275 543831 543807 543801 543599 543404 543327 543077 542736 542641 542583 542515 542370 542341 542100 541699 541477 540930 540800 540762 540453 540108 539837 539140 539058 539032 538935 538292 537938 537697 537612 537537 537011 536770 536733 536711 536597 536365 536211 535636 535635 535565 535130 534998 534904 534739 534712 534231 534121 533912 533815 533813 533000 532855 532617 531721 531588 531488 531462 531315 531123 530393 530328 530245 530166 530022 529807 529803 529751 529723 529707 529693 529665 529545 529534 528774 528729 528709 528505 528265 527868 527491 527469 527458 526735 526339 526246 526169 526112 525908 525566 525237 525167 525005 524243 524183 523895 523815 523778 523366 523277 522800 522727 522713 522525 521863 521419 521414 521222 521196 520968 520878 520817 520675 520491 520253 519888 519570 519195 518782 518445 518173 517660 517573 517412 517398 517245 517187 517167 516406 516392 515915 515571 515178 515174 515048 514897 514376 514262 514173 513728 513641 513392 513038 512941 512877 512738 512714 512627 512490 512323 512168 512141 511432 511398 511221 511075 510874 510828 510663 510406 510394 510312 510256 510206 510012 509857 509727 509362 509142 508840 508817 508649 507764 507452 507290 507037 506922 506183 506149 506051 506026 506014 505936 505852 505733 505588 505127 505094 505076 504873 504871 504792 504554 504460 504436 504231 504187 503980 503700 503648 503130 502853 502529 502199 502089 501892 501863 501833 501137 501129 501119 500951 500715 499959 499766 499613 499571 499182 498975 498832 498712 498200 497768 497671 497612 497610 497474 497426 497165 496657 496108 495785 495674 495611 495458 494895 494752 494658 494264 494240 494162 493927 493205 493148 492951 492800 492771 492669 492603 492450 492345 492048 491510 491204 491201 491146 491000 490819 490741 490714 490598 490350 489409 489345 489049 488711 488681 488446 488332 488272 488237 488134 487877 487421 487408 486637 486323 486260 485796 485640 485635 485611 485353 485325 484990 484926 484737 484016 483643 483506 483273 481829 481272 481260 481206 481176 481032 480258 480241 480175 479436 479421 479266 479173 479089 478750 478436 477769 476614 476157 476152 475999 475985 475957 475912 475342 475320 475287 475231 475225 475224 474945 474796 474341 474218 473970 473814 473605 472998 472451 472331 472306 472125 472014 471697 471639 471204 471012 470852 470651 470179 470137 469992 469690 469665 469533 469435 469083 468996 468940 468902 468884 468871 468744 468443 468384 468327 468262 467976 467763 467627 467415 467387 467183 467170 467105 467086 466903 466836 466744 466471 466390 466321 466094 465745 465352 464959 464821 464786 464644 464329 464173 464081 463931 463770 463603 462675 462582 462328 462263 462079 461747 461573 461320 461221 461160 461041 460703 460538 460465 460322 459638 459585 459515 459303 459261 459073 458669 457817 457770 457672 457505 457448 457248 457184 457155 456778 456077 456037 455854 455774 455738 455734 455480 455186 455154 455148 454987 454766 454642 454378 454360 454320 454150 453727 453485 453388 453247 453044 453021 452689 452546 451625 451577 451426 451422 451388 451368 451333 451274 450495 450059 449992 449945 449908 449866 449763 449422 449383 449270 449058 448957 448752 448136 447769 447666 447661 447580 447449 447297 447182 447070 447034 447007 446999 446806 446734 446523 446233 446158 445965 445927 445881 445740 445573 445566 445365 445265 444703 444658 444389 444269 443973 443148 442948 442920 442591 442494 442253 441890 441644 441527 441410 441229 441079 441069 440846 440743 440545 440490 439936 439923 439880 439646 439483 439343 439135 439043 438776 438112 437787 436919 436916 436729 436692 436079 435960 435735 435714 435469 434970 434948 434854 434716 434571 434017 433870 433671 433427 433182 432837 432717 432544 432511 432354 432193 432137 431174 430797 430776 430388 429803 429761 429615 429077 429072 428976 428893 428744 428681 428564 428449 428420 428248 428110 427849 427753 427433 427367 427233 427173 427005 426455 426280 425974 425777 425772 425699 425574 425518 425152 425141 425112 424989 424972 424914 424387 423866 423757 423470 423451 423263 423206 423054 422983 422977 422915 422597 422509 422246 421804 421458 421256 421115 420509 420402 420392 419900 419864 418678 418563 418102 418040 417902 417349 417313 417050 416858 416855 416620 416123 416014 415513 415460 415339 415254 414746 414734 414644 414602 414420 413657 413552 413195 413117 413055 412709 412267 412245 412189 412183 411951 411947 411428 411200 411179 410873 410866 410744 410188 410106 409891 409817 409075 408937 408830 408496 408400 408321 407684 407670 407641 407385 407257 406893 406772 406706 406540 406473 406437 405988 405815 405798 405654 405293 405193 404788 404758 404643 404311 404034 404004 403837 403799 403384 403088 402891 402551 402494 402398 402267 402026 401946 401537 401507 401185 400760 400125 400106 399887 399468 399020 398847 398762 398675 398362 398303 397955 397879 397351 397265 397260 397172 397028 396748 396684 396431 396259 396244 395511 395336 395334 395143 395128 394939 394758 394708 394422 394365 394258 394243 394064 394046 393964 393194 392931 392735 392173 392085 391992 391865 391856 391851 391767 391735 391679 391588 391291 390863 390677 390519 390508 390473 390304 389853 389045 388953 388936 388893 388753 388572 388396 388257 388217 388154 387742 387622 387333 387243 386917 386551 386466 386413 386259 386163 386083 386041 386024 385699 385625 385500 385496 385325 384778 384470 384423 384347 384114 383932 383759 383643 383444 383287 383147 382781 382779 382747 382445 382346 382229 382223 382098 382025 381996 381803 381795 381445 380693 380526 380489 380416 380387 380125 380121 380097 379749 379528 379500 379409 379322 379152 378895 378857 378792 378690 378665 378584 378574 378452 377760 377336 377270 377167 376916 376756 376477 376459 376310 376140 376065 375427 375415 375034 374934 374790 374770 374712 374601 374528 374181 374031 373848 373813 373761 373696 373595 373485 373102 373010 372950 372945 372846 372796 372546 372517 372436 371586 371508 371232 370661 370376 369838 369611 369586 369151 368592 368562 368525 368404 368310 368067 367841 367781 367750 367721 367510 367365 367346 367324 367317 367273 367145 366794 366706 366599 366418 365736 365597 365258 365228 365024 364973 364886 364693 364413 364220 364068 363856 363735 362619 362493 362329 362305 362016 362008 361777 361747 361682 361575 361404 361339 361053 360627 360621 360471 360377 360301 359965 359937 359870 359660 359570 359449 359429 358827 358608 358591 358383 357930 357892 357732 357572 357515 357123 356615 356507 356335 356184 356119 356093 355708 355636 354961 354659 354647 354643 353793 353636 353549 353545 353461 353222 353022 353000 352407 352043 352010 351804 351550 351299 351026 350993 350777 350657 349670 349531 349125 349107 349072 348956 348760 348728 348545 348492 348075 348022 347960 347519 347283 346668 346618 346435 346422 346219 346179 346172 345769 345495 345480 345447 345402 344948 344764 344612 344383 344311 344123 343742 343668 343662 343626 343527 343412 343163 343072 342692 342379 342322 342321 342174 342145 342083 341655 341420 341418 341416 340976 340917 340845 340839 340579 340520 340436 340379 340088 340035 339946 339856 339711 338975 338529 338494 338145 338133 337851 337838 337829 337824 337307 337280 337153 337072 337014 336808 336800 336644 336261 336214 335709 335639 335629 335532 335471 335426 335275 334914 334814 334068 333929 333680 333615 332954 332519 332478 332263 332043 331980 331566 330842 330786 330757 330664 330048 329972 329939 329586 329535 329149 329064 328899 328774 328750 328327 327966 327619 327157 327155 327152 326969 326829 326726 326504 326384 325994 325722 325426 325245 325229 324938 324752 324702 324629 324461 324309 323628 323610 323387 323310 323275 323135 323120 323099 322804 322688 322566 321618 321183 320844 320752 319840 319743 319226 319191 319035 318774 318577 318566 318495 318479 318361 318332 318240 318169 317892 317617 317288 316958 316900 316835 316802 316779 316515 316454 316424 316360 316284 316181 315753 315725 315716 315706 315472 315322 315224 314928 314912 314789 314696 314015 314006 313434 313339 312920 312869 312855 312717 312579 312505 312469 312186 312108 312106 311942 311726 311309 310944 310579 310509 310308 310148 309958 309916 309612 309410 309400 309244 309191 308884 308810 308269 308047 307518 307272 306968 306848 306582 306571 306437 306357 306320 305930 305706 305677 305632 305255 305213 305082 305053 304494 304477 304175 303408 303321 303305 303142 302957 302923 302790 302719 302703 302565 302232 301664 301386 301313 301264 301083 300115 299959 299348 299170 299071 299031 299012 298940 298834 298051 297877 297790 297579 297454 297215 297122 296999 296846 296592 296414 296410 296392 296096 296093 295527 295512 295165 294720 294621 294518 294389 293946 293856 293695 293659 293515 293479 293434 293207 292841 292836 292553 292116 291791 291787 291710 291676 291409 291192 290719 290378 290263 290157 290001 289886 289773 289757 289686 289277 289060 288961 288821 288335 288262 287661 287544 287427 287371 287354 287311 286725 286503 286398 286293 286262 286152 286050 285855 285794 285290 285232 285111 284728 284663 284616 284144 284049 283940 283768 283745 283661 283484 283306 283280 283013 282963 282552 282530 282292 282192 282121 282117 282088 281695 281540 281457 281125 280609 280607 280336 280244 279852 279743 279737 279648 278944 278824 278808 278670 278596 278220 278214 277884 277822 276815 276405 276285 276176 275996 275908 275103 274780 274768 274734 274610 274439 274316 274305 274188 274088 273972 273906 273824 273678 273502 273384 273076 272895 272197 271961 271827 271637 271620 271354 271123 270926 270877 270609 270489 269693 269680 269665 269650 269358 269128 268835 268744 268483 268209 268140 267687 267547 267187 267049 267021 266864 266678 266631 266519 266112 265764 265706 265643 265533 265425 265063 265041 264859 264424 264423 264253 263918 263599 263444 263387 263300 263261 262647 262279 262246 262072 262033 261929 261806 261690 261474 261445 261134 261126 261118 260506 259639 259555 259515 259067 259051 258982 258761 258746 258702 258605 258282 258263 258047 258043 257987 257886 257838 257782 257775 257414 257202 257171 256494 256417 256209 256130 256092 256015 255884 255802 255653 255607 255288 255154 254710 254377 254033 253528 253163 253024 252042 252003 251726 251436 250655 250188 249963 249841 249633 249377 249029 248714 248449 248444 248426 248278 248275 248270 248074 247981 247387 247371 247301 247288 247257 246982 246650 246008 245602 245545 245401 245247 244927 244386 244273 244140 244124 244005 243506 243457 243167 242835 242810 242731 242487 242416 241849 241840 241791 241637 241366 241021 240909 240793 240679 240677 240660 240607 240416 240005 239951 239819 239744 239644 239639 239574 239475 239394 238969 238709 238617 238572 237863 237515 236924 236761 236478 236309 236297 236264 236211 236094 235903 235711 235575 235539 235352 234562 234454 234184 233439 233132 232965 232864 232416 232086 231907 231889 231762 231691 231655 231450 231327 231269 231206 231139 230154 229739 228996 227457 227330 227140 227050 227021 226657 226325 226292 226125 226072 225893 225875 225684 225492 225303 225300 224802 224325 224149 224056 224026 223943 223538 223163 223061 222607 222465 222435 222326 222150 221925 221815 221611 221474 221414 221404 221317 221019 220794 220780 220528 219930 219420 219277 219075 218817 217992 217617 217132 217128 217015 216822 216574 216526 216290 216247 215980 215933 215870 215736 215591 215580 215385 214628 214129 214071 213375 213325 213271 212754 212424 212385 212128 211630 211515 211010 210644 210291 210239 210070 209553 209518 209379 209315 209150 208731 208614 208259 208243 208222 208109 208063 208049 207764 207737 207547 206630 206237 206221 206115 206038 206022 205941 205812 205719 205524 205388 205292 205210 204381 204236 204159 204124 204052 203985 203588 203481 203342 202877 202778 202312 202124 201638 201369 201214 201172 200837 200592 200582 200569 200413 200350 200094 200088 200044 200018 199867 199732 199624 199354 199065 198974 198962 198846 198684 198523 197466 197189 197174 197121 196909 196730 196629 196603 196539 196485 196178 195868 195816 195439 195346 195014 194970 194961 194744 194680 194388 194305 194281 194254 194172 194156 193899 193526 193323 193258 193018 192097 191930 191873 191770 191517 191169 191031 191003 190968 190948 190857 190014 189871 189670 189061 188907 188590 188407 187984 187792 187544 187310 187207 187107 186806 186732 186511 186422 186211 186069 185780 185660 185602 185425 185212 184979 184104 183906 183746 183604 183578 183453 183318 183257 183086 182933 182734 182393 181963 181703 181633 181142 180953 180895 180862 180821 180762 180701 180640 180557 180530 180120 180071 179000 178919 178534 178460 178338 178326 178184 178037 177995 177903 177166 177054 176970 176961 176930 176876 176843 176558 176439 175816 175770 175343 175328 175314 175277 175141 175132 174996 174909 174851 174772 174719 174641 174556 174289 174264 174213 173744 173713 173371 173367 173176 173164 173160 173037 172804 172703 172587 172444 172319 172301 172195 171979 171755 171623 171611 171106 171052 171022 171016 170898 170207 170065 169891 169769 169652 169279 168934 168846 168491 168441 168077 167974 167944 167835 167766 167516 167463 166593 166411 166250 165940 165873 164516 164236 164228 164226 164055 163974 163815 163338 163244 163026 162770 162758 162510 162466 162083 161645 161304 161216 161107 161068 160728 160721 160585 160380 160189 160060 159639 159596 159593 159406 158806 158668 158589 158255 158029 157820 157724 157522 157219 157157 157008 156738 156676 156661 156617 156195 156117 156032 155907 155898 155760 155574 155510 155365 155057 154986 154732 154592 154413 154187 153850 153293 153138 153080 152684 152616 152339 152114 151791 151644 151504 151357 151020 150888 150838 150772 150605 150255 150168 150085 150074 149757 149650 149628 149236 148423 148411 148369 147999 147227 147209 147203 147076 146903 146873 146662 146455 146178 145882 145502 145370 145070 144683 144165 144078 143868 143790 143761 143529 143220 142703 142581 142565 142350 142257 142139 142137 142001 141874 141637 141426 141238 141236 141233 141117 140687 140626 140508 140319 140059 139898 139344 139114 138862 138851 138695 138608 138534 138497 137814 137643 137614 137506 137405 137372 137353 137285 137113 136990 136815 136600 136317 136165 136106 135982 135801 135290 134483 134445 134322 134163 133992 133766 133199 132906 132623 132494 132394 132171 131827 131823 131779 131723 131706 131346 131334 130827 130518 130493 130419 130415 130390 130385 130357 130000 129437 129232 129107 129068 129049 128675 128666 128596 128005 127902 127850 127464 127457 127390 127316 127187 126912 126829 126385 126181 125920 125546 125534 125472 125314 125308 125297 125232 125071 124989 124884 124322 124042 123891 123782 123760 123668 122912 122795 122707 122108 121986 121925 121881 121629 121602 121416 121296 121016 120837 120787 120353 120215 120091 119967 119758 119497 118657 118641 118024 117364 117270 117037 116946 116911 116788 116695 116150 116095 116046 115712 115631 115394 115160 114850 114839 114820 114464 113563 113277 113253 113233 112954 112813 112761 112659 112558 112461 112204 112006 112004 111736 111604 111391 111301 111064 110933 110924 110899 110435 110402 110367 109970 109652 109480 109303 108994 108875 108695 108668 108401 108231 107795 107729 107621 107589 107392 107003 106998 106670 106585 106447 106191 105975 105785 105739 105541 105530 105137 105017 104683 104510 104025 103879 103809 103339 103257 102595 102376 102131 102003 101828 101675 101650 101219 100667 100549 100462 100109 99997 99855 99682 99608 99424 99342 99073 98576 98420 98154 97999 97964 97884 97532 97191 96920 96894 96737 96718 96709 96442 96315 96205 96116 95268 95259 95210 95129 95096 94911 94481 94198 94136 93472 93437 92834 92719 92396 91707 91066 90597 90521 90416 90179 90053 89725 89638 89222 88980 88691 88545 88313 88032 88024 87777 87759 87677 87668 87443 87353 86999 86977 86935 86815 85668 85533 85394 85094 84988 84979 84964 84924 84913 84843 84263 84248 84041 83711 83555 83493 83438 83378 83065 82890 82887 82818 82602 82540 82493 82359 82333 82324 82232 82073 82001 81396 81351 81035 80999 80998 80949 80909 80648 80435 80338 80313 80213 80165 79898 79569 79314 79001 78939 78917 78892 78757 78660 78317 78004 77896 77877 77779 77351 77174 77142 77091 76926 76443 76394 76142 76021 75809 75725 75713 75642 75031 74906 74890 74784 74379 74263 74241 74220 74030 73856 73844 73311 72650 72626 72240 71938 71734 71379 71223 70770 70536 70464 70255 69900 69514 69067 69061 68921 68718 68626 68549 68383 68104 67811 67692 67631 67600 67553 67373 66978 66502 66499 66390 66326 66254 66213 66171 66061 65976 65346 65210 65046 64962 64934 64617 64360 64195 63464 63397 63063 62967 62678 62662 62585 62500 62475 62465 62323 61918 61816 61560 61314 60714 60149 60002 59868 59743 59148 58784 58588 58544 58429 58151 58119 56930 56874 56736 56729 56527 56497 56328 56265 56205 56125 55779 55398 55370 55315 55309 54716 54311 54029 53747 53572 53507 53435 53279 53098 52670 52624 52384 52375 52288 52049 51887 51340 50991 50789 50035 49852 49621 49473 49409 49294 49090 49015 48685 48373 48091 47939 47717 47466 47356 46910 46522 46480 46244 45741 45692 45220 45075 44259 44208 43938 43849 43704 43702 43303 43189 43182 43116 43064 42890 42613 42450 42334 42168 42051 41740 41508 41391 41275 41069 40757 40593 39740 39653 39448 39434 39312 39153 39095 38663 38355 38348 38202 38025 37853 37544 36835 36745 36702 36413 36388 35876 35730 35533 35466 35224 35020 34480 34359 34309 34039 33208 33141 32648 32431 32300 31922 31638 31531 31502 31285 31154 31105 31089 31087 31058 30903 30826 30600 30481 30427 30217 30183 30085 30056 29648 29589 29579 29568 29235 29003 28936 28892 28861 28165 28142 27471 27348 27046 27017 26978 26483 26465 26015 25920 25891 25615 25571 25480 25407 25180 25059 24481 24428 24343 24247 24092 24073 23982 23808 23757 23692 23663 23609 23551 23491 23266 23251 23234 22978 22782 22774 22166 21536 21517 21472 21211 21163 21101 21088 21008 20956 20941 20716 20476 20274 19816 19496 19406 19403 19349 19070 19027 19005 18911 18570 17902 17626 17604 17292 17090 16703 16275 16181 15973 15720 15601 15450 15288 15257 15023 14999 14957 14938 14633 14064 14016 13546 13404 13341 13227 12965 12649 12511 12116 11606 11357 11312 11113 11042 10874 10594 10579 10446 10381 10354 9520 9196 9099 8825 8776 8172 8084 7920 7861 7731 7523 7447 7200 7162 6560 6112 6064 5948 5619 5431 5368 5354 5019 4616 4294 4063 3985 3836 3751 3714 3556 3460 3444 3415 3236 3111 2986 2893 2773 2714 2671 2560 2442 2425 2212 2097 2082 1971 1487 1468 1430 1130 1085 789 452 51 17 2 +Test 6 Pass! +Test 7 Pass! +Test 8 Pass! +Test 9 Pass! +337913 572317 572317 321504 743943 321504 30752 918800 30752 966587 966587 966587 798746 984138 984138 984138 984138 798746 798746 717217 664789 664766 760026 945847 760026 664766 864466 664766 679034 664766 664766 664766 664766 664766 610143 677573 908685 677573 610143 608135 362450 362450 338642 338642 688494 688494 431232 876833 876833 598856 431232 431232 342607 342607 338642 299737 299737 274798 614400 614400 614400 307264 294351 430493 294351 274798 195441 195441 181316 97104 94864 32009 465762 528414 528414 465762 881792 465762 609429 609429 465762 775927 775927 926201 775927 775927 775927 641285 663695 641285 477212 477212 477212 465762 772713 465762 465762 465762 417425 283534 553627 283534 273711 249064 587287 587287 516687 249064 164476 929888 164476 552191 164476 99588 923919 923919 923919 923919 923919 727187 727187 350748 259700 259700 207443 157643 157643 587746 998226 587746 587746 537148 157643 154745 99588 261853 99588 99588 93412 865855 93412 110885 907677 907677 907677 907677 907677 907677 473550 473550 457532 622639 622639 545549 457532 605885 916689 605885 457532 283521 244565 130153 110885 223388 110885 110885 211064 110885 93412 75925 557850 557850 557850 557850 831128 557850 275878 275878 909678 909678 909678 909678 909678 827698 750811 750811 750811 750811 720581 618283 664190 664190 664190 858940 858940 664190 663961 797211 663961 618283 794762 618283 616365 616365 596884 596884 734437 734437 734437 868813 868813 734437 734437 821985 734437 808890 734437 734437 796716 734437 734437 734437 734437 596884 596884 595404 598127 598127 598127 595404 492285 492285 492285 840164 840164 492285 490282 483672 483672 483672 479596 479596 463287 462842 462842 446269 435284 356287 953990 356287 356287 339201 889549 339201 339201 339201 312197 288092 275878 266026 258920 255325 230494 993746 230494 229344 444018 229344 229344 221711 221711 210664 420290 210664 210664 192714 171306 162388 551037 162388 161084 765380 161084 895175 959047 895175 161084 248084 161084 158676 126636 970874 970874 609950 126636 120991 108366 108366 92963 78339 681958 681958 681958 878705 681958 632744 78339 904093 78339 766232 766232 766232 450005 976969 450005 691979 691979 736478 736478 736478 717221 717221 705756 691979 691979 909272 944249 944249 944249 944249 944249 944249 943025 909272 909272 691979 531781 943895 973025 973025 943895 943895 807736 779731 531781 695276 774970 774970 695276 531781 531385 450005 407449 718991 407449 395888 394794 741011 741011 500528 394794 364009 295672 260902 409039 409039 260902 206937 203476 79912 130212 79912 78339 75925 640790 75925 739802 75925 260191 260191 437725 437725 472271 437725 937234 437725 437725 260191 243530 193230 141016 557021 141016 75925 939290 939290 573302 573302 456842 75925 340354 75925 71062 55690 32009 96408 785255 96408 603681 603681 120813 96408 262079 96408 195356 195356 865974 865974 980674 865974 865974 865974 865974 881951 881951 865974 938363 938363 938363 938363 920849 920849 896964 896964 865974 865974 900572 865974 865974 865974 865974 865974 865974 838921 802346 783221 659613 634989 634989 625010 983685 625010 504809 839125 839125 719237 504809 504809 504809 481170 380792 357310 922837 357310 637138 991707 991707 637138 357310 357310 357310 351676 937675 990124 990124 937675 876969 987714 987714 987714 876969 351676 351676 792666 792666 521711 557037 521711 351676 322497 420576 322497 937419 950313 950313 950313 950313 950313 950313 937419 869529 896634 896634 869529 771489 771489 716745 716745 716745 716745 716745 476363 422219 322497 330312 722313 722313 722313 538103 709283 709283 739372 709283 538103 493052 807078 493052 493052 330312 377631 756702 850804 756702 377631 414795 414795 680874 680874 851242 680874 574367 414795 821791 414795 377631 759113 759113 510894 828187 510894 377631 330312 874136 330312 322497 342876 785524 785524 342876 342876 573978 342876 322497 310393 284183 374750 453205 374750 487449 487449 667366 487449 374750 284183 268713 742256 742256 742256 742256 742256 580289 580289 358110 291444 291444 268713 520712 581536 581536 520712 268713 268342 730145 268342 253985 253985 444630 253985 251199 224085 220666 912769 912769 912769 528141 312284 312284 490748 656191 490748 492139 490748 490748 350545 843656 350545 398325 350545 312284 827219 827219 312284 312284 231133 475283 475283 231133 220666 394916 220666 415890 835290 835290 650197 415890 220666 839732 220666 205214 201752 232001 201752 195356 186878 625474 990331 625474 186878 183819 176997 176720 171884 649680 731182 731182 649680 319669 541293 319669 319669 714619 865044 865044 714619 714619 394446 319669 325055 319669 319669 918433 918433 568098 568098 956950 956950 897747 897747 897747 568098 385471 319669 562436 319669 661641 319669 463780 319669 868205 868205 983012 983012 868205 677226 745222 677226 319669 310078 272733 700541 272733 272733 851216 272733 272733 451212 272733 272733 272733 206692 195324 178795 171884 158507 156786 425761 452364 452364 425761 945805 425761 493037 493037 493037 563811 493037 503109 493037 430122 425761 557330 557330 760769 557330 557330 969516 969516 557330 425761 374569 330710 172201 366166 774554 774554 774554 573796 573796 455102 431886 366166 366166 672358 366166 172201 353744 172201 156786 153654 153239 322358 153239 757481 757481 153239 413542 153239 151044 831960 151044 458818 458818 151044 780424 780424 469512 151044 583575 151044 816417 151044 151044 146849 144836 135287 343852 874803 874803 874803 549762 343852 181604 135287 896668 896668 896668 896668 896668 824914 824914 824914 887286 824914 824914 824914 824914 733274 656066 647343 647343 630263 630263 584964 779702 779702 779702 779702 584964 961570 584964 595409 584964 584964 584964 584964 584964 473408 473408 576791 473408 448401 448401 448401 329326 267624 716247 821340 716247 267624 248268 248268 247707 208794 183186 699531 183186 183186 138846 135287 506445 640210 506445 135287 132098 131508 581250 131508 119253 103568 180825 268461 180825 755546 755546 755546 749158 180825 103568 99965 586137 586137 586137 856255 856255 856255 856255 826586 760716 586137 535465 535465 561731 561731 561731 535465 535465 543178 535465 535465 451170 434226 257993 242073 183080 183080 515717 183080 216114 183080 974905 974905 381343 183080 958684 958684 958684 958684 958684 460166 455051 183080 512679 512679 183080 573338 183080 260690 183080 763505 763505 412646 183080 805920 805920 465661 183080 284154 183080 137201 321644 137201 101847 536191 539466 539466 536191 458919 713219 458919 101847 99965 96408 741540 741540 741540 375761 239331 239331 343162 994064 994064 994064 994064 994064 994064 994064 994064 994064 994064 875707 875707 875707 665939 551501 479694 343162 656733 343162 328259 837149 837149 328259 328259 254485 254485 254485 242391 239331 213950 147429 630904 630904 630904 530063 273995 588902 588902 928325 588902 588902 273995 147429 131690 629549 629549 629549 629549 629549 432718 409189 889259 409189 924522 409189 142947 131690 969447 131690 99865 550334 99865 600943 99865 517968 99865 96408 491817 96408 771673 771673 151605 96408 656968 656968 656968 656968 520792 96408 460774 674603 460774 96408 94591 85610 510379 85610 81483 458763 81483 80168 958687 80168 79762 737625 79762 76031 73886 868733 868733 73886 466093 73886 73545 296709 430281 296709 296709 73545 902154 902154 902154 282143 110756 73545 72093 71561 68394 763437 763437 938213 938213 815975 763437 230195 68394 606181 68394 978055 68394 64875 800504 64875 517544 64875 261470 64875 64837 912399 912399 231307 527222 527222 527222 994288 994288 994288 994288 696389 696389 696389 598752 598752 527222 489641 563347 489641 334769 498135 334769 294552 852927 294552 294552 231307 848098 848098 848098 848098 848098 848098 989463 848098 848098 804164 485726 485726 429790 283478 231307 217422 705521 217422 217422 211151 195470 735355 735355 195470 135757 122577 748586 748586 819108 748586 604303 122577 433241 521834 521834 433241 122577 91953 89707 64837 62817 62525 406347 862971 862971 862971 862971 715866 715866 705898 435354 406347 545073 406347 62525 842053 62525 58473 54956 966923 966923 966923 726982 778279 905476 778279 726982 726982 726982 288494 92556 878370 943347 943347 943347 878370 541808 92556 90924 54956 689398 54956 559532 915336 915336 559532 449762 634595 634595 449762 389208 54956 51996 843126 51996 619433 51996 50209 503123 50209 836146 836146 64560 736351 64560 50209 50033 710488 50033 647957 740581 740581 773964 773964 740581 647957 647957 538793 538793 851504 538793 483564 136786 171441 136786 82093 983450 983450 983450 983450 983450 940654 802674 651044 644794 644794 146481 379251 146481 146481 101987 82093 50033 236208 50033 48784 47114 549125 683654 549125 549125 189785 189785 98506 110536 110536 98506 98506 47114 886626 47114 604092 47114 47114 46118 44804 470253 886971 886971 470253 470253 470253 821253 821253 470253 505795 984443 505795 470253 417609 238762 103494 472847 103494 798823 103494 44804 44624 273917 44624 42341 711636 787874 711636 711636 795418 711636 333721 42341 550355 601494 601494 550355 640396 550355 120555 799858 799858 171391 120555 42341 37863 36550 32009 594750 790546 594750 594750 441653 763341 763341 441653 441653 441653 994578 994578 441653 394031 327422 462828 327422 90265 639323 90265 732940 90265 315347 315347 315347 290684 90265 55248 838369 867297 838369 920635 838369 838369 635018 55248 32009 532835 32009 31590 31473 701725 945828 945828 701725 701725 334862 144715 144715 144715 45333 750223 45333 146699 45333 31473 26900 26138 922699 26138 389047 563260 682578 682578 563260 563260 901993 563260 558107 389047 389047 389047 364987 248751 704014 248751 922380 922380 994962 994962 922380 887142 887142 887142 887142 887142 887142 796312 595862 550603 467054 248751 244720 243547 924209 924209 653828 243547 690222 243547 130593 26138 198214 26138 22788 21376 18795 16246 15509 121163 15509 994299 15509 933915 15509 943900 15509 872677 15509 940347 15509 898321 15509 15242 15028 13229 165248 959358 959358 240962 165248 566387 969643 566387 608631 566387 566387 863621 863621 566387 295577 649164 295577 165248 91121 770292 91121 13229 12911 354093 12911 12683 12507 11895 461930 11895 281497 11895 11080 681928 902340 902340 756873 756873 756873 681928 707873 707873 707873 973213 973213 707873 707873 707873 681928 670834 670834 670834 767832 767832 767832 857278 767832 670834 670834 670834 670834 791776 791776 670834 665096 634769 579989 573393 573393 516119 516119 495207 652856 495207 448822 437238 437238 392139 880068 392139 392139 392139 459105 392139 336196 323778 305434 581221 799924 799924 581221 581221 581221 322938 305434 448797 305434 305434 305434 253437 253437 235633 235633 457708 235633 952278 952278 421198 881705 881705 421198 739831 863903 877168 982986 982986 982986 930997 930997 877168 877168 863903 863903 823883 823883 739831 631309 421198 235633 501654 594377 501654 235633 774940 774940 235633 755601 235633 510644 510644 528965 510644 510644 235633 227943 227943 226065 215459 202921 200251 311492 873729 311492 200251 191989 171668 978060 978060 625887 171668 171668 171668 847524 857403 857403 857403 847524 544078 319470 832131 983160 983160 832131 832131 319470 319470 309614 194799 171668 156477 536125 568265 568265 568265 568265 655219 783962 655219 568265 536125 332000 332000 325127 670228 670228 670228 325127 783959 851276 783959 325127 928516 928516 928516 673286 577518 577518 577518 577518 893223 893223 780489 577518 396295 380714 380714 904491 380714 380714 325127 264341 933337 264341 176902 625895 176902 897125 176902 176902 176902 166840 402310 166840 156477 152365 142592 135526 134055 755342 755342 201805 272659 272659 272659 473888 272659 201805 166811 495285 873463 495285 166811 760820 811509 760820 166811 835295 166811 954312 166811 808223 808223 718335 718335 559235 166811 378630 378630 275335 635006 275335 166811 134055 127898 586042 127898 707983 942451 942451 942451 942451 942451 927883 707983 707983 707983 707983 707983 592389 592389 515768 467162 786778 786778 929056 929056 786778 614619 606065 671755 671755 606065 467162 451589 411664 635565 844744 635565 411664 402378 386733 375190 541583 541583 615624 541583 541583 726728 541583 375190 193317 193317 131378 336554 336554 131378 127898 112416 112416 130278 112416 663381 112416 98485 91555 365857 365857 633623 365857 790123 919219 919219 790123 790123 588767 365857 570751 365857 193800 463312 193800 418160 602360 602360 591168 418160 193800 136653 979986 136653 920135 136653 91555 87157 95645 87157 83907 530641 530641 530641 422623 422623 324818 475690 324818 975040 324818 117404 83907 999404 83907 72372 67630 873386 873386 873386 512029 512029 446080 308926 308926 308926 849819 849819 849819 954727 954727 849819 323668 324685 323668 308926 308926 575098 308926 337771 308926 291575 265077 187067 610704 187067 187067 155325 95010 954988 95010 67630 942625 942625 830213 67630 67105 135200 161569 367699 161569 377879 951520 951520 377879 847208 847208 480134 377879 358008 161569 721735 721735 487280 487280 161569 158763 135200 999522 135200 67105 611883 611883 611883 451001 634432 451001 408702 67105 872923 67105 599982 67105 420766 67105 235508 67105 65688 65604 187450 65604 65476 511205 511205 411689 65476 465605 65476 64911 782530 64911 50071 305595 50071 32682 28943 16060 13288 11080 555909 555909 238635 266337 410237 266337 238635 11080 10138 9890 8241 9257 8241 728521 728521 728521 673472 673472 673472 673472 667724 615340 641046 615340 594071 253511 8241 7993 26023 421668 421668 943121 943121 943121 421668 410239 798467 410239 616401 661412 616401 616401 410239 593241 593241 741925 593241 593241 410239 403534 634049 718364 718364 634049 427897 936650 427897 708566 427897 403534 406032 591327 591327 591327 406032 403534 378182 359420 359420 359420 238698 219842 739992 219842 558287 219842 132263 80505 852137 852137 852137 266034 102112 295035 102112 80505 200370 694638 694638 386689 908427 386689 818543 818543 760705 386689 200370 365016 200370 663218 672422 663218 200370 80505 61295 171109 61295 523762 61295 42633 785206 785206 564727 42633 788243 788243 788243 788243 345605 295051 295051 200835 42633 962707 976616 976616 962707 104451 42633 509297 42633 196309 42633 34126 956171 956171 616446 34126 26023 7993 7963 5693 838282 5693 345921 411395 345921 627942 345921 5693 5164 448271 5164 4008 903765 4008 220045 4008 889679 4008 636096 4008 648997 648997 589811 4008 3686 3257 2729 752552 2729 2446 809369 2446 1952 568 521 259456 521 153775 521 970292 970292 970292 887394 887394 419544 136627 136627 416265 136627 426453 544353 644682 821128 644682 811698 811698 762641 818968 762641 762641 644682 580734 580734 580734 552235 909769 552235 839817 839817 907991 839817 860812 860812 839817 839817 839817 839817 849730 839817 837799 811226 811226 724342 765937 765937 765937 724342 661467 552235 552235 552235 552235 544353 544353 585548 544353 431119 431119 987467 987467 987467 431119 620130 620130 534279 431119 426453 590660 787320 854416 854416 854416 819807 972972 819807 787320 590660 426453 426453 835527 426453 426453 406271 479798 479798 757511 757511 479798 406271 406271 426428 406271 718710 973895 973895 973895 718710 718710 700842 679604 406271 406271 405285 409250 490197 409250 405285 392575 387152 387152 368700 331415 635279 636204 635279 635279 331415 324035 300827 290847 397881 290847 594041 290847 269767 765175 805164 805164 765175 765175 613721 613721 613721 601030 269767 786430 848824 848824 848824 786430 607253 899147 899147 899147 757256 757256 757256 607253 607253 607253 498607 475862 371205 269767 823188 823188 385393 269767 260864 450706 260864 256731 662030 662030 662030 662030 902077 662030 553590 967410 553590 295975 256731 557171 256731 252393 233304 561240 233304 511533 511533 233304 228724 205845 190939 753693 753693 190939 190797 168937 168937 657216 715610 657216 168937 860750 860750 843874 168937 162225 729215 729215 556750 556750 556750 522291 309207 309207 309207 304952 353141 353141 304952 162225 602700 602700 704325 704325 720281 909608 909608 720281 704325 704325 602700 568903 568903 503416 433997 897834 897834 897834 897834 813955 781381 959707 781381 433997 517267 705959 517267 433997 892770 433997 390002 509424 509424 509424 390002 363926 294880 243507 431554 243507 455705 455705 744813 744813 744813 455705 455705 396953 317033 265223 243507 162225 159828 156593 266722 156593 564043 156593 136627 136627 131387 110898 101396 599146 101396 309152 101396 91059 423144 423144 423144 236012 236012 447856 447856 236012 616632 236012 224756 859222 859222 859222 784444 784444 784444 784444 689186 689186 592806 592806 777644 592806 531895 788600 531895 523221 857007 857007 857007 857007 857007 857007 782571 782571 782571 523221 776655 776655 776655 523221 523221 520125 520125 520125 925338 520125 492264 955928 492264 669905 492264 492264 736647 492264 783951 783951 492264 492264 492264 492264 450001 447355 447355 427869 396991 396991 371673 369287 369287 361925 688615 361925 304213 244798 224756 220401 563413 220401 220401 200566 628139 628139 881142 628139 478982 200566 984659 984659 984659 742431 640383 200566 200566 171592 157529 137582 377254 137582 316233 638347 316233 137582 102978 788562 102978 92103 91059 83964 79129 254347 975356 254347 79129 534563 79129 70533 661607 70533 315699 315699 315699 580298 315699 300914 234989 688954 688954 234989 70533 785406 785406 689580 689580 234546 70533 379922 741883 379922 70533 60541 711591 60541 304784 346185 346185 561909 984204 984204 581344 561909 561909 346185 333668 304784 332836 304784 296199 361455 296199 60541 56444 725400 725400 725400 600196 755467 600196 600196 574094 574094 574094 926551 574094 340643 141526 56444 52699 40573 39661 34730 33671 574136 33671 912689 912689 912689 862347 862347 525816 525816 523750 978269 523750 113947 181719 113947 380479 113947 744409 113947 825030 113947 217812 113947 33671 27398 44369 204352 44369 395003 661357 661357 971534 971534 661357 661357 997896 661357 395003 321960 259365 485550 621284 621284 744419 621284 485550 424675 424675 457236 424675 424675 463042 424675 889293 424675 259365 190692 660360 190692 164732 164732 513502 164732 951498 951498 951498 716196 164732 502778 502778 316044 164732 373441 164732 130053 105669 561122 105669 44369 34272 27398 746314 27398 445390 27398 23557 20264 18554 388622 18554 18389 18359 15198 370949 975394 975394 370949 31604 606963 31604 383890 31604 15198 720204 15198 375747 760595 375747 966863 966863 951043 375747 15198 779325 15198 247379 985508 247379 15198 6276 4993 729088 4993 303464 922165 757840 51207 463048 51207 856601 856601 608815 626365 608815 608815 51207 2930 648631 931334 648631 673475 673475 60459 81172 60459 557066 557066 445906 445906 256987 606442 749401 606442 256987 280290 280290 256987 185544 330811 428817 240103 463384 240103 240103 25856 286733 25856 864873 25856 128105 25856 169914 802157 802157 802157 802157 796462 169914 460492 888563 888563 571433 460492 169914 63499 912839 912839 705985 63499 1565 521135 1565 695448 942344 149791 325157 149791 506768 756847 166317 871692 871692 871692 584532 805128 811249 805128 805128 805128 765552 765552 638698 638698 584532 584532 584532 521849 488464 634364 488464 429705 624553 710385 710385 651923 624553 429705 291340 291340 666252 291340 340153 340153 386604 523191 523191 424077 386604 340153 291340 196884 170658 166317 937573 937573 216444 166317 99285 623276 99285 167078 99285 820519 820519 474242 197982 463902 67286 795537 795537 768965 768965 768965 632753 632753 530428 361838 67286 279514 221118 221118 186794 395356 946723 678432 639923 155267 723611 155267 478937 128045 419986 472259 769237 850911 850911 850911 769237 606772 605406 605406 647347 647347 939371 647347 605406 926259 605406 658598 605406 309779 953851 953851 953851 953851 953851 568161 513041 347077 337831 543008 337831 517595 517595 668478 668478 740985 754299 740985 668478 668478 547639 951666 951666 779153 851214 779153 779153 550925 547639 517595 691232 517595 900083 900083 900083 900083 517595 362914 350714 609220 609220 609220 393809 447522 941903 941903 569495 447522 926813 447522 447522 447522 393809 393809 987704 987704 393809 393809 715999 715999 715999 684554 626522 393809 350714 350714 337831 309779 306722 963823 306722 284455 886890 284455 284455 266254 +Test 11 Pass! diff --git a/priority_queue/data/two.memcheck/code.cpp b/priority_queue/data/two.memcheck/code.cpp new file mode 100644 index 0000000..509a44e --- /dev/null +++ b/priority_queue/data/two.memcheck/code.cpp @@ -0,0 +1,261 @@ +// provided by 林伟鸿 +// +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "priority_queue.hpp" + +using namespace std; + +int A = 325, B = 2336, last = 233, mod = 1000007; + +int Rand(){ + return last = (A * last + B) % mod; +} + +void check1(){//测试push 以及 top访问 + sjtu::priority_queue Q; + for(int i = 1; i <= 5000; i++){ + int x = Rand(); + Q.push(x); + printf("%d ", Q.top()); + } + printf("\n"); +} + +void check2(){//测试pop 以及 top访问 + sjtu::priority_queue Q; + for(int i = 1; i <= 5000; i++){ + int x = Rand(); + Q.push(x); + } + printf("%d ", Q.size()); + while(!Q.empty()){ + printf("%d", Q.top()); + Q.pop(); + } + printf("\n"); +} + +void check3(){//测试push pop 同时操作 + sjtu::priority_queue Q; + int size = 0; + for(int i = 1; i <= 6000; i++){ + if(!size){ + int x = Rand(); + Q.push(x); + size++; + } + else{ + int p = Rand() % 2; + if(!p){ + Q.pop(); size--; + } + else{ + int x = Rand(); + Q.push(x); + size++; + } + } + if(size){ + printf("%d ", Q.top()); + } + } + printf("\n"); +} + +void check4(){//测试拷贝构造 + sjtu::priority_queue Q; + for(int i = 1; i <= 5000; i++){ + int x = Rand(); + Q.push(x); + } + sjtu::priority_queue Q2(Q); + printf("%d ", Q2.size()); + while(!Q2.empty()){ + printf("%d ", Q2.top()); + Q2.pop(); + } + printf("\n"); +} + +void check5(){//测试"=" + sjtu::priority_queue Q; + for(int i = 1; i <= 5000; i++){ + int x = Rand(); + Q.push(x); + } + sjtu::priority_queue Q2; + Q2 = Q; + printf("%d ", Q2.size()); + while(!Q2.empty()){ + printf("%d ", Q2.top()); + Q2.pop(); + } + printf("\n"); +} + +bool check6(){//测试堆为空时top是否报错 + sjtu::priority_queue Q; + for(int i = 1; i <= 100; i++) Q.push(Rand()); + try{ + while(!Q.empty()){ + Q.pop(); + } + Q.top(); + } + catch(...){ + return 1; + } + return 0; +} + +bool check7(){//测试堆为空时pop是否报错 + sjtu::priority_queue Q; + for(int i = 1; i <= 100; i++) Q.push(Rand()); + try{ + while(!Q.empty()){ + Q.pop(); + } + Q.pop(); + } + catch(...){ + return 1; + } + return 0; +} + +//check8用于测试拷贝构造时是否在复制之前new出新的堆,若堆在pop是回收节点内存,那么会出现第二次回收时崩溃 +bool check8(){ + sjtu::priority_queue Q; + for(int i = 1; i <= 3000; i++){ + Q.push(Rand()); + } + sjtu::priority_queue Q2(Q); + while(!Q.empty()){ + Q.pop(); + } + while(!Q2.empty()){ + Q2.pop(); + } + return 1; +} + +//check9与check8同理,测试的是"="操作执行是是否new出新节点 +bool check9(){ + sjtu::priority_queue Q; + for(int i = 1; i <= 3000; i++){ + Q.push(Rand()); + } + sjtu::priority_queue Q2; + Q2 = Q; + while(!Q.empty()){ + Q.pop(); + } + while(!Q2.empty()){ + Q2.pop(); + } + return 1; +} + +struct intnum{ + int num; + intnum(int p = 0) : num(p) {} + bool operator <(const intnum &b) const{ + return num < b.num; + } +}; + +void check10(){//考察传到自己的类是否能正常工作 + sjtu::priority_queue Q; + int size = 0; + for(int i = 1; i <= 3000; i++){ + if(!size){ + int x = Rand(); + Q.push(intnum(x)); + size++; + } + else{ + int p = Rand() % 2; + if(!p){ + Q.pop(); size--; + } + else{ + int x = Rand(); + Q.push(intnum(x)); + size++; + } + } + if(size){ + printf("%d ", Q.top()); + } + } + printf("\n"); +} + + + +//check11为CE test 将注释代码进行编译,如果没有CE则通过该测试点 + +struct node{ + int num; + node(int p) : num(p) {} + bool operator <(const node &b) const{ + return num < b.num; + } +}; +bool check11(){ + sjtu::priority_queue Q; + for(int i = 1; i <= 3000; i++) + Q.push(node(Rand())); + while(!Q.empty()){ + Q.top(); + Q.pop(); + } + return 1; +} + + +int main(){ + check1(); + check2(); + check3(); + check4(); + check5(); + + if(check6()) printf("Test 6 Pass!\n"); + else{ + printf("Test 6 Fail!\n"); + } + + if(check7()) printf("Test 7 Pass!\n"); + else{ + printf("Test 7 Fail!\n"); + } + + if(check8()) printf("Test 8 Pass!\n"); + else{ + printf("Test 8 Fail!\n"); + } + + if(check9()) printf("Test 9 Pass!\n"); + else{ + printf("Test 9 Fail!\n"); + } + + check10(); + + if(check11()) printf("Test 11 Pass!\n"); + else{ + printf("Test 11 Fail!\n"); + } + + return 0; +} diff --git a/priority_queue/data/two/answer.txt b/priority_queue/data/two/answer.txt new file mode 100644 index 0000000..7b282ab --- /dev/null +++ b/priority_queue/data/two/answer.txt @@ -0,0 +1,11 @@ +78061 371986 896946 896946 896946 896946 896946 896946 896946 896946 896946 896946 896946 896946 896946 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 986525 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 988039 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 992650 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 996994 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998623 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 998850 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999404 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 999522 +5000 999995999814999690999669999631999479999397999196998981998806998683998443998424998391998182997982997931997767997472997457997262997188997101997095996934996682996452996220995720995288995170995109994828994563994558994181994159993922993795993659993657993600993539993446993231993215993057992360992267992035992006991928991242991113990882990832990294989914989618989605989461989372989305988893988593988580988554987739987704987507987427987385987373987282986908986146985722985711985690985628985541985191984958984908984776984671984639984005983772983682983457983217983112982716982503981765981064980810980739980290980286980222979898979832979219979135979120979058979016978639978584978577978072977767977541977207977128976203976157975752975736975607975479975416975211975075974728974689974580974231974151973713973357973286973002972552972458972340972228972023971981971886971762971741971568971280970513970053969998969923969856969736969546969385969203969028968030967852967615967404967355967155966950966862966027965905965731964951964898964893964780964744964690964185964041963823963817963775963751963722963601963589963495963477963209963108963093962992962899962759962636962632962574962425962161962083962052961583961536961532961240961155961136961077961024960887960863960664960660960655960482960428960026959980959865959540958920958866958835958742958460958192957956957801957759957612957470956877956858956796956629956544956284955828955725955526955475955321955239955166955156955095955034954975954862954654954163954093953412953403953062952710952383952343952238952218952192952050951890951666950584950332950232950194950162950159950136950016949888949727949374949320949285948689948589948567948486948422948252948206948073948004947812947767947389947206947152947113946914946735945925945713944939944848944793944416943923943866943699943659943516942538942327942270941903941897941798941640941491941430941408941401941052941000940835940826940782940450940179940159939980939928939871939618939485939311939257939193939066938887938622938607937273937167937112936950936834936822936796936731936382936361936100935778935752935708935446935394935383934959934664934624934582934427934412934381934238933984933832933672933484932919932820932454932401931744931672931560930586930540930504930272930077929855929774929681929575929559929250929046928589928059928032927773927747927733927687927574927553927111927065926813926497926417926278926060925886925557925370925152924804924786924281924166923668923411923042922612922525922471922421922305922252922102921725921667921168920662920266920216920205920082919926919863919816919549919270918989918974918781918668918179917804917380916721916519916376915645915268915016914777914479914392914382914322914185913981913882913871913682913563913470913331913189913186912735912633912316912258911853911770911740911647911471910994910496910493910304910148910112909921909903909848909724909471909139908775908746908588908339908239907876907606906800906591906238906057905943905176904657904591904590904469904387904346904034903907903889903710902831902664902598902357901612900525900444900257900221900085900083899702899656899585899499899487899387899318899035897933897220897179897087896827896727896509896402896321896222896157896152895977895845895791895523895380895189895119895117894929894887894775894278894159894005893956893947893696893380893065892804892629892493892454892434892290892216892144890897890549890395890251890194889906889788888814888508888495888425888409887899887722887521887352887347887082886890886814886767886419886163885608885495885378885150885141884999884444884360883925883242883010882633882574882569882476882268882087881763881460881436881086880642880508880384880143879994879912879861879379878853878625878014877958877809877753877533877483877191877094877035876966876814876729876390876241876157876107875290875170874991874678874670874662874322874106873979873744873724873606873517873149872535872496872409872352872197872090871971871895871868871543871373871372871249870937870530870524870371870293870263870153870032869684869374869165869118869109868932868875868688868609868326868249868109867313867052866961866746866438866103865892865368865307865187865116864919864870864782864673863969863835863599863081863078862720862412862298862294862118862047861972861950861890861824861810861769861708861497861491861357861062861028861016860693860255859888859620859511859446859391859073858981858080857974857912857582857126856988856972856852856612856148856059856053855552855460855189854671854503854339854256853708853679853675853614853604853504853364853290853266853244853214852833852783852667852463852312852231852173851856851823851214851133851068851044850659850564849941849644849534849143849071848485848442848432848425848369848252848135848084847461847263846975846519846232846039845910845639845587845575845533845503845418845095844605844604844396844387844120844005843845843680843110842960842879842362842137842101841940841407841175841076840631840269839703839386839382839204839143838950838674838581838540838250838217837919837745836884836856836784836702836626836448835837835826835681835466835259834713834603834532834483834387834179834132833564833366833231833093833077833006832873832839832828832654832491832475832331831563831487831316830897830743830714830583830541830164830119830090829866829476829359829285829225829214828524828423828278827749827527827098826986826912826858826552826396826386826184825880825838825648825580825488825217825201824995824994824852824587824487824070823854823690823610823327823291823217823079822941822927822876822781822457822362822225821790821761821100821007820884820868820863820763820572820474820157820090820080820043819615819512819372819281818994818961818838818508817904817627817556817464817435817317817301817259817219817081817029817022816761816605816420816193816053815956815430815044814952813690813584813230812697812676812521812409812293812168811912811335811167811162811044810567810551810527810370810153809070808990808967808639808523808177807830807469807324807310807046807022806897806647806261806210805857805748805590805422805367805281805115805034805010804230804093803816803753803579803533803318803252802842802830802181802116801867801855801728800982800882800865800811800521800432800370800325800264800157800087799721799582799152798996798988798782798643798516798489798371797972797958797945797663797651797302796821796146796085795850795761795708795417795360795276795217794957794951794820794719794380794378794376794312794141793651793622793475793417793326793129793110793104792986792724792466792269792170792134792128792078791654791485791413791032790954790412790349790316790301790027790023789856789624789374789178789128788893788277788221788110787836787774787329787251787068787036786840786804786724786689786671786265786202786126785830785714785139784770784634784497784246783992783822783786783753783389783325782774782574782335782160782003781794781323781153780949780924780835779703779677779461779289779181779165779153778740778673778626778452778281778064777904777866777413777188776969776367776226776136775926775859775831775762775681775419775345775175775169775053774496774457774392774221774049773945773788773780773467773303773177771940771693771576771575771383770910770823770683770568770477770199770060769197768734768651768523768472768450768075768046768015767955767729767486767462767392767362767271767234767204766645766492766185766015765958765605765420765135764231764210763753763402763360763279763240763224763047763013763000762846762786762694762659762461762311762201762166762125762100762035761983761287761268761195761084761026761023760762760643760369759731759656759486759337759319759040758880758823758500758275758036758019758005757344757222757212757106757068757004756901756874756644756474756387756296756047755671755496755380755270755103754669754351754237754001753993753800753771753573753567753351753049753017753015752626752480752352752153752037751864751708751682751470751373751326751018750471750300750242750171750097749772749755749633749537749383749368749330749245748956748879748553748463748449748177748174748054748048747980747579747497747237747224746903746860746843746751745492745486745476745457745323745196745119744933744900744784744721744215744208744117744061743945743684743623743607743061742865742708742602742505741851741732741553741538741431741374741088740857740811740764740653740462740460740285739552739537739365739334739320739048738768738624738536738531738445738171737908737841737493737434737152737121736776736560736328736287736167735462735123734687734611734485734289734259733850733490733398733302733245732905732520732231732143731997731959731792731762731485731153731008730619730603730503730142729981729468729359729310729256729024728903728566728539728440728411728155727396727300727263726966726859726721726003725979725905725690725639725608724930724923724617724596724368723849723613723607723551723529723087722915722679722139721907721422721152721117721062720987720892720457720336720285720283719782719176718941718938718746718483717894717847717694717540717233716984716834716782716288716276715999715932715896715375715287715250714681714540714514714338714193713872713780713550713287712881712819712813712742712345712326712039711988711951711930711851711779711756711409711179710882710824710655710644710559710278710222710019709894709822709341708791708623708429708295708043707947707686707376707347707232706903706820706181706035705993705408705327705020704999704763704746704622704557704528703744703659703442703252703084703079703011702959702477702369701926701310701110700942700871700826700679700668700387700117700082700061699717699548699403699104698880698877698424698009697949697816697684697395697253697020696753696661696453696313695916695873695860695306695158694950694727694717694269694152693906693246693205692978692876692819692648692642691407691232691093690531690431690230690223689915689869689831689369689062688990688875688762688614688347688216688135688130687660687044686839686738686526686413686374686293686113685930685888685851685804685737685301685280684554684547684463684428684374684370684219684171684115683393683250683107682775682752682549682408682311682069681646681619681418681164680809680642680549680316680062680058680022679759679719679018678612678609678348678291678124678026678021678009677979677127676723676535676493676281676158675674675474674778674636674575674476674223674077674040673717673533673214673121672983672924672696672277672193672026671865671675671623671467671152671010670975670917670838670606670444670051669844669821669702669546669475669416669406669325669232669052668960668893668691668626668613668033667820667763667695667534667412667353667052666912666894666856666800666713666419666361666131666106665804665671665617665552664944664592664157664099664050663782663671663345662884662798662191661982661826661578661455661000660851660572660571660565660454660135659839659811659797659644659585659575659549659182659026658944658491658450658303658027657046656530656482656375656360656293655621655555654799654764654654654620654590654524654129653967653806653517652523652290652153651937651780651503651168651059650870650836650806650511650161650156650000649473649159648388647919647662647651647464647368646883646451646387646268645562645446645198645082645055644977644954644932644796644650644595644592644286644281644266643889643748643451643425643127643025642996642894642820642353641880641869641863641556641532641138640901640656640122640011639688639139638322638186638125637709637596637466636614636559636495636462636183636030635837635413634845634667634659633597633267632943632666632121631915631911631816631609631360631336631004630925630923630720630702630459630208630063629960629860629782629770629745629647629613629542628759628506628344628145628032627711627566627565627147627010626961626522625939625784625590625540625500625402625390625199625133625002624968624922624721624398623628623473623306623169623082623058622988622919622855622758622404622155622068621714621534620899620622620565620473620340620086619404619390618629618551618398618384618223618089617623617351617014616708616601615543615121614979614828614574613933612996612519612430612018611981611880611613611561611429610923610791610629609888609656609220609075608327608305607979607531607464607291606355606131606073605993605989605630605468604673604334604078604075603773603391603267602941602680602058601983601981601942601753601057600892600798600666600161600160599585599431599199599063599026598258597986597858597504597083596861596799596764596738596656596001595959595688595034594853594628594360594132594097593696593281593213593155593060592985592777592719592392591995591989591309591055590652590651590565590370590341589795589704589385589286588904588880587956587852587603587007586999586737586672586624586361586352586286585977585968585312585168584882584331584262584204584094583817583590583474583258582497582459582198581953581742581423581183580994580904580192580153579732579599579516579483579245579160579007578920578649578597578346578277577889577853577657577450577366576782576479575910575522575401575372575063574914574541574230574164573309573157572260572117572059572043571853571781571621571189571044570696570626570469570360570201570105570042570030569617569524569495569482569135569055568331568190568149568069568051567942567664567495567350567310566924566909566717566504566340565597565406565389565191564988564632564342564200563420562757562688562303562116561694561673561608561555561536561497561492561017560911560868560666560463560356560297560089560021560012559863559674559573559498559474559056558717558548558383558376558330557932557767557640557448557092556628555686555431555356554821554809554415554402553645553644553574553466553390553058552705552683552484552362552236552228552211552195552038551987551931551876551806551612551499551167551128551124551038550925550893550745550110549696548727548721548516547645547094546920546919546912546730546440546336546116545992545989545964545628545252545235545015544883544831544787544742544713544452544336544070544049543956543691542912542386542128542018541975541945541838541564541307540978540795540184540133540127539698539283539257538995538772538423538271538059537692537610536924536880536829536821536676536551536450536006535838535739535624535024534906534753534505534284534081533609533349533348533280533081532885532704532631532550532391532298532294532276532254532122531923531866531810531521531442531002530944530847530815530486530217530171529853529724529575529541529287529280529244529180529169529168528978528879528392528165527917527897527890527628527397527267527025526964526903526889526541526474526454526407525932525856525758525398524648524395524214523922523662523307523256523003522930522598522559522545522408522400522022521848521756521661521490521432520725520572520523520398520349520211519689519369519277518949518733518223518180518078518061518004517805517585517506517098517082516290516201516151516007515579515497515474515307515028514755514751514627514449514095513950513595513454513114512844512809512795512549512518512510512315512123511746511713511648511503511102511055510953510741510260510119509970509558509448509332509281509039508958508901508808508025508021507800507738507680506892506805506669506580506549506455506437506174505450505260505103505018504941504405503990503847503549503040502964502901502572501920501701501418501415501333501217501216501142500726500262499659499475499470499386499352499121498780498716498578498504498052497923497587497546497088497043496816496718496619496170495615495474495003494772494391494248494043493701493644493621493399493273492921492778492530491848491776491501491016490835490479490340490275490137489780489195488797488747488746488568488513488457488283487962487904487901487868487802487587487441487118487031486999486857486543485962485665485610485569485403485298485274485062484114483844483534483394483317482504481679481634480832480676480333480239479591479491479434479315479235479231479213479111479079478987478947478912478675478557478186477783477696477574477523477371477290477241477225477143476801476053475942475913475544475460475183475013474993474834474776474318474265474216473723473269472561472022471686471258471098471023470820470543470446470439470245470189469658469598469074468987468803468675468523468053468040467943467457467372467358467144467084467034467005466960466553466409465797465230464933464713464579464495464458464380464063463983463896463712463535463371462848462783462573462415462357462108461779461639461447460832460798460787460584459917459614459536458908458319458310458276457962457700456988456962456849456292455796455787455537455497455375455259455177455115454954454491454041453742452863452841452837451852451742451506451257450793450450450353450322450204449738449597449567449133448988448633448532448513448497448458448236448198448072447806447522447504447328446652446304446072446055446028445971445777445510445479445371444803444772444645444627444513444331444087444020443971443913443615443531443034442945442717442137441149440672440606440226440121439989439882439413439397439112438985438967438856438131437783437438436923436799436574436517435991435936435921435733435647435516435186435167434994434863434828434770434559433704433609433543433340432563431931431774431753431682431095431090431036430624430598430361430325430069429605429570429521429118429116429054428797428738428041427927427669427345427304426886426803426786426757426666426294426219426193426189426148425887425866425812425743425722425236424947424814424396424050423635423406423343423132422332422217422047421770421697421421421032420957420818420605420604420360420291419669419555418882417951417327416934416909416856416423416347415749415714415579415550415517415288415269414645414560414152414022413964413920413905413761413745413433413394412817412707412653412559412531412443412340412215412205412195411905411701411460411457411417411337411335410855410500410181410136409660409540409514409341409260409218409096409082408903408772408425408415408242407820407642406898406438406041405800405761405658405611405164404990404701404411404384404292404040403979403466403442403262403152402993402961402384402152402108402032402029401813401543400802399367399290398578398130397810397564397417397272397244397106396858396819396810396319396261395909395766395590395475395466395301394799394731394591394006393917393877393823393809393683393506393455393417393243392371392198391561391512391505391392391096391042390930390855390843390769390513390377390314390270389798389720389197389008388982388867388492388095387492387323387124387035386999386774386540386310386216385884385380385304385267385138384969384920384794384737384441384376383448383229383031382921382803382663382515382300380802380749380715380483380457380193379843379243379089379011378931378688378658378375378342378192377969377814377763377400377354376883376798376682376510376336376252376051375843375675375665375527375417375349375268375259375179375098375001374760374494374399373983373377373276373184373095373016372904372423372325371976371957371587371296371188370985370745370730370696370695370532370338370302370231370013369352369134368850368642368534368392368317368041367845367614367232367123367041366943366534366230366085366055366039365963365757365724365683365666365417365323364423364020363781363723363668363498363495363243362914362713362705362314362247361748361723361555361346361159361020360886360783360464360388360270359746359634359605359348359246358477357801357718357621357601357495357455357447357144356935356912356789356759356702356531356428356357356171355964355891355340355316355056355020354891354448354287354263354186354180353967353847353721353284352991352933352907352489352460352339352294352239352146351904351903351643350930350879350493350444350284350226350181350177350125349742349646349346349014348806347979347770347583347368346761346428346299345848345750345659345335345262344635344496344218344037343971343899343720343697343278342721341893341874341458341423341213341202341149341106341101340930340727340598340550339550339418339359339225338866338622338287338157338033337859337511337467337462337365337301337282337108337095336981336873336691336376336306336060335859335745335726335424335415335386334844334057333597333567333082333017332995332952332826332648332101331940331888331824331587330949330734330635330577330316330197329603329304329196328969328952328894328888328471328397328210327906327747327677327643326571326459326349326314326140325566325519325518325514325513325392325390325339325044324551324358324107324105324054324048323962323820323779323773323634323417323243323214322802322720322695322619322308322134321657321473321419321377321192321081320647320449320333320182319951319847319666319647319440319208319175319151318843318624318074317901317845317665317614317533317494317473317472317201317125317030316714316478316366316255316189315764315612315345315261314941314818314774314580314419314372314225314166314001313992313960313578313470313363312998312944312538312416312079311847311304311115310940310682310270310230309569308142308010307899307828307546307437307325307293307292307273307263307229306722306707305765305728305711305579305295305224304996304828304697304624304267303842303653303609303553303458303201303184303172303155302812302782302679302479302458302043301970301652301641301599301559301512301460301415301240301067301023300980300936300921300736300500300238300220300188300122300042299312299215299112298992298287298006297578297278297201297137296827296542296374296354296200296070295748295605295377295242295185294947294761294594294471294281293938293705293445293241292814292386291903291623291605291549291371291279290871290602290598290452290075289923289828289683289653289467289251289015288589288584288427288415288266288207288087287785287166286849286774286550286305286289286161286097286020285736285542285539285513285484285166284455284326284276284264284206284205284060283658283592283382283162283104282652282222282164281641281274280817280726280627280360280342280139279902279686279656279305278642278638278285278057277059276741276554276276276053275952275905275796275677275344275247274983274343274167274022273826273710273276273053272805272463272449272438272037271884271834271797271644271487271247271181270753270698270665270297270225270086270066269490268790268117268098268086268046267912267733267669267557267356267311267286267224266799266773266664266310266254266092265744265498265358265349265069264798264691264634264439264430264195264091263714263206262716262076261701261447261354260887260791260321260094259874259636259433259277258921258888258772258726258421258333258130257978257503257364256565256469256459256312256158255992255815255721255645255527255450255085254942254938254623254497254100253234253230253105253055252665252451252450252149251933251830251616251518251410251348251324251255251142251110251013250859250537250218250043249961249840249699249691249586249481249045248968248490248431248339248257247226247147246560246532246480246473246431246414246285245926245416245378244969244911244772244748244637244614244502243515243262243101243084242847242740242620242330242027240998240709240670240572240159240151240122240071240064239927239649239570239094238258237944237928237926237841237722237678237649237382237330237098236778236281235628235427234995234988234511234390234329234094234069233721233627233162233050233024232814232708232235232215232105232008231689231425231229230617230335230288229859229776229755229190228378228349228339228020227826227667227610227585227470227469227406227198227189227020226653226212226165225774225771225290225261225144225106224955224905224668224643224414224059223592223450223339223143223100222518222034221902221849221075221073220944220325220234219763219735219587219565219540219220218985218973218611218057217879217792217762217706217647217615217512217421216745216285215952215894215527215393215363215243215156214936214870214652214550214454214110214080213236213057213027212906212801212708212376211993211942211883211702211650211485210980210802210688210446209795209762209733209582209547209439208984208644208528208193207997207844207414207083206312205932205503205500205474205441205400203847203357203331203291203235203097203070203068202558202472201703201297201205201029200541200367200276199840199769199595199443199265199155199108198890198566198285197131197092196853196651196601196580196418196303196255196226195985195843195781195778195367195289194795194409194392194301193960193610192901192824192822192704192336192135191412191296191256190803190785190625190610190590190569190542190420189778189342188793188750188726188523187797187690187399187333187171187165187053186667186647186386186246186181186144185951185869185461185235185101185009184820184622184333184288184073183685182651182478182316182080181782181726181578181413181287180606180340180310180050180015179723179315179295179214178882178554178468178295178179178146177946177923177909177706177657177365177337177184176772176522176441176417176299176214176203175429174963174916174747174632174510174495174486174407174399174057174030173625173593173524173454173380173332173102173022172966172730172522172369171964171799171777171669171570171311171128171122170726170470170030169841169208169140169092168692168064167985167396167273167130166936166923166785166715166652166570166221166164165651165625165467165434165085164888164696164511164331164317163858163684163221163188163069163010162882162799162178162162161958161606161432161275160777160562160218160115160102159741159663159479158729158160158154157638157185156995156954156873156802156280155748155680155644155254155102154998154907154872154766154747154608154066154050153944153732153693152919152755152317151930151537151533151344151236151073150947150457150020149924149787149720149223149159148903148750148734148653148468148033147786147647147616147533147213147177147067146826146547146393145647145496144981144806144774144451144161144158143765142979142806141900141630141276140916140905140477140348139972139752139466139252139194139150138903138580138476138360138130138034137644137414137385137383137208137169137006136747136294136020135999135787135772135738135674135545135000134704134321134126134047133894133776133577133364133229133075133016132803132678132374132329132233132075132038131953131173130972130503130435130421130358130170129925129841129677129229128058127928127869127705127646127617127013126964126690126593126566126565125408125343125210125195125134125053124915124747124676123905123835123673123510123278123222122824122562122448122385121725121458121230121156120851120832120766120532120501120339120188120069119982119816119764119608119517119514119086118699118698118669118497118185117887117683117219117172116878116784116762116719116677116386116383116293116235116010115515115073114848114833114701114688114626114578114317114272114004113998113623113437113015113007112849112725112555112523112238112200112180112126112097111981111807111754111697111542111446111361111308111080110609110589110493110382110218110031109898109833109712109469109411109324109306109145108900108811108772108614108441108318108115108006107776107647107624107231107013106897106250106200106141105988105733105722105606105572105501105362105308105189104963104886104731104702104635104576104504104287104041103867103507103489103141103084103039102757102648102581102224102011102002101957101905101750101480101430100842100769100718100565100461100256994019937699044989549868998454982459776497587974419712696897966949647796355963419607895950958579519694720945149428194135940499388593867937629345593339933239317693142928999267392607926009248691940918519158191530910659009790048892678862688433880728805687850876988765687416871048691686699866938649586380863268631686168859378575485000847988454484449839028374083608835018341483405831198309483073829708274782691825108235482217820428147881073804808039179875795847952479461792627906078919789187885978453777777767077638773607720176641766277608476037759217582875787756407530175075747857422973973737287346673436733247331473289732047312772822727927272672392723257159471449711727085570827707437044369813697286967069618695356946369290688116841668236676856740667240671636707166868667226633266275659206532565019645666441063957638516380363549631636287362739624786194561933615696154861179610846089960883607586058760531600766006459971597685951159346588635864758615580905801057972579125789357785574095712957032568725678856220559695594355891555765548555476554425535455141548805484054790545665451954153540205401553977537885371653697536445360053557534655345653390533775329653267532495297152953529025289952810524115235152296520785194751708515415152651427509465087650872508655082550810508015041450256501214920649022489744883548790487084840048346483374812148030480124785647765477574771447476472444687446809461514600045881457364569345677456104537345274452684504544416444014408243523433934318343070423524231742247419714144041356413084098640896408064069340660405794053040521399103967339584393473908039052389643889538622385503806537966379053782537635373693723037213367323671636713363653618135934357923532735240351223497534967349173483533961337863341333194330043282232450319803191031764307923054030259302483005030004299872934229322292912879128200281682712127094269142689326795264272630926253258192581325811254222538725354248902486524856247252448824465244552418524053237922378323585232312316023005225902186921325209692095020939208602050520482201581963919407190941892518878187521851918171177651714817132163621629216031158221557415264152311500214952147731437314291139081380313681128771212112029120071190711898117471146511448111681090510800107181062410557104921041310317102459666960894049112896088778602847383998332832582537939792778877784777176977114702769836740672166016472635254325399537453705296525849624571445544434083406640304010396638893618329532582883202318061797169214671372131713061159872499 +976200 976200 164759 455886 383215 562572 383215 253958 887518 194078 194078 106786 995898 995898 995898 995898 751449 339810 106786 6557 176848 200776 578087 200776 385154 385154 756939 883754 883754 756939 624364 385154 368012 200776 383513 383513 200776 200776 948990 200776 805824 805824 325731 200776 193641 553417 193641 176848 584547 176848 38598 114253 650185 71429 396846 326867 846736 846736 846736 625484 326867 729323 326867 356370 356370 920411 356370 356370 326867 575348 326867 326867 326867 326867 308947 782247 782247 782247 308947 188841 109869 104684 79292 59980 499041 598184 499041 884070 884070 499041 59980 46567 22536 535914 22536 1626 638370 638370 638370 120790 272676 120790 789577 789577 248368 120790 656623 120790 138329 659884 138329 120790 366221 120790 764288 120790 115973 650443 115973 1626 529345 529345 435777 112811 339999 904527 339999 339999 339999 174240 112811 68189 246095 363953 363953 578288 578288 578288 363953 244853 28060 265778 28060 40878 470060 40878 28060 3962 88879 540195 88879 177918 218735 177918 360712 699836 699836 699836 527319 527319 421596 818179 421596 879704 879704 846110 421596 360712 334460 606103 942778 606103 334460 462771 606251 462771 334460 177918 88879 88879 29119 174524 29119 3962 260544 3962 892339 892339 408640 408640 408640 944279 944279 944279 818896 532738 408640 305578 777205 777205 465017 305578 211847 19001 728112 19001 287992 703603 703603 703603 703603 703603 703603 574297 548170 457541 308185 426186 308185 287992 449421 522371 449421 287992 307277 287992 928249 287992 287992 359376 287992 393481 287992 191365 149157 19001 755409 278631 954901 954901 954901 473634 278631 2590 344554 344554 344554 77005 261499 400064 261499 366350 366350 261499 261499 209414 147377 284090 147377 265594 147377 710097 710097 232133 147377 997299 997299 997299 997299 731038 559121 559121 559121 250316 552661 250316 203956 312574 312574 397595 312574 819017 826605 826605 826605 819017 774019 774019 810074 810074 774019 979889 979889 979889 979889 979889 868775 987797 868775 868775 812661 812661 812661 774019 774019 673468 673468 673468 620748 478802 478563 478563 604208 478563 478563 478563 457619 509596 509596 462254 516143 462254 457619 876281 876281 967719 967719 876281 457619 457081 430059 430059 430059 430059 430059 399793 365406 365406 823688 823688 365406 942473 942473 775325 365406 365406 469899 495980 495980 602796 643346 707115 643346 602796 495980 495980 574232 495980 495980 769090 769090 495980 469899 469899 389617 365406 478099 365406 356183 356183 684408 356183 346501 324141 319262 781137 319262 312574 702614 312574 883793 312574 706724 961507 961507 961507 706724 706724 706724 988587 706724 406028 406028 356585 356585 852051 852051 356585 775495 847534 913646 847534 847534 847534 775495 775495 492944 356585 356585 341252 811094 965589 811094 811094 364036 364036 341252 976990 976990 976990 976990 976990 976990 976990 976990 976990 976990 976990 980431 980431 976990 976990 976990 774114 737034 707052 611553 607928 606262 594996 483378 432843 341252 336205 312574 303491 766210 766210 303491 297732 294262 284721 283701 282320 276121 842589 276121 545346 545346 529572 276121 267269 694386 769378 694386 778224 694386 267269 267269 732412 267269 267269 228838 227498 206643 465517 206643 403934 991631 991631 991631 695053 403934 950817 403934 851180 403934 206643 205387 203956 197522 896052 896052 896052 896052 729808 729808 745288 729808 729808 729808 722741 591521 435153 197522 192222 715404 192222 191934 979764 191934 191934 868747 868747 873763 868747 521084 191934 850685 850685 850685 735690 473837 191934 576078 576078 574350 191934 179121 171257 555039 555039 555039 345529 171257 168827 159174 964774 964774 301958 159174 147377 449074 870755 870755 870755 870755 870755 870755 870755 870755 870755 809292 800167 708363 708363 630669 630669 630669 614600 546051 546051 530100 530100 530100 530100 493735 449074 842955 449074 432117 270750 361531 270750 212631 160169 155854 803277 155854 741832 741832 218044 792384 792384 735671 218044 756268 756268 218044 155854 147377 131495 129725 126269 109774 817230 817230 109774 820071 820071 820071 820071 820071 641044 209122 154571 574890 154571 154571 609061 154571 286000 154571 525382 154571 221786 154571 137751 509088 805132 805132 805132 805132 587463 926646 926646 587463 509088 873990 509088 509088 452961 483581 452961 452961 313241 432625 457289 574054 457289 432625 496805 432625 313241 689273 712533 689273 313241 958826 958826 958826 958826 929166 313241 313241 233742 233742 405488 405488 233742 233285 167941 167941 137751 495122 137751 430620 680648 703285 719673 703285 680648 430620 430620 755307 430620 307666 137751 131726 988720 988720 988720 988720 988720 988720 988720 580505 434109 371785 371785 335328 422100 761948 955676 761948 761948 422100 335328 305902 305902 277271 172949 164423 209611 768431 209611 164423 208345 164423 131726 555962 131726 936064 131726 568128 131726 118163 949585 975068 949585 949585 949585 383153 383153 293353 118163 109774 106554 106221 97936 583222 583222 763250 583222 154065 745277 745277 745277 971822 971822 971822 971822 971822 745277 741750 957262 957262 957262 852516 741750 684522 556857 410438 370435 154065 302917 302917 154065 145689 735036 145689 133707 97936 94398 93621 387478 838797 838797 838797 838797 790394 790394 790394 790394 603179 387478 155742 128342 97434 286432 929758 286432 927182 927182 674755 286432 97434 171088 805039 171088 474680 171088 97434 733770 97434 93621 388518 93621 609550 93621 79664 79664 77005 441769 77005 797967 77005 76046 76046 857200 76046 268766 971570 971570 268766 849398 268766 268766 124432 112298 76046 74475 69576 177133 69576 701225 69576 66728 880189 880189 880189 880189 331290 747043 747043 626069 949064 626069 331290 520457 331290 73871 66728 65889 626956 626956 525482 65889 335190 65889 61526 554869 554869 554869 389405 376744 61526 61005 60147 700327 60147 60147 55451 52724 48854 48812 566053 48812 42955 35680 78915 35680 521287 35680 30772 28397 878021 28397 27558 23028 22835 402236 22835 20629 18425 13864 210833 841278 841278 841278 841278 986560 841278 841278 791184 808827 808827 791184 791184 762950 515387 434181 210833 128266 154660 128266 14160 13864 11467 407294 11467 9869 6682 873550 873550 873550 873550 834410 700848 313347 583486 583486 583486 583486 380599 313347 437058 313347 270919 38869 251859 38869 213673 814178 710807 225358 225358 33658 443201 539470 881419 991718 881419 539470 443201 443201 846023 846023 443201 402219 402219 935702 402219 873867 873867 402219 317297 317297 844009 844009 588125 317297 843243 843243 679942 679942 317297 315384 814613 814613 925505 925505 925505 898281 814613 814613 657360 607087 607087 542869 584708 542869 519320 315384 222355 935204 992576 935204 222355 285014 222355 231061 222355 867587 222355 222355 516841 222355 104258 81760 33658 573406 33658 7193 977976 977976 753450 753450 230642 483893 601884 601884 314018 199039 199039 108743 666263 666263 739112 666263 298293 418769 927537 418769 298293 957336 957336 957336 957336 760862 668710 298293 298293 616226 298293 579912 298293 774743 298293 879666 879666 832388 832388 866116 866116 866116 866116 859800 859800 859800 859800 859800 832388 793474 623655 936172 623655 979679 979679 631565 623655 623655 537213 537213 537213 500824 930408 500824 487460 412441 406690 406690 298293 247724 357576 247724 247724 229476 932208 229476 224642 201011 440607 201011 108743 105704 70579 70579 51748 29204 192391 918664 192391 374263 192391 613083 192391 38281 163853 38281 392343 700824 778368 700824 700824 461718 769943 769943 769943 942191 989285 942191 769943 769943 752291 461718 461718 421636 242764 1868 222158 1868 710059 710059 710059 261921 218411 613004 855800 613004 230179 248220 230179 41231 755426 755426 74242 316060 365348 373906 373906 430044 841075 430044 430044 430044 905548 430044 373906 306328 127900 104466 681575 104466 517486 837673 837673 352808 846743 352808 578410 890128 890128 873403 578410 578410 879205 578410 578410 371696 9071 240815 667859 240815 250873 240815 919359 919359 376162 266135 266135 74134 904516 904516 595263 595263 595263 132842 99562 74134 74134 18984 63040 18984 351597 934702 969197 969197 969197 969197 969197 934702 934702 918071 478064 870553 870553 870553 870553 870553 870553 870553 870553 801249 801249 754254 950846 950846 950846 947249 754254 478064 478064 452447 452447 890845 452447 410068 351597 332114 319057 319057 970397 319057 833700 319057 978208 978208 319057 921944 921944 414876 994602 994602 862408 892313 892313 862408 662411 414876 414876 486899 486899 486899 414876 319057 287112 911620 287112 754405 287112 360536 360536 416481 360536 287112 282610 282610 278497 298710 784429 784429 494676 298710 278497 278497 276379 258275 643132 643132 258275 796566 258275 307575 258275 637889 258275 233829 167255 337636 337636 500955 763020 763020 500955 337636 314395 184878 380237 184878 167255 109962 108408 103519 94737 93064 84523 225927 84523 507510 84523 78966 57226 37891 29921 18984 47176 691655 691655 691655 871313 691655 705608 705608 705608 691655 477060 998121 998121 998121 998121 998121 998121 846482 796923 796923 835102 835102 796923 792837 792837 792837 943271 943271 792837 792837 786392 645166 645166 620869 944446 620869 897726 897726 620869 554179 554179 508666 508666 503231 477060 477060 477060 800360 477060 445381 445381 445381 445381 445066 406532 309519 864210 309519 294855 292640 261916 247690 231690 223939 223939 198775 453243 198775 947071 198775 595074 595074 857697 857697 595074 595074 595074 549104 549104 478354 373003 373003 362203 362203 323541 645086 645086 645086 493327 493327 567910 493327 502514 502514 493327 431240 323541 302754 686819 302754 288928 288928 198775 152833 952718 952718 952718 952718 895876 724693 152833 472804 472804 334456 506638 334456 152833 86512 84826 63480 635857 687027 635857 63480 61155 83151 61155 47176 38428 75546 38428 12801 259016 12801 884510 884510 476304 12801 1647 314999 314999 530572 314999 298007 608119 298007 418609 418609 418609 298007 470484 298007 298007 166714 942767 942767 942767 942767 942767 942767 828858 828858 828858 804158 355713 351807 274950 166714 682909 166714 915685 166714 151992 862889 862889 774167 151992 115791 391923 115791 27649 7260 753167 753167 469040 541750 704732 704732 557977 623742 557977 961356 557977 557977 428081 712127 428081 428081 50984 373596 562809 562809 373596 50984 46032 289947 289947 289947 289947 289947 336876 336876 978871 978871 978871 824219 824219 824219 824219 395395 547061 395395 336876 336876 303317 497820 630962 656271 630962 722917 722917 722917 630962 497820 762230 762230 965635 762230 741716 741716 741716 497820 417639 513526 417639 820730 417639 417639 628432 417639 335155 313582 303317 289947 712597 289947 289947 287160 260604 214246 233217 214246 787010 787010 214246 634724 214246 791183 214246 304209 612237 841992 841992 841992 612237 612237 884676 884676 884676 612237 543991 543991 910796 543991 408698 658302 658302 423555 705953 423555 690821 690821 423555 543419 991625 991625 991625 991625 991625 984812 543419 427527 423555 714356 423555 418981 449303 449303 418981 408698 399193 802058 399193 399193 322891 708159 708159 708159 532318 756033 532318 532318 456704 322891 319876 467138 867399 467138 319876 584585 319876 304209 218885 214246 673978 673978 214246 519634 214246 199029 665236 199029 209292 199029 199029 189546 189463 352884 189463 765980 189463 156834 156796 156796 149824 145443 418319 145443 126189 110890 819891 819891 142204 110890 102440 408183 789113 789113 408183 408183 238711 376016 238711 394969 394969 238711 398385 238711 185574 102440 163345 102440 70128 66063 58705 608368 608368 181723 58705 52500 50372 46032 39955 35214 9928 4049 434165 118648 868812 386660 438149 925708 438149 994128 994128 796508 796508 438149 969997 438149 386660 941321 386660 290262 857930 290262 624603 991600 624603 973097 973097 624603 959790 959790 959790 870647 624603 412680 656678 889759 656678 866874 866874 686845 686845 656678 964905 656678 656678 656678 584329 584329 469880 412680 207177 973245 973245 207177 607684 934734 934734 607684 349169 349169 207177 347712 584447 347712 731879 347712 429676 971348 971348 971348 918084 675850 675850 429676 370106 819610 370106 370106 370106 347712 419640 347712 207177 207177 148628 134177 900472 134177 90896 82711 186266 82711 49752 476795 880884 476795 890119 476795 905368 476795 819231 819231 819231 819231 819231 819231 884879 819231 684713 476795 430194 400309 400309 103680 504419 103680 65900 785554 785554 321968 65900 795609 795609 373909 541897 541897 373909 373909 721180 373909 231495 231495 231495 226135 707530 707530 707530 625925 226135 441795 226135 169544 147622 94655 111377 874813 874813 237847 111377 94655 65900 150830 150830 68762 507879 68762 65900 49752 236153 247553 364125 364125 364125 743240 937008 743240 743240 777792 743240 364125 364125 619819 364125 669657 364125 787576 894227 894227 894227 827247 787576 364125 364125 576178 576178 576178 364125 423550 917127 917127 622814 684348 622814 423550 364125 364125 871136 871136 871136 871136 871136 857445 857445 899380 857445 857445 755692 494045 445616 459279 445616 364125 364125 333285 308532 247553 236153 223678 195434 170296 150620 548744 150620 264260 264260 150620 757178 150620 584824 150620 136773 114265 813140 114265 91836 320192 91836 91286 743994 743994 743994 743994 743994 743994 685653 685653 577698 376452 352707 594767 352707 502031 352707 352700 177626 500354 177626 91286 104911 908344 924935 924935 908344 908344 432830 337039 892514 337039 337039 189231 450382 189231 104911 91286 79942 49752 45068 389306 45068 42896 41479 722457 747998 747998 722457 497237 41479 28645 8564 166410 694747 899737 899737 816923 56509 482878 56509 810297 783052 50066 945770 945770 945770 549726 549726 247040 18507 618028 512083 512083 149788 693972 693972 40929 492890 903359 387992 129662 214414 214414 81750 81750 74422 335307 335307 315492 74422 857402 213845 981552 981552 981552 981552 964636 964636 964636 981602 981602 981602 964636 747019 747019 747019 936644 747019 747019 741258 741258 725813 660324 879012 879012 754121 754121 754121 677516 660324 481057 561916 481057 465804 519047 717143 519047 720668 519047 465804 465804 537139 671266 537139 465804 465804 465804 906140 465804 946224 971928 971928 971928 971928 971928 946224 937923 937923 750615 465804 465804 465804 591494 465804 384173 384173 384173 544497 854577 544497 544497 384173 342044 273057 241279 227185 205267 190571 190571 184935 876977 184935 844577 844577 582705 582705 556722 184935 174776 507824 507824 507824 507824 480248 296063 895590 895590 895590 895590 895590 895590 895590 841382 793114 793114 793114 793114 735317 730649 620979 620979 540510 655238 540510 540510 540510 711949 540510 296063 441850 841096 904656 841096 441850 296063 265969 684399 899888 684399 265969 591290 265969 446912 511101 511101 446912 543739 791387 543739 543739 446912 947810 446912 426766 426766 862188 426766 265969 265969 265715 770813 770813 314742 587568 314742 265715 245639 245639 558320 898732 558320 245639 307692 245639 243519 243519 243519 230892 791469 230892 197007 752886 197007 303669 575136 303669 797393 303669 468227 892219 468227 468227 672151 672151 468227 463245 463245 343535 371872 343535 640754 343535 935954 343535 303669 213939 197007 192688 618167 618167 193853 933491 193853 920785 193853 192688 761106 761106 192688 965064 965064 985457 985457 965064 932998 928545 928545 928545 928545 928545 713997 713997 655171 501370 501370 501370 327693 327693 209988 192688 791213 192688 192688 174776 166749 841469 166749 314475 950899 314475 737725 314475 314475 243659 166749 164406 863158 164406 805841 164406 140749 420567 839957 839957 839957 839957 662058 598621 420567 148276 140749 132742 132742 130711 608019 130711 630140 130711 113189 109010 109010 749488 877388 877388 877388 749488 687389 220318 109010 92370 451452 92370 705563 92370 91083 131256 91083 83920 78834 75985 72006 59567 54253 51477 23724 20042 18012 258291 18012 168094 18012 951380 951380 570613 18012 834304 834304 834304 834304 834304 792994 792994 792994 792994 792994 792994 792994 792994 792520 704507 736158 905994 736158 736158 967922 736158 704507 685269 685269 685269 632814 772751 632814 733333 733333 733333 632814 632814 880617 880617 880617 880617 632814 606611 563319 517455 622950 517455 517455 504675 460861 443751 393136 393136 281056 281056 276665 276665 276665 272399 224436 213391 609685 609685 288875 288875 939419 288875 621313 288875 529405 773235 529405 288875 213391 338953 421547 338953 338953 313463 313463 223028 969754 969754 969754 310776 362256 783695 966472 783695 886234 783695 362256 310776 329849 310776 941806 310776 246754 684524 246754 449480 246754 223028 223028 223028 223028 996545 223028 362958 931927 931927 931927 931927 861873 861873 459916 459916 799890 799890 810120 810120 810120 810120 799890 551370 603560 551370 592241 779276 779276 592241 551370 812151 551370 545469 482425 459916 371629 362958 514129 362958 276301 942750 276301 223028 213391 387394 966360 387394 387394 514662 554759 770739 770739 554759 763621 763621 665062 665062 554759 514662 498548 387394 213391 212859 464494 212859 193906 812742 193906 183832 433626 183832 166517 166466 163142 157353 642024 157353 155075 597170 155075 144848 107375 100566 93727 87553 87414 273036 87414 828071 87414 75051 48983 18012 758764 18012 14262 3648 1395 21656 160520 21656 552623 21656 1395 936474 1395 1395 859031 1395 853 341390 853 59178 394029 783328 394029 769856 394029 59178 812263 59178 853 982209 853 807833 807833 524872 524872 551727 524872 524872 344335 679638 344335 404812 729730 953247 729730 729730 729730 883363 729730 611011 798537 611011 404812 346645 344335 585 580453 680491 580453 90463 849026 849026 505040 505040 733602 505040 391122 883639 477573 56553 130343 144535 164042 576497 164042 164042 144535 399333 144535 682633 144535 130343 339859 339859 339859 654900 339859 130343 721377 721377 673796 902370 925602 902370 673796 130343 670311 130343 117125 856757 856757 117125 849825 898827 898827 849825 698845 698845 117125 86196 61015 495575 61015 56553 778527 56553 595387 56553 790550 56553 48471 3057 320894 953028 953028 639395 639395 340636 834116 834116 929807 938441 938441 929807 898307 898307 898307 834116 647315 647315 937397 937397 647315 647315 626577 514491 314378 232840 891483 232840 232840 720450 232840 232840 959127 232840 200022 250409 200022 780855 200022 140100 35382 561732 288705 13696 391407 836517 251162 562083 562083 362821 251162 795391 795391 991870 795391 347820 251162 337896 776706 337896 517339 517339 337896 310903 251162 749305 548146 277500 493859 493859 493859 493859 478654 253263 236380 923710 947324 947324 158609 964955 419950 669787 518189 518189 91523 491645 401151 401151 534347 401151 708168 401151 39307 519466 973710 160350 611727 973620 611727 606102 837153 837153 428193 435212 707253 435212 428193 805376 805376 844556 805376 428193 6060 295870 811529 912142 85871 822421 371585 371585 800093 993098 800093 371585 925189 925189 925189 925189 925189 925189 925189 730812 427552 864123 864123 864123 739378 739378 739378 739378 738749 578451 937095 937095 937095 937095 728051 728051 731991 728051 728051 610111 610111 578451 578451 495198 495198 804433 495198 776551 776551 944336 776551 830408 992559 992559 992559 992559 907070 907070 878999 878999 830408 830408 827450 776551 722023 698801 495198 427552 427552 505848 427552 386750 639583 386750 982965 386750 371585 818200 818200 531582 371585 762473 371585 734337 734337 564213 371585 648304 371585 465472 897381 465472 371585 349857 553512 553512 553512 349857 342582 284810 258975 785134 959783 785134 258975 251192 238692 753545 753545 395010 395010 238692 237076 515224 915596 915596 915596 915596 912073 797802 797802 797802 515224 312601 585881 585881 585881 528025 312601 846599 312601 363011 312601 237076 237051 165600 466785 165600 165600 161738 152761 152418 286625 152418 139092 114500 562612 114500 72038 72038 731875 72038 118135 683565 809254 809254 809254 809254 809254 809254 809254 683565 683565 616947 616947 519054 519054 641258 519054 519054 519054 955667 955667 955667 899858 899858 899858 899858 519054 592703 592703 577683 919737 919737 577683 961443 961443 577683 519054 511887 540478 540478 540478 511887 511887 511887 499717 499717 499717 478464 716734 478464 615823 615823 773210 773210 773210 856169 979137 979137 856169 856169 773210 615823 610589 610589 610589 534736 509075 714481 714481 765438 714481 912488 714481 714481 509075 496096 496096 496096 496096 478464 478464 471172 857213 857213 857213 663557 690876 663557 471172 471172 883560 883560 883560 883560 686146 616761 471172 467547 553555 467547 447435 383214 407228 383214 383214 625162 625162 383214 440486 769604 440486 880168 440486 440486 440486 409985 383214 381817 373117 667959 373117 367375 360037 358326 350670 456846 350670 332375 332256 302132 929960 302132 302132 292941 292941 865978 865978 292941 292941 288892 708121 708121 518596 518596 288892 593312 288892 288211 681488 681488 427662 288211 742319 288211 282668 449472 282668 493846 282668 266919 250860 227252 517716 227252 196179 189840 711545 189840 174503 180107 430243 180107 598858 180107 174503 467666 637007 467666 467666 467666 729774 729774 729774 729774 745216 729774 729774 729774 600712 522386 467666 807050 467666 427984 396547 381929 351961 665378 351961 255094 174503 790517 790517 535175 535175 535175 196700 174503 167770 159887 143233 900485 900485 900485 900485 900485 900485 823870 421139 365243 283358 257030 143233 133254 337350 337350 617644 337350 133254 138628 241535 717327 241535 138628 723149 138628 996207 138628 537929 537929 537929 138628 134427 532735 134427 158020 507199 507199 616346 507199 926079 926079 926079 789962 956989 789962 789962 555576 555576 558572 558572 555576 516043 623373 623373 516043 980444 516043 516043 791514 842565 791514 791514 802888 791514 791514 791514 791514 676114 516043 822081 516043 516043 507199 481345 471267 372564 285818 280900 194678 535310 535310 870818 870818 871451 870818 535310 952348 952348 952348 952348 865900 895213 972769 972769 895213 895213 865900 814899 814899 814899 808816 808816 767925 535310 809276 940683 809276 535310 514118 514118 484492 426570 460581 426570 361745 636520 361745 352546 268926 194678 171192 158020 769806 158020 134427 685809 830095 685809 953847 953847 685809 685809 513794 693830 693830 977774 977774 693830 693830 513794 417347 197702 145661 778116 145661 134427 302314 134427 133254 849419 849419 849419 312043 626750 766886 766886 766886 791277 766886 766886 626750 528272 312043 781908 312043 312043 312043 312043 173571 170347 133254 413252 133254 125370 124665 124665 130538 124665 118135 114428 105855 100943 859156 859156 859156 657525 478800 100943 100943 438744 100943 95158 94597 94597 952803 94597 91324 86008 402956 86008 73753 72038 275067 72038 761906 761906 519454 521258 521258 519454 252380 523220 252380 335055 698181 698181 698181 698181 641628 613446 835663 613446 541721 541721 541721 966658 541721 872789 541721 663432 663432 541721 541721 459688 335055 335055 285064 276011 276011 276011 252380 223090 200545 162261 637142 637142 414200 162261 976084 976084 912350 912350 162261 870244 162261 196855 162261 110235 72038 537844 72038 70073 65172 57281 276585 57281 490886 490886 490886 232336 977134 977134 817823 817823 817823 817823 377568 377568 272030 976059 272030 316895 561607 561607 316895 272030 233598 232336 711407 232336 974003 974003 974003 974003 974003 974003 974003 827427 827427 709705 709705 709705 929246 709705 709705 838790 709705 911355 959584 959584 911355 911355 911355 709705 709705 675941 675941 539553 432741 356674 232336 232336 858872 858872 481510 481510 264017 232336 673919 232336 232336 232336 686279 232336 887140 232336 232184 470803 232184 602485 232184 215057 197181 197181 197181 197181 575551 197181 869546 197181 333332 197181 189068 375870 189068 523803 523803 848898 985138 848898 848898 523803 813211 813211 813211 813211 572146 523803 259755 191352 189068 665638 189068 188132 182129 172904 291884 172904 156023 671298 156023 152744 152744 572608 152744 126632 112044 108258 253797 882012 253797 108258 821774 821774 108258 739270 108258 825532 108258 85671 79749 609505 609505 714594 609505 942557 942557 647762 609505 276508 79749 76804 72936 741620 825705 825705 741620 806034 806034 988680 988680 806034 741620 506827 355533 837240 355533 690061 944452 690061 865034 865034 690061 355533 338203 854532 854532 854532 523140 523140 338203 338203 490824 683635 683635 993984 993984 993984 993984 683635 586613 699237 586613 490824 572411 572411 572411 572411 572411 490824 338203 916464 916464 593929 734650 593929 998197 998197 593929 785473 593929 581623 828629 581623 581623 338203 333169 325934 486514 325934 299297 702693 702693 299297 677385 677385 299297 887091 887091 299297 274865 261554 261554 250184 241656 241656 545460 570738 570738 570738 545460 540798 810379 540798 540798 379003 786585 379003 241656 360943 241656 236670 209397 889435 209397 632228 632228 632228 376583 376583 376583 209397 202948 191649 996787 191649 190107 190107 164835 790987 164835 164835 510968 164835 164835 225019 164835 788200 164835 224134 164835 150432 327325 327325 327325 596495 327325 263792 222643 150432 113083 836029 113083 104277 104277 94894 92518 892977 892977 952943 892977 934063 892977 892977 796921 796921 796921 470833 452557 903326 903326 902395 452557 439025 786979 439025 876914 439025 92518 91650 800156 91650 72936 72216 69796 254104 69796 66122 64932 62472 408729 459957 408729 62472 618385 618385 972669 972669 972669 972669 618385 985749 985749 770828 618385 348133 219942 943682 219942 205495 62472 440364 883445 440364 62472 57281 924561 924561 924561 924561 870846 870846 870846 870846 870846 870846 833569 833569 833569 696010 621218 617500 617500 934497 617500 772797 617500 816030 816030 816030 877462 877462 877462 877462 816030 617500 617303 499600 499600 453474 326935 314537 305024 236397 699949 236397 236397 226405 225713 71049 894180 71049 445151 506778 445151 71049 57281 55871 193738 55871 54492 693950 717200 717200 693950 693950 693950 637074 481258 986139 986139 964291 481258 231749 54492 53597 557495 53597 51543 51318 871502 871502 871502 641328 515922 515922 76939 51318 862004 51318 426889 596531 426889 890653 426889 51318 635400 51318 50207 404660 674842 674842 675937 674842 903523 674842 871951 674842 448826 448826 404660 404660 404660 487373 487373 404660 426932 404660 972603 972603 404660 918838 404660 234294 216874 174308 167275 59728 50207 47897 238112 238112 165479 47897 47503 183791 47503 46982 45913 43357 42284 830785 830785 812904 812904 812904 812904 429989 429989 920917 429989 316141 316141 471115 316141 287882 317660 364165 420406 364165 364165 317660 287882 539157 287882 833599 833599 287882 197014 588415 197014 84930 42284 39568 39568 822811 39568 39271 538755 39271 39271 617583 617583 509287 39271 177025 39271 289674 39271 173785 673669 673669 551569 173785 173785 39271 152562 152562 39271 117043 341870 527516 527516 527516 519304 519304 960598 519304 891478 891478 891478 891478 721877 874993 874993 874993 721877 519304 519304 519304 519304 485925 466152 432760 531192 432760 432760 430283 341870 741136 341870 338551 250214 718492 947806 718492 250214 249003 249003 231921 166559 142558 130987 117043 39271 456578 39271 38805 36512 623071 623071 983855 623071 175227 469063 469063 469063 194096 175227 175227 175227 119568 46612 36512 855589 855589 855589 855589 778006 778006 767457 911707 911707 911707 911707 911707 862381 767457 717064 139318 122274 117038 714301 714301 276525 817806 915626 915626 915626 974069 974069 915626 817806 817806 817806 817806 817806 673673 462493 453482 905448 453482 435238 276525 242704 117038 116356 412576 116356 80795 79459 388338 79459 36512 849474 36512 36512 622594 36512 549712 36512 656657 36512 35555 32686 606022 32686 844386 32686 31535 30836 565180 565180 613907 565180 565180 481157 215279 215279 132477 30836 601064 702127 702127 702127 601064 406777 281399 281399 529162 529162 529162 529162 472129 442140 281399 106535 76751 537459 537459 745772 537459 471028 76751 256651 76751 30836 29180 24861 135052 529181 135052 24861 24804 23942 23322 809528 809528 809528 809528 557994 873892 557994 465220 465220 280063 85783 869031 869031 518374 518374 551516 551516 551516 784368 551516 769949 769949 769949 551516 518374 955290 518374 405776 231258 580785 747746 879926 879926 879926 747746 580785 386147 386147 294692 498230 936911 936911 936911 498230 701484 701484 701484 575214 575214 498230 780225 498230 490378 372397 736228 736228 736228 372397 299688 294692 576993 294692 293184 769721 973054 769721 293184 592662 293184 231258 216797 219977 216797 197420 894017 894017 646151 197420 197420 197420 369211 197420 197420 154607 154607 787447 154607 326952 154607 139551 138245 148560 138245 127461 104760 85783 956343 956343 783820 783820 89126 85783 84951 198394 84951 857935 857935 511578 511578 101320 84951 55379 23322 21006 19871 102575 19871 19409 857045 857045 505986 570054 570054 570054 505986 663646 879607 663646 663646 505986 505986 989021 505986 380555 494199 494199 380555 380555 486041 380555 909619 380555 657110 657110 910606 910606 910606 910606 847012 777781 777781 914127 777781 777781 848610 848610 848610 777781 761360 657110 657110 612353 682451 612353 744489 612353 612353 700903 612353 565348 745830 565348 519437 519437 489010 380555 304590 951304 951304 951304 951304 951304 786718 786718 786718 753164 753164 626712 673243 673243 626712 626712 626712 626712 585557 704710 704710 704710 585557 782827 782827 782827 782827 782827 791590 870009 870009 870009 818903 934469 818903 791590 785439 782827 585557 585557 581699 555634 874962 555634 555634 543169 455618 748121 455618 933055 455618 963054 455618 389877 376727 376727 324528 324528 304590 293967 293802 284609 272367 798344 798344 272367 562146 272367 575076 272367 268607 256261 234241 231394 231394 226031 701132 701132 701132 778804 778804 778804 778804 701132 564984 411353 358209 322309 310637 226031 181346 931655 931655 931655 931655 931655 762457 762457 488180 452011 181346 176093 165560 224303 600067 224303 290965 724530 724530 724530 724530 707090 619984 290965 224303 459368 459368 459368 288765 224303 166889 525439 867418 867418 525439 608095 525439 549377 549377 525439 300965 166889 257443 166889 166889 556432 166889 166889 165560 165511 163675 156892 146439 144052 439677 439677 529001 439677 836537 439677 319574 144052 132069 121864 113134 89203 461964 89203 429578 620168 620168 961987 961987 961987 961987 927148 927148 620168 548001 429578 305015 133525 89203 83526 79482 256847 79482 702584 79482 55801 41869 85349 41869 28863 731417 28863 946946 946946 232639 28863 637002 637002 626805 626805 272202 372224 272202 28863 25181 19409 472137 19409 18969 222361 477752 963302 963302 963302 983204 983204 983204 983204 983204 963302 957086 957086 957086 957086 920633 918389 918389 823050 823050 823050 809248 585261 585261 521935 477752 262642 256685 445608 256685 547347 256685 222361 222361 621411 222361 662107 222361 196455 868330 196455 625533 196455 202857 196455 128592 85408 853215 85408 648220 85408 44604 33135 18969 15371 767629 15371 14937 13669 11594 19642 11594 811181 11594 9981 8973 873276 893363 893363 873276 977515 873276 873276 873276 717028 567884 567884 313884 310666 8973 8022 192155 991339 991339 991339 436565 485961 436565 678841 840247 678841 436565 210441 533805 210441 192155 8022 988616 988616 988616 988616 988616 988616 988616 988616 936532 936532 936532 936532 808973 808973 808973 808973 808973 808973 808973 716103 716103 716103 716103 716067 716067 716067 698185 696279 669930 622459 930116 622459 622459 611445 625597 611445 611445 595582 551492 533182 533182 866509 533182 531853 933722 933722 531853 865713 531853 457418 396576 396576 396576 939870 939870 835375 835375 835375 396576 598404 396576 348212 348212 341422 341422 309902 775535 775535 309902 813023 813023 714786 896420 896420 896420 896420 843406 740503 824795 824795 740503 835860 856027 980492 856027 835860 835860 740503 740503 714786 683828 683828 709908 683828 461248 461248 461248 320033 309902 242065 242065 241724 213530 209357 191447 989635 191447 679650 191447 187573 187478 185083 169411 157266 737458 737458 217528 157266 260339 875925 875925 692028 896308 896308 896308 896308 896308 864600 864600 737248 737248 848919 737248 692028 631332 615584 970160 970160 615584 260339 645603 260339 848887 260339 194225 194225 739596 194225 157266 682837 157266 307982 157266 157266 123578 353736 123578 123744 123578 264717 298934 444261 501186 444261 298934 264717 956624 264717 877661 264717 123578 86960 79469 808412 79469 77928 682788 739203 739203 739203 682788 682788 608915 608915 608915 531865 531865 539591 531865 531865 414834 340704 223439 223439 135556 135556 130271 128463 609408 128463 128463 515075 128463 116183 116183 116183 116183 99241 95237 734269 734269 381762 95237 658359 95237 77928 72499 61991 971151 61991 55644 46580 454337 46580 36432 35939 20970 18780 914300 914300 23025 45132 23025 592305 592305 539227 785528 785528 575739 575739 539227 511868 511868 64534 211345 920900 920900 211345 143146 64534 680607 64534 23025 655981 23025 636352 23025 18780 932331 18780 18166 721659 721659 721659 599046 459836 459836 223128 18166 423089 18166 16561 10533 8022 7910 6936 192478 6936 92016 883503 92016 620159 92016 150453 248417 623488 248417 150453 558471 150453 598786 150453 270658 812670 270658 150453 931537 931537 931537 668410 928505 668410 150453 485465 150453 92016 609706 92016 73579 6936 1601 180 239048 239048 885764 929130 929130 929130 929130 929130 929130 929130 885764 837856 837856 837856 837856 837856 788499 788499 763225 482478 430813 430813 430813 832280 430813 430813 430813 430813 390375 976709 390375 441954 826019 826019 826019 441954 441954 407675 525024 407675 390375 385416 381923 271391 239048 235249 353556 235249 225535 963630 963630 963630 467805 318777 225535 746175 944213 944213 944213 944213 944213 944213 944213 944213 746175 746175 746175 691977 611616 611616 611419 561537 441344 441344 980558 441344 470183 493270 470183 441344 441344 395217 321699 394747 621546 394747 926544 926544 926544 926544 926544 886996 921435 886996 942784 886996 953347 886996 394747 389069 541171 389069 365973 321699 320531 320531 286474 709834 286474 264946 692885 264946 893500 264946 240805 225535 584011 225535 774148 774148 571653 225535 213441 972301 213441 149034 149034 139549 131984 122867 281334 457274 281334 650314 696963 963099 696963 650314 650314 650314 650314 669019 650314 615847 615847 615847 615847 615847 615847 615847 558238 736304 736304 558238 558238 537156 327132 281334 277241 307041 277241 273904 237538 396761 396761 348805 237538 145568 145568 487392 145568 881855 881855 881855 881855 504709 669725 504709 276491 276491 614026 803794 908486 923580 908486 908486 803794 803794 614026 614026 614026 805625 614026 615118 615118 615118 614026 744703 744703 744703 744703 614026 548151 533229 533229 518757 518757 465298 465298 457916 457916 389386 389386 375626 519935 519935 986486 519935 519935 511485 375626 276491 255471 430946 255471 255471 522515 255471 214722 311462 705000 865281 705000 311462 214722 213471 190217 170711 490511 170711 554247 691117 691117 836427 691117 554247 483668 170711 464365 971325 464365 464365 170711 152291 968206 152291 145568 451767 451767 505364 451767 625768 625768 625768 451767 559038 736950 736950 560406 560406 559038 451767 316885 145568 145482 230729 341564 341564 341564 230729 206490 145482 137173 564391 137173 676239 137173 924704 137173 797883 137173 137173 133064 131730 391853 131730 124730 139123 124730 122867 118029 994883 118029 418579 858927 418579 525653 525653 471007 490964 490964 957022 957022 502691 490964 735334 490964 490964 471030 471030 471007 773346 860998 860998 860998 836059 836059 836059 773346 471007 458223 456762 797154 797154 563393 563393 704564 563393 563393 563393 536940 456762 793189 456762 456762 447302 418579 940355 418579 271330 258963 828532 841445 828532 258963 705303 258963 227111 118029 954480 118029 892854 118029 670034 670034 670034 607382 607382 254004 526367 254004 118029 115109 359869 658584 359869 359869 120235 717291 120235 247601 434090 434090 247601 718371 247601 363083 363083 363083 247601 196829 178001 582169 178001 134954 120235 548509 619109 548509 120235 115109 205908 115109 583605 115109 110701 211877 211877 408609 785048 876096 785048 978153 785048 408609 928353 408609 211877 981051 981051 548050 211877 113001 598648 113001 110701 336562 873943 873943 873943 873943 774770 344741 336562 269941 269941 140493 140493 140493 852275 852275 678264 891231 678264 678264 678264 590247 513157 529911 529911 513157 219107 140493 110701 101802 96024 86103 79057 69203 127548 924732 127548 69203 66126 59864 55686 880471 880471 964490 964490 964490 964490 964490 964490 880471 880471 880471 880471 859918 859918 859918 943082 859918 859918 662987 796595 796595 796595 796595 662987 538912 538912 551820 551820 538912 519431 974712 519431 656200 656200 656200 656200 656200 656200 643511 540392 540392 990204 990204 540392 977120 977120 540392 645514 700512 823599 700512 700512 645514 645514 652124 876876 652124 645514 672509 672509 672509 645514 540392 537669 823448 847704 869770 847704 847704 823448 779509 905302 779509 537669 519431 471835 415215 885865 415215 401359 341034 341034 341034 341034 339080 338585 326906 308098 304668 295632 276856 276856 266983 226118 691778 226118 925132 226118 226118 356043 226118 192885 973408 192885 142050 727951 727951 142050 132532 124709 121586 240621 240621 176749 121586 887712 121586 97043 93769 164922 525846 164922 93769 77882 126394 126394 77882 453838 453838 77882 64727 257091 64727 57450 55686 231703 55686 369564 55686 882857 882857 882857 879404 879404 879404 879404 879404 879404 879404 604015 604015 604411 604411 604411 771787 771787 771787 771787 874894 771787 728347 739908 728347 604411 604015 604015 902547 604015 443817 443817 436427 430040 418575 440520 440520 741002 440520 418575 399318 369727 360826 416805 360826 356065 237870 394785 635268 394785 237870 226524 192771 223769 223769 196709 372204 196709 192771 192771 191547 158827 663059 158827 55877 395994 55877 875605 892266 892266 994780 994780 892266 875605 698071 663525 942566 663525 55877 55686 47681 578775 578775 578775 578775 562494 678954 562494 442980 196506 47681 43889 43857 42826 41566 41566 350541 41566 532115 532115 41566 40925 873717 40925 940440 940440 940440 940440 510786 269822 41198 630987 41198 486039 41198 253845 951977 253845 253845 476183 476183 476183 253845 333450 253845 654626 253845 352575 352575 253845 238832 774629 238832 500807 500807 930582 500807 238832 858330 238832 778486 778486 778486 769697 769697 769697 438068 416559 982142 982142 784120 416559 296671 296671 238832 498658 238832 830939 830939 238832 867454 948918 867454 867454 867454 867454 867454 867454 258827 322663 802344 322663 825403 825403 825403 614085 343130 343130 322663 258827 715220 258827 258827 258827 266267 266267 364307 419051 713577 419051 364307 364307 364307 364307 364307 266267 266267 266267 659433 884597 659433 266267 258827 805484 805484 805484 805484 642744 597693 618095 618095 597693 588909 413483 258827 328718 258827 258827 239162 758165 758165 758165 379094 284992 239162 326023 239162 454922 561429 561429 454922 284554 239162 314005 314005 376683 624902 624902 974568 624902 573251 573251 573251 792920 792920 982557 792920 911711 911711 792920 573251 573251 761046 761046 682591 682591 934044 934044 682591 648347 573251 561818 561818 561818 561818 561818 777686 561818 844352 561818 555507 977289 555507 615084 615084 555507 554260 468430 405570 393540 405651 393540 391198 915130 915130 691166 391198 376683 350272 314005 485607 314005 607655 314005 307492 307492 645048 645048 479605 643657 479605 785251 479605 479605 307492 737471 307492 292140 308577 979010 308577 904663 904663 904663 904663 667563 609834 308577 292140 719906 719906 719906 485599 300506 292140 296064 292140 261660 239162 238832 733660 238832 392335 238832 238832 235224 214947 212959 198377 198121 197433 185483 172038 404614 816127 404614 172038 148082 214460 940472 940472 940472 940472 741350 825718 741350 421177 810741 421177 421177 421177 567698 421177 990960 421177 270752 217363 367722 367722 750325 367722 217363 214460 148082 145672 +5000 999797 999502 999371 999169 999143 999010 998986 998914 998790 998595 998588 998413 998214 998044 997762 997666 997436 997258 996950 996646 996619 996544 996330 996071 995137 994891 994880 994270 994238 993673 993330 993204 992997 992990 992849 992441 992331 992121 992031 991638 991455 991081 990990 989808 989713 989403 989315 989097 988947 988583 988546 988367 988263 988149 988000 987916 987786 987763 987078 987046 986005 985974 985828 985827 985776 985339 985240 984891 984752 984723 984452 984269 984230 984191 984037 983866 983431 983079 983041 982877 982513 982325 982064 982026 982021 981730 981238 980529 980471 980152 980116 980048 979516 979319 979203 978888 978772 978267 978158 977636 977426 977067 977033 976854 976663 976259 976172 976133 975968 975215 974605 974235 974227 974190 973684 973571 973142 972727 972608 972112 971923 971480 971465 971064 970722 970548 970329 970174 970145 969748 969725 969632 969517 969479 969226 969081 968985 968956 968860 968809 968718 968666 967811 967652 967104 966859 966704 966602 966348 965882 965766 965138 964687 964578 964405 964355 964204 964135 964128 963977 963595 963427 963344 963296 962516 962286 962203 961832 961530 961397 961310 961049 960695 960486 960367 959590 959582 959470 959387 959210 959029 958944 958894 958459 958431 957991 957850 957650 957481 957328 957212 957138 957001 956744 956582 956277 956073 955746 955647 955486 954971 954669 954331 954192 954077 954070 953857 953755 953529 953480 953358 953318 953145 952716 952668 952610 952237 952111 952018 951508 951463 951136 950659 950561 950252 949965 949927 949845 949031 949002 948997 948860 948840 948729 948512 948397 948346 948106 947464 947326 947291 947003 946514 946454 946011 945886 945612 945347 945206 945186 945104 945082 945011 944999 944857 944750 944502 944217 944107 944038 943807 943661 943440 943295 943010 942880 942479 942257 942095 941996 941966 941856 941814 941676 941174 940997 940326 939570 939487 939253 939195 938997 938912 938468 938004 937814 937582 936892 936688 936641 936587 936531 936353 936122 936027 935956 935545 935517 935461 935426 935230 934961 934591 934415 934124 934093 933991 933939 933806 933793 933416 933324 932948 932875 932836 932505 932273 931572 931444 931170 930396 930322 930149 930147 929951 929626 929601 929484 929178 929104 928231 927448 927371 927002 926214 926150 926001 925987 925953 925378 925222 925047 924645 924311 924291 924146 924030 923854 921947 921846 921716 921342 921144 920926 920553 920433 920403 920374 920346 920337 920263 920084 919772 919682 919511 919352 919167 918374 918284 918034 917984 917653 917475 917185 917018 916576 916261 916033 915954 915900 915751 915471 915395 914721 914678 914005 913995 913986 913947 913894 913842 913654 913501 912729 912696 912204 912114 912000 911795 911382 911301 911128 911040 910891 910841 910838 910535 910506 910025 910022 909927 909731 909143 909114 908776 908607 908327 908129 907853 907447 907418 907072 906984 906736 906626 906606 906550 906542 906345 906064 905601 905564 905373 905183 905021 904805 904489 904308 903788 903691 903088 902729 902508 902492 902489 902460 902345 902075 902017 901467 901250 900807 900801 900385 900288 900163 899784 899646 899588 899515 899267 898773 898466 898147 898074 897955 897871 897868 897555 897538 897161 897098 897034 896900 896888 896750 896465 896226 896166 895803 895732 895693 895674 895224 895180 894834 894053 893840 893723 893405 893176 892289 892281 892249 891623 891527 891076 890998 890827 890040 889511 889382 889323 889316 889236 889018 888570 888417 888263 888089 887751 887528 887457 887365 887045 886751 886397 886315 886252 886105 886042 885956 885753 885683 885581 885264 884244 884157 884046 883403 883345 882830 882703 882691 882566 882359 882285 881751 881610 881449 881311 881173 881137 881130 880858 880711 880346 880075 879804 879766 879638 879629 879484 879390 879327 879065 878809 878734 878295 878264 878009 877997 877818 877803 877746 877375 877243 877215 876875 876595 876431 876340 876328 875922 875200 875106 875011 875005 874932 874909 874853 874455 874442 874349 874326 874095 873917 873802 872847 872645 872603 872590 871864 871705 871601 871584 871455 871357 870998 870719 870573 870523 870347 870273 870052 869901 869762 869542 869459 869457 869074 868689 868558 868440 868172 868103 868002 867798 867750 867335 867051 866909 866716 866529 866297 866059 866029 865962 864615 864355 864309 864189 864152 863999 863874 863137 863063 862540 862520 862230 862178 862134 861879 861801 861753 861629 861453 860497 860461 860191 860000 859891 859844 859769 858737 858336 858122 857013 856837 856282 856140 856110 855818 855657 855506 855454 855452 855169 855070 855008 854972 854606 854299 854155 853907 853653 853545 853377 852602 852531 852414 852318 852204 851642 851591 851590 851532 851508 851341 851294 851211 851120 850689 850174 850060 849776 849699 849355 849063 848280 847709 847381 847302 847207 846545 846329 846287 845873 845600 845355 845349 845198 845194 845112 845072 844949 844711 844456 844425 844324 844221 844173 842459 842351 842052 841858 841523 841521 841447 841325 841244 841202 841061 840916 840849 840761 840745 840738 840611 840554 840423 840252 840219 840048 840020 839829 839821 839726 839597 839166 839088 839087 839027 838659 838218 838015 837790 837358 837239 837182 836058 835674 835576 835541 834977 834969 834882 834816 834729 834284 834155 834144 834063 833536 833488 833149 832641 832624 832613 832573 832467 832338 832332 832192 832143 832120 832080 831993 831690 831583 831012 830867 830844 830572 830540 830362 830201 830159 830085 830068 830031 829145 829074 828982 828523 828503 828350 827909 827068 826870 826644 826589 826227 826182 826017 824681 824492 824473 824304 824226 823871 823717 823100 823038 822820 822370 821836 821804 821795 821515 821356 821292 821216 821076 821058 821022 820766 820548 820449 820418 820184 820097 819963 819752 819751 819607 819563 819528 819142 818763 818263 818108 817852 817172 817151 816621 816588 816326 816149 815845 815778 815647 815463 815347 814888 814715 814616 814611 814377 814326 814323 814227 814152 814064 813895 813836 813662 813488 813438 813132 813101 812988 812892 812878 812858 812619 812544 812307 812162 812128 812018 811834 811761 811438 811140 811111 810978 810848 810669 810639 810283 809482 808617 808374 808235 808153 808059 807631 807586 807537 807399 807366 807325 807138 806948 806902 806716 806637 806470 806194 805599 805480 805400 805086 805062 804985 804932 804535 804381 804209 803856 803796 803695 803592 803099 802970 802960 802801 802779 802714 802381 802351 802171 802128 802091 802075 801056 801027 800934 800708 800602 800583 800446 800381 800075 800051 799937 799912 799790 799663 799600 799242 798836 798815 798678 798458 798451 798295 798025 797965 797763 797639 797560 797538 797209 797153 796571 795643 795208 795153 795036 794966 794692 794647 794594 793404 792785 792634 792569 792518 792442 792174 792099 792076 791944 791897 791759 791382 791273 791161 790765 790310 790191 790185 790046 789910 789875 789758 789650 789611 789368 789286 788719 788561 787507 787474 787136 787128 786782 786450 786150 786054 786010 785570 785522 785512 785082 785007 784543 784054 783893 783557 783502 782863 782655 782612 782477 782075 782052 782037 781987 781949 781944 781875 781829 781703 781672 781616 781568 781533 781509 781263 780192 779037 779007 778884 778341 778301 778195 778175 778078 777788 777614 776376 776162 775900 775013 774910 774890 774776 774637 774341 774048 773958 773871 773554 773083 773071 772882 772553 772540 772298 772073 771870 771490 771191 771003 770958 770809 770780 770503 770084 770078 770072 769939 769891 769833 769630 769566 769262 769155 768908 768853 768712 768566 768564 768097 767951 767635 767526 767479 767262 767154 767096 767009 766662 766509 766444 766392 765982 765783 765768 765543 765494 765100 764847 764591 764530 764500 764399 764312 764123 763820 763373 762883 762567 762520 762419 762355 762101 762022 762005 761813 761693 761541 761397 761227 761200 761122 760617 760606 760528 760216 760121 760049 760035 759953 759544 759426 759286 758998 758542 758396 758381 757952 757917 757779 757614 757604 757463 757421 757166 756923 756785 756707 756553 756545 755874 755845 755758 755509 755317 755313 755107 755082 755047 754994 754457 754453 754313 754173 754052 753133 752875 752742 752413 751943 751906 751233 751059 751002 750876 750845 750688 750492 750403 750161 749952 749424 749256 749192 749107 749063 749022 748984 748644 748473 748455 748350 748304 748086 747347 747304 747174 747155 747086 747014 746749 746588 745794 745564 745419 745027 744941 744866 744810 744291 744100 743657 743598 743425 743409 743221 743102 742959 742553 742290 742248 742113 741987 741919 741879 741790 741765 741647 741509 741205 740997 740793 740504 740495 740440 740330 740081 740027 739972 739501 739477 738977 738938 738865 738843 738805 737915 737666 737469 736506 736357 735845 735479 735035 734866 734836 733983 733486 733418 733248 733210 732835 732513 732426 732405 732262 732081 731817 731751 731734 731635 731504 731385 731131 730957 730511 730316 730185 730035 729993 729764 729710 729525 729460 729449 729382 729358 728827 727843 727408 727381 727094 727048 726607 726546 726455 726256 726136 725559 725557 725418 725197 725122 724858 724461 724401 724338 724132 724107 724031 723955 723891 723790 723237 723150 722668 722349 722254 722052 721876 721832 721606 721543 721294 721151 720527 720508 720279 719531 719522 719289 719121 719006 718940 718862 718397 718213 718187 718075 717845 717636 716914 716252 716241 716127 715810 715410 715380 715030 714598 714495 714358 714309 714128 714026 713633 713579 713173 712652 711719 711127 711121 710982 710849 710074 710053 710035 709919 709909 709624 709607 709368 709343 709259 709039 708910 708492 708067 707927 707899 706979 706680 706678 706191 706091 706006 705674 705575 705515 705435 705198 704797 704760 704701 704677 704242 704241 704114 704043 704032 703910 703707 703396 703233 703078 702555 701799 701570 701368 701296 700968 700802 700442 700280 700149 699875 699860 699805 699279 699222 698873 698558 698388 698358 698047 697665 697386 696940 696818 696726 696466 696399 696365 696293 695807 695570 694143 694067 693714 693712 693418 692851 692775 692323 692116 692050 691452 691411 691362 691354 691169 691029 690818 690406 690286 690085 690065 690019 689938 689890 689825 689768 689716 689478 689219 689174 688468 688441 688274 687940 687689 687598 687560 687525 687395 686999 686974 686490 686229 686058 686034 685795 685307 685090 685003 684795 684626 684584 684290 684207 683944 683761 683432 683069 682243 682054 681595 680913 680745 680694 680681 680619 680606 680091 679859 678834 678815 678574 678560 678318 678088 678061 677968 677694 677655 677559 677520 677515 677342 677033 676978 676888 676877 676691 676600 676339 676216 676182 676041 676007 675630 675528 675317 675304 675022 675009 674998 674964 674891 673866 673013 673012 672968 672948 672754 672748 672484 672412 672134 672035 672016 671894 671733 671301 671217 671140 671083 670954 670518 670191 670149 670135 669999 669995 669845 669703 669641 669227 669081 668978 668762 668742 668712 668684 668634 668339 667853 667788 667757 667598 667325 666791 666364 666284 665910 665841 665551 665543 665439 665341 665243 665205 664698 664482 664456 664392 663774 663567 663537 663235 662949 662846 662749 662527 662388 661908 661818 661703 661580 661554 661531 661404 661020 660962 660803 660783 660106 660071 659934 659933 659883 659760 659671 658811 658600 658555 658338 658273 658100 658013 657757 657239 657092 656959 656884 656859 656849 656814 656793 656583 656561 656481 656438 656305 656205 656102 656046 655998 655662 655557 655463 655032 654964 654896 654292 653728 653459 653185 652232 651667 651426 651339 651320 651204 651062 650356 650246 650227 650208 650070 649275 649025 648818 648797 648678 648516 648355 648073 647994 647892 647579 647572 647332 647228 647118 646999 646933 646601 646399 646155 646016 645860 645752 645659 645636 645599 645456 645273 644961 644600 644397 644020 643979 643948 643910 643656 643532 643018 642759 642343 642159 642152 641885 641778 641742 640844 640709 640680 640589 640511 640265 640236 640234 640181 638962 638753 638708 638666 638568 638351 638209 637740 637661 637189 636961 636794 636444 636410 636324 636137 635534 635070 634653 634579 634543 634142 634095 633498 633018 632873 632832 632756 632687 632673 632380 632118 631949 631391 630855 630758 630693 630472 630362 630266 630262 630001 629351 629245 629028 628526 627775 627309 626895 626886 626757 626515 626499 626464 626428 626372 625677 625676 625417 625394 625358 625152 624835 624591 624579 624431 624416 624402 624263 624176 624119 624059 624050 623899 623889 623767 623117 623001 622755 622682 622294 622223 621971 621846 621730 621277 621045 620995 620681 620634 620351 620079 620028 619797 619677 619645 619626 619595 619332 618714 618636 618571 618529 618290 618252 618211 618201 618194 617828 617718 617616 617273 617237 616847 615671 615398 615178 615004 614661 614404 613962 613948 613947 613774 613505 613273 613266 613237 613206 613198 613090 612721 612619 612605 612575 612046 612034 611874 611706 611582 611570 611148 610481 610398 609980 609864 609342 608907 608843 608832 608771 608693 608574 608529 608400 608379 608168 608131 607906 607899 606917 606831 606818 606616 606587 606509 606255 606151 605857 605733 605443 605368 605155 605045 604794 604575 604533 604440 604275 603901 603873 603520 603409 603246 603092 603072 602961 602915 602532 602448 602028 601842 601715 601517 601512 601291 601233 600890 600772 600331 600193 600172 600013 599933 599888 599671 599621 599605 599342 599229 598975 598916 598757 598512 598466 598423 597836 597737 597236 597112 597024 597003 596917 596801 596330 596320 596098 596009 595931 595612 595552 594972 594489 594213 593988 593958 593892 593578 592788 592618 592617 592105 591840 591747 591718 591443 591083 591054 590868 590781 590723 590561 590515 590168 590015 589832 589807 589803 589680 589317 589115 589082 588891 588884 588157 587309 587075 586671 586034 585741 585462 585441 585193 584871 584788 584668 584505 584297 584295 583990 583920 583866 583809 583561 583560 583363 583104 582725 582569 582206 581531 581394 581381 581337 581275 580987 580553 580440 580365 580197 579887 579836 579541 579168 579046 578730 578704 578625 578466 577689 577624 577509 577420 577305 577079 576873 576561 576277 576264 575933 575875 575707 575508 575395 575130 574885 574779 574674 574663 574556 574537 574362 574260 574065 573887 573592 572536 572449 572383 572258 572159 571985 571815 571753 571301 571288 571223 571069 570873 570407 570390 570174 569872 569409 569124 568887 568486 568345 568301 568132 567854 567635 567531 567337 567271 567030 566897 566893 566301 566256 566179 565886 565766 565100 565045 564850 564607 564363 563435 563337 562965 562942 562639 562458 562403 562362 562124 562000 561936 561834 561781 561764 561702 561660 561549 561201 560882 560733 560698 560274 560232 559157 559014 559005 558346 558278 558110 558099 558059 557943 557301 557212 557199 557149 556876 556313 556280 556064 555807 555768 555745 555701 555498 555385 555178 555062 554686 554613 554575 554546 554452 554341 554212 553598 553267 552626 552538 552221 552206 551702 551582 551465 551264 550914 550832 550733 550248 550066 549916 549754 549659 549510 549444 549311 549172 548905 548853 548797 547827 547702 547532 547474 547403 547290 547029 546894 546892 546689 546510 546092 545985 545637 545499 545495 545426 545326 545145 545144 545136 544741 544628 544469 544435 544187 543443 543407 543124 543019 542990 542811 542573 542555 541755 541725 541664 541436 541419 541168 541046 540943 540715 540562 540418 540387 539983 539934 539921 539795 539751 539488 539393 538997 538713 538593 537926 537810 537786 537538 537517 537429 537346 537201 537044 536929 536650 536349 536285 536140 535842 535814 535749 535639 535600 535487 535288 534853 534766 534710 534302 534043 533854 533738 533718 533436 533116 533096 532796 532529 532405 532023 531999 531862 531778 531718 531704 531493 531463 531037 530912 530673 530390 529731 529615 529441 529354 529024 528833 528543 528332 528070 527817 527799 527693 527464 527165 526981 526764 526721 526604 526576 526484 526140 526095 526069 525671 525092 524873 524409 524401 524367 524235 523916 523913 523584 523420 522963 522820 522648 522075 521177 520526 520456 520172 520056 519901 519395 519350 519338 519164 519122 519088 518494 517958 517798 517707 517378 516618 516463 516404 516363 515710 515666 515456 515416 515323 515231 514512 514443 514309 514082 513947 513511 512925 512808 512527 512520 511880 511710 511607 511367 511243 510794 510742 510597 510321 510296 510287 510029 509909 509901 509861 509813 509610 509478 509431 509274 508962 508835 508799 508786 508654 508407 508346 508231 508230 508085 508030 507967 507854 507657 507651 507131 506254 506247 505836 505533 505337 504892 504487 504232 504086 504079 503885 503881 503675 503632 503535 503043 502428 502173 501747 501432 501364 501201 501090 501027 500790 500778 500517 500383 500231 499700 499622 499592 499373 499334 499301 499237 499212 499060 498330 498306 498141 498087 497449 497431 497402 497188 497098 496730 496473 496425 496227 495873 495851 495586 495551 495517 495466 495413 495400 495176 495140 494886 494750 493996 493933 493916 493443 493409 492976 492902 492799 492675 492371 491907 491556 491530 491515 491297 491114 491002 490864 490842 490698 490582 490234 490192 490170 490108 489528 489398 488913 488899 488453 488449 488428 488145 488035 487995 487839 487817 487609 487165 487038 486851 486799 486632 485285 484960 484781 484752 484628 484418 484293 483873 483859 482940 482423 482279 481990 481968 481667 481142 480997 480768 480577 480308 480020 479730 479661 479503 479431 479388 479376 479314 479063 478828 478646 478634 478580 478444 478073 477667 477493 477484 477346 477305 477198 476852 476770 476401 476306 476247 476221 476211 475661 475436 474603 474439 474384 474329 474189 474155 474091 473957 473766 472912 472908 472854 472850 472578 472415 471800 471746 471259 471078 471021 470700 470692 470244 470125 469857 469544 469377 468687 468146 468101 468072 468033 467920 467838 467318 466647 466604 466564 466380 466303 466250 465975 465952 465891 465568 465395 465190 464962 464958 464879 464792 464295 464121 464041 463519 463438 463374 463100 462872 462857 462846 462819 462813 462510 462452 462388 462324 462321 462056 461766 461756 461719 461193 461018 460600 460434 460410 460281 460122 459794 459475 459256 459224 459030 459011 458652 458595 458570 458251 458170 457811 457787 457775 457768 457510 457364 457187 457161 457087 456987 456614 456192 455985 455247 454632 454627 454177 454146 453868 453801 453762 453417 453321 453218 452693 452683 452649 452403 452142 452024 451721 451681 451249 451242 450634 450516 450199 450027 449683 449503 449412 449280 448623 448618 448033 447720 447458 447424 447181 446921 446920 446842 446610 446543 446427 446400 446398 446315 446222 446216 446110 445791 445574 444564 444360 444244 444049 443964 443154 443130 442977 442927 442818 442550 441646 441419 441301 441158 440638 440373 440348 439929 439446 439407 439251 439243 438543 438459 438401 438019 437980 437847 437622 437372 437314 437087 436704 436393 436265 436248 436194 436141 435904 435679 435466 435409 435255 435213 435128 435117 435008 434954 434925 434693 434686 434486 434438 434343 434255 434071 433926 433791 433319 432979 432785 432712 432395 432141 432052 431928 431782 431770 431479 431471 431268 431239 431050 431033 431016 430469 430275 430250 430191 430092 429942 429898 429837 429811 428231 427923 427813 427501 427230 426939 426446 426409 426236 425902 425830 425808 425781 425411 425308 425255 425237 425171 424617 424363 424334 424205 424160 424040 424017 423945 423845 423808 423727 423553 423045 422838 422577 422016 421924 421603 421574 421282 421248 421110 420829 420546 420435 420421 420186 419930 419874 419797 419618 419603 419600 419549 419520 419508 419030 419014 418962 418812 418667 418434 418328 418256 417949 417461 417432 417086 416967 416752 416710 416704 416037 415854 415592 415520 415515 415511 415174 414904 414809 414679 414374 414121 414061 413889 413831 413367 413137 412881 412823 412664 412368 412185 411886 411480 411454 410699 410541 410396 410157 409798 409793 409068 408814 408533 408284 407864 407786 407356 407275 407230 407008 406708 406581 406486 406328 406023 406010 405718 405661 405629 405177 405167 404725 404150 403702 403653 403565 403276 402857 402856 402522 402306 402271 402000 401696 401311 401109 400924 400850 400710 400673 400441 400334 400333 400264 399629 399509 399445 399382 399266 399236 399149 398644 398171 397888 397625 397475 396592 396476 396462 396297 396226 396120 395965 395954 395804 395215 395032 394985 394876 394811 394644 394452 394256 394196 393945 393913 393871 393654 393365 393291 393088 392550 392205 392189 392112 391663 391581 391387 391377 391075 391016 391012 390983 390896 390607 390600 390574 390339 390320 390310 390068 389591 389482 389371 388970 388559 388299 387907 387816 387748 387619 387347 387230 387210 387115 386840 386819 386638 386428 386395 385573 385554 385462 385242 385129 384818 384326 384088 383766 383692 383678 383620 383352 383316 383244 383170 383107 382953 382718 382337 382103 381559 381497 381280 381127 380628 380454 380329 380300 380250 380195 380105 380055 379680 379627 379396 379379 378949 378923 378922 378728 378540 378352 378315 378288 378285 377956 377882 377791 377777 377685 377521 377296 377234 376973 375291 375201 375153 375091 375080 375027 374976 374773 374509 373671 373630 373561 373354 373335 373180 373155 373137 372783 372749 372726 372572 372556 372455 372394 372359 372291 372243 372058 372043 371565 371513 371384 370621 370323 370244 370191 370078 369859 369781 369304 368602 368520 368434 368334 368102 368057 367964 367867 367838 367825 367584 367062 366945 366885 366831 366559 366445 366392 366360 365787 365741 365504 365364 365319 365257 365113 364480 364368 364221 364123 364103 363433 362174 362053 361851 361832 361611 361520 361399 361300 361242 361027 360856 360743 360451 360415 360115 360034 359547 359257 359141 358648 358449 358152 357517 357344 357170 357056 356931 356643 356631 356471 356155 356094 355570 355372 355307 355081 354934 354872 354847 354809 354473 354415 354002 353377 353266 353248 353225 352501 352471 352204 351974 351845 351837 351834 351424 351352 351163 351162 350590 350464 350390 350169 350082 349966 349886 349594 349458 349366 349018 348992 348563 348476 348467 347922 347686 347588 347575 347553 347234 347196 347074 346903 345940 345773 345673 345615 345384 345277 345250 345050 344842 344783 344287 344142 344088 344020 343718 343716 343591 343330 343195 343034 342810 342686 342667 342470 341967 341745 341539 341485 341484 341077 340575 340396 340378 340259 339650 339484 339447 339334 339148 338902 338510 338481 337510 337425 337329 337105 337089 336973 336650 336377 336265 336140 336075 335938 335872 335466 335364 335292 335204 335146 335014 334985 334931 334711 334504 334291 334219 333941 333866 333639 333476 333451 333122 332966 332544 332217 331703 331632 331479 331115 330809 330796 330762 330681 330668 330632 330515 330506 330429 330374 330206 329876 329855 329764 329428 328486 328472 327573 327273 326806 326606 326427 325876 325643 325269 324634 324570 324547 324482 324287 324098 324087 323884 323639 323503 323117 322772 322212 322106 321845 321841 320603 320366 320352 319821 319603 319379 319376 318767 318715 318537 318459 317253 317036 316828 316688 316118 315989 315639 315385 315277 315033 315015 314933 314668 314656 314543 314456 314216 314035 313731 313623 313571 313015 312686 312608 312393 311913 311209 310882 310879 310802 310801 310766 310595 310399 310252 310216 310185 310183 309986 309935 309394 309342 309210 308942 308938 308698 308578 307591 307373 306954 306924 306867 306793 306681 306511 306473 306431 306270 306234 305869 305583 305175 304899 304856 304638 304480 304309 304233 304066 303836 303665 303465 302968 302430 302299 301838 301726 301617 301409 301193 300537 300501 300330 300269 299970 299785 299696 299650 299413 299094 298912 298647 298186 298125 297997 297678 297546 297514 297427 297256 297157 297108 296653 296208 295979 295201 295156 295139 294048 293920 293743 293108 292917 292893 292705 292686 292670 292040 292019 291951 291922 291547 291400 291284 291191 291078 291052 290701 290295 290293 290221 290209 289945 289628 289564 289486 288588 288580 288533 288272 287712 287698 287364 286972 286827 286780 286653 286323 286316 286066 285977 285798 285510 285137 285116 284991 284989 284885 284752 284582 284580 284520 284292 283973 283829 283659 283623 283565 283333 283242 283129 282869 282582 282506 282432 282182 282034 281763 281712 281380 281293 279717 279541 279195 279184 279012 278800 278789 278785 278765 278518 278457 278393 277886 277826 277716 277676 277539 277386 276931 276864 276846 276723 276611 276574 276350 276156 275936 275879 275541 275450 275430 275180 275046 274984 274299 274027 274026 273986 273846 273749 273609 273498 273449 272879 272871 272825 272768 272718 272715 272175 271993 271893 271858 271623 271274 271014 270923 270717 270680 270607 270428 269964 269904 269393 269331 269264 269050 268789 268722 268499 268388 267804 267791 267606 267591 267585 267470 267325 267108 267063 266921 266687 266580 266422 266387 266230 266179 265657 265503 265272 265266 265233 265155 264921 264822 264547 264104 263928 263906 263902 263901 263825 263706 263700 263313 263119 262873 262410 262333 262190 262067 262052 261817 261771 261718 261440 260993 260805 260740 260626 260089 259966 259962 259945 259689 259493 259406 259265 258830 258628 258602 258378 258313 257426 257325 256943 256586 256245 256017 255935 255869 255728 255611 255420 255412 255193 254787 254654 254360 254336 254249 254091 253965 253709 253320 253227 253222 252947 252786 252554 251871 251664 251352 251346 250844 250797 250646 250418 250321 250301 249388 249170 249093 248982 248938 248906 248825 248654 248510 248402 247897 247750 247672 247233 247073 246618 246537 246503 246472 246406 246117 245890 245102 245062 244899 244766 244450 243719 243652 243580 243362 243342 243303 243026 242992 242914 242573 242550 242265 242100 241518 241273 241085 240867 240712 240275 240273 239858 239287 239128 239069 238671 238576 238011 237962 237951 237475 236649 236409 236140 235713 235271 234872 234297 234209 233995 233803 233719 233642 233456 233198 233190 232850 232441 232405 232176 232047 232031 231496 231409 231305 231249 231205 230862 230761 230620 230618 230616 230320 229853 229558 229431 229313 229205 229166 228526 228492 228190 228097 227920 227912 227827 227805 227557 227369 227208 226470 226339 226261 226188 226027 225948 225648 225164 225126 224971 224666 223821 223480 223397 223243 223230 223107 222957 222610 222233 222114 221914 221880 221624 221588 221578 221032 220787 220460 220229 220151 220138 220104 219967 219364 218458 218416 217963 217567 217394 216807 216577 216363 215795 215714 215661 215530 215192 215161 215134 215018 214385 214338 214203 213694 213631 213544 213491 213416 213184 213097 212718 212630 211587 211287 211274 210992 210985 210905 210458 210426 210389 209910 209736 209537 209505 209441 209299 209245 208983 208925 208685 208315 208226 208023 207913 207802 207523 207471 207420 207280 207207 206867 206750 206740 206546 205671 205256 205185 205111 204799 204569 204462 203583 203395 203096 202976 202459 202222 201964 201904 201881 201812 201558 201415 201384 201132 200402 200373 200195 200188 199822 199696 199687 199439 199435 199414 199146 199000 198972 198629 198340 198254 198223 197976 197877 197846 197739 197583 197557 196425 196311 196166 195999 195925 195702 195637 195617 195449 195142 194839 194796 194607 194549 194395 194366 194138 193998 193933 193926 193893 193761 193699 193469 193452 193345 193171 192675 192449 192367 192305 192280 192137 191896 191718 191380 190970 190938 190867 190511 190455 190388 190083 189991 189968 189717 189300 189073 188882 188769 188731 188683 188644 188029 187723 187590 187374 187229 187116 186476 186406 186302 186134 186043 185908 185838 185755 185637 185634 185564 185464 184943 184753 184642 184590 184298 184276 184130 183558 183551 183518 183413 183202 182672 182384 181945 181512 181484 181423 181210 181172 181137 181069 180934 180808 180630 180475 180321 180270 180125 179984 179968 179868 179838 179625 179512 179338 179252 179167 178938 177979 177840 177604 177336 177112 177109 176438 176256 176089 176058 175936 175931 175368 175315 175136 174933 174887 174660 174260 174226 173977 173635 173516 173222 173089 172897 172688 172207 172103 172074 172045 172021 171973 171915 170903 170845 170297 169486 168933 168873 168641 168520 168392 168386 168231 168181 168072 167909 167775 167458 167062 166955 166820 166768 166349 166280 166153 166060 165946 165798 165770 165743 165504 165283 164926 164262 164149 164034 163910 163773 163707 163568 163456 162824 162794 162583 162439 161901 161883 161565 160891 160756 160556 160440 160402 160317 160044 159973 159934 159900 159825 159180 158987 158553 158468 158183 158102 157741 157736 157527 157212 157070 156928 156780 156630 156577 156427 156298 156262 155964 155810 155506 155149 154031 153941 153857 152810 152784 152636 152626 152579 152346 152201 152156 152024 151837 151600 151592 151450 151353 151157 151137 151125 150288 150106 149768 149571 149353 149010 148894 148888 148773 148722 148544 148514 148329 148289 148279 148092 148057 147959 147439 147242 147216 146601 146491 146424 146335 146333 146191 145788 145466 145208 144972 144964 144914 144751 144716 144554 143436 142802 142739 142196 141782 141732 141615 141508 141497 141240 141218 140968 140834 140668 140237 140076 139576 139144 138710 138701 138339 138324 138029 138005 137900 137865 137825 137439 136946 136399 136392 136274 136127 135268 135221 135203 134917 134640 134630 134472 134417 134224 134097 134048 133983 133837 133343 133178 132859 132622 132531 132358 132103 131900 131781 131759 131218 130796 130778 130531 130336 130096 129861 129513 129317 129188 128806 128762 128672 128585 128392 128331 128134 128092 128018 127862 127826 127796 127536 127425 126677 126532 126301 126123 126052 126007 125544 125376 125165 124949 124862 124672 124631 124621 124341 124324 123894 123882 123282 123106 122560 122501 121822 121793 121518 121498 121310 120931 120761 120671 120591 120558 120547 120525 120210 119976 119729 119543 119427 119421 119373 119227 117907 117618 117430 117400 117235 117198 116994 116864 116382 116182 116018 116008 115761 115525 115307 115284 115251 115140 115044 114929 114435 114413 113929 113920 113355 113199 112832 112784 112693 112683 112646 112629 112566 112281 112232 111997 111334 111324 111051 110931 110025 109978 109976 109947 109933 109768 109766 109748 109651 109536 109362 108918 108896 108889 108840 108546 108439 108391 106846 106603 106498 106467 106302 105802 105249 105176 104997 104316 104185 103445 103394 103252 103107 102967 102785 102678 102118 101663 101633 101615 101517 101407 101385 101344 101059 101012 101010 100954 100937 100872 100822 100814 100524 100089 99239 99076 99057 99000 98559 98449 97823 97724 97568 97239 97167 97044 96825 96745 96302 96128 96047 95879 95216 94983 94969 94893 94803 94690 94433 94349 94059 94011 93818 93767 93659 93542 93448 93156 92606 92312 92266 91855 91681 91671 91420 91388 91373 91165 91088 90995 90985 90744 90601 90515 90456 90369 90112 90096 89908 89789 89744 89671 88915 88675 88270 88264 88075 87933 87818 87811 87452 87389 87312 87226 87081 87005 86954 86945 86767 86583 85756 85718 85701 85580 85415 85375 84917 84901 84628 84582 84362 84081 83842 83793 83726 83090 82979 82836 82771 82522 82412 82399 82325 82189 82145 82092 81812 81774 81769 81647 81636 81556 81347 81321 81270 81223 81164 81118 80833 80806 80671 80541 80347 80304 79846 79843 79820 79564 79346 79345 78903 78712 78380 77993 77817 77699 77580 77316 77288 77001 76930 76462 76338 76278 76195 76079 75818 75330 75272 75258 75248 75236 75234 75202 75191 75177 74705 74610 74494 74424 74274 73218 73050 72972 72916 72878 72789 72290 71986 71832 71602 71600 71479 71345 71229 71118 70922 70914 70878 70807 70313 70185 70101 70009 70007 69869 69457 68970 68884 68791 68706 68684 68503 68159 67901 67521 67395 67311 67152 66659 66119 65687 65383 65256 64914 64340 64121 63892 63696 63435 63417 63238 63193 63172 62997 62981 62600 62378 62353 62244 62061 61932 61903 61729 61004 60860 60488 60214 60163 60091 59961 59758 59752 59705 59162 58966 58679 58012 57629 57336 57106 57053 56871 56870 56752 56660 56027 55914 55848 55573 55342 55284 54659 54617 54385 54306 54145 54033 53731 53696 53042 52963 52869 52819 52716 52695 52496 52333 52181 51898 51882 51825 51695 51245 50179 49874 49827 49729 49463 49364 49225 49096 49045 48873 48632 48622 48133 47733 47398 47163 47085 46959 46641 46082 45838 45707 45593 45524 45391 44894 44865 44730 44724 44668 44496 44234 43958 43937 43836 43766 43686 43233 42958 42647 42580 42466 42027 41922 41904 41654 41182 41127 40779 40588 40144 39932 39840 39839 39711 39120 38892 38443 38315 38279 38027 37525 37335 37304 37283 37100 36543 36521 36504 35924 35328 35071 34947 34712 34707 34393 34248 33942 33884 33832 33802 33787 33778 33677 33565 33409 33092 33032 32830 32811 32750 32705 32295 32282 32221 32220 32097 31961 31917 31748 31338 31213 31100 30539 30364 30288 30120 30067 29801 29632 29539 29002 28776 28558 28023 28013 27845 27783 27674 27659 27543 27486 27299 27175 26980 26975 26953 26889 26644 26378 26320 26077 25956 25758 25509 25484 25296 25253 25200 25120 25033 24891 24746 24709 24441 24035 23589 23471 23373 23165 23064 22940 22854 22614 22352 22290 21842 21791 21785 21521 21483 20998 20758 20247 19779 19554 19353 19112 18646 18617 18578 18385 18275 18164 18106 17932 17316 17314 17120 17091 16532 16272 16025 15885 15807 15234 14682 14626 14559 14450 14331 13658 13552 13255 13212 12927 12736 12567 12279 11982 11954 11884 11506 10990 10736 10655 10566 10442 10434 10158 9515 9224 9223 8993 8818 8143 8074 7891 7744 7684 7253 6925 6485 6397 6209 5881 5864 5736 5511 5286 5197 5196 4817 4411 4402 4281 4240 4099 3747 3691 3579 3526 2470 2301 2013 1895 1742 1734 1683 1663 1241 689 589 579 349 263 244 115 32 +5000 999776 999515 999290 999049 998627 998411 998382 998279 998152 998045 997796 997467 997320 997216 996893 996602 996044 995824 995448 995319 994821 994520 994172 994166 994122 994061 993896 992817 991635 991345 991022 990815 990300 990149 990107 989249 988970 988729 988619 988419 988180 988010 987546 987328 987143 987062 986893 986639 986637 986573 986118 986076 986009 985872 985422 984849 984560 984263 984259 983544 983479 982264 982103 981852 981746 981731 981311 981245 981225 981188 981136 981049 981044 981030 980924 980889 980798 980694 980542 980054 979942 979592 979456 978994 978923 978842 978801 978611 977642 976622 976317 976055 975694 975681 975627 975617 975578 975234 975019 974954 974521 974364 974035 973838 973634 973618 973129 972997 972914 972786 972575 972189 971938 971851 971546 971479 971373 971285 971100 971037 970908 970734 970711 970362 970171 969719 969575 969144 969011 968873 968523 968436 968400 967942 967855 967732 966969 966656 966588 965955 965471 965326 965224 965070 964760 964708 964674 964668 964539 964485 964432 964226 964224 964127 964019 963997 963832 963621 963274 963066 962847 962830 962774 962694 962628 962464 962416 962342 962272 962200 962171 962135 961824 961787 961766 961739 961556 961389 961301 961286 961272 961164 960880 960833 960134 959593 959497 959435 959379 959355 959285 959274 959024 958948 958663 958633 958612 958177 958139 958090 957887 957878 957873 957786 957617 957501 957242 957176 956914 956675 956501 956481 955781 955456 955190 954949 954797 954509 954383 954218 954014 953973 953716 953704 953606 952546 952107 951919 951723 951174 950976 950787 950695 950335 949652 949651 949615 949550 949410 949149 949129 948743 948631 948625 948463 947999 947519 947394 947273 947070 947046 946955 946269 946185 946018 945376 945254 945227 945171 944993 944540 944500 944431 944384 944098 943862 943574 943460 943405 943092 942974 942972 942895 942561 942186 942155 941836 941718 941495 941404 941387 941087 941001 940507 940429 940269 940018 940015 939953 939811 939541 939493 939378 939258 939216 939145 938943 938704 938665 938274 937511 937230 937186 936906 936757 936201 935520 935429 935255 935020 934785 934767 934672 934499 933238 932728 932726 932699 932561 932465 932439 932106 931949 931840 931279 930409 930355 930296 930293 929864 929694 929253 929153 928713 928382 927952 927799 927780 927603 927451 927268 927152 926812 926674 926382 926357 926249 926185 926063 926056 926034 925427 925350 925108 924994 924963 924816 924407 924094 923949 923913 923803 923740 923420 923165 923088 922995 922890 922769 922739 922560 922164 922123 922072 921686 921246 920860 920640 920269 920129 919902 919844 919620 919541 919196 919051 918597 918375 918181 918149 918090 918004 917917 917752 917739 917095 917061 916823 916811 916554 916256 916231 916209 916061 915988 915562 915419 915040 914852 914788 914723 914243 914010 913762 913441 913278 912908 912653 912457 912346 911737 911154 911153 910690 910652 910438 910059 909631 909584 909419 908598 908390 908326 908298 908211 908186 907970 907776 907457 906958 906320 906041 906020 905937 905508 905461 905179 905154 904963 904735 904731 904567 904498 904371 904107 903721 903663 903581 903561 903237 902982 902879 902772 902746 902744 902634 902511 902427 902222 902169 902054 901960 901727 901702 901406 901285 900808 900369 900168 899018 898941 898698 898414 898322 898287 898235 898118 897870 897852 897355 897249 896702 896147 895869 895725 895645 895637 895126 895087 894798 893769 893760 893466 893056 892949 892712 892695 892621 892534 891294 891182 891159 891092 891048 891024 890943 890885 890774 890479 890418 890380 889870 889701 889477 889365 889264 888649 888072 887539 887428 887306 886828 886292 886210 886097 885835 885769 885578 885480 885259 884937 884783 884742 884686 884654 884541 884472 884448 884386 884278 884180 884075 883966 883937 883863 883647 883346 883131 882741 882562 881838 881715 881696 881299 880854 880307 880269 880151 879981 879688 879337 879231 878432 878293 878126 877666 877463 877070 877024 876983 876908 876750 876519 876363 876282 876270 876160 875702 875644 875475 875252 875219 875208 874297 873720 873080 872996 872082 871366 871162 871105 870727 870679 870447 870438 870411 870298 870202 870018 869704 869486 869334 869310 869132 869023 868997 868589 868572 868527 868510 868485 868239 868127 868063 867884 867726 867710 867698 867679 867598 867059 867030 867006 866828 866306 865992 865730 865710 865571 865499 865131 865098 865046 865043 864877 864549 864391 863962 863912 863759 863538 863358 863347 863333 863120 862991 862743 862086 861970 861774 861410 861251 860813 860549 860452 860174 860119 859743 859675 859520 859242 859055 858525 857739 857511 857165 857158 857154 856491 855894 855827 855639 855436 855039 854979 854522 854252 853632 853574 853476 853144 852692 852689 852634 852581 852164 852138 852095 851794 851736 851706 851520 851470 851075 850782 850630 850312 850283 850269 850257 850254 849796 849635 849561 849507 849491 849364 849246 849172 849022 848947 848630 848222 848201 848011 847804 847589 847530 847369 847212 846781 846143 846113 845968 845817 845721 845344 844932 844925 844517 844247 844191 843893 843410 842982 842555 842443 842091 841534 841515 841492 841035 840419 840191 839618 839596 839442 839422 839410 839254 838969 838595 838518 838064 837509 837503 837319 836804 836684 836581 836484 835754 835723 835608 835558 835296 835060 835057 834875 834860 834773 834556 834381 834336 834237 834197 833838 833826 833753 833454 833338 833317 833117 833014 832984 832879 832612 832595 832453 832305 832243 832187 832105 832044 831954 831877 831564 831529 831172 831099 830968 830800 830501 830218 830217 829894 829089 828567 828533 828519 828504 828471 828359 828250 828130 827968 827897 827786 827654 827611 827364 826849 826715 826706 826012 825566 825526 825114 824856 824812 823949 823380 823258 823222 822852 822798 822586 822555 822449 822433 822326 822325 822218 822152 821778 821630 821571 821430 821424 821377 821303 820978 820855 820535 820451 820412 820312 820032 819541 819430 819318 819082 818766 818671 818622 818595 818499 818324 818323 818302 818182 818131 817951 817895 817722 817109 816953 816645 816534 816356 816130 816012 815949 815614 815149 814705 814604 814419 814139 813306 813177 813076 812994 812719 812582 812553 812379 812023 812017 811976 811885 811748 811742 811691 811689 811655 811245 810752 810457 810406 810404 810282 810278 810277 810230 810096 810065 809656 809447 809337 809309 809225 808929 808682 808239 808119 808049 807890 807428 806935 806908 806844 806827 806600 806492 806193 805340 805219 805161 804854 804847 804506 804229 803972 803908 803422 803361 803148 802844 802809 802295 802229 802199 801868 801739 801707 801417 801336 800952 800606 800468 800410 800372 800257 800070 799736 799591 799490 799420 799105 798923 798701 798688 798514 798495 798431 798334 798329 798285 797937 797509 797174 796930 796437 796378 796372 796246 795998 795986 795797 795749 795616 795246 795198 795069 794866 794695 794690 794583 794544 794400 794373 794338 793922 793903 793848 793122 793075 792805 792659 792230 791998 791938 791825 791578 791300 791242 790534 790461 790267 790137 789948 789497 789472 789295 789035 788570 788428 788370 788213 788098 788026 787817 787604 786990 785671 785619 785615 785506 785352 785303 785119 784917 784866 784864 784153 783892 783650 783559 783457 783414 783336 783307 782889 782805 782525 782512 782343 782080 781610 781348 781327 780905 780776 780740 780480 780456 779905 779898 779832 779625 779613 779439 779426 779368 779265 779211 779094 778861 778652 778630 778349 778220 778073 777995 777812 777319 776550 776448 776420 776191 776050 775809 775526 775408 775332 775091 775084 774450 774265 774241 774073 773549 773482 773091 772301 772176 772128 772015 771843 771776 771760 771373 770473 770390 770379 770130 770113 770039 769757 769741 769711 769575 769521 769446 769318 768829 768755 768673 768615 768182 767784 767755 767404 767232 766946 766243 765565 765458 765443 765361 765264 765187 765101 765066 765051 764811 764608 764209 764011 763839 763834 763471 762892 762780 762701 762612 761628 761533 761331 761302 761111 761036 760795 760698 760562 760537 760447 760379 760269 760131 759957 759889 759745 759460 759114 759052 758913 758442 758033 757982 757827 757454 757138 757108 756865 756459 756212 755982 755953 755603 755344 755339 755197 755081 753496 753281 752993 752974 752765 752643 752581 752567 752370 752348 752283 751420 751355 750838 750827 750658 750642 750529 750416 750065 749912 749580 749486 748797 748761 748672 748318 747891 747701 747278 747048 747045 746929 746814 746788 746599 746391 746180 746179 746076 745998 745526 745482 745283 744953 744754 744700 744404 744284 744235 742925 742379 742341 742315 742041 741973 741838 741596 741065 740962 740321 740226 740206 740030 740011 739887 739535 738986 738950 738690 738552 738524 738379 738232 738201 737986 737218 736429 736009 736003 735732 734994 734732 734253 733935 733767 733764 733688 733644 733577 733560 733412 732952 732803 732752 732644 732534 732476 732354 732330 731862 731756 731412 731118 731095 730806 730751 730632 730308 730138 729996 729768 729755 729106 728898 728502 728154 727976 727554 727371 727243 727156 727024 726977 726893 726714 726700 726578 726538 726536 726385 726282 725660 725615 725376 725358 725296 725109 725018 724941 724459 724379 724339 724336 724095 724055 723601 723591 723581 723456 723355 723353 723312 723265 723143 723089 722979 722402 722363 722051 722035 721891 721774 721644 721236 720942 720246 720217 720082 720047 720021 719682 719469 719449 719373 718887 718469 717709 717178 717027 716368 716003 715505 715436 715192 715191 715152 714978 714839 714764 714375 714200 714099 713866 713749 713696 713464 713460 712664 712453 712390 712386 712161 712134 711746 711400 710560 710392 710360 710066 709984 709930 709922 709722 709648 709610 709603 709577 709502 709130 709010 708993 708451 708127 707869 707755 707058 706999 706845 706742 706275 706226 705737 705727 705471 705176 705172 704706 704022 703865 703695 703679 703543 703171 702953 702456 702414 702267 702253 702187 702092 701687 701615 701417 701237 701026 700933 700643 700629 700610 700413 700063 700019 699880 698997 698738 698013 697945 696829 696811 696684 696660 696415 696383 696357 696356 695980 695914 695675 695364 695190 695189 695124 694771 694647 694027 693659 693340 693079 692762 692595 692514 692265 692181 692126 691883 691825 691776 691709 691478 691465 691283 691151 691024 690993 690760 690425 690317 690218 689816 689741 689724 689630 689526 689492 689144 688349 688292 687990 687898 687724 687338 687299 687283 687264 687163 686835 686808 686795 686722 686663 686375 686199 686121 686042 685592 685474 685443 685346 684539 684054 683861 682959 682955 682933 682835 682611 681755 681305 681015 680842 680537 680421 680299 680259 680009 680000 679910 679504 678986 678947 678808 678715 678507 678255 678177 678096 677834 677486 677477 676791 676260 676143 675879 675212 674349 674287 674214 674180 674157 674017 673688 673643 673542 673439 673381 673223 673025 672962 672658 672561 672425 672261 672084 671900 671813 671761 671416 671338 671246 670863 670779 670705 670566 670279 669848 669387 669243 668836 668820 668791 668652 668438 668424 668307 668124 667756 667743 667273 667157 667121 666993 666809 666722 666309 666198 666138 665897 665736 665607 665364 665357 665350 665253 664976 664773 664659 664538 664110 663376 662767 662456 662162 662073 661959 661744 661478 661305 661116 660613 660400 660376 660336 660252 659876 659854 659743 658995 658653 658571 658506 658425 658259 658222 657771 657697 657610 657336 657233 657121 656994 656809 656717 656685 656565 656362 655307 655120 654162 654117 653292 652479 652418 652402 652262 652215 651952 651903 651896 651682 651613 650734 650522 650498 650393 650226 650186 650131 649834 649409 649253 648939 648765 648336 648209 647928 647895 647834 647727 647513 647339 647283 647050 647049 645869 645521 645317 644780 644659 644295 643266 642911 642875 642852 642523 642397 642223 642175 642095 642061 641753 641548 641405 641024 640793 640674 640322 640093 639816 639626 639177 639078 638991 638980 638250 637977 637873 637744 637292 637218 637080 637016 636862 636755 636704 636675 636326 636321 635682 635045 634972 634654 634580 634555 634463 634381 634378 634374 634310 633876 633854 633504 633224 632895 632297 632247 632034 631806 631541 631219 631100 630838 630778 630536 630346 629622 629359 629341 629247 629216 629214 629127 628991 628904 628784 628116 628058 627996 627771 627688 627250 626988 626983 626838 626708 626348 626343 626238 626200 625826 625536 625055 624843 624741 624694 624293 624148 624083 623986 623976 623720 623673 623481 623286 623278 623247 623038 622987 622952 622342 622201 621701 621347 621169 621041 620768 620489 620409 620322 620299 620217 619789 619653 619506 618955 618698 617991 617792 617735 617573 617063 616519 616476 616427 616259 616107 615585 615448 615447 615339 615273 615224 615071 614712 614660 614509 614364 614306 614232 614135 614040 614027 613929 613425 613396 613388 613251 613211 612866 612793 612540 612489 612247 612134 611873 611401 610459 610414 610314 610108 610038 610021 609940 609603 609389 609322 609255 609250 608893 608477 608399 607879 607631 607616 607404 606900 606819 606631 606628 606627 606552 606516 606451 606224 606221 606072 605943 605696 605625 605579 605310 605213 605010 604981 604949 604852 604354 603986 603930 603866 603674 603542 603502 603498 603405 603318 603165 603058 602962 602911 602715 602516 602447 602193 602187 601874 601570 601043 600057 599958 599882 599790 599779 599497 599346 599245 599120 599083 598967 598872 598583 598186 598104 598031 597684 597544 597525 597373 596539 596513 596326 595669 595663 595601 595001 594818 594232 593851 593821 593778 593668 593508 593410 592952 592927 592884 592405 591726 591460 591344 591009 590965 590913 590544 590450 589804 589745 589460 589453 589356 589194 589066 588877 588876 588702 588151 587633 587626 587280 587156 587069 586100 585818 585686 585658 585484 585051 584903 584758 584672 584648 584629 584184 584101 583865 583758 583601 583585 583568 583434 583312 583231 583171 583135 583113 583091 582738 582406 582379 582330 582222 582152 582151 581288 580975 580927 580887 580757 580273 580110 579834 579042 579015 578944 578939 578348 578156 578059 578029 577864 577717 577623 577466 577413 577248 576740 576675 576322 576298 576223 576122 575784 575775 575730 575499 575440 575333 574928 574304 574299 574241 574188 574123 574106 574102 573680 573493 573224 573108 573039 572376 571596 571454 571310 571164 570808 570605 570199 569746 569743 569456 569292 569079 568872 568446 567745 567727 567668 567647 567625 567606 567465 567431 567212 566741 566661 566314 566272 565754 565691 565634 565595 565436 565327 565170 564752 564175 564015 563943 563753 563737 563679 563536 562487 562390 561852 561742 561642 561632 561566 561564 561499 561446 561255 560906 560630 560448 560424 560395 559886 559718 559536 559317 558862 558430 558239 558139 557907 557709 557519 557508 557450 557147 556933 556789 556788 556636 556551 556197 555884 555643 555604 555291 554892 554802 554373 554278 554054 553843 553337 553299 553013 552574 552322 552310 551979 551909 551592 551534 551249 551088 550628 550484 549973 549828 549819 549435 549124 549059 548789 548514 548333 548193 548167 547944 547840 547769 547671 547617 547145 546916 546725 546411 546001 545455 545406 545231 544487 544275 543831 543807 543801 543599 543404 543327 543077 542736 542641 542583 542515 542370 542341 542100 541699 541477 540930 540800 540762 540453 540108 539837 539140 539058 539032 538935 538292 537938 537697 537612 537537 537011 536770 536733 536711 536597 536365 536211 535636 535635 535565 535130 534998 534904 534739 534712 534231 534121 533912 533815 533813 533000 532855 532617 531721 531588 531488 531462 531315 531123 530393 530328 530245 530166 530022 529807 529803 529751 529723 529707 529693 529665 529545 529534 528774 528729 528709 528505 528265 527868 527491 527469 527458 526735 526339 526246 526169 526112 525908 525566 525237 525167 525005 524243 524183 523895 523815 523778 523366 523277 522800 522727 522713 522525 521863 521419 521414 521222 521196 520968 520878 520817 520675 520491 520253 519888 519570 519195 518782 518445 518173 517660 517573 517412 517398 517245 517187 517167 516406 516392 515915 515571 515178 515174 515048 514897 514376 514262 514173 513728 513641 513392 513038 512941 512877 512738 512714 512627 512490 512323 512168 512141 511432 511398 511221 511075 510874 510828 510663 510406 510394 510312 510256 510206 510012 509857 509727 509362 509142 508840 508817 508649 507764 507452 507290 507037 506922 506183 506149 506051 506026 506014 505936 505852 505733 505588 505127 505094 505076 504873 504871 504792 504554 504460 504436 504231 504187 503980 503700 503648 503130 502853 502529 502199 502089 501892 501863 501833 501137 501129 501119 500951 500715 499959 499766 499613 499571 499182 498975 498832 498712 498200 497768 497671 497612 497610 497474 497426 497165 496657 496108 495785 495674 495611 495458 494895 494752 494658 494264 494240 494162 493927 493205 493148 492951 492800 492771 492669 492603 492450 492345 492048 491510 491204 491201 491146 491000 490819 490741 490714 490598 490350 489409 489345 489049 488711 488681 488446 488332 488272 488237 488134 487877 487421 487408 486637 486323 486260 485796 485640 485635 485611 485353 485325 484990 484926 484737 484016 483643 483506 483273 481829 481272 481260 481206 481176 481032 480258 480241 480175 479436 479421 479266 479173 479089 478750 478436 477769 476614 476157 476152 475999 475985 475957 475912 475342 475320 475287 475231 475225 475224 474945 474796 474341 474218 473970 473814 473605 472998 472451 472331 472306 472125 472014 471697 471639 471204 471012 470852 470651 470179 470137 469992 469690 469665 469533 469435 469083 468996 468940 468902 468884 468871 468744 468443 468384 468327 468262 467976 467763 467627 467415 467387 467183 467170 467105 467086 466903 466836 466744 466471 466390 466321 466094 465745 465352 464959 464821 464786 464644 464329 464173 464081 463931 463770 463603 462675 462582 462328 462263 462079 461747 461573 461320 461221 461160 461041 460703 460538 460465 460322 459638 459585 459515 459303 459261 459073 458669 457817 457770 457672 457505 457448 457248 457184 457155 456778 456077 456037 455854 455774 455738 455734 455480 455186 455154 455148 454987 454766 454642 454378 454360 454320 454150 453727 453485 453388 453247 453044 453021 452689 452546 451625 451577 451426 451422 451388 451368 451333 451274 450495 450059 449992 449945 449908 449866 449763 449422 449383 449270 449058 448957 448752 448136 447769 447666 447661 447580 447449 447297 447182 447070 447034 447007 446999 446806 446734 446523 446233 446158 445965 445927 445881 445740 445573 445566 445365 445265 444703 444658 444389 444269 443973 443148 442948 442920 442591 442494 442253 441890 441644 441527 441410 441229 441079 441069 440846 440743 440545 440490 439936 439923 439880 439646 439483 439343 439135 439043 438776 438112 437787 436919 436916 436729 436692 436079 435960 435735 435714 435469 434970 434948 434854 434716 434571 434017 433870 433671 433427 433182 432837 432717 432544 432511 432354 432193 432137 431174 430797 430776 430388 429803 429761 429615 429077 429072 428976 428893 428744 428681 428564 428449 428420 428248 428110 427849 427753 427433 427367 427233 427173 427005 426455 426280 425974 425777 425772 425699 425574 425518 425152 425141 425112 424989 424972 424914 424387 423866 423757 423470 423451 423263 423206 423054 422983 422977 422915 422597 422509 422246 421804 421458 421256 421115 420509 420402 420392 419900 419864 418678 418563 418102 418040 417902 417349 417313 417050 416858 416855 416620 416123 416014 415513 415460 415339 415254 414746 414734 414644 414602 414420 413657 413552 413195 413117 413055 412709 412267 412245 412189 412183 411951 411947 411428 411200 411179 410873 410866 410744 410188 410106 409891 409817 409075 408937 408830 408496 408400 408321 407684 407670 407641 407385 407257 406893 406772 406706 406540 406473 406437 405988 405815 405798 405654 405293 405193 404788 404758 404643 404311 404034 404004 403837 403799 403384 403088 402891 402551 402494 402398 402267 402026 401946 401537 401507 401185 400760 400125 400106 399887 399468 399020 398847 398762 398675 398362 398303 397955 397879 397351 397265 397260 397172 397028 396748 396684 396431 396259 396244 395511 395336 395334 395143 395128 394939 394758 394708 394422 394365 394258 394243 394064 394046 393964 393194 392931 392735 392173 392085 391992 391865 391856 391851 391767 391735 391679 391588 391291 390863 390677 390519 390508 390473 390304 389853 389045 388953 388936 388893 388753 388572 388396 388257 388217 388154 387742 387622 387333 387243 386917 386551 386466 386413 386259 386163 386083 386041 386024 385699 385625 385500 385496 385325 384778 384470 384423 384347 384114 383932 383759 383643 383444 383287 383147 382781 382779 382747 382445 382346 382229 382223 382098 382025 381996 381803 381795 381445 380693 380526 380489 380416 380387 380125 380121 380097 379749 379528 379500 379409 379322 379152 378895 378857 378792 378690 378665 378584 378574 378452 377760 377336 377270 377167 376916 376756 376477 376459 376310 376140 376065 375427 375415 375034 374934 374790 374770 374712 374601 374528 374181 374031 373848 373813 373761 373696 373595 373485 373102 373010 372950 372945 372846 372796 372546 372517 372436 371586 371508 371232 370661 370376 369838 369611 369586 369151 368592 368562 368525 368404 368310 368067 367841 367781 367750 367721 367510 367365 367346 367324 367317 367273 367145 366794 366706 366599 366418 365736 365597 365258 365228 365024 364973 364886 364693 364413 364220 364068 363856 363735 362619 362493 362329 362305 362016 362008 361777 361747 361682 361575 361404 361339 361053 360627 360621 360471 360377 360301 359965 359937 359870 359660 359570 359449 359429 358827 358608 358591 358383 357930 357892 357732 357572 357515 357123 356615 356507 356335 356184 356119 356093 355708 355636 354961 354659 354647 354643 353793 353636 353549 353545 353461 353222 353022 353000 352407 352043 352010 351804 351550 351299 351026 350993 350777 350657 349670 349531 349125 349107 349072 348956 348760 348728 348545 348492 348075 348022 347960 347519 347283 346668 346618 346435 346422 346219 346179 346172 345769 345495 345480 345447 345402 344948 344764 344612 344383 344311 344123 343742 343668 343662 343626 343527 343412 343163 343072 342692 342379 342322 342321 342174 342145 342083 341655 341420 341418 341416 340976 340917 340845 340839 340579 340520 340436 340379 340088 340035 339946 339856 339711 338975 338529 338494 338145 338133 337851 337838 337829 337824 337307 337280 337153 337072 337014 336808 336800 336644 336261 336214 335709 335639 335629 335532 335471 335426 335275 334914 334814 334068 333929 333680 333615 332954 332519 332478 332263 332043 331980 331566 330842 330786 330757 330664 330048 329972 329939 329586 329535 329149 329064 328899 328774 328750 328327 327966 327619 327157 327155 327152 326969 326829 326726 326504 326384 325994 325722 325426 325245 325229 324938 324752 324702 324629 324461 324309 323628 323610 323387 323310 323275 323135 323120 323099 322804 322688 322566 321618 321183 320844 320752 319840 319743 319226 319191 319035 318774 318577 318566 318495 318479 318361 318332 318240 318169 317892 317617 317288 316958 316900 316835 316802 316779 316515 316454 316424 316360 316284 316181 315753 315725 315716 315706 315472 315322 315224 314928 314912 314789 314696 314015 314006 313434 313339 312920 312869 312855 312717 312579 312505 312469 312186 312108 312106 311942 311726 311309 310944 310579 310509 310308 310148 309958 309916 309612 309410 309400 309244 309191 308884 308810 308269 308047 307518 307272 306968 306848 306582 306571 306437 306357 306320 305930 305706 305677 305632 305255 305213 305082 305053 304494 304477 304175 303408 303321 303305 303142 302957 302923 302790 302719 302703 302565 302232 301664 301386 301313 301264 301083 300115 299959 299348 299170 299071 299031 299012 298940 298834 298051 297877 297790 297579 297454 297215 297122 296999 296846 296592 296414 296410 296392 296096 296093 295527 295512 295165 294720 294621 294518 294389 293946 293856 293695 293659 293515 293479 293434 293207 292841 292836 292553 292116 291791 291787 291710 291676 291409 291192 290719 290378 290263 290157 290001 289886 289773 289757 289686 289277 289060 288961 288821 288335 288262 287661 287544 287427 287371 287354 287311 286725 286503 286398 286293 286262 286152 286050 285855 285794 285290 285232 285111 284728 284663 284616 284144 284049 283940 283768 283745 283661 283484 283306 283280 283013 282963 282552 282530 282292 282192 282121 282117 282088 281695 281540 281457 281125 280609 280607 280336 280244 279852 279743 279737 279648 278944 278824 278808 278670 278596 278220 278214 277884 277822 276815 276405 276285 276176 275996 275908 275103 274780 274768 274734 274610 274439 274316 274305 274188 274088 273972 273906 273824 273678 273502 273384 273076 272895 272197 271961 271827 271637 271620 271354 271123 270926 270877 270609 270489 269693 269680 269665 269650 269358 269128 268835 268744 268483 268209 268140 267687 267547 267187 267049 267021 266864 266678 266631 266519 266112 265764 265706 265643 265533 265425 265063 265041 264859 264424 264423 264253 263918 263599 263444 263387 263300 263261 262647 262279 262246 262072 262033 261929 261806 261690 261474 261445 261134 261126 261118 260506 259639 259555 259515 259067 259051 258982 258761 258746 258702 258605 258282 258263 258047 258043 257987 257886 257838 257782 257775 257414 257202 257171 256494 256417 256209 256130 256092 256015 255884 255802 255653 255607 255288 255154 254710 254377 254033 253528 253163 253024 252042 252003 251726 251436 250655 250188 249963 249841 249633 249377 249029 248714 248449 248444 248426 248278 248275 248270 248074 247981 247387 247371 247301 247288 247257 246982 246650 246008 245602 245545 245401 245247 244927 244386 244273 244140 244124 244005 243506 243457 243167 242835 242810 242731 242487 242416 241849 241840 241791 241637 241366 241021 240909 240793 240679 240677 240660 240607 240416 240005 239951 239819 239744 239644 239639 239574 239475 239394 238969 238709 238617 238572 237863 237515 236924 236761 236478 236309 236297 236264 236211 236094 235903 235711 235575 235539 235352 234562 234454 234184 233439 233132 232965 232864 232416 232086 231907 231889 231762 231691 231655 231450 231327 231269 231206 231139 230154 229739 228996 227457 227330 227140 227050 227021 226657 226325 226292 226125 226072 225893 225875 225684 225492 225303 225300 224802 224325 224149 224056 224026 223943 223538 223163 223061 222607 222465 222435 222326 222150 221925 221815 221611 221474 221414 221404 221317 221019 220794 220780 220528 219930 219420 219277 219075 218817 217992 217617 217132 217128 217015 216822 216574 216526 216290 216247 215980 215933 215870 215736 215591 215580 215385 214628 214129 214071 213375 213325 213271 212754 212424 212385 212128 211630 211515 211010 210644 210291 210239 210070 209553 209518 209379 209315 209150 208731 208614 208259 208243 208222 208109 208063 208049 207764 207737 207547 206630 206237 206221 206115 206038 206022 205941 205812 205719 205524 205388 205292 205210 204381 204236 204159 204124 204052 203985 203588 203481 203342 202877 202778 202312 202124 201638 201369 201214 201172 200837 200592 200582 200569 200413 200350 200094 200088 200044 200018 199867 199732 199624 199354 199065 198974 198962 198846 198684 198523 197466 197189 197174 197121 196909 196730 196629 196603 196539 196485 196178 195868 195816 195439 195346 195014 194970 194961 194744 194680 194388 194305 194281 194254 194172 194156 193899 193526 193323 193258 193018 192097 191930 191873 191770 191517 191169 191031 191003 190968 190948 190857 190014 189871 189670 189061 188907 188590 188407 187984 187792 187544 187310 187207 187107 186806 186732 186511 186422 186211 186069 185780 185660 185602 185425 185212 184979 184104 183906 183746 183604 183578 183453 183318 183257 183086 182933 182734 182393 181963 181703 181633 181142 180953 180895 180862 180821 180762 180701 180640 180557 180530 180120 180071 179000 178919 178534 178460 178338 178326 178184 178037 177995 177903 177166 177054 176970 176961 176930 176876 176843 176558 176439 175816 175770 175343 175328 175314 175277 175141 175132 174996 174909 174851 174772 174719 174641 174556 174289 174264 174213 173744 173713 173371 173367 173176 173164 173160 173037 172804 172703 172587 172444 172319 172301 172195 171979 171755 171623 171611 171106 171052 171022 171016 170898 170207 170065 169891 169769 169652 169279 168934 168846 168491 168441 168077 167974 167944 167835 167766 167516 167463 166593 166411 166250 165940 165873 164516 164236 164228 164226 164055 163974 163815 163338 163244 163026 162770 162758 162510 162466 162083 161645 161304 161216 161107 161068 160728 160721 160585 160380 160189 160060 159639 159596 159593 159406 158806 158668 158589 158255 158029 157820 157724 157522 157219 157157 157008 156738 156676 156661 156617 156195 156117 156032 155907 155898 155760 155574 155510 155365 155057 154986 154732 154592 154413 154187 153850 153293 153138 153080 152684 152616 152339 152114 151791 151644 151504 151357 151020 150888 150838 150772 150605 150255 150168 150085 150074 149757 149650 149628 149236 148423 148411 148369 147999 147227 147209 147203 147076 146903 146873 146662 146455 146178 145882 145502 145370 145070 144683 144165 144078 143868 143790 143761 143529 143220 142703 142581 142565 142350 142257 142139 142137 142001 141874 141637 141426 141238 141236 141233 141117 140687 140626 140508 140319 140059 139898 139344 139114 138862 138851 138695 138608 138534 138497 137814 137643 137614 137506 137405 137372 137353 137285 137113 136990 136815 136600 136317 136165 136106 135982 135801 135290 134483 134445 134322 134163 133992 133766 133199 132906 132623 132494 132394 132171 131827 131823 131779 131723 131706 131346 131334 130827 130518 130493 130419 130415 130390 130385 130357 130000 129437 129232 129107 129068 129049 128675 128666 128596 128005 127902 127850 127464 127457 127390 127316 127187 126912 126829 126385 126181 125920 125546 125534 125472 125314 125308 125297 125232 125071 124989 124884 124322 124042 123891 123782 123760 123668 122912 122795 122707 122108 121986 121925 121881 121629 121602 121416 121296 121016 120837 120787 120353 120215 120091 119967 119758 119497 118657 118641 118024 117364 117270 117037 116946 116911 116788 116695 116150 116095 116046 115712 115631 115394 115160 114850 114839 114820 114464 113563 113277 113253 113233 112954 112813 112761 112659 112558 112461 112204 112006 112004 111736 111604 111391 111301 111064 110933 110924 110899 110435 110402 110367 109970 109652 109480 109303 108994 108875 108695 108668 108401 108231 107795 107729 107621 107589 107392 107003 106998 106670 106585 106447 106191 105975 105785 105739 105541 105530 105137 105017 104683 104510 104025 103879 103809 103339 103257 102595 102376 102131 102003 101828 101675 101650 101219 100667 100549 100462 100109 99997 99855 99682 99608 99424 99342 99073 98576 98420 98154 97999 97964 97884 97532 97191 96920 96894 96737 96718 96709 96442 96315 96205 96116 95268 95259 95210 95129 95096 94911 94481 94198 94136 93472 93437 92834 92719 92396 91707 91066 90597 90521 90416 90179 90053 89725 89638 89222 88980 88691 88545 88313 88032 88024 87777 87759 87677 87668 87443 87353 86999 86977 86935 86815 85668 85533 85394 85094 84988 84979 84964 84924 84913 84843 84263 84248 84041 83711 83555 83493 83438 83378 83065 82890 82887 82818 82602 82540 82493 82359 82333 82324 82232 82073 82001 81396 81351 81035 80999 80998 80949 80909 80648 80435 80338 80313 80213 80165 79898 79569 79314 79001 78939 78917 78892 78757 78660 78317 78004 77896 77877 77779 77351 77174 77142 77091 76926 76443 76394 76142 76021 75809 75725 75713 75642 75031 74906 74890 74784 74379 74263 74241 74220 74030 73856 73844 73311 72650 72626 72240 71938 71734 71379 71223 70770 70536 70464 70255 69900 69514 69067 69061 68921 68718 68626 68549 68383 68104 67811 67692 67631 67600 67553 67373 66978 66502 66499 66390 66326 66254 66213 66171 66061 65976 65346 65210 65046 64962 64934 64617 64360 64195 63464 63397 63063 62967 62678 62662 62585 62500 62475 62465 62323 61918 61816 61560 61314 60714 60149 60002 59868 59743 59148 58784 58588 58544 58429 58151 58119 56930 56874 56736 56729 56527 56497 56328 56265 56205 56125 55779 55398 55370 55315 55309 54716 54311 54029 53747 53572 53507 53435 53279 53098 52670 52624 52384 52375 52288 52049 51887 51340 50991 50789 50035 49852 49621 49473 49409 49294 49090 49015 48685 48373 48091 47939 47717 47466 47356 46910 46522 46480 46244 45741 45692 45220 45075 44259 44208 43938 43849 43704 43702 43303 43189 43182 43116 43064 42890 42613 42450 42334 42168 42051 41740 41508 41391 41275 41069 40757 40593 39740 39653 39448 39434 39312 39153 39095 38663 38355 38348 38202 38025 37853 37544 36835 36745 36702 36413 36388 35876 35730 35533 35466 35224 35020 34480 34359 34309 34039 33208 33141 32648 32431 32300 31922 31638 31531 31502 31285 31154 31105 31089 31087 31058 30903 30826 30600 30481 30427 30217 30183 30085 30056 29648 29589 29579 29568 29235 29003 28936 28892 28861 28165 28142 27471 27348 27046 27017 26978 26483 26465 26015 25920 25891 25615 25571 25480 25407 25180 25059 24481 24428 24343 24247 24092 24073 23982 23808 23757 23692 23663 23609 23551 23491 23266 23251 23234 22978 22782 22774 22166 21536 21517 21472 21211 21163 21101 21088 21008 20956 20941 20716 20476 20274 19816 19496 19406 19403 19349 19070 19027 19005 18911 18570 17902 17626 17604 17292 17090 16703 16275 16181 15973 15720 15601 15450 15288 15257 15023 14999 14957 14938 14633 14064 14016 13546 13404 13341 13227 12965 12649 12511 12116 11606 11357 11312 11113 11042 10874 10594 10579 10446 10381 10354 9520 9196 9099 8825 8776 8172 8084 7920 7861 7731 7523 7447 7200 7162 6560 6112 6064 5948 5619 5431 5368 5354 5019 4616 4294 4063 3985 3836 3751 3714 3556 3460 3444 3415 3236 3111 2986 2893 2773 2714 2671 2560 2442 2425 2212 2097 2082 1971 1487 1468 1430 1130 1085 789 452 51 17 2 +Test 6 Pass! +Test 7 Pass! +Test 8 Pass! +Test 9 Pass! +278518 19353 907853 19353 612721 19353 344020 619677 344020 19353 760216 760216 19353 433791 615178 615178 482940 433791 19353 743657 19353 255728 842459 255728 920337 255728 925378 255728 792174 792174 792174 993204 792174 900163 900163 812858 792174 792174 686999 964128 964128 686999 932875 686999 943807 943807 686999 686999 714598 686999 686999 935545 935545 935545 935545 690065 686999 678088 678088 678088 554575 554575 554575 554575 554575 504487 504487 373354 366945 335872 255728 634142 255728 962286 255728 360856 909731 360856 380195 360856 625152 979319 979319 625152 625152 606831 360856 360856 255728 254091 204799 197877 824304 824304 262067 197877 183518 122501 157736 509909 157736 122501 122501 127826 288272 288272 816326 816326 591718 288272 278393 127826 692775 127826 826182 127826 940997 127826 127826 122501 103107 70878 70101 599671 599671 803796 803796 803796 803796 803796 599671 567531 480577 351834 810669 351834 119729 70101 70101 68684 51882 48632 37304 348563 37304 23373 19353 207280 558278 558278 462510 462510 454627 739501 739501 739501 739501 454627 355307 242573 207280 958894 958894 231305 871455 231305 207280 207280 202459 19353 509901 19353 238671 19353 70185 70185 540715 70185 19353 14450 10442 7891 1734 263 380454 933991 380454 863137 968985 968985 968985 968985 968985 968985 968985 925047 925047 925047 863137 661908 661908 380454 380454 374976 374976 417461 374976 576561 374976 327573 324287 304638 300501 650208 650208 500790 300501 259966 181484 549754 181484 166955 166955 839027 839027 368057 760606 760606 368057 207913 543407 724132 724132 733418 724132 724132 668634 543407 543407 543407 543407 543407 529731 521177 349018 464041 749063 464041 349018 207913 206740 500231 500231 291052 206740 166955 85718 44234 40588 120210 853907 120210 544435 544435 305869 120210 40588 76930 435904 799242 799242 435904 106846 76930 76930 76930 68159 472415 68159 5511 605443 605443 721543 721543 721543 721543 721543 605443 941996 605443 547029 565045 547029 345673 230761 216577 207420 717636 717636 717636 717636 691354 544628 544628 533436 207420 207420 155810 91671 40144 941856 40144 676339 40144 713173 40144 18385 663567 535288 535288 160756 933416 933416 136392 350464 350464 623767 689716 623767 826870 623767 350464 844221 980471 980471 980471 980471 980471 980471 870719 870719 870719 844221 948729 948729 844221 812128 812128 611570 560698 358648 525092 358648 358648 350464 310183 310183 285977 262410 262410 305583 262410 193171 181069 181069 974227 974227 768097 768097 768097 777788 768097 757917 184276 655662 655662 655662 655662 655662 648516 977033 648516 575508 414061 414061 368520 184276 523913 684795 727094 684795 684795 523913 501364 501364 501364 535814 501364 715030 501364 900288 501364 501364 948346 501364 648073 992997 992997 992997 992997 812892 812892 648073 501364 435466 815778 815778 709624 435466 353266 579887 897161 579887 869459 869459 725559 579887 353266 335466 259265 184276 184276 610481 610481 742959 610481 365787 468072 365787 184276 541725 541725 541725 494750 184276 181069 180808 164926 136392 136274 714128 136274 135221 192675 915954 915954 725557 192675 337329 192675 519395 519395 474384 757614 474384 542555 732262 732262 732262 542555 474384 393871 501747 393871 192675 707899 707899 707899 199146 427230 199146 192675 729764 729764 897098 897098 729764 943010 729764 729764 729764 544469 192675 395804 192675 577509 192675 135221 126532 109748 190867 947291 190867 109748 94690 840761 94690 93156 935426 93156 74494 749107 74494 227369 74494 317253 74494 906064 74494 74494 70007 64121 472578 472578 463374 64121 55284 40779 964687 40779 26980 589 400264 350590 571069 350590 290295 956277 956277 956277 956277 812619 934961 812619 290295 290295 290295 290295 242550 173089 159180 626499 159180 939487 159180 42580 179625 519350 179625 42580 31338 770078 680913 693714 789875 789875 724401 693714 53731 58679 687525 81321 232031 81321 915751 81321 246117 81321 499700 81321 486799 545985 486799 630362 486799 81321 383244 81321 345615 345615 90369 112693 876340 112693 982021 112693 165504 999169 999169 248402 165504 112693 349458 349458 719531 349458 709343 709343 709343 709343 591443 591443 591443 491114 491114 373155 555062 373155 349458 944857 349458 658338 658338 349458 349458 349458 349458 496227 349458 743221 349458 349458 474329 474329 474329 411454 349458 324570 324570 324098 369859 844949 874932 844949 369859 324098 316828 316828 314668 730511 314668 883403 314668 297997 295979 286066 929951 929951 929951 929951 902492 902492 902492 811761 601517 515666 545136 545136 545136 545136 866029 545136 545136 515666 348476 315989 286066 729525 286066 589082 589082 286066 655998 655998 655998 834969 655998 378285 286066 281380 709368 281380 417086 417086 434954 456192 434954 879065 434954 417086 281380 227805 424334 726546 424334 820548 424334 227805 226027 226027 162824 161901 500517 500517 499592 499592 161901 148329 112232 95216 737915 95216 541755 541755 541755 541755 541755 522075 907072 522075 534766 534766 855008 855008 855008 966859 966859 855008 534766 534766 637189 534766 528543 769155 528543 659934 528543 764591 764591 528543 528543 522075 522075 750403 522075 444244 370621 685090 370621 349366 330632 312608 944999 312608 286972 839821 839821 286972 236649 236649 233719 232850 168386 578625 599342 578625 578625 574556 624263 624263 574556 168386 120591 95216 382103 382103 108391 95216 79345 973571 973571 973571 478580 420186 79345 75248 291922 75248 65256 34393 24891 140237 24891 20758 4402 641885 641885 390068 830844 390068 4402 334711 363433 363433 334711 103445 257325 524401 524401 524401 524401 241273 701799 762022 771870 762022 701799 745794 701799 241273 241273 321841 979203 979203 354415 321841 321841 241273 389591 389591 698388 389591 389591 243026 241273 237962 229431 840916 892289 840916 840916 415174 704242 415174 680091 415174 936587 936587 936587 936587 936587 998044 936587 845349 818763 415174 415174 229431 176089 124631 820766 124631 124631 117430 70922 226261 70922 51898 43766 22854 422838 712652 712652 899784 712652 911040 712652 422838 915395 422838 519164 422838 434693 422838 685795 685795 422838 351352 102118 612575 102118 472854 615671 615671 615671 555701 472854 268789 347196 82325 278789 643532 643532 890998 890998 766509 766509 643532 353225 738805 738805 738805 738805 744100 773871 744100 964204 964204 964204 744100 738805 738805 722349 722349 493409 493409 493409 465891 465891 465891 476401 476401 846287 476401 465891 471021 465891 465891 978267 465891 399149 399149 353225 447181 353225 351845 340575 278789 264921 572383 572383 292705 264921 507657 656814 656814 507657 264921 254654 254654 210458 210458 845072 210458 179868 998214 179868 151137 129513 758542 129513 819563 819563 497449 129513 96128 347234 96128 217394 96128 82325 881449 881449 160440 321845 401696 321845 474189 624059 624059 762567 624059 624059 555498 531999 474189 474189 474189 446842 446842 321845 446216 996619 446216 321845 164149 755874 755874 755874 530912 530912 424205 393913 164149 160440 624119 869457 869457 624119 624119 554452 514309 802128 514309 160440 750161 160440 117400 82325 774341 82325 81347 755107 81347 535600 81347 547702 81347 608400 608400 561702 81347 77001 795153 795153 795153 209245 109947 77001 56660 32811 584788 32811 10434 683761 683761 872645 683761 511607 612046 511607 511607 806637 806637 511607 954077 954077 954077 954077 511607 511607 511607 478646 439243 391387 310766 198254 190511 931444 190511 740793 740793 740793 740793 813836 740793 876431 876431 740793 474439 190511 164262 650246 650246 711121 650246 650246 514512 514512 375291 678560 375291 945104 945104 672754 672754 672754 672754 539921 458652 375291 375291 622294 375291 246503 198972 198972 419600 198972 164262 633018 819752 633018 164262 762355 164262 137900 281763 137900 101517 30120 21842 5736 389482 509813 382718 67311 436141 832192 426236 623889 623889 575875 104185 225126 528833 225126 751906 225126 976663 68791 760049 68791 941814 68791 905183 905183 68791 46641 356471 46641 888417 888417 150288 46641 806194 406708 993330 508346 508346 431928 84582 672748 84582 279195 526981 279195 509431 279195 84582 181210 84582 487165 487165 204462 462321 462321 75330 75330 54617 578730 689890 882703 882703 882703 613266 613266 579836 855506 579836 529354 426446 804985 706979 895693 672412 781875 781875 849063 781875 781875 803099 781875 730316 270923 911795 911795 434255 434255 434255 339334 72290 675304 675304 675304 564363 247233 72290 991455 991455 991455 689938 462857 614661 462857 72290 114435 873802 873802 873802 458170 451721 378949 969479 264104 551264 613947 551264 551264 551264 330668 497098 497098 370244 844456 370244 706091 370244 330668 324547 647332 324547 264104 501432 264104 383107 383107 383107 383107 259962 259962 259962 469544 259962 795643 965138 965138 965138 795643 795643 749192 612605 612605 555178 874455 874455 555178 424363 309394 259962 512520 259962 968718 259962 259945 466647 259945 913654 259945 155149 63435 36504 265657 585741 585741 265657 221578 503043 221578 605368 221578 36504 531862 292040 270607 425830 740440 189073 457364 495873 980529 980529 412185 656859 7744 715810 663537 366559 284885 529024 530390 529024 284885 227827 819963 819963 819963 840020 840020 840020 840020 840020 840020 819963 819963 819963 819963 819963 747155 941676 747155 482423 477198 618201 785082 785082 879766 879766 879766 785082 785082 785082 785082 785082 618201 618201 531037 584871 584871 531037 531037 477198 477198 772882 851341 851341 772882 477198 467318 526576 962203 962203 741987 741987 741987 688274 688274 526576 526576 467318 829074 829074 467318 939570 939570 467318 455985 447458 447458 444564 444564 435409 451242 435409 396297 394811 381497 381497 850060 381497 381497 356643 339148 339148 334219 970145 334219 328472 284582 577420 577420 322106 284582 424617 618211 841325 618211 424617 284582 252947 252947 248906 235713 235713 402306 235713 227827 255412 465190 465190 255412 227827 208983 193893 490234 490234 490234 992990 490234 365319 365319 310802 423845 310802 193893 184130 889323 184130 909143 184130 583990 583990 273498 184130 184130 393945 910891 949927 949927 983041 949927 910891 393945 393945 383316 184130 181945 270428 519088 270428 515456 515456 515456 420421 548797 548797 420421 418812 418812 318767 323503 318767 318767 270428 185464 181945 172045 171973 152024 360034 360034 360034 892281 360034 152024 432712 152024 152024 148092 292686 503881 292686 372749 292686 292686 195637 879804 879804 879804 757604 408533 195637 512808 195637 399509 195637 390339 390339 195637 791897 195637 413889 481142 413889 602448 886105 602448 776162 602448 413889 413889 195637 148092 146191 457187 800381 800381 800381 800381 457187 412881 695570 412881 412881 961397 961397 961397 608832 608832 412881 977636 977636 977636 841202 412881 743598 750492 924146 750492 743598 412881 263928 191380 146191 806902 146191 323884 769566 323884 420546 323884 146191 140968 120525 885753 120525 111334 242992 111334 101385 100822 625677 100822 98559 89789 742290 742290 742290 742290 593958 593958 446921 446921 136127 794594 136127 718940 718940 267470 136127 89789 201415 89789 86583 229558 86583 86583 75258 302968 75258 75258 613774 613774 186476 186476 568132 186476 292917 186476 128018 763820 128018 75258 74610 73050 450516 73050 59961 56870 990990 56870 963427 56870 477305 56870 52716 372556 713579 372556 372556 373335 372556 139576 225948 351974 225948 390896 862520 390896 615398 390896 390896 225948 139576 91373 52716 48873 48873 741790 781829 871601 781829 781829 805062 840048 840048 805062 781829 741790 210426 136399 48873 41922 744866 41922 38892 210992 38892 29801 26889 25200 783557 783557 390320 25200 782075 855169 782075 25200 854155 25200 859844 859844 859844 677520 945011 677520 677520 152579 820184 152579 148289 774910 774910 148289 57336 604794 57336 201964 201964 59705 57336 25200 21791 11954 11884 4817 656849 4817 244 90515 244 983866 983866 880346 488145 716241 716241 488145 187590 265272 187590 187590 131218 875005 875005 875005 517707 517707 517707 517707 476221 314035 252554 180630 490864 908607 490864 180630 282182 282182 26644 659883 659883 415511 415511 797639 415511 415511 415511 529441 575707 529441 415511 201384 127862 90744 26644 823717 26644 705198 778884 808153 808153 987763 808153 879484 879484 808153 778884 818263 778884 705198 608771 889511 608771 608771 551465 551465 551465 541664 840554 840554 656305 870998 870998 656305 656305 950561 950561 656305 541664 558346 644961 558346 558346 558346 541664 778175 920553 778175 541664 541664 438543 438543 346903 346903 676182 985339 985339 676182 464879 464879 933324 933324 464879 731504 731504 464879 741879 464879 418962 936688 418962 418962 755313 418962 418962 436248 436248 418962 476211 476211 418962 386428 386428 880858 386428 346903 663235 346903 346903 361851 346903 330681 330681 324634 281293 821022 281293 254360 253320 253227 196311 172074 168181 685003 696940 685003 168181 443154 168181 142196 134417 133983 778078 133983 111997 926214 926214 430469 700802 700802 930396 700802 700802 454632 430469 117618 111997 266921 266921 266921 258313 381559 648797 648797 648797 606509 606509 695807 861453 695807 606509 786782 786782 786782 786782 606509 970329 606509 524235 464958 381559 988263 381559 258313 179167 581394 179167 143436 460122 807586 460122 597024 460122 143436 111997 94803 81223 193469 781616 193469 81223 154031 172021 154031 554613 554613 554613 369304 349594 154031 173635 830031 173635 969226 173635 154031 231409 154031 81223 726256 81223 733983 733983 173222 344142 505836 344142 387347 344142 656561 344142 173222 81223 699279 81223 79846 198629 802801 802801 198629 972112 972112 372783 198629 79846 721151 802714 721151 79846 392189 79846 64340 148888 64340 28558 265503 319603 265503 435117 265503 28558 23589 856140 916033 69869 623001 781533 623001 69869 464121 464121 199000 556064 199000 69869 598975 598975 598975 598975 992031 992031 598975 302430 302430 283565 104997 102785 148514 102785 968860 102785 874909 874909 874909 980048 874909 874909 377777 889382 889382 377777 248982 177840 102785 77699 80304 77699 53042 772298 53042 201558 201558 671217 671217 560882 560882 800051 800051 560882 556876 201558 176256 403565 176256 128806 479503 128806 199414 717845 608907 113199 322212 113199 886315 886315 886315 384326 128092 982877 417949 315639 897538 897538 549172 315639 648678 895674 895674 895674 665551 93818 790046 786150 786150 274027 761813 274027 330429 274027 274027 114929 961049 961049 961049 851591 851591 680681 431268 431268 431268 283129 114929 661020 114929 52819 399236 768853 399236 638753 399236 838659 838659 838659 499334 498330 498330 399236 325269 704043 782863 782863 782863 782863 704043 627775 627775 611148 325269 949845 949845 437372 437372 437372 342667 767951 342667 325269 325269 194395 88915 275541 88915 179252 88915 87081 897955 87081 209910 87081 52819 913947 52819 31748 187374 31748 568486 674964 674964 674964 334985 834729 334985 371565 371565 334985 304480 39932 423945 638708 821795 638708 638708 510794 510794 510794 510794 206546 206546 934093 206546 39711 897868 897868 405177 39711 276350 276350 39711 30067 25956 9223 85375 9223 656481 9223 578704 943661 943661 256943 256943 179512 738938 179512 967811 967811 82836 157212 162794 157212 162439 260805 260805 162439 157212 314933 326806 314933 314933 314933 188644 545426 979516 545426 814323 814323 545426 188644 203395 208023 203395 188644 157212 157212 675009 157212 626515 157212 144554 333941 333941 144554 723891 144554 96825 163910 634095 634095 577079 877375 577079 577079 716914 577079 342686 163910 96825 239287 96825 32750 330206 526140 330206 758396 330206 948397 948397 948397 493443 330206 330206 313571 568301 568301 568301 313571 313571 657239 313571 267108 476852 267108 977067 267108 824681 824681 267108 267108 239069 855070 898074 898074 855070 239069 510597 239069 446427 239069 239069 163773 485285 163773 163773 205256 163773 134472 903691 134472 956582 134472 134472 134097 565100 565100 611582 565100 134097 134097 127536 673013 673013 810283 673013 902075 673013 262052 842351 262052 127536 106498 906606 106498 87452 661531 661531 484293 87452 84917 835576 858737 835576 835576 227557 959582 959582 959582 959582 959582 900801 227557 201132 180321 332544 180321 591083 591083 804209 591083 591083 591083 466380 330374 271014 180321 84917 82412 984723 984723 400334 895224 400334 82412 955746 82412 33832 339650 33832 32750 434486 434486 32750 31213 824492 824492 824492 150106 961310 150106 119427 31213 28776 630693 630693 630693 630693 630693 617718 580365 765783 765783 765783 631391 951463 631391 664698 631391 580365 580365 385554 381127 243342 243342 32282 28776 26320 542811 772073 772073 939195 772073 772073 542811 915471 542811 542811 543019 741919 543019 542811 438401 438401 834155 438401 401311 868440 401311 692851 401311 745419 745419 745419 401311 401311 401311 401311 301617 645456 645456 574304 997320 574304 574304 473605 473605 884783 473605 335426 589804 589804 589804 372950 335426 453021 335426 335426 963832 963832 963832 949652 949652 865499 865499 803908 930296 803908 383932 975019 975019 422509 383932 335426 329535 404311 329535 301617 301617 289564 319743 289564 259689 259689 259689 396259 396259 642175 642175 642175 642175 539058 666993 666993 666993 539058 673688 539058 404004 517398 404004 396259 385325 364220 325426 259689 220151 217617 463931 463931 217617 386466 947046 947046 947046 947046 947046 947046 947046 876160 857511 795069 726893 726893 726893 726893 726893 726893 726893 386466 368592 863912 368592 336808 336808 336808 315716 315716 303305 835060 835060 356615 303305 740030 303305 303305 647049 833753 833753 833753 947999 947999 833753 833753 908186 908186 908186 833753 777995 777995 731756 647049 457448 454987 305706 303305 303305 297215 236297 232965 232965 217617 217617 175136 168441 168441 165873 719449 165873 822798 822798 191930 411200 457505 457505 457505 411200 388893 388893 606628 606628 606628 395511 388893 318479 297122 198523 191930 891159 191930 905461 905461 905461 905461 905461 565754 565754 565754 505588 410188 191930 165873 574928 165873 597373 842982 842982 597373 597373 554054 165873 915562 915562 320844 340035 706999 340035 320844 165873 973618 165873 159593 859055 159593 156661 842091 156661 258761 258761 200837 880269 880269 880269 880269 880269 880269 880269 800372 800372 800372 599245 599245 571596 571596 806908 571596 571596 523815 902772 902772 523815 467105 386551 333615 291192 629359 629359 629359 629359 842555 629359 340579 340579 291192 546411 291192 236761 221815 200837 166593 175816 196539 175816 631806 803148 803148 803148 811691 803148 675212 675212 631806 884472 884472 631806 529803 529803 462582 937230 462582 257171 215580 175816 175816 342321 175816 319840 625055 319840 175816 166593 166411 166411 894798 166411 166411 468940 166411 156661 816953 156661 893056 156661 902746 902746 640322 156661 172703 388217 895126 388217 624083 624083 624083 388217 263261 401946 263261 172703 744953 871366 871366 871366 744953 172703 180821 845968 180821 467763 882562 467763 180821 172703 156661 745482 156661 645317 156661 151020 150605 137372 752567 752567 752567 752567 746814 247301 137372 132494 171016 200088 908598 908598 753496 200088 836804 836804 565327 200088 171016 346668 171016 634654 171016 839254 171016 132494 130390 127902 126181 637292 637292 709648 637292 257838 126181 306571 126181 441644 441644 441644 126181 235575 235575 235575 222326 794690 222326 222326 222326 880854 222326 196730 195868 264423 195868 757108 195868 632895 195868 174213 269358 501129 501129 501129 501129 367273 269358 269358 174772 174213 141637 520968 621347 520968 677486 520968 796930 903561 796930 796930 796930 520968 331566 175132 141637 126181 120837 899018 120837 112558 191003 312186 312186 191003 305053 191003 176961 112558 369611 +Test 11 Pass! diff --git a/priority_queue/data/two/code.cpp b/priority_queue/data/two/code.cpp new file mode 100644 index 0000000..3b59e9f --- /dev/null +++ b/priority_queue/data/two/code.cpp @@ -0,0 +1,261 @@ +// provided by 林伟鸿 +// +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "priority_queue.hpp" + +using namespace std; + +int A = 325, B = 2336, last = 233, mod = 1000007; + +int Rand(){ + return last = (A * last + B) % mod; +} + +void check1(){//测试push 以及 top访问 + sjtu::priority_queue Q; + for(int i = 1; i <= 5000; i++){ + int x = Rand(); + Q.push(x); + printf("%d ", Q.top()); + } + printf("\n"); +} + +void check2(){//测试pop 以及 top访问 + sjtu::priority_queue Q; + for(int i = 1; i <= 5000; i++){ + int x = Rand(); + Q.push(x); + } + printf("%d ", Q.size()); + while(!Q.empty()){ + printf("%d", Q.top()); + Q.pop(); + } + printf("\n"); +} + +void check3(){//测试push pop 同时操作 + sjtu::priority_queue Q; + int size = 0; + for(int i = 1; i <= 6000; i++){ + if(!size){ + int x = Rand(); + Q.push(x); + size++; + } + else{ + int p = Rand() % 2; + if(!p){ + Q.pop(); size--; + } + else{ + int x = Rand(); + Q.push(x); + size++; + } + } + if(size){ + printf("%d ", Q.top()); + } + } + printf("\n"); +} + +void check4(){//测试拷贝构造 + sjtu::priority_queue Q; + for(int i = 1; i <= 5000; i++){ + int x = Rand(); + Q.push(x); + } + sjtu::priority_queue Q2(Q); + printf("%d ", Q2.size()); + while(!Q2.empty()){ + printf("%d ", Q2.top()); + Q2.pop(); + } + printf("\n"); +} + +void check5(){//测试"=" + sjtu::priority_queue Q; + for(int i = 1; i <= 5000; i++){ + int x = Rand(); + Q.push(x); + } + sjtu::priority_queue Q2; + Q2 = Q; + printf("%d ", Q2.size()); + while(!Q2.empty()){ + printf("%d ", Q2.top()); + Q2.pop(); + } + printf("\n"); +} + +bool check6(){//测试堆为空时top是否报错 + sjtu::priority_queue Q; + for(int i = 1; i <= 100; i++) Q.push(Rand()); + try{ + while(!Q.empty()){ + Q.pop(); + } + Q.top(); + } + catch(...){ + return 1; + } + return 0; +} + +bool check7(){//测试堆为空时pop是否报错 + sjtu::priority_queue Q; + for(int i = 1; i <= 100; i++) Q.push(Rand()); + try{ + while(!Q.empty()){ + Q.pop(); + } + Q.pop(); + } + catch(...){ + return 1; + } + return 0; +} + +//check8用于测试拷贝构造时是否在复制之前new出新的堆,若堆在pop是回收节点内存,那么会出现第二次回收时崩溃 +bool check8(){ + sjtu::priority_queue Q; + for(int i = 1; i <= 30000; i++){ + Q.push(Rand()); + } + sjtu::priority_queue Q2(Q); + while(!Q.empty()){ + Q.pop(); + } + while(!Q2.empty()){ + Q2.pop(); + } + return 1; +} + +//check9与check8同理,测试的是"="操作执行是是否new出新节点 +bool check9(){ + sjtu::priority_queue Q; + for(int i = 1; i <= 30000; i++){ + Q.push(Rand()); + } + sjtu::priority_queue Q2; + Q2 = Q; + while(!Q.empty()){ + Q.pop(); + } + while(!Q2.empty()){ + Q2.pop(); + } + return 1; +} + +struct intnum{ + int num; + intnum(int p = 0) : num(p) {} + bool operator <(const intnum &b) const{ + return num < b.num; + } +}; + +void check10(){//考察传到自己的类是否能正常工作 + sjtu::priority_queue Q; + int size = 0; + for(int i = 1; i <= 3000; i++){ + if(!size){ + int x = Rand(); + Q.push(intnum(x)); + size++; + } + else{ + int p = Rand() % 2; + if(!p){ + Q.pop(); size--; + } + else{ + int x = Rand(); + Q.push(intnum(x)); + size++; + } + } + if(size){ + printf("%d ", Q.top()); + } + } + printf("\n"); +} + + + +//check11为CE test 将注释代码进行编译,如果没有CE则通过该测试点 + +struct node{ + int num; + node(int p) : num(p) {} + bool operator <(const node &b) const{ + return num < b.num; + } +}; +bool check11(){ + sjtu::priority_queue Q; + for(int i = 1; i <= 30000; i++) + Q.push(node(Rand())); + while(!Q.empty()){ + Q.top(); + Q.pop(); + } + return 1; +} + + +int main(){ + check1(); + check2(); + check3(); + check4(); + check5(); + + if(check6()) printf("Test 6 Pass!\n"); + else{ + printf("Test 6 Fail!\n"); + } + + if(check7()) printf("Test 7 Pass!\n"); + else{ + printf("Test 7 Fail!\n"); + } + + if(check8()) printf("Test 8 Pass!\n"); + else{ + printf("Test 8 Fail!\n"); + } + + if(check9()) printf("Test 9 Pass!\n"); + else{ + printf("Test 9 Fail!\n"); + } + + check10(); + + if(check11()) printf("Test 11 Pass!\n"); + else{ + printf("Test 11 Fail!\n"); + } + + return 0; +} \ No newline at end of file diff --git a/priority_queue/src/exceptions.hpp b/priority_queue/src/exceptions.hpp new file mode 100644 index 0000000..183eb41 --- /dev/null +++ b/priority_queue/src/exceptions.hpp @@ -0,0 +1,39 @@ +#ifndef SJTU_EXCEPTIONS_HPP +#define SJTU_EXCEPTIONS_HPP + +#include +#include +#include + +namespace sjtu { + +class exception { +protected: + const std::string variant = ""; + std::string detail = ""; +public: + exception() {} + exception(const exception &ec) : variant(ec.variant), detail(ec.detail) {} + virtual std::string what() { + return variant + " " + detail; + } +}; + +class index_out_of_bound : public exception { + /* __________________________ */ +}; + +class runtime_error : public exception { + /* __________________________ */ +}; + +class invalid_iterator : public exception { + /* __________________________ */ +}; + +class container_is_empty : public exception { + /* __________________________ */ +}; +} + +#endif diff --git a/priority_queue/src/priority_queue.hpp b/priority_queue/src/priority_queue.hpp new file mode 100644 index 0000000..6d6f31f --- /dev/null +++ b/priority_queue/src/priority_queue.hpp @@ -0,0 +1,76 @@ +#ifndef SJTU_PRIORITY_QUEUE_HPP +#define SJTU_PRIORITY_QUEUE_HPP + +#include +#include +#include "exceptions.hpp" + +namespace sjtu { + +/** + * a container like std::priority_queue which is a heap internal. + */ +template> +class priority_queue { +public: + /** + * TODO constructors + */ + priority_queue() {} + priority_queue(const priority_queue &other) {} + /** + * TODO deconstructor + */ + ~priority_queue() {} + /** + * TODO Assignment operator + */ + priority_queue &operator=(const priority_queue &other) {} + /** + * get the top of the queue. + * @return a reference of the top element. + * throw container_is_empty if empty() returns true; + */ + const T & top() const { + + } + /** + * TODO + * push new element to the priority queue. + */ + void push(const T &e) { + + } + /** + * TODO + * delete the top element. + * throw container_is_empty if empty() returns true; + */ + void pop() { + + } + /** + * return the number of the elements. + */ + size_t size() const { + + } + /** + * check if the container has at least an element. + * @return true if it is empty, false if it has at least an element. + */ + bool empty() const { + + } + /** + * merge two priority_queues with at most O(logn) complexity. + * clear the other priority_queue. + */ + void merge(priority_queue &other) { + + } +}; + +} + +#endif diff --git a/priority_queue/src/utility.hpp b/priority_queue/src/utility.hpp new file mode 100644 index 0000000..4d13ee5 --- /dev/null +++ b/priority_queue/src/utility.hpp @@ -0,0 +1,27 @@ +#ifndef SJTU_UTILITY_HPP +#define SJTU_UTILITY_HPP + +#include + +namespace sjtu { + +template +class pair { +public: + T1 first; + T2 second; + constexpr pair() : first(), second() {} + pair(const pair &other) = default; + pair(pair &&other) = default; + pair(const T1 &x, const T2 &y) : first(x), second(y) {} + template + pair(U1 &&x, U2 &&y) : first(x), second(y) {} + template + pair(const pair &other) : first(other.first), second(other.second) {} + template + pair(pair &&other) : first(other.first), second(other.second) {} +}; + +} + +#endif