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