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