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