github.com/phillinzzz/newBsc@v1.1.6/consensus/ethash/algorithm.go (about) 1 // Copyright 2017 The go-ethereum Authors 2 // This file is part of the go-ethereum library. 3 // 4 // The go-ethereum library is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Lesser General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // The go-ethereum library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Lesser General Public License for more details. 13 // 14 // You should have received a copy of the GNU Lesser General Public License 15 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. 16 17 package ethash 18 19 import ( 20 "encoding/binary" 21 "hash" 22 "math/big" 23 "reflect" 24 "runtime" 25 "sync" 26 "sync/atomic" 27 "time" 28 "unsafe" 29 30 "github.com/phillinzzz/newBsc/common" 31 "github.com/phillinzzz/newBsc/common/bitutil" 32 "github.com/phillinzzz/newBsc/common/gopool" 33 "github.com/phillinzzz/newBsc/crypto" 34 "github.com/phillinzzz/newBsc/log" 35 "golang.org/x/crypto/sha3" 36 ) 37 38 const ( 39 datasetInitBytes = 1 << 30 // Bytes in dataset at genesis 40 datasetGrowthBytes = 1 << 23 // Dataset growth per epoch 41 cacheInitBytes = 1 << 24 // Bytes in cache at genesis 42 cacheGrowthBytes = 1 << 17 // Cache growth per epoch 43 epochLength = 30000 // Blocks per epoch 44 mixBytes = 128 // Width of mix 45 hashBytes = 64 // Hash length in bytes 46 hashWords = 16 // Number of 32 bit ints in a hash 47 datasetParents = 256 // Number of parents of each dataset element 48 cacheRounds = 3 // Number of rounds in cache production 49 loopAccesses = 64 // Number of accesses in hashimoto loop 50 ) 51 52 // cacheSize returns the size of the ethash verification cache that belongs to a certain 53 // block number. 54 func cacheSize(block uint64) uint64 { 55 epoch := int(block / epochLength) 56 if epoch < maxEpoch { 57 return cacheSizes[epoch] 58 } 59 return calcCacheSize(epoch) 60 } 61 62 // calcCacheSize calculates the cache size for epoch. The cache size grows linearly, 63 // however, we always take the highest prime below the linearly growing threshold in order 64 // to reduce the risk of accidental regularities leading to cyclic behavior. 65 func calcCacheSize(epoch int) uint64 { 66 size := cacheInitBytes + cacheGrowthBytes*uint64(epoch) - hashBytes 67 for !new(big.Int).SetUint64(size / hashBytes).ProbablyPrime(1) { // Always accurate for n < 2^64 68 size -= 2 * hashBytes 69 } 70 return size 71 } 72 73 // datasetSize returns the size of the ethash mining dataset that belongs to a certain 74 // block number. 75 func datasetSize(block uint64) uint64 { 76 epoch := int(block / epochLength) 77 if epoch < maxEpoch { 78 return datasetSizes[epoch] 79 } 80 return calcDatasetSize(epoch) 81 } 82 83 // calcDatasetSize calculates the dataset size for epoch. The dataset size grows linearly, 84 // however, we always take the highest prime below the linearly growing threshold in order 85 // to reduce the risk of accidental regularities leading to cyclic behavior. 86 func calcDatasetSize(epoch int) uint64 { 87 size := datasetInitBytes + datasetGrowthBytes*uint64(epoch) - mixBytes 88 for !new(big.Int).SetUint64(size / mixBytes).ProbablyPrime(1) { // Always accurate for n < 2^64 89 size -= 2 * mixBytes 90 } 91 return size 92 } 93 94 // hasher is a repetitive hasher allowing the same hash data structures to be 95 // reused between hash runs instead of requiring new ones to be created. 96 type hasher func(dest []byte, data []byte) 97 98 // makeHasher creates a repetitive hasher, allowing the same hash data structures to 99 // be reused between hash runs instead of requiring new ones to be created. The returned 100 // function is not thread safe! 101 func makeHasher(h hash.Hash) hasher { 102 // sha3.state supports Read to get the sum, use it to avoid the overhead of Sum. 103 // Read alters the state but we reset the hash before every operation. 104 type readerHash interface { 105 hash.Hash 106 Read([]byte) (int, error) 107 } 108 rh, ok := h.(readerHash) 109 if !ok { 110 panic("can't find Read method on hash") 111 } 112 outputLen := rh.Size() 113 return func(dest []byte, data []byte) { 114 rh.Reset() 115 rh.Write(data) 116 rh.Read(dest[:outputLen]) 117 } 118 } 119 120 // seedHash is the seed to use for generating a verification cache and the mining 121 // dataset. 122 func seedHash(block uint64) []byte { 123 seed := make([]byte, 32) 124 if block < epochLength { 125 return seed 126 } 127 keccak256 := makeHasher(sha3.NewLegacyKeccak256()) 128 for i := 0; i < int(block/epochLength); i++ { 129 keccak256(seed, seed) 130 } 131 return seed 132 } 133 134 // generateCache creates a verification cache of a given size for an input seed. 135 // The cache production process involves first sequentially filling up 32 MB of 136 // memory, then performing two passes of Sergio Demian Lerner's RandMemoHash 137 // algorithm from Strict Memory Hard Hashing Functions (2014). The output is a 138 // set of 524288 64-byte values. 139 // This method places the result into dest in machine byte order. 140 func generateCache(dest []uint32, epoch uint64, seed []byte) { 141 // Print some debug logs to allow analysis on low end devices 142 logger := log.New("epoch", epoch) 143 144 start := time.Now() 145 defer func() { 146 elapsed := time.Since(start) 147 148 logFn := logger.Debug 149 if elapsed > 3*time.Second { 150 logFn = logger.Info 151 } 152 logFn("Generated ethash verification cache", "elapsed", common.PrettyDuration(elapsed)) 153 }() 154 // Convert our destination slice to a byte buffer 155 var cache []byte 156 cacheHdr := (*reflect.SliceHeader)(unsafe.Pointer(&cache)) 157 dstHdr := (*reflect.SliceHeader)(unsafe.Pointer(&dest)) 158 cacheHdr.Data = dstHdr.Data 159 cacheHdr.Len = dstHdr.Len * 4 160 cacheHdr.Cap = dstHdr.Cap * 4 161 162 // Calculate the number of theoretical rows (we'll store in one buffer nonetheless) 163 size := uint64(len(cache)) 164 rows := int(size) / hashBytes 165 166 // Start a monitoring goroutine to report progress on low end devices 167 var progress uint32 168 169 done := make(chan struct{}) 170 defer close(done) 171 172 gopool.Submit(func() { 173 for { 174 select { 175 case <-done: 176 return 177 case <-time.After(3 * time.Second): 178 logger.Info("Generating ethash verification cache", "percentage", atomic.LoadUint32(&progress)*100/uint32(rows)/(cacheRounds+1), "elapsed", common.PrettyDuration(time.Since(start))) 179 } 180 } 181 }) 182 // Create a hasher to reuse between invocations 183 keccak512 := makeHasher(sha3.NewLegacyKeccak512()) 184 185 // Sequentially produce the initial dataset 186 keccak512(cache, seed) 187 for offset := uint64(hashBytes); offset < size; offset += hashBytes { 188 keccak512(cache[offset:], cache[offset-hashBytes:offset]) 189 atomic.AddUint32(&progress, 1) 190 } 191 // Use a low-round version of randmemohash 192 temp := make([]byte, hashBytes) 193 194 for i := 0; i < cacheRounds; i++ { 195 for j := 0; j < rows; j++ { 196 var ( 197 srcOff = ((j - 1 + rows) % rows) * hashBytes 198 dstOff = j * hashBytes 199 xorOff = (binary.LittleEndian.Uint32(cache[dstOff:]) % uint32(rows)) * hashBytes 200 ) 201 bitutil.XORBytes(temp, cache[srcOff:srcOff+hashBytes], cache[xorOff:xorOff+hashBytes]) 202 keccak512(cache[dstOff:], temp) 203 204 atomic.AddUint32(&progress, 1) 205 } 206 } 207 // Swap the byte order on big endian systems and return 208 if !isLittleEndian() { 209 swap(cache) 210 } 211 } 212 213 // swap changes the byte order of the buffer assuming a uint32 representation. 214 func swap(buffer []byte) { 215 for i := 0; i < len(buffer); i += 4 { 216 binary.BigEndian.PutUint32(buffer[i:], binary.LittleEndian.Uint32(buffer[i:])) 217 } 218 } 219 220 // fnv is an algorithm inspired by the FNV hash, which in some cases is used as 221 // a non-associative substitute for XOR. Note that we multiply the prime with 222 // the full 32-bit input, in contrast with the FNV-1 spec which multiplies the 223 // prime with one byte (octet) in turn. 224 func fnv(a, b uint32) uint32 { 225 return a*0x01000193 ^ b 226 } 227 228 // fnvHash mixes in data into mix using the ethash fnv method. 229 func fnvHash(mix []uint32, data []uint32) { 230 for i := 0; i < len(mix); i++ { 231 mix[i] = mix[i]*0x01000193 ^ data[i] 232 } 233 } 234 235 // generateDatasetItem combines data from 256 pseudorandomly selected cache nodes, 236 // and hashes that to compute a single dataset node. 237 func generateDatasetItem(cache []uint32, index uint32, keccak512 hasher) []byte { 238 // Calculate the number of theoretical rows (we use one buffer nonetheless) 239 rows := uint32(len(cache) / hashWords) 240 241 // Initialize the mix 242 mix := make([]byte, hashBytes) 243 244 binary.LittleEndian.PutUint32(mix, cache[(index%rows)*hashWords]^index) 245 for i := 1; i < hashWords; i++ { 246 binary.LittleEndian.PutUint32(mix[i*4:], cache[(index%rows)*hashWords+uint32(i)]) 247 } 248 keccak512(mix, mix) 249 250 // Convert the mix to uint32s to avoid constant bit shifting 251 intMix := make([]uint32, hashWords) 252 for i := 0; i < len(intMix); i++ { 253 intMix[i] = binary.LittleEndian.Uint32(mix[i*4:]) 254 } 255 // fnv it with a lot of random cache nodes based on index 256 for i := uint32(0); i < datasetParents; i++ { 257 parent := fnv(index^i, intMix[i%16]) % rows 258 fnvHash(intMix, cache[parent*hashWords:]) 259 } 260 // Flatten the uint32 mix into a binary one and return 261 for i, val := range intMix { 262 binary.LittleEndian.PutUint32(mix[i*4:], val) 263 } 264 keccak512(mix, mix) 265 return mix 266 } 267 268 // generateDataset generates the entire ethash dataset for mining. 269 // This method places the result into dest in machine byte order. 270 func generateDataset(dest []uint32, epoch uint64, cache []uint32) { 271 // Print some debug logs to allow analysis on low end devices 272 logger := log.New("epoch", epoch) 273 274 start := time.Now() 275 defer func() { 276 elapsed := time.Since(start) 277 278 logFn := logger.Debug 279 if elapsed > 3*time.Second { 280 logFn = logger.Info 281 } 282 logFn("Generated ethash verification cache", "elapsed", common.PrettyDuration(elapsed)) 283 }() 284 285 // Figure out whether the bytes need to be swapped for the machine 286 swapped := !isLittleEndian() 287 288 // Convert our destination slice to a byte buffer 289 var dataset []byte 290 datasetHdr := (*reflect.SliceHeader)(unsafe.Pointer(&dataset)) 291 destHdr := (*reflect.SliceHeader)(unsafe.Pointer(&dest)) 292 datasetHdr.Data = destHdr.Data 293 datasetHdr.Len = destHdr.Len * 4 294 datasetHdr.Cap = destHdr.Cap * 4 295 296 // Generate the dataset on many goroutines since it takes a while 297 threads := runtime.NumCPU() 298 size := uint64(len(dataset)) 299 300 var pend sync.WaitGroup 301 pend.Add(threads) 302 303 var progress uint64 304 for i := 0; i < threads; i++ { 305 go func(id int) { 306 defer pend.Done() 307 308 // Create a hasher to reuse between invocations 309 keccak512 := makeHasher(sha3.NewLegacyKeccak512()) 310 311 // Calculate the data segment this thread should generate 312 batch := (size + hashBytes*uint64(threads) - 1) / (hashBytes * uint64(threads)) 313 first := uint64(id) * batch 314 limit := first + batch 315 if limit > size/hashBytes { 316 limit = size / hashBytes 317 } 318 // Calculate the dataset segment 319 percent := size / hashBytes / 100 320 for index := first; index < limit; index++ { 321 item := generateDatasetItem(cache, uint32(index), keccak512) 322 if swapped { 323 swap(item) 324 } 325 copy(dataset[index*hashBytes:], item) 326 327 if status := atomic.AddUint64(&progress, 1); status%percent == 0 { 328 logger.Info("Generating DAG in progress", "percentage", (status*100)/(size/hashBytes), "elapsed", common.PrettyDuration(time.Since(start))) 329 } 330 } 331 }(i) 332 } 333 // Wait for all the generators to finish and return 334 pend.Wait() 335 } 336 337 // hashimoto aggregates data from the full dataset in order to produce our final 338 // value for a particular header hash and nonce. 339 func hashimoto(hash []byte, nonce uint64, size uint64, lookup func(index uint32) []uint32) ([]byte, []byte) { 340 // Calculate the number of theoretical rows (we use one buffer nonetheless) 341 rows := uint32(size / mixBytes) 342 343 // Combine header+nonce into a 64 byte seed 344 seed := make([]byte, 40) 345 copy(seed, hash) 346 binary.LittleEndian.PutUint64(seed[32:], nonce) 347 348 seed = crypto.Keccak512(seed) 349 seedHead := binary.LittleEndian.Uint32(seed) 350 351 // Start the mix with replicated seed 352 mix := make([]uint32, mixBytes/4) 353 for i := 0; i < len(mix); i++ { 354 mix[i] = binary.LittleEndian.Uint32(seed[i%16*4:]) 355 } 356 // Mix in random dataset nodes 357 temp := make([]uint32, len(mix)) 358 359 for i := 0; i < loopAccesses; i++ { 360 parent := fnv(uint32(i)^seedHead, mix[i%len(mix)]) % rows 361 for j := uint32(0); j < mixBytes/hashBytes; j++ { 362 copy(temp[j*hashWords:], lookup(2*parent+j)) 363 } 364 fnvHash(mix, temp) 365 } 366 // Compress mix 367 for i := 0; i < len(mix); i += 4 { 368 mix[i/4] = fnv(fnv(fnv(mix[i], mix[i+1]), mix[i+2]), mix[i+3]) 369 } 370 mix = mix[:len(mix)/4] 371 372 digest := make([]byte, common.HashLength) 373 for i, val := range mix { 374 binary.LittleEndian.PutUint32(digest[i*4:], val) 375 } 376 return digest, crypto.Keccak256(append(seed, digest...)) 377 } 378 379 // hashimotoLight aggregates data from the full dataset (using only a small 380 // in-memory cache) in order to produce our final value for a particular header 381 // hash and nonce. 382 func hashimotoLight(size uint64, cache []uint32, hash []byte, nonce uint64) ([]byte, []byte) { 383 keccak512 := makeHasher(sha3.NewLegacyKeccak512()) 384 385 lookup := func(index uint32) []uint32 { 386 rawData := generateDatasetItem(cache, index, keccak512) 387 388 data := make([]uint32, len(rawData)/4) 389 for i := 0; i < len(data); i++ { 390 data[i] = binary.LittleEndian.Uint32(rawData[i*4:]) 391 } 392 return data 393 } 394 return hashimoto(hash, nonce, size, lookup) 395 } 396 397 // hashimotoFull aggregates data from the full dataset (using the full in-memory 398 // dataset) in order to produce our final value for a particular header hash and 399 // nonce. 400 func hashimotoFull(dataset []uint32, hash []byte, nonce uint64) ([]byte, []byte) { 401 lookup := func(index uint32) []uint32 { 402 offset := index * hashWords 403 return dataset[offset : offset+hashWords] 404 } 405 return hashimoto(hash, nonce, uint64(len(dataset))*4, lookup) 406 } 407 408 const maxEpoch = 2048 409 410 // datasetSizes is a lookup table for the ethash dataset size for the first 2048 411 // epochs (i.e. 61440000 blocks). 412 var datasetSizes = [maxEpoch]uint64{ 413 1073739904, 1082130304, 1090514816, 1098906752, 1107293056, 414 1115684224, 1124070016, 1132461952, 1140849536, 1149232768, 415 1157627776, 1166013824, 1174404736, 1182786944, 1191180416, 416 1199568512, 1207958912, 1216345216, 1224732032, 1233124736, 417 1241513344, 1249902464, 1258290304, 1266673792, 1275067264, 418 1283453312, 1291844992, 1300234112, 1308619904, 1317010048, 419 1325397376, 1333787776, 1342176128, 1350561664, 1358954368, 420 1367339392, 1375731584, 1384118144, 1392507008, 1400897408, 421 1409284736, 1417673344, 1426062464, 1434451072, 1442839168, 422 1451229056, 1459615616, 1468006016, 1476394112, 1484782976, 423 1493171584, 1501559168, 1509948032, 1518337664, 1526726528, 424 1535114624, 1543503488, 1551892096, 1560278656, 1568669056, 425 1577056384, 1585446272, 1593831296, 1602219392, 1610610304, 426 1619000192, 1627386752, 1635773824, 1644164224, 1652555648, 427 1660943488, 1669332608, 1677721216, 1686109312, 1694497664, 428 1702886272, 1711274624, 1719661184, 1728047744, 1736434816, 429 1744829056, 1753218944, 1761606272, 1769995904, 1778382464, 430 1786772864, 1795157888, 1803550592, 1811937664, 1820327552, 431 1828711552, 1837102976, 1845488768, 1853879936, 1862269312, 432 1870656896, 1879048064, 1887431552, 1895825024, 1904212096, 433 1912601216, 1920988544, 1929379456, 1937765504, 1946156672, 434 1954543232, 1962932096, 1971321728, 1979707264, 1988093056, 435 1996487552, 2004874624, 2013262208, 2021653888, 2030039936, 436 2038430848, 2046819968, 2055208576, 2063596672, 2071981952, 437 2080373632, 2088762752, 2097149056, 2105539712, 2113928576, 438 2122315136, 2130700672, 2139092608, 2147483264, 2155872128, 439 2164257664, 2172642176, 2181035392, 2189426048, 2197814912, 440 2206203008, 2214587264, 2222979712, 2231367808, 2239758208, 441 2248145024, 2256527744, 2264922752, 2273312128, 2281701248, 442 2290086272, 2298476672, 2306867072, 2315251072, 2323639168, 443 2332032128, 2340420224, 2348808064, 2357196416, 2365580416, 444 2373966976, 2382363008, 2390748544, 2399139968, 2407530368, 445 2415918976, 2424307328, 2432695424, 2441084288, 2449472384, 446 2457861248, 2466247808, 2474637184, 2483026816, 2491414144, 447 2499803776, 2508191872, 2516582272, 2524970368, 2533359232, 448 2541743488, 2550134144, 2558525056, 2566913408, 2575301504, 449 2583686528, 2592073856, 2600467328, 2608856192, 2617240448, 450 2625631616, 2634022016, 2642407552, 2650796416, 2659188352, 451 2667574912, 2675965312, 2684352896, 2692738688, 2701130624, 452 2709518464, 2717907328, 2726293376, 2734685056, 2743073152, 453 2751462016, 2759851648, 2768232832, 2776625536, 2785017728, 454 2793401984, 2801794432, 2810182016, 2818571648, 2826959488, 455 2835349376, 2843734144, 2852121472, 2860514432, 2868900992, 456 2877286784, 2885676928, 2894069632, 2902451584, 2910843008, 457 2919234688, 2927622784, 2936011648, 2944400768, 2952789376, 458 2961177728, 2969565568, 2977951616, 2986338944, 2994731392, 459 3003120256, 3011508352, 3019895936, 3028287104, 3036675968, 460 3045063808, 3053452928, 3061837696, 3070228352, 3078615424, 461 3087003776, 3095394944, 3103782272, 3112173184, 3120562048, 462 3128944768, 3137339264, 3145725056, 3154109312, 3162505088, 463 3170893184, 3179280256, 3187669376, 3196056704, 3204445568, 464 3212836736, 3221224064, 3229612928, 3238002304, 3246391168, 465 3254778496, 3263165824, 3271556224, 3279944576, 3288332416, 466 3296719232, 3305110912, 3313500032, 3321887104, 3330273152, 467 3338658944, 3347053184, 3355440512, 3363827072, 3372220288, 468 3380608384, 3388997504, 3397384576, 3405774208, 3414163072, 469 3422551936, 3430937984, 3439328384, 3447714176, 3456104576, 470 3464493952, 3472883584, 3481268864, 3489655168, 3498048896, 471 3506434432, 3514826368, 3523213952, 3531603584, 3539987072, 472 3548380288, 3556763264, 3565157248, 3573545344, 3581934464, 473 3590324096, 3598712704, 3607098752, 3615488384, 3623877248, 474 3632265856, 3640646528, 3649043584, 3657430144, 3665821568, 475 3674207872, 3682597504, 3690984832, 3699367808, 3707764352, 476 3716152448, 3724541056, 3732925568, 3741318016, 3749706368, 477 3758091136, 3766481536, 3774872704, 3783260032, 3791650432, 478 3800036224, 3808427648, 3816815488, 3825204608, 3833592704, 479 3841981568, 3850370432, 3858755968, 3867147904, 3875536256, 480 3883920512, 3892313728, 3900702592, 3909087872, 3917478784, 481 3925868416, 3934256512, 3942645376, 3951032192, 3959422336, 482 3967809152, 3976200064, 3984588416, 3992974976, 4001363584, 483 4009751168, 4018141312, 4026530432, 4034911616, 4043308928, 484 4051695488, 4060084352, 4068472448, 4076862848, 4085249408, 485 4093640576, 4102028416, 4110413696, 4118805632, 4127194496, 486 4135583104, 4143971968, 4152360832, 4160746112, 4169135744, 487 4177525888, 4185912704, 4194303616, 4202691968, 4211076736, 488 4219463552, 4227855488, 4236246656, 4244633728, 4253022848, 489 4261412224, 4269799808, 4278184832, 4286578048, 4294962304, 490 4303349632, 4311743104, 4320130432, 4328521088, 4336909184, 491 4345295488, 4353687424, 4362073472, 4370458496, 4378852736, 492 4387238528, 4395630208, 4404019072, 4412407424, 4420790656, 493 4429182848, 4437571456, 4445962112, 4454344064, 4462738048, 494 4471119232, 4479516544, 4487904128, 4496289664, 4504682368, 495 4513068416, 4521459584, 4529846144, 4538232704, 4546619776, 496 4555010176, 4563402112, 4571790208, 4580174464, 4588567936, 497 4596957056, 4605344896, 4613734016, 4622119808, 4630511488, 498 4638898816, 4647287936, 4655675264, 4664065664, 4672451968, 499 4680842624, 4689231488, 4697620352, 4706007424, 4714397056, 500 4722786176, 4731173248, 4739562368, 4747951744, 4756340608, 501 4764727936, 4773114496, 4781504384, 4789894784, 4798283648, 502 4806667648, 4815059584, 4823449472, 4831835776, 4840226176, 503 4848612224, 4857003392, 4865391488, 4873780096, 4882169728, 504 4890557312, 4898946944, 4907333248, 4915722368, 4924110976, 505 4932499328, 4940889728, 4949276032, 4957666432, 4966054784, 506 4974438016, 4982831488, 4991221376, 4999607168, 5007998848, 507 5016386432, 5024763776, 5033164672, 5041544576, 5049941888, 508 5058329728, 5066717056, 5075107456, 5083494272, 5091883904, 509 5100273536, 5108662144, 5117048192, 5125436032, 5133827456, 510 5142215296, 5150605184, 5158993024, 5167382144, 5175769472, 511 5184157568, 5192543872, 5200936064, 5209324928, 5217711232, 512 5226102656, 5234490496, 5242877312, 5251263872, 5259654016, 513 5268040832, 5276434304, 5284819328, 5293209728, 5301598592, 514 5309986688, 5318374784, 5326764416, 5335151488, 5343542144, 515 5351929472, 5360319872, 5368706944, 5377096576, 5385484928, 516 5393871232, 5402263424, 5410650496, 5419040384, 5427426944, 517 5435816576, 5444205952, 5452594816, 5460981376, 5469367936, 518 5477760896, 5486148736, 5494536832, 5502925952, 5511315328, 519 5519703424, 5528089984, 5536481152, 5544869504, 5553256064, 520 5561645696, 5570032768, 5578423936, 5586811264, 5595193216, 521 5603585408, 5611972736, 5620366208, 5628750464, 5637143936, 522 5645528192, 5653921408, 5662310272, 5670694784, 5679082624, 523 5687474048, 5695864448, 5704251008, 5712641408, 5721030272, 524 5729416832, 5737806208, 5746194304, 5754583936, 5762969984, 525 5771358592, 5779748224, 5788137856, 5796527488, 5804911232, 526 5813300608, 5821692544, 5830082176, 5838468992, 5846855552, 527 5855247488, 5863636096, 5872024448, 5880411008, 5888799872, 528 5897186432, 5905576832, 5913966976, 5922352768, 5930744704, 529 5939132288, 5947522432, 5955911296, 5964299392, 5972688256, 530 5981074304, 5989465472, 5997851008, 6006241408, 6014627968, 531 6023015552, 6031408256, 6039796096, 6048185216, 6056574848, 532 6064963456, 6073351808, 6081736064, 6090128768, 6098517632, 533 6106906496, 6115289216, 6123680896, 6132070016, 6140459648, 534 6148849024, 6157237376, 6165624704, 6174009728, 6182403712, 535 6190792064, 6199176064, 6207569792, 6215952256, 6224345216, 536 6232732544, 6241124224, 6249510272, 6257899136, 6266287744, 537 6274676864, 6283065728, 6291454336, 6299843456, 6308232064, 538 6316620928, 6325006208, 6333395584, 6341784704, 6350174848, 539 6358562176, 6366951296, 6375337856, 6383729536, 6392119168, 540 6400504192, 6408895616, 6417283456, 6425673344, 6434059136, 541 6442444672, 6450837376, 6459223424, 6467613056, 6476004224, 542 6484393088, 6492781952, 6501170048, 6509555072, 6517947008, 543 6526336384, 6534725504, 6543112832, 6551500672, 6559888768, 544 6568278656, 6576662912, 6585055616, 6593443456, 6601834112, 545 6610219648, 6618610304, 6626999168, 6635385472, 6643777408, 546 6652164224, 6660552832, 6668941952, 6677330048, 6685719424, 547 6694107776, 6702493568, 6710882176, 6719274112, 6727662976, 548 6736052096, 6744437632, 6752825984, 6761213824, 6769604224, 549 6777993856, 6786383488, 6794770816, 6803158144, 6811549312, 550 6819937664, 6828326528, 6836706176, 6845101696, 6853491328, 551 6861880448, 6870269312, 6878655104, 6887046272, 6895433344, 552 6903822208, 6912212864, 6920596864, 6928988288, 6937377152, 553 6945764992, 6954149248, 6962544256, 6970928768, 6979317376, 554 6987709312, 6996093824, 7004487296, 7012875392, 7021258624, 555 7029652352, 7038038912, 7046427776, 7054818944, 7063207808, 556 7071595136, 7079980928, 7088372608, 7096759424, 7105149824, 557 7113536896, 7121928064, 7130315392, 7138699648, 7147092352, 558 7155479168, 7163865728, 7172249984, 7180648064, 7189036672, 559 7197424768, 7205810816, 7214196608, 7222589824, 7230975104, 560 7239367552, 7247755904, 7256145536, 7264533376, 7272921472, 561 7281308032, 7289694848, 7298088832, 7306471808, 7314864512, 562 7323253888, 7331643008, 7340029568, 7348419712, 7356808832, 563 7365196672, 7373585792, 7381973888, 7390362752, 7398750592, 564 7407138944, 7415528576, 7423915648, 7432302208, 7440690304, 565 7449080192, 7457472128, 7465860992, 7474249088, 7482635648, 566 7491023744, 7499412608, 7507803008, 7516192384, 7524579968, 567 7532967296, 7541358464, 7549745792, 7558134656, 7566524032, 568 7574912896, 7583300992, 7591690112, 7600075136, 7608466816, 569 7616854912, 7625244544, 7633629824, 7642020992, 7650410368, 570 7658794112, 7667187328, 7675574912, 7683961984, 7692349568, 571 7700739712, 7709130368, 7717519232, 7725905536, 7734295424, 572 7742683264, 7751069056, 7759457408, 7767849088, 7776238208, 573 7784626816, 7793014912, 7801405312, 7809792128, 7818179968, 574 7826571136, 7834957184, 7843347328, 7851732352, 7860124544, 575 7868512384, 7876902016, 7885287808, 7893679744, 7902067072, 576 7910455936, 7918844288, 7927230848, 7935622784, 7944009344, 577 7952400256, 7960786048, 7969176704, 7977565312, 7985953408, 578 7994339968, 8002730368, 8011119488, 8019508096, 8027896192, 579 8036285056, 8044674688, 8053062272, 8061448832, 8069838464, 580 8078227328, 8086616704, 8095006592, 8103393664, 8111783552, 581 8120171392, 8128560256, 8136949376, 8145336704, 8153726848, 582 8162114944, 8170503296, 8178891904, 8187280768, 8195669632, 583 8204058496, 8212444544, 8220834176, 8229222272, 8237612672, 584 8246000768, 8254389376, 8262775168, 8271167104, 8279553664, 585 8287944064, 8296333184, 8304715136, 8313108352, 8321497984, 586 8329885568, 8338274432, 8346663296, 8355052928, 8363441536, 587 8371828352, 8380217984, 8388606592, 8396996224, 8405384576, 588 8413772672, 8422161536, 8430549376, 8438939008, 8447326592, 589 8455715456, 8464104832, 8472492928, 8480882048, 8489270656, 590 8497659776, 8506045312, 8514434944, 8522823808, 8531208832, 591 8539602304, 8547990656, 8556378752, 8564768384, 8573154176, 592 8581542784, 8589933952, 8598322816, 8606705024, 8615099264, 593 8623487872, 8631876992, 8640264064, 8648653952, 8657040256, 594 8665430656, 8673820544, 8682209152, 8690592128, 8698977152, 595 8707374464, 8715763328, 8724151424, 8732540032, 8740928384, 596 8749315712, 8757704576, 8766089344, 8774480768, 8782871936, 597 8791260032, 8799645824, 8808034432, 8816426368, 8824812928, 598 8833199488, 8841591424, 8849976448, 8858366336, 8866757248, 599 8875147136, 8883532928, 8891923328, 8900306816, 8908700288, 600 8917088384, 8925478784, 8933867392, 8942250368, 8950644608, 601 8959032704, 8967420544, 8975809664, 8984197504, 8992584064, 602 9000976256, 9009362048, 9017752448, 9026141312, 9034530688, 603 9042917504, 9051307904, 9059694208, 9068084864, 9076471424, 604 9084861824, 9093250688, 9101638528, 9110027648, 9118416512, 605 9126803584, 9135188096, 9143581312, 9151969664, 9160356224, 606 9168747136, 9177134464, 9185525632, 9193910144, 9202302848, 607 9210690688, 9219079552, 9227465344, 9235854464, 9244244864, 608 9252633472, 9261021824, 9269411456, 9277799296, 9286188928, 609 9294574208, 9302965888, 9311351936, 9319740032, 9328131968, 610 9336516736, 9344907392, 9353296768, 9361685888, 9370074752, 611 9378463616, 9386849408, 9395239808, 9403629184, 9412016512, 612 9420405376, 9428795008, 9437181568, 9445570688, 9453960832, 613 9462346624, 9470738048, 9479121536, 9487515008, 9495903616, 614 9504289664, 9512678528, 9521067904, 9529456256, 9537843584, 615 9546233728, 9554621312, 9563011456, 9571398784, 9579788672, 616 9588178304, 9596567168, 9604954496, 9613343104, 9621732992, 617 9630121856, 9638508416, 9646898816, 9655283584, 9663675776, 618 9672061312, 9680449664, 9688840064, 9697230464, 9705617536, 619 9714003584, 9722393984, 9730772608, 9739172224, 9747561088, 620 9755945344, 9764338816, 9772726144, 9781116544, 9789503872, 621 9797892992, 9806282624, 9814670464, 9823056512, 9831439232, 622 9839833984, 9848224384, 9856613504, 9865000576, 9873391232, 623 9881772416, 9890162816, 9898556288, 9906940544, 9915333248, 624 9923721088, 9932108672, 9940496512, 9948888448, 9957276544, 625 9965666176, 9974048384, 9982441088, 9990830464, 9999219584, 626 10007602816, 10015996544, 10024385152, 10032774016, 10041163648, 627 10049548928, 10057940096, 10066329472, 10074717824, 10083105152, 628 10091495296, 10099878784, 10108272256, 10116660608, 10125049216, 629 10133437312, 10141825664, 10150213504, 10158601088, 10166991232, 630 10175378816, 10183766144, 10192157312, 10200545408, 10208935552, 631 10217322112, 10225712768, 10234099328, 10242489472, 10250876032, 632 10259264896, 10267656064, 10276042624, 10284429184, 10292820352, 633 10301209472, 10309598848, 10317987712, 10326375296, 10334763392, 634 10343153536, 10351541632, 10359930752, 10368318592, 10376707456, 635 10385096576, 10393484672, 10401867136, 10410262144, 10418647424, 636 10427039104, 10435425664, 10443810176, 10452203648, 10460589952, 637 10468982144, 10477369472, 10485759104, 10494147712, 10502533504, 638 10510923392, 10519313536, 10527702656, 10536091264, 10544478592, 639 10552867712, 10561255808, 10569642368, 10578032768, 10586423168, 640 10594805632, 10603200128, 10611588992, 10619976064, 10628361344, 641 10636754048, 10645143424, 10653531776, 10661920384, 10670307968, 642 10678696832, 10687086464, 10695475072, 10703863168, 10712246144, 643 10720639616, 10729026688, 10737414784, 10745806208, 10754190976, 644 10762581376, 10770971264, 10779356288, 10787747456, 10796135552, 645 10804525184, 10812915584, 10821301888, 10829692288, 10838078336, 646 10846469248, 10854858368, 10863247232, 10871631488, 10880023424, 647 10888412032, 10896799616, 10905188992, 10913574016, 10921964672, 648 10930352768, 10938742912, 10947132544, 10955518592, 10963909504, 649 10972298368, 10980687488, 10989074816, 10997462912, 11005851776, 650 11014241152, 11022627712, 11031017344, 11039403904, 11047793024, 651 11056184704, 11064570752, 11072960896, 11081343872, 11089737856, 652 11098128256, 11106514816, 11114904448, 11123293568, 11131680128, 653 11140065152, 11148458368, 11156845696, 11165236864, 11173624192, 654 11182013824, 11190402688, 11198790784, 11207179136, 11215568768, 655 11223957376, 11232345728, 11240734592, 11249122688, 11257511296, 656 11265899648, 11274285952, 11282675584, 11291065472, 11299452544, 657 11307842432, 11316231296, 11324616832, 11333009024, 11341395584, 658 11349782656, 11358172288, 11366560384, 11374950016, 11383339648, 659 11391721856, 11400117376, 11408504192, 11416893568, 11425283456, 660 11433671552, 11442061184, 11450444672, 11458837888, 11467226752, 661 11475611776, 11484003968, 11492392064, 11500780672, 11509169024, 662 11517550976, 11525944448, 11534335616, 11542724224, 11551111808, 663 11559500672, 11567890304, 11576277376, 11584667008, 11593056128, 664 11601443456, 11609830016, 11618221952, 11626607488, 11634995072, 665 11643387776, 11651775104, 11660161664, 11668552576, 11676940928, 666 11685330304, 11693718656, 11702106496, 11710496128, 11718882688, 667 11727273088, 11735660416, 11744050048, 11752437376, 11760824704, 668 11769216128, 11777604736, 11785991296, 11794381952, 11802770048, 669 11811157888, 11819548544, 11827932544, 11836324736, 11844713344, 670 11853100928, 11861486464, 11869879936, 11878268032, 11886656896, 671 11895044992, 11903433088, 11911822976, 11920210816, 11928600448, 672 11936987264, 11945375872, 11953761152, 11962151296, 11970543488, 673 11978928512, 11987320448, 11995708288, 12004095104, 12012486272, 674 12020875136, 12029255552, 12037652096, 12046039168, 12054429568, 675 12062813824, 12071206528, 12079594624, 12087983744, 12096371072, 676 12104759936, 12113147264, 12121534592, 12129924992, 12138314624, 677 12146703232, 12155091584, 12163481216, 12171864704, 12180255872, 678 12188643968, 12197034112, 12205424512, 12213811328, 12222199424, 679 12230590336, 12238977664, 12247365248, 12255755392, 12264143488, 680 12272531584, 12280920448, 12289309568, 12297694592, 12306086528, 681 12314475392, 12322865024, 12331253632, 12339640448, 12348029312, 682 12356418944, 12364805248, 12373196672, 12381580928, 12389969024, 683 12398357632, 12406750592, 12415138432, 12423527552, 12431916416, 684 12440304512, 12448692352, 12457081216, 12465467776, 12473859968, 685 12482245504, 12490636672, 12499025536, 12507411584, 12515801728, 686 12524190592, 12532577152, 12540966272, 12549354368, 12557743232, 687 12566129536, 12574523264, 12582911872, 12591299456, 12599688064, 688 12608074624, 12616463488, 12624845696, 12633239936, 12641631616, 689 12650019968, 12658407296, 12666795136, 12675183232, 12683574656, 690 12691960192, 12700350592, 12708740224, 12717128576, 12725515904, 691 12733906816, 12742295168, 12750680192, 12759071872, 12767460736, 692 12775848832, 12784236928, 12792626816, 12801014656, 12809404288, 693 12817789312, 12826181504, 12834568832, 12842954624, 12851345792, 694 12859732352, 12868122496, 12876512128, 12884901248, 12893289088, 695 12901672832, 12910067584, 12918455168, 12926842496, 12935232896, 696 12943620736, 12952009856, 12960396928, 12968786816, 12977176192, 697 12985563776, 12993951104, 13002341504, 13010730368, 13019115392, 698 13027506304, 13035895168, 13044272512, 13052673152, 13061062528, 699 13069446272, 13077838976, 13086227072, 13094613632, 13103000192, 700 13111393664, 13119782528, 13128157568, 13136559232, 13144945024, 701 13153329536, 13161724288, 13170111872, 13178502784, 13186884736, 702 13195279744, 13203667072, 13212057472, 13220445824, 13228832128, 703 13237221248, 13245610624, 13254000512, 13262388352, 13270777472, 704 13279166336, 13287553408, 13295943296, 13304331904, 13312719488, 705 13321108096, 13329494656, 13337885824, 13346274944, 13354663808, 706 13363051136, 13371439232, 13379825024, 13388210816, 13396605056, 707 13404995456, 13413380224, 13421771392, 13430159744, 13438546048, 708 13446937216, 13455326848, 13463708288, 13472103808, 13480492672, 709 13488875648, 13497269888, 13505657728, 13514045312, 13522435712, 710 13530824576, 13539210112, 13547599232, 13555989376, 13564379008, 711 13572766336, 13581154432, 13589544832, 13597932928, 13606320512, 712 13614710656, 13623097472, 13631477632, 13639874944, 13648264064, 713 13656652928, 13665041792, 13673430656, 13681818496, 13690207616, 714 13698595712, 13706982272, 13715373184, 13723762048, 13732150144, 715 13740536704, 13748926592, 13757316224, 13765700992, 13774090112, 716 13782477952, 13790869376, 13799259008, 13807647872, 13816036736, 717 13824425344, 13832814208, 13841202304, 13849591424, 13857978752, 718 13866368896, 13874754688, 13883145344, 13891533184, 13899919232, 719 13908311168, 13916692096, 13925085056, 13933473152, 13941866368, 720 13950253696, 13958643584, 13967032192, 13975417216, 13983807616, 721 13992197504, 14000582272, 14008973696, 14017363072, 14025752192, 722 14034137984, 14042528384, 14050918016, 14059301504, 14067691648, 723 14076083584, 14084470144, 14092852352, 14101249664, 14109635968, 724 14118024832, 14126407552, 14134804352, 14143188608, 14151577984, 725 14159968384, 14168357248, 14176741504, 14185127296, 14193521024, 726 14201911424, 14210301824, 14218685056, 14227067264, 14235467392, 727 14243855488, 14252243072, 14260630144, 14269021568, 14277409408, 728 14285799296, 14294187904, 14302571392, 14310961792, 14319353728, 729 14327738752, 14336130944, 14344518784, 14352906368, 14361296512, 730 14369685376, 14378071424, 14386462592, 14394848128, 14403230848, 731 14411627392, 14420013952, 14428402304, 14436793472, 14445181568, 732 14453569664, 14461959808, 14470347904, 14478737024, 14487122816, 733 14495511424, 14503901824, 14512291712, 14520677504, 14529064832, 734 14537456768, 14545845632, 14554234496, 14562618496, 14571011456, 735 14579398784, 14587789184, 14596172672, 14604564608, 14612953984, 736 14621341312, 14629724288, 14638120832, 14646503296, 14654897536, 737 14663284864, 14671675264, 14680061056, 14688447616, 14696835968, 738 14705228416, 14713616768, 14722003328, 14730392192, 14738784128, 739 14747172736, 14755561088, 14763947648, 14772336512, 14780725376, 740 14789110144, 14797499776, 14805892736, 14814276992, 14822670208, 741 14831056256, 14839444352, 14847836032, 14856222848, 14864612992, 742 14872997504, 14881388672, 14889775744, 14898165376, 14906553472, 743 14914944896, 14923329664, 14931721856, 14940109696, 14948497024, 744 14956887424, 14965276544, 14973663616, 14982053248, 14990439808, 745 14998830976, 15007216768, 15015605888, 15023995264, 15032385152, 746 15040768384, 15049154944, 15057549184, 15065939072, 15074328448, 747 15082715008, 15091104128, 15099493504, 15107879296, 15116269184, 748 15124659584, 15133042304, 15141431936, 15149824384, 15158214272, 749 15166602368, 15174991232, 15183378304, 15191760512, 15200154496, 750 15208542592, 15216931712, 15225323392, 15233708416, 15242098048, 751 15250489216, 15258875264, 15267265408, 15275654528, 15284043136, 752 15292431488, 15300819584, 15309208192, 15317596544, 15325986176, 753 15334374784, 15342763648, 15351151744, 15359540608, 15367929728, 754 15376318336, 15384706432, 15393092992, 15401481856, 15409869952, 755 15418258816, 15426649984, 15435037568, 15443425664, 15451815296, 756 15460203392, 15468589184, 15476979328, 15485369216, 15493755776, 757 15502146944, 15510534272, 15518924416, 15527311232, 15535699072, 758 15544089472, 15552478336, 15560866688, 15569254528, 15577642624, 759 15586031488, 15594419072, 15602809472, 15611199104, 15619586432, 760 15627975296, 15636364928, 15644753792, 15653141888, 15661529216, 761 15669918848, 15678305152, 15686696576, 15695083136, 15703474048, 762 15711861632, 15720251264, 15728636288, 15737027456, 15745417088, 763 15753804928, 15762194048, 15770582656, 15778971008, 15787358336, 764 15795747712, 15804132224, 15812523392, 15820909696, 15829300096, 765 15837691264, 15846071936, 15854466944, 15862855808, 15871244672, 766 15879634816, 15888020608, 15896409728, 15904799104, 15913185152, 767 15921577088, 15929966464, 15938354816, 15946743424, 15955129472, 768 15963519872, 15971907968, 15980296064, 15988684928, 15997073024, 769 16005460864, 16013851264, 16022241152, 16030629248, 16039012736, 770 16047406976, 16055794816, 16064181376, 16072571264, 16080957824, 771 16089346688, 16097737856, 16106125184, 16114514816, 16122904192, 772 16131292544, 16139678848, 16148066944, 16156453504, 16164839552, 773 16173236096, 16181623424, 16190012032, 16198401152, 16206790528, 774 16215177344, 16223567744, 16231956352, 16240344704, 16248731008, 775 16257117824, 16265504384, 16273898624, 16282281856, 16290668672, 776 16299064192, 16307449216, 16315842176, 16324230016, 16332613504, 777 16341006464, 16349394304, 16357783168, 16366172288, 16374561664, 778 16382951296, 16391337856, 16399726208, 16408116352, 16416505472, 779 16424892032, 16433282176, 16441668224, 16450058624, 16458448768, 780 16466836864, 16475224448, 16483613056, 16492001408, 16500391808, 781 16508779648, 16517166976, 16525555328, 16533944192, 16542330752, 782 16550719616, 16559110528, 16567497088, 16575888512, 16584274816, 783 16592665472, 16601051008, 16609442944, 16617832064, 16626218624, 784 16634607488, 16642996096, 16651385728, 16659773824, 16668163712, 785 16676552576, 16684938112, 16693328768, 16701718144, 16710095488, 786 16718492288, 16726883968, 16735272832, 16743661184, 16752049792, 787 16760436608, 16768827008, 16777214336, 16785599104, 16793992832, 788 16802381696, 16810768768, 16819151744, 16827542656, 16835934848, 789 16844323712, 16852711552, 16861101952, 16869489536, 16877876864, 790 16886265728, 16894653056, 16903044736, 16911431296, 16919821696, 791 16928207488, 16936592768, 16944987776, 16953375616, 16961763968, 792 16970152832, 16978540928, 16986929536, 16995319168, 17003704448, 793 17012096896, 17020481152, 17028870784, 17037262208, 17045649536, 794 17054039936, 17062426496, 17070814336, 17079205504, 17087592064, 795 17095978112, 17104369024, 17112759424, 17121147776, 17129536384, 796 17137926016, 17146314368, 17154700928, 17163089792, 17171480192, 797 17179864192, 17188256896, 17196644992, 17205033856, 17213423488, 798 17221811072, 17230198912, 17238588032, 17246976896, 17255360384, 799 17263754624, 17272143232, 17280530048, 17288918912, 17297309312, 800 17305696384, 17314085504, 17322475136, 17330863744, 17339252096, 801 17347640192, 17356026496, 17364413824, 17372796544, 17381190016, 802 17389583488, 17397972608, 17406360704, 17414748544, 17423135872, 803 17431527296, 17439915904, 17448303232, 17456691584, 17465081728, 804 17473468288, 17481857408, 17490247552, 17498635904, 17507022464, 805 17515409024, 17523801728, 17532189824, 17540577664, 17548966016, 806 17557353344, 17565741184, 17574131584, 17582519168, 17590907008, 807 17599296128, 17607687808, 17616076672, 17624455808, 17632852352, 808 17641238656, 17649630848, 17658018944, 17666403968, 17674794112, 809 17683178368, 17691573376, 17699962496, 17708350592, 17716739968, 810 17725126528, 17733517184, 17741898112, 17750293888, 17758673024, 811 17767070336, 17775458432, 17783848832, 17792236928, 17800625536, 812 17809012352, 17817402752, 17825785984, 17834178944, 17842563968, 813 17850955648, 17859344512, 17867732864, 17876119424, 17884511872, 814 17892900224, 17901287296, 17909677696, 17918058112, 17926451072, 815 17934843776, 17943230848, 17951609216, 17960008576, 17968397696, 816 17976784256, 17985175424, 17993564032, 18001952128, 18010339712, 817 18018728576, 18027116672, 18035503232, 18043894144, 18052283264, 818 18060672128, 18069056384, 18077449856, 18085837184, 18094225792, 819 18102613376, 18111004544, 18119388544, 18127781248, 18136170368, 820 18144558976, 18152947328, 18161336192, 18169724288, 18178108544, 821 18186498944, 18194886784, 18203275648, 18211666048, 18220048768, 822 18228444544, 18236833408, 18245220736} 823 824 // cacheSizes is a lookup table for the ethash verification cache size for the 825 // first 2048 epochs (i.e. 61440000 blocks). 826 var cacheSizes = [maxEpoch]uint64{ 827 16776896, 16907456, 17039296, 17170112, 17301056, 17432512, 17563072, 828 17693888, 17824192, 17955904, 18087488, 18218176, 18349504, 18481088, 829 18611392, 18742336, 18874304, 19004224, 19135936, 19267264, 19398208, 830 19529408, 19660096, 19791424, 19922752, 20053952, 20184896, 20315968, 831 20446912, 20576576, 20709184, 20840384, 20971072, 21102272, 21233216, 832 21364544, 21494848, 21626816, 21757376, 21887552, 22019392, 22151104, 833 22281536, 22412224, 22543936, 22675264, 22806464, 22935872, 23068096, 834 23198272, 23330752, 23459008, 23592512, 23723968, 23854912, 23986112, 835 24116672, 24247616, 24378688, 24509504, 24640832, 24772544, 24903488, 836 25034432, 25165376, 25296704, 25427392, 25558592, 25690048, 25820096, 837 25951936, 26081728, 26214208, 26345024, 26476096, 26606656, 26737472, 838 26869184, 26998208, 27131584, 27262528, 27393728, 27523904, 27655744, 839 27786688, 27917888, 28049344, 28179904, 28311488, 28441792, 28573504, 840 28700864, 28835648, 28966208, 29096768, 29228608, 29359808, 29490752, 841 29621824, 29752256, 29882816, 30014912, 30144448, 30273728, 30406976, 842 30538432, 30670784, 30799936, 30932672, 31063744, 31195072, 31325248, 843 31456192, 31588288, 31719232, 31850432, 31981504, 32110784, 32243392, 844 32372672, 32505664, 32636608, 32767808, 32897344, 33029824, 33160768, 845 33289664, 33423296, 33554368, 33683648, 33816512, 33947456, 34076992, 846 34208704, 34340032, 34471744, 34600256, 34734016, 34864576, 34993984, 847 35127104, 35258176, 35386688, 35518528, 35650624, 35782336, 35910976, 848 36044608, 36175808, 36305728, 36436672, 36568384, 36699968, 36830656, 849 36961984, 37093312, 37223488, 37355072, 37486528, 37617472, 37747904, 850 37879232, 38009792, 38141888, 38272448, 38403392, 38535104, 38660672, 851 38795584, 38925632, 39059264, 39190336, 39320768, 39452096, 39581632, 852 39713984, 39844928, 39974848, 40107968, 40238144, 40367168, 40500032, 853 40631744, 40762816, 40894144, 41023552, 41155904, 41286208, 41418304, 854 41547712, 41680448, 41811904, 41942848, 42073792, 42204992, 42334912, 855 42467008, 42597824, 42729152, 42860096, 42991552, 43122368, 43253696, 856 43382848, 43515712, 43646912, 43777088, 43907648, 44039104, 44170432, 857 44302144, 44433344, 44564288, 44694976, 44825152, 44956864, 45088448, 858 45219008, 45350464, 45481024, 45612608, 45744064, 45874496, 46006208, 859 46136768, 46267712, 46399424, 46529344, 46660672, 46791488, 46923328, 860 47053504, 47185856, 47316928, 47447872, 47579072, 47710144, 47839936, 861 47971648, 48103232, 48234176, 48365248, 48496192, 48627136, 48757312, 862 48889664, 49020736, 49149248, 49283008, 49413824, 49545152, 49675712, 863 49807168, 49938368, 50069056, 50200256, 50331584, 50462656, 50593472, 864 50724032, 50853952, 50986048, 51117632, 51248576, 51379904, 51510848, 865 51641792, 51773248, 51903296, 52035136, 52164032, 52297664, 52427968, 866 52557376, 52690112, 52821952, 52952896, 53081536, 53213504, 53344576, 867 53475776, 53608384, 53738816, 53870528, 54000832, 54131776, 54263744, 868 54394688, 54525248, 54655936, 54787904, 54918592, 55049152, 55181248, 869 55312064, 55442752, 55574336, 55705024, 55836224, 55967168, 56097856, 870 56228672, 56358592, 56490176, 56621888, 56753728, 56884928, 57015488, 871 57146816, 57278272, 57409216, 57540416, 57671104, 57802432, 57933632, 872 58064576, 58195264, 58326976, 58457408, 58588864, 58720192, 58849984, 873 58981696, 59113024, 59243456, 59375552, 59506624, 59637568, 59768512, 874 59897792, 60030016, 60161984, 60293056, 60423872, 60554432, 60683968, 875 60817216, 60948032, 61079488, 61209664, 61341376, 61471936, 61602752, 876 61733696, 61865792, 61996736, 62127808, 62259136, 62389568, 62520512, 877 62651584, 62781632, 62910784, 63045056, 63176128, 63307072, 63438656, 878 63569216, 63700928, 63831616, 63960896, 64093888, 64225088, 64355392, 879 64486976, 64617664, 64748608, 64879424, 65009216, 65142464, 65273792, 880 65402816, 65535424, 65666752, 65797696, 65927744, 66060224, 66191296, 881 66321344, 66453056, 66584384, 66715328, 66846656, 66977728, 67108672, 882 67239104, 67370432, 67501888, 67631296, 67763776, 67895104, 68026304, 883 68157248, 68287936, 68419264, 68548288, 68681408, 68811968, 68942912, 884 69074624, 69205568, 69337024, 69467584, 69599168, 69729472, 69861184, 885 69989824, 70122944, 70253888, 70385344, 70515904, 70647232, 70778816, 886 70907968, 71040832, 71171648, 71303104, 71432512, 71564992, 71695168, 887 71826368, 71958464, 72089536, 72219712, 72350144, 72482624, 72613568, 888 72744512, 72875584, 73006144, 73138112, 73268672, 73400128, 73530944, 889 73662272, 73793344, 73924544, 74055104, 74185792, 74316992, 74448832, 890 74579392, 74710976, 74841664, 74972864, 75102784, 75233344, 75364544, 891 75497024, 75627584, 75759296, 75890624, 76021696, 76152256, 76283072, 892 76414144, 76545856, 76676672, 76806976, 76937792, 77070016, 77200832, 893 77331392, 77462464, 77593664, 77725376, 77856448, 77987776, 78118336, 894 78249664, 78380992, 78511424, 78642496, 78773056, 78905152, 79033664, 895 79166656, 79297472, 79429568, 79560512, 79690816, 79822784, 79953472, 896 80084672, 80214208, 80346944, 80477632, 80608576, 80740288, 80870848, 897 81002048, 81133504, 81264448, 81395648, 81525952, 81657536, 81786304, 898 81919808, 82050112, 82181312, 82311616, 82443968, 82573376, 82705984, 899 82835776, 82967744, 83096768, 83230528, 83359552, 83491264, 83622464, 900 83753536, 83886016, 84015296, 84147776, 84277184, 84409792, 84540608, 901 84672064, 84803008, 84934336, 85065152, 85193792, 85326784, 85458496, 902 85589312, 85721024, 85851968, 85982656, 86112448, 86244416, 86370112, 903 86506688, 86637632, 86769344, 86900672, 87031744, 87162304, 87293632, 904 87424576, 87555392, 87687104, 87816896, 87947968, 88079168, 88211264, 905 88341824, 88473152, 88603712, 88735424, 88862912, 88996672, 89128384, 906 89259712, 89390272, 89521984, 89652544, 89783872, 89914816, 90045376, 907 90177088, 90307904, 90438848, 90569152, 90700096, 90832832, 90963776, 908 91093696, 91223744, 91356992, 91486784, 91618496, 91749824, 91880384, 909 92012224, 92143552, 92273344, 92405696, 92536768, 92666432, 92798912, 910 92926016, 93060544, 93192128, 93322816, 93453632, 93583936, 93715136, 911 93845056, 93977792, 94109504, 94240448, 94371776, 94501184, 94632896, 912 94764224, 94895552, 95023424, 95158208, 95287744, 95420224, 95550016, 913 95681216, 95811904, 95943872, 96075328, 96203584, 96337856, 96468544, 914 96599744, 96731072, 96860992, 96992576, 97124288, 97254848, 97385536, 915 97517248, 97647808, 97779392, 97910464, 98041408, 98172608, 98303168, 916 98434496, 98565568, 98696768, 98827328, 98958784, 99089728, 99220928, 917 99352384, 99482816, 99614272, 99745472, 99876416, 100007104, 918 100138048, 100267072, 100401088, 100529984, 100662592, 100791872, 919 100925248, 101056064, 101187392, 101317952, 101449408, 101580608, 920 101711296, 101841728, 101973824, 102104896, 102235712, 102366016, 921 102498112, 102628672, 102760384, 102890432, 103021888, 103153472, 922 103284032, 103415744, 103545152, 103677248, 103808576, 103939648, 923 104070976, 104201792, 104332736, 104462528, 104594752, 104725952, 924 104854592, 104988608, 105118912, 105247808, 105381184, 105511232, 925 105643072, 105774784, 105903296, 106037056, 106167872, 106298944, 926 106429504, 106561472, 106691392, 106822592, 106954304, 107085376, 927 107216576, 107346368, 107478464, 107609792, 107739712, 107872192, 928 108003136, 108131392, 108265408, 108396224, 108527168, 108657344, 929 108789568, 108920384, 109049792, 109182272, 109312576, 109444928, 930 109572928, 109706944, 109837888, 109969088, 110099648, 110230976, 931 110362432, 110492992, 110624704, 110755264, 110886208, 111017408, 932 111148864, 111279296, 111410752, 111541952, 111673024, 111803456, 933 111933632, 112066496, 112196416, 112328512, 112457792, 112590784, 934 112715968, 112852672, 112983616, 113114944, 113244224, 113376448, 935 113505472, 113639104, 113770304, 113901376, 114031552, 114163264, 936 114294592, 114425536, 114556864, 114687424, 114818624, 114948544, 937 115080512, 115212224, 115343296, 115473472, 115605184, 115736128, 938 115867072, 115997248, 116128576, 116260288, 116391488, 116522944, 939 116652992, 116784704, 116915648, 117046208, 117178304, 117308608, 940 117440192, 117569728, 117701824, 117833024, 117964096, 118094656, 941 118225984, 118357312, 118489024, 118617536, 118749632, 118882112, 942 119012416, 119144384, 119275328, 119406016, 119537344, 119668672, 943 119798464, 119928896, 120061376, 120192832, 120321728, 120454336, 944 120584512, 120716608, 120848192, 120979136, 121109056, 121241408, 945 121372352, 121502912, 121634752, 121764416, 121895744, 122027072, 946 122157632, 122289088, 122421184, 122550592, 122682944, 122813888, 947 122945344, 123075776, 123207488, 123338048, 123468736, 123600704, 948 123731264, 123861952, 123993664, 124124608, 124256192, 124386368, 949 124518208, 124649024, 124778048, 124911296, 125041088, 125173696, 950 125303744, 125432896, 125566912, 125696576, 125829056, 125958592, 951 126090304, 126221248, 126352832, 126483776, 126615232, 126746432, 952 126876608, 127008704, 127139392, 127270336, 127401152, 127532224, 953 127663552, 127794752, 127925696, 128055232, 128188096, 128319424, 954 128449856, 128581312, 128712256, 128843584, 128973632, 129103808, 955 129236288, 129365696, 129498944, 129629888, 129760832, 129892288, 956 130023104, 130154048, 130283968, 130416448, 130547008, 130678336, 957 130807616, 130939456, 131071552, 131202112, 131331776, 131464384, 958 131594048, 131727296, 131858368, 131987392, 132120256, 132250816, 959 132382528, 132513728, 132644672, 132774976, 132905792, 133038016, 960 133168832, 133299392, 133429312, 133562048, 133692992, 133823296, 961 133954624, 134086336, 134217152, 134348608, 134479808, 134607296, 962 134741056, 134872384, 135002944, 135134144, 135265472, 135396544, 963 135527872, 135659072, 135787712, 135921472, 136052416, 136182848, 964 136313792, 136444864, 136576448, 136707904, 136837952, 136970048, 965 137099584, 137232064, 137363392, 137494208, 137625536, 137755712, 966 137887424, 138018368, 138149824, 138280256, 138411584, 138539584, 967 138672832, 138804928, 138936128, 139066688, 139196864, 139328704, 968 139460032, 139590208, 139721024, 139852864, 139984576, 140115776, 969 140245696, 140376512, 140508352, 140640064, 140769856, 140902336, 970 141032768, 141162688, 141294016, 141426496, 141556544, 141687488, 971 141819584, 141949888, 142080448, 142212544, 142342336, 142474432, 972 142606144, 142736192, 142868288, 142997824, 143129408, 143258944, 973 143392448, 143523136, 143653696, 143785024, 143916992, 144045632, 974 144177856, 144309184, 144440768, 144570688, 144701888, 144832448, 975 144965056, 145096384, 145227584, 145358656, 145489856, 145620928, 976 145751488, 145883072, 146011456, 146144704, 146275264, 146407232, 977 146538176, 146668736, 146800448, 146931392, 147062336, 147193664, 978 147324224, 147455936, 147586624, 147717056, 147848768, 147979456, 979 148110784, 148242368, 148373312, 148503232, 148635584, 148766144, 980 148897088, 149028416, 149159488, 149290688, 149420224, 149551552, 981 149683136, 149814976, 149943616, 150076352, 150208064, 150338624, 982 150470464, 150600256, 150732224, 150862784, 150993088, 151125952, 983 151254976, 151388096, 151519168, 151649728, 151778752, 151911104, 984 152042944, 152174144, 152304704, 152435648, 152567488, 152698816, 985 152828992, 152960576, 153091648, 153222976, 153353792, 153484096, 986 153616192, 153747008, 153878336, 154008256, 154139968, 154270912, 987 154402624, 154533824, 154663616, 154795712, 154926272, 155057984, 988 155188928, 155319872, 155450816, 155580608, 155712064, 155843392, 989 155971136, 156106688, 156237376, 156367424, 156499264, 156630976, 990 156761536, 156892352, 157024064, 157155008, 157284416, 157415872, 991 157545536, 157677248, 157810496, 157938112, 158071744, 158203328, 992 158334656, 158464832, 158596288, 158727616, 158858048, 158988992, 993 159121216, 159252416, 159381568, 159513152, 159645632, 159776192, 994 159906496, 160038464, 160169536, 160300352, 160430656, 160563008, 995 160693952, 160822208, 160956352, 161086784, 161217344, 161349184, 996 161480512, 161611456, 161742272, 161873216, 162002752, 162135872, 997 162266432, 162397888, 162529216, 162660032, 162790976, 162922048, 998 163052096, 163184576, 163314752, 163446592, 163577408, 163707968, 999 163839296, 163969984, 164100928, 164233024, 164364224, 164494912, 1000 164625856, 164756672, 164887616, 165019072, 165150016, 165280064, 1001 165412672, 165543104, 165674944, 165805888, 165936832, 166067648, 1002 166198336, 166330048, 166461248, 166591552, 166722496, 166854208, 1003 166985408, 167116736, 167246656, 167378368, 167508416, 167641024, 1004 167771584, 167903168, 168034112, 168164032, 168295744, 168427456, 1005 168557632, 168688448, 168819136, 168951616, 169082176, 169213504, 1006 169344832, 169475648, 169605952, 169738048, 169866304, 169999552, 1007 170131264, 170262464, 170393536, 170524352, 170655424, 170782016, 1008 170917696, 171048896, 171179072, 171310784, 171439936, 171573184, 1009 171702976, 171835072, 171966272, 172097216, 172228288, 172359232, 1010 172489664, 172621376, 172747712, 172883264, 173014208, 173144512, 1011 173275072, 173407424, 173539136, 173669696, 173800768, 173931712, 1012 174063424, 174193472, 174325696, 174455744, 174586816, 174718912, 1013 174849728, 174977728, 175109696, 175242688, 175374272, 175504832, 1014 175636288, 175765696, 175898432, 176028992, 176159936, 176291264, 1015 176422592, 176552512, 176684864, 176815424, 176946496, 177076544, 1016 177209152, 177340096, 177470528, 177600704, 177731648, 177864256, 1017 177994816, 178126528, 178257472, 178387648, 178518464, 178650176, 1018 178781888, 178912064, 179044288, 179174848, 179305024, 179436736, 1019 179568448, 179698496, 179830208, 179960512, 180092608, 180223808, 1020 180354752, 180485696, 180617152, 180748096, 180877504, 181009984, 1021 181139264, 181272512, 181402688, 181532608, 181663168, 181795136, 1022 181926592, 182057536, 182190016, 182320192, 182451904, 182582336, 1023 182713792, 182843072, 182976064, 183107264, 183237056, 183368384, 1024 183494848, 183631424, 183762752, 183893824, 184024768, 184154816, 1025 184286656, 184417984, 184548928, 184680128, 184810816, 184941248, 1026 185072704, 185203904, 185335616, 185465408, 185596352, 185727296, 1027 185859904, 185989696, 186121664, 186252992, 186383552, 186514112, 1028 186645952, 186777152, 186907328, 187037504, 187170112, 187301824, 1029 187429184, 187562048, 187693504, 187825472, 187957184, 188087104, 1030 188218304, 188349376, 188481344, 188609728, 188743616, 188874304, 1031 189005248, 189136448, 189265088, 189396544, 189528128, 189660992, 1032 189791936, 189923264, 190054208, 190182848, 190315072, 190447424, 1033 190577984, 190709312, 190840768, 190971328, 191102656, 191233472, 1034 191364032, 191495872, 191626816, 191758016, 191888192, 192020288, 1035 192148928, 192282176, 192413504, 192542528, 192674752, 192805952, 1036 192937792, 193068608, 193198912, 193330496, 193462208, 193592384, 1037 193723456, 193854272, 193985984, 194116672, 194247232, 194379712, 1038 194508352, 194641856, 194772544, 194900672, 195035072, 195166016, 1039 195296704, 195428032, 195558592, 195690304, 195818176, 195952576, 1040 196083392, 196214336, 196345792, 196476736, 196607552, 196739008, 1041 196869952, 197000768, 197130688, 197262784, 197394368, 197523904, 1042 197656384, 197787584, 197916608, 198049472, 198180544, 198310208, 1043 198442432, 198573632, 198705088, 198834368, 198967232, 199097792, 1044 199228352, 199360192, 199491392, 199621696, 199751744, 199883968, 1045 200014016, 200146624, 200276672, 200408128, 200540096, 200671168, 1046 200801984, 200933312, 201062464, 201194944, 201326144, 201457472, 1047 201588544, 201719744, 201850816, 201981632, 202111552, 202244032, 1048 202374464, 202505152, 202636352, 202767808, 202898368, 203030336, 1049 203159872, 203292608, 203423296, 203553472, 203685824, 203816896, 1050 203947712, 204078272, 204208192, 204341056, 204472256, 204603328, 1051 204733888, 204864448, 204996544, 205125568, 205258304, 205388864, 1052 205517632, 205650112, 205782208, 205913536, 206044736, 206176192, 1053 206307008, 206434496, 206569024, 206700224, 206831168, 206961856, 1054 207093056, 207223616, 207355328, 207486784, 207616832, 207749056, 1055 207879104, 208010048, 208141888, 208273216, 208404032, 208534336, 1056 208666048, 208796864, 208927424, 209059264, 209189824, 209321792, 1057 209451584, 209582656, 209715136, 209845568, 209976896, 210106432, 1058 210239296, 210370112, 210501568, 210630976, 210763712, 210894272, 1059 211024832, 211156672, 211287616, 211418176, 211549376, 211679296, 1060 211812032, 211942592, 212074432, 212204864, 212334016, 212467648, 1061 212597824, 212727616, 212860352, 212991424, 213120832, 213253952, 1062 213385024, 213515584, 213645632, 213777728, 213909184, 214040128, 1063 214170688, 214302656, 214433728, 214564544, 214695232, 214826048, 1064 214956992, 215089088, 215219776, 215350592, 215482304, 215613248, 1065 215743552, 215874752, 216005312, 216137024, 216267328, 216399296, 1066 216530752, 216661696, 216790592, 216923968, 217054528, 217183168, 1067 217316672, 217448128, 217579072, 217709504, 217838912, 217972672, 1068 218102848, 218233024, 218364736, 218496832, 218627776, 218759104, 1069 218888896, 219021248, 219151936, 219281728, 219413056, 219545024, 1070 219675968, 219807296, 219938624, 220069312, 220200128, 220331456, 1071 220461632, 220592704, 220725184, 220855744, 220987072, 221117888, 1072 221249216, 221378368, 221510336, 221642048, 221772736, 221904832, 1073 222031808, 222166976, 222297536, 222428992, 222559936, 222690368, 1074 222820672, 222953152, 223083968, 223213376, 223345984, 223476928, 1075 223608512, 223738688, 223869376, 224001472, 224132672, 224262848, 1076 224394944, 224524864, 224657344, 224788288, 224919488, 225050432, 1077 225181504, 225312704, 225443776, 225574592, 225704768, 225834176, 1078 225966784, 226097216, 226229824, 226360384, 226491712, 226623424, 1079 226754368, 226885312, 227015104, 227147456, 227278528, 227409472, 1080 227539904, 227669696, 227802944, 227932352, 228065216, 228196288, 1081 228326464, 228457792, 228588736, 228720064, 228850112, 228981056, 1082 229113152, 229243328, 229375936, 229505344, 229636928, 229769152, 1083 229894976, 230030272, 230162368, 230292416, 230424512, 230553152, 1084 230684864, 230816704, 230948416, 231079616, 231210944, 231342016, 1085 231472448, 231603776, 231733952, 231866176, 231996736, 232127296, 1086 232259392, 232388672, 232521664, 232652608, 232782272, 232914496, 1087 233043904, 233175616, 233306816, 233438528, 233569984, 233699776, 1088 233830592, 233962688, 234092224, 234221888, 234353984, 234485312, 1089 234618304, 234749888, 234880832, 235011776, 235142464, 235274048, 1090 235403456, 235535936, 235667392, 235797568, 235928768, 236057152, 1091 236190272, 236322752, 236453312, 236583616, 236715712, 236846528, 1092 236976448, 237108544, 237239104, 237371072, 237501632, 237630784, 1093 237764416, 237895232, 238026688, 238157632, 238286912, 238419392, 1094 238548032, 238681024, 238812608, 238941632, 239075008, 239206336, 1095 239335232, 239466944, 239599168, 239730496, 239861312, 239992384, 1096 240122816, 240254656, 240385856, 240516928, 240647872, 240779072, 1097 240909632, 241040704, 241171904, 241302848, 241433408, 241565248, 1098 241696192, 241825984, 241958848, 242088256, 242220224, 242352064, 1099 242481856, 242611648, 242744896, 242876224, 243005632, 243138496, 1100 243268672, 243400384, 243531712, 243662656, 243793856, 243924544, 1101 244054592, 244187072, 244316608, 244448704, 244580032, 244710976, 1102 244841536, 244972864, 245104448, 245233984, 245365312, 245497792, 1103 245628736, 245759936, 245889856, 246021056, 246152512, 246284224, 1104 246415168, 246545344, 246675904, 246808384, 246939584, 247070144, 1105 247199552, 247331648, 247463872, 247593536, 247726016, 247857088, 1106 247987648, 248116928, 248249536, 248380736, 248512064, 248643008, 1107 248773312, 248901056, 249036608, 249167552, 249298624, 249429184, 1108 249560512, 249692096, 249822784, 249954112, 250085312, 250215488, 1109 250345792, 250478528, 250608704, 250739264, 250870976, 251002816, 1110 251133632, 251263552, 251395136, 251523904, 251657792, 251789248, 1111 251919424, 252051392, 252182464, 252313408, 252444224, 252575552, 1112 252706624, 252836032, 252968512, 253099712, 253227584, 253361728, 1113 253493056, 253623488, 253754432, 253885504, 254017216, 254148032, 1114 254279488, 254410432, 254541376, 254672576, 254803264, 254933824, 1115 255065792, 255196736, 255326528, 255458752, 255589952, 255721408, 1116 255851072, 255983296, 256114624, 256244416, 256374208, 256507712, 1117 256636096, 256768832, 256900544, 257031616, 257162176, 257294272, 1118 257424448, 257555776, 257686976, 257818432, 257949632, 258079552, 1119 258211136, 258342464, 258473408, 258603712, 258734656, 258867008, 1120 258996544, 259127744, 259260224, 259391296, 259522112, 259651904, 1121 259784384, 259915328, 260045888, 260175424, 260308544, 260438336, 1122 260570944, 260700992, 260832448, 260963776, 261092672, 261226304, 1123 261356864, 261487936, 261619648, 261750592, 261879872, 262011968, 1124 262143424, 262274752, 262404416, 262537024, 262667968, 262799296, 1125 262928704, 263061184, 263191744, 263322944, 263454656, 263585216, 1126 263716672, 263847872, 263978944, 264108608, 264241088, 264371648, 1127 264501184, 264632768, 264764096, 264895936, 265024576, 265158464, 1128 265287488, 265418432, 265550528, 265681216, 265813312, 265943488, 1129 266075968, 266206144, 266337728, 266468032, 266600384, 266731072, 1130 266862272, 266993344, 267124288, 267255616, 267386432, 267516992, 1131 267648704, 267777728, 267910592, 268040512, 268172096, 268302784, 1132 268435264, 268566208, 268696256, 268828096, 268959296, 269090368, 1133 269221312, 269352256, 269482688, 269614784, 269745856, 269876416, 1134 270007616, 270139328, 270270272, 270401216, 270531904, 270663616, 1135 270791744, 270924736, 271056832, 271186112, 271317184, 271449536, 1136 271580992, 271711936, 271843136, 271973056, 272105408, 272236352, 1137 272367296, 272498368, 272629568, 272759488, 272891456, 273022784, 1138 273153856, 273284672, 273415616, 273547072, 273677632, 273808448, 1139 273937088, 274071488, 274200896, 274332992, 274463296, 274595392, 1140 274726208, 274857536, 274988992, 275118656, 275250496, 275382208, 1141 275513024, 275643968, 275775296, 275906368, 276037184, 276167872, 1142 276297664, 276429376, 276560576, 276692672, 276822976, 276955072, 1143 277085632, 277216832, 277347008, 277478848, 277609664, 277740992, 1144 277868608, 278002624, 278134336, 278265536, 278395328, 278526784, 1145 278657728, 278789824, 278921152, 279052096, 279182912, 279313088, 1146 279443776, 279576256, 279706048, 279838528, 279969728, 280099648, 1147 280230976, 280361408, 280493632, 280622528, 280755392, 280887104, 1148 281018176, 281147968, 281278912, 281411392, 281542592, 281673152, 1149 281803712, 281935552, 282066496, 282197312, 282329024, 282458816, 1150 282590272, 282720832, 282853184, 282983744, 283115072, 283246144, 1151 283377344, 283508416, 283639744, 283770304, 283901504, 284032576, 1152 284163136, 284294848, 284426176, 284556992, 284687296, 284819264, 1153 284950208, 285081536}