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