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