Skip to content

Latest commit

 

History

History
executable file
·
109 lines (101 loc) · 51.1 KB

0644. Maximum Average Subarray II.md

File metadata and controls

executable file
·
109 lines (101 loc) · 51.1 KB

0644. Maximum Average Subarray II, hard, locked, freq: 0p%, acceptance: 29.2%

Given an array consisting of n integers, find the contiguous subarray whose length is greater than or equal to k that has the maximum average value. And you need to output the maximum average value.

Example 1: Input: [1,12,-5,-6,50,3], k = 4 Output: 12.75 Explanation: when length is 5, maximum average value is 10.8, when length is 6, maximum average value is 9.16667. Thus return 12.75. Note: 1 <= k <= n <= 10,000. Elements of the given array will be in range [-10,000, 10,000]. The answer with the calculation error less than 10-5 will be accepted.

[3765,2236,8115,2590,7697,3538,7116,3237,2812,9506,4449,3142,7155,8788,3891,4075,1589,4264,8585,1058,5232,9231,3443,5769,988,2617,7961,5050,4598,2855,6756,4715,5091,1224,7305,9141,4762,4421,2378,3926,3927,3179,3420,7434,1968,7312,7862,9909,7928,6447,968,3160,5678,4411,8929,3019,7028,6890,4421,7979,9746,7529,2694,1189,8753,0,6682,9868,773,5413,3794,4701,8592,7215,8487,560,879,6349,470,5159,2796,7790,8320,4827,2201,7249,4198,5582,492,8619,9913,6590,6148,8959,4131,4902,5311,814,1122,6085,6227,1268,7138,1171,4835,5625,8084,2066,1975,8554,7226,1123,2696,5546,2302,1249,9147,6500,6831,9639,5119,3096,2581,7620,2056,6713,8874,7367,3879,9996,3452,6458,1264,590,3981,2452,2568,2065,4518,895,6971,1744,2018,9667,3642,4321,917,2790,7173,4100,8781,8645,7197,1363,6265,9253,4428,5139,2972,4659,5135,6425,7469,2751,3367,1450,1555,5935,3516,6074,6830,487,7818,5201,155,1461,5874,7424,603,3047,1524,9384,1692,8721,7099,7957,4326,7879,3096,7299,8890,4583,76,6359,3687,3443,4162,5242,5731,7678,1316,2561,4517,5487,4114,1024,3300,9988,8448,3903,3036,9973,9639,1080,5046,3091,9038,5725,970,8486,3024,6213,9422,9452,2572,3109,9247,6734,4703,4978,764,2372,3892,5282,4211,8006,6306,7511,7995,1107,7766,7383,1080,3757,8463,2478,6848,3853,8203,4171,8692,7579,384,8114,7031,9308,7575,2631,2395,2278,7609,3159,1002,7853,4793,5213,2212,1100,9076,207,2207,6842,3942,9639,6952,2405,8469,3800,2611,6673,4323,1303,604,1059,5769,7636,368,3344,6619,2763,1974,4228,2274,2977,8434,7068,4542,646,4520,3619,7205,3079,6813,1147,9070,3765,9904,7539,3918,2515,4212,8241,170,1169,9301,5939,5157,6021,9283,1776,5136,7610,6004,7410,6939,790,830,1481,1436,1702,5100,8641,4781,1914,9788,203,5679,6045,7743,9597,8560,8307,4191,5083,9476,9844,1022,4633,2217,306,6409,7353,4268,8766,1115,1207,9556,8298,2688,7345,0,4141,5986,1134,6055,2127,1337,8086,8172,5432,4036,3084,3740,8227,8167,9568,4423,9190,554,6640,5848,3315,3993,116,8433,1460,1323,4342,9758,363,1687,9759,4504,7673,7245,6911,9800,8582,4998,4324,4015,5386,7409,4107,3613,5576,27,4388,1118,6933,1028,6966,249,1373,3434,8682,2833,1109,3024,2592,1473,4711,8703,2329,8737,5948,9241,4889,882,591,9214,1249,5977,2975,1708,5942,8551,1736,330,6022,5021,7710,2988,5270,9083,6423,305,8268,3884,9681,7212,5357,745,5915,7687,9482,8215,3280,723,9098,3871,9937,6699,9848,9264,8408,5790,4168,6496,2472,190,1517,182,9530,3140,5617,5953,3445,3885,9838,3126,1098,1547,3871,3365,5586,9705,7933,5218,429,3383,9089,6718,82,5289,5983,8490,7431,151,1338,9903,6693,2856,85,6223,5996,5702,8529,9441,5940,4719,8919,3390,6266,2791,3107,8205,8848,1040,3423,9277,775,8865,5996,858,4154,8331,5700,1586,8482,7039,7841,1527,6247,4279,7750,2243,9981,6279,8036,2273,998,3307,5663,3617,2450,5123,1822,1299,2515,1597,576,3291,462,2924,501,969,1255,2553,2555,6089,5944,6748,7616,2191,1027,5367,786,7361,1646,8822,9634,2645,2130,1650,2614,4580,6773,4436,2231,5640,2385,2808,8931,2848,5732,5784,3817,6988,8338,2724,3077,4282,9472,694,2826,500,6061,3612,7861,4059,2435,3847,3056,917,1849,5670,1849,4974,6458,4081,615,8844,3241,5898,1692,8973,1683,1861,2313,6373,4585,1743,7007,409,2437,9833,909,4850,3446,5122,5261,2233,5322,8318,9502,7171,340,7703,2146,6799,1784,9113,1995,1377,5011,39,351,3046,1900,9016,5771,2837,759,2779,3246,9548,8964,508,750,8762,1982,6012,995,7304,682,497,4476,1022,8201,2974,4173,6337,2087,6168,7715,7098,2559,4418,6497,4459,9786,2268,3648,546,1399,6895,94,364,7403,7197,9126,9385,3209,6474,3042,3891,3323,3870,1265,7876,6844,5439,566,8931,7959,4633,2381,519,9051,5230,1330,5189,3851,4979,5735,5250,1874,2182,1966,5629,9379,7445,1366,8940,3919,4408,2831,3594,4630,448,1471,1474,5887,2037,6757,199,6670,5491,7070,2073,721,8400,7262,924,3379,9350,6175,1605,7884,8141,3586,7263,1938,4953,2555,5857,5713,5386,5804,344,2186,7275,8170,4426,5664,1280,4625,8686,6771,1695,7111,3844,6447,725,4769,9827,75,7296,7784,7959,1789,1371,1574,3728,2676,4129,5937,4741,5867,1741,1437,4406,5368,9608,8832,1032,888,3457,9718,4011,1504,6829,4207,7951,7555,8976,4130,3982,2624,1915,8294,4414,9638,6220,4494,2314,6702,431,7055,8921,8525,8493,3327,3893,4453,2159,1278,1693,1968,7348,5704,3472,4178,9911,1424,8085,5240,1906,8419,4216,3821,6713,8630,3459,9286,3124,2125,5988,9908,9181,1261,4785,4026,4589,8678,8479,6748,6308,172,5069,3657,5876,8541,4187,2139,6317,2272,3731,8224,7043,7948,8397,109,2930,8209,9395,2407,334,1735,2315,9515,2996,3452,9893,7585,2130,8372,686,4791,8544,2107,8448,772,648,2635,9264,3318,1259,9347,7894,8302,7295,6291,8411,6578,4500,4158,8985,4835,5893,7652,702,5242,1104,596,9179,9586,5320,6217,4377,3865,8324,2825,989,8973,5460,6605,8643,3071,5953,6537,1374,3248,2828,6137,9826,3681,296,5163,4868,2541,2815,1922,7783,3919,2518,6963,3506,7839,9532,7883,8056,7857,7061,5397,3182,2521,2003,1825,5593,7956,8362,3319,7556,7542,9456,3735,1223,6104,8898,6091,4998,1714,8014,9133,1985,6884,2448,1843,1075,1981,9727,5483,9838,3140,881,3020,5661,9236,4845,7606,3544,9559,7277,1100,7101,3086,1187,8325,5542,86,768,540,8152,5134,6026,6489,8371,8474,8333,9446,455,4412,4930,6645,7552,2163,6017,9565,1399,7214,3524,4943,6773,801,2395,3875,239,9935,8552,5782,21,5672,2674,4525,807,8700,1014,9178,7175,5699,4976,3982,111,6258,6980,4015,8421,2997,3581,6172,212,7105,7467,6985,4258,6215,7212,4498,6150,2116,280,2523,7789,2954,7048,4948,1655,4414,478,5182,6466,5454,5516,6577,1713,8848,593,6486,1846,526,2659,8410,7631,6478,1747,8241,2693,8960,2739,8843,1076,3019,1366,5217,2326,4766,165,333,5533,643,1867,1999,6098,7383,4928,4163,6232,5521,649,4430,2399,9660,2840,30,6139,4587,4624,8832,9899,7363,4028,7328,6735,5394,2545,5413,6513,2711,5746,2046,9706,7613,4045,5804,1348,5325,6319,3932,7199,3321,4714,9598,2981,7554,5981,5472,8494,605,657,4745,7968,4685,2073,1055,6431,4619,6468,2944,3682,2214,4990,3388,6179,5387,5545,3880,7065,1864,7812,4264,5185,2527,3862,4519,6433,9843,9991,1279,448,648,6025,4769,5333,8098,5824,1765,9069,2293,1061,2751,859,2404,2492,7039,7791,8037,919,4856,6253,5083,5472,7791,7610,9335,2310,396,9178,8653,1675,5979,9302,7700,748,987,2151,2924,9104,1220,5217,166,324,6077,2570,9168,9468,6713,7205,387,7922,9810,5470,3394,7601,9433,9081,9911,9829,8260,8565,1504,591,4219,5557,7691,5206,7708,615,663,5280,2185,829,1956,8262,9751,1124,7730,6464,4681,4469,738,844,9939,485,8445,5724,9566,4709,5553,4178,3274,7058,4769,3845,8967,2460,9051,6675,9428,9714,8307,1613,6895,264,6227,6646,7740,309,9463,8774,4778,201,9618,1069,686,8063,3146,253,2772,8699,4431,2398,2109,5553,6243,1076,4365,1647,7751,3793,1361,2411,1758,4609,2675,7985,1255,6767,4646,7070,5541,5776,3624,5159,3198,4310,9575,6344,915,2347,1395,1699,1098,3505,3604,7341,4581,7969,8988,8685,8115,6702,1096,9873,1311,123,4211,8918,6890,5209,5989,8784,986,9613,3943,536,275,3518,6880,7543,2218,8275,5594,3316,8132,9198,7009,9066,3519,2350,7751,1634,9052,5199,7860,6715,1674,8423,5633,4916,3632,7974,3700,970,7587,3996,7858,4215,7514,4738,1758,6084,9366,7352,5752,3850,2902,2762,2916,6421,5112,7019,4408,516,8570,2268,7231,244,7043,9216,5161,7027,7191,5213,4350,4778,9209,2208,5345,3076,3299,7103,9160,2665,807,1265,6515,3709,379,5784,6483,1843,2803,891,2359,1374,9511,5942,7970,2906,5158,3131,9933,2349,8345,4283,3480,3906,6492,8825,6982,9791,2281,6143,8808,3088,3760,1675,3150,4139,7459,9633,5982,6615,6876,4693,7989,2739,635,5959,5645,5793,5443,5578,4495,140,9862,7975,4046,2706,3152,7381,8849,5433,3524,4009,8522,3636,5684,8024,7775,9496,7657,109,6111,885,4802,452,3624,1789,2763,9269,3934,4558,4847,8429,4698,1061,2756,5097,119,5909,2478,8968,1342,2354,2977,6216,5990,5014,4240,117,862,8249,226,3325,9134,1380,3777,9110,3169,2892,8379,7103,7451,9579,1885,8501,640,4641,9950,7112,550,8780,6080,8245,1134,5410,4461,3476,424,5054,9945,7638,3303,171,963,8790,7903,4740,7900,1072,3984,6280,4528,1435,2211,2765,6289,9203,7406,6239,6315,4309,5020,8748,8906,2506,4158,3367,5983,934,8421,5928,8572,8077,2452,9535,6867,355,627,4767,7780,4611,7399,8660,2399,9610,1425,8688,8814,8831,1279,5129,9492,6299,3877,8398,5158,4387,8118,1141,1673,2891,3421,6597,968,2225,6132,7835,8933,3111,8955,6713,4075,2706,1725,6474,2317,3150,1514,7483,8333,2793,8964,7826,5445,9194,2576,603,3581,694,8096,1607,3586,7869,8204,4554,6447,4337,8742,5380,3800,4049,8445,7875,6755,170,701,5424,9672,8567,2907,8005,7713,1872,5831,9510,1066,4760,6465,999,5454,4561,2606,9040,8782,811,9947,1581,1500,5041,6961,1652,5442,1758,5880,2197,8280,2933,3974,7952,1501,6881,5958,5566,5105,8141,5076,2523,2901,1541,3523,8356,2454,2481,3748,7588,3292,47,9170,1144,1440,2483,2797,6882,4242,8677,5432,2522,1610,9406,475,9463,6287,6433,5029,1393,926,105,3916,3828,7998,3791,8536,6804,6273,2284,4393,5917,8684,3563,7062,124,6046,6211,7007,6640,1240,2439,9163,9202,8197,5990,8666,4484,8775,47,2229,9701,6505,2498,3529,4503,2641,2065,1308,8914,702,2053,1184,5738,1968,4598,5862,8014,809,9221,1007,8401,8012,170,7603,6209,2512,2621,7046,1287,2669,9275,988,9174,8125,4518,29,767,2935,7689,6033,3637,9742,7217,9375,1710,1815,1590,6077,8976,7163,7084,7377,5176,3606,1333,7737,6118,3954,4783,7405,2975,411,8393,8501,4888,9263,8531,5655,2199,2572,8041,2188,8667,5258,7916,6729,3426,9506,9158,8754,6669,6242,2484,8197,6200,3817,5935,8670,4123,7070,2427,7099,7481,7173,1952,2370,6436,6835,4377,4987,9408,2418,7176,4427,4029,1444,1156,3807,950,315,2561,3971,2909,5045,8521,5462,5214,808,4132,5690,7878,6560,9141,1712,3733,1093,434,6521,7929,4811,1509,3689,3582,5037,8116,3963,6481,5624,7770,3783,5939,6683,4106,5201,8081,8979,663,3295,9787,1147,5337,4018,4059,4478,5730,4144,5572,6164,666,9853,7327,8527,3542,7261,9916,8010,1224,6397,3634,5346,6532,5926,2030,6990,7479,111,5970,8142,9758,5757,5641,5096,9775,9701,5926,1857,3845,1498,4373,863,7703,8053,9390,1245,5314,9306,5607,2891,2055,5594,8237,8587,7872,6619,5578,5351,3082,7900,9845,9193,9,5486,641,9785,5187,6567,7994,5385,4418,2368,6248,2121,421,5639,9719,2087,1297,5326,1330,3353,920,9568,8292,8792,2539,222,495,1974,8122,340,1167,8132,5827,1808,4269,7366,4727,2263,2751,9145,983,9000,1267,7756,991,986,6196,2288,2664,7526,5641,3585,3446,286,8729,5986,508,9225,4312,8631,5917,5479,6763,1744,3639,7384,5463,8366,5999,8214,7512,6983,3566,5131,1091,909,6117,7287,3198,8781,1166,5191,8718,4612,5477,3800,6950,5986,9377,1262,969,5294,3093,4084,7039,6732,1468,8854,1451,7467,7068,5315,802,6987,446,8246,7896,2915,1885,7446,8048,3051,8990,6767,4016,4467,6919,966,6805,6296,2229,4126,7942,1674,8210,4981,8407,6030,187,9858,3498,7256,5173,652,595,1971,5250,8491,4886,7136,2290,2934,6539,1280,6053,555,5747,9324,7874,8905,5620,103,3031,3563,8129,1242,4896,6536,7272,5084,2746,7122,8692,4271,4127,9287,6242,5729,4130,7480,2865,6420,6767,5757,4052,2820,6312,6152,2145,4186,5057,4117,641,4440,4032,8771,2034,5281,1659,5659,365,758,9133,5409,5029,9612,1048,7624,5342,1530,1456,4559,4303,8223,316,8355,1044,2981,4507,9541,3519,5916,3658,513,357,4043,5636,2391,9324,7295,4402,6041,4405,3536,1450,5787,3148,8850,3411,8490,380,4867,3050,4683,9443,9718,3039,6839,9051,3898,6380,2571,9815,6390,3084,172,433,5072,8915,9757,8719,3318,5798,3125,3206,3600,8912,6354,2450,8675,1197,2831,9894,599,3866,9337,6669,3257,6176,5721,7156,8908,8292,6971,5299,7728,3495,2084,2800,8762,8194,1519,8432,344,996,1638,3945,9908,4345,2747,8583,5542,1930,8478,2493,5797,4167,9162,9054,344,4883,2562,9252,9527,5885,903,3607,9380,2988,6407,8143,1182,4279,6575,1526,5275,4566,1823,1536,8911,4571,6471,805,2853,1301,3298,8650,5469,2460,4057,2165,3696,6619,1417,3223,8857,8673,3183,8237,1661,9590,2732,9195,221,5660,7073,1849,226,8897,3385,5489,9820,9856,6294,2673,7510,5944,7676,2979,4756,1733,5144,8452,4704,2913,8028,3561,1586,1211,8151,3247,7153,7235,8794,3727,2895,5868,5576,9473,1117,5313,1314,937,1521,7608,9962,9031,9904,7638,2010,4661,5723,3506,9465,428,6420,3845,341,8006,1408,4844,7606,4914,2080,6400,8641,4975,8620,569,801,9737,5882,2115,7026,7403,6076,6989,2787,2332,4627,1149,6993,351,4656,2811,7131,7428,6656,3824,5434,4417,8669,9392,9331,749,2145,7972,2076,765,8541,9229,6855,775,7697,3881,4530,125,870,7317,2457,1850,8467,5803,2201,9475,8614,5684,6903,1622,5860,8689,6039,4529,8082,5370,1630,6579,9694,59,3696,4587,9288,551,5362,6985,785,9893,3462,1655,3562,5920,3505,8381,1723,2058,7856,337,4094,1111,8311,9955,9801,4351,836,4235,6073,2467,7166,2120,2526,862,6707,8166,7766,8422,1504,8551,8315,4966,6558,8229,886,6416,6611,8961,4826,819,9298,8921,1931,3962,8876,8084,8313,9712,8671,738,8531,5837,9210,7409,3051,5918,5576,817,4340,3432,5720,9007,8398,2279,7236,5637,8695,199,4598,3521,7371,249,8794,5654,4211,4022,3738,8876,87,8761,5966,8618,4598,5177,6028,7649,1095,7956,4819,1787,7740,539,794,6138,2818,4382,8127,7865,934,2726,7739,8305,9327,6533,3959,3538,6908,4049,8766,6995,2810,4732,1965,7408,9909,4345,1409,1004,2301,6228,9143,41,6768,9937,2532,5938,672,7011,156,1606,6089,7895,9911,5416,780,222,5306,4040,4271,4072,1035,7081,8805,3001,841,8714,7346,2250,6071,6000,4831,5214,2393,1599,1504,1277,3889,2176,8289,397,134,4378,8292,6397,6147,5425,6619,1453,9465,890,1878,6853,4323,683,6206,5164,5749,9904,7414,8172,2256,8597,3387,4650,6548,1243,2279,438,9771,6920,835,9905,7651,5480,2654,3798,7257,9273,1603,3074,6515,3481,9927,7190,516,6133,2354,6266,2390,6120,790,4646,4718,4177,5648,1266,5420,7928,8056,5191,4848,5244,1448,8851,7076,4102,2649,4333,9727,605,7407,2594,4086,3687,9784,955,6172,8490,3573,8562,963,4363,3209,5681,8541,5209,3299,313,3137,7708,1857,4338,2952,9657,3189,28,112,2191,713,9839,2796,4472,8786,6882,8159,8570,4189,684,3413,7762,5598,4376,2126,5159,57,7019,369,9708,3684,9858,7416,5541,4196,6720,1551,3738,6748,1663,5929,3813,1502,8725,8286,288,1959,2797,5211,6149,3481,8624,3911,5432,3000,2389,591,9409,9408,960,9117,3093,819,2886,4986,1367,9606,6537,5105,2707,8200,1034,6520,6055,6111,4806,2695,8071,7604,7906,572,7437,2882,835,9221,5882,3225,9813,1643,8985,7125,761,2078,4296,9999,3417,5664,9605,9954,7121,2312,4507,8156,8833,562,619,9991,3257,5042,3947,7516,5614,7737,398,6450,6958,2633,6027,3123,628,5012,249,7741,3443,897,7740,6860,6561,7346,6814,3683,6010,1321,8191,1195,8235,5162,7539,7845,205,1486,5361,5819,5575,2111,8621,2534,1096,1000,5657,1725,6013,2258,5818,9456,3156,3559,6316,6069,7257,9482,6104,9619,7156,4295,815,5391,5810,8354,3236,6015,6192,4949,8186,1768,3413,3160,4302,861,4160,6311,8938,6525,4922,4757,2333,8078,8316,5001,499,1925,4484,6604,1544,1640,7251,2359,3383,3061,7065,2972,9076,3258,4273,7263,1378,7686,423,2032,4900,935,8343,3838,7461,3265,4947,9794,7695,9615,4796,8195,1540,5632,1151,3085,3624,8402,1796,7007,1464,5214,9979,6892,8472,605,4155,6202,4643,930,8234,9543,8218,6577,9734,5679,6195,4681,1825,242,4297,2973,4789,5837,8605,5940,5274,2229,4343,7071,5589,2159,2285,1920,9051,7109,2525,9559,3311,7169,489,7897,6712,5059,4474,2798,738,7021,7480,8916,3616,8129,1889,8405,318,6847,698,5593,9076,1393,9016,1017,3552,7653,2938,2603,1114,5463,8514,4425,8984,5356,2322,2049,415,3148,4847,1154,6522,8679,6422,138,6808,8311,4895,7127,5158,1945,9072,587,3338,8088,7956,6890,5741,894,5846,6855,2710,712,7632,1694,6068,6306,3743,6484,5806,4943,3990,2328,3622,412,8818,431,5075,66,3910,6586,2011,2982,3525,5350,1070,1481,8592,3163,2376,790,18,1438,1503,4002,3132,7571,6660,3228,407,2466,8171,4397,1147,1793,1161,6317,8576,6237,6383,2486,9175,8395,5468,2700,97,2890,4181,5041,6053,2909,2184,2423,4347,3687,2777,3832,7610,9437,7060,8018,1904,1583,8767,9403,3376,9929,5720,8305,2518,2104,791,1693,6851,2612,4393,3300,1854,4926,8341,4260,4188,525,6683,8535,564,5813,8719,4527,5250,5779,2545,3506,7362,7664,2909,7091,3945,4982,5396,6463,7086,2539,8156,289,1503,8901,3589,3358,180,8282,7618,4368,5160,653,9255,5724,6466,7975,6603,8069,106,5500,7927,3821,3165,837,912,7110,5819,2660,3574,9257,5199,8082,9546,6703,3336,9487,6413,9868,7769,4031,588,9281,1036,6195,1358,7503,4170,7961,1924,629,3462,9851,4450,2979,7040,1714,89,9211,4374,15,8468,5925,4450,4366,8980,4138,205,5393,4006,4327,5776,4594,3608,6813,789,4966,668,1312,2928,2592,8293,2742,2443,2743,5721,9484,4457,2162,8695,5183,2178,3516,1108,2980,7882,6441,7118,4440,1834,1124,8767,3963,2070,2375,776,9211,7342,1444,6875,6622,4036,5168,5716,2831,4263,1437,2315,5072,3599,7363,255,2129,879,7716,5109,5113,4157,2227,9553,2343,9703,8320,6306,8125,7048,3434,3689,742,4878,6916,3716,5266,8437,9432,8098,2700,7221,6765,4125,7172,480,732,9302,7711,4800,763,9177,8957,9343,5082,7653,5398,9755,311,3524,6803,3746,3565,7545,8624,6833,1261,243,5270,7045,8341,4323,4266,1458,4800,1438,1939,5532,740,9650,333,7856,8827,5642,7199,262,3295,2597,17,9959,2473,6820,3705,2390,717,8681,9224,1978,8924,846,9023,3617,5169,9641,5076,6321,1079,3367,1854,8172,9369,2187,6028,4549,4181,9579,4811,3829,2176,4828,3788,1002,1648,7493,3392,2365,6174,8968,695,1451,9815,6070,5068,1336,5711,6496,7658,3142,9863,9512,1314,9233,8051,3694,3782,8584,3273,4945,2413,1802,9773,6201,2804,7773,46,2548,138,2573,1517,7185,4024,7684,9607,5444,9020,5318,1941,3030,4812,8156,2542,6127,7389,6945,6173,7523,1882,5799,2468,4295,7601,8593,6849,6757,6366,3247,5657,2856,5820,7174,6393,6196,1210,6000,1641,231,7670,3582,3261,2483,1738,2156,4962,5480,5453,1135,9355,7335,6934,8176,7983,887,6769,4832,3996,9488,4431,9654,8696,252,3180,5090,6448,4391,1090,4441,974,8761,8023,587,1244,6114,2743,6206,7946,4549,3693,7301,8236,6980,1829,6219,7867,8599,7403,1864,4439,1835,1518,3135,8439,4698,8225,4887,5441,5668,5681,6415,4429,56,7003,2025,6170,6098,4583,4116,647,4628,7770,5236,1608,9599,1455,9476,4550,5211,7692,5341,3398,5562,8477,1837,6612,3054,3076,2054,8722,8757,8469,9503,8814,1824,7880,1336,7923,8815,1805,4922,3444,5927,158,5052,5526,7966,880,6429,3177,4924,1770,2927,486,6599,4764,7099,9654,4192,5505,8376,2950,326,4232,8116,2151,2112,5804,74,928,7609,4996,4372,3536,5155,5776,5415,3121,3009,1844,2650,7933,9966,5577,4772,6566,6693,8223,2572,885,3728,948,187,4054,1532,4655,6205,3645,460,2631,925,4421,7628,1649,7958,9135,7425,9725,8608,6786,1569,1258,4720,7887,3187,5844,805,6232,4067,3377,7117,7795,678,3657,8201,2210,4664,4407,2207,1476,7038,3132,5898,1018,4781,3856,153,8559,9933,8761,5345,7854,6371,6417,5741,5910,8613,6547,2142,2680,6276,5612,6827,6954,5621,5029,9165,285,5788,1372,1762,2826,857,7660,197,5638,7868,6702,549,7801,1816,2247,5655,8187,5016,7748,4098,3630,647,2592,6310,6924,8204,3138,3878,3825,8167,9395,463,3955,768,2225,3133,1625,6237,9682,3615,457,6385,4165,4610,4553,2764,265,2740,7780,8013,3190,1410,8661,2135,4073,1937,339,3563,5815,517,8082,5211,7332,8389,2331,9557,7874,308,2146,7557,275,2603,294,792,7213,4847,3556,3830,3939,1337,8195,3482,9099,3208,5617,9524,5145,2308,9439,7313,9177,7521,2524,6509,2262,1207,2418,137,7867,4564,4046,8142,3519,692,8935,7084,1891,2491,7266,5830,180,5462,5664,5632,5022,7633,1508,6520,9942,948,3833,9119,4821,2709,5629,7084,3916,8047,7221,1783,8964,7619,6277,8835,8311,5212,5920,202,4056,3186,2384,588,5000,8049,6220,6375,5682,7729,2895,1976,5029,3080,1096,9850,5789,3077,6934,6057,7476,507,4192,6440,8126,469,1628,6437,5682,7548,2991,9738,7086,1728,326,8439,9777,2899,1166,1811,6980,4061,140,2009,3493,7588,8211,9282,665,5146,5339,4493,2005,9531,7286,132,0,8914,2921,2034,2814,2265,8124,9900,3993,8451,4691,122,7702,5857,1933,4682,6270,8425,3043,9763,6013,7606,5397,3030,2752,7088,7524,1110,6619,4810,1242,2972,76,515,1358,2890,2780,9483,9142,3125,7934,3834,3247,1988,6043,1533,3022,8666,9958,6065,8429,5972,3671,179,9002,2776,7267,2878,238,239,4040,7832,3211,4116,8347,4569,7006,7480,404,2501,605,4690,6335,205,6678,8730,8090,9700,7396,8048,2117,2178,372,2141,2357,5727,1269,9624,8605,1507,9863,2646,9339,9426,3114,4038,348,6473,7870,752,8974,4828,5443,1661,5033,8473,391,3123,8174,4140,7523,6643,6318,7896,5136,8675,9975,6405,4651,8580,4264,4515,7578,9955,293,7045,3994,641,3518,8216,7746,8844,3044,9541,505,8077,8014,7248,7552,2540,1388,5076,9184,4058,9324,4320,9085,9299,7078,3737,4231,1342,4604,8162,7650,4897,5207,7996,1891,5077,6212,5989,3921,9257,5530,778,3686,3544,8026,1239,6085,5767,2667,1621,9825,1991,2293,8911,7642,9371,9000,1873,7066,3604,6387,1068,4853,7946,9064,3096,9375,5276,9085,3296,885,4615,426,4572,4512,8453,5811,6949,4220,4830,8570,397,6821,863,9308,815,6587,4660,2688,5,8264,5428,1073,3118,3374,137,6214,2750,1765,1652,2398,2651,6267,2825,7223,7131,7630,9386,4080,8202,4216,2650,8599,7389,9866,4260,8204,2805,8920,7244,9162,3537,9024,235,3007,2399,6724,5573,1501,4841,7225,251,7492,9845,9428,1067,6976,7058,6805,1057,5260,1021,59,212,4762,9925,824,9318,9082,6096,6563,8244,9633,1939,8479,2640,4338,1555,8214,2191,6397,1791,8795,241,1636,8223,7661,8613,1634,4466,9670,3246,1840,6081,3458,6602,6007,634,5921,1441,6731,8836,9686,2716,775,4517,5357,1466,2425,9923,9,8822,8066,5156,5415,9703,3380,3076,4668,5014,7543,690,4612,5735,6771,4423,2337,9130,5057,4610,572,8140,9798,258,857,6926,1127,6214,4744,3552,2489,4753,8726,555,9910,4142,6610,9642,3570,1278,1008,7465,1968,5620,3200,8740,43,1890,7870,1453,6500,8442,9593,2651,5052,450,9577,6180,3016,4321,9732,1857,5426,8459,2413,1688,8953,9023,1330,2523,6654,8690,9989,8622,663,9541,7362,706,1431,1585,8511,7932,6379,8105,6935,1432,4907,6512,7612,7924,7185,3696,9781,2611,8507,8546,652,7460,3922,8334,6336,576,7025,2677,9198,7688,2218,2913,4746,2,850,3258,7934,7229,7715,1221,8661,2622,7733,2625,6898,1270,6322,6680,233,1181,1578,885,8642,5500,9220,1330,2428,6245,359,7979,285,8929,7244,5031,8931,8094,4641,3217,5323,2356,4438,337,1331,8523,2962,8229,9793,5636,1261,27,6818,9192,912,1812,4692,132,9494,3473,2729,9853,1452,3014,8782,8696,4398,7714,3142,9039,931,8465,7748,5370,5154,5431,245,8117,3660,39,105,1274,66,3275,466,7330,5087,1510,3815,933,4983,6544,786,6435,5911,5921,1483,6661,9987,4625,5700,7270,9443,9800,8992,4597,5231,9238,9066,5244,9277,5524,6518,5695,8799,6984,3025,239,8494,6840,1172,9830,9737,8311,6265,2000,584,4101,8661,571,5078,713,7841,4521,514,6834,5471,2097,6072,4537,7341,5349,6413,3859,7396,5213,7195,421,5452,2042,3614,2976,1872,9703,7639,4489,1703,8223,8590,6716,8794,3669,7429,2988,8190,4295,9822,13,2745,2246,903,86,3947,7316,298,1343,2529,3845,1764,4333,5887,1730,3662,7759,1433,1301,2249,3136,9525,839,6204,8319,860,9986,1307,5403,4281,7481,5416,3378,9727,6319,3465,3674,9988,115,1369,8869,3960,3134,3203,9848,4864,6865,7607,2650,4518,6208,2138,4043,3400,8343,8715,4260,8329,6374,6015,8962,3856,1432,2341,9935,4103,5806,9962,4091,5921,1331,2961,6233,817,2516,6081,2034,5733,41,4684,251,6249,6822,647,6001,5165,9362,6614,3494,5736,2629,2457,5944,413,1150,5880,4517,6956,5842,4960,9229,3525,4273,5462,4343,3141,7896,6377,5226,7937,1061,1830,538,7883,2477,2892,9401,1839,9506,9247,3927,2135,8056,9872,8901,9206,2104,9770,2514,4298,4730,1743,7823,5356,3558,2166,8497,1454,8543,76,5743,5956,1906,2633,192,4383,5525,9593,2574,5031,8840,2853,3519,3249,2725,2420,2455,1181,2190,4970,5479,3272,3065,9655,8628,2975,1821,3478,781,6717,3554,6524,2673,5460,9158,9217,6195,4683,8810,8769,6067,4003,1622,9586,7252,700,8358,6059,8233,548,1029,65,3820,447,9720,8801,3422,1541,2279,4204,4610,2185,7080,7284,3997,2590,2853,192,3626,1664,5313,9693,2019,3287,5631,5623,339,3989,1682,4925,4537,9064,4990,4709,9511,4710,9862,9285,2603,8493,9841,7214,678,6922,850,1027,9512,3703,7571,3138,1719,2884,2831,3738,2524,4814,9361,9215,8803,7396,4140,9692,6460,9130,4402,2323,3840,4264,1608,2796,9110,1450,10,9788,4724,7212,7168,4236,915,4739,3727,8987,3976,2910,2725,6500,7725,8439,5715,6528,2187,6208,6221,8647,5338,6975,7322,5531,7591,5282,8327,6701,3084,4689,2842,7808,1901,10,8397,9168,4749,2124,8155,8725,5034,7233,1577,9111,2024,3645,1992,4211,9853,8213,9210,5191,1540,6532,7074,5483,8166,5401,8537,1251,6442,1379,9059,4695,7741,7456,216,8842,5932,4723,7568,7319,1956,5497,6430,332,9142,8422,4543,8995,2987,105,539,879,2989,7613,6363,1156,9367,4900,2407,5809,2631,7818,6857,372,5275,7073,9214,7559,1796,3134,4878,105,8632,1309,6789,4126,6083,7685,3122,9071,7790,13,9950,780,7626,2665,1936,6993,7565,695,9155,196,8513,6012,6920,140,9437,6135,7700,1233,5621,2578,7690,605,239,832,4732,2675,8517,4206,8098,6307,4219,4400,3439,1845,7066,5375,5191,4631,2422,4346,1180,936,6710,8100,1076,6147,587,8776,3732,6209,7707,7775,6814,4298,8607,7898,3325,7124,2104,1423,9783,6323,5824,3223,4521,2890,8598,9712,3873,1021,410,1405,8309,7120,9506,9385,3267,6445,4514,3351,2654,8573,1126,5821,9223,9733,3719,2549,6857,2176,324,6641,4851,6148,6216,9372,5390,4814,5436,5616,2187,2198,7021,6848,5670,2879,2586,8937,5677,7100,8641,8331,2025,9767,504,7600,9501,576,149,2710,2752,6826,5703,7603,9326,1919,3328,4717,3086,5116,6685,1625,7315,58,8474,2985,2938,1060,8275,8615,4512,6916,3298,2889,3035,155,489,2536,731,6991,1599,3483,3817,3654,7438,3143,1926,766,4212,5012,2235,7249,2989,9550,7308,7815,8887,6598,5227,7162,1565,6091,430,1215,8980,3466,1370,5822,2354,8453,2813,305,8288,2982,3960,5727,2477,5886,2845,3042,7250,5080,291,6591,982,3951,759,9870,549,5986,3384,8466,8430,167,9682,7410,3633,7404,3232,5987,5858,2397,6293,4146,5379,6605,6225,4209,8843,5423,7251,2445,6855,3894,9036,4190,7846,9795,412,8395,2134,3796,3214,564,3963,2896,7974,3948,6652,7559,6288,8862,6308,8933,9361,8040,5538,5586,2249,4381,7361,9500,6826,4217,3394,2214,8407,7592,2010,8819,5988,496,8967,5554,1060,9283,8450,5386,3231,1454,2945,9519,317,5606,4804,9678,3646,342,1616,5895,1075,8978,1747,4253,9547,1493,2820,4306,9086,1182,9477,1426,1678,8444,6980,2738,4079,1782,8124,7311,9588,7422,3182,9905,3028,4339,9583,6674,4681,7552,8921,2109,6530,7020,2714,6077,8513,5534,6735,3951,6716,6212,1729,8394,4656,5061,1132,8736,6843,9257,2399,6432,3031,1933,2689,6059,6272,8625,2733,7306,6177,8006,5767,9059,5026,8481,5136,3539,4016,1871,3843,732,4435,5572,9127,9091,634,6611,4179,3829,2220,2930,6613,5251,1216,5655,1310,3840,4280,395,1146,457,8401,3265,9516,9779,1747,1004,9671,5763,9227,3514,6495,3662,5438,1974,9105,2424,8586,9637,2606,7158,2567,5571,2410,135,1226,72,3976,1858,6820,1474,8667,1573,4740,4535,1353,6487,1891,1024,8602,1118,890,1449,1132,2680,3424,6590,5105,8362,6227,4063,5520,5146,9634,4282,1634,7213,707,5610,9071,7527,3436,7739,9100,8176,2274,6805,1015,518,4181,9617,7988,5071,1067,9121,7752,843,2063,9209,5557,4642,3272,1077,9788,9258,1712,1422,6471,2419,3384,1895,9946,6821,9634,5398,1349,8260,2204,8717,8778,6385,4686,6767,7809,2105,2240,1913,9300,655,1122,4857,5297,746,5935,1437,4,3999,9212,6476,6418,2596,8371,2716,5769,4357,8114,3471,8969,6670,8540,4100,9408,9578,867,3569,1684,9459,5482,984,114,6604,5842,1763,7350,8129,3200,3706,2128,2412,182,8546,1361,4905,1262,3482,5614,5728,3305,4584,8751,1845,8684,8159,1424,5903,8080,9460,1714,3562,444,8180,6518,2638,9943,220,767,3143,3926,9247,1908,461,7793,3269,5366,5407,6751,981,7488,57,1917,6239,8254,601,750,6030,2856,8830,5490,4570,8744,2287,2750,5262,4925,2693,5482,2045,2188,9408,1292,4096,6221,5438,7365,7940,845,469,5273,4685,6878,7190,7276,5132,4143,8026,1163,6999,3208,3005,1569,1952,5292,4319,7214,218,3364,9048,2263,5552,4809,3555,9649,1030,8993,3366,8970,6191,3835,4243,7228,713,1433,4505,2198,5576,8883,9713,8927,2092,2718,496,396,8011,1167,7611,8229,883,3011,6844,6436,7820,6751,2437,8851,2097,5803,7821,8288,9639,8417,5516,6704,6202,6373,8902,1779,5257,4967,7058,7349,7686,3907,7745,5697,5074,1708,278,2310,4720,7122,8746,2540,3873,7535,7743,5970,3338,5565,610,9329,334,2479,6034,6536,8852,1288,4667,4109,6256,1726,7810,3942,5633,1908,5991,7059,3616,6269,9369,4688,3391,4467,3581,7264,2002,1324,9587,5341,3241,197,1022,3575,9028,7056,6464,7881,4697,1131,8342,7305,2857,6153,7599,4842,4413,3590,1902,4381,9859,7623,9070,3250,2091,9003,6866,445,6679,2805,5786,9921,3003,3161,9848,2031,217,6312,6264,1266,7444,4607,8571,6653,7112,6170,1496,1525,9760,9750,5906,5971,7373,1328,5573,9464,331,2440,9910,7011,5245,2048,3284,4600,5209,9484,2984,1779,2149,5600,9397,5945,6559,7969,2598,3671,491,446,1548,6604,196,7455,2575,7570,5135,8149,3386,1819,6941,9648,8830,8538,8049,8466,9491,9610,4302,8827,7741,6451,4427,7139,2396,987,1460,1347,1010,8303,1793,2559,4907,8342,6366,3835,5912,1501,8336,5650,9672,1629,1651,4854,167,9700,3320,9658,5662,7623,4837,3404,426,9265,6895,9175,6604,8355,522,7614,3010,2315,6525,7918,657,9243,8105,2921,7097,6441,4924,6769,8070,6575,1624,4589,6275,1296,600,1937,5271,5437,1693,5698,1054,8588,4873,7658,3295,5395,1625,6306,4062,4502,4224,1072,3746,8681,345,843,1474,5269,7612,5896,8196,9236,485,4471,533,7437,2761,5804,2875,806,7854,281,9395,2727,7940,2690,4474,5917,8996,4889,419,9572,2313,517,8253,2658,1360,6079,4280,5325,1975,2476,913,8813,3300,7798,6250,2413,9955,5477,3219,7809,5759,2614,6889,51,5305,7715,2320,653,8956,9091,226,1269,9609,4831,280,7321,7263,4560,2646,9238,3388,9912,4403,6688,7710,654,9101,7665,2483,2321,1827,4594,1287,5068,4645,2944,2783,3317,3598,1740,2409,176,9361,2018,1359,9641,9339,4974,4201,8338,4213,3942,8250,4968,630,2312,1974,6084,9978,4458,4757,8157,9052,6044,3225,50,5341,2360,3367,8939,452,2128,5467,9814,4146,3178,9455,9838,8153,9,4528,8718,3951,2778,3686,933,5090,5661,7017,1420,6471,8126,9577,1875,4171,9154,8277,9512,1515,1645,4803,1967,125,6622,8133,4272,9800,7589,462,4305,7598,4990,3023,7901,4120,3062,8834,5562,5075,2204,3335,1546,330,9264,3421,853,8419,8051,6717,6286,6048,1520,4605,6173,4494,2739,6797,647,6680,7259,4952,4278,8601,4328,8531,9073,7390,7365,4636,2465,5921,4323,363,6252,3587,136,7105,8358,8187,3823,4644,4235,1695,5602,409,6190,8341,7206,3189,5021,818,8141,5651,9419,2469,4182,4845,6211,7899,5833,8676,3821,156,9039,73,3743,5528,3530,2102,3715,3705,3098,7951,5401,8700,8360,7943,3393,1918,1132,4766,2736,5625,417,8508,4447,951,3353,658,8851,9186,5687,9024,5694,1078,5449,5789,6606,5331,4243,322,9037,7342,4625,790,2394,2985,8733,5788,1255,6217,554,3992,8194,7324,2500,2641,8275,2205,3300,3478,7743,5339,8854,3437,6417,4303,9226,9376,5987,3470,9698,5024,7164,4323,5814,9558,3660,899,1698,1267,3468,8605,5259,1662,5929,4111,4304,556,2668,3956,387,411,9295,9241,200,2064,9897,9427,1440,5884,9249,1138,7260,2765,1813,3074,8675,1825,325,374,9445,3793,8979,4704,5455,1260,5168,9759,8168,7836,67,8555,8248,9362,4149,4800,1427,398,4227,2867,6282,9828,358,3542,2593,8523,2968,1269,6701,3293,7995,6146,3438,3326,7202,8893,4586,2370,5005,2754,6559,5072,7662,1159,4435,1811,5959,2214,2209,187,5081,4843,6367,1791,4737,5313,6667,4057,6582,3368,7350,4577,5866,7140,7903,3068,6033,8841,1791,1038,7947,8350,2463,5609,9509,6898,7420,5468,5464,5981,2007,6897,824,4727,8689,5561,40,1708,9618,2974,1428,3320,7551,7294,460,1806,6714,2846,6999,8505,236,4946,6855,2699,556,2716,5949,4328,4537,1413,310,2896,4663,7486,7623,3352,3048,7663,1412,9018,637,2840,8691,4540,134,5503,2698,6848,8349,9697,1706,4938,4644,4913,7637,1552,7630,9939,5880,8519,1352,2542,1415,2367,29,9039,5719,9429,3054,3483,4799,3692,6323,3490,4584,2809,5346,7283,6010,47,3332,7716,4985,4328,2629,2623,5880,6611,2562,8113,5130,266,7007,2898,2634,7036,1937,4705,2817,4991,8189,7617,5035,864,7459,5972,3674,2805,3255,9684,2853,2939,3752,7838,7268,2733,6813,9500,9345,5727,3965,827,2346,973,3725,4980,4361,2014,6037,7179,3358,578,4796,4745,7795,8607,717,1469,1413,324,7505,618,3264,7609,4808,6884,342,1622,6384,6039,7349,350,6867,9695,1323,6944,1027,2036,8959,3417,9215,8669,347,363,3414,8142,8971,4132,5963,6736,4456,3468,3706,4072,7429,8514,956,7772,6488,7341,3811,190,4043,7030,6237,1718,327,3617,3754,5638,7034,2970,4307,7381,9685,4073,5524,5008,8205,1487,8096,9014,1308,1802,3086,8737,6669,395,2861,3157,4088,3025,9699,8131,6407,5937,9849,6734,9554,9955,8724,2940,2925,9383,321,8963,3457,2197,3971,8014,37,8420,7028,1345,6574,6467,6434,3243,6862,5648,2753,950,8673,2452,5433,1432,4741,5282,4519,647,5237,3243,3587,4515,2627,261,9830,2436,2458,153,450,8847,8573,7479,6544,5148,298,2979,4743,3512,4979,7496,814,3652,6301,6247,1436,1042,7881,5955,8042,9470,9199,1629,337,8178,1890,167,614,701,6673,1064,9548,5246,4895,6093,6746,1545,5424,1490,5057,403,8986,5871,407,1639,8470,1843,9034,2703,7799,7076,2174,3350,8705,8863,7880,6948,5383,8494,7649,2056,5910,7197,7302,7158,9642,4049,8703,5066,1891,113,5469,877,2336,2228,8869,7159,4072,7903,9862,8223,4979,8388,1573,36,7252,9453,6984,2635,4299,985,4691,6561,4535,8345,71,4177,8746,5127,5596,637,5240,7417,7867,3928,9646,6736,1087,70,4639,950,8293,5970,9338,6218,2358,2942,2023,5695,5577,6322,6680,6620,9235,7567,4966,9307,8097,64,4434,3693,702,9674,7462,8569,9954,7108,5305,1042,7178,6296,8344,1823,8618,4034,8041,976,6977,64,3023,8906,2738,6056,5527,1974,3623,6845,1281,8072,6909,5715,1765,7611,1741,9228,2532,8047,2688,4189,9089,6219,485,3785,4394,5455,4172,2436,2784,1149,8852,5807,6407,7943,1863,1934,9917,1839,5131,7550,9911,2041,9617,8029,6004,1358,3609,8537,9405,6297,2726,4847,8868,9564,4984,3263,1371,9156,2051,4155,305,7255,6315,6713,5198,4530,4999,1467,2721,131,9017,2633,8524,8634,7014,4528,6344,623,9417,5750,3272,2144,6949,8493,8060,1933,1756,9431,1090,159,9939,7747,7414,6254,812,8965,7136,2164,432,9858,8647,9450,8843,7171,8084,5857,1699,4429,2832,7469,6531,6104,9613,3480,4597,4025,1765,2705,9808,9207,2864,9747,6955,6631,2353,4119,5596,9490,6283,6028,5700,4930,1830,4543,8453,9915,6752,153,696,9584,7622,7227,5688,3587,7059,6638,3964,5176,9343,3772,4384,8560,3520,7691,1543,2225,1810,7139,8067,4446,9519,3767,5728,1350,4662,4182,7617,1414,687,8313,998,4661,1892,3039,4600,5303,9677,8564,479,5372,2336,1215,284,2208,8906,1827,4434,7069,8966,8853,7867,4838,2621,3595,6188,3635,7777,3805,1402,8464,8470,2400,3125,362,1791,7725,5665,7820,6289,2496,3193,4978,3712,3477,7186,2618,1657,7972,6039,623,6826,3906,1813,5799,7502,8001,9434,5279,8158,836,96,6628,9589,9573,6990,7732,3651,9007,5553,6292,1504,5098,1270,5216,4927,4809,7834,6584,2781,226,3560,9607,4132,5373,1758,7986,3375,1193,9618,1533,8381,9714,8162,4322,5639,1504,2055,9290,512,7608,5583,2016,9058,6853,7232,3985,8014,1418,570,796,7996,4130,6755,2129,9503,8514,115,9230,6059,9733,7116,792,5799,1630,1467,1439,3134,3522,729,9998,7482,2664,8366,6540,5870,1950,525,3884,9721,7447,4680,7717,1577,7788,6198,7433,2654,6314,3015,5065,2399,131,5857,4551,1761,7324,2342,1248,7198,9423,1246,1032,2088,9613,7572,7958,1563,4450,1842,1284,8249,2875,9002,6179,663,1552,3612,9669,4218,6627,4734,6618,6759,6943,7521,4872,4268,9863,6120,7818,9286,3719,8851,1374,3332,2775,5684,1247,3577,7527,8884,1827,6754,4238,8006,3769,5790,7970,3438,9,4597,8172,2979,7708,5115,500,8933,5735,6715,5053,9906,2353,8772,8757,80,8456,7884,5764,6056,1462,9643,4940,9641,6397,9178,7647,166,1320,5617,9956,1329,6566,4480,660,627,5948,7512,9560,1683,4227,965,7941,2933,9738,6698,3013,4546,4583,5129,602,2397,4773,1894,2038,7522,7424,6037,4041,8745,1654,349,6426,4572,4830,7087,1551,778,4599,1111,8813,5179,2077,6755,4464,8167,9805,7477,2713,740,8958,9668,3137,3731,1562,1527,7606,8987,7564,7999,7732,5570,8348,510,143,3178,7597,8046,3956,8549,9158,9122,80,7587,2229,4544,5754,2034,8373,4819,2775,7331,4487,2264,7415,6050,3792,1373,5037,7708,9372,9121,3279,7720,5983,9774,899,9933,7820,1207,8482,6978,329,4914,917,8910,5810,6671,945,535,1491,72,7866,5978,2336,1633,8380,6128,3006,9769,3837,8730,5242,3468,6451,1226,3242,7350,1159,7414,4909,5993,745,1591,7259,1662,501,3069,8334,1446,3604,6177,1518,7822,8507,207,5808,6888,2687,5166,3009,2876,3897,8252,6344,348,5830,5938,4050,6989,3353,5311,9334,4098,6902,6593,5760,3756,6014,446,1554,5970,6623,3073,144,5131,9632,5952,8371,2319,1119,1380,5196,5016,9632,7892,1716,1814,3831,2118,8803,7184,7429,4489,1282,684,7434,3394,4440,3448,3841,5994,5770,464,5419,5915,1947,5051,1867,318,7371,9338,1699,8919,706,7683,6811,2422,9498,642,892,4653,4178,8322,9143,1812,9006,2929,5207,9798,6378,5400,5792,2148,5864,1212,8063,7812,2615,6283,8130,9986,5621,6181,5257,6328,3865,2069,5102,3363,9063,5995,4368,3242,4317,3511,5054,9675,2793,6613,9473,9171,2013,1617,7671,4230,9181,2087,8394,1797,8370,6524,1783,343,9058,7041,6671,2923,5462,8126,2638,4525,4121,7006,7767,4790,6870,9174,817,9663,5787,290,5186,4153,8259,9209,8383,7441,1296,6777,9238,6018,9653,7373,6362,8711,766,9385,7986,6228,7511,624,754,7984,3983,4873,2774,7205,4047,3591,6868,6187,233,8406,6692,8493,7615,5075,2286,8912,8204,1524,1282,7857,8897,3996,2921,9664,9734,907,5892,3597,7884,2998,1582,8219,4224,4356,5424,8271,4300,8644,810,885,7050,7502,9378,4665,8929,8016,9929,7133,9540,1212,1343,4790,1560,4264,4454,1294,1523,6698,4892,5759,6049,2826,3978,273,3534,9402,4896,7834,4398,5707,8720,1448,9561,4450,6114,4843,2467,2395,1976,8359,9959,9671,3149,1520,3935,7603,9166,1811,654,410,7570,3055,3236,7901,3328,6771,3655,8224,957,8054,283,6029,9502,6197,480,1968,1040,9299,4364,9368,7658,4323,9040,808,2195,9327,4763,1362,1138,1769,1772,5061,4824,1361,9314,8152,8132,2969,2729,9089,7375,9364,5119,6878,5561,1951,5198,2953,7602,9562,2322,5260,238,7714,2420,2433,7041,7184,3795,4532,5305,1920,9593,130,3281,8907,4634,7765,8228,3715,3206,5604,3080,4677,8834,4993,6628,4032,4299,4230,9947,6621,5843,185,4335,8263,8970,7728,1799,2766,2260,7105,1038,1853,3587,4319,7112,8221,8436,1693,8289,1642,7297,1369,6320,2483,2714,9300,2867,7013,9883,2814,9986,5726,9351,673,341,8322,8402,2141,7440,662,5598,4830,8868,9185,5501,5980,3758,3937,7673,2047,5579,1322,9768,1899,157,2483,7552,3025,9496,7435,2191,5835,3161,7895,6508,3502,2569,4910,1995,6361,5573,7593,1191,4441,6778,6692,6773,6889,629,799,8936,2560,8473,8705,4460,8631,1188,8364,1656,7036,5799,199,2871,5312,8094,5732,8814,663,642,7162,7024,6215,4755,8215,7008,7886,1259,3782,4775,8240,4581,3711,801,9406,8768,1613,8037,6308,9977,6045,3345,5776,6245,2568,1088,691,8300,6254,1355,5295,3416,4731,7862,8172,9299,4871,6058,558,5005,7185,8799,5938,896,9600,5344,9665,1213,3382,2325,1190,5779,2022,3318,8376,4591,4406,9068,9243,660,6775,890,429,1506,8753,8601,805,9976,1011,7716,4981,8196,2867,919,5444,2467,2615,1461,32,5997,3787,7574,8129,5809,892,6505,6752,1650,5573,5996,8662,2348,3238,9091,207,1991,7692,1012,1967,5055,5080,6948,3251,7947,4219,8696,6766,6835,157,6798,9184,3944,724,7313,9754,7968,3819,6506,9618,9392,8854,8281,8093,8445,7372,8300,436,1417,5664,8756,6472,745,2056,6076,8692,6276,4772,5459,9463,1281,8609,8647,1578,9334,2313,7684,7302,6132,542,3273,1876,5749,1554,6321,4194,5278,4621,4630,6695,286,3386,9520,7383,5443,5596,6075,8071,6720,7886,3886,8001,2848,8885,5931,8534,1198,3615,5836,3682,4158,5461,1911,9907,7015,8232,4101,8646,9206,5083,1693,9492,4822,1213,3227,6617,6809,9302,4688,9881,3541,4926,7883,6389,3811,3814,1275,5010,3782,3463,8692,7940,8925,6955,7847,2292,5188,8300,938,4394,3383,2632,238,8205,3845,3465,4822,7007,9119,5862,6888,9012,788,1123,1753,4600,1290,3028,5962,5072,6492,1006,9364,5417,7962,3563,7709,3150,1863,5000,3896,1598,7632,4134,6156,7829,3951,978,4836,3070,3193,8077,2083,333,5552,3836,1285,6842,6865,7247,8266,9709,8254,7630,5126,6216,7545,9187,5718,9408,4187,5966,7359,1819,100,3515,6001,403,845,7189,3473,4038,5266,1908,724,7171,2097,2009,4013,8962,9257,8632,5023,7511,2614,149,79,160,5688,2149,9568,9876,8115,3279,8047,4567,6794,4048,4970,7640,1238,4795,8030,2856,6704,8754,27,8801,764,393,4115,6373,9025,9138,236,1639,5639,315,1799,1327,8816,7720,1203,6931,999,9251,7850,4146,9651,2820,1786,889,7615,6168,3746,4319,4923,3773,9472,2039,4166,3587,8412,9543,9077,8648,1183,4716,5315,9334,6044,4131,3406,3599,7414,758,9202,5264,4904,8854,4436,3042,6095,8403,9210,6193,9075,485,6319,8547,2524,6837,2135,7288,6381,7564,2288,3916,2281,7603,9602,4677,8086,3009,8276,1852,3767,3831,3468,8671,2685,7904,1713,5132,6308,7275,1326,5383,7761,7645,282,285,4482,8769,3926,863,6334,6214,1131,8615,170,734,9644,8256,3743,7920,6461,3862,8103,9929,8885,788,4186,598,2273,494,7873,3599,2229,1986,1244,2511,8624,2078,1281,2550,9294,7615,8764,425,2582,5286,1159,2226,9895,1254,6498,6356,5116,4602,6285,4001,1742,6823,951,4015,3669,5177,7614,5898,7163,5210,4762,5787,7289,2395,8337,6583,6362,3454,7008,8944,8740,4520,7522,8635,5774,4020,1343,7243,4974,3981,1244,6717,804,8548,732,4474,3725,4699,6724,888,9909,1486,3028,3550,233,7717,6485,6595,1171,9846,1891,6264,4366,9413,1251,6492,9786,2595,3735,1112,6576,1332,7829,7380,9880,4914,8206,3605,5965,4931,845,2226,2769,225,5777,3003,7943,8614,5950,5466,8460,7842,1730,2826,3607,9334,5671,9745,1929,9406,858,4857,7090,5039,8589,6970,6305,6796,6927,2270,8079,4125,849,7200,4350,6626,6555,2293,5240,2506,7760,53,6700,5842,2879,6659,5176,4902,2757,3457,4309,9967,8314,7751,5006,3256,1074,7664,52,8001,9934,4483,2126,783,1683,2829,3761,8239,5122,5354,7097,9234,5407,3797,1429,4638,6808,6605,9541,9565,6415,202,9532,1081,4305,891,4337,5379,8555,4389,3381,4841,5224,1859,1977,6908,1040,2090,1499,2515,7444,8596,1749,9203,8745,9530,194,1905,2488,6087,1471,8903,2641,7355,9984,6946,4598,4322,2326,3153,5063,2059,4347,288,3918,6324,3548,1311,8414,5047,3826,2211,9995,1927,7766,8740,1458,7960,645,3946,4047,8468,2849,6688,2176,9185,9987,6774,9859,2313,6280,4923,4372,627,1563,4642,3303,5111,5953,8069,6510,9779,280,6505,1707,4399,1597,3165,2359,8594,3463,2759,3415,2664,5799,5591,1849,5786,8717,1709,8099,4997,2984,8823,1976,899,3466,5279,2362,9419,9701,8872,5551,9981,1729,7258,4380,9678,6775,3092,4624,238,2203,8039,9254,8002,9982,1103,141,8700,9164,4592,3697,8500,3416,5674,9399,6882,7305,1761,2653,7006,6985,8204,3340,5066,1814,4072,1096,4941,3516,5721,1531,5719,112,785,74,95,1889,215,8795,7405,4807,8844,5906,4575,870,1657,1457,8176,9771,463,1534,3108,5019,1226,8175,3186,1651,5623,8127,5167,1344,9659,7239,1457,444,7313,7904,8685,3880,6699,6091,8687,5543,8349,9615,6414,6358,1072,942,6129,7887,8828,9238,9259,6407,3765,2445,4410,9388,572,5929,7085,231,3168,4894,7028,6833,2798,5713,713,5849,1804,5753,7744,6505,5368,510,2864,2792,1452,5345,7032,6633,4583,6291,9392,4700,8736,3802,441,9308,9731,3878,5892,9252,8772,2920,6085,1570,8633,6799,3771,6790,8904,1515,3295,624,2026,2511,3416,9830,7857,6800,6463,8792,3091,2207,9845,1827,6009,286,7488,2093,4164,3380,1345,2936,2652,7430,858,1285,581,981,4427,5837,2496,4075,6461,4522,6586,6230,4353,4443,3030,7168,9588,6122,5728,9433,7949,1737,9719,5437,182,235,5169,1527,9523,7821,8958,6733,5459,5891,7714,9886,1729,210,313,8190,1085,6900,772,1790,7695,3803,5310,7283,9925,1038,6716,4226,9128,2787,6016,9310,9374,1185,7190,8897,5359,6148,1982,7170,8391,6048,7056,120,2611,7370,4663,3696,622,5435,1838,8317,9238,7148,1953,5515,4539,5021,6094,19,4161,2110,5681,3535,9647,2871,8785,1358,5371,7119,8528,3763,3168,1937,235,5779,5659,4898,9475,6281,6686,7665,950,2276,4813,9255,4144,5704,4277,238,5723,4790,2348,1405,4677,8347,4276,3462,9706,9648,6934,8234,9763,102,6523,9998,5881,2182,1249,1708,4815,7935,5725,2118,211,538,1373,4355,2595,2002,945,4670,6792,3293,6075,1470,7993,6704,1284,7699,2704,8218,2285,8819,4672,5161,8817,6905,7343,66,8613,8511,4353,4338,629,917,1229,2002,1624,176,4005,2570,4846,7149,2215,7274,8619,208,330,9904,4259,3034,4474,2897,1853,9147,8058,7022,2404,1753,7089,1018,264,7794,1708,7245,8711,9289,9248,336,5817,9605,9258,664,6754,1473,7938,1726,1682,4620,1630,2293,7654,2456,5190,5859,7955,9600,2881,360,7706,6322,7730,4322,469,5790,1568,9180,5080,816,5868,7249,6773,5126,7913,3527,6600,2203,5253,4634,6823,3235,3279,829,2044,4822,3040,6351,774,5922,6711,8480,8596,793,2803,9065,6584,4371,4598,8016,1539,466,5265,8312,1945,3179,8191,8545,1734,9797,9531,4910,9384,2810,5739,1428,3984,8780,7780,4759,1054,843,3239,6002,1637,2394,1420,8221,6765,6018,2589,4656,2836,7854,9320,4781,7385,7512,9678,5472,3661,9209,382,3045,8372,6121,826,8708,1253,4958,3467,2307,5801,3059,4662,3790,5453,6082,8363,2219,2100,952,6875,4936,5159,2548,6070,2544,60,5748,8016,73,1310,4750,3118,6034,872,296,4742,8477,5254,8210,7137,7408,1269,1799,1198,3074,7881,9562,5293,6333,514,8521,1269,5673,1069,7339,4570,7481,9440,8938,7554,750,3689,7024,6784,913,3673,7878,9390,8927,2440,6527,6335,61,4678,3886,3136,2559,3448,8429,8892,314,3302,6514,2340,723,205,6910,4556,9645,2200,8462,6747,5889,1839,9883,3154,5512,7762,2545,4439,202,5424,7127,264,6455,1013,3400,9014,813,8181,4259,1127,7836,7125,3467,4911,7330,6729,9468,3328,8930,7930,6427,1171,9769,6311,4326,1633,4073,3223,6073,627,4999,9552,7243,1454,6917,6995,6821,7730,1529,1080,8857,9365,8205,8677,628,1887,5406,96,1567,688,4379,7995,1860,500,658,2538,2134,1083,5761,4559,1710,7112,4111,5306,8567,1028,2301,5388,8758,3830,2820,3967,9547,1025,2644,176,9264,4403,272,7184,5091,1003,5179,6951,1504,2189,5841,3638,3272,1602,8197,4982,5067,8660,288,3634,9688,8942,9022,4798,2772,8194,5117,2320,5571,7762,8848,4835,2165,9120,8371,3608,124,3550,6912,7980,2091,2753,1618,5363,708,6167,6698,5775,4827,3338,9409,867,2280,4783,2017,5053,2977,7134,3725,8548,1248,2573,9735,9765,8045,8107,3374,4521,8009,286,8853,101,3039,471,1816,99,6638,8514,5874,7817,1853,1635,8684,4133,2770,701,5538,5747,4188,5615,647,5436,4540,6735,5202,8938,1194,4928,9811,5555,5214,8665,5656,4605,9136,7473,1057,2127,2339,6931,9944,4192,4919,4981,4678,7689,2034,216,9789,6222,5832,6788,1659,6724,3523,3213,5662,1069,8141,5474,6625,9707,4139,8633,664,9627,2458,1721,8106,4798,5005,8051,8990,9924,9384,3668,7613,1418,237,3754,7641,2421,543,5652,9145,418,8865,1160,1488,3358,6634,8113,9417,7125,6746,81,6752,9205,8155,4859,355,9512,9262,9345,9436,8646,9366,3401,64,5955,7156,4057,8376,7699,9709,3873,8117,4926,5033,5957,8284,8019,4070,4053,5144,7169,487,8249,2726,8642,9460,3081,8154,5074,8778,3942,3720,4496,7343,136,451,851,546,8827,4902,255,2701,3020,1534,4086,5329,6170,2106,9400,224,7250,2921,711,1851,5647,5705,1311,5080,3859,6385,3858,4153,6457,8355,7848,2946,8806,8700,3492,3986,3602,99,3039,2974,7985,7125,8304,4156,9231,4056,4380,2834,6977,1443,4685,8976,7148,2349,4056,7359,5086,7914,1512,1544,2621,9360,842,7780,4412,686,1766,4367,785,1157,7341,5123,8282,1997,9279,3866,6053,11,3052,9382,1454,4089,8358,4954,6438,2414,8665,7877,6681,177,9421,5654,5889,6615,3434,302,7301,1552,4669,4438,9061,8362,9561,3696,6712,8840,7562,9117,5203,6966,8500,3009,1055,3210,7963,3846,1977,6628,1723,8658,3157,7496,664,5399,4111,451,2053,7764,8355,3074,2202,7417,1436,1764,1113,8148,6956,5027,7266,2160,1993,2118,5169,9400,5328,9485,9598,7305,2465,1321,2315,1975,5169,9332,7374,5632,9783,9427,3396,8138,2501,5599,5555,3937,3715,3020,8438,671,8047,2056,9183,6392,526,4353,2145,5854,190,1743,9512,2655,9417,8179,4630,4586,7511,8356,219,7294,7783,3615,1785,284,5566,7340,574,9281,6713,5364,9953,4760,3772,9136,7505,4298,9841,9650,152,6383,1393,6016,9039,810,4196,21,5397,1707,8378,1968,5354,6161,1935,7139,2798,7502,831,9724,6783,7544,5088,3088,2305,8860,2225,9810,3158,8418,5812,9662,4802,7205,5679,193,8016,9875,214,9765,7934,4944,1733,3288,7458,20,6779,6608,7522,7611,6332,4306,5155,1420,7394,3812,6632,5971,9974,6142,4390,5786,5804,5544,2992,7835,5737,7360,4062,2303,3477,8349,7248,1562,7989,1058,1582,4769,7666,9105,2380,3998,9763,3887,1770,7157,7700,4754,9481,4026,896,3871,9813,3052,5767,9157,7240,1504,2869,7654,159,6346,6003,3759,7908,3993,4817,5842,8762,8835,4947,7494,9185,4710,1381,7307,8220,5433,2061,7701,9460,9309,7924,5625,8714,3691,1134,2306,1547,4003,9960,1706,6701,5964,5466,961,9957,6635,6803,8719,5471,1751,6213,1008,2813,3946,8316,1033,9380,6729,8734,8840,2391,3010,817,1105,6701,1951,3411,8248,5954,3371,6307,2655,9335,8125,9968,5644,4760,6771,715,6583,8522,6928,7592,7688,7227,5908,8721,6607,8989,3808,1799,1380,6818,2616,8837,9872,4567,2248,4472,6873,1972,779,5880,7659,5256,5848,3304,17,2619,4019,2952,7494,7300,544,1534,879,2804,6607,7486,8146,415,9285,9526,3586,8253,8364,3458,9172,6964,4282,6045,8936,1414,8277,2948,6670,477,6252,3039,9448,6623,5992,3294,275,2888,4828,1154,2045,1436,4992,191,8203,629,9717,1789,8882,4433,1599,8054,1398,2234,451,6686,3648,5080,9634,318,5557,2238,9710,5006,5214,5702,4652,1841,4942,9481,2996,6987,7269,4340,3530,5472,4970,3248,3614,3852,4033,5213,8259,5431,7447,5062,8470,7447,143,8104,4118,2052,6695,3828,3410,1909,5882,8063,3750,7176,7544,3098,4164,4813,7439,7694,6637,8761,7294,251,2613,7680,1817,7224,3111,5616,2287,7933,3064,8782,6038,7182,834,2733,7362,4245,994,9596,8660,4744,6772,6204,4195,936,7369,1634,4983,4006,395,8629,610,9360,6309,2427,2937,5773,8043,1576,3706,7459,358,6096,993,7544,8829,8355,8141,9823,7951,6801,920,4724,9357,5115,2012,3078,3101,3347,3437,9848,1977,4047,5560,4638,2826,8497,411,7221,73,4118,4681,6783,214,5674,680,5396,382,5173,1571,8333,8327,8843,9409,7684,3958,7774,7115,3411,1121,552,3259,3098,951,8820,7737,3777,3669,4500,998,3743,4970,5679,6878,5185,7706,3910,6933,8088,9084,4856,2773,7411,3700,2183,1447,7658,9957,8562,7422,7430,9114,681,6881,65,5853,970,194,9523,5470,1193,9618,441,3224,2848,1978,930,6759,8911,5370,5843,3767,8144,9606,3819,6679,1053,7830,2988,9616,5252,418,5082,2285,7299,5148,8139,8269,5342,4014,3740,2887,9984,533,6112,2832,2511,3394,5943,7774,5117,8138,7893,3261,7744,1713,9940,5150,9543,2928,1118,4795,3346,6200,3432,6998,7700,1571,5267,9395,1937,9007,2282,1921,9540,4746,1106,8403,8141,3401,2529,3258,1540,423,2871,5636,8488,9163,786,8031,8443,8256,9178,1789,4457,2610,5139,2157,534,407,1552,8823,5766,187,745,1659,4933,8203,62,9426,1604,2592,9036,9496,9367,1907,1485,7855,1070,8623,2238,9513,6880,7768,7655,1337,378,2794,9846,7264,9553,1399,6088,5320,1586,3185,6979,2871,7740,7041,2298,5696,5985,1334,5193,5352,3242,6678,9559,664,1653,1797,6530,8533,9565,537,9870,6296,9683,9717,9912,5589,7468,6000,909,5406,9185,7888,8277,6925,1281,575,8974,3619,1910,4167,5323,1504,7197,4883,8520,5202,3032,1402,3736,8950,8291,9958,1598,4327,9675,1510,9916,3495,7511,825,8901,3048,5065,3531,6326,2698,4106,5300,6317,2368,5819,1641,224,9368,2876,5097,4570,2260,2851,8306,1210,1143,8265,2808,1822,4292,671,1738,4140,8182,8915,9393,7582,3980,2924,3908,3030,3383,5560,9348,2103,1379,7341,8680,7099,6569,129,1670,8829,2980,6328,6392,475,945,9200,2297] 9

/*  binary search
    any range avg should be between minA and maxA, we check whether there will be any range avg >= midA,
    then narrow down the range continuely
    n = j - i + 1
    minA <= (A[i] + A[i+1] + A[j])/n <= maxA
=>  whether the avg > some_value?
=>  (A[i] + A[i+1] + A[j])/n > X
=>  (A[i] + A[i+1] + A[j]) > n*X
=>  (A[i] + A[i+1] + A[j]) - n*X > n*X - n*X
=>  (A[i] - x) + (A[i+1] - x) + ... (A[j] - x) > 0
*/
// 120ms, 50%
class Solution {
public:
    double findMaxAverage(vector<int>& nums, int k) {
        if (nums.empty() || nums.size() < k) return 0;
        
        double minv = *min_element(nums.begin(), nums.end());
        double maxv = *max_element(nums.begin(), nums.end());
        const double EPSILON = 0.000005;
        while (minv <= maxv) {
            double mid = minv + (maxv-minv)/2.0;
            if (maxExists(nums, k, mid)) {
                minv = mid + EPSILON;
            } else {
                maxv = mid - EPSILON;
            }
        }
        return maxv;
    }
    bool maxExists(const vector<int>& nums, int k, double target) {
        double sum = 0.0, pre_sum = 0.0;
        for (int i = 0; i < k; i++) {
            sum += nums[i] - target;
        }
        for (int i = k; i < nums.size(); i++) {
            if (sum >= 0) return true;
            sum += nums[i] - target;
            pre_sum += nums[i-k] - target;
            if (pre_sum < 0) {
                sum -= pre_sum;
                pre_sum = 0;
            }
        }
        return sum >= 0;
    }
};

// 816ms, 6%
// only need to check 2k range
class Solution {
public:
    double findMaxAverage(vector<int>& nums, int k) {
        vector<int> psums;
        psums.reserve(nums.size());
        partial_sum(nums.begin(), nums.end(), back_inserter(psums));
        
        double res = INT_MIN;
        for (int i = 0; i <= nums.size()-k; i++) {
            //for (int j = i + k-1; j < nums.size(); j++) {
            for (int m = k; m < 2*k; m++) {
                int j = i + m - 1;
                if (j >= nums.size()) break;
                double sum = i > 0? psums[j] - psums[i-1] : psums[j];
                res = max(res, sum/(j-i+1));
            }
        }
        return res;
    }
};

// TLE
class Solution {
public:
    double findMaxAverage(vector<int>& nums, int k) {
        vector<int> psums;
        psums.reserve(nums.size());
        partial_sum(nums.begin(), nums.end(), back_inserter(psums));
        
        double res = INT_MIN;
        for (int i = 0; i <= nums.size()-k; i++) {
            for (int j = i + k-1; j < nums.size(); j++) {
                double sum = i > 0? psums[j] - psums[i-1] : psums[j];
                res = max(res, sum/(j-i+1));
            }
        }
        return res;
    }
};