diff --git a/README.md b/README.md index 67eb9a5..8d4a545 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,9 @@ PyTorch implementation of L2L execution algorithm from paper [Training Large Neu You need to define a torch model where all layers are specified in ModuleList. -for example +See [examples folder](examples) + +### Basic usage ```python import torch @@ -55,6 +57,8 @@ class M(nn.Module): return x + +model = M(depth=5, dim=40).train() # on CPU ``` Then, you can use the L2L wrapper over this model. @@ -62,8 +66,6 @@ Then, you can use the L2L wrapper over this model. ```python from layer_to_layer_pytorch.l2l import Layer2Layer -model = M(depth=5, dim=40).train() # on CPU - l2l_model = Layer2Layer( model, layers_attr="layers", # attribute with ModuleList @@ -81,23 +83,46 @@ x = torch.rand(1_000, 40) # on CPU y = torch.rand(1_000, 40) # on CPU losses = [] -loss_fn = nn.MSELoss(reduction="sum") # since L2L calcs average losses itself, we just need to save them +criterion = nn.MSELoss() -optimizer = optim.AdamW(l2l_model.main_model.parameters(), lr=0.001) # optimizer works with the main model on CPU +optimizer = optim.AdamW(l2l_model.main_params) # optimizer works with the main model on CPU -for i in trange(5000): +for i in trange(2000): l2l_model.zero_grad() - l2l_model.forward(x) + _ = l2l_model.forward(x) - loss_value = l2l_model.backward(x, y, loss_fn) + loss_value: float = l2l_model.compute_loss(y, criterion) if i % 50 == 0: - tqdm.write(f"[{i}] loss = {loss_value.item()}") - losses.append(loss_value.item()) + tqdm.write(f"[{i}] loss = {loss_value}") + losses.append(loss_value) + + l2l_model.backward() optimizer.step() + l2l_model.update_main_model_params() # Sync params with CPU +``` + +### FP-16 usage + +Cross-mixes-precision available in init params + +```python +from layer_to_layer_pytorch.l2l import Layer2Layer + +l2l_model = Layer2Layer( + model, + layers_attr="layers", + microbatch_size=100, + + # fp-16 + mixed_precision=True, + loss_scale = 128.0 +) ``` +And then train the same way 😉 + ## Installation ```bash diff --git a/examples/train.ipynb b/examples/train.ipynb new file mode 100644 index 0000000..0071ac0 --- /dev/null +++ b/examples/train.ipynb @@ -0,0 +1,8139 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# !pip install layer-to-layer-pytorch" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Optional\n", + "\n", + "import torch\n", + "from torch import nn, optim\n", + "\n", + "import numpy as np\n", + "\n", + "from tqdm.auto import tqdm, trange\n", + "from tqdm.contrib import tenumerate, tzip\n", + "\n", + "from layer_to_layer_pytorch import Layer2Layer" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "class M(nn.Module):\n", + " def __init__(self, depth: int, dim: int, hidden_dim: Optional[int] = None):\n", + " super().__init__()\n", + " hidden_dim = hidden_dim or dim\n", + " self.layers = nn.ModuleList(\n", + " [\n", + " nn.Sequential(\n", + " nn.Linear(dim, hidden_dim),\n", + " nn.BatchNorm1d(hidden_dim),\n", + " nn.LeakyReLU(),\n", + " )\n", + " ]\n", + " + [\n", + " nn.Sequential(\n", + " nn.Linear(hidden_dim, hidden_dim),\n", + " nn.BatchNorm1d(hidden_dim),\n", + " nn.LeakyReLU(),\n", + " )\n", + " for i in range(depth)\n", + " ]\n", + " + [nn.Linear(hidden_dim, dim), nn.Sigmoid()]\n", + " )\n", + " \n", + " def __len__(self) -> int:\n", + " return len(self.layers)\n", + "\n", + " def forward(self, batch: torch.Tensor) -> torch.Tensor:\n", + " x = batch\n", + " for l in self.layers:\n", + " x = l(x)\n", + "\n", + " return x\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "model = M(depth=5, dim=40, hidden_dim=100)\n", + "\n", + "l2l_model = Layer2Layer(model, layers_attr=\"layers\", microbatch_size=100, verbose=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "x = torch.rand(1_000, 40)\n", + "y = torch.rand(1_000, 40)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[layers.0.0.weight]: True\n", + "[layers.0.0.bias]: True\n", + "[layers.0.1.weight]: True\n", + "[layers.0.1.bias]: True\n", + "[layers.1.0.weight]: True\n", + "[layers.1.0.bias]: True\n", + "[layers.1.1.weight]: True\n", + "[layers.1.1.bias]: True\n", + "[layers.2.0.weight]: True\n", + "[layers.2.0.bias]: True\n", + "[layers.2.1.weight]: True\n", + "[layers.2.1.bias]: True\n", + "[layers.3.0.weight]: True\n", + "[layers.3.0.bias]: True\n", + "[layers.3.1.weight]: True\n", + "[layers.3.1.bias]: True\n", + "[layers.4.0.weight]: True\n", + "[layers.4.0.bias]: True\n", + "[layers.4.1.weight]: True\n", + "[layers.4.1.bias]: True\n", + "[layers.5.0.weight]: True\n", + "[layers.5.0.bias]: True\n", + "[layers.5.1.weight]: True\n", + "[layers.5.1.bias]: True\n", + "[layers.6.weight]: True\n", + "[layers.6.bias]: True\n" + ] + } + ], + "source": [ + "for name, param in l2l_model.model.named_parameters():\n", + " print(f\"[{name}]: {param.requires_grad}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8427a73755ee488a9eabea522dd89327", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(FloatProgress(value=0.0, max=2000.0), HTML(value='')))" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0] loss = 0.09251299779862165\n", + "[50] loss = 0.04679687600582838\n", + "[100] loss = 0.024244420928880572\n", + "[150] loss = 0.012858417234383523\n", + "[200] loss = 0.007469074393156916\n", + "[250] loss = 0.004840212088311091\n", + "[300] loss = 0.0034365870524197817\n", + "[350] loss = 0.0025724523584358394\n", + "[400] loss = 0.0020228293433319777\n", + "[450] loss = 0.001649867874220945\n", + "[500] loss = 0.001370955680613406\n", + "[550] loss = 0.001156660437118262\n", + "[600] loss = 0.0010158663790207356\n", + "[650] loss = 0.0008867938231560402\n", + "[700] loss = 0.0008164640748873353\n", + "[750] loss = 0.0007635831498191692\n", + "[800] loss = 0.0006904192341607995\n", + "[850] loss = 0.0006020103282935452\n", + "[900] loss = 0.000585917350690579\n", + "[950] loss = 0.0005711435842385981\n", + "[1000] loss = 0.0005517072750080843\n", + "[1050] loss = 0.00042251174090779386\n", + "[1100] loss = 0.00043898035073652864\n", + "[1150] loss = 0.000410193380957935\n", + "[1200] loss = 0.00040243057810585015\n", + "[1250] loss = 0.00041606493323342875\n", + "[1300] loss = 0.0003635622069850797\n", + "[1350] loss = 0.0003410119952604873\n", + "[1400] loss = 0.000347757559211459\n", + "[1450] loss = 0.00033284839992120396\n", + "[1500] loss = 0.00028941587333974894\n", + "[1550] loss = 0.00031473712442675605\n", + "[1600] loss = 0.00026775159130920656\n", + "[1650] loss = 0.0002649552479851991\n", + "[1700] loss = 0.00023840018729970325\n", + "[1750] loss = 0.000247815372858895\n", + "[1800] loss = 0.0002410621236776933\n", + "[1850] loss = 0.0002461158837832045\n", + "[1900] loss = 0.00026135327789234\n", + "[1950] loss = 0.00024941059928096365\n", + "\n" + ] + } + ], + "source": [ + "losses = []\n", + "criterion = nn.MSELoss()\n", + "optimizer = optim.AdamW(l2l_model.main_params)\n", + "\n", + "for i in trange(2000):\n", + " l2l_model.zero_grad()\n", + " _ = l2l_model.forward(x)\n", + " loss_value = l2l_model.compute_loss(y, criterion)\n", + " \n", + " if i % 50 == 0:\n", + " tqdm.write(f\"[{i}] loss = {loss_value}\")\n", + " losses.append(loss_value)\n", + "\n", + " l2l_model.backward()\n", + " optimizer.step()\n", + " l2l_model.update_main_model_params() # Sync params with CPU\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "type": "scatter", + "x": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885, + 886, + 887, + 888, + 889, + 890, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 899, + 900, + 901, + 902, + 903, + 904, + 905, + 906, + 907, + 908, + 909, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 918, + 919, + 920, + 921, + 922, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933, + 934, + 935, + 936, + 937, + 938, + 939, + 940, + 941, + 942, + 943, + 944, + 945, + 946, + 947, + 948, + 949, + 950, + 951, + 952, + 953, + 954, + 955, + 956, + 957, + 958, + 959, + 960, + 961, + 962, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 972, + 973, + 974, + 975, + 976, + 977, + 978, + 979, + 980, + 981, + 982, + 983, + 984, + 985, + 986, + 987, + 988, + 989, + 990, + 991, + 992, + 993, + 994, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1005, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1014, + 1015, + 1016, + 1017, + 1018, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1037, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1050, + 1051, + 1052, + 1053, + 1054, + 1055, + 1056, + 1057, + 1058, + 1059, + 1060, + 1061, + 1062, + 1063, + 1064, + 1065, + 1066, + 1067, + 1068, + 1069, + 1070, + 1071, + 1072, + 1073, + 1074, + 1075, + 1076, + 1077, + 1078, + 1079, + 1080, + 1081, + 1082, + 1083, + 1084, + 1085, + 1086, + 1087, + 1088, + 1089, + 1090, + 1091, + 1092, + 1093, + 1094, + 1095, + 1096, + 1097, + 1098, + 1099, + 1100, + 1101, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1109, + 1110, + 1111, + 1112, + 1113, + 1114, + 1115, + 1116, + 1117, + 1118, + 1119, + 1120, + 1121, + 1122, + 1123, + 1124, + 1125, + 1126, + 1127, + 1128, + 1129, + 1130, + 1131, + 1132, + 1133, + 1134, + 1135, + 1136, + 1137, + 1138, + 1139, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1146, + 1147, + 1148, + 1149, + 1150, + 1151, + 1152, + 1153, + 1154, + 1155, + 1156, + 1157, + 1158, + 1159, + 1160, + 1161, + 1162, + 1163, + 1164, + 1165, + 1166, + 1167, + 1168, + 1169, + 1170, + 1171, + 1172, + 1173, + 1174, + 1175, + 1176, + 1177, + 1178, + 1179, + 1180, + 1181, + 1182, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1197, + 1198, + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1210, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1219, + 1220, + 1221, + 1222, + 1223, + 1224, + 1225, + 1226, + 1227, + 1228, + 1229, + 1230, + 1231, + 1232, + 1233, + 1234, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1242, + 1243, + 1244, + 1245, + 1246, + 1247, + 1248, + 1249, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1259, + 1260, + 1261, + 1262, + 1263, + 1264, + 1265, + 1266, + 1267, + 1268, + 1269, + 1270, + 1271, + 1272, + 1273, + 1274, + 1275, + 1276, + 1277, + 1278, + 1279, + 1280, + 1281, + 1282, + 1283, + 1284, + 1285, + 1286, + 1287, + 1288, + 1289, + 1290, + 1291, + 1292, + 1293, + 1294, + 1295, + 1296, + 1297, + 1298, + 1299, + 1300, + 1301, + 1302, + 1303, + 1304, + 1305, + 1306, + 1307, + 1308, + 1309, + 1310, + 1311, + 1312, + 1313, + 1314, + 1315, + 1316, + 1317, + 1318, + 1319, + 1320, + 1321, + 1322, + 1323, + 1324, + 1325, + 1326, + 1327, + 1328, + 1329, + 1330, + 1331, + 1332, + 1333, + 1334, + 1335, + 1336, + 1337, + 1338, + 1339, + 1340, + 1341, + 1342, + 1343, + 1344, + 1345, + 1346, + 1347, + 1348, + 1349, + 1350, + 1351, + 1352, + 1353, + 1354, + 1355, + 1356, + 1357, + 1358, + 1359, + 1360, + 1361, + 1362, + 1363, + 1364, + 1365, + 1366, + 1367, + 1368, + 1369, + 1370, + 1371, + 1372, + 1373, + 1374, + 1375, + 1376, + 1377, + 1378, + 1379, + 1380, + 1381, + 1382, + 1383, + 1384, + 1385, + 1386, + 1387, + 1388, + 1389, + 1390, + 1391, + 1392, + 1393, + 1394, + 1395, + 1396, + 1397, + 1398, + 1399, + 1400, + 1401, + 1402, + 1403, + 1404, + 1405, + 1406, + 1407, + 1408, + 1409, + 1410, + 1411, + 1412, + 1413, + 1414, + 1415, + 1416, + 1417, + 1418, + 1419, + 1420, + 1421, + 1422, + 1423, + 1424, + 1425, + 1426, + 1427, + 1428, + 1429, + 1430, + 1431, + 1432, + 1433, + 1434, + 1435, + 1436, + 1437, + 1438, + 1439, + 1440, + 1441, + 1442, + 1443, + 1444, + 1445, + 1446, + 1447, + 1448, + 1449, + 1450, + 1451, + 1452, + 1453, + 1454, + 1455, + 1456, + 1457, + 1458, + 1459, + 1460, + 1461, + 1462, + 1463, + 1464, + 1465, + 1466, + 1467, + 1468, + 1469, + 1470, + 1471, + 1472, + 1473, + 1474, + 1475, + 1476, + 1477, + 1478, + 1479, + 1480, + 1481, + 1482, + 1483, + 1484, + 1485, + 1486, + 1487, + 1488, + 1489, + 1490, + 1491, + 1492, + 1493, + 1494, + 1495, + 1496, + 1497, + 1498, + 1499, + 1500, + 1501, + 1502, + 1503, + 1504, + 1505, + 1506, + 1507, + 1508, + 1509, + 1510, + 1511, + 1512, + 1513, + 1514, + 1515, + 1516, + 1517, + 1518, + 1519, + 1520, + 1521, + 1522, + 1523, + 1524, + 1525, + 1526, + 1527, + 1528, + 1529, + 1530, + 1531, + 1532, + 1533, + 1534, + 1535, + 1536, + 1537, + 1538, + 1539, + 1540, + 1541, + 1542, + 1543, + 1544, + 1545, + 1546, + 1547, + 1548, + 1549, + 1550, + 1551, + 1552, + 1553, + 1554, + 1555, + 1556, + 1557, + 1558, + 1559, + 1560, + 1561, + 1562, + 1563, + 1564, + 1565, + 1566, + 1567, + 1568, + 1569, + 1570, + 1571, + 1572, + 1573, + 1574, + 1575, + 1576, + 1577, + 1578, + 1579, + 1580, + 1581, + 1582, + 1583, + 1584, + 1585, + 1586, + 1587, + 1588, + 1589, + 1590, + 1591, + 1592, + 1593, + 1594, + 1595, + 1596, + 1597, + 1598, + 1599, + 1600, + 1601, + 1602, + 1603, + 1604, + 1605, + 1606, + 1607, + 1608, + 1609, + 1610, + 1611, + 1612, + 1613, + 1614, + 1615, + 1616, + 1617, + 1618, + 1619, + 1620, + 1621, + 1622, + 1623, + 1624, + 1625, + 1626, + 1627, + 1628, + 1629, + 1630, + 1631, + 1632, + 1633, + 1634, + 1635, + 1636, + 1637, + 1638, + 1639, + 1640, + 1641, + 1642, + 1643, + 1644, + 1645, + 1646, + 1647, + 1648, + 1649, + 1650, + 1651, + 1652, + 1653, + 1654, + 1655, + 1656, + 1657, + 1658, + 1659, + 1660, + 1661, + 1662, + 1663, + 1664, + 1665, + 1666, + 1667, + 1668, + 1669, + 1670, + 1671, + 1672, + 1673, + 1674, + 1675, + 1676, + 1677, + 1678, + 1679, + 1680, + 1681, + 1682, + 1683, + 1684, + 1685, + 1686, + 1687, + 1688, + 1689, + 1690, + 1691, + 1692, + 1693, + 1694, + 1695, + 1696, + 1697, + 1698, + 1699, + 1700, + 1701, + 1702, + 1703, + 1704, + 1705, + 1706, + 1707, + 1708, + 1709, + 1710, + 1711, + 1712, + 1713, + 1714, + 1715, + 1716, + 1717, + 1718, + 1719, + 1720, + 1721, + 1722, + 1723, + 1724, + 1725, + 1726, + 1727, + 1728, + 1729, + 1730, + 1731, + 1732, + 1733, + 1734, + 1735, + 1736, + 1737, + 1738, + 1739, + 1740, + 1741, + 1742, + 1743, + 1744, + 1745, + 1746, + 1747, + 1748, + 1749, + 1750, + 1751, + 1752, + 1753, + 1754, + 1755, + 1756, + 1757, + 1758, + 1759, + 1760, + 1761, + 1762, + 1763, + 1764, + 1765, + 1766, + 1767, + 1768, + 1769, + 1770, + 1771, + 1772, + 1773, + 1774, + 1775, + 1776, + 1777, + 1778, + 1779, + 1780, + 1781, + 1782, + 1783, + 1784, + 1785, + 1786, + 1787, + 1788, + 1789, + 1790, + 1791, + 1792, + 1793, + 1794, + 1795, + 1796, + 1797, + 1798, + 1799, + 1800, + 1801, + 1802, + 1803, + 1804, + 1805, + 1806, + 1807, + 1808, + 1809, + 1810, + 1811, + 1812, + 1813, + 1814, + 1815, + 1816, + 1817, + 1818, + 1819, + 1820, + 1821, + 1822, + 1823, + 1824, + 1825, + 1826, + 1827, + 1828, + 1829, + 1830, + 1831, + 1832, + 1833, + 1834, + 1835, + 1836, + 1837, + 1838, + 1839, + 1840, + 1841, + 1842, + 1843, + 1844, + 1845, + 1846, + 1847, + 1848, + 1849, + 1850, + 1851, + 1852, + 1853, + 1854, + 1855, + 1856, + 1857, + 1858, + 1859, + 1860, + 1861, + 1862, + 1863, + 1864, + 1865, + 1866, + 1867, + 1868, + 1869, + 1870, + 1871, + 1872, + 1873, + 1874, + 1875, + 1876, + 1877, + 1878, + 1879, + 1880, + 1881, + 1882, + 1883, + 1884, + 1885, + 1886, + 1887, + 1888, + 1889, + 1890, + 1891, + 1892, + 1893, + 1894, + 1895, + 1896, + 1897, + 1898, + 1899, + 1900, + 1901, + 1902, + 1903, + 1904, + 1905, + 1906, + 1907, + 1908, + 1909, + 1910, + 1911, + 1912, + 1913, + 1914, + 1915, + 1916, + 1917, + 1918, + 1919, + 1920, + 1921, + 1922, + 1923, + 1924, + 1925, + 1926, + 1927, + 1928, + 1929, + 1930, + 1931, + 1932, + 1933, + 1934, + 1935, + 1936, + 1937, + 1938, + 1939, + 1940, + 1941, + 1942, + 1943, + 1944, + 1945, + 1946, + 1947, + 1948, + 1949, + 1950, + 1951, + 1952, + 1953, + 1954, + 1955, + 1956, + 1957, + 1958, + 1959, + 1960, + 1961, + 1962, + 1963, + 1964, + 1965, + 1966, + 1967, + 1968, + 1969, + 1970, + 1971, + 1972, + 1973, + 1974, + 1975, + 1976, + 1977, + 1978, + 1979, + 1980, + 1981, + 1982, + 1983, + 1984, + 1985, + 1986, + 1987, + 1988, + 1989, + 1990, + 1991, + 1992, + 1993, + 1994, + 1995, + 1996, + 1997, + 1998, + 1999, + 2000, + 2001, + 2002, + 2003, + 2004, + 2005, + 2006, + 2007, + 2008, + 2009, + 2010, + 2011, + 2012, + 2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026, + 2027, + 2028, + 2029, + 2030, + 2031, + 2032, + 2033, + 2034, + 2035, + 2036, + 2037, + 2038, + 2039, + 2040, + 2041, + 2042, + 2043, + 2044, + 2045, + 2046, + 2047, + 2048, + 2049, + 2050, + 2051, + 2052, + 2053, + 2054, + 2055, + 2056, + 2057, + 2058, + 2059, + 2060, + 2061, + 2062, + 2063, + 2064, + 2065, + 2066, + 2067, + 2068, + 2069, + 2070, + 2071, + 2072, + 2073, + 2074, + 2075, + 2076, + 2077, + 2078, + 2079, + 2080, + 2081, + 2082, + 2083, + 2084, + 2085, + 2086, + 2087, + 2088, + 2089, + 2090, + 2091, + 2092, + 2093, + 2094, + 2095, + 2096, + 2097, + 2098, + 2099, + 2100, + 2101, + 2102, + 2103, + 2104, + 2105, + 2106, + 2107, + 2108, + 2109, + 2110, + 2111, + 2112, + 2113, + 2114, + 2115, + 2116, + 2117, + 2118, + 2119, + 2120, + 2121, + 2122, + 2123, + 2124, + 2125, + 2126, + 2127, + 2128, + 2129, + 2130, + 2131, + 2132, + 2133, + 2134, + 2135, + 2136, + 2137, + 2138, + 2139, + 2140, + 2141, + 2142, + 2143, + 2144, + 2145, + 2146, + 2147, + 2148, + 2149, + 2150, + 2151, + 2152, + 2153, + 2154, + 2155, + 2156, + 2157, + 2158, + 2159, + 2160, + 2161, + 2162, + 2163, + 2164, + 2165, + 2166, + 2167, + 2168, + 2169, + 2170, + 2171, + 2172, + 2173, + 2174, + 2175, + 2176, + 2177, + 2178, + 2179, + 2180, + 2181, + 2182, + 2183, + 2184, + 2185, + 2186, + 2187, + 2188, + 2189, + 2190, + 2191, + 2192, + 2193, + 2194, + 2195, + 2196, + 2197, + 2198, + 2199, + 2200, + 2201, + 2202, + 2203, + 2204, + 2205, + 2206, + 2207, + 2208, + 2209, + 2210, + 2211, + 2212, + 2213, + 2214, + 2215, + 2216, + 2217, + 2218, + 2219, + 2220, + 2221, + 2222, + 2223, + 2224, + 2225, + 2226, + 2227, + 2228, + 2229, + 2230, + 2231, + 2232, + 2233, + 2234, + 2235, + 2236, + 2237, + 2238, + 2239, + 2240, + 2241, + 2242, + 2243, + 2244, + 2245, + 2246, + 2247, + 2248, + 2249, + 2250, + 2251, + 2252, + 2253, + 2254, + 2255, + 2256, + 2257, + 2258, + 2259, + 2260, + 2261, + 2262, + 2263, + 2264, + 2265, + 2266, + 2267, + 2268, + 2269, + 2270, + 2271, + 2272, + 2273, + 2274, + 2275, + 2276, + 2277, + 2278, + 2279, + 2280, + 2281, + 2282, + 2283, + 2284, + 2285, + 2286, + 2287, + 2288, + 2289, + 2290, + 2291, + 2292, + 2293, + 2294, + 2295, + 2296, + 2297, + 2298, + 2299, + 2300, + 2301, + 2302, + 2303, + 2304, + 2305, + 2306, + 2307, + 2308, + 2309, + 2310, + 2311, + 2312, + 2313, + 2314, + 2315, + 2316, + 2317, + 2318, + 2319, + 2320, + 2321, + 2322, + 2323, + 2324, + 2325, + 2326, + 2327, + 2328, + 2329, + 2330, + 2331, + 2332, + 2333, + 2334, + 2335, + 2336, + 2337, + 2338, + 2339, + 2340, + 2341, + 2342, + 2343, + 2344, + 2345, + 2346, + 2347, + 2348, + 2349, + 2350, + 2351, + 2352, + 2353, + 2354, + 2355, + 2356, + 2357, + 2358, + 2359, + 2360, + 2361, + 2362, + 2363, + 2364, + 2365, + 2366, + 2367, + 2368, + 2369, + 2370, + 2371, + 2372, + 2373, + 2374, + 2375, + 2376, + 2377, + 2378, + 2379, + 2380, + 2381, + 2382, + 2383, + 2384, + 2385, + 2386, + 2387, + 2388, + 2389, + 2390, + 2391, + 2392, + 2393, + 2394, + 2395, + 2396, + 2397, + 2398, + 2399, + 2400, + 2401, + 2402, + 2403, + 2404, + 2405, + 2406, + 2407, + 2408, + 2409, + 2410, + 2411, + 2412, + 2413, + 2414, + 2415, + 2416, + 2417, + 2418, + 2419, + 2420, + 2421, + 2422, + 2423, + 2424, + 2425, + 2426, + 2427, + 2428, + 2429, + 2430, + 2431, + 2432, + 2433, + 2434, + 2435, + 2436, + 2437, + 2438, + 2439, + 2440, + 2441, + 2442, + 2443, + 2444, + 2445, + 2446, + 2447, + 2448, + 2449, + 2450, + 2451, + 2452, + 2453, + 2454, + 2455, + 2456, + 2457, + 2458, + 2459, + 2460, + 2461, + 2462, + 2463, + 2464, + 2465, + 2466, + 2467, + 2468, + 2469, + 2470, + 2471, + 2472, + 2473, + 2474, + 2475, + 2476, + 2477, + 2478, + 2479, + 2480, + 2481, + 2482, + 2483, + 2484, + 2485, + 2486, + 2487, + 2488, + 2489, + 2490, + 2491, + 2492, + 2493, + 2494, + 2495, + 2496, + 2497, + 2498, + 2499, + 2500, + 2501, + 2502, + 2503, + 2504, + 2505, + 2506, + 2507, + 2508, + 2509, + 2510, + 2511, + 2512, + 2513, + 2514, + 2515, + 2516, + 2517, + 2518, + 2519, + 2520, + 2521, + 2522, + 2523, + 2524, + 2525, + 2526, + 2527, + 2528, + 2529, + 2530, + 2531, + 2532, + 2533, + 2534, + 2535, + 2536, + 2537, + 2538, + 2539, + 2540, + 2541, + 2542, + 2543, + 2544, + 2545, + 2546, + 2547, + 2548, + 2549, + 2550, + 2551, + 2552, + 2553, + 2554, + 2555, + 2556, + 2557, + 2558, + 2559, + 2560, + 2561, + 2562, + 2563, + 2564, + 2565, + 2566, + 2567, + 2568, + 2569, + 2570, + 2571, + 2572, + 2573, + 2574, + 2575, + 2576, + 2577, + 2578, + 2579, + 2580, + 2581, + 2582, + 2583, + 2584, + 2585, + 2586, + 2587, + 2588, + 2589, + 2590, + 2591, + 2592, + 2593, + 2594, + 2595, + 2596, + 2597, + 2598, + 2599, + 2600, + 2601, + 2602, + 2603, + 2604, + 2605, + 2606, + 2607, + 2608, + 2609, + 2610, + 2611, + 2612, + 2613, + 2614, + 2615, + 2616, + 2617, + 2618, + 2619, + 2620, + 2621, + 2622, + 2623, + 2624, + 2625, + 2626, + 2627, + 2628, + 2629, + 2630, + 2631, + 2632, + 2633, + 2634, + 2635, + 2636, + 2637, + 2638, + 2639, + 2640, + 2641, + 2642, + 2643, + 2644, + 2645, + 2646, + 2647, + 2648, + 2649, + 2650, + 2651, + 2652, + 2653, + 2654, + 2655, + 2656, + 2657, + 2658, + 2659, + 2660, + 2661, + 2662, + 2663, + 2664, + 2665, + 2666, + 2667, + 2668, + 2669, + 2670, + 2671, + 2672, + 2673, + 2674, + 2675, + 2676, + 2677, + 2678, + 2679, + 2680, + 2681, + 2682, + 2683, + 2684, + 2685, + 2686, + 2687, + 2688, + 2689, + 2690, + 2691, + 2692, + 2693, + 2694, + 2695, + 2696, + 2697, + 2698, + 2699, + 2700, + 2701, + 2702, + 2703, + 2704, + 2705, + 2706, + 2707, + 2708, + 2709, + 2710, + 2711, + 2712, + 2713, + 2714, + 2715, + 2716, + 2717, + 2718, + 2719, + 2720, + 2721, + 2722, + 2723, + 2724, + 2725, + 2726, + 2727, + 2728, + 2729, + 2730, + 2731, + 2732, + 2733, + 2734, + 2735, + 2736, + 2737, + 2738, + 2739, + 2740, + 2741, + 2742, + 2743, + 2744, + 2745, + 2746, + 2747, + 2748, + 2749, + 2750, + 2751, + 2752, + 2753, + 2754, + 2755, + 2756, + 2757, + 2758, + 2759, + 2760, + 2761, + 2762, + 2763, + 2764, + 2765, + 2766, + 2767, + 2768, + 2769, + 2770, + 2771, + 2772, + 2773, + 2774, + 2775, + 2776, + 2777, + 2778, + 2779, + 2780, + 2781, + 2782, + 2783, + 2784, + 2785, + 2786, + 2787, + 2788, + 2789, + 2790, + 2791, + 2792, + 2793, + 2794, + 2795, + 2796, + 2797, + 2798, + 2799, + 2800, + 2801, + 2802, + 2803, + 2804, + 2805, + 2806, + 2807, + 2808, + 2809, + 2810, + 2811, + 2812, + 2813, + 2814, + 2815, + 2816, + 2817, + 2818, + 2819, + 2820, + 2821, + 2822, + 2823, + 2824, + 2825, + 2826, + 2827, + 2828, + 2829, + 2830, + 2831, + 2832, + 2833, + 2834, + 2835, + 2836, + 2837, + 2838, + 2839, + 2840, + 2841, + 2842, + 2843, + 2844, + 2845, + 2846, + 2847, + 2848, + 2849, + 2850, + 2851, + 2852, + 2853, + 2854, + 2855, + 2856, + 2857, + 2858, + 2859, + 2860, + 2861, + 2862, + 2863, + 2864, + 2865, + 2866, + 2867, + 2868, + 2869, + 2870, + 2871, + 2872, + 2873, + 2874, + 2875, + 2876, + 2877, + 2878, + 2879, + 2880, + 2881, + 2882, + 2883, + 2884, + 2885, + 2886, + 2887, + 2888, + 2889, + 2890, + 2891, + 2892, + 2893, + 2894, + 2895, + 2896, + 2897, + 2898, + 2899, + 2900, + 2901, + 2902, + 2903, + 2904, + 2905, + 2906, + 2907, + 2908, + 2909, + 2910, + 2911, + 2912, + 2913, + 2914, + 2915, + 2916, + 2917, + 2918, + 2919, + 2920, + 2921, + 2922, + 2923, + 2924, + 2925, + 2926, + 2927, + 2928, + 2929, + 2930, + 2931, + 2932, + 2933, + 2934, + 2935, + 2936, + 2937, + 2938, + 2939, + 2940, + 2941, + 2942, + 2943, + 2944, + 2945, + 2946, + 2947, + 2948, + 2949, + 2950, + 2951, + 2952, + 2953, + 2954, + 2955, + 2956, + 2957, + 2958, + 2959, + 2960, + 2961, + 2962, + 2963, + 2964, + 2965, + 2966, + 2967, + 2968, + 2969, + 2970, + 2971, + 2972, + 2973, + 2974, + 2975, + 2976, + 2977, + 2978, + 2979, + 2980, + 2981, + 2982, + 2983, + 2984, + 2985, + 2986, + 2987, + 2988, + 2989, + 2990, + 2991, + 2992, + 2993, + 2994, + 2995, + 2996, + 2997, + 2998, + 2999, + 3000, + 3001, + 3002, + 3003, + 3004, + 3005, + 3006, + 3007, + 3008, + 3009, + 3010, + 3011, + 3012, + 3013, + 3014, + 3015, + 3016, + 3017, + 3018, + 3019, + 3020, + 3021, + 3022, + 3023, + 3024, + 3025, + 3026, + 3027, + 3028, + 3029, + 3030, + 3031, + 3032, + 3033, + 3034, + 3035, + 3036, + 3037, + 3038, + 3039, + 3040, + 3041, + 3042, + 3043, + 3044, + 3045, + 3046, + 3047, + 3048, + 3049, + 3050, + 3051, + 3052, + 3053, + 3054, + 3055, + 3056, + 3057, + 3058, + 3059, + 3060, + 3061, + 3062, + 3063, + 3064, + 3065, + 3066, + 3067, + 3068, + 3069, + 3070, + 3071, + 3072, + 3073, + 3074, + 3075, + 3076, + 3077, + 3078, + 3079, + 3080, + 3081, + 3082, + 3083, + 3084, + 3085, + 3086, + 3087, + 3088, + 3089, + 3090, + 3091, + 3092, + 3093, + 3094, + 3095, + 3096, + 3097, + 3098, + 3099, + 3100, + 3101, + 3102, + 3103, + 3104, + 3105, + 3106, + 3107, + 3108, + 3109, + 3110, + 3111, + 3112, + 3113, + 3114, + 3115, + 3116, + 3117, + 3118, + 3119, + 3120, + 3121, + 3122, + 3123, + 3124, + 3125, + 3126, + 3127, + 3128, + 3129, + 3130, + 3131, + 3132, + 3133, + 3134, + 3135, + 3136, + 3137, + 3138, + 3139, + 3140, + 3141, + 3142, + 3143, + 3144, + 3145, + 3146, + 3147, + 3148, + 3149, + 3150, + 3151, + 3152, + 3153, + 3154, + 3155, + 3156, + 3157, + 3158, + 3159, + 3160, + 3161, + 3162, + 3163, + 3164, + 3165, + 3166, + 3167, + 3168, + 3169, + 3170, + 3171, + 3172, + 3173, + 3174, + 3175, + 3176, + 3177, + 3178, + 3179, + 3180, + 3181, + 3182, + 3183, + 3184, + 3185, + 3186, + 3187, + 3188, + 3189, + 3190, + 3191, + 3192, + 3193, + 3194, + 3195, + 3196, + 3197, + 3198, + 3199, + 3200, + 3201, + 3202, + 3203, + 3204, + 3205, + 3206, + 3207, + 3208, + 3209, + 3210, + 3211, + 3212, + 3213, + 3214, + 3215, + 3216, + 3217, + 3218, + 3219, + 3220, + 3221, + 3222, + 3223, + 3224, + 3225, + 3226, + 3227, + 3228, + 3229, + 3230, + 3231, + 3232, + 3233, + 3234, + 3235, + 3236, + 3237, + 3238, + 3239, + 3240, + 3241, + 3242, + 3243, + 3244, + 3245, + 3246, + 3247, + 3248, + 3249, + 3250, + 3251, + 3252, + 3253, + 3254, + 3255, + 3256, + 3257, + 3258, + 3259, + 3260, + 3261, + 3262, + 3263, + 3264, + 3265, + 3266, + 3267, + 3268, + 3269, + 3270, + 3271, + 3272, + 3273, + 3274, + 3275, + 3276, + 3277, + 3278, + 3279, + 3280, + 3281, + 3282, + 3283, + 3284, + 3285, + 3286, + 3287, + 3288, + 3289, + 3290, + 3291, + 3292, + 3293, + 3294, + 3295, + 3296, + 3297, + 3298, + 3299, + 3300, + 3301, + 3302, + 3303, + 3304, + 3305, + 3306, + 3307, + 3308, + 3309, + 3310, + 3311, + 3312, + 3313, + 3314, + 3315, + 3316, + 3317, + 3318, + 3319, + 3320, + 3321, + 3322, + 3323, + 3324, + 3325, + 3326, + 3327, + 3328, + 3329, + 3330, + 3331, + 3332, + 3333, + 3334, + 3335, + 3336, + 3337, + 3338, + 3339, + 3340, + 3341, + 3342, + 3343, + 3344, + 3345, + 3346, + 3347, + 3348, + 3349, + 3350, + 3351, + 3352, + 3353, + 3354, + 3355, + 3356, + 3357, + 3358, + 3359, + 3360, + 3361, + 3362, + 3363, + 3364, + 3365, + 3366, + 3367, + 3368, + 3369, + 3370, + 3371, + 3372, + 3373, + 3374, + 3375, + 3376, + 3377, + 3378, + 3379, + 3380, + 3381, + 3382, + 3383, + 3384, + 3385, + 3386, + 3387, + 3388, + 3389, + 3390, + 3391, + 3392, + 3393, + 3394, + 3395, + 3396, + 3397, + 3398, + 3399, + 3400, + 3401, + 3402, + 3403, + 3404, + 3405, + 3406, + 3407, + 3408, + 3409, + 3410, + 3411, + 3412, + 3413, + 3414, + 3415, + 3416, + 3417, + 3418, + 3419, + 3420, + 3421, + 3422, + 3423, + 3424, + 3425, + 3426, + 3427, + 3428, + 3429, + 3430, + 3431, + 3432, + 3433, + 3434, + 3435, + 3436, + 3437, + 3438, + 3439, + 3440, + 3441, + 3442, + 3443, + 3444, + 3445, + 3446, + 3447, + 3448, + 3449, + 3450, + 3451, + 3452, + 3453, + 3454, + 3455, + 3456, + 3457, + 3458, + 3459, + 3460, + 3461, + 3462, + 3463, + 3464, + 3465, + 3466, + 3467, + 3468, + 3469, + 3470, + 3471, + 3472, + 3473, + 3474, + 3475, + 3476, + 3477, + 3478, + 3479, + 3480, + 3481, + 3482, + 3483, + 3484, + 3485, + 3486, + 3487, + 3488, + 3489, + 3490, + 3491, + 3492, + 3493, + 3494, + 3495, + 3496, + 3497, + 3498, + 3499, + 3500, + 3501, + 3502, + 3503, + 3504, + 3505, + 3506, + 3507, + 3508, + 3509, + 3510, + 3511, + 3512, + 3513, + 3514, + 3515, + 3516, + 3517, + 3518, + 3519, + 3520, + 3521, + 3522, + 3523, + 3524, + 3525, + 3526, + 3527, + 3528, + 3529, + 3530, + 3531, + 3532, + 3533, + 3534, + 3535, + 3536, + 3537, + 3538, + 3539, + 3540, + 3541, + 3542, + 3543, + 3544, + 3545, + 3546, + 3547, + 3548, + 3549, + 3550, + 3551, + 3552, + 3553, + 3554, + 3555, + 3556, + 3557, + 3558, + 3559, + 3560, + 3561, + 3562, + 3563, + 3564, + 3565, + 3566, + 3567, + 3568, + 3569, + 3570, + 3571, + 3572, + 3573, + 3574, + 3575, + 3576, + 3577, + 3578, + 3579, + 3580, + 3581, + 3582, + 3583, + 3584, + 3585, + 3586, + 3587, + 3588, + 3589, + 3590, + 3591, + 3592, + 3593, + 3594, + 3595, + 3596, + 3597, + 3598, + 3599, + 3600, + 3601, + 3602, + 3603, + 3604, + 3605, + 3606, + 3607, + 3608, + 3609, + 3610, + 3611, + 3612, + 3613, + 3614, + 3615, + 3616, + 3617, + 3618, + 3619, + 3620, + 3621, + 3622, + 3623, + 3624, + 3625, + 3626, + 3627, + 3628, + 3629, + 3630, + 3631, + 3632, + 3633, + 3634, + 3635, + 3636, + 3637, + 3638, + 3639, + 3640, + 3641, + 3642, + 3643, + 3644, + 3645, + 3646, + 3647, + 3648, + 3649, + 3650, + 3651, + 3652, + 3653, + 3654, + 3655, + 3656, + 3657, + 3658, + 3659, + 3660, + 3661, + 3662, + 3663, + 3664, + 3665, + 3666, + 3667, + 3668, + 3669, + 3670, + 3671, + 3672, + 3673, + 3674, + 3675, + 3676, + 3677, + 3678, + 3679, + 3680, + 3681, + 3682, + 3683, + 3684, + 3685, + 3686, + 3687, + 3688, + 3689, + 3690, + 3691, + 3692, + 3693, + 3694, + 3695, + 3696, + 3697, + 3698, + 3699, + 3700, + 3701, + 3702, + 3703, + 3704, + 3705, + 3706, + 3707, + 3708, + 3709, + 3710, + 3711, + 3712, + 3713, + 3714, + 3715, + 3716, + 3717, + 3718, + 3719, + 3720, + 3721, + 3722, + 3723, + 3724, + 3725, + 3726, + 3727, + 3728, + 3729, + 3730, + 3731, + 3732, + 3733, + 3734, + 3735, + 3736, + 3737, + 3738, + 3739, + 3740, + 3741, + 3742, + 3743, + 3744, + 3745, + 3746, + 3747, + 3748, + 3749, + 3750, + 3751, + 3752, + 3753, + 3754, + 3755, + 3756, + 3757, + 3758, + 3759, + 3760, + 3761, + 3762, + 3763, + 3764, + 3765, + 3766, + 3767, + 3768, + 3769, + 3770, + 3771, + 3772, + 3773, + 3774, + 3775, + 3776, + 3777, + 3778, + 3779, + 3780, + 3781, + 3782, + 3783, + 3784, + 3785, + 3786, + 3787, + 3788, + 3789, + 3790, + 3791, + 3792, + 3793, + 3794, + 3795, + 3796, + 3797, + 3798, + 3799, + 3800, + 3801, + 3802, + 3803, + 3804, + 3805, + 3806, + 3807, + 3808, + 3809, + 3810, + 3811, + 3812, + 3813, + 3814, + 3815, + 3816, + 3817, + 3818, + 3819, + 3820, + 3821, + 3822, + 3823, + 3824, + 3825, + 3826, + 3827, + 3828, + 3829, + 3830, + 3831, + 3832, + 3833, + 3834, + 3835, + 3836, + 3837, + 3838, + 3839, + 3840, + 3841, + 3842, + 3843, + 3844, + 3845, + 3846, + 3847, + 3848, + 3849, + 3850, + 3851, + 3852, + 3853, + 3854, + 3855, + 3856, + 3857, + 3858, + 3859, + 3860, + 3861, + 3862, + 3863, + 3864, + 3865, + 3866, + 3867, + 3868, + 3869, + 3870, + 3871, + 3872, + 3873, + 3874, + 3875, + 3876, + 3877, + 3878, + 3879, + 3880, + 3881, + 3882, + 3883, + 3884, + 3885, + 3886, + 3887, + 3888, + 3889, + 3890, + 3891, + 3892, + 3893, + 3894, + 3895, + 3896, + 3897, + 3898, + 3899, + 3900, + 3901, + 3902, + 3903, + 3904, + 3905, + 3906, + 3907, + 3908, + 3909, + 3910, + 3911, + 3912, + 3913, + 3914, + 3915, + 3916, + 3917, + 3918, + 3919, + 3920, + 3921, + 3922, + 3923, + 3924, + 3925, + 3926, + 3927, + 3928, + 3929, + 3930, + 3931, + 3932, + 3933, + 3934, + 3935, + 3936, + 3937, + 3938, + 3939, + 3940, + 3941, + 3942, + 3943, + 3944, + 3945, + 3946, + 3947, + 3948, + 3949, + 3950, + 3951, + 3952, + 3953, + 3954, + 3955, + 3956, + 3957, + 3958, + 3959, + 3960, + 3961, + 3962, + 3963, + 3964, + 3965, + 3966, + 3967, + 3968, + 3969, + 3970, + 3971, + 3972, + 3973, + 3974, + 3975, + 3976, + 3977, + 3978, + 3979, + 3980, + 3981, + 3982, + 3983, + 3984, + 3985, + 3986, + 3987, + 3988, + 3989, + 3990, + 3991, + 3992, + 3993, + 3994, + 3995, + 3996, + 3997, + 3998, + 3999, + 4000, + 4001, + 4002, + 4003, + 4004, + 4005, + 4006, + 4007, + 4008, + 4009, + 4010, + 4011, + 4012, + 4013, + 4014, + 4015, + 4016, + 4017, + 4018, + 4019, + 4020, + 4021, + 4022, + 4023, + 4024, + 4025, + 4026, + 4027, + 4028, + 4029, + 4030, + 4031, + 4032, + 4033, + 4034, + 4035, + 4036, + 4037, + 4038, + 4039, + 4040, + 4041, + 4042, + 4043, + 4044, + 4045, + 4046, + 4047, + 4048, + 4049, + 4050, + 4051, + 4052, + 4053, + 4054, + 4055, + 4056, + 4057, + 4058, + 4059, + 4060, + 4061, + 4062, + 4063, + 4064, + 4065, + 4066, + 4067, + 4068, + 4069, + 4070, + 4071, + 4072, + 4073, + 4074, + 4075, + 4076, + 4077, + 4078, + 4079, + 4080, + 4081, + 4082, + 4083, + 4084, + 4085, + 4086, + 4087, + 4088, + 4089, + 4090, + 4091, + 4092, + 4093, + 4094, + 4095, + 4096, + 4097, + 4098, + 4099, + 4100, + 4101, + 4102, + 4103, + 4104, + 4105, + 4106, + 4107, + 4108, + 4109, + 4110, + 4111, + 4112, + 4113, + 4114, + 4115, + 4116, + 4117, + 4118, + 4119, + 4120, + 4121, + 4122, + 4123, + 4124, + 4125, + 4126, + 4127, + 4128, + 4129, + 4130, + 4131, + 4132, + 4133, + 4134, + 4135, + 4136, + 4137, + 4138, + 4139, + 4140, + 4141, + 4142, + 4143, + 4144, + 4145, + 4146, + 4147, + 4148, + 4149, + 4150, + 4151, + 4152, + 4153, + 4154, + 4155, + 4156, + 4157, + 4158, + 4159, + 4160, + 4161, + 4162, + 4163, + 4164, + 4165, + 4166, + 4167, + 4168, + 4169, + 4170, + 4171, + 4172, + 4173, + 4174, + 4175, + 4176, + 4177, + 4178, + 4179, + 4180, + 4181, + 4182, + 4183, + 4184, + 4185, + 4186, + 4187, + 4188, + 4189, + 4190, + 4191, + 4192, + 4193, + 4194, + 4195, + 4196, + 4197, + 4198, + 4199, + 4200, + 4201, + 4202, + 4203, + 4204, + 4205, + 4206, + 4207, + 4208, + 4209, + 4210, + 4211, + 4212, + 4213, + 4214, + 4215, + 4216, + 4217, + 4218, + 4219, + 4220, + 4221, + 4222, + 4223, + 4224, + 4225, + 4226, + 4227, + 4228, + 4229, + 4230, + 4231, + 4232, + 4233, + 4234, + 4235, + 4236, + 4237, + 4238, + 4239, + 4240, + 4241, + 4242, + 4243, + 4244, + 4245, + 4246, + 4247, + 4248, + 4249, + 4250, + 4251, + 4252, + 4253, + 4254, + 4255, + 4256, + 4257, + 4258, + 4259, + 4260, + 4261, + 4262, + 4263, + 4264, + 4265, + 4266, + 4267, + 4268, + 4269, + 4270, + 4271, + 4272, + 4273, + 4274, + 4275, + 4276, + 4277, + 4278, + 4279, + 4280, + 4281, + 4282, + 4283, + 4284, + 4285, + 4286, + 4287, + 4288, + 4289, + 4290, + 4291, + 4292, + 4293, + 4294, + 4295, + 4296, + 4297, + 4298, + 4299, + 4300, + 4301, + 4302, + 4303, + 4304, + 4305, + 4306, + 4307, + 4308, + 4309, + 4310, + 4311, + 4312, + 4313, + 4314, + 4315, + 4316, + 4317, + 4318, + 4319, + 4320, + 4321, + 4322, + 4323, + 4324, + 4325, + 4326, + 4327, + 4328, + 4329, + 4330, + 4331, + 4332, + 4333, + 4334, + 4335, + 4336, + 4337, + 4338, + 4339, + 4340, + 4341, + 4342, + 4343, + 4344, + 4345, + 4346, + 4347, + 4348, + 4349, + 4350, + 4351, + 4352, + 4353, + 4354, + 4355, + 4356, + 4357, + 4358, + 4359, + 4360, + 4361, + 4362, + 4363, + 4364, + 4365, + 4366, + 4367, + 4368, + 4369, + 4370, + 4371, + 4372, + 4373, + 4374, + 4375, + 4376, + 4377, + 4378, + 4379, + 4380, + 4381, + 4382, + 4383, + 4384, + 4385, + 4386, + 4387, + 4388, + 4389, + 4390, + 4391, + 4392, + 4393, + 4394, + 4395, + 4396, + 4397, + 4398, + 4399, + 4400, + 4401, + 4402, + 4403, + 4404, + 4405, + 4406, + 4407, + 4408, + 4409, + 4410, + 4411, + 4412, + 4413, + 4414, + 4415, + 4416, + 4417, + 4418, + 4419, + 4420, + 4421, + 4422, + 4423, + 4424, + 4425, + 4426, + 4427, + 4428, + 4429, + 4430, + 4431, + 4432, + 4433, + 4434, + 4435, + 4436, + 4437, + 4438, + 4439, + 4440, + 4441, + 4442, + 4443, + 4444, + 4445, + 4446, + 4447, + 4448, + 4449, + 4450, + 4451, + 4452, + 4453, + 4454, + 4455, + 4456, + 4457, + 4458, + 4459, + 4460, + 4461, + 4462, + 4463, + 4464, + 4465, + 4466, + 4467, + 4468, + 4469, + 4470, + 4471, + 4472, + 4473, + 4474, + 4475, + 4476, + 4477, + 4478, + 4479, + 4480, + 4481, + 4482, + 4483, + 4484, + 4485, + 4486, + 4487, + 4488, + 4489, + 4490, + 4491, + 4492, + 4493, + 4494, + 4495, + 4496, + 4497, + 4498, + 4499, + 4500, + 4501, + 4502, + 4503, + 4504, + 4505, + 4506, + 4507, + 4508, + 4509, + 4510, + 4511, + 4512, + 4513, + 4514, + 4515, + 4516, + 4517, + 4518, + 4519, + 4520, + 4521, + 4522, + 4523, + 4524, + 4525, + 4526, + 4527, + 4528, + 4529, + 4530, + 4531, + 4532, + 4533, + 4534, + 4535, + 4536, + 4537, + 4538, + 4539, + 4540, + 4541, + 4542, + 4543, + 4544, + 4545, + 4546, + 4547, + 4548, + 4549, + 4550, + 4551, + 4552, + 4553, + 4554, + 4555, + 4556, + 4557, + 4558, + 4559, + 4560, + 4561, + 4562, + 4563, + 4564, + 4565, + 4566, + 4567, + 4568, + 4569, + 4570, + 4571, + 4572, + 4573, + 4574, + 4575, + 4576, + 4577, + 4578, + 4579, + 4580, + 4581, + 4582, + 4583, + 4584, + 4585, + 4586, + 4587, + 4588, + 4589, + 4590, + 4591, + 4592, + 4593, + 4594, + 4595, + 4596, + 4597, + 4598, + 4599, + 4600, + 4601, + 4602, + 4603, + 4604, + 4605, + 4606, + 4607, + 4608, + 4609, + 4610, + 4611, + 4612, + 4613, + 4614, + 4615, + 4616, + 4617, + 4618, + 4619, + 4620, + 4621, + 4622, + 4623, + 4624, + 4625, + 4626, + 4627, + 4628, + 4629, + 4630, + 4631, + 4632, + 4633, + 4634, + 4635, + 4636, + 4637, + 4638, + 4639, + 4640, + 4641, + 4642, + 4643, + 4644, + 4645, + 4646, + 4647, + 4648, + 4649, + 4650, + 4651, + 4652, + 4653, + 4654, + 4655, + 4656, + 4657, + 4658, + 4659, + 4660, + 4661, + 4662, + 4663, + 4664, + 4665, + 4666, + 4667, + 4668, + 4669, + 4670, + 4671, + 4672, + 4673, + 4674, + 4675, + 4676, + 4677, + 4678, + 4679, + 4680, + 4681, + 4682, + 4683, + 4684, + 4685, + 4686, + 4687, + 4688, + 4689, + 4690, + 4691, + 4692, + 4693, + 4694, + 4695, + 4696, + 4697, + 4698, + 4699, + 4700, + 4701, + 4702, + 4703, + 4704, + 4705, + 4706, + 4707, + 4708, + 4709, + 4710, + 4711, + 4712, + 4713, + 4714, + 4715, + 4716, + 4717, + 4718, + 4719, + 4720, + 4721, + 4722, + 4723, + 4724, + 4725, + 4726, + 4727, + 4728, + 4729, + 4730, + 4731, + 4732, + 4733, + 4734, + 4735, + 4736, + 4737, + 4738, + 4739, + 4740, + 4741, + 4742, + 4743, + 4744, + 4745, + 4746, + 4747, + 4748, + 4749, + 4750, + 4751, + 4752, + 4753, + 4754, + 4755, + 4756, + 4757, + 4758, + 4759, + 4760, + 4761, + 4762, + 4763, + 4764, + 4765, + 4766, + 4767, + 4768, + 4769, + 4770, + 4771, + 4772, + 4773, + 4774, + 4775, + 4776, + 4777, + 4778, + 4779, + 4780, + 4781, + 4782, + 4783, + 4784, + 4785, + 4786, + 4787, + 4788, + 4789, + 4790, + 4791, + 4792, + 4793, + 4794, + 4795, + 4796, + 4797, + 4798, + 4799, + 4800, + 4801, + 4802, + 4803, + 4804, + 4805, + 4806, + 4807, + 4808, + 4809, + 4810, + 4811, + 4812, + 4813, + 4814, + 4815, + 4816, + 4817, + 4818, + 4819, + 4820, + 4821, + 4822, + 4823, + 4824, + 4825, + 4826, + 4827, + 4828, + 4829, + 4830, + 4831, + 4832, + 4833, + 4834, + 4835, + 4836, + 4837, + 4838, + 4839, + 4840, + 4841, + 4842, + 4843, + 4844, + 4845, + 4846, + 4847, + 4848, + 4849, + 4850, + 4851, + 4852, + 4853, + 4854, + 4855, + 4856, + 4857, + 4858, + 4859, + 4860, + 4861, + 4862, + 4863, + 4864, + 4865, + 4866, + 4867, + 4868, + 4869, + 4870, + 4871, + 4872, + 4873, + 4874, + 4875, + 4876, + 4877, + 4878, + 4879, + 4880, + 4881, + 4882, + 4883, + 4884, + 4885, + 4886, + 4887, + 4888, + 4889, + 4890, + 4891, + 4892, + 4893, + 4894, + 4895, + 4896, + 4897, + 4898, + 4899, + 4900, + 4901, + 4902, + 4903, + 4904, + 4905, + 4906, + 4907, + 4908, + 4909, + 4910, + 4911, + 4912, + 4913, + 4914, + 4915, + 4916, + 4917, + 4918, + 4919, + 4920, + 4921, + 4922, + 4923, + 4924, + 4925, + 4926, + 4927, + 4928, + 4929, + 4930, + 4931, + 4932, + 4933, + 4934, + 4935, + 4936, + 4937, + 4938, + 4939, + 4940, + 4941, + 4942, + 4943, + 4944, + 4945, + 4946, + 4947, + 4948, + 4949, + 4950, + 4951, + 4952, + 4953, + 4954, + 4955, + 4956, + 4957, + 4958, + 4959, + 4960, + 4961, + 4962, + 4963, + 4964, + 4965, + 4966, + 4967, + 4968, + 4969, + 4970, + 4971, + 4972, + 4973, + 4974, + 4975, + 4976, + 4977, + 4978, + 4979, + 4980, + 4981, + 4982, + 4983, + 4984, + 4985, + 4986, + 4987, + 4988, + 4989, + 4990, + 4991, + 4992, + 4993, + 4994, + 4995, + 4996, + 4997, + 4998, + 4999 + ], + "y": [ + 0.09251299779862165, + 0.08849240373820066, + 0.08530518691986799, + 0.08276675175875425, + 0.08070277608931065, + 0.07898341724649072, + 0.0775245251134038, + 0.0762636000290513, + 0.0751494956202805, + 0.07414877880364656, + 0.07321181381121278, + 0.07233765488490462, + 0.0715181902050972, + 0.07073100283741951, + 0.06995957996696234, + 0.06920884177088737, + 0.06846888596192002, + 0.06774035608395934, + 0.06702948175370693, + 0.0663311593234539, + 0.06563788373023272, + 0.06494702585041523, + 0.0642603705637157, + 0.0635796133428812, + 0.06291445018723607, + 0.06225462257862091, + 0.061594339553266764, + 0.060939161106944084, + 0.060284593142569065, + 0.05963605176657438, + 0.0589938354678452, + 0.05835440941154957, + 0.05771357472985983, + 0.057074494659900665, + 0.056444273330271244, + 0.05582111328840256, + 0.05520240031182766, + 0.054582297801971436, + 0.05396359879523516, + 0.05334598571062088, + 0.052730702329427004, + 0.05212014773860574, + 0.05151033867150545, + 0.050905171781778336, + 0.05030821310356259, + 0.049713144078850746, + 0.04912045178934932, + 0.04852979863062501, + 0.047944032587110996, + 0.04737226199358702, + 0.04679687600582838, + 0.04622616060078144, + 0.04565630713477731, + 0.045094254426658154, + 0.04453384503722191, + 0.043978434056043625, + 0.04343007644638419, + 0.04288957081735134, + 0.042347694747149944, + 0.04180950718000531, + 0.04127575131133199, + 0.040742368903011084, + 0.04021542798727751, + 0.03969454858452082, + 0.039171169279143214, + 0.03865212365053594, + 0.03814444621093571, + 0.03764522494748235, + 0.037149727111682296, + 0.03666122583672404, + 0.03617403446696699, + 0.03570060059428215, + 0.035233173286542296, + 0.03476740210317075, + 0.034311390249058604, + 0.033858463168144226, + 0.03341159364208579, + 0.0329653846565634, + 0.032526900758966804, + 0.032095428789034486, + 0.03166673588566482, + 0.03124215640127659, + 0.030824447516351938, + 0.030411635991185904, + 0.030007770750671625, + 0.02961126249283552, + 0.029211070388555527, + 0.02882763184607029, + 0.02844668901525438, + 0.028065925231203437, + 0.02769793593324721, + 0.027328372467309237, + 0.026968684513121843, + 0.026608862448483706, + 0.026255355682224035, + 0.02590619563125074, + 0.025567062199115753, + 0.02522976160980761, + 0.02489606966264546, + 0.024566130945459008, + 0.024244420928880572, + 0.023930976632982492, + 0.023613424971699715, + 0.023304352536797523, + 0.022998304571956396, + 0.022695455700159073, + 0.022402968257665634, + 0.022107405588030815, + 0.021818448090925813, + 0.021539105335250497, + 0.021259072935208678, + 0.020990310236811638, + 0.020719942403957248, + 0.02045117795933038, + 0.020181914209388196, + 0.0199193392181769, + 0.01965922408271581, + 0.01940500014461577, + 0.019156830734573305, + 0.0189097432885319, + 0.018675069441087544, + 0.01843159436248243, + 0.01819428405724466, + 0.017957875970751047, + 0.017729381565004587, + 0.017504215356893837, + 0.017278317362070084, + 0.017066765227355063, + 0.016856214380823076, + 0.01664052007254213, + 0.016432812670245767, + 0.0162297694478184, + 0.016026978963054717, + 0.015823881258256733, + 0.015631666057743132, + 0.015445399680174887, + 0.015261481050401926, + 0.015075315604917705, + 0.014880692004226148, + 0.014705912908539176, + 0.01451780740171671, + 0.014339405577629805, + 0.014164692838676274, + 0.013998195761814713, + 0.013840808882378042, + 0.013668550061993301, + 0.013501057866960764, + 0.013344364357180893, + 0.013177391840144992, + 0.013020859565585852, + 0.012858417234383523, + 0.012710582464933395, + 0.012570849503390491, + 0.01242425397504121, + 0.012283724616281688, + 0.01213854260277003, + 0.011994202388450503, + 0.011840761755593121, + 0.011717960820533335, + 0.011578786768950522, + 0.011438862420618534, + 0.011315791518427432, + 0.011184806819073856, + 0.011052321759052575, + 0.010938050807453692, + 0.010812997235916555, + 0.010690962779335678, + 0.01056944887386635, + 0.01044330996228382, + 0.01033100177301094, + 0.010205188707914203, + 0.010100923769641668, + 0.009987580822780728, + 0.009877925156615674, + 0.009769588068593293, + 0.009660021110903472, + 0.009558379126247019, + 0.00946316757472232, + 0.009369797306135297, + 0.009278250916395336, + 0.009171471116133034, + 0.009066723345313221, + 0.008961206127423793, + 0.008862745889928192, + 0.00876770622562617, + 0.008681581472046673, + 0.008584557916037738, + 0.00849784241290763, + 0.00842379848472774, + 0.008341746404767036, + 0.008268843463156372, + 0.008178272109944373, + 0.008086001733317971, + 0.008006320043932647, + 0.00791311264038086, + 0.00783490139292553, + 0.007774628174956888, + 0.007703272858634591, + 0.007609604741446674, + 0.007533883210271597, + 0.007469074393156916, + 0.00739826651988551, + 0.007304621685761958, + 0.007241239014547318, + 0.007167937990743667, + 0.007105317956302315, + 0.007042981567792594, + 0.006967507011722773, + 0.00690591154852882, + 0.006836316199041903, + 0.0067775200004689395, + 0.00671770959161222, + 0.006656271929387003, + 0.006599541055038571, + 0.006539262249134481, + 0.006482964439783245, + 0.006425318191759288, + 0.0063688759109936655, + 0.006297691143117845, + 0.006257154745981097, + 0.00620454375166446, + 0.006153759895823896, + 0.006105243461206555, + 0.006054314260836691, + 0.006008693133480847, + 0.005946496268734336, + 0.005879453208763152, + 0.005839316814672202, + 0.005803355015814304, + 0.005749791860580444, + 0.005686198943294585, + 0.00562963995616883, + 0.005579536780714989, + 0.005533461750019342, + 0.00548079569125548, + 0.005446553986985236, + 0.005406637763371691, + 0.005358842172427103, + 0.005320228403434157, + 0.005274609837215394, + 0.0052207861735951155, + 0.005178299121325836, + 0.0051401737437117845, + 0.005112312501296401, + 0.005074505665106699, + 0.00502809471799992, + 0.00498125224839896, + 0.0049510233802720904, + 0.004921008017845452, + 0.0048805379192344844, + 0.004840212088311091, + 0.004799581249244511, + 0.00477188901277259, + 0.004741766257211566, + 0.004707189655164257, + 0.004687157168518752, + 0.004640939179807901, + 0.0046165633539203554, + 0.004592067358316854, + 0.004556435713311657, + 0.0045018186792731285, + 0.004454045440070331, + 0.004421710851602256, + 0.004395290248794481, + 0.004366791486972943, + 0.004320541542256251, + 0.004292902245651931, + 0.0042646502843126655, + 0.004231839062413201, + 0.00419704508385621, + 0.004179735260549933, + 0.004166868282482028, + 0.004147078318055719, + 0.004116428171982989, + 0.004077311779838055, + 0.004040564119350165, + 0.004021386383101344, + 0.003988090960774571, + 0.003962673305068165, + 0.00394437336944975, + 0.003929200523998588, + 0.003899646282661706, + 0.0038734478584956378, + 0.0038477812195196748, + 0.0038164238503668457, + 0.0038029640272725374, + 0.0037765279412269592, + 0.0037423286703415215, + 0.0037075016007293016, + 0.0036889357725158334, + 0.0036524860188364983, + 0.0036273433943279088, + 0.0036096855474170297, + 0.0035996644874103367, + 0.0035750239912886173, + 0.003561131248716265, + 0.0035367569653317332, + 0.003505945875076577, + 0.003467969916528091, + 0.0034491938713472337, + 0.0034365870524197817, + 0.003431182209169492, + 0.0034105588565580547, + 0.0033762591774575412, + 0.003358266199938953, + 0.0033248041581828147, + 0.003307127073640004, + 0.003293174144346267, + 0.003285129991127178, + 0.0032624058076180518, + 0.0032331200782209635, + 0.0032083072292152792, + 0.003192472009686753, + 0.003179003280820325, + 0.0031636935309506953, + 0.0031283224234357476, + 0.0031130116840358824, + 0.003104158880887553, + 0.0030974237306509167, + 0.0030872072966303676, + 0.0030646345985587686, + 0.0030492914374917746, + 0.003031476546311751, + 0.00301208344171755, + 0.0029968254966661334, + 0.002960297977551818, + 0.0029466135893017054, + 0.0029346917872317135, + 0.002915403340011835, + 0.0028842159954365343, + 0.002857269864762202, + 0.0028445158095564693, + 0.0028304049628786743, + 0.002814337407471612, + 0.002803042996674776, + 0.0027919231506530195, + 0.0027871728234458715, + 0.002783105941489339, + 0.002779921080218628, + 0.0027738014759961516, + 0.002749799401499331, + 0.002717637602472678, + 0.0026843470404855907, + 0.002662660539499484, + 0.002645142376422882, + 0.002635546581586823, + 0.0026241043087793514, + 0.002614477984025143, + 0.00260159550816752, + 0.002580142070655711, + 0.0025724523584358394, + 0.0025735974923009053, + 0.0025768320774659514, + 0.0025597170169930905, + 0.0025307277537649497, + 0.0025112245057243854, + 0.0024963035248219967, + 0.002482937998138368, + 0.0024698282359167933, + 0.0024557570286560804, + 0.0024500308645656332, + 0.002445431222440675, + 0.00244296932942234, + 0.0024282660451717675, + 0.0024109822552418336, + 0.0024112105747917667, + 0.0024110773083521053, + 0.002395584437181242, + 0.0023680068989051506, + 0.0023482046235585585, + 0.002328149843378924, + 0.0023182379954960197, + 0.0023013720201561227, + 0.0022923675423953682, + 0.0022850298264529556, + 0.0022698845277773216, + 0.0022611813474213704, + 0.002258229229482822, + 0.002256617517559789, + 0.0022534907329827547, + 0.002251792058814317, + 0.002233382809208706, + 0.0022009601234458387, + 0.0021930053626419976, + 0.0021889592171646655, + 0.002173579516238533, + 0.0021646240347763523, + 0.002161821015761234, + 0.002145131671568379, + 0.0021230164711596444, + 0.0021130079112481326, + 0.002110728222760372, + 0.0021004263107897714, + 0.002090724970912561, + 0.002090163921820931, + 0.002087003391352482, + 0.0020813761511817575, + 0.002068547983071767, + 0.0020530821493593976, + 0.0020371744903968647, + 0.0020228293433319777, + 0.00201853082398884, + 0.0020118547981837764, + 0.001994553691474721, + 0.001973261605598964, + 0.0019626424764283, + 0.0019557839550543576, + 0.0019515770254656672, + 0.001954374965862371, + 0.0019543052912922576, + 0.001953777769813314, + 0.0019445287180133164, + 0.0019448688690317795, + 0.001935310530825518, + 0.001937685112352483, + 0.0019422988698352128, + 0.0019448343955446035, + 0.0019237259111832827, + 0.0019065098313149065, + 0.0018841877608792856, + 0.0018675889150472358, + 0.0018577365699457005, + 0.0018471025105100125, + 0.0018416159582557157, + 0.0018331515457248315, + 0.0018161941261496395, + 0.0017990593478316441, + 0.0017892078758450225, + 0.0017795445455703884, + 0.001773680793121457, + 0.0017729061510181054, + 0.0017689543456071988, + 0.0017586221947567537, + 0.0017418679490219802, + 0.0017342876381007954, + 0.001742936932714656, + 0.0017460809176554903, + 0.0017494331259513274, + 0.0017347033863188699, + 0.001723677123663947, + 0.0017191596125485376, + 0.0017188265483127907, + 0.001714767306111753, + 0.0016939166671363637, + 0.001687144351308234, + 0.0016766062763053924, + 0.001671615638770163, + 0.0016680658445693552, + 0.0016591219755355269, + 0.001642503179027699, + 0.001649867874220945, + 0.001659087822190486, + 0.001650508726015687, + 0.0016467822715640068, + 0.0016550524160265923, + 0.0016589940496487543, + 0.0016565911937505007, + 0.0016480695630889386, + 0.001621552713913843, + 0.001587572493008338, + 0.0015789909521117806, + 0.0015793222264619544, + 0.0015765383723191917, + 0.001569924206705764, + 0.0015570803370792419, + 0.0015454647073056549, + 0.0015409265324706212, + 0.0015427665639435872, + 0.001531357382191345, + 0.0015173817955655977, + 0.0015165337536018342, + 0.0015128832455957308, + 0.0014986621245043352, + 0.0014891532046021894, + 0.0014859677758067846, + 0.0014894441555952653, + 0.0014886544813634828, + 0.0014743734791409224, + 0.0014654740953119472, + 0.0014644708426203579, + 0.0014705208304803818, + 0.0014847461134195328, + 0.0015020768478279933, + 0.0014951704506529495, + 0.001465474342694506, + 0.0014378279738593847, + 0.0014301493065431714, + 0.001440830179490149, + 0.001448916780645959, + 0.0014344837254611775, + 0.0014190092770149931, + 0.0014220270822988823, + 0.00141766550950706, + 0.0014032530307304114, + 0.0014010240556672215, + 0.0013871795090381056, + 0.0013697358663193882, + 0.0013574515687651, + 0.0013625425563077442, + 0.0013683853903785348, + 0.001370955680613406, + 0.0013656127484864555, + 0.0013705178062082268, + 0.0013712226937059313, + 0.0013648582898895256, + 0.0013525400645448826, + 0.0013456487649818882, + 0.0013437538509606384, + 0.0013358774231164716, + 0.0013389038649620488, + 0.0013580675440607592, + 0.0013719704147661105, + 0.0013639467651955783, + 0.0013431262559606694, + 0.0013248677278170362, + 0.0013219462416600436, + 0.0013250034826342016, + 0.0013223644709796645, + 0.0013178439330658875, + 0.0012976406724192202, + 0.0012737565994029865, + 0.001274333437322639, + 0.0012779466851498, + 0.0012731526294373907, + 0.0012763346749125049, + 0.001271665380045306, + 0.001264548918697983, + 0.0012640028944588266, + 0.001262114463315811, + 0.0012389355615596287, + 0.001242271377122961, + 0.0012599968176800758, + 0.001251632820640225, + 0.0012418066689861007, + 0.001241809717612341, + 0.0012374601647024974, + 0.0012233012312208302, + 0.0012139617756474763, + 0.0012069010772393085, + 0.0012009835554636084, + 0.0011917393494513817, + 0.001194087089970708, + 0.0012006484612356871, + 0.0011984433003817685, + 0.0011896644791704603, + 0.0011666764112305827, + 0.001160106243332848, + 0.001160308689577505, + 0.001167272865131963, + 0.0011663975528790615, + 0.001156660437118262, + 0.0011464260460343212, + 0.0011453845800133422, + 0.0011478633168735541, + 0.0011566527391551062, + 0.0011717967281583697, + 0.0011916032453882508, + 0.0011942108831135556, + 0.001197313002194278, + 0.0011950691550737247, + 0.0011831353403977118, + 0.0011562999497982673, + 0.0011558290498214774, + 0.0011602392260101624, + 0.0011553839503903873, + 0.0011593330855248496, + 0.0011578141056816094, + 0.0011372862645657733, + 0.0011249416202190332, + 0.0011305224397801794, + 0.001132518460508436, + 0.0011188698481419124, + 0.0011129908452858217, + 0.0011097383248852566, + 0.0011011574606527574, + 0.0010857678717002273, + 0.001077341934433207, + 0.0010716238539316691, + 0.001058761241438333, + 0.001043328724335879, + 0.0010354335536248982, + 0.001033045191434212, + 0.0010371002936153673, + 0.0010373654586146586, + 0.0010329444048693404, + 0.001035845562000759, + 0.0010409712194814347, + 0.0010438891695230268, + 0.0010539312279433943, + 0.0010738829005276784, + 0.0010909206393989734, + 0.001089430348656606, + 0.001078214387234766, + 0.0010822225667652674, + 0.0010775243572425097, + 0.0010685051820473745, + 0.0010608316661091521, + 0.0010501546566956677, + 0.0010408294401713647, + 0.0010308295022696257, + 0.0010158663790207356, + 0.0010062062428914942, + 0.0010033807338913903, + 0.0009947960570571013, + 0.0009786805385374464, + 0.000972119509242475, + 0.0009658819908509031, + 0.0009666112819104455, + 0.0009708872021292336, + 0.0009737744985613972, + 0.0009800610278034583, + 0.0009949165832949802, + 0.001003196433885023, + 0.0010115820623468608, + 0.001016879359667655, + 0.0010100020517711528, + 0.000991581822745502, + 0.0009822573847486638, + 0.000995087561022956, + 0.0010026599848060869, + 0.0009942403703462332, + 0.0009800702828215435, + 0.0009634779198677279, + 0.0009541543913655914, + 0.0009586023661540821, + 0.000969857384916395, + 0.0009729792509460822, + 0.0009652935841586441, + 0.0009485492773819715, + 0.0009410330385435373, + 0.0009477007843088359, + 0.0009562607665429823, + 0.0009505936104687862, + 0.0009246337722288445, + 0.0009148920144070871, + 0.0009227733753505163, + 0.0009238749917130917, + 0.0009134644278674386, + 0.0009198304760502651, + 0.0009298414588556625, + 0.0009260461301892065, + 0.0009212752411258407, + 0.000921853214094881, + 0.0009234508033841848, + 0.0009109967722906731, + 0.000909908878384158, + 0.0009110756509471685, + 0.00091220664762659, + 0.0009155061561614275, + 0.0009071431268239394, + 0.0008867938231560402, + 0.0008743913276703097, + 0.0008754094887990505, + 0.0008754073351155967, + 0.0008767376639298163, + 0.0008821105002425611, + 0.0008994758463813923, + 0.0009082998876692727, + 0.0009059209260158241, + 0.0008978922051028349, + 0.0008986470784293488, + 0.0009048165957210585, + 0.0009069761144928634, + 0.0009102856056415476, + 0.0009283056133426726, + 0.0009240017607226036, + 0.0008983082516351715, + 0.0008844026233418845, + 0.0008860788511810824, + 0.0008845329211908393, + 0.0008813030362944119, + 0.0008787391052464955, + 0.0008711653790669516, + 0.0008538794500054792, + 0.0008460300887236372, + 0.0008516722591593862, + 0.0008566171964048408, + 0.0008524995428160764, + 0.0008480906544718891, + 0.0008544656011508778, + 0.0008546754834242165, + 0.0008408967914874665, + 0.0008232267427956685, + 0.0008145506290020421, + 0.0008114659431157634, + 0.0008092945136013441, + 0.0008105040251393802, + 0.0008075274818111211, + 0.0008054799764067866, + 0.000811206795333419, + 0.0008210346204577945, + 0.0008271342303487472, + 0.0008300847694044933, + 0.0008331266362802126, + 0.0008247928853961639, + 0.0008162722442648374, + 0.0008117611505440436, + 0.0008084734290605411, + 0.0008077098245848902, + 0.0008141513826558366, + 0.0008164640748873353, + 0.0008098672624328174, + 0.0008016592400963418, + 0.0007912470828159712, + 0.000785351701779291, + 0.0007769753356114961, + 0.0007640415351488627, + 0.000761733936087694, + 0.0007711137732258067, + 0.0007832098781364039, + 0.0007899006013758481, + 0.0007895788512541912, + 0.0007886298844823614, + 0.0007931108993943781, + 0.0008010917081264779, + 0.0008114950614981353, + 0.0008218032598961145, + 0.0008295941661344841, + 0.0008267006414826028, + 0.0008055081343627535, + 0.0007892493376857601, + 0.000796549538790714, + 0.000795526459114626, + 0.0007801381216268055, + 0.0007704812232987024, + 0.0007648616738151759, + 0.000754820772272069, + 0.0007438515895046294, + 0.0007420217443723232, + 0.0007509051356464624, + 0.0007449678887496702, + 0.0007320878212340176, + 0.0007331195592996664, + 0.0007392233455902897, + 0.0007442368951160461, + 0.0007378895388683304, + 0.000731695479771588, + 0.0007370289386017248, + 0.0007453399302903563, + 0.0007510705254389904, + 0.00075846698746318, + 0.0007728313212282956, + 0.0007856296797399409, + 0.0007956916524562985, + 0.0007866622545407154, + 0.0007731235891696997, + 0.0007641127085662447, + 0.0007660437331651337, + 0.0007707925178692676, + 0.0007738789427094162, + 0.0007635831498191692, + 0.0007552601528004743, + 0.0007541888917330652, + 0.0007545348344137892, + 0.0007514959797845222, + 0.0007473037403542548, + 0.0007511792209697887, + 0.000747076170227956, + 0.0007356999558396637, + 0.0007294957540580072, + 0.000725564757885877, + 0.0007221130435937084, + 0.0007195105863502249, + 0.0007086266086844262, + 0.0007048483275866602, + 0.0007025099439488258, + 0.0006894421640026849, + 0.0006766259648429696, + 0.0006800403934903443, + 0.000681971028825501, + 0.0006799568109272514, + 0.0006796178749937098, + 0.0006859649038233329, + 0.0006962757397559471, + 0.0007048816296446603, + 0.0007084398093866184, + 0.0007069402636261657, + 0.0006982232225709595, + 0.0006877993655507453, + 0.000693855676217936, + 0.0007053974695736542, + 0.000710633015842177, + 0.0007090955987223424, + 0.0007082914526108652, + 0.0007039039628580213, + 0.0006990997426328249, + 0.0006985370855545625, + 0.0007002955608186312, + 0.0007079583738232031, + 0.0007140916495700367, + 0.0007135910273063928, + 0.0007137622887967154, + 0.0007169306409195997, + 0.000722245684301015, + 0.0007219491017167456, + 0.0007210381227196194, + 0.0007166465220507234, + 0.0007031032946542837, + 0.0006877651940158103, + 0.000685557952238014, + 0.0006904192341607995, + 0.0006850610807305202, + 0.0006801015842938796, + 0.0006580851913895458, + 0.0006345291185425594, + 0.0006372547723003663, + 0.0006372674688464031, + 0.0006266207601584028, + 0.0006189622472447809, + 0.0006151680499897338, + 0.0006091311333875638, + 0.0006072988326195627, + 0.0006043803150532767, + 0.0006083405969548039, + 0.0006152532805572264, + 0.0006218355192686431, + 0.000633266809018096, + 0.000649321864329977, + 0.0006636070174863562, + 0.0006793263710278552, + 0.0006832138315076008, + 0.0006776959889975842, + 0.0006750231514160987, + 0.0006739881064277142, + 0.0006875268991279881, + 0.0007081089424900711, + 0.0007275391471921466, + 0.0007115080807125196, + 0.0006703883518639486, + 0.000656316817185143, + 0.0006684976360702422, + 0.0006769707397324964, + 0.0006851919461041689, + 0.0006865397226647474, + 0.0006694422518194187, + 0.0006751352993887849, + 0.000703218269336503, + 0.0006995368894422427, + 0.0006773584136681166, + 0.0006506263343908358, + 0.000630315589660313, + 0.0006270703343034256, + 0.0006293049627856817, + 0.0006255247026274446, + 0.0006170736633066554, + 0.0006076876234146766, + 0.0006061077692720573, + 0.0006089963608246762, + 0.0006036442282493226, + 0.0005970899510430172, + 0.0006020103282935452, + 0.0006049765033822041, + 0.0006066500136512332, + 0.00060788242626586, + 0.0006046505804988556, + 0.0006027397139405366, + 0.0006014148748363368, + 0.0005935886911174748, + 0.0005804240972793195, + 0.0005768042974523269, + 0.0005872366054973099, + 0.0006017732812324539, + 0.0006085704553697724, + 0.000611118259257637, + 0.0006093419178796466, + 0.0006031117991369683, + 0.0005973789229756221, + 0.0005966833814454731, + 0.0006068923103157431, + 0.0006269181321840733, + 0.0006395568780135363, + 0.0006438072887249291, + 0.0006360354636854026, + 0.0006258766225073487, + 0.0006179593619890511, + 0.0006271266793191899, + 0.0006351900519803166, + 0.0006154768889246043, + 0.0005961589849903248, + 0.0005913909481023438, + 0.0005938342437730171, + 0.0005862734287802596, + 0.0005751931748818606, + 0.0005791300791315734, + 0.0005916037407587282, + 0.0005991160069243051, + 0.0006065833586035296, + 0.0006213764900167007, + 0.0006309849231911357, + 0.0006364755499816965, + 0.0006318920823105145, + 0.0006152359674160834, + 0.0006052190801710822, + 0.0006104631538619287, + 0.000618049489276018, + 0.0006165169725136366, + 0.0006113374620326795, + 0.0006003267553751357, + 0.000596765832597157, + 0.0005978273875371087, + 0.000585917350690579, + 0.0005736237617384177, + 0.0005680437971022911, + 0.0005625807534670457, + 0.0005593732203124091, + 0.0005564977946050931, + 0.0005496816811501049, + 0.0005382180534070358, + 0.0005314967420417815, + 0.0005298429532558657, + 0.0005273842652968597, + 0.0005283604841679335, + 0.0005315528869687114, + 0.000532358779310016, + 0.0005340803072613198, + 0.0005458836967591196, + 0.0005540475540328771, + 0.0005532756840693764, + 0.0005520064842130523, + 0.000546365470654564, + 0.0005357255540729966, + 0.0005274120521789882, + 0.0005255849209788721, + 0.0005316081369528547, + 0.0005372035666368902, + 0.0005397268578235526, + 0.0005448606898426078, + 0.000548355863429606, + 0.0005541039390664082, + 0.0005592455418081954, + 0.000566777991480194, + 0.0005761372303823009, + 0.0005844961815455463, + 0.0005815030235680752, + 0.0005685006253770553, + 0.0005696422631444875, + 0.0005769744420831557, + 0.0005748645489802584, + 0.000565994832868455, + 0.0005642351243295707, + 0.0005656921239278745, + 0.0005634756598738022, + 0.0005651595638482831, + 0.0005690742000297178, + 0.0005644767079502344, + 0.0005640980380121619, + 0.0005722239038732368, + 0.0005796358382212929, + 0.0005682978189724963, + 0.0005640594645228703, + 0.0005711435842385981, + 0.0005787789632449858, + 0.0005790666546090506, + 0.0005851551686646417, + 0.0005992509541101754, + 0.0005841975835210178, + 0.0005498154750966933, + 0.0005377037632570136, + 0.000544287686352618, + 0.0005429161610663868, + 0.0005306494313117582, + 0.0005193153629079461, + 0.0005232188123045489, + 0.000528808988747187, + 0.0005228977497608867, + 0.0005123449336679187, + 0.0005043440287408885, + 0.0004993535767425783, + 0.0004953026218572631, + 0.0004916708203381859, + 0.0004877759638475254, + 0.00048239866009680554, + 0.0004770536834257655, + 0.00047309121873695403, + 0.00047513144090771675, + 0.00047210925913532265, + 0.0004675227573898155, + 0.00047024361265357584, + 0.0004697869735537097, + 0.00046792735884082504, + 0.00046640650180052035, + 0.0004654602053051349, + 0.00046628753989352845, + 0.0004699120436271187, + 0.000478656842460623, + 0.0004942030282109044, + 0.0005270127876428887, + 0.000564858244615607, + 0.0005955373417236842, + 0.0006084831911721267, + 0.0006012525846017525, + 0.0005877233706996776, + 0.0005911513871978968, + 0.0006247244782571215, + 0.0006531937433464918, + 0.0006430429821193684, + 0.0005891660111956298, + 0.0005603844438155647, + 0.0005755602469434962, + 0.0005822468810947612, + 0.0005517072750080843, + 0.0005211210846027825, + 0.000522432859725086, + 0.000527719206729671, + 0.0005111474565637764, + 0.000494379288284108, + 0.0004903813678538427, + 0.00048632457401254214, + 0.00047714001266285777, + 0.0004730915497930255, + 0.0004749835752591025, + 0.00047376160000567324, + 0.0004722632475022692, + 0.00046794901572866365, + 0.00047213213838404045, + 0.00048252890701405704, + 0.0004805409844266251, + 0.00047161018301267177, + 0.0004728061867353972, + 0.0004712285262939986, + 0.0004621147600119002, + 0.00045896249503130093, + 0.00046520399337168783, + 0.00047903148879413493, + 0.0004977670723746996, + 0.0005176177837711293, + 0.0005473087076097727, + 0.0005616111047856975, + 0.000563489618798485, + 0.0005502120875462424, + 0.0005445461356430314, + 0.0005461435102915857, + 0.0005615604713966604, + 0.000558609921426978, + 0.0005385624572227243, + 0.0005171043776499573, + 0.0005047251179348677, + 0.0005057462731201667, + 0.0005067237070761621, + 0.0004937100638926495, + 0.00047462285874644294, + 0.00046478001240757294, + 0.00046690712406416424, + 0.0004560836423479486, + 0.000442475124145858, + 0.00044139962483313866, + 0.00043975800508633256, + 0.00043214163451921195, + 0.0004278416890883818, + 0.0004275897954357788, + 0.00042251174090779386, + 0.00042310715434723534, + 0.000428370367444586, + 0.000432665638072649, + 0.00044058879939257167, + 0.00045111646613804623, + 0.0004664836305892095, + 0.00048357391278841533, + 0.0004943750500387978, + 0.0004902345317532308, + 0.00047931307199178264, + 0.00046834421300445683, + 0.00046844763346598484, + 0.00048701163177611306, + 0.0005196724669076502, + 0.0005479841893247794, + 0.0005361363764677662, + 0.000504407798871398, + 0.0004810196696780622, + 0.0004966383457940537, + 0.0005337957336450927, + 0.0005603402241831645, + 0.0005602891615126282, + 0.0005370475810195785, + 0.000515951633133227, + 0.0005015895585529506, + 0.000493731986352941, + 0.0004984698134649079, + 0.00048375245023635216, + 0.0004577483268803917, + 0.00045141580631025136, + 0.00046510468746419065, + 0.000465433800854953, + 0.000443808690761216, + 0.00043645178811857477, + 0.0004417508935148362, + 0.00043997770626447164, + 0.00043507373629836366, + 0.0004302130691939965, + 0.0004278571032045875, + 0.000426178754423745, + 0.00042765451871673577, + 0.00042597548599587753, + 0.00042430048415553756, + 0.00042394149932079017, + 0.00042400833990541287, + 0.00042742843652376905, + 0.00043060220923507586, + 0.00043388744961703196, + 0.00044025308670825325, + 0.00043898035073652864, + 0.0004311715347284917, + 0.0004294816462788731, + 0.00043566012755036354, + 0.00044168478416395374, + 0.0004477493348531425, + 0.00045423463598126546, + 0.0004597459119395353, + 0.00045271356430021115, + 0.00043623683086480014, + 0.00042404351552249864, + 0.0004230720478517469, + 0.0004295819526305422, + 0.0004454211702977773, + 0.000460925239167409, + 0.00046640854998258874, + 0.0004639179060177412, + 0.00046248011858551763, + 0.0004691653921327088, + 0.0004939091013511643, + 0.0005215754499658942, + 0.0005266893167572562, + 0.0004993051807105076, + 0.0004601439031830523, + 0.00043642120363074355, + 0.0004422823585628066, + 0.0004536201959126629, + 0.00045471689008991234, + 0.00044261684524826705, + 0.00042701938946265727, + 0.0004258459302945994, + 0.0004344827430031728, + 0.0004395209289214108, + 0.00043801563515444286, + 0.000442463431681972, + 0.0004532782331807539, + 0.00045866538857808337, + 0.0004570382479869295, + 0.0004483217817323748, + 0.000437988212070195, + 0.0004269303499313537, + 0.00042470508560654707, + 0.0004241674942022655, + 0.00042666028821258806, + 0.00042546301483525895, + 0.0004134687624173239, + 0.0004055975914525334, + 0.0004072357914992608, + 0.00040738550524110906, + 0.0004074005009897519, + 0.000410193380957935, + 0.0004129223234485835, + 0.00041909870924428105, + 0.000432657830970129, + 0.00044899947533849627, + 0.00045635712376679294, + 0.0004539538422250189, + 0.0004544885450741276, + 0.00045885281724622473, + 0.00046595251114922576, + 0.00046975827717687935, + 0.0004794041560671758, + 0.0004884731788479257, + 0.00048601940943626687, + 0.00047012096183607355, + 0.0004554682345769834, + 0.0004556400854198728, + 0.00044980726670473814, + 0.0004295348917366937, + 0.0004187247759546153, + 0.0004187440099485684, + 0.000411736145906616, + 0.00040226344572147354, + 0.0003996912455477286, + 0.00039563735481351614, + 0.0003940861533919815, + 0.00039114757237257436, + 0.0003839089404209517, + 0.0003818815657723462, + 0.0003867370469379239, + 0.00039140765147749335, + 0.00039255655065062456, + 0.00039420463508577086, + 0.0004012421704828739, + 0.00041615573718445376, + 0.00042818448491743766, + 0.0004343681903264951, + 0.00044220358540769666, + 0.000448678620159626, + 0.0004392567861941643, + 0.0004319205581850838, + 0.0004380660684546456, + 0.0004500490285863634, + 0.0004559083317872137, + 0.0004549927616608329, + 0.00045352342567639425, + 0.00044986159264226444, + 0.0004410740111779887, + 0.0004285089707991574, + 0.00041313817564514466, + 0.00040243057810585015, + 0.00040881383029045537, + 0.0004132556859985925, + 0.00040071976036415435, + 0.0003891627347911708, + 0.00039426804141839966, + 0.00040516101216780953, + 0.0004071221701451577, + 0.0004036474201711826, + 0.000396994440961862, + 0.0003935078602808062, + 0.0003922900359611958, + 0.0003820478668785654, + 0.0003683123468363192, + 0.0003688027063617483, + 0.00037086825795995537, + 0.0003653192670753924, + 0.0003650834933068836, + 0.00037070105645398144, + 0.00037451247408171184, + 0.000370766918422305, + 0.0003705554918269627, + 0.0003696202820719918, + 0.0003700585202750517, + 0.0003702973754116101, + 0.00037280884680512827, + 0.00037780808452225756, + 0.0003872515480907168, + 0.0004009577569377143, + 0.0004137223950237967, + 0.0004240935195412021, + 0.0004241091010044329, + 0.00042830287929973565, + 0.00042534933163551614, + 0.00041333114859298803, + 0.0004096077500435058, + 0.0004275773389963433, + 0.0004416659430717118, + 0.0004368266563687939, + 0.00042526844845269807, + 0.0004170127140241675, + 0.0004342920110502746, + 0.0004554630140773952, + 0.0004728732856165152, + 0.0004767986974911764, + 0.0004680713500420097, + 0.00044476165567175485, + 0.00042602667963365093, + 0.0004277335756341927, + 0.00043163735972484574, + 0.00041606493323342875, + 0.000408273463108344, + 0.0004200190996925812, + 0.00041990662066382356, + 0.0003943380324926693, + 0.0003833436385320965, + 0.00039084869786165655, + 0.0003863940219162032, + 0.00036940314021194354, + 0.0003629160910350038, + 0.00036278013612900395, + 0.00036464901859289967, + 0.00036458325121202506, + 0.0003612130385590717, + 0.0003586102156987181, + 0.0003620587995101232, + 0.0003651508977782214, + 0.0003629853708844166, + 0.00036149242623650935, + 0.000366259988368256, + 0.000372889358914108, + 0.0003747724858840229, + 0.00037257589610817377, + 0.0003757744198082946, + 0.000386099058232503, + 0.0003969459103245754, + 0.0004075819524587132, + 0.0004173485103819985, + 0.00042136777483392507, + 0.00042244858923368156, + 0.0004198608185106423, + 0.0004132051872147713, + 0.0004128031068830751, + 0.0004277152365830261, + 0.00044594051360036246, + 0.00045871165275457315, + 0.00045325898827286437, + 0.0004353723161329981, + 0.0004161049764661584, + 0.00041297540155937895, + 0.0004256499742041342, + 0.00042389988811919466, + 0.0004002902169304434, + 0.00038529917219420895, + 0.00038064435102569405, + 0.0003813061830442166, + 0.0003829954493994592, + 0.0003737601546163205, + 0.0003606641712394776, + 0.000358434417648823, + 0.0003635622069850797, + 0.0003607498456403846, + 0.00035373272839933634, + 0.0003519770125421928, + 0.0003435569306020625, + 0.0003384075516805751, + 0.00034356024116277695, + 0.0003487040667096153, + 0.0003431384848227026, + 0.000341060967912199, + 0.0003473723045317456, + 0.0003551626577973366, + 0.0003609916693676496, + 0.0003651512670330703, + 0.00036525655195873696, + 0.00036303765773482155, + 0.0003591132626752369, + 0.0003561855846783146, + 0.0003596183560148347, + 0.0003650014532468049, + 0.00037988026087987237, + 0.0004011714263469912, + 0.0004182410084467847, + 0.00041577992305974476, + 0.0004045097448397428, + 0.0003960376197937876, + 0.000401197889004834, + 0.0004169613639533054, + 0.0004235666674503591, + 0.00041702259477460757, + 0.00040423096288577653, + 0.00040350734707317315, + 0.0004075458782608621, + 0.0004010854463558644, + 0.00039312109947786666, + 0.0003919969494745601, + 0.00039177772850962356, + 0.0003975521285610739, + 0.00039323831879300997, + 0.0003812198483501561, + 0.0003773439093492925, + 0.00037600281211780384, + 0.0003703815000335453, + 0.0003611675310821738, + 0.00035918119283451233, + 0.0003531611437210813, + 0.0003476291913102614, + 0.00035164137989340816, + 0.0003504367523419205, + 0.0003438383228058228, + 0.0003410119952604873, + 0.0003397311465960229, + 0.0003357064269948751, + 0.00033062226793845184, + 0.00032503667534911074, + 0.0003205319262633566, + 0.0003210688719263999, + 0.00032599495716567617, + 0.0003238282679376425, + 0.0003221237911930075, + 0.00032894202377065085, + 0.0003408281718293438, + 0.000353755138348788, + 0.00036546123919833917, + 0.0003774574761337135, + 0.00039562057645525783, + 0.0004168129598838277, + 0.00042689847032306716, + 0.0004263900664227549, + 0.0004252035723766312, + 0.00043195813486818224, + 0.0004453021247172728, + 0.0004530201549641788, + 0.00044547886500367895, + 0.0004218659487378318, + 0.0004043399057991337, + 0.0003943333249480929, + 0.0003947785335185472, + 0.0004061052459292114, + 0.0004032489850942511, + 0.00037506230546568986, + 0.0003480406721791951, + 0.00034935358416987583, + 0.0003586178008845309, + 0.00034650639827304985, + 0.0003338851274747867, + 0.000328298499880475, + 0.0003246767500968417, + 0.0003185295754519757, + 0.0003149532840325264, + 0.00031322599716077093, + 0.00031205012419377454, + 0.0003122643429378513, + 0.00031187022250378504, + 0.00031238017800205853, + 0.000320238101267023, + 0.0003285360289737582, + 0.00033825617902039085, + 0.00034731159576040227, + 0.0003492762116366066, + 0.000347757559211459, + 0.00034514983599365223, + 0.0003389677694940474, + 0.0003364022995810956, + 0.00035039753856835887, + 0.00036892473326588515, + 0.0003820500169240404, + 0.0003848022242891602, + 0.0003846546314889565, + 0.0003846702820737846, + 0.00038640441562165506, + 0.0003951876024075318, + 0.00040258073931909166, + 0.00041023860103450716, + 0.0004153104673605412, + 0.00041137452353723347, + 0.00039382123213727027, + 0.00038312178730848245, + 0.0003923144868167583, + 0.0004033903169329278, + 0.00038889774077688344, + 0.00036107156302023213, + 0.0003540178186085541, + 0.00036706176797451917, + 0.0003638523503468605, + 0.0003459639865468489, + 0.000339400930897682, + 0.0003416465133341262, + 0.0003400205423531588, + 0.00033306055593129713, + 0.0003255966421420453, + 0.0003205455286661163, + 0.00031885141106613446, + 0.0003174860685248859, + 0.0003130341810901882, + 0.0003090880381932948, + 0.0003063732019654708, + 0.00030829623392492067, + 0.0003075406639254652, + 0.00030706914731126744, + 0.00030700534261995926, + 0.00030673914261569735, + 0.0003030358511750819, + 0.0002973821246996522, + 0.0002933339746959973, + 0.000288378338154871, + 0.0002887321406888077, + 0.00029550846738857217, + 0.00030443433934124187, + 0.00031598281748301815, + 0.00033284839992120396, + 0.000352836150341318, + 0.00037654587140423246, + 0.00039560940058436245, + 0.00039639207534492016, + 0.0003860728320432827, + 0.00039036906309775077, + 0.0004127957217860967, + 0.00043593771624728106, + 0.00044921871813130565, + 0.0004431114866747521, + 0.00042413265327923, + 0.0004142680591030512, + 0.00042377554564154707, + 0.0004277047592040617, + 0.000405909708206309, + 0.00038532369580934756, + 0.0003892245404131245, + 0.00039131720404839143, + 0.0003798519719566684, + 0.0003637902336777188, + 0.00035649800520332064, + 0.0003516102224239148, + 0.000339108131811372, + 0.0003309000239823945, + 0.00032580820879957173, + 0.0003198403683200013, + 0.0003157452338200528, + 0.0003135752867819974, + 0.00031406981725012884, + 0.00031286275952879805, + 0.00030829591014480684, + 0.00030626856823801063, + 0.0003063161566387862, + 0.0003092825372732477, + 0.0003036263024114305, + 0.0002974071157950675, + 0.000296795155009022, + 0.00029588597499241587, + 0.00029017042834311724, + 0.0002850790460797725, + 0.00028469492281146813, + 0.00028636444767471403, + 0.00028707351521006785, + 0.0002859166834241478, + 0.000284605695924256, + 0.0002830834891938139, + 0.0002818074935930781, + 0.0002794731826725183, + 0.0002826688632922014, + 0.00028941587333974894, + 0.0002986142244481016, + 0.0003101747097389307, + 0.00032712004576751497, + 0.000345126945830998, + 0.0003646254353952827, + 0.0003790280570683535, + 0.0003875237416650634, + 0.00038523403054568917, + 0.0003830664973065723, + 0.0003989950710092671, + 0.0004230462945997715, + 0.00043252703471807763, + 0.00042065763409482315, + 0.00038975104325800203, + 0.0003781823943427298, + 0.00038903667154954746, + 0.0003878837960655801, + 0.00036508300217974465, + 0.0003467808655841509, + 0.0003464742676442256, + 0.00034828621755877975, + 0.0003384101455594646, + 0.00032844924498931505, + 0.0003189448561897734, + 0.0003149916046822909, + 0.00031483324892178643, + 0.0003125419134448748, + 0.0003017790186277125, + 0.0002929894380940823, + 0.0002909548820753116, + 0.0002888748913392192, + 0.00028544975248223636, + 0.0002852473007806111, + 0.0002848524491128046, + 0.0002864836060325615, + 0.00028804332214349415, + 0.0002889084462367464, + 0.00029271629864524584, + 0.00029665946021850687, + 0.00029707231078646146, + 0.00029001659822824877, + 0.00028814413235522807, + 0.00028925109472766053, + 0.0002901663592638215, + 0.00029324058778001927, + 0.00029984593857079744, + 0.0003063220046897186, + 0.0003095398969890084, + 0.00031302342722483445, + 0.00031473712442675605, + 0.00031332722755905706, + 0.0003070774782827357, + 0.00030884169245837256, + 0.0003174463399773231, + 0.00032937938885879703, + 0.0003411872294236673, + 0.00033964473550440744, + 0.00033662570058368146, + 0.00033823427111201454, + 0.0003503226125758374, + 0.00035721505810215604, + 0.0003554612685547909, + 0.0003547304222593084, + 0.0003470082174317213, + 0.00033946734765777364, + 0.0003341435058246134, + 0.00033657086351013277, + 0.0003336610407131957, + 0.00032417505462944973, + 0.00032186886710405815, + 0.0003242660914111184, + 0.00032038145218393765, + 0.000313563074087142, + 0.00031432422656507697, + 0.0003130547938781092, + 0.00030463184157270007, + 0.0002995168415509397, + 0.00029842792355339043, + 0.0002913370426540496, + 0.0002870302923838608, + 0.00028984483287786134, + 0.00029074626581859775, + 0.0002884942114178557, + 0.000288569479380385, + 0.00029215705035312567, + 0.00028931163251399994, + 0.00028355994800222106, + 0.00027796243921329733, + 0.00027308981225360185, + 0.00027067050905316137, + 0.0002735421840043273, + 0.00027503091405378655, + 0.00026885323495662306, + 0.0002623675136419479, + 0.00026287915716238786, + 0.00026407128098071553, + 0.00026073352455568966, + 0.00026008982240455225, + 0.0002630089038575534, + 0.00026775159130920656, + 0.0002731420045165578, + 0.00027866581513080746, + 0.000286639293335611, + 0.0002946749318653019, + 0.00030809790769126266, + 0.0003222155155526707, + 0.00033703537701512687, + 0.0003471117470326135, + 0.00035348835262993816, + 0.00035099766864732374, + 0.00035312664658704307, + 0.00036752749838342424, + 0.0003854320711980108, + 0.00038480268995044753, + 0.00035996776932734065, + 0.00034467306431906763, + 0.0003582586632546736, + 0.00037867035644012503, + 0.00037730211261077784, + 0.00035535845017875545, + 0.0003457935581536731, + 0.000355744003172731, + 0.00035943353941547684, + 0.0003471358049864648, + 0.00033903485018527135, + 0.0003325286288600182, + 0.000320453542371979, + 0.0003146289054711815, + 0.00030710742248629685, + 0.00029586841992568225, + 0.0002944920997833833, + 0.0002931737053586403, + 0.0002866798222385114, + 0.0002821215548465261, + 0.0002843151851266157, + 0.0002867586190404836, + 0.00028746195312123746, + 0.00028974331144127063, + 0.00029386540336417966, + 0.00029301610447873827, + 0.00029112720585544594, + 0.00029127536072337534, + 0.00028739660592691507, + 0.00027792470427812077, + 0.00026780832376971375, + 0.00026525157954893075, + 0.0002600117222755216, + 0.0002531558584450977, + 0.0002580030559329316, + 0.0002649552479851991, + 0.0002627070334710879, + 0.00026009516477643047, + 0.0002656590131664416, + 0.0002730378346313955, + 0.0002761794166872278, + 0.00027766312814492267, + 0.0002796266635414213, + 0.0002855542752513429, + 0.0002984766451845644, + 0.0003187759193679085, + 0.00034169799073424656, + 0.0003613293847593013, + 0.00037770732524222694, + 0.0003778776590479538, + 0.0003616688118199818, + 0.0003527248481987044, + 0.00036729034036397934, + 0.0003886765734932851, + 0.00038762876647524536, + 0.0003565914576029172, + 0.00032983062737912405, + 0.00033436325429647695, + 0.00034215064806630835, + 0.00033524031459819525, + 0.00032698610448278487, + 0.00032808727701194584, + 0.000325654647895135, + 0.0003208170182915637, + 0.00031385067632072605, + 0.0003025061305379495, + 0.00029550982981163543, + 0.00029082275250402745, + 0.0002796728294924833, + 0.00027272650186205283, + 0.0002733485871431185, + 0.0002682609174371464, + 0.00026319726930523757, + 0.00026261245693603996, + 0.0002595676851342432, + 0.000254954245974659, + 0.0002529532321204897, + 0.00024853778813849203, + 0.00024286713778565172, + 0.00023953416530275717, + 0.0002374198411416728, + 0.0002369365574850235, + 0.00023619710555067286, + 0.00023474304180126637, + 0.00023573865473736078, + 0.00023840018729970325, + 0.0002414012524241116, + 0.00024343615041289013, + 0.00024435190607619006, + 0.0002457212503941264, + 0.0002466033456585137, + 0.00024690130339877214, + 0.0002467543672537431, + 0.0002500246664567385, + 0.00025497243404970504, + 0.00026707530014391523, + 0.00028426273092918564, + 0.0003040691990463529, + 0.000323885051329853, + 0.0003385454365343321, + 0.00035023974487558007, + 0.0003507419824018143, + 0.0003609619325288804, + 0.00038628754555247724, + 0.00041203699220204726, + 0.00042003368798759766, + 0.0003957869084842969, + 0.0003659398353192955, + 0.00035256123010185547, + 0.0003605686179071199, + 0.00036226934753358364, + 0.00034602983214426786, + 0.0003351601171743823, + 0.0003382347658771323, + 0.00033541898301336914, + 0.0003222567556804279, + 0.0003198743306711549, + 0.000313928516334272, + 0.0003010075779457111, + 0.00029877313136239536, + 0.000296043130219914, + 0.00028623980324482545, + 0.00028149524769105483, + 0.0002753532644419465, + 0.00026757451269077137, + 0.00026344827711000107, + 0.0002627385765663348, + 0.00025815964727371465, + 0.00025573545826773625, + 0.0002539637152949581, + 0.0002485126260580728, + 0.00024618220049887896, + 0.0002478909045748878, + 0.0002452143580740085, + 0.0002439311174384784, + 0.000247815372858895, + 0.00024543770450691227, + 0.00024171533732442185, + 0.00024315898190252483, + 0.00024456088249280583, + 0.00024313407629961148, + 0.00024452395518892445, + 0.0002462951397319557, + 0.00024542829851270653, + 0.00024535068769182544, + 0.00024745662994973827, + 0.0002488145255483687, + 0.00024827868037391454, + 0.0002518434212106513, + 0.00026153328326472547, + 0.0002735368980211206, + 0.00028744578594341874, + 0.0002991555447806604, + 0.0003053079399251146, + 0.00029728848312515765, + 0.0002894676745199831, + 0.0002978333923238097, + 0.00032086608189274557, + 0.0003458727824181551, + 0.00035453295458864886, + 0.00033565383819222916, + 0.0003103416038356954, + 0.00030875739139446523, + 0.00033034883927030023, + 0.0003474725926935207, + 0.00034273530036443844, + 0.00032441575422126334, + 0.0003215527303837007, + 0.00033966454429901205, + 0.00035166871020919643, + 0.00034949615837831516, + 0.0003402739639568608, + 0.0003365996690263273, + 0.00033609566708037164, + 0.0003255177325627301, + 0.0003054750159208197, + 0.00028891180772916414, + 0.00028325901075731963, + 0.0002800775200739736, + 0.0002763786669675028, + 0.00026972289379045833, + 0.0002599212330096634, + 0.0002569670159573434, + 0.00025358341554237995, + 0.00024791825126158074, + 0.0002410621236776933, + 0.0002372562921664212, + 0.0002370515685470309, + 0.000235931451243232, + 0.00023168391999206506, + 0.00022740593158232514, + 0.0002276352242915891, + 0.00022972338592808228, + 0.0002272549882036401, + 0.00022515078671858646, + 0.00022619727678829804, + 0.0002285069385834504, + 0.000230038933295873, + 0.0002312995020474773, + 0.00023050107665767428, + 0.00023206418336485513, + 0.00023606746981386095, + 0.00023751721710141283, + 0.0002393612503510667, + 0.0002473164004186401, + 0.000258171823588782, + 0.0002656995948200347, + 0.000274726631687372, + 0.0002919096077675931, + 0.00031339944871433545, + 0.0003375685882929247, + 0.00036135028858552687, + 0.00038505857446580194, + 0.0004005118789791595, + 0.00041408499964745715, + 0.00041588301974115893, + 0.00040642877866048366, + 0.00039124836621340364, + 0.00037069978861836717, + 0.00035338343332114164, + 0.00035239952376286965, + 0.00035616738932731096, + 0.0003402933343750192, + 0.00031926590781949926, + 0.000317064124828903, + 0.0003303484627394937, + 0.00031885837961453944, + 0.0002898013735830318, + 0.00028135078900959343, + 0.00028870775713585317, + 0.00028137403751316015, + 0.00026158589753322303, + 0.0002545059360272717, + 0.00026141749913222156, + 0.0002578309577074833, + 0.0002461158837832045, + 0.00023967024026205763, + 0.00023891025557531975, + 0.0002336458765057614, + 0.00022822199571237434, + 0.00022280763550952543, + 0.00021822269445692655, + 0.00021748244307673303, + 0.0002176639172830619, + 0.0002145249382010661, + 0.0002112262063747039, + 0.0002118605598298018, + 0.00021479391944012605, + 0.00021585181821137667, + 0.00021688285960408393, + 0.0002213409843534464, + 0.00022890802392794285, + 0.00023920107014419045, + 0.00024554270748922136, + 0.0002544336803111946, + 0.0002598942901386181, + 0.00026071731554111466, + 0.00025511017884127796, + 0.00024900558855733834, + 0.0002525199015508406, + 0.0002651204231369775, + 0.00028297683456912637, + 0.0003004261488968041, + 0.0003111880778305931, + 0.0003065298242290737, + 0.0002963263468700461, + 0.0002929354213847546, + 0.0002931288763647899, + 0.00029999645084899385, + 0.0003012233864865266, + 0.0002981769011967117, + 0.00029136755256331526, + 0.00028986383222218137, + 0.00029231388180051, + 0.0002916363173426362, + 0.0002945530795841478, + 0.00029983664717292413, + 0.0002996660678036278, + 0.00029409132002911065, + 0.00029473112954292446, + 0.0002975456136482535, + 0.0002951956521428656, + 0.00028403398391674273, + 0.00027003874492947944, + 0.00026333356981922407, + 0.00026135327789234, + 0.0002596980684757, + 0.0002534482064220356, + 0.00024740829940128606, + 0.00024570132700318936, + 0.00024342487085959874, + 0.00023560423323942814, + 0.0002287467723363079, + 0.00022566582993022166, + 0.0002221367285528686, + 0.0002155079237127211, + 0.00021305238442437258, + 0.0002146815058949869, + 0.00021331882999220397, + 0.00021249237852316583, + 0.00021559172000706894, + 0.0002185957637266256, + 0.0002219073230662616, + 0.00023432695888914168, + 0.0002522742852306692, + 0.00026371395142632537, + 0.00027422377024777234, + 0.00028422240939107724, + 0.00028665169338637497, + 0.0002697017371247057, + 0.0002563444468250964, + 0.00026119854373973794, + 0.00028005725289403927, + 0.0002989447493746411, + 0.000305104769722675, + 0.0002945319101854693, + 0.0002860231343220221, + 0.0002924029467976652, + 0.0003136850027658511, + 0.00033632332633715123, + 0.0003431156546866987, + 0.00033997110040218104, + 0.00032429741804662626, + 0.00031317559114540927, + 0.0003146564449707512, + 0.0003179542218276765, + 0.00029771811750833876, + 0.0002734414429141907, + 0.00027398086967878044, + 0.00028222406945133116, + 0.00027586406213231385, + 0.00026323680322093423, + 0.00025376521989528555, + 0.000247994001256302, + 0.00024810079230519477, + 0.00024941059928096365, + 0.00023778747163305525, + 0.00022658750822301954, + 0.00022782638188800775, + 0.00023024002075544558, + 0.00022764724781154655, + 0.00022165669906826224, + 0.0002205764230893692, + 0.00022092721883382183, + 0.00022001991055731196, + 0.00021931803166808095, + 0.00021808589190186467, + 0.00021646566528943367, + 0.00021589301468338817, + 0.00021564968665188644, + 0.00021608753013424575, + 0.00021645708511641715, + 0.00021558439402724616, + 0.00021435312373796478, + 0.00021435753660625778, + 0.00021371942784753628, + 0.00021223363364697434, + 0.00021226640274107922, + 0.00021777412075607572, + 0.0002237522985524265, + 0.0002262948728457559, + 0.0002293185989401536, + 0.00023293480444408488, + 0.00023752108972985297, + 0.00024212983953475486, + 0.0002461700041749282, + 0.00025088411530305166, + 0.00026062215692945756, + 0.0002734112240432296, + 0.00029459138931997586, + 0.0003198010181222344, + 0.00034192109524155967, + 0.0003600210475269705, + 0.0003731062461156398, + 0.00039168944931589067, + 0.0004120812373002991, + 0.0004204733450023923, + 0.0004200677249173168, + 0.00042531882718321867, + 0.00043654195906128734, + 0.0004304122739995364, + 0.0004078046331414953, + 0.000375486724806251, + 0.00036888739123241976, + 0.0003692023892654106 + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + } + } + }, + "text/html": [ + "
\n", + " \n", + " \n", + "
\n", + " \n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import plotly.graph_objects as go\n", + "\n", + "fig = go.Figure(data=go.Scatter(x=np.arange(5000), y=losses))\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/train_fp16.ipynb b/examples/train_fp16.ipynb new file mode 100644 index 0000000..66621b8 --- /dev/null +++ b/examples/train_fp16.ipynb @@ -0,0 +1,3496 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Optional\n", + "\n", + "import torch\n", + "from torch import nn, optim\n", + "\n", + "import numpy as np\n", + "\n", + "from tqdm.auto import tqdm, trange\n", + "from tqdm.contrib import tenumerate, tzip\n", + "\n", + "from layer_to_layer_pytorch import Layer2Layer" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "class Model(nn.Module):\n", + " def __init__(self):\n", + " super().__init__()\n", + " self.layers = nn.ModuleList([\n", + " nn.Linear(5, 5),\n", + " nn.Linear(5, 5),\n", + " ])\n", + " \n", + " def forward(self, x):\n", + " for l in self.layers:\n", + " x = l(x)\n", + " return x" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "net = Model()\n", + "nnet = Model()\n", + "for s, t in zip(net.parameters(), nnet.parameters()):\n", + " t.data.copy_(s.data)\n", + "l2l_model = Layer2Layer(net, microbatch_size=20, mixed_precision=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "x = torch.rand((80, 5))\n", + "y = torch.rand((80, 5))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "5b8ded8f432f4f64b222bd8564d27a63", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(FloatProgress(value=0.0, max=600.0), HTML(value='')))" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "criterion = nn.MSELoss(reduction=\"mean\")\n", + "optimizer = optim.Adam(nnet.parameters())\n", + "r_loss = []\n", + "for i in trange(600):\n", + " optimizer.zero_grad()\n", + " out = nnet(x)\n", + " loss = criterion(out, y)\n", + " loss.backward()\n", + " optimizer.step()\n", + " r_loss.append(loss.item())" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "5f7aca4385554856a905261c8e93dda0", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(FloatProgress(value=0.0, max=600.0), HTML(value='')))" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0] loss = 0.40304672718048096\n", + "[50] loss = 0.29087238758802414\n", + "[100] loss = 0.21799978241324425\n", + "[150] loss = 0.15478910133242607\n", + "[200] loss = 0.1116107702255249\n", + "[250] loss = 0.09347709640860558\n", + "[300] loss = 0.08926261961460114\n", + "[350] loss = 0.08778456225991249\n", + "[400] loss = 0.08662739209830761\n", + "[450] loss = 0.08561820536851883\n", + "[500] loss = 0.08475672826170921\n", + "[550] loss = 0.08399175852537155\n", + "\n" + ] + } + ], + "source": [ + "optimizer = optim.Adam(l2l_model.main_params)\n", + "w_loss = []\n", + "for i in trange(600):\n", + " l2l_model.zero_grad()\n", + " _ = l2l_model.forward(x)\n", + " loss_value = l2l_model.compute_loss(y, criterion)\n", + " \n", + " if i % 50 == 0:\n", + " tqdm.write(f\"[{i}] loss = {loss_value}\")\n", + " w_loss.append(loss_value)\n", + "\n", + " l2l_model.backward()\n", + " optimizer.step()\n", + " l2l_model.update_main_model_params()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "import plotly.graph_objects as go" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "name": "L2L wrapper", + "type": "scatter", + "x": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599 + ], + "y": [ + 0.40304672718048096, + 0.3998936116695404, + 0.39669590443372726, + 0.39360667020082474, + 0.390627421438694, + 0.38769396394491196, + 0.3847935199737549, + 0.381930947303772, + 0.3791416063904762, + 0.37641189247369766, + 0.37371601164340973, + 0.3710651770234108, + 0.3684620186686516, + 0.36579667031764984, + 0.363274410367012, + 0.3607829809188843, + 0.35831332206726074, + 0.35586368292570114, + 0.35348648577928543, + 0.35112760961055756, + 0.3487970158457756, + 0.3464732766151428, + 0.3442205488681793, + 0.3420005962252617, + 0.3397749587893486, + 0.33761925250291824, + 0.33545348793268204, + 0.33333994448184967, + 0.3312259539961815, + 0.32919880747795105, + 0.32716506719589233, + 0.3251137435436249, + 0.3231213167309761, + 0.32114529609680176, + 0.3192087486386299, + 0.3173205778002739, + 0.3154032751917839, + 0.3135370686650276, + 0.31165897101163864, + 0.3098520115017891, + 0.3080097585916519, + 0.3062344565987587, + 0.3044416978955269, + 0.3027995228767395, + 0.30102819949388504, + 0.2992963567376137, + 0.29760438203811646, + 0.2958824187517166, + 0.29422616958618164, + 0.2925570234656334, + 0.29087238758802414, + 0.2892545983195305, + 0.28770363330841064, + 0.28609854727983475, + 0.2844839468598366, + 0.28290892392396927, + 0.2812900096178055, + 0.27975109219551086, + 0.2782452255487442, + 0.2766934409737587, + 0.2751719728112221, + 0.2736075893044472, + 0.2720554247498512, + 0.2705244719982147, + 0.2691265568137169, + 0.2676173634827137, + 0.26605482399463654, + 0.2645952105522156, + 0.2631925232708454, + 0.26173583045601845, + 0.2602243423461914, + 0.2587406858801842, + 0.25735345482826233, + 0.25589311122894287, + 0.25442828238010406, + 0.2529761865735054, + 0.25159648805856705, + 0.25013718008995056, + 0.248668372631073, + 0.24732276424765587, + 0.24588383361697197, + 0.24443114548921585, + 0.24307893961668015, + 0.24164187535643578, + 0.24020379409193993, + 0.23885415494441986, + 0.2374199889600277, + 0.235980786383152, + 0.23463831841945648, + 0.23320972546935081, + 0.23176363110542297, + 0.23044688999652863, + 0.22900547459721565, + 0.22767069190740585, + 0.22625213488936424, + 0.22491183504462242, + 0.22347919270396233, + 0.22208885103464127, + 0.22075290605425835, + 0.2193458154797554, + 0.21799978241324425, + 0.2166009433567524, + 0.21527540683746338, + 0.21387358382344246, + 0.2125416360795498, + 0.21112649887800217, + 0.2098374105989933, + 0.20842279121279716, + 0.2070917710661888, + 0.20570383593440056, + 0.20440763235092163, + 0.20309378951787949, + 0.20170214399695396, + 0.20039251446723938, + 0.19901079684495926, + 0.1977199763059616, + 0.19643041118979454, + 0.1950581558048725, + 0.19372618570923805, + 0.19244620576500893, + 0.1911415457725525, + 0.189840916544199, + 0.18850813806056976, + 0.18721751868724823, + 0.1859736144542694, + 0.18471690639853477, + 0.18337031826376915, + 0.18211907893419266, + 0.18087993562221527, + 0.1796494908630848, + 0.17831983789801598, + 0.17712729796767235, + 0.17586754634976387, + 0.1746465116739273, + 0.17340227216482162, + 0.17216157168149948, + 0.17095646262168884, + 0.1697695404291153, + 0.1685790792107582, + 0.1673615165054798, + 0.16620603576302528, + 0.16502861306071281, + 0.16387733072042465, + 0.1627042256295681, + 0.16157307848334312, + 0.1604117564857006, + 0.15927645564079285, + 0.15812304243445396, + 0.15702278539538383, + 0.15589232370257378, + 0.15478910133242607, + 0.15370354801416397, + 0.152569480240345, + 0.15150432288646698, + 0.15044215694069862, + 0.14937003329396248, + 0.1482829824090004, + 0.14728664979338646, + 0.1462574079632759, + 0.14522292837500572, + 0.14418018609285355, + 0.14321628957986832, + 0.14221105724573135, + 0.14120496064424515, + 0.14022766053676605, + 0.13928387686610222, + 0.13830193504691124, + 0.13731145486235619, + 0.13639047741889954, + 0.1354440301656723, + 0.1345132328569889, + 0.13363252207636833, + 0.13271203450858593, + 0.13185560517013073, + 0.13093090243637562, + 0.1300713438540697, + 0.12919530645012856, + 0.12835111282765865, + 0.12750024907290936, + 0.12668953649699688, + 0.12584138102829456, + 0.12503508664667606, + 0.12426847778260708, + 0.12344200909137726, + 0.1226532906293869, + 0.1218840628862381, + 0.12111553736031055, + 0.12038472294807434, + 0.11965368688106537, + 0.11893667094409466, + 0.11818894185125828, + 0.1174966674298048, + 0.11681339330971241, + 0.11611159704625607, + 0.11543909274041653, + 0.11479050852358341, + 0.11410315707325935, + 0.11347671784460545, + 0.11283528432250023, + 0.11222686246037483, + 0.1116107702255249, + 0.11099295131862164, + 0.11043982766568661, + 0.1098433081060648, + 0.10929818078875542, + 0.1087473277002573, + 0.10819375514984131, + 0.10763968341052532, + 0.10714289546012878, + 0.10660524293780327, + 0.10611308366060257, + 0.1056157648563385, + 0.10512606985867023, + 0.10465694591403008, + 0.10420248843729496, + 0.10373305901885033, + 0.10331897437572479, + 0.10287567786872387, + 0.10244491696357727, + 0.10204322263598442, + 0.10164382867515087, + 0.10124549828469753, + 0.10086418315768242, + 0.1004886794835329, + 0.10012365318834782, + 0.09977164305746555, + 0.09941710159182549, + 0.09907910786569118, + 0.09876161813735962, + 0.09843776375055313, + 0.09812069870531559, + 0.09782800078392029, + 0.09753294475376606, + 0.09723271243274212, + 0.09696889482438564, + 0.09669927507638931, + 0.09641648828983307, + 0.09616554155945778, + 0.09592624008655548, + 0.09567427076399326, + 0.09544132277369499, + 0.09523066692054272, + 0.09501171857118607, + 0.09479216486215591, + 0.09457921981811523, + 0.09437792375683784, + 0.09417018108069897, + 0.09399263933300972, + 0.09380925074219704, + 0.09364268742501736, + 0.09347709640860558, + 0.09330721758306026, + 0.09313435107469559, + 0.09297668933868408, + 0.09285343997180462, + 0.09269426017999649, + 0.09255447424948215, + 0.0924154557287693, + 0.09229009039700031, + 0.09214638359844685, + 0.0920313186943531, + 0.09192134998738766, + 0.09179702214896679, + 0.09169532358646393, + 0.09157540835440159, + 0.09147118590772152, + 0.09136854112148285, + 0.09127655439078808, + 0.0911847036331892, + 0.0910936314612627, + 0.09100683778524399, + 0.09090895392000675, + 0.09083487465977669, + 0.09075471386313438, + 0.09066910855472088, + 0.09060049802064896, + 0.09052806161344051, + 0.09044827148318291, + 0.09038679488003254, + 0.09033859521150589, + 0.09026836045086384, + 0.09019998461008072, + 0.09013104438781738, + 0.09006673283874989, + 0.09001951478421688, + 0.08996971137821674, + 0.08990300819277763, + 0.08985167369246483, + 0.08979654312133789, + 0.08976065181195736, + 0.08970166929066181, + 0.08965014852583408, + 0.08960769884288311, + 0.08955986611545086, + 0.08951712213456631, + 0.08947805128991604, + 0.08942714519798756, + 0.08938168734312057, + 0.08934509381651878, + 0.08930020034313202, + 0.08926261961460114, + 0.0892439279705286, + 0.08919481933116913, + 0.0891566202044487, + 0.08912047557532787, + 0.08907708339393139, + 0.08904716931283474, + 0.08901645243167877, + 0.08896750770509243, + 0.08894634991884232, + 0.08891292847692966, + 0.08887214958667755, + 0.08883987180888653, + 0.08882044069468975, + 0.08876590617001057, + 0.0887454953044653, + 0.08872331865131855, + 0.08867991343140602, + 0.08866525627672672, + 0.08862592466175556, + 0.08859414607286453, + 0.08855954371392727, + 0.0885394997894764, + 0.08850936032831669, + 0.08848127350211143, + 0.08844265155494213, + 0.08841745555400848, + 0.08839880302548409, + 0.08835937082767487, + 0.0883362926542759, + 0.08830691315233707, + 0.08827678859233856, + 0.08825343661010265, + 0.08823658339679241, + 0.08820588141679764, + 0.08817034959793091, + 0.08814290910959244, + 0.08811640553176403, + 0.08809289522469044, + 0.08806735835969448, + 0.08803270198404789, + 0.08801265619695187, + 0.0879864264279604, + 0.08795159868896008, + 0.087933499366045, + 0.08791565708816051, + 0.08788225799798965, + 0.08786524273455143, + 0.08783691562712193, + 0.08780428394675255, + 0.08778456225991249, + 0.08776200003921986, + 0.0877321120351553, + 0.08770729973912239, + 0.08768750168383121, + 0.08766410686075687, + 0.08763418160378933, + 0.08761161379516125, + 0.08757957257330418, + 0.08755777962505817, + 0.08754191175103188, + 0.08751679956912994, + 0.08748684637248516, + 0.087467847391963, + 0.08744545094668865, + 0.08742530643939972, + 0.08739877492189407, + 0.08737632259726524, + 0.08734469301998615, + 0.08731936663389206, + 0.08729841001331806, + 0.08727755770087242, + 0.08725784718990326, + 0.08722894638776779, + 0.08721454814076424, + 0.08718881942331791, + 0.08715646527707577, + 0.08713869377970695, + 0.08711449056863785, + 0.08708839118480682, + 0.08706904761493206, + 0.0870413426309824, + 0.08702236600220203, + 0.08700919710099697, + 0.08697937056422234, + 0.08695958368480206, + 0.0869342926889658, + 0.08691844530403614, + 0.0868906732648611, + 0.08686609007418156, + 0.08684937469661236, + 0.08682360872626305, + 0.08679822273552418, + 0.08678576722741127, + 0.08675707690417767, + 0.0867221001535654, + 0.08671563491225243, + 0.0866884645074606, + 0.08667569980025291, + 0.08665397949516773, + 0.08662739209830761, + 0.08660945296287537, + 0.08658445440232754, + 0.08656752482056618, + 0.08653868734836578, + 0.08652858808636665, + 0.08650127239525318, + 0.08647863566875458, + 0.08646874129772186, + 0.0864397082477808, + 0.0864172875881195, + 0.08639534190297127, + 0.08637489750981331, + 0.08635785803198814, + 0.0863377284258604, + 0.08631355687975883, + 0.08629373461008072, + 0.08626819774508476, + 0.08625856973230839, + 0.08622927963733673, + 0.08621042780578136, + 0.08619263209402561, + 0.08618498407304287, + 0.0861434992402792, + 0.0861292090266943, + 0.08611188270151615, + 0.08608964830636978, + 0.08607207238674164, + 0.08604595251381397, + 0.08602833561599255, + 0.08601284772157669, + 0.08599084801971912, + 0.08597295172512531, + 0.08595349825918674, + 0.08593878708779812, + 0.08591547794640064, + 0.08588841930031776, + 0.08587871305644512, + 0.08585736714303493, + 0.08584030345082283, + 0.08581996709108353, + 0.08579780161380768, + 0.08577458374202251, + 0.08575675264000893, + 0.08573674038052559, + 0.08571505732834339, + 0.08569823205471039, + 0.0856743436306715, + 0.08566208370029926, + 0.08565209433436394, + 0.08561820536851883, + 0.08559702895581722, + 0.08558652363717556, + 0.0855683982372284, + 0.08555549196898937, + 0.08552916906774044, + 0.08551409654319286, + 0.085496561601758, + 0.0854697935283184, + 0.08546006493270397, + 0.08544109389185905, + 0.08542557619512081, + 0.08540513925254345, + 0.08539353683590889, + 0.08535788953304291, + 0.08535210974514484, + 0.08532323502004147, + 0.08531370013952255, + 0.08530127815902233, + 0.08528533391654491, + 0.08526157028973103, + 0.08525146916508675, + 0.08522769622504711, + 0.08520200848579407, + 0.08518779464066029, + 0.08517297357320786, + 0.08515690080821514, + 0.08513558842241764, + 0.08512337692081928, + 0.08511093631386757, + 0.08509312570095062, + 0.08507169969379902, + 0.08505158685147762, + 0.08503800258040428, + 0.08501535840332508, + 0.08500114642083645, + 0.08498145453631878, + 0.08496976271271706, + 0.08495316654443741, + 0.08492792956531048, + 0.08492286317050457, + 0.08490610122680664, + 0.08488630130887032, + 0.08486976101994514, + 0.08485638722777367, + 0.0848336648195982, + 0.08481300994753838, + 0.08479537442326546, + 0.08478670753538609, + 0.08476666361093521, + 0.08475672826170921, + 0.08473477698862553, + 0.08471442013978958, + 0.08469732478260994, + 0.08468819968402386, + 0.08467964828014374, + 0.08465139381587505, + 0.08464028686285019, + 0.08461874164640903, + 0.084606247022748, + 0.08459278754889965, + 0.08457616902887821, + 0.08456291817128658, + 0.08454747498035431, + 0.08453579246997833, + 0.08451805636286736, + 0.08450228348374367, + 0.08448293246328831, + 0.08446873724460602, + 0.08445801213383675, + 0.08444084040820599, + 0.08442066982388496, + 0.08440841175615788, + 0.08439377322793007, + 0.08437709137797356, + 0.08436664938926697, + 0.08434411883354187, + 0.08433315344154835, + 0.08431569114327431, + 0.08429950661957264, + 0.08428093791007996, + 0.08426553569734097, + 0.08424192108213902, + 0.08423650078475475, + 0.08422625064849854, + 0.08421115577220917, + 0.08419515006244183, + 0.08418176509439945, + 0.08416280336678028, + 0.08415962010622025, + 0.08413253538310528, + 0.08412408456206322, + 0.08411340415477753, + 0.08409397304058075, + 0.08408666402101517, + 0.08406380750238895, + 0.08404644206166267, + 0.08404053561389446, + 0.08402136527001858, + 0.08400641940534115, + 0.08399175852537155, + 0.08398302458226681, + 0.08396765030920506, + 0.08394940197467804, + 0.08393536880612373, + 0.08392632566392422, + 0.0839018952101469, + 0.08390005491673946, + 0.08387934789061546, + 0.08387034200131893, + 0.08385348320007324, + 0.08384173735976219, + 0.08382965810596943, + 0.08381526358425617, + 0.0837990939617157, + 0.08378110826015472, + 0.08376818522810936, + 0.08376329578459263, + 0.08374477922916412, + 0.0837374608963728, + 0.08371733874082565, + 0.08370139449834824, + 0.08368562720716, + 0.08367947489023209, + 0.08365825936198235, + 0.08364823460578918, + 0.08363616466522217, + 0.08362061157822609, + 0.0836187694221735, + 0.08360010199248791, + 0.08358642645180225, + 0.08357070945203304, + 0.0835554301738739, + 0.08354056812822819, + 0.08353495225310326, + 0.08351321518421173, + 0.08350713923573494, + 0.08348666317760944, + 0.08348241448402405, + 0.08345393277704716, + 0.08345918916165829, + 0.08344622515141964, + 0.08343961089849472, + 0.08342293463647366, + 0.08340476639568806, + 0.08338471688330173, + 0.08337187394499779, + 0.08337014727294445, + 0.08335753530263901, + 0.0833465289324522 + ] + }, + { + "name": "Usual model", + "type": "scatter", + "x": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599 + ], + "y": [ + 0.40302327275276184, + 0.39985033869743347, + 0.3967316448688507, + 0.3936674892902374, + 0.39065757393836975, + 0.38770154118537903, + 0.3847986161708832, + 0.38194751739501953, + 0.3791468143463135, + 0.3763945400714874, + 0.37368887662887573, + 0.3710279166698456, + 0.36840927600860596, + 0.3658313453197479, + 0.36329203844070435, + 0.3607901632785797, + 0.35832417011260986, + 0.35589295625686646, + 0.35349562764167786, + 0.3511312007904053, + 0.34879910945892334, + 0.3464987277984619, + 0.3442292809486389, + 0.34199050068855286, + 0.3397814929485321, + 0.3376021087169647, + 0.3354516625404358, + 0.33332961797714233, + 0.33123543858528137, + 0.3291686177253723, + 0.32712841033935547, + 0.32511427998542786, + 0.32312560081481934, + 0.32116177678108215, + 0.3192218542098999, + 0.31730544567108154, + 0.3154118061065674, + 0.3135400712490082, + 0.3116897642612457, + 0.30986008048057556, + 0.3080504834651947, + 0.3062601387500763, + 0.30448853969573975, + 0.3027350604534149, + 0.3009990453720093, + 0.2992798388004303, + 0.2975768744945526, + 0.29588961601257324, + 0.29421740770339966, + 0.2925596535205841, + 0.29091593623161316, + 0.28928565979003906, + 0.28766822814941406, + 0.28606313467025757, + 0.28446996212005615, + 0.282888263463974, + 0.28131747245788574, + 0.279757022857666, + 0.2782067060470581, + 0.27666598558425903, + 0.2751343846321106, + 0.27361151576042175, + 0.27209699153900146, + 0.27059048414230347, + 0.26909148693084717, + 0.26759979128837585, + 0.26611483097076416, + 0.26463645696640015, + 0.2631641924381256, + 0.26169782876968384, + 0.260236918926239, + 0.2587813138961792, + 0.25733059644699097, + 0.2558846175670624, + 0.25444307923316956, + 0.2530056834220886, + 0.25157225131988525, + 0.25014257431030273, + 0.24871642887592316, + 0.24729354679584503, + 0.24587391316890717, + 0.24445724487304688, + 0.24304340779781342, + 0.24163231253623962, + 0.24022381007671356, + 0.23881781101226807, + 0.23741415143013, + 0.23601284623146057, + 0.23461374640464783, + 0.23321688175201416, + 0.23182210326194763, + 0.2304295003414154, + 0.22903889417648315, + 0.22765029966831207, + 0.22626391053199768, + 0.22487948834896088, + 0.22349727153778076, + 0.22211706638336182, + 0.22073909640312195, + 0.2193632870912552, + 0.2179897427558899, + 0.21661849319934845, + 0.21524971723556519, + 0.2138834446668625, + 0.21251966059207916, + 0.21115857362747192, + 0.20980024337768555, + 0.208444744348526, + 0.20709222555160522, + 0.20574282109737396, + 0.20439665019512177, + 0.20305375754833221, + 0.2017143815755844, + 0.20037859678268433, + 0.1990465223789215, + 0.1977182775735855, + 0.19639410078525543, + 0.19507402181625366, + 0.1937582641839981, + 0.1924469769001007, + 0.19114026427268982, + 0.18983829021453857, + 0.18854118883609772, + 0.18724913895130157, + 0.1859622597694397, + 0.1846807301044464, + 0.18340469896793365, + 0.1821342259645462, + 0.18086951971054077, + 0.17961080372333527, + 0.17835813760757446, + 0.17711161077022552, + 0.17587144672870636, + 0.17463774979114532, + 0.17341068387031555, + 0.1721903681755066, + 0.1709769368171692, + 0.16977046430110931, + 0.1685711294412613, + 0.16737903654575348, + 0.16619430482387543, + 0.1650170385837555, + 0.16384735703468323, + 0.16268543899059296, + 0.1615312397480011, + 0.1603849232196808, + 0.15924666821956635, + 0.15811648964881897, + 0.1569945216178894, + 0.15588082373142242, + 0.154775470495224, + 0.15367856621742249, + 0.15259021520614624, + 0.15151049196720123, + 0.15043944120407104, + 0.14937715232372284, + 0.1483236849308014, + 0.14727915823459625, + 0.14624358713626862, + 0.14521709084510803, + 0.1441996991634369, + 0.14319144189357758, + 0.14219245314598083, + 0.14120276272296906, + 0.1402224600315094, + 0.13925157487392426, + 0.138290137052536, + 0.1373383104801178, + 0.13639602065086365, + 0.13546344637870789, + 0.13454057276248932, + 0.1336275041103363, + 0.13272419571876526, + 0.1318308413028717, + 0.13094741106033325, + 0.13007397949695587, + 0.12921062111854553, + 0.12835733592510223, + 0.12751421332359314, + 0.12668132781982422, + 0.12585867941379547, + 0.12504637241363525, + 0.12424440681934357, + 0.12345283478498459, + 0.1226717159152031, + 0.12190110981464386, + 0.12114102393388748, + 0.12039151042699814, + 0.11965259909629822, + 0.11892428994178772, + 0.11820673197507858, + 0.11749982088804245, + 0.11680364608764648, + 0.11611822247505188, + 0.11544356495141983, + 0.11477967351675034, + 0.11412657797336578, + 0.11348424851894379, + 0.11285271495580673, + 0.11223199218511581, + 0.11162207275629044, + 0.11102292686700821, + 0.11043452471494675, + 0.10985687375068665, + 0.10928992182016373, + 0.10873372107744217, + 0.10818814486265182, + 0.10765320062637329, + 0.1071288213133812, + 0.10661497712135315, + 0.10611165314912796, + 0.10561871528625488, + 0.10513615608215332, + 0.1046639084815979, + 0.10420185327529907, + 0.10374994575977325, + 0.10330815613269806, + 0.10287632793188095, + 0.10245440155267715, + 0.10204227268695831, + 0.10163987427949905, + 0.10124706476926804, + 0.10086376965045929, + 0.10048986226320267, + 0.1001252681016922, + 0.09976979345083237, + 0.09942338615655899, + 0.09908589720726013, + 0.09875720739364624, + 0.09843720495700836, + 0.09812573343515396, + 0.0978226587176323, + 0.09752784669399261, + 0.09724115580320358, + 0.09696244448423386, + 0.09669160842895508, + 0.09642846137285233, + 0.09617286920547485, + 0.09592472016811371, + 0.0956837460398674, + 0.09544995427131653, + 0.09522305428981781, + 0.09500299394130707, + 0.09478957951068878, + 0.09458266943693161, + 0.0943821519613266, + 0.09418779611587524, + 0.093999482691288, + 0.0938170924782753, + 0.09364040195941925, + 0.09346937388181686, + 0.09330374002456665, + 0.09314342588186264, + 0.0929882600903511, + 0.0928381159901619, + 0.0926927924156189, + 0.09255221486091614, + 0.09241621196269989, + 0.09228460490703583, + 0.09215735644102097, + 0.0920342355966568, + 0.09191516786813736, + 0.0918000116944313, + 0.0916885957121849, + 0.091580830514431, + 0.09147658199071884, + 0.09137576818466187, + 0.09127816557884216, + 0.09118378907442093, + 0.09109239280223846, + 0.09100398421287537, + 0.09091837704181671, + 0.09083549678325653, + 0.09075521677732468, + 0.09067745506763458, + 0.0906020849943161, + 0.09052906185388565, + 0.09045829623937607, + 0.09038961678743362, + 0.09032299369573593, + 0.09025833755731583, + 0.09019558131694794, + 0.09013459086418152, + 0.09007532149553299, + 0.09001770615577698, + 0.0899617075920105, + 0.08990716934204102, + 0.08985411375761032, + 0.08980239182710648, + 0.08975199609994888, + 0.08970284461975098, + 0.08965491503477097, + 0.08960811793804169, + 0.08956238627433777, + 0.08951772004365921, + 0.08947405219078064, + 0.0894312858581543, + 0.08938945084810257, + 0.08934842795133591, + 0.0893082395195961, + 0.08926883339881897, + 0.08923014998435974, + 0.08919217437505722, + 0.08915485441684723, + 0.08911813795566559, + 0.08908211439847946, + 0.08904658257961273, + 0.08901162445545197, + 0.08897718787193298, + 0.08894322067499161, + 0.08890973776578903, + 0.08887668699026108, + 0.08884408324956894, + 0.08881185203790665, + 0.0887799933552742, + 0.08874852955341339, + 0.08871740102767944, + 0.08868660032749176, + 0.08865611255168915, + 0.088625967502594, + 0.08859606087207794, + 0.08856643736362457, + 0.0885370522737503, + 0.08850792050361633, + 0.08847904950380325, + 0.0884503647685051, + 0.08842194825410843, + 0.08839372545480728, + 0.08836566656827927, + 0.08833780884742737, + 0.08831014484167099, + 0.08828264474868774, + 0.08825533837080002, + 0.08822815865278244, + 0.088201142847538, + 0.08817428350448608, + 0.08814756572246552, + 0.08812099695205688, + 0.08809453248977661, + 0.08806821703910828, + 0.08804204314947128, + 0.08801596611738205, + 0.08799001574516296, + 0.08796418458223343, + 0.08793845027685165, + 0.08791282027959824, + 0.08788732439279556, + 0.08786192536354065, + 0.08783657848834991, + 0.08781136572360992, + 0.08778627216815948, + 0.08776123076677322, + 0.08773632347583771, + 0.08771149814128876, + 0.08768671005964279, + 0.08766207844018936, + 0.08763748407363892, + 0.08761297166347504, + 0.0875885859131813, + 0.08756425231695175, + 0.08753998577594757, + 0.08751583844423294, + 0.08749175071716309, + 0.0874677374958992, + 0.08744379878044128, + 0.08741994202136993, + 0.08739615231752396, + 0.08737243711948395, + 0.08734878897666931, + 0.08732522279024124, + 0.08730173856019974, + 0.08727830648422241, + 0.08725499361753464, + 0.08723169565200806, + 0.08720847964286804, + 0.087185338139534, + 0.08716228604316711, + 0.08713927865028381, + 0.08711633086204529, + 0.08709345757961273, + 0.08707066625356674, + 0.08704791963100433, + 0.08702526241540909, + 0.08700264990329742, + 0.08698013424873352, + 0.0869576632976532, + 0.08693524450063705, + 0.08691290766000748, + 0.08689063042402267, + 0.08686843514442444, + 0.08684630692005157, + 0.0868242010474205, + 0.08680218458175659, + 0.08678023517131805, + 0.0867583379149437, + 0.08673650026321411, + 0.0867147371172905, + 0.08669302612543106, + 0.0866713896393776, + 0.08664979785680771, + 0.0866282731294632, + 0.08660683780908585, + 0.08658543229103088, + 0.0865640863776207, + 0.08654281497001648, + 0.08652158826589584, + 0.08650045096874237, + 0.08647935837507248, + 0.08645831793546677, + 0.08643735200166702, + 0.08641643822193146, + 0.08639556914567947, + 0.08637475967407227, + 0.08635405451059341, + 0.08633334934711456, + 0.08631274104118347, + 0.08629214018583298, + 0.08627165853977203, + 0.08625118434429169, + 0.0862307995557785, + 0.08621048927307129, + 0.08619020134210587, + 0.0861700028181076, + 0.08614980429410934, + 0.08612972497940063, + 0.08610967546701431, + 0.08608965575695038, + 0.0860697329044342, + 0.08604983985424042, + 0.0860300287604332, + 0.08601026237010956, + 0.0859905406832695, + 0.08597087860107422, + 0.08595128357410431, + 0.08593171089887619, + 0.08591223508119583, + 0.08589278161525726, + 0.08587340265512466, + 0.08585407584905624, + 0.08583478629589081, + 0.08581557869911194, + 0.08579639345407486, + 0.08577729016542435, + 0.08575818687677383, + 0.08573921024799347, + 0.08572026342153549, + 0.0857013538479805, + 0.08568250387907028, + 0.08566368371248245, + 0.08564493805170059, + 0.0856262594461441, + 0.0856076180934906, + 0.08558899909257889, + 0.08557046949863434, + 0.08555197715759277, + 0.08553354442119598, + 0.08551517128944397, + 0.08549682796001434, + 0.0854785218834877, + 0.08546032756567001, + 0.08544216305017471, + 0.0854240134358406, + 0.08540590107440948, + 0.08538787811994553, + 0.08536992222070694, + 0.08535198122262955, + 0.08533412218093872, + 0.0853162482380867, + 0.08529847115278244, + 0.08528073132038116, + 0.08526305109262466, + 0.08524543792009354, + 0.085227832198143, + 0.08521027863025665, + 0.08519279211759567, + 0.08517535030841827, + 0.08515793830156326, + 0.08514060080051422, + 0.08512333035469055, + 0.08510605990886688, + 0.08508886396884918, + 0.08507170528173447, + 0.08505459874868393, + 0.08503749966621399, + 0.0850205048918724, + 0.08500353991985321, + 0.084986612200737, + 0.08496973663568497, + 0.08495292067527771, + 0.08493611961603165, + 0.08491939306259155, + 0.08490269631147385, + 0.08488606661558151, + 0.08486945182085037, + 0.08485287427902222, + 0.08483637124300003, + 0.08481992036104202, + 0.0848034918308258, + 0.08478713780641556, + 0.08477077633142471, + 0.08475450426340103, + 0.08473829925060272, + 0.08472207188606262, + 0.08470592647790909, + 0.08468979597091675, + 0.08467376977205276, + 0.0846577137708664, + 0.08464173972606659, + 0.08462582528591156, + 0.08460991829633713, + 0.08459410816431046, + 0.08457830548286438, + 0.0845625177025795, + 0.0845467820763588, + 0.08453113585710526, + 0.08451549708843231, + 0.08449989557266235, + 0.08448434621095657, + 0.08446886390447617, + 0.08445338904857635, + 0.08443794399499893, + 0.08442258089780807, + 0.08440723270177841, + 0.08439195901155472, + 0.08437668532133102, + 0.0843614786863327, + 0.08434631675481796, + 0.08433116227388382, + 0.08431608229875565, + 0.08430102467536926, + 0.08428601175546646, + 0.08427102863788605, + 0.08425609767436981, + 0.08424121141433716, + 0.08422636240720749, + 0.0842115506529808, + 0.08419676870107651, + 0.08418208360671997, + 0.08416736871004105, + 0.0841526985168457, + 0.08413808792829514, + 0.08412351459264755, + 0.08410899341106415, + 0.08409448713064194, + 0.0840800479054451, + 0.08406560122966766, + 0.0840512365102768, + 0.08403688669204712, + 0.08402261137962341, + 0.0840083435177803, + 0.08399411290884018, + 0.08397991955280304, + 0.08396575599908829, + 0.08395164459943771, + 0.08393757045269012, + 0.08392354100942612, + 0.0839095190167427, + 0.08389555662870407, + 0.08388162404298782, + 0.08386775106191635, + 0.08385389298200607, + 0.08384007215499878, + 0.08382630348205566, + 0.08381257206201553, + 0.08379882574081421, + 0.08378516882658005, + 0.08377152681350708, + 0.0837579220533371, + 0.0837443619966507, + 0.08373083174228668, + 0.08371734619140625, + 0.0837038978934288, + 0.08369047939777374, + 0.08367707580327988, + 0.08366374671459198, + 0.08365041762590408, + 0.08363714069128036, + 0.08362390846014023, + 0.08361067622900009, + 0.08359751105308533, + 0.08358434587717056, + 0.08357127010822296, + 0.08355817943811417, + 0.08354513347148895, + 0.08353213220834732, + 0.08351918309926987, + 0.08350623399019241, + 0.08349332213401794, + 0.08348045498132706, + 0.08346759527921677, + 0.08345481008291245, + 0.08344206213951111, + 0.08342933654785156, + 0.08341660350561142, + 0.08340395987033844, + 0.08339129388332367, + 0.08337869495153427, + 0.08336614817380905, + 0.08335359394550323, + 0.0833410769701004 + ] + } + ], + "layout": { + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + } + } + }, + "text/html": [ + "
\n", + " \n", + " \n", + "
\n", + " \n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = go.Figure(\n", + " data=[\n", + " go.Scatter(x=np.arange(600), y=w_loss, name=\"L2L wrapper\"),\n", + " go.Scatter(x=np.arange(600), y=r_loss, name=\"Usual model\"),\n", + " ]\n", + ")\n", + "fig.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/train_l2l.ipynb b/examples/train_l2l.ipynb deleted file mode 100644 index f97db30..0000000 --- a/examples/train_l2l.ipynb +++ /dev/null @@ -1,11223 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "!pip install layer-to-layer-pytorch" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Optional\n", - "\n", - "import torch\n", - "from torch import nn, optim\n", - "\n", - "import numpy as np\n", - "\n", - "from tqdm.auto import tqdm, trange\n", - "from tqdm.contrib import tenumerate, tzip\n", - "\n", - "from layer_to_layer_pytorch import Layer2Layer" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "class M(nn.Module):\n", - " def __init__(self, depth: int, dim: int, hidden_dim: Optional[int] = None):\n", - " super().__init__()\n", - " hidden_dim = hidden_dim or dim\n", - " self.layers = nn.ModuleList(\n", - " [\n", - " nn.Sequential(\n", - " nn.Linear(dim, hidden_dim),\n", - " nn.BatchNorm1d(hidden_dim),\n", - " nn.LeakyReLU(),\n", - " )\n", - " ]\n", - " + [\n", - " nn.Sequential(\n", - " nn.Linear(hidden_dim, hidden_dim),\n", - " nn.BatchNorm1d(hidden_dim),\n", - " nn.LeakyReLU(),\n", - " )\n", - " for i in range(depth)\n", - " ]\n", - " + [nn.Linear(hidden_dim, dim), nn.Sigmoid()]\n", - " )\n", - " \n", - " def __len__(self) -> int:\n", - " return len(self.layers)\n", - "\n", - " def forward(self, batch: torch.Tensor) -> torch.Tensor:\n", - " x = batch\n", - " for l in self.layers:\n", - " x = l(x)\n", - "\n", - " return x\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "model = M(depth=5, dim=40, hidden_dim=100)\n", - "\n", - "l2l_model = Layer2Layer(model, layers_attr=\"layers\", microbatch_size=100, verbose=False)\n", - "optimizer = optim.AdamW(l2l_model.main_model.parameters(), lr=0.001)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "x = torch.rand(1_000, 40)\n", - "y = torch.rand(1_000, 40)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[layers.0.0.weight]: True\n", - "[layers.0.0.bias]: True\n", - "[layers.0.1.weight]: True\n", - "[layers.0.1.bias]: True\n", - "[layers.1.0.weight]: True\n", - "[layers.1.0.bias]: True\n", - "[layers.1.1.weight]: True\n", - "[layers.1.1.bias]: True\n", - "[layers.2.0.weight]: True\n", - "[layers.2.0.bias]: True\n", - "[layers.2.1.weight]: True\n", - "[layers.2.1.bias]: True\n", - "[layers.3.0.weight]: True\n", - "[layers.3.0.bias]: True\n", - "[layers.3.1.weight]: True\n", - "[layers.3.1.bias]: True\n", - "[layers.4.0.weight]: True\n", - "[layers.4.0.bias]: True\n", - "[layers.4.1.weight]: True\n", - "[layers.4.1.bias]: True\n", - "[layers.5.0.weight]: True\n", - "[layers.5.0.bias]: True\n", - "[layers.5.1.weight]: True\n", - "[layers.5.1.bias]: True\n", - "[layers.6.weight]: True\n", - "[layers.6.bias]: True\n" - ] - } - ], - "source": [ - "for name, param in l2l_model.main_model.named_parameters():\n", - " print(f\"[{name}]: {param.requires_grad}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "238c6c84d0454e26be3aa92bb277acdc", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, max=5000.0), HTML(value='')))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0] loss = 376.8576202392578\n", - "[50] loss = 206.40757598876954\n", - "[100] loss = 118.69585952758788\n", - "[150] loss = 68.42945022583008\n", - "[200] loss = 43.035230827331546\n", - "[250] loss = 29.697996139526367\n", - "[300] loss = 22.09250864982605\n", - "[350] loss = 17.22306752204895\n", - "[400] loss = 14.177734017372131\n", - "[450] loss = 11.732134699821472\n", - "[500] loss = 10.087790381908416\n", - "[550] loss = 8.76927183866501\n", - "[600] loss = 7.464912402629852\n", - "[650] loss = 6.680013132095337\n", - "[700] loss = 5.779639863967896\n", - "[750] loss = 5.09246871471405\n", - "[800] loss = 4.887834095954895\n", - "[850] loss = 4.273843598365784\n", - "[900] loss = 3.8856835305690764\n", - "[950] loss = 3.866645133495331\n", - "[1000] loss = 3.471523904800415\n", - "[1050] loss = 2.954757010936737\n", - "[1100] loss = 2.6717466741800306\n", - "[1150] loss = 2.74538711309433\n", - "[1200] loss = 2.5216720938682555\n", - "[1250] loss = 2.4106470167636873\n", - "[1300] loss = 2.2882141530513764\n", - "[1350] loss = 2.3573889434337616\n", - "[1400] loss = 1.898020625114441\n", - "[1450] loss = 1.891413152217865\n", - "[1500] loss = 1.758363127708435\n", - "[1550] loss = 1.6464737057685852\n", - "[1600] loss = 1.7685385644435883\n", - "[1650] loss = 2.1038114428520203\n", - "[1700] loss = 2.0273545384407043\n", - "[1750] loss = 1.4551281809806824\n", - "[1800] loss = 1.4175875067710877\n", - "[1850] loss = 1.241543933749199\n", - "[1900] loss = 1.1285680681467056\n", - "[1950] loss = 1.0587911039590836\n", - "[2000] loss = 1.1775445610284805\n", - "[2050] loss = 1.1529074668884278\n", - "[2100] loss = 1.003470841050148\n", - "[2150] loss = 1.395029878616333\n", - "[2200] loss = 1.6547406792640686\n", - "[2250] loss = 1.068004322052002\n", - "[2300] loss = 0.9368253529071808\n", - "[2350] loss = 0.9433181345462799\n", - "[2400] loss = 0.842677453160286\n", - "[2450] loss = 0.7463112711906433\n", - "[2500] loss = 0.7242490917444229\n", - "[2550] loss = 0.6679306745529174\n", - "[2600] loss = 1.1337595343589784\n", - "[2650] loss = 1.2738955676555634\n", - "[2700] loss = 0.8528008729219436\n", - "[2750] loss = 0.6641845554113388\n", - "[2800] loss = 0.5174363821744918\n", - "[2850] loss = 0.914308774471283\n", - "[2900] loss = 0.7244221955537796\n", - "[2950] loss = 0.75717394053936\n", - "[3000] loss = 0.6095875263214111\n", - "[3050] loss = 0.5976971000432968\n", - "[3100] loss = 0.7651794373989105\n", - "[3150] loss = 1.3482511520385743\n", - "[3200] loss = 0.5272327274084091\n", - "[3250] loss = 0.39242734387516975\n", - "[3300] loss = 0.5914616107940673\n", - "[3350] loss = 1.128665852546692\n", - "[3400] loss = 0.9893831193447113\n", - "[3450] loss = 0.4173383444547653\n", - "[3500] loss = 0.7014477223157882\n", - "[3550] loss = 1.1478433847427367\n", - "[3600] loss = 0.3743390828371048\n", - "[3650] loss = 0.34441301599144936\n", - "[3700] loss = 0.7628984034061432\n", - "[3750] loss = 0.9527170121669769\n", - "[3800] loss = 0.6133497804403305\n", - "[3850] loss = 0.28445797264575956\n", - "[3900] loss = 0.44360363483428955\n", - "[3950] loss = 0.8688757538795471\n", - "[4000] loss = 0.696421080827713\n", - "[4050] loss = 0.28049051091074945\n", - "[4100] loss = 0.5969273537397385\n", - "[4150] loss = 0.799033010005951\n", - "[4200] loss = 0.3561955183744431\n", - "[4250] loss = 0.4803548067808151\n", - "[4300] loss = 0.6605994999408722\n", - "[4350] loss = 0.44364264905452727\n", - "[4400] loss = 0.26969398111104964\n", - "[4450] loss = 1.0753908455371857\n", - "[4500] loss = 0.22884457558393478\n", - "[4550] loss = 0.4664222300052643\n", - "[4600] loss = 0.8867884635925293\n", - "[4650] loss = 0.2615995705127716\n", - "[4700] loss = 0.3343664065003395\n", - "[4750] loss = 0.5504543632268906\n", - "[4800] loss = 0.30757182091474533\n", - "[4850] loss = 0.2765576124191284\n", - "[4900] loss = 1.44754239320755\n", - "[4950] loss = 0.2750774249434471\n", - "\n" - ] - } - ], - "source": [ - "losses = []\n", - "loss_fn = nn.MSELoss(reduction=\"sum\") # так как у нас и так усредняются лоссы, нам их нужно просто копить\n", - "\n", - "for i in trange(5000):\n", - " l2l_model.zero_grad()\n", - " l2l_model.forward(x)\n", - " loss_value = l2l_model.backward(x, y, loss_fn)\n", - " if i % 50 == 0:\n", - " tqdm.write(f\"[{i}] loss = {loss_value.item()}\")\n", - " losses.append(loss_value.item())\n", - " \n", - " optimizer.step()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - " \n", - " " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "type": "scatter", - "x": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 890, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223, - 1224, - 1225, - 1226, - 1227, - 1228, - 1229, - 1230, - 1231, - 1232, - 1233, - 1234, - 1235, - 1236, - 1237, - 1238, - 1239, - 1240, - 1241, - 1242, - 1243, - 1244, - 1245, - 1246, - 1247, - 1248, - 1249, - 1250, - 1251, - 1252, - 1253, - 1254, - 1255, - 1256, - 1257, - 1258, - 1259, - 1260, - 1261, - 1262, - 1263, - 1264, - 1265, - 1266, - 1267, - 1268, - 1269, - 1270, - 1271, - 1272, - 1273, - 1274, - 1275, - 1276, - 1277, - 1278, - 1279, - 1280, - 1281, - 1282, - 1283, - 1284, - 1285, - 1286, - 1287, - 1288, - 1289, - 1290, - 1291, - 1292, - 1293, - 1294, - 1295, - 1296, - 1297, - 1298, - 1299, - 1300, - 1301, - 1302, - 1303, - 1304, - 1305, - 1306, - 1307, - 1308, - 1309, - 1310, - 1311, - 1312, - 1313, - 1314, - 1315, - 1316, - 1317, - 1318, - 1319, - 1320, - 1321, - 1322, - 1323, - 1324, - 1325, - 1326, - 1327, - 1328, - 1329, - 1330, - 1331, - 1332, - 1333, - 1334, - 1335, - 1336, - 1337, - 1338, - 1339, - 1340, - 1341, - 1342, - 1343, - 1344, - 1345, - 1346, - 1347, - 1348, - 1349, - 1350, - 1351, - 1352, - 1353, - 1354, - 1355, - 1356, - 1357, - 1358, - 1359, - 1360, - 1361, - 1362, - 1363, - 1364, - 1365, - 1366, - 1367, - 1368, - 1369, - 1370, - 1371, - 1372, - 1373, - 1374, - 1375, - 1376, - 1377, - 1378, - 1379, - 1380, - 1381, - 1382, - 1383, - 1384, - 1385, - 1386, - 1387, - 1388, - 1389, - 1390, - 1391, - 1392, - 1393, - 1394, - 1395, - 1396, - 1397, - 1398, - 1399, - 1400, - 1401, - 1402, - 1403, - 1404, - 1405, - 1406, - 1407, - 1408, - 1409, - 1410, - 1411, - 1412, - 1413, - 1414, - 1415, - 1416, - 1417, - 1418, - 1419, - 1420, - 1421, - 1422, - 1423, - 1424, - 1425, - 1426, - 1427, - 1428, - 1429, - 1430, - 1431, - 1432, - 1433, - 1434, - 1435, - 1436, - 1437, - 1438, - 1439, - 1440, - 1441, - 1442, - 1443, - 1444, - 1445, - 1446, - 1447, - 1448, - 1449, - 1450, - 1451, - 1452, - 1453, - 1454, - 1455, - 1456, - 1457, - 1458, - 1459, - 1460, - 1461, - 1462, - 1463, - 1464, - 1465, - 1466, - 1467, - 1468, - 1469, - 1470, - 1471, - 1472, - 1473, - 1474, - 1475, - 1476, - 1477, - 1478, - 1479, - 1480, - 1481, - 1482, - 1483, - 1484, - 1485, - 1486, - 1487, - 1488, - 1489, - 1490, - 1491, - 1492, - 1493, - 1494, - 1495, - 1496, - 1497, - 1498, - 1499, - 1500, - 1501, - 1502, - 1503, - 1504, - 1505, - 1506, - 1507, - 1508, - 1509, - 1510, - 1511, - 1512, - 1513, - 1514, - 1515, - 1516, - 1517, - 1518, - 1519, - 1520, - 1521, - 1522, - 1523, - 1524, - 1525, - 1526, - 1527, - 1528, - 1529, - 1530, - 1531, - 1532, - 1533, - 1534, - 1535, - 1536, - 1537, - 1538, - 1539, - 1540, - 1541, - 1542, - 1543, - 1544, - 1545, - 1546, - 1547, - 1548, - 1549, - 1550, - 1551, - 1552, - 1553, - 1554, - 1555, - 1556, - 1557, - 1558, - 1559, - 1560, - 1561, - 1562, - 1563, - 1564, - 1565, - 1566, - 1567, - 1568, - 1569, - 1570, - 1571, - 1572, - 1573, - 1574, - 1575, - 1576, - 1577, - 1578, - 1579, - 1580, - 1581, - 1582, - 1583, - 1584, - 1585, - 1586, - 1587, - 1588, - 1589, - 1590, - 1591, - 1592, - 1593, - 1594, - 1595, - 1596, - 1597, - 1598, - 1599, - 1600, - 1601, - 1602, - 1603, - 1604, - 1605, - 1606, - 1607, - 1608, - 1609, - 1610, - 1611, - 1612, - 1613, - 1614, - 1615, - 1616, - 1617, - 1618, - 1619, - 1620, - 1621, - 1622, - 1623, - 1624, - 1625, - 1626, - 1627, - 1628, - 1629, - 1630, - 1631, - 1632, - 1633, - 1634, - 1635, - 1636, - 1637, - 1638, - 1639, - 1640, - 1641, - 1642, - 1643, - 1644, - 1645, - 1646, - 1647, - 1648, - 1649, - 1650, - 1651, - 1652, - 1653, - 1654, - 1655, - 1656, - 1657, - 1658, - 1659, - 1660, - 1661, - 1662, - 1663, - 1664, - 1665, - 1666, - 1667, - 1668, - 1669, - 1670, - 1671, - 1672, - 1673, - 1674, - 1675, - 1676, - 1677, - 1678, - 1679, - 1680, - 1681, - 1682, - 1683, - 1684, - 1685, - 1686, - 1687, - 1688, - 1689, - 1690, - 1691, - 1692, - 1693, - 1694, - 1695, - 1696, - 1697, - 1698, - 1699, - 1700, - 1701, - 1702, - 1703, - 1704, - 1705, - 1706, - 1707, - 1708, - 1709, - 1710, - 1711, - 1712, - 1713, - 1714, - 1715, - 1716, - 1717, - 1718, - 1719, - 1720, - 1721, - 1722, - 1723, - 1724, - 1725, - 1726, - 1727, - 1728, - 1729, - 1730, - 1731, - 1732, - 1733, - 1734, - 1735, - 1736, - 1737, - 1738, - 1739, - 1740, - 1741, - 1742, - 1743, - 1744, - 1745, - 1746, - 1747, - 1748, - 1749, - 1750, - 1751, - 1752, - 1753, - 1754, - 1755, - 1756, - 1757, - 1758, - 1759, - 1760, - 1761, - 1762, - 1763, - 1764, - 1765, - 1766, - 1767, - 1768, - 1769, - 1770, - 1771, - 1772, - 1773, - 1774, - 1775, - 1776, - 1777, - 1778, - 1779, - 1780, - 1781, - 1782, - 1783, - 1784, - 1785, - 1786, - 1787, - 1788, - 1789, - 1790, - 1791, - 1792, - 1793, - 1794, - 1795, - 1796, - 1797, - 1798, - 1799, - 1800, - 1801, - 1802, - 1803, - 1804, - 1805, - 1806, - 1807, - 1808, - 1809, - 1810, - 1811, - 1812, - 1813, - 1814, - 1815, - 1816, - 1817, - 1818, - 1819, - 1820, - 1821, - 1822, - 1823, - 1824, - 1825, - 1826, - 1827, - 1828, - 1829, - 1830, - 1831, - 1832, - 1833, - 1834, - 1835, - 1836, - 1837, - 1838, - 1839, - 1840, - 1841, - 1842, - 1843, - 1844, - 1845, - 1846, - 1847, - 1848, - 1849, - 1850, - 1851, - 1852, - 1853, - 1854, - 1855, - 1856, - 1857, - 1858, - 1859, - 1860, - 1861, - 1862, - 1863, - 1864, - 1865, - 1866, - 1867, - 1868, - 1869, - 1870, - 1871, - 1872, - 1873, - 1874, - 1875, - 1876, - 1877, - 1878, - 1879, - 1880, - 1881, - 1882, - 1883, - 1884, - 1885, - 1886, - 1887, - 1888, - 1889, - 1890, - 1891, - 1892, - 1893, - 1894, - 1895, - 1896, - 1897, - 1898, - 1899, - 1900, - 1901, - 1902, - 1903, - 1904, - 1905, - 1906, - 1907, - 1908, - 1909, - 1910, - 1911, - 1912, - 1913, - 1914, - 1915, - 1916, - 1917, - 1918, - 1919, - 1920, - 1921, - 1922, - 1923, - 1924, - 1925, - 1926, - 1927, - 1928, - 1929, - 1930, - 1931, - 1932, - 1933, - 1934, - 1935, - 1936, - 1937, - 1938, - 1939, - 1940, - 1941, - 1942, - 1943, - 1944, - 1945, - 1946, - 1947, - 1948, - 1949, - 1950, - 1951, - 1952, - 1953, - 1954, - 1955, - 1956, - 1957, - 1958, - 1959, - 1960, - 1961, - 1962, - 1963, - 1964, - 1965, - 1966, - 1967, - 1968, - 1969, - 1970, - 1971, - 1972, - 1973, - 1974, - 1975, - 1976, - 1977, - 1978, - 1979, - 1980, - 1981, - 1982, - 1983, - 1984, - 1985, - 1986, - 1987, - 1988, - 1989, - 1990, - 1991, - 1992, - 1993, - 1994, - 1995, - 1996, - 1997, - 1998, - 1999, - 2000, - 2001, - 2002, - 2003, - 2004, - 2005, - 2006, - 2007, - 2008, - 2009, - 2010, - 2011, - 2012, - 2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026, - 2027, - 2028, - 2029, - 2030, - 2031, - 2032, - 2033, - 2034, - 2035, - 2036, - 2037, - 2038, - 2039, - 2040, - 2041, - 2042, - 2043, - 2044, - 2045, - 2046, - 2047, - 2048, - 2049, - 2050, - 2051, - 2052, - 2053, - 2054, - 2055, - 2056, - 2057, - 2058, - 2059, - 2060, - 2061, - 2062, - 2063, - 2064, - 2065, - 2066, - 2067, - 2068, - 2069, - 2070, - 2071, - 2072, - 2073, - 2074, - 2075, - 2076, - 2077, - 2078, - 2079, - 2080, - 2081, - 2082, - 2083, - 2084, - 2085, - 2086, - 2087, - 2088, - 2089, - 2090, - 2091, - 2092, - 2093, - 2094, - 2095, - 2096, - 2097, - 2098, - 2099, - 2100, - 2101, - 2102, - 2103, - 2104, - 2105, - 2106, - 2107, - 2108, - 2109, - 2110, - 2111, - 2112, - 2113, - 2114, - 2115, - 2116, - 2117, - 2118, - 2119, - 2120, - 2121, - 2122, - 2123, - 2124, - 2125, - 2126, - 2127, - 2128, - 2129, - 2130, - 2131, - 2132, - 2133, - 2134, - 2135, - 2136, - 2137, - 2138, - 2139, - 2140, - 2141, - 2142, - 2143, - 2144, - 2145, - 2146, - 2147, - 2148, - 2149, - 2150, - 2151, - 2152, - 2153, - 2154, - 2155, - 2156, - 2157, - 2158, - 2159, - 2160, - 2161, - 2162, - 2163, - 2164, - 2165, - 2166, - 2167, - 2168, - 2169, - 2170, - 2171, - 2172, - 2173, - 2174, - 2175, - 2176, - 2177, - 2178, - 2179, - 2180, - 2181, - 2182, - 2183, - 2184, - 2185, - 2186, - 2187, - 2188, - 2189, - 2190, - 2191, - 2192, - 2193, - 2194, - 2195, - 2196, - 2197, - 2198, - 2199, - 2200, - 2201, - 2202, - 2203, - 2204, - 2205, - 2206, - 2207, - 2208, - 2209, - 2210, - 2211, - 2212, - 2213, - 2214, - 2215, - 2216, - 2217, - 2218, - 2219, - 2220, - 2221, - 2222, - 2223, - 2224, - 2225, - 2226, - 2227, - 2228, - 2229, - 2230, - 2231, - 2232, - 2233, - 2234, - 2235, - 2236, - 2237, - 2238, - 2239, - 2240, - 2241, - 2242, - 2243, - 2244, - 2245, - 2246, - 2247, - 2248, - 2249, - 2250, - 2251, - 2252, - 2253, - 2254, - 2255, - 2256, - 2257, - 2258, - 2259, - 2260, - 2261, - 2262, - 2263, - 2264, - 2265, - 2266, - 2267, - 2268, - 2269, - 2270, - 2271, - 2272, - 2273, - 2274, - 2275, - 2276, - 2277, - 2278, - 2279, - 2280, - 2281, - 2282, - 2283, - 2284, - 2285, - 2286, - 2287, - 2288, - 2289, - 2290, - 2291, - 2292, - 2293, - 2294, - 2295, - 2296, - 2297, - 2298, - 2299, - 2300, - 2301, - 2302, - 2303, - 2304, - 2305, - 2306, - 2307, - 2308, - 2309, - 2310, - 2311, - 2312, - 2313, - 2314, - 2315, - 2316, - 2317, - 2318, - 2319, - 2320, - 2321, - 2322, - 2323, - 2324, - 2325, - 2326, - 2327, - 2328, - 2329, - 2330, - 2331, - 2332, - 2333, - 2334, - 2335, - 2336, - 2337, - 2338, - 2339, - 2340, - 2341, - 2342, - 2343, - 2344, - 2345, - 2346, - 2347, - 2348, - 2349, - 2350, - 2351, - 2352, - 2353, - 2354, - 2355, - 2356, - 2357, - 2358, - 2359, - 2360, - 2361, - 2362, - 2363, - 2364, - 2365, - 2366, - 2367, - 2368, - 2369, - 2370, - 2371, - 2372, - 2373, - 2374, - 2375, - 2376, - 2377, - 2378, - 2379, - 2380, - 2381, - 2382, - 2383, - 2384, - 2385, - 2386, - 2387, - 2388, - 2389, - 2390, - 2391, - 2392, - 2393, - 2394, - 2395, - 2396, - 2397, - 2398, - 2399, - 2400, - 2401, - 2402, - 2403, - 2404, - 2405, - 2406, - 2407, - 2408, - 2409, - 2410, - 2411, - 2412, - 2413, - 2414, - 2415, - 2416, - 2417, - 2418, - 2419, - 2420, - 2421, - 2422, - 2423, - 2424, - 2425, - 2426, - 2427, - 2428, - 2429, - 2430, - 2431, - 2432, - 2433, - 2434, - 2435, - 2436, - 2437, - 2438, - 2439, - 2440, - 2441, - 2442, - 2443, - 2444, - 2445, - 2446, - 2447, - 2448, - 2449, - 2450, - 2451, - 2452, - 2453, - 2454, - 2455, - 2456, - 2457, - 2458, - 2459, - 2460, - 2461, - 2462, - 2463, - 2464, - 2465, - 2466, - 2467, - 2468, - 2469, - 2470, - 2471, - 2472, - 2473, - 2474, - 2475, - 2476, - 2477, - 2478, - 2479, - 2480, - 2481, - 2482, - 2483, - 2484, - 2485, - 2486, - 2487, - 2488, - 2489, - 2490, - 2491, - 2492, - 2493, - 2494, - 2495, - 2496, - 2497, - 2498, - 2499, - 2500, - 2501, - 2502, - 2503, - 2504, - 2505, - 2506, - 2507, - 2508, - 2509, - 2510, - 2511, - 2512, - 2513, - 2514, - 2515, - 2516, - 2517, - 2518, - 2519, - 2520, - 2521, - 2522, - 2523, - 2524, - 2525, - 2526, - 2527, - 2528, - 2529, - 2530, - 2531, - 2532, - 2533, - 2534, - 2535, - 2536, - 2537, - 2538, - 2539, - 2540, - 2541, - 2542, - 2543, - 2544, - 2545, - 2546, - 2547, - 2548, - 2549, - 2550, - 2551, - 2552, - 2553, - 2554, - 2555, - 2556, - 2557, - 2558, - 2559, - 2560, - 2561, - 2562, - 2563, - 2564, - 2565, - 2566, - 2567, - 2568, - 2569, - 2570, - 2571, - 2572, - 2573, - 2574, - 2575, - 2576, - 2577, - 2578, - 2579, - 2580, - 2581, - 2582, - 2583, - 2584, - 2585, - 2586, - 2587, - 2588, - 2589, - 2590, - 2591, - 2592, - 2593, - 2594, - 2595, - 2596, - 2597, - 2598, - 2599, - 2600, - 2601, - 2602, - 2603, - 2604, - 2605, - 2606, - 2607, - 2608, - 2609, - 2610, - 2611, - 2612, - 2613, - 2614, - 2615, - 2616, - 2617, - 2618, - 2619, - 2620, - 2621, - 2622, - 2623, - 2624, - 2625, - 2626, - 2627, - 2628, - 2629, - 2630, - 2631, - 2632, - 2633, - 2634, - 2635, - 2636, - 2637, - 2638, - 2639, - 2640, - 2641, - 2642, - 2643, - 2644, - 2645, - 2646, - 2647, - 2648, - 2649, - 2650, - 2651, - 2652, - 2653, - 2654, - 2655, - 2656, - 2657, - 2658, - 2659, - 2660, - 2661, - 2662, - 2663, - 2664, - 2665, - 2666, - 2667, - 2668, - 2669, - 2670, - 2671, - 2672, - 2673, - 2674, - 2675, - 2676, - 2677, - 2678, - 2679, - 2680, - 2681, - 2682, - 2683, - 2684, - 2685, - 2686, - 2687, - 2688, - 2689, - 2690, - 2691, - 2692, - 2693, - 2694, - 2695, - 2696, - 2697, - 2698, - 2699, - 2700, - 2701, - 2702, - 2703, - 2704, - 2705, - 2706, - 2707, - 2708, - 2709, - 2710, - 2711, - 2712, - 2713, - 2714, - 2715, - 2716, - 2717, - 2718, - 2719, - 2720, - 2721, - 2722, - 2723, - 2724, - 2725, - 2726, - 2727, - 2728, - 2729, - 2730, - 2731, - 2732, - 2733, - 2734, - 2735, - 2736, - 2737, - 2738, - 2739, - 2740, - 2741, - 2742, - 2743, - 2744, - 2745, - 2746, - 2747, - 2748, - 2749, - 2750, - 2751, - 2752, - 2753, - 2754, - 2755, - 2756, - 2757, - 2758, - 2759, - 2760, - 2761, - 2762, - 2763, - 2764, - 2765, - 2766, - 2767, - 2768, - 2769, - 2770, - 2771, - 2772, - 2773, - 2774, - 2775, - 2776, - 2777, - 2778, - 2779, - 2780, - 2781, - 2782, - 2783, - 2784, - 2785, - 2786, - 2787, - 2788, - 2789, - 2790, - 2791, - 2792, - 2793, - 2794, - 2795, - 2796, - 2797, - 2798, - 2799, - 2800, - 2801, - 2802, - 2803, - 2804, - 2805, - 2806, - 2807, - 2808, - 2809, - 2810, - 2811, - 2812, - 2813, - 2814, - 2815, - 2816, - 2817, - 2818, - 2819, - 2820, - 2821, - 2822, - 2823, - 2824, - 2825, - 2826, - 2827, - 2828, - 2829, - 2830, - 2831, - 2832, - 2833, - 2834, - 2835, - 2836, - 2837, - 2838, - 2839, - 2840, - 2841, - 2842, - 2843, - 2844, - 2845, - 2846, - 2847, - 2848, - 2849, - 2850, - 2851, - 2852, - 2853, - 2854, - 2855, - 2856, - 2857, - 2858, - 2859, - 2860, - 2861, - 2862, - 2863, - 2864, - 2865, - 2866, - 2867, - 2868, - 2869, - 2870, - 2871, - 2872, - 2873, - 2874, - 2875, - 2876, - 2877, - 2878, - 2879, - 2880, - 2881, - 2882, - 2883, - 2884, - 2885, - 2886, - 2887, - 2888, - 2889, - 2890, - 2891, - 2892, - 2893, - 2894, - 2895, - 2896, - 2897, - 2898, - 2899, - 2900, - 2901, - 2902, - 2903, - 2904, - 2905, - 2906, - 2907, - 2908, - 2909, - 2910, - 2911, - 2912, - 2913, - 2914, - 2915, - 2916, - 2917, - 2918, - 2919, - 2920, - 2921, - 2922, - 2923, - 2924, - 2925, - 2926, - 2927, - 2928, - 2929, - 2930, - 2931, - 2932, - 2933, - 2934, - 2935, - 2936, - 2937, - 2938, - 2939, - 2940, - 2941, - 2942, - 2943, - 2944, - 2945, - 2946, - 2947, - 2948, - 2949, - 2950, - 2951, - 2952, - 2953, - 2954, - 2955, - 2956, - 2957, - 2958, - 2959, - 2960, - 2961, - 2962, - 2963, - 2964, - 2965, - 2966, - 2967, - 2968, - 2969, - 2970, - 2971, - 2972, - 2973, - 2974, - 2975, - 2976, - 2977, - 2978, - 2979, - 2980, - 2981, - 2982, - 2983, - 2984, - 2985, - 2986, - 2987, - 2988, - 2989, - 2990, - 2991, - 2992, - 2993, - 2994, - 2995, - 2996, - 2997, - 2998, - 2999, - 3000, - 3001, - 3002, - 3003, - 3004, - 3005, - 3006, - 3007, - 3008, - 3009, - 3010, - 3011, - 3012, - 3013, - 3014, - 3015, - 3016, - 3017, - 3018, - 3019, - 3020, - 3021, - 3022, - 3023, - 3024, - 3025, - 3026, - 3027, - 3028, - 3029, - 3030, - 3031, - 3032, - 3033, - 3034, - 3035, - 3036, - 3037, - 3038, - 3039, - 3040, - 3041, - 3042, - 3043, - 3044, - 3045, - 3046, - 3047, - 3048, - 3049, - 3050, - 3051, - 3052, - 3053, - 3054, - 3055, - 3056, - 3057, - 3058, - 3059, - 3060, - 3061, - 3062, - 3063, - 3064, - 3065, - 3066, - 3067, - 3068, - 3069, - 3070, - 3071, - 3072, - 3073, - 3074, - 3075, - 3076, - 3077, - 3078, - 3079, - 3080, - 3081, - 3082, - 3083, - 3084, - 3085, - 3086, - 3087, - 3088, - 3089, - 3090, - 3091, - 3092, - 3093, - 3094, - 3095, - 3096, - 3097, - 3098, - 3099, - 3100, - 3101, - 3102, - 3103, - 3104, - 3105, - 3106, - 3107, - 3108, - 3109, - 3110, - 3111, - 3112, - 3113, - 3114, - 3115, - 3116, - 3117, - 3118, - 3119, - 3120, - 3121, - 3122, - 3123, - 3124, - 3125, - 3126, - 3127, - 3128, - 3129, - 3130, - 3131, - 3132, - 3133, - 3134, - 3135, - 3136, - 3137, - 3138, - 3139, - 3140, - 3141, - 3142, - 3143, - 3144, - 3145, - 3146, - 3147, - 3148, - 3149, - 3150, - 3151, - 3152, - 3153, - 3154, - 3155, - 3156, - 3157, - 3158, - 3159, - 3160, - 3161, - 3162, - 3163, - 3164, - 3165, - 3166, - 3167, - 3168, - 3169, - 3170, - 3171, - 3172, - 3173, - 3174, - 3175, - 3176, - 3177, - 3178, - 3179, - 3180, - 3181, - 3182, - 3183, - 3184, - 3185, - 3186, - 3187, - 3188, - 3189, - 3190, - 3191, - 3192, - 3193, - 3194, - 3195, - 3196, - 3197, - 3198, - 3199, - 3200, - 3201, - 3202, - 3203, - 3204, - 3205, - 3206, - 3207, - 3208, - 3209, - 3210, - 3211, - 3212, - 3213, - 3214, - 3215, - 3216, - 3217, - 3218, - 3219, - 3220, - 3221, - 3222, - 3223, - 3224, - 3225, - 3226, - 3227, - 3228, - 3229, - 3230, - 3231, - 3232, - 3233, - 3234, - 3235, - 3236, - 3237, - 3238, - 3239, - 3240, - 3241, - 3242, - 3243, - 3244, - 3245, - 3246, - 3247, - 3248, - 3249, - 3250, - 3251, - 3252, - 3253, - 3254, - 3255, - 3256, - 3257, - 3258, - 3259, - 3260, - 3261, - 3262, - 3263, - 3264, - 3265, - 3266, - 3267, - 3268, - 3269, - 3270, - 3271, - 3272, - 3273, - 3274, - 3275, - 3276, - 3277, - 3278, - 3279, - 3280, - 3281, - 3282, - 3283, - 3284, - 3285, - 3286, - 3287, - 3288, - 3289, - 3290, - 3291, - 3292, - 3293, - 3294, - 3295, - 3296, - 3297, - 3298, - 3299, - 3300, - 3301, - 3302, - 3303, - 3304, - 3305, - 3306, - 3307, - 3308, - 3309, - 3310, - 3311, - 3312, - 3313, - 3314, - 3315, - 3316, - 3317, - 3318, - 3319, - 3320, - 3321, - 3322, - 3323, - 3324, - 3325, - 3326, - 3327, - 3328, - 3329, - 3330, - 3331, - 3332, - 3333, - 3334, - 3335, - 3336, - 3337, - 3338, - 3339, - 3340, - 3341, - 3342, - 3343, - 3344, - 3345, - 3346, - 3347, - 3348, - 3349, - 3350, - 3351, - 3352, - 3353, - 3354, - 3355, - 3356, - 3357, - 3358, - 3359, - 3360, - 3361, - 3362, - 3363, - 3364, - 3365, - 3366, - 3367, - 3368, - 3369, - 3370, - 3371, - 3372, - 3373, - 3374, - 3375, - 3376, - 3377, - 3378, - 3379, - 3380, - 3381, - 3382, - 3383, - 3384, - 3385, - 3386, - 3387, - 3388, - 3389, - 3390, - 3391, - 3392, - 3393, - 3394, - 3395, - 3396, - 3397, - 3398, - 3399, - 3400, - 3401, - 3402, - 3403, - 3404, - 3405, - 3406, - 3407, - 3408, - 3409, - 3410, - 3411, - 3412, - 3413, - 3414, - 3415, - 3416, - 3417, - 3418, - 3419, - 3420, - 3421, - 3422, - 3423, - 3424, - 3425, - 3426, - 3427, - 3428, - 3429, - 3430, - 3431, - 3432, - 3433, - 3434, - 3435, - 3436, - 3437, - 3438, - 3439, - 3440, - 3441, - 3442, - 3443, - 3444, - 3445, - 3446, - 3447, - 3448, - 3449, - 3450, - 3451, - 3452, - 3453, - 3454, - 3455, - 3456, - 3457, - 3458, - 3459, - 3460, - 3461, - 3462, - 3463, - 3464, - 3465, - 3466, - 3467, - 3468, - 3469, - 3470, - 3471, - 3472, - 3473, - 3474, - 3475, - 3476, - 3477, - 3478, - 3479, - 3480, - 3481, - 3482, - 3483, - 3484, - 3485, - 3486, - 3487, - 3488, - 3489, - 3490, - 3491, - 3492, - 3493, - 3494, - 3495, - 3496, - 3497, - 3498, - 3499, - 3500, - 3501, - 3502, - 3503, - 3504, - 3505, - 3506, - 3507, - 3508, - 3509, - 3510, - 3511, - 3512, - 3513, - 3514, - 3515, - 3516, - 3517, - 3518, - 3519, - 3520, - 3521, - 3522, - 3523, - 3524, - 3525, - 3526, - 3527, - 3528, - 3529, - 3530, - 3531, - 3532, - 3533, - 3534, - 3535, - 3536, - 3537, - 3538, - 3539, - 3540, - 3541, - 3542, - 3543, - 3544, - 3545, - 3546, - 3547, - 3548, - 3549, - 3550, - 3551, - 3552, - 3553, - 3554, - 3555, - 3556, - 3557, - 3558, - 3559, - 3560, - 3561, - 3562, - 3563, - 3564, - 3565, - 3566, - 3567, - 3568, - 3569, - 3570, - 3571, - 3572, - 3573, - 3574, - 3575, - 3576, - 3577, - 3578, - 3579, - 3580, - 3581, - 3582, - 3583, - 3584, - 3585, - 3586, - 3587, - 3588, - 3589, - 3590, - 3591, - 3592, - 3593, - 3594, - 3595, - 3596, - 3597, - 3598, - 3599, - 3600, - 3601, - 3602, - 3603, - 3604, - 3605, - 3606, - 3607, - 3608, - 3609, - 3610, - 3611, - 3612, - 3613, - 3614, - 3615, - 3616, - 3617, - 3618, - 3619, - 3620, - 3621, - 3622, - 3623, - 3624, - 3625, - 3626, - 3627, - 3628, - 3629, - 3630, - 3631, - 3632, - 3633, - 3634, - 3635, - 3636, - 3637, - 3638, - 3639, - 3640, - 3641, - 3642, - 3643, - 3644, - 3645, - 3646, - 3647, - 3648, - 3649, - 3650, - 3651, - 3652, - 3653, - 3654, - 3655, - 3656, - 3657, - 3658, - 3659, - 3660, - 3661, - 3662, - 3663, - 3664, - 3665, - 3666, - 3667, - 3668, - 3669, - 3670, - 3671, - 3672, - 3673, - 3674, - 3675, - 3676, - 3677, - 3678, - 3679, - 3680, - 3681, - 3682, - 3683, - 3684, - 3685, - 3686, - 3687, - 3688, - 3689, - 3690, - 3691, - 3692, - 3693, - 3694, - 3695, - 3696, - 3697, - 3698, - 3699, - 3700, - 3701, - 3702, - 3703, - 3704, - 3705, - 3706, - 3707, - 3708, - 3709, - 3710, - 3711, - 3712, - 3713, - 3714, - 3715, - 3716, - 3717, - 3718, - 3719, - 3720, - 3721, - 3722, - 3723, - 3724, - 3725, - 3726, - 3727, - 3728, - 3729, - 3730, - 3731, - 3732, - 3733, - 3734, - 3735, - 3736, - 3737, - 3738, - 3739, - 3740, - 3741, - 3742, - 3743, - 3744, - 3745, - 3746, - 3747, - 3748, - 3749, - 3750, - 3751, - 3752, - 3753, - 3754, - 3755, - 3756, - 3757, - 3758, - 3759, - 3760, - 3761, - 3762, - 3763, - 3764, - 3765, - 3766, - 3767, - 3768, - 3769, - 3770, - 3771, - 3772, - 3773, - 3774, - 3775, - 3776, - 3777, - 3778, - 3779, - 3780, - 3781, - 3782, - 3783, - 3784, - 3785, - 3786, - 3787, - 3788, - 3789, - 3790, - 3791, - 3792, - 3793, - 3794, - 3795, - 3796, - 3797, - 3798, - 3799, - 3800, - 3801, - 3802, - 3803, - 3804, - 3805, - 3806, - 3807, - 3808, - 3809, - 3810, - 3811, - 3812, - 3813, - 3814, - 3815, - 3816, - 3817, - 3818, - 3819, - 3820, - 3821, - 3822, - 3823, - 3824, - 3825, - 3826, - 3827, - 3828, - 3829, - 3830, - 3831, - 3832, - 3833, - 3834, - 3835, - 3836, - 3837, - 3838, - 3839, - 3840, - 3841, - 3842, - 3843, - 3844, - 3845, - 3846, - 3847, - 3848, - 3849, - 3850, - 3851, - 3852, - 3853, - 3854, - 3855, - 3856, - 3857, - 3858, - 3859, - 3860, - 3861, - 3862, - 3863, - 3864, - 3865, - 3866, - 3867, - 3868, - 3869, - 3870, - 3871, - 3872, - 3873, - 3874, - 3875, - 3876, - 3877, - 3878, - 3879, - 3880, - 3881, - 3882, - 3883, - 3884, - 3885, - 3886, - 3887, - 3888, - 3889, - 3890, - 3891, - 3892, - 3893, - 3894, - 3895, - 3896, - 3897, - 3898, - 3899, - 3900, - 3901, - 3902, - 3903, - 3904, - 3905, - 3906, - 3907, - 3908, - 3909, - 3910, - 3911, - 3912, - 3913, - 3914, - 3915, - 3916, - 3917, - 3918, - 3919, - 3920, - 3921, - 3922, - 3923, - 3924, - 3925, - 3926, - 3927, - 3928, - 3929, - 3930, - 3931, - 3932, - 3933, - 3934, - 3935, - 3936, - 3937, - 3938, - 3939, - 3940, - 3941, - 3942, - 3943, - 3944, - 3945, - 3946, - 3947, - 3948, - 3949, - 3950, - 3951, - 3952, - 3953, - 3954, - 3955, - 3956, - 3957, - 3958, - 3959, - 3960, - 3961, - 3962, - 3963, - 3964, - 3965, - 3966, - 3967, - 3968, - 3969, - 3970, - 3971, - 3972, - 3973, - 3974, - 3975, - 3976, - 3977, - 3978, - 3979, - 3980, - 3981, - 3982, - 3983, - 3984, - 3985, - 3986, - 3987, - 3988, - 3989, - 3990, - 3991, - 3992, - 3993, - 3994, - 3995, - 3996, - 3997, - 3998, - 3999, - 4000, - 4001, - 4002, - 4003, - 4004, - 4005, - 4006, - 4007, - 4008, - 4009, - 4010, - 4011, - 4012, - 4013, - 4014, - 4015, - 4016, - 4017, - 4018, - 4019, - 4020, - 4021, - 4022, - 4023, - 4024, - 4025, - 4026, - 4027, - 4028, - 4029, - 4030, - 4031, - 4032, - 4033, - 4034, - 4035, - 4036, - 4037, - 4038, - 4039, - 4040, - 4041, - 4042, - 4043, - 4044, - 4045, - 4046, - 4047, - 4048, - 4049, - 4050, - 4051, - 4052, - 4053, - 4054, - 4055, - 4056, - 4057, - 4058, - 4059, - 4060, - 4061, - 4062, - 4063, - 4064, - 4065, - 4066, - 4067, - 4068, - 4069, - 4070, - 4071, - 4072, - 4073, - 4074, - 4075, - 4076, - 4077, - 4078, - 4079, - 4080, - 4081, - 4082, - 4083, - 4084, - 4085, - 4086, - 4087, - 4088, - 4089, - 4090, - 4091, - 4092, - 4093, - 4094, - 4095, - 4096, - 4097, - 4098, - 4099, - 4100, - 4101, - 4102, - 4103, - 4104, - 4105, - 4106, - 4107, - 4108, - 4109, - 4110, - 4111, - 4112, - 4113, - 4114, - 4115, - 4116, - 4117, - 4118, - 4119, - 4120, - 4121, - 4122, - 4123, - 4124, - 4125, - 4126, - 4127, - 4128, - 4129, - 4130, - 4131, - 4132, - 4133, - 4134, - 4135, - 4136, - 4137, - 4138, - 4139, - 4140, - 4141, - 4142, - 4143, - 4144, - 4145, - 4146, - 4147, - 4148, - 4149, - 4150, - 4151, - 4152, - 4153, - 4154, - 4155, - 4156, - 4157, - 4158, - 4159, - 4160, - 4161, - 4162, - 4163, - 4164, - 4165, - 4166, - 4167, - 4168, - 4169, - 4170, - 4171, - 4172, - 4173, - 4174, - 4175, - 4176, - 4177, - 4178, - 4179, - 4180, - 4181, - 4182, - 4183, - 4184, - 4185, - 4186, - 4187, - 4188, - 4189, - 4190, - 4191, - 4192, - 4193, - 4194, - 4195, - 4196, - 4197, - 4198, - 4199, - 4200, - 4201, - 4202, - 4203, - 4204, - 4205, - 4206, - 4207, - 4208, - 4209, - 4210, - 4211, - 4212, - 4213, - 4214, - 4215, - 4216, - 4217, - 4218, - 4219, - 4220, - 4221, - 4222, - 4223, - 4224, - 4225, - 4226, - 4227, - 4228, - 4229, - 4230, - 4231, - 4232, - 4233, - 4234, - 4235, - 4236, - 4237, - 4238, - 4239, - 4240, - 4241, - 4242, - 4243, - 4244, - 4245, - 4246, - 4247, - 4248, - 4249, - 4250, - 4251, - 4252, - 4253, - 4254, - 4255, - 4256, - 4257, - 4258, - 4259, - 4260, - 4261, - 4262, - 4263, - 4264, - 4265, - 4266, - 4267, - 4268, - 4269, - 4270, - 4271, - 4272, - 4273, - 4274, - 4275, - 4276, - 4277, - 4278, - 4279, - 4280, - 4281, - 4282, - 4283, - 4284, - 4285, - 4286, - 4287, - 4288, - 4289, - 4290, - 4291, - 4292, - 4293, - 4294, - 4295, - 4296, - 4297, - 4298, - 4299, - 4300, - 4301, - 4302, - 4303, - 4304, - 4305, - 4306, - 4307, - 4308, - 4309, - 4310, - 4311, - 4312, - 4313, - 4314, - 4315, - 4316, - 4317, - 4318, - 4319, - 4320, - 4321, - 4322, - 4323, - 4324, - 4325, - 4326, - 4327, - 4328, - 4329, - 4330, - 4331, - 4332, - 4333, - 4334, - 4335, - 4336, - 4337, - 4338, - 4339, - 4340, - 4341, - 4342, - 4343, - 4344, - 4345, - 4346, - 4347, - 4348, - 4349, - 4350, - 4351, - 4352, - 4353, - 4354, - 4355, - 4356, - 4357, - 4358, - 4359, - 4360, - 4361, - 4362, - 4363, - 4364, - 4365, - 4366, - 4367, - 4368, - 4369, - 4370, - 4371, - 4372, - 4373, - 4374, - 4375, - 4376, - 4377, - 4378, - 4379, - 4380, - 4381, - 4382, - 4383, - 4384, - 4385, - 4386, - 4387, - 4388, - 4389, - 4390, - 4391, - 4392, - 4393, - 4394, - 4395, - 4396, - 4397, - 4398, - 4399, - 4400, - 4401, - 4402, - 4403, - 4404, - 4405, - 4406, - 4407, - 4408, - 4409, - 4410, - 4411, - 4412, - 4413, - 4414, - 4415, - 4416, - 4417, - 4418, - 4419, - 4420, - 4421, - 4422, - 4423, - 4424, - 4425, - 4426, - 4427, - 4428, - 4429, - 4430, - 4431, - 4432, - 4433, - 4434, - 4435, - 4436, - 4437, - 4438, - 4439, - 4440, - 4441, - 4442, - 4443, - 4444, - 4445, - 4446, - 4447, - 4448, - 4449, - 4450, - 4451, - 4452, - 4453, - 4454, - 4455, - 4456, - 4457, - 4458, - 4459, - 4460, - 4461, - 4462, - 4463, - 4464, - 4465, - 4466, - 4467, - 4468, - 4469, - 4470, - 4471, - 4472, - 4473, - 4474, - 4475, - 4476, - 4477, - 4478, - 4479, - 4480, - 4481, - 4482, - 4483, - 4484, - 4485, - 4486, - 4487, - 4488, - 4489, - 4490, - 4491, - 4492, - 4493, - 4494, - 4495, - 4496, - 4497, - 4498, - 4499, - 4500, - 4501, - 4502, - 4503, - 4504, - 4505, - 4506, - 4507, - 4508, - 4509, - 4510, - 4511, - 4512, - 4513, - 4514, - 4515, - 4516, - 4517, - 4518, - 4519, - 4520, - 4521, - 4522, - 4523, - 4524, - 4525, - 4526, - 4527, - 4528, - 4529, - 4530, - 4531, - 4532, - 4533, - 4534, - 4535, - 4536, - 4537, - 4538, - 4539, - 4540, - 4541, - 4542, - 4543, - 4544, - 4545, - 4546, - 4547, - 4548, - 4549, - 4550, - 4551, - 4552, - 4553, - 4554, - 4555, - 4556, - 4557, - 4558, - 4559, - 4560, - 4561, - 4562, - 4563, - 4564, - 4565, - 4566, - 4567, - 4568, - 4569, - 4570, - 4571, - 4572, - 4573, - 4574, - 4575, - 4576, - 4577, - 4578, - 4579, - 4580, - 4581, - 4582, - 4583, - 4584, - 4585, - 4586, - 4587, - 4588, - 4589, - 4590, - 4591, - 4592, - 4593, - 4594, - 4595, - 4596, - 4597, - 4598, - 4599, - 4600, - 4601, - 4602, - 4603, - 4604, - 4605, - 4606, - 4607, - 4608, - 4609, - 4610, - 4611, - 4612, - 4613, - 4614, - 4615, - 4616, - 4617, - 4618, - 4619, - 4620, - 4621, - 4622, - 4623, - 4624, - 4625, - 4626, - 4627, - 4628, - 4629, - 4630, - 4631, - 4632, - 4633, - 4634, - 4635, - 4636, - 4637, - 4638, - 4639, - 4640, - 4641, - 4642, - 4643, - 4644, - 4645, - 4646, - 4647, - 4648, - 4649, - 4650, - 4651, - 4652, - 4653, - 4654, - 4655, - 4656, - 4657, - 4658, - 4659, - 4660, - 4661, - 4662, - 4663, - 4664, - 4665, - 4666, - 4667, - 4668, - 4669, - 4670, - 4671, - 4672, - 4673, - 4674, - 4675, - 4676, - 4677, - 4678, - 4679, - 4680, - 4681, - 4682, - 4683, - 4684, - 4685, - 4686, - 4687, - 4688, - 4689, - 4690, - 4691, - 4692, - 4693, - 4694, - 4695, - 4696, - 4697, - 4698, - 4699, - 4700, - 4701, - 4702, - 4703, - 4704, - 4705, - 4706, - 4707, - 4708, - 4709, - 4710, - 4711, - 4712, - 4713, - 4714, - 4715, - 4716, - 4717, - 4718, - 4719, - 4720, - 4721, - 4722, - 4723, - 4724, - 4725, - 4726, - 4727, - 4728, - 4729, - 4730, - 4731, - 4732, - 4733, - 4734, - 4735, - 4736, - 4737, - 4738, - 4739, - 4740, - 4741, - 4742, - 4743, - 4744, - 4745, - 4746, - 4747, - 4748, - 4749, - 4750, - 4751, - 4752, - 4753, - 4754, - 4755, - 4756, - 4757, - 4758, - 4759, - 4760, - 4761, - 4762, - 4763, - 4764, - 4765, - 4766, - 4767, - 4768, - 4769, - 4770, - 4771, - 4772, - 4773, - 4774, - 4775, - 4776, - 4777, - 4778, - 4779, - 4780, - 4781, - 4782, - 4783, - 4784, - 4785, - 4786, - 4787, - 4788, - 4789, - 4790, - 4791, - 4792, - 4793, - 4794, - 4795, - 4796, - 4797, - 4798, - 4799, - 4800, - 4801, - 4802, - 4803, - 4804, - 4805, - 4806, - 4807, - 4808, - 4809, - 4810, - 4811, - 4812, - 4813, - 4814, - 4815, - 4816, - 4817, - 4818, - 4819, - 4820, - 4821, - 4822, - 4823, - 4824, - 4825, - 4826, - 4827, - 4828, - 4829, - 4830, - 4831, - 4832, - 4833, - 4834, - 4835, - 4836, - 4837, - 4838, - 4839, - 4840, - 4841, - 4842, - 4843, - 4844, - 4845, - 4846, - 4847, - 4848, - 4849, - 4850, - 4851, - 4852, - 4853, - 4854, - 4855, - 4856, - 4857, - 4858, - 4859, - 4860, - 4861, - 4862, - 4863, - 4864, - 4865, - 4866, - 4867, - 4868, - 4869, - 4870, - 4871, - 4872, - 4873, - 4874, - 4875, - 4876, - 4877, - 4878, - 4879, - 4880, - 4881, - 4882, - 4883, - 4884, - 4885, - 4886, - 4887, - 4888, - 4889, - 4890, - 4891, - 4892, - 4893, - 4894, - 4895, - 4896, - 4897, - 4898, - 4899, - 4900, - 4901, - 4902, - 4903, - 4904, - 4905, - 4906, - 4907, - 4908, - 4909, - 4910, - 4911, - 4912, - 4913, - 4914, - 4915, - 4916, - 4917, - 4918, - 4919, - 4920, - 4921, - 4922, - 4923, - 4924, - 4925, - 4926, - 4927, - 4928, - 4929, - 4930, - 4931, - 4932, - 4933, - 4934, - 4935, - 4936, - 4937, - 4938, - 4939, - 4940, - 4941, - 4942, - 4943, - 4944, - 4945, - 4946, - 4947, - 4948, - 4949, - 4950, - 4951, - 4952, - 4953, - 4954, - 4955, - 4956, - 4957, - 4958, - 4959, - 4960, - 4961, - 4962, - 4963, - 4964, - 4965, - 4966, - 4967, - 4968, - 4969, - 4970, - 4971, - 4972, - 4973, - 4974, - 4975, - 4976, - 4977, - 4978, - 4979, - 4980, - 4981, - 4982, - 4983, - 4984, - 4985, - 4986, - 4987, - 4988, - 4989, - 4990, - 4991, - 4992, - 4993, - 4994, - 4995, - 4996, - 4997, - 4998, - 4999 - ], - "y": [ - 376.8576202392578, - 361.5847106933594, - 349.469970703125, - 339.6911376953125, - 331.67284240722654, - 325.02421875, - 319.3547882080078, - 314.45672912597655, - 310.18226318359376, - 306.39954528808596, - 302.9775634765625, - 299.81768798828125, - 296.8433898925781, - 294.00714111328125, - 291.26658020019534, - 288.5793685913086, - 285.93282928466795, - 283.3113510131836, - 280.70961303710936, - 278.1581405639648, - 275.6283721923828, - 273.1076858520508, - 270.58177795410154, - 268.07368621826174, - 265.59766998291013, - 263.152783203125, - 260.7326995849609, - 258.3327926635742, - 255.96790924072266, - 253.598779296875, - 251.219677734375, - 248.8692825317383, - 246.5709671020508, - 244.2588119506836, - 241.95141143798827, - 239.6655731201172, - 237.39226379394532, - 235.1187515258789, - 232.83885803222657, - 230.56000671386718, - 228.293310546875, - 226.03998107910155, - 223.8095718383789, - 221.5849395751953, - 219.38677520751952, - 217.1917984008789, - 215.0074905395508, - 212.8445617675781, - 210.68871459960937, - 208.52432708740236, - 206.40757598876954, - 204.27681427001954, - 202.1519973754883, - 200.04171142578124, - 197.94355163574218, - 195.90042724609376, - 193.9042724609375, - 191.903759765625, - 189.91033935546875, - 187.93494873046876, - 185.94879913330078, - 183.9987030029297, - 182.0364212036133, - 180.1018524169922, - 178.16851654052735, - 176.24638137817382, - 174.34992370605468, - 172.49308853149415, - 170.62457199096679, - 168.7678581237793, - 166.92715454101562, - 165.08723220825195, - 163.27246017456054, - 161.4808837890625, - 159.72028656005858, - 157.92978744506837, - 156.15417404174804, - 154.40886611938475, - 152.68496704101562, - 150.93151626586913, - 149.199942779541, - 147.5066131591797, - 145.85799255371094, - 144.22662506103515, - 142.6106170654297, - 141.0031005859375, - 139.4036766052246, - 137.80805130004882, - 136.25458755493165, - 134.69209365844728, - 133.17448196411132, - 131.66039657592773, - 130.1522476196289, - 128.6518127441406, - 127.20113372802734, - 125.72630004882812, - 124.3011688232422, - 122.8717529296875, - 121.46545639038087, - 120.04051208496094, - 118.69585952758788, - 117.31456069946289, - 115.94939422607422, - 114.6119400024414, - 113.3244857788086, - 111.98638000488282, - 110.71208114624024, - 109.42858581542968, - 108.1818458557129, - 106.98480377197265, - 105.78558692932128, - 104.58910598754883, - 103.4084571838379, - 102.26436996459961, - 101.13017807006835, - 99.98059730529785, - 98.80785026550294, - 97.7104679107666, - 96.66842956542969, - 95.6229461669922, - 94.58581275939942, - 93.53778038024902, - 92.48786239624023, - 91.45661125183105, - 90.46935691833497, - 89.44721031188965, - 88.49776191711426, - 87.51181640625, - 86.52698707580566, - 85.64532241821288, - 84.67686614990234, - 83.80858154296875, - 82.91597213745118, - 82.0621238708496, - 81.2281307220459, - 80.34375114440918, - 79.47512359619141, - 78.63439292907715, - 77.79146881103516, - 76.9695213317871, - 76.07134666442872, - 75.21923065185547, - 74.43906059265137, - 73.66634750366211, - 72.85927391052246, - 72.0949920654297, - 71.29650230407715, - 70.56374816894531, - 69.86809158325195, - 69.11607055664062, - 68.42945022583008, - 67.64746723175048, - 66.98508968353272, - 66.35060348510743, - 65.6863510131836, - 65.01417083740235, - 64.36709651947021, - 63.69856586456299, - 63.0925407409668, - 62.447235679626466, - 61.86003036499024, - 61.256439971923825, - 60.66848163604736, - 60.09180164337158, - 59.634414482116696, - 59.109977340698244, - 58.611761474609374, - 57.94202919006348, - 57.28386745452881, - 56.780223274230956, - 56.24960803985596, - 55.703952407836915, - 55.17448749542236, - 54.62971954345703, - 54.15799522399902, - 53.66446056365967, - 53.2012393951416, - 52.69256381988525, - 52.177415466308595, - 51.720941162109376, - 51.236989974975586, - 50.72969856262207, - 50.25186824798584, - 49.83608112335205, - 49.39585189819336, - 48.92937068939209, - 48.550154304504396, - 48.107557106018064, - 47.729946327209475, - 47.38320465087891, - 47.042693328857425, - 46.6291784286499, - 46.19253044128418, - 45.7247673034668, - 45.33178234100342, - 44.969949340820314, - 44.61338024139404, - 44.2068133354187, - 43.72663879394531, - 43.35186061859131, - 43.035230827331546, - 42.69357528686523, - 42.36985273361206, - 42.07637071609497, - 41.72712965011597, - 41.32762651443481, - 40.9671329498291, - 40.59497413635254, - 40.24783315658569, - 39.90429944992066, - 39.54429321289062, - 39.23528118133545, - 38.935257053375246, - 38.694356727600095, - 38.46492004394531, - 38.23493118286133, - 38.110029220581055, - 37.82704124450684, - 37.58437976837158, - 37.08710079193115, - 36.831820011138916, - 36.68337259292603, - 36.408028793334964, - 35.98004312515259, - 35.571788692474364, - 35.32978439331055, - 35.1274619102478, - 34.836004161834715, - 34.49085597991943, - 34.22294254302979, - 33.9811110496521, - 33.76762113571167, - 33.53313102722168, - 33.339673614501955, - 33.16207008361816, - 32.97778434753418, - 32.765011405944826, - 32.44985818862915, - 32.12677659988403, - 31.862845420837402, - 31.654689025878906, - 31.459106636047363, - 31.259905052185058, - 31.070745277404786, - 30.831812191009522, - 30.6437931060791, - 30.41403474807739, - 30.2587908744812, - 30.08186779022217, - 29.930161952972412, - 29.697996139526367, - 29.485124111175537, - 29.280514526367188, - 29.08736448287964, - 28.894194746017455, - 28.68041582107544, - 28.4858549118042, - 28.31130690574646, - 28.160677337646483, - 27.917944145202636, - 27.670284461975097, - 27.491866445541383, - 27.298954486846924, - 27.14871768951416, - 26.984788036346437, - 26.857884073257445, - 26.746266269683836, - 26.579937791824342, - 26.410127067565917, - 26.25583086013794, - 26.188943290710448, - 26.132006692886353, - 25.870093822479248, - 25.688719606399538, - 25.44888048171997, - 25.244573163986207, - 25.117984962463378, - 25.014836072921753, - 24.88531274795532, - 24.639022874832154, - 24.452256298065187, - 24.397511291503907, - 24.25969696044922, - 24.12998056411743, - 24.089721965789796, - 23.94694404602051, - 23.78222761154175, - 23.60859932899475, - 23.42987756729126, - 23.228247594833373, - 23.08646354675293, - 23.011919832229616, - 22.89892773628235, - 22.76869945526123, - 22.666390466690064, - 22.570939445495604, - 22.49340443611145, - 22.41175413131714, - 22.304043197631835, - 22.148465156555176, - 22.09250864982605, - 21.97290434837341, - 21.977859258651733, - 21.89281806945801, - 21.70086350440979, - 21.51798129081726, - 21.440903425216675, - 21.414938306808473, - 21.30559163093567, - 21.09203357696533, - 20.95390248298645, - 20.79712748527527, - 20.65719051361084, - 20.560024118423463, - 20.41590929031372, - 20.260719966888427, - 20.109628915786743, - 20.014470958709715, - 19.95666127204895, - 19.864282035827635, - 19.786231803894044, - 19.76299991607666, - 19.833403015136717, - 19.863459825515747, - 19.7801203250885, - 19.462636375427245, - 19.259139347076417, - 19.181331586837768, - 19.135037183761597, - 19.069606733322143, - 18.923093938827513, - 18.829687643051148, - 18.703798055648804, - 18.5838885307312, - 18.500305652618408, - 18.447777771949767, - 18.365435552597045, - 18.281477570533752, - 18.199909925460815, - 18.14765419960022, - 18.053653025627135, - 18.012477684020997, - 17.918730330467223, - 17.871720218658446, - 17.832240486145018, - 17.796781182289124, - 17.726053047180176, - 17.611309623718263, - 17.50373830795288, - 17.34430613517761, - 17.22306752204895, - 17.137863945960998, - 17.06647322177887, - 16.933448362350465, - 16.815127515792845, - 16.74347667694092, - 16.662921404838563, - 16.631605052947997, - 16.59196217060089, - 16.53193681240082, - 16.536964058876038, - 16.45240807533264, - 16.37100167274475, - 16.35330295562744, - 16.358695244789125, - 16.253954219818116, - 16.152798223495484, - 16.032737565040588, - 15.96771936416626, - 15.9339608669281, - 15.942510437965392, - 15.791927886009216, - 15.619372940063476, - 15.534428262710572, - 15.426836037635804, - 15.343745565414428, - 15.313698387145996, - 15.236522698402405, - 15.126735973358155, - 15.110882091522218, - 15.025009989738464, - 15.001338672637939, - 14.941760063171387, - 14.886213803291321, - 14.80127248764038, - 14.787805128097535, - 14.71314287185669, - 14.65562801361084, - 14.618370771408081, - 14.54153790473938, - 14.52106695175171, - 14.502928614616394, - 14.510043501853943, - 14.479082393646241, - 14.505478668212891, - 14.527396702766419, - 14.552410340309143, - 14.464515209197998, - 14.330787539482117, - 14.264105176925659, - 14.177734017372131, - 13.991968035697937, - 13.878683233261109, - 13.911733794212342, - 13.788807106018066, - 13.62039668560028, - 13.581031894683838, - 13.515036749839783, - 13.463860988616943, - 13.415664768218994, - 13.341151976585389, - 13.282481074333191, - 13.280337738990784, - 13.290192866325379, - 13.256332492828369, - 13.181303119659423, - 13.11285674571991, - 13.061909103393555, - 12.960331845283509, - 12.893781924247742, - 12.825159502029418, - 12.79004509449005, - 12.767553305625915, - 12.768636775016784, - 12.798218846321106, - 12.809370756149292, - 12.789107823371888, - 12.6774311542511, - 12.548306035995484, - 12.460029697418213, - 12.523515653610229, - 12.532422971725463, - 12.501440191268921, - 12.435062909126282, - 12.452993655204773, - 12.54024703502655, - 12.658246088027955, - 12.541461205482483, - 12.387184739112854, - 12.19015998840332, - 12.153565287590027, - 12.156525325775146, - 12.10629563331604, - 12.051654148101807, - 11.98381586074829, - 11.909455823898316, - 11.83817024230957, - 11.795170092582703, - 11.75922770500183, - 11.769336152076722, - 11.732134699821472, - 11.605509614944458, - 11.555515170097351, - 11.53209810256958, - 11.477663230895995, - 11.353469157218933, - 11.306343603134156, - 11.20875096321106, - 11.141273438930511, - 11.101566767692566, - 11.038921070098876, - 11.027264535427094, - 11.012748408317567, - 11.047274899482726, - 11.052453446388245, - 11.01844255924225, - 10.967607545852662, - 10.928503370285034, - 10.855577445030212, - 10.785737812519073, - 10.79690878391266, - 10.830699026584625, - 10.91402838230133, - 10.973560070991516, - 10.978779244422913, - 10.931356620788574, - 10.8949720621109, - 10.834448432922363, - 10.758192539215088, - 10.689088916778564, - 10.615874910354615, - 10.547453331947327, - 10.493896436691283, - 10.390774488449097, - 10.390820324420929, - 10.365686869621277, - 10.270903420448303, - 10.223116421699524, - 10.23689798116684, - 10.241313266754151, - 10.23742754459381, - 10.303279447555543, - 10.292194879055023, - 10.234144186973571, - 10.183691680431366, - 10.139642643928529, - 10.05888569355011, - 10.091267943382263, - 10.116405475139619, - 10.106940817832946, - 10.087790381908416, - 10.053982472419738, - 9.896674871444702, - 9.843979620933533, - 9.883938932418824, - 9.85926444530487, - 9.776277327537537, - 9.68450186252594, - 9.652330756187439, - 9.647963428497315, - 9.605745196342468, - 9.539569020271301, - 9.5112499833107, - 9.50294450521469, - 9.492199063301086, - 9.507651770114899, - 9.54117122888565, - 9.590803837776184, - 9.50685133934021, - 9.448951268196106, - 9.363374328613281, - 9.301806819438934, - 9.27854380607605, - 9.27842457294464, - 9.2959916472435, - 9.299193406105042, - 9.325177693367005, - 9.271452617645263, - 9.172862482070922, - 9.039964151382446, - 8.99514080286026, - 9.027213275432587, - 8.99214689731598, - 8.90675621032715, - 8.823183500766755, - 8.812932014465332, - 8.759379506111145, - 8.734172403812408, - 8.715509819984437, - 8.718496251106263, - 8.704540848731995, - 8.762890195846557, - 8.849471759796142, - 8.922719752788543, - 8.93478775024414, - 8.84253624677658, - 8.681665408611298, - 8.616868078708649, - 8.643664801120758, - 8.704136967658997, - 8.76927183866501, - 8.810130834579468, - 8.852746319770812, - 8.85109543800354, - 8.643419551849366, - 8.484853279590606, - 8.504982817173005, - 8.501613104343415, - 8.426901292800903, - 8.343376028537751, - 8.257657086849212, - 8.20565860271454, - 8.19555288553238, - 8.188305282592774, - 8.126440715789794, - 8.09305773973465, - 8.061559057235717, - 8.014126670360564, - 8.01354409456253, - 8.001516962051392, - 7.975490427017212, - 8.000417304039, - 7.993578958511352, - 7.973317098617554, - 7.917899882793426, - 7.846768844127655, - 7.798896265029907, - 7.79092698097229, - 7.839262127876282, - 7.890729129314423, - 7.983435785770416, - 8.00669174194336, - 8.01635410785675, - 7.918432366847992, - 7.860004270076752, - 7.745379912853241, - 7.74317569732666, - 7.8466711163520815, - 7.964211618900299, - 7.90343337059021, - 7.699448037147522, - 7.623068261146545, - 7.672098612785339, - 7.685541045665741, - 7.664035880565644, - 7.557487297058105, - 7.517755973339081, - 7.496846485137939, - 7.516121101379395, - 7.51560640335083, - 7.464912402629852, - 7.443158805370331, - 7.364360845088958, - 7.30493301153183, - 7.337666141986847, - 7.356979489326477, - 7.335547995567322, - 7.356967842578888, - 7.396463882923126, - 7.375153362751007, - 7.295605182647705, - 7.203625166416169, - 7.152809524536133, - 7.163063478469849, - 7.171728515625, - 7.1486079573631285, - 7.109306526184082, - 6.998006689548492, - 7.007133746147156, - 7.011118793487549, - 6.967291331291198, - 6.8972865581512455, - 6.892470395565033, - 6.907264494895935, - 6.919022023677826, - 6.899539196491242, - 6.8777184128761295, - 6.889384865760803, - 6.8801994800567625, - 6.876232326030731, - 6.868723940849304, - 6.90425568819046, - 6.916955554485321, - 6.932779455184937, - 6.837435328960419, - 6.746544623374939, - 6.728710520267486, - 6.766507112979889, - 6.775604009628296, - 6.755521190166474, - 6.762693750858307, - 6.714192152023315, - 6.632114362716675, - 6.594312989711762, - 6.599693131446839, - 6.614787554740905, - 6.709043967723846, - 6.835983037948608, - 6.815271055698394, - 6.739759516716004, - 6.680013132095337, - 6.550842869281769, - 6.49738187789917, - 6.529233646392822, - 6.568371701240539, - 6.544986510276795, - 6.52920253276825, - 6.518593049049377, - 6.5319519400596615, - 6.590707015991211, - 6.643836557865143, - 6.6198971509933475, - 6.516795885562897, - 6.397689962387085, - 6.378402650356293, - 6.3678922891616825, - 6.322184085845947, - 6.296990776062012, - 6.271004557609558, - 6.221692836284637, - 6.223529314994812, - 6.263652598857879, - 6.23135085105896, - 6.174329566955566, - 6.11564325094223, - 6.1122077941894535, - 6.080494582653046, - 6.034315204620361, - 6.036240452528, - 6.041476786136627, - 6.04527096748352, - 6.078203082084656, - 6.112956917285919, - 6.088205718994141, - 6.073019504547119, - 6.0361491441726685, - 6.060412168502808, - 6.1195605278015135, - 6.142273736000061, - 6.174947345256806, - 6.173289465904236, - 6.159908902645111, - 6.112287652492523, - 6.029003667831421, - 5.910932826995849, - 5.8880677103996275, - 5.8864492058753966, - 5.881020212173462, - 5.831732606887817, - 5.789681506156922, - 5.779639863967896, - 5.767556750774384, - 5.727070605754852, - 5.729130619764328, - 5.737346553802491, - 5.773140799999237, - 5.726537334918976, - 5.681912779808044, - 5.672267371416092, - 5.608499127626419, - 5.5499690771102905, - 5.5356607913970945, - 5.556127911806106, - 5.532812708616257, - 5.502632415294647, - 5.544639265537262, - 5.61089448928833, - 5.659188222885132, - 5.771946680545807, - 5.834757387638092, - 5.83164826631546, - 5.738291549682617, - 5.732203090190888, - 5.808462679386139, - 5.902894163131714, - 5.857415175437927, - 5.730867350101471, - 5.689049780368805, - 5.765477252006531, - 5.734460830688477, - 5.6484313130378725, - 5.5462796807289125, - 5.553046882152557, - 5.54804505109787, - 5.456582093238831, - 5.4031214118003845, - 5.4081091523170475, - 5.393647158145905, - 5.300228017568588, - 5.269322687387467, - 5.243221706151962, - 5.271346724033355, - 5.254898506402969, - 5.247267174720764, - 5.233215928077698, - 5.22209599018097, - 5.169304966926575, - 5.120493215322495, - 5.102155762910843, - 5.09078968167305, - 5.09246871471405, - 5.106505715847016, - 5.100543403625489, - 5.113584071397781, - 5.146526575088501, - 5.182463371753693, - 5.155396097898484, - 5.120623391866684, - 5.148881900310516, - 5.192396414279938, - 5.2351472020149235, - 5.286956942081451, - 5.382460498809815, - 5.429098761081695, - 5.416448819637298, - 5.3422436833381655, - 5.274428141117096, - 5.396888482570648, - 5.440533542633057, - 5.396715128421784, - 5.26748970746994, - 5.249666845798492, - 5.233571469783783, - 5.149121797084808, - 5.114123380184173, - 5.046340990066528, - 4.986508429050446, - 4.977610754966736, - 4.942276060581207, - 4.902580142021179, - 4.846663719415664, - 4.830225551128388, - 4.847512245178223, - 4.824656808376313, - 4.794775813817978, - 4.789622360467911, - 4.779815363883972, - 4.7860868096351625, - 4.744678270816803, - 4.725967133045197, - 4.730727648735046, - 4.7468314409255985, - 4.751780551671982, - 4.780889940261841, - 4.846765428781509, - 4.856084847450257, - 4.84542937874794, - 4.849393475055694, - 4.912054598331451, - 4.926055538654327, - 4.887834095954895, - 4.8448897242546085, - 4.821053755283356, - 4.788063275814056, - 4.764199686050415, - 4.796437096595764, - 4.809755575656891, - 4.789226591587067, - 4.7385198950767515, - 4.681754362583161, - 4.624215173721313, - 4.566502124071121, - 4.549056494235993, - 4.573003679513931, - 4.59957326054573, - 4.581255346536636, - 4.528011417388916, - 4.4929420232772825, - 4.4884396374225615, - 4.5160296022891995, - 4.550928294658661, - 4.576327002048492, - 4.560258483886718, - 4.609487152099609, - 4.646041083335876, - 4.727033734321594, - 4.7502859950065615, - 4.71730260848999, - 4.609289419651032, - 4.6107778429985045, - 4.625031077861786, - 4.568243598937988, - 4.553620684146881, - 4.547546994686127, - 4.50897536277771, - 4.418096506595612, - 4.353409469127655, - 4.373922175168991, - 4.428247034549713, - 4.440156382322312, - 4.386288040876389, - 4.359018892049789, - 4.338861340284348, - 4.329287791252137, - 4.355661398172378, - 4.348058146238327, - 4.291705077886581, - 4.270222550630569, - 4.293332201242447, - 4.269807797670365, - 4.273843598365784, - 4.328291863203049, - 4.369701325893402, - 4.3521801948547365, - 4.322352522611618, - 4.301377910375595, - 4.2733146250247955, - 4.290031981468201, - 4.320183539390564, - 4.343430775403976, - 4.37692928314209, - 4.394503855705262, - 4.325681161880493, - 4.230468130111694, - 4.238790625333786, - 4.2468319773674015, - 4.206637358665466, - 4.172311180830002, - 4.153946793079376, - 4.137508606910705, - 4.121993207931519, - 4.1397027432918545, - 4.1628778040409085, - 4.176343858242035, - 4.174691098928451, - 4.230819886922836, - 4.2629652380943295, - 4.18433690071106, - 4.11300095319748, - 4.077090221643448, - 4.056011468172073, - 4.099147999286652, - 4.189337313175201, - 4.23159943819046, - 4.292650669813156, - 4.274785423278809, - 4.2712620258331295, - 4.229659688472748, - 4.181728720664978, - 4.132788360118866, - 4.1115074634552, - 4.0666551232337955, - 4.00494110584259, - 3.9904685974121095, - 3.9811660051345825, - 3.9418702006340025, - 3.929675906896591, - 3.969182348251343, - 3.97016698718071, - 3.9218739211559295, - 3.8856835305690764, - 3.894382619857788, - 3.8904436767101287, - 3.862022614479065, - 3.8490483283996584, - 3.8677208185195924, - 3.8654892265796663, - 3.8711523830890657, - 3.901351147890091, - 3.935681200027466, - 3.9854285657405852, - 3.968941366672516, - 3.8737101197242736, - 3.808287042379379, - 3.8413093268871306, - 3.9006395518779753, - 3.879335856437683, - 3.88468913435936, - 3.867013132572174, - 3.832216960191727, - 3.812467688322067, - 3.820766878128052, - 3.8063598752021788, - 3.7999478578567505, - 3.814612889289856, - 3.7653953552246096, - 3.757027488946915, - 3.7872450590133666, - 3.8015643060207367, - 3.7748134315013884, - 3.7570135414600374, - 3.7723777651786805, - 3.698384243249893, - 3.663415324687958, - 3.648067945241928, - 3.6087315022945403, - 3.59993833899498, - 3.597415399551392, - 3.604229474067688, - 3.5954765021800994, - 3.5820049703121186, - 3.5882856488227843, - 3.6160944402217865, - 3.6390100002288817, - 3.6151654422283173, - 3.636269825696945, - 3.684087496995926, - 3.71723552942276, - 3.7130287766456602, - 3.7757486402988434, - 3.866645133495331, - 3.9023308992385863, - 3.847415816783905, - 3.7572673201560973, - 3.7001294255256654, - 3.761715590953827, - 3.8662404775619508, - 3.8786133527755737, - 3.864086627960205, - 3.851020669937134, - 3.8681749939918517, - 3.817602837085724, - 3.7123918414115904, - 3.699474972486496, - 3.72764196395874, - 3.6817137956619264, - 3.633800446987152, - 3.574829477071762, - 3.536910432577133, - 3.5232578992843626, - 3.4899132192134856, - 3.4302508354187013, - 3.378299504518509, - 3.3955889701843263, - 3.3785955548286437, - 3.333441066741943, - 3.3533014476299288, - 3.3719319880008696, - 3.3681239426136016, - 3.3747773587703707, - 3.3803006947040557, - 3.396382689476013, - 3.396216207742691, - 3.3927834928035736, - 3.3813046753406524, - 3.3907170414924623, - 3.432866543531418, - 3.4887062847614287, - 3.5467469930648803, - 3.6128621459007264, - 3.6367258429527283, - 3.6069354712963104, - 3.6112175405025484, - 3.6141360998153687, - 3.637937617301941, - 3.633210098743439, - 3.6076694190502168, - 3.5883897840976715, - 3.535583418607712, - 3.471420156955719, - 3.471523904800415, - 3.480327981710434, - 3.478185296058655, - 3.450604122877121, - 3.4172853946685793, - 3.4017091929912566, - 3.3509949147701263, - 3.3181279599666595, - 3.304798346757889, - 3.306960242986679, - 3.3182464361190798, - 3.3114223957061766, - 3.34349907040596, - 3.3005533814430237, - 3.263912433385849, - 3.244882786273956, - 3.2085102438926696, - 3.1513493597507476, - 3.0849819242954255, - 3.0501897811889647, - 3.043080139160156, - 3.072864684462547, - 3.089892315864563, - 3.120076262950897, - 3.168275833129883, - 3.2311643838882445, - 3.2789323329925537, - 3.3420144975185395, - 3.347664308547974, - 3.3152702331542967, - 3.33533518910408, - 3.400243175029755, - 3.459943437576294, - 3.5198269367218016, - 3.5725202798843383, - 3.6198707938194277, - 3.585967743396759, - 3.4790945649147034, - 3.426116144657135, - 3.446166253089905, - 3.4411606788635254, - 3.4069025456905364, - 3.288444143533707, - 3.2096565067768097, - 3.1836098611354826, - 3.158607143163681, - 3.132890337705612, - 3.113164883852005, - 3.065181255340576, - 2.9951224863529204, - 2.954757010936737, - 2.9615552365779876, - 2.946784108877182, - 2.903525498509407, - 2.879625803232193, - 2.869303983449936, - 2.838771289587021, - 2.8320337384939194, - 2.8485407412052153, - 2.8510790050029753, - 2.847600829601288, - 2.862452617287636, - 2.9502655386924745, - 2.9932003140449526, - 3.0174833953380586, - 3.0466679871082305, - 3.054583865404129, - 3.003663581609726, - 2.9622202813625336, - 2.956901323795319, - 3.053346812725067, - 3.186173152923584, - 3.3210812747478484, - 3.3865800857543946, - 3.2782254576683045, - 3.1367853403091432, - 3.053836405277252, - 3.1471995532512667, - 3.3129484593868255, - 3.423626494407654, - 3.322076749801636, - 3.1530915677547453, - 3.146009886264801, - 3.285578668117523, - 3.3865390062332152, - 3.2957868456840513, - 3.1737860202789308, - 3.140867382287979, - 3.1685091614723206, - 3.1332951903343202, - 2.9864576280117037, - 2.906623989343643, - 2.936706918478012, - 2.9242993772029875, - 2.8539313793182375, - 2.802538585662842, - 2.7699962735176085, - 2.759728741645813, - 2.745489704608917, - 2.687172296643257, - 2.6717466741800306, - 2.687428021430969, - 2.6706640303134916, - 2.6577410638332366, - 2.6580876797437667, - 2.664514625072479, - 2.6660286605358126, - 2.674075096845627, - 2.6933248579502105, - 2.7032954692840576, - 2.7014527559280395, - 2.720867967605591, - 2.7248996913433077, - 2.747266322374344, - 2.7658567070960998, - 2.8069892704486845, - 2.8621153831481934, - 2.9122868299484255, - 2.922886276245117, - 2.8747336149215696, - 2.8036927938461305, - 2.7583147406578066, - 2.7640749394893644, - 2.8104166626930236, - 2.807755249738693, - 2.748064798116684, - 2.708156979084015, - 2.731319028139114, - 2.782272183895111, - 2.7945031106472014, - 2.7678531050682067, - 2.7773511528968813, - 2.8121860682964326, - 2.797378218173981, - 2.7709134995937346, - 2.7596728801727295, - 2.742587673664093, - 2.732656717300415, - 2.7457004845142365, - 2.8006095707416536, - 2.8642642915248873, - 2.8603794813156127, - 2.872554099559784, - 2.8949529349803926, - 2.919899135828018, - 2.854187560081482, - 2.786458986997604, - 2.7582676470279694, - 2.7710997998714446, - 2.754309242963791, - 2.74538711309433, - 2.730001986026764, - 2.7569756865501405, - 2.7921939373016356, - 2.7452397763729097, - 2.700913691520691, - 2.7184122681617735, - 2.711845451593399, - 2.6843314349651335, - 2.654392623901367, - 2.6670063197612763, - 2.655983620882034, - 2.633085000514984, - 2.6159452140331267, - 2.5792950093746185, - 2.5165078818798063, - 2.5070872962474824, - 2.4972179412841795, - 2.4788779467344284, - 2.471685066819191, - 2.508902740478516, - 2.5190486133098604, - 2.5127523243427277, - 2.5335237860679625, - 2.554616367816925, - 2.5635347783565523, - 2.6065967857837675, - 2.6536713600158692, - 2.6873080253601076, - 2.703821736574173, - 2.693881118297577, - 2.656094121932983, - 2.6324886739254, - 2.6908428370952606, - 2.767598348855972, - 2.7471693098545074, - 2.6943329095840456, - 2.6724316656589506, - 2.631082671880722, - 2.577330654859543, - 2.5677173256874086, - 2.6360071897506714, - 2.6303529918193815, - 2.549316680431366, - 2.5016308605670927, - 2.510335993766785, - 2.547043138742447, - 2.558238220214844, - 2.549449634552002, - 2.5224900782108306, - 2.5216720938682555, - 2.5118201076984406, - 2.523651546239853, - 2.4899489104747774, - 2.4587322533130647, - 2.4521611392498017, - 2.453558641672134, - 2.463631325960159, - 2.485690104961395, - 2.5140328824520113, - 2.4832774877548216, - 2.46353417634964, - 2.4543770790100097, - 2.461738795042038, - 2.460448741912842, - 2.490153133869171, - 2.521117150783539, - 2.5291002452373506, - 2.514217084646225, - 2.4795648515224458, - 2.4697497367858885, - 2.473026376962662, - 2.447982203960419, - 2.450299483537674, - 2.412563681602478, - 2.388262301683426, - 2.3780703604221345, - 2.383696275949478, - 2.37459135055542, - 2.3709845781326293, - 2.3534763991832732, - 2.3470435202121736, - 2.3425818741321565, - 2.3592186272144318, - 2.3402746975421906, - 2.3275898814201357, - 2.3389299511909485, - 2.3535181164741514, - 2.378883385658264, - 2.4051087141036986, - 2.3928683280944822, - 2.3852208316326142, - 2.4092311799526214, - 2.4105202555656433, - 2.424423003196716, - 2.4222385764122008, - 2.4233112156391146, - 2.4403481006622316, - 2.4630678713321688, - 2.429063755273819, - 2.4106470167636873, - 2.4122814178466796, - 2.39821680188179, - 2.3668923914432525, - 2.39832347035408, - 2.409902161359787, - 2.3738031148910523, - 2.281501293182373, - 2.2428443253040315, - 2.300426983833313, - 2.4034675538539885, - 2.4778988480567934, - 2.4923261165618897, - 2.5042731702327727, - 2.5010324835777284, - 2.5113811135292052, - 2.4966313004493714, - 2.441799706220627, - 2.3988278090953825, - 2.359286391735077, - 2.383671593666077, - 2.4168695330619814, - 2.3689806699752807, - 2.2835711419582365, - 2.2050577998161316, - 2.1990459322929383, - 2.2205231726169585, - 2.1853285908699034, - 2.1715015292167665, - 2.1867787301540376, - 2.160416120290756, - 2.1414039015769957, - 2.153247982263565, - 2.1745486319065095, - 2.1854846715927123, - 2.180468189716339, - 2.174153733253479, - 2.1699312210083006, - 2.164174348115921, - 2.167255699634552, - 2.204616183042526, - 2.2673684477806093, - 2.302774554491043, - 2.3633997440338135, - 2.3779033422470093, - 2.3677284181118012, - 2.325092929601669, - 2.2654205679893495, - 2.228520917892456, - 2.2445693969726563, - 2.2882141530513764, - 2.3217037081718446, - 2.377601206302643, - 2.3517123997211455, - 2.2825264811515806, - 2.2477809131145476, - 2.342957240343094, - 2.44626145362854, - 2.429515707492828, - 2.3172086596488954, - 2.2419504463672637, - 2.2388295352458956, - 2.27671702504158, - 2.2876520693302154, - 2.2694844126701357, - 2.2402649343013765, - 2.196065586805344, - 2.2119340002536774, - 2.2046640694141386, - 2.190750700235367, - 2.186220461130142, - 2.169459891319275, - 2.1679752230644227, - 2.1435794055461885, - 2.1361049890518187, - 2.1276593029499056, - 2.1027730762958527, - 2.0752439379692076, - 2.0550416827201845, - 2.050618878006935, - 2.071260964870453, - 2.056949055194855, - 2.0291139662265776, - 2.019494593143463, - 2.0142987728118897, - 2.0128599971532823, - 2.057773357629776, - 2.086720359325409, - 2.1082050621509554, - 2.1187950313091277, - 2.097588616609573, - 2.0491238713264464, - 2.059505134820938, - 2.0785412192344666, - 2.157654857635498, - 2.266816407442093, - 2.334134739637375, - 2.3714635968208313, - 2.329414111375809, - 2.338211292028427, - 2.3573889434337616, - 2.343669128417969, - 2.2780146300792694, - 2.1908664286136625, - 2.218904083967209, - 2.220405697822571, - 2.1997457265853884, - 2.1683449327945707, - 2.1224151849746704, - 2.0972190856933595, - 2.083807122707367, - 2.07105028629303, - 2.0612471401691437, - 2.045500487089157, - 2.003657805919647, - 1.9840528607368468, - 1.9577661335468293, - 1.9201254218816757, - 1.9201641172170638, - 1.9210882514715195, - 1.9075552254915238, - 1.8879459500312805, - 1.893481057882309, - 1.9132432162761688, - 1.9289665162563323, - 1.9401836037635802, - 1.9935126721858978, - 2.036944788694382, - 2.07979416847229, - 2.130499708652496, - 2.13521466255188, - 2.16675683259964, - 2.182843267917633, - 2.212352931499481, - 2.183548945188522, - 2.1544940531253816, - 2.168723440170288, - 2.2000342547893523, - 2.1819868206977846, - 2.1271971344947813, - 2.1232679545879365, - 2.139239436388016, - 2.1290094196796416, - 2.0746701776981356, - 2.028677612543106, - 2.0337423384189606, - 2.052155923843384, - 2.020830142498016, - 1.9314269483089448, - 1.8690155684947967, - 1.898020625114441, - 1.9111338555812836, - 1.9035032391548157, - 1.8997728526592255, - 1.9077274799346924, - 1.9381361424922943, - 1.9485346674919128, - 1.9591201663017273, - 1.9372710406780242, - 1.8959696233272552, - 1.8283445239067078, - 1.7822264432907104, - 1.7906043022871017, - 1.7974620312452316, - 1.7822982013225555, - 1.7679130762815476, - 1.7770622223615646, - 1.7808248698711395, - 1.7678692132234572, - 1.7613101959228517, - 1.7573013573884964, - 1.74691102206707, - 1.7504255086183549, - 1.7821894317865372, - 1.8096480518579483, - 1.8279687225818635, - 1.8432449221611023, - 1.8959912955760956, - 1.997382390499115, - 2.095565551519394, - 2.1855458557605743, - 2.2299864649772645, - 2.218732923269272, - 2.240137493610382, - 2.3998456478118895, - 2.600481617450714, - 2.687659001350403, - 2.5295464515686037, - 2.307137155532837, - 2.2700773954391478, - 2.420652759075165, - 2.425257074832916, - 2.160812032222748, - 2.079983341693878, - 2.153257727622986, - 2.139014571905136, - 2.0116170763969423, - 1.9365285694599152, - 1.9537340879440308, - 1.9615702867507934, - 1.891413152217865, - 1.8380209505558014, - 1.8360575675964355, - 1.8336972713470459, - 1.7951162338256836, - 1.7156787455081939, - 1.700462007522583, - 1.713869035243988, - 1.6794924020767212, - 1.6280859261751175, - 1.623061165213585, - 1.6315117537975312, - 1.6327598065137863, - 1.61971772313118, - 1.642774796485901, - 1.6767654120922089, - 1.6956269532442092, - 1.7098960638046266, - 1.7517479002475738, - 1.760422244668007, - 1.762585026025772, - 1.7201067715883256, - 1.7145636081695557, - 1.7103519320487977, - 1.7067849040031433, - 1.7487872242927551, - 1.8456023037433624, - 1.9418061196804046, - 1.9853092670440673, - 1.9995768904685973, - 1.9840053915977478, - 1.9984563291072845, - 2.0160938262939454, - 2.1037175714969636, - 2.138273078203201, - 2.1201364994049072, - 2.0237655699253083, - 1.9522913634777068, - 1.9556262791156769, - 1.9835412144660949, - 1.984004408121109, - 1.905003422498703, - 1.8349203586578369, - 1.8325836122035981, - 1.862572008371353, - 1.8862518966197968, - 1.8575058281421661, - 1.8277256309986114, - 1.7872166514396668, - 1.7890142977237702, - 1.758363127708435, - 1.6775939166545868, - 1.6537573009729385, - 1.675208169221878, - 1.671123242378235, - 1.6367086946964264, - 1.615381908416748, - 1.630152654647827, - 1.6423422157764436, - 1.6075957864522934, - 1.6033770442008972, - 1.5976701378822327, - 1.5725946009159089, - 1.5617987781763076, - 1.5746785879135132, - 1.5823458194732667, - 1.6050575226545334, - 1.6469985604286195, - 1.7154649138450622, - 1.772922295331955, - 1.8035277128219604, - 1.7878915548324585, - 1.7616865754127502, - 1.7181495904922486, - 1.7269696831703185, - 1.782651674747467, - 1.8933573544025422, - 1.9434597671031952, - 1.9132082998752593, - 1.8176167786121369, - 1.7203977823257446, - 1.6885653197765351, - 1.7171513378620147, - 1.726483368873596, - 1.694858193397522, - 1.6222016930580139, - 1.5981545478105545, - 1.6170118659734727, - 1.6460429161787034, - 1.650823140144348, - 1.631956833600998, - 1.6502547919750215, - 1.6628327667713165, - 1.6562411844730378, - 1.65529845058918, - 1.6654258847236634, - 1.6364432156085968, - 1.6157025694847107, - 1.6439126193523408, - 1.665658286213875, - 1.6464737057685852, - 1.6352573305368423, - 1.6343928039073945, - 1.6304397702217102, - 1.6329185724258424, - 1.6530398726463318, - 1.6674998462200166, - 1.6539698183536529, - 1.6479013860225677, - 1.6815508484840394, - 1.715801626443863, - 1.76663858294487, - 1.8008098542690276, - 1.83059064745903, - 1.8049959421157837, - 1.8054337799549103, - 1.8328673541545868, - 1.885868752002716, - 1.8848430514335632, - 1.8299774765968322, - 1.7895103633403777, - 1.761225026845932, - 1.796555334329605, - 1.7736887693405152, - 1.7358961403369904, - 1.67947838306427, - 1.657456922531128, - 1.6542241811752318, - 1.6367368340492248, - 1.6036385297775269, - 1.5994903147220612, - 1.5980602115392686, - 1.5416592717170716, - 1.5136932760477066, - 1.526278778910637, - 1.5148104637861253, - 1.4930215895175933, - 1.484035500884056, - 1.484538072347641, - 1.461180904507637, - 1.4542219519615174, - 1.4710537135601043, - 1.502457958459854, - 1.534567505121231, - 1.5978373467922211, - 1.659396368265152, - 1.7368301272392273, - 1.8117379903793336, - 1.876492154598236, - 1.848245108127594, - 1.7685385644435883, - 1.7710578918457032, - 1.9338051915168761, - 2.1105722784996033, - 2.15620334148407, - 2.0621899247169493, - 1.9617170453071595, - 1.912854391336441, - 1.9441688656806946, - 1.9904882192611695, - 1.9356423139572143, - 1.8542846858501434, - 1.8348150968551635, - 1.7888910591602325, - 1.7145818173885345, - 1.6767848074436187, - 1.6447699666023254, - 1.6167636334896087, - 1.5733121991157533, - 1.5115898281335831, - 1.4824648022651672, - 1.4737397640943528, - 1.4462085634469986, - 1.423389545083046, - 1.392742359638214, - 1.3790456354618073, - 1.375245252251625, - 1.3686568528413772, - 1.3491334974765778, - 1.3421019285917282, - 1.3333233296871185, - 1.3200729489326477, - 1.314486038684845, - 1.316682267189026, - 1.3273085862398148, - 1.3274171322584152, - 1.317927470803261, - 1.3338915795087813, - 1.3510908842086793, - 1.3763007551431656, - 1.4008700907230378, - 1.4339404910802842, - 1.4678143352270125, - 1.5157747328281403, - 1.5358830094337463, - 1.552093857526779, - 1.5806061983108521, - 1.6492739558219909, - 1.7984647095203399, - 1.972836285829544, - 2.1038114428520203, - 2.061342704296112, - 1.9368529915809631, - 1.8483909785747528, - 1.9494396448135376, - 2.130235803127289, - 2.1894545435905455, - 2.0548805952072144, - 1.8816290080547333, - 1.8596571445465089, - 1.9805745124816894, - 1.958065402507782, - 1.827095979452133, - 1.729774498939514, - 1.6630859434604646, - 1.6560203075408935, - 1.6583878517150878, - 1.556184709072113, - 1.456160780787468, - 1.4830341726541518, - 1.5140736818313598, - 1.4368574500083924, - 1.3587696641683578, - 1.3764492452144623, - 1.3692312210798263, - 1.3024597615003586, - 1.285535106062889, - 1.2947594583034516, - 1.2758514255285263, - 1.2698954194784164, - 1.2750503778457642, - 1.2743370562791825, - 1.2876981556415559, - 1.3118720024824142, - 1.3336408674716949, - 1.3600041151046753, - 1.3633869737386703, - 1.370765283703804, - 1.3705262243747711, - 1.3840742796659469, - 1.3974028795957565, - 1.4589556276798248, - 1.5634836256504059, - 1.7017912685871124, - 1.8090790569782258, - 1.8572198510169984, - 1.8393225610256194, - 1.745182102918625, - 1.7066953003406524, - 1.8389686822891236, - 2.0273545384407043, - 2.0893219351768493, - 1.9919203639030456, - 1.7991846680641175, - 1.7488060116767883, - 1.9385347008705138, - 2.037666380405426, - 1.9245733141899108, - 1.7052492141723632, - 1.6495229125022888, - 1.709771889448166, - 1.680865317583084, - 1.5459372460842133, - 1.4509133517742157, - 1.4591695010662078, - 1.4878480851650238, - 1.4379533350467681, - 1.3403618097305299, - 1.327185270190239, - 1.3400155574083328, - 1.3181950360536576, - 1.2569738686084748, - 1.2355421781539917, - 1.2442515164613723, - 1.2246268957853317, - 1.1860004723072053, - 1.1833678424358367, - 1.1840450167655945, - 1.1635449409484864, - 1.1516588792204856, - 1.1550232350826264, - 1.161804422736168, - 1.1639443978667259, - 1.1758138865232468, - 1.2093297511339187, - 1.2595848262310028, - 1.3231686294078826, - 1.3842850983142854, - 1.456949096918106, - 1.4710870444774629, - 1.4431784749031067, - 1.3808046579360962, - 1.32734457552433, - 1.316031488776207, - 1.4161142647266387, - 1.5231586277484894, - 1.5692899107933045, - 1.5557931780815124, - 1.5124400436878205, - 1.4604098856449128, - 1.4551281809806824, - 1.515027779340744, - 1.5832486569881439, - 1.5608269691467285, - 1.4629808425903321, - 1.4079428136348724, - 1.4309354782104493, - 1.4721669375896453, - 1.4623640716075896, - 1.4419351041316986, - 1.425219678878784, - 1.4292252659797668, - 1.4583767473697662, - 1.4856179893016814, - 1.4794234395027162, - 1.4836454153060914, - 1.4844019830226898, - 1.4725246906280518, - 1.4374557435512543, - 1.4227607607841493, - 1.3972036361694335, - 1.3676692187786101, - 1.3239783018827438, - 1.301520174741745, - 1.2814162015914916, - 1.276510974764824, - 1.2794139474630355, - 1.2838977128267288, - 1.2935621231794356, - 1.3099683821201324, - 1.3066191285848618, - 1.2805506229400634, - 1.2457955420017242, - 1.2282243907451629, - 1.2064349710941316, - 1.1892537236213685, - 1.185356280207634, - 1.1870101362466812, - 1.1807052820920945, - 1.1605397164821625, - 1.1539280861616135, - 1.1636703133583068, - 1.1563886046409606, - 1.152615961432457, - 1.1573953539133073, - 1.1731687992811204, - 1.2010812222957612, - 1.2224514544010163, - 1.2802299857139587, - 1.3450754404067993, - 1.4175875067710877, - 1.465183436870575, - 1.4714519143104554, - 1.4153712809085846, - 1.3397977769374847, - 1.2978912204504014, - 1.3821893215179444, - 1.481998485326767, - 1.5104002475738525, - 1.4750391364097595, - 1.4190187096595763, - 1.405557543039322, - 1.4168893933296203, - 1.4130046725273133, - 1.450549441576004, - 1.4884270250797271, - 1.4900269269943238, - 1.4651348054409028, - 1.4231305539608001, - 1.427637481689453, - 1.408449375629425, - 1.385536891222, - 1.3675611436367034, - 1.3695270836353302, - 1.3713291466236115, - 1.3181695878505706, - 1.2693533271551132, - 1.32115096449852, - 1.3624435484409332, - 1.3475900888442993, - 1.3478316724300385, - 1.4426356554031372, - 1.4778928279876709, - 1.4348284363746644, - 1.3978879511356355, - 1.388800311088562, - 1.3677935540676116, - 1.333723211288452, - 1.3512008786201477, - 1.3684850215911866, - 1.352644819021225, - 1.3240403354167938, - 1.3255681574344635, - 1.2945513665676116, - 1.2694582372903824, - 1.2545179635286332, - 1.2414363652467728, - 1.2380239993333817, - 1.2518074959516525, - 1.250152325630188, - 1.241543933749199, - 1.2150096863508224, - 1.1804063975811006, - 1.1652605921030044, - 1.1532370328903199, - 1.171042948961258, - 1.204164844751358, - 1.2323960065841675, - 1.2705435186624527, - 1.3290120720863343, - 1.4468906700611115, - 1.5504210770130158, - 1.6628956198692322, - 1.7334424614906312, - 1.7213492751121522, - 1.6119509994983674, - 1.5173705875873567, - 1.559908241033554, - 1.6531462848186493, - 1.6933979153633119, - 1.6404240787029267, - 1.5631902098655701, - 1.5017836391925812, - 1.4374376654624939, - 1.4202383995056151, - 1.4054916441440581, - 1.4208007872104644, - 1.396723634004593, - 1.330470359325409, - 1.2976850330829621, - 1.292001050710678, - 1.2824827015399933, - 1.2367434710264207, - 1.1721056193113326, - 1.1321319341659546, - 1.1229653865098954, - 1.1213793337345124, - 1.0827976912260056, - 1.0667483627796173, - 1.06057508289814, - 1.0442967683076858, - 1.0249659210443496, - 1.032388061285019, - 1.0259729683399201, - 1.0190409988164901, - 1.0309810757637023, - 1.0367869198322297, - 1.0383809208869934, - 1.07181558907032, - 1.1028737008571625, - 1.1285680681467056, - 1.158366709947586, - 1.2212917745113372, - 1.2689748406410217, - 1.2830253064632415, - 1.3014370024204254, - 1.3540251433849335, - 1.4026389837265014, - 1.4910781264305115, - 1.6287452936172486, - 1.7268704414367675, - 1.7653455853462219, - 1.6621371030807495, - 1.5595297157764434, - 1.5064904689788818, - 1.6152201890945435, - 1.67420551776886, - 1.566092962026596, - 1.4132670700550078, - 1.4073233604431152, - 1.5187255799770356, - 1.506825703382492, - 1.3767799258232116, - 1.2713184416294099, - 1.2736046373844148, - 1.3079564929008485, - 1.2803390204906464, - 1.1965245127677917, - 1.1510242253541947, - 1.1679951280355454, - 1.175852507352829, - 1.138627329468727, - 1.1098967015743255, - 1.1271941989660264, - 1.152945378422737, - 1.1500175088644027, - 1.1476965308189393, - 1.1589755833148956, - 1.1489947617053986, - 1.107813048362732, - 1.0965890794992448, - 1.0976654529571532, - 1.1013010084629058, - 1.1146543443202972, - 1.167525339126587, - 1.217334085702896, - 1.2423901498317718, - 1.2147385776042938, - 1.1552946269512177, - 1.0896356701850891, - 1.0587911039590836, - 1.081472533941269, - 1.1492199778556824, - 1.1963711738586427, - 1.1912789642810822, - 1.164107897877693, - 1.1059748589992524, - 1.0510359495878219, - 1.051429769396782, - 1.0959211796522141, - 1.1382147282361985, - 1.1185695737600327, - 1.0877784997224809, - 1.0637358337640763, - 1.0581339418888092, - 1.0647330045700074, - 1.1004158079624176, - 1.1466680586338043, - 1.1647696107625962, - 1.1661308407783508, - 1.1650461047887801, - 1.15182021856308, - 1.1608133226633073, - 1.217871403694153, - 1.3007368981838225, - 1.3499607026576996, - 1.348750013113022, - 1.3536103427410127, - 1.3920619189739227, - 1.4728198885917663, - 1.519226509332657, - 1.5024077355861665, - 1.4283782839775085, - 1.3615354478359223, - 1.372944700717926, - 1.3875870287418366, - 1.3650432288646699, - 1.3183338582515716, - 1.309173035621643, - 1.3014080941677093, - 1.3112626910209655, - 1.3638044595718384, - 1.3624934315681458, - 1.3278330326080323, - 1.3702454209327697, - 1.3941164553165435, - 1.3684022128582, - 1.2939171254634858, - 1.2379981338977815, - 1.2094926595687867, - 1.1775445610284805, - 1.1611635595560075, - 1.1599197059869766, - 1.1174800992012024, - 1.070951732993126, - 1.068075743317604, - 1.0466898798942565, - 0.9963929891586304, - 0.9717554837465286, - 0.9907449692487716, - 0.9853973120450974, - 0.9454379245638848, - 0.930273774266243, - 0.9253651380538941, - 0.9032290935516357, - 0.8993680864572525, - 0.907538415491581, - 0.9049877062439918, - 0.9044009894132614, - 0.9104154869914055, - 0.9266946524381637, - 0.9374659508466721, - 0.9578649133443833, - 0.986770698428154, - 1.0236494272947312, - 1.0619238644838334, - 1.1117562025785446, - 1.1514581263065338, - 1.1919657051563264, - 1.237450110912323, - 1.2967459619045258, - 1.4097505986690522, - 1.5697808027267457, - 1.7749550104141236, - 1.9544567704200744, - 1.945289671421051, - 1.7748107433319091, - 1.6457584738731383, - 1.6991831064224243, - 1.806875467300415, - 1.7500417828559875, - 1.5011529803276062, - 1.372249388694763, - 1.5151880145072938, - 1.564309573173523, - 1.3893906772136688, - 1.2742120683193208, - 1.3118023693561554, - 1.3199191987514496, - 1.2510083675384522, - 1.1529074668884278, - 1.110806378722191, - 1.1138307482004166, - 1.0737347960472108, - 1.0212629407644271, - 1.0122287213802337, - 0.9851652979850769, - 0.9643883824348449, - 0.9576879113912582, - 0.9485924720764161, - 0.9234934970736504, - 0.9038720697164535, - 0.9047964036464691, - 0.9110596150159835, - 0.9091055959463119, - 0.9138780802488327, - 0.9412980824708939, - 0.9623627632856369, - 0.9665063709020615, - 0.9734349370002746, - 0.9818987280130387, - 0.9792456716299057, - 0.9609000831842422, - 0.9662331908941268, - 0.9842310965061187, - 1.0216564804315567, - 1.0612888634204865, - 1.1121769070625305, - 1.1577844262123107, - 1.1735141277313232, - 1.1731035113334656, - 1.162948524951935, - 1.1465351581573486, - 1.163462084531784, - 1.2192051887512207, - 1.2353873908519746, - 1.2017782211303711, - 1.150284045934677, - 1.128557839989662, - 1.1383236646652222, - 1.1574072599411012, - 1.1697866916656494, - 1.1620945870876311, - 1.1384871423244476, - 1.1198798418045044, - 1.1250183582305908, - 1.1332885563373565, - 1.1038297146558762, - 1.0564930737018585, - 1.0077534854412078, - 1.003470841050148, - 0.9951912254095078, - 0.9862729251384735, - 0.9765535295009613, - 0.9801274985074997, - 1.0008803337812424, - 1.0024308770895005, - 1.003937441110611, - 0.9995840966701508, - 0.9779799222946167, - 0.9621682912111282, - 0.945003017783165, - 0.9191089332103729, - 0.9009116411209106, - 0.894412499666214, - 0.9104665905237198, - 0.8962944984436035, - 0.8741350919008255, - 0.8711598157882691, - 0.8851391106843949, - 0.9012761533260345, - 0.9178805440664292, - 0.9309839606285095, - 0.952451279759407, - 1.00194653570652, - 1.0783790171146392, - 1.1307740092277527, - 1.1569267392158509, - 1.133406400680542, - 1.1181231379508971, - 1.1005042016506195, - 1.1203032374382018, - 1.2295710265636444, - 1.3578871250152589, - 1.4867934465408326, - 1.5420628905296325, - 1.6211571455001832, - 1.7210917234420777, - 1.8052300453186034, - 1.910300040245056, - 2.0749751210212706, - 2.122155046463013, - 1.9745757460594178, - 1.759320318698883, - 1.6730875730514527, - 1.707321321964264, - 1.685354518890381, - 1.5573760628700257, - 1.4464049339294434, - 1.4226963996887207, - 1.395029878616333, - 1.297104400396347, - 1.2268408179283141, - 1.1852466344833374, - 1.1072692394256591, - 1.094111329317093, - 1.0814512431621552, - 1.0108766376972198, - 0.982353800535202, - 0.9678938508033752, - 0.9350972443819046, - 0.8997287094593048, - 0.8868944108486175, - 0.8707330316305161, - 0.8363853022456169, - 0.8235518738627434, - 0.8158002778887748, - 0.7989840134978294, - 0.787921379506588, - 0.7656864911317826, - 0.7562404274940491, - 0.7544325664639473, - 0.7424840345978737, - 0.737187097966671, - 0.7353279948234558, - 0.7284494347870349, - 0.72173245921731, - 0.7245774246752262, - 0.7296249091625213, - 0.7315500468015671, - 0.7362476453185082, - 0.7502732574939728, - 0.7781974241137505, - 0.8101723834872245, - 0.8475997775793076, - 0.903497526049614, - 0.9754962712526322, - 1.0677086949348449, - 1.1517360031604766, - 1.2364047169685364, - 1.2832110404968262, - 1.3546512007713318, - 1.4729307770729065, - 1.6394547820091248, - 1.7898436188697815, - 1.761591362953186, - 1.6147318124771117, - 1.5357641220092773, - 1.60933575630188, - 1.7245616912841797, - 1.6547406792640686, - 1.392855203151703, - 1.2630142152309418, - 1.4280466556549072, - 1.4952383756637573, - 1.2742484986782074, - 1.079679650068283, - 1.138151603937149, - 1.2375220656394958, - 1.0941295087337495, - 0.9616482526063919, - 0.9761991798877716, - 1.0221310943365096, - 0.9529530942440033, - 0.8775121361017227, - 0.8816155254840851, - 0.8870054364204407, - 0.839464646577835, - 0.8057436376810074, - 0.8202337116003037, - 0.807557362318039, - 0.7837556287646293, - 0.773677197098732, - 0.7702175080776215, - 0.7650977477431298, - 0.7597625330090523, - 0.7556082680821419, - 0.7616651654243469, - 0.7678500682115554, - 0.7643368244171143, - 0.7648282200098038, - 0.767544649541378, - 0.7747253596782684, - 0.7706150382757186, - 0.7677341535687446, - 0.7895211547613143, - 0.8272546321153641, - 0.8664127826690674, - 0.8988133937120437, - 0.9475068300962448, - 0.9671258091926574, - 0.964272889494896, - 0.9477267503738404, - 0.9435855925083161, - 1.0015193343162536, - 1.0686063587665557, - 1.1313694536685943, - 1.1513589203357697, - 1.139097225666046, - 1.1009519696235657, - 1.068004322052002, - 1.0672039151191712, - 1.0689955592155456, - 1.0993924498558045, - 1.0962707698345184, - 1.0858142614364623, - 1.1058072805404664, - 1.1807420551776886, - 1.2231933176517487, - 1.1912857174873352, - 1.1666632294654846, - 1.1883868157863617, - 1.1806043148040772, - 1.0905124425888062, - 0.9738363534212112, - 0.9782441765069961, - 1.0155503273010253, - 0.9845548689365387, - 0.9490686535835267, - 0.9495124757289887, - 0.982884818315506, - 0.9770120978355408, - 0.9093190938234329, - 0.8762329548597336, - 0.9086290150880814, - 0.923290592432022, - 0.8926983714103699, - 0.8767084240913391, - 0.8850083947181702, - 0.8818331450223923, - 0.8772772878408432, - 0.8910083502531052, - 0.9091313064098359, - 0.9262912154197693, - 0.9150158941745759, - 0.8979847669601441, - 0.8700416445732116, - 0.8297470688819886, - 0.81576167345047, - 0.8376765787601471, - 0.8630454510450363, - 0.8824740737676621, - 0.9086044788360595, - 0.9293124228715897, - 0.922852811217308, - 0.8802166104316711, - 0.8700413286685944, - 0.8854910433292389, - 0.904819107055664, - 0.920898151397705, - 0.9368253529071808, - 0.9418385475873947, - 0.9405279219150543, - 0.943146675825119, - 0.9336889743804931, - 0.9169150471687317, - 0.9205617666244507, - 0.9415953010320663, - 0.9708772659301758, - 0.9761974811553955, - 0.9690025985240937, - 0.9434066444635392, - 0.9344403445720673, - 0.9323840439319611, - 0.9350475341081619, - 0.9434690624475479, - 0.9411993533372879, - 0.9297390431165695, - 0.9317371696233749, - 0.9495757609605789, - 0.9706847846508027, - 0.9881403684616089, - 0.9911480784416199, - 0.9940638154745102, - 1.006840443611145, - 1.0207889139652253, - 1.0569227755069732, - 1.0792390704154968, - 1.1030234038829803, - 1.1216847598552704, - 1.1210229039192199, - 1.100832462310791, - 1.089095938205719, - 1.114434540271759, - 1.1644641995429992, - 1.1459506332874299, - 1.1181313455104829, - 1.0813469469547272, - 1.0184424757957458, - 0.9588082045316696, - 0.9294017285108567, - 0.9580932646989823, - 0.9862695604562759, - 0.9544451832771301, - 0.8992591738700867, - 0.8661297380924224, - 0.8780173897743225, - 0.9006889492273331, - 0.9222475051879883, - 0.9360692799091339, - 0.9433181345462799, - 0.9541206449270249, - 0.9896968185901642, - 1.0190148174762725, - 1.0180728554725647, - 0.9828644931316376, - 0.9526992052793503, - 0.9161700576543808, - 0.8959724187850953, - 0.9398020952939987, - 0.9622464686632156, - 0.9469088733196258, - 0.916783544421196, - 0.9079045802354813, - 0.8842648208141327, - 0.8627821743488312, - 0.857645320892334, - 0.8827918350696564, - 0.8894189685583115, - 0.8724818587303161, - 0.851065707206726, - 0.8268503069877624, - 0.8095055669546127, - 0.8088234782218933, - 0.8042847901582718, - 0.804998567700386, - 0.7944959282875061, - 0.7847261160612107, - 0.7952544838190079, - 0.8091774046421051, - 0.8046357661485672, - 0.8068828254938125, - 0.8323545634746552, - 0.8552026599645615, - 0.8543328672647477, - 0.867408561706543, - 0.9120181858539581, - 0.9444422483444214, - 0.9336257457733155, - 0.8890172928571701, - 0.8526483595371246, - 0.86202352643013, - 0.8615381121635437, - 0.8485321491956711, - 0.8404508829116821, - 0.8461433976888657, - 0.852863895893097, - 0.834795993566513, - 0.8116316288709641, - 0.8160165220499038, - 0.842677453160286, - 0.8928728580474854, - 0.9488174319267273, - 1.0130397200584411, - 1.0409350395202637, - 1.0687236309051513, - 1.0931704103946687, - 1.1590252816677094, - 1.1734984695911408, - 1.1132440507411956, - 1.0697251915931703, - 1.0979276418685913, - 1.1713661968708038, - 1.2011277556419373, - 1.2584539651870728, - 1.28158278465271, - 1.240575623512268, - 1.1681006789207458, - 1.0839789032936096, - 1.1005403816699981, - 1.132567536830902, - 1.092570048570633, - 1.038526713848114, - 1.00056511759758, - 0.9708549857139588, - 0.939673638343811, - 0.9208085000514984, - 0.9025656402111053, - 0.8677372902631759, - 0.8472857713699341, - 0.8499235063791275, - 0.8309872925281525, - 0.7930261552333832, - 0.8051375150680542, - 0.818995150923729, - 0.786780834197998, - 0.770098426938057, - 0.7886472404003143, - 0.784200844168663, - 0.7653730392456055, - 0.7614173620939255, - 0.7507751256227493, - 0.7221247106790543, - 0.7122478246688843, - 0.7197629034519195, - 0.7365197151899338, - 0.7362271666526794, - 0.7289635092020035, - 0.7224185556173325, - 0.7287393748760224, - 0.7463112711906433, - 0.7608420044183731, - 0.7816780298948288, - 0.8131335079669952, - 0.8387615621089936, - 0.8774081021547318, - 0.9297132074832917, - 0.9574722647666931, - 0.9564584851264953, - 0.937412691116333, - 0.9394261807203292, - 0.9538626253604889, - 1.0104345023632049, - 1.0606284081935882, - 1.0798356711864472, - 1.0197494387626649, - 0.9641093850135803, - 1.0136999845504762, - 1.0718038201332092, - 1.0916662037372589, - 1.0547506868839265, - 1.0218781411647797, - 1.0172257006168366, - 1.016850197315216, - 1.0093246757984162, - 0.9929951071739197, - 1.0318302392959595, - 1.0640338838100434, - 0.996397078037262, - 0.9092899769544601, - 0.9390761315822601, - 1.0230573892593384, - 1.0068497121334077, - 0.9384194910526276, - 0.8922275483608246, - 0.932780048251152, - 0.9582525372505188, - 0.9002607077360153, - 0.8409467875957489, - 0.846877720952034, - 0.8759074151515961, - 0.8512963593006134, - 0.8251913696527481, - 0.8096958130598069, - 0.8099099189043045, - 0.7757859528064728, - 0.7408360362052917, - 0.7263911068439484, - 0.740221306681633, - 0.7344545423984528, - 0.7242490917444229, - 0.7159465223550796, - 0.7150651007890702, - 0.7072065532207489, - 0.6935015082359314, - 0.689974257349968, - 0.7053443491458893, - 0.7262171655893326, - 0.7494689255952836, - 0.756643894314766, - 0.7612297832965851, - 0.7657047897577286, - 0.7860411554574966, - 0.8062344878911972, - 0.8595764517784119, - 0.9543365597724914, - 1.0796082198619843, - 1.199314045906067, - 1.3177723348140717, - 1.3853980779647828, - 1.3693628430366516, - 1.3188955724239348, - 1.3303999185562134, - 1.3849675595760345, - 1.4258986711502075, - 1.3955476999282836, - 1.2931132972240449, - 1.2143588542938233, - 1.2622727930545807, - 1.3127392828464508, - 1.2384866535663606, - 1.0951053142547607, - 1.073587852716446, - 1.1027998864650725, - 1.0708897888660431, - 0.9836683988571167, - 0.9430316925048828, - 0.9563354015350342, - 0.941444456577301, - 0.9019669443368912, - 0.873959344625473, - 0.881085467338562, - 0.8856350749731063, - 0.8652556449174881, - 0.8153297305107117, - 0.7704396992921829, - 0.7416666448116302, - 0.7140814453363419, - 0.703950834274292, - 0.6880644261837006, - 0.6679306745529174, - 0.6488558009266854, - 0.6539001271128655, - 0.6587793380022049, - 0.6389253973960877, - 0.6342366054654122, - 0.6413737162947655, - 0.6347045406699181, - 0.6199570283293724, - 0.6179359585046769, - 0.617106705904007, - 0.6163298040628433, - 0.6235922515392304, - 0.6255128905177116, - 0.621129609644413, - 0.6235268503427506, - 0.6183419838547707, - 0.608514754474163, - 0.6150773823261261, - 0.6208054468035697, - 0.6319571241736412, - 0.6630760610103608, - 0.7087433576583863, - 0.7591998904943467, - 0.8163146942853927, - 0.8693561673164367, - 0.8990907609462738, - 0.9070924758911133, - 0.8864143878221512, - 0.9019115567207336, - 0.9786153674125672, - 1.1167944610118865, - 1.2328276872634887, - 1.3054412364959718, - 1.271268266439438, - 1.2294551014900208, - 1.270898801088333, - 1.3632636785507202, - 1.4209018290042876, - 1.3859902024269104, - 1.347867977619171, - 1.4344541370868682, - 1.5876028418540955, - 1.6043175339698792, - 1.3981326341629028, - 1.2498542726039887, - 1.2793643951416016, - 1.322633397579193, - 1.2095553755760193, - 1.1099789202213288, - 1.1337595343589784, - 1.164512425661087, - 1.0387216091156006, - 0.8959006249904633, - 0.8938640594482422, - 0.9120827794075013, - 0.8336690723896026, - 0.7592584222555161, - 0.7704966783523559, - 0.7639338433742523, - 0.707821398973465, - 0.6913952589035034, - 0.6933050692081452, - 0.6544466018676758, - 0.6435744658112525, - 0.6416005820035935, - 0.6122830912470818, - 0.6003559485077858, - 0.6084605008363724, - 0.5919749423861503, - 0.575152300298214, - 0.5815908879041671, - 0.5784681975841522, - 0.5704612612724305, - 0.575059036910534, - 0.5784871831536293, - 0.5813389465212822, - 0.5869632437825203, - 0.5936024159193038, - 0.5976597085595131, - 0.6061213105916977, - 0.6149779409170151, - 0.6220859959721565, - 0.6279680371284485, - 0.6428702414035797, - 0.6625497803092003, - 0.6772379130125046, - 0.7031043857336045, - 0.740698304772377, - 0.7960237264633179, - 0.8733569502830505, - 0.9606706202030182, - 1.0491712749004365, - 1.117353582382202, - 1.1725951790809632, - 1.1887513875961304, - 1.2169133961200713, - 1.2589288234710694, - 1.276784485578537, - 1.2841106355190277, - 1.2738955676555634, - 1.2121574103832244, - 1.0944182932376862, - 1.0800420463085174, - 1.1622819125652313, - 1.2241360306739808, - 1.1548605859279633, - 1.0845204710960388, - 1.1801125466823579, - 1.2400220334529877, - 1.1439387381076813, - 1.013447070121765, - 0.9682655334472656, - 0.9854279160499573, - 0.9633705496788025, - 0.9059241771697998, - 0.8562579274177551, - 0.8460894137620926, - 0.8322551190853119, - 0.798067283630371, - 0.7596172899007797, - 0.734992778301239, - 0.7124252051115036, - 0.6720066636800766, - 0.6566928327083588, - 0.6444280087947846, - 0.6167673334479332, - 0.5803798213601112, - 0.5747014090418816, - 0.5820426881313324, - 0.5564439609646797, - 0.5377616748213768, - 0.5414166331291199, - 0.546287351846695, - 0.532719048857689, - 0.5257234171032905, - 0.530399651825428, - 0.5322135522961616, - 0.5288865834474563, - 0.5295017421245575, - 0.5382165908813477, - 0.5481849953532218, - 0.5733417600393296, - 0.6144972249865532, - 0.6614623934030532, - 0.7177286684513092, - 0.7846994042396546, - 0.8389281541109085, - 0.8716808438301087, - 0.8697821855545044, - 0.8528008729219436, - 0.8388758659362793, - 0.8894829154014587, - 1.0160676658153533, - 1.1800923466682434, - 1.2495215773582458, - 1.1406993567943573, - 0.9371606528759002, - 0.8721639394760132, - 0.9989545226097107, - 1.1271624147891999, - 1.107993495464325, - 0.9911143481731415, - 0.9008874714374542, - 0.9441126704216003, - 1.008765548467636, - 0.9927385985851288, - 0.9366073787212372, - 0.8893432915210724, - 0.8879331648349762, - 0.8938998639583587, - 0.8744561970233917, - 0.8322051018476486, - 0.8324783563613891, - 0.8455051183700562, - 0.7740599751472473, - 0.7165281891822814, - 0.703129580616951, - 0.7060861974954605, - 0.6720962643623352, - 0.6335735082626343, - 0.6179480135440827, - 0.6216734871268272, - 0.5890478000044823, - 0.5637441366910935, - 0.5697214573621749, - 0.5689889505505562, - 0.5445247232913971, - 0.5281658351421357, - 0.5308633014559746, - 0.5346183136105538, - 0.5290273383259774, - 0.5212865456938743, - 0.5274605944752693, - 0.5454833015799523, - 0.5584133312106132, - 0.5820094510912895, - 0.6076338112354278, - 0.6392553925514222, - 0.6570165425539016, - 0.6641845554113388, - 0.6519252806901932, - 0.6396394848823548, - 0.6278147637844086, - 0.6429037481546402, - 0.6924189686775207, - 0.7696212291717529, - 0.8645102083683014, - 0.9474041104316712, - 1.013428258895874, - 1.0643571734428405, - 1.1179551005363464, - 1.2220819771289826, - 1.3937021851539613, - 1.5412211298942566, - 1.5124652862548829, - 1.388690894842148, - 1.3370213985443116, - 1.4690202355384827, - 1.6742763996124268, - 1.6611729383468627, - 1.4337926149368285, - 1.3002369046211242, - 1.400677740573883, - 1.4188659906387329, - 1.2735092043876648, - 1.1190945029258728, - 1.125168925523758, - 1.1712706327438354, - 1.0819768011569977, - 0.9346691608428955, - 0.874407809972763, - 0.8933640956878662, - 0.8579364717006683, - 0.7682958602905273, - 0.7281756311655044, - 0.7475154429674149, - 0.7136207818984985, - 0.6665836960077286, - 0.6531241059303283, - 0.6386449009180069, - 0.616839537024498, - 0.5947773635387421, - 0.5748327612876892, - 0.5590733766555787, - 0.5527196273207664, - 0.5415205284953117, - 0.5299780666828156, - 0.5210989251732826, - 0.5231420964002609, - 0.5174363821744918, - 0.5195824950933456, - 0.5225768029689789, - 0.5235779523849488, - 0.5302656099200249, - 0.5413887858390808, - 0.5452770411968231, - 0.5464091554284096, - 0.5463711336255074, - 0.5466542690992355, - 0.5322518438100815, - 0.5148132354021072, - 0.5059694707393646, - 0.5040802270174026, - 0.5130368649959565, - 0.5345386683940887, - 0.5690583661198616, - 0.6095378994941711, - 0.6508529007434845, - 0.6736598432064056, - 0.6825029700994492, - 0.6618866920471191, - 0.6362177103757858, - 0.6253327965736389, - 0.6621982127428054, - 0.73155517578125, - 0.8126164257526398, - 0.8727519094944001, - 0.867079907655716, - 0.8235443353652954, - 0.7685302436351776, - 0.7832364737987518, - 0.8508231103420257, - 0.9382104456424714, - 0.960076504945755, - 0.9000632166862488, - 0.8613292932510376, - 0.9055325150489807, - 1.0251663863658904, - 1.1217561423778535, - 1.1212093651294708, - 1.0579228103160858, - 1.0158287703990936, - 1.0712745308876037, - 1.1343475103378295, - 1.0660131990909576, - 0.9677955806255341, - 0.989855819940567, - 1.0628492712974549, - 1.030330103635788, - 0.914308774471283, - 0.8431783199310303, - 0.854617816209793, - 0.852389907836914, - 0.8071740746498108, - 0.7478188961744309, - 0.7406944215297699, - 0.7461029440164566, - 0.715388610959053, - 0.6606078028678894, - 0.6457010418176651, - 0.6409484833478928, - 0.6206403374671936, - 0.59921695291996, - 0.5949427366256714, - 0.5905064076185227, - 0.5854263663291931, - 0.5856205970048904, - 0.5905452072620392, - 0.5877239167690277, - 0.5892818897962571, - 0.6042847812175751, - 0.6063258588314057, - 0.6045734018087388, - 0.608200803399086, - 0.5986986547708512, - 0.5789731293916702, - 0.5748737126588821, - 0.577101856470108, - 0.5991174548864364, - 0.6250214666128159, - 0.645841869711876, - 0.6454204857349396, - 0.644052141904831, - 0.6546962022781372, - 0.6923065900802612, - 0.7110491335391999, - 0.6826674908399581, - 0.6528693199157715, - 0.6401849091053009, - 0.6407050579786301, - 0.650855416059494, - 0.6790278285741806, - 0.698116534948349, - 0.6776199281215668, - 0.6528685808181762, - 0.6507393836975097, - 0.6671623677015305, - 0.7024792492389679, - 0.7253447353839875, - 0.7244221955537796, - 0.6866736263036728, - 0.6515466213226319, - 0.6427395015954971, - 0.6718144714832306, - 0.7107371926307678, - 0.7210724174976348, - 0.7211586207151413, - 0.7147829920053482, - 0.7206076800823211, - 0.7229301333427429, - 0.7093867301940918, - 0.7041779786348343, - 0.7493362188339233, - 0.8120716333389282, - 0.8332126915454865, - 0.8308646500110626, - 0.8769073069095612, - 0.9680914342403412, - 1.011480975151062, - 0.9768010437488556, - 0.8975972950458526, - 0.8439923286437988, - 0.8299280166625976, - 0.8139538288116455, - 0.8385756611824036, - 0.8366521418094635, - 0.7878567963838577, - 0.7510076820850372, - 0.7547931879758835, - 0.7656607836484909, - 0.7494679033756256, - 0.7327106893062592, - 0.7396564334630966, - 0.73271065056324, - 0.7179749429225921, - 0.7050257712602616, - 0.6964254081249237, - 0.6745876044034957, - 0.6624363839626313, - 0.6880493491888047, - 0.7264007061719895, - 0.7452347457408905, - 0.7434715062379837, - 0.7551415503025055, - 0.7904456257820129, - 0.7886773884296417, - 0.7464316815137864, - 0.69652239382267, - 0.7172387897968292, - 0.75717394053936, - 0.7617957413196563, - 0.7754807770252228, - 0.8104186236858368, - 0.8180526196956635, - 0.7979814052581787, - 0.7959037154912949, - 0.7893538355827332, - 0.7676139920949936, - 0.799773633480072, - 0.8452824145555496, - 0.8468213945627212, - 0.8092047810554505, - 0.7753192067146302, - 0.7649718254804612, - 0.7804881304502487, - 0.7780573397874833, - 0.7432805210351944, - 0.706928887963295, - 0.7095518290996552, - 0.7085920184850693, - 0.6830496698617935, - 0.6973980844020844, - 0.7150436282157898, - 0.7286339819431304, - 0.7417789548635483, - 0.7562379658222198, - 0.7647067010402679, - 0.7581758171319961, - 0.7394831448793411, - 0.6940300285816192, - 0.6352118521928787, - 0.6166228860616684, - 0.627872759103775, - 0.6378498852252961, - 0.6467650145292282, - 0.6429554462432862, - 0.6294635981321335, - 0.6366575866937637, - 0.6219821572303772, - 0.5978964447975159, - 0.5832608968019486, - 0.5716780185699463, - 0.5600299298763275, - 0.5594500213861465, - 0.5807505801320076, - 0.5871885776519775, - 0.5821904838085175, - 0.5766518473625183, - 0.5881874144077301, - 0.6095875263214111, - 0.6291725397109985, - 0.6653452217578888, - 0.6959468722343445, - 0.7233096241950989, - 0.7542780697345733, - 0.777977031469345, - 0.767943412065506, - 0.7285108834505081, - 0.6890513956546783, - 0.7090481668710709, - 0.7702255308628082, - 0.8110456526279449, - 0.8557199239730835, - 0.918262106180191, - 0.9749650835990906, - 0.9593616247177124, - 0.9251173198223114, - 0.9313819825649261, - 1.0086020231246948, - 1.11878399848938, - 1.1896239638328552, - 1.2012880206108094, - 1.157138615846634, - 1.0650785923004151, - 1.049596118927002, - 1.1002421796321868, - 1.0755293130874635, - 0.9917493402957916, - 0.946750807762146, - 0.9646785855293274, - 0.9633569419384003, - 0.8965854823589325, - 0.8181917726993561, - 0.8420267164707184, - 0.8402664601802826, - 0.7619178235530853, - 0.7267391890287399, - 0.7294667005538941, - 0.6875259518623352, - 0.6340413808822631, - 0.6362554222345352, - 0.628391632437706, - 0.5933102101087571, - 0.5637644678354263, - 0.5783310025930405, - 0.5824189007282257, - 0.5544556677341461, - 0.5570038497447968, - 0.5928153455257416, - 0.5976971000432968, - 0.5827472776174545, - 0.5643333554267883, - 0.5628248870372772, - 0.5545319840312004, - 0.5418317556381226, - 0.5382843106985092, - 0.5325943678617477, - 0.5260347127914429, - 0.518272103369236, - 0.5134743198752403, - 0.5113602086901665, - 0.5266139462590218, - 0.545049799978733, - 0.5722535789012909, - 0.5755047678947449, - 0.5853244692087174, - 0.6046956688165664, - 0.6191947340965271, - 0.6279240489006043, - 0.6397069811820983, - 0.6504063844680786, - 0.6479985982179641, - 0.6283876866102218, - 0.6078771919012069, - 0.6099762827157974, - 0.6365672290325165, - 0.6757579743862152, - 0.697145813703537, - 0.7087579041719436, - 0.7076454550027848, - 0.7249662846326828, - 0.7696948885917664, - 0.8361124157905578, - 0.8901395618915557, - 0.9179774940013885, - 0.9187683403491974, - 0.9214934289455414, - 0.8827070415019989, - 0.8343904197216034, - 0.8148245096206665, - 0.8409791648387909, - 0.8904165506362915, - 0.9185690879821777, - 0.9254765689373017, - 0.8851468145847321, - 0.8213865280151367, - 0.815155440568924, - 0.841231232881546, - 0.8212539792060852, - 0.7651794373989105, - 0.7420625925064087, - 0.7758002281188965, - 0.806110355257988, - 0.7764109581708908, - 0.7383789777755737, - 0.7172418594360351, - 0.6988955587148666, - 0.6627321034669876, - 0.6276234596967697, - 0.6082972943782806, - 0.5881639897823334, - 0.5900701761245728, - 0.5804521381855011, - 0.5607037216424942, - 0.5280542254447937, - 0.5245784014463425, - 0.533894556760788, - 0.536556962132454, - 0.5247725218534469, - 0.5132707461714745, - 0.5085557654500008, - 0.5167783498764038, - 0.5176541775465011, - 0.516087980568409, - 0.530883076786995, - 0.5684719651937484, - 0.5980974704027175, - 0.6247021287679673, - 0.6511603742837906, - 0.6685822099447251, - 0.6804132133722305, - 0.6934604465961456, - 0.7342664957046509, - 0.7670412570238113, - 0.8142763912677765, - 0.879713636636734, - 0.9876974105834961, - 1.1225249469280243, - 1.233843243122101, - 1.2684378623962402, - 1.219869565963745, - 1.1790372490882874, - 1.2089582681655884, - 1.3465107798576355, - 1.4789336442947387, - 1.4617815732955932, - 1.292415016889572, - 1.1492330193519593, - 1.2469057142734528, - 1.3482511520385743, - 1.2691417813301087, - 1.06055029630661, - 1.0525175154209137, - 1.1435721397399903, - 1.0902958631515502, - 0.9258811354637146, - 0.9104368925094605, - 0.9555498957633972, - 0.8214743673801422, - 0.7119812846183777, - 0.7369705647230148, - 0.713907340168953, - 0.6409475773572921, - 0.6370906233787537, - 0.630405256152153, - 0.565553480386734, - 0.548775976896286, - 0.5446908563375473, - 0.5123485207557679, - 0.49257762879133227, - 0.4833250969648361, - 0.4752670735120773, - 0.45301830768585205, - 0.4404270902276039, - 0.44194032698869706, - 0.4394520431756973, - 0.4268765851855278, - 0.42249987870454786, - 0.4246934622526169, - 0.42897317707538607, - 0.43248281031847, - 0.4460115939378738, - 0.45257976204156875, - 0.46048356741666796, - 0.46483356356620786, - 0.46350676715373995, - 0.4512080818414688, - 0.4351436197757721, - 0.41990880370140077, - 0.41549776047468184, - 0.42291660606861115, - 0.43924840837717055, - 0.47103367149829867, - 0.5064089953899383, - 0.5381872355937958, - 0.5527098953723908, - 0.5497483044862748, - 0.5318982407450676, - 0.5170273154973983, - 0.5272327274084091, - 0.5701744884252549, - 0.6244441092014312, - 0.67083038687706, - 0.7046093940734863, - 0.7258278667926789, - 0.7646638929843903, - 0.8506880104541779, - 0.9841843843460083, - 1.1158862590789795, - 1.2204836547374724, - 1.256867802143097, - 1.2983560502529143, - 1.341460645198822, - 1.4015721797943115, - 1.4716791749000548, - 1.5250521183013916, - 1.5138964176177978, - 1.4794230818748475, - 1.4329972505569457, - 1.4554321408271789, - 1.4646171927452087, - 1.3888872981071472, - 1.3520443439483643, - 1.2814607739448547, - 1.1462307751178742, - 1.0181673109531402, - 1.001715064048767, - 0.9613384306430817, - 0.8423377275466919, - 0.8015448331832886, - 0.8110951662063599, - 0.7531936138868331, - 0.6816860526800156, - 0.6578011393547059, - 0.6509515225887299, - 0.5994882166385651, - 0.5567934393882752, - 0.5647487223148346, - 0.5444354712963104, - 0.5049242705106736, - 0.4837328061461449, - 0.4740568339824677, - 0.4618490353226662, - 0.4459503054618835, - 0.4316329747438431, - 0.4206561058759689, - 0.4177789330482483, - 0.40306991413235665, - 0.3913602590560913, - 0.39242734387516975, - 0.38544244393706323, - 0.37398654967546463, - 0.37011036202311515, - 0.36478892937302587, - 0.3624397225677967, - 0.358087919652462, - 0.3557417906820774, - 0.3568063110113144, - 0.3650853931903839, - 0.37622039020061493, - 0.3917016461491585, - 0.41682122051715853, - 0.44956219494342803, - 0.48624453246593474, - 0.5269971311092376, - 0.5611682742834091, - 0.5883168697357177, - 0.588815701007843, - 0.5813163757324219, - 0.5884172469377518, - 0.63773592710495, - 0.7304430663585663, - 0.8319917380809784, - 0.9067959189414978, - 0.9379345536231994, - 0.8923960030078888, - 0.8290994942188263, - 0.8522223889827728, - 0.9584059655666352, - 1.0594265639781952, - 1.0477275669574737, - 0.9232940018177033, - 0.8334666669368744, - 0.8995363593101502, - 1.0341975271701813, - 1.0984352946281433, - 1.0289806067943572, - 0.9175185620784759, - 0.8818684160709381, - 0.9440162241458893, - 0.9356451869010926, - 0.8141193211078643, - 0.691897588968277, - 0.6967851161956787, - 0.7351093173027039, - 0.6895996779203415, - 0.592356625199318, - 0.5594940960407258, - 0.5848216563463211, - 0.5914616107940673, - 0.527063924074173, - 0.4725052282214165, - 0.4839260920882225, - 0.49485109448432923, - 0.4598635762929916, - 0.4257225915789604, - 0.422939270734787, - 0.42076421827077864, - 0.40884275287389754, - 0.394554939866066, - 0.3848999574780464, - 0.37000311985611917, - 0.3688912525773048, - 0.3673247255384922, - 0.35599634125828744, - 0.34677335172891616, - 0.35412420332431793, - 0.35991835296154023, - 0.36034614145755767, - 0.3617649517953396, - 0.3843336537480354, - 0.4079929679632187, - 0.43083252012729645, - 0.45828541815280915, - 0.49798776805400846, - 0.5353565156459809, - 0.5614788204431533, - 0.5670051366090775, - 0.5682455271482467, - 0.5811404317617417, - 0.6090203136205673, - 0.6764390498399735, - 0.7854372680187225, - 0.9257149338722229, - 1.0525433778762818, - 1.1281746327877045, - 1.089709734916687, - 1.0346720278263093, - 1.075418096780777, - 1.2648297071456909, - 1.4877668023109436, - 1.4596942901611327, - 1.2240916669368744, - 1.1101755321025848, - 1.3227781295776366, - 1.5155254244804381, - 1.304841113090515, - 1.0263804256916047, - 1.0192044913768767, - 1.128665852546692, - 1.0514198005199433, - 0.8391190111637116, - 0.8133561253547669, - 0.8762212872505188, - 0.7986969530582428, - 0.7076266348361969, - 0.7087607264518738, - 0.7020564347505569, - 0.6308431625366211, - 0.5956929355859757, - 0.593017503619194, - 0.5579925984144211, - 0.5270848453044892, - 0.5259971559047699, - 0.5199884057044983, - 0.489234521985054, - 0.47517860382795335, - 0.460308700799942, - 0.4369730934500694, - 0.4176433801651001, - 0.41612870544195174, - 0.399949187040329, - 0.3770468607544899, - 0.3736961603164673, - 0.3727110721170902, - 0.3574979707598686, - 0.3484655790030956, - 0.3470282323658466, - 0.3437895931303501, - 0.33991904035210607, - 0.33797532692551613, - 0.3371958337724209, - 0.34099250510334966, - 0.34463275745511057, - 0.3510752573609352, - 0.3617874994874001, - 0.3823352217674255, - 0.4062046781182289, - 0.4297173634171486, - 0.45405649989843366, - 0.47422653138637544, - 0.47816788852214814, - 0.4739388465881348, - 0.4596996709704399, - 0.45770294070243833, - 0.486851304769516, - 0.5772210657596588, - 0.7160774320363998, - 0.8763268530368805, - 0.9893831193447113, - 0.997031056880951, - 0.8649189710617066, - 0.6908254802227021, - 0.676618805527687, - 0.8708908438682557, - 1.1092240869998933, - 1.1211274683475494, - 0.8982421576976776, - 0.6225287050008774, - 0.6363928049802781, - 0.8317134797573089, - 0.9052062809467316, - 0.7937752604484558, - 0.6926262557506562, - 0.7574534356594086, - 0.9009484767913818, - 0.9387576282024384, - 0.8493660867214203, - 0.7471808135509491, - 0.7586185693740845, - 0.7959505379199981, - 0.7424787759780884, - 0.6414413630962372, - 0.6234972834587097, - 0.6818757832050324, - 0.7031569302082061, - 0.6478342473506927, - 0.5836922317743302, - 0.5957056015729905, - 0.6197606563568115, - 0.5786729723215103, - 0.5378117322921753, - 0.5587155848741532, - 0.5589212864637375, - 0.5334812790155411, - 0.5039658069610595, - 0.4875009924173355, - 0.4783583164215088, - 0.476113124191761, - 0.45641462355852125, - 0.4360408052802086, - 0.44235082864761355, - 0.4547539085149765, - 0.4511116921901703, - 0.43490550071001055, - 0.4289552867412567, - 0.4319844424724579, - 0.4226742282509804, - 0.4139151066541672, - 0.4173383444547653, - 0.41862763464450836, - 0.41294475793838503, - 0.39590578973293306, - 0.3742313548922539, - 0.36116928309202195, - 0.36013965904712675, - 0.36288090199232104, - 0.36563982665538786, - 0.3754000276327133, - 0.38849923610687254, - 0.40500844120979307, - 0.4160619661211967, - 0.4416814520955086, - 0.4697887033224106, - 0.496240097284317, - 0.5053148716688156, - 0.5026972234249115, - 0.5122329592704773, - 0.5330566853284836, - 0.564843812584877, - 0.6246073931455612, - 0.7297291725873947, - 0.8412203788757324, - 0.9027008950710297, - 0.9033255159854889, - 0.8807379961013794, - 0.9374231457710266, - 1.0931373298168183, - 1.2657119512557984, - 1.2498927652835845, - 1.114203119277954, - 1.0430734276771545, - 1.2005578339099885, - 1.4563555121421814, - 1.493838119506836, - 1.4126387119293213, - 1.380348300933838, - 1.4959054231643676, - 1.505047571659088, - 1.3883355855941772, - 1.279796653985977, - 1.2161857783794403, - 1.1098618447780608, - 1.0721042931079865, - 1.0350124299526215, - 0.9270047664642334, - 0.8713662922382355, - 0.8459336042404175, - 0.7649850487709046, - 0.7014477223157882, - 0.6714542239904404, - 0.6457635074853897, - 0.6036174118518829, - 0.5711776971817016, - 0.5415184438228607, - 0.5104528427124023, - 0.490299391746521, - 0.47113156169652937, - 0.4399879977107048, - 0.43254556953907014, - 0.4189869150519371, - 0.3923070654273033, - 0.3897227019071579, - 0.3861208871006966, - 0.36576776802539823, - 0.35724078565835954, - 0.3603637367486954, - 0.3585743188858032, - 0.350508551299572, - 0.3550382614135742, - 0.3643287718296051, - 0.3675972059369087, - 0.3736250549554825, - 0.38515265434980395, - 0.39150881916284563, - 0.3888782858848572, - 0.38025102615356443, - 0.36855041831731794, - 0.3565697818994522, - 0.340372084826231, - 0.3294705539941788, - 0.3360258646309376, - 0.3533492013812065, - 0.3899380177259445, - 0.42492146641016004, - 0.46797030568122866, - 0.5089178055524826, - 0.5526601344347, - 0.5929437100887298, - 0.635574021935463, - 0.7059518784284592, - 0.8012472689151764, - 0.9028978884220124, - 1.0060845136642456, - 1.0484599769115448, - 1.0119255185127258, - 0.963545697927475, - 1.009576427936554, - 1.1152801871299745, - 1.1478433847427367, - 1.033438217639923, - 0.9146737813949585, - 0.9152408540248871, - 0.9824681162834168, - 1.0087187945842744, - 0.9615761876106262, - 0.8582154452800751, - 0.7849400639533997, - 0.8035016000270844, - 0.8363872468471527, - 0.7545672804117203, - 0.64878309071064, - 0.6502778202295303, - 0.6618578135967255, - 0.6018731385469437, - 0.5517163813114166, - 0.5444377064704895, - 0.5317167162895202, - 0.5141408920288086, - 0.4919158637523651, - 0.4776106089353561, - 0.4575826570391655, - 0.4507091253995895, - 0.4300714164972305, - 0.41475939750671387, - 0.4065203920006752, - 0.39943908601999284, - 0.38479680120944976, - 0.36040203273296356, - 0.3616355061531067, - 0.36293294429779055, - 0.34308599680662155, - 0.32913143634796144, - 0.33211092054843905, - 0.3286823868751526, - 0.31940450370311735, - 0.3197910912334919, - 0.3226061582565308, - 0.31944860368967054, - 0.32812375873327254, - 0.3391447447240353, - 0.34136964827775956, - 0.3455098107457161, - 0.35538885146379473, - 0.35939466804265974, - 0.357814633846283, - 0.3566104918718338, - 0.3569605201482773, - 0.3616640418767929, - 0.3743390828371048, - 0.395283105969429, - 0.4310202717781067, - 0.46458202600479126, - 0.505865678191185, - 0.5516860604286193, - 0.5947967588901519, - 0.6404834032058716, - 0.7127276718616485, - 0.7965731620788574, - 0.9248304724693298, - 1.083646011352539, - 1.2733214497566223, - 1.460286271572113, - 1.6236777901649475, - 1.662855315208435, - 1.618550419807434, - 1.5978938698768617, - 1.6781885147094726, - 1.6737827062606812, - 1.6714264392852782, - 1.675185239315033, - 1.6408273696899414, - 1.582885241508484, - 1.497942614555359, - 1.3419700503349303, - 1.2101843357086182, - 1.1524553418159484, - 1.104949951171875, - 1.0261530995368957, - 0.9562713027000427, - 0.9121046364307404, - 0.8079344511032105, - 0.7575930595397949, - 0.7441935539245605, - 0.680336382985115, - 0.6083037376403808, - 0.6258476346731185, - 0.597041517496109, - 0.5152060210704803, - 0.5111585572361946, - 0.5162876904010772, - 0.45943992137908934, - 0.42974443435668946, - 0.4427096635103226, - 0.4183834657073021, - 0.38571447432041167, - 0.3821563348174095, - 0.3776462137699127, - 0.35537511110305786, - 0.34441301599144936, - 0.3378333531320095, - 0.32779020443558693, - 0.31701749190688133, - 0.3103391841053963, - 0.3074251860380173, - 0.297475753724575, - 0.29152745977044103, - 0.2899381309747696, - 0.2842513155192137, - 0.2793302733451128, - 0.2806130856275558, - 0.2743810098618269, - 0.2760586977005005, - 0.2789580594748259, - 0.2831671439111233, - 0.2895765796303749, - 0.3052608951926231, - 0.3208553113043308, - 0.3418800488114357, - 0.36526955366134645, - 0.3884359046816826, - 0.4015618100762367, - 0.4033882036805153, - 0.3865553453564644, - 0.3614234358072281, - 0.3350014969706535, - 0.33246604055166246, - 0.3607856422662735, - 0.42129264026880264, - 0.5055775046348572, - 0.5890890449285507, - 0.6616343766450882, - 0.6828875064849853, - 0.6532419204711915, - 0.6162864089012146, - 0.6458648979663849, - 0.7415768563747406, - 0.8549279153347016, - 0.8634540438652039, - 0.7941697716712952, - 0.7141411662101745, - 0.7485779941082, - 0.8908117592334748, - 0.9821219801902771, - 0.9298048853874207, - 0.7472446203231812, - 0.6703167468309402, - 0.7739657402038574, - 0.8473641395568847, - 0.7628984034061432, - 0.6045501351356506, - 0.556270956993103, - 0.598655241727829, - 0.5935699254274368, - 0.5233108043670655, - 0.46177337467670443, - 0.48754931092262266, - 0.5100973904132843, - 0.4665539115667343, - 0.41878574937582014, - 0.426768034696579, - 0.43095090240240097, - 0.39694454371929166, - 0.37608093172311785, - 0.3869536221027374, - 0.38943723440170286, - 0.3770511269569397, - 0.37068046629428864, - 0.3733102485537529, - 0.37667122334241865, - 0.38182921558618543, - 0.38838844895362856, - 0.38534795194864274, - 0.3791717395186424, - 0.38166533410549164, - 0.375278103351593, - 0.3600695326924324, - 0.34748475402593615, - 0.3486407265067101, - 0.3733155682682991, - 0.41707985997200014, - 0.4739716827869415, - 0.5449355602264404, - 0.6188324451446533, - 0.6728640347719193, - 0.6870231986045837, - 0.6552751272916794, - 0.622422206401825, - 0.6539007365703583, - 0.7709980070590973, - 0.9635567307472229, - 1.131048285961151, - 1.206695520877838, - 1.1203037440776824, - 1.002651619911194, - 1.0279344022274017, - 1.2367713689804076, - 1.397326612472534, - 1.257630032300949, - 0.9527170121669769, - 0.8395133674144745, - 0.9946836113929749, - 1.052185708284378, - 0.8740015268325806, - 0.7248892068862915, - 0.7388023108243942, - 0.7767275452613831, - 0.7139624893665314, - 0.6102383434772491, - 0.573849880695343, - 0.5838884145021439, - 0.5543281078338623, - 0.5074893265962601, - 0.4862943321466446, - 0.47206217646598814, - 0.44338526427745817, - 0.43455306738615035, - 0.4243589714169502, - 0.40340943038463595, - 0.38512859046459197, - 0.37722290903329847, - 0.3729705050587654, - 0.36556523442268374, - 0.3463515296578407, - 0.3354792967438698, - 0.3368616491556168, - 0.33059564232826233, - 0.3221203163266182, - 0.32255781441926956, - 0.32380276918411255, - 0.3193065278232098, - 0.3153960660099983, - 0.3136055499315262, - 0.30909130051732064, - 0.3054603785276413, - 0.30491807758808137, - 0.3104258731007576, - 0.31904214322566987, - 0.33365713655948637, - 0.35425133258104324, - 0.37461975663900376, - 0.38968501389026644, - 0.4080788686871529, - 0.41383600831031797, - 0.4127162367105484, - 0.4072154060006142, - 0.4282978594303131, - 0.46711384654045107, - 0.5374009579420089, - 0.6133497804403305, - 0.6721102148294449, - 0.6957917839288712, - 0.6898057341575623, - 0.6749305337667465, - 0.7357522666454315, - 0.8890698850154877, - 1.0750710606575011, - 1.1959585189819335, - 1.204971820116043, - 1.1398588836193084, - 1.134796679019928, - 1.2631674647331237, - 1.3760085821151733, - 1.3385540664196014, - 1.1900146901607513, - 1.1877062559127807, - 1.2843406558036805, - 1.240121054649353, - 1.0368790805339814, - 0.9500236809253693, - 1.0189404428005218, - 1.00811328291893, - 0.8647436261177063, - 0.7710484385490417, - 0.7668798744678498, - 0.7602288246154785, - 0.6793267369270325, - 0.6162102431058883, - 0.6019076824188232, - 0.567702803015709, - 0.5189408332109451, - 0.4910853892564774, - 0.47535838186740875, - 0.45252891182899474, - 0.43162634819746015, - 0.40378967821598055, - 0.3873733952641487, - 0.3831793949007988, - 0.360243359208107, - 0.3342344895005226, - 0.3344327509403229, - 0.3320871263742447, - 0.3120307594537735, - 0.30402316302061083, - 0.30436801388859747, - 0.2930989019572735, - 0.2868467606604099, - 0.2835364185273647, - 0.28288225159049035, - 0.28445797264575956, - 0.29017872661352156, - 0.29738852456212045, - 0.3081987380981445, - 0.3223800927400589, - 0.33973792344331744, - 0.36156097501516343, - 0.37740153521299363, - 0.3864500686526299, - 0.3888546019792557, - 0.3839797660708427, - 0.3716931015253067, - 0.37090633511543275, - 0.3900298222899437, - 0.4220094829797745, - 0.4868230640888214, - 0.563022667169571, - 0.6384524762630462, - 0.6945815354585647, - 0.7420189499855041, - 0.7726107537746429, - 0.7911987602710724, - 0.8083632409572601, - 0.8406542420387269, - 0.9142170727252961, - 0.9681503117084503, - 1.0058413386344909, - 0.9335249245166779, - 0.8148926734924317, - 0.742716783285141, - 0.7437685787677765, - 0.8028600096702576, - 0.8311604619026184, - 0.7741488635540008, - 0.6914403438568115, - 0.6749284446239472, - 0.7270589530467987, - 0.7568101346492767, - 0.6879276156425476, - 0.5876302659511566, - 0.5947222858667374, - 0.6441300958395004, - 0.6226670473814011, - 0.5555912256240845, - 0.5433761805295945, - 0.5750416189432144, - 0.576631698012352, - 0.5148992568254471, - 0.4637631863355637, - 0.4530047565698624, - 0.44360363483428955, - 0.4099084109067917, - 0.3786065801978111, - 0.3818915203213692, - 0.38218468576669695, - 0.36958150267601014, - 0.35391598343849184, - 0.35104401409626007, - 0.3458336740732193, - 0.33442763686180116, - 0.3313472971320152, - 0.3466111034154892, - 0.34653349220752716, - 0.3307169184088707, - 0.3319353014230728, - 0.3425808221101761, - 0.333999302983284, - 0.31465267539024355, - 0.30490375831723215, - 0.3038927763700485, - 0.2939495392143726, - 0.2898398756980896, - 0.29827300682663915, - 0.3170904487371445, - 0.3434190422296524, - 0.37526718229055406, - 0.4019533649086952, - 0.42253279983997344, - 0.4192999929189682, - 0.40632158517837524, - 0.4025403752923012, - 0.4128170520067215, - 0.4374407112598419, - 0.4801011323928833, - 0.5536758333444596, - 0.6385777115821838, - 0.7252227544784546, - 0.7741346180438995, - 0.7640093863010406, - 0.6894584536552429, - 0.6362612992525101, - 0.6647991001605987, - 0.723698890209198, - 0.7856295704841614, - 0.8022927105426788, - 0.77587131857872, - 0.7317409038543701, - 0.7234323024749756, - 0.7962238609790802, - 0.8610436260700226, - 0.8688757538795471, - 0.8075553178787231, - 0.7366910457611084, - 0.7283179044723511, - 0.7250313937664032, - 0.6804325670003891, - 0.6444609314203262, - 0.6505455911159516, - 0.6626986563205719, - 0.6284667193889618, - 0.6055747300386429, - 0.6298423528671264, - 0.6448617279529572, - 0.5758385479450225, - 0.5180497497320176, - 0.5253225207328797, - 0.5158556550741196, - 0.4808030813932419, - 0.46364760100841523, - 0.4722648024559021, - 0.4631861925125122, - 0.46053210496902464, - 0.4784420281648636, - 0.47384339570999146, - 0.47593404054641725, - 0.4888905793428421, - 0.49509610831737516, - 0.46827475130558016, - 0.4399541229009628, - 0.41413474828004837, - 0.40642632693052294, - 0.38892350494861605, - 0.3675315141677856, - 0.3547749102115631, - 0.3549701705574989, - 0.3600294753909111, - 0.357920715212822, - 0.34805499017238617, - 0.3381335407495499, - 0.33042000979185104, - 0.32840596586465837, - 0.3274180993437767, - 0.33420115411281587, - 0.3398719444870949, - 0.3523340106010437, - 0.3646543949842453, - 0.39009658694267274, - 0.4374046832323074, - 0.5039769470691681, - 0.5900344461202621, - 0.696421080827713, - 0.7917866408824921, - 0.8515917241573334, - 0.8782092332839966, - 0.8807774126529694, - 0.8913617610931397, - 0.9485019028186799, - 1.0726216793060304, - 1.1505352139472962, - 1.1191594421863555, - 1.0580397248268127, - 1.0772998452186584, - 1.109095847606659, - 1.092216169834137, - 1.0111975431442262, - 0.9604027807712555, - 1.0155509114265442, - 1.0336537480354309, - 0.9547661244869232, - 0.8875714480876923, - 0.9290646910667419, - 0.9636854410171509, - 0.8485688269138336, - 0.7552680373191833, - 0.7796143233776093, - 0.7298737645149231, - 0.637499475479126, - 0.6023184716701507, - 0.5939729779958725, - 0.573866018652916, - 0.5248930484056473, - 0.4753833830356598, - 0.45770288705825807, - 0.4611763536930084, - 0.4350838094949722, - 0.4031330764293671, - 0.3942326992750168, - 0.38251863420009613, - 0.3632436111569405, - 0.3412631630897522, - 0.3383869618177414, - 0.3392110288143158, - 0.3258081376552582, - 0.31064981371164324, - 0.3026484340429306, - 0.299324606359005, - 0.29042104482650755, - 0.2823310121893883, - 0.2798397235572338, - 0.28128688111901284, - 0.28049051091074945, - 0.27367166727781295, - 0.27426144704222677, - 0.2791450805962086, - 0.2801328539848328, - 0.2780385583639145, - 0.2801283232867718, - 0.2816675752401352, - 0.2774624779820442, - 0.27344629243016244, - 0.27166045755147933, - 0.2742787428200245, - 0.2812007822096348, - 0.29342741668224337, - 0.31242736876010896, - 0.3392329692840576, - 0.37424378991127016, - 0.4111593708395958, - 0.43971431255340576, - 0.44636439681053164, - 0.4432325214147568, - 0.44435366690158845, - 0.47005694210529325, - 0.5469534426927567, - 0.6538516879081726, - 0.7885883033275605, - 0.8963908553123474, - 0.9695939958095551, - 1.0033839702606202, - 1.0791128337383271, - 1.2654422760009765, - 1.4816307067871093, - 1.591531217098236, - 1.4318187236785889, - 1.167212998867035, - 1.1855432212352752, - 1.3845335960388183, - 1.4286988139152528, - 1.18825004696846, - 1.0498288035392762, - 1.236842805147171, - 1.3545477747917176, - 1.1502144634723663, - 0.9730778515338898, - 1.0233645260334014, - 1.041237825155258, - 0.8161557495594025, - 0.7190600454807281, - 0.7862183809280395, - 0.7451225876808166, - 0.5969273537397385, - 0.5909290373325348, - 0.6330137521028518, - 0.5353710025548934, - 0.4800648272037506, - 0.4944939285516739, - 0.45737929046154024, - 0.41433496624231336, - 0.4153385668992996, - 0.4057614654302597, - 0.37284304946660995, - 0.36145542860031127, - 0.3599374294281006, - 0.34041027128696444, - 0.3122218266129494, - 0.3188635766506195, - 0.3138063088059425, - 0.29494686648249624, - 0.2887058205902576, - 0.29406622499227525, - 0.2904099129140377, - 0.27757842242717745, - 0.27562983706593513, - 0.2789479747414589, - 0.27093940079212187, - 0.26811101362109185, - 0.26990904808044436, - 0.2715438060462475, - 0.2722439795732498, - 0.2687490969896317, - 0.2671689003705978, - 0.26640784218907354, - 0.26331903487443925, - 0.26119909062981606, - 0.2656140312552452, - 0.2748949758708477, - 0.29287184327840804, - 0.3231247395277023, - 0.3639384791254997, - 0.4103771194815636, - 0.45869935154914854, - 0.5103134512901306, - 0.5507665574550629, - 0.5618556022644043, - 0.5342989951372147, - 0.49712648093700407, - 0.4940708100795746, - 0.5662156522274018, - 0.6926608562469483, - 0.7866500794887543, - 0.799033010005951, - 0.7240207850933075, - 0.6661258339881897, - 0.7403213202953338, - 0.9079237401485443, - 1.0422283589839936, - 1.0201230943202972, - 0.8816939890384674, - 0.7887289762496948, - 0.8574354350566864, - 0.9649591445922852, - 0.9529755651950836, - 0.8067626059055328, - 0.7399162352085114, - 0.7821280002593994, - 0.7749364852905274, - 0.6830735176801681, - 0.645102196931839, - 0.653356271982193, - 0.6129016250371933, - 0.5438651889562607, - 0.5127166897058487, - 0.4846232831478119, - 0.45781455039978025, - 0.43889777064323426, - 0.4333676755428314, - 0.42612569630146024, - 0.3913870587944984, - 0.365165413916111, - 0.3654032379388809, - 0.3562377214431763, - 0.33054653853178023, - 0.32793804109096525, - 0.3340540587902069, - 0.3290801703929901, - 0.31767540127038957, - 0.31297404915094373, - 0.3156334266066551, - 0.31733035743236543, - 0.3122267261147499, - 0.307887926697731, - 0.312763474881649, - 0.32143796533346175, - 0.31642860025167463, - 0.3097711756825447, - 0.31761784106492996, - 0.31781631261110305, - 0.3112304866313934, - 0.31433880925178526, - 0.3344725474715233, - 0.3561955183744431, - 0.38550020307302474, - 0.4333444133400917, - 0.4878681659698486, - 0.5373563766479492, - 0.5832806140184402, - 0.5958291679620743, - 0.5698140114545822, - 0.5388488292694091, - 0.5389089405536651, - 0.5878059357404709, - 0.6550567358732223, - 0.6917995750904083, - 0.683859395980835, - 0.6287919729948044, - 0.5661948055028916, - 0.555549481511116, - 0.6142742067575455, - 0.6676158607006073, - 0.6606825560331344, - 0.5841848880052567, - 0.5604211062192916, - 0.5805060803890228, - 0.5972177296876907, - 0.60666743516922, - 0.6003314256668091, - 0.567976775765419, - 0.5516445875167847, - 0.5487223654985428, - 0.5640799075365066, - 0.5599477618932724, - 0.5594143450260163, - 0.5592233747243881, - 0.5838310301303864, - 0.592966827750206, - 0.5631468206644058, - 0.5087072938680649, - 0.4788720220327377, - 0.464291849732399, - 0.46700400710105894, - 0.4603671729564667, - 0.4479611486196518, - 0.43856020271778107, - 0.43885986506938934, - 0.4501149356365204, - 0.43708360493183135, - 0.4130543977022171, - 0.4153062433004379, - 0.4369759887456894, - 0.474190554022789, - 0.4803548067808151, - 0.4538000911474228, - 0.4551152467727661, - 0.4791929841041565, - 0.49200098514556884, - 0.48182989060878756, - 0.47477239966392515, - 0.4928437083959579, - 0.5208484649658203, - 0.5274220138788224, - 0.5157700479030609, - 0.5007043987512588, - 0.5009508788585663, - 0.5037902057170868, - 0.4787206619977951, - 0.448614114522934, - 0.46061535477638244, - 0.4961344301700592, - 0.4964017242193222, - 0.4846672654151917, - 0.47923160493373873, - 0.48965572118759154, - 0.4900709956884384, - 0.4645839512348175, - 0.46820906102657317, - 0.4991165041923523, - 0.5073166728019715, - 0.49461431205272677, - 0.48293046057224276, - 0.4983181893825531, - 0.5238622933626175, - 0.527123486995697, - 0.5055805683135987, - 0.48756116032600405, - 0.4812294185161591, - 0.4876221001148224, - 0.5118038952350616, - 0.5523794978857041, - 0.5749737232923507, - 0.5705040961503982, - 0.5783103615045547, - 0.5941709488630295, - 0.6398258537054062, - 0.6759518682956696, - 0.7058440029621125, - 0.7472418010234833, - 0.7890769422054291, - 0.7647875368595123, - 0.6713888853788376, - 0.6121802717447281, - 0.6605994999408722, - 0.7575083136558532, - 0.7893346071243286, - 0.7410562753677368, - 0.7062393844127655, - 0.734387332201004, - 0.7412600815296173, - 0.7440441071987152, - 0.7676034927368164, - 0.795200377702713, - 0.7490828990936279, - 0.6726550340652466, - 0.6225138694047928, - 0.605476725101471, - 0.5970238715410232, - 0.5721303313970566, - 0.5491181135177612, - 0.5125015199184417, - 0.4720955818891525, - 0.47093282639980316, - 0.4817874789237976, - 0.45093053579330444, - 0.3889967054128647, - 0.3851795822381973, - 0.39886766523122785, - 0.3764644846320152, - 0.3583686724305153, - 0.36280001550912855, - 0.3557875230908394, - 0.3279496356844902, - 0.3220797136425972, - 0.3360698506236076, - 0.33128311634063723, - 0.30856952667236326, - 0.2986443996429443, - 0.29192558825016024, - 0.28107172399759295, - 0.2748818889260292, - 0.28499169647693634, - 0.29391765892505645, - 0.28489173352718355, - 0.2846057638525963, - 0.293948033452034, - 0.29609152525663374, - 0.29216736406087873, - 0.2957721084356308, - 0.3127504661679268, - 0.3293632879853249, - 0.3534708499908447, - 0.3927068218588829, - 0.44364264905452727, - 0.4915389895439148, - 0.5566738724708558, - 0.6137115240097046, - 0.6749362289905548, - 0.6931160628795624, - 0.7042116284370422, - 0.7381099104881287, - 0.8506580352783203, - 0.9775778114795685, - 1.0713247954845428, - 1.1476882636547088, - 1.1401969730854034, - 1.144999659061432, - 1.2449190258979796, - 1.3932796537876129, - 1.4385246515274048, - 1.332679283618927, - 1.2053309202194213, - 1.2975974082946777, - 1.4620519161224366, - 1.2922931790351868, - 0.9720860302448273, - 0.9704601347446442, - 1.0651813626289368, - 0.9852335929870606, - 0.8570802986621857, - 0.870656305551529, - 0.8784905195236206, - 0.7852933943271637, - 0.7209566354751586, - 0.716817992925644, - 0.6335773199796677, - 0.5518062323331833, - 0.5527550429105759, - 0.5252146333456039, - 0.48419634699821473, - 0.47626776695251466, - 0.45140029191970826, - 0.422847843170166, - 0.3954705983400345, - 0.37334502935409547, - 0.35124550610780714, - 0.32766148149967195, - 0.33484840095043183, - 0.33018490523099897, - 0.31436393558979037, - 0.3002988204360008, - 0.29711709916591644, - 0.28730210065841677, - 0.26969398111104964, - 0.2677811861038208, - 0.2669936798512936, - 0.25533326268196105, - 0.25410120040178297, - 0.2526359334588051, - 0.24063546657562257, - 0.2313494510948658, - 0.2288045920431614, - 0.22441329434514046, - 0.2170393370091915, - 0.21555451974272727, - 0.2184666506946087, - 0.21624059677124025, - 0.2166740484535694, - 0.2194179981946945, - 0.22645401135087012, - 0.23186134472489356, - 0.24227195382118225, - 0.2562420882284641, - 0.2741270914673805, - 0.2851672753691673, - 0.2983970656991005, - 0.3071825623512268, - 0.32013514786958697, - 0.3329455018043518, - 0.35769898891448976, - 0.40340639352798463, - 0.47623351514339446, - 0.5665611147880554, - 0.6618478536605835, - 0.7530810713768006, - 0.8211942434310913, - 0.889997786283493, - 0.9996739208698273, - 1.1892634749412536, - 1.4388500928878785, - 1.6926288843154906, - 1.855584156513214, - 1.8668896675109863, - 1.8185894966125489, - 1.8432738423347472, - 1.936434268951416, - 1.864944839477539, - 1.6820109009742736, - 1.5924603462219238, - 1.5095309138298034, - 1.4026609778404235, - 1.2676602005958557, - 1.1505461573600768, - 1.0753908455371857, - 1.0096291959285737, - 0.9568646728992463, - 0.8754145860671997, - 0.821177077293396, - 0.7796146035194397, - 0.7285561859607697, - 0.6654298573732376, - 0.6112215995788575, - 0.5957189589738846, - 0.5464553534984589, - 0.48612224161624906, - 0.46902536451816557, - 0.46124182641506195, - 0.40012801587581637, - 0.3918775588274002, - 0.39663569033145907, - 0.35037038624286654, - 0.33541600704193114, - 0.332207053899765, - 0.3072828009724617, - 0.2954170249402523, - 0.2893986165523529, - 0.27890507131814957, - 0.2632737994194031, - 0.25856989771127703, - 0.24949661269783974, - 0.23982764184474945, - 0.2356959067285061, - 0.22882076650857924, - 0.2229366846382618, - 0.21956440024077892, - 0.21671008355915547, - 0.21258928515017034, - 0.21147615611553192, - 0.212841634452343, - 0.21264724358916282, - 0.21512768231332302, - 0.21976849287748337, - 0.22404806017875672, - 0.23147803843021392, - 0.23972310423851012, - 0.24941079840064048, - 0.2522536739706993, - 0.25379057973623276, - 0.24929823428392411, - 0.23873163089156152, - 0.22447048872709274, - 0.21583542302250863, - 0.21825689896941186, - 0.22884457558393478, - 0.24747403413057328, - 0.2710544914007187, - 0.2890531852841377, - 0.2948279336094856, - 0.29156398475170137, - 0.28624835759401324, - 0.28371634632349013, - 0.30335692316293716, - 0.3498657375574112, - 0.4138931483030319, - 0.46724800765514374, - 0.4853957623243332, - 0.4465659558773041, - 0.38893053233623504, - 0.3642782747745514, - 0.41685833036899567, - 0.5159774035215378, - 0.5980193227529526, - 0.6197224676609039, - 0.5712565958499909, - 0.525668415427208, - 0.5608939975500107, - 0.6675250917673111, - 0.7551457643508911, - 0.7505357265472412, - 0.6669686913490296, - 0.5978094428777695, - 0.6296443581581116, - 0.7291391849517822, - 0.7610157430171967, - 0.7191725432872772, - 0.6445706725120545, - 0.6082269966602325, - 0.6149825572967529, - 0.6108807802200318, - 0.6022762298583985, - 0.5621136039495468, - 0.5401928305625916, - 0.5568743616342544, - 0.5951102912425995, - 0.6028694540262223, - 0.5652178645133972, - 0.5332578152418137, - 0.5415228605270386, - 0.5243015766143799, - 0.4858301252126694, - 0.45533705651760104, - 0.46715467870235444, - 0.48215970695018767, - 0.4664222300052643, - 0.4469720095396042, - 0.43722899854183195, - 0.40718187391757965, - 0.36911685168743136, - 0.3631953999400139, - 0.3668419733643532, - 0.3369017392396927, - 0.3153063327074051, - 0.3188708707690239, - 0.3166005626320839, - 0.2926956877112389, - 0.2762969255447388, - 0.2796331912279129, - 0.273814956843853, - 0.2569230228662491, - 0.2533097006380558, - 0.2615950107574463, - 0.26642745584249494, - 0.26547088623046877, - 0.26630183309316635, - 0.2725201189517975, - 0.278560408949852, - 0.28137278109788894, - 0.28935251086950303, - 0.3013209834694862, - 0.3209945157170296, - 0.3386105015873909, - 0.3609264373779297, - 0.3994505047798157, - 0.44168453514575956, - 0.4805861175060272, - 0.5051202237606048, - 0.5222762435674667, - 0.5373518377542496, - 0.5453010857105255, - 0.5771409630775451, - 0.6288505971431733, - 0.701585876941681, - 0.7890114784240723, - 0.8530969560146332, - 0.8462843596935272, - 0.7978888630867005, - 0.7791611552238464, - 0.8656698822975158, - 0.9607847094535827, - 1.0077334225177765, - 0.9647906720638275, - 0.8889415919780731, - 0.8659649789333344, - 0.8867884635925293, - 0.8865007519721985, - 0.8036786556243897, - 0.6964731007814408, - 0.6382821679115296, - 0.6613509893417359, - 0.6836510300636292, - 0.6194793730974197, - 0.5480272024869919, - 0.5659119188785553, - 0.5822810798883438, - 0.5485320091247559, - 0.5140937715768814, - 0.49998207688331603, - 0.47394846975803373, - 0.4424175888299942, - 0.4433439612388611, - 0.45214917361736295, - 0.43273785412311555, - 0.4008155882358551, - 0.39727061092853544, - 0.4067161947488785, - 0.38727728128433225, - 0.3740096837282181, - 0.3650399804115295, - 0.35360445380210875, - 0.3465767130255699, - 0.33998021185398103, - 0.3273750752210617, - 0.3333735838532448, - 0.3436181664466858, - 0.3338995486497879, - 0.3172823116183281, - 0.30512297451496123, - 0.2901584833860397, - 0.281554639339447, - 0.27592800706624987, - 0.2644056618213654, - 0.2578366450965405, - 0.2613773360848427, - 0.26292041391134263, - 0.25597560703754424, - 0.24491552859544755, - 0.2353518284857273, - 0.23101874589920043, - 0.23544034883379936, - 0.24833333864808083, - 0.2551083266735077, - 0.26072931587696074, - 0.26081014424562454, - 0.2615995705127716, - 0.2658173978328705, - 0.2754471316933632, - 0.29121547639369966, - 0.31727645844221114, - 0.3465066909790039, - 0.3691548690199852, - 0.39131647646427153, - 0.403836715221405, - 0.4183057755231857, - 0.4241948425769806, - 0.45198512971401217, - 0.5247160047292709, - 0.6392457544803619, - 0.8049846947193146, - 1.025309681892395, - 1.2622893929481507, - 1.4620833158493043, - 1.6053849935531617, - 1.6396379590034484, - 1.639956569671631, - 1.7404609441757202, - 2.033405578136444, - 2.2168803811073303, - 1.9668418407440185, - 1.7817565202713013, - 1.8774321794509887, - 1.8308269023895263, - 1.6194848418235779, - 1.463859224319458, - 1.462375247478485, - 1.3333835363388062, - 1.1411406934261321, - 1.1190584540367126, - 1.078059470653534, - 0.9111987233161927, - 0.8525764882564545, - 0.8350849866867065, - 0.7226251602172852, - 0.6829486608505249, - 0.6346080482006073, - 0.6131304711103439, - 0.5718154966831207, - 0.4977082759141922, - 0.48600523769855497, - 0.4633071213960648, - 0.41281897127628325, - 0.4000555634498596, - 0.38928342461585996, - 0.36207934468984604, - 0.3343664065003395, - 0.3310217157006264, - 0.31262191832065583, - 0.28772501423954966, - 0.2814571797847748, - 0.27325831577181814, - 0.2551972009241581, - 0.24979064539074897, - 0.24299372211098672, - 0.23053619340062143, - 0.22803155854344367, - 0.22147351428866385, - 0.21266837120056153, - 0.2088521607220173, - 0.20501634925603868, - 0.20395949780941008, - 0.2031509444117546, - 0.20505533330142497, - 0.20792848542332648, - 0.21127758026123047, - 0.21936751231551171, - 0.22565086632966996, - 0.22975801080465316, - 0.23258068189024925, - 0.23431222438812255, - 0.2323612242937088, - 0.22783652395009996, - 0.2194211080670357, - 0.21216436922550203, - 0.20764677077531815, - 0.20719504579901696, - 0.21388047188520432, - 0.22562675923109055, - 0.24616920202970505, - 0.2673160031437874, - 0.29493960440158845, - 0.31975836157798765, - 0.3395192578434944, - 0.35344290137290957, - 0.3625212848186493, - 0.3634933218359947, - 0.36001681834459304, - 0.3656355977058411, - 0.37907234132289885, - 0.4120479583740234, - 0.46754030585289, - 0.5115124821662903, - 0.5371607720851899, - 0.5352739572525025, - 0.5354295700788498, - 0.5504543632268906, - 0.5823382079601288, - 0.6411938786506652, - 0.7195909321308136, - 0.7748053908348084, - 0.772534042596817, - 0.7331730663776398, - 0.6809875965118408, - 0.6915687203407288, - 0.7259284377098083, - 0.7197559535503387, - 0.6354617208242417, - 0.5271465986967087, - 0.5163205444812775, - 0.5675935834646225, - 0.5617192566394806, - 0.4689660370349884, - 0.405907541513443, - 0.4454126298427582, - 0.4814462214708328, - 0.4219195693731308, - 0.357954303920269, - 0.3546947106719017, - 0.3821937322616577, - 0.37795772552490237, - 0.3416818857192993, - 0.3249330535531044, - 0.3445943221449852, - 0.36098681539297106, - 0.3645342454314232, - 0.34504061192274094, - 0.335425166785717, - 0.33425325304269793, - 0.3176060229539871, - 0.2872208520770073, - 0.2624219462275505, - 0.2606909438967705, - 0.26092361807823183, - 0.2609218046069145, - 0.2638423040509224, - 0.26455345153808596, - 0.26644419729709623, - 0.2697565943002701, - 0.2645892113447189, - 0.2592473775148392, - 0.26522259712219237, - 0.2746989890933037, - 0.27457225918769834, - 0.27343582510948183, - 0.2890997901558876, - 0.30757182091474533, - 0.3121970444917679, - 0.3083022475242615, - 0.3144469350576401, - 0.3348166778683662, - 0.3607351094484329, - 0.38470408171415327, - 0.4204678922891617, - 0.4720053791999817, - 0.5333439022302627, - 0.5825559437274933, - 0.6274979382753372, - 0.6632000386714936, - 0.6779677927494049, - 0.7099767804145813, - 0.7543754339218139, - 0.8175053775310517, - 0.8732162237167358, - 0.9431611835956574, - 0.9758579730987549, - 0.9865128099918365, - 0.9198575615882874, - 0.9029589474201203, - 0.9440954685211181, - 1.0414978384971618, - 1.0460255920886994, - 0.9458453834056855, - 0.8885791063308716, - 0.9174991309642792, - 0.9229703843593597, - 0.8282654702663421, - 0.7520421743392944, - 0.7681989192962646, - 0.7470012664794922, - 0.695374721288681, - 0.6468002915382385, - 0.6242484837770462, - 0.5787987887859345, - 0.543267571926117, - 0.49884668588638303, - 0.4565178632736206, - 0.4431102365255356, - 0.4308061420917511, - 0.38444181382656095, - 0.37152228504419327, - 0.36921226531267165, - 0.33596282452344894, - 0.31420128494501115, - 0.31199131309986117, - 0.295539365708828, - 0.2765576124191284, - 0.27287003844976426, - 0.26761304438114164, - 0.2550047546625137, - 0.24491003006696702, - 0.2409455306828022, - 0.23641311675310134, - 0.23297493606805803, - 0.22969671115279197, - 0.23734987154603004, - 0.23710916340351104, - 0.2394520379602909, - 0.24961090236902236, - 0.25056576132774355, - 0.24845954030752182, - 0.2510431528091431, - 0.2434496685862541, - 0.23385341390967368, - 0.22769773602485657, - 0.22526873350143434, - 0.2209469385445118, - 0.22121271044015883, - 0.22804592922329903, - 0.23158778846263886, - 0.2323795884847641, - 0.23388479202985762, - 0.24175555855035782, - 0.2515017926692963, - 0.26596446335315704, - 0.29185212701559066, - 0.3263387233018875, - 0.362540976703167, - 0.3858246684074402, - 0.396141505241394, - 0.38717230707406997, - 0.3737470418214798, - 0.38914266526699065, - 0.45651971995830537, - 0.5651315569877624, - 0.6896934092044831, - 0.7940095007419586, - 0.8476512432098389, - 0.8963506639003753, - 0.9796917796134949, - 1.137997168302536, - 1.3336819767951966, - 1.4096672415733338, - 1.403540575504303, - 1.3557273030281067, - 1.3749690294265746, - 1.44754239320755, - 1.3956940650939942, - 1.208337390422821, - 1.1558860182762145, - 1.2803570747375488, - 1.2376350939273835, - 1.0317338705062866, - 0.9700378179550171, - 0.9794680416584015, - 0.8749449372291564, - 0.7777482748031617, - 0.7580275177955628, - 0.7252788364887237, - 0.6748434960842132, - 0.6162099540233612, - 0.5812515020370483, - 0.5493344962596893, - 0.5084161907434464, - 0.48275298476219175, - 0.46774948537349703, - 0.43822037875652314, - 0.42200722098350524, - 0.40051772594451907, - 0.37771618366241455, - 0.35495553761720655, - 0.33039217442274094, - 0.31337388753890993, - 0.30216170102357864, - 0.2794994816184044, - 0.2687867730855942, - 0.2643651232123375, - 0.2442920833826065, - 0.22885335609316826, - 0.23358162567019464, - 0.22672480195760727, - 0.2172456093132496, - 0.21582448557019235, - 0.2107196182012558, - 0.2064526118338108, - 0.20348112359642984, - 0.20397895872592925, - 0.2056560792028904, - 0.21160959377884864, - 0.21686005666851998, - 0.22949846014380454, - 0.24569811671972275, - 0.2656831979751587, - 0.2821864515542984, - 0.2922691464424133, - 0.2885116055607796, - 0.2750774249434471, - 0.2559429869055748, - 0.24386780858039855, - 0.2510197803378105, - 0.27858920097351075, - 0.32710793912410735, - 0.37409297525882723, - 0.42012540996074677, - 0.4306447833776474, - 0.3917897939682007, - 0.3177041158080101, - 0.2643290892243385, - 0.27303200513124465, - 0.33248295933008193, - 0.40254553854465486, - 0.44197159111499784, - 0.43982199430465696, - 0.4001505583524704, - 0.37010863721370696, - 0.38362921923398974, - 0.4523943841457367, - 0.5349240571260452, - 0.5814859330654144, - 0.5592059999704361, - 0.4961836516857147, - 0.46122353076934813, - 0.4973589777946472, - 0.5721513420343399, - 0.6281255662441254, - 0.6329095304012299, - 0.6023680359125138, - 0.5991127550601959, - 0.6589317589998245, - 0.7248336434364319, - 0.7474302351474762, - 0.7343208312988281, - 0.7159468352794647, - 0.7067074000835418, - 0.7537506401538849, - 0.8093077838420868, - 0.7863859355449676, - 0.6932488203048706, - 0.6486768931150436, - 0.6888243287801743, - 0.6916793644428253, - 0.6474492728710175, - 0.6238907694816589, - 0.6678115725517273, - 0.6665069818496704, - 0.5904049158096314 - ] - } - ], - "layout": { - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - } - } - }, - "text/html": [ - "
\n", - " \n", - " \n", - "
\n", - " \n", - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import plotly.graph_objects as go\n", - "\n", - "fig = go.Figure(data=go.Scatter(x=np.arange(5000), y=losses))\n", - "fig.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.4" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/layer_to_layer_pytorch/__init__.py b/layer_to_layer_pytorch/__init__.py index d097a0d..d9d7606 100644 --- a/layer_to_layer_pytorch/__init__.py +++ b/layer_to_layer_pytorch/__init__.py @@ -13,5 +13,4 @@ __version__ = "unknown" from layer_to_layer_pytorch.l2l import Layer2Layer -from layer_to_layer_pytorch.loss import L2LLoss -from layer_to_layer_pytorch.types import Device, LossFn, TensorOrTensorArray +from layer_to_layer_pytorch.types import Criterion, Device diff --git a/layer_to_layer_pytorch/__main__.py b/layer_to_layer_pytorch/__main__.py index bdf62cc..038ee72 100644 --- a/layer_to_layer_pytorch/__main__.py +++ b/layer_to_layer_pytorch/__main__.py @@ -6,7 +6,6 @@ from enum import Enum import typer -from rich.console import Console from layer_to_layer_pytorch import __version__ @@ -15,15 +14,12 @@ help="PyTorch implementation of L2L execution algorithm", add_completion=False, ) -console = Console() def version_callback(value: bool): """Prints the version of the package.""" if value: - console.print( - f"[yellow]layer-to-layer-pytorch[/] version: [bold blue]{__version__}[/]" - ) + print(f"layer-to-layer-pytorch version: {__version__}") raise typer.Exit() diff --git a/layer_to_layer_pytorch/l2l.py b/layer_to_layer_pytorch/l2l.py index 495420b..672415a 100644 --- a/layer_to_layer_pytorch/l2l.py +++ b/layer_to_layer_pytorch/l2l.py @@ -1,224 +1,178 @@ from typing import List, Optional -import copy - -import numpy as np import torch from torch import nn -from layer_to_layer_pytorch.helpers import enumerator, iterator, zipper -from layer_to_layer_pytorch.loss import L2LLoss -from layer_to_layer_pytorch.types import Device, LossFn, TensorOrTensorArray +from layer_to_layer_pytorch.helpers import enumerator +from layer_to_layer_pytorch.types import Criterion, Device class Layer2Layer: def __init__( self, model: nn.Module, - layers_attr: str, microbatch_size: Optional[int], + layers_attr: str = "layers", + mixed_precision: bool = False, + loss_scale: float = 128.0, # 2**7 gpu_device: Device = "cuda", verbose: bool = False, ): layers = getattr(model, layers_attr, None) if (layers is None) or (not isinstance(layers, nn.ModuleList)): raise ValueError( - f"Model must contain `nn.ModuleList` in attribute `{layers_attr}`" + f"Model must contain `nn.ModuleList` in attribute `{layers_attr}`." + f"Got {type(layers)}" ) if (microbatch_size is not None) and (microbatch_size < 0): raise ValueError( - f"Size of a microbatch must be greater than zero. Got {microbatch_size}" + f"Size of a microbatch must be greater than zero." + f"Got microbatch_size={microbatch_size}" + ) + + if mixed_precision and loss_scale <= 0.0: + raise ValueError( + f"Loss scale cannot less or equal to zero if mixed_precision is True." + f"Got loss_scale={loss_scale}" ) - self.main_model: nn.Module = model.cpu() + # model stuff self.layers_attr: str = layers_attr + self.model: nn.Module = model.cpu() + self._master_params = self._copy_master_params(self.model) + + # hyperparams self.microbatch_size: Optional[int] = microbatch_size self.gpu_device: Device = gpu_device + # fp16 stuff + self.mixed_precision = mixed_precision + self.loss_scale = loss_scale + + if self.mixed_precision: + self.model.half() + self.verbose: bool = verbose - self.num_layers: int = len(layers) + # inner stuff + self._num_layers: int = len(layers) + self._activations: List[torch.Tensor] = [] + self._grads: List[torch.Tensor] = [] - self._activations: List[TensorOrTensorArray] = [ - [] for _ in range(self.num_layers) - ] - self._grads: List[TensorOrTensorArray] = [ - [] for _ in range(self.num_layers) - ] + @property + def num_layers(self) -> int: + return self._num_layers - def _reset_activations(self): - self._activations = [[] for _ in range(self.num_layers)] - self._grads = [[] for _ in range(self.num_layers)] + @property + def main_params(self): + return self._master_params def zero_grad(self) -> None: - for param in self.main_model.parameters(): - param.grad = None + for model_param, master_param in zip( + self.model.parameters(), self._master_params + ): + model_param.grad = None + master_param.grad = None self._reset_activations() - def _zero_layer_grad(self, layer: nn.Module) -> None: - for param in layer.parameters(): - param.grad = None + def update_main_model_params(self): + for model_params, master_params in zip( + self.model.parameters(), self._master_params + ): + model_params.data.copy_(master_params.data) @torch.no_grad() def forward(self, batch: torch.Tensor, **kwargs) -> torch.Tensor: - layers: nn.ModuleList = self._get_layers() + if self.mixed_precision: + self._activations.append(batch.half()) + else: + self._activations.append(batch) - # layer by layer forward pass. only activations are stored - for idx, l in enumerator( - layers, + for idx, layer in enumerator( + self._get_layers(), verbose=self.verbose, desc="Layers", total=self.num_layers, leave=False, ): - layer = copy.deepcopy(l).to(self.gpu_device) - - input: torch.Tensor - if idx == 0: - input = batch - else: - input = self._activations[idx - 1] - + layer.to(self.gpu_device) + input: torch.Tensor = self._activations[idx] microbatch_size = self._get_microbatch_size(input) - num_steps: int = input.shape[0] // microbatch_size - - for microbatch in iterator( - input.split(microbatch_size), - verbose=False, # self.verbose, - desc="Microbatching", - total=num_steps, - leave=False, - ): - microbatch = microbatch.to(self.gpu_device) - activation: torch.Tensor = layer(microbatch, **kwargs) - self._activations[idx].append(activation.cpu()) + layer_activations: List[torch.Tensor] = [] + for microbatch in input.split(microbatch_size): + activation: torch.Tensor = layer( + microbatch.to(self.gpu_device), **kwargs + ) + + layer_activations.append(activation.cpu()) - self._activations[idx] = torch.cat(self._activations[idx], dim=0) + layer.cpu() + self._activations.append(torch.cat(layer_activations, dim=0)) return self._activations[-1] - def backward( - self, - batch: torch.Tensor, - target: torch.Tensor, - loss_fn: LossFn, - loss_kwargs: dict = None, - # skip_last_layer: bool = False, - **forward_kwargs, - ) -> Optional[torch.Tensor]: - if loss_kwargs is None: - loss_kwargs = {} - # layer by layer backward pass (in reverse order) - layers: nn.ModuleList = self._get_layers() - losses: List[torch.Tensor] = [] - num_steps_in_loss: int = 1 - - for idx, l in enumerator( - reversed(layers), - verbose=self.verbose, - desc="Reverse Layers", - total=self.num_layers, - leave=False, - ): - self._zero_layer_grad(l) - layer: nn.Module = copy.deepcopy(l).to(self.gpu_device) - f_idx: int = self.num_layers - idx - 1 - - # TODO: preserve re-calculations - # if idx == 0 and skip_last_layer: - # microbatch_size = self._get_microbatch_size( - # self._activations[f_idx] - # ) - # num_steps: int = ( - # self._activations[f_idx].shape[0] // microbatch_size - # ) - # self._copy_grad_to_main_model( - # num_steps, - # local_params=layer.parameters(), - # main_params=layers[f_idx].parameters(), - # ) - - # with torch.no_grad(): - # self._grads[idx] = ( - # torch.cat(self._grads[idx], dim=0).cpu() / num_steps - # ) - # continue - - for param in layer.parameters(): - param.requires_grad = True - - input: torch.Tensor - output: torch.Tensor - - if idx == 0: # last layer - input = self._activations[f_idx] - output = target - elif f_idx == 0: # first layer - input = batch - output = self._grads[idx - 1] - else: # any other layer - input = self._activations[f_idx - 1] - output = self._grads[idx - 1] + def compute_loss( + self, targets: torch.Tensor, criterion: Criterion, **criterion_kwargs + ) -> float: + loss_value = 0.0 + grads = [] - microbatch_size = self._get_microbatch_size(input) - num_steps: int = input.shape[0] // microbatch_size - if idx == 0: - num_steps_in_loss = num_steps - - # backward with microbatching - for microbatch, microtarget in zipper( - input.split(microbatch_size), - output.split(microbatch_size), - verbose=False, # self.verbose, - desc="Microbatching", - total=num_steps, - leave=False, - ): - microbatch = microbatch.to(self.gpu_device) - microbatch.requires_grad = True + inputs: torch.Tensor = self._activations[-1] + microbatch_size = self._get_microbatch_size(inputs) + num_steps: int = inputs.shape[0] // microbatch_size - microtarget = microtarget.to(self.gpu_device) + for _activation, _target in zip( + inputs.split(microbatch_size), targets.split(microbatch_size) + ): + activation = _activation.to(self.gpu_device).requires_grad_(True) + target = _target.to(self.gpu_device) - if idx == 0: - activation = microbatch - else: - activation: torch.Tensor = layer( - microbatch, **forward_kwargs - ) + loss = ( + criterion(activation.float(), target, **criterion_kwargs) + / num_steps + ) + loss_value += loss.item() # Append Before Scaling - if idx == 0: - loss = loss_fn(activation, microtarget, **loss_kwargs) - losses.append(loss.item()) - loss.backward() + if self.mixed_precision and self.loss_scale != 0: + loss *= self.loss_scale - else: - activation.backward(microtarget) # grads actually + loss.backward() + grads.append(activation.grad.cpu()) - self._grads[idx].append(microbatch.grad.cpu()) + self._grads.append(torch.cat(grads, dim=0)) + return loss_value - self._copy_grad_to_main_model( - num_steps, - local_params=layer.parameters(), - main_params=layers[f_idx].parameters(), - ) + def backward(self) -> None: + for idx, (layer, activations) in enumerator( + zip(reversed(self._get_layers()), reversed(self._activations[:-1])), + verbose=self.verbose, + desc="Reverse Layers", + total=self.num_layers, + leave=False, + ): + layer.to(self.gpu_device) - with torch.no_grad(): - self._grads[idx] = ( - torch.cat(self._grads[idx], dim=0).cpu() / num_steps - ) + microbatch_size = self._get_microbatch_size(activations) + grads = [] - self._grads = list(reversed(self._grads)) - # if not skip_last_layer: - with torch.no_grad(): - loss_value = torch.tensor(np.sum(losses) / num_steps_in_loss) + for _activation, gradient in zip( + activations.split(microbatch_size), + self._grads[idx].split(microbatch_size), + ): + activation: torch.Tensor = _activation.to( + self.gpu_device + ).requires_grad_(True) + output: torch.Tensor = layer(activation) - return loss_value + output.backward(gradient.to(self.gpu_device)) + grads.append(activation.grad.cpu()) - def __call__(self, batch: torch.Tensor) -> torch.Tensor: - return self.forward(batch) + layer.cpu() + self._grads.append(torch.cat(grads, dim=0)) + self._model_grad_to_master() def _get_microbatch_size(self, batch: torch.Tensor) -> int: batch_size = batch.shape[0] @@ -226,24 +180,39 @@ def _get_microbatch_size(self, batch: torch.Tensor) -> int: batch_size if self.microbatch_size is None else self.microbatch_size ) + def _copy_master_params(self, model): + master_params = [ + # PyTorch sets `requires_grad = False` when clone and detach + p.detach().clone().float().requires_grad_(True) + for p in model.parameters() + if p.requires_grad == True + ] + + return master_params + + def __len__(self) -> int: + return self._num_layers + + def _reset_activations(self): + self._activations = [] + self._grads = [] + def _get_layers(self) -> nn.ModuleList: - return getattr(self.main_model, self.layers_attr) + return getattr(self.model, self.layers_attr) - def _copy_grad_to_main_model( - self, num_steps: int, local_params, main_params - ): - for local_param, main_param in zip(local_params, main_params): - if main_param.grad is None: - main_param.grad = local_param.grad.cpu() / num_steps - else: - main_param.grad += local_param.grad.cpu() / num_steps - - def l2l_loss(self, loss_fn: LossFn, **forward_kwargs) -> L2LLoss: - return L2LLoss( - model=self, - loss_fn=loss_fn, - **forward_kwargs, - ) + def _model_grad_to_master(self): + for model_param, master_param in zip( + self.model.parameters(), self._master_params + ): + if master_param.grad is None: + master_param.grad = torch.empty_like(master_param.data).float() + + master_param.grad.data.copy_(model_param.grad.data) + + if self.mixed_precision and self.loss_scale != 0: + master_param.grad.data = ( + master_param.grad.data / self.loss_scale + ) __all__ = ["Layer2Layer"] diff --git a/layer_to_layer_pytorch/loss.py b/layer_to_layer_pytorch/loss.py deleted file mode 100644 index 1c090d2..0000000 --- a/layer_to_layer_pytorch/loss.py +++ /dev/null @@ -1,89 +0,0 @@ -from typing import List - -import copy - -import numpy as np -import torch -from torch import nn - -from layer_to_layer_pytorch.helpers import zipper -from layer_to_layer_pytorch.types import LossFn - - -class L2LLoss: - def __init__( - self, - model, - loss_fn: LossFn, - # store_grad_on_calc: bool = True, - **forward_kwargs, - ): - self.model = model - self.loss_fn = loss_fn - self.store_grad_on_calc = False # store_grad_on_calc - self.forward_kwargs = forward_kwargs or {} - - self._batch = None - self._target = None - - @torch.no_grad() - def __call__( - self, batch: torch.Tensor, target: torch.Tensor - ) -> torch.Tensor: - self._batch = batch - self._target = target - - microbatch_size = self.model._get_microbatch_size(batch) - num_steps_in_loss = batch.shape[0] // microbatch_size - losses: List[torch.Tensor] = [] - - last_layer: nn.Module = copy.deepcopy(self.model._get_layers()[-1]).to( - self.model.gpu_device - ) - - for microbatch, microtarget in zipper( - batch.split(microbatch_size), - target.split(microbatch_size), - verbose=False, - desc="Microbatching", - total=num_steps_in_loss, - leave=False, - ): - microbatch = microbatch.to(self.model.gpu_device) - # microbatch.requires_grad = True - - microtarget = microtarget.to(self.model.gpu_device) - - activation: torch.Tensor = last_layer( - microbatch, **self.forward_kwargs - ) - - loss = self.loss_fn(activation, microtarget) - losses.append(loss.item()) - - # if self.store_grad_on_calc: - # loss.backward() - # self.model._grads[-1].append(microbatch.grad.cpu()) - - with torch.no_grad(): - loss_value = torch.tensor(np.sum(losses) / num_steps_in_loss) - - return loss_value - - def backward(self) -> None: - self.model.backward( - self._batch, - self._target, - loss_fn=self.loss_fn, - # skip_last_layer=self.store_grad_on_calc, - ) - - def __enter__(self): - return self - - def __exit__(self, type, value, traceback): - self._batch = None - self._target = None - - -__all__ = ["L2LLoss"] diff --git a/layer_to_layer_pytorch/types.py b/layer_to_layer_pytorch/types.py index c74fd2f..446ea00 100644 --- a/layer_to_layer_pytorch/types.py +++ b/layer_to_layer_pytorch/types.py @@ -4,8 +4,7 @@ Device = Union[str, torch.device] -TensorOrTensorArray = Union[torch.Tensor, List[torch.Tensor]] -LossFn = Callable[[torch.Tensor, torch.Tensor], torch.Tensor] +Criterion = Callable[[torch.Tensor, torch.Tensor], torch.Tensor] -__all__ = ["Device", "TensorOrTensorArray", "LossFn"] +__all__ = ["Device", "Criterion"] diff --git a/pyproject.toml b/pyproject.toml index 43b2820..1923b79 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "poetry.masonry.api" [tool.poetry] name = "layer-to-layer-pytorch" -version = "0.2.1" +version = "0.3.0" description = "PyTorch implementation of L2L execution algorithm" readme = "README.md" authors = [ @@ -35,7 +35,6 @@ classifiers = [ # Update me python = "^3.7" importlib_metadata = {version = "^1.6.0", python = "<3.8"} typer = {extras = ["all"], version = "^0.3.2"} -rich = "^6.1.1" torch = "^1.6.0" tqdm = "^4.48.2" numpy = "^1.19.1"