diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..23ab927 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,38 @@ +name: build +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v1 + with: + python-version: 3.10.14 + - name: install python modules + run: pip install flake8 markdown pypinyin + - name: format code + run: flake8 . --count --select=E9,F63,F72,F82 --show-source --statistics + - name: generate information + run: | + python3 utils/genReadme.py + python3 utils/genIndex.py + - name: git config + run: | + git config --global user.name "mbinary" + git config --global user.email "zhuheqin1@gmail.com" + - name: generate pages and push to gh-pages branch + env: + ACCESS_TOKEN: ${{secrets.ACCESS_TOKEN}} + run: | + cd docs + git init + git remote add origin git@github.com:USTC-Resource/USTC-Course.git + git add --all + export TZ='Asia/Shanghai' + git commit -m "Update webpages at `date +%Y-%m-%d,%H:%m` UTC+8" + git push -f "https://${ACCESS_TOKEN}@github.com/USTC-Resource/USTC-Course" master:gh-pages + diff --git a/.gitignore b/.gitignore index 9dd3bd4..749d3c1 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ do.sh *.pyc a.out __pycache__/** +.DS_Store diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index add7b1e..0000000 --- a/.travis.yml +++ /dev/null @@ -1,45 +0,0 @@ -language: python3 -sudo: required -python: - - "3.6" - -notifications: - email: - recipients: - - zhuheqin1@gmail.com - on_success: change # default: change - on_failure: always # default: always - -install: - - sudo apt-get install python3 -y - - sudo apt-get install python3-pip -y - - sudo pip3 install markdown - - sudo pip3 install pypinyin - -script: - - python3 utils/genReadme.py - - python3 utils/genIndex.py - -after_script: - # Build Master Repository(Coding Pages) - - git config user.name "mbinary" - - git config user.email "zhuheqin1@gmail.com" - - cd docs - - git init - - git remote add origin git@github.com:USTC-Resource/USTC-Course.git - - git add --all - - git commit -m "Travis-CI Update pages with build $TRAVIS_BUILD_NUMBER" - - git push -f "https://${GH_TOKEN}@${GH_REF}" master:gh-pages - -addons: - apt: - update: true - -branches: - only: - - master -env: - global: - # Github Pages - - GH_REF: github.com/USTC-Resource/USTC-Course - diff --git "a/Java\350\275\257\344\273\266\345\274\200\345\217\221\345\237\272\347\241\200/notes/\345\244\215\344\271\240\346\217\220\347\272\262.pdf" "b/Java\350\275\257\344\273\266\345\274\200\345\217\221\345\237\272\347\241\200/notes/\345\244\215\344\271\240\346\217\220\347\272\262.pdf" new file mode 100644 index 0000000..8aaeeb7 Binary files /dev/null and "b/Java\350\275\257\344\273\266\345\274\200\345\217\221\345\237\272\347\241\200/notes/\345\244\215\344\271\240\346\217\220\347\272\262.pdf" differ diff --git a/README.md b/README.md index e51d32e..be3d3e3 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,11 @@ +![](images/logo.png) + # 中国科学技术大学课程资源 + [![Stars](https://img.shields.io/github/stars/USTC-Resource/USTC-Course.svg?label=Stars&style=social)](https://github.com/USTC-Resource/USTC-Course/stargazers) [![Forks](https://img.shields.io/github/forks/USTC-Resource/USTC-Course.svg?label=Forks&style=social)](https://github.com/USTC-Resource/USTC-Course/network/members) -[![Build](https://travis-ci.org/USTC-Resource/USTC-Course.svg?branch=master)](https://travis-ci.org/USTC-Resource/USTC-Course?branch=master) +[![build](https://github.com/USTC-Resource/USTC-Course/workflows/build/badge.svg)]() [![repo-size](https://img.shields.io/github/repo-size/USTC-Resource/USTC-Course.svg)]() [![License](https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png)](http://creativecommons.org/licenses/by-nc-sa/4.0/) @@ -22,9 +25,11 @@ 对无特别声明的资料,谨以[知识共享署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议](http://creativecommons.org/licenses/by-nc-sa/4.0/) 授权。![](https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png) +请创作者及公众监督,如有资料违反许可协议,请告知我们改正错误。 + # 反馈方式 - [issue](https://github.com/USTC-Resource/USTC-Course/issues/new) -- email +- email # 资料下载 [戳我(●'◡'●)](https://ustc-resource.github.io/USTC-Course) @@ -51,7 +56,7 @@ ## HTTPS -- [github 网页](#课程目录) +- [GitHub 网页](#课程目录) - [DownGit](http://downgit.zhoudaxiaa.com/#/home) - [gitzip-chrome-extension](https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn) @@ -74,7 +79,7 @@ course └ README.md ``` # 课程关系 -![](https://user-images.githubusercontent.com/29198767/53245024-851b1280-36e7-11e9-9d22-7ee65446c68a.png) +![](images/course.svg) 更多信息可以下载[官网的培养方案](https://www.teach.ustc.edu.cn/education/241.html/attachment/14-215%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%AD%A6%E9%99%A2-2013) @@ -86,25 +91,32 @@ course * [操作系统原理与设计](./操作系统原理与设计) * [c程序设计](./c程序设计) * [代数结构](./代数结构) - * [大学物理实验](./大学物理实验) + * [概率论与数理统计](./概率论与数理统计) + * [光学与原子物理](./光学与原子物理) + * [Java软件开发基础](./Java软件开发基础) + * [计算方法](./计算方法) + * [计算机图像学](./计算机图像学) * [计算机网络](./计算机网络) - * [计算机系统详解(csapp)](./计算机系统详解(csapp)) - * [计算机与信息类](./计算机与信息类) + * [计算机系统详解](./计算机系统详解) * [计算机组成原理](./计算机组成原理) + * [马克思主义基本原理概论](./马克思主义基本原理概论) * [模拟与数字电路](./模拟与数字电路) * [数据结构](./数据结构) + * [数理方程](./数理方程) * [数理逻辑](./数理逻辑) * [算法基础](./算法基础) * [随机过程](./随机过程) - * [utils](./utils) * [Web-信息处理与应用](./Web-信息处理与应用) * [微机原理与系统](./微机原理与系统) + * [自然语言处理](./自然语言处理) # 贡献投稿 -欢迎大家的参与与贡献^_^ , 欢迎联系 org 管理员, 申请加入 USTC-Resource org。 -* 仅接受学生原创的或者获得授权的资源 -* github 上不能直接上传大于 100mb 的文件。对于超过 100 mb 的文件,可以存在网盘,然后在 README 文件中贴上链接 -* 文件内容的改动会使 git 重新上传, 在没有必要的情况下, 不要对二进制文件做任何更改. + +>感谢您的贡献 :smiley: + +- 仅接受学生原创的或者获得授权的资源 +- GitHub 上不能直接上传大于 100Mb 的文件。对于超过 100 Mb 的文件,可以存在网盘,然后在 README.md 中贴上链接 +- 文件内容的改动会使 git 重新上传, 在没有必要的情况下, 不要对二进制文件做任何更改. # 中国科学技术大学课程资源

-   back    +     :/{cur}

## 说明 -下面列表根据拼音排序,可点击链接下载二进制文件,或者打开文本文件。点击这里**下载当前整个文件夹**(此功能由 [DownGit](http://downgit.zhoudaxiaa.com) 提供)。此页面[mbinary](https://mbinary.xyz) 制作 +- 列表根据拼音排序 +- 点击 Files 的链接下载二进制文件 +- 或者打开文本文件(markdown 文件经过渲染) + +

Directories  

-## Directories ## Files @@ -48,8 +48,8 @@ ---
-   GitHub -   Feedback +   GitHub +   Feedback
--- @@ -58,11 +58,14 @@ #* 非zip, 非以'.'开头的文件多于 3 个的目录下都有个 zip 文件:`-DIRECTORY 目录下的\d+个文件.zip`,包含当前目录下的一些文件, 这样方便大家一键下载. (在 git commit前, 运行 `./before__commit.sh`可以自动生成) -README=r''' +README = r''' +![](images/logo.png) + # 中国科学技术大学课程资源 + [![Stars](https://img.shields.io/github/stars/USTC-Resource/USTC-Course.svg?label=Stars&style=social)](https://github.com/USTC-Resource/USTC-Course/stargazers) [![Forks](https://img.shields.io/github/forks/USTC-Resource/USTC-Course.svg?label=Forks&style=social)](https://github.com/USTC-Resource/USTC-Course/network/members) -[![Build](https://travis-ci.org/USTC-Resource/USTC-Course.svg?branch=master)](https://travis-ci.org/USTC-Resource/USTC-Course?branch=master) +[![build](https://github.com/USTC-Resource/USTC-Course/workflows/build/badge.svg)]() [![repo-size](https://img.shields.io/github/repo-size/USTC-Resource/USTC-Course.svg)]() [![License](https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png)](http://creativecommons.org/licenses/by-nc-sa/4.0/) @@ -82,9 +85,11 @@ 对无特别声明的资料,谨以[知识共享署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议](http://creativecommons.org/licenses/by-nc-sa/4.0/) 授权。![](https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png) +请创作者及公众监督,如有资料违反许可协议,请告知我们改正错误。 + # 反馈方式 - [issue](https://github.com/USTC-Resource/USTC-Course/issues/new) -- email +- email # 资料下载 [戳我(●'◡'●)](https://ustc-resource.github.io/USTC-Course) @@ -111,7 +116,7 @@ ## HTTPS -- [github 网页](#课程目录) +- [GitHub 网页](#课程目录) - [DownGit](http://downgit.zhoudaxiaa.com/#/home) - [gitzip-chrome-extension](https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn) @@ -134,7 +139,7 @@ └ README.md ``` # 课程关系 -![](https://user-images.githubusercontent.com/29198767/53245024-851b1280-36e7-11e9-9d22-7ee65446c68a.png) +![](images/course.png) 更多信息可以下载[官网的培养方案](https://www.teach.ustc.edu.cn/education/241.html/attachment/14-215%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%AD%A6%E9%99%A2-2013) @@ -144,10 +149,12 @@ {index} # 贡献投稿 -欢迎大家的参与与贡献^_^ , 欢迎联系 org 管理员, 申请加入 USTC-Resource org。 -* 仅接受学生原创的或者获得授权的资源 -* github 上不能直接上传大于 100mb 的文件。对于超过 100 mb 的文件,可以存在网盘,然后在 README 文件中贴上链接 -* 文件内容的改动会使 git 重新上传, 在没有必要的情况下, 不要对二进制文件做任何更改. + +>感谢您的贡献 :smiley: + +- 仅接受学生原创的或者获得授权的资源 +- GitHub 上不能直接上传大于 100Mb 的文件。对于超过 100 Mb 的文件,可以存在网盘,然后在 README.md 中贴上链接 +- 文件内容的改动会使 git 重新上传, 在没有必要的情况下, 不要对二进制文件做任何更改. ''' - diff --git a/utils/genIndex.py b/utils/genIndex.py index 85b6737..544aade 100644 --- a/utils/genIndex.py +++ b/utils/genIndex.py @@ -1,10 +1,20 @@ #coding: utf-8 import os import re +from functools import partial import markdown import shutil from getSize import getSize -from config import PATH,HTML,WALKDIR,TARDIR,IGNORE,NAME,DOWNLOAD +from config import PATH, HTML, WALKDIR, TARDIR, IGNORE, NAME, DOWNLOAD + +URL = 'https://github.com/USTC-Resource/USTC-Course/tree/master/' +ImagePT = re.compile(r'\!\[(.*?)\]\(([a-zA-Z\d\.].*?)\)') + + +def subFunc(match,pre): + name, suf = match.groups() + return f'![{name}]({pre+"/"+suf})' + hasPinyin = False try: from pypinyin import pinyin @@ -12,113 +22,161 @@ except: print('No module pypinyin, using defalut method to sort') + def pinyinSort(items): if hasPinyin: - dic = {''.join(sum(pinyin(i,style=0),[])).lower():i for i in items} + dic = {''.join(sum(pinyin(i, style=0), [])).lower(): i for i in items} return [dic[i] for i in sorted(dic.keys())] else: print('No module pypinyin') return items + def md2html(s): - exts = ['markdown.extensions.extra', 'markdown.extensions.codehilite','markdown.extensions.tables','markdown.extensions.toc'] - s = re.sub(r'\<\!--.*?--\>','',s,flags=re.DOTALL) - return markdown.markdown(s,extensions=exts) + exts = [ + 'markdown.extensions.extra', 'markdown.extensions.codehilite', + 'markdown.extensions.tables', 'markdown.extensions.toc' + ] + s = re.sub(r'\<\!--.*?--\>', '', s, flags=re.DOTALL) + return markdown.markdown(s, extensions=exts) + def getFmt(): - dic={} - sound_suf = ['file-sound-o',['mp3','wave','snd','aif','wav']] - movie_suf =['file-movie-o', ['mp4','avi','mov','swf']] - zip_suf = ['file-zip-o',['zip','rar','7z','tar','gz','bz','jar','z']] - word_suf=['file-word-o',['doc','docx']] - excel_suf=['file-excelo',['xls','xlt']] - ppt_suf = ['file-powerpoint-o',['ppt','pptx','pps','pptx','ppa','ppam']] - pdf_suf = ['file-pdf-o',['pdf']] - pic_suf =['file-picture-o',['bmp','gif','png','jpg','jpeg','pic']] - code_suf=['file-code-o',['c','o','h','sh','cc','m','cpp','py','lisp','scala','rust','java']] - lst_suf=[sound_suf,movie_suf,zip_suf,word_suf,excel_suf,ppt_suf,pdf_suf,pic_suf,code_suf] - - for lst in lst_suf: - suf, li = lst - for i in li: - dic[i]=suf - dic['dir'] = 'folder' - dic['other']='pencil-square-o' - return dic + dic = { + 'file-audio': ['mp3', 'wave', 'snd', 'aif', 'wav'], + 'file-video': ['mp4', 'avi', 'mov', 'swf'], + 'file-archive': ['zip', 'rar', '7z', 'tar', 'gz', 'bz', 'jar', 'z'], + 'file-word': ['doc', 'docx'], + 'file-excel': ['xls', 'xlt'], + 'file-powerpoint': ['ppt', 'pptx', 'pps', 'pptx', 'ppa', 'ppam'], + 'file-pdf': ['pdf'], + 'file-image': ['bmp', 'gif', 'png', 'jpg', 'jpeg', 'pic'], + 'file-code': [ + 'c', 'o', 'h', 'sh', 'cc', 'm', 'cpp', 'py', 'lisp', 'scala', + 'rust', 'java' + ], + 'file-import': ['md'], + } + FMT_DIC = {} + for i, li in dic.items(): + for suf in li: + FMT_DIC[suf] = i + FMT_DIC['dir'] = 'folder' + FMT_DIC['other'] = 'file' + return FMT_DIC + FMT_DIC = getFmt() + def getIcon(name): - suf=name[name.rfind('.')+1:] + suf = name[name.rfind('.') + 1:] return FMT_DIC[suf] if suf in FMT_DIC else FMT_DIC['other'] + def prepare(): if os.path.exists(TARDIR): - os.system('rm -rf '+TARDIR) + os.system('rm -rf ' + TARDIR) try: os.mkdir(TARDIR) - with open(os.path.join(TARDIR,'_config.yml'),'w',encoding='utf-8') as f: + with open( + os.path.join(TARDIR, '_config.yml'), 'w', + encoding='utf-8') as f: f.write('theme: jekyll-theme-cayman\n') - except:return + except: + return + + def handleDir(target): prepare() n = len(target) gen = os.walk(target) - for path,dirs,files in gen: + for path, dirs, files in gen: dirs = [d for d in dirs if d not in IGNORE] dirs = pinyinSort(dirs) files = pinyinSort(files) path = path[n:].strip(os.path.sep) segs = path.split(os.path.sep) - if path.startswith('.') or any(seg in IGNORE for seg in segs) :continue - tar = os.path.join(TARDIR ,path) + if path.startswith('.') or any(seg in IGNORE for seg in segs): continue + tar = os.path.join(TARDIR, path) if 'index.html' in files: - try:shutil.copytree(path,tar) + try: + shutil.copytree(path, tar) except Exception as e: - print(e,path) - else: genIndex(path,dirs,files) + print(e, path) + else: + genIndex(path, dirs, files) + -def genIndex(path,dirs,files,htmlTemp = HTML): +def genIndex(path, dirs, files, htmlTemp=HTML): md = '' if 'README.md' in files: - with open(os.path.join(path,'README.md'),'r',errors='ignore') as f : + with open(os.path.join(path, 'README.md'), 'r', errors='ignore') as f: #
\nRead Me\n
\n - md = '\n

Read Me

\n'+f.read() + md = '\n

Read Me

\n' + f.read( + ) + files.remove('README.md') cur = getPath(path) - dirLst = genDirectoryList(path,dirs) - fileLst = genFileList(path,files) - cont = htmlTemp.format(DOWNLOAD=DOWNLOAD+path,cur=cur,dirLst = dirLst,fileLst = fileLst,readme=md2html(md)) - tar = os.path.join(TARDIR ,path) - if not os.path.exists(tar):os.mkdir(tar) + tar = os.path.join(TARDIR, path) + if not os.path.exists(tar): os.mkdir(tar) + + dirLst = genDirectoryList(path, dirs) + fileLst = genFileList(path, files, tar) + cont = htmlTemp.format( + DOWNLOAD=DOWNLOAD + path, + cur=cur, + dirLst=dirLst, + fileLst=fileLst, + readme=md2html(md)) filename = os.path.join(tar, NAME) - with open(filename,'w') as f: - f.write(cont) + with open(filename, 'w') as f: + f.write(re.sub(ImagePT,partial(subFunc,pre = URL+path),cont)) + def getPath(path): lst = path.split(os.path.sep) lst = lst[::-1] - lst.append('home ') + lst.append('') url = 'index.html' res = [] for i in lst: - res.append('{txt}'.format(url = url,txt = i)) - url='../'+url + res.append('{txt}'.format(url=url, txt=i)) + url = '../' + url return '/'.join(res[::-1]) -LIITEM = '
  •  {name}
  • ' -def genFileList(path,files): - keys=[i for i in files if i[0]!='.'] - link= {i:os.path.join(path,i) for i in keys} - lst = [LIITEM.format(icon=getIcon(key),name = key+'---({})'.format(getSize(link[key])),path = os.path.join(PATH,link[key])) for key in keys] - if lst==[]: lst.append('
  •  None
  • ') + +LIITEM = '
  •  {name}
  • ' + + +def genFileList(path, files, tar=TARDIR): + files = [i for i in files if not i.startswith('.')] + link = {} + for k in files: + if k.endswith('.md'): + shutil.copy(os.path.join(path, k), tar) + link[k] = k[:-3] + '.html' + else: + link[k] = os.path.join(PATH, path, k) + lst = [ + LIITEM.format( + icon=getIcon(key), + name=key + '---({})'.format(getSize(os.path.join(path, key))), + path=link[key]) for key in files + ] + if lst == []: lst.append('
  •  None
  • ') return '\n'.join(lst) -def genDirectoryList(path,dirs): - keys=[i for i in dirs if i[0]!='.'] - link = {i:os.path.join(i,'index.html') for i in keys if i[0]!='.'} - lst = [LIITEM.format(icon=FMT_DIC['dir'],name = key,path =link[key]) for key in keys] - if lst==[]: lst.append('
  •  None
  • ') + +def genDirectoryList(path, dirs): + keys = [i for i in dirs if i[0] != '.'] + link = {i: os.path.join(i, 'index.html') for i in keys if i[0] != '.'} + lst = [ + LIITEM.format(icon=FMT_DIC['dir'], name=key, path=link[key]) + for key in keys + ] + if lst == []: lst.append('
  •  None
  • ') return '\n'.join(lst) -if __name__ =='__main__': + +if __name__ == '__main__': handleDir(WALKDIR) diff --git a/utils/genReadme.py b/utils/genReadme.py index 5da0185..c5beeb7 100644 --- a/utils/genReadme.py +++ b/utils/genReadme.py @@ -1,21 +1,24 @@ # coding: utf-8 from md_tree_links import tree from argparse import ArgumentParser -from config import README +from config import README, IGNORE parser = ArgumentParser() -parser.add_argument('-p','--path',default='.',help='path to walk') -parser.add_argument('-f','--fileinclude',action='store_true',help='if has, list files and dirs, else only dirs') -parser.add_argument('-d','--depth', type = int, default = 1) -#获取参数 +parser.add_argument('-p', '--path', default='.', help='path to walk') +parser.add_argument( + '-f', + '--fileinclude', + action='store_true', + help='if has, list files and dirs, else only dirs') +parser.add_argument('-d', '--depth', type=int, default=1) +# 获取参数 args = parser.parse_args() FILE = args.fileinclude PATH = args.path DEPTH = args.depth - -idxs = tree(PATH,DEPTH,FILE) +idxs = tree(PATH, DEPTH, FILE, IGNORE) s = README.format(index='\n'.join(idxs)) -with open('README.md','w') as f: +with open('README.md', 'w') as f: f.write(s) diff --git a/utils/genZipFile.py b/utils/genZipFile.py index f9b0619..0f63818 100644 --- a/utils/genZipFile.py +++ b/utils/genZipFile.py @@ -7,47 +7,62 @@ import argparse parser = argparse.ArgumentParser() -parser.add_argument('-r','--rewrite',help='rewrite zip file',action='store_true') +parser.add_argument( + '-r', '--rewrite', help='rewrite zip file', action='store_true') args = parser.parse_args() REWRITE = args.rewrite + def checkZip(name): '''check if this file should be added to the zip''' - li = [name.startswith('.') ,name.endswith('.zip'),name.lower()=='readme.md'] + li = [ + name.startswith('.'), + name.endswith('.zip'), + name.lower() == 'readme.md' + ] return not any(li) -def isIgnore(li,files): - return 'index.html' in files or any((i[0]=='.' and i!='.') or i.startswith('__') or i in IGNORE for i in li) -def genZipFile(tar = WALKDIR,rewrite=False): + +def isIgnore(li, files): + return 'index.html' in files or any( + (i[0] == '.' and i != '.') or i.startswith('__') or i in IGNORE + for i in li) + + +def genZipFile(tar=WALKDIR, rewrite=False): os.chdir(tar) n = len(tar) gen = os.walk(tar) pwd = os.path.abspath('.') for path, dirs, files in gen: li = path.strip(os.sep).split(os.sep) - if isIgnore(li,files):continue + if isIgnore(li, files): continue ziplst = [] for i in files: if i.endswith('个文件.zip'): if rewrite: - os.remove(os.path.join(path,i)) - else:break + os.remove(os.path.join(path, i)) + else: + break elif checkZip(i): - ziplst .append(i) + ziplst.append(i) else: - if len(ziplst)<3:continue + if len(ziplst) < 3: continue ziplst.sort() tmp = os.path.abspath(path) \ .replace(pwd,'')\ .replace(os.sep,'-') - name = '{tmp}目录下的{length}个文件.zip'.format(tmp=tmp,length =len(ziplst)) - zipName = os.path.join(path,name) + name = '{tmp}目录下的{length}个文件.zip'.format( + tmp=tmp, length=len(ziplst)) + zipName = os.path.join(path, name) try: - with ZipFile(zipName,'w') as z: + with ZipFile(zipName, 'w') as z: os.chdir(path) - for i in ziplst: z.write(i) + for i in ziplst: + z.write(i) except Exception as e: - print(e,path) + print(e, path) + if __name__ == '__main__': genZipFile(rewrite=REWRITE) diff --git a/utils/getSize.py b/utils/getSize.py index 0e16d89..6a717e8 100644 --- a/utils/getSize.py +++ b/utils/getSize.py @@ -1,22 +1,24 @@ # coding: utf-8 import os import sys + + def formatSize(size): s = 'BKMGTP' ct = 0 - while size>=(1<=10: ct-=10 - return '{sz:.2f}{a}'.format(sz=size/(1<= (1 << ct): + ct += 10 + if ct >= 10: ct -= 10 + return '{sz:.2f}{a}'.format(sz=size / (1 << ct), a=s[ct // 10]) def getSize(path='.'): if os.path.isdir(path): gen = os.walk(path) - li = [] + li = [] for root, dirs, files in gen: for f in files: - sz = os.path.getsize(os.path.join(root ,f)) + sz = os.path.getsize(os.path.join(root, f)) li.append(sz) #li.insert(('.',sum(i[1] for i in li)),0) #size = [f'{i[0]}: {formatSize(i[1])}' for i in li] @@ -24,7 +26,8 @@ def getSize(path='.'): else: return formatSize(os.path.getsize(path)) + if __name__ == "__main__": items = sys.argv[1:] for i in items: - print('{i}: {sz}'.format(i=i,sz =getSize(i))) + print('{i}: {sz}'.format(i=i, sz=getSize(i))) diff --git a/utils/md_tree_links.py b/utils/md_tree_links.py index 108badf..bd51296 100644 --- a/utils/md_tree_links.py +++ b/utils/md_tree_links.py @@ -3,43 +3,58 @@ from pinyinSort import pinyinSort from argparse import ArgumentParser -#命令行输入参数处理 +# 命令行输入参数处理 parser = ArgumentParser() -parser.add_argument('-p','--path',default='.',help='path to walk') -parser.add_argument('-f','--fileinclude',action='store_true',help='if has, list files and dirs, else only dirs') -parser.add_argument('-d','--depth', type = int, default = 2) -#获取参数 +parser.add_argument('-p', '--path', default='.', help='path to walk') +parser.add_argument( + '-f', + '--fileinclude', + action='store_true', + help='if has, list files and dirs, else only dirs') +parser.add_argument('-d', '--depth', type=int, default=2) +# 获取参数 args = parser.parse_args() FILE = args.fileinclude PATH = args.path DEPTH = args.depth + def mklink(path): - return '* [{name}]({path})'.format(name=os.path.basename(path),path=path) + return '* [{name}]({path})'.format(name=os.path.basename(path), path=path) + + def clean(paths): ret = [] for path in paths: name = os.path.basename(path) - if not ( name.startswith('.') or name.startswith('__')): + if not (name.startswith('.') or name.startswith('__')): ret.append(path) return ret -def tree(path='.',depth=2,showfile=False): + +def tree(path='.', depth=2, showfile=False, ignore=None): while not os.path.isdir(path): print('[error]: please input a directory, not file path') path = input() - li = os.listdir(path) - items = [os.path.join(path,i) for i in li if not i.startswith('.')] + if ignore is None: + ignore = set() + else: + ignore = set(ignore) + li = [i for i in os.listdir( + path) if i not in ignore and not i.startswith('.')] + items = [os.path.join(path, i) for i in li] items = clean(items) items = pinyinSort(items) - if not showfile: items = [i for i in items if os.path.isdir(i)] - if depth==1: - return [mklink(path)] + [' '*4 + mklink(i) for i in items] + if not showfile: + items = [i for i in items if os.path.isdir(i)] + if depth == 1: + return [mklink(path)] + [' ' * 4 + mklink(i) for i in items] else: - uls = [tree(i,depth-1,showfile) for i in items] - ret = [' '*4 + li for ul in uls for li in ul] - return [mklink(path)] + ret + uls = [tree(i, depth - 1, showfile) for i in items] + ret = [' ' * 4 + li for ul in uls for li in ul] + return [mklink(path)] + ret + -if __name__ =='__main__': - print('\n'.join(tree(PATH,DEPTH,FILE))) +if __name__ == '__main__': + print('\n'.join(tree(PATH, DEPTH, FILE))) diff --git a/utils/mywalk.py b/utils/mywalk.py index f7c6403..af6b950 100644 --- a/utils/mywalk.py +++ b/utils/mywalk.py @@ -1,17 +1,18 @@ import os -def mywalk(dire,valid=lambda x:True): + +def mywalk(dire, valid=lambda x: True): if not os.path.isdir(dire): raise Exception('[Error]: directory excepted') dirs = [] files = [] for i in os.listdir(dire): - i = os.path.join(dire,i) + i = os.path.join(dire, i) if valid(i): if os.path.isdir(i): dirs.append(i) else: files.append(i) - yield dire,dirs,files + yield dire, dirs, files for d in dirs: - yield from mywalk(os.path.join(dire,d),valid) + yield from mywalk(os.path.join(dire, d), valid) diff --git a/utils/pinyinSort.py b/utils/pinyinSort.py index 69891fd..3cc70e8 100644 --- a/utils/pinyinSort.py +++ b/utils/pinyinSort.py @@ -1,19 +1,22 @@ # coding: utf-8 -hasPinyin=False +hasPinyin = False try: from pypinyin import pinyin - hasPinyin=True + hasPinyin = True except: print('No module pypinyin, using defalut method to sort') + def pinyinSort(items): if hasPinyin: - dic = {''.join(sum(pinyin(i,style=0),[])).lower():i for i in items} + dic = {''.join(sum(pinyin(i, style=0), [])).lower(): i for i in items} return [dic[i] for i in sorted(dic.keys())] - else:return items + else: + return items + -if __name__ =='__main__': - s='你是谁中国科学技术大学' +if __name__ == '__main__': + s = '你是谁中国科学技术大学' li = list(s) print(li) for i in pinyinSort(li): diff --git "a/\345\205\211\345\255\246\344\270\216\345\216\237\345\255\220\347\211\251\347\220\206/notes/\345\205\211\345\255\246\345\205\254\345\274\2172016\347\247\213.pdf" "b/\345\205\211\345\255\246\344\270\216\345\216\237\345\255\220\347\211\251\347\220\206/notes/\345\205\211\345\255\246\345\205\254\345\274\2172016\347\247\213.pdf" new file mode 100644 index 0000000..d4d609e Binary files /dev/null and "b/\345\205\211\345\255\246\344\270\216\345\216\237\345\255\220\347\211\251\347\220\206/notes/\345\205\211\345\255\246\345\205\254\345\274\2172016\347\247\213.pdf" differ diff --git "a/\345\205\211\345\255\246\344\270\216\345\216\237\345\255\220\347\211\251\347\220\206/notes/\345\216\237\345\255\220\347\211\251\347\220\206\345\244\215\344\271\240\350\246\201\347\202\271.pdf" "b/\345\205\211\345\255\246\344\270\216\345\216\237\345\255\220\347\211\251\347\220\206/notes/\345\216\237\345\255\220\347\211\251\347\220\206\345\244\215\344\271\240\350\246\201\347\202\271.pdf" new file mode 100644 index 0000000..3ee862d Binary files /dev/null and "b/\345\205\211\345\255\246\344\270\216\345\216\237\345\255\220\347\211\251\347\220\206/notes/\345\216\237\345\255\220\347\211\251\347\220\206\345\244\215\344\271\240\350\246\201\347\202\271.pdf" differ diff --git "a/\345\244\247\345\255\246\347\211\251\347\220\206\345\256\236\351\252\214/README.md" "b/\345\244\247\345\255\246\347\211\251\347\220\206\345\256\236\351\252\214/README.md" deleted file mode 100644 index af419c8..0000000 --- "a/\345\244\247\345\255\246\347\211\251\347\220\206\345\256\236\351\252\214/README.md" +++ /dev/null @@ -1,8 +0,0 @@ -## 大物实验模板 - -> 百度云资源,来自 qq 群 973935817 - -* [1 级](https://pan.baidu.com/s/1oRoANGJAR1VdEPBmArmX0w) 提取码:kpmk -* [2 级](https://pan.baidu.com/s/1QZ3wyN-fC1Hr0cdGZx672A) 提取码:yfnz -* [3 级](https://pan.baidu.com/s/1J39pLvg_r4FTsg0tgmCO4A) 提取码:z9v8 -* [5 级](https://pan.baidu.com/s/1ECwc9jSy_kODFslJaTcC-Q) 提取码:6u3q diff --git "a/\346\223\215\344\275\234\347\263\273\347\273\237\345\216\237\347\220\206\344\270\216\350\256\276\350\256\241/homeworks/\346\223\215\344\275\234\347\263\273\347\273\237\346\246\202\345\277\265\346\225\231\346\235\220\347\254\2547\347\211\210\350\257\276\345\220\216\347\273\203\344\271\240\347\255\224\346\241\210(\350\213\261\346\226\207\345\256\214\346\225\264\347\211\210).pdf" "b/\346\223\215\344\275\234\347\263\273\347\273\237\345\216\237\347\220\206\344\270\216\350\256\276\350\256\241/homeworks/\346\223\215\344\275\234\347\263\273\347\273\237\346\246\202\345\277\265\346\225\231\346\235\220\347\254\2547\347\211\210\350\257\276\345\220\216\347\273\203\344\271\240\347\255\224\346\241\210(\350\213\261\346\226\207\345\256\214\346\225\264\347\211\210).pdf" deleted file mode 100644 index 3b059a6..0000000 Binary files "a/\346\223\215\344\275\234\347\263\273\347\273\237\345\216\237\347\220\206\344\270\216\350\256\276\350\256\241/homeworks/\346\223\215\344\275\234\347\263\273\347\273\237\346\246\202\345\277\265\346\225\231\346\235\220\347\254\2547\347\211\210\350\257\276\345\220\216\347\273\203\344\271\240\347\255\224\346\241\210(\350\213\261\346\226\207\345\256\214\346\225\264\347\211\210).pdf" and /dev/null differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/allOone/allOone.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/allOone/allOone.py" index c700df2..3efafec 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/allOone/allOone.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/allOone/allOone.py" @@ -10,127 +10,168 @@ ######################################################################### ''' + class node: - def __init__(self,val=None,data_mp=None,pre=None,next=None): - self.val=val + def __init__(self, val=None, data_mp=None, pre=None, next=None): + self.val = val self.data_mp = {} if data_mp is None else data_mp - self.pre=pre - self.next=next - def __lt__(self,nd): - return self.valval or self.head.val==0:self.head= self.chain_mp[val] - def delNode(self,val): + if dec: self.addDecNode(val) + else: self.addIncNode(val) + if self.tail.val < val: self.tail = self.chain_mp[val] + if self.head.val > val or self.head.val == 0: + self.head = self.chain_mp[val] + + def delNode(self, val): self.chain_mp[val].next.pre = self.chain_mp[val].pre self.chain_mp[val].pre.next = self.chain_mp[val].next - if self.tail.val==val:self.tail = self.chain_mp[val].pre - if self.head.val==val:self.head = self.chain_mp[val].next + if self.tail.val == val: self.tail = self.chain_mp[val].pre + if self.head.val == val: self.head = self.chain_mp[val].next del self.chain_mp[val] - def incTo(self,key,val): - if val not in self.chain_mp: + + def incTo(self, key, val): + if val not in self.chain_mp: self.addNode(val) self.chain_mp[val][key] = val - if val!=1 : # key in the pre node - del self.chain_mp[val-1][key] + if val != 1: # key in the pre node + del self.chain_mp[val - 1][key] #print(self.chain_mp[val-1]) - if self.chain_mp[val-1].isEmpty(): + if self.chain_mp[val - 1].isEmpty(): #print('*'*20) - self.delNode(val-1) - def decTo(self,key,val): + self.delNode(val - 1) + + def decTo(self, key, val): if val not in self.chain_mp: - self.addNode(val,dec=True) + self.addNode(val, dec=True) # notice that the headnode(0) shouldn't add key - if val!=0: self.chain_mp[val][key] = val - del self.chain_mp[val+1][key] - if self.chain_mp[val+1].isEmpty(): - self.delNode(val+1) - + if val != 0: self.chain_mp[val][key] = val + del self.chain_mp[val + 1][key] + if self.chain_mp[val + 1].isEmpty(): + self.delNode(val + 1) + + class AllOne: def __init__(self): """ Initialize your data structure here. """ - self.op = {"inc":self.inc,"dec":self.dec,"getMaxKey":self.getMaxKey,"getMinKey":self.getMinKey} + self.op = { + "inc": self.inc, + "dec": self.dec, + "getMaxKey": self.getMaxKey, + "getMinKey": self.getMinKey + } self.mp = {} self.dll = doubleLinkedList() + def __str__(self): return str(self.dll) - def __getitem__(self,key): + + def __getitem__(self, key): return self.mp[key] - def __delitem__(self,key): + + def __delitem__(self, key): del self.mp[key] - def __setitem__(self,key,val): - self.mp[key]= val + + def __setitem__(self, key, val): + self.mp[key] = val + def __iter__(self): return iter(self.mp) - def inc(self, key,n=1): + + def inc(self, key, n=1): """ Inserts a new key with value 1. Or increments an existing key by 1. :type key: str :rtype: void """ if key in self: - self[key]+=n - else:self[key]=n - for i in range(n): self.dll.incTo(key, self[key]) - def dec(self, key,n=1): + self[key] += n + else: + self[key] = n + for i in range(n): + self.dll.incTo(key, self[key]) + + def dec(self, key, n=1): """ Decrements an existing key by 1. If Key's value is 1, remove it from the data structure. :type key: str :rtype: void """ if key in self.mp: - mn = min( self[key],n) - for i in range(mn): self.dll.decTo(key, self[key]-i-1) + mn = min(self[key], n) + for i in range(mn): + self.dll.decTo(key, self[key] - i - 1) if self[key] == n: del self[key] else: - self[key] = self[key]-n + self[key] = self[key] - n + def getMaxKey(self): """ Returns one of the keys with maximal value. @@ -146,17 +187,17 @@ def getMinKey(self): return self.dll.getMin() - - if __name__ == '__main__': - ops=["inc","inc","inc","inc","inc","dec","dec","getMaxKey","getMinKey"] - data=[["a"],["b"],["b"],["b"],["b"],["b"],["b"],[],[]] + ops = [ + "inc", "inc", "inc", "inc", "inc", "dec", "dec", "getMaxKey", + "getMinKey" + ] + data = [["a"], ["b"], ["b"], ["b"], ["b"], ["b"], ["b"], [], []] obj = AllOne() - for op,datum in zip(ops,data): + for op, datum in zip(ops, data): print(obj.op[op](*datum)) - print(op,datum) + print(op, datum) print(obj) - ''' None inc ['a'] diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/allOone/test.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/allOone/test.py" index 207c14b..53e3a36 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/allOone/test.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/allOone/test.py" @@ -12,59 +12,74 @@ from allOone import AllOne from time import time -from random import choice,sample,randint +from random import choice, sample, randint + class hashMap: def __init__(self): - self.op = {"inc":self.inc,"dec":self.dec,"getMaxKey":self.getMaxKey,"getMinKey":self.getMinKey} - self.mp={'':0} - def inc(self,key,n=1): - if key in self.mp:self.mp[key]+=n - else:self.mp[key]=n - def dec(self,key,n=1): - if key not in self.mp:return - if self.mp[key]<=n:del self.mp[key] - else: self.mp[key]-=n + self.op = { + "inc": self.inc, + "dec": self.dec, + "getMaxKey": self.getMaxKey, + "getMinKey": self.getMinKey + } + self.mp = {'': 0} + + def inc(self, key, n=1): + if key in self.mp: self.mp[key] += n + else: self.mp[key] = n + + def dec(self, key, n=1): + if key not in self.mp: return + if self.mp[key] <= n: del self.mp[key] + else: self.mp[key] -= n + def getMinKey(self): - return min(list(self.mp.keys()),key=lambda key:self.mp[key]) + return min(list(self.mp.keys()), key=lambda key: self.mp[key]) + def getMaxKey(self): - return max(list(self.mp.keys()),key=lambda key:self.mp[key]) + return max(list(self.mp.keys()), key=lambda key: self.mp[key]) + +op_origin = [ + 'inc', 'dec', 'getMinKey', 'getMaxKey' +] #'getMinKey','getMaxKey','getMinKey','getMaxKey','getMinKey','getMaxKey','getMinKey','getMaxKey'] +ch = list('qwertyuiopasdfghjklzxcvbnm') +keys = [''.join(sample(ch, i)) for j in range(10) for i in range(1, 20, 5)] -op_origin = ['inc','dec','getMinKey','getMaxKey']#'getMinKey','getMaxKey','getMinKey','getMaxKey','getMinKey','getMaxKey','getMinKey','getMaxKey'] -ch=list('qwertyuiopasdfghjklzxcvbnm') -keys =[ ''.join(sample(ch,i)) for j in range(10) for i in range(1,20,5)] def testCase(n=1000): - ops=[] - data=[] + ops = [] + data = [] for i in range(n): - p = randint(0,len(op_origin)-1) + p = randint(0, len(op_origin) - 1) ops.append(op_origin[p]) - if p<2: - data.append([randint(1,5)]) - else:data.append([]) - return ops,data + if p < 2: + data.append([randint(1, 5)]) + else: + data.append([]) + return ops, data + def test(repeat=100): - t1,t2=0,0 + t1, t2 = 0, 0 for i in range(repeat): allOne = AllOne() hsmp = hashMap() - ops,data = testCase() - t1-=time() - for op,datum in zip(ops,data): + ops, data = testCase() + t1 -= time() + for op, datum in zip(ops, data): allOne.op[op](*datum) - t1+=time() + t1 += time() - t2-=time() - for op,datum in zip(ops,data): + t2 -= time() + for op, datum in zip(ops, data): hsmp.op[op](*datum) - t2+=time() - return t1,t2 + t2 += time() + return t1, t2 -if __name__=='__main__': - t1,t2= test() +if __name__ == '__main__': + t1, t2 = test() print(f'allOone: {t1}') print(f'hashmap: {t2}') diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/bTree.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/bTree.py" index 1b9a888..420a486 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/bTree.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/bTree.py" @@ -1,201 +1,230 @@ class node: - def __init__(self,keys=None,isLeaf = True,children=None): - if keys is None:keys=[] - if children is None: children =[] + def __init__(self, keys=None, isLeaf=True, children=None): + if keys is None: keys = [] + if children is None: children = [] self.keys = keys - self.isLeaf = isLeaf + self.isLeaf = isLeaf self.children = [] - def __getitem__(self,i): + + def __getitem__(self, i): return self.keys[i] - def __delitem__(self,i): + + def __delitem__(self, i): del self.keys[i] - def __setitem__(self,i,k): + + def __setitem__(self, i, k): self.keys[i] = k + def __len__(self): return len(self.keys) + def __repr__(self): return str(self.keys) + def __str__(self): children = ','.join([str(nd.keys) for nd in self.children]) return f'keys: {self.keys}\nchildren: {children}\nisLeaf: {self.isLeaf}' - def getChd(self,i): + + def getChd(self, i): return self.children[i] - def delChd(self,i): + + def delChd(self, i): del self.children[i] - def setChd(self,i,chd): + + def setChd(self, i, chd): self.children[i] = chd - def getChildren(self,begin=0,end=None): - if end is None:return self.children[begin:] + + def getChildren(self, begin=0, end=None): + if end is None: return self.children[begin:] return self.children[begin:end] - def findKey(self,key): - for i,k in enumerate(self.keys): - if k>=key: + + def findKey(self, key): + for i, k in enumerate(self.keys): + if k >= key: return i return len(self) - def update(self,keys=None,isLeaf=None,children=None): - if keys is not None:self.keys = keys - if children is not None:self.children = children + + def update(self, keys=None, isLeaf=None, children=None): + if keys is not None: self.keys = keys + if children is not None: self.children = children if isLeaf is not None: self.isLeaf = isLeaf - def insert(self,i,key=None,nd=None): - if key is not None:self.keys.insert(i,key) - if not self.isLeaf and nd is not None: self.children.insert(i,nd) - def isLeafNode(self):return self.isLeaf - def split(self,prt,t): + + def insert(self, i, key=None, nd=None): + if key is not None: self.keys.insert(i, key) + if not self.isLeaf and nd is not None: self.children.insert(i, nd) + + def isLeafNode(self): + return self.isLeaf + + def split(self, prt, t): # form new two nodes - k = self[t-1] + k = self[t - 1] nd1 = node() nd2 = node() - nd1.keys,nd2.keys = self[:t-1], self[t:] # note that t is 1 bigger than key index + nd1.keys, nd2.keys = self[:t - 1], self[ + t:] # note that t is 1 bigger than key index nd1.isLeaf = nd2.isLeaf = self.isLeaf - if not self.isLeaf: + if not self.isLeaf: # note that children index is one bigger than key index, and all children included - nd1.children, nd2.children = self.children[0:t], self.children[t:] + nd1.children, nd2.children = self.children[0:t], self.children[t:] # connect them to parent idx = prt.findKey(k) - if prt.children !=[]: prt.children.remove(self) # remove the original node - prt.insert(idx,k,nd2) - prt.insert(idx,nd = nd1) + if prt.children != []: + prt.children.remove(self) # remove the original node + prt.insert(idx, k, nd2) + prt.insert(idx, nd=nd1) return prt class bTree: - def __init__(self,degree=2): + def __init__(self, degree=2): self.root = node() - self.degree=degree + self.degree = degree self.nodeNum = 1 self.keyNum = 0 - def search(self,key,withpath=False): + + def search(self, key, withpath=False): nd = self.root fathers = [] while True: i = nd.findKey(key) - if i==len(nd): fathers.append((nd,i-1,i)) - else: fathers.append((nd,i,i)) - if i1:self.rebalance(fathers) - def rebalance(self,fathers): - nd,keyIdx,chdIdx = fathers.pop() - while len(nd) 1: self.rebalance(fathers) + + def rebalance(self, fathers): + nd, keyIdx, chdIdx = fathers.pop() + while len(nd) < self.degree - 1: # rebalance tree from down to up + prt, keyIdx, chdIdx = fathers[-1] + lbro = [] if chdIdx == 0 else prt.getChd(chdIdx - 1) + rbro = [] if chdIdx == len(prt) else prt.getChd(chdIdx + 1) + if len(lbro) < self.degree and len( + rbro) < self.degree: # merge two deficient nodes + beforeNode, afterNode = None, None + if lbro == []: keyIdx = chdIdx - beforeNode,afterNode = nd,rbro + beforeNode, afterNode = nd, rbro else: - beforeNode,afterNode = lbro,nd - keyIdx = chdIdx-1 # important, when choosing - keys = beforeNode[:]+[prt[keyIdx]]+afterNode[:] + beforeNode, afterNode = lbro, nd + keyIdx = chdIdx - 1 # important, when choosing + keys = beforeNode[:] + [prt[keyIdx]] + afterNode[:] children = beforeNode.getChildren() + afterNode.getChildren() isLeaf = beforeNode.isLeafNode() - prt.delChd(keyIdx+1) + prt.delChd(keyIdx + 1) del prt[keyIdx] - nd.update(keys,isLeaf,children) - prt.children[keyIdx]=nd - self.nodeNum -=1 - elif len(lbro)>=self.degree: # rotate when only one sibling is deficient - keyIdx = chdIdx-1 - nd.insert(0,prt[keyIdx]) # rotate keys - prt[keyIdx] = lbro[-1] + nd.update(keys, isLeaf, children) + prt.children[keyIdx] = nd + self.nodeNum -= 1 + elif len( + lbro + ) >= self.degree: # rotate when only one sibling is deficient + keyIdx = chdIdx - 1 + nd.insert(0, prt[keyIdx]) # rotate keys + prt[keyIdx] = lbro[-1] del lbro[-1] - if not nd.isLeafNode(): # if not leaf, move children - nd.insert(0,nd=lbro.getChd(-1)) + if not nd.isLeafNode(): # if not leaf, move children + nd.insert(0, nd=lbro.getChd(-1)) lbro.delChd(-1) else: keyIdx = chdIdx - nd.insert(len(nd),prt[keyIdx]) # rotate keys - prt[keyIdx] = rbro[0] + nd.insert(len(nd), prt[keyIdx]) # rotate keys + prt[keyIdx] = rbro[0] del rbro[0] - if not nd.isLeafNode(): # if not leaf, move children + if not nd.isLeafNode(): # if not leaf, move children #note that insert(-1,ele) will make the ele be the last second one - nd.insert(len(nd),nd=rbro.getChd(0)) + nd.insert(len(nd), nd=rbro.getChd(0)) rbro.delChd(0) - if len(fathers)==1: - if len(self.root)==0: + if len(fathers) == 1: + if len(self.root) == 0: self.root = nd - self.nodeNum -=1 + self.nodeNum -= 1 break - nd,i,j = fathers.pop() + nd, i, j = fathers.pop() + def __str__(self): - head= '\n'+'-'*30+'B Tree'+'-'*30 - tail= '-'*30+'the end'+'-'*30+'\n' - lst = [[head],[f'node num: {self.nodeNum}, key num: {self.keyNum}']] + head = '\n' + '-' * 30 + 'B Tree' + '-' * 30 + tail = '-' * 30 + 'the end' + '-' * 30 + '\n' + lst = [[head], [f'node num: {self.nodeNum}, key num: {self.keyNum}']] cur = [] - ndNum =0 - ndTotal= 1 + ndNum = 0 + ndTotal = 1 que = [self.root] - while que!=[]: + while que != []: nd = que.pop(0) cur.append(repr(nd)) - ndNum+=1 - que+=nd.getChildren() - if ndNum==ndTotal: + ndNum += 1 + que += nd.getChildren() + if ndNum == ndTotal: lst.append(cur) cur = [] ndNum = 0 - ndTotal =len(que) + ndTotal = len(que) lst.append([tail]) lst = [','.join(li) for li in lst] return '\n'.join(lst) - def __iter__(self,nd = None): + + def __iter__(self, nd=None): if nd is None: nd = self.root que = [nd] - while que !=[]: + while que != []: nd = que.pop(0) yield nd - if nd.isLeafNode():continue - for i in range(len(nd)+1): + if nd.isLeafNode(): continue + for i in range(len(nd) + 1): que.append(nd.getChd(i)) -if __name__ =='__main__': +if __name__ == '__main__': bt = bTree() - from random import shuffle,sample + from random import shuffle, sample n = 20 lst = [i for i in range(n)] shuffle(lst) - test= sample(lst,len(lst)//4) + test = sample(lst, len(lst) // 4) print(f'building b-tree with {lst}') for i in lst: bt.insert(i) @@ -204,7 +233,7 @@ def __iter__(self,nd = None): print(bt) print(f'serching {test}') for i in test: - nd,idx = bt.search(i) + nd, idx = bt.search(i) print(f'node: {repr(nd)}[{idx}]== {i}') for i in test: print(f'deleting {i}') diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/binaryHeap.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/binaryHeap.py" index f5452d1..f41c744 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/binaryHeap.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/binaryHeap.py" @@ -10,107 +10,129 @@ ######################################################################### ''' +from collections import Iterable + -from collections import Iterable class node: - def __init__(self,val,freq=1): - self.val=val + def __init__(self, val, freq=1): + self.val = val self.freq = freq - def __eq__(self,a): - return self.val == a.val - def __lt__(self,a): - return self.vala.val - def __ge__(self,a): - return self.val>=a.val - def __ne__(self,a): + + def __eq__(self, a): + return self.val == a.val + + def __lt__(self, a): + return self.val < a.val + + def __le__(self, a): + return self.val <= a.val + + def __gt__(self, a): + return self.val > a.val + + def __ge__(self, a): + return self.val >= a.val + + def __ne__(self, a): return not self == a + + class binaryHeap: - def __init__(self,s=None,sortByFrequency = False,reverse=False): - self.sortByFrequency=sortByFrequency + def __init__(self, s=None, sortByFrequency=False, reverse=False): + self.sortByFrequency = sortByFrequency self.reverse = reverse self.data = [node(0)] # make index begin with 1 - if s==None:return - if not isinstance(s,Iterable):s = [s] + if s == None: return + if not isinstance(s, Iterable): s = [s] for i in s: self.insert(i) + def __bool__(self): - return len(self)!=1 - def _cmp(self,a,b): + return len(self) != 1 + + def _cmp(self, a, b): if self.sortByFrequency: - if self.reverse:return a.freq>b.freq - else:return a.freq b.freq + else: return a.freq < b.freq else: - if self.reverse:return a>b - else:return a b + else: return a < b + + def insert(self, k): + if not isinstance(k, node): k = node(k) for j in range(self.data[0].val): - i = self.data[j+1] - if i==k: - i.freq+=1 + i = self.data[j + 1] + if i == k: + i.freq += 1 if self.sortByFrequency: - idx = self.percolateDown(j+1) + idx = self.percolateDown(j + 1) self.percolateUp(idx) - return + return self.data.append(k) self.data[0].val += 1 self.percolateUp() - def percolateUp(self,n=None): - if n ==None:n=self.data[0].val + + def percolateUp(self, n=None): + if n == None: n = self.data[0].val tmp = self.data[n] - while n!=1 and self._cmp(tmp,self.data[n//2]): - self.data[n] = self.data[n//2] - n = n//2 + while n != 1 and self._cmp(tmp, self.data[n // 2]): + self.data[n] = self.data[n // 2] + n = n // 2 self.data[n] = tmp + def deleteTop(self): tmp = self.data[1] i = self.percolateDown(1) self.data[i] = self.data[-1] - self.data[0].val-= 1 + self.data[0].val -= 1 del self.data[-1] return tmp - def percolateDown(self,i): + + def percolateDown(self, i): tmp = self.data[i] - while self.data[0].val>=2*i+1: - if self._cmp(self.data[i*2],self.data[2*i+1]): - self.data[i] = self.data[2*i] - i = 2*i - else: - self.data[i] = self.data[2*i+1] - i = 2*i+1 + while self.data[0].val >= 2 * i + 1: + if self._cmp(self.data[i * 2], self.data[2 * i + 1]): + self.data[i] = self.data[2 * i] + i = 2 * i + else: + self.data[i] = self.data[2 * i + 1] + i = 2 * i + 1 self.data[i] = tmp return i + def __len__(self): return self.data[0].val - def Nth(self,n=1): + + def Nth(self, n=1): tmp = [] for i in range(n): tmp.append(self.deleteTop()) for i in tmp: self.insert(i) return tmp[-1] + def display(self): - val =self.data[0].val+1 + val = self.data[0].val + 1 if self.sortByFrequency: - info='heapSort by Frequency:' - else:info = 'heapSort by Value:' + info = 'heapSort by Frequency:' + else: + info = 'heapSort by Value:' if self.reverse: - info +=' From big to small' - else:info +=' From small to big' - print('*'*15) + info += ' From big to small' + else: + info += ' From small to big' + print('*' * 15) print(info) - print('total items:%d\nval\tfreq'%(val-1)) + print('total items:%d\nval\tfreq' % (val - 1)) fmt = '{}\t{}' - for i in range(1,val): - print(fmt.format(self.data[i].val,self.data[i].freq)) - print('*'*15) + for i in range(1, val): + print(fmt.format(self.data[i].val, self.data[i].freq)) + print('*' * 15) + + class Test: def topKFrequent(self, words, k): - hp = binaryHeap(sortByFrequency = True,reverse=True) + hp = binaryHeap(sortByFrequency=True, reverse=True) for i in words: hp.insert(i) hp.display() @@ -124,15 +146,34 @@ def topKFrequent(self, words, k): mp[top.freq] = [top.val] for i in mp: mp[i].sort() - key = sorted(mp.keys(),reverse = True) + key = sorted(mp.keys(), reverse=True) rst = [] count = 0 - for i in key: + for i in key: for j in mp[i]: rst.append(j) - count+=1 - if count == k:return rst + count += 1 + if count == k: return rst + + if __name__ == '__main__': - s=["plpaboutit","jnoqzdute","sfvkdqf","mjc","nkpllqzjzp","foqqenbey","ssnanizsav","nkpllqzjzp","sfvkdqf","isnjmy","pnqsz","hhqpvvt","fvvdtpnzx","jkqonvenhx","cyxwlef","hhqpvvt","fvvdtpnzx","plpaboutit","sfvkdqf","mjc","fvvdtpnzx","bwumsj","foqqenbey","isnjmy","nkpllqzjzp","hhqpvvt","foqqenbey","fvvdtpnzx","bwumsj","hhqpvvt","fvvdtpnzx","jkqonvenhx","jnoqzdute","foqqenbey","jnoqzdute","foqqenbey","hhqpvvt","ssnanizsav","mjc","foqqenbey","bwumsj","ssnanizsav","fvvdtpnzx","nkpllqzjzp","jkqonvenhx","hhqpvvt","mjc","isnjmy","bwumsj","pnqsz","hhqpvvt","nkpllqzjzp","jnoqzdute","pnqsz","nkpllqzjzp","jnoqzdute","foqqenbey","nkpllqzjzp","hhqpvvt","fvvdtpnzx","plpaboutit","jnoqzdute","sfvkdqf","fvvdtpnzx","jkqonvenhx","jnoqzdute","nkpllqzjzp","jnoqzdute","fvvdtpnzx","jkqonvenhx","hhqpvvt","isnjmy","jkqonvenhx","ssnanizsav","jnoqzdute","jkqonvenhx","fvvdtpnzx","hhqpvvt","bwumsj","nkpllqzjzp","bwumsj","jkqonvenhx","jnoqzdute","pnqsz","foqqenbey","sfvkdqf","sfvkdqf"] + s = [ + "plpaboutit", "jnoqzdute", "sfvkdqf", "mjc", "nkpllqzjzp", "foqqenbey", + "ssnanizsav", "nkpllqzjzp", "sfvkdqf", "isnjmy", "pnqsz", "hhqpvvt", + "fvvdtpnzx", "jkqonvenhx", "cyxwlef", "hhqpvvt", "fvvdtpnzx", + "plpaboutit", "sfvkdqf", "mjc", "fvvdtpnzx", "bwumsj", "foqqenbey", + "isnjmy", "nkpllqzjzp", "hhqpvvt", "foqqenbey", "fvvdtpnzx", "bwumsj", + "hhqpvvt", "fvvdtpnzx", "jkqonvenhx", "jnoqzdute", "foqqenbey", + "jnoqzdute", "foqqenbey", "hhqpvvt", "ssnanizsav", "mjc", "foqqenbey", + "bwumsj", "ssnanizsav", "fvvdtpnzx", "nkpllqzjzp", "jkqonvenhx", + "hhqpvvt", "mjc", "isnjmy", "bwumsj", "pnqsz", "hhqpvvt", "nkpllqzjzp", + "jnoqzdute", "pnqsz", "nkpllqzjzp", "jnoqzdute", "foqqenbey", + "nkpllqzjzp", "hhqpvvt", "fvvdtpnzx", "plpaboutit", "jnoqzdute", + "sfvkdqf", "fvvdtpnzx", "jkqonvenhx", "jnoqzdute", "nkpllqzjzp", + "jnoqzdute", "fvvdtpnzx", "jkqonvenhx", "hhqpvvt", "isnjmy", + "jkqonvenhx", "ssnanizsav", "jnoqzdute", "jkqonvenhx", "fvvdtpnzx", + "hhqpvvt", "bwumsj", "nkpllqzjzp", "bwumsj", "jkqonvenhx", "jnoqzdute", + "pnqsz", "foqqenbey", "sfvkdqf", "sfvkdqf" + ] test = Test() - print(test.topKFrequent(s,5)) + print(test.topKFrequent(s, 5)) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/binaryTree.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/binaryTree.py" index b3cbb80..4a8e53d 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/binaryTree.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/binaryTree.py" @@ -12,61 +12,75 @@ from functools import total_ordering + @total_ordering class node: - def __init__(self,val,left=None,right=None,freq = 1): - self.val=val - self.left=left - self.right=right + def __init__(self, val, left=None, right=None, freq=1): + self.val = val + self.left = left + self.right = right self.freq = freq - def __lt__(self,nd): - return self.valnewNode: - if nd.left is None:nd.left = newNode - else : _add(nd.left,newNode) - else:nd.freq +=1 - _add(self.root,node(val)) - def find(self,val): - prt= self._findPrt(self.root,node(val),None) - if prt.left and prt.left.val==val: + self.root = None + + def add(self, val): + def _add(nd, newNode): + if nd < newNode: + if nd.right is None: nd.right = newNode + else: _add(nd.right, newNode) + elif nd > newNode: + if nd.left is None: nd.left = newNode + else: _add(nd.left, newNode) + else: nd.freq += 1 + + _add(self.root, node(val)) + + def find(self, val): + prt = self._findPrt(self.root, node(val), None) + if prt.left and prt.left.val == val: return prt.left - elif prt.right and prt.right.val==val:return prt.right - else :return None - def _findPrt(self,nd,tgt,prt): - if nd==tgt or nd is None:return prt - elif ndtmp: - ds[tgt]=tmp + else: + tgt = arc.v + tmp = ds[nd] + arc + if ds[tgt] > tmp: + ds[tgt] = tmp last[tgt] = nd - if not tgt.isVisited:q.append(tgt) + if not tgt.isVisited: q.append(tgt) ''' cur = u while cur !=v: @@ -156,36 +187,39 @@ def minPath(self,v,u): print(str(v)) ''' return ds[u] + def hasCircle(self): pass + def display(self): print('vertexs') for i in self.vertexs: print(i) print('edges') for i in self.edges: - arc=self.edges[i] - print(str(arc.v)+str(arc)+str(arc.u)) - -if __name__=='__main__': - n=int(input()) - while n>0: - cities=int(input()) - n-=1 - g=graph() - li={} + arc = self.edges[i] + print(str(arc.v) + str(arc) + str(arc.u)) + + +if __name__ == '__main__': + n = int(input()) + while n > 0: + cities = int(input()) + n -= 1 + g = graph() + li = {} for i in range(cities): - li[input()]=i+1 - arc=int(input()) + li[input()] = i + 1 + arc = int(input()) for j in range(arc): - s=input().split(' ') - g.addEdge(i+1,int(s[0]),int(s[1])) - ct =int(input()) - for i in range(ct): + s = input().split(' ') + g.addEdge(i + 1, int(s[0]), int(s[1])) + ct = int(input()) + for i in range(ct): line = input() - line= line .split(' ') - v,u = li[line[0]],li[line[1]] - print(g.minPath(v,u)) + line = line.split(' ') + v, u = li[line[0]], li[line[1]] + print(g.minPath(v, u)) g.revisit() #http://www.spoj.com/submit/SHPATH/id=20525991 ''' diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/directed.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/directed.py" index 92780ea..05f4d31 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/directed.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/directed.py" @@ -10,136 +10,174 @@ ######################################################################### ''' -from collections import Iterable,deque +from collections import Iterable, deque + + class vertex: - def __init__(self,mark,val=None ,firstEdge = None): + def __init__(self, mark, val=None, firstEdge=None): self.mark = mark self.val = val self.firstEdge = firstEdge self.isVisited = False + def __str__(self): - if '0'<=self.mark[0]<='9':return 'v'+str(self.mark) + if '0' <= self.mark[0] <= '9': return 'v' + str(self.mark) return str(self.mark) + def __repr__(self): - li=[] - arc= self.firstEdge - while arc!=None: + li = [] + arc = self.firstEdge + while arc != None: li.append(arc) - arc= arc.outNextEdge - return str(self)+ ' to:'+str([str(i.inArrow) for i in li]) + arc = arc.outNextEdge + return str(self) + ' to:' + str([str(i.inArrow) for i in li]) + + class edge: - def __init__(self,outArrow,inArrow,outNextEdge = None,inNextEdge = None, weight = 1): + def __init__(self, + outArrow, + inArrow, + outNextEdge=None, + inNextEdge=None, + weight=1): self.weight = weight - self.inNextEdge = inNextEdge + self.inNextEdge = inNextEdge self.outNextEdge = outNextEdge self.outArrow = outArrow - self.inArrow=inArrow + self.inArrow = inArrow self.isVisited = False + def __str__(self): - return '--'+str(self.weight)+'-->' + return '--' + str(self.weight) + '-->' + def __repr__(self): return str(self) + + class graph: - def __init__(self): + def __init__(self): self.vertexs = {} self.edges = {} - def __getitem__(self,i): + + def __getitem__(self, i): return self.vertexs[i] - def __setitem__(selfi,x): - self.vertexs[i]= x + + def __setitem__(self, i, x): + self.vertexs[i] = x + def __iter__(self): return iter(self.vertexs.values()) + def __bool__(self): - return len(self.vertexs)!=0 - def addVertex(self,vertexs): + return len(self.vertexs) != 0 + + def addVertex(self, vertexs): '''vertexs is a iterable or just a mark that marks the vertex,whichc can be every imutable type''' - if not isinstance(vertexs,Iterable):vertexs=[vertexs] + if not isinstance(vertexs, Iterable): vertexs = [vertexs] for i in vertexs: - if not isinstance(i,vertex) and i not in self.vertexs:self.vertexs[i]= vertex(i) - if isinstance(i,vertex) and i not in self.vertexs:self.vertexs[i.mark]= i - def isConnected(self,v,u): + if not isinstance(i, vertex) and i not in self.vertexs: + self.vertexs[i] = vertex(i) + if isinstance(i, vertex) and i not in self.vertexs: + self.vertexs[i.mark] = i + + def isConnected(self, v, u): v = self.__getVertex(v) u = self.__getVertex(u) - arc= v.firstEdge - while arc!=None: - if arc.inArrow==u:return True + arc = v.firstEdge + while arc != None: + if arc.inArrow == u: return True arc = arc.inNextEdge return False - def __getVertex(self,v): - if not isinstance(v,vertex): + + def __getVertex(self, v): + if not isinstance(v, vertex): if v not in self.vertexs: - self.vertexs[v]=vertex(v) + self.vertexs[v] = vertex(v) return self.vertexs[v] return v - def addEdge(self,v,u,weight = 1): + + def addEdge(self, v, u, weight=1): v = self.__getVertex(v) u = self.__getVertex(u) arc = v.firstEdge - while arc!=None: #examine that if v,u have been already connected - if arc.inArrow==u: return - arc= arc.outNextEdge - newEdge = edge(v,u,v.firstEdge,u.firstEdge,weight) - self.edges[(v.mark,u.mark)] = newEdge + while arc != None: #examine that if v,u have been already connected + if arc.inArrow == u: return + arc = arc.outNextEdge + newEdge = edge(v, u, v.firstEdge, u.firstEdge, weight) + self.edges[(v.mark, u.mark)] = newEdge v.firstEdge = newEdge - def delEdge(self,v,u): - if not isinstance(v,vertex):v= self.vertexs[v] - if not isinstance(u,vertex):u= self.vertexs[u] - self._unrelated(v,u) - del self.edges[(v.mark,u.mark)] - def _unrelated(self,v,u): - if v.firstEdge==None:return + + def delEdge(self, v, u): + if not isinstance(v, vertex): v = self.vertexs[v] + if not isinstance(u, vertex): u = self.vertexs[u] + self._unrelated(v, u) + del self.edges[(v.mark, u.mark)] + + def _unrelated(self, v, u): + if v.firstEdge == None: return if v.firstEdge.inArrow == u: - v.firstEdge =v.firstEdge.outNextEdge + v.firstEdge = v.firstEdge.outNextEdge else: arc = v.firstEdge - while arc.outNextEdge!=None: - if arc.outNextEdge.inArrow ==u: - arc.outNextEdge = arc.outNextEdge.outNextEdge - break + while arc.outNextEdge != None: + if arc.outNextEdge.inArrow == u: + arc.outNextEdge = arc.outNextEdge.outNextEdge + break + def revisit(self): for i in self.vertexs: - self.vertexs[i].isVisited=False + self.vertexs[i].isVisited = False for i in self.edges: - self.edges[i].isVisited=False + self.edges[i].isVisited = False + def __str__(self): - arcs= list(self.edges.keys()) - arcs=[str(i[0])+'--->'+str(i[1])+' weight:'+str(self.edges[i].weight) for i in arcs] - s= '\n'.join(arcs) + arcs = list(self.edges.keys()) + arcs = [ + str(i[0]) + '--->' + str(i[1]) + ' weight:' + str( + self.edges[i].weight) for i in arcs + ] + s = '\n'.join(arcs) return s + def __repr__(self): return str(self) - def notIn(self,v): - if (isinstance(v,vertex) and v.mark not in self.vertexs) or v not in self.vertexs: + + def notIn(self, v): + if (isinstance(v, vertex) + and v.mark not in self.vertexs) or v not in self.vertexs: return True return False - def visitPath(self,v,u): + + def visitPath(self, v, u): '''bfs''' - if self.notIn(v) or self.notIn(u): - return None,None + if self.notIn(v) or self.notIn(u): + return None, None v = self.__getVertex(v) u = self.__getVertex(u) - if v.firstEdge==None:return None,None - q=deque([v.firstEdge]) - isFind=False - vs,es=[],[] - while len(q)!=0: - vs,es=[],[] - arc= q.popleft() - if arc.outNextEdge!=None and not arc.outNextEdge.isVisited:q.append(arc.outNextEdge) - while arc!=None: - if arc.isVisited:break - arc.isVisited=True + if v.firstEdge == None: return None, None + q = deque([v.firstEdge]) + isFind = False + vs, es = [], [] + while len(q) != 0: + vs, es = [], [] + arc = q.popleft() + if arc.outNextEdge != None and not arc.outNextEdge.isVisited: + q.append(arc.outNextEdge) + while arc != None: + if arc.isVisited: break + arc.isVisited = True es.append(arc) vs.append(arc.inArrow) - arc.outArrow.isVisited=True - if arc.inArrow==u: - isFind=True - break + arc.outArrow.isVisited = True + if arc.inArrow == u: + isFind = True + break arc = arc.inArrow.firstEdge # very important , avoid circle travel - while arc.inArrow.isVisited and arc.outNextEdge:arc = arc.outNextEdge - if isFind:break - else:return None,None + while arc.inArrow.isVisited and arc.outNextEdge: + arc = arc.outNextEdge + if isFind: break + else: return None, None ''' se = [str(i) for i in es] sv = [str(i) for i in vs] @@ -147,17 +185,20 @@ def visitPath(self,v,u): for i,j in zip(se,sv): print(i,j,end='') ''' - return vs,es - def hasVertex(self,mark): + return vs, es + + def hasVertex(self, mark): return mark in self.vertexs + def display(self): print('vertexs') for i in self.vertexs: print(self.vertexs[i].__repr__()) print('edges') for i in self.edges: - arc=self.edges[i] - print(str(arc.outArrow)+str(arc)+str(arc.inArrow)) + arc = self.edges[i] + print(str(arc.outArrow) + str(arc) + str(arc.inArrow)) + class Solution(object): def calcEquation(self, equations, values, queries): @@ -167,41 +208,42 @@ def calcEquation(self, equations, values, queries): :type queries: List[List[str]] :rtype: List[float] """ - rst =[] - g= graph() - for edge,wt in zip(equations,values): - g.addEdge(edge[0],edge[1],wt) - g.addEdge(edge[1],edge[0],1/wt)###### to serach quickly but sacrifacing some space + rst = [] + g = graph() + for edge, wt in zip(equations, values): + g.addEdge(edge[0], edge[1], wt) + g.addEdge( + edge[1], edge[0], + 1 / wt) ###### to serach quickly but sacrifacing some space g.display() for i in queries: - if i[0]==i[1]: - if i[0] in g.vertexs:rst.append(1.0) - else:rst.append(-1.0) + if i[0] == i[1]: + if i[0] in g.vertexs: rst.append(1.0) + else: rst.append(-1.0) continue - _,path = g.visitPath(i[0],i[1]) - if path==None: - if not path:rst.append(-1.0) + _, path = g.visitPath(i[0], i[1]) + if path == None: + if not path: rst.append(-1.0) else: mul = 1 - for i in path:mul*=i.weight + for i in path: + mul *= i.weight rst.append(mul) g.revisit() return rst - - -if __name__=='__main__': - equations = [["a","b"],["e","f"],["b","e"]] - values = [3.4,1.4,2.3] - queries = [["b","a"],["a","f"],["f","f"],["e","e"],["c","c"],["a","c"],["f","e"]] + + +if __name__ == '__main__': + equations = [["a", "b"], ["e", "f"], ["b", "e"]] + values = [3.4, 1.4, 2.3] + queries = [["b", "a"], ["a", "f"], ["f", "f"], ["e", "e"], ["c", "c"], + ["a", "c"], ["f", "e"]] sol = Solution() - ret=sol.calcEquation( equations, values, queries) + ret = sol.calcEquation(equations, values, queries) print(ret) - ''' [0.29411764705882354, 10.947999999999999, 1.0, 1.0, -1.0, -1.0, 0.7142857142857143] ''' - - ''' equations = [ ["a", "b"], ["b", "c"] ] values = [2.0, 3.0] @@ -210,11 +252,9 @@ def calcEquation(self, equations, values, queries): ret=sol.calcEquation( equations, values, queries) print(ret) ''' - ''' [6.0, 0.5, -1.0, -1.0, -1.0] ''' - ''' g = graph() g.addEdge(1,2) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/graph.cc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/graph.cc" index fc391bb..5a43873 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/graph.cc" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/graph.cc" @@ -14,20 +14,26 @@ #include #include #include -bool LOG=false; +bool LOG = false; using namespace std; class edge; class vertex { - friend ostream &operator<<(ostream&,const vertex *); - friend ostream &operator<<(ostream&,const edge *); + friend ostream &operator<<(ostream&, const vertex *); + friend ostream &operator<<(ostream&, const edge *); friend class graph; friend class edge; public: - vertex(int n,edge* arc = NULL):val(n),firstEdge(arc){isVisited=false;} - ~vertex(){if(LOG)cout<<"V"< vs; vector es; bool weighted; bool directed; public: - graph():vNum(0),eNum(0),weighted(false),directed(false){} - graph(int ,int,bool,bool); + graph(): vNum(0), eNum(0), weighted(false), directed(false) {} + graph(int, int, bool, bool); ~graph(); void getData(); void display(); - int minPath(int , int ); - void reVisitVertex(){for (int i=0;iisVisited=false ) ;} - void reVisitEdge(){for (int i=0;iisVisited=false ) ;} + int minPath(int, int); + void reVisitVertex() + { + for (int i = 0; i < vNum ; vs[i++]->isVisited = false) ; + } + void reVisitEdge() + { + for (int i = 0; i < eNum ; es[i++]->isVisited = false) ; + } }; -graph::graph(int n,int m,bool weighted,bool directed)\ - :vNum(n),eNum(m),weighted(weighted),directed(directed) +graph::graph(int n, int m, bool weighted, bool directed)\ +: +vNum(n), eNum(m), weighted(weighted), directed(directed) { cin.ignore(1); - for (int i=0;i>a >>b; - --a,--b; - if(weighted)cin>>w; - edge *arc=new edge (vs[a],vs[b],w,vs[a]->firstEdge); + + for (int i = 0; i < vNum ; ++i) vs.push_back(new vertex(i)) ; + + int a, b, w = 1; + + for (int i = 0; i < eNum ; ++i) { + cin >> a >> b; + --a, --b; + + if (weighted)cin >> w; + + edge *arc = new edge(vs[a], vs[b], w, vs[a]->firstEdge); vs[a]->firstEdge = arc; es.push_back(arc); } } -ostream& operator<<(ostream& os,const vertex* v) +ostream& operator<<(ostream& os, const vertex* v) { - os<<"V"<val+1<<" -->"; - edge *arc= v->firstEdge; - while(arc){ - os<<" V"<in->val+1; - arc=arc->nextEdge; + os << "V" << v->val + 1 << " -->"; + edge *arc = v->firstEdge; + + while (arc) { + os << " V" << arc->in->val + 1; + arc = arc->nextEdge; } + return os; } -ostream& operator<<(ostream& os,const edge* e) +ostream& operator<<(ostream& os, const edge* e) { - os<<"V"<out->val+1<<"--"<weight<<"-->"<in->val+1; + os << "V" << e->out->val + 1 << "--" << e->weight << "-->" << e->in->val + 1; return os; } graph::~graph() { - for (int i=0;ifirstEdge; - while(arc){ - edge *p=arc; - arc=arc->nextEdge; + + while (arc) { + edge *p = arc; + arc = arc->nextEdge; delete p; } + delete vs[i]; } } void graph::display() { - cout<<"-----VERTEXS-----"< last; // can't initialize with n NULL ptr - for (int i=0;i distnace(vNum,-1); + + for (int i = 0; i < vNum ; last.push_back(NULL), ++i) ; + + vector distnace(vNum, -1); distnace[p->val] = 0; list que; que.push_back(p); - while(!que.empty()){ + + while (!que.empty()) { vertex * cur = que.front(); que.pop_front(); cur->isVisited = true; edge *arc = cur->firstEdge; - while(arc){ - vertex * tmp=arc->in; - if(! tmp->isVisited){ + + while (arc) { + vertex * tmp = arc->in; + + if (! tmp->isVisited) { que.push_back(tmp); - int sum = arc->weight+distnace[arc->out->val]; - if(distnace[tmp->val]==-1){ - distnace[tmp->val]= sum; + int sum = arc->weight + distnace[arc->out->val]; + + if (distnace[tmp->val] == -1) { + distnace[tmp->val] = sum; last[tmp->val] = arc->out; - } - else if(distnace[tmp->val]>sum){ + } else if (distnace[tmp->val] > sum) { distnace[tmp->val] = sum; last[tmp->val] = arc->out; } } + arc = arc->nextEdge; } } - cout<<"path V"<val]!=p ){ - cout<<"V"<val+1<<"<--"; + + while (cur && last[cur->val] != p) { + cout << "V" << cur->val + 1 << "<--"; cur = last[cur->val]; } + reVisitVertex(); - if(! cur) { + + if (! cur) { cout.clear(); - cout<<"there isn't path from V"<>n>>m; - graph g=graph(n,m,weighted,directed); + cout << "directed ? [y/N] :"; + + if (cin.get() == 'y') directed = true; + else directed = false; + + cout << "input vertex num and edge num" << endl; + cin >> n >> m; + graph g = graph(n, m, weighted, directed); g.display(); return 0; } diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/undirected.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/undirected.py" index 9ea58c6..f0e230d 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/undirected.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/graph/undirected.py" @@ -10,122 +10,156 @@ ######################################################################### ''' -from collections import Iterable,deque +from collections import Iterable, deque + + class vertex: - def __init__(self,mark,val=None): + def __init__(self, mark, val=None): self.mark = mark self.val = val self.edges = {} self.isVisited = False - def __getitem__(self,adjVertexMark): + + def __getitem__(self, adjVertexMark): return self.edges[adjVertexMark] - def __delitem__(self,k): + + def __delitem__(self, k): del self.edges[k] + def __iter__(self): return iter(self.edges.values()) + def __str__(self): - return 'V'+str(self.mark) + return 'V' + str(self.mark) + def __repr__(self): return str(self) + + class edge: - def __init__(self,adjVertexs, weight = 1): + def __init__(self, adjVertexs, weight=1): '''adjVertexs:tuple(v.mark,u.mark)''' self.weight = weight self.adjVertexs = adjVertexs self.isVisted = False - def __add__(self,x): - return self.weight +x - def __radd__(self,x): - return self+x - def __getitem__(self,k): - if k!=0 or k!=1:raise IndexError + + def __add__(self, x): + return self.weight + x + + def __radd__(self, x): + return self + x + + def __getitem__(self, k): + if k != 0 or k != 1: raise IndexError return self.adjVertexs[k] + def __str__(self): - return '--'+str(self.weight)+'--' + return '--' + str(self.weight) + '--' + def __repr__(self): return str(self) + @property def v(self): return self.adjVertexs[0] + @property def u(self): return self.adjVertexs[1] + + class graph: - def __init__(self): + def __init__(self): self.vertexs = {} self.edges = {} - def __getitem__(self,i): + + def __getitem__(self, i): return self.vertexs[i] - def __setitem__(selfi,x): - self.vertexs[i]= x + + def __setitem__(self, i, x): + self.vertexs[i] = x + def __iter__(self): return iter(self.vertexs) + def __bool__(self): - return len(self.vertexs)!=0 - def addVertex(self,vertexs): + return len(self.vertexs) != 0 + + def addVertex(self, vertexs): '''vertexs is a iterable or just a mark that marks the vertex,whichc can be every imutable type''' - if not isinstance(vertexs,Iterable):vertexs=[vertexs] + if not isinstance(vertexs, Iterable): vertexs = [vertexs] for i in vertexs: - if not isinstance(i,vertex) and i not in self.vertexs:self.vertexs[i]= vertex(i) - if isinstance(i,vertex) and i not in self.vertexs:self.vertexs[i.mark]= i + if not isinstance(i, vertex) and i not in self.vertexs: + self.vertexs[i] = vertex(i) + if isinstance(i, vertex) and i not in self.vertexs: + self.vertexs[i.mark] = i - def __getVertex(self,v): - if not isinstance(v,vertex): + def __getVertex(self, v): + if not isinstance(v, vertex): if v not in self.vertexs: - self.vertexs[v]=vertex(v) + self.vertexs[v] = vertex(v) return self.vertexs[v] return v - def addEdge(self,v,u,weight = 1): + + def addEdge(self, v, u, weight=1): v = self.__getVertex(v) u = self.__getVertex(u) for arc in v: - if u in arc.adjVertexs:return #examine that if v,u have been already connected - vertexs = (v,u) - newEdge = edge (vertexs,weight) + if u in arc.adjVertexs: + return #examine that if v,u have been already connected + vertexs = (v, u) + newEdge = edge(vertexs, weight) self.edges[vertexs] = newEdge v.edges[u] = newEdge - u.edges[v] = newEdge - def delEdge(self,v,u): - if not isinstance(v,vertex):v= self.vertexs[v] - if not isinstance(u,vertex):u= self.vertexs[u] + u.edges[v] = newEdge + + def delEdge(self, v, u): + if not isinstance(v, vertex): v = self.vertexs[v] + if not isinstance(u, vertex): u = self.vertexs[u] try: del v[u] del u[v] - except:print("error!"+str(v)+','+str(u)+' arent adjacent now') - del self.edges[(v,u)] + except: + print("error!" + str(v) + ',' + str(u) + ' arent adjacent now') + del self.edges[(v, u)] + def revisit(self): for i in self.vertexs.values(): i.isVisited = False for i in self.edges.values(): i.isVisited = False + def __str__(self): - arcs= list(self.edges.keys()) - arcs=[str(i[0])+str(self.edges[i])+str(i[1]) for i in arcs] - s= '\n'.join(arcs) + arcs = list(self.edges.keys()) + arcs = [str(i[0]) + str(self.edges[i]) + str(i[1]) for i in arcs] + s = '\n'.join(arcs) return s + def __repr__(self): return str(self) - def minPath(self,v,u): - v=self.__getVertex(v) - u=self.__getVertex(u) - q=deque([v]) - last={i:None for i in self.vertexs.values()} + + def minPath(self, v, u): + v = self.__getVertex(v) + u = self.__getVertex(u) + q = deque([v]) + last = {i: None for i in self.vertexs.values()} last[v] = 0 - ds={i:1000000 for i in self.vertexs.values()} - ds[v]=0 - while len(q)!=0: + ds = {i: 1000000 for i in self.vertexs.values()} + ds[v] = 0 + while len(q) != 0: nd = q.popleft() - nd.isVisited=True - for edge in nd: - tgt=None - if edge.v==nd: + nd.isVisited = True + for edge in nd: + tgt = None + if edge.v == nd: tgt = edge.u - else:tgt = edge.v - tmp=ds[nd]+edge - if ds[tgt] >tmp: - ds[tgt]=tmp + else: + tgt = edge.v + tmp = ds[nd] + edge + if ds[tgt] > tmp: + ds[tgt] = tmp last[tgt] = nd - if not tgt.isVisited:q.append(tgt) + if not tgt.isVisited: q.append(tgt) ''' cur = u while cur !=v: @@ -134,36 +168,39 @@ def minPath(self,v,u): print(str(v)) ''' return ds[u] + def hasCircle(self): pass + def display(self): print('vertexs') for i in self.vertexs: print(i) print('edges') for i in self.edges: - arc=self.edges[i] - print(str(arc.v)+str(arc)+str(arc.u)) - -if __name__=='__main__': - n=int(input()) - while n>0: - cities=int(input()) - n-=1 - g=graph() - li={} + arc = self.edges[i] + print(str(arc.v) + str(arc) + str(arc.u)) + + +if __name__ == '__main__': + n = int(input()) + while n > 0: + cities = int(input()) + n -= 1 + g = graph() + li = {} for i in range(cities): - li[input()]=i+1 - arc=int(input()) + li[input()] = i + 1 + arc = int(input()) for j in range(arc): - s=input().split(' ') - g.addEdge(i+1,int(s[0]),int(s[1])) - ct =int(input()) - for i in range(ct): + s = input().split(' ') + g.addEdge(i + 1, int(s[0]), int(s[1])) + ct = int(input()) + for i in range(ct): line = input() - line= line .split(' ') - v,u = li[line[0]],li[line[1]] - print(g.minPath(v,u)) + line = line.split(' ') + v, u = li[line[0]], li[line[1]] + print(g.minPath(v, u)) g.revisit() #http://www.spoj.com/submit/SHPATH/id=20525991 ''' diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/hashTable.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/hashTable.py" index 121fe66..1279279 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/hashTable.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/hashTable.py" @@ -10,18 +10,23 @@ ######################################################################### ''' + class item: - def __init__(self,key,val,nextItem=None): + def __init__(self, key, val, nextItem=None): self.key = key self.val = val self.next = nextItem - def to(self,it): + + def to(self, it): self.next = it - def __eq__(self,it): + + def __eq__(self, it): '''using keyword ''' return self.key == it.key + def __bool__(self): return self.key is not None + def __str__(self): li = [] nd = self @@ -29,27 +34,32 @@ def __str__(self): li.append(f'({nd.key}:{nd.val})') nd = nd.next return ' -> '.join(li) + def __repr__(self): return f'item({self.key},{self.val})' + + class hashTable: - def __init__(self,size=100): + def __init__(self, size=100): self.size = size - self.slots=[item(None,None) for i in range(self.size)] - def __setitem__(self,key,val): + self.slots = [item(None, None) for i in range(self.size)] + + def __setitem__(self, key, val): nd = self.slots[self.myhash(key)] while nd.next: - if nd.key ==key: - if nd.val!=val: nd.val=val + if nd.key == key: + if nd.val != val: nd.val = val return - nd = nd.next - nd.next = item(key,val) + nd = nd.next + nd.next = item(key, val) - def myhash(self,key): - if isinstance(key,str): + def myhash(self, key): + if isinstance(key, str): key = sum(ord(i) for i in key) - if not isinstance(key,int): + if not isinstance(key, int): key = hash(key) return key % self.size + def __iter__(self): '''when using keyword , such as ' if key in dic', the dic's __iter__ method will be called,(if hasn't, calls __getitem__ @@ -57,18 +67,20 @@ def __iter__(self): ''' for nd in self.slots: nd = nd.next - while nd : + while nd: yield nd.key nd = nd.next - def __getitem__(self,key): - nd =self.slots[ self.myhash(key)].next + + def __getitem__(self, key): + nd = self.slots[self.myhash(key)].next while nd: - if nd.key==key: + if nd.key == key: return nd.val nd = nd.next - raise Exception(f'[KeyError]: {self.__class__.__name__} has no key {key}') + raise Exception( + f'[KeyError]: {self.__class__.__name__} has no key {key}') - def __delitem__(self,key): + def __delitem__(self, key): '''note that None item and item(None,None) differ with each other, which means you should take care of them and correctly cop with None item especially when deleting items @@ -77,31 +89,33 @@ def __delitem__(self,key): nd = self.slots[n].next if nd.key == key: if nd.next is None: - self.slots[n] = item(None,None) # be careful - else:self.slots[n] = nd.next + self.slots[n] = item(None, None) # be careful + else: + self.slots[n] = nd.next return while nd: if nd.next is None: break # necessary - if nd.next.key ==key: + if nd.next.key == key: nd.next = nd.next.next nd = nd.next + def __str__(self): - li = ['\n\n'+'-'*5+'hashTable'+'-'*5] - for i,nd in enumerate(self.slots): - li.append(f'{i}: '+str(nd.next)) + li = ['\n\n' + '-' * 5 + 'hashTable' + '-' * 5] + for i, nd in enumerate(self.slots): + li.append(f'{i}: ' + str(nd.next)) return '\n'.join(li) - -if __name__ =='__main__': + +if __name__ == '__main__': from random import randint dic = hashTable(16) n = 100 - li = [1,2,5,40,324,123,6,22,18,34,50] + li = [1, 2, 5, 40, 324, 123, 6, 22, 18, 34, 50] print(f'build hashTable using {li}') for i in li: - dic[i] = '$'+str(i) + dic[i] = '$' + str(i) print(dic) - for i in [1,34,45,123]: + for i in [1, 34, 45, 123]: if i in dic: print(f'{i} in dic, deleting it') del dic[i] diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/huffman/huffman.cc" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/huffman/huffman.cc" index 832a1bb..7a1b0b2 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/huffman/huffman.cc" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/huffman/huffman.cc" @@ -28,348 +28,437 @@ using namespace std; void cat(string s) { - FILE* f=fopen(s.c_str(),"rb"); - cout<<"file content"< -void mapprint(map &f) +void mapprint(map &f) { - for(class map::iterator i = f.begin();i!=f.end();++i) - cout<first<<") : "<second<::iterator i = f.begin(); i != f.end(); ++i) + cout << i->first << ") : " << i->second << endl; } -template +template class node { - public: +public: ky key; wt val; bool visited; - node * left,*right; - node(const node &a){val = a.val;key= a.key;visited = a.visited;left= a.left;right=a.right;} - node(ky k=0,wt v=0):key(k),val(v),visited(false),left(NULL),right(NULL){}; - bool operator<(const node & a)const{return val>a.val;}; + node * left, *right; + node(const node &a) + { + val = a.val; + key = a.key; + visited = a.visited; + left = a.left; + right = a.right; + } + node(ky k = 0, wt v = 0): key(k), val(v), visited(false), left(NULL), right(NULL) {}; + bool operator<(const node & a)const + { + return val > a.val; + }; }; -template +template class huffman { private: - node root; + node root; string res; public: - long total(){return root.val;} - map encode_map; - map decode_map; - huffman(map& mp); + long total() + { + return root.val; + } + map encode_map; + map decode_map; + huffman(map& mp); void display(); - string encode(string,long &); - string decode(string,long&); - void preOrder(node*,string); + string encode(string, long &); + string decode(string, long&); + void preOrder(node*, string); }; -template -huffman::huffman(map& mp) +template +huffman::huffman(map& mp) { - if(mp.empty()){ - cout<<"Error! No data!"< > hp; - for(typename map::iterator i=mp.begin();i!=mp.end();++i){ - hp.push( node(i->first,i->second)); + + priority_queue > hp; + + for (typename map::iterator i = mp.begin(); i != mp.end(); ++i) { + hp.push(node(i->first, i->second)); } - int n =hp.size(); - if(n==1){ + + int n = hp.size(); + + if (n == 1) { root = hp.top(); return; } - while(--n>=1){ - node *a = new node(hp.top()); + + while (--n >= 1) { + node *a = new node(hp.top()); hp.pop(); - node *b = new node(hp.top()); + node *b = new node(hp.top()); hp.pop(); - node * tmp = new node(0,a->val+b->val); - tmp->left = a,tmp->right = b; + node * tmp = new node(0, a->val + b->val); + tmp->left = a, tmp->right = b; hp.push(*tmp); } + root = hp.top(); - preOrder(&root,string()); + preOrder(&root, string()); } -template -void huffman::preOrder(node* nd,string s) +template +void huffman::preOrder(node* nd, string s) { - if(nd->left == NULL){ - encode_map[nd->key] =s; + if (nd->left == NULL) { + encode_map[nd->key] = s; decode_map[s] = nd->key; delete nd; return ; } - preOrder(nd->left,s+'0'); - preOrder(nd->right,s+'1'); + + preOrder(nd->left, s + '0'); + preOrder(nd->right, s + '1'); delete nd; } -template -string huffman::decode(string zipfile_name,long &charNum) +template +string huffman::decode(string zipfile_name, long &charNum) { string uniFileName(string); - FILE * src = fopen(zipfile_name.c_str(),"rb"); + FILE * src = fopen(zipfile_name.c_str(), "rb"); char file_name[nameLength]; - fgets(file_name,nameLength,src); - int ct=-1; - while(file_name[++ct]!='\n'); + fgets(file_name, nameLength, src); + int ct = -1; + + while (file_name[++ct] != '\n'); + int pos = zipfile_name.find('.'); - if(pos==string::npos)pos=zipfile_name.size(); - string name(zipfile_name.substr(0,pos)) ,suffix(file_name,file_name+ct),file(name+suffix); - file=uniFileName(file); - cout<<"extracting compressed file :"< -string huffman::encode(string file_name,long &charNum) +template +string huffman::encode(string file_name, long &charNum) { - charNum=0; + charNum = 0; string uniFileName(string); - int pos =file_name.rfind('.'); - if(pos==string::npos)pos=file_name.size(); - string zipfile = file_name.substr(0,pos)+string(".zzip"); + int pos = file_name.rfind('.'); + + if (pos == string::npos)pos = file_name.size(); + + string zipfile = file_name.substr(0, pos) + string(".zzip"); zipfile = uniFileName(zipfile); - cout<<"generating zip file :"<::iterator i=decode_map.begin();i!=decode_map.end() ;++i ){ + + for (class map::iterator i = decode_map.begin(); i != decode_map.end() ; ++i) { data.append((i->first)); data.append(" "); - data+=(i->second); + data += (i->second); } + int data_size = data.size(); // calculate the size of the code_data char sz[numDigit]; - snprintf(sz,numDigit,"%d",data_size); - int ct=0; - for(;sz[ct];++ct)fputc(sz[ct],dst); - fputc('\n',dst); - fwrite(data.c_str(),data_size,1,dst); - int sum=0,digit=0,num; + snprintf(sz, numDigit, "%d", data_size); + int ct = 0; + + for (; sz[ct]; ++ct)fputc(sz[ct], dst); + + fputc('\n', dst); + fwrite(data.c_str(), data_size, 1, dst); + int sum = 0, digit = 0, num; string code8; - for(int i=0;i -void huffman::display() +template +void huffman::display() { - cout<<"the encoding map,huffman codes are as bellow:"<::iterator i=encode_map.begin();i!=encode_map.end() ;++i ) - cout<first<<"("<<(int)i->first<<"):"<second<::iterator i = encode_map.begin(); i != encode_map.end() ; ++i) + cout << i->first << "(" << (int)i->first << "):" << i->second << endl; } -bool handle_one(string file_name,vector &origin,vector &compressed) +bool handle_one(string file_name, vector &origin, vector &compressed) { int name_length = file_name.size(); - FILE *src=fopen(file_name.c_str(),"rb"); - cout<<"opening "< mp; - while(!feof(src)){ - fread(&cur,sizeof(char),1,src); - if(mp.count(cur)){ - mp[cur]+=1; - } - else mp[cur]=1; + map mp; + + while (!feof(src)) { + fread(&cur, sizeof(char), 1, src); + + if (mp.count(cur)) { + mp[cur] += 1; + } else mp[cur] = 1; } + fclose(src); - huffman hf(mp); + huffman hf(mp); long sz; - string s(hf.encode(file_name,sz)); - origin.push_back(hf.total()),compressed.push_back(sz); - cout<<"\ncontinue to uncompress? [Y/n]"<& v) +void splitToVec(char * s, vector& v) { - int i=0,last=0; - for(;s[i];++i){ - if(isSep(s[i])){ - v.push_back(string(s+last,s+i)); - while(s[++i]&&isSep(s[i])); - last=i; + int i = 0, last = 0; + + for (; s[i]; ++i) { + if (isSep(s[i])) { + v.push_back(string(s + last, s + i)); + + while (s[++i] && isSep(s[i])); + + last = i; } } - if(s[last])v.push_back(string(s+last,s+i)); + + if (s[last])v.push_back(string(s + last, s + i)); } -bool lenStr(string &a,string &b) +bool lenStr(string &a, string &b) { - return a.size() & names) { - vector originSize,compressedSize; + vector originSize, compressedSize; vector deltaTime; double last; vector indicator; bool bl; - for(vector::iterator i=names.begin();i!=names.end();++i){ + + for (vector::iterator i = names.begin(); i != names.end(); ++i) { struct timeval tv; - gettimeofday(&tv,NULL); - last=tv.tv_sec; - bl=handle_one(*i,originSize,compressedSize); + gettimeofday(&tv, NULL); + last = tv.tv_sec; + bl = handle_one(*i, originSize, compressedSize); indicator.push_back(bl); - gettimeofday(&tv,NULL); - deltaTime.push_back(tv.tv_sec-last); + gettimeofday(&tv, NULL); + deltaTime.push_back(tv.tv_sec - last); } - cout<<"\nDealt file number "<::iterator p=max_element(names.begin(),names.end(),lenStr); - int len = p->size()+2; - for(int i =0;i::iterator p = max_element(names.begin(), names.end(), lenStr); + int len = p->size() + 2; + + for (int i = 0; i < names.size(); ++i) { + if (! indicator[i]) { + continue; + } + + cout << names[i] << string(len - names[i].size(), ' '); + cout << deltaTime[i] << "s " << compressedSize[i] / 1024.0 << "KB/" << originSize[i] / 1024.0 << "KB :"; + cout << compressedSize[i] * 100.0 / originSize[i] << "%" << endl; } - cout< names; string file; - if(argv>1){ - for(int i=1;i 1) { + for (int i = 1; i < argv; ++i) { names.push_back(argc[i]); } + go(names); names.clear(); } + char mk; - while(1){ + + while (1) { char s[201]; - cout<<"Input file names separated by space "< int - if root is None:return t - if t is None:return root - if root int + if root is None: return t + if t is None: return root + if root < t: + root, t = t, root + root.right = leftHeap._merge(root.right, t) if root.left is None or root.right is None: - root.s=1 + root.s = 1 if root.left is None: - root.left,root.right = root.right,None + root.left, root.right = root.right, None else: - if root.left.sself.s else 2*p+self.lowExt-self.n+1 - def arrayToTree(self,i): - return (i+self.offset)//2 if i<=self.lowExt else (i-self.lowExt+ self.n-1)//2 - def win(self,a,b): - return ab - def initTree(self,p): - if p>=self.n: - delta = p%2 #!!! good job notice delta mark the lchild or rchlid - return self.players[self.treeToArray(p//2)+delta] - l = self.initTree(2*p) - r = self.initTree(2*p+1) - if self.win(r,l): + self.lowExt = (self.n - i) * 2 + self.s = i - 1 + self.offset = 2 * i - 1 + + def treeToArray(self, p): + return 2 * p - self.offset if p > self.s else 2 * p + self.lowExt - self.n + 1 + + def arrayToTree(self, i): + return (i + self.offset) // 2 if i <= self.lowExt else ( + i - self.lowExt + self.n - 1) // 2 + + def win(self, a, b): + return a < b if self.reverse else a > b + + def initTree(self, p): + if p >= self.n: + delta = p % 2 #!!! good job notice delta mark the lchild or rchlid + return self.players[self.treeToArray(p // 2) + delta] + l = self.initTree(2 * p) + r = self.initTree(2 * p + 1) + if self.win(r, l): self.tree[p] = l self.dir = 'r' return r - else : + else: self.tree[p] = r self.dir = 'l' return l - def getWinIdx(self,idx=1): - while 2*idx bool isZero(float a) { - return a<0.00001&&-a<0.00001; + return a < 0.00001 && -a < 0.00001; } -template class map; - //notice that if you declare a class template,declare the class first like this. -template +template class map; +//notice that if you declare a class template,declare the class first like this. +template class pair { - friend class map; - pair *next; - public: + friend class map; + pair *next; +public: t1 first; t2 second; }; -template +template class map { int n; - pair head; + pair head; int cur; - pair *last_visit; - public: + pair *last_visit; +public: map(); ~map(); bool has(t1); void erase(t1); t2& operator[](t1); - pair &locate(int index = -1); + pair &locate(int index = -1); int size(); }; -template -map::map(){ - n=0; - cur=-1; - last_visit= &head; - head.next=NULL; +template +map::map() +{ + n = 0; + cur = -1; + last_visit = &head; + head.next = NULL; head.first = head.second = 0; } -template -map::~map() +template +map::~map() { - pair *p,*q=&head; - while(q!=NULL){ - p=q->next; + pair *p, *q = &head; + + while (q != NULL) { + p = q->next; delete q; - q=p; + q = p; } } -template -bool map::has(t1 key) +template +bool map::has(t1 key) { - pair *p = head.next; - for(int i = 0;ifirst<=key;++i){ - if(isZero(p->first-key)) return 1; - p=p->next; + pair *p = head.next; + + for (int i = 0; i < n && p->first <= key; ++i) { + if (isZero(p->first - key)) return 1; + + p = p->next; } + return 0; } -template -pair& map::locate(int index) +template +pair& map::locate(int index) { - if(index>=n||index<0){ + if (index >= n || index < 0) { printf("the index is out of range\n"); return head; } - if(cur>index){ + + if (cur > index) { last_visit = &head; cur = -1; } - while(curnext; ++cur; } + return *last_visit; } -template -int map::size() +template +int map::size() { return n; } -template -t2& map::operator[](t1 key) +template +t2& map::operator[](t1 key) { - pair * p=&head; - while(p->next!=NULL){ - if(isZero(p->next->first-key)) return p->next->second; - else if(p->next->first>key){break;} - p=p->next; + pair * p = &head; + + while (p->next != NULL) { + if (isZero(p->next->first - key)) return p->next->second; + else if (p->next->first > key) { + break; + } + + p = p->next; } - cur=-1; - last_visit= &head; - pair *tmp = new pair; + + cur = -1; + last_visit = &head; + pair *tmp = new pair; tmp ->next = p->next; tmp->first = key; p->next = tmp; ++n; return tmp->second; } -template -void map::erase(t1 key) +template +void map::erase(t1 key) { - pair *p = &head; - while(p->next!=NULL){ - if(isZero(p->next->first-key)){ - pair *q = p->next; + pair *p = &head; + + while (p->next != NULL) { + if (isZero(p->next->first - key)) { + pair *q = p->next; p->next = p->next->next; delete q; --n; break; } - p=p->next; + + p = p->next; } - cur=-1; - last_visit= &head; + + cur = -1; + last_visit = &head; } int main() { - map b; - for(int i = 0;i<40;++i){ + map b; + + for (int i = 0; i < 40; ++i) { b[i] = i; - if(i%3){ + + if (i % 3) { b[i] = 1; } - if(i%2){ + + if (i % 2) { b.erase(i); } } - for(int i = 0;i +#include #include #include #include @@ -19,16 +19,17 @@ using namespace std; #if defined(__linux__) - #define LINUX true +#define LINUX true #elif defined(_WIN32) - #define LINUX false +#define LINUX false #endif bool isZero(double a) { - if((a<0.00001)&&-a<0.00001) + if ((a < 0.00001) && -a < 0.00001) return true; + return false; } class node @@ -42,9 +43,9 @@ class polynomial int SIZE; int n; node* p; - public: - polynomial(int sz=50); - polynomial(const polynomial & ); +public: + polynomial(int sz = 50); + polynomial(const polynomial &); ~polynomial(); double cal(double); void getData(); @@ -54,10 +55,10 @@ class polynomial polynomial operator-(const polynomial &); polynomial operator*(const polynomial &); }; -polynomial::polynomial(int sz):n(0),SIZE(sz) +polynomial::polynomial(int sz): n(0), SIZE(sz) { p = (node*) new node[SIZE]; - memset(p,0,sizeof(p)); + memset(p, 0, sizeof(p)); } polynomial::~polynomial() { @@ -65,18 +66,21 @@ polynomial::~polynomial() } double polynomial::cal(double x) { - double rst=0; - for(int i =0;i=0;--i){ + + // char *fmt = ("x"); printf(fmt,...); + for (int i = n - 1; i >= 0; --i) { double t = tmp[i].coefficient; double idx = tmp[i].index; - if(isZero(idx)){ - printf("%+g",t); + + if (isZero(idx)) { + printf("%+g", t); continue; } - if(isZero(t-1)) printf("+"); - else if(isZero(t+1))printf("-"); - else printf("%+g",t); + + if (isZero(t - 1)) printf("+"); + else if (isZero(t + 1))printf("-"); + else printf("%+g", t); + printf("x"); - if(!isZero(idx-1)) printf("^%g",idx); + + if (!isZero(idx - 1)) printf("^%g", idx); } + printf("\n"); } void polynomial::getData() { printf("Please input data . \n"); printf("For every item,Coefficient first .Use space to separate,EOF to end\n"); - map mp; + map mp; double idx; double coef; - while(scanf("%lf%lf",&coef,&idx)!=EOF){ - if(isZero(coef)) continue; - if(mp.count(idx) == 0){ + + while (scanf("%lf%lf", &coef, &idx) != EOF) { + if (isZero(coef)) continue; + + if (mp.count(idx) == 0) { mp[idx] = coef; - } - else{ + } else { mp[idx] += coef; - if(isZero(mp[idx])){ + + if (isZero(mp[idx])) { mp.erase(idx); } } } - if(mp.size()>SIZE){ - SIZE *=2; - p = (node*)realloc(p,sizeof(node)*SIZE) ; + + if (mp.size() > SIZE) { + SIZE *= 2; + p = (node*)realloc(p, sizeof(node) * SIZE) ; } - for(map::iterator it = mp.begin();it!=mp.end();++it){ + + for (map::iterator it = mp.begin(); it != mp.end(); ++it) { p[n].index = it->first; p[n++].coefficient = it->second; } @@ -144,48 +161,52 @@ void polynomial::getData() polynomial polynomial::operator+(const polynomial & a) { polynomial rst ; - int p1 = 0,p2 = 0,p3 = 0; + int p1 = 0, p2 = 0, p3 = 0; double exp1 = p[p1].index; double exp2 = a.p[p2].index; - while(p1exp2){ - rst.p[p3].index = exp2; - rst.p[p3].coefficient = a.p[p2].coefficient; - ++p2,++p3; - exp2 = a.p[p2].index;; + + while (p2 < a.n && exp1 > exp2) { + rst.p[p3].index = exp2; + rst.p[p3].coefficient = a.p[p2].coefficient; + ++p2, ++p3; + exp2 = a.p[p2].index;; } - if(isZero(exp1-exp2)){ - double tmp= p[p1].coefficient + a.p[p2].coefficient; - if(isZero(tmp)){ - ++p1,++p2; - } - else{ + + if (isZero(exp1 - exp2)) { + double tmp = p[p1].coefficient + a.p[p2].coefficient; + + if (isZero(tmp)) { + ++p1, ++p2; + } else { rst.p[p3].index = p[p1].index; rst.p[p3].coefficient = tmp; - ++p1,++p2,++p3; + ++p1, ++p2, ++p3; } } } - if(p1 == n){ - while(p2 mp; - for(int i = 0;i mp; + + for (int i = 0; i < n; ++i) { double idx = p[i].index; double coef = p[i].coefficient; - for(int j = 0;jsz){ - sz *=2; + + int sz = 50; + + while (mp.size() > sz) { + sz *= 2; } + polynomial rst(sz); - for(map::iterator it = mp.begin();it!=mp.end();++it){ + + for (map::iterator it = mp.begin(); it != mp.end(); ++it) { rst.p[rst.n].index = it->first; rst.p[rst.n++].coefficient = it->second; } + return rst; } int num = 0; @@ -250,94 +281,94 @@ void menu() void loop() { int op; - while(scanf("%d",&op)!=EOF){ - if(op == 0){ - pl[num].getData(); - ++num; - printf("You've created polynomial %d:\n",num); - pl[num-1].display(); - } - else if(op==1||op==2||op==3){ - if(num<2){ - printf("Oops! you've got less two polynomial\nPlease choose another operation\n"); - continue; - } - printf("input two nums of the two polynomial to be operated.eg: 1 2\n"); - int t1=100,t2=100; - while(1){ - scanf("%d%d",&t1,&t2); - if(t1>num||t2>num||t1<0||t2<0){ - printf("wrong num ,please input again\n"); - } - else break; - } - printf("the rst is:\n"); - t1 -=1,t2-=1; - if(op == 1){ - (pl[t1]+pl[t2]).display(); - } - else if(op == 2){ - (pl[t1]-pl[t2]).display(); - } - else (pl[t1]*pl[t2]).display(); + + while (scanf("%d", &op) != EOF) { + if (op == 0) { + pl[num].getData(); + ++num; + printf("You've created polynomial %d:\n", num); + pl[num - 1].display(); + } else if (op == 1 || op == 2 || op == 3) { + if (num < 2) { + printf("Oops! you've got less two polynomial\nPlease choose another operation\n"); + continue; } - else if(op == 4){ - printf("input a polynomial's num to display it\n"); - int tmp; - scanf("%d",&tmp); - if(tmp>num){ - printf("wrong num"); - } - else{ - printf("info of polynomial %d\n",tmp); - pl[tmp-1].display(); - } + + printf("input two nums of the two polynomial to be operated.eg: 1 2\n"); + int t1 = 100, t2 = 100; + + while (1) { + scanf("%d%d", &t1, &t2); + + if (t1 > num || t2 > num || t1 < 0 || t2 < 0) { + printf("wrong num ,please input again\n"); + } else break; } - else if(op == 9){ - for(int i = 0;i num) { + printf("wrong num"); + } else { + printf("info of polynomial %d\n", tmp); + pl[tmp - 1].display(); } - else if(op == 5){ - menu(); + } else if (op == 9) { + for (int i = 0; i < num; ++i) { + printf("polynomial %d : ", i + 1); + pl[i].display(); } - else if(op == 6){ - if(LINUX) system("clear"); - else system("cls"); - menu(); + } else if (op == 5) { + menu(); + } else if (op == 6) { + if (LINUX) system("clear"); + else system("cls"); + + menu(); + } else if (op == 10) { + double x; + int t; + printf("choose a polynomial\n"); + scanf("%d", &t); + + if (t > num || t < 0) { + printf("wrong num\n"); + } else { + printf("input a value\n"); + scanf("%lf", &x); + pl[t - 1].display(); + printf("%g\n", pl[t - 1].cal(x)); } - else if(op == 10){ - double x; - int t; - printf("choose a polynomial\n"); - scanf("%d",&t); - if(t>num||t<0){ - printf("wrong num\n"); - } - else { - printf("input a value\n"); - scanf("%lf",&x); - pl[t-1].display(); - printf("%g\n",pl[t-1].cal(x)); - } + } else if (op == 8) { + if (num == 0) { + printf("you have'nt any polynomial tp copy\n"); + continue; } - else if(op == 8){ - if(num == 0){ - printf("you have'nt any polynomial tp copy\n"); - continue; - } - int n = num+1; - while(n>num){ - printf("input the number of an existing polynomial you want to copy\n"); - scanf("%d",&n); - } - (pl[num] = pl[n-1]); - printf("You've copyed this polynomial:\n"); - pl[num++].display(); + + int n = num + 1; + + while (n > num) { + printf("input the number of an existing polynomial you want to copy\n"); + scanf("%d", &n); } - else exit(0); - printf("select an operation\n"); + + (pl[num] = pl[n - 1]); + printf("You've copyed this polynomial:\n"); + pl[num++].display(); + } else exit(0); + + printf("select an operation\n"); } } int main(void) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/polynomial.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/polynomial.py" index 74bbdfb..b51fa4e 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/polynomial.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/polynomial.py" @@ -11,61 +11,71 @@ ''' #!/bin/python3 -# notice that creating a class's initialization won't conflict with __call__ method +# notice that creating a class's initialization won't conflict with __call__ method # because the former call class ,and the latter call instance # to be implemented + class polynomial: - pls= [] + pls = [] n = 0 + def dictize(pl): - if isinstance(pl,int) or isinstance(pl,float): - pl = {0:pl} - if isinstance(pl,polynomial): + if isinstance(pl, int) or isinstance(pl, float): + pl = {0: pl} + if isinstance(pl, polynomial): pl = pl.polynomial.copy() return pl + def isZero(n): - return abs(n)<0.000001 - def __init__(self,s='0 0'): + return abs(n) < 0.000001 + + def __init__(self, s='0 0'): polynomial.pls.append(self) - polynomial.n +=1 - if isinstance(s,polynomial): - self.polynomial=s.polynomial.copy() - # don't write like this .**self.polynomial = s.polynomial**,it's ref + polynomial.n += 1 + if isinstance(s, polynomial): + self.polynomial = s.polynomial.copy() + # don't write like this .**self.polynomial = s.polynomial**,it's ref return - elif isinstance(s,dict): + elif isinstance(s, dict): self.polynomial = s.copy() return - s= s.replace(',',' ') - s= s.replace('x',' ') - s= s.replace('x^',' ') - s = s.replace(':',' ') - s = s.replace('\n',' ') + s = s.replace(',', ' ') + s = s.replace('x', ' ') + s = s.replace('x^', ' ') + s = s.replace(':', ' ') + s = s.replace('\n', ' ') s = s.split(' ') num = len(s) i = 0 print(s) self.polynomial = dict() li = [float(i) for i in s] - while ichd and nd.left is not None: - if nd.left is chd: return nd + if nd > chd and nd.left is not None: + if nd.left is chd: return nd else: nd = nd.left - elif ndval: + elif nd.val > val: nd = nd.left else: nd = nd.right - def getSuccessor(self,nd): + + def getSuccessor(self, nd): if nd: if nd.right: nd = nd.right while nd.left: nd = nd.left return nd - else:return self.getParent(nd) - def transferParent(self,origin,new): - if origin is self.root: + else: + return self.getParent(nd) + + def transferParent(self, origin, new): + if origin is self.root: self.root = new else: prt = self.getParent(origin) prt.setChild(new, prt.left is origin) - def insert(self,nd): - if not isinstance(nd,node): + def insert(self, nd): + if not isinstance(nd, node): nd = node(nd) - elif nd.isBlack: nd.isBlack = False + elif nd.isBlack: + nd.isBlack = False if self.root is None: self.root = nd @@ -111,12 +132,12 @@ def insert(self,nd): else: parent = self.root while parent: - if parent == nd : return None - if parent>nd: - if parent.left : + if parent == nd: return None + if parent > nd: + if parent.left: parent = parent.left else: - parent.left = nd + parent.left = nd break else: if parent.right: @@ -124,12 +145,13 @@ def insert(self,nd): else: parent.right = nd break - self.fixUpInsert(parent,nd) - def fixUpInsert(self,parent,nd): + self.fixUpInsert(parent, nd) + + def fixUpInsert(self, parent, nd): ''' adjust color and level, there are two red nodes: the new one and its parent''' while not self.checkBlack(parent): grand = self.getParent(parent) - isLeftPrt = grand.left is parent + isLeftPrt = grand.left is parent uncle = grand.getChild(not isLeftPrt) if not self.checkBlack(uncle): # case 1: new node's uncle is red @@ -146,35 +168,36 @@ def fixUpInsert(self,parent,nd): # grand grand # parent or parent # nd nd - parent.setChild(nd.getChild(isLeftPrt),not isLeftPrt) - nd.setChild(parent,isLeftPrt) - grand.setChild(nd,isLeftPrt) - nd,parent = parent,nd + parent.setChild(nd.getChild(isLeftPrt), not isLeftPrt) + nd.setChild(parent, isLeftPrt) + grand.setChild(nd, isLeftPrt) + nd, parent = parent, nd # case 2.2 the new node is inserted in left-left or right-right form # grand grand # parent or parent # nd nd - grand.setChild(parent.getChild(not isLeftPrt),isLeftPrt) - parent.setChild(grand,not isLeftPrt) + grand.setChild(parent.getChild(not isLeftPrt), isLeftPrt) + parent.setChild(grand, not isLeftPrt) self.setBlack(grand, False) self.setBlack(parent, True) - self.transferParent(grand,parent) - self.setBlack(self.root,True) + self.transferParent(grand, parent) + self.setBlack(self.root, True) - def copyNode(self,src,des): + def copyNode(self, src, des): '''when deleting a node which has two kids, copy its succesor's data to his position data exclude left, right , isBlack ''' des.val = src.val - def delete(self,nd): + + def delete(self, nd): '''delete node in a binary search tree''' - if not isinstance(nd,node): + if not isinstance(nd, node): nd = self.find(nd) if nd is None: return y = None if nd.left and nd.right: - y= self.getSuccessor(nd) + y = self.getSuccessor(nd) else: y = nd py = self.getParent(y) @@ -186,68 +209,67 @@ def delete(self,nd): else: py.right = x if y != nd: - self.copyNode(y,nd) + self.copyNode(y, nd) - if self.checkBlack(y): self.fixUpDel(py,x) + if self.checkBlack(y): self.fixUpDel(py, x) - - def fixUpDel(self,prt,chd): + def fixUpDel(self, prt, chd): ''' adjust colors and rotate ''' while self.root != chd and self.checkBlack(chd): - isLeft = prt.left is chd + isLeft = prt.left is chd brother = prt.getChild(not isLeft) # brother is black lb = self.checkBlack(brother.getChild(isLeft)) rb = self.checkBlack(brother.getChild(not isLeft)) - if not self.checkBlack(brother): + if not self.checkBlack(brother): # case 1: brother is red. converted to case 2,3,4 # prt (isLeft) rotate prt.setChild(brother.getChild(isLeft), not isLeft) brother.setChild(prt, isLeft) - self.setBlack(prt,False) - self.setBlack(brother,True) + self.setBlack(prt, False) + self.setBlack(brother, True) - self.transferParent(prt,brother) - elif lb and rb: - # case 2: brother is black and two kids are black. + self.transferParent(prt, brother) + elif lb and rb: + # case 2: brother is black and two kids are black. # conveted to the begin case - self.setBlack(brother,False) + self.setBlack(brother, False) chd = prt prt = self.getParent(chd) else: - if rb: + if rb: # case 3: brother is black and left kid is red and right child is black # uncle's son is nephew, and niece for uncle's daughter nephew = brother.getChild(isLeft) - self.setBlack(nephew,True) - self.setBlack(brother,False) + self.setBlack(nephew, True) + self.setBlack(brother, False) # brother (not isLeft) rotate - prt.setChild(nephew,not isLeft) - brother.setChild(nephew.getChild(not isLeft),isLeft) + prt.setChild(nephew, not isLeft) + brother.setChild(nephew.getChild(not isLeft), isLeft) nephew.setChild(brother, not isLeft) brother = nephew # case 4: brother is black and right child is red brother.isBlack = prt.isBlack - self.setBlack(prt,True) - self.setBlack(brother.getChild(not isLeft),True) + self.setBlack(prt, True) + self.setBlack(brother.getChild(not isLeft), True) # prt left rotate - prt.setChild(brother.getChild(isLeft),not isLeft) - brother.setChild(prt,isLeft) + prt.setChild(brother.getChild(isLeft), not isLeft) + brother.setChild(prt, isLeft) - self.transferParent(prt,brother) + self.transferParent(prt, brother) chd = self.root - self.setBlack(chd,True) - + self.setBlack(chd, True) def display(self): def getHeight(nd): - if nd is None:return 0 - return max(getHeight(nd.left),getHeight(nd.right)) +1 + if nd is None: return 0 + return max(getHeight(nd.left), getHeight(nd.right)) + 1 + def levelVisit(root): from collections import deque lst = deque([root]) @@ -255,85 +277,93 @@ def levelVisit(root): h = getHeight(root) ct = lv = 0 while 1: - ct+=1 + ct += 1 nd = lst.popleft() if ct >= 2**lv: - lv+=1 - if lv>h:break + lv += 1 + if lv > h: break level.append([]) level[-1].append(str(nd)) if nd is not None: - lst += [nd.left,nd.right] + lst += [nd.left, nd.right] else: - lst +=[None,None] + lst += [None, None] return level + def addBlank(lines): width = 5 - sep = ' '*width + sep = ' ' * width n = len(lines) - for i,oneline in enumerate(lines): - k = 2**(n-i) -1 - new = [sep*((k-1)//2)] + for i, oneline in enumerate(lines): + k = 2**(n - i) - 1 + new = [sep * ((k - 1) // 2)] for s in oneline: new.append(s.ljust(width)) - new.append(sep*k) + new.append(sep * k) lines[i] = new return lines lines = levelVisit(self.root) lines = addBlank(lines) li = [''.join(line) for line in lines] - li.insert(0,'red-black-tree'.rjust(48,'-') + '-'*33) - li.append('end'.rjust(42,'-')+'-'*39+'\n') - return '\n'.join(li) - + li.insert(0, 'red-black-tree'.rjust(48, '-') + '-' * 33) + li.append('end'.rjust(42, '-') + '-' * 39 + '\n') + return '\n'.join(li) + def __str__(self): return self.display() -def genNum(n =10): - nums =[] +def genNum(n=10): + nums = [] for i in range(n): while 1: - d = randint(0,100) + d = randint(0, 100) if d not in nums: nums.append(d) break return nums -def buildTree(n=10,nums=None,visitor=None): - if nums is None or nums ==[]: nums = genNum(n) + +def buildTree(n=10, nums=None, visitor=None): + if nums is None or nums == []: nums = genNum(n) rbtree = redBlackTree() print(f'build a red-black tree using {nums}') for i in nums: rbtree.insert(i) if visitor: visitor(rbtree) - return rbtree,nums + return rbtree, nums + + def testInsert(): def visitor(t): print(t) - rbtree,nums = buildTree(visitor = visitor) - print('-'*5+ 'in-order visit' + '-'*5) - for i,j in enumerate(rbtree.sort()): + + rbtree, nums = buildTree(visitor=visitor) + print('-' * 5 + 'in-order visit' + '-' * 5) + for i, j in enumerate(rbtree.sort()): print(f'{i+1}: {j}') + def testSuc(): - rbtree,nums = buildTree() + rbtree, nums = buildTree() for i in rbtree.sort(): print(f'{i}\'s suc is {rbtree.getSuccessor(i)}') + def testDelete(): #nums = [2,3,3,2,6,7,2,1] nums = None - rbtree,nums = buildTree(nums = nums) + rbtree, nums = buildTree(nums=nums) print(rbtree) for i in nums: print(f'deleting {i}') rbtree.delete(i) print(rbtree) -if __name__=='__main__': + +if __name__ == '__main__': #testSuc() #testInsert() testDelete() diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/splayTree.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/splayTree.py" index 42be71b..a4f84cf 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/splayTree.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/codes/mbinary/splayTree.py" @@ -10,148 +10,170 @@ ######################################################################### ''' -from collections import deque,Iterable +from collections import deque, Iterable + + # use isinstance(obj,Iterable) to judge if an obj is iterable class node: - def __init__(self,val = None,left=None,right=None,parent=None): + def __init__(self, val=None, left=None, right=None, parent=None): self.val = val - if val :self.freq = 1 - else :self.freq = 0 + if val: self.freq = 1 + else: self.freq = 0 self.left = left self.right = right - self.parent = parent - def getChild(self,s=0): - if isinstance(s,int):s =[s] + self.parent = parent + + def getChild(self, s=0): + if isinstance(s, int): s = [s] last = self for i in s: - if not last:return None + if not last: return None if i == 0: last = last.left - else:last = last.right + else: last = last.right return last - def setChild(self,child,s=0): - if isinstance(s,Iterable): + + def setChild(self, child, s=0): + if isinstance(s, Iterable): i = s[0] del s[0] - if i == 0:self.left.setChild(child,s) - else:self.right.setChild(child,s) - elif s:self.right = child - else:self.left = child + if i == 0: self.left.setChild(child, s) + else: self.right.setChild(child, s) + elif s: self.right = child + else: self.left = child + + class splayTree: - def __init__(self,s=[]): + def __init__(self, s=[]): s = list(s) self.root = None - s = sorted(s,reverse = True) + s = sorted(s, reverse=True) for i in s: - self.insert(self.root,i) - def insert(self,k): - if not self.root :self.root = node(k) - else:self._insert(self.root,k) - def _insert(self,root,k): - if root.val == k : - root.freq +=1 - elif root.val k: - return self._find(root.left,k) - elif root.valself.s else 2*p+self.lowExt-self.n+1 - def arrayToTree(self,i): - return (i+self.offset)//2 if i<=self.lowExt else (i-self.lowExt+ self.n-1)//2 - def win(self,a,b): - return ab - def initTree(self,p): - if p>=self.n: - delta = p%2 #!!! good job notice delta mark the lchild or rchlid - return self.players[self.treeToArray(p//2)+delta] - l = self.initTree(2*p) - r = self.initTree(2*p+1) - self.tree[p] = l if self.win(l,r) else r + self.lowExt = (self.n - i) * 2 + self.s = i - 1 + self.offset = 2 * i - 1 + + def treeToArray(self, p): + return 2 * p - self.offset if p > self.s else 2 * p + self.lowExt - self.n + 1 + + def arrayToTree(self, i): + return (i + self.offset) // 2 if i <= self.lowExt else ( + i - self.lowExt + self.n - 1) // 2 + + def win(self, a, b): + return a < b if self.reverse else a > b + + def initTree(self, p): + if p >= self.n: + delta = p % 2 #!!! good job notice delta mark the lchild or rchlid + return self.players[self.treeToArray(p // 2) + delta] + l = self.initTree(2 * p) + r = self.initTree(2 * p + 1) + self.tree[p] = l if self.win(l, r) else r return self.tree[p] + def winner(self): idx = 1 - while 2*idx' + return '--' + str(self.weight) + '-->' + def __repr__(self): return str(self) + + class graph: - def __init__(self): + def __init__(self): self.vertexs = {} self.edges = {} - def __getitem__(self,i): + + def __getitem__(self, i): return self.vertexs[i] - def __setitem__(selfi,x): - self.vertexs[i]= x + + def __setitem__(self, i, x): + self.vertexs[i] = x + def __iter__(self): return iter(self.vertexs.values()) + def __bool__(self): - return len(self.vertexs)!=0 - def addVertex(self,i): - if not (i,vertex) and i not in self.vertexs:self.vertexs[i]= vertex(i) - if isinstance(i,vertex) and i not in self.vertexs:self.vertexs[i.mark]= i - def isConnected(self,v,u): + return len(self.vertexs) != 0 + + def addVertex(self, i): + if not (i, vertex) and i not in self.vertexs: + self.vertexs[i] = vertex(i) + if isinstance(i, vertex) and i not in self.vertexs: + self.vertexs[i.mark] = i + + def isConnected(self, v, u): v = self.__getVertex(v) u = self.__getVertex(u) - arc= v.firstEdge - while arc!=None: - if arc.inArrow==u:return True + arc = v.firstEdge + while arc != None: + if arc.inArrow == u: return True arc = arc.inNextEdge return False - def __getVertex(self,v): - if not isinstance(v,vertex): + + def __getVertex(self, v): + if not isinstance(v, vertex): if v not in self.vertexs: - self.vertexs[v]=vertex(v) + self.vertexs[v] = vertex(v) return self.vertexs[v] return v - def addEdge(self,v,u,weight = 1): + + def addEdge(self, v, u, weight=1): v = self.__getVertex(v) u = self.__getVertex(u) arc = v.firstEdge - while arc!=None: #examine that if v,u have been already connected - if arc.inArrow==u: return - arc= arc.outNextEdge - newEdge = edge(v,u,v.firstEdge,u.firstEdge,weight) - self.edges[(v.mark,u.mark)] = newEdge + while arc != None: #examine that if v,u have been already connected + if arc.inArrow == u: return + arc = arc.outNextEdge + newEdge = edge(v, u, v.firstEdge, u.firstEdge, weight) + self.edges[(v.mark, u.mark)] = newEdge v.firstEdge = newEdge - def delEdge(self,v,u): - if not isinstance(v,vertex):v= self.vertexs[v] - if not isinstance(u,vertex):u= self.vertexs[u] - self._unrelated(v,u) - del self.edges[(v.mark,u.mark)] - def _unrelated(self,v,u): - if v.firstEdge==None:return + + def delEdge(self, v, u): + if not isinstance(v, vertex): v = self.vertexs[v] + if not isinstance(u, vertex): u = self.vertexs[u] + self._unrelated(v, u) + del self.edges[(v.mark, u.mark)] + + def _unrelated(self, v, u): + if v.firstEdge == None: return if v.firstEdge.inArrow == u: - v.firstEdge =v.firstEdge.outNextEdge + v.firstEdge = v.firstEdge.outNextEdge else: arc = v.firstEdge - while arc.outNextEdge!=None: - if arc.outNextEdge.inArrow ==u: - arc.outNextEdge = arc.outNextEdge.outNextEdge - break + while arc.outNextEdge != None: + if arc.outNextEdge.inArrow == u: + arc.outNextEdge = arc.outNextEdge.outNextEdge + break + def reVisit(self): for i in self.vertexs: - self.vertexs[i].isVisited=False + self.vertexs[i].isVisited = False for i in self.edges: - self.edges[i].isVisited=False + self.edges[i].isVisited = False + def __str__(self): - arcs= list(self.edges.keys()) - arcs=[str(i[0])+'--->'+str(i[1])+' weight:'+str(self.edges[i].weight) for i in arcs] - s= '\n'.join(arcs) + arcs = list(self.edges.keys()) + arcs = [ + str(i[0]) + '--->' + str(i[1]) + ' weight:' + str( + self.edges[i].weight) for i in arcs + ] + s = '\n'.join(arcs) return s + def __repr__(self): return str(self) - def notIn(self,v): - if (isinstance(v,vertex) and v.mark not in self.vertexs) or v not in self.vertexs: + + def notIn(self, v): + if (isinstance(v, vertex) + and v.mark not in self.vertexs) or v not in self.vertexs: return True return False - def minPath(self,v,u): + + def minPath(self, v, u): '''dijstra''' self.reVisit() - if self.notIn(v) or self.notIn(u): - return [],0 + if self.notIn(v) or self.notIn(u): + return [], 0 v = self.__getVertex(v) u = self.__getVertex(u) - if v.firstEdge==None:return [],0 - q=deque([v]) - last = {i : None for i in self} - distance={i : 1<<30 for i in self} - distance[v]=0 - while len(q)!=0: - cur= q.popleft() + if v.firstEdge == None: return [], 0 + q = deque([v]) + last = {i: None for i in self} + distance = {i: 1 << 30 for i in self} + distance[v] = 0 + while len(q) != 0: + cur = q.popleft() cur.isVisited = True arc = cur.firstEdge - while arc!=None: + while arc != None: to = arc.inArrow if not to.isVisited: q.append(to) - if distance [to] > distance[cur]+arc.weight: - last[to]=cur - distance[to] =distance[cur]+arc.weight - arc= arc.outNextEdge + if distance[to] > distance[cur] + arc.weight: + last[to] = cur + distance[to] = distance[cur] + arc.weight + arc = arc.outNextEdge cur = u - path=[] - while cur!=None and cur!=v: + path = [] + while cur != None and cur != v: path.append(cur.mark) - cur=last[cur] - if cur==None:return [], 0 + cur = last[cur] + if cur == None: return [], 0 path.append(v.mark) - return path[::-1],distance[u] - def hasVertex(self,mark): + return path[::-1], distance[u] + + def hasVertex(self, mark): return mark in self.vertexs + def display(self): print('vertexs') for i in self.vertexs: print(self.vertexs[i].__repr__()) print('edges') for i in self.edges: - arc=self.edges[i] - print(str(arc.outArrow)+str(arc)+str(arc.inArrow)) + arc = self.edges[i] + print(str(arc.outArrow) + str(arc) + str(arc.inArrow)) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2017/navigation/graph.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2017/navigation/graph.py" index 799aaf6..f6964ef 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2017/navigation/graph.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2017/navigation/graph.py" @@ -1,189 +1,227 @@ from collections import deque import directed + + class vertex: - def __init__(self,mark,val=None): + def __init__(self, mark, val=None): self.mark = mark self.val = val self.edges = {} self.isVisited = False - def __getitem__(self,adjVertexMark): + + def __getitem__(self, adjVertexMark): return self.edges[adjVertexMark] - def __delitem__(self,k): + + def __delitem__(self, k): del self.edges[k] + def __iter__(self): return iter(self.edges.values()) + def __str__(self): try: int(self.mark) - return 'v'+str(self.mark) - except:return str(self.mark) + return 'v' + str(self.mark) + except: + return str(self.mark) + def __repr__(self): return str(self) + + class edge: - def __init__(self,adjVertexs, weight = 1): + def __init__(self, adjVertexs, weight=1): '''adjVertexs:tuple(v.mark,u.mark)''' self.weight = weight self.adjVertexs = adjVertexs self.isVisted = False - def __add__(self,x): - return self.weight +x - def __radd__(self,x): - return self+x - def __getitem__(self,k): - if k!=0 or k!=1:raise IndexError + + def __add__(self, x): + return self.weight + x + + def __radd__(self, x): + return self + x + + def __getitem__(self, k): + if k != 0 or k != 1: raise IndexError return self.adjVertexs[k] + def __str__(self): - return '--'+str(self.weight)+'--' + return '--' + str(self.weight) + '--' + def __repr__(self): return str(self) + @property def v(self): return self.adjVertexs[0] + @property def u(self): return self.adjVertexs[1] + + class graph: - def __init__(self): + def __init__(self): self.vertexs = {} self.edges = {} - def __getitem__(self,i): + + def __getitem__(self, i): return self.vertexs[i] - def __setitem__(selfi,x): - self.vertexs[i]= x + + def __setitem__(self, i, x): + self.vertexs[i] = x + def __iter__(self): return iter(self.vertexs) + def __bool__(self): - return len(self.vertexs)!=0 - def addVertex(self,v): - if not isinstance(v,vertex) and v not in self.vertexs:self.vertexs[v]= vertex(v) - if isinstance(v,vertex) and v not in self.vertexs:self.vertexs[v.mark]= v + return len(self.vertexs) != 0 + + def addVertex(self, v): + if not isinstance(v, vertex) and v not in self.vertexs: + self.vertexs[v] = vertex(v) + if isinstance(v, vertex) and v not in self.vertexs: + self.vertexs[v.mark] = v - def __getVertex(self,v): - if not isinstance(v,vertex): + def __getVertex(self, v): + if not isinstance(v, vertex): if v not in self.vertexs: - self.vertexs[v]=vertex(v) + self.vertexs[v] = vertex(v) return self.vertexs[v] return v - def addEdge(self,v,u,weight = 1): + + def addEdge(self, v, u, weight=1): v = self.__getVertex(v) u = self.__getVertex(u) for arc in v: - if u in arc.adjVertexs:return #examine that if v,u have been already connected - vertexs = (v,u) - newEdge = edge (vertexs,weight) + if u in arc.adjVertexs: + return #examine that if v,u have been already connected + vertexs = (v, u) + newEdge = edge(vertexs, weight) self.edges[vertexs] = newEdge v.edges[u] = newEdge - u.edges[v] = newEdge - def delEdge(self,v,u): - if not isinstance(v,vertex):v= self.vertexs[v] - if not isinstance(u,vertex):u= self.vertexs[u] + u.edges[v] = newEdge + + def delEdge(self, v, u): + if not isinstance(v, vertex): v = self.vertexs[v] + if not isinstance(u, vertex): u = self.vertexs[u] try: del v[u] del u[v] - except:print("error!"+str(v)+','+str(u)+' arent adjacent now') - del self.edges[(v,u)] + except: + print("error!" + str(v) + ',' + str(u) + ' arent adjacent now') + del self.edges[(v, u)] + def reVisit(self): for i in self.vertexs.values(): i.isVisited = False for i in self.edges.values(): i.isVisited = False + def __str__(self): - arcs= list(self.edges.keys()) - arcs=[str(i[0])+str(self.edges[i])+str(i[1]) for i in arcs] - s= '\n'.join(arcs) + arcs = list(self.edges.keys()) + arcs = [str(i[0]) + str(self.edges[i]) + str(i[1]) for i in arcs] + s = '\n'.join(arcs) return s + def __repr__(self): return str(self) - def minPath(self,v,u): + + def minPath(self, v, u): self.reVisit() - v=self.__getVertex(v) - u=self.__getVertex(u) - q=deque([v]) - last={i:None for i in self.vertexs.values()} + v = self.__getVertex(v) + u = self.__getVertex(u) + q = deque([v]) + last = {i: None for i in self.vertexs.values()} last[v] = 0 - ds={i:1<<30 for i in self.vertexs.values()} - ds[v]=0 - while len(q)!=0: + ds = {i: 1 << 30 for i in self.vertexs.values()} + ds[v] = 0 + while len(q) != 0: nd = q.popleft() - nd.isVisited=True - for edge in nd: - tgt=None - if edge.v==nd: + nd.isVisited = True + for edge in nd: + tgt = None + if edge.v == nd: tgt = edge.u - else:tgt = edge.v - tmp=ds[nd]+edge - if ds[tgt] >tmp: - ds[tgt]=tmp + else: + tgt = edge.v + tmp = ds[nd] + edge + if ds[tgt] > tmp: + ds[tgt] = tmp last[tgt] = nd - if not tgt.isVisited:q.append(tgt) - path=[] + if not tgt.isVisited: q.append(tgt) + path = [] cur = u - while cur !=None and cur.mark!=v.mark: + while cur != None and cur.mark != v.mark: path.append(cur.mark) cur = last[cur] - if cur==None:return [],-1 + if cur == None: return [], -1 path.append(v.mark) - return path[::-1],ds[u] + return path[::-1], ds[u] + def hasCircle(self): pass + def display(self): print('vertexs') for i in self.vertexs: - print(i,end=' ') + print(i, end=' ') print('') print('edges') for i in self.edges: - arc=self.edges[i] - print(str(arc.v)+str(arc)+str(arc.u)) + arc = self.edges[i] + print(str(arc.v) + str(arc) + str(arc.u)) + def loop(dic): while True: print('input vertexs to get the min distance, input \'exit\' to exit') - s=input().strip() - if s=='exit':break - s=s.split(' ') - s=[dic[i] if '0'<=i[0]<='9' else i for i in s] - a,b,c=s[0],s[1],None - path,d = g.minPath(a,b) - path2=None - if len(s)==3: - c=s[2] - path2,d2=g.minPath(b,c) - d+=d2 - if path==[] or path2==[] : - if len(s)==3: print(a+' can\'t reach '+c+' via '+b) - else: print(a+' can\'t reach '+b) + s = input().strip() + if s == 'exit': break + s = s.split(' ') + s = [dic[i] if '0' <= i[0] <= '9' else i for i in s] + a, b, c = s[0], s[1], None + path, d = g.minPath(a, b) + path2 = None + if len(s) == 3: + c = s[2] + path2, d2 = g.minPath(b, c) + d += d2 + if path == [] or path2 == []: + if len(s) == 3: print(a + ' can\'t reach ' + c + ' via ' + b) + else: print(a + ' can\'t reach ' + b) continue - if path2!=None:path+=path2[1:] - print('distance : ',d) - print('path','-->'.join(path)) + if path2 != None: path += path2[1:] + print('distance : ', d) + print('path', '-->'.join(path)) -if __name__ =='__main__': - s=input('1. undireted\n2. directed\n') - flag=input('name vertex by 1. num(1-index) or 2. string? ').strip() - dic={} +if __name__ == '__main__': + s = input('1. undireted\n2. directed\n') + flag = input('name vertex by 1. num(1-index) or 2. string? ').strip() + dic = {} g = graph() - if s=='2': g=directed.graph() - v,e=input('input vertex num & edge num: ').strip().split(' ') - v,e=int(v),int(e) - if flag=='1': + if s == '2': g = directed.graph() + v, e = input('input vertex num & edge num: ').strip().split(' ') + v, e = int(v), int(e) + if flag == '1': for i in range(v): - tmp=str(i+1) - dic[tmp]=tmp + tmp = str(i + 1) + dic[tmp] = tmp g.addVertex(tmp) else: - print('input vertex name line by line') + print('input vertex name line by line') for i in range(v): - dic[str(i+1)]=input().strip() - g.addVertex(dic[str(i+1)]) - print('input edge info line by line') + dic[str(i + 1)] = input().strip() + g.addVertex(dic[str(i + 1)]) + print('input edge info line by line') for i in range(e): - li=input().strip().split(' ') - a,b,w=li[0],li[1],1 - if len(li)==3:w=int(li[2]) - a,b=dic[a],dic[b] - g.addEdge(a,b,w) + li = input().strip().split(' ') + a, b, w = li[0], li[1], 1 + if len(li) == 3: w = int(li[2]) + a, b = dic[a], dic[b] + g.addEdge(a, b, w) print('you\'ve build graph :') g.display() loop(dic) @@ -197,7 +235,6 @@ def loop(dic): 3 4 1 1 5 ''' - ''' 6 10 NewYork diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2017/polynomial/polynomial.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2017/polynomial/polynomial.py" index c6d80dd..14f7830 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2017/polynomial/polynomial.py" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2017/polynomial/polynomial.py" @@ -1,55 +1,64 @@ -# notice that creating a class's omstamce won't conflict with __call__ method +# notice that creating a class's omstamce won't conflict with __call__ method # because the former call class ,and the latter call instance class polynomial: - pls= [] + pls = [] n = 0 + def dictize(pl): - if isinstance(pl,int) or isinstance(pl,float): - pl = {0:pl} - if isinstance(pl,polynomial): + if isinstance(pl, int) or isinstance(pl, float): + pl = {0: pl} + if isinstance(pl, polynomial): pl = pl.polynomial.copy() return pl + def isZero(n): - return abs(n)<0.000001 - def __init__(self,s='0 0'): + return abs(n) < 0.000001 + + def __init__(self, s='0 0'): polynomial.pls.append(self) - polynomial.n +=1 - if isinstance(s,polynomial): - self.polynomial=s.polynomial.copy() - # don't write like this .**self.polynomial = s.polynomial**,it's ref + polynomial.n += 1 + if isinstance(s, polynomial): + self.polynomial = s.polynomial.copy() + # don't write like this .**self.polynomial = s.polynomial**,it's ref return - elif isinstance(s,dict): + elif isinstance(s, dict): self.polynomial = s.copy() return - s= s.replace(',',' ') - s= s.replace('x',' ') - s= s.replace('x^',' ') - s = s.replace(':',' ') - s = s.replace('\n',' ') + s = s.replace(',', ' ') + s = s.replace('x', ' ') + s = s.replace('x^', ' ') + s = s.replace(':', ' ') + s = s.replace('\n', ' ') s = s.split(' ') num = len(s) i = 0 print(s) self.polynomial = dict() li = [float(i) for i in s] - while i) +project(Elevator) + +set(CMAKE_CXX_STANDARD 14) + +include_directories(.) + +add_executable(Elevator + elevator.cpp + elevator.hpp + event.hpp + main.cpp + person.hpp) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/README.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/README.md" new file mode 100644 index 0000000..b9897a9 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/README.md" @@ -0,0 +1,14 @@ +# 电梯模拟 + +``` +mkdir e +cd e +cmake .. +make +cd .. +./e/Elevator +``` + +然后按回车查看效果 + +建议使用xterm等速度快的终端效果更好 \ No newline at end of file diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/elevator.cpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/elevator.cpp" new file mode 100755 index 0000000..f4c39e1 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/elevator.cpp" @@ -0,0 +1,492 @@ +/* elevator.cpp */ +#include +#include +#include +#include +#include +#include +#include "elevator.hpp" +#include "person.hpp" +using namespace std; +void Panic(const char* s, ...) +{ + char sfinal[100]; + va_list ap; + va_start(ap, s); + vsnprintf(sfinal, 100, s, ap); + cout << "FATAL Error: " << sfinal << "!" << endl; + exit(-2); +} +void notify(const char* s, ...) +{ +#ifdef DEBUG + char sfinal[100]; + va_list ap; + va_start(ap, s); + vsnprintf(sfinal, 100, s, ap); + string c1 = "zenity --info --text=\""; + string c2 = "\""; + system((c1 + sfinal + c2).c_str()); +#endif +} +ElevatorSystem::ElevatorSystem() +{ + cout << "Default constructor will never work, please give parameters" << endl; +} +ElevatorSystem::ElevatorSystem(Building* building, EventList* elist) +{ + this->eventlist = elist; + this->building = building; + for(int i = 0; i < ElevatorNumber; i++) + elevators[i] = Elevator(i, this); + for(int i = 1; i <= FloorNumber; i++){ + upassigns[i] = -1; + downassigns[i] = -1; + buttons[i] = Button(); + } +} +void ElevatorSystem::PressButton(int floor, Direction d) +{ + if(this->buttons[floor].Get(d)) + //Already pressed, do nothing + return; + //Assign this press to the nearest elevator and activate it + this->buttons[floor].Press(d); + int elevindex = this->AssignElevator(floor, d); + //cout << "E:" << elevindex << endl; + //cin.get(); + if(d == UP) + upassigns[floor] = elevindex; + else if(d == DOWN) + downassigns[floor] = elevindex; + else + Panic("Pressed and idle button"); + //Another bug corpse here. If activate several times, a disaster will happen + if(!elevators[elevindex].isactive){ + //cout << "elev " << elevindex << " now begin working by elevsys" << endl; + //cin.get(); + elevators[elevindex].Activate(); + } +} +int ElevatorSystem::AssignElevator(int floor, Direction d) +{ + //TODO: actually, if several elevator take (evaluated) same time to the given position, then a random index between them should be given to balance wear off in Physical World. + //In this program just pick the first one. (change < to <= to choose the last one) + int minelevidx = -1; + Time mintimeused = Inf; + Time timeused; + for(int i = 0; i < ElevatorNumber; i++){ + timeused = elevators[i].EvaluateTimeToFloor(floor, d); + if(timeused < mintimeused){ + minelevidx = i; + mintimeused = timeused; + } + } + notify("AssignElevator %d.", minelevidx); + return minelevidx; +} + +Elevator::Elevator() +{ + //cout << "an Elevator should belong to an ElevatorSystem and should not be defined explicitly" << endl; +} +Elevator::Elevator(int idx, ElevatorSystem* father) +{ + this->index = idx; + this->father = father; + this->isactive = false; + this->isdooropened = false; + this->personnum = 0; + this->atfloor = 1; + this->dir = NODIRECTION; + this->personsonboard = Linklist(); + this->floorbutton = FloorButton(); + this->maxperson = ElevatorMaxPerson; + this->homefloor = ElevatorHomeFloor; + this->timeGotoNextFloor = ElevatorGotoNextFloorTime; + this->timeDoorOpen = ElevatorDoorOpenTime; + this->timeDoorClose = ElevatorDoorCloseTime; + this->timeDoorKeepOpen = ElevatorDoorKeepOpenTime; +} +//This func is NOT GOOD ENOUGH, some small points NOT CONSIDIRED +//but it can work +Time Elevator::EvaluateTimeToFloor(int floor, Direction d) const +{ + if(!this->isactive) + return this->timeGotoNextFloor * fabs(floor - this->atfloor); + int maxfloor = this->atfloor; + int minfloor = this->atfloor; + int dooropentimes = 0; + //up to top, then down to bottom, and then (up or down without stop) to fetch new person + if(this->dir == UP && d == UP && atfloor >= floor){ + for(int i = atfloor; i <= FloorNumber; i++) + if(father->buttons[i].Get(UP) || this->floorbutton.isPressed(i)){ + maxfloor = i; + dooropentimes++; + } + for(int i = maxfloor; i >= 1; i--) + //use && to avoid recount dooropentimes + if(father->buttons[i].Get(DOWN) || (this->floorbutton.isPressed(i) && i < atfloor)){ + minfloor = i; + dooropentimes++; + } + //only one of the two following cases will be executed + for(int i = minfloor; i < floor; i++) + if(father->buttons[i].Get(UP)) + dooropentimes++; + for(int i = minfloor; i > floor; i--) + if(father->buttons[i].Get(DOWN)) + dooropentimes++; + return this->timeGotoNextFloor * (maxfloor - this->atfloor + maxfloor - minfloor + fabs(floor - minfloor)) + (timeDoorOpen + timeDoorKeepOpen + timeDoorClose) * dooropentimes; + } + //up(or then down after) and fetch person + if(this->dir == UP && d == UP && this->atfloor < floor){ + for(int i = this->atfloor; i <= floor; i++) + if(this->father->buttons[i].Get(UP) || this->floorbutton.isPressed(i)) + dooropentimes++; + return this->timeGotoNextFloor * fabs(floor - this->atfloor) + (timeDoorOpen + timeDoorKeepOpen + timeDoorClose) * dooropentimes; + } + //up to top and down to fetch person + if(this->dir == UP && d == DOWN){ + for(int i = this->atfloor; i <= FloorNumber; i++) + if(this->father->buttons[i].Get(UP) || this->floorbutton.isPressed(i)){ + maxfloor = i; + dooropentimes++; + } + for(int i = maxfloor; i >= floor; i--) + if(this->father->buttons[i].Get(DOWN) || (this->floorbutton.isPressed(i) && i < atfloor)) + dooropentimes++; + return this->timeGotoNextFloor * (maxfloor - this->atfloor + fabs(maxfloor - floor)) + (timeDoorOpen + timeDoorKeepOpen + timeDoorClose) * dooropentimes; + } + //down cases, the same + if(this->dir == DOWN && d == DOWN && atfloor <= floor){ + for(int i = atfloor; i >= 1; i--) + if(father->buttons[i].Get(DOWN) || this->floorbutton.isPressed(i)){ + minfloor = i; + dooropentimes++; + } + for(int i = minfloor; i <= FloorNumber; i++) + //use && to avoid recount dooropentimes + if(father->buttons[i].Get(UP) || (this->floorbutton.isPressed(i) && i > atfloor)){ + maxfloor = i; + dooropentimes++; + } + //only one of the two following cases will be executed + for(int i = maxfloor; i > floor; i--) + if(father->buttons[i].Get(DOWN)) + dooropentimes++; + for(int i = maxfloor; i < floor; i++) + if(father->buttons[i].Get(UP)) + dooropentimes++; + return this->timeGotoNextFloor * (maxfloor - this->atfloor + maxfloor - minfloor + fabs(floor - minfloor)) + (timeDoorOpen + timeDoorKeepOpen + timeDoorClose) * dooropentimes; + } + if(this->dir == DOWN && d == DOWN && this->atfloor > floor){ + for(int i = this->atfloor; i >= floor; i--) + if(this->father->buttons[i].Get(DOWN) || this->floorbutton.isPressed(i)) + dooropentimes++; + return this->timeGotoNextFloor * fabs(floor - this->atfloor) + (timeDoorOpen + timeDoorKeepOpen + timeDoorClose) * dooropentimes; + } + if(this->dir == DOWN && d == UP){ + for(int i = this->atfloor; i >= 1; i--) + if(this->father->buttons[i].Get(DOWN) || this->floorbutton.isPressed(i)){ + minfloor = i; + dooropentimes++; + } + for(int i = minfloor; i <= floor; i++) + if(this->father->buttons[i].Get(UP) || (this->floorbutton.isPressed(i) && i > atfloor)) + dooropentimes++; + return this->timeGotoNextFloor * (maxfloor - this->atfloor + fabs(maxfloor - floor)) + (timeDoorOpen + timeDoorKeepOpen + timeDoorClose) * dooropentimes; + } + + ////down to btm, up to top, and then (up or down without stop) to fetch person + //if(this->dir == DOWN && d == DOWN && this->atfloor <= floor){ + //for(int i = this->atfloor; i >= 1; i--) + //if((this->father->downassigns[i] == this->index && this->father->buttons[i].Get(DOWN)) || this->floorbutton.isPressed(i)){ + //minfloor = i; + //dooropentimes++; + //} + //for(int i = minfloor; i <= FloorNumber; i++) + //if((this->father->upassigns[i] == this->index && this->father->buttons[i].Get(UP)) || this->floorbutton.isPressed(i)){ + //maxfloor = i; + //dooropentimes++; + //} + //return this->timeGotoNextFloor * (this->atfloor - minfloor + maxfloor - minfloor + fabs(maxfloor - floor)) + (timeDoorOpen + timeDoorKeepOpen + timeDoorClose) * dooropentimes; + + //} + ////down and fetch, or down to bottom and up again without stop to fetch + //if(this->dir == DOWN && d == DOWN && this->atfloor > floor){ + //for(int i = this->atfloor; i >= floor; i--) + //if((this->father->downassigns[i] == this->index && this->father->buttons[i].Get(DOWN)) || this->floorbutton.isPressed(i)) + //dooropentimes++; + //return this->timeGotoNextFloor * (this->atfloor - floor) + (timeDoorOpen + timeDoorKeepOpen + timeDoorClose) * dooropentimes; + //} + ////down to btm and up(or still down but without stop) to fetch person + //if(this->dir == DOWN && d == UP){ + //for(int i = this->atfloor; i >= 1; i--) + //if((this->father->downassigns[i] == this->index && this->father->buttons[i].Get(DOWN)) || this->floorbutton.isPressed(i)){ + //minfloor = i; + //dooropentimes++; + //} + //for(int i = minfloor; i <= floor; i++) + //if((this->father->upassigns[i] == this->index && this->father->buttons[i].Get(UP)) || this->floorbutton.isPressed(i)) + //dooropentimes++; + //return this->timeGotoNextFloor * (this->atfloor - minfloor + fabs(floor - minfloor)) + (timeDoorOpen + timeDoorKeepOpen + timeDoorClose) * dooropentimes; + //} + //This shouldn't be reached + Panic("error when evaluating"); + return Inf; +} +void Elevator::PressFloorButton(int floor) +{ + this->floorbutton.Press(floor); + //this->Activate(); +} +//also a func with recursive call, the func means things happened when +//elev door is opened, person get off and get on ONE BY ONE +//LOW TIME PERFORMANCE WARNING! +void Elevator::DoorOpened() +{ + this->isdooropened = true; + Person* p; + EventCase e; + //dump persons + //judge first to increase some time performance + if(this->floorbutton.isPressed(atfloor)){ + int l = personsonboard.GetLength(); + for(int i = 1; i <= l; i++){ + personsonboard.GetElem(i, p); + if(p->gotofloor == atfloor){ + this->personnum--; + p->timegetoff = father->eventlist->GetTime(); + e = EventCase(PersonGetOffTime, "Person", "GetOff", p); + father->eventlist->EnqEvent(e); + e = EventCase(PersonGetOffTime, "Elevator", "DoorOpened", this); + father->eventlist->EnqEvent(e); + //note that the delete caused length to change, but then + //the func returns, so no bug + personsonboard.ListDelete(i, p); + //Handle one by one + return; + } + } + } + //clear floor button, this is executed only after all persons got off + this->floorbutton.Clear(atfloor); + //collect persons + //automatic stop collecting and go on when elev is full or all collected + int l = father->building->persons[atfloor].GetLength(); + //first remove all unpatiently left persons + for(int i = l; i >= 1; i--){ + father->building->persons[atfloor].GetElem(i, p); + if(p->istimedout) + father->building->persons[atfloor].ListDelete(i, p); + } + //re-calc length + l = father->building->persons[atfloor].GetLength(); + for(int i = 1; i <= l && !this->isFull(); i++){ + father->building->persons[atfloor].GetElem(i, p); + //the person has already left? And only collect people on this dir + if(p->dir == this->dir){ + //if(!p->istimedout){ + this->personnum++; + this->personsonboard.Append(p); + this->PressFloorButton(p->gotofloor); + p->timegeton = father->eventlist->GetTime(); + e = EventCase(PersonGetOnTime, "Person", "GetOn", p); + father->eventlist->EnqEvent(e); + //} + father->building->persons[atfloor].ListDelete(i, p); + e = EventCase(PersonGetOnTime, "Elevator", "DoorOpened", this); + father->eventlist->EnqEvent(e); + return; + } + } + //Clear buttons, moved to DoorClosed to avoid clear twice + for(int i = 1; i <= l; i++){ + father->building->persons[atfloor].GetElem(i, p); + if(!p->istimedout && p->dir == this->dir){ + //father->buttons[atfloor].Press(this->dir); + father->PressButton(atfloor, this->dir); + //cout << father->downassigns[atfloor]<< endl; + //cout << "Re-pressed";cin.get(); + break; + } + } + //If the func goes here without return, + //then all persons are satisfied and continue to move on + //door should now close + e = EventCase(timeDoorKeepOpen, "Elevator", "DoorClosed", this); + father->eventlist->EnqEvent(e); +} +//Door closed, continue moving or stay still +void Elevator::DoorClosed() +{ + this->isdooropened = false; + //seems too simple to be right, but i think it's OK + //And assigns must be cleared ASAP because many judgements depend on this + if(this->dir == UP) + father->upassigns[this->atfloor] = -1; + if(this->dir == DOWN) + father->downassigns[this->atfloor] = -1; + Person* p = NULL; + int l = father->building->persons[atfloor].GetLength(); + //Clear btn even if some not satisfied, + //and then re-press btn if someone left, to let elev sys to reassign a elev. + //Because a mere elev don't know whether all persons had got on without overload. + father->buttons[atfloor].Clear(this->dir); + for(int i = 1; i <= l; i++){ + father->building->persons[atfloor].GetElem(i, p); + if(!p->istimedout && p->dir == this->dir){ + father->PressButton(atfloor, this->dir); + //cout << father->downassigns[atfloor]<< endl; + //cout << "Re-pressed";cin.get(); + break; + } + } + this->Activate(); +} +void Elevator::ArrivedNextFloor() +{ + ////if door should open at the floor, then enqueue DoorOpened + ////if continue moving without stop, then activate and decide what to do + //all action moved into Activate function + if(this->dir == UP){ + if(atfloor == FloorNumber) + Panic("the elev is flying up into sky"); + this->atfloor++; + ////Just pass by without stop if full + //if((father->upassigns[atfloor] == index && !isFull()) || this->floorbutton.isPressed(atfloor)){ + //EventCase e = EventCase(this->timeDoorOpen, "Elevator", "DoorOpened", this); + //this->father->eventlist->EnqEvent(e); + //return; + //} + } + if(this->dir == DOWN){ + if(atfloor == 1) + Panic("the elev is drilling into underground"); + this->atfloor--; + //if((father->downassigns[atfloor] == index && !isFull()) || this->floorbutton.isPressed(atfloor)){ + //EventCase e = EventCase(this->timeDoorOpen, "Elevator", "DoorOpened", this); + //this->father->eventlist->EnqEvent(e); + //return; + //} + + } + if(this->dir == NODIRECTION) + Panic("arrived at new floor when idle? some thing when wrong"); + //cout << "ArrivedNextFloor: " << atfloor << endl; + this->Activate(); +} +//This is a single elev Main Ctrl Function +//Decide what to do next, considering all possible conditions +//Be called frequently +void Elevator::Activate() +{ + //Point: down and up assigns array is at same status with button[].Get, but + //we assume that an elev should do it's own work without bothering others, but when + //it comes that it just pass by other floor, it will also open the door if this floor need + //to be served, even if the floor's job is not assigned to this elev. + + notify("Activate elev %d...", this->index); + //First, have a judge of need to up or need to down + bool isneedtoup = false; + bool isneedtodown = false; + for(int i = atfloor + 1; i <= FloorNumber; i++) + //even if an upper floor need down, then the elev still need up, *sooner or later* + if(father->downassigns[i] == index || father->upassigns[i] == index || floorbutton.isPressed(i)){ + //Fatal algorithm bug killed here!! Here is a bug's corpse + //if((father->buttons[i].Get(UP) && father->upassigns[i] == index) || floorbutton.isPressed(i)){ + isneedtoup = true; + break; + } + for(int i = 1; i <= atfloor - 1; i++) + if(father->upassigns[i] == index || father->downassigns[i] == index || floorbutton.isPressed(i)){ + isneedtodown = true; + break; + } + //Should stop at this floor. + //another another bug corpse here. elev may pass a floor even if btn on this floor is pressed + //At this floor, first judge whether to change direction(important), then open door and start working + //if((father->upassigns[atfloor] == index && !(this->dir == DOWN && isneedtodown) && !isFull()) || + //(father->downassigns[atfloor] == index && !(this->dir == UP && isneedtoup) && !isFull()) || + if((father->buttons[atfloor].Get(UP) && !(this->dir == DOWN && isneedtodown) && !isFull()) || \ + (father->buttons[atfloor].Get(DOWN) && !(this->dir == UP && isneedtoup) && !isFull()) || \ + floorbutton.isPressed(atfloor)){ + //It's time to change direction? + //Change dir: now up, no need to up further, on this floor no UP pressed, + //and DOWN MUST BE PRESSED, or means error HAD occured, because the elev SHOULDN'T HAVE GONE to this floor + //But, but, when executed here, downassigns (or upassigns) HAD BEEN Cleared!! + //if(this->dir == UP && father->downassigns[atfloor] == index && father->upassigns[atfloor] != index && !isneedtoup){ + //if(this->dir == UP && !(father->upassigns[atfloor] == index) && !isneedtoup){ + if(this->dir == UP && !(father->buttons[atfloor].Get(UP)) && !isneedtoup){ + this->dir = DOWN; + } + //if(this->dir == DOWN && father->upassigns[atfloor] == index && father->downassigns[atfloor] != index && !isneedtodown){ + //if(this->dir == DOWN && !(father->downassigns[atfloor] == index) && !isneedtodown){ + if(this->dir == DOWN && !(father->buttons[atfloor].Get(DOWN)) && !isneedtodown){ + this->dir = UP; + } + //start working from idle when a person precisely come to the floor the elev resting at + if(this->dir == NODIRECTION){ + //if(father->upassigns[atfloor] == index) + if(father->buttons[atfloor].Get(UP)) + this->dir = UP; + //if(father->downassigns[atfloor] == index) + if(father->buttons[atfloor].Get(DOWN)) + this->dir = DOWN; + } + EventCase e = EventCase(this->timeDoorOpen, "Elevator", "DoorOpened", this); + this->father->eventlist->EnqEvent(e); + return; + } + //no work, be idle no matter was idle or busy + //(no need to up, no need to down. executed here means no need to open door) + if(!isneedtoup && !isneedtodown){ + this->dir = NODIRECTION; + this->isactive = false; + //cout << "be idle"; + //for(int i = 1; i <= FloorNumber; i++) + //cout << father->upassigns[i] << " " << father->downassigns[i] << endl; + //cin.get(); + return; + } + //was moving and continue moving in old direction + //the most simple case + if(this->isactive){ + if((this->dir == UP && isneedtoup) || (this->dir == DOWN && isneedtodown)){ + //cout << "continu to next floooooooooooooooooooooooooor" << endl; + //cin.get(); + EventCase e = EventCase(this->timeGotoNextFloor, "Elevator", "ArrivedNextFloor", this); + this->father->eventlist->EnqEvent(e); + return; + } + } + //was idle and should start moving + else{ + if(isneedtoup){ + //cout << "up to next floooooooooooooooooooooooooor" << endl; + //cin.get(); + this->dir = UP; + this->isactive = true; + EventCase e = EventCase(this->timeGotoNextFloor, "Elevator", "ArrivedNextFloor", this); + this->father->eventlist->EnqEvent(e); + return; + } + else if(isneedtodown){ + //cout << "down to next floooooooooooooooooooooooooor" << endl; + //cin.get(); + this->dir = DOWN; + this->isactive = true; + EventCase e = EventCase(this->timeGotoNextFloor, "Elevator", "ArrivedNextFloor", this); + this->father->eventlist->EnqEvent(e); + return; + } + else + Panic("wrong ctrl flow in Activate"); + } + Panic("Nothing done in Activate. Another wrong ctrl flow in Activate"); +} +bool Elevator::isFull() const +{ + return personnum >= maxperson; +} diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/elevator.hpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/elevator.hpp" new file mode 100755 index 0000000..2a459d2 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/elevator.hpp" @@ -0,0 +1,153 @@ +/* elevator.hpp */ +#ifndef ELEVATOR_HPP +#define ELEVATOR_HPP +#include +#include +#include +#include +#include +#include "../Lib/linklist.hpp" +#include "../Lib/queue.hpp" +#include "event.hpp" +#include "person.hpp" +using namespace std; +const int ElevatorNumber = 3; +const int FloorNumber = 7; +//const int MaxPersonNumber = 1000; +void Panic(const char*, ...); +class Building{ + public: + Building(){ + for(int i = 1; i < FloorNumber; i++) + persons[i] = Linklist(); + } + Linklist* GetPersons(int floor){ + if(floor < 1 || floor > FloorNumber) + Panic("No such floor"); + return persons + floor; + } + Linklist persons[FloorNumber + 1]; +}; +class Button{ + public: + Button(){ + BtnUp = false; + BtnDown = false; + } + bool Get(Direction d) const{ + if(d == UP) + return BtnUp; + else if(d == DOWN) + return BtnDown; + else{ + Panic("No such direction"); + return false; + } + } + void Press(Direction d){ + if(d == UP) + BtnUp = true; + else if(d == DOWN) + BtnDown = true; + else + Panic("No such direction"); + } + void Clear(Direction d){ + if(d == UP) + BtnUp = false; + if(d == DOWN) + BtnDown = false; + } + private: + bool BtnUp; + bool BtnDown; +}; +class FloorButton{ + public: + FloorButton(){ + for(int i = 1; i <= FloorNumber; i++) + btns[i] = false; + } + void Press(int floor){ + if(floor < 1 || floor > FloorNumber) + Panic("No such button, fatal error"); + else + btns[floor] = true; + } + void Clear(int floor){ + if(floor < 1 || floor > FloorNumber) + Panic("No such button, fatal error"); + else + btns[floor] = false; + } + bool isPressed(int floor) const{ + return btns[floor]; + } + private: + bool btns[FloorNumber + 1]; +}; +const Time ElevatorGotoNextFloorTime = 50 * BaseTime; +const Time ElevatorDoorKeepOpenTime = 40 * BaseTime; +const Time ElevatorDoorOpenTime = 20 * BaseTime; +const Time ElevatorDoorCloseTime = 20 * BaseTime; +const int ElevatorMaxPerson = 3; +const int ElevatorHomeFloor = 1; +class Elevator; +class ElevatorSystem; +class Elevator{ + public: + Elevator(); + Elevator(int idx, ElevatorSystem* father); + void PressFloorButton(int floor); + //collect people, press button, then send event to close door + void DoorOpened(); + //Door closed means totally closed and don't open for lated persons. Decide to sleep or continue to go + void DoorClosed(); + //Dynamically decide to go to next floor + void ArrivedNextFloor(); + //ElevSys call this function, Activate means to make this Elev to have a check, means to call ArrivedNextFloor if someone is waiting + void Activate(); + //When elev arrived at a floor, it will judge whether to go on or stop and be idle. this func do this. + //bool TryDeactivate(); + Time EvaluateTimeToFloor(int floor, Direction d) const; + //No Deactivate because don't enqueue new "NextFloor" event means the elev is already not active. + bool isFull() const; + + int index; + ElevatorSystem* father; + bool isactive; + bool isdooropened; + //the variables personnum and maxperson below SHOULD BE CHANGED TO WEIGHT, + //an elev never how many people on it, but a weight sensor do get + //the total weight. let's assume one person weight one unit, and + //i'm lazy to change all those variables + int personnum; + int atfloor; + Direction dir; + Linklist personsonboard; + FloorButton floorbutton; + private: + int maxperson; + Time timeDoorOpen; + Time timeDoorKeepOpen; + Time timeDoorClose; + Time timeGotoNextFloor; + int homefloor; + +}; +class ElevatorSystem{ + public: + ElevatorSystem(); + ElevatorSystem(Building*, EventList*); + void PressButton(int floor, Direction d); + int AssignElevator(int floor, Direction d); + + EventList* eventlist; + Building* building; + Elevator elevators[ElevatorNumber]; + //All arrays with length FloorNumber+1 don't use the first element + Button buttons[FloorNumber + 1]; + int upassigns[FloorNumber + 1]; + int downassigns[FloorNumber + 1]; +}; +#endif diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/event.hpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/event.hpp" new file mode 100755 index 0000000..4da00d7 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/event.hpp" @@ -0,0 +1,68 @@ +/* event.hpp */ +#ifndef EVENT_HPP +#define EVENT_HPP +#include +#include +#include "../Lib/queue.hpp" +using namespace std; +typedef double Time; +const Time BaseTime = .1; +class EventCase{ + public: + EventCase(){ + delaytime = -1; + occurtime = -1; + obj = ""; + cmd = ""; + ptr = NULL; + } + //Event will happen after delaytime, occurtime and endtime will be handled by EventList + EventCase(Time t, string o, string c, void* p){ + delaytime = t; + occurtime = -1; + obj = o; + cmd = c; + ptr = p; + } + Time delaytime; + Time occurtime; + string obj; + string cmd; + void* ptr; +}; +inline bool operator<(const EventCase& e1, const EventCase& e2){ + return e1.occurtime < e2.occurtime ? true : false; +} +class EventList: public Queue { + public: + EventList(){ + curtime = 0; + } + EventList(Time t_init){ + curtime = t_init; + } + Status EnqEvent(EventCase& e){ + e.occurtime = curtime + e.delaytime; + return this->Enqueue(e); + } + Status DeqEvent(EventCase& e){ + if(ListEmpty()) + return ERROR; + this->Dequeue(e); + return OK; + } + Status ListEmpty(){ + return this->QueueEmpty(); + } + void FastForward(Time t) + { + this->curtime = t; + } + Time GetTime() + { + return this->curtime; + } + private: + Time curtime; +}; +#endif diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/main.cpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/main.cpp" new file mode 100755 index 0000000..181494c --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/main.cpp" @@ -0,0 +1,374 @@ +/* main.cpp for Elevator Simulation Program */ +#include +#include +#include +#include +#include +#include +#include "../Lib/queue.hpp" +#include "../SimpleDraw/SimpleDraw.hpp" +#include "event.hpp" +#include "elevator.hpp" +#include "person.hpp" +using namespace std; + +//void test_queue() +//{ + //Queue q; + //int d; + //q.Enqueue(1); + //q.Enqueue(-3); + //q.Enqueue(5); + //q.Enqueue(4); + //q.Enqueue(4); + //q.Enqueue(3); + //q.Enqueue(-1); + //Node* p; + //p = q.head; + //while((p = p->next)) + //cout << p->data << endl; + //q.Dequeue(d); + //cout << "---" << endl; + //cout << d << endl; + //q.Dequeue(d); + //cout << d << endl; + //q.Dequeue(d); + //cout << d << endl; + //cout << "---" << endl; + //p = q.head; + //while((p = p->next)) + //cout << p->data << endl; + //cout << "---" << endl; + //q.Enqueue(-5); + //q.Enqueue(15); + //cout << "---" << endl; + //p = q.head; + //while((p = p->next)) + //cout << p->data << endl; + //cout << "---" << endl; + //q.Dequeue(d); + //cout << d << endl; + //q.Dequeue(d); + //cout << d << endl; + //cout << "---" << endl; + +//} +/* +graphics! +n floors, m elevs +1 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ +2 |Time: 000.0s | +3 |==============================================| +-1+5*1/| 5 +-----+ | +5 / | |DOWN | | +6 | | UP |1 | | +7 \ |-> DOWN |@ | ->| +8 \|===================+-----+=-------=-------====| +-1+5*2 | 4 | + | | + | UP | + |-> @@@@@@ ->| + |===================-------=-------=-------====| + | 3 | + | | + | UP | + |-> DOWN ->| + |===================-------=-------=-------====| + | 2 +-----+ | + | |UP | | + | 9 | + |-> @ DOWN @@@@@ ->| + |===================-------=+-----+=-------====| +-1+5*n | 1 +-----+ | + | |IDLE | | + | UP |0 | | + |-> DOWN | | ->| + |===================-------=-------=+-----+====| +4+5*n +==============================================+ +rows = 4+5*n + +one floor, row start from -1+5*n +| 5 +-----+ | +| |DOWN | | +| |11 | | +|->@@@@@@@ |@@@@@| ->| ++===================+-----+=-------=-------====+ +123456789012345678901234567890123456789012345678 + 23 1234567 1234567 9012345 7890123 +col: +1 Wall +2,3 -> +4-10 @ +11-16 + +row -1+5*n to -1+5*n+4 +col 21 to 27 elev_1 +col 21-8+8*m to 27-8+8*m + +21+8*m + 3, 21+8*m + 4 -> +21+8*m + 5 Wall + */ +void err_notify(const char* s) +{ + cout << "in err main" << endl; + string c1 = "zenity --info --text=\"Error:"; + string c2 = "\""; + cout << (c1 + string(s) + c2).c_str() << endl; + system((c1 + string(s) + c2).c_str()); +} +void UpdateScreen(SimpleCanvas& cvs, const Building& building, const ElevatorSystem& es, Time t) +{ + int n = FloorNumber; + int m = ElevatorNumber; + int colmax = 21+8*m+5; + int rowmax = 4+5*n; + cvs.ClearCanvas(); + cvs.AddRowLine(1, 1, colmax, '~'); + cvs.AddRowLine(3, 1, colmax, '='); + cvs.AddRowLine(rowmax, 1, colmax, '='); + cvs.AddColLine(1, 1, rowmax, '|'); + cvs.AddColLine(colmax, 1, rowmax, '|'); + cvs.AddRowLine(4+5*n, 1, colmax, '='); + cvs.AddChar('+', 1, 1); + cvs.AddChar('+', 1, colmax); + cvs.AddChar('+', rowmax, 1); + cvs.AddChar('+', rowmax, colmax); + //Draw Time + cvs.AddString("Time: %.1fs", 2, 2, t); + for(int i = 1; i <= n; i++){ + int thisfloor = n + 1 - i; + int row0 = -1+5*i; + //Draw floor ground + cvs.AddRowLine(row0+4, 2, colmax - 1, '='); + //Draw '->' symbol + cvs.AddString("->", row0+3, 2); + cvs.AddString("->", row0+3, colmax-2); + //Draw floor number + cvs.AddString("%d", row0, 3, thisfloor); + //Draw persons waiting, red color for left person + Node* p = building.persons[thisfloor].head; + int j = 0; + while((p = p->next) && ++j <= 7){ + if(p->data->istimedout) + cvs.ChangeColor("Red"); + else + cvs.ChangeColor("Green"); + cvs.AddChar('@', row0 + 3, 11 - j); + cvs.ChangeColor("No"); + } + //Draw UP and DOWN btn + if(es.buttons[thisfloor].Get(UP)){ + cvs.ChangeColor("Yellow"); + cvs.AddString("", row0+2, 11); + cvs.ChangeColor("No"); + } + else{ + cvs.AddString(" UP ", row0+2, 11); + } + if(es.buttons[thisfloor].Get(DOWN)){ + cvs.ChangeColor("Yellow"); + cvs.AddString("", row0+3, 11); + cvs.ChangeColor("No"); + } + else{ + cvs.AddString(" DOWN ", row0+3, 11); + } + //Draw each elev + for(int j = 0; j < m; j++){ + //Draw elev well + cvs.AddRowLine(row0+4, 21+8*j, 21+8*j+6, '-'); + if(es.elevators[j].atfloor == thisfloor){ + //Draw elevator + cvs.ChangeColor("White"); + cvs.AddRectangle(row0, 21+8*j, row0+4, 21+8*j+6, '|', '-', '+'); + cvs.ChangeColor("No"); + //Draw opened door + if(es.elevators[j].isdooropened){ + cvs.AddColLine(21+8*j, row0+2, row0+3, ' '); + cvs.AddColLine(21+8*j+6, row0+2, row0+3, ' '); + } + //Draw elev people num, red for full + int personsonboardnum = es.elevators[j].personnum; + //int personsonboardnum = es.elevators[j].personsonboard.length; + if(es.elevators[j].isFull()) + cvs.ChangeColor("Red"); + cvs.AddString("%d", row0+2, 21+8*j+1, personsonboardnum); + cvs.ChangeColor("No"); + //Draw person in eev + cvs.ChangeColor("Green"); + for(int k = 1; k <= personsonboardnum && k <= 5; k++) + cvs.AddChar('@', row0+3, 21+8*j+k); + cvs.ChangeColor("No"); + //Draw elev direction + if(es.elevators[j].dir == UP) + cvs.AddString("UP", row0+1, 21+8*j+1); + else if(es.elevators[j].dir == DOWN) + cvs.AddString("DOWN", row0+1, 21+8*j+1); + else + cvs.AddString("IDLE", row0+1, 21+8*j+1); + } + } + } + cvs.Show(false); +} +//Use this to refresh at tictime freq when no event is happening +//avoid frozen the TUI +void tictoc(EventList& el, Time tictime) +{ + EventCase e = EventCase(tictime, "System", "Tic", NULL); + el.EnqEvent(e); +} +const Time TerminateTime = 300; +const Time StartTime = 0; +const Time RefreshTime = .333; +const double PlayRate = 8.0; +const bool isTUI = true; +int main() +{ + //Main facilities + EventList elist = EventList(StartTime); + Building building; + ElevatorSystem es = ElevatorSystem(&building, &elist); + Linklist personslist; + cout << "Facilities ready." << endl; + + //TUI stuffs + int drawrow = 4 + 5 * FloorNumber; + int drawcol = 21 + 8 * ElevatorNumber + 5; + SimpleCanvas cvs = SimpleCanvas(drawrow, drawcol); + cvs.ChangeColor("No"); + cout << "Simple draw ready." << endl; + + //initialize personslist by reading from file + Person per; + int personnum; + string name; + int from; + int go; + Time arr; + Time maxwait; + ifstream input; + input.open("./persons.txt"); + if(input.fail()){ + cout << "Error opening file!" << endl; + return -1; + } + input >> personnum; + for(int i = 1; i <= personnum; i++){ + input >> name >> from >> go >> arr >> maxwait; + if(input.bad()){ + cout << "Error reading file!" << endl; + return -1; + } + cout << "Person " << i << ": " << endl; + cout << name << endl; + cout << from << endl; + cout << go << endl; + cout << arr << endl; + cout << maxwait << endl; + per = Person(name, from, go, arr, maxwait); + personslist.Append(per); + } + input.close(); + cout << "Persons file read successfully." << endl; + + string empty = ""; + + Node* p = personslist.head; + EventCase e; + EventCase f; + //Initialization + //Enqueue all people get in event + //Use raw ->next because we need pointers instead of copied objects + for(int i = 1; i <= personslist.length; i++){ + p = p->next; + e = EventCase(p->data.timearrival, "Person", "Arrived", &p->data); + elist.EnqEvent(e); + } + //enqueue terminate event + e = EventCase(TerminateTime, "System", "Terminate", NULL); + elist.EnqEvent(e); + Time oldtime = 0; + Time curtime = 0; + //Set up periodic refresh + tictoc(elist, RefreshTime); + //Start main loop + cout << "Start simlation. " << endl; + cout << ElevatorNumber << " elevator(s), " << FloorNumber << " floor(s), " << personslist.GetLength() << " person(s). " << endl; + cout << "Press to start..."; cin.get(); + usleep(1e6 / PlayRate); + while(elist.DeqEvent(e) != ERROR){ + oldtime = elist.GetTime(); + elist.FastForward(e.occurtime); + curtime = elist.GetTime(); + if(isTUI){ + UpdateScreen(cvs, building, es, curtime); + //Print debug queue info + //cout << curtime << endl; + //Node* p = elist.head; + //while((p = p->next)){ + //cout << p->data.occurtime << "\t" << p->data.obj << "\t" << p->data.cmd << endl; + //} + usleep(1e6 * (curtime - oldtime) / PlayRate); + } + if(e.obj == "System"){ + if(e.cmd == "Terminate"){ + cout << "Simulation end time arrived. Exit." << endl; + break; + } + else if(e.cmd == "Tic"){ + tictoc(elist, RefreshTime); + } + //else if(e.cmd == "Start"){ + //cout << "Start simlation. " << endl; + //cout << ElevatorNumber << " elevators, " << FloorNumber << " floors. " << endl; + //sleep(1); + //} + else err_notify((empty + "No such event cmd " + e.cmd + " in obj " + e.obj).c_str()); + } + else if(e.obj == "Elevator"){ + if(e.cmd == "ArrivedNextFloor"){ + static_cast(e.ptr)->ArrivedNextFloor(); + } + else if(e.cmd == "DoorOpened"){ + static_cast(e.ptr)->DoorOpened(); + } + else if(e.cmd == "DoorClosed"){ + static_cast(e.ptr)->DoorClosed(); + } + else err_notify((empty + "No such event cmd " + e.cmd + " in obj " + e.obj).c_str()); + } + else if(e.obj == "Person"){ + if(e.cmd == "Arrived"){ + Person* p = static_cast(e.ptr); + p->timearrival = elist.GetTime(); + building.persons[p->fromfloor].Append(p); + es.PressButton(p->fromfloor, p->dir); + //Enqueue the person leave angrily event, but if person is satisfied, + //the event will just be ignored + f = EventCase(p->maxwaittime, "Person", "Leave", p); + elist.EnqEvent(f); + } + else if(e.cmd == "GetOn"){ + static_cast(e.ptr)->timegeton = curtime; + } + else if(e.cmd == "GetOff"){ + static_cast(e.ptr)->timegetoff = curtime; + static_cast(e.ptr)->timeleave = curtime; + } + else if(e.cmd == "Leave"){ + //mark timed out here, but keep person in queue + //and the person will be ignored when persons entering elev + static_cast(e.ptr)->istimedout = true; + static_cast(e.ptr)->timeleave = curtime; + } + else err_notify((empty + "No such event cmd " + e.cmd + " in obj " + e.obj).c_str()); + } + else{ + err_notify((empty + "No such event object: " + e.obj).c_str()); + } + } + cout << "End. " << endl; + return 0; +} + diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/person.hpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/person.hpp" new file mode 100755 index 0000000..ec356e2 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/person.hpp" @@ -0,0 +1,43 @@ +/* person.hpp */ +#ifndef PERSON_HPP +#define PERSON_HPP +#include +#include +#include "event.hpp" +using namespace std; +const Time PersonGetOnTime = 25 * BaseTime; +const Time PersonGetOffTime = 25 * BaseTime; +enum Direction{UP=1000, DOWN, NODIRECTION}; +class Person{ + public: + Person(){ + name = "NoName"; + fromfloor = gotofloor = 0; + maxwaittime = timearrival = timegetoff = timegeton = timeleave = 0; + issatisfied = istimedout = false; + dir = NODIRECTION; + } + Person(string name, int from, int go, Time arr, Time maxwait){ + this->name = name; + fromfloor = from; + gotofloor = go; + timearrival = arr; + maxwaittime = maxwait; + istimedout = false; + issatisfied = false; + dir = from > go ? DOWN : UP; + } + string name; + int fromfloor; + int gotofloor; + Direction dir; + bool istimedout; + bool issatisfied; + Time timearrival; + Time timegeton; + Time timegetoff; + Time timeleave; + Time maxwaittime; + +}; +#endif diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/persons.txt" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/persons.txt" new file mode 100755 index 0000000..e8247c1 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Elevator/persons.txt" @@ -0,0 +1,52 @@ + +20 +P4 3 2 1.0 900.0 +P4 3 2 1.0 900.0 +P4 3 2 1.0 900.0 +P4 3 2 1.0 900.0 +P4 3 2 1.0 40.0 +P4 3 5 40.0 900.0 +P4 4 2 80.0 900.0 +P4 4 1 10.0 900.0 +P4 4 7 50.0 900.0 +P4 4 7 30.0 900.0 +P4 5 1 100.0 900.0 +P4 5 1 100.0 900.0 +P4 5 1 100.0 900.0 +P4 5 1 100.0 900.0 +P4 7 5 40.0 40.0 +P4 7 6 80.0 900.0 +P4 7 5 80.0 900.0 +P4 7 1 80.0 900.0 +P4 7 6 80.0 900.0 +P4 7 6 80.0 900.0 + +1 +P5 7 2 1.0 99.0 + +11 +P3 3 2 1.0 90.0 +P3 3 2 1.0 90.0 +P3 3 2 1.0 90.0 +P3 3 2 1.0 90.0 +P3 3 2 1.0 90.0 +P3 3 5 40.0 90.0 +P3 4 5 10.0 90.0 +P3 5 1 100.0 90.0 +P3 5 1 100.0 90.0 +P3 5 1 100.0 90.0 +P3 5 1 100.0 90.0 + +1 +P4 3 2 1.0 90.0 + +5 +P1 3 2 1.0 90.0 +P1 3 2 1.0 90.0 +P1 3 5 40.0 90.0 +P1 4 5 10.0 90.0 +P1 5 1 100.0 90.0 + +2 +P2 1 5 1.0 90.0 +P2 5 3 40.0 90.0 diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/5_PB17000002_\345\217\244\345\256\234\346\260\221_\345\223\210\345\270\214.pdf" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/5_PB17000002_\345\217\244\345\256\234\346\260\221_\345\223\210\345\270\214.pdf" new file mode 100644 index 0000000..58f58f0 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/5_PB17000002_\345\217\244\345\256\234\346\260\221_\345\223\210\345\270\214.pdf" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/CMakeLists.txt" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/CMakeLists.txt" new file mode 100755 index 0000000..78af7eb --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/CMakeLists.txt" @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.10) +project(Hash) + +set(CMAKE_CXX_STANDARD 11) + +add_executable(Hash + hash.cpp) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/hash.cpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/hash.cpp" new file mode 100755 index 0000000..c5abe5b --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/hash.cpp" @@ -0,0 +1,268 @@ +// +// Created by petergu on 12/18/18. +// +#include +#include +#include +#include "../Lib/linklist.hpp" + +using namespace std; + +const int PRIME = 5003; +const int HASH_LEN = 5003; + +// Assume Elements are phone numbers like 150-xxxx-xxxx +class Elem{ +public: + Elem(){ + number = -1; + } + explicit Elem(long long number){ + this->number = number; + } + long long GetKey() const{ + return ((number % 10000) * (number % 10000) + (number / 10000 % 10000) * (number / 10000 % 10000)) % PRIME; + } + long long number; +}; + +class LinearHash{ +public: + LinearHash(){ + hash = new Elem[HASH_LEN]; + for(int i = 0; i < HASH_LEN; i++) + hash[i] = Elem(); + } + ~LinearHash(){ + delete hash; + } + int NextAddr(int key0, int cnt) const{ +// cout << "Collision." << endl; + return key0 + cnt + (key0 + cnt >= HASH_LEN ? -HASH_LEN : 0); + } + // 1: found + // 2: inserted + // -1: not found + // -2: table full and cannot insert + int BaseSearch(Elem elem, bool insert, int& cmp){ + int key0 = elem.GetKey(); + int key = key0; + int cnt = 1; + while(hash[key].number != -1 && elem.number != hash[key].number){ + key = NextAddr(key0, ++cnt); + if(cnt > HASH_LEN){ + if(insert) + return -2; + else + return -1; + } + } + cmp = cnt; + if(hash[key].number == elem.number) + return 1; + else if(insert){ + hash[key] = elem; + return 2; + } + else + return -1; + } + bool Search(Elem elem){ + int dum = 0; + int stat = BaseSearch(elem, false, dum); + return stat > 0; + } + bool Insert(Elem elem){ + int dum = 0; + int stat = BaseSearch(elem, true, dum); + return stat > 0; + } + int CompareTimes(Elem elem){ + int cmp = -1; + BaseSearch(elem, false, cmp); + return cmp; + } + int CompareTimes(int key0){ + int cnt = 1; + int key = key0; + while(hash[key].number != -1){ + key = NextAddr(key0, ++cnt); + if(cnt > HASH_LEN) + break; + } + return cnt; + } + double AverageCmpTimesFailed(){ + int times = 0; + for(int i = 0; i < HASH_LEN; i++) + times += CompareTimes(i); + return times * 1.0 / HASH_LEN; + } + double AverageCmpTimesSuccess(){ + long long times = 0; + int elems = 0; + for(int i = 0; i < HASH_LEN; i++){ + if(hash[i].number != -1) { + times += CompareTimes(hash[i]); + elems++; + } + } + if (elems == 0) + return -1.0; + return times * 1.0 / elems; + } + void Print() const{ + cout << "------" << endl; + for(int i = 0; i < HASH_LEN; i++) + if (hash[i].number != -1) + cout << i << ": " << hash[i].number << endl; + cout << "------" << endl; + } + Elem* hash; +}; + +class LinkHash{ +public: + LinkHash(){ + hash = new Linklist*[HASH_LEN]; + for(int i = 0; i < HASH_LEN; i++) + hash[i] = new Linklist(); + } + ~LinkHash(){ + for(int i = 0; i < HASH_LEN; i++) + delete hash[i]; + delete hash; + } + int BaseSearch(Elem elem, bool insert, int& cmp){ + int key0 = elem.GetKey(); + int cnt = 1; + Node* p; + p = hash[key0]->head->next; + while(p && elem.number != p->data.number){ + p = p->next; + cnt++; + } + cmp = cnt; + if(!p){ + if(insert){ + Status stat = hash[key0]->ListInsert(1, elem); + if(stat != OK) + return -2; + return 2; + } + else + return -1; + } + else + return 1; + } + bool Search(Elem elem){ + int dum = 0; + int stat = BaseSearch(elem, false, dum); + return stat > 0; + } + bool Insert(Elem elem){ + int dum = 0; + int stat = BaseSearch(elem, true, dum); + return stat > 0; + } + int CompareTimes(Elem elem){ + int cmp = -1; + BaseSearch(elem, false, cmp); + return cmp; + } +// int CompareTimes(int key0){ +// int cnt = 1; +// Node* p; +// p = hash[key0]->head->next; +// while(p && key0 != p->data.number){ +// p = p->next; +// cnt++; +// } +// return cnt; +// } + double AverageCmpTimesFailed(){ + int times = 0; + for(int i = 0; i < HASH_LEN; i++){ + times += hash[i]->length == 0 ? 1 : hash[i]->length; + } + return times * 1.0 / HASH_LEN; + } + double AverageCmpTimesSuccess(){ + long long times = 0; + int elems = 0; + for(int i = 0; i < HASH_LEN; i++){ + Node* p = hash[i]->head->next; + if(p != nullptr) { +// times += CompareTimes(p->data); + times += hash[i]->length * (1 + hash[i]->length) / 2; + elems += hash[i]->length; + } + } + if (elems == 0) + return -1.0; + return times * 1.0 / elems; + } + Linklist** hash; +}; + +int main(int argc, char** argv) +{ + LinearHash ht1; + LinkHash ht2; + ifstream fin; + fin.open("../rand.out"); + long long phone = -1; + Elem elem; + int number = 9000; + double alpha = number * 1.0 / HASH_LEN; + for(int i = 0; i < number; i++){ + fin >> phone; + elem = Elem(phone); + bool stat1 = ht1.Insert(elem); + bool stat2 = ht2.Insert(elem); +// cout << ht1.CompareTimes(elem) << endl; + if(!stat1) + cout << "Error inserting into ht1" << endl; + if(!stat2) + cout << "Error inserting into ht2" << endl; + } + fin.close(); + cout << "Finding test" << endl; + cout << ht1.Search(Elem(18865352160)) << endl; + cout << ht1.Search(Elem(13664038822)) << endl; + cout << ht1.Search(Elem(15800000000)) << endl; + cout << ht1.Search(Elem(13699068352)) << endl; + cout << ht1.CompareTimes(Elem(18865352160)) << endl; + cout << ht1.CompareTimes(Elem(13664038822)) << endl; + cout << ht1.CompareTimes(Elem(15800000000)) << endl; + cout << ht1.CompareTimes(Elem(13699068352)) << endl; + cout << endl; + cout << ht2.Search(Elem(18865352160)) << endl; + cout << ht2.Search(Elem(13664038822)) << endl; + cout << ht2.Search(Elem(15800000000)) << endl; + cout << ht2.Search(Elem(13699068352)) << endl; + cout << ht2.CompareTimes(Elem(18865352160)) << endl; + cout << ht2.CompareTimes(Elem(13664038822)) << endl; + cout << ht2.CompareTimes(Elem(15800000000)) << endl; + cout << ht2.CompareTimes(Elem(13699068352)) << endl; + cout << endl; +// ht1.Print(); + cout << "Statistics: " << endl; + cout << "ht1: " << endl; + cout << "elements: " << number << endl; + cout << "alpha: " << alpha << endl; + cout << "avg. cmp. times succeeded: " << ht1.AverageCmpTimesSuccess() << endl; + cout << "cmp. times succeeded theory: " << .5 * (1 + 1 / (1 - alpha)) << endl; + cout << "avg. cmp. times failed: " << ht1.AverageCmpTimesFailed() << endl; + cout << "cmp. times failed theory: " << .5 * (1 + 1 / ((1 - alpha) * (1 - alpha))) << endl; + + cout << "ht2: " << endl; + cout << "elements: " << number << endl; + cout << "alpha: " << alpha << endl; + cout << "avg. cmp. times succeeded: " << ht2.AverageCmpTimesSuccess() << endl; + cout << "cmp. times succeeded theory: " << 1 + alpha / 2 << endl; + cout << "avg. cmp. times failed: " << ht2.AverageCmpTimesFailed() << endl; + cout << "cmp. times failed theory: " << alpha + exp(-alpha) << endl; + return 0; +} diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/rand.out" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/rand.out" new file mode 100755 index 0000000..575b440 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/rand.out" @@ -0,0 +1,100000 @@ +18865352160 +13697752516 +18841897724 +18865338387 +15120971435 +15899106272 +18839242243 +15168467745 +15884514607 +18887210689 +13661651605 +13664038822 +13987030445 +15802692021 +15171780282 +18557363156 +15147426384 +15871561802 +18570395252 +13972533271 +18528180307 +15185653115 +15177250286 +15187885554 +15859719507 +18800561565 +13964074844 +15142836885 +18576373941 +13995975490 +18514304442 +15851791000 +18883525333 +18587211002 +15866591080 +13951374967 +13943622191 +18527860239 +15174458073 +18810744266 +15106188244 +15117493135 +18581982553 +15144023630 +18500327742 +13992743028 +18821044856 +13654130908 +18820737784 +15115248272 +18527412140 +15855870964 +18899647902 +18580980537 +15838346632 +15894533134 +18509835279 +15816880104 +15832129232 +15158351067 +15875617407 +15829071806 +18813467227 +13947585832 +13917188765 +13916449990 +18840313814 +13931590840 +15165652128 +13615267721 +13931988303 +15827836797 +18898039611 +18581040721 +18545209925 +13948391598 +18597638989 +13931546359 +18508613500 +15854623395 +15812099330 +18552293083 +13981034474 +13904227526 +15862975763 +18876121893 +18843900212 +15810599038 +13951192368 +13692521562 +13946002222 +18582731791 +13643975455 +15116902164 +13673538038 +18863890294 +13913535105 +13650864460 +13679915835 +15848095802 +18804524245 +13997496055 +18573181611 +15181523538 +15154713799 +13957506519 +15850945840 +15852839119 +15136896815 +18571646364 +13613714453 +13934246598 +18811832620 +13611925689 +13971476980 +13902560939 +18871042472 +13984955997 +13984254110 +13956893253 +15880588365 +13696109211 +18817466524 +15835694426 +18504041466 +15869670368 +18811665460 +13951709286 +18867896111 +13913844705 +18513334768 +18524654654 +18583921997 +13957302214 +18811115309 +15119420519 +15831990999 +13909856798 +13622567632 +18579116404 +15121785683 +13957280901 +13944781330 +18810734905 +18502427502 +18835022579 +13960124573 +18832152005 +15199504077 +13636861259 +18839817749 +18809067165 +15832916386 +13659761932 +18520530011 +18549753529 +18566426930 +13677395071 +13975971624 +18594727273 +15853328305 +15169835219 +13954665837 +18846235669 +15893152018 +18846822089 +15165167105 +18892231356 +18544493794 +15832949286 +13611460064 +13609057767 +13628724197 +13942238991 +13616106205 +15854582432 +15139666927 +15127802661 +13635745683 +15862799818 +18505299865 +13978163499 +18569537253 +13954449967 +15102321821 +18816432518 +18562068738 +13913175346 +15866544674 +15867032714 +13908866171 +15807281779 +18578013889 +15886118337 +18802466208 +13656999002 +18845375288 +13628041170 +15872028043 +18871259302 +18517430228 +18844071631 +15180111847 +18503373614 +18553992889 +13980402629 +18513797250 +15190880880 +13698591428 +15847844176 +13665671813 +15164258312 +18861082758 +13956808120 +13609985670 +15895151121 +18861675918 +18813744125 +15831211676 +13968903894 +15870681227 +18564389126 +15867228417 +15831591821 +15815264878 +18500069802 +15898539917 +18556169673 +13616796813 +18875606357 +18837024006 +15130575942 +15174775613 +13972278867 +15100236636 +15820870692 +15828807749 +13624943417 +18845683177 +15190556093 +13927736933 +13678042490 +15856573070 +15808504665 +15159687604 +18884355686 +13637895548 +18524431430 +18574901555 +13948977258 +18816494946 +13634386836 +18591796818 +15819931887 +18869515445 +18514492573 +18865821085 +15813440701 +15812219120 +13640036853 +15190684053 +15867455515 +15187622336 +13601392584 +13681780342 +15110145226 +13699504514 +18522778260 +15825959028 +18544107193 +13983085490 +15850655266 +15830933140 +15166985805 +18544411362 +18835991049 +18885649895 +18851895806 +15800763717 +18863341849 +13929719920 +13653025119 +15171284193 +15802133938 +13605453094 +18578183437 +15880398518 +13619565499 +13674698780 +13990864790 +13998044201 +13666415415 +13914653864 +13988905036 +13667215957 +15880466627 +18860552607 +15874648582 +15868757857 +13648583817 +18815243010 +15848630715 +15137752474 +18810113142 +15859234812 +13627792036 +18858740243 +13990775493 +15807208336 +18838940683 +18802615965 +15118292582 +18879524775 +18806308562 +18882380583 +18591816229 +15163564076 +18532141291 +13974678446 +18502005537 +15102930051 +18555009303 +13907570889 +13912382700 +15140514777 +18564049599 +15191281559 +18896098491 +15850905437 +18523114346 +18896808728 +15808420976 +18841247941 +18531453970 +13667634615 +15138336463 +13960105623 +18593514597 +15104622229 +15862699320 +18594173823 +18548514831 +13912335924 +13620731788 +15197432579 +18806813175 +13944816209 +13933714739 +13999281599 +13955968345 +18875643682 +18570764566 +15816682055 +13954606084 +15868978786 +13683696708 +13984489853 +13927213054 +13648446871 +13640893499 +13924590020 +15866636980 +15888150616 +13688005683 +18889228053 +15163395109 +13933617878 +18834579206 +13673754936 +13901259764 +13634473798 +13638248198 +15165713829 +13675001990 +15131856483 +13642411356 +15831901987 +15828165454 +15129527828 +13655305407 +13621631035 +13647570719 +15186449856 +15829493016 +18837348596 +18895528282 +15894493213 +13662026795 +15854026714 +13948593950 +18888781000 +13656001926 +15854732768 +13924361428 +13669029945 +18856316309 +15801598845 +15182335216 +15807237915 +13930790176 +18574646036 +18590977302 +18563626595 +15114798518 +18878028893 +13671386756 +13955923405 +18524906642 +13942731070 +18538184021 +15136106542 +18801646663 +18899528129 +13632628510 +13904158423 +13934850131 +15853512746 +13628653648 +13648079040 +15165652870 +18510406517 +13977586661 +13940117518 +13962040242 +18591857550 +13695081880 +18862391918 +18843212734 +13634054827 +13663348107 +13617441534 +18873262671 +18881734461 +18850184854 +15165300304 +13940371522 +13675761697 +15817345963 +15877549273 +13677685541 +15899946842 +18875345284 +18547654950 +15156244807 +15822050844 +18523034988 +15875907557 +13992843120 +13690737207 +15134268256 +15124549445 +15849100778 +13937398383 +15896118568 +13648756052 +15878887194 +15814636215 +13984278868 +18588932201 +13940665390 +18528127176 +18803102707 +18577885855 +15835375779 +13961347376 +15102264417 +15808044313 +13928231666 +13650096124 +13995023307 +18513180229 +15862406645 +15199428032 +15866223791 +15109035962 +18584926998 +13964109209 +13912359155 +15820545165 +13980316580 +18581993844 +13610097867 +18554649603 +13959485566 +18810730939 +13620752993 +15149088808 +18879319489 +13980223787 +18817995371 +13969022075 +18885679136 +18881066192 +13934331834 +15823079911 +18570265432 +13948779632 +15858565589 +13602449990 +13600485437 +18853210813 +18548819482 +15846711792 +13934621953 +13661148737 +15171971490 +18809758717 +13965288922 +15183999755 +13692234559 +15803589476 +18588648997 +15171877661 +13671765678 +13681347290 +18854336016 +18893155288 +18883174245 +18814092694 +13646172044 +18822358655 +18523182823 +18538356823 +13919043621 +13643532839 +15862376693 +15876615867 +13942762452 +13620204212 +13918350296 +13654129058 +13978767002 +13686599044 +13901028906 +15161035253 +15197677191 +15825870176 +13637476121 +18840181816 +15826539045 +15152298636 +18835836163 +18853044189 +13682814952 +13961205444 +13944112356 +13691798089 +13671623286 +15803514773 +15105879040 +18825400450 +18515364745 +18839917833 +15175347446 +18896064288 +15830165759 +18513107088 +15822378916 +15819447770 +15100806533 +15894055510 +18816866672 +13684588549 +18528683251 +18802645183 +13699769055 +18819239950 +18580044243 +18573643923 +18843768635 +18842551199 +18511668346 +18899152218 +18565685526 +15113315194 +13908571004 +13968962624 +15898898454 +18892773536 +18512970032 +13610369032 +13627368354 +13665918425 +13904603365 +15885707020 +15883994114 +13669963974 +18519862434 +13914784124 +13604954749 +18524665179 +18582810969 +15848432624 +15122716156 +13621952628 +13655490356 +18885711924 +15102286663 +18586092631 +18557485814 +13667642911 +13676164713 +13683459010 +13924740048 +13635491764 +15830831754 +15160277481 +18814375471 +18852748018 +15114360505 +15811336885 +18839535149 +13685224171 +15824514286 +15155909077 +15811592284 +13685396645 +15120756250 +13634602738 +15816437032 +15815091711 +18565489732 +15873541885 +13630720013 +18865946229 +18571834076 +13605650548 +18867252984 +13972254716 +18502201490 +13683194170 +13606234738 +13623804946 +15875229065 +13917369299 +18885164748 +15836451469 +18595465010 +18821090323 +15842312362 +15890724687 +18534045297 +18888041423 +18556702042 +15172441104 +15855404040 +18555596484 +15170349294 +18526102765 +15861953820 +13671826627 +18572503850 +13977128970 +18577522579 +13668241985 +18825008646 +18846804837 +13972258213 +15166746556 +15851510839 +13660262498 +18577335457 +18818606268 +15802691008 +15877538031 +13983174768 +15828705552 +13966497696 +15153955109 +13938398114 +15139895522 +15828024225 +18823149068 +15875457031 +18525709200 +13691921111 +18500031476 +18843636599 +15118790854 +18576434703 +18895934552 +18591443165 +18589257073 +15881889028 +13684079357 +15154866485 +13995104728 +13925266708 +15888008922 +13901621402 +15139981784 +15148808628 +13966327816 +18822561564 +13987790403 +13667558555 +15198813479 +13909739794 +13688384047 +18885892464 +18590646697 +13626122239 +13688235674 +18523818647 +13917879341 +15897360554 +18862444453 +13665562660 +18800222798 +15112878742 +15139521800 +15867620365 +18833711601 +13644476282 +13683075022 +15864820779 +13958010743 +15103209466 +15147716503 +13959885504 +15878177048 +18515352540 +18507442272 +18577666066 +13984402853 +18867324104 +13991057503 +13948980101 +15826179122 +15825063554 +18851613376 +18558107703 +18550917086 +15866793939 +13951645052 +18895006419 +15875371498 +13673888628 +18542503346 +13641978943 +15142915280 +13636145454 +15894272724 +18846552175 +15898876929 +18526302732 +15874838741 +18590300343 +18543459929 +13955457689 +15153217779 +18549644321 +15121919816 +15146841444 +18895470606 +15149856307 +13912856692 +18514758736 +18534967687 +13938344917 +13699501969 +13625386266 +13626665492 +18894721354 +13925629222 +13652501088 +18820451206 +18853123559 +18566724726 +15107323426 +15110160655 +13645641119 +18581491821 +13912464078 +13937756092 +18838017338 +13932929976 +13613293269 +13922057167 +15131025003 +15889520347 +18867744036 +18561510283 +13632801915 +18567461544 +15805399133 +13634929480 +15179572636 +13618478475 +13935606842 +15821824572 +13916900013 +18864500655 +13943609978 +18860519787 +18560305623 +15877347099 +15160433043 +18558605054 +15854888406 +18843185590 +13986246798 +18843440598 +18867465588 +15127994762 +15853540979 +18845258573 +15831063924 +18514631980 +13642179615 +18524652162 +13999794584 +18898050968 +18524066300 +15187596097 +15837075120 +15847875864 +13658221545 +18877221233 +18531942240 +15846419176 +13928224260 +13650442483 +18847194108 +13937551586 +18528366353 +13664947378 +13604784266 +15858702361 +18802920235 +18888810418 +18562602841 +13629996648 +15102419760 +13991672179 +18820043358 +13629552397 +15830071302 +13909310404 +13655462110 +13928122450 +18849487061 +13991163393 +13948321315 +18575565404 +15869406884 +15852176591 +15824797587 +13617980711 +13668087093 +13615742698 +15122984955 +15836617855 +18802688996 +13657271963 +13900588669 +18806506214 +18854353913 +13691866742 +13638285289 +18517901753 +15134027286 +18868327399 +13984999695 +13667432735 +15123323433 +15166480857 +18565308038 +15844889983 +18828581531 +18824297100 +15846086611 +18882500793 +18532297858 +18871914932 +18565692627 +13944908800 +15152883195 +15185083844 +18540389794 +15884038157 +15892605314 +15137703352 +18893819505 +18874575566 +15159375506 +13658710500 +15137358861 +15830985777 +15884125256 +18597738507 +18533601571 +13903497985 +15850826528 +13676251875 +18872644535 +18578204182 +18521818251 +13904204854 +15856699824 +13609741814 +18515413654 +13974588979 +18886986821 +18596488171 +13977779654 +13968655091 +13946767855 +18879885298 +18566718695 +15163065144 +18880422350 +13933031505 +13991844888 +15176625124 +13979137391 +13624537587 +15894396623 +18875793519 +13910584082 +13600101348 +15154935294 +15198129158 +18821075789 +13983350126 +13947558250 +15185744948 +13659823579 +13668484552 +18529536272 +13984753145 +13933239694 +15147719769 +13923722248 +18880544906 +15152761342 +13923666183 +18871064192 +13915666219 +18838649942 +13679813369 +13648518788 +13678823943 +18847887505 +13630289609 +18554797610 +13947920442 +13999281471 +18811599372 +15829673886 +18831735142 +15172911390 +15141106641 +15139976116 +13953792182 +13981613495 +13653974095 +15193153888 +13925952744 +13940653843 +18848450024 +15183567237 +18516483935 +13629878198 +18546238198 +15183483480 +18814717195 +18594881004 +13908926264 +18567851329 +18882995053 +13660001117 +13986656503 +18823662700 +18570236211 +13694798703 +13950223479 +13943226442 +15173981566 +13913924393 +13667817178 +13631412166 +15813322479 +18833682756 +13934694631 +15104804194 +13985893367 +18819302985 +15855441035 +18580299077 +15870312292 +15860686635 +13974162992 +13641904032 +15801663971 +18542024708 +13972340667 +15874064363 +13996287802 +13966552835 +15129832821 +13976722383 +13672946881 +18591306419 +13619441155 +18521269647 +15893451616 +18527192186 +15120792172 +13625505860 +15182724164 +13946921674 +13976100508 +15871220782 +15853323003 +13622257297 +15884736251 +18825865121 +15806100692 +13920490294 +13683183835 +15174766389 +13693861786 +15136929822 +13636215795 +13964995393 +15869894230 +13948410778 +15863159935 +15142789662 +18553482513 +15183012815 +18808740110 +13618788843 +15190613894 +13916068538 +15865850462 +15871412976 +13967216779 +15801177359 +18879478660 +13641909321 +13615256393 +13918572791 +13905722011 +18566684954 +15868828471 +15806110990 +15192956599 +18514800887 +15166373313 +15872396154 +18565086644 +13693189627 +18534577713 +13667118099 +15164464297 +15815185956 +13914329433 +15109017408 +18805473776 +15114727094 +15127293947 +18537981607 +15107636851 +15181266246 +18820124426 +15152303211 +15191298726 +18824308237 +15895227433 +13611412472 +15866913170 +18596766437 +15115196259 +18548775769 +15102278052 +13973823671 +15170406795 +18506650399 +13612569200 +13905961586 +18521559896 +15805055934 +18540526742 +15891192132 +18826313939 +18864043426 +18887539632 +15183665563 +15149002272 +15849085787 +13966795736 +18512521951 +15119936984 +15161875116 +13964263915 +15898544631 +13644868385 +18588271843 +18544790661 +18543732053 +13639116251 +13926910462 +15874104888 +18852134401 +15127552205 +18870592494 +13657750553 +15801992480 +13693371632 +18506178446 +13616115965 +15847755784 +13990189237 +18854200286 +18579261654 +18563507917 +15815605232 +18891722581 +18587097489 +18802157949 +18544117530 +18850661078 +18576721132 +18568623707 +18544070914 +15191264783 +15875459588 +18557490143 +18593697937 +15152690542 +15863237377 +15180591975 +13612637338 +13629757179 +15194938585 +15158150266 +15824850142 +15871647476 +18883227400 +18833713395 +18569494006 +15184920654 +13672236314 +18807808103 +13658878499 +13680310173 +15149656459 +15118344690 +18566062968 +13993798841 +13692233512 +15143680875 +15838075767 +15865987781 +13930571245 +15115864942 +18519688354 +13934927540 +13639814398 +18813767697 +13944828258 +18809484245 +13683978054 +15135103391 +18589776113 +18849776934 +15888863917 +15802799376 +13632458146 +13961202876 +13608666658 +15860261449 +18804834003 +13640862863 +13693322538 +13986861858 +18595527330 +15842539311 +18500209540 +18558567925 +18825890491 +18592898631 +15195118535 +15825099035 +13687155045 +13682658002 +15801021622 +15155064477 +15896493793 +15149593848 +18824890151 +15808012104 +18881472247 +18894902179 +18873160299 +15121047050 +13912227968 +13905726508 +13904756526 +13606201937 +15188859246 +18532069437 +15818072165 +13695969464 +15171444311 +15125441261 +15808648212 +13963567410 +13905262570 +15861018868 +15880537920 +15800804844 +18830866267 +18552558334 +13972447679 +18803905528 +15139696365 +15885840516 +15194116145 +15135821560 +13684295624 +13607079730 +18863367563 +18594972233 +15118667361 +18894012981 +18842879373 +13947499629 +13674453943 +18534235730 +13982369978 +18871723449 +13656952103 +15107314225 +15856740626 +13907314173 +18536261606 +13900323588 +18515165542 +18523588585 +13957120536 +18844437673 +13603326591 +18846876621 +13992288322 +18827697863 +15116691176 +18589008964 +13645070842 +13654623403 +15113530283 +15173652738 +15866870229 +13971472761 +13997372219 +15193552444 +13695307504 +13929509967 +13992699889 +15115425936 +18551368070 +13986424136 +15119104983 +13998625806 +18800329586 +18516021465 +18592478589 +15827370811 +15111115118 +18855793387 +18519153718 +18573571121 +15171922444 +13952533585 +15834886105 +18552539458 +15127941477 +15888969448 +13620969246 +15175735753 +15178813574 +18559148565 +15805228525 +15870665570 +18865626190 +15812946603 +18898115752 +13651155229 +15197855495 +18531359910 +15875465678 +13627574138 +18524662992 +15859359219 +13691107415 +18516005175 +13918421274 +15145272048 +13638702521 +18866374766 +15825115478 +15199626985 +13616120009 +15145129629 +13686139378 +18567705400 +13697506393 +18525272697 +15858950835 +15810236564 +13640122323 +13689381671 +13664598732 +13688402063 +18505808537 +15891096255 +13925003109 +15181137537 +15849026300 +13680012933 +18895696911 +15868911361 +13626510342 +15835168452 +15140434403 +15176908119 +15122389485 +13627427344 +13633105520 +15887257555 +13996372606 +15863933777 +18887775256 +18570803998 +15804098389 +18824691841 +15180313914 +18522913600 +18515402455 +15183867453 +13965725582 +15817135301 +13625312344 +15109176560 +15170530427 +15863151974 +18543808070 +15116447182 +13900414719 +18836466955 +15810922991 +18589860681 +13982924934 +15845350921 +13613260857 +13687550991 +15185122870 +18501913107 +15867688958 +15122496698 +15136275966 +18865646788 +18808342103 +15812823072 +13631336119 +18570030257 +18547859141 +13681368905 +13633228596 +13654770301 +15883153186 +15818626262 +13663372985 +13694258422 +13992466559 +15144098759 +13986402235 +15869607393 +13942886820 +13608540889 +13956628820 +13603806455 +13997748902 +18889059830 +15893403644 +15174896223 +18513785235 +18517160562 +18881342414 +13907756287 +13902319711 +13984144404 +15817972718 +18871052968 +18894488061 +18815951930 +15835115521 +13943833421 +18505689975 +13947947594 +13682894352 +13992466807 +13985057453 +15113561300 +18832289089 +18552060778 +13669567559 +15842552056 +18563936886 +15822959118 +15829887687 +13627567077 +18862478990 +18581131945 +18885290208 +18532398841 +15801445121 +18872241047 +15128849783 +13696618456 +15879949440 +15199893710 +18505211578 +18877765588 +18574174339 +13906110688 +15188454792 +18834804994 +18804242959 +18564479134 +18555435800 +18820547172 +18806613954 +15131798293 +13912319703 +13980970695 +13978447215 +15841593505 +18858953805 +18802166737 +15188995690 +13600893158 +13654187019 +18893041852 +18558573006 +13962279459 +18553268939 +15821293790 +15121494642 +13646593991 +15195031398 +13945000748 +13954135023 +13637089477 +18587066502 +18579391212 +15817980148 +18886620295 +18842290040 +18509900012 +13986005345 +15111517817 +18507213428 +18873109371 +18862889398 +13982211850 +15849343126 +13968995692 +18595444896 +18829020472 +18523631095 +13678771165 +18863025473 +15891235388 +18854274484 +18889552785 +18596697654 +13935304359 +18555037888 +15136216650 +18535918821 +18503775193 +18848202714 +18805691441 +13960550307 +18506774189 +13967248851 +13647494907 +18843862471 +18864936635 +13931979724 +15860498920 +13635835873 +18822250404 +18515626239 +18867195453 +18514908551 +13919839370 +18842048981 +18878212588 +13936487032 +15149264163 +15800245953 +15161976565 +18550323290 +15155231412 +13681539475 +13645043716 +15198162148 +15880529863 +13647068918 +15107931882 +13988942334 +15136669102 +13676572952 +15127220040 +13607898406 +13915982374 +15832577616 +15818831778 +13675873709 +15851349598 +15898381869 +13929321939 +13681607540 +13942538297 +18837564396 +13929614953 +13630409199 +15120251166 +13947018681 +18846477261 +13641534143 +15846414842 +13944817204 +18516295796 +13621324498 +13696881935 +18550302693 +13643208328 +13957916435 +18843648190 +15893684108 +18549442485 +15862704470 +18514208404 +15800646254 +13991696019 +15185345761 +15862247430 +18852526696 +18843184125 +18889212927 +15193451236 +13915273297 +18592696517 +15151391247 +18862334497 +18886020864 +18586791760 +18553625221 +13661808084 +15870136497 +13989297674 +18538317484 +13929822156 +18523094158 +15872148405 +18886444088 +15867203235 +15823971709 +15866049751 +13958340468 +15820488239 +18887086320 +13919835456 +18521589518 +18893807210 +18520887765 +18545905193 +18851473285 +13677806464 +15180426834 +18545119547 +13623700275 +18870878257 +13987710049 +18528590898 +18804269362 +15858936294 +18867658668 +15891297281 +15819477339 +18845301750 +13907548840 +18571608567 +15199603274 +15178301081 +18535302378 +15187595268 +15196277325 +13921862209 +13907330875 +13994961577 +13628639321 +15896296649 +15883672074 +13995352119 +18846772958 +18530225686 +13915936321 +18878669228 +18826924870 +13617877132 +15870660650 +15847596501 +18856464093 +13646529748 +13615751710 +15170298366 +13683643151 +15181418302 +18546876717 +15828054834 +13979535544 +13662660868 +13923787006 +15870180693 +13950082932 +13913175207 +15862044923 +15138305773 +15886559810 +18820128504 +18506779228 +13677652271 +15838737161 +13934738898 +18574260851 +13608892251 +13694955271 +13929223732 +13676659069 +13698243979 +15142407502 +15805619075 +13916645949 +13684868312 +18832179663 +13971526048 +18534303029 +18814504735 +15875304025 +18825934723 +18579331685 +15172598411 +18866915575 +18528983130 +18869056092 +13608916432 +18848915101 +15105494930 +18805861423 +15850033059 +15137301828 +15818585148 +15892134952 +18588193149 +15127420638 +15109733724 +13902907102 +13609699920 +13621026049 +18857102999 +18851192873 +13641908995 +15166490135 +15116298989 +15825355356 +15891036059 +18828757394 +13687065022 +15816664632 +15116930272 +13935959172 +18532333687 +15134491839 +15156751797 +18864984839 +13979876308 +18899265466 +18548216976 +13605940941 +13992050081 +13649593718 +15889734965 +13627904746 +18503397283 +18837232154 +13692552825 +15846377113 +15189199327 +18844470073 +18523305652 +13637520835 +15821250015 +18508731308 +15156142214 +18818998322 +13637859375 +18517630621 +18511757156 +15876146505 +15157746396 +18555697045 +18511941568 +18803213198 +15160444002 +13988315273 +18873786023 +13676725462 +15809790842 +13978888096 +15184458791 +18583260151 +18817976302 +15126892244 +13941508470 +18594504757 +18531278696 +13614549739 +13690557789 +15169259143 +13625845441 +18564825040 +13659615278 +18821372285 +13931945193 +13919107801 +13913588697 +18515458485 +18589443231 +13992599764 +13607679483 +13959393550 +18824210191 +15140972335 +15832001725 +13665467999 +18827779568 +13618077859 +15182257640 +13646550606 +18570872761 +15157243424 +13649284664 +13943129176 +15106109923 +13944927572 +13686005478 +18841368880 +18512108366 +18563657168 +13670067379 +18847119213 +15125942753 +13958145707 +18874519835 +13649397507 +15172902324 +15870852330 +15864037409 +13947281416 +15802369844 +15832940734 +13673712336 +13910723001 +15145446268 +13647153741 +13638402590 +15843689733 +15141565758 +18862432280 +18849161117 +13923309802 +13626613431 +18803400408 +18886222409 +18594921985 +13677390840 +18820861255 +13685931303 +15182017513 +18894093612 +18888330445 +18872266433 +18801234711 +13980463530 +15861546087 +18597395718 +15879853489 +15877323913 +13908193167 +13696731144 +15160368778 +13987786288 +15850949540 +15808451752 +18542086793 +13903678200 +15159292668 +18878172411 +13628149725 +18588149720 +15187475275 +18824618677 +13971088544 +13614082121 +13909629522 +13900055733 +15895260859 +18513635868 +13919018566 +15142355303 +13937731313 +13923791578 +18580916417 +15894731739 +18518633979 +15889427229 +18533205331 +15849085895 +13666505648 +13930821436 +13971774649 +15836219039 +18815317143 +13606101704 +18875292764 +13676197042 +15865078631 +15157785940 +13602329279 +13699667643 +13665245557 +15100631856 +13944396704 +18503557123 +13636216926 +13994573962 +15804977653 +15150235653 +13606510241 +18598507208 +13919736717 +18541427382 +18534263881 +15168735163 +13902861913 +13635415941 +18826449989 +18865538354 +18853182432 +15170073519 +15881674168 +15821788096 +13615492787 +15116499307 +13964355986 +13976166040 +15157747538 +18875009182 +13621382903 +18898461479 +18561308426 +13677226929 +18803113572 +15164535233 +15810124222 +13690962319 +13975893282 +13605409488 +18534583394 +15805793266 +13948430463 +15882776408 +15129391407 +13964824711 +18865531721 +13605880542 +13960081635 +18885093852 +13601508936 +13979239748 +15152041371 +18534769379 +13645577997 +13647266276 +15854497786 +18598559783 +15840918197 +18584010523 +15870710761 +15133499876 +15887036474 +13996595188 +15196854420 +15874785631 +18562853765 +15804105742 +15886852012 +18851244580 +15172519992 +13651252475 +18563145412 +18814327950 +13696367023 +15841572115 +15140427352 +15112979014 +18570289484 +13647892093 +15156197590 +15892824966 +13698562970 +18550630427 +18855014184 +13949001322 +13935946307 +13651603871 +15866257905 +15171210482 +15164591190 +15837421942 +15881214303 +13982187007 +13970848869 +13613399685 +13947860459 +13999583166 +13605438661 +13620021444 +15885859878 +15847152568 +18892363171 +18552838119 +18897424842 +15886312415 +13675019037 +15874383588 +15895210837 +15121045936 +18850155212 +18871169436 +13977544700 +18881723263 +18884074426 +13953339094 +15116275288 +18816802516 +18517051913 +13647444644 +13970933378 +18819780054 +15178319244 +18821536899 +18837940709 +13643844647 +13950230410 +15117306799 +18539541393 +13923677159 +15808870404 +13978014019 +13922399259 +13639313741 +15156718173 +18515174929 +13664888158 +13984009571 +13608752973 +18595463290 +18573302375 +13981557410 +15828535600 +18544453606 +15147358943 +15107643410 +18825277555 +13686439201 +18826624130 +13604003245 +18511611680 +13668022979 +15113925992 +18886665755 +15107358146 +18829646576 +18557116526 +18573052870 +15123852245 +18828895646 +18860654961 +18533753523 +18545547425 +18834296541 +13675943029 +18571419982 +13693168216 +13676320565 +18514797479 +15843617030 +13989724415 +18570103709 +13686516538 +13616559090 +15179752690 +15880401535 +13970100645 +18870782550 +13674140676 +13985904820 +18555898078 +13991804921 +18517248638 +13601042397 +18544776275 +15865869900 +13682383547 +18537606612 +13900294391 +18595548763 +15865649834 +18574616598 +15889601313 +15137845314 +15105291963 +15169441997 +15109697702 +18853935248 +15852633999 +13636847203 +13969500132 +15800178515 +18598068524 +18892339703 +18842450003 +13922179855 +15841370869 +15178164997 +18536002725 +15104965828 +13631953032 +15168097102 +15139626257 +15838300925 +15149866857 +13652903668 +15140944213 +13900391872 +15811184797 +15892858058 +18880532961 +18858744228 +18598989603 +15165226083 +13966110755 +18530361106 +18884824937 +15822442733 +18898922448 +13923429592 +15803512649 +13999420294 +18580850015 +18515900293 +18899842952 +18883184981 +18871761331 +18562563876 +13994479546 +15155229275 +13919627045 +15135248548 +15100292602 +15885116099 +13998268135 +18801781219 +15163439478 +13988418913 +15134560342 +18854639018 +15109768361 +13656679280 +13994873807 +13929315289 +18809128432 +15808584184 +13642814634 +18563637733 +15880124812 +15832714436 +13977330158 +18877773678 +13978610848 +15856357722 +15138051641 +15123223662 +15183993881 +13938323774 +15116883640 +18576218111 +13655790934 +18835411234 +15846515970 +15842298525 +13625473405 +15871446451 +13929503931 +18819646733 +18526373441 +15802062009 +18834153901 +15184791804 +13653194334 +15804211597 +15808307993 +13959614270 +13667814447 +13923037356 +15835475373 +18848570220 +18522004205 +15157486998 +13950500094 +15120686447 +13915575417 +13958386437 +13695022098 +15168287263 +15828157143 +18522341547 +18520404605 +18511556832 +15815865319 +13626944634 +13948849366 +18868656703 +13960991083 +13954263374 +18526434411 +15806006961 +13939832451 +13930479840 +18500412449 +13986735668 +15863070271 +18502184447 +13973737772 +13633658915 +13926742591 +15864785800 +13608108822 +18526901542 +13957178277 +13643581188 +18529380650 +18832828094 +18551716709 +15816669603 +15891136882 +18517290212 +18823295158 +18543476228 +18857939002 +15146118091 +15158883020 +13947363542 +15804948644 +15897458331 +13694723618 +18806006328 +18868494731 +15170212943 +13600102534 +15871201369 +15191708694 +15158848084 +15861948229 +15127242734 +15104821679 +18516883109 +13917386499 +13967311814 +13971180374 +15197372253 +13600501306 +18802484994 +13916394236 +15158400680 +18884027632 +18879187338 +13665379320 +15180142250 +15826284406 +15100046499 +13909600764 +18560621362 +13996130621 +15147312587 +15103437631 +13999882798 +13690624919 +18811753913 +15183948149 +18847237918 +18884178261 +13658181876 +18896901278 +15143819398 +18524347327 +15830853705 +13985989807 +13625386392 +15133035381 +15183144149 +13693972900 +15175311213 +13919377856 +13953696563 +18801404657 +13925880137 +15824162376 +13906121690 +18562400628 +15164860375 +15103120622 +15899717356 +18576574601 +18807489037 +15851289547 +13980769123 +15174059816 +15825391438 +18596575850 +15822601156 +15867284666 +18859436480 +13607634761 +15168821891 +18836308128 +15858334654 +18565322939 +15183795304 +13618306674 +15844522465 +18834025137 +13617634355 +13909070668 +13676932376 +13943241415 +18885657599 +15110242149 +18808397149 +18561728015 +15198033896 +13902872069 +18547581521 +15170018062 +13650913437 +13617251315 +15144959338 +13981427683 +18594337137 +18873303020 +13610153687 +13981923601 +18860834070 +13651167433 +13940194265 +13980826113 +13694257153 +15166388214 +13993334598 +18864822056 +15131687753 +13641360225 +15197966050 +18807260347 +15121201621 +13975705412 +18899570806 +15195838281 +15803589583 +15130358137 +18526908667 +18506412674 +15817043683 +18596688502 +13677219079 +15851729633 +18872675323 +18508022596 +13965110881 +18505729449 +18520663993 +15188890320 +13689890393 +15184783533 +13649789583 +13614938027 +13987684113 +15127328682 +18560892119 +15899301194 +18522032963 +13946167229 +15816046143 +18871248811 +18591101291 +15896357248 +18861948579 +13999235237 +18809196465 +13997714529 +13995614956 +15180974368 +13937015880 +13951913736 +13646679391 +15843334315 +18862771976 +18889111085 +18560156123 +18577693845 +15852611338 +13957337286 +13643473319 +18520904751 +18570333091 +13667785881 +13621070175 +18568458168 +13906680382 +13677970995 +13651657271 +15144289485 +13675478098 +13605653913 +15801848577 +18859048599 +15850537287 +15817017776 +15871835424 +15880041548 +13977538667 +13973820699 +18528009351 +13927686255 +15868472388 +13624130437 +13959243863 +13961439660 +13603440015 +13930953146 +18575350744 +15136034499 +15899626216 +13958840709 +15144459074 +18558672552 +15177876271 +15810814738 +15162317381 +13693163166 +15845491185 +13985229138 +18514468092 +15891069639 +15877649422 +18594637054 +18572453596 +18574823868 +18869097621 +13635661754 +15163034221 +15874392888 +18889849744 +18540243196 +15189189017 +15135049540 +13930395805 +18515433218 +15895014608 +18585361912 +13902848225 +15892719297 +18816088976 +18859237881 +18869550831 +18890259777 +18597599105 +18524614453 +13944768042 +13687230970 +18853715628 +18575305626 +18875189214 +13629634716 +13601595304 +13617449691 +13652647300 +15860535817 +18871321290 +18896120586 +13922243585 +13682842370 +18557614781 +18502808944 +13607028175 +13992884233 +15159505389 +15851641986 +15137304721 +18854044189 +18846174262 +18873435308 +15166438844 +18869077855 +15809347323 +13602831358 +18880839788 +15810307021 +15831773773 +15847488322 +13696619666 +18595189284 +13948951597 +18594067881 +15883715412 +18870052298 +15177031011 +15805335903 +15180744479 +15836886551 +13931991371 +13691973732 +15113438455 +18883842597 +15814801754 +13660582621 +13922537331 +13648713061 +18811755112 +18875186020 +15189189914 +15162324157 +15103966594 +15109209541 +15851354433 +13957736147 +18538477011 +18551284454 +15841240185 +18864725489 +15113546284 +15109114335 +18575036272 +15898495063 +13949335267 +15173677766 +15842869043 +18586252240 +15142235261 +18524245470 +15182086204 +15139270799 +15836348992 +15800589101 +15162656810 +13677473394 +15141817691 +18848366767 +13994835089 +13931846598 +15858601565 +18569991698 +13931754793 +13918403572 +15104458330 +18894202889 +13657814781 +15146293717 +13691379501 +18580148743 +15139788637 +13964138502 +15827831691 +18842301192 +13679511650 +13619119508 +15122689106 +15843083198 +18856825628 +18841435226 +13615774070 +18858439025 +15802201680 +15192422683 +15117507680 +18503032149 +15809398188 +18846804743 +13926628844 +15807087638 +15197255068 +18593197941 +15856638794 +18829239388 +15153108040 +18879282565 +13601177197 +13648027927 +15138855196 +18869984376 +18544949985 +18834733545 +18511721090 +15832955230 +15853447726 +13908633997 +18508721991 +15163848869 +15838940570 +18559042836 +13922290366 +15858230048 +15897412395 +18804872926 +13688031903 +13658561534 +15897894981 +15824520166 +18862646812 +15179775038 +15163097517 +18507640468 +18890517220 +15839100297 +13604436566 +15845655808 +15896297087 +15802648913 +15891287058 +18812595335 +15862588709 +15191567390 +13913857413 +13695975944 +15180226815 +15101433565 +18527538664 +18564194227 +18592341730 +15138630458 +15147305135 +18506319964 +15150196505 +18543046396 +18856172200 +18818215047 +15131307389 +15104207305 +13926824342 +15896797649 +18824374042 +13944129135 +15858944606 +18505790923 +15188152524 +18853356147 +15197828990 +18897793142 +13653029261 +15803599801 +13924230296 +18562582641 +13924137417 +18576767277 +13620079944 +15857961959 +13939416399 +13660620350 +18508489878 +18884787164 +15894763343 +18540868318 +18534923236 +18850563637 +13625411222 +13928322100 +15805677323 +18597457426 +18874518506 +18501226316 +13900541527 +13601552559 +15897601636 +18812295001 +13971145463 +15159542280 +18516016104 +13615520726 +15103815891 +18525916988 +15111124510 +13637458560 +15897286921 +18829785421 +13639583876 +15814578659 +15157592967 +13992904862 +18547410072 +18572380589 +13925155259 +18883195196 +15175569534 +13961672423 +18577981799 +13904582685 +13646465915 +13980464282 +13629487719 +15815369498 +18565007452 +18832812209 +18531276868 +13950582272 +15178796375 +13663159435 +13680606557 +15145550798 +18897324008 +15123357666 +13957413657 +18846533149 +15813118959 +13689106757 +13961726203 +13608513639 +18520860860 +13950051456 +18548933899 +18590882805 +13980872533 +15145735693 +18505077739 +13911841444 +15843032975 +15167053362 +18547968799 +18503961468 +13983743846 +15124253317 +15875789955 +15126530564 +18580176297 +18809919826 +18582430074 +18532334554 +13970513331 +15129534794 +15142535526 +15178401125 +13966923582 +15101827364 +15885946360 +18833992215 +15881172383 +18551282588 +15186131028 +18534999858 +15808215681 +15862040332 +15837960220 +18853019531 +13694211915 +18867586061 +15802410989 +15129040096 +18580708790 +13920791628 +18844435948 +15161619355 +13632804433 +15154098616 +13903453405 +15893774638 +13973452171 +13619240077 +13671750661 +13660362554 +15839768021 +18557034856 +18529964320 +18884677493 +18883523938 +18826482331 +13644348475 +18568489036 +18815109767 +15827125478 +13948203816 +18529115857 +13642214738 +13994810850 +18526745386 +13920198560 +13977690901 +18843858457 +18812589356 +18801825737 +18854152382 +15882161333 +18563355768 +13965605362 +15802821191 +13607158759 +13983618228 +18510847327 +13615945215 +13925224613 +18539666907 +13626852443 +13924762961 +18574619858 +15102797232 +13662161691 +18551026875 +18525597511 +15887213317 +13913971981 +18514829200 +18880499743 +15809226393 +13949933779 +18533070950 +18817108232 +18876164127 +15115424248 +13606765469 +13690374673 +18863246983 +13627489102 +13913542986 +18591552612 +13645870844 +13916405254 +15156136107 +15123246635 +15121683795 +18855096993 +18590143504 +18824196065 +18531912077 +13915446338 +13947531750 +15170510319 +18520449296 +18558909336 +15874798891 +13618186958 +13640269485 +18596664094 +13678650522 +13913757447 +18819146345 +18820515156 +13666083821 +15143181798 +15843629741 +15894752590 +18848768222 +18872455612 +15133443059 +15158617264 +15802505440 +13681898608 +13601902335 +18520304772 +18596819734 +18825995882 +18568658811 +18517694134 +13625038525 +15876955460 +13979027153 +13902518321 +13604190803 +13693708958 +13914705458 +15830514992 +15811468943 +15111122567 +13639697960 +18555434659 +15807297570 +13666341549 +15869283309 +15179522431 +18550284063 +18876204610 +13640819032 +18880776617 +13613951541 +18581788188 +13699907154 +15165069144 +18559206235 +13685061940 +13979744890 +18815777986 +13927875986 +13992491582 +18878404292 +13946317005 +18565342765 +18819802755 +18882853784 +18841286045 +15166910640 +18586627178 +13957222267 +18506063665 +15850346636 +18834589425 +15162230762 +15848122229 +13693777884 +18861284400 +18848739092 +18572475770 +15165293517 +18500333883 +18814755148 +13602669334 +18541149614 +15104452311 +13972724902 +15862816827 +18572946790 +15865579998 +18545235058 +13901772302 +15835328129 +13630576378 +15861479517 +18545657532 +13611283455 +18849311657 +18849037614 +13613078979 +18899960954 +18842448725 +13942863676 +13616334801 +18846635539 +13962324456 +13657604122 +15820182322 +18513074432 +15842234016 +18889066058 +15887263623 +18835725226 +15896378029 +13912056300 +18889536177 +15145083019 +15105296106 +13952160585 +13973458547 +15165267057 +18553003324 +15109934640 +13916747452 +15107635566 +13648334038 +18898198370 +18587244152 +13968403491 +13629123616 +15825852986 +15182100794 +13658846118 +15159390989 +13688598054 +18820697692 +13975301235 +13669121521 +15856044126 +18540277315 +13613169810 +13646454670 +18855028028 +15844337502 +18582633226 +13682247283 +18880999759 +13678756149 +13632314674 +18891476232 +15191309316 +18590274693 +18847613558 +15141167134 +15875484253 +18596681764 +15879779429 +15177873900 +13636247097 +13631831618 +15173695684 +18578189374 +13645673084 +15861725981 +15873104381 +18516565640 +13684661395 +13641934943 +13604566202 +13942140050 +13654185732 +15186973344 +18822901999 +15124867524 +15888383056 +15866840268 +13602213282 +15130673190 +13989433309 +15862963967 +13936880083 +15191846351 +13671867298 +18853158079 +15172916829 +18843827930 +18840936710 +15152546518 +18833564244 +13973133529 +13609233114 +13652874387 +15137948399 +18846203316 +15109117668 +18860356216 +15105713874 +18552453170 +15891078311 +18868028552 +15149746389 +15160092182 +13942969249 +18599111798 +18877965949 +13930262865 +18870804166 +13998889431 +18804479768 +18863702620 +18894050737 +13913586567 +15100878001 +18886456132 +15856860566 +18868663978 +13660393146 +15173843733 +15867691208 +15811492955 +13944488556 +18838604870 +15108498705 +18805020528 +15184499096 +13696780460 +13902324018 +13948144266 +15122044495 +15154086759 +18846587802 +13958836990 +18842526746 +18839479025 +13929208303 +18549753379 +15106256464 +18529922122 +18890175998 +18877548807 +15839688054 +15143450045 +13929650612 +13990531166 +15805444074 +15142218639 +18552478812 +13929129084 +18863998395 +13922844007 +15842861003 +18846021438 +18578386663 +18571815213 +13696883013 +15889535175 +15149969821 +18552786368 +15120708195 +13956224528 +13653016867 +13636092885 +15105283332 +18842959936 +18830521127 +18819257017 +18578863346 +13965268250 +15829903533 +18850265142 +18508285871 +15847867797 +15193559899 +13975778781 +18538780601 +13673143203 +13967609782 +15812233398 +15873725642 +13981855478 +18866731429 +15119605894 +15153694223 +18581776633 +15884493545 +18898762130 +18517049224 +13992985107 +18837095255 +18534775131 +13942967516 +13692735772 +15163389494 +13967288167 +18579055707 +15818838905 +15872768626 +13965876532 +13924774932 +13616589991 +15149936857 +15137212799 +13682328459 +15187530809 +18566750297 +15161995505 +13965229859 +13932432576 +18542815537 +13639903024 +15836174925 +13663125024 +15879620964 +13662333464 +18821751787 +18535570868 +13965985109 +15132903109 +15801785723 +18812018700 +15882253399 +13698553460 +18572666076 +18563420680 +13659504786 +15108940230 +15819979199 +13947667616 +18840246002 +13696341561 +15151683294 +18543053223 +15827845859 +15170583324 +13683397180 +13606009892 +15126875943 +13605627535 +13992032093 +15169623934 +13653441721 +18819207762 +15154451024 +13671607470 +18596214931 +15178150518 +18580163836 +15146621834 +13965148995 +15163570644 +18573524674 +15134939580 +15182223212 +15814395651 +13662101780 +13940161136 +13989083575 +13622844380 +15183265029 +18867475262 +15115980605 +18825478743 +18589253999 +15145887971 +13988772496 +15878717728 +15838779232 +18809239018 +18841612568 +15136461940 +15113297260 +15184528488 +15864246270 +15833111315 +18891566091 +18589870416 +18896313729 +18582745672 +15196641489 +15143273776 +13998667629 +13654525775 +15889509782 +13989207287 +15834690119 +15195206799 +13999621224 +15180481437 +13943096134 +18816815887 +13674070153 +18506177715 +13949666671 +15161378463 +15106225148 +15103770322 +13692457542 +13663737659 +15162288268 +15196133579 +13901110518 +15899219472 +18522018705 +13686847546 +18894206131 +13687354544 +13698016721 +13657606007 +13660736864 +13998330695 +15887866897 +15864105570 +13969768845 +15827015098 +13669129616 +18807227828 +15133552411 +15831767169 +13623883771 +18521540940 +13629875455 +13659169011 +18564424550 +15872281540 +18532957814 +13980013514 +18887336145 +15178917583 +15896570695 +13975870123 +18822319158 +18594387799 +13689661339 +18507187036 +15874384982 +13940046297 +13686954635 +15135588933 +15860070778 +15178486168 +18586806739 +18841380628 +13605518928 +15128787052 +18586075737 +13911155712 +18841182217 +15825346308 +15849697997 +15101300526 +15187720038 +18530690593 +13657455838 +18536118369 +15149678153 +13928011343 +13616543296 +18532380067 +18867003180 +15849061559 +13967828302 +18593071375 +15833468007 +18506637460 +15881703953 +15886156652 +18538699536 +13938413415 +18510566317 +18531073409 +13907762882 +15884010243 +18549389565 +18565992234 +18857554093 +13962525910 +13995967327 +15100842630 +13904375625 +18566735076 +18558040117 +15811376101 +15859874373 +15847194076 +15815152198 +15104862854 +18524791986 +13682289016 +15892468385 +18863242683 +13643902198 +13627920864 +13627913248 +15182161656 +13639536478 +13643973594 +15141755637 +13968068591 +15127334975 +18560919236 +13995887571 +18800156163 +18580065709 +13964906925 +15197254472 +15124772847 +18529863633 +15168982756 +13603424621 +13630144412 +13636939125 +18542770429 +18520921622 +13936618714 +15167406918 +13651042008 +13988117430 +15873130434 +15850455420 +18582427032 +15118987055 +13611832082 +13947197264 +18584241623 +15863309232 +15827988929 +13949187037 +15838986300 +18843719344 +15104421244 +13944336844 +13962079168 +13622423554 +15146968095 +13670389872 +15803529616 +13612347653 +18569028762 +15815832201 +18894531394 +13952073118 +15881281714 +13659664764 +18517329605 +15865120199 +15878943782 +18846738840 +13924917706 +18857836205 +15196670135 +18899099071 +18571191037 +15196900942 +13611481482 +15887905272 +13912780043 +15137398148 +15189044056 +13627906330 +15888022159 +15865057820 +13933330316 +18591035280 +13691417145 +13691025408 +13940823565 +13963017290 +15121656577 +18587473263 +13938416249 +15163321685 +13621479094 +13639383044 +18876266153 +13900421875 +13636859160 +15145058637 +15170571630 +13644866415 +18890203500 +13942506319 +18850284664 +18818359240 +13950340621 +18526994298 +18597987397 +15146184711 +15855115670 +13941425639 +13619044704 +18550559438 +15196790894 +18559838178 +15103897862 +13971766049 +18587112243 +18573079377 +15867066787 +15118678786 +18591137735 +18515052790 +18502051183 +15137421641 +15162939099 +15156026912 +18845305268 +15100208346 +15831029516 +13955118117 +13966164719 +13991656616 +15129731977 +15881935369 +18826731879 +18548160163 +13956520879 +13904569012 +18544743665 +18543596062 +18506480481 +13907011123 +15187213205 +15841283325 +18584658273 +13668014669 +15138957838 +18572533525 +18846439303 +13964233198 +15890126916 +18530445179 +15835129636 +15884108342 +13934380334 +15165091560 +13629675676 +18535325015 +18850362758 +18538707830 +18847607274 +18562539506 +18547979455 +13693178700 +13964374098 +15106504514 +13994649991 +13610054305 +18857891791 +15114077734 +13999691135 +15147292724 +15814316479 +18841005264 +13633937402 +18800538156 +15118460071 +18593215200 +18833652438 +13603505230 +15800526490 +15171329388 +18592855152 +18502286630 +18803466677 +18865729298 +13687474602 +13635910639 +18830451384 +13945305678 +18865134595 +13688996606 +18511440940 +15171275158 +15174154117 +15888416169 +15861606274 +15816702562 +15142928049 +18562142227 +13923639851 +13903059581 +15134080913 +15149569046 +13997157938 +13634653668 +13932355245 +13638123545 +15118003018 +18564408160 +18894224264 +13698748632 +18508697585 +18573637535 +18861676616 +15852310763 +15147840513 +13979681917 +13657532777 +15849618833 +18861809502 +18887300728 +15139484429 +15886688966 +15882268426 +18802291865 +18819632507 +18514397821 +13974409258 +13684985051 +13917744253 +18861548597 +13913087777 +18510366360 +18596387796 +13948312380 +13667034771 +13999332073 +13991062916 +15878552618 +18505761755 +13901365463 +18575550950 +13672784910 +15195498787 +15120490477 +13950794650 +18536454341 +15883353310 +13665607439 +15176283078 +18851482864 +18816584631 +13982844894 +13609871888 +15830034323 +18572658394 +15803503405 +18880288034 +15803994393 +13958244225 +18552844562 +13644694942 +15815315602 +18529044183 +15893152697 +13987961263 +18515685661 +18850354947 +13629341242 +13944429673 +18841007839 +18809547043 +18596348205 +18540074615 +18886985326 +15109449811 +13952714606 +18540371848 +13914181212 +18831074946 +18565751742 +18888941601 +15163420669 +13951279067 +13642451567 +18512950710 +13647734624 +18547173765 +18890256049 +15105689563 +15819220241 +15830752011 +13681383449 +15891710879 +13608875302 +18819117119 +15842488788 +13996315176 +18533199500 +18838370091 +15115936274 +15177504392 +15118843583 +13670790738 +13685836801 +13639892717 +15871125153 +13949447034 +18889750359 +18514819912 +18845596056 +15148586406 +18513643788 +18840022963 +18891251891 +13938454821 +13603541301 +18821039136 +13641832438 +13629042092 +13966461798 +15119520920 +13921797342 +18558470967 +18530494483 +15813472981 +15853271231 +18506046196 +13996167411 +18867306339 +15121099142 +18505301417 +15166000224 +13608738954 +13698639831 +13980520303 +15182426842 +18554452608 +13600230712 +13683093614 +15195088382 +13934175354 +13982723395 +18538897618 +13960709334 +13911919631 +18886656164 +15802411311 +18890814497 +15136953016 +18502399837 +13997671302 +18502486013 +13681931376 +15849657874 +18529546074 +13902508954 +13921934993 +18887022710 +18512277174 +15805513330 +13902684121 +13922687304 +15802983685 +18574857612 +13602706889 +15106884852 +15844587392 +15159293548 +13903636955 +13987565748 +15849308402 +13974519152 +18563050993 +13655719678 +15167226840 +15199348061 +18850219808 +13636668376 +18593826143 +18868491051 +18538746912 +18556919073 +18813895500 +18509318514 +18573452978 +18801018127 +15140722260 +13656637472 +18896402684 +15196404769 +15846524108 +13661420609 +13645901984 +15846688407 +15104491119 +13664251535 +13917735357 +18525941649 +15120370314 +13667577465 +13677706806 +15865874584 +15114617984 +18574731676 +18879308386 +13956042497 +13628234235 +13948962510 +18573261300 +13695916782 +15190772342 +18500718470 +13945440874 +18885648949 +13995231032 +15850129693 +13981509468 +18870064200 +18565471820 +18837566917 +18569522260 +15833439452 +13672725036 +13937060704 +18504343579 +15130898533 +18826014827 +18871348284 +13938415349 +18824749162 +18531576738 +13914312276 +13998622853 +15838527156 +15827195364 +18807240858 +13632092142 +13618081854 +18533962803 +18537147495 +15180501441 +13693648795 +15862196462 +15193230940 +18821350496 +15857371995 +15101993514 +15179407866 +13996928515 +18866192936 +13670978330 +13931458177 +13915390568 +18896399100 +18565595332 +15830796352 +15824898300 +15112547258 +13917716635 +13602482787 +18570397846 +18594916434 +18815236193 +13917253304 +15844897368 +15835427748 +18501591831 +18875470335 +13604971454 +13904369103 +13925183650 +15825399615 +18523123764 +15828849447 +13681645644 +13662390376 +15173752234 +15168856626 +18812029137 +13647369504 +13643052505 +15875303903 +18500493911 +13941209631 +13684480500 +15174818259 +15878328461 +13689981129 +15843024761 +18593786383 +18868864471 +18875168516 +13670866428 +15878949898 +15189407408 +15894504155 +18822393551 +13910639556 +18803523673 +18541444820 +15842611133 +15834334503 +13644914346 +13973485188 +13602203664 +18585185476 +15877664737 +15109847114 +15848604573 +15177282444 +18541231730 +18589546403 +15840838017 +15186951639 +13601801137 +18812282506 +13621813660 +15809956569 +15118753731 +18517554038 +18500013494 +13603641573 +15865585464 +18853518934 +15187098316 +13947665721 +18897533310 +15191073291 +18827459433 +13658555476 +13958604526 +18852300833 +15165977684 +18860024446 +15132240405 +15810796857 +13961840971 +18801483235 +18553261433 +18593673391 +18589539267 +15866390826 +15873057246 +15836540806 +15856030053 +18822616021 +18595589205 +18879729926 +15166614701 +13903953954 +15164311672 +13948507015 +18526315783 +13995223013 +13971773139 +13996511047 +13913939067 +13931275946 +15884834258 +18867713066 +13922728127 +18594031910 +13685132167 +15156731094 +18558374065 +15898177911 +18865451668 +18562582050 +15883187081 +15181043899 +13652578039 +15119875443 +13618524192 +18564064978 +13922808366 +18826799410 +15813328875 +15885923512 +15818123007 +15133410459 +13687887907 +18571086445 +15888589019 +13980114555 +18871160384 +15884629866 +13609843176 +15121266617 +18557277599 +13935067493 +13618684219 +15119337405 +18840517573 +15879358771 +13917968073 +18801862740 +13610249715 +18566199065 +15156347326 +15105387336 +13680892296 +18517011924 +18515837845 +18841859258 +18834192102 +15826385666 +15132755639 +18865856766 +15196224379 +13686816691 +18808818578 +13985822658 +13654538890 +15190851444 +15109173430 +13929031365 +13659578824 +18879958351 +18851825718 +18521521422 +15867773991 +15152764758 +15825297318 +18592902961 +13636673092 +18878584438 +18550015710 +13938164668 +18501416928 +13946744246 +18876150807 +15136736787 +18542290334 +18822806079 +18824418610 +18554834825 +13641699733 +18537907568 +15116496991 +18801615256 +18832686958 +18861110748 +13981749567 +13630296651 +13673655863 +15815814123 +18532656671 +13660371851 +18587082641 +13947394823 +15887447704 +15859100704 +15152545708 +13919086632 +18834607363 +18550805917 +18875879657 +15107715625 +18861715124 +18540752849 +13917729457 +15800297784 +15116707985 +13925531746 +13619403000 +18597057667 +13994361969 +15806148769 +15848218524 +15882218215 +18832463571 +18855685272 +13626653728 +15124647598 +13926593625 +15134239514 +18506222120 +15863320570 +15196457915 +13646749897 +15881656173 +13652292377 +13634784605 +13639766267 +18886221826 +18829841367 +13911989162 +15811561456 +13678240051 +18813085757 +18889420452 +13916950011 +18827752307 +15107224316 +18832379985 +15897921986 +15858687799 +15128137562 +13628050744 +13686020115 +18898585211 +18826032630 +13924888123 +13985211525 +18506480201 +18820236948 +18864219816 +13646085355 +13940524217 +13653294760 +13668823599 +13970977659 +15162111774 +18543299955 +15805902070 +13665040302 +18588505449 +13667674544 +15877313675 +15852294198 +13986387007 +15148044691 +18552579783 +18806679157 +15108973322 +13945337481 +18516327448 +13610053549 +13617592069 +13984922470 +13914763969 +15833878867 +15129121581 +15819328345 +18863570759 +15114042404 +18839897446 +18898517090 +15840720179 +13688598388 +18870454560 +18506518283 +18504423739 +18566536408 +18860696915 +13619700954 +18503212713 +15172417278 +18856985219 +13656947908 +13935454877 +18502237332 +13699068352 +18852583202 +15100323062 +18896555595 +13635975830 +13984864076 +18861169493 +15107296339 +13630407181 +13663412070 +18885866262 +18893507577 +13917596975 +18875898317 +18878271615 +13633077127 +18539836278 +15884730934 +13958010597 +13949370539 +15862431687 +15100809356 +13684786988 +15137975070 +15192226289 +18520627578 +13681718090 +15190948129 +15821052250 +13600370981 +13645101100 +18557192616 +15127230488 +15149280701 +18861562909 +18819629375 +18856153908 +18554410139 +15844076571 +15810447760 +15802562046 +18523761395 +13675880387 +15158217299 +13957235508 +18519385339 +18597183022 +13969333505 +18567217738 +18581230500 +13608512472 +15179007279 +15127395639 +18834018108 +13605844976 +15150828750 +18513582171 +15150746499 +13951079373 +15109580831 +18572770697 +15109468904 +15102788039 +13630332129 +13977956668 +13952879092 +15887407698 +18844542091 +15165417275 +13644681941 +18543732029 +15805453974 +13659703529 +15117821385 +18557052858 +15827645205 +18814584356 +13680781878 +13619029715 +15150957141 +13906073503 +18883550353 +18818413743 +15877679378 +15139998375 +13617934567 +15807927647 +18525023712 +15139361767 +13963779263 +18834563176 +18800007045 +18878062386 +15831272894 +13668325167 +18892144692 +15130014410 +15816333904 +18504430824 +13614489713 +15138192964 +18831637970 +15808667653 +15876012777 +18847593909 +15845550028 +15853487373 +15125524936 +15848335784 +18538525195 +15840119733 +18847872553 +13941878207 +18859836399 +13696802172 +18843379681 +15871653742 +13921311857 +13673606810 +18863183458 +13635576197 +15806696025 +15176535801 +15145887077 +18824972560 +13920791746 +13615775998 +18859599684 +15817300255 +15152276124 +18528697225 +18842899626 +13663319158 +18819409945 +18518709434 +13961296469 +15869365570 +15141310075 +13609264733 +18519673151 +18565802569 +15180880255 +18890032498 +18543999956 +15192987035 +18853880114 +13696890582 +15864148190 +15188419188 +18561806385 +13644283541 +18896677169 +15109029157 +18873664379 +15127149924 +18822478470 +15898579712 +13999886150 +15874315249 +18897876402 +13683395191 +13697828889 +15148894707 +15130949666 +15899394313 +13672255511 +18588407517 +15843825546 +13987533644 +18588593034 +15124555800 +15113906732 +15176548370 +15136391978 +15863420674 +15161780706 +15893345121 +15141259733 +15105550874 +15198634324 +15109237703 +15126890024 +18516536615 +15134849204 +13621900820 +13942018458 +18569806220 +18806658310 +13939364146 +13953280161 +13649599314 +15196812232 +15887644396 +15838475889 +13904440041 +18546717305 +18514630817 +15186810675 +13990355380 +15172546339 +15125749173 +18838748506 +18892120159 +18569343737 +18534771237 +13619314635 +13628113341 +18880313378 +13663806400 +18838991284 +15147820868 +18593487631 +13677062086 +15174686315 +13934723075 +15800927575 +18524701206 +15891546970 +18524388931 +13676241856 +13917132733 +18889133614 +18857953743 +13914495748 +15881867809 +15835434274 +18827422644 +15890847768 +13603027520 +18564489634 +13982690874 +13955855141 +13653082230 +13694401776 +18849383966 +13620672602 +15883155231 +15817009386 +15105027978 +18885467798 +15179107301 +13945161510 +15105988910 +15863665414 +18888337341 +18598843735 +18551533529 +18877265106 +13929584753 +15103856094 +15144591883 +18893356520 +18563873342 +13690131585 +13968421899 +18526904669 +15803079090 +15178695365 +15102579090 +13948385790 +18817557676 +18540733405 +18894070557 +15106256611 +13627053335 +13642730782 +13637139666 +15811594471 +18827249174 +13671313779 +18861786581 +13965489785 +15186674645 +13675894482 +18537159615 +15856487575 +13625365918 +13636140606 +13915634992 +18508550830 +15860530641 +15862452948 +15134182385 +15827348540 +18579279729 +18552220209 +13924944607 +15878504621 +18557673235 +18857822694 +18828450669 +18800053449 +13903149536 +18545973666 +15173648227 +15174915223 +15886234311 +13649997651 +15857873357 +13933931753 +13675827484 +15170122646 +15170202394 +18553202313 +15109456097 +18542775902 +13621143131 +13644178468 +18840049166 +18505469155 +18899885971 +15161174665 +13986238347 +15861430659 +18826093846 +15866416686 +13963834149 +18813895889 +18536575342 +13999430903 +15189728105 +13912719710 +15120938934 +18526927467 +15828804443 +15176703822 +18524803641 +13913623205 +13987716931 +15184340303 +13923451095 +13691619410 +13938544324 +18848967348 +15173366836 +18541207522 +15885295731 +18825182978 +15165690201 +18879811217 +15182334015 +13912863455 +18847075641 +18840819856 +13940703468 +15888771499 +15182020111 +13604062103 +18820038415 +15165204278 +15195521754 +15104673265 +15860145356 +18520107321 +13921277131 +13925120940 +13670889740 +13980195273 +18813535586 +13647351842 +13661351077 +18819491528 +18849009606 +18591885780 +15846878231 +18860044775 +18877595920 +13646144699 +18800671629 +18565029896 +15123656060 +13667620755 +18577706091 +15821195561 +13934038646 +13952381301 +13611049980 +18569562983 +18816146762 +18577381545 +15180680242 +13698739770 +13973914139 +15182830495 +18571611163 +15892249569 +15809627980 +15158288066 +15174989936 +18819888815 +15169669296 +13631318276 +18517557538 +15196452967 +13914185719 +18554099055 +13697326788 +18583864863 +18535381559 +15143989426 +13967281584 +18507421067 +15865188742 +15139342445 +13674398340 +13612587994 +18534090176 +13933717857 +18855920363 +18511942595 +15859823994 +13678654133 +18558287617 +13668513234 +18506520630 +13624083407 +15186653322 +15820915821 +13671241568 +13655383766 +18538278773 +18598823394 +13671098114 +18575215794 +13954975353 +18861836930 +18529488579 +15120120099 +13625183613 +15197841243 +13959866419 +13942737629 +18513843177 +15893071682 +13967973823 +18571855419 +15159754951 +13664450306 +18502369466 +18537205523 +15166524221 +15133203449 +18530712857 +18844993029 +13994955278 +13639714884 +13971860631 +18506688581 +18535030879 +13650940060 +15191211786 +15848738936 +13695272652 +15187219771 +18833168634 +18587656930 +13992749962 +13950715000 +18857234696 +13633507714 +13639500280 +13948196005 +13659325467 +18542310490 +13643508047 +15855068690 +18568346862 +18570404721 +18833258224 +15166717189 +18832324310 +15193056016 +15820882042 +15842631900 +13694350312 +13946690092 +13691138501 +18546226403 +15846029272 +18872990453 +15859162408 +18568811683 +13600936658 +13968305569 +15868113387 +15184718368 +13980056853 +18527902478 +13617895784 +18573889770 +15851123344 +13901111566 +18584733440 +18509404472 +15894779067 +15822721875 +15833170975 +15146244764 +15898796417 +15885462481 +18827021706 +15125590930 +18557642027 +15859277546 +13643614651 +18529754211 +18519179777 +13651977412 +15816143126 +13956652680 +18551813651 +13991197780 +13980998709 +15851493406 +15166553141 +18859568563 +15837566087 +18808963456 +15866612973 +18521500005 +13694918924 +18854330532 +13922938446 +13608813420 +15177048457 +18596908770 +13925995888 +18554127749 +15157706893 +15899949576 +15815972953 +18586359721 +18834049687 +13919762039 +13660040880 +15841008201 +13659569220 +13606847579 +18846455527 +15170236680 +18561379583 +18538114572 +15101865347 +15864155673 +15870572190 +18819302920 +15110765691 +18809440694 +13907919848 +15156886872 +13660934715 +18570986231 +18882197929 +13936613886 +15161471762 +13683620378 +13948226382 +15896580861 +15823687953 +18804881935 +13947960457 +18576763136 +13666661803 +13660685830 +13979561957 +15153294612 +13642969829 +15108628260 +18591258093 +18598466255 +13975401723 +15811125574 +18818092105 +15146801441 +13926802792 +15866436092 +13903530724 +13604504673 +18888854573 +18850695483 +18578899277 +18567909550 +18516648163 +13958506133 +13905398142 +13693081438 +15855346838 +13994608242 +15820822249 +13939335928 +13681486972 +18554117398 +13685731874 +18806955909 +13649916890 +13912136441 +18894107944 +18867793420 +13645214616 +13653765410 +13625297042 +18550887394 +13695059445 +15137309280 +13936997677 +15873501540 +13604232292 +15893957125 +13631120978 +13692892435 +15852670961 +15125449076 +18554069471 +18558595760 +15806792829 +18572470084 +15109208552 +15108809878 +18890676718 +13624945236 +13954432773 +13692509659 +18584673449 +15842217466 +18502596992 +15139842032 +13977401399 +15197735312 +18888155121 +15840965587 +13601191185 +18554754089 +13972692032 +15106235745 +18594621360 +15132942506 +15819993982 +18898540664 +15191398652 +15137172309 +13608135209 +13901384506 +18823177337 +15158327816 +18815972835 +13994444673 +18882519815 +18845841174 +15862391249 +15142475546 +15168494069 +15124783033 +18546404160 +18821086398 +13988898709 +18835894473 +15192285386 +15853401727 +18514531892 +18846917894 +13904436241 +18580440326 +18851093253 +13647491985 +13966575722 +18802928784 +15889589361 +18514940219 +18523406096 +15121228347 +15837395489 +18596595707 +13933742687 +18544289101 +18887711684 +18812792177 +13935488807 +13974324868 +13978761807 +15824365045 +18840770464 +18585227536 +15872565106 +13921834237 +13942134880 +13672729794 +13921782068 +15105023168 +18589209654 +13622095047 +18838880198 +18504264472 +15131297868 +13606444297 +18530428783 +18570348165 +18809706168 +15144628687 +18596239817 +15109572725 +15124985271 +18512023308 +18509708953 +18856513697 +15845083998 +15846015755 +13916704300 +13666555649 +18879716941 +18579304521 +15146975708 +15839905452 +18894169791 +13679273700 +15817637295 +18581145698 +13974896776 +13656626255 +18810332031 +15185461098 +18826002182 +13612951822 +13651275898 +18831275275 +18577207013 +15866380634 +13924104167 +13951358894 +18545947439 +15875282321 +13648701981 +18878712964 +15184893407 +13671915086 +18829583067 +18515898894 +13965416805 +15896270808 +18512202746 +15832839430 +15846596592 +15805515270 +15835345569 +18866137256 +18853035281 +15157240385 +13609720024 +13642628601 +18802878470 +15834287907 +13929116326 +15105019427 +15858664971 +13954236052 +13635419367 +18895947832 +13972914122 +18886185861 +18821981418 +13635476938 +13901426061 +18886492685 +18527999665 +13935591457 +18586694369 +18517801192 +18537466849 +15140752735 +15130680248 +13653920991 +18800243357 +18581934541 +15115253087 +13964682607 +15893378869 +13959094540 +18581149172 +18524139105 +15884647468 +18501381410 +18894799030 +15801479710 +18580514540 +18533842812 +18573585068 +18595099263 +15894516425 +15162242558 +18594746504 +15855094351 +13625578526 +18812149837 +13648471853 +18578555849 +18564996427 +13964727824 +15881986435 +15186884839 +18855833040 +18581912957 +13923818909 +18882049004 +18851317427 +18895412158 +13629743724 +15135246867 +18899593091 +13641948310 +18802859448 +13659461339 +15830858960 +13668107261 +13661992245 +15861797328 +13695436006 +13615670583 +13648669561 +13629806341 +15183579271 +13950906990 +15138944107 +15850000218 +13626213601 +15125275090 +13915288674 +18590785325 +18572832799 +13941149759 +13682268682 +13685231306 +18560164493 +15856307227 +13952337078 +18870885648 +18817388566 +13638960505 +18860675902 +13994054442 +13957173865 +18573542882 +18871942460 +13902837596 +15830111243 +13924272906 +13926565513 +13656861513 +13941278799 +15166944485 +18876023762 +13610922145 +13691280760 +15136219148 +18845204853 +15197888913 +18516456416 +18511433548 +13953233437 +18508210212 +18577441181 +13685360906 +13968467729 +13664486546 +13927996115 +18548402414 +18823065980 +18809987650 +13622003949 +15896089826 +13699227204 +13911393574 +13970089424 +15805340029 +15124781976 +13933326477 +15162714764 +15839610480 +15803388476 +15142917182 +15852308652 +13651576340 +13680959177 +15837896486 +13966837731 +15196830944 +13906960309 +18880702416 +15141931148 +13642085543 +15850272661 +15157424347 +18556381068 +15147762696 +18861829639 +15158008913 +18889165662 +13905745774 +15871870256 +13609455433 +18557861837 +15801588576 +15134204054 +18817756029 +18555987666 +18893064188 +18805132407 +15148773158 +15816958602 +18890262609 +18534854583 +15177151733 +18596551514 +13906105355 +15116344862 +15858531396 +15176531807 +15190713146 +13693682868 +18803834267 +13611577120 +18833897458 +13632225655 +18819680833 +13945962819 +15152918515 +15822764129 +13987967941 +13637629398 +13653703424 +13602185723 +15852625628 +13660318372 +15821106718 +15868536367 +13931671178 +15111241629 +18803713476 +13693468947 +15819031699 +15102177277 +13674039763 +18545117079 +15155284197 +18805827368 +13646203344 +13619540143 +15143770790 +15146163325 +15163918916 +15162576622 +18813111088 +13983193662 +18585300720 +13610966392 +13952003478 +18866120392 +15119549331 +13934337073 +18894373709 +18807673720 +15110630906 +18598496222 +15166206554 +13979350570 +15873816061 +13967601490 +15838073352 +18827553474 +15167481589 +18811436602 +15133160062 +13914716375 +18539836969 +13959771204 +13945460316 +15113985877 +18896070005 +13949574247 +13637346863 +13937461530 +13623799200 +18871762448 +13673921725 +18597530756 +13948685882 +18589939070 +13643903172 +15103202945 +18811414052 +15803735882 +18598687783 +15860293946 +13917301332 +18580517038 +13635401374 +15838278475 +18817255477 +13610576785 +15161904999 +13942402221 +18559008225 +15164814697 +18508550622 +18504874291 +18874874371 +15144558237 +15138681459 +18500826022 +18821532431 +13997161997 +15191684516 +13982138714 +18855301586 +13676477604 +18872983609 +18550147977 +13606294625 +13697574944 +13931293147 +15856529293 +15842529492 +18841842039 +13654057831 +15859407095 +18830637174 +18583293100 +13633744277 +13666943262 +18873652093 +13632066269 +15811386485 +18861174897 +13618321021 +15825187078 +15160437949 +13900731650 +18546925090 +18506079615 +15160051843 +13965546298 +18870538811 +18540513059 +18590062317 +18809948102 +13942426097 +15145188953 +15856126105 +18849138387 +18560690548 +15193043946 +18571036493 +13649797068 +15865010631 +18805632489 +15188166165 +18583238833 +18558057538 +18526844594 +15884746385 +18892574563 +15142271814 +13671359288 +18574493188 +13650622128 +18886220486 +15863593799 +18856179908 +15105176580 +18889781246 +13990718799 +15149259993 +13692071852 +15139049818 +18584549352 +13928035943 +18858382898 +13676108005 +15175585658 +15889921767 +18537582270 +15865367557 +15189161542 +15810287514 +18863913079 +15175399478 +13601953044 +18839065070 +18868207317 +18856566604 +18558778895 +13966734573 +13672670121 +18840462369 +13911295005 +18828913019 +13936439120 +18598838092 +18877848299 +13662036669 +13614651697 +13951514759 +18507741147 +13905720952 +13958738298 +13972501017 +13900007777 +15184891558 +13977130932 +18861683914 +15168046769 +13635817297 +18556092607 +13637674342 +18559429387 +18809054176 +18820120730 +15846215606 +13962069524 +13933276274 +13693928642 +18537908588 +13964386348 +18598846314 +13659762227 +13913999759 +18825909025 +18860957939 +18506580535 +13948848504 +13603675461 +13991801915 +13698718978 +18563262346 +18531559435 +18544456038 +15103508289 +13648719555 +18832869216 +13646304937 +13931355902 +18518825463 +13632039617 +18842229880 +18599185855 +18526149106 +15126293164 +13690624188 +13675883509 +15895434215 +13937177379 +18525424261 +18516218745 +18889834205 +13631155276 +15802588130 +18888546597 +18579537370 +15122299697 +15890641799 +15846001403 +13925468594 +15194784333 +13905629967 +18596604947 +13601029242 +13673046889 +15838807920 +15843880098 +15194986094 +15863428072 +15888070004 +13613156943 +15170635032 +15876144262 +18541400307 +18521978938 +15198685607 +13901331030 +15112497599 +13615661344 +15802710081 +13634678635 +13680179654 +13924264777 +15131782361 +15196031498 +15812513945 +18894957631 +18566925487 +15826289694 +13996011308 +15824019847 +18828272603 +15108244264 +13917003468 +13682727585 +13996653649 +15815463325 +13608004849 +15110410087 +18529603178 +18562187823 +18516905566 +18894872162 +15841396317 +15101581184 +18840461625 +18536354595 +13927054029 +13640804225 +13619533554 +13991972712 +13696594620 +15825686278 +15103641727 +13625861459 +13906666388 +13988479954 +13965200202 +13623500341 +18880529480 +13651917017 +18861132865 +18544523862 +18821458516 +13957846480 +15148531829 +13648686314 +18854836390 +13662427269 +15844856688 +13694384063 +18810280767 +18508225859 +18808707012 +13633485757 +18503176227 +18570457355 +18591667278 +15137044496 +15128437874 +13603378068 +18823652672 +15145110194 +13971759214 +15873234232 +13681464491 +13934861237 +15821023756 +13965743932 +18591757735 +18544854647 +15857912229 +15894503726 +18859248924 +18882151426 +13966450480 +15175580759 +18805558974 +13932538928 +15190229510 +18532724111 +18596842123 +13914751663 +13602901079 +15811571754 +18530888109 +13966857967 +15814991161 +15855962466 +15852265057 +15193214545 +15139870007 +15826662863 +13694001624 +13655028656 +18569871413 +13653914831 +15191009385 +15199671214 +18891249777 +13646500970 +13905175194 +18527634416 +13634920081 +15825913560 +18819700097 +13901128562 +15137855444 +15891903747 +18871865291 +13688165250 +18825664484 +18540063541 +18807233598 +13673648975 +13606280906 +18831814358 +18599786507 +18592534039 +13601565616 +15124877006 +13947688362 +13947731396 +18572654988 +18546991192 +13950079031 +13987803064 +15108961294 +13972706407 +15101111660 +15820516575 +13914401838 +18889958003 +15190947673 +13907971547 +13919655200 +18840661875 +18526854537 +18525527892 +15888634508 +13673528860 +13650074636 +13699132061 +15807646230 +15892670616 +15156060472 +18567703099 +15863354952 +18582450759 +15187124325 +13605398085 +13638252887 +18858645791 +18586007120 +13942092052 +18520587556 +13960947055 +15803971605 +15816005513 +13997206782 +15173937162 +18872139933 +15192122800 +18578737988 +13696429778 +15873851294 +18817723763 +15822206867 +18847830521 +13988290692 +13948911095 +18555142428 +15885837531 +18868613961 +18577294263 +15125407393 +13612820387 +18879185138 +15848930464 +18824405088 +15816092880 +13921434766 +13972361723 +13670005769 +18582165607 +18836174032 +15851949259 +13905855897 +13625297409 +15857715510 +18562273048 +15199759883 +15187718441 +18514293542 +15877332760 +18516059057 +13626136024 +18858758256 +13647721912 +15179972419 +18821228857 +18580511359 +18886197949 +18507925853 +13979296504 +13665719333 +15108438807 +18579247740 +18558978471 +13641051941 +15857571860 +15145182693 +18867149720 +18501997348 +15834404922 +15107402028 +18863443084 +15889089309 +13642557958 +13656206999 +15824698025 +13658281635 +18805088206 +13617291802 +18569192736 +15164077127 +13925013664 +13684200265 +18513244539 +18501905745 +18519564482 +15163560398 +13971053978 +18590621360 +13911338917 +15852423555 +13912225723 +15163076735 +15842777006 +15884289468 +18878556919 +18874430490 +15189246007 +18864246008 +18560217805 +13981304076 +13929648952 +18898540734 +13636404202 +13959784728 +18837372690 +18534317617 +15112846895 +13635860053 +18596019668 +18854066117 +13912180696 +13670293195 +13916602746 +18571823842 +13992441278 +13960571800 +18885882064 +13620670687 +13629286726 +15169993631 +13922801523 +13908444528 +15842863656 +13609781208 +18596139414 +18553705617 +13681671936 +15870828906 +18821897678 +13917509881 +15180501674 +15173227376 +13996234218 +13653239592 +18803915328 +13610735260 +13633338907 +13933590246 +13654424573 +15830424866 +15872985621 +18566740200 +13607327064 +18811639858 +18887921847 +18515552289 +13698627483 +15185068075 +13988028426 +15875393598 +13998978762 +18803657502 +15137904870 +13949233865 +18887323305 +18851915157 +18579840862 +13643452729 +18897435155 +18550580329 +15896512408 +13941450466 +15874405753 +18588461618 +15888014977 +18579693651 +15117780559 +13657602854 +15839374938 +15801249567 +13919682385 +15890457944 +13629737580 +18844668648 +18824080204 +15862339908 +13674322583 +15894126418 +15156244068 +13646176140 +18802833716 +15197579779 +18853178465 +15840265518 +18505289399 +15175278402 +18505577850 +13979569798 +13622518416 +13663108608 +13977964095 +18803948193 +15856757463 +13959684508 +13699095287 +18556879324 +15129627361 +18565381891 +18843006556 +15159740295 +15156204025 +13601536776 +13681780156 +18815144909 +13906440591 +18877684802 +18559534300 +13959343424 +18505108134 +15838254755 +13901925587 +15149952022 +13631490338 +15170522050 +13979302337 +18520625284 +18529696304 +13617862019 +15893465888 +13616338702 +15171244738 +18507034202 +13907260279 +15105859836 +13921980839 +15885412440 +13926145254 +15840124154 +13905552252 +15100725543 +15198238702 +15845478281 +13691464928 +13931487936 +13960099254 +13972023603 +18807513221 +15834327381 +15137722957 +13663062017 +18531641722 +18839763279 +15883285012 +13613936061 +15142281923 +18508823905 +13647435975 +13629415910 +15819257694 +13953412268 +13925443223 +13655370573 +13652461685 +18528751367 +15808269809 +13974731199 +15806404988 +15869519706 +15134999991 +18837979209 +18592880084 +13961099248 +13652929807 +13642525067 +13683150122 +18869810239 +13670302719 +13957389316 +18858747939 +15806398391 +13669524705 +13696787406 +13613323631 +13686267053 +13923710198 +18871008872 +15187251388 +13984338688 +13667051097 +13686638724 +18876983330 +18576133076 +13921300046 +18894769558 +13685540786 +18514875902 +15826109472 +15112981950 +15810281051 +15126937553 +15193673247 +18584593006 +15881605671 +13909861614 +18897302118 +13618812483 +13668289535 +18570716820 +18855100467 +15147944218 +15164268458 +18892302036 +13941326731 +13638833499 +13631200669 +15168145236 +15199949385 +13958550549 +13681910661 +15190027110 +18842912417 +15114148951 +13608391639 +18856429034 +15170898054 +13612236666 +18562442808 +18869929837 +15177771387 +18855272185 +18830425260 +18845495348 +18547554662 +15807902096 +15122941504 +18531621160 +18547916474 +15873786159 +18575618575 +15877807419 +15809116098 +15196861589 +15874999559 +15167320067 +15872414231 +18802437619 +13936854271 +15841537258 +18864523359 +18580200866 +13912419453 +18503981393 +13905216650 +18823512084 +13672527891 +15142973793 +15189709029 +18567954528 +13924456188 +15168050741 +15136815958 +18806109170 +18511781750 +13918577570 +13950589036 +15863641421 +15889840980 +18856495664 +18883074379 +15107216985 +15881432170 +13910020037 +13680467799 +13611271350 +18841022236 +15898629533 +13647301434 +13919450968 +15827339414 +15854508952 +18505446728 +18586982946 +13627288608 +18826448009 +18836864616 +15820867158 +18879811735 +13971439028 +15157338819 +15173492313 +15892737935 +13919281636 +13619710865 +18857654992 +18539450583 +13639978819 +18822103089 +13946234655 +13994563383 +18868952515 +13653297800 +13924499740 +13636028764 +13985700837 +15877080254 +18864926788 +13951469221 +13919619319 +18892108727 +18889263188 +13683313270 +18822448417 +15197854351 +18832422066 +15859868640 +15145557436 +15890329128 +18884529675 +18822061239 +18513723650 +18895365653 +13998430361 +18566281241 +15156679150 +18558876601 +15877540449 +18822996722 +18515801130 +18516501546 +15872774291 +15803284191 +13631918547 +15146463097 +15187836618 +13603619736 +18548117261 +18540007069 +15143179678 +15864369478 +18869147319 +15898377544 +18810349818 +18816083480 +18863309135 +13677747619 +13677891492 +18588588139 +15885176484 +18515579995 +18564493998 +18596594795 +13632123691 +18855555642 +13645279606 +13906661044 +13976027389 +18581825718 +15838222832 +15194519560 +13954282435 +13665482961 +15109279536 +15155848759 +18571805705 +13659075489 +15862657650 +15892409278 +18570208121 +15158840783 +18558074644 +13949661553 +13996360318 +15134918389 +18564640564 +13911918775 +15122909031 +18837620030 +13951608380 +13939864956 +13652364223 +13986036282 +13972121190 +18505914138 +13609251286 +13946064812 +18577897470 +18537467807 +18508193504 +15899744029 +15111773684 +18544242049 +13914080056 +13600561960 +18854685306 +13627943892 +18567316559 +18822255609 +13945347035 +13996723041 +15133714528 +15104273895 +18555277722 +13657618037 +18526837231 +18875882305 +18836193765 +13995977585 +15834927748 +13979033810 +13655588411 +15874738885 +18597783871 +13952508819 +15859621429 +18894978260 +13910663005 +13664451863 +18513797554 +18553274513 +18554814715 +18506821055 +13938537548 +18805942976 +18883388252 +18893180393 +15816426819 +13949543853 +13933569975 +18832977718 +13979158669 +15137134954 +13974907828 +15171090652 +13958450953 +15114114005 +18544510874 +18564558974 +15840379317 +15105409495 +13610739541 +15186766934 +13662122414 +15164707327 +13666067799 +18561240548 +13665623781 +18851585547 +15893815574 +15124863673 +18590418243 +18545322645 +13628426111 +18805163519 +15162309919 +15103440115 +15861661949 +18571512815 +15830982729 +15117131916 +15164229363 +18865738984 +13688693176 +15865818264 +15881957597 +15895864760 +13644275473 +13905930392 +13638983408 +13933963258 +13987509021 +18873976898 +13620824876 +18839006312 +15139567842 +13987753471 +15886260754 +15127217944 +13651631837 +15875541866 +15882139781 +15883945535 +18899030020 +13969419896 +18810043002 +13919717252 +18822948363 +15830689851 +13959868791 +18813831513 +18590300424 +18571323285 +15183426731 +13614051376 +18508270851 +18846490108 +15839798164 +13947132526 +13677465135 +18597639958 +15129638808 +15894779952 +13991153941 +13987148058 +18594300126 +18858782122 +18898650624 +18810002045 +18503798271 +13624623977 +18862659226 +15179040258 +18886448659 +18883076049 +18876299666 +13697393039 +15876838770 +15162969383 +18810638981 +15197829470 +18882303370 +15128028105 +15842144143 +15854813729 +13663344376 +18872720221 +13669399735 +18837675147 +15852058759 +18562996721 +13635707787 +18820261626 +15839644945 +18855985779 +13906344082 +18513534797 +18875895230 +18512924738 +13688192531 +15851197334 +18590662070 +18844056190 +13647333265 +15837666062 +18882009916 +13992623070 +15143696048 +13642802903 +15169157317 +13680485843 +13907248194 +18855359091 +13990496381 +13686613289 +15159580940 +18512678271 +15885528852 +13659699494 +13604520968 +18820161492 +18512400283 +13941513835 +15887786966 +13696531355 +18865655812 +13623863740 +18525521885 +18516420163 +13967071695 +13955566781 +13617268015 +13696692163 +18547799855 +13632633793 +15892338031 +18541118344 +13629620432 +18870625827 +13937663446 +15119742642 +15870853009 +18512409475 +13600528846 +13654854951 +15144269974 +15819261634 +15833252097 +18873055412 +18834761095 +13626080186 +18842140858 +13625337661 +18811934849 +18502249788 +18594855369 +15163679406 +15143859816 +15141791453 +13995896093 +13991301546 +18576304113 +13939595120 +15876810588 +13994112410 +13928277120 +18883017349 +13982190216 +15132022077 +18819253398 +18874427807 +13637378257 +15819647881 +15861257948 +18897433942 +13937154372 +15152264302 +13667812117 +15128309733 +18846892433 +15104937618 +13905077335 +13987287158 +18578906488 +13682656693 +15821783147 +15180352198 +13913834837 +13638145941 +18567606787 +15156872793 +18822672813 +18574872095 +13684476123 +13982898282 +18800434751 +18822797744 +18838370033 +15145752393 +13904098089 +15194370482 +18553559651 +15132248007 +13664869183 +13955245181 +18509244915 +13915403170 +18889242989 +18825216624 +18521324457 +18533030435 +18872409208 +13917484555 +13653137399 +18587373011 +18862247917 +13695673341 +18525425039 +18599937531 +15864300085 +18578174951 +15893019749 +18507053610 +18553267628 +15175512654 +13642477258 +18802677627 +15108475117 +13676446320 +18817058239 +18892027889 +18857146099 +13940624135 +18577285295 +13984238548 +15119948799 +18885694421 +13656684212 +13681697743 +13678201449 +18874516497 +18829050182 +18873251082 +15176007944 +18591790614 +18811002425 +15883271428 +18804141717 +18858074078 +13696486309 +13622746104 +15199730588 +15851740539 +18512597667 +13955714162 +13988330844 +18805124331 +13698414070 +13983921796 +18520999315 +18532712573 +13933142624 +15897816125 +15863292298 +15867622579 +13655609598 +13611734764 +15140016329 +13973595747 +15872365297 +18820040729 +18840727259 +18546071275 +15149656266 +18553536283 +13925162329 +18883867158 +15810619297 +13938636334 +13611479413 +18831905395 +13672992710 +13649061938 +18812318610 +18860668795 +13602996929 +18844978857 +15867250960 +18837671775 +13933707042 +15174977502 +15847545652 +18546062639 +15822328806 +13993774607 +15877941644 +13688892394 +18514378243 +13951333051 +18547378062 +13639411819 +13912852684 +15871690357 +13919027771 +15167283453 +18849954934 +15812271551 +15894178671 +13918838701 +13665633716 +18556022712 +18570575563 +18893425865 +13649087267 +13686612124 +13678866521 +18560298413 +15106486197 +18544099392 +18520491984 +18500344694 +13946020526 +13943458803 +13987853757 +13919662848 +18814641646 +18811017844 +15847313977 +13611774201 +13654714956 +13681084940 +13947862458 +13632028970 +13622469960 +18588914851 +18820681105 +18559814045 +18890818932 +18835379615 +13900684294 +13990720696 +18567976071 +18891070596 +13651942010 +13903245800 +15856324327 +15877986740 +18532122510 +13918228463 +15877668959 +15151767916 +15134481736 +13625476781 +18503177897 +15187348968 +18541047133 +13943069061 +18554600542 +18516066481 +18899110051 +18833276577 +13692455323 +15891407714 +13617749893 +18810225762 +15101385028 +13968583702 +15111706204 +18523897965 +18552082332 +15845787857 +15143778437 +18827234639 +13974853635 +13915132583 +18513955555 +18880395930 +15804067164 +13988170757 +13675170584 +15144258355 +13661324071 +13921367706 +18827540200 +18859038821 +13967310786 +15138100129 +18845375420 +18895198508 +18591524925 +13957257476 +18543716286 +13918433862 +18824370467 +13685134625 +13660520473 +13657855152 +15854912699 +15806385811 +15119175352 +13644807523 +18514624936 +13688853842 +13654146753 +13943761845 +15157889402 +15183601930 +15830403891 +15828570766 +13641425057 +15163251741 +18552603362 +15139313397 +18891868221 +18588839383 +15121526933 +18537959670 +13692391203 +18851114091 +18548363362 +15102526519 +13624269205 +13950343745 +15874123306 +18510105614 +15134000926 +13697687087 +18594972949 +15147336430 +13680820275 +15162772675 +15822666489 +15116346359 +18842889851 +13923529252 +15860054948 +13645567755 +15891293990 +18837597058 +15809221681 +13610377530 +13967138658 +18522926281 +13980737558 +18522260278 +15892729448 +15115905558 +13634431249 +13903048172 +18841416579 +15857925622 +13644598097 +18854971206 +18553175594 +18806439541 +15117758690 +15135334234 +18525170846 +18873045825 +13924459409 +18872353840 +18849631874 +18582644461 +18575122091 +13699737971 +13975920789 +18819769279 +15126732580 +18875104861 +18574074955 +13989851889 +15865176901 +13634787207 +18569490879 +13657203044 +15151135551 +13656820953 +13644154758 +15806706750 +18512374519 +18563457871 +15189430560 +15880509736 +18830180495 +15826306222 +13695589052 +15170329263 +13667238627 +15825645521 +18874864753 +13908102980 +18591719701 +18802953368 +18804908147 +15169087848 +18898586347 +15817807265 +15863504884 +18854668436 +13647995071 +13689541542 +13653452875 +13938627307 +18836733339 +15842834065 +15869716808 +18573607100 +13945041858 +18563873787 +15826026929 +18579670212 +15185668100 +13940590385 +15164738267 +15187882787 +18549779658 +13910373116 +18561038933 +13996894197 +13916003990 +15178394502 +15864485936 +13959597889 +13636198569 +15146518993 +15853824539 +15868822863 +18875652049 +18545363662 +13635147304 +15168131974 +15824078758 +13999233979 +13620152393 +13930145637 +13934110977 +15857874472 +18538928990 +13698323601 +13626872862 +15195755047 +15810206672 +13939620956 +15187295158 +13661582607 +13991417024 +18883240909 +15170773999 +13672521206 +15886275952 +13904165687 +15826719386 +18517415905 +18551426988 +18820555248 +15870631125 +13649306329 +15860831885 +18548341951 +15180546441 +15844555074 +18836804500 +18853121987 +15858055442 +13603963936 +15807747059 +18800979019 +13985361903 +13676299203 +13908212952 +15197002258 +13939191980 +18845682122 +15182157258 +13695026582 +18896277062 +15812305354 +18852871380 +15167762416 +18523100356 +18825639213 +18586755311 +15124416848 +15141246632 +15878314767 +13608002587 +15874973995 +15102538317 +13967176649 +18544813826 +13933981359 +15182295470 +13656992900 +18881944958 +18525019707 +13616999104 +18520958708 +15862117546 +13654262426 +15833302227 +15139254110 +13605231086 +15162638120 +15843189070 +13671239199 +13915219976 +18593721928 +18894356853 +15131939999 +13660186424 +15164610349 +15806283611 +15884701744 +13620666331 +18502325575 +15874456679 +13671241228 +15803063554 +15895399037 +15847405032 +13962548952 +15113030602 +15811575879 +18833248898 +18568245004 +13909068966 +18831042774 +15144205732 +18552107749 +15874389983 +15159982588 +18548713186 +15840315921 +15179199262 +15197407024 +13629886962 +15836541262 +18509243116 +13947032752 +15839367588 +15115224422 +13681052363 +15174275931 +13999120017 +13976899849 +15196314385 +18870631818 +18509812537 +18826035147 +15893177602 +13950919450 +15818238931 +13609220091 +15896994903 +13660688519 +15879887293 +15844841435 +13908994545 +18509071534 +15187588861 +13903500809 +13999400988 +15159263586 +18877866012 +15845772758 +18580385514 +13618700863 +18523371210 +13963351464 +15106252196 +13616222684 +18895018575 +18511738300 +18888550914 +15880629922 +13611847646 +15863274482 +13686885498 +18827248940 +18839562447 +13664780316 +18876993841 +13987806959 +15183161435 +15865905562 +15802772761 +15825944574 +15888874221 +13678973971 +15805060433 +13948835577 +15173391159 +18544040973 +13600283950 +13694660377 +18893920310 +18887751155 +15121806484 +15887952188 +13671363771 +15111957605 +15168171297 +13613228426 +13615775844 +18567308340 +13966503080 +13986354075 +15875802242 +15116315541 +15882336966 +13625692901 +18552780100 +18857647651 +13923865518 +18876706513 +13942972092 +13633223679 +15867951884 +18546042790 +13670632570 +13608339375 +15164963565 +15102328340 +13997028986 +18566529488 +13995078048 +15895350646 +18855257361 +13688234368 +15876071292 +13669484080 +13920867815 +13616571877 +18561945840 +13999290701 +15129207639 +15898115673 +15125310094 +15864587922 +13958401364 +18878960151 +13638240872 +15168606148 +18563101191 +13698834925 +18874173104 +13979691883 +13927019803 +13950937547 +13620443669 +13651302079 +15805019301 +13915994255 +13945413447 +15175028004 +18510031573 +13939764794 +13654557866 +15899420500 +18504640546 +15839936687 +18859862208 +13900048209 +18562901583 +15163721372 +18571995958 +13679343346 +13695417797 +15190867441 +18804957080 +18500944488 +13946892196 +15836556748 +18568072080 +18572429822 +18513357170 +13698138163 +18570016094 +18874272082 +18889963206 +15880415337 +13986617332 +15147480108 +18585151532 +15159013085 +18859976637 +13676721383 +15135846665 +13957026935 +18832456997 +15818753934 +18531350953 +15828619181 +15871274580 +15868701468 +13920010112 +18839982009 +15835871045 +18501852264 +15844387242 +13920037518 +18511167824 +13602938261 +13938281934 +13682053779 +15870658036 +13946458288 +18597092376 +15891447904 +15172245907 +15152425920 +18547644385 +18513857551 +15138770478 +13928565497 +13982513656 +18586937498 +15114780674 +13610265814 +18869094305 +15169902849 +13652870913 +13938573339 +15164800459 +18580681881 +18519658847 +13965268735 +18851467605 +13977747783 +18598047276 +13613819729 +18808768509 +15128116377 +15123829074 +13662448877 +15170253956 +15826203736 +15161686996 +13647115974 +18866466446 +15179383879 +18556085097 +18888954092 +13679327141 +18576580846 +13945612644 +13647277679 +15182799202 +15803529559 +15197210456 +13628948758 +15862915467 +15898978569 +13638629146 +18523074806 +13922680412 +13625618114 +18598316961 +15126680271 +13695761113 +13986828147 +13603940269 +13670797045 +13969042201 +18552980224 +15192473278 +18850411820 +13673362531 +15132097038 +13613305966 +15143441883 +18512728764 +13648594200 +13623023027 +15138014745 +13666254303 +13949361889 +13685622513 +18509467061 +18527233850 +13996516604 +13600100545 +13660424699 +15188804535 +15869642209 +13648966350 +18857860462 +15175808827 +18527456312 +13620101301 +13678174245 +18874247320 +18588483308 +15889809936 +13995285913 +13686679796 +18890431695 +18506672840 +13699611533 +18541712399 +13699705558 +15137098273 +18557203860 +15112491564 +15152416751 +18878156376 +15196477363 +13604986586 +15838771963 +13927281419 +18531529979 +15891315944 +15874701751 +15860304151 +13935301138 +18516530467 +13998581361 +13917325589 +13952519687 +13655006395 +15121369908 +15183660310 +15142419373 +13936887936 +18846936842 +13628576471 +15859148157 +15837286378 +18853149826 +13694584748 +13622356850 +18819374667 +13671977347 +18897227728 +15171525998 +15835930506 +18831473180 +15130641583 +13661577958 +15121643368 +18815953421 +18876838453 +15169992753 +18532667602 +13615843958 +15195663043 +18598869278 +13638397425 +13651052280 +18562149447 +15813852974 +13620186528 +15127428210 +13672370131 +13610963302 +15199973590 +18572202662 +15809860046 +18842853664 +13636998122 +18821967056 +18539324980 +15849356292 +18564287441 +18577874495 +13952344320 +15870547184 +15186591392 +15874336038 +15873764775 +18529754203 +13696232227 +13639458062 +13936193219 +18856389949 +18876027814 +15843925825 +13615370986 +15143916114 +15188870926 +15121839491 +13983406937 +13638912037 +13684998140 +18599326609 +15893768672 +15881962523 +13934298040 +13664438964 +15896751095 +15120010179 +15188817770 +15120690735 +18873618494 +18832265148 +18895821870 +15116650906 +15884806934 +18525651336 +18811657903 +15832463744 +18540989885 +13929701855 +13977213985 +18814148050 +13600395354 +18826860085 +18848983785 +13902187228 +18522668592 +15103632011 +13959881439 +18811838717 +13679362619 +13630100524 +15877059141 +13684913933 +18581439492 +15109179188 +18584175315 +15876319466 +13975357553 +18558606351 +13682401142 +13699005314 +18869392144 +15810629936 +15141713768 +13929532677 +18573381340 +18545176041 +13980626363 +13919997630 +13920299368 +18508713749 +13686005739 +18840635086 +13936051455 +15866750311 +13603698239 +13695402869 +18849501517 +18812634974 +18526338916 +18899478750 +13675748587 +15860760818 +13955596707 +18572133937 +18571889595 +13906812197 +13973778407 +13612742444 +13623393669 +18548167154 +13681440655 +15193554581 +15157343075 +13608980677 +13609506494 +13694137958 +18573729038 +15844646706 +18589302406 +15110364158 +13647539249 +15190150466 +18833343102 +15846981255 +18585439317 +18570791693 +15175926679 +13655724655 +18592416182 +15166774683 +15182681391 +18896975021 +18540440081 +13629174667 +18504627071 +18561651500 +18559062180 +15889438534 +13924688427 +13661961824 +18880574748 +13693725833 +15899333480 +15890195439 +18801167345 +13994939960 +15883843391 +18508595472 +18521059763 +15864152025 +18555084460 +13935790731 +15110491599 +15169246807 +18520304975 +13964324535 +18583573370 +13955976016 +13645595300 +18842238098 +15106242720 +13941564072 +13601154622 +15805395460 +15817270398 +13939751996 +15892914327 +13952668450 +15806225222 +13919875109 +18820197370 +18520839347 +18895899705 +13949789768 +18834001508 +18507665113 +18866275116 +18879428714 +13694052234 +18814000555 +18867230740 +13687972342 +13979037536 +13668695611 +18832165880 +15832951824 +15190928438 +18584723775 +15128172017 +13642966194 +18821929412 +15172188510 +13670250079 +18572693567 +18866834394 +18887794243 +13931181101 +13684923048 +13926269939 +15831622909 +15107467477 +15134866491 +13966709146 +18534249902 +18878962294 +15813312469 +13937788858 +13984437675 +18853066329 +15104799417 +15866712094 +13609856064 +15845308793 +13653602773 +18593834363 +13678911662 +18843214981 +15810513805 +15174154935 +13674991770 +15889851473 +18598486733 +15160140599 +13619099330 +13679353053 +18882573204 +15170462142 +15153991031 +15176223227 +18883187467 +18567178107 +13688234850 +15834452865 +18895921578 +15837872263 +13690588471 +13629924168 +15162704956 +15872200515 +15836567466 +18599665362 +15812329845 +15129307294 +13633203159 +13977249459 +13962048786 +13634304207 +13900938581 +15100544792 +13601668511 +18896069829 +13927543205 +13664466889 +18876180827 +18519069917 +13644178261 +18897676402 +15888212395 +18898767575 +15842935578 +15119522453 +18835307434 +18582624476 +15886242529 +18875245730 +13914900049 +15819447603 +13639010826 +15865581322 +15117842213 +13640875404 +15119159577 +13967161679 +15109201594 +15873594576 +13664724849 +18812364311 +15895604969 +15182721870 +13657900596 +18844738967 +18831085421 +13636977557 +13689706854 +18540588537 +15859121598 +15848451882 +18872821305 +15892051200 +13943361079 +18865405684 +13972951930 +13954151666 +15177903267 +18538297533 +15156884109 +15184306342 +15875083577 +15845227489 +13926904730 +15868641392 +13651188215 +18532349294 +15190047158 +15847098290 +13936542157 +18858751973 +15132670657 +15886614540 +18522669291 +18558783546 +18870904976 +13617940536 +18588166000 +13687544203 +15820332839 +13992510806 +15166249704 +15128980911 +15806928044 +18826144541 +13665526462 +13612095262 +18852583596 +18863909074 +13683458609 +18877577685 +18858386673 +15814299440 +13944912552 +15180918835 +18512678759 +13604361350 +15187748194 +15877032431 +15189203691 +18506199977 +15888671380 +18864709153 +18559167532 +18550293369 +13634944264 +18847990338 +15830843034 +18815641225 +15836745796 +18520650890 +15856471867 +15842889440 +13900972912 +18560455371 +18865625318 +13955456932 +15145458428 +13980868198 +15806718696 +18512702231 +13971160636 +18808660363 +15172120047 +15102850742 +13640491653 +13979083405 +15870404578 +13966500349 +15132696848 +13960409725 +15828174854 +18858079132 +15193823472 +18876306235 +18897729268 +13633054050 +18803302294 +15157016796 +13910977733 +18592006262 +18531001920 +13684848564 +15195969326 +15849019733 +18827438251 +13682288657 +15856375914 +18852509518 +18549497407 +18566769064 +15180613945 +13698209164 +13925269628 +15103574469 +18886169446 +18567765516 +15196167492 +15117364706 +18596702118 +18827497455 +13626860707 +18599734019 +15119104584 +13688793524 +15140408537 +13967912364 +18555337791 +18859260759 +13602349867 +15882349007 +13934179995 +18516073780 +13601530026 +18584686698 +18533111256 +18809073678 +13636291643 +18500069584 +13624479425 +13672139212 +15866921329 +15189385948 +18859625547 +18813602779 +15141048129 +18847977932 +18864000533 +18809565119 +15879660738 +13913040418 +18832723573 +15194785845 +13991531948 +13610966541 +18504372754 +18567012055 +18539878399 +13606702434 +18831444820 +18867218715 +13950652428 +13921594099 +13929113424 +13979248454 +13968234533 +13625595484 +18528221390 +15827729360 +15118333276 +13655297848 +15180046903 +15143594049 +13937315129 +15183444709 +15822424327 +18539700956 +18567680589 +15148854115 +15820043345 +15835873637 +15891384474 +15864637697 +13966985063 +13617575183 +18843414358 +15836947284 +13986886732 +15853766158 +18838433824 +18854121339 +13628131757 +15175720963 +13993610555 +15110746205 +13971432833 +13949875394 +18578585695 +18562536260 +15142411130 +13904885604 +18535619579 +13680461984 +18868419270 +15837717554 +13903202393 +15832003559 +13649675956 +18819950719 +13679803597 +13960935322 +18837002571 +18579448782 +18829212419 +18589972962 +13676647807 +15153413799 +18888718693 +13654880061 +18598002625 +18516342627 +13974687831 +18830916435 +15113955052 +15876733551 +18503895712 +18869763639 +18800732900 +15137596572 +18552167139 +18896092496 +13951867353 +18826774315 +15189510318 +18868378087 +18541218644 +18561994560 +15135306715 +15189332557 +13916492021 +18877849080 +13954205539 +13695906340 +13903288524 +13681608136 +15193687582 +13655604633 +15811381956 +18817811076 +18837538947 +18895429524 +18526877785 +15144661483 +15833817748 +13609557062 +13657553746 +13939985084 +15829217961 +15800674675 +13661012331 +13617365342 +18804100380 +15836634157 +15171486263 +13624366967 +15808729909 +13974743485 +13914429136 +15129921246 +13914145295 +18590099606 +18846828672 +18876427935 +15189991181 +18865672167 +15872819663 +15874736348 +18871003079 +15129111119 +18540544106 +15888071715 +13697161305 +13916957616 +13943800980 +15112057440 +18526319796 +13665668060 +18874633408 +13690600570 +15108527010 +18572258369 +18571972386 +15864638494 +13981243233 +18561609756 +15866983201 +15196409347 +15175369011 +18851986363 +15836622917 +18879316792 +13674600615 +13635860725 +13609455979 +15872403888 +13634016548 +15178261103 +13610502595 +15199987384 +13924316451 +13912286316 +18813576638 +18820847774 +15889369509 +15887979858 +18506720320 +13941534967 +18527924311 +13987064272 +18889915092 +18845046921 +15880962074 +18576849888 +15867276927 +15840447327 +15151319670 +18504119555 +15197121751 +18555067278 +15127076218 +18560602717 +18830712190 +18578018361 +18868503751 +13964686589 +18895489100 +13905995923 +18896963333 +13654398205 +15868331426 +18565986373 +13909613663 +15170569696 +13968955684 +18578256720 +13922151373 +15876160239 +15180128318 +15877242314 +15188363664 +18557273666 +18848238186 +13980804858 +18539941972 +15111357717 +18548952452 +18899947366 +13910638140 +15850317334 +13612893785 +13995200424 +15877080098 +18502556774 +15801614969 +18586121602 +15870457052 +15863319367 +15817354904 +15176784007 +15818671285 +15801706093 +18515730496 +13954937771 +18551881439 +18546492796 +18829847688 +15199432784 +15141284333 +15854450090 +15188728241 +15120968300 +18818095322 +18544436340 +13956228462 +18804107782 +18871493412 +13611531672 +13928722008 +15815443496 +13621701852 +18517803335 +15886654537 +18588455196 +15831911773 +18581374056 +13911744668 +15882041130 +15183661113 +18537910712 +15198510173 +18508730373 +15815132206 +18555406775 +13627593847 +13622857657 +18530754602 +18808862133 +18560535329 +13974144041 +15172052415 +18509488524 +13686486060 +15813044202 +18532332930 +13961589949 +15821535715 +15119246509 +15850990641 +18887888099 +15188344581 +18816178417 +13626824149 +13655236334 +15162751741 +13911665665 +15891810356 +15135378510 +15151525615 +15846194390 +15896261392 +18535561323 +15113420572 +15114330173 +18586508504 +18883950338 +18875851890 +15140219991 +15863107617 +18828864326 +15159657919 +18594578957 +13604985039 +18511708449 +13621353997 +15852729922 +13690679100 +15191571203 +18813108667 +13992615120 +18814698038 +18582986531 +13998116704 +18818978626 +13607313968 +13690029926 +15852990259 +13922188230 +18817029854 +18898974224 +18502422009 +13615907251 +13608110660 +13989650346 +13950931854 +18823047350 +13919164805 +18576822281 +18540082152 +15114941375 +18888945490 +13696346263 +15854636781 +13901307231 +15813769949 +18833682875 +15191005541 +13926611969 +13925829377 +18506850886 +18855204070 +15893417186 +15819830435 +18883670697 +18562063357 +13950682066 +15183299084 +15150453531 +13910368215 +15190055650 +13673997815 +18544089572 +13996430780 +13908389389 +18866871404 +15125780289 +15193853432 +18807824116 +18875893967 +18866935610 +15883306336 +13919553905 +18526139991 +13676845856 +18556751377 +15158661403 +13905279303 +18567514884 +15811129381 +13651604220 +15172048169 +15124666509 +18814357002 +15104097241 +15179876180 +15181602128 +13669288685 +15830763009 +13971714947 +13961787134 +18580493763 +15827714740 +18824712717 +13671929916 +15825356133 +13959729784 +13942866895 +18581264612 +15826518508 +13948423909 +18598479544 +18832355639 +15125330099 +18895918902 +18808647061 +18869521522 +15860113708 +18808949916 +15851938774 +18807570979 +13933481778 +13685651213 +18816042410 +13972339671 +13941962410 +18519356517 +18829755375 +13950465727 +15845836180 +18571977780 +13645298491 +15118671095 +18547814063 +13657118948 +13655359963 +18500833523 +13648275488 +13940673899 +13691918017 +13930890340 +13647342417 +18843313746 +13633237691 +15892652287 +15824793957 +13631762242 +15146612435 +18520483783 +13962464765 +13946091128 +15892374076 +15189427936 +15145465938 +15837582736 +13608074085 +18829027333 +15853006686 +13987126569 +13975404352 +15823757501 +15116912171 +13622058066 +13645574523 +13983388899 +18540962291 +13981833681 +15849363539 +15150739865 +15115234325 +15145634879 +13924095132 +15833987870 +15120527961 +18524919437 +15859124997 +15824674572 +13955302397 +15853491184 +13988513706 +18545942677 +15168214302 +15808168714 +18534790310 +13947242078 +18557881363 +15136064935 +18506441428 +18831374890 +15878563091 +18583146389 +18862403891 +18559262001 +15858891756 +15819469494 +13627677606 +15850371923 +15830940104 +15132794432 +15178259450 +15183381220 +15802244910 +18535689388 +15838786776 +15135596838 +18800841495 +18581590565 +13900399978 +18822442361 +18592036422 +13627007466 +15103770147 +18895145506 +18842141604 +15808888615 +13987763038 +18867241801 +18537444508 +13960846060 +18889035244 +15876243310 +18866795788 +18561123908 +15160711623 +18835795645 +15867229514 +18882244895 +13952188330 +18550600689 +15891513931 +18894481174 +18886102524 +15812634172 +18809686299 +15842226171 +13964822704 +15119643437 +13996212654 +18540894095 +18867442472 +15120131253 +15868461338 +15154697907 +15146955004 +13919606566 +13606574232 +13620110551 +13606753025 +13983183464 +18828151033 +18831076780 +18870849421 +15159162598 +15188449236 +18807424521 +18571237503 +13972348296 +13988796553 +13603010617 +13983596498 +18896524717 +18861125576 +13624660226 +13617753418 +15891769462 +13957475661 +13633459732 +15149303947 +18544359033 +13689486331 +18591413952 +18882230826 +13683508541 +18879713688 +15827198702 +15137528007 +15847014262 +15892866489 +13618485273 +13902356462 +15818276237 +15165768930 +15859607564 +13995958179 +13957050873 +13923933058 +13628405321 +13909479641 +18865200202 +18892101957 +13621268839 +15858241498 +18873331240 +15806279344 +18592583184 +15165264450 +18555859615 +13628286673 +15845369852 +15847420076 +18519328456 +15100012223 +15185951230 +18854276795 +15171211111 +15114219474 +13698812041 +15809328764 +18573686943 +18857889579 +13920160126 +13937598446 +15116374249 +18570473787 +18538435579 +18560964118 +18841524194 +13635824987 +13668839634 +15108171099 +15174864421 +13937288860 +18852857208 +13942567580 +18538327522 +13902474028 +18596983800 +18877161587 +15181395356 +13906532190 +13618039358 +18568258407 +15841384962 +13935576459 +15819467164 +13971930928 +13659470816 +13974319681 +13618124094 +15847052513 +13613860658 +15845469512 +13688962339 +18565163868 +15871818192 +15806766548 +18587948896 +13951566634 +13943559097 +15123433132 +13613742172 +13679267012 +13958125289 +18514812028 +18592363873 +13997769086 +18849493536 +18885217990 +18547536319 +18843736426 +13994986964 +13968848044 +15188881627 +13657986113 +13924154450 +18804463145 +13641693567 +13972743443 +13927894492 +13933231967 +18532993846 +15172865395 +15811869815 +15873431562 +15170498897 +15190620074 +18851979792 +15136540364 +13650585270 +15134550680 +13683034385 +13612993426 +13651017395 +18871106217 +13618424251 +15107549182 +15892244854 +15115627572 +15826506926 +18511201120 +18502210189 +13945499596 +15800377516 +13908445971 +15166912829 +18576244102 +18892742589 +15839106442 +18546156374 +15829224943 +13950221311 +18862037253 +15198349924 +18523041815 +13964346061 +18857016947 +18838680300 +13683764591 +15145014831 +15846394823 +18860958048 +13919419390 +15128953225 +13617729767 +15891823477 +15150509803 +13663583435 +18896252378 +15832033512 +13682464707 +13616536428 +15846365343 +13615066139 +15864409867 +13925882642 +18598662975 +15808131470 +13665880488 +18507512373 +15879380777 +15188565761 +13920058773 +18867734308 +15839978865 +13927941878 +13640109446 +13691274740 +15865344287 +13680967649 +13912271348 +15144885601 +15133832293 +18804045703 +15842404412 +13974127049 +18589868037 +15883033802 +13689694074 +15862008397 +13979647779 +18579121408 +15801795045 +18834280158 +13622910135 +18898114979 +15815832819 +18574670941 +18503879706 +18812393922 +18889907443 +18862704064 +18897683061 +13976384700 +13961557777 +13954458787 +13626283213 +18887013416 +13949115581 +15870099988 +13656021615 +15101018081 +15835691401 +15112024977 +13690099780 +15101571232 +13919322260 +15817194777 +15165974207 +15160375658 +18838479049 +15176714622 +13978437298 +15108063909 +13937080547 +13928104072 +15129266076 +18880039444 +13667432238 +13671897753 +13988118042 +13929957355 +13912248317 +18560723837 +15826482772 +18831281498 +18829721977 +15878358311 +18896369584 +13669680301 +15139527419 +13925442572 +13910531314 +18586365077 +18801330739 +15863168453 +18557509021 +18811972858 +13946341707 +18894374449 +13902025270 +13690384935 +18514865429 +18806333818 +18875497782 +13912545793 +15828310659 +15116455089 +18818742555 +13961771768 +18836466628 +13607386228 +18578537509 +18812058567 +15824262242 +18573279510 +18854306862 +13699912101 +18539293147 +13601805715 +18507912771 +18538279009 +18581045196 +18894269588 +15889072835 +13968943457 +18880386000 +13993827682 +18583775804 +13956922659 +15805144220 +13913645989 +18549282498 +15893075008 +18817691422 +18852687979 +18557794315 +13992363822 +18800227213 +18811954377 +13617717881 +18805619977 +18595147276 +15196439838 +15143370011 +15833049530 +13644780579 +18598287656 +15188092458 +18545456520 +18829500495 +18879046295 +15821443530 +13631189965 +18512591451 +15872729837 +15895352796 +13994736662 +13997185673 +15880788122 +13992045725 +18879089890 +15183505772 +13932567614 +13995179333 +15167911137 +13932415695 +13936711461 +13971092011 +13657282373 +18568958039 +15162571796 +13687398188 +15102929098 +13990626053 +13663870562 +15114250051 +13640279015 +15169282837 +13631652930 +15165232133 +18518279502 +15185646731 +13922982170 +13953319019 +13665135008 +13639038684 +15113455199 +13671263326 +13627954791 +18547673586 +15810595854 +13668532119 +18513195131 +15195220942 +13631976133 +13920838119 +18881203712 +15897166743 +18876183224 +18887176667 +18836813962 +13657936051 +18532727329 +13929120502 +15897451033 +15142145299 +18564645564 +13997609508 +18510531606 +15126264955 +13695967175 +18874284946 +13648393436 +15197524517 +13993831153 +18592068990 +13618350485 +18536093025 +13612796481 +15820217326 +15847649529 +18897104930 +13919393186 +13639662806 +18591218845 +18839724126 +13956348883 +13932424724 +13933981610 +18826378444 +18867964198 +18518294006 +15191028520 +18564632143 +18524059607 +13953852034 +15878587910 +13904736030 +13669565448 +13951648123 +15835004884 +15818839532 +18511960428 +18847416903 +15194458064 +15154591700 +15111132348 +18564023284 +15102114683 +15808897913 +15169048172 +18586530721 +13960320517 +15800092445 +15826102318 +13614679605 +13610616896 +13961059710 +13637446895 +13975657511 +13643476277 +18836310207 +13695128533 +18846917449 +15155760467 +18539960833 +15112285500 +13999363522 +18875998691 +18537760895 +18820668320 +15143174240 +18818120752 +18509271613 +18879741532 +15827310183 +13609710982 +18844443411 +15174301108 +15107884755 +13934480722 +18851576141 +13969477579 +18581299403 +18856178699 +13909923139 +13909939561 +18593049001 +15101783892 +18895199262 +18889560923 +15125256124 +18516343433 +15123510228 +15899695148 +18817377450 +13978462378 +13686277287 +15106134054 +15123366937 +18520544756 +18874959453 +15829092288 +13978131420 +15848805507 +13657799661 +18890184734 +15153318055 +18592948261 +18548292042 +18828628634 +13651745533 +15180034942 +15193733314 +13649624668 +18558085403 +13955345173 +15825992740 +15847626674 +18554352755 +18523661072 +18847076388 +13622469286 +13987511091 +18514974725 +13654229626 +18529499460 +18548102857 +18813371316 +13946721305 +15191800356 +13622265205 +18535850018 +18571310242 +15123813501 +15130154650 +15127169415 +13654799168 +13609693235 +13672750062 +13911550788 +18848451366 +18524506672 +13667903261 +15155991165 +15862801230 +15148197951 +13980147490 +13649139141 +15161223371 +13664146531 +13614993150 +15170896525 +15131128742 +15158448072 +15887098432 +13933833684 +13923769616 +18546503338 +18541621828 +13960608554 +18891224063 +13926985670 +18587887357 +15192097433 +18826160960 +13600533598 +13692656975 +15150488285 +13654251630 +13648979699 +18866158831 +15110602511 +18888960749 +18581893978 +18884415618 +13962319149 +13948091511 +13911119989 +15802371771 +15111636725 +15874697132 +13626491879 +13920263475 +13952391132 +13688540264 +15155732792 +18811141847 +13965070364 +18858659287 +15825034742 +13932827593 +18563701817 +18853938681 +18852581735 +15889690585 +13623926920 +15195424583 +15193839675 +13953757757 +13949953064 +18549027097 +18850448323 +18879269599 +15127894503 +13649059445 +18578265389 +15111961432 +15150399817 +18893584212 +15147352227 +18849825163 +18501074871 +13907222995 +18578939590 +13978649307 +13930071905 +13980965959 +13652878645 +13618416990 +15175307502 +15108105995 +15893114100 +18806091975 +18811960443 +15182088145 +13678720372 +15125341469 +15863331846 +15879129758 +15141352263 +18553945474 +18547817465 +13644487897 +15187494306 +18813429412 +18508814682 +15810113906 +18814328536 +15833050222 +18883787734 +15174695804 +13933818328 +18526559720 +13648981681 +18877076844 +18512842411 +15135937586 +13681119723 +13980136634 +18801946790 +15170272925 +18871539850 +13648851550 +15849788581 +13662572853 +13687022940 +15126985477 +18853499637 +15878874963 +18597769663 +15165320087 +15112665056 +13974173755 +15163411172 +18559131583 +18831928729 +18510287527 +18814840948 +13930470013 +13922857295 +15884085825 +13920275808 +13925550250 +13914485744 +13601195596 +13663855499 +15824210408 +18556018137 +13913921208 +15884973154 +15824003591 +15116115551 +18588135155 +15899614646 +15824767393 +13934321414 +13982951788 +18867147067 +13936553135 +15143460024 +13953803706 +18891040298 +13641752681 +18873257185 +13904956634 +13994894140 +18504679216 +15154370963 +15880750487 +13681514444 +13946334393 +15814251221 +15893281906 +18858654716 +13941857996 +15875984715 +18584815010 +13944859850 +15144488996 +13933203323 +13940300396 +13677180459 +15815223912 +13620216876 +15808027711 +18517283747 +15147728442 +13966793773 +18849488270 +13680764332 +13606736110 +15129543781 +15183963653 +13985841306 +18508952569 +15159250143 +13699145996 +15117942481 +18505617425 +18527288880 +13997751624 +15822398104 +13677848294 +13980286492 +15134756062 +13689579513 +15195115803 +13658002139 +15871797463 +15109477159 +18522433166 +18582509929 +18825741137 +18824991862 +18870426209 +15895603984 +18864710770 +18874204271 +18831802551 +13977790084 +13687728231 +18532117407 +18565342888 +18859489026 +13625074586 +15189636866 +18874192199 +18520181474 +13913592012 +18814649512 +15182615822 +13647251626 +18842457919 +13659276826 +18845933131 +18822040476 +13666447142 +13927531910 +18567694923 +18877180158 +18515875709 +18548964879 +18566115011 +15866921507 +15860968147 +15153952976 +18560326885 +18542125131 +13906508650 +18803237474 +18879522642 +15186614169 +18817531808 +13925778643 +15831444446 +13673211279 +13653932557 +18842206512 +18828038183 +18835414634 +18838414812 +15176369656 +18840089826 +18510555165 +18564510900 +15878131784 +15138845783 +18808850354 +18807719685 +18514422861 +15178563629 +13626758567 +13953777846 +18882836520 +18575604447 +18538560958 +18531841375 +15830811672 +18531929192 +13970629280 +15801243244 +15186215961 +13616152419 +13999263115 +18565996213 +18500204555 +15159466318 +18568092304 +15124379946 +15806736800 +18855914446 +13630074879 +13928436409 +15166518110 +15896095299 +18842425341 +18541014563 +18530233245 +18877058617 +15181929876 +15885025242 +18884841443 +13614476311 +18885015627 +18826031269 +18824074970 +18576408760 +15857416032 +15164782970 +18524749130 +18588273325 +13655703353 +13663700474 +13678297103 +18854534431 +18568353950 +15889041775 +13913183893 +18861480102 +13699521135 +18576831628 +13605041980 +13927132328 +13640845838 +18585114811 +13693695767 +18837087700 +18523687073 +18506777565 +13663207662 +18503921635 +13691606018 +13981467852 +15858207894 +13990535604 +18590594794 +15102356489 +18834535637 +13692524566 +18570874524 +18546325992 +13669377780 +13696644624 +15107283436 +13928933389 +15891103215 +18584294745 +15115491276 +15825403335 +18815455262 +13973535766 +18805471389 +18859074502 +13970244601 +15809042652 +18841035453 +13940721006 +13646245404 +13941391900 +13915311712 +13979732351 +13645105563 +18546331870 +13956094945 +15858811736 +18803517222 +15160700222 +15137076272 +15190789190 +15828342432 +13605440341 +13967699448 +15864248132 +15159233510 +13632778631 +13910341637 +18571133257 +18804370528 +18564723514 +18553982549 +15803842294 +18876278733 +13917108671 +15155998449 +18573202661 +15169866426 +13614917810 +15192465666 +13619337275 +13661358795 +13630022037 +15145538009 +13973992596 +18502322162 +18557033281 +18502948600 +15809166825 +13954118972 +13666827278 +13631709094 +18826552974 +15887380237 +13650876631 +15877199881 +18565593805 +18827779422 +18892252724 +15890237766 +15170384262 +15190486736 +18522547009 +18856734211 +18501386826 +13976507816 +18819267503 +13696334782 +15848946813 +13669368693 +15893319845 +18510221066 +18861178296 +15825441476 +18552090283 +15189349217 +15842638001 +18578364715 +15804760585 +18844185674 +13988445667 +15132167121 +18800874190 +13628468124 +15184075800 +18508917358 +18876649118 +13992853046 +18599135167 +15886524595 +13948867364 +13642354822 +13670728460 +18565767207 +15164654827 +13684641868 +18538482277 +15124450446 +15880657838 +15185168709 +18874808705 +15853882329 +13981854571 +18516882600 +18885598759 +13914204259 +18520205212 +18827258347 +13950202016 +18589678503 +13685000277 +15828657908 +13611350192 +13608868023 +15893734081 +15807384448 +18530329629 +13920625423 +18593098609 +18897969270 +15850603910 +13909181901 +15830818545 +15145095340 +18892420450 +13637207298 +15852742889 +13948964758 +13922288354 +18580028817 +13600876066 +18505917915 +15867242797 +13945359966 +18812244972 +15839492988 +13996309646 +13951943640 +15830141932 +18595849963 +18884781681 +13966498593 +13665479471 +15197331017 +18531377986 +18892942312 +13648325644 +13689006235 +15116459492 +18810170803 +15889405848 +15883355912 +13997428718 +13947985550 +15862379304 +13632968613 +13601518187 +13651230707 +18806387424 +18542297736 +18555778130 +13623773884 +15120508166 +15176825402 +18898414560 +15845072455 +15199738851 +13622660504 +15107923126 +15877998002 +18528365889 +13615203642 +18509723652 +18829379774 +13623088105 +18817680869 +18801727124 +13682551204 +18527898100 +13905047623 +18502703470 +13611698550 +13684639678 +13600628496 +13628660021 +13919460028 +18857543970 +15810068272 +13631639649 +13946147124 +13942819380 +15160640735 +13942118514 +15810360443 +13661038370 +18856252000 +13656935547 +15128641503 +18563100570 +18847857877 +13622139141 +15885214926 +15808703529 +15144041396 +13683601108 +15886838863 +15819189682 +18892634603 +15135669435 +18816505772 +18507157660 +15198034181 +18546896847 +15875573572 +15843131292 +13938058469 +13657525410 +18833535737 +13660059715 +15185967566 +15830227735 +15101321036 +15852626371 +15166663782 +13670784746 +13621808891 +15860284883 +18877138273 +18504111837 +18899429076 +18886458322 +15168938456 +18874270518 +15897040100 +13638380647 +13948573466 +13938334399 +18599481995 +15159724610 +13697464445 +15175466624 +18841202100 +15111696456 +13630507060 +15172312819 +15855465002 +13640168936 +13909273670 +13623529791 +18842324743 +15192052436 +15843756455 +15834144126 +15811913023 +13632685859 +15123177333 +15873599516 +13664314739 +15103633071 +15834679877 +18863947460 +15864057069 +15855412031 +13631797168 +18875567933 +13961214347 +13626174013 +15146940637 +13921396190 +13653616704 +15173652606 +13652801214 +13967903236 +15184497081 +15832605240 +13928625508 +13953693094 +13683942510 +15852420499 +18849611546 +18808408201 +13646208822 +15178962909 +18575371769 +15899066835 +13954526677 +13653475680 +18501478830 +15148400396 +18805550399 +13992693598 +15806481382 +15110669519 +13662706383 +18504246219 +13933526889 +18850596222 +15182951482 +18550288823 +18839571096 +15109418405 +13605505466 +13691095682 +15184970902 +15865588865 +18501690878 +18842191413 +15131246485 +15132838655 +15110738795 +15192873361 +13951995128 +13905828181 +18531537542 +18589716573 +15131557782 +18558843800 +13918587096 +15124176005 +13655570280 +13909147133 +15165799917 +18864166191 +15189736081 +13650684725 +18544830423 +18801111261 +18541075268 +18857089481 +15124225850 +18541377725 +13988779641 +13678986727 +15815904829 +15881077429 +15804840641 +18506660784 +13979367554 +15129262874 +18801078796 +15143590113 +13953846432 +13909968601 +15846595469 +13968393825 +18537302372 +15852270262 +18844444022 +15878699779 +18502551690 +18872337162 +13631161234 +13972944558 +13938258099 +13695491885 +15890791966 +15897764458 +15827375437 +13679990235 +18898841384 +15868252233 +18802742549 +13622678839 +15823148986 +18837962464 +13679141046 +18574270921 +18579061985 +15189603323 +18596416646 +13909238178 +18518066455 +13699236130 +15887815702 +15840233662 +13987038938 +18577843241 +18525287279 +15896919176 +15142743442 +18828897068 +13612049965 +18562894034 +15832466535 +13689366096 +13956773301 +13964818131 +13668779647 +18565998818 +18513867708 +18540741179 +13924740655 +18880879008 +18864274086 +15846466217 +18864223723 +13664929858 +18591557834 +13691813580 +15833444724 +18871785966 +15191534160 +18803645868 +18800201720 +13621211895 +18864281299 +15139405375 +18518542963 +15879369943 +18821762702 +18879201474 +13915085116 +13921383053 +15895302789 +13635424810 +15118711147 +15198454379 +15888405455 +15118578497 +15118279524 +18803764304 +13614396338 +13623193227 +18861564314 +18878494079 +13937268600 +15877045632 +13608452088 +13656759897 +15829716872 +18582382549 +13682921457 +15193379102 +13995244741 +18830498776 +13690190522 +18572632668 +15834306677 +13641518089 +13903435024 +18520250860 +15860337575 +15137300625 +18840282360 +13678616521 +18553339083 +13629936989 +15189504429 +15113469734 +18515078054 +18807477172 +18560921715 +18529489962 +18892089834 +18858492769 +18503690641 +18824257131 +13663036499 +15186599869 +13630830531 +13612670962 +18598281094 +13693531767 +15147909770 +18876375784 +15818046913 +15111288437 +15898673629 +18548284789 +15848905717 +13938756362 +18525751272 +13906566264 +18852280776 +13948411629 +18594494018 +18501245475 +13657758675 +13928955233 +13925284210 +13911947450 +13626031872 +15131749364 +15189788622 +15116509759 +13968701772 +13646727247 +13959254852 +15117260729 +18547884812 +13662241387 +13656165257 +15191194321 +15161739762 +18568769783 +13634056505 +15892724808 +13990673017 +13650701435 +13916965174 +13964753427 +15838981550 +15813039522 +18860078246 +13962357110 +18583843438 +13921648656 +13691987938 +15857638097 +15853579857 +13614431370 +13660373431 +15878352831 +18500356059 +15840563863 +18895162355 +18802752000 +13957678443 +15899223498 +18880658936 +15152742250 +13685690914 +13640540688 +13980168891 +18541752192 +15889430336 +18861379156 +18560944481 +13966306770 +13916649732 +15814752418 +13996638018 +18522233081 +13616163348 +13603950669 +18508960767 +13900853262 +15801616568 +15178256724 +18807288427 +18895399519 +18542820259 +18844322386 +18891821586 +13938782057 +13900774898 +13998604400 +13941750219 +15853359644 +15881241567 +13615903943 +13626452499 +15182737403 +13903111226 +15806453211 +13642717989 +18509247919 +13696615543 +13684739306 +15177407595 +18551124803 +18899052348 +13610424402 +18873621331 +15811733770 +18867242352 +18831772975 +13675142317 +13987945125 +18582248961 +15895454860 +15822992976 +15868780362 +18818924757 +13609653800 +15188257852 +18827394536 +13955837051 +15855605842 +13975421141 +13921775894 +15886340746 +15123598640 +15156691812 +18899803133 +15182437050 +13930600978 +13646707010 +18597162354 +13950042933 +15898584578 +18559140741 +15857725057 +18870651763 +18574756149 +13906940505 +13600695102 +15123599915 +13630374271 +15143875660 +18854540108 +18565118267 +15126845089 +13995701572 +18807666801 +15843635699 +15109446465 +13664254488 +13629446319 +15871849973 +15878587208 +18516554924 +13979830990 +13932360576 +15165134432 +18596220932 +18523731513 +13957825769 +15840338761 +18819983963 +15814613455 +15832594390 +13620163342 +15827358538 +15856757496 +18570577368 +13999585971 +15881566297 +15815066289 +13946018643 +13937614512 +15864026680 +15884336757 +18824030344 +13912860854 +13919634316 +18541882262 +13650115420 +18847031529 +13964634444 +15890377889 +13941799897 +18880326647 +15867149163 +18818883656 +18598862470 +13963505020 +15870076290 +13691787419 +18501421821 +15180245051 +18830198444 +18828277919 +15140107776 +13642743326 +13640021541 +15819382838 +13623636086 +13979295991 +18591581671 +15104815782 +18596357884 +13947352999 +18542352541 +13915581838 +15122324704 +18873172324 +15125399245 +18558940359 +13960674849 +13665103615 +18559815607 +18887768212 +13644967714 +15197346359 +13928267376 +13918227163 +13952792191 +13916998190 +15853090801 +18546176457 +13687599250 +18505921534 +15884861326 +15187850511 +18549833072 +13953019060 +15866671533 +15850603086 +15826860579 +13617695576 +18582321096 +15879838784 +13953641708 +18899368680 +18516358967 +18528162634 +18558951124 +15192680178 +13653285008 +13649021249 +13628474017 +18551744316 +18509237264 +18815054004 +13913180775 +13929604926 +18503433796 +15851955259 +15168794467 +13681833773 +13601836524 +15831751627 +15858408597 +15141646145 +13998752167 +13933518758 +15857741256 +13646326683 +18590727590 +13905971059 +13982713903 +13695421129 +13964131585 +13628801082 +13647357635 +18574360559 +15845635107 +13975858248 +13664444626 +15121938651 +18597888482 +13964987348 +15817374029 +15191690226 +13644322155 +15164510496 +18504250713 +15132128596 +18597437325 +18856445607 +13600995298 +13992868831 +15846564599 +15182187761 +13644965597 +18820499475 +13948014958 +13974538292 +15830299622 +15131713670 +18535826694 +13644104877 +13909557036 +13645051222 +18557510665 +15115551994 +15138611200 +18556418559 +13611271910 +18830073480 +13943580197 +13929338951 +18543629268 +15136138956 +18839404046 +18512363878 +18813819356 +15806056127 +13972206250 +13628589989 +18544783863 +18556947698 +15864391115 +13675499404 +13600601896 +15142400448 +13937090390 +18834984095 +18803495151 +13922099746 +18822273464 +18563632380 +13906143112 +15110595349 +13946598774 +18506816970 +15190537108 +13998722587 +15830421331 +18850536347 +18575493361 +13605204760 +18839210617 +15834508796 +15889969198 +13912366501 +13936537159 +18571288121 +18865153105 +13639856121 +18830751698 +18845162461 +13931802889 +15834530681 +18831303259 +13666923625 +18811060653 +18538208714 +15800458626 +15124412713 +15879184306 +13625494757 +15193053914 +15833220289 +15811508468 +18576079972 +15154913943 +13646121689 +18896955675 +13965143823 +15106372380 +15882698259 +13946146604 +13930440475 +15879253331 +18882694588 +15158405199 +13962703209 +15804007342 +13935124913 +18871977214 +13640220385 +13950863879 +13938124837 +18570292897 +18861888338 +18559682069 +13992484711 +18820847068 +13632934093 +15115091582 +15145933175 +13683115257 +15849989215 +18539465467 +13912088187 +13670971920 +13971000455 +13608891958 +18888082085 +18527313400 +18544581441 +15177700911 +15115366265 +15870497904 +15103733211 +15184796363 +13629584427 +15833038725 +18570964436 +18539231892 +15144957699 +18525710994 +15155464872 +18837065340 +13680546713 +18844603793 +18867703517 +13969943811 +15844791954 +13976807753 +13671435654 +18554522669 +18511983110 +13912078342 +13623374974 +13644964909 +13608349808 +13993199047 +13962559164 +13629909773 +13949835250 +13947123562 +18529444264 +18859815386 +15896121903 +15800649498 +18878127763 +15188103606 +15851598151 +15164532018 +15846017413 +13984142448 +13616566253 +15191138923 +18569588640 +18814948592 +15829993228 +18804028619 +15189529124 +18522967136 +15185590512 +15818543991 +18845516678 +15852128149 +15817021809 +18871111613 +18858677405 +13927086460 +18533851290 +13638176442 +15190915705 +13648928107 +15831318727 +18830138285 +15827542292 +18561218477 +15896186410 +18859053786 +18823547638 +13984086306 +15175920202 +13928774906 +15177238078 +15190936266 +15101806340 +18878480696 +15889306975 +15101343993 +13658318970 +18542320121 +15876441411 +15127013476 +13639505684 +18806727395 +13608663850 +13929640428 +13974520344 +18880778750 +15120149809 +15117080643 +13638442442 +13944567850 +13647661833 +13973913498 +18589187410 +18841784619 +15828327228 +15118854845 +18896508111 +13981807938 +13613967600 +18541283431 +15181239579 +13653111141 +13907613690 +13648923610 +18810163722 +13906846263 +13905634312 +18829726189 +18873344529 +13690800275 +15800691727 +13619540030 +13923731245 +18803295882 +15848685837 +15875255226 +13984905963 +15138500357 +15874197525 +13981010878 +18886026931 +15194114701 +13661865336 +15106287312 +13657866721 +15856215485 +13638333736 +15801926301 +13683640975 +13911182512 +18574899875 +15842787089 +13938116836 +13674777516 +18543087685 +15845396217 +13910886606 +18523310660 +18868858374 +13663008790 +13681327043 +15191276057 +18833745007 +13666707240 +13634908552 +18844506054 +13631728210 +13610487052 +15829973586 +18589411514 +15864497385 +13646492965 +13926954256 +13671597972 +15876252614 +13946571070 +15822850834 +13940600784 +18880769030 +13613951317 +13991800622 +15868694754 +13928856687 +13943997421 +13995697517 +13649797249 +18595136982 +15124273036 +15122770313 +18518601385 +15158518884 +18846165796 +15107758831 +13688350492 +13611755513 +15816959593 +15111268671 +15179238457 +15829801035 +15858953437 +18862913838 +13662966930 +18815253760 +13908402932 +15867851833 +15194040773 +13957917547 +18504255353 +13658120034 +18851407926 +13925205373 +15837931307 +13698599419 +18576637536 +15139452743 +13696694630 +13907581365 +13959555517 +15804254112 +18538507410 +13920108768 +13921940688 +13646210821 +13623895122 +18825392449 +15169801656 +18838278535 +15112403616 +15845949490 +15824282722 +15859317430 +13938933020 +18811414838 +18878506808 +13987396086 +18874507815 +13966577543 +13698720471 +13999222193 +18888082865 +15191569997 +13993462284 +13698863120 +13916418987 +13697120655 +15839433314 +13628356140 +13648716687 +18846299831 +18876251158 +15170113420 +15131500662 +13624945262 +13904238998 +13605797386 +18828343373 +15105448987 +15879623139 +15831124330 +13653383359 +13940712571 +13689910005 +18837303339 +15190477083 +13683560365 +13989155973 +13697864046 +15176888674 +13963793274 +18554891818 +18804476695 +13943678186 +15860892603 +15823424472 +13634237511 +15848531508 +13684589420 +13697624908 +18531506548 +15863932062 +13930088158 +18534303196 +18854680890 +13668989396 +15155476140 +13615975004 +15134230297 +15835546350 +13675894667 +18560084360 +13667214940 +18820921809 +18510896968 +13629971251 +15861869331 +15869897666 +15169568444 +13967240557 +15190391670 +18515317392 +18869645065 +18577145786 +15116145111 +18847047221 +13615826545 +13628798399 +15193626712 +18843900384 +18804236099 +13973391361 +18541306388 +13914726654 +13979117397 +13660918786 +13976083577 +13958957974 +15889683101 +18801621629 +13641822602 +18808972745 +15869503873 +13996162879 +13617781160 +18571932901 +15820706043 +15161003230 +15173586065 +13997365531 +13690293131 +18847201464 +18560242019 +18571328581 +15884979103 +15839713938 +18538461947 +15817747449 +15837555323 +15103011904 +15888036066 +13636105884 +18894127247 +15889146886 +18877479027 +18809078680 +18503592464 +18850926184 +15823814952 +15187416723 +18818504520 +15193061280 +18569329246 +15850873305 +13628958053 +13912848711 +13637529709 +18806164090 +18518811038 +13626659461 +13998748996 +13677194181 +15154016143 +15851928460 +18583161044 +15150693933 +15809493190 +13907926749 +18534450253 +13935069479 +15171556974 +15833266913 +15114712321 +18896213105 +13603888873 +13637085783 +18590242164 +13997732404 +13938358365 +15892091835 +13602193362 +15832554411 +15880709586 +13903776059 +13632543003 +15118214392 +18531849661 +13609925695 +15837143733 +13922098666 +13622413763 +18851880034 +13981352625 +15175268932 +15835231574 +18802099943 +15897436790 +15155709973 +15890165582 +18589887521 +15836335818 +13638372685 +13680808364 +15881082166 +13928263195 +15835641815 +18557226103 +15132931730 +18833816318 +13943643199 +15803262972 +18504872778 +18838753776 +15128904207 +13671560369 +18831331018 +15164617392 +15848329670 +18576801670 +13939966447 +13901424411 +18561771316 +13604410072 +13987307068 +13635753551 +15881070523 +13668030548 +18568380024 +15842982823 +15168275877 +18809151178 +13620908518 +15124802500 +15156417149 +18512525353 +15829224903 +15851063432 +15844113860 +18883518614 +15817484625 +13605440021 +18513704627 +13656590694 +18588599815 +13668188530 +18825866561 +18537753327 +15825942386 +18874005959 +18524591368 +18587739285 +13950443483 +15851982057 +15164890966 +18856562658 +13627795365 +15888413580 +15142489573 +18811754504 +13900087180 +13936646380 +13967073419 +13939627157 +18870523175 +15182729065 +13985346714 +18512742937 +18574429411 +18873283015 +18585919324 +15806486126 +13956424619 +18844855023 +18588832113 +15129719534 +13637629029 +18551640521 +15883862242 +15811975612 +18822004621 +13600175737 +18847169704 +18874890752 +15108292405 +15826609117 +15156637905 +18586205938 +15125645930 +18806380563 +13677781725 +15133094197 +18537031281 +18579222176 +13663161058 +15887185936 +18531837284 +13683443314 +13625543747 +15857222504 +18590938496 +18823329606 +18544939663 +13638364967 +18888717346 +15108800398 +13660908538 +15155369332 +18572529046 +15197126907 +13948789503 +15880600019 +13672688750 +13623235404 +13995486168 +18519436716 +18856073258 +15809079266 +15188460176 +13613572879 +18542212428 +13933753648 +15190578979 +13912303904 +13652117762 +15185197946 +15841866535 +15864572118 +13604941105 +18535077496 +15162653725 +15161851236 +13970703025 +18873437354 +15851928049 +15127070218 +13677372670 +13952518155 +15165026547 +15817091069 +15165452002 +18828866873 +18801902277 +18831161990 +18812371046 +18849660753 +15856626640 +13988245715 +18834460277 +13610782146 +15870247698 +13612296621 +13977802386 +15138271067 +13689210126 +13611633604 +13622077594 +18506827884 +13940832701 +15880293799 +15101973560 +13990337314 +15191703763 +13636363415 +18870985433 +13918683843 +18868641161 +15862832783 +18567787689 +18587378601 +15851664325 +18812485249 +18590028576 +18556103310 +15897234679 +18567568406 +18899282020 +18515162430 +15152282523 +13631779183 +13956363707 +15130064117 +18522815010 +13644685436 +18570107181 +15152441021 +15114531843 +13980565581 +15800062152 +15162536773 +13930996701 +18519180290 +18598547887 +18899305509 +18543662263 +15844773192 +15833753150 +18582135224 +13927963701 +18881004759 +15128430454 +13669495926 +13617635224 +15885828198 +15185311197 +13681641756 +15863750355 +15197860839 +18855023225 +13944932747 +15179348157 +15847678152 +13913179598 +18596351442 +15830705891 +18825235477 +13672865811 +18802556019 +18850321658 +13954909999 +13922603204 +13982809819 +15177641118 +15815553870 +15185588613 +18874538055 +15187290284 +13995362146 +18562056269 +15122142773 +15839981459 +13970704423 +18563177987 +15848750526 +15825689593 +15197739016 +13673063571 +13930934490 +15889196749 +18876478963 +13960061018 +15854803672 +18557664332 +15838542840 +15133821785 +13969531093 +13686563978 +18596137837 +13645327575 +18500750546 +13943347496 +18847686051 +18539205627 +18873242452 +18872287101 +18869355238 +15814120424 +18580310827 +13673784239 +13668470492 +18844628635 +13683540883 +18811582917 +13676758764 +15833737730 +15163436777 +13906770558 +15817925499 +13619556568 +15897738819 +18811513545 +13912022065 +18531228339 +18820702849 +13944667558 +15141590726 +18839330444 +18532421837 +18829982478 +15803390180 +13913244152 +18540126362 +18888295886 +13629507180 +15899614191 +13691772363 +18586090242 +15121215216 +18550709409 +15194897677 +18572814328 +15870794879 +13989964430 +18841298505 +13935438181 +13979149953 +13920741748 +15833095458 +18518445800 +18873869233 +15160853615 +18596411977 +18819783439 +18863955111 +18867880304 +18889984413 +18573985762 +18826933677 +13959660740 +18814652146 +13693578063 +13610575171 +13650150637 +13946147233 +13642789107 +15172461584 +13669837133 +13677353736 +18820534768 +18860854452 +15867477163 +18825521408 +13927820769 +13903138838 +13958804755 +18843117775 +15158805459 +13944259801 +13919822761 +15800530178 +13618454600 +13901847166 +15830557492 +13625043469 +13651623944 +18873165746 +13633319246 +15863838385 +15837852915 +15178792394 +18591014285 +18555671636 +13664355414 +13939896578 +18515335976 +13653656458 +18861878802 +18848263909 +18805695683 +13664870794 +18828212584 +18826772385 +15830741403 +15815838304 +15848822061 +13616343380 +18519462484 +18581859676 +13652336727 +13937768203 +15800642742 +13946658676 +15173567771 +13677562183 +15107950417 +13611920263 +13900895372 +18842512845 +18557094179 +13659266345 +13686268784 +13912380543 +13979657293 +18847403495 +18539400414 +18509933372 +15812007942 +13666535353 +18547897073 +18883539585 +15878262794 +13966883322 +13961563417 +18822394953 +18808993256 +18880268349 +15132225761 +18591812999 +18555565093 +15846073546 +15186971966 +15899939253 +13938527851 +15845778896 +13653288830 +15105242146 +18505113344 +18840599652 +15816961974 +13657623246 +15834805022 +13651015925 +18827976017 +15816627776 +13911427153 +13614406586 +13634508897 +13982576950 +18817236321 +18806398979 +18894148515 +18895296686 +18580758555 +15894875518 +13916882216 +15195038107 +15128255346 +15174341853 +15188628383 +15850029389 +13962048512 +18869870200 +18819012171 +13693967467 +18510690885 +13636397630 +18844218774 +18557226884 +13954349906 +18511878947 +15136941270 +15889282278 +13997560863 +18532564333 +18583256039 +13625257099 +18563741415 +18518395864 +13986369422 +15121158583 +18863471743 +18849473571 +18832022289 +13685111241 +15889771066 +18842088672 +13978791668 +15129107171 +15174878459 +15877256876 +13901297642 +15160313732 +13667135222 +13654659927 +13617441964 +13990093520 +15176688769 +13657633765 +13937901663 +13901582524 +15820674250 +18565360599 +18573026610 +18541865215 +15121801364 +18825279236 +15188951634 +13961459747 +15866665160 +15105960685 +13649804241 +13929317691 +18859143075 +18887703821 +15802815953 +13610443967 +18820124298 +18532971563 +15829841628 +15112904316 +18560668703 +18502956596 +18848760816 +18569891844 +15893770838 +18507499038 +18549919739 +18825982283 +13918244593 +18517066685 +13972162263 +15175821013 +13666907577 +18599016059 +13968752456 +15174050156 +18848648972 +15845163037 +18846811579 +15143254970 +13614542682 +18572159699 +15889526888 +13925438674 +15853091083 +18894535124 +13619061377 +18868449856 +18825000441 +13927760183 +13981651520 +18588495601 +13962036109 +13683542512 +18501175774 +15159847190 +13607627435 +13958182537 +18835230229 +18594882413 +15106458309 +15861465796 +18543696224 +15812179851 +15877979278 +18514661471 +13639273428 +15810835148 +15170023775 +13946590837 +15871090234 +18868788580 +18547718359 +18871955134 +13660697587 +18888785943 +13601817620 +18868339049 +13911322953 +13671525903 +13990385618 +15894056651 +15898491190 +13954879962 +18837096342 +15156660978 +15836342107 +18565285944 +15159532813 +15162211649 +18557853654 +18536582997 +13671835341 +13904191500 +15127321637 +18809912447 +18552799550 +15814282052 +13611372532 +15140851560 +15192426944 +13904269857 +15176688195 +18885696250 +13909478436 +15102934291 +15107690473 +13916758762 +13974076331 +18869109407 +13682797161 +18566287627 +13609666920 +18892144642 +18896021257 +18532893365 +13973085402 +18879253993 +13657667483 +15114570763 +15112478438 +13670514462 +13630080895 +15127784338 +13679341935 +15847736765 +18572833668 +13943790733 +13659364580 +15192181739 +13620929686 +15135750599 +18831450336 +15832642373 +15829123549 +15128736842 +13636891530 +18583448949 +15881007198 +15114924496 +18809413231 +15846851678 +13637799093 +18535910062 +18878783694 +18531513895 +15197523336 +15800108022 +18550614467 +15836847690 +18534930451 +13942598704 +15825793384 +15121014879 +15833992974 +15119444540 +13698800173 +15160935382 +18857029704 +13617809887 +13681323420 +13619518411 +13982661965 +15153092194 +13650131892 +18859140344 +13668449951 +13915215248 +18892865407 +15849368161 +13930642085 +18599239885 +15180754013 +15152377353 +13994492402 +13619928419 +13602932983 +13641923115 +13936538340 +15884255664 +13953073399 +15140379953 +18538638492 +13900236741 +15815285509 +18827786130 +18515504238 +13992890879 +18572824605 +13901342297 +15194051321 +15877520621 +15174467652 +18501872294 +15862182786 +13917795552 +15149190836 +15892962424 +13947616464 +15145013344 +18542799678 +15160154382 +15874755897 +13944939304 +18505357904 +13906786279 +15173207589 +13623157374 +15187844933 +18852503837 +18540001513 +18856651723 +13918195217 +13958553075 +18883645544 +13931948668 +15885795481 +18804562025 +13912325724 +15199221615 +18568157267 +18559402881 +13654364075 +13971931938 +18531969960 +18551350292 +13648434840 +13643727490 +13992551509 +18568737823 +13926500762 +15838457561 +18856907156 +18595898826 +15832798048 +15109397165 +15808979187 +18563410231 +18800373987 +18886774237 +13688631510 +13995317210 +13645160620 +13629212339 +18804902815 +15830555080 +13933814315 +18871505756 +13604887421 +13927203166 +15831187829 +15160302492 +18829311575 +15863429860 +13677423707 +18585820748 +15870757841 +15859956035 +13941986800 +15813720524 +15803918798 +15196496355 +13971469234 +15808849962 +18550332958 +18806702505 +15866116926 +18897230815 +15833081302 +18856705826 +13630183545 +18844432865 +13902363566 +15851923193 +13682231585 +13628401788 +18518426242 +13616639169 +13969200957 +13682000443 +13913639330 +13928381286 +18846342004 +15807403236 +15808985766 +15187339036 +18892251827 +13628764831 +13936095239 +15116059144 +15887407865 +18586248909 +18569511593 +18846638849 +15125877094 +15862109819 +15890773175 +13684454550 +18820740493 +18865165617 +13977674246 +15831433159 +13636434683 +15183025650 +15878042179 +18506914244 +18541362501 +18894631104 +15158920812 +15153079258 +13911871189 +18801906389 +18899271058 +18589614170 +18515527122 +18519940264 +13996476365 +15134299246 +15185666591 +15860462195 +13968187031 +15179059440 +15158581567 +18819892362 +15133378892 +15806809623 +15850498488 +15888491012 +18844426797 +15182195390 +18504677566 +15817278896 +13921013703 +15120826897 +13966135197 +15839547418 +18517430234 +18521686332 +15198045069 +13691228774 +15132250698 +15170189257 +13635961826 +15129605816 +18590845505 +13626164202 +18819105680 +18829096694 +18590728747 +15194505297 +15808908826 +15880007991 +15163201307 +13670867033 +15820240399 +15195871907 +18851163535 +18816576766 +13965991237 +15860669759 +18501677054 +15847223252 +15874214057 +15890550621 +15822110401 +13953827213 +15155311576 +18521411540 +15184401543 +13689924070 +18831827419 +15837549940 +18891116569 +13976065872 +18844172029 +13971914369 +15881502528 +18564662619 +13929815238 +13621030236 +18533422919 +15146607470 +13628143847 +15190297235 +15121733634 +18897323547 +15893945941 +18588224877 +15156137427 +13686926882 +13691055296 +18826564621 +18875038881 +13620701149 +13928650194 +15876131030 +15110431566 +15866733277 +18572273518 +15156250643 +18565260748 +18536954045 +18899860950 +18820604543 +13982970199 +13640624664 +13911273291 +18587973734 +18874177042 +18514046383 +15844277563 +18822760167 +18812497680 +18589402043 +15102066458 +15808279942 +13611365494 +15199549695 +13620445530 +18830360680 +13921081628 +15819130254 +18886943763 +15100475189 +13611169805 +13923680388 +13615437383 +13619978114 +15184222870 +18808455176 +18546838694 +15183728078 +13654684425 +15875916933 +15887295767 +15841973308 +15134287175 +18868728250 +15130633642 +18813799699 +13632942224 +15144759122 +18888373632 +13697176021 +13998335175 +18566706629 +18816879628 +18590285970 +18845032057 +13622939619 +15862732607 +13636068482 +18898666876 +15158075183 +13621182388 +15153391434 +18879768318 +18534387564 +18550028878 +13969981879 +15187425927 +18503015113 +13945016296 +13610867492 +13602999889 +18523909941 +18881538290 +15883883745 +15831927872 +18510897865 +15170810661 +15183240212 +18597909147 +13997743055 +18543804703 +15889127378 +18569102224 +18551805395 +18575124476 +15166589421 +13960292514 +18863625593 +18568730753 +13632459579 +15816738810 +18512890492 +13992458660 +13932416366 +13969015977 +15831917094 +13621799800 +13999316763 +13674976632 +18539281589 +15875809691 +13966351751 +15871425285 +15880842195 +13684195089 +18589814223 +15146565236 +15165843642 +18811942530 +15810140217 +13915283951 +13961339463 +13621980844 +18858745610 +15836674473 +18522352364 +15163079544 +15897223624 +13977348342 +13997123384 +13639573529 +18551076767 +13611366994 +18873690823 +13939379610 +18818971710 +15146515263 +13687275074 +15139703487 +13917472102 +13672910411 +18512417817 +18814365966 +15162727467 +15166260324 +18558716643 +18539924157 +13999815331 +18881045506 +18804273844 +15855896749 +13937095289 +18599884438 +15892120861 +13622791300 +13669878715 +18504773733 +13979543379 +18838513409 +18800484792 +13605766550 +15183275844 +15890735699 +18894447910 +18870345561 +13994276851 +15841429599 +13617775366 +15153526850 +13955210950 +13914904208 +15176005744 +15837696289 +13917481767 +13944400254 +15869261632 +18803335322 +13681558577 +15857692926 +13605921765 +18867684497 +15148002548 +18885217271 +15845208879 +13923862509 +13686142994 +15166017629 +13994701639 +13921760693 +18524101302 +13947403880 +15809220330 +18507144049 +13669764188 +15853526304 +18887465339 +13657245601 +15888374838 +15834157381 +13953395276 +18587530690 +15195594588 +15860493865 +13915703037 +13626853709 +15840496504 +18893150787 +13903349233 +15120138887 +18532126780 +18845819594 +18594346014 +13640407705 +13920237962 +18584018885 +15809278366 +18594060834 +15184435883 +18551347994 +13937686986 +15839243188 +13653443169 +13956186983 +18569153380 +18850560280 +13678665773 +18543981320 +15178844490 +15816832871 +18534034202 +13946745815 +18872226889 +15175116408 +18561611425 +15890159349 +15156424269 +13930265200 +15894991319 +18816014603 +13953995953 +13986138774 +13944125781 +15805159347 +13950005314 +15848169514 +13657240542 +15122848570 +13909805765 +18885026277 +13951678078 +13963164852 +13988127162 +15193288997 +15888594429 +18599580449 +18809633184 +15153446677 +15808480550 +13924630464 +18824496248 +13637575372 +13923648831 +15868410393 +15124542333 +15813580100 +13943243625 +15818486010 +15190437638 +18593321861 +13656025591 +13697496184 +18827657107 +13690678883 +13605067457 +13914161403 +15183542098 +13939670012 +15143348493 +13937060534 +13658543882 +15123574657 +18829707237 +18861320271 +18865208522 +15105072983 +18856042770 +15148694827 +13964806831 +15180917167 +15805262356 +13998109412 +18528239773 +18839026597 +15135300994 +18590523460 +15151144615 +15155189132 +18835468230 +13670832488 +18815955939 +18531616630 +15845529030 +13949493123 +18805011205 +15155632672 +18508985787 +18540255083 +18556809949 +15142828358 +15874558649 +13638157771 +13955769773 +13906974927 +13609162666 +18872033319 +15821833096 +15870612525 +15130020699 +18862369123 +13651914751 +15898498444 +13690415346 +13927749623 +18577971204 +18863636033 +18554005859 +15107970593 +18840701817 +15123977967 +18826428389 +15158758330 +13607197190 +15116007834 +15878617643 +18517241525 +18570932900 +15141208236 +15802608894 +18804460649 +15198951389 +13965343869 +18888383967 +15834079667 +13669772486 +18892855568 +18514025236 +15871123928 +13977179534 +13932356598 +18868393205 +15872927433 +15805075237 +15165466829 +15820801895 +13934602413 +13684558932 +15124824872 +15841079806 +13937158955 +13924530535 +13626161411 +13961867980 +15811458978 +13678017877 +15816123710 +18562901733 +15146663823 +15136477775 +18861451398 +18591983595 +18582507115 +15176511158 +13953436400 +13649071030 +13908790004 +15111416773 +18583668991 +15152242322 +18899287445 +18870317478 +15811024578 +18872692115 +18865374508 +15893679409 +18871695294 +18577293740 +15102914885 +15874019680 +18557074710 +18579236021 +15168382699 +13625789629 +13618736770 +15861424081 +13985202449 +15808485027 +15120946297 +13627158567 +13981230924 +18537670886 +15159544302 +13955826908 +15105460239 +13660087902 +13674961000 +13903056959 +15873903141 +15100035163 +13680702172 +15845819337 +15162933579 +15864483119 +15852224332 +18869906374 +18890927182 +15883563174 +13910484045 +18889147008 +13678698652 +15160803746 +15835828374 +13610089220 +13966645611 +13919833288 +15110768819 +18557498164 +13610798378 +18837108304 +15105415326 +18500092578 +18515871716 +15829183336 +15164905280 +13993384204 +13996012798 +15834007873 +13672074380 +13970938366 +13936997279 +13935735255 +15818539912 +18876124879 +15862064736 +13617658824 +18888568638 +15854860868 +18815806163 +18577041460 +15169965824 +18509380938 +15870978388 +15157427830 +18875859885 +13676840971 +18825651744 +15140942632 +18500339497 +18560954345 +18597567520 +15113952918 +18528378145 +13913853907 +15896476316 +18543364270 +18830119467 +13656652719 +18519560137 +13930177912 +15101703708 +18849800462 +13913999493 +18576106636 +15115215866 +13614834572 +18849632079 +15186668966 +15890392083 +13921843497 +15890826006 +18819004929 +13697797191 +13643328087 +18823116104 +13647457093 +15130222110 +13692954028 +13638436906 +15190106542 +15807547488 +18810342862 +18866981011 +18540798610 +15808673691 +15173779409 +18895254775 +13619582355 +13668193762 +15143534519 +13640090152 +18880367988 +18538511529 +15118543260 +13664258784 +13968537625 +15123362777 +13926022921 +18538017854 +13924132026 +18862540089 +13986707663 +18860989894 +13680760041 +15810339292 +18564906010 +15160686105 +15813404427 +13621232886 +13942719405 +13649894062 +15864486849 +13930136141 +18538708286 +15819318050 +15857180569 +13616405557 +15828035254 +13669751210 +18539476531 +15848363142 +18890739038 +15895113342 +15193661755 +18553876680 +18855245397 +18836859859 +13935811501 +18832567854 +13664203655 +15193424755 +15829461199 +13664199226 +18542420117 +13684310094 +13998972007 +18857821237 +15879085889 +15842889755 +13988414999 +15860759831 +13934474857 +13920730148 +18829995113 +18832259680 +18574566651 +13940671892 +15802301945 +15103980067 +18502970741 +18532537855 +18558840062 +13967254557 +13948859137 +15171430117 +15846922173 +18866344169 +13657134800 +15179762131 +18813042165 +13981304575 +13918806623 +13665647126 +13673983756 +18520798985 +13699896726 +18557945135 +13981602612 +18568443672 +15109969822 +18851534666 +15839960661 +15191526471 +15838947280 +13657003058 +18544230123 +15847242278 +18863987425 +15105857071 +15130794263 +13680849811 +18808206649 +18555663633 +13974248679 +13976121313 +15814362771 +15858890997 +15893209586 +15859882433 +18592200228 +13988083853 +18554654890 +15114909072 +18800993507 +18525971230 +13911077935 +18567885408 +13952062757 +15854659940 +18832986531 +15127506276 +15814062719 +13629133286 +13962053163 +13977741333 +15814616376 +18580824719 +18516568759 +18569095425 +18884986740 +15122260591 +13664419302 +18596435079 +15127998502 +13628894537 +13903618568 +18564596172 +13937712241 +18573293672 +18803390050 +18843358623 +13664374521 +15115900773 +15819543881 +15176687937 +13642647853 +18511162093 +15875073464 +15124594846 +18589618640 +15867718177 +13670520200 +13633210959 +13987315488 +18528143739 +18540621543 +13927146010 +18579767526 +18563174931 +15875893451 +18554084690 +18897570349 +18522321441 +18592646274 +18557289495 +13695552522 +18816544797 +13964726243 +13663012041 +13945845876 +13920238694 +18506485809 +18881220836 +18861285929 +18827691100 +15122928475 +13948693321 +18501128870 +18813936417 +18563084015 +18843303168 +13932450788 +18895901612 +15139869616 +15141805592 +15166469782 +18846563988 +13618614584 +15102534910 +18586449373 +18574955700 +13977606279 +15861483125 +13918491400 +15879635151 +13982342829 +15198474613 +18853109348 +18873875465 +15854211451 +13612451845 +15142054518 +15827538605 +18845397025 +18899987006 +15171310290 +18818349692 +13997037380 +18501010798 +18850983966 +18541973194 +13633692171 +13694602555 +18549520053 +18878028463 +18540423462 +15132009903 +15818460605 +15883406683 +13969786260 +13656928905 +13939420823 +15826551305 +18819344010 +18519189456 +18592983190 +18899388141 +13661854201 +18824827513 +18863550939 +15805728574 +15817808346 +18877419706 +18837307576 +15881364304 +18530343739 +13647668528 +13651741748 +18589876542 +13940802632 +15114012607 +15102045233 +13600854220 +18534004093 +18897548477 +15188541421 +13670819940 +15197155624 +18556080162 +13685705312 +18827232790 +18571157381 +15191469379 +15157155637 +15819140607 +13681973713 +13627952518 +13670890356 +18819024109 +13986035136 +15147711272 +13970147024 +15196987927 +13933926903 +18810485822 +15127309508 +18816129877 +15842462141 +18817964861 +18561334263 +13969168737 +15858794615 +15856247950 +13639616356 +13979432870 +18870232298 +18508183790 +18554980683 +15885754102 +18897567260 +15866811711 +18569661249 +13643372531 +18590707366 +13617072475 +15182517212 +13619036292 +13909656546 +13672934023 +18576497058 +15884928073 +13648573490 +18887819573 +13629868308 +13966830160 +18829454519 +13970624371 +15854835601 +15139060316 +13971755165 +15861030258 +13984814977 +15152104754 +18849252011 +18808577736 +13609117773 +13987954244 +18586013440 +18884325533 +13991515423 +15802780905 +18535425392 +18573429131 +13904336771 +18825958330 +15175477974 +18501091624 +15853364375 +13631620157 +13618352164 +18507062404 +18532050077 +18591040755 +18896529990 +15127518830 +15190970503 +15102698731 +13911000898 +13965245446 +13963242321 +13963297373 +18549157243 +18801987893 +18865022781 +18831445165 +18892137844 +15803046360 +13695077925 +18539152499 +15110542761 +15864299845 +15111015427 +18573304587 +15847136316 +15183385029 +18512243974 +15806916766 +15899707323 +15822064495 +13946998621 +15801614903 +13907368236 +15117673422 +15195076379 +15181810259 +18845791840 +13927521586 +13685066854 +13651832941 +15155169597 +18888891659 +18546067704 +15834904782 +18572007878 +15854198872 +18829671736 +18815592268 +15110752806 +15152857479 +13994101334 +15854077867 +13933909911 +15806562792 +15806431556 +13954706770 +15191616839 +18554408172 +18514193154 +13617721646 +18509563641 +15859015157 +18547372838 +15806013182 +18548029027 +13684971969 +13643571683 +13637405032 +13626801908 +18824069296 +18862607921 +18832194736 +15877251257 +13953648770 +13666502869 +15195283977 +15881733572 +18875960410 +15195084569 +15104313931 +15815326335 +18516172546 +13911907351 +18538929558 +15850568620 +13694721222 +18518566463 +15898951300 +13676450737 +18850570859 +13628006183 +13652343520 +13919687446 +13665972979 +13976732408 +13960661581 +15819292564 +13699900727 +13660824654 +13911644448 +15828181505 +15174761893 +15170423777 +13915268220 +18858313011 +15810360308 +15142765073 +13971152834 +13943958399 +13678586518 +18819396040 +18587518463 +18861230841 +15163954332 +18577956405 +18521135469 +13964834082 +13611745849 +15175122069 +18552814543 +18864030662 +13694376240 +13917842084 +15113760874 +18869942720 +18525653634 +13997188438 +15152707955 +18887241822 +13637103323 +18581861124 +18805187677 +18517980937 +15158122470 +13950930553 +15834087246 +15127280134 +18567886923 +13944951033 +13941022276 +15148177121 +18532501364 +13915813852 +18505997369 +15102632306 +18864750694 +13682809603 +13910851659 +13634462193 +15817404022 +13659125436 +15899779295 +15185979356 +15814094083 +13652166649 +13980166080 +15149206433 +13605780185 +13672130599 +13958568798 +13650605314 +18823389754 +15155118730 +15160218862 +13931014312 +18859680610 +18825777583 +15199195305 +18804283419 +13647131862 +18592061900 +13654053939 +15179854490 +15822815776 +15173920563 +13988305420 +18845127774 +18505072073 +13697897883 +13666710566 +13630198419 +18899795958 +15110128986 +15191205250 +18587888518 +13944613802 +13996115600 +15118959872 +13650758035 +15880347392 +18532509348 +18587993298 +15817579543 +13911813329 +13641063681 +15174442259 +15124184459 +13633000642 +13602965342 +15820092159 +13605617011 +15820666463 +18823745483 +15858704651 +15199107707 +18822314439 +13964092010 +15818218374 +13976969752 +13924596778 +18576095109 +18802055912 +15175039743 +18595098324 +18847951853 +15895148102 +18575301284 +13961913488 +15145914971 +13962173654 +15177245442 +13988679889 +18502864062 +15133791650 +15844004843 +18541420813 +18868681526 +18522922134 +18808783553 +13643574670 +15183788829 +13624257397 +18551254947 +18585581811 +18865716815 +13682166079 +18871766481 +18884774067 +15161825275 +18814563679 +15165257989 +13924603872 +15898245068 +13931671835 +15199979824 +18571892112 +18813727765 +18836754549 +15171297117 +18564397118 +13938031256 +18539920722 +15831616752 +15183924776 +13949722128 +18865412398 +18506221214 +13664202316 +15891886305 +13974183320 +15815801837 +18565336244 +18835732219 +18871432812 +15151769728 +15871213419 +13645386868 +18587201128 +13998871424 +15870996455 +15825523834 +15885724329 +15148384581 +15193758327 +15159584032 +13996358298 +13951434105 +15150960221 +15822743470 +15828511751 +13994622709 +15864003131 +18528017578 +13911219728 +18833571162 +13955518363 +18896815057 +18535830807 +15868300287 +15142833277 +13610273426 +15883306315 +15172849311 +13923605028 +18505320902 +13900841543 +13676858925 +18556632534 +15854788899 +18833798936 +18835533431 +13911188636 +18850833209 +15180544014 +13942120528 +18852585501 +18877272625 +13616656759 +13950917110 +15191648454 +15125696296 +18503784567 +15109000235 +13914193216 +18582896774 +13686814099 +18895673625 +18514375020 +15178271946 +13667058021 +18814287838 +13652217500 +13656480437 +18596223962 +13661351150 +13915455091 +13971708095 +18576639438 +13655300724 +13905868934 +15846313824 +15813592017 +15119187487 +13689778892 +18569553072 +18594852927 +15110725104 +18839322155 +18848381094 +13957028449 +18565395040 +13688609176 +13653363824 +18810840269 +13608506194 +13917732963 +13976753169 +15101687269 +13665991997 +18841002334 +18566458213 +13692743664 +18507633235 +18555386391 +18842862584 +15832209154 +15152171335 +15139074942 +15884157842 +15173259717 +13933059909 +15104080525 +15853344855 +13670054008 +15879588632 +13919426385 +15806345395 +15197004548 +13662229488 +13939025774 +18840249987 +18511434601 +15877904801 +13674454774 +15881660228 +15171728683 +13975665596 +15106486477 +18526110797 +18576123132 +13960762600 +13655855273 +18820552387 +18548116479 +13691847965 +15852812610 +15881039212 +13618727069 +18840737530 +15864135671 +15128496470 +18503877797 +13911303912 +18546834113 +13913154334 +18513913291 +15107725538 +13669413441 +15146640607 +13945403214 +15895329934 +15801370900 +18896633680 +18815994191 +15176403305 +15871447378 +18810558506 +13961505515 +15187174596 +18572683838 +13954700178 +15870324013 +15175683605 +13673447384 +15890273565 +15109905697 +15890783950 +15100082839 +18814743373 +15807616940 +18825639876 +15820579725 +13910695514 +15147945231 +18813816549 +13943510029 +18890747208 +13909667699 +15839213902 +18869040904 +15810796816 +15893733737 +15869669310 +18891486121 +13948732581 +13689977028 +13913091907 +15846544911 +13624746042 +15101709875 +15805798524 +15105448675 +13641035840 +15172453798 +13678351867 +15147971168 +15827072108 +18858414843 +13932760743 +13683853967 +13989389795 +18840686125 +13617684906 +18892589305 +18880345848 +18554004020 +15183794287 +15110584964 +13649485849 +13956627589 +13668188451 +18831846245 +15194279651 +13952082710 +18579045398 +13620548431 +15108328858 +15153101537 +13612303279 +15196370873 +18526937047 +15833257193 +18811818466 +15137006500 +13996863448 +13608462088 +13980839558 +13641333476 +15858771692 +18810332207 +15185620894 +18856158182 +13990528883 +18889189744 +18892568156 +15844502345 +18530981994 +15836686968 +13908987853 +15190434586 +13645040677 +13955171584 +13936677898 +15809467031 +15129797099 +18594253820 +13962162104 +15185701748 +18586961276 +15813144833 +18521617400 +15803564110 +13914176719 +15854737756 +15892521636 +13644629027 +13612642313 +15897274431 +18853751034 +13946697951 +15818478123 +18813398237 +18840901699 +15169757974 +18527211182 +18570437606 +18805512685 +15898543267 +18583875470 +13917691507 +15837106092 +15841856069 +15899238209 +13624487314 +18568519097 +13942173050 +15879140619 +15153402489 +18510886176 +18887689588 +18849630318 +13649480171 +13924968899 +18502901975 +13643533124 +15199740259 +18562711859 +13921381537 +15833520831 +18857652887 +13614643094 +15809083044 +13689313398 +15802411088 +15141615824 +15190186241 +15847402338 +13943035273 +15119115845 +15871781342 +15171756300 +18877137094 +13627991410 +13694585591 +18515175255 +13974967805 +13654357030 +18589445472 +18554521859 +15175698147 +13657391878 +13607853353 +13622660145 +13965010825 +13973295915 +13963035289 +18564665744 +18836125883 +13921552261 +13665138360 +13627303965 +18883170757 +18522759494 +15823415710 +18562031559 +13916022420 +18574049254 +18856733353 +18806602811 +15879873793 +15137628502 +18528796425 +18586656374 +15898953532 +18844304248 +18833647268 +18508537712 +15156899457 +18577771468 +18518369150 +13655972151 +13926917783 +15888043549 +13983584020 +18833727432 +18504882665 +13928554334 +18579339639 +15154424335 +13609025503 +18578167440 +18508942595 +13979786962 +13679971181 +13924392764 +18803474714 +13901360683 +18533164073 +13650588726 +15892225308 +15835732074 +18874308223 +13921574713 +18508454180 +13605310913 +18561352890 +13618516866 +15840057438 +13631957709 +18534719709 +13611003730 +18875631125 +15107262357 +18859337199 +15874038033 +13651532343 +15863679272 +18885510359 +18588388624 +18843136055 +15183202026 +18525806896 +13916121056 +18889231324 +15836061403 +18521343827 +13923699964 +18893566389 +15165881350 +13931625812 +15121159189 +18855891092 +15891070531 +13994479860 +13990794304 +18858259110 +15198518639 +13952992107 +15892948423 +15893927210 +15881895201 +15124789626 +15824327076 +18509146412 +15863560887 +18887910225 +13618077133 +15159931752 +18881903766 +18540903820 +15104726422 +13980367396 +15816755873 +13688450831 +15848567024 +15194968920 +15192557824 +18826040332 +13636848741 +13647931304 +13608350706 +15190785122 +18534539650 +13651252153 +18580211148 +15121976112 +13957717634 +18503069197 +18883558565 +15841521488 +18526747232 +18881158943 +15880620578 +18880373948 +18513918459 +15880456702 +18526313004 +13999458203 +15802669955 +13977323837 +18811472597 +18894142779 +18542132448 +18889566756 +13976474061 +18533021718 +15841988106 +18546439229 +15860469510 +13974389911 +18809411765 +15186207180 +15137979813 +13909646991 +15871108242 +18552778013 +13933029618 +18577834926 +13974682351 +13968454858 +13926507724 +18532397535 +18530037151 +15190934739 +13971396869 +13664000226 +13636653339 +18581241474 +18598921191 +15108757218 +18582883526 +15139093446 +18555367845 +18573465111 +18544337661 +13675419837 +13614100326 +18800477582 +15865891240 +13946645570 +15165891271 +15809843102 +13945558048 +15882580354 +15159408147 +13652408764 +13617400873 +15157787289 +18523885107 +18859274268 +15100074375 +13642163892 +18837828295 +13692480218 +15873313471 +18570156132 +13948961978 +18575359868 +15827866076 +18571862993 +13698837607 +15884990207 +13624179030 +15847235658 +18817308199 +18865094298 +13631306827 +15144701114 +15840523796 +15103592499 +13698649310 +18885414545 +15117811535 +18806910448 +13968366139 +15813116355 +18894384969 +13922071114 +18831977099 +18576184855 +15859484965 +15139083414 +15164014748 +13998713296 +18558800252 +18895957526 +18862135312 +15135347984 +13686426043 +15127038811 +18599846267 +18804798330 +18513349638 +18559839833 +15106818978 +13981013220 +18845850767 +13644625439 +13931844517 +15146564335 +18522059219 +13990140326 +18557883718 +15834318998 +15114927639 +13922252173 +18588255359 +18554958788 +13995884897 +18568876275 +15139863440 +18574104218 +15195959948 +15896817805 +18833929602 +15879281889 +18548799094 +18576148269 +13638924463 +15879256459 +13979303931 +13620579786 +13605086072 +13960542817 +13690264907 +13685599996 +13683399025 +13698664331 +15896394459 +13939844709 +18576055015 +13627225184 +13936928005 +15114394989 +15848498659 +13606138847 +18556493831 +15136634602 +13944125806 +15154391221 +13963841987 +15184165179 +13650510008 +18817552449 +15112242966 +18873598699 +13692969643 +15838889456 +13696393984 +13634663236 +15129504982 +13687628159 +18808005474 +13962309667 +18583067488 +15177518868 +13671280282 +13974096118 +13661592348 +13970803115 +15118753897 +15807032916 +18599274378 +13948720079 +15806177270 +18529462638 +13920612451 +15126793085 +15194366411 +18896434657 +13993770985 +18826428166 +15110194575 +15135525439 +18564070397 +18509603822 +13605145054 +15810456788 +15170919608 +15117308424 +13617718725 +15801710260 +13917503205 +13939857676 +13664569491 +18827299270 +18577781505 +15833379248 +15804827322 +18512376230 +15132481197 +18895233669 +13967020007 +13675109554 +13941507367 +13637308439 +18855460301 +13966441304 +13935271389 +15163982551 +15897197648 +15809236307 +18889323758 +18881171234 +18842268450 +13922382777 +18899525841 +13926092677 +18805144782 +13698876440 +15882862141 +15804844989 +15179020820 +18806767292 +13665540555 +18806236546 +18810575799 +13936022849 +18801639621 +13692665658 +18811171895 +13901264577 +15166100643 +13606991999 +15892320747 +18897754111 +15828423767 +13612058559 +13644376594 +18817791264 +18893772164 +15816264310 +13615577031 +15835269840 +15181226249 +18511198420 +18888090974 +18807022854 +15895663928 +18853363443 +13699547436 +15836653121 +18521414733 +15166149550 +18881489465 +15152787449 +15829130696 +15848232455 +15138689249 +13914181537 +13635063192 +18884409954 +18896870363 +18813339457 +18563366806 +18585256999 +13995444468 +13927845017 +18567367372 +18826544930 +18577638191 +13670405219 +18887456389 +15811201720 +13630205159 +13993294557 +13665294898 +13971376934 +18827495562 +15835538517 +13951157238 +13947691594 +15890090134 +15119482170 +13908735736 +18554572223 +13945976242 +15175004444 +13621734547 +13996198910 +15170111455 +15861146371 +15839731765 +13951905195 +18880911053 +15155429015 +13678553282 +13920649069 +15125951077 +13966152507 +15193762811 +13611405845 +18500170126 +13927609467 +15137768075 +13651708040 +15857073909 +13695352337 +13673768289 +13649214089 +13900591531 +13953087850 +15176272335 +18562367257 +15896635285 +13660098527 +18879058799 +15842226604 +18863719832 +15897678055 +18528657170 +18819799938 +13965070426 +18807797431 +13933326723 +13969919705 +13615081032 +18572083998 +18548833270 +18523448361 +15849609053 +15153940678 +13987246825 +15160460511 +15147605483 +15135389029 +18817896882 +15891668192 +13670921233 +13955028210 +15858060383 +13991075035 +13612535806 +15845957082 +13663977528 +13624859603 +15888655748 +13610260082 +13668628991 +13991463007 +13988922420 +13639338779 +15882432779 +13981841792 +15821011782 +13638513621 +15184637767 +18839152388 +15141701847 +15144775701 +13645943770 +15160104584 +13997233600 +13966598997 +18596078665 +13997273713 +15148282070 +13609579557 +15161233866 +15882443871 +13984512803 +13991174927 +18883799549 +15186245837 +15876648357 +18801796331 +13657690512 +15809946961 +18581825684 +18546080086 +18531499400 +13644292399 +15150019863 +13937676285 +15192550697 +13687378021 +13695830865 +13915534990 +15850321961 +13910035398 +18864063538 +13920473003 +18869367287 +15127344241 +18888895449 +13677119303 +13695107286 +13945932654 +13638471971 +18582855774 +18856849939 +13979030041 +15173095556 +13932486432 +13637725926 +18580496902 +13957260158 +15804098489 +13626463094 +13955611185 +13908086140 +15150351541 +18527729070 +15894647826 +18506117862 +13687440133 +18554072341 +13619605901 +18546081893 +15817084088 +18567427345 +18883402274 +18869141209 +13630671655 +18871790544 +18595791213 +15869212999 +13675709467 +18803530765 +15872301331 +15830151815 +13634926920 +13963566741 +18507769533 +18830845625 +15150969708 +18880940652 +13668107755 +13630283150 +13622861525 +13669528690 +13913667415 +15818211654 +18574561999 +13679371723 +15844831947 +13918941358 +13920117651 +18800012891 +18883955005 +13913107393 +15840227498 +13936828930 +18517470546 +13689779414 +15114403306 +15885149809 +18855502122 +18842263095 +18568242862 +13939749348 +13632912236 +18877435678 +13953087787 +15170921344 +15113607670 +13993235129 +13619642296 +18522128528 +13976107228 +18549375302 +15129085909 +18852442685 +15811385893 +18885227604 +18882809012 +13641226043 +18856808877 +15870765387 +13690598693 +13958748328 +15843183627 +18849919119 +18810721207 +15898392923 +15128080118 +15827563598 +15868492929 +18503911612 +15147935260 +13628913069 +18875605762 +18898255900 +13676260592 +13645645845 +15138172075 +15813373899 +13933382172 +15804219909 +18543467628 +15878176455 +13664667813 +18543780323 +13642990434 +13639969446 +13956508001 +13622101217 +18809188444 +18807245802 +15123221295 +18582754887 +18506178143 +18558394093 +18586422956 +18597112794 +13688121701 +18543304278 +13982493468 +18538686624 +13610443023 +13643148032 +15124979362 +13913594441 +13922055834 +18848125307 +13663688036 +15142989481 +15199365133 +15819648464 +13626996350 +15899252597 +15194314933 +13677926509 +15102617278 +18860745145 +18818329852 +13606561642 +15894730391 +15894815241 +18831592261 +18865837961 +13955180038 +13988257868 +18868734976 +18569455932 +15889302435 +18580520204 +18506839706 +18808342643 +15189405321 +15167479208 +13674945569 +15185299426 +18584810134 +13966300915 +15825008754 +13631055707 +18516459305 +18582175491 +13977861290 +18564676115 +18575396012 +13927929134 +13629685122 +15859262699 +18892916823 +13937628449 +15113288810 +18883671607 +18585767332 +15866211802 +13910611502 +13698061310 +15874333731 +13623171814 +15850744596 +15867797569 +15891106621 +13612204504 +13953500362 +13925238595 +15137613320 +13986092934 +18827453397 +15859033280 +15197279353 +15133980256 +13699576417 +13935807641 +15830165825 +18811539608 +18592670683 +15130739394 +15162964881 +13927169604 +13640028343 +18834230249 +15877875796 +13987048634 +13619485594 +15145846029 +13949626989 +18858785164 +13999913462 +15810478910 +15114286706 +18541848194 +13913772636 +18857934542 +15821715066 +15817659765 +13937317796 +15843269187 +18814385316 +13601441889 +13613385171 +13927852492 +15845990098 +13915505744 +15816023473 +13978151221 +13617855454 +15157947623 +18597751237 +15803351123 +13934268094 +13671780844 +18840995760 +13682966363 +15155115865 +13904744261 +15860824526 +13957893254 +18577844883 +18813617302 +15158032805 +18506624589 +15819000366 +18837147475 +18585405933 +13693156217 +18801862416 +15847123114 +13690329849 +15195390520 +15133571264 +13692727777 +13675667744 +18812395502 +18840801435 +15169799937 +15872032265 +13679413145 +13689863391 +15857479838 +13998625089 +15885573247 +13942191206 +13972971691 +18808270849 +13686615559 +13939732968 +13651102447 +18814883192 +18563966284 +15820594398 +13963365305 +13635377714 +13926827686 +15190728677 +18836738829 +15104284572 +18552463689 +13679503954 +15891152991 +15131746663 +15821609556 +15158321403 +13986624595 +13673233410 +15154341469 +15160269053 +18874247592 +15191678216 +13994345076 +15880769882 +15807629030 +13976920107 +18870988035 +13677019012 +18584615735 +13926338680 +15837281080 +18506496215 +15107297381 +13651415119 +15878018090 +15863038656 +18896365027 +15118890305 +15860911192 +15141889841 +13633814619 +13659266081 +18563045018 +18854854460 +15878388872 +18509198138 +13977366627 +13935178480 +18879923468 +18868843514 +15124847442 +15830336107 +18557741981 +15191128606 +18857314462 +18826015707 +13911454176 +13973295792 +18590958673 +15131664624 +13912875756 +18558507418 +15103590319 +18895240793 +13641211789 +15168043374 +15124892155 +15810586308 +18819845117 +15138124539 +18835365002 +15836326217 +13670392474 +15834710760 +15829219692 +15107607474 +13976037383 +15860728862 +18818472324 +18545270420 +13675661412 +13643832340 +15893658762 +13654047453 +18807675919 +13936743533 +13684328151 +15162711523 +15839002954 +13929809097 +13664378272 +18890383688 +15107091722 +13964008010 +18834021924 +18882957439 +18536539058 +18531976887 +18523920091 +18565950141 +15891964833 +18538439782 +18806302257 +15181036717 +13977502840 +15161116276 +15818409409 +18892267575 +18508111109 +15124077357 +18500123404 +18582491738 +15157027521 +15831084880 +18848953640 +15896479833 +13928582039 +13942648349 +13979343044 +13692333510 +15828359092 +18567762264 +18580418729 +13662656075 +13632261284 +15847406023 +18885204950 +18829430698 +18552263752 +18503252199 +18540529443 +15157709717 +18807588334 +18503242693 +18827343937 +13953150217 +15833362571 +15859338511 +18552884711 +15184212593 +15113254479 +13639869124 +18506198662 +15195222336 +15141277148 +13913633212 +15143419947 +15148050341 +13972078871 +15874198802 +15100332981 +18574660152 +13652565563 +13908352079 +18889073927 +13964532928 +18815621604 +15154552420 +15176835293 +13957226029 +13913055081 +15138713001 +18565291841 +18534677023 +18575423214 +13624575441 +15830351529 +13981767773 +13675704601 +18839177795 +15899903034 +13953320436 +13664173807 +18819823053 +15112275874 +15895741989 +18879444616 +18513146178 +15869304179 +15154938860 +15837220031 +18528622680 +18851931513 +13629802848 +18576009750 +18866366298 +13990416137 +13687121822 +13982644786 +18847882360 +13933893705 +18868854941 +13645373029 +18557779180 +13984804624 +18598492707 +15887716502 +13961043575 +18563339767 +13617689561 +15853934534 +18871876579 +13970492416 +18546238944 +15884269198 +15863574436 +13628257338 +18586700270 +15851544772 +15878035944 +13671835093 +15101767482 +18559447771 +13987578378 +13691653179 +13608712157 +18880102029 +13983766994 +18564251838 +13648053352 +18573397262 +13938389573 +13927610512 +13603396265 +15840845303 +18861878769 +18836235218 +15820203961 +18845851475 +18582345421 +13971405583 +13673214730 +15895616725 +15810256967 +13953774740 +15144410412 +13918272307 +13656642003 +13997134211 +13923822653 +13647792957 +13981134126 +13958159469 +18551986005 +15858880052 +15127398564 +13689523750 +13666137594 +13905482030 +18858621332 +13651153515 +15159050757 +15886152162 +13915330998 +15113603059 +18585392156 +13959201620 +15110311424 +18511530095 +13950828366 +13938132575 +18867053719 +13676599726 +13642400508 +18867975401 +13935933374 +18888120753 +15802171616 +15883489852 +13638077562 +18811300935 +13680656430 +15158418016 +18801681317 +15155649888 +13606840865 +18570069143 +18554953699 +13947608758 +13992864412 +13968907613 +13941595275 +13956911699 +13637656581 +15184946718 +15159109300 +18811805087 +15855318378 +15817185161 +18521094806 +13966915948 +13665087985 +15142995186 +13950863840 +13676987724 +13980982148 +15165049348 +15880883247 +13971756375 +15152225430 +18815534943 +13634894483 +18877900921 +15831688037 +18527679633 +13625978774 +15174393158 +13694195576 +15871105468 +18598848821 +18866820405 +18569040010 +13680560042 +13614612086 +13981216194 +15111741237 +15142166053 +18529019243 +15141914173 +15851218427 +18815239485 +13946576563 +13930567247 +18849527605 +13631006741 +15858495258 +13692506351 +13664868296 +13997487365 +13679686400 +18510359978 +13657436081 +15891177950 +13610909810 +18522963594 +18554158661 +15857793129 +15131152411 +13628198369 +13675274151 +15841880368 +18820053268 +15102306179 +18574669190 +15195720392 +18589438182 +15127779724 +13908118677 +13693573417 +13963167491 +15850943335 +13674742651 +15851234032 +18872478338 +15132762240 +15879908265 +13682002201 +15188010654 +13945043644 +18869623541 +18894953396 +18888859677 +18542307443 +13979758257 +13697844753 +13901636428 +13934660590 +13961999562 +15161921689 +15139688998 +15872359272 +18559579480 +18529964151 +18531955167 +18516266762 +18566825485 +18568865421 +15896647486 +15121182083 +18859185593 +18509330568 +13603951970 +15882836554 +18550123296 +15197448906 +18575498978 +15175135973 +18892986775 +13606670645 +13959924869 +18563825278 +13941362041 +18899269729 +15112641004 +13645031941 +18568829657 +13686280409 +15117078417 +18507782460 +18850685717 +15120388870 +18598291835 +13934501482 +15159127779 +18884021629 +15884408160 +13647359076 +18847232543 +15144980459 +18537031464 +13625694249 +18832942384 +13631885509 +15197223221 +18841142245 +15141472944 +18581432245 +15894795306 +18855615897 +18887685847 +15126221909 +15820060795 +15814936952 +18882291383 +15127333343 +13658787150 +18829110079 +15146240875 +18857140918 +13692732694 +15156333707 +18899904539 +13902179031 +15187065847 +13994532907 +13644006181 +15880402507 +15125657543 +15107366682 +15182187782 +15836208583 +18828449174 +15829811761 +13608792264 +15127358530 +15824430017 +13912602731 +13607915973 +18807045600 +18840975077 +13683751758 +18851095207 +13991296205 +18814072906 +15846275419 +18888637657 +13916908706 +15838301162 +15821419107 +18825041072 +13652310340 +15163563907 +13657582744 +13682066077 +18819315455 +18525062517 +18564510484 +18532929631 +18549574004 +18560227871 +15180325886 +15894305513 +15819732655 +18856761505 +13695328620 +13974418077 +15123354457 +15139711702 +18588235940 +18589199276 +18533176410 +13649767140 +13919995624 +13940368633 +18874802722 +15117756189 +15156049979 +18555733342 +13924819886 +15170783082 +13983112453 +18825430025 +18800429963 +13953897334 +18588658753 +15199935597 +15164584176 +18551216135 +15880057144 +15813955322 +13619693964 +13931492550 +13668277686 +15872643711 +18559396485 +15857122239 +15150709874 +15190908650 +15154631400 +15800264986 +13655309714 +15161742376 +13669672854 +15874591193 +13967052523 +18582787928 +13653568692 +15126710706 +15195343992 +15164050364 +18889840869 +18834658550 +13967280424 +15864024369 +15105803890 +18501606693 +18843899518 +18500000902 +18877465634 +13683463886 +18597211140 +18502995367 +15102147025 +18848511847 +13653579228 +18531515469 +13679700576 +15842826472 +13685106130 +15836830759 +18867803302 +15888796416 +18818383131 +13962714730 +13679459164 +13683840597 +18851170413 +18842587263 +18895961392 +18858459281 +15170459601 +15144288154 +18535514264 +15139393465 +13634772536 +18851437401 +15171455829 +13689052315 +18843577151 +15846311950 +15136640482 +18881098607 +13619002413 +13676995565 +18884493904 +18875301780 +15185746866 +13995787670 +18886152568 +15102301482 +15883584989 +15874978286 +15167914883 +15821410398 +15836173892 +13642448083 +13655341398 +18502518746 +15110700787 +18800984579 +18513568753 +15157650592 +13988841443 +15835714934 +18837567627 +18810908851 +15127806022 +15814320153 +15857339837 +18531159937 +18826085916 +15198400687 +13935438994 +15162738879 +15160847341 +13949439196 +18851194208 +13684888414 +18500713353 +18813458465 +13934486795 +18863955747 +18818160011 +18571149237 +15116527263 +13625402033 +18592619190 +18827378291 +13934913837 +15137862547 +15176775925 +15142377657 +15801641443 +18575446640 +15847805280 +13695717261 +18576992449 +18519665990 +13655217763 +13927051231 +13654043520 +13602738895 +15191999615 +18564439467 +15850636380 +18826646498 +13689143067 +13924045965 +18581749476 +13991777291 +13939577002 +15842841365 +13668820966 +15138533544 +18513526043 +13957229549 +13919314823 +15152458632 +18849837927 +18883701897 +18502237690 +18596575383 +15136585116 +15826398545 +15804325447 +15805590795 +15891025679 +13982587108 +15167025002 +15812725610 +18577549720 +18524065385 +15810567369 +18520500389 +13997971548 +13996333935 +13605712739 +15893496513 +18839591561 +13680924715 +13932816900 +15186866399 +13695724721 +18574536046 +15846979977 +18551194867 +13685996707 +13632996410 +15856422479 +18858426894 +15835543634 +13901957731 +18819188223 +15199895156 +13642360231 +13694649356 +18835918424 +13694239204 +18871514056 +15109058987 +13646308949 +13957817939 +13949060183 +18866897429 +15832968966 +18845518681 +18517328146 +18851172389 +15895663676 +13909164029 +18516107510 +18838549531 +13690183517 +15136876462 +18850686052 +18579582841 +18504807904 +18594185971 +13637794091 +13929870141 +18524122305 +18501784319 +15880396912 +13653153772 +13928660926 +18891644053 +13970246707 +15856694346 +13643525394 +18830479738 +13980104541 +15131181850 +18509845304 +13608667397 +13678465691 +18837500163 +15141914701 +15185876949 +18821852703 +13656047844 +18819322460 +13986348533 +15187071287 +13674527737 +13946411661 +18857732616 +13922904944 +18567626725 +15824211571 +13693706759 +13974418729 +18854188994 +13651930015 +18813075477 +18504746148 +13903691231 +15882445978 +13645417203 +18834483806 +15848418215 +13947893323 +13637792549 +13678062441 +15198309730 +13925401210 +18511584587 +15117106020 +13983898080 +18826639977 +18556693786 +15148490976 +18588508632 +18881268279 +13654633687 +13925311226 +13640060298 +18570509419 +13985999349 +15192320336 +18858492959 +13629985331 +15126282721 +18583370829 +18897911114 +15113495888 +18598134239 +13925212677 +18544138764 +18831819713 +18802104711 +15814452654 +18503468064 +15883431541 +15885943164 +15139273489 +18522804774 +15841333944 +13667961889 +13670078767 +15184232602 +15856781551 +13657731422 +13975695868 +15894665306 +18861052453 +18532505136 +15841871661 +15155557434 +13975457773 +15168448009 +18517438235 +13649690296 +15108651722 +18880113765 +13933633254 +15116163742 +13641502875 +13971872102 +15839180646 +13961587603 +18870709833 +13961434204 +13603032110 +15109848477 +15198971294 +15876306317 +13995460660 +18816913777 +15106601388 +18560409155 +15849301349 +13635180409 +15141461400 +15192628496 +18870330894 +13961134436 +13965059664 +15110579504 +13935108772 +13998817508 +18554196104 +18865470454 +18523913024 +13984423484 +18881869988 +15101357514 +18535016398 +15188023589 +13645731312 +15844003897 +13944799996 +18882936552 +15830835818 +18857669503 +15196956853 +18824658924 +15107272747 +13931901279 +13635599914 +15154471765 +13933890795 +13934452721 +18840350839 +15810944201 +18896855774 +13674290505 +18513877138 +13999018156 +15105133444 +15162959445 +13969504581 +13653539481 +15141430588 +13926018484 +13976075191 +15105492331 +18890426319 +18570165456 +15131463516 +15848013671 +18859628794 +13676036963 +15112462822 +18555044536 +18872753595 +15865345825 +15815808174 +13952724058 +15878771254 +15154518874 +18559258740 +13963949032 +15896514024 +18839181375 +13987742399 +18536758361 +18555306596 +15818943993 +15142357284 +15870527966 +13974284552 +18865046106 +15174362079 +13698499656 +15118201642 +13632919617 +13985513636 +18872614115 +18861590234 +18550686818 +13680792584 +18594525854 +18510762819 +15865119676 +15872854268 +18511031458 +18533576806 +13609924283 +15898392817 +15120939532 +13945691870 +13630975853 +15899648187 +18512046605 +13986550420 +13605942125 +18535537525 +13616297643 +18554694672 +13912651328 +18870339955 +18846362938 +18555504852 +18872686396 +18560779224 +15118944507 +15173619867 +18827959003 +15184329196 +18837540813 +13978262008 +13632060427 +13682862591 +18537834614 +18893215661 +13684024317 +18500610291 +13699295762 +13988225721 +18869462648 +15197550007 +15857442258 +18566438287 +15849930345 +13988924640 +13620666237 +15837866898 +15108243150 +18574806181 +13601282984 +15824576357 +15164300579 +15119059214 +18507331417 +18814666650 +15889060867 +15189826735 +15871184173 +18866281201 +15804133342 +13953969693 +18524650405 +13990568449 +15123464688 +15848496172 +15843642867 +13918812822 +15196313302 +18594482398 +18525616652 +15827061455 +15850766633 +15158302748 +18828721630 +18810128253 +15133811240 +13924780656 +13674154090 +13985277992 +15154202143 +15101802383 +13921979377 +13992707543 +15822259067 +15174989429 +13975135579 +15154709094 +15808718051 +15841924431 +15144367440 +18530789110 +15133148061 +18889988853 +18814308714 +18894140399 +15852976836 +18816347945 +13907598312 +15143707459 +13626088460 +18821274493 +18518865993 +18520256909 +18859623782 +15103985290 +13628870374 +15156383369 +15854614882 +18875812118 +18563450440 +18593500167 +18548911787 +18845059991 +15817957390 +18841578708 +18838008390 +18825034873 +15873853047 +13610923276 +13906564354 +13926549907 +13940829530 +15125149222 +15113601922 +15189502611 +13999496033 +13647451225 +18803659080 +15150553514 +13976039642 +13919596488 +18815257239 +13628962381 +13660173980 +13647274377 +15136181274 +13659953620 +18889303710 +18541660872 +18833207472 +18894211324 +13693903684 +13948594861 +15101833952 +18869994292 +18876727375 +18891975759 +18880789227 +13624658799 +13904769664 +15165808365 +15192381001 +18836796786 +13651540772 +13665883398 +18844314621 +18553324225 +15890971536 +13930933836 +15850778451 +15199927467 +13659619296 +18530637531 +18852103735 +13934004155 +15866841357 +18562224953 +15135314972 +15895307181 +15849365508 +18841323756 +15814925831 +13627736138 +18841774493 +13685609896 +15167392802 +15103344820 +15814410210 +18807402111 +18820782577 +18869378864 +15826597344 +18844759655 +15160211972 +15869913238 +13637260495 +15119143146 +15894275173 +13925685101 +15144146459 +18541368134 +18540598813 +18889285909 +15810947723 +18842782494 +18830903510 +13905346162 +15814373704 +18570770614 +13671795409 +13971686156 +18570181842 +15164301006 +13666231374 +13647843934 +13965868240 +15838660403 +15188385400 +13692832144 +15882306649 +15110969694 +13994106188 +15841318316 +15140789101 +15126938451 +18551253983 +18834896524 +13655996788 +18558885208 +18806761907 +18890023978 +18861401700 +15123127212 +13630709645 +13903885170 +13979143853 +15148343177 +13667129135 +13688623842 +15899053129 +13982039366 +18526885281 +13632305027 +15890566393 +18521408917 +18593509986 +18899537225 +15896539188 +13933637420 +18837157565 +18899672997 +18874420389 +13956218243 +18532989931 +15121105814 +18534358716 +18859232952 +13615474929 +18521458788 +15118537870 +15133170992 +15112335614 +18890708299 +18870508017 +18808190401 +15822522216 +18584267545 +15867418284 +13999936088 +13998038830 +18850820561 +15162211677 +18815467341 +13613428870 +15817696857 +18828514247 +15864275926 +15861665936 +13630876704 +15169667428 +13935788725 +18870608903 +15894777491 +13623196460 +15184860215 +15185608763 +13953610251 +15819413645 +18512360877 +15825817500 +18557834635 +15164009562 +15832014805 +15162267581 +18540248882 +15171733376 +13978396974 +13993584458 +15868970973 +18883234211 +15179099446 +13605479869 +15102577384 +13669647408 +18830963133 +13950093042 +18567659963 +13929425816 +15122788019 +18847153631 +13975374475 +15874872884 +18833805769 +13935418770 +13960532332 +18541512915 +18843363112 +13605288993 +13688919977 +13615401909 +18820743617 +18595873794 +15846898025 +15197446618 +13925042110 +13620997612 +18881483033 +18530156191 +18836646340 +18516069124 +13994541718 +18855631738 +15167928332 +15129874462 +15893185717 +15192222615 +15884496905 +15107988585 +13954555205 +15164999738 +13663115092 +15199328471 +18540246444 +15892546487 +18553768544 +18532919422 +18878898636 +15142636686 +15135637661 +13994814177 +15148219520 +15137917395 +13903399454 +15146267722 +15826014973 +18815465904 +13626229487 +18889703373 +13686610225 +18894702549 +18588666282 +15190634917 +15118884581 +13610599674 +13668880834 +18538708436 +15107045226 +13903257985 +15877516737 +18539925336 +13611014676 +15860869691 +13956370405 +13930546008 +15175324248 +15102456922 +15110080733 +18859585151 +15861486332 +13674832448 +18579277302 +18596364070 +15848174936 +13652491441 +15160373787 +13649638763 +15869174322 +15195575541 +18880723940 +15106674862 +18555410642 +15146040610 +13634724031 +13997650637 +13651914606 +15834394810 +13980708815 +18895893038 +13693083352 +15879348498 +15145488684 +15847176663 +15180770836 +15863336041 +15877463580 +13602872702 +15186011070 +13684224140 +18894598271 +13952160765 +18503282345 +18511512167 +13631710210 +18805939440 +15801132932 +18534814321 +18822142154 +15872442009 +18841616424 +13928279662 +18811354253 +13964885233 +15844375161 +13957099048 +18817055849 +18823871334 +15151552475 +18552680648 +15135561211 +18546542407 +15175596807 +18525068944 +18873831601 +13972575738 +15824039810 +13955865940 +13627150282 +13637676850 +18842259831 +18585465981 +18883047873 +13642717247 +18595103968 +15132181728 +13601246313 +15873148963 +13951819486 +13995145729 +15870145948 +18860624864 +18509086600 +15150856596 +15172851961 +15834863445 +13926911289 +18815821565 +18828814411 +15175650696 +18512201572 +18539836210 +18874042001 +18870331097 +18533211647 +13687183280 +13919830259 +13670369498 +18579302963 +15831133639 +13925413411 +15832652858 +15897216055 +13954540060 +18869967166 +18855197856 +18582354718 +13682845149 +15169136424 +18885195116 +13652475031 +18551431367 +15805693203 +13605501303 +18535923355 +15841890841 +13977500576 +13652237228 +18511714648 +18506867390 +15190669357 +15198288568 +13661665287 +15128254248 +18550203630 +18576598162 +18501100171 +15103275299 +18847511370 +15187468065 +18823012393 +13950100706 +18562232001 +15864622137 +15129897930 +18564286567 +13909501529 +15814282534 +13644529313 +15868590240 +15885827150 +15122885720 +13924707388 +15194976883 +13974613566 +18835347274 +15192679614 +18588273887 +13958353696 +15194967650 +18829457983 +13670245800 +18820556677 +18576036328 +13622884440 +18507446362 +18581358964 +15168775824 +15811250283 +18580949142 +18876754850 +18850367412 +18534415170 +13633533754 +13603942395 +15169775987 +15863401388 +15163796245 +13621365360 +18894835708 +15196786343 +18580122417 +15850105394 +15147035256 +18828443785 +13613420339 +15103328479 +18576641769 +15102451924 +13905377870 +15858893261 +15162421226 +15163607852 +18523772489 +15173341417 +13650107646 +15848417605 +13650815327 +15821775890 +15130777632 +18893071045 +13988856829 +15165638040 +15162540164 +15883964431 +18507679291 +15159821081 +15885432005 +18824781592 +13649527320 +13659558576 +13691826539 +13938457503 +15817132372 +18538986705 +15173345659 +13951364418 +13961260815 +13978574420 +18861679695 +13943288104 +18894020999 +15124439226 +13930461614 +18859002352 +18869552463 +13647644282 +13666568599 +15146489362 +13901576107 +18899846355 +13945679171 +15155353414 +15186397798 +15186230682 +15118078555 +15160677132 +13631912305 +18867506533 +13944280404 +13619835761 +15836588025 +15866696352 +13618492176 +15128906682 +13987851867 +18856076470 +18803698602 +13946071907 +15134860650 +18502135104 +18866283313 +15140752703 +18592982551 +15148613314 +13930614019 +13953632565 +18837333841 +15128635199 +13913685553 +15858799208 +18552094684 +18574148732 +13987179670 +13998130409 +15840401953 +13995035608 +15147240491 +13683760109 +13956148793 +13610398636 +13922657700 +18552937673 +15872380450 +13964155757 +13923264628 +18880434021 +13618784391 +15199044101 +18546880003 +15113157039 +15101994363 +15872647188 +13612699536 +15164304378 +18854248713 +13924838185 +15864734570 +15820367515 +15158513402 +18825521967 +18862185587 +15100116814 +13652468616 +15852579959 +18867485285 +15842531191 +15160797642 +13682333072 +13959269584 +15888678376 +13929163824 +13983545769 +18536746978 +18865483038 +15116521744 +18522182033 +15839156304 +18548563677 +18890554847 +13633867349 +13639051154 +18574279734 +15136496094 +15873539240 +18573038578 +13987182180 +15828575857 +15115657296 +15891283697 +13911364680 +15866295663 +15131561502 +18886154398 +18550858187 +13611615744 +18840078732 +15177550664 +18536178471 +15127951598 +15895460958 +15842062567 +18871153794 +15822263585 +13697148751 +13923457308 +15100882003 +15859670375 +18576787207 +13661203922 +15150411094 +13982872033 +15148713458 +13904016676 +15197042765 +18849286264 +15848323653 +18552184422 +13936825582 +18830786345 +13629327581 +13670954613 +15174069076 +13687151735 +13905975302 +15848243523 +13698589126 +13678639015 +18576546539 +18503311454 +13647342925 +18895853153 +15813849169 +18523110838 +13953810935 +13693844453 +13928257604 +18890914054 +18547476649 +13672279776 +18855823820 +18850015415 +15806834135 +13675112805 +18817356926 +18577856784 +15882064511 +13946427291 +18879540145 +18593839720 +18857346915 +13691757147 +18569034718 +18569913166 +13980193816 +15160181218 +15177473677 +18849617671 +15847373042 +18859673707 +13659550099 +18584857458 +15158741545 +18870287951 +13673856606 +18598402204 +13908637484 +13626677143 +15128088011 +18884213929 +15120637045 +15105909020 +13954054126 +13603651720 +18585347729 +13980675577 +18855610823 +18832043231 +18509255806 +15129097612 +15157480111 +18572679855 +15155226844 +15123744400 +18852874023 +13970619751 +15817635497 +15859473479 +13662140792 +13977392091 +13628942518 +15835637206 +13966827977 +13939808078 +18505582336 +18856458799 +18847618808 +18557369928 +18870065646 +15165130830 +13670671484 +18559003732 +18559396094 +13680544461 +15169354317 +13674430977 +15816794505 +18547059525 +13641110274 +13978617959 +18804198032 +15839996819 +18815285367 +15828056048 +13980482120 +15865807503 +15140820875 +18523180349 +15100627298 +13955487676 +15864727097 +15159954472 +15183596738 +18579909493 +18562968814 +13974741876 +15147163307 +13630258568 +13966914444 +18855513872 +18512122594 +18858247137 +18828168711 +18545560376 +18855721154 +13973370071 +13633436810 +18840186391 +18584712753 +15193304032 +15134946770 +13939938138 +13628239854 +15187901795 +18868807358 +15144644946 +13689121429 +13622758517 +13619425774 +18528072427 +15138190365 +13654380150 +13964724051 +18807469385 +13617021114 +18541917095 +15892422299 +18899161765 +15884368899 +18517808736 +13699962783 +15840744434 +18562293522 +18869880736 +13671202404 +15169103822 +13614043767 +18554720561 +18847368998 +13663694316 +18581337785 +13910234137 +13684959615 +15828512665 +13979479972 +15862927425 +18587818473 +13966173043 +18860345218 +18841759299 +15162548655 +15135161057 +18859353501 +15833411151 +15107363923 +18895089078 +15101167372 +15194538025 +15884282387 +13617368271 +15876670570 +15824975403 +15808665698 +13618423982 +18819852361 +15177562881 +18894345080 +15854265055 +18845001242 +15824778117 +18839247594 +18562777474 +15148615255 +13980444670 +15850684219 +15118458612 +13607954383 +15881366962 +13966035327 +15858851789 +18524928494 +13652034030 +18873187902 +18518916274 +15821262730 +15126076600 +15845300245 +13982413876 +18822421243 +18861934640 +15837475973 +18876611613 +15134429377 +13974283818 +13680872973 +15816752916 +15160024838 +15168841802 +13643677728 +13905945812 +18818695172 +15107663362 +18502554659 +15843815175 +15128346460 +18832377743 +18847636801 +15883253919 +18597800155 +18583163713 +13928374639 +18507409040 +15869817447 +18856033808 +15170404653 +18509973617 +18565672421 +13939978564 +13935199258 +18511786868 +15853582374 +18522416630 +18594180294 +15800719118 +15140453977 +15878448195 +15106763604 +15817072861 +18880014506 +13642451744 +15861675945 +15166829085 +13674816707 +15818877965 +13603610935 +13947383483 +18548478720 +13985663107 +18592308097 +18805006293 +13668616989 +13947987022 +15893242603 +18536547420 +18893140286 +15891220852 +13632688504 +15883499778 +18561927629 +15851686238 +13979316677 +15107711314 +13919448787 +18558298323 +13660719590 +13662354794 +18598148654 +13656167055 +15800345621 +18540909835 +13602073581 +15151780675 +13928868736 +13931146434 +15177759777 +18551029066 +13938854507 +18809092875 +15130768585 +18525706285 +15161372970 +18564837070 +18574153656 +15864882826 +13694703638 +13901469347 +15133776245 +15841356799 +13939067390 +15874778213 +18875729737 +15862750856 +15157509584 +15174889796 +13616634494 +15852588097 +18807656844 +13993209676 +18535487352 +13633188135 +18503677677 +15164650453 +18505178716 +13958406860 +15829653089 +13911632179 +13637722412 +15826716962 +18876673205 +18516362325 +15848017628 +13966910802 +13605683310 +18584907302 +15826186542 +13615041228 +13614882681 +15128807722 +15804979717 +15134082561 +13945114504 +18861377107 +13956330950 +18881604793 +18880967607 +15805651250 +15819443658 +15826895834 +15883339067 +15107909420 +13649331655 +18850880509 +15192246657 +15873553735 +15134575022 +18532994891 +15180490629 +18598924773 +15119948873 +13662603000 +15142496928 +15149629434 +18886414729 +15116434530 +13673652092 +13933139187 +18587203256 +13640235991 +13632138427 +13615806199 +18892612932 +13657214004 +15174111948 +15853908495 +18583489255 +18599068017 +15896257853 +18897247383 +13976221496 +13903214320 +18857048876 +13677181901 +18808958905 +13932102421 +18576225010 +13620993090 +18525045251 +15858700082 +18511259215 +18519308093 +15124068914 +15194523056 +15808337266 +13984371355 +15192819117 +15827538203 +13668759384 +13678077682 +18826607917 +15103512192 +13963424705 +15870773066 +13682345727 +18848517563 +15163682397 +15139540931 +13992027038 +18519437822 +15811592638 +13994363705 +13690788270 +13691145788 +18874774919 +13906611372 +13637068994 +13936223159 +13604894670 +13926870407 +18573796204 +18574960277 +13647758491 +13988642796 +18552730055 +13673002960 +15128472472 +15147194758 +15802956267 +13632890203 +13936688594 +13964694568 +13606959374 +13636246724 +18534032484 +15894857007 +13693205755 +18517480270 +15835410953 +13962809297 +13906251742 +15145722436 +13931776902 +18860355365 +15851482839 +15849907994 +15157552162 +18525994836 +18560397934 +15801616952 +15810326073 +15801013369 +13609100983 +13908958550 +15186560401 +18865247632 +13666206680 +15156592292 +15115243125 +15856502721 +18882656174 +18833479516 +18564550317 +18589786993 +13622822911 +18556492269 +15889485310 +18874901881 +15838693505 +15876862916 +13928322352 +18896969938 +15148381889 +15168846099 +13964925220 +15889404094 +13676145513 +15867441412 +15125158164 +13978422873 +15143891028 +13682344778 +18576305548 +13604998314 +18879651785 +18891381885 +18831850396 +13958279266 +15152998912 +18551316088 +18503858776 +15153219857 +13938796855 +15850089891 +13637362465 +18587742281 +15860230584 +15174070187 +13684058771 +15803384736 +15804764650 +15838380196 +18564396455 +15850973928 +15167966443 +15818423907 +15145673915 +15822342373 +13986175365 +18590509725 +15170309108 +18556033939 +15812362415 +18555643226 +18808607433 +15817717058 +15111504214 +13902621144 +15118545291 +13944110865 +13639272130 +13924510650 +13647833789 +15154041774 +15835738726 +13630336388 +13699170951 +15188245709 +18580132088 +18893243989 +18837650470 +13695161682 +13905549610 +15155206634 +18570744941 +15180029380 +15190607156 +13949370866 +18549162319 +15197064742 +18586930253 +13919594535 +18861747270 +18818159473 +18516032173 +15169310328 +15815174117 +13956998378 +13921201628 +13906241387 +13974619942 +15855222165 +13998043520 +15194719541 +13625195274 +18860958541 +18550801968 +15184897300 +15815392060 +13948164169 +18849489729 +13969113217 +13919807421 +13602433618 +18855039798 +18822833089 +18599613773 +13616399991 +18803953466 +18851041647 +18528219178 +13972077462 +13994555489 +18861390203 +13901246547 +13673325891 +13620584883 +13909364408 +15893570200 +15104971631 +18554297766 +18598582777 +18816344444 +15195260694 +13935590779 +18862679163 +13931629591 +15894896478 +18870779930 +15159950900 +13675254227 +15138879712 +13633694289 +18555375882 +18584032281 +13918246892 +13940350608 +13924031066 +15177226012 +15143717536 +13652514529 +13961411139 +13970854183 +15170844843 +15147070190 +15190541447 +15151858879 +18861056391 +18850223498 +18887216930 +13928845547 +15897816192 +15160624919 +18566931364 +18859008719 +18539751425 +15888157583 +18899056859 +15162861466 +13603045804 +18851769062 +15898994105 +15869659982 +13919583718 +18847666793 +18834280909 +13682119213 +13679193394 +18532770262 +18553696553 +18558535550 +13612012289 +18869250763 +13653744673 +18851672646 +18881260301 +18544264973 +15807355078 +13924106326 +13666293881 +15101613134 +13609100381 +18807960436 +15872830807 +18832434497 +15175706651 +15828389239 +15884608799 +15894303966 +15149240122 +13640601515 +13948217423 +15820589056 +15898710490 +13606270405 +15162855767 +18595432344 +15193105719 +18862101049 +18506445365 +13662879409 +18519419872 +13609985716 +15820954660 +15861971522 +15838482117 +13636002290 +15889719111 +15863601267 +13937794058 +13943521970 +15836554833 +15128110711 +15884471659 +15884008325 +18840012208 +18879769246 +15147474705 +13618296969 +13645667376 +15861485749 +15111368333 +15893884543 +13903459198 +13917083574 +15804793942 +15863260294 +18834461488 +18566252960 +13651522385 +18834774813 +18872903643 +18575786273 +13978816470 +18574693508 +15163933464 +18865585328 +15120168045 +13671831550 +15809435011 +18576462875 +13684910979 +13609005390 +15852129559 +13600396174 +15189075132 +18887395920 +15800953513 +13639303817 +18564180011 +15858603537 +18536140548 +15865483478 +15189521106 +18826906576 +13918900970 +13992013776 +13679892906 +13989824916 +15842212161 +15152962269 +15116159128 +18873514352 +18536281291 +18577127029 +15183586446 +15859060398 +18574919883 +15148608733 +13905818045 +13693208039 +15144863209 +15895470784 +18808735999 +15163100066 +13991123219 +15158678649 +13998606660 +13979585592 +13623463601 +15146407097 +15813085315 +18893413082 +15116381811 +15878223747 +15840194983 +13966306724 +15192655196 +15106373557 +18545150779 +13693745368 +15881106504 +15136872026 +13920082120 +15863978241 +15165290089 +18583984500 +13609174251 +18875556861 +13961946966 +18830191108 +13600277344 +15893473522 +15149935541 +18805814222 +18824023713 +15854276043 +18553136014 +13944231522 +18816444155 +13902791900 +13695554976 +18890189428 +18898706168 +13685238270 +18507185800 +15108532440 +15857901171 +13953865939 +18586700836 +18529827626 +18825164307 +15186854419 +15145211805 +15158676201 +15859270491 +13921208246 +13697917993 +18812510083 +13600573841 +13969856034 +18865759166 +18579903359 +13917680473 +18596385036 +13695274217 +18520576225 +13923084180 +18574941552 +18868090029 +15181821195 +15172940253 +18510971432 +18599888724 +18570843094 +18543007451 +18827050253 +15166440841 +18816629777 +18818647461 +15134299943 +18506808005 +15897451492 +18510622950 +13607998110 +18846211601 +15132340419 +15198963854 +18543720318 +13667146444 +15162478850 +13952995295 +13967165011 +15151088682 +18534576240 +13688834164 +18540276919 +13674811656 +15807772156 +13931207526 +13945451616 +15809895899 +13941326043 +15838591712 +13693056159 +18551516874 +18571355523 +15870895950 +18582367069 +15161155134 +15813905183 +13920418911 +13668426722 +18537627841 +13922191775 +18509821736 +15102983288 +18837947674 +13956971114 +15818166037 +13675509401 +15116143556 +18572339250 +18519498959 +13920931317 +13649521625 +15162320634 +18838534460 +15155813126 +13669523085 +18817818161 +15866696383 +13969609723 +13629942703 +13916729268 +15166684183 +15869330029 +15199333831 +18504197239 +18591697967 +13688120664 +18563339900 +18586251337 +15862804675 +18565002735 +15108802190 +18830256687 +15196666648 +15845262160 +18526948058 +18838555797 +13944407696 +15816556888 +18882377027 +15176659212 +13914548438 +13912078599 +15826321736 +13995413010 +18873882794 +13964705300 +18869970694 +18515402998 +15186684943 +15117540314 +15140470545 +13970906354 +15813310154 +15873170669 +18841600167 +13944589236 +18833379233 +15140787152 +15873420160 +18518216188 +13938157449 +18526993744 +18576829475 +15806037785 +15198740451 +18552851947 +13682264514 +15106095269 +13937979877 +13929527868 +18511610806 +18502624037 +15800697026 +13674319392 +18584677271 +15163748754 +18521945840 +13995702212 +13601831026 +18571016591 +18556417456 +15185265563 +18845667537 +13691538211 +15160257338 +15107859720 +18519103835 +18846299154 +15196310958 +13634592444 +13961522811 +13930628269 +18534864074 +18874089559 +18560216436 +18589592476 +15151330564 +18563837206 +18848308286 +18553761616 +15863530895 +18897565378 +13643113555 +13648950609 +15857282130 +15861731100 +18839211253 +15801569985 +13994099931 +13698441221 +15107583441 +15150320777 +15849989283 +15196839552 +13623548906 +18597793370 +13908342188 +18546073279 +13697214012 +13973206284 +15814776136 +18507602931 +15186528149 +15191174083 +15157562352 +18803783142 +18515324848 +13691242696 +15830777489 +18803192886 +15865118862 +13675234653 +13652575026 +15116088853 +13610306600 +18862397896 +15195922593 +13923943219 +13639561305 +18826473369 +13684194695 +13632737284 +18891877058 +18516905213 +13630541689 +13604688720 +13670022166 +13995629637 +15827671342 +18583158100 +15143904194 +18810801228 +18544137651 +13984374533 +15115365621 +15866146214 +13632685452 +15112750847 +15875804085 +15173373366 +18813037967 +15808385604 +13678279827 +18810178993 +15821310464 +18519399003 +18878988291 +13956193863 +18840477430 +18578726914 +18830155489 +18516649268 +13615384088 +18837476105 +18802026496 +13608242113 +13984075386 +13958652647 +18826092719 +13609444910 +18534960901 +18895479770 +15197328245 +18546226530 +18878504598 +18596073808 +18808983543 +13669134242 +18512586755 +15153703771 +13684051846 +13921038356 +15814008845 +18597977043 +18893367258 +18570861603 +15184656161 +18583082855 +13945071480 +15855366093 +15815947231 +15844605305 +18864245596 +18876328930 +15818743774 +15112308195 +15103087262 +13908454469 +15860984366 +18542996827 +15839200052 +13682965459 +18864504234 +13970107484 +15196922217 +15108049668 +15145814787 +18555146270 +15841006763 +13907882244 +15853307702 +18553787314 +15852226528 +13618656080 +15865070899 +15872098868 +13618057394 +13911254659 +18565341033 +18555046950 +18832157420 +18872819954 +13960076746 +13976372182 +15168314150 +13615504461 +18502369010 +18810332072 +15893056864 +18874398530 +15819387945 +18894199909 +15887646611 +15830544660 +13686127881 +18595250476 +15853453447 +13686746025 +18551485025 +13669195410 +18567260789 +15170692774 +15183615098 +18829964810 +15891730861 +18596019202 +15843183012 +15842505932 +13903787247 +18824137029 +13940196250 +18835235181 +18577722565 +13945754154 +15812223404 +15871776863 +13927392737 +18890864740 +15156338792 +18857557725 +13608472234 +15159342625 +13939835127 +18556122648 +15123582967 +13915248102 +18585383695 +13976919299 +18822919773 +18853091947 +18521200580 +13928723071 +15171336295 +13626645140 +18564745757 +15815948023 +13644581625 +15857168667 +18874413274 +18825261883 +13659991002 +15196583650 +13961948977 +15808142316 +15897220529 +15868910025 +15198633936 +18576333143 +15850806697 +13915611748 +13618637930 +15104060395 +13911407010 +15111390820 +18561430902 +15828747065 +18591035078 +15871990442 +18851801326 +18804700176 +18560015893 +18580779892 +13607134408 +18518989845 +15100663383 +15822891917 +13607626773 +18868262109 +18843197729 +18817065404 +13937156457 +18506578190 +13604565955 +15122383796 +18543267474 +18804045657 +13987489213 +15804850256 +15172495672 +15823167512 +18847709518 +18896493209 +18829438440 +13631109052 +15101404639 +18849416632 +13636994626 +18859479654 +18896938929 +13674942647 +18509566009 +13671166727 +13679347665 +15837940334 +13638158488 +18879809850 +13686942263 +15176707986 +13983190912 +18827367877 +15856799511 +13618488334 +18818626181 +18574045370 +15800403749 +15138776218 +18541267292 +15190102142 +13695697827 +15185859096 +15829233682 +15198927870 +15174442605 +13650668888 +15874201710 +18533713409 +18571436374 +13947102224 +18867278393 +15115906290 +18521256324 +15188443082 +15131534915 +18827503914 +18580135460 +15198060962 +18821684607 +18840983954 +15841794487 +13600944086 +15817268210 +15874769364 +15809573251 +13963979926 +13956989173 +18527972896 +18560435056 +13950169460 +15130358670 +13609118873 +18524854740 +13635960262 +15817012414 +18587450415 +15121408635 +18567979730 +13657105536 +18549911788 +15114751941 +15876013917 +18503990817 +13635033356 +18876166386 +18526039599 +13914123499 +18893368952 +13997624882 +18594356869 +13673741638 +13917877155 +15133254550 +13683334002 +15823113064 +15832618035 +18528182783 +13691488901 +13667568640 +13961565475 +18513578401 +13633275321 +13965027506 +18523484946 +13635694428 +15174525691 +18599885775 +15811795048 +18875767206 +18842749420 +18552310551 +15165049844 +18530161812 +18805960450 +13656058161 +18860660933 +18543661832 +15810143626 +18557740891 +18586385776 +18851267776 +18891450683 +15849078333 +15174020098 +13621118975 +18518841900 +18557521694 +15860830336 +18868899928 +18830976380 +13907108764 +15154595431 +15188959753 +18836998891 +18563661624 +18541787164 +13686356798 +15175995718 +15129450824 +15846958981 +15857736767 +18573417748 +15111463754 +13697133865 +15136210034 +15882086391 +15143638812 +15836026215 +15164900937 +15196242045 +13985805771 +15875220181 +18567920745 +15818287749 +18501569164 +13683972921 +18532459642 +13945876068 +13692563686 +15131322418 +18877362987 +18585796632 +13667207799 +15158195265 +13630715836 +18803402965 +15895652912 +13960476835 +18886334716 +13664778322 +13635989509 +15830349386 +18536662510 +18516255695 +18803712638 +13669753764 +15882977273 +13948789455 +18881716501 +18876556943 +18567090349 +13669466086 +18849221956 +18571725329 +13919646952 +13905871222 +15826866660 +15149144918 +18532292804 +18541486852 +18534551388 +18803371744 +18826825272 +13635351695 +18527572674 +15199097815 +15177487291 +13987701355 +18526599067 +15811306534 +13649933827 +15100080884 +13917971084 +13936086544 +13993251740 +13676301110 +13904791740 +13951192437 +15166551197 +15808559217 +15867908865 +15125934585 +18828225708 +15895704300 +15159076788 +13663748729 +18862597012 +15840762240 +15190671344 +13907570418 +18551205382 +18521212295 +18827561797 +18850679052 +18513594156 +18572295855 +13922779606 +13665135067 +13915559463 +18534826087 +15855412999 +13963097475 +15172770379 +15127816386 +18882414782 +15174855664 +15146522470 +18805168211 +18518513342 +15835199713 +13675379698 +13679862096 +18576689474 +13932967636 +13670916009 +18507804220 +13671862007 +18845668729 +15818416045 +13990037736 +18535424343 +15829165164 +13900715845 +13674431479 +18555088718 +18860179599 +13969949390 +13988698991 +13613682286 +13975142239 +13691126106 +18503545547 +18596266986 +15884550749 +15131029917 +13681423271 +13614159018 +13671615339 +13963883066 +18560550492 +13689911385 +13612386231 +15155541285 +13976456869 +15891805827 +18867369462 +15832983428 +15863682650 +15169631124 +15183333635 +13912586108 +15118466453 +13931278585 +15179007344 +18527855426 +13694734688 +18877927036 +18569854714 +13632138156 +13930280372 +15883238602 +15836142929 +13647695901 +15127265201 +13948485507 +18889981061 +18884693175 +18852871922 +18587116510 +15855556258 +13615088245 +13645940112 +15197120991 +13909390494 +18520445913 +18594892847 +18822580424 +18528341780 +13658254482 +13661626441 +18540173911 +13603428960 +13966238184 +13620479346 +15837675679 +15121077899 +13640887330 +18851107035 +13958563216 +15184446377 +15858493150 +15178418799 +18548644626 +15872760797 +13903045015 +13937729272 +15195336654 +13923491042 +18586845779 +13626285459 +13678323045 +18807756447 +18841765641 +15180706950 +15879822297 +18521760153 +18544588521 +18873078188 +18828063607 +15812820997 +13990898305 +13983188525 +15145988869 +13914651184 +13698432454 +13607724663 +13973624291 +18510522982 +15828766273 +18877741844 +18579264264 +15834989329 +13926707929 +18808899928 +13921881857 +13993592279 +15191086971 +15852671500 +18888928014 +18860235600 +18873004768 +13929906001 +13920051991 +15896252840 +18594312155 +18892018332 +18557651166 +15162967768 +15876439455 +15143539500 +13967275537 +13915461170 +15184281276 +13635629299 +18844688807 +18574679879 +13969211242 +18533586382 +13933624752 +15823176849 +18573388666 +13923728987 +15877800218 +18530030015 +15197428068 +13960749677 +15105551519 +15812769504 +13687962189 +13698492248 +13921145139 +13965722914 +15139350707 +13912562266 +18821022105 +15195535914 +15884447080 +18551932113 +18857526779 +18806730111 +18545478939 +18560057082 +13635952135 +18536091674 +15834204819 +15104479550 +18865755630 +15811877309 +15870289725 +18864587512 +18898311218 +15119492716 +13976084338 +18819400388 +15806072390 +13942477335 +18581357662 +18565406091 +13696699037 +18540092389 +13906107927 +15824978178 +15109244709 +13635781424 +13693662371 +13935411743 +15133958622 +13965327994 +15193941244 +15875253925 +15826666168 +18810720590 +13966978082 +18581101911 +15865186812 +15811816696 +13917344056 +15176914336 +13946300515 +15122651274 +18891029513 +15105695121 +18819056217 +18836068149 +13972702395 +13660042205 +13940253327 +13932921239 +18872688705 +18572410973 +15198391031 +13649778167 +18823251106 +15819088925 +18837740694 +13950094282 +15805972237 +15822499471 +13604715901 +15876569888 +15883749970 +18892267174 +15813124630 +13679289726 +13642388008 +13629030966 +18512269268 +18518759968 +18598475306 +15152213925 +13667389143 +13619831630 +15834667260 +15162926583 +15838399953 +18578025785 +13641858637 +18593898897 +13681319808 +15869393127 +13630991598 +15836990386 +13920332385 +18559000108 +15852218860 +18506318853 +18565699518 +13655420990 +18530747046 +13656589007 +13621594742 +18532482626 +18897863265 +18554829876 +18527468727 +15829118146 +18883746984 +15804281129 +18839305343 +13923213565 +15802458961 +18551865335 +15136572877 +13664072171 +13912400555 +18542853190 +18804624229 +13987916994 +15855926656 +15156281161 +13973805589 +15147757552 +18839644033 +15871946566 +15181297929 +18894382868 +13639653729 +18555148921 +15171379606 +15112374129 +18816783753 +13938868396 +18820263984 +15810109054 +18884116933 +15177013864 +15158279867 +13691158873 +13616800184 +18562420606 +13639476366 +15192764621 +13611474243 +13649994104 +13628549714 +18569668924 +18818855026 +15840567962 +13923708088 +15163759221 +18873764330 +18541302397 +15865301553 +13936097892 +18510422839 +15176344871 +15884006397 +13647973926 +15100719893 +13956338040 +18870332763 +18598976666 +13669166423 +15826529730 +15868909850 +13623264967 +15147345971 +13969788576 +18839213890 +15185338668 +18818591857 +15155456932 +18810487788 +18871679594 +18534625253 +13998921216 +15123810355 +13621199731 +13923469306 +13900628072 +13691941319 +18544236725 +18871195764 +15879369448 +18814002060 +15145512554 +13944840407 +13917744723 +18891633371 +13603836284 +18547251019 +15835907921 +15143553592 +15866430406 +13617343262 +13694087275 +18553087019 +18514678622 +18899007153 +13992949994 +15195617783 +13901490374 +15169409946 +15114971838 +15191764281 +13677394720 +15858408586 +18810264262 +18843269537 +13982399251 +15802218578 +15840740713 +15120372410 +15162466959 +15142466406 +15862400316 +15813540907 +18868455231 +15889926384 +15894222938 +13642226197 +18805890144 +13670548029 +18521216721 +13622295759 +18560245965 +18595465425 +18861647260 +13951520135 +13971732564 +13690206139 +18550337883 +13973235575 +18834640073 +13600012421 +18599034224 +13624593479 +18877926628 +18551743789 +13927817004 +13979354062 +13661166113 +15830972763 +18816728387 +15846112799 +18830876726 +18801656167 +15155302217 +18562573404 +18894577978 +18531856260 +18559990595 +15812302956 +18837824301 +15827165099 +15832266446 +13656788993 +15174861860 +13650860744 +13909171504 +18807563061 +13905951216 +15890496116 +13660102271 +18883465468 +13988310285 +15125250877 +15153504471 +15126914153 +18836514001 +13606721455 +18595338635 +13983474136 +13921587876 +18553209518 +18810033746 +18569013195 +13650897923 +15816912850 +18565038627 +13948541311 +15162712815 +13613482099 +15132713859 +18861181402 +13637851876 +18867980540 +15845673014 +15826550588 +15165926507 +18800712695 +15105489713 +15125977800 +15164503069 +18515126105 +15135268913 +15134850735 +15116998433 +13692356562 +18804954336 +15111217072 +13912750139 +15823763853 +18862274861 +13600760683 +18544724978 +13657005313 +15179757820 +13919005686 +15867412480 +13987256291 +18547780666 +15137188161 +13929542558 +13916345607 +18572190243 +15825273308 +13914365425 +18581647780 +18872981307 +18883695358 +18815663905 +18526776834 +13650012128 +18560372814 +13915396643 +18512851207 +18531095764 +15125394785 +18515827419 +18555973265 +18576462364 +15122568222 +13628731031 +15198640235 +18819818287 +18504323392 +18564382634 +18516800733 +13651096318 +18530802715 +13663776385 +15867326368 +15165447023 +15872353906 +15182249955 +13643461793 +13949499596 +13953301426 +13965348592 +15843146267 +18826367317 +15817468705 +13664947097 +18517928808 +13983784836 +18859929709 +13926606966 +18501705493 +18582706896 +15198997616 +15149206435 +13946505672 +13621495808 +13921240795 +15182009886 +15105165160 +13912744283 +13634237820 +13934836085 +13981618332 +13963364588 +13646836975 +15199029886 +13609717294 +13927533997 +13659216455 +15810978852 +13980096373 +18519986089 +15848399949 +15149454011 +18513631470 +15810970292 +18803250704 +18585151738 +13925980683 +18521443630 +13993769629 +15827314331 +13613415772 +15143219142 +13657587370 +15858410167 +18579907945 +15823608186 +13614772859 +15830534935 +13638456442 +15879025117 +15158913331 +13644752932 +13992476529 +15105879905 +13903733333 +15123768135 +13995582852 +18842338401 +15142249531 +13689760226 +13638736759 +13984254868 +15194563518 +18590082805 +13699695393 +18533934006 +15193301210 +18890825995 +13965357359 +18575091177 +18565215107 +13684028599 +15147232595 +13648508036 +15102425578 +15830094586 +18515359198 +15842930299 +13947136998 +18892061766 +13677168525 +18554391164 +18870233924 +18822045892 +18804947496 +13667274716 +13639658710 +13918017586 +13639978898 +18580757433 +18537209868 +18870199404 +13975788039 +15145451979 +15810991049 +13685972640 +15821358305 +15166372904 +18864058609 +18588126586 +15828826573 +18552698916 +13695547740 +15152470374 +18552875633 +18887210353 +15138385042 +13650778515 +15818269911 +15102827331 +15140841361 +15138167653 +15869182352 +13980030872 +13665433659 +18563775405 +18805639766 +18862244429 +15111520281 +15876254694 +15885397718 +15189850755 +13683551468 +13655572767 +18895375082 +13691946935 +18572883612 +13997486850 +13914201970 +18520976347 +13900875579 +18896899596 +13601984196 +18848820193 +13621587455 +15836128025 +13651931372 +15865056057 +15849892038 +13927413657 +13905140909 +18596217048 +15810965777 +18509640364 +13604680466 +18812794193 +13693927071 +13693077021 +18581393011 +18831814398 +13663265415 +18559706999 +13946094580 +13652344931 +13948541150 +18897483206 +18885205139 +15135608461 +13645121132 +18857785818 +18899188624 +18831823240 +13996047296 +13924206584 +15156868861 +15119286910 +13655662206 +13908525810 +13678657389 +15854857772 +18841611360 +13987165825 +13912964599 +18550995654 +18503171842 +13679346593 +18551131175 +18581632864 +15173464915 +15176317931 +18525897587 +15146617486 +15166011985 +15879688754 +13939909575 +13658913136 +18531401855 +13619302930 +15188283240 +18881449351 +18805711835 +13677043689 +13973435346 +15135871306 +18525186198 +13990404672 +13986854221 +15866556461 +13945558292 +18500885587 +13983967755 +15809277576 +18854344030 +15108084766 +15122880057 +15145311935 +18806589638 +13927726771 +13653137250 +13653829694 +15831359977 +13999426906 +15849751422 +18576704897 +15803878042 +15130428174 +15831011688 +13662277018 +15816665395 +18866484441 +13963621447 +18554209372 +13962019931 +15891659705 +15139107328 +15168797714 +15845809135 +15852723067 +15870882640 +15167247941 +18831075046 +13694184335 +13680847981 +13642790528 +13923120433 +13660202754 +15183809911 +15154525252 +15189390180 +13956170258 +18533235547 +18873924637 +13924475938 +13951099545 +13678286929 +13993070793 +13634947566 +13933900351 +18855239245 +15149385491 +13986141012 +15876259885 +13602413869 +13946223825 +18516530081 +18820004806 +13639394635 +18520713267 +13965743376 +18562189187 +15159883162 +15100735784 +15891147012 +18844324149 +15118902633 +15853894135 +13649267509 +18869954290 +18523528688 +18861198609 +13992255171 +18882872077 +15117817212 +13933166502 +13663620822 +13954743449 +15828802284 +18542444916 +18557723115 +13954275068 +13963183070 +13995102132 +18871351884 +15866472355 +15857947102 +18596550268 +13608008629 +18564062955 +18555832653 +15123462512 +18550160095 +18836341919 +13649053434 +15816841919 +13618900925 +18520428913 +13610548128 +15123442958 +18550252667 +15813585824 +15162500564 +18820680157 +13970736662 +13674521932 +18501110854 +15137749355 +13971714737 +15118214688 +15842131851 +13967956809 +15814252332 +15132772567 +13935640407 +15893541618 +13619550944 +13900260375 +15830242635 +15198231271 +15828512218 +18502086598 +15881155488 +18583178325 +15827868639 +15104698343 +15840081910 +15818168604 +13661346088 +13928790390 +15166082139 +13670129040 +18576828593 +13947443424 +18583253691 +13951554279 +13616493246 +18896900249 +15851205830 +15111867653 +18520688545 +15121492709 +15886016314 +15157328875 +13663959183 +18551573262 +15137192659 +18894190615 +13988325064 +15857982047 +18814925171 +18577643691 +13935233578 +15187826995 +15127519708 +15856734071 +13945909787 +18557190355 +15856646986 +13942801626 +13979129910 +18529614739 +15853394290 +13921467800 +13632534685 +15142237571 +15892369147 +18512218649 +13949581828 +15136406354 +15154674021 +18514582369 +13995666685 +15109910438 +15157576988 +13983915008 +18548659878 +18530527347 +13980023747 +18818756280 +13631109019 +18503793049 +13947227466 +13924802517 +15891241808 +15114970905 +15165385453 +13930134490 +15161135184 +15195107976 +15173291094 +15116478106 +13614984862 +13673245148 +15874193917 +13693447174 +18530692060 +18565249348 +18543416271 +15150162533 +18546726326 +13679629918 +15156753396 +13613760080 +13685907622 +15147920361 +13973896236 +13614797372 +15119905230 +18865235376 +13937608681 +15140124423 +13657409702 +18890456802 +15198666739 +18825505343 +13960441087 +15896016080 +15800748335 +13913974638 +18887280119 +15152043728 +18505380243 +18883708283 +18530994362 +18859262038 +13917229007 +15142895929 +15869448937 +13944295599 +18864094692 +15148556020 +15809678227 +13663902173 +15814893788 +13602772228 +13942196758 +13935078088 +18872000226 +15836121723 +13656538905 +13687132745 +13964336495 +15199513278 +13680513913 +18548831768 +13972515739 +13641504760 +15813972878 +18599635513 +13669877583 +15120636623 +18500162893 +18553982578 +15176975954 +15161666210 +18542659780 +13609368853 +13660116740 +13986073597 +18849780652 +15894836881 +13622957118 +13650024503 +15855605712 +13942664542 +15114647450 +18578017017 +18870734956 +18543748819 +15192244030 +15180183969 +18521483483 +15160867880 +15881860454 +13662838298 +13673002674 +18844773571 +15868581128 +15154329556 +13943291772 +18529846260 +15141442412 +18816025462 +13971761330 +15111482210 +18831763752 +13608437861 +13948431237 +13935214132 +18523812608 +18838237267 +18538482090 +15143872236 +13916737009 +13995359476 +15117755806 +13629243395 +18867710250 +13618554020 +15148244340 +15842762800 +15102518200 +13671530154 +13618296871 +15842574952 +13689309090 +15840743003 +15147353223 +18567380274 +15801967783 +18855192730 +18824984726 +13961252422 +18803958347 +18596707389 +18501303965 +15191158334 +13662238922 +13943645158 +18857253447 +15832847935 +18887473532 +18501184787 +18860483016 +18895656617 +15108203444 +15891186341 +13934539304 +18810691101 +18846639707 +13964338281 +13988023719 +15109553780 +18869048284 +13910398960 +13959552255 +18896713618 +13909886566 +13920663946 +15181453544 +18880128180 +15127740698 +13951348660 +13993457432 +15154118074 +15150441443 +15875892513 +18858719819 +15812060245 +18873008693 +13931059272 +15124097365 +13640365609 +13620365031 +18550372577 +18863593111 +18567842568 +18817471146 +18813736575 +13924490467 +18520894974 +18845351995 +18898055028 +15178597077 +13639154296 +13974725250 +13915609308 +18549486031 +18866673551 +18564940396 +15158968338 +13622066826 +18899775008 +15116426981 +13941896285 +13997914584 +13646447608 +15181633133 +18880571416 +18524687152 +13930440069 +18516950607 +18535660534 +15872461208 +13918096366 +15813136480 +15859174942 +18867993168 +13603397602 +13924661433 +15878409354 +18593419355 +18813585152 +13678952795 +18511859658 +13672329579 +18819122260 +15143454185 +13930195512 +13628498877 +15825804275 +15835870704 +15841536683 +18843539027 +15850281541 +13644794414 +13936844067 +13958080452 +13605258450 +18540824904 +18551923904 +18896533828 +15150350527 +15176502755 +13673921729 +15140551482 +15165397641 +18825183241 +18581216501 +18895219251 +18803225280 +15114213237 +15886657623 +15863449098 +15126957437 +18826153552 +15810294579 +15114584314 +13980704108 +13662163912 +15146676116 +15840686999 +15156043209 +15867486677 +15833550772 +18547595952 +18864664411 +15804276839 +15117602338 +15102867654 +18503835318 +13671003803 +13609946486 +18867905815 +18820722718 +15141343329 +13680292273 +18833234603 +13620879298 +13616752422 +15878041078 +18569626861 +13920060937 +13671531440 +15137676826 +18817495090 +13609039339 +18572894974 +15837291086 +15107674210 +15880806280 +15162071586 +15173048797 +18516366457 +18858134028 +13977767996 +15193314974 +18875582432 +13640385393 +15172791247 +18579647029 +13931631932 +13637540494 +15112215622 +18845209970 +18864080600 +13651523543 +13971359223 +15832762558 +18578148827 +15801997733 +13628530232 +13989087076 +18526377667 +13927728654 +15855652088 +18816930281 +13695436620 +18502965161 +13969095100 +15179744750 +18596900840 +13608040284 +15146293689 +13686068961 +15890404163 +15162929124 +18536934525 +15870978899 +18590960531 +13688656830 +13972417111 +13679650069 +18565531797 +18811310009 +13651331702 +15876271114 +13697451442 +13922748683 +15111402486 +15814937067 +13617713646 +13621884254 +18590875262 +13682964818 +18530306777 +18569053482 +13948052282 +15830067128 +18895106812 +13926246088 +18892448916 +18875669980 +13624471530 +15838699342 +18529316522 +13623417816 +13637245511 +15169842550 +15161016466 +15127040404 +15879625214 +13901091108 +18572743367 +15149638659 +13696290405 +18587055772 +15843497598 +15812947384 +13678422494 +13668998470 +13907917026 +15182742331 +13633019316 +18881649161 +13933443483 +13627805436 +18895504922 +18833087213 +18505683253 +18533210499 +15893695509 +18549674280 +15852782124 +13964140044 +15837291318 +18580449276 +15872354755 +13614780815 +13974696190 +13602053266 +18508015899 +15136211574 +18887014547 +18846106355 +13699137993 +13978759003 +15802102914 +15838496877 +18851239389 +13991918397 +15846575172 +18549534815 +18548655773 +15807628891 +13953461085 +18581999718 +15810221562 +15822846641 +13987625152 +15838692261 +15199641812 +15181088623 +13642597815 +13686782366 +18840115531 +13647141561 +18851426717 +15863205529 +18527086527 +18530882589 +15117936429 +13906529393 +15107076295 +13945341470 +13971420702 +13662346180 +13997522355 +13970560988 +13929902432 +18574529624 +13944365767 +13632911005 +18535600236 +18809780772 +13606044046 +15834176466 +18554472142 +18551564090 +15884460830 +15111134988 +15862758240 +18551412847 +18816269361 +15834450047 +18856261548 +13605229576 +13696178249 +13976449461 +18823792549 +13611562656 +13954934253 +18831054298 +18584609307 +18818575271 +13674989830 +18524246450 +15814061789 +13608705015 +18509280105 +15840519200 +15805267818 +15172499298 +18579699853 +13627372941 +13956981570 +15802913719 +13952638760 +15123461757 +15158181088 +13990482197 +13693262648 +15832244573 +13921637364 +13937057212 +18887529086 +13694220660 +13667337176 +13670677002 +15182982241 +18575847148 +18839214187 +15810628294 +15837331377 +13672135206 +18864467035 +18507446243 +18548926889 +18839572615 +13912405547 +13983511257 +18588743356 +15192391804 +13670632729 +18860244208 +18874075492 +18843807582 +18536982741 +13633566757 +15865300652 +13998159348 +18841972634 +18535790790 +15152884532 +15134182505 +13956906583 +18572888655 +13600412766 +13647270721 +15113300822 +13621088771 +18587508952 +15146753024 +15835461366 +13650045380 +15820272584 +13966649616 +18560262974 +18538950895 +15844016372 +13982453845 +13984738306 +13699339479 +13913389543 +18822640482 +13952891007 +13631399390 +13674653227 +18813609127 +18551136355 +15146962404 +13615002060 +15888092043 +15844090073 +13641247172 +18553564002 +15171768760 +13990655350 +13995740727 +18826761137 +13927540068 +13925794535 +15105924177 +13663183993 +15831201531 +18576995932 +18506510564 +18578866554 +13992147230 +13913372266 +15839030418 +18519171637 +15169494480 +18551194622 +13663819946 +13938352444 +15815637072 +13924727842 +15198622602 +13635796352 +18506394139 +13900290842 +18837156340 +13993536620 +15825623018 +15887917152 +15822567439 +18867909994 +13661466145 +15103227070 +15881910055 +18508192288 +15174597174 +18847525600 +15185316008 +13982956757 +15868074809 +18882199384 +13989812676 +15125941136 +15146162100 +15822788004 +18801706051 +18518438222 +18570624806 +15158924754 +13640717013 +13656063885 +15831573575 +18880784869 +15188956556 +18599597080 +18586501226 +15883707777 +13969145741 +13697482169 +13690686683 +13995567976 +13645688515 +18593387888 +18588652722 +15104284967 +15828408937 +18549414285 +13623044718 +13929760532 +15843245594 +15164394526 +15875745866 +18597764843 +15881199672 +15127951776 +18542860335 +18814749480 +13954849940 +18500475450 +18516753125 +18591051596 +18869772638 +15843777887 +15195057868 +13698121594 +18510994955 +15862704699 +18809122669 +15840270967 +15134500864 +13676759328 +13919086225 +15825131222 +15145077383 +18818229503 +15832010407 +15894210354 +15191107470 +15830772480 +15132065906 +18840662642 +18831871338 +13666829965 +18899743244 +15144984189 +18895998979 +15197554797 +15807501800 +15119460130 +15890851931 +15172589026 +15115689992 +15119584150 +15131221640 +18801555670 +18558219726 +18818415083 +15123489697 +18862321071 +18826163616 +15810566433 +18803331866 +13647935907 +13904791976 +15199944826 +13636753738 +13690132940 +18825810327 +13971628739 +13906722475 +13932854563 +18841765930 +13655831336 +18849778283 +18865517877 +13988453971 +18815548612 +18507078437 +15881712306 +15813252449 +18575667715 +13919373559 +18503284457 +13952088341 +15872297641 +18572899711 +13948597918 +15169915154 +15842393925 +13642199204 +18549405295 +18512159703 +15191711223 +18898794946 +15868030041 +13944411086 +15845462315 +18562533969 +18519506039 +13927175769 +13984512769 +15845968976 +18864682839 +15147675043 +18868483818 +18859808298 +15128750902 +18569050249 +13627863141 +13609761365 +13640692420 +13661270538 +15179242353 +13614282717 +13904016903 +13643753848 +13954264159 +13679506810 +15895877652 +15101045066 +15851614878 +15856058063 +15834826876 +13978759850 +18827818587 +15148129294 +18838533338 +15199462022 +18844722617 +13984614792 +13683960332 +18532106454 +18836187119 +13974877468 +15187867796 +13926034825 +15144136948 +15141660543 +15185193415 +13928585981 +15121634844 +15168652962 +15168004229 +18811152720 +15800412526 +13933839780 +13949226152 +15112549872 +15116782044 +13994117204 +18852141380 +15129330870 +18884540143 +13956298725 +18801891276 +13606987413 +13995473051 +18543954636 +18832557372 +15118591089 +15872911391 +13686182848 +18854671251 +18536852636 +15138026141 +18811138140 +15872964561 +13946344467 +18852040474 +18811836129 +15807078245 +18891058610 +15851318707 +13659191469 +18866912074 +18511540808 +13698923032 +13998595457 +18570880152 +18871828034 +13619667415 +18596163579 +13921218441 +15832199437 +15131237507 +13956943867 +15813892754 +18889450150 +15894126277 +13977550781 +15128928067 +13619682831 +18506044838 +15847180436 +15804415012 +13601063562 +15115201977 +13914133913 +15167289105 +13990234888 +18557559423 +15196520802 +15164697004 +15850850160 +18551200508 +13693638875 +13995849576 +15892433580 +18579243557 +13670985733 +15155502053 +15820087983 +18860996795 +15134549156 +15833862626 +13667926543 +15841419655 +15185645914 +18558992265 +13988561458 +13699829143 +18862879694 +15156630625 +18825639668 +15894398913 +15143838631 +15188693287 +13650074976 +15101407606 +18874589349 +18821117386 +13986963267 +15855755822 +18814563723 +13648305697 +15139508560 +18836649527 +15120283343 +13998384675 +15145604557 +13624039655 +18592895445 +13684038858 +18829194566 +18840241343 +18597933460 +13919437299 +13609281271 +13934518081 +18555190350 +18849507722 +13638417372 +15870109185 +18878969980 +15815638907 +13630044252 +15123079211 +13654141292 +13937731772 +18538333520 +15193017049 +15129763057 +15153354416 +15828734387 +13939473166 +13931925490 +18882791593 +15110053984 +13679802991 +15812483818 +18806897425 +13934481979 +18544503803 +13623632920 +15143708811 +18866448875 +18557735111 +15842599463 +18593778534 +18541043262 +18814969970 +13900347404 +13906203002 +15179660310 +13930351237 +15838549203 +13681642527 +18861972539 +18539028529 +18869706312 +13641133078 +15126128535 +15800771246 +13988497347 +18832655865 +18890435394 +18594502575 +18535655731 +18800286792 +13659318504 +18880412597 +13903374556 +18567291062 +13971513991 +18854173631 +13628529023 +13681807792 +13653403831 +18825359075 +18517151419 +15128100052 +13965401878 +18573739073 +13983157206 +13965218532 +13996166604 +15183121016 +15101995267 +18884129566 +13993560152 +15824649341 +18850136276 +13940408237 +13982287952 +13916647983 +13672620125 +15873856829 +15837274115 +13996464238 +18829928935 +13908251948 +13657851258 +15857480133 +15169893151 +18528356697 +18894198130 +15888144392 +18548086173 +18527382971 +13985393903 +15822597669 +15172938066 +13950507340 +18578420839 +15184889760 +13997520844 +13916140056 +18547841458 +13949643164 +18577825546 +18559326847 +13948881885 +15827851670 +18577997339 +13907215320 +13616558554 +15140074025 +13905018472 +13952872528 +18583876693 +15187972011 +18533858860 +18590661068 +18819341704 +18593843508 +18586284529 +15835999214 +18514047362 +13689919211 +13970711231 +15817962038 +15114881034 +13911112585 +18800583707 +18802049766 +18870932779 +15167435868 +15189610658 +13676042956 +18833021934 +13623203762 +13963550743 +18563618103 +13677759473 +15132278559 +18845294339 +15182358952 +18891946819 +15109504279 +13997836006 +15870613599 +13665607533 +13983419344 +15162254086 +13980348688 +15855656783 +18816746876 +18535894819 +13609103837 +18539240232 +15874012909 +18831893009 +18891943897 +18583542118 +18584353969 +13954237319 +18504209107 +13927990717 +18822135269 +13669412377 +13926860907 +15108777612 +18847376457 +18557270824 +15885011084 +18841192573 +15866789280 +18523507394 +18578868489 +13619683518 +18527795139 +18559857263 +15846213618 +18848761287 +18583622191 +18516591611 +13696070226 +18871199905 +15801290011 +13971504265 +13619123066 +15154963094 +13952298822 +13664870509 +15135402306 +18810361979 +13619107495 +15148816430 +15180868214 +15885967925 +13658603749 +15186028778 +18871495971 +15810492269 +13600813293 +18810977637 +18585580448 +18582172131 +15841379627 +18839443401 +15117825757 +13656489388 +13985853342 +18518572131 +18541674604 +13675142864 +15117131611 +15167356205 +13918783423 +13965215184 +18896532573 +18843310287 +15854844763 +15197353892 +15176944005 +18864695210 +15191952075 +18857382038 +18556465737 +18523660435 +18833326566 +13992229753 +15126056926 +18867256304 +15105170322 +18841653932 +15171574581 +13990925400 +15879032894 +18556003554 +13642292509 +18848367254 +13921210402 +13991393196 +13661253008 +15158119855 +13979453226 +13969221702 +18529333421 +15801622204 +18882511437 +13681968635 +18513885325 +18828293930 +13986604996 +15834542545 +13677702039 +13939922209 +18836178833 +15810549997 +13657028074 +18562470738 +13687506347 +13667575191 +13959118028 +13900317144 +18874374457 +18848452321 +13643898739 +18572908671 +13945554633 +13974344178 +15119500194 +13613190898 +15826754962 +15177493276 +18841068392 +15865993152 +13912737273 +18801001237 +18831090258 +18803724569 +18871352983 +15147857853 +15194900121 +15179348936 +18822247805 +13697262640 +13602348567 +15830371935 +13664940628 +13647913946 +18876875278 +15111633138 +15163438758 +13646602374 +13999166313 +13609224692 +18876681453 +18864244481 +13669480040 +18847465663 +13916945507 +13961425163 +13926417288 +18874632158 +18555050620 +18503733678 +18838753595 +13613308301 +13649364130 +18819839893 +13935569088 +18890703100 +18851783947 +15118111487 +13942988553 +15891117999 +18518418519 +18855487588 +15892348983 +13915759465 +13925953074 +15810270634 +13678707111 +13916630627 +18576548555 +15863277842 +15132167782 +18842698421 +18821560884 +18896960971 +18871717636 +13638735596 +13643470174 +13653104012 +18520781111 +18543842465 +15868207570 +15859973125 +13620869136 +15133745198 +13633712679 +13991449998 +15869086450 +18832986276 +15129619136 +13690745043 +13994995254 +15171823953 +13991356128 +15845985475 +13969500294 +18824437094 +18577364031 +15193495483 +13601440024 +13677139716 +15198506386 +15163047015 +18560752626 +18557184557 +15196552365 +13907730086 +15847489882 +13911586172 +15825342977 +18501439748 +15109117661 +15826497578 +18827903500 +18827125398 +13633162889 +18558587982 +18562445747 +13692984614 +13918368120 +15853167230 +15177643140 +13613721220 +13947172173 +15162289417 +13933001041 +18855823247 +13957423438 +18875493051 +13627695449 +15860879375 +18801946702 +15855669195 +13992538549 +18571096086 +13995536210 +18511119373 +13960815356 +13628616398 +15104915397 +13620193100 +15198123547 +15858034932 +15104468864 +13607104856 +18524258440 +13649482341 +18505125123 +15193788206 +15182404809 +15881970066 +15187210344 +15888022439 +18557017620 +15133562095 +13640722974 +18846597930 +18587232759 +13939663608 +15111882557 +13901502078 +15854874979 +18825227122 +18867777576 +13649512441 +13623548844 +13623166199 +13600528283 +13652131562 +13900264543 +18547970210 +15177257060 +13619515685 +18838604037 +15143495300 +18554831206 +18810727148 +18554022655 +18894048430 +15893623942 +13929463874 +13628888683 +13983636722 +13924267633 +15101241700 +18565582679 +18828627488 +18556541336 +18803760212 +18578396209 +18805969188 +15130026001 +13685586397 +18895862337 +15884517456 +13964168940 +18584338471 +15806420271 +15851595669 +15184567429 +18537278452 +15887825521 +18836482625 +13689310652 +18543866615 +13919601938 +13660009004 +18595353971 +18575747419 +13606117827 +15884961201 +13684205205 +15821199938 +15853919383 +15844069695 +15122979084 +18576869020 +15804383038 +18835727457 +13692507575 +15167984748 +13959063251 +15898075578 +13951936802 +15844117339 +13669056851 +15167707450 +18897716892 +13947040109 +15198288247 +15875387580 +18815476822 +15131537762 +18873038503 +18584281321 +18857717231 +15149793036 +13996408776 +18881563550 +15131061065 +13649515654 +15179605351 +13993086230 +13952577298 +13935105545 +13991589717 +15827782021 +15151016377 +15157559514 +13658075097 +18540717525 +18541839511 +13677379179 +13937836701 +13644167197 +13615511731 +15197909545 +13692727994 +13602713449 +18866551595 +18575382073 +18850175326 +13930076061 +18876759894 +15160481744 +13681496297 +15134095810 +18579261388 +13913882138 +15839710548 +13951895356 +13949279531 +13928575287 +15844363328 +13614330515 +13694797396 +15166728833 +13907264863 +18829721797 +18555606553 +13938745424 +18553244184 +13684959125 +13647859169 +15861406917 +13617781836 +13688742473 +13965313457 +18860066230 +13926974115 +15136955333 +15827250931 +18523891537 +15199791220 +13620289956 +18864411068 +18502253676 +18574726300 +18862308392 +15854405942 +13684350163 +13698223049 +18813531244 +18859798209 +18525975227 +15124011160 +15186814817 +13684529807 +15169290205 +13942944913 +18818542039 +13996523365 +13699430049 +13950365973 +18598668519 +13985996624 +18893260963 +15813010840 +13903684605 +18597238784 +13957568984 +18505389495 +13612551658 +18567366599 +18592536946 +15822504129 +13652136170 +13610705248 +13616410679 +18865446615 +18585578871 +18594821038 +15148411680 +18584744188 +18893431972 +13920943484 +13638109892 +13999592249 +15197169110 +18594262918 +15857969458 +15115666451 +18530389476 +15105122849 +13997799109 +15156763850 +13959481661 +18802753510 +13631140301 +15174971784 +18860639564 +18879234351 +15819495881 +13958023234 +15177516050 +15135025981 +13916933486 +18841267399 +15136055510 +13923396534 +13600022871 +18832442743 +13935550033 +15850586670 +15899177496 +18856285779 +13677521715 +13989151535 +18589859471 +18594069775 +13677617278 +15807660457 +13690034106 +18844549739 +13603245442 +18800739539 +13925674864 +13929170385 +13655156857 +18879557900 +15132940204 +18533857976 +13633758306 +13685930771 +18558835139 +15132992869 +18552350779 +15199446736 +13938953442 +13645317250 +13636116263 +18879315216 +18573155391 +13696582111 +18568975923 +18553214942 +13613459096 +15850076339 +15145104256 +18843854958 +13914756492 +15175532659 +15102826265 +13643525621 +13604985956 +15179594223 +15843846269 +13602320472 +18858728976 +13922901925 +15165608579 +15154376274 +15181317209 +18518128028 +13697946325 +15165980620 +18560565826 +15162059576 +15122555529 +13902228143 +18588603430 +15898928153 +13635317719 +13668175269 +18543908149 +15104752086 +15802776225 +13641335291 +13999970203 +13995016549 +18811053215 +18532152870 +13693799819 +13616920182 +18556657071 +15894864465 +15842690024 +18532019308 +13636523218 +18558633201 +13985423549 +18878086659 +18569138634 +13955808293 +18887601048 +13657336127 +13959481981 +18815260063 +15813961795 +13695775696 +18879746348 +15108361129 +18876499105 +15155169620 +18548833462 +13990914364 +15183111680 +15168405179 +18562361301 +13975986303 +18559901882 +18898227689 +13619796227 +18897888349 +13653191967 +13965916013 +13664563178 +18532525060 +13918616709 +18562303371 +15193918047 +15131292100 +15197831967 +18863118604 +18857557722 +18562273909 +15814444196 +13938620196 +15119990319 +18803578693 +15193508104 +18817161695 +13963339814 +15823258899 +13982025607 +13623690429 +15809508380 +15874512445 +13663406995 +18543668319 +18570927505 +18546402173 +13638742940 +15812458150 +13670286479 +15892565497 +13615462019 +18546008056 +13930369579 +18885049393 +15828444235 +15841804103 +15818919084 +15114806989 +15196852110 +15808676893 +13974291464 +15190830203 +15866830943 +15159526583 +15147011408 +13696538578 +15865847544 +13972652796 +18525722651 +15179105826 +18563329707 +13670311764 +15816152949 +18533842354 +18543955453 +15895227723 +18845770337 +18521054876 +13959030244 +13990694874 +15126054032 +15815998914 +15131879626 +13682556395 +13909628706 +18835163170 +13959487244 +15825978254 +13971030034 +13691656829 +18812225850 +15159189801 +15149657293 +13607082666 +18515974531 +15827112889 +15848913064 +18523429826 +18856039046 +18510384682 +13632630368 +13654796277 +18802745017 +13678964799 +18501528634 +18562304455 +18846352103 +13969921707 +15142590709 +13942432266 +15852302164 +15810979137 +15164742640 +18524807290 +15124752955 +15802246577 +18536750738 +15113455074 +13901571294 +13630165194 +13600010462 +15837080080 +13953129703 +15804309137 +18857579313 +15888640833 +15880173612 +13972855316 +18873101227 +13968068536 +18890882813 +18535992948 +15176446558 +18839367786 +15884221322 +13906735940 +18553643220 +15866447800 +18509387974 +13613834725 +13948832151 +13653919827 +13972132617 +18595385502 +18872791506 +15892378276 +18876095293 +15185963395 +18550214106 +18834173176 +18535856625 +15876564074 +13616099970 +18818273495 +18830399005 +18804448403 +15145038809 +18820723598 +13615652655 +15199700073 +15132665104 +13951631620 +13628275325 +18504668582 +18574202693 +13605785875 +18819963387 +15167220265 +15117831470 +18596196828 +13667418381 +18892616084 +18839843677 +18871266205 +18584814709 +18559178602 +13949062627 +13673133950 +13690711151 +18552098551 +15132048605 +18876777432 +13922129469 +13902550307 +18884792753 +15881743589 +13626202551 +15814661166 +15122925482 +13627003388 +18584985342 +18597629544 +15888804904 +18525591469 +13655508171 +18528649984 +13954247985 +18560191934 +18537848611 +15171646425 +13691772825 +18582501562 +15897300175 +18838309760 +15127018584 +18532047284 +13646037149 +13986109950 +15896068618 +18586055405 +18527232502 +18803408506 +15124191774 +15823516620 +18567377932 +13972914008 +15815829084 +13654970745 +15108869207 +18553309629 +18837136658 +15113097238 +18842603337 +15815706815 +13981113218 +13694272313 +18524792174 +15152651008 +13914167446 +13991665393 +15840074267 +13958126518 +18870643300 +18808210541 +13695945414 +15177203428 +15852709339 +18542621645 +13939010268 +15105961098 +13973125216 +15894865894 +18859048146 +13967850315 +13904270892 +15177845231 +13942330738 +13607856385 +15806071860 +13668506095 +13961256105 +13922880578 +18595611722 +13921597434 +18546403534 +18562767390 +18526699502 +18895162652 +15134882586 +15850394876 +15177689371 +13694503025 +18575947826 +15886499954 +18558482575 +13956002700 +13937980240 +15154665703 +18513493228 +15800766177 +15135232143 +18553501082 +13629570913 +13920974116 +15830734638 +18576223341 +15888229737 +18864601821 +15157199330 +13994060234 +15147326642 +15886566505 +18525214596 +18871549137 +18883642291 +15102835210 +13661720232 +15894846154 +18516238559 +15852832781 +13645723987 +15874757768 +13678283697 +15174778645 +15892365298 +15811980128 +18537377006 +15804757819 +18540023624 +13677142098 +18590964291 +15863233654 +18570513579 +13902393525 +13903326714 +18520023347 +15123388429 +15812034657 +13963079410 +18575668893 +13628515736 +15185265944 +13600034434 +13600618235 +15833650869 +13697205301 +13973163082 +13693662459 +13985857883 +13635745646 +13951169314 +13681266390 +13693898806 +18518023803 +18588865652 +13691540820 +15829941530 +15849293449 +18562560671 +18575027380 +15128953249 +18861455262 +15853330855 +18877505492 +13616271809 +15187888748 +13664282939 +18828205903 +15147205391 +13920009285 +15105587536 +15813389498 +13634449415 +18878874581 +15118880713 +15871014076 +13904796423 +15193409539 +15825903542 +18500119209 +18551716422 +18573084807 +13950026173 +13991649820 +13697992093 +13606899888 +18884565432 +18538846537 +15103132535 +15852712084 +15101609109 +13920768616 +18895013189 +13641133107 +13670012357 +18826277017 +13617044568 +13663629054 +13924692410 +13935787870 +13951384774 +18867103986 +13929776186 +15160151603 +18808880076 +13679292258 +15139657606 +13968256525 +15869640177 +18881498306 +18837618799 +18585518146 +15143167343 +18523814237 +18583577645 +18517968622 +15892660124 +13628092349 +13624160366 +18811312025 +18884455274 +13626384919 +15897877192 +13689439240 +15199593638 +15880228163 +15116037116 +13607913236 +18519987325 +15841210952 +13970501082 +15840013295 +13619717570 +13672601065 +13623446646 +13671057305 +18599359903 +13678749023 +13649318494 +13617672398 +15170981476 +15806258673 +18574561596 +15872987546 +18897515973 +13962236808 +13948776160 +18849299135 +18831032951 +13922547832 +13940185780 +15875944341 +13959935869 +15809509834 +13954098595 +15884781335 +15874551109 +18844925863 +18837513349 +15155272675 +13918864529 +18894001677 +18843572364 +18587938102 +15824707041 +15839400291 +13621968925 +15816529669 +18590752607 +18510099867 +13986874841 +18592800498 +13996098169 +15182088713 +18555950118 +13907763574 +15816209587 +13905755924 +18560757225 +13658607643 +18844136858 +15807425100 +18852271803 +13637256011 +13697517130 +13674022405 +18827542970 +13604127700 +15120457774 +18507589638 +13939825366 +18885920120 +13636357786 +15128095279 +15868834481 +18565483031 +18543761240 +18868546161 +15163602488 +15189427450 +18839207803 +13988110138 +15896957039 +13928972944 +13617985710 +13949608504 +13678506246 +18599297664 +15831907207 +15825354804 +13619157282 +15812345715 +15136234423 +15171604296 +18591295861 +15849788097 +18881497416 +18596713487 +13619140181 +13647529456 +13625343982 +15880890981 +13956052865 +15898120100 +15800572706 +18575534228 +18811271099 +18597331859 +15830977014 +15173308797 +18537036088 +15199730693 +15185901278 +13964191090 +18520249108 +15862838002 +18567686978 +13697752547 +13947287372 +18862099742 +15869726689 +18572481937 +18839710958 +13664607601 +15112405540 +18800504690 +13676488133 +18859987341 +15163532404 +18535945302 +15125665944 +13614261007 +13670748946 +13994033987 +15109261427 +18847852227 +15153595108 +13658280351 +18536555575 +15864727338 +13911937294 +18586618750 +13617723848 +18588086227 +18589005133 +13915112453 +18553682039 +15180153137 +15122629635 +18592398286 +15866303000 +18867560130 +18813856404 +13696754224 +18859709432 +13691357552 +18589205725 +18513688728 +18561610440 +15114461341 +18561619388 +18896642995 +13631394165 +18576660229 +13999224239 +13905720071 +18875549453 +18527371566 +18565621798 +13604637930 +13607592742 +13655821903 +18545758455 +18885287409 +13689344002 +15822392007 +15175416396 +18521779156 +15187766548 +13982508748 +13682422403 +13641526131 +18531482121 +15153829994 +13945742731 +13652402201 +15848071794 +15165039394 +13642602321 +18516138476 +15130852476 +15874430367 +18500822757 +15847985867 +15171598136 +18515231045 +15185238809 +15126478192 +18873123404 +13611384746 +15858893517 +13696933498 +15158361302 +18882766577 +13997290098 +13942476806 +15820986167 +13944581580 +18539928342 +18505561247 +15889780844 +18849219889 +15150870820 +15894745521 +18562151067 +18557999187 +13690551034 +18550458389 +15886537122 +18813403786 +15859602097 +18820133602 +15140868481 +13940619269 +18573443189 +15194084293 +15879923812 +18890035795 +18821391623 +15127336575 +18573189918 +15118942372 +15812854494 +15881413205 +13646014780 +18586881778 +15166836528 +13640192970 +18811983238 +13900725601 +18898118984 +13634765459 +15140433069 +18534549949 +15859376144 +13603939927 +13673609259 +18555838165 +13693193339 +13914402999 +13977514644 +13624928470 +15115230418 +18839586054 +18510293265 +15824286953 +18537777426 +15157104232 +18835092923 +18558387941 +18869985231 +18825747532 +18829617425 +18883330942 +18516308124 +18872419524 +18888366715 +15195830384 +18546548154 +18519117540 +18865211813 +13909835143 +15172170830 +15871391445 +13607051500 +15877432085 +18830409252 +13693820561 +18599045724 +15872582663 +13623934676 +13625647217 +15107681341 +15813340414 +15860611914 +13686522969 +15819086163 +13677273624 +15193698924 +18843222241 +15188855477 +13627944673 +18808804135 +13613843060 +15839566611 +18550812941 +18578795128 +18575634978 +13910989836 +15880456946 +15873810593 +18879518902 +13668996581 +13682976449 +18895320242 +18892182009 +13656020123 +13606053361 +18532226694 +13615093024 +18547152622 +18545011097 +18878088104 +15112716399 +13955566309 +15883138369 +18520932945 +15832467028 +15870777540 +13962084069 +13668895805 +13932409110 +13954046871 +18584547026 +18835261350 +18559296569 +18838488148 +18574322411 +15190890094 +18886694099 +15199250492 +13651744487 +15893651395 +13667376470 +13646194365 +18506455897 +13666056501 +15875910128 +15156886057 +18881053829 +13607352851 +15839355306 +13604901250 +18592678862 +15162333002 +15111885474 +13613172374 +13627516806 +15177175465 +13979653085 +18533176323 +15802061664 +15197378777 +18565156055 +13919451261 +15896221592 +18881474605 +15856524604 +15150438556 +13919210573 +13982437691 +18522556677 +15148565293 +15113971183 +15185249685 +15816332847 +13958347937 +15840755955 +13934397526 +13684374133 +13976232246 +15169082528 +18512031033 +18889475295 +13636663909 +13956560284 +13993030708 +13648779824 +18838776464 +13677048186 +18852161708 +18886549378 +15831575847 +13697875800 +13686898071 +15880321612 +13676464463 +18881549694 +13602062710 +18597637092 +18834181506 +13676574146 +13655587570 +15806858950 +13947112595 +15194547227 +13973503227 +13961183687 +18559876201 +15823955600 +18880709504 +18533606274 +15100854111 +15154818331 +18822843150 +13657841346 +18837596896 +15821239885 +15852034021 +18869070768 +15143519808 +13986896536 +15892260957 +13662261944 +13653877357 +18895769970 +15810965408 +13617919215 +18812039623 +13900958739 +15813947798 +15801675781 +18815286305 +18830522183 +15195908002 +18856227930 +15173051656 +13910319461 +13648692815 +18840560024 +18821894822 +15843365459 +18539759031 +18553244555 +18877918735 +13673626184 +13613842969 +13927957496 +15155940732 +13938934216 +13607570774 +15124522529 +13693016071 +18501906092 +13998900032 +15106992145 +15816603400 +15116827836 +13648329149 +13619352706 +15172742513 +15854337113 +18583361953 +18885476941 +15195333073 +13966203524 +15185032748 +18894598257 +15191911554 +13683437252 +13608408519 +18547432095 +13903173249 +18556424148 +13956473786 +15163420285 +15153493803 +13634576666 +18809167392 +18581541148 +18576322691 +18573934803 +15143334411 +18859310130 +13654938836 +18523699346 +13615492069 +18807914763 +18849159862 +15813355631 +13601071379 +13924696168 +13954700804 +18551228466 +15121639652 +13937119692 +15853579182 +15141456991 +15863486559 +13981934344 +18522678935 +13998540041 +13921246233 +13930845444 +15146627156 +15180225773 +15156133204 +13969695845 +13655861983 +15861347012 +13958631993 +15199476183 +13985840677 +15144751122 +13619036804 +15114153068 +13910626251 +13687247027 +15897222231 +18845023909 +15193827854 +15183110843 +13648277636 +18817402710 +13687973343 +18846547952 +13917994524 +13956052234 +13656796325 +15891283939 +15181427861 +13661030365 +18840046188 +13606666534 +13602209479 +15826727948 +15158378066 +18597822327 +13696821463 +15803343735 +13699404924 +15169359777 +13636581415 +13986820227 +18892741176 +18557900753 +15155699897 +15114558955 +13997752725 +18855438994 +18505449895 +18558781048 +13658746529 +15150242365 +13680145507 +15876422284 +15869768895 +13953516793 +13604524779 +13991497755 +18866640876 +18573859057 +15110844480 +18525594514 +13662339867 +13698931878 +13699775108 +13675965893 +18546806559 +13670734916 +15843342383 +15124177542 +15197928489 +18517720643 +18849127177 +15125945110 +18569020470 +18862103517 +18891278563 +15876881205 +15837357108 +13661529418 +13602734433 +15143649069 +18864675215 +15176117012 +18852305281 +18545241336 +13929455424 +13917958624 +18544363140 +13935889126 +18539073887 +15870680202 +15102237101 +18505903742 +18507145152 +15882378350 +18838231210 +15156089438 +18586273331 +18882699340 +18879547537 +18536506520 +15131661476 +15164316490 +15805084998 +13965998058 +15118324427 +13937830265 +13672098639 +13683748478 +13673959846 +15891911325 +18813375507 +13950534180 +15122974417 +13639465251 +13967740970 +13679885914 +15895917444 +18898335934 +15153199775 +15169226546 +15182204794 +18893573038 +18548918324 +15112443114 +15168510477 +13989632991 +15167322482 +13945578394 +13639988983 +15808633319 +15125120738 +13678674256 +13996976693 +15855949840 +15195468705 +18536842267 +13653953663 +18863804368 +13910395245 +15193931880 +18522531439 +18878861769 +13646526887 +18530338938 +18815213041 +18897922516 +15882446680 +13609649109 +15127070280 +15883304409 +15843561487 +18803894025 +18539169218 +18834391590 +18829607929 +18568151471 +18592533802 +15875155861 +18860404377 +18840200859 +18537039026 +15899399485 +15182664171 +13948889460 +13610310500 +18824791087 +18599468418 +15169601756 +18547468581 +13915176422 +18862453824 +15169330716 +13656212831 +13611504886 +18587962350 +15857624463 +18862003716 +13664222493 +18525507968 +15874049875 +15167099494 +15187065147 +15129071194 +13652790936 +18533734127 +15138486481 +15871827240 +15832401127 +13965744505 +18894414898 +13610946916 +13939779420 +18864984979 +18814573007 +18834415222 +15839771844 +13679691254 +18516532883 +13656968101 +18876097201 +18516937610 +18572214184 +13989461507 +18836598090 +13622825440 +15852475607 +18897790259 +18870092974 +15118079742 +13932894503 +15865497748 +15851798664 +18563505458 +13954561254 +18596051327 +18856761012 +15147624457 +15177619526 +15876771144 +13995530668 +15847820580 +13967432092 +18839181268 +13945417205 +18551933635 +13961233844 +13969876195 +15871328383 +13628259642 +15166047310 +13615266638 +13915272111 +15144022113 +15140147145 +13971151750 +13994355552 +15168976628 +13914187717 +18801923181 +15129037249 +15866594896 +15853067396 +18590701944 +15134400549 +18527684760 +13994831415 +18898203604 +13980584914 +13600639767 +18845933675 +15869631181 +13990969784 +15801420439 +15136143492 +18859172787 +15113422537 +13652587358 +13683990455 +15111107741 +18504252058 +13611777195 +13934727697 +15863305295 +13604380045 +15131225962 +18546071908 +18508958754 +13924816589 +13688700437 +13690769122 +18896101192 +18849123194 +18585504121 +15855960379 +13912471444 +15182777956 +13959916431 +15170842893 +18859294257 +13622681739 +13695954560 +15835008883 +18849902757 +15100448894 +15815511649 +15804680708 +18848118099 +15846191442 +18883680053 +18515883535 +15892090244 +18549354966 +13664891228 +18870912565 +13697674845 +18561465230 +18558695063 +15834071785 +13925511298 +18559266796 +13640174168 +15848379773 +15173267548 +18560373792 +13944624202 +15865815493 +18547355780 +13910110381 +18568993133 +18579704689 +13958893848 +13643395340 +18589759946 +13695158210 +18578046765 +13991089896 +13629025502 +13642012113 +18846145223 +13974959702 +18557874381 +18886380184 +13998533906 +18895514359 +18899161077 +15183011755 +15129809957 +13618430808 +13996209895 +18538251356 +18841061191 +18574270708 +13633843593 +13681639953 +18858425563 +13910273666 +15801842092 +18559009764 +15812831479 +13963792435 +13684173781 +15175676656 +15897466106 +18851225619 +13961491786 +13675366112 +13916518874 +18506919050 +18818279567 +15826394822 +13661667771 +18826960288 +18564720777 +13647417899 +18875983309 +13692448413 +18593231198 +13985397684 +13984002809 +18589510085 +15880327772 +15167540832 +13909508279 +15168388607 +18813069832 +13901733116 +18870945182 +18580569277 +15879567227 +13988981179 +15196428441 +15853733910 +13986943517 +15839522273 +15115960730 +13690502109 +13994703780 +13943072623 +15809476438 +18554733347 +18567981315 +13916362794 +15861259887 +15888899696 +15875852817 +13674770347 +18528901044 +18573964876 +13958626818 +15800628444 +15802620653 +18885669432 +15183300646 +18556729998 +13694168463 +18582500189 +13977604978 +13690365239 +15168869132 +18840273704 +13634252539 +18892433370 +15849767594 +18597026745 +18513856472 +18518046091 +18525307986 +18546093158 +13959286551 +18891407165 +13659897106 +13655313512 +18521637952 +15819193033 +15837424038 +18897232717 +15881286023 +15129849524 +13687601529 +13999463823 +13919251971 +15173681556 +15156710454 +13969383286 +13936216154 +13990793712 +13904037547 +13672338291 +15120211859 +13634494629 +13635977022 +18563701844 +18565026439 +13956012007 +13694384781 +13621163617 +15172018927 +15884920218 +13601106520 +18824682233 +18515149221 +15144623954 +18594043500 +13602947894 +18556215558 +13602142139 +15844511301 +15812247177 +18835421417 +18892923118 +18884922000 +13958327683 +13930096004 +13627441776 +13653041178 +18861349931 +18809645984 +15897612144 +13618559407 +15873532354 +18549308541 +13961084395 +13943197051 +13904231647 +15896353999 +13921553281 +18897529049 +13945019248 +15152451143 +15876554888 +18529485937 +13654780663 +18507141948 +18551890500 +15882186044 +18829665138 +18856694950 +18529264583 +18863812791 +18577494133 +18513048427 +15841312492 +15842705805 +15804978715 +18856709770 +15121135124 +13669513941 +15159067966 +13661710451 +18865406519 +15878136885 +18591925266 +13944720934 +15882286054 +18580558037 +15897155477 +13953686048 +15137018143 +15106794753 +15854314561 +18566151285 +15865891879 +15195596591 +15845469566 +15806575358 +18588254808 +15851559971 +18574584485 +13621149699 +18820302350 +13633295776 +13625260990 +13646785451 +13999397335 +15164805839 +15120804771 +15131502174 +18586512226 +15867491339 +15849826329 +13651356673 +15845601575 +15805416875 +18891493653 +18529858752 +15160019627 +18865876080 +13932502233 +15852531977 +15800975538 +13651008044 +15183777078 +13986667588 +13679492904 +13632486499 +18523528729 +13971742841 +13948080544 +15149707304 +13921097391 +13658818218 +13670971038 +15814525236 +15826441191 +13672296562 +15128139800 +18509104927 +18811855318 +18833372966 +13655282951 +18595633308 +13619976664 +13931424546 +15838123889 +13641293659 +18567327585 +13690097684 +18509715600 +15875614862 +13956542352 +18804691824 +13682482448 +13610139748 +18503070368 +18845984106 +15856086845 +13965629335 +13677826438 +15194743666 +15827959086 +13621410827 +18812264999 +13973618544 +15171285639 +18567393637 +13962229164 +18570463194 +18828499408 +18852783888 +13954146118 +15869277851 +15196794492 +18827477776 +13622483199 +15812443709 +15171332455 +15897885273 +13961697693 +13903026207 +13679149059 +13641475157 +15134605958 +15856580510 +15199010644 +15809293210 +13907614234 +13625950717 +18858253282 +13951000577 +15139615939 +18828536240 +13681577499 +13628388788 +15813439191 +18551681617 +13644780902 +13980998312 +18526530710 +15187293346 +18897949266 +13995753481 +13650357395 +13647465671 +15198289427 +13933709328 +13953592662 +15127388775 +18560821005 +18597787386 +13662705708 +15175728488 +13964696578 +15825992484 +18528897420 +13652949978 +15836686794 +13653835914 +13617659783 +15135938968 +18868040339 +15136217147 +18848832200 +15108345305 +18542439661 +13991411689 +13608842130 +13606595120 +13602692678 +18505672337 +15195013047 +15127165821 +15856831768 +15144312580 +18881910485 +18568874039 +13640616632 +15844763931 +18829737661 +13670279901 +13681036848 +15891975779 +15117055790 +18536186800 +18808481658 +13688409157 +15116561097 +15853141790 +15143974040 +15844984708 +13990661195 +13949075646 +15162208024 +15151969096 +13672289465 +13956837179 +13602013005 +13695334376 +13906010602 +18590584567 +18591789184 +18839376457 +13644330953 +13654246274 +18890364283 +15193035785 +15805098113 +13668399540 +13684579328 +13676042605 +15159317604 +18534569247 +18588878491 +13923691352 +18552413771 +13697198615 +13955804920 +18807174973 +18526311831 +18570992042 +13675196028 +13644289872 +15899606857 +18828290979 +18833252732 +18573747584 +18840243315 +13947974170 +18594651820 +15886573960 +13942929970 +13933735545 +15864022664 +15827599168 +15132828379 +15820339180 +15146737527 +13936604297 +18888925479 +13904182959 +13661368421 +13970533436 +15875619220 +18824997529 +15115813920 +18549149300 +15836436076 +18892632071 +15193520200 +13688695129 +15855959919 +13698347271 +18856818515 +13987580591 +15866909457 +13660495832 +13947826928 +18885710807 +13601764696 +13974435248 +18582219731 +18864717733 +13673163039 +13616126650 +13630235183 +15869993873 +15187175452 +18898488056 +15810543184 +18848335644 +18823651515 +18505787738 +15829836912 +18853374829 +15864697181 +15118157577 +18829981151 +15879473906 +15885436786 +15122012699 +13907983840 +18828835636 +13964788405 +15173351686 +15891632084 +13966274624 +18851632107 +13993441728 +18830140065 +15859080373 +15109970760 +18552594988 +13995318735 +15145802823 +18513933017 +15187653323 +18838898624 +13903713058 +15814818506 +13654188710 +18877856435 +13648423633 +18552323289 +18864202102 +18566403227 +15879199820 +15873963401 +18832100634 +13944773130 +13699378461 +13632270238 +15191452994 +18541688862 +15847449359 +18895262885 +18507567890 +13683586284 +15111298706 +13656331642 +13655761064 +13625528236 +13968459576 +15138495947 +13665518817 +13960291066 +18841198554 +18888802035 +18594030397 +13991747047 +18500725609 +18534540790 +15851915968 +18811939123 +13625152115 +15147126658 +15808637906 +13962540524 +18501156189 +18880811862 +13699652372 +13614091125 +13985041847 +13919122138 +15856037764 +15173620630 +18826105506 +15138281765 +15829544206 +15873690016 +18802788245 +13902295995 +15857825452 +15148178554 +18592862499 +18818994632 +15888689754 +15850630612 +15103228248 +15866373028 +15841322878 +13678014001 +13934762203 +15868183516 +13660904498 +13987603520 +18514519223 +15865457941 +18586475341 +13662100041 +18564057133 +18888266064 +13934712386 +13631795203 +18536329783 +18806130196 +15105145803 +15849525503 +18833424140 +15867503502 +15113268641 +13671629232 +13901958950 +13665637609 +13966237841 +13985420205 +13960472467 +13953678278 +18869414964 +18868116722 +13911935651 +15183136180 +13668710940 +18893397231 +15144645133 +13610187329 +13635367490 +15146540283 +15818079143 +13687551260 +13960346657 +13680332951 +15192591942 +15839302272 +15140215073 +13632269139 +13670652024 +15892486803 +18599690977 +18517331430 +13689366027 +15139142818 +18827418984 +18819172940 +18560998278 +15122505876 +18806078520 +15110203697 +15184261610 +18578185732 +13995807324 +18515182546 +13626948895 +18540854027 +18571728493 +18597678685 +15882311827 +18578055636 +18524343942 +15185597968 +15816092189 +13970193267 +15164235352 +18859374807 +18592439629 +18587727330 +18578392016 +15146341463 +18896709211 +15187542118 +13681642408 +18520778811 +15186779819 +15810023777 +18818139525 +18589030350 +18565984893 +15833102856 +18567863408 +15106562069 +13937675232 +18898842030 +15855255494 +13970536201 +18829841972 +15190557621 +13621105871 +18576913375 +18823203114 +15126077890 +18825183106 +13602888469 +13615863957 +13699470747 +18556920169 +15824294376 +13980202908 +18560480400 +13990364508 +18534004563 +15172392431 +13921051165 +13632538182 +13944144262 +15892633856 +15134238823 +15874956896 +15804181721 +18586711446 +18506882311 +15841698473 +15865021052 +18545957689 +13609544353 +18538539083 +15195267259 +13999979121 +15100871036 +13634288925 +15821735889 +15881300623 +18851585392 +15876244700 +18854045028 +15897634257 +13616558222 +18869301366 +13907135944 +18595869073 +18882415587 +18569261499 +15141565703 +15871421893 +15104122248 +13643531609 +13612968099 +18590538896 +15124016774 +13626268158 +13946320319 +15188457245 +15190037438 +15179665968 +18870308261 +18812278012 +15817467637 +13659239032 +13965541792 +18533176370 +15810807843 +13945060170 +15151978211 +13669221656 +18542290779 +15112253099 +13980427439 +18548451238 +18572086783 +13955702171 +18535988227 +15818354837 +13631204546 +13613653767 +18870982117 +15889252551 +18557720290 +18800389144 +15127875297 +15827614186 +18567182368 +15890302289 +13664192157 +18822586144 +13618198123 +18889527380 +13676051450 +13944731538 +13631175546 +13966351128 +15100388811 +13933550978 +15132211089 +15875786383 +18512992381 +15162568499 +15148102042 +13628530757 +13616826481 +13604292972 +15129096551 +18861591114 +18550943821 +18807947609 +15822956336 +18514668275 +15119197330 +18572887805 +15853073500 +18528452471 +18521674197 +18845692982 +13680991314 +15806765073 +18831035021 +13667009383 +13966339444 +13939686699 +13688478132 +13616070310 +15895049611 +13954934647 +15892623791 +18817935842 +18815569438 +13671733309 +18540150643 +13674268201 +13632512075 +13928927771 +13925301295 +15813687902 +15195205645 +15169028559 +18870662987 +18802434425 +13968512478 +15112747114 +18827316987 +15179514869 +13934967517 +15198996839 +13927264576 +13699798341 +18581472107 +15131064340 +15813731527 +15135700093 +15192129412 +15172154623 +15880445698 +18513699748 +18828331736 +18857185447 +18547665049 +13604282367 +15197562645 +18857746720 +13603954412 +18831887508 +13628364436 +15157339713 +18593125901 +15888145520 +15163639782 +18593176859 +15889077747 +15146149664 +15178292052 +13637705104 +13994681781 +18852551742 +18892924405 +13962299587 +15144724833 +15845049912 +18550836507 +18508175618 +13660496827 +13611044996 +15181085617 +13601748873 +18875954465 +15800978244 +13947841906 +18886897025 +18549044518 +15885669419 +15127900873 +15899822021 +15855426165 +18823258108 +18847471353 +15802486783 +13674489691 +18529474986 +18823108337 +18568302501 +18827530551 +15825899423 +15886257240 +13928436633 +13904911237 +15813835414 +15198726443 +15137600439 +13606592963 +15817030041 +15140403598 +18517495830 +13952648568 +15154002373 +13625632746 +15143264300 +13973226996 +15810881076 +15897752731 +15140076960 +13912984947 +18544204399 +13631138249 +13933155951 +13617734292 +15822267413 +13645572778 +15847246293 +13676756328 +15113307160 +18877640205 +15873321259 +15878116852 +18527952111 +15831819790 +15880348410 +13682204033 +15821268752 +13901395710 +18891894309 +15178416107 +18545358714 +13612018794 +15180602854 +18841583352 +13681554917 +13627006049 +15192091388 +13646797086 +18872625855 +18539587105 +18873528160 +18879251041 +18874581674 +18817075679 +15857032456 +18546393397 +18579612999 +15154616748 +18828374156 +18813579615 +18511206442 +13971098559 +15160863157 +13693962959 +13611447935 +15187481573 +13992933492 +15143002075 +15111670589 +15154590985 +18575376138 +18854719848 +15180015766 +13935498359 +18585549889 +15862429568 +18893074712 +18850426962 +18845573703 +15868488501 +13962702818 +18893636063 +13972572619 +15118922462 +15840958444 +18860322245 +18553460584 +18895526576 +13680869206 +15883279503 +18857501874 +18552309550 +15851578336 +15844790590 +18846588742 +18587565017 +15152493261 +15829265650 +15186615084 +13635256470 +13948431651 +18527090904 +15823574858 +15112663852 +15106440514 +13956861333 +15874691530 +13604042314 +18868938063 +15823564854 +13936472215 +18539968897 +13906348304 +13937689482 +13917988536 +18512524236 +18856051271 +15845285616 +15833945315 +13968869145 +18595687963 +15153994116 +13992220579 +13644280899 +18533541115 +18853230767 +18587556576 +18845943217 +18842717967 +18539775675 +18554261892 +13604099400 +13666478483 +18813993529 +18887347792 +15816325801 +15855697961 +18845808176 +18556107776 +15869584725 +15146301820 +18857173971 +13965755548 +13910765518 +13995373123 +15184626413 +15840078519 +15187287244 +13666374869 +18876906501 +18548655666 +13646374806 +15126556494 +18861335028 +15850668281 +15144427502 +15829668032 +13977342195 +13904009736 +18524403126 +13611954313 +13961426016 +15170660297 +18568870630 +13628333945 +13604876017 +15120189187 +18836628580 +13938659080 +18886104772 +15808459159 +15152315720 +15112555128 +13962482693 +15801079695 +15853409794 +18532425830 +13929338525 +18546182422 +18533692379 +18824254716 +13961124846 +18537198196 +18813660875 +18548128584 +15863543472 +15177856327 +13667453286 +13658302319 +15831754908 +18857806947 +18548123142 +15888406120 +13663128065 +18588992800 +18837596997 +15851929563 +15177292475 +15837501777 +15804298935 +15193547836 +15821066269 +18532561171 +13955717986 +18815356129 +15116255686 +15834606158 +18808994439 +15885053004 +15182554083 +13918906745 +18509181836 +15161680683 +15145749160 +15879628173 +15810523928 +13903633480 +15153106921 +18556527147 +18818003281 +15197232303 +13982425653 +18592764277 +15825547140 +15843800364 +13658669427 +15800486241 +18893083424 +18560845202 +13610987609 +18554988228 +13603475610 +15146724093 +13603726656 +13952476292 +15818026807 +15809949761 +18593796141 +15877797224 +13607635615 +13993399314 +18812586450 +13987902652 +18852792945 +18568881174 +18576158108 +15851901308 +18896293241 +15884233467 +15111636277 +18530385375 +15177948539 +15868606756 +18863789690 +13686577523 +13904768439 +13626564105 +13997480652 +13610888921 +18584829925 +18524832517 +13639788314 +18895793150 +18531700850 +13989719978 +13978314453 +18845529160 +15106792493 +15193454699 +13932924104 +18879532208 +13662489593 +18547949631 +15859917228 +15834746451 +15811594446 +13935788941 +15104003854 +13987606673 +18528494375 +13999317214 +15163336456 +18893071486 +18577530613 +13906016287 +18543746801 +18583190164 +15894677288 +13629112403 +18591687922 +13619218512 +18821173001 +15825609417 +18515947306 +15843627808 +18597878714 +18589944185 +15192791197 +15159745919 +15894798470 +13615619427 +15170271818 +15117245181 +13605003121 +18877440953 +13923434921 +13979142404 +13959541694 +18870879972 +15827285894 +13969180535 +18520178542 +13930336862 +15194737297 +18519210891 +18587872962 +13920548750 +13683400288 +18881031520 +15882489322 +15845273757 +15123049518 +18893694638 +13642912622 +13693540375 +13974465432 +15881483910 +18532897258 +13981016071 +18500893321 +15186300273 +15888507301 +18557597595 +13697983620 +15105531363 +13677278525 +18848014520 +15868429651 +15852684616 +15894567067 +18598241200 +13987345177 +13926695025 +15180623852 +13987594777 +15146292796 +15806311180 +15889427369 +15889329115 +13625057998 +18568483010 +13936157992 +18823660946 +13931641032 +18807499670 +13660908211 +13662283013 +18574082026 +18511672110 +15850260378 +13905130364 +15872228990 +13990935056 +18533391244 +13980771322 +15182090384 +15837264585 +13696273837 +18843672751 +13672430726 +18585969031 +18811644014 +18538589150 +18587773332 +15826322587 +18817279936 +13959891751 +13945932572 +15183683626 +18577317867 +15180033172 +18882871712 +15893187988 +15815869799 +13919330620 +18594349189 +18575085494 +13965310727 +13633100191 +18878117181 +13609302845 +18839481229 +15873206397 +18851071704 +13697576879 +15873317864 +13605569910 +13955389601 +13658035947 +13936625918 +18883049375 +18819602998 +13699105194 +18590344099 +18886792273 +13684796277 +13966188865 +15156165456 +15894145648 +15880883875 +15167322147 +15185532174 +18591351549 +13963803808 +13985713275 +15106309509 +13900481274 +18821238712 +15114465601 +13982245845 +15123676590 +13656713095 +13620825812 +15827788382 +13916551422 +15101383106 +18852738358 +13674171200 +18595094657 +13673893560 +13626070319 +18507438131 +15833166830 +18588939133 +18885900439 +15836892686 +18818076680 +15130765429 +13906671142 +13698164270 +15897381905 +13620064323 +18839562546 +18586589793 +15853127804 +13638322154 +13946767970 +18586356599 +13925580732 +15165430404 +13910356349 +13603970834 +18599089487 +13940024308 +13652540584 +13642139059 +18512681848 +15803620057 +15843219327 +15840159732 +13932007207 +18851713853 +15110069977 +15872732471 +13602681651 +18816114358 +18898935484 +15104883585 +13971750893 +15826107084 +18834540324 +13622333964 +13624911497 +18851114676 +15894037325 +15883526154 +18866877918 +18814782778 +13676327113 +18850630725 +13994728024 +13982871755 +15158505030 +18862631192 +18539515374 +18808125597 +18521986863 +13656852923 +13931337280 +15847085256 +18503405032 +13954980313 +13994886978 +18578973073 +13676526308 +13663341342 +18808469149 +13643094409 +13937519311 +18803917046 +15856287065 +13686777879 +15185838299 +13916642073 +15852612396 +18852718486 +15889822375 +15196162022 +15127970736 +13948853998 +15148998796 +18535916530 +13694142701 +13647988977 +13652645208 +18843940492 +15113870949 +15845551945 +18886695344 +13972639690 +15816123454 +18803912104 +15121751286 +13950826030 +15880925696 +18888515728 +13626738522 +15858960048 +18542549741 +13607246431 +18597211902 +13655647867 +13913235497 +13655132986 +18573107393 +18557147917 +13609018267 +13614282147 +18897949431 +15197183602 +15847451509 +15859864664 +13977515970 +13606315250 +18514799847 +15185754527 +13655814411 +18855253472 +18573894700 +18896047139 +13697973749 +18581898361 +18579142286 +13961094489 +18583256308 +15832579095 +15172456855 +15134298966 +15178954840 +15828160826 +15899704326 +15177250797 +18527292911 +18841937310 +13608109987 +13652404944 +13998836581 +15848080915 +18802487156 +15860285718 +15866157503 +18826538893 +13967738374 +18894555641 +18542074217 +15849783283 +13631349599 +13672169460 +18588578226 +18891139517 +13669340875 +13691281515 +18816178213 +15814367422 +15135884777 +13907433892 +18513384422 +15863598009 +13603926576 +15188609156 +18826496442 +13992495833 +15189758479 +13643678524 +13677863991 +18837886629 +13957515392 +13614484951 +15879797229 +15114876455 +15812133621 +18574857302 +18543466140 +18587851386 +13994275967 +13902834453 +13643995424 +13950835694 +15857990899 +18830112371 +15199912343 +15809135606 +13916300955 +15143334875 +15853337562 +15872841401 +13624370516 +13611798348 +15873879997 +18828903431 +15823076596 +18566520715 +15177267755 +15853558001 +13949098077 +18874394660 +13910576522 +18526951049 +13605436606 +15158164477 +18849378641 +13655453969 +18899412477 +13691478438 +13940288390 +13968421050 +15150235095 +13916610710 +13610797700 +18844888252 +18570456428 +18596373383 +18812691465 +15141223079 +15823247849 +15172096858 +15874520000 +18812033848 +15169368232 +18871303921 +13976725304 +13988036826 +18879148019 +15850597999 +13600553343 +15859320979 +13644977895 +15126390924 +15135405453 +18526255938 +15811797166 +13653994524 +15882083196 +15812193668 +18513006575 +13665862270 +15861141028 +18828560645 +18506931167 +18851540545 +13954131815 +15188691183 +18845297480 +18868519322 +13967928182 +13677366151 +13633668556 +18894455012 +15137243165 +18540736182 +18568069025 +18847289523 +18562814401 +15805153610 +13633860883 +18821576355 +15842811634 +15833096994 +18853067890 +18545728388 +18866366108 +13628087079 +18511086501 +13645560237 +13990305003 +13955841283 +15886992668 +18531720082 +18507472275 +13959466127 +15117798012 +18557484331 +15823904070 +13681738906 +15867867547 +18596618433 +13638005462 +13935084142 +13655511803 +13942862426 +15107015981 +18526163252 +15879510938 +13946408433 +13604894807 +15880925443 +15194190724 +18862665616 +13940046161 +18520981676 +13926864576 +13981238409 +13907742089 +15874716123 +18599647462 +18525416318 +18593249827 +13953078089 +15879088260 +15849818850 +15191401667 +13927065757 +15160911490 +13969229361 +13956227406 +13617149579 +15141365027 +15160893868 +15863299368 +15147290753 +15104712410 +13639095103 +18892598966 +15183382580 +18850328983 +18582483607 +13996453276 +13671865982 +13938597480 +15161370107 +13929524411 +13691377871 +15829982523 +18814001554 +18839799140 +15887541159 +13640571252 +15804407638 +13921405607 +15885076044 +13632516355 +15882978351 +18866000305 +15164472059 +18818881999 +15188599607 +18865900853 +15873827422 +13915599387 +13640261164 +18843401332 +13983919437 +18510538559 +13975419280 +15836674238 +15833773105 +13902570090 +18829510164 +15848635325 +13654505776 +15106464209 +13917552472 +15140095310 +15194542080 +13966617271 +13953627564 +15185128703 +18892609812 +13654327180 +18559173371 +18566289477 +18869623079 +18886447549 +13621429666 +15819779576 +18802387608 +13931149017 +18888483328 +13950431993 +18552591400 +15825301417 +13663740515 +18550625248 +13961896031 +15197342238 +18882649305 +18837854294 +13915952153 +13910063348 +18555002578 +13688668076 +18511351147 +15105123217 +13973278002 +18874450293 +18817815747 +18880253372 +18585127026 +13613701770 +15107760892 +18562995524 +15824172772 +13630142789 +18804914759 +18897671516 +15886224853 +13920195038 +18817770101 +15858102335 +18556444190 +15169974717 +18822670837 +15872978115 +13644993009 +18538783701 +13995835914 +18539095873 +15124125207 +18554493245 +13661448782 +15821076998 +13977470116 +18809706696 +15865254566 +15854426102 +18820123372 +15188954338 +18827205801 +15863602707 +13944963562 +13682043073 +13613296679 +18586704270 +15153776556 +15815910187 +18534191340 +18526769202 +18810394494 +13979498411 +13696430122 +18578443647 +18883559986 +13669742049 +15867519342 +15820289992 +18828350130 +13994510268 +15839628313 +15874316492 +13928742776 +15898142850 +18871185354 +13900516136 +15845932227 +15818131502 +13955244013 +18587872812 +13662020819 +13970297302 +13681598510 +13991211135 +15841853033 +13600165673 +15806010726 +13682269844 +15877089051 +18808393080 +15115574382 +18508136862 +15129187531 +18545449066 +13621384745 +15882304859 +18895135246 +15801925720 +13952404352 +13950817589 +13975593554 +13640527522 +18808330362 +13966576763 +15188910913 +15802667059 +13935699875 +15865244848 +18867926056 +18890444899 +18897373805 +13902265144 +13911724711 +18522444771 +15142992119 +13612775456 +13947791604 +18885856687 +15870658976 +18500257985 +18836867856 +13601378080 +15835938723 +15192546001 +13915193510 +13956383103 +15823400647 +15131251293 +13956603739 +15132992341 +18542903345 +18582686582 +18841766335 +13660644244 +13627794078 +18503056061 +15804244916 +13926208337 +18825749444 +13979235194 +18816182545 +15887717335 +18864476052 +13953971974 +13682700054 +18554247653 +13614916126 +15817699204 +15128227907 +13682610152 +15853795486 +13996191554 +13929994579 +15154035785 +18812599183 +13688857913 +13978533073 +18805780391 +15823573245 +15832295187 +18584977704 +18830364196 +13961830798 +15122695069 +18584197161 +18556021675 +13930626142 +15896847053 +15193321066 +13922788268 +15856414366 +18520123232 +13989125300 +13933962903 +15164742455 +13694736122 +15840565458 +15150330910 +15110418914 +15114481575 +15170667059 +15169067265 +15125000392 +13971657088 +15151249038 +15120375527 +18818972428 +13918328182 +15147882724 +13600372622 +15197087175 +13621802470 +13933220404 +15810552719 +15184673914 +13937027189 +13983448309 +15832261229 +18823215948 +13926793558 +18535570194 +13619929261 +18853839792 +13604756014 +18593450506 +15817563730 +15888556477 +13625942751 +15115378053 +15191649849 +13602929576 +13911156935 +18819868702 +15104268947 +18506472370 +15108588534 +13658592712 +18510389660 +13661913105 +13925604550 +18596616396 +13664249931 +13947536681 +13990133704 +15887653945 +13666803107 +15162025064 +18532190613 +15847582815 +13956822464 +15895902888 +18537677246 +13950706040 +13961264015 +15805876225 +18863607136 +18562003063 +13963952393 +15192689942 +13615123794 +13995881397 +18839420691 +15802189004 +18562062301 +18502727414 +15198151613 +15117021905 +15103323900 +18899680148 +18873875591 +13973954483 +18823196172 +18552094882 +15837546243 +13953526939 +18823530843 +18538442318 +18591230310 +18563598275 +18823947650 +13989437666 +18595249527 +15145356388 +13942217180 +15847967159 +15883417333 +13648022112 +18890839994 +18568408641 +13937618772 +13603420248 +18819493258 +18566986681 +18587040088 +15819545183 +18834124708 +18552712038 +18548469013 +18899701504 +18853134312 +15188697325 +15134877202 +13630954512 +13612479288 +18554697686 +18502539421 +18808046296 +15112488533 +13677002418 +15888039772 +15813785304 +13991745788 +18860696721 +15802581727 +13959032978 +15175933820 +15112850268 +18895440891 +18500441177 +13977511103 +15188634657 +13615477889 +13637878469 +13647299982 +15830874681 +13698040837 +15841607912 +18892594882 +13936856961 +18897385150 +13651493297 +15123715072 +13995283383 +18591750245 +13679034508 +13911525181 +15823878853 +13948192103 +15876385608 +18827964869 +15862870201 +15115779977 +13905104148 +18540765333 +15844911287 +18572859772 +18811105282 +13685919720 +13658289242 +13939471729 +18521142154 +18540328280 +13995501453 +18892935610 +13985652064 +13614018899 +13664577250 +13930382447 +13673492250 +15126981351 +15184384387 +18884717520 +13941497358 +13978392139 +18535162273 +18577635283 +13959965535 +18505773101 +13642122533 +13976854410 +18572792425 +13986406668 +15167416981 +13937585759 +13640038093 +18540904649 +15113236726 +18538396123 +15819862132 +15817652580 +18887223360 +15185604688 +18510739458 +13646979319 +13993385368 +18861662488 +15877085345 +13677583835 +15863133410 +13970879271 +13995032316 +15837673735 +15125001606 +13632092386 +13947866897 +15163277239 +13658893686 +18511396010 +15159831063 +13633615236 +15126804514 +18823205134 +18866640330 +15873676588 +18508960034 +15113530997 +15841019422 +18502772179 +15836427261 +15811078315 +15873892115 +18868204306 +15843311353 +13693018782 +13980891892 +18508229552 +18510016276 +18830893203 +13642987426 +13675120239 +18589379211 +13612285256 +13966005542 +13647265088 +13976954056 +13902295205 +13628336644 +15893921585 +13637521048 +15836454053 +15820137420 +18574900914 +15809582664 +18836351590 +18876511783 +13685058849 +15877816124 +18854413214 +13658117542 +13969758600 +15821256362 +13604022751 +13663789421 +18861419871 +18525872754 +13944029146 +13991059387 +18599319241 +15190684489 +18535610204 +15126351275 +13694589105 +18864335724 +13976617189 +15836751559 +13614646798 +18547057196 +15861814427 +13902911708 +13621200842 +18899459244 +15110666202 +15802576772 +13979302026 +15180294683 +13667223221 +13600017360 +13941323916 +15185782564 +15871950316 +13963847694 +15870169196 +13665174112 +13614835234 +13652072953 +13960461794 +15894066160 +18823782238 +13611838198 +13603137547 +13671742752 +15130861996 +15866487384 +18558727292 +15157988819 +18586455717 +13918474051 +18812115163 +18549985692 +18816593495 +18897466418 +15820318232 +13650586738 +13617035633 +18538992616 +15838930027 +13674212208 +18584056992 +18888456033 +18532434629 +15869108154 +15850057981 +18521831624 +18585618854 +18882696635 +15138722203 +18810777174 +13907705720 +18896960266 +15808229183 +13601510723 +18520271809 +18869902107 +15899182187 +18533597993 +18566650558 +13660140290 +15193186086 +15173325225 +18557970222 +15163230473 +18820707932 +13988123154 +13973910780 +18866032493 +18528342192 +18553206552 +13677084254 +13994968064 +15189976179 +18873071005 +18868931244 +15190152542 +15160243355 +13906848375 +18543320995 +13671602050 +18886272236 +18599197080 +13620463475 +13607281531 +15193276049 +18547143355 +13672895454 +18839042039 +18523750320 +15871875120 +18801497411 +18820282461 +13920719085 +15173400625 +18827892669 +13921381970 +15166621228 +18886522258 +15810991555 +18817013704 +18864272741 +13927898703 +13603547557 +18878915218 +18556721057 +15131417439 +18855367825 +13667438818 +18530883563 +18520557103 +13618248441 +13965908000 +13990471369 +18878934017 +18832725357 +18595887992 +15887241047 +13989120163 +13931686671 +13952012368 +13931024115 +18597670229 +18538822481 +18585266664 +15820274485 +13954127007 +18815976768 +18851968477 +15118263010 +18528067974 +15832636550 +18870687981 +18545477028 +13972750186 +13657921746 +13636487430 +13604237908 +13986869048 +15898378043 +13667903003 +13922002381 +13928883490 +13622530914 +15890374554 +18514175594 +18891007670 +15137185906 +15149210968 +18888929110 +18555330714 +13906180476 +15896044945 +18581249153 +18528739411 +13984378852 +13681559192 +13684727166 +15103479148 +18579538208 +13905307013 +15106090298 +18511195164 +13918306252 +15109503288 +18575026536 +13670215289 +18557488489 +13945785202 +18502192782 +18594171218 +13610352818 +13611628472 +15167300363 +18805479676 +18567639036 +15846313019 +13906090769 +13616187614 +13642846205 +15814918813 +15832474523 +18546596907 +15142741015 +18574556123 +13970489937 +18819407764 +18827744195 +13699802226 +15827484344 +18528966741 +18509560580 +15813957008 +18533268243 +13675951063 +13911075329 +15152845589 +13988922213 +15128633328 +18813286577 +13982918509 +13643053183 +15172864978 +18551116001 +13993186581 +13621431773 +15813288257 +18804970162 +18577784835 +15146326055 +15153118151 +13677839806 +18523170984 +15172343827 +18519311630 +18583685927 +15129563858 +15104194955 +15896930804 +18512216734 +15133065326 +18819171294 +18532469052 +18566813951 +18546316820 +18537284112 +15843260264 +15887300991 +18826254100 +15105856425 +13902359883 +13617730157 +15167648777 +18559903183 +13944830705 +13922934797 +18810495572 +18898977416 +13937418254 +18575655898 +18599094694 +13677513988 +15883785544 +18821386514 +15831297828 +18579988309 +13689807178 +18889577548 +18564351717 +18584337914 +18820942271 +13699743547 +15177239367 +13662867102 +13928756316 +18589307678 +13955453689 +13998573288 +13682411044 +18835268639 +18853902143 +18509384969 +15189417149 +18842038768 +18866691422 +18850104557 +13636252901 +18575743941 +15890643145 +13939452939 +18810249572 +13668465493 +13987316878 +15100971521 +13602261273 +13627079142 +18572602839 +15836115480 +15117317745 +13924673288 +18577884763 +13644719710 +18861102026 +15817221056 +18890195962 +15861552141 +13607006800 +15196596717 +13910081803 +15861935291 +18552109942 +18512829255 +18599990640 +13613156004 +13613786149 +18529173058 +13604838499 +15852321269 +18813641750 +13966203302 +15834199473 +15195850910 +15829557929 +15866649974 +18819866101 +13644684128 +13622177101 +13935836320 +13666207380 +18877745432 +15132801867 +15165498184 +13910929718 +18558760273 +18810804792 +18883284192 +15191671978 +13632415414 +18889914449 +18868373534 +18515753281 +15828258845 +15160908684 +15164582598 +13686500850 +18540130597 +18806799734 +18871488607 +15123496775 +13659663605 +18563883475 +13689876469 +13951268812 +18597777099 +15198515440 +15897424430 +13675415305 +15885654385 +15807806296 +13668203406 +18859635345 +13908038185 +18891432712 +18522055798 +18851178510 +18584115434 +18882039200 +18574048399 +13998801267 +18504084315 +18578134225 +13600222041 +15181017211 +13923979370 +13954804672 +18898047053 +15199479782 +18864941237 +15804175490 +15156128726 +18572533083 +18573719811 +15887127569 +13662247370 +13687186737 +15803608044 +15832608319 +15850476441 +13693017912 +13635127058 +13674864497 +18868532833 +18812610867 +13685995444 +15851344080 +18849921279 +13990216206 +13675272453 +15130241806 +18545654614 +15872106963 +13972044383 +15836845300 +18537063435 +15891079118 +13650378437 +13678548705 +13663926154 +13684441513 +15163810056 +15159352737 +15130120791 +13617640350 +15160057398 +15182984443 +18583686726 +18868063505 +13678425436 +18583662520 +13648548525 +13695618967 +15864783883 +13957837281 +18800028872 +13621841588 +15821137293 +15152370729 +13641120096 +18807012103 +18889780863 +15827641875 +15837682825 +13945948181 +13674817562 +15870552074 +18512538276 +13994182108 +15135758779 +18550383257 +15811451601 +18872425382 +15172631056 +18846717687 +15146670475 +18807451066 +18555958145 +13687554502 +15126061607 +18534415423 +18874158832 +15139452735 +18821839613 +15889151897 +13602774922 +15826827773 +13942795682 +18870407588 +18819423832 +13656945791 +13612947615 +13654888809 +13911492591 +18553877034 +18518137541 +13693799274 +18598781634 +15184029671 +18519779575 +18899690462 +18829196359 +13663220042 +15856849353 +18883988176 +18873941919 +15858436267 +18827504019 +13996751535 +13600797698 +15851795789 +18842370211 +13659836972 +18833067088 +18853089184 +13971416291 +13960591283 +15109093480 +13614566107 +18536322474 +18520013861 +18558203403 +15833744325 +18835702235 +15882704342 +18523397820 +13971036922 +15889960467 +15194878945 +18861804131 +18892223129 +18873473004 +18590497617 +15118535564 +15109590490 +15148022260 +13953670957 +13951223454 +15113331833 +13683095346 +18830684873 +13681582089 +13964689069 +15172596295 +15836986570 +18873216452 +18548991281 +13631062471 +13680628301 +18837761734 +18574453962 +15170932668 +13614329280 +15857034923 +18818364043 +15115206194 +13666145932 +18572735923 +18826253418 +13931998262 +13603534543 +18891778931 +18807131409 +18583911484 +18567108342 +18877148299 +13697228143 +18575975381 +15819014138 +18585670788 +18895872216 +13998324371 +18523069990 +15158320381 +15111839176 +15101612134 +15870234863 +18520811295 +18540631212 +13961137829 +15806002119 +15125986714 +18520920776 +15831043157 +13971254856 +15106171319 +13993432370 +15111487593 +15157866310 +13992165202 +18582972228 +13900279261 +13648582862 +13629622951 +13624997149 +15827854810 +15847066234 +13922869738 +13630959292 +18896239339 +18831121251 +15821300568 +13652406849 +18810784797 +15836529697 +13955742961 +18531279750 +13694805554 +18548603200 +18823031623 +15852918545 +13616176668 +15127019631 +18803505420 +15899571145 +13613956144 +13645766046 +13975088598 +18544206701 +13644872378 +18805623116 +18825841355 +18589192863 +13680446038 +13945575783 +13661701929 +18569526050 +18555223769 +18561765068 +13653136822 +13984817078 +15176838804 +18831357848 +15103530000 +13637532819 +13951329548 +13912506943 +15160331797 +15850002939 +13695901408 +15140702029 +15848733588 +13660275494 +13670917004 +15860578867 +13640201107 +18822305502 +15898550195 +18852751281 +13607308337 +18569675402 +13995964892 +13991357951 +18532840890 +13613218439 +13616697745 +13931858997 +18554671304 +18543117574 +18858528695 +13996585419 +15838144653 +13621312517 +18561132440 +15124923551 +18508348146 +18801581856 +18547871722 +13957196540 +13687250593 +18564792042 +18812518928 +15189713543 +18507885673 +18869623804 +18873719452 +13947745834 +18540365659 +15189096646 +15884603894 +18882558961 +15121210771 +18559505023 +15191470939 +18549228866 +18899793688 +18526021109 +18587378581 +13917074836 +18510388052 +13658052012 +18581214184 +18597666304 +18825102667 +18553078687 +13921635473 +15804701257 +18816228837 +15823110709 +13610501620 +15889771622 +13658404184 +18894216416 +18896506701 +18589230858 +18850701815 +18898242805 +15155289135 +13998168785 +15848495655 +13600896590 +13672553493 +18843980083 +13637033817 +13972136416 +15107182966 +13987912520 +15140067367 +13919349117 +15820418919 +13642627364 +15118714638 +13627122398 +15815472996 +13684644746 +18508580753 +15175492482 +13673547870 +18515833591 +15173021461 +13698719510 +15870715686 +18836371849 +13698521423 +18546577424 +15131971089 +13683772851 +13650685697 +15893846137 +15177530108 +18866793180 +18591137779 +15166047767 +18549413370 +18869394839 +15141818959 +15143443983 +18537020942 +18887756066 +18800949460 +18596127397 +13676126734 +13940667277 +18521110899 +15157861846 +15114295049 +13614707398 +15874315087 +15198254104 +18533320160 +18827217960 +13682178684 +15178751904 +18881515903 +15893238932 +13607839118 +15142309124 +13997255705 +18892079569 +13660193754 +18828359328 +15851107189 +15804934563 +13986576427 +15887922335 +18844657667 +13943818423 +13641471510 +13922492935 +15155683819 +15128274923 +15160959989 +15842680793 +15168751997 +18849044504 +13635542781 +13657238437 +15106537282 +18817732565 +18501261990 +13627568926 +18577820437 +13603567864 +18879267954 +13909889958 +13982892071 +18841039507 +13983026016 +15160429784 +15805760338 +18873680610 +15136217778 +15165331015 +15883939914 +15858104977 +15813583274 +18834034236 +13628183015 +18558713221 +18569747043 +15848101004 +15143072775 +18505165396 +18542695368 +18822694818 +13600503560 +15130190608 +13623878948 +15137062315 +15805102496 +15131068292 +15137841635 +13603607017 +18840615605 +15847007476 +15121859450 +18502124156 +15898149135 +18570277363 +18894662950 +15105641980 +13993840042 +13911881435 +13971708313 +18807841744 +18896053756 +13930976362 +18541281497 +18831091811 +18533404203 +18807431353 +18873563560 +15878022750 +13606110727 +13662919089 +13958242052 +13636887364 +18861010806 +13674899470 +13664525430 +13608917185 +13636631385 +18819180106 +18571055858 +13936483207 +18559328093 +18849759979 +18529699898 +18549533424 +18552485244 +13991515142 +13689922566 +13995463400 +15850203417 +15800913566 +13923222756 +13983366656 +15899146038 +18883100227 +13932066701 +15137412253 +15182679642 +15888765855 +18884948780 +18808401349 +13636272356 +18513740550 +15143124781 +15804590118 +15183147971 +18532810427 +15846040443 +18812785967 +15137170309 +18500219065 +13692049691 +15819989985 +13948116546 +18574177867 +15135242764 +15149736249 +13683905226 +15803368615 +18886745350 +15171386291 +13677693363 +18591452636 +15800248685 +15117154504 +15192732269 +15848812057 +13630841868 +18882746439 +15120592675 +18863965606 +13655428793 +15177673092 +15112274515 +15176617190 +18863612733 +18520049656 +13985594887 +15818970451 +18505427341 +13641375851 +18545185456 +18877706781 +13918967791 +13640363838 +15106922489 +18515087649 +15164922693 +15807223432 +18565179137 +15896908750 +15858644520 +18879051957 +15895296478 +15178431167 +13924534219 +18515644075 +18521658880 +15169910566 +13671793798 +18589847150 +15826812387 +18593400374 +18855789833 +18854597819 +18829020905 +15155108092 +18877455502 +15111893887 +13901356866 +13901859961 +15122941498 +18813258031 +18540682138 +13679225731 +18528568963 +18864680922 +18528361029 +15167113517 +18847207241 +18873668666 +15808519109 +13935540244 +18843659918 +18801711690 +15117975950 +18844655075 +13912043043 +13911541964 +15870903806 +13655020681 +15878535197 +13927346920 +18501132075 +18590940330 +15849543310 +18557601603 +13922456114 +18577466341 +13665235083 +13658705520 +18834288745 +18818360921 +15800461243 +13682112953 +15153653273 +13627045914 +18543901744 +13973141833 +13921377357 +18830120027 +15126816971 +13930476755 +18507347011 +15867326163 +18894500814 +13611186550 +13959058141 +13941276481 +15893404889 +15183449677 +15863365129 +18806222520 +18824564762 +18893430061 +13632668156 +18568612671 +15837506351 +15147029635 +15193375264 +18504723208 +15168056231 +15111022942 +13664147272 +15187009623 +18884544725 +13974274020 +15165814530 +15101830806 +15871998485 +15895791387 +13623253499 +13672102355 +13912335078 +15841145953 +18856923153 +18839530361 +13679091764 +13606770182 +15142591642 +18843208266 +15800936909 +13949753514 +18522020144 +13604302482 +13937510318 +13690897371 +13642964154 +15109088561 +13674568629 +18571019253 +13674639552 +13986756793 +15129797853 +15140460743 +13613609503 +18528303285 +18859240891 +15141452480 +15809713083 +18879356326 +18895638441 +15157712929 +18520061893 +15880698370 +13621728748 +13909199060 +15136125068 +13636287803 +15149270140 +15199782928 +13955952619 +18808607627 +15887368637 +18892808942 +18815363687 +13658176965 +15800424260 +15842131698 +13652310124 +15106238053 +15117720138 +15180325580 +15174832460 +13638973141 +15194047436 +13904319181 +15136366851 +18537907564 +18834069536 +13936566910 +18586933283 +15157787511 +18543747361 +13650378673 +13615834696 +18845918089 +15886325319 +15180463957 +18823020108 +18858187950 +15801116229 +13916863422 +18823203824 +18861424917 +18573464464 +15868178205 +13950333890 +15128159965 +18881394019 +15165364822 +13649778370 +18520780095 +18542277824 +15100413406 +13932590447 +18580586089 +13971888317 +15154447041 +13691397600 +13672110501 +13950672100 +13674884255 +18572818425 +15809416730 +18596527248 +15890947363 +18814417764 +18843370468 +13989935034 +15165361102 +18867286858 +15856642475 +18540342860 +18565701229 +18578685118 +18836168659 +18566016906 +13672852836 +15117231598 +18851073190 +18516750467 +15859050611 +18849040289 +13622920510 +18853941552 +15120135507 +13659264467 +15840628482 +13917385332 +15114825062 +13611674568 +15191637751 +15178182997 +18539899393 +15821314571 +18859438064 +13663587960 +18826764524 +15842789827 +13616681002 +13976705857 +13620022116 +18560255475 +15165590968 +15867303670 +15801117290 +18886125765 +13995533337 +15820126668 +13984024134 +15143597718 +15194992892 +18894867347 +13900487377 +15880432485 +15843921518 +15847524520 +15887789406 +13692193197 +15196243146 +13969190987 +18837106265 +15848336771 +15819496125 +13953921359 +15894776013 +13925394938 +15108471870 +13971075402 +15116226396 +18842743502 +15889085393 +15891166226 +18842955148 +13982677864 +13654315139 +15890586429 +13620564682 +18872175621 +18532983783 +15833579784 +13920053160 +18525592731 +13675070342 +15184332814 +18807443965 +13904177120 +18582288484 +18527208173 +15143359683 +15104289831 +15107445425 +15198885810 +13927074772 +13959349667 +13687955042 +15897783894 +13961002289 +13966985830 +13677972467 +15141021305 +15860454431 +13956903844 +18832792800 +15840329734 +15885944749 +18870515085 +18816190647 +18544438237 +18548679280 +13698755427 +18822352458 +13655376631 +18577208006 +18513846695 +13947262024 +18530094111 +15146988312 +15824943457 +13989682398 +15176420975 +15196011239 +18537889291 +13919682737 +13989117010 +18543316549 +15114868179 +18803563128 +18820457335 +15161579689 +15107866878 +18849700623 +13612656883 +18855035954 +13619109221 +18572166140 +18586197425 +15838847147 +15111731129 +15142975628 +13654973193 +13648269746 +18802791614 +15170187327 +13625806363 +15136887932 +15157909413 +15866155618 +15185484781 +13998814712 +15199495244 +15187852859 +13654958777 +13900775202 +18569169156 +18580605748 +13630659378 +15155462142 +15864682259 +18588806626 +18851882362 +13652445440 +13946962967 +13677295200 +15146841072 +18827096676 +15139015149 +13910066272 +18535054284 +15836524580 +15890737541 +13913490581 +18842485145 +13924450816 +15153305612 +18587306304 +15151433607 +15832259330 +18565353306 +13602747204 +15814534481 +13983092251 +15130657813 +13939566968 +13939369254 +13637203468 +15138537912 +15189387809 +18838399786 +15199085076 +18514194685 +15142664862 +13615344649 +15105714120 +18506486953 +13675227585 +15889973131 +18590171689 +15802850785 +15878636083 +18881377733 +15173219734 +13997012257 +13683656548 +18572565195 +18830241356 +15819432999 +13651928892 +15144738701 +15174935884 +18856781492 +18867311621 +13995878674 +18888675904 +13953912738 +18838900986 +18523844292 +13626898371 +15119712751 +13988283151 +15843470368 +18834960378 +18871874879 +13919804192 +13976233630 +18503413979 +13656246875 +18816069385 +13952482473 +18516102091 +13681856179 +13969792903 +15151063827 +15119638446 +18550550659 +13915648307 +13693951586 +15801040027 +13677405239 +15803300021 +15860280579 +13668780829 +18537073210 +15841759280 +15115463862 +13681623209 +13943383232 +13625406828 +15138027426 +13947190314 +15838466519 +15837153647 +15889583991 +13663044827 +15849693469 +13674091041 +18841381840 +13951406064 +18854235202 +15843630267 +18805925124 +15826602219 +13664699548 +15179178316 +18502820265 +18537451240 +13636760559 +15193962065 +13620267613 +18891682964 +15157927025 +13676665951 +15841865785 +15155058779 +18898573039 +13637429279 +13926753441 +13662995031 +18896790553 +15190291270 +15124280172 +15886643891 +18584260655 +15173234375 +13925051078 +15133634116 +13667812343 +15188791738 +18872026171 +15893189458 +15842874358 +13978254377 +13666901052 +15189475666 +15831737104 +15853392833 +15872489157 +13902285536 +18544411664 +13630658221 +13600612382 +13904560369 +13626643892 +18557609365 +18859978928 +18832881240 +15109379211 +15891242498 +18513930158 +18557327032 +15847059809 +18891032035 +18557742780 +15185624852 +15181316507 +13642477911 +13927220262 +18511450633 +13698052986 +18886985537 +18544691922 +15895245687 +18838061248 +18895938971 +15191516081 +18807204994 +15100715271 +13930867760 +15192929482 +18832303232 +15163385496 +18536359334 +13918171235 +18567553852 +13964560341 +13900528945 +15817533452 +15847114657 +18510691523 +18872069346 +13672347178 +18527329007 +18567073609 +18874450785 +18556919179 +13602025348 +13632835984 +13603938767 +13653941335 +13916490651 +18579348853 +15188887249 +15130472954 +13694072916 +13954332958 +13695160829 +15878413177 +15197656472 +18523348719 +15147819176 +13637629386 +13989707699 +15160736484 +15163061156 +13969968279 +18879201510 +18819054861 +18528584922 +15840580670 +18812615572 +18851444307 +13673883993 +15822649334 +18890487067 +18532275664 +18567427691 +13950808763 +18520510590 +18589823411 +13617867721 +13920804330 +15157898739 +15887174263 +15113575309 +13658383301 +15180206162 +18824437545 +13900602477 +18814787128 +15114044567 +15802074512 +15176307294 +15843357822 +15148903182 +15849587897 +13968371716 +13608070914 +13931584833 +18551148360 +13935601347 +13903704257 +13970680184 +13902318080 +15168657286 +15878627208 +15851310068 +18816908659 +15870643176 +18810847039 +15803035654 +13654104844 +13664094736 +18885303174 +15887756909 +13948171574 +15880188546 +15895217147 +15181138924 +13681228636 +13624671247 +15175535129 +18840736879 +13600970916 +13979765809 +13658438649 +18540156938 +15156317654 +15172506018 +13690751567 +15146920604 +18597009082 +13683497292 +15897048088 +13610261886 +13619185057 +15142110448 +13629754114 +15105902032 +13610135054 +13691235235 +13951072269 +15848888520 +15881579241 +15156502122 +13995634853 +18576476966 +15182800182 +13623680664 +18553534535 +13940879185 +13946001750 +18584384193 +13680676749 +15882886472 +18582854585 +15825771692 +13913581910 +15894900655 +18858821482 +13967609730 +18506088950 +13935219816 +18580129181 +18544845568 +13992684780 +15841951398 +15805903131 +13971799072 +18522721458 +18558913895 +18515964225 +15191333253 +15881345859 +18501580284 +18834211681 +15129125602 +18546645552 +15891048131 +13963782607 +18888252083 +15807154604 +13686796359 +13912812189 +18550344253 +15842550850 +13686048345 +15840092532 +13665831140 +13694997120 +13902273930 +18822418800 +15146651082 +13662597552 +18540333049 +15157160467 +18519982862 +18852105357 +18805665676 +18527558951 +13656235336 +13608084404 +13997398870 +15806302638 +13967091252 +13917616479 +13999776572 +18556416816 +18535749495 +13986086618 +13998355849 +18859951976 +18531004520 +13606691815 +18864079436 +18821046258 +18554442846 +13654041958 +18842708189 +13907856350 +15102366638 +13602142756 +18539464058 +18576601912 +13975418130 +15828995878 +15822888353 +15893726180 +18832333127 +15860762151 +13905072041 +15112144062 +15850745705 +18866039490 +15124331944 +15154023944 +18882985945 +18556238552 +13975839163 +18556646275 +18824580855 +15163051096 +15118164032 +18520297155 +13992253502 +18889853395 +18880682559 +18864756026 +18807939205 +13943002873 +18509156741 +18534504901 +13679656578 +18890125068 +15892159174 +13602229204 +15165067526 +13971437600 +18552992643 +15118753214 +18568911119 +15826809399 +15828155259 +13961732485 +13971131960 +13623060907 +13658569313 +13642872336 +18521199171 +18870205683 +13998202764 +18538272269 +15162477587 +15160055837 +15863076011 +13976498095 +13999108901 +15834855015 +15163799013 +15111988855 +15888832987 +13648196607 +15894307491 +18585457611 +18832360845 +18578223238 +13683814780 +15166812703 +18867735562 +15144445576 +13668157367 +18867554084 +13637279120 +15128586961 +13963783391 +13901970445 +13995092313 +18892814269 +18812263915 +13668954145 +18895596137 +18562115805 +15864557320 +15839109361 +13985771292 +13608833177 +18588753712 +15171144378 +13998920096 +15827816638 +18516375860 +18575076663 +18564843979 +18843526493 +18598548687 +15846454235 +18886663340 +13644729450 +13632174529 +13632127616 +18853676109 +15833632843 +15104977109 +18575497873 +15889137747 +18879663187 +15812464206 +15877486942 +15870865771 +13651630333 +15139277634 +15185613742 +18843362342 +18530317932 +15879299630 +15822863235 +15106304224 +15800774186 +18869673896 +18839585305 +13926610739 +18562148071 +15851347044 +13638174043 +13929974122 +13952290228 +18869926398 +13997210098 +13934980938 +15103028133 +13922702723 +15153626615 +13652005896 +15814315280 +13903284231 +15851673270 +13658422333 +15175852397 +13651963304 +15863673765 +15115658304 +15137347768 +18898380819 +13658328897 +18561814153 +15161572242 +18599627535 +15800383698 +13697734245 +15174885290 +15113686483 +15125068496 +18853643398 +15128988080 +18583879808 +18868382381 +15818849008 +13919514609 +13905395718 +18550187730 +13617461944 +13634745946 +13631884162 +15857739426 +18533659533 +13957131899 +18501833630 +15837376549 +18584953019 +18500935832 +15866097793 +15192814955 +13625434755 +13973896319 +18531661859 +13613060192 +15805016065 +18800352039 +18813649319 +15814851534 +13654502799 +13988249535 +18811583429 +15814895966 +15165346720 +18560563813 +13935439231 +13967708361 +13915840171 +13970062729 +13634631240 +18812987908 +18808031164 +18526818606 +13618947774 +15876398377 +18547312475 +18520237685 +13974646576 +18535471599 +18537285034 +15851884265 +15117739790 +15844685446 +18502139369 +15177062654 +13945252259 +13628220950 +15803010116 +13937803567 +18844484028 +18860830703 +18885338793 +13671772399 +18805275654 +13692033808 +18892806906 +18583629351 +18553402182 +18865683809 +13924411266 +18510176975 +18513445581 +13995944962 +15845634117 +18875581619 +15892991088 +15892296750 +18565659295 +18899426963 +13626376442 +13615719444 +15852680115 +15144925564 +18814168643 +15815095227 +13663932612 +15823384693 +18832763628 +13657395219 +15184645576 +13975584709 +13977656163 +13611129080 +18871472935 +13671469395 +13650474193 +18542886041 +13627227204 +18581250264 +13935579786 +15874727559 +18572637488 +18555234464 +13629881182 +13996639531 +18833785284 +18519171737 +18571810131 +18589197216 +15872460059 +13662337289 +18556885363 +15895324332 +18824772633 +13610685182 +13979242419 +18855905382 +15137614312 +15130608644 +15867623481 +18506641982 +13615378920 +15827673778 +13653629155 +13620584659 +18542562660 +13921065630 +15808127293 +18595799958 +13989298196 +15864237758 +15889384207 +18548328334 +13913002082 +15868469193 +18814753717 +18859746209 +18899310637 +15139418153 +18548260569 +13968968106 +13957166656 +15127322853 +15129988127 +13619854754 +13942820713 +18883660354 +13662496629 +15890983017 +18590455578 +15849526025 +15886608708 +13957091877 +15185624988 +18585551862 +18507482705 +13644398738 +13601985250 +18560147591 +18536327479 +15194883189 +13919762283 +15178510499 +15114200081 +13991981561 +13996319208 +15864899834 +13994075043 +18828640188 +13635144103 +15146955281 +15843193985 +18578305251 +15872636258 +18522528875 +13621622135 +18596331727 +15115916496 +18883015682 +13982839513 +15827629812 +15157510144 +13903835916 +13977396669 +15190449806 +18889620098 +13678982697 +13690852608 +18860682488 +18558807681 +18834798316 +15870090441 +15110497611 +18886319945 +18883391172 +15153733197 +15179997865 +18537716018 +15818393466 +15811417174 +15185886345 +15191838554 +18843069845 +13965149670 +18536441011 +18827281338 +13970046115 +15153584710 +15895332774 +15897717064 +13618015781 +13667081846 +18808179163 +13905564796 +15170171749 +13607984787 +18514464901 +18879968357 +18851958781 +15101859652 +18825331040 +15828023070 +18810567891 +13979790944 +15804146466 +13642856329 +18558943208 +18580350354 +13633577598 +18536988296 +18871534166 +18879056834 +13951047074 +15883205038 +18510724417 +18892085818 +15137231286 +15178359146 +15167017250 +18593038924 +13964598023 +15170613618 +18572338191 +18864898818 +15141449824 +15105339844 +18537089792 +18518774792 +15861523532 +18849895901 +13673475065 +18829816535 +15858712942 +15891113802 +15179421249 +15114003612 +18824710997 +15836738762 +18810919686 +13944982878 +13911161230 +15894875745 +15884904584 +15856555000 +13666808894 +18526162329 +18878961155 +15179365570 +13933471822 +18811131126 +18885662159 +18875142726 +18567918741 +13944655471 +15122694412 +18510343604 +18840456660 +15176951389 +15131002679 +13905797520 +15107039292 +18853545122 +18875618709 +18887952724 +13902021508 +13651921866 +13929668468 +18877730037 +13922236111 +15148545803 +13645990325 +15894353934 +15852309568 +18578829548 +18585821898 +15879462419 +13669983761 +13671847625 +15899199495 +15130424838 +18821227829 +18569675579 +13643570451 +18594309495 +13918474880 +15847391252 +18520130751 +15876669435 +15153863008 +13683594767 +18540233811 +15177981008 +18587102948 +13980221734 +18841740089 +18844667520 +15106638242 +13942122976 +18536010200 +18528792388 +15806266394 +18844199077 +15101737256 +13931232480 +13606267468 +13604298857 +15816402349 +18555780475 +13918476273 +13626254831 +15839992301 +15166855991 +13961927051 +18553821721 +15883452796 +13984950196 +15817593530 +18894320070 +18555336783 +13907315230 +13933791552 +13665283740 +13953324746 +18557992125 +18585496647 +15836852538 +15824641332 +18840382366 +18824885333 +18807159081 +13904642590 +18895061004 +18848202623 +13992424956 +15809517554 +13625496811 +18829243256 +18829383733 +13648392984 +15173488641 +13693183580 +15199688059 +15127808419 +15836644118 +13980849103 +18824002372 +13642553655 +15832506777 +13668644430 +18810192682 +15830759451 +15809985447 +18592513828 +13625792573 +15151867497 +18594237246 +15897330564 +18888376307 +13659995549 +18535234469 +18545947514 +13676758158 +15897462542 +13657404446 +15821744555 +15185077686 +13606859010 +18845909269 +13937510793 +13655780321 +15142323154 +15169085474 +18579472145 +18855249305 +13640025872 +18580729392 +13903747399 +15116915482 +15829103310 +18850424844 +13970448592 +15181096709 +13651135548 +13667733788 +13923909348 +18867229072 +15825419528 +15131462706 +13919387548 +18552754896 +18516385373 +18834625231 +18540065126 +13665055615 +13689590412 +18846810183 +15118212780 +13638141210 +15114932689 +13629764058 +13669151495 +18580357799 +13655592426 +13643152116 +18586593595 +13917885784 +13660210168 +15176584993 +15146283227 +18560086127 +15123831480 +15823292565 +15876387765 +15111763716 +13917216882 +15853843992 +15117825731 +13678310633 +15868832932 +13940551905 +13956666807 +13974188988 +13689550915 +13618308218 +13692126613 +18841578506 +18834100275 +18574401115 +13644998337 +18835282839 +13673926151 +13648677264 +18884216234 +15871687209 +15819530246 +18535353840 +13616342246 +15830156604 +15837870487 +18807359952 +15801347582 +18528971087 +18555688389 +18577128718 +15192677116 +13957026709 +13661992244 +15115857486 +13679517409 +18887281491 +18898466094 +18564294698 +13954811023 +13940062006 +15155988779 +18549584973 +13691925462 +15181128992 +15816450119 +18829789103 +18521044197 +15127234005 +13697834070 +18509514623 +15153676586 +15853263690 +18539913551 +15841890685 +13639017066 +18850318877 +15131371376 +18867441055 +13626551812 +13987464828 +13997390084 +13626795672 +15171721423 +15150880512 +13937276053 +13628203313 +13668852105 +18833175078 +15112425095 +18836058199 +18504532502 +18582789147 +18835065235 +15824061807 +13689653348 +15879308366 +18550356647 +15179303999 +13665197778 +18804623619 +15138256321 +18583961615 +13938928118 +13942928602 +18859912587 +18511732222 +15103547835 +15122762268 +15123877101 +18522185095 +18563650677 +13949702505 +18853444682 +13659653647 +18517218282 +18801698786 +18564895463 +13628717917 +18839968995 +18574328402 +15854894470 +18832062390 +18544710844 +15112007516 +13936908125 +15864598701 +15197956788 +13926065350 +13677043920 +15842782886 +18826041468 +18530828910 +13630192976 +13627763530 +13906766433 +15890498903 +13951495741 +18549894809 +18578012159 +18850148844 +15126659755 +18585374826 +18854206420 +18526506970 +15165778279 +15874639730 +18802772582 +13604996069 +13901187139 +18804776528 +15829786672 +18851171809 +13622643484 +15130754225 +15124662686 +13639685237 +15819520110 +18809724769 +13918534411 +15158220469 +13649024435 +15824503697 +15803575016 +13682927900 +13603278048 +18524190737 +18580235184 +13668039499 +18596271790 +18880192941 +18503751886 +18857895391 +13616466363 +15178733643 +18851519715 +13647788618 +13686932164 +18519933928 +15134363058 +13914774752 +13690541482 +13645572680 +13666767863 +13964953243 +15828955032 +15801904700 +13625883101 +13637621542 +15194452106 +18579816666 +13969273550 +18898786941 +15106775200 +15874186833 +13676369727 +15182648285 +18871474532 +13916695064 +15169250606 +13605667925 +15812417480 +13959025519 +13663304199 +18813869426 +13693210471 +15192221784 +13963107322 +13607926484 +18819716021 +13975313581 +18845355173 +15137024695 +13641042955 +15182925790 +15899632272 +13940236349 +15173538775 +18565409300 +18870833635 +15197106283 +13657397950 +18879067204 +15801714405 +18824534542 +18864522126 +18851845428 +15113717253 +18541506320 +13632494240 +18892189742 +18585880127 +18877523932 +15894631679 +18865630135 +13997885576 +13922558295 +18881655141 +18540339098 +13938106870 +13901334784 +15129598002 +13988542341 +13638714426 +15823280625 +13919060605 +15853747034 +13936287590 +13981910567 +18806331105 +15138754793 +15876638814 +18897590085 +15842479245 +18860770849 +13628643201 +13971388035 +15866110098 +15852426264 +15816476088 +15848401681 +15100889632 +15884666024 +13640358146 +13688512947 +18839795286 +13924511049 +18524320236 +15847650606 +18868725375 +15145544694 +18801873485 +15136270246 +13972091762 +18800093591 +15150177908 +15890933103 +15833356271 +15103450054 +15859127858 +15820772119 +18546796112 +18568165771 +15183745328 +13620861272 +13919103006 +18819239276 +13635117574 +13919681963 +15811090089 +15148037216 +15131760905 +18817347687 +13952875228 +15876258168 +15873920999 +15197751980 +18585373248 +18842533792 +13618392010 +13995473553 +15133662112 +15883840638 +18845444239 +15128871144 +18840571468 +13613650527 +13637163460 +13629871342 +15101530854 +15856712367 +13979706310 +13991565268 +18833267818 +13651350467 +13677819678 +13629478137 +13698997544 +18847252898 +15159659850 +15849073116 +18586310339 +13622111560 +18511783632 +15841642521 +13615545091 +13675418597 +13606360771 +15183730255 +13965519103 +18855855373 +15151813844 +13902152012 +18589989092 +13979245778 +18899333722 +13623883301 +13986425113 +13635252233 +18543349178 +13647936288 +18517487719 +13948152944 +18870301289 +18522036313 +15168259020 +18559659272 +18534769514 +13999370521 +18584595077 +15115309130 +13963070005 +13615019052 +15166637860 +15850942728 +15115055975 +15803595594 +18866565588 +13992026417 +13918701477 +13604139410 +13938744503 +18571100487 +15160589302 +18576756528 +13648632700 +13641553641 +15827429367 +18897703447 +13680182387 +15857568338 +15835537407 +15860145065 +18555389941 +18512596119 +13914334422 +18866434889 +15805179614 +13675528092 +15805954684 +13989258068 +18574791596 +15152420352 +18857501092 +15810563447 +13937008771 +15142303863 +13653190408 +15872045622 +18547395016 +15130001591 +15862695150 +18532967327 +13690216656 +18559651968 +18563905532 +18541959865 +13642404167 +15821088346 +13956755118 +18807690904 +18545179293 +18809693989 +15106058991 +13645639485 +15840622393 +18558244723 +13662258204 +18522919657 +15161240930 +13651775040 +15194967064 +13978949438 +15878793292 +18574674922 +15822195227 +15832647201 +18574561155 +13906994788 +18817793962 +15802641774 +13909545374 +18515061454 +18580727211 +15127284564 +18588376112 +13924547078 +13668267514 +13619557892 +15836520423 +13969234783 +18500483425 +15866270368 +13979212034 +15145272363 +13694055682 +15176402926 +15199791697 +13636268102 +13929685015 +13601987238 +18574726119 +15822598356 +15132419760 +13983762289 +15138522207 +13641203608 +15121502176 +13644119219 +15116135452 +18854240605 +18589493748 +18561078706 +13673821974 +18588611797 +13989442560 +15824805546 +15839685639 +13948778846 +13982607528 +13949182633 +18896955793 +15176927039 +15127617794 +18523716902 +15197698196 +15843383129 +15141483761 +13680814424 +13995252917 +18887967518 +15192786147 +18530718430 +15128880246 +15831014093 +13687381367 +18547885678 +18836794823 +18865762112 +18538097318 +15169319222 +18821143860 +13654397298 +18522553654 +15175337494 +18852690243 +18529414324 +18556081424 +13931685788 +13694790041 +18571800911 +13925582505 +18817900506 +13951786935 +18849813573 +13693290418 +18507725397 +15144461104 +18574824293 +18596409529 +18572553198 +13616855144 +13976418321 +15138602084 +15866443850 +18578220142 +18870395879 +13977568386 +13616957084 +13950315149 +18813854814 +15851579768 +15150153239 +13681407822 +15829555764 +13683179348 +13695441915 +13604644811 +18579442522 +15851910051 +15194057228 +15804528771 +13958382224 +18510266673 +15107128151 +18838020169 +13902911059 +18883785729 +18899955830 +18819908757 +18574352652 +18577035826 +15157242442 +13665826892 +18576497370 +13633508445 +13999227061 +13918623802 +18597288638 +13603308159 +18804001373 +13931618749 +18511014786 +15178480042 +18877532624 +15851845618 +18518345233 +15890104031 +15866100900 +13926730229 +18585761775 +15841172159 +13614086823 +18829710822 +13601125571 +18563133802 +15164443475 +13961524301 +15118864864 +13940907840 +15106487219 +18853989721 +18804755304 +18547078441 +13607850696 +13963118069 +18883540923 +18887439404 +13962646479 +15114281363 +18829748455 +15140245834 +13605013265 +13930455762 +13900972581 +15155854965 +13947376460 +13954250323 +18599180653 +18820513261 +18841875397 +18538493684 +15196650895 +15858271724 +18523104618 +18881971643 +15864761626 +18889206010 +18541216928 +13964170043 +15174650860 +13695916930 +18515577036 +13611408699 +13975346494 +15175984030 +18567274544 +13954758955 +15800227287 +18891990231 +18850101151 +15884620308 +13694848687 +18867659664 +15874907941 +18836854898 +13957499636 +15159824126 +13628427219 +13636190559 +13952779691 +13961788287 +18837797665 +18839282801 +13905060277 +18508262907 +15142137077 +15816582001 +15846966976 +18819332979 +13917713996 +15195357527 +18541116739 +18826335391 +18594675064 +13606951590 +18883339721 +13665339939 +13656324262 +13654495933 +15884466226 +13652268533 +15850202546 +18555093334 +13644295353 +13654487967 +15171108100 +15111931504 +15808981758 +18829160314 +15823235260 +18882416740 +18505027139 +18894872313 +15846105179 +15856296829 +13947687991 +13981578526 +18517366769 +15103179221 +18821288812 +15832738828 +13918941524 +15837215239 +13642637570 +18560570081 +15128368206 +15190599972 +18506847319 +18589962004 +15800775270 +13980242538 +15805611869 +13605332213 +18854118187 +18595996828 +15856703997 +15167898276 +18555916738 +13664966128 +18861307294 +18829960373 +13626320662 +13627215457 +13946259630 +18552320769 +13645156057 +15861971516 +15114790304 +15120519241 +13957503297 +13931508852 +18840964433 +18804138047 +13635925724 +13660405495 +18842929010 +18836915696 +15813209824 +18575430324 +13699281767 +18540778590 +13912334349 +18834681776 +15196772493 +15893977530 +13694102646 +15177078997 +15814242646 +13676414920 +13981805050 +13986637189 +13924951014 +18546521519 +13691095678 +13611956193 +13916187218 +13911896250 +15185536853 +18589126091 +15840599493 +18827764580 +18545239343 +15144365539 +13626481929 +15160406802 +18868886832 +18855526971 +18540590037 +18519542934 +13613697488 +15152199704 +13983026694 +18523758111 +15888328317 +18512116871 +15893446855 +18876526272 +18551771431 +13616405838 +13930683788 +15159324322 +15111809031 +18839062104 +18578400943 +15122684941 +15807932161 +13623624321 +13647961623 +13958177040 +18878250919 +18550256922 +18522297407 +13677711518 +18511997079 +13955475693 +13920862527 +13928761689 +15834071416 +15164285590 +18803648112 +18526940468 +18812623982 +18865856994 +18807879049 +13697906870 +18524339221 +18852894436 +15172879400 +13646135262 +13636388659 +13964558214 +15117152004 +13613948483 +13987547966 +15156943756 +18894099017 +15829966777 +13662201263 +13688202949 +13660250366 +18847728544 +15899793877 +15821460623 +13610154804 +13943115744 +18854681981 +15131910963 +18868095942 +15819771042 +15860574714 +13986523524 +15848757603 +15826964543 +13690276247 +15812939291 +18823829987 +13634598234 +13609594221 +13620086953 +13908100530 +13974962238 +15132149519 +15868689622 +13904486300 +18852167513 +15197670819 +15176505946 +13618111614 +15839602756 +13945548307 +18537900231 +15892859785 +18559289948 +18561012236 +15168917946 +13653474966 +13648929507 +15857294939 +15118285471 +15187984786 +13656151274 +15129818772 +18581843037 +18564334758 +13627479128 +18566013312 +13627451054 +13963283039 +15186737354 +13691337989 +15848772971 +13688634383 +13604278501 +15888942369 +13935670999 +18831727096 +18531097364 +18892528093 +13960589003 +13658174488 +15171702146 +15842048339 +15879295066 +18878020922 +15163656546 +13903583800 +18858157583 +15165733060 +18520030202 +18531909465 +18815590617 +18548654348 +15804852198 +18814533291 +18898383584 +18521982819 +15132693965 +18898004778 +15173957343 +13957630024 +15184944902 +18517316531 +18804048364 +15837203863 +13635096793 +15826585710 +18508989088 +18872897585 +13679370813 +15843216738 +15160065597 +18541415904 +13606347052 +15835020896 +13632953300 +18864186283 +13982415181 +15135309727 +13958724160 +15812453754 +15187809313 +13603067557 +13973514874 +13912408271 +15165540005 +13677118256 +18861000726 +15837251983 +15102513947 +18837076527 +15199371093 +18507887734 +13685301162 +18516338423 +18878071640 +13973030591 +18551076148 +18580193427 +15179160576 +18892605579 +15845287271 +15197893442 +13944298786 +13982304108 +15160711126 +15859719629 +13654320051 +18887159842 +13967775445 +15128139275 +18840025882 +18582513378 +18522727631 +18572320476 +18854282286 +13912195706 +18598474212 +18884513940 +15152862632 +15183435419 +18554180577 +15110658381 +18895129970 +15150866226 +18537593621 +13699590114 +13935001533 +15809235206 +13601497232 +15176042275 +15161586457 +18886441634 +18853324933 +13914648611 +18841929605 +15103714633 +18520770447 +13631357994 +18850320344 +13911954987 +13637843865 +13696749846 +18812021185 +15886830070 +13958005109 +15114087682 +13999169300 +13673000724 +15893703826 +15168740927 +13670698414 +15144642669 +13999037069 +18542633659 +13968456853 +13936233948 +15112484908 +18578738985 +18810420989 +15873005562 +15154870199 +18566495214 +13665000499 +15860563836 +13666913632 +18509387890 +18815758232 +15142081006 +15161237468 +13604493143 +13956208782 +15872784285 +15886839581 +18506491526 +13930342564 +15142075274 +18828530703 +15149725489 +13647552069 +15896727628 +15881262914 +15816287788 +13995770915 +15819138917 +18531611969 +13691155489 +15160541001 +13616962081 +15151523972 +15102691130 +15136560389 +18547424643 +15820073064 +15892325026 +13635055800 +13680679650 +15825370673 +13924680466 +15198545376 +13918118339 +13690728822 +15135399961 +13632784288 +18839472548 +18818572931 +18840200819 +15156934991 +13681056084 +15192530636 +13959448784 +13602419412 +15886523993 +18534002220 +18816813887 +18524533740 +13699087710 +15116347373 +15130363002 +18577105350 +15839634373 +18882830596 +13662039703 +15873672272 +18597066715 +18872996102 +13622925709 +18875658366 +13964218343 +18897920002 +18565639557 +18864004802 +15165168241 +15123727086 +13954299975 +15858927200 +18814442718 +15889242673 +15818406805 +15176020569 +18839983092 +18566493463 +13951669819 +13673954407 +18525566520 +15146860961 +13685661396 +15192070340 +13919980270 +13982728941 +18531464253 +18569164034 +18582084501 +18553642795 +15153996182 +18822367549 +13929984417 +13606857658 +18580903886 +13976326414 +18878307088 +13956314769 +13634314052 +13952829716 +15871028502 +18570198937 +15878350314 +18553227244 +15141048363 +13969666153 +18560142182 +13602988077 +15878367064 +13956822346 +18558991795 +18876627712 +13623916128 +18823163079 +18813479421 +15179110117 +13985901194 +18869162812 +13688644928 +13608990845 +13636606358 +18858295088 +15131496976 +15152833290 +18875948431 +15148335374 +18570111086 +15137381498 +18532935896 +15129474748 +15119544182 +15102996829 +13971977237 +13682927242 +15820121669 +18522989107 +18522077501 +18819486387 +15827361599 +18537631975 +13993966784 +18596037077 +13690130330 +18884697835 +18829595812 +15163253194 +15145322537 +18847750760 +13653724100 +18555369722 +15137608940 +15870088598 +18880275089 +18531592079 +13664633094 +18868149834 +13919447533 +13988623099 +15808455704 +18520409757 +13677135956 +18863598947 +13930925817 +18542084661 +18892031009 +13661885929 +13651328794 +15132277614 +18862647262 +13607328641 +13975131662 +13621029016 +15827000579 +15885497552 +18538441913 +13661341342 +13935417025 +18828481803 +13613221301 +13609903560 +18571863870 +18827806120 +13652739170 +15887516057 +13946918441 +18512487190 +13602502062 +13647482788 +15116213433 +13628449817 +15856413074 +15888862476 +15111366210 +18553755869 +18542085835 +15831905790 +15114622048 +15816691244 +13943060036 +13984784761 +18545905926 +13653054028 +18555263622 +15119834727 +15819153609 +15196071987 +18569031641 +15140156927 +13621305620 +15818589501 +13912875170 +18829189227 +15150003064 +18545082268 +15124746226 +18812787020 +18525745767 +13932384625 +15856758458 +18899054240 +18837216817 +18529495928 +15869125717 +15100844682 +18870455685 +18586983832 +18578384884 +18534365973 +15169325167 +18862622101 +15829047020 +15111360441 +15182618722 +15851091182 +18818951860 +18880423163 +15883938668 +13952902303 +15185248855 +15839086348 +15174872937 +13633272934 +18829538820 +18824673128 +13910606979 +18863347780 +15876812075 +15181826320 +18536856332 +13681706996 +15137676750 +18582006245 +13686846570 +18581928419 +13966683957 +18857779912 +13964120134 +18549915612 +18528353185 +13910730156 +18551467122 +13962790148 +13649351033 +18820936974 +18835912622 +13606271711 +13988038782 +13908908949 +18812648954 +13624990984 +18872357777 +13932052412 +15868148215 +13613611033 +15184042924 +15198906509 +13987412926 +18517221410 +13955594534 +18877583315 +13969906366 +18813766501 +15829487806 +15889434466 +15181941774 +18579354315 +13663369214 +18849087641 +18531641548 +15854831799 +15177761570 +13645475037 +13666207908 +18535790497 +13643170640 +13663406079 +13969329073 +15171647394 +18570606911 +13930655453 +13961594451 +13619400563 +18836258684 +18889927205 +13976428195 +15145812999 +13695666302 +18812894722 +15178466856 +15145966325 +13621610087 +15181569365 +13682322397 +15119472144 +13936172404 +15835181084 +15149690312 +18577147184 +15178604634 +13967164723 +18597415593 +15801827788 +15818061652 +13601262137 +13624823525 +13995481088 +13605647044 +18546260473 +13954910999 +18866102705 +13926376253 +18559735164 +18510708361 +13627677420 +15866947496 +15884281816 +18588383182 +13674928273 +13954672549 +15880625712 +15145234450 +15833158576 +18564826630 +13699320525 +13643824136 +13630429436 +18588402109 +15188172830 +15828927979 +15154816459 +18865871069 +18894198395 +18575486361 +13946220805 +15831829416 +15836790174 +18576466161 +15108053466 +15166106982 +18575952424 +15165456172 +13954739690 +15175982224 +15885235930 +18550961328 +15127700402 +18570372806 +13698219313 +18890408169 +18893326550 +13659646109 +18584223655 +13610675660 +13964246562 +18518246619 +18892368947 +15841229054 +13651669772 +15811170980 +18535771750 +15829828812 +18835105711 +18567739213 +13951419787 +18840694179 +18512328971 +18877013451 +18863086399 +13927833612 +15142396199 +18837514444 +18853286867 +13909383242 +15822839640 +18865443738 +18895353354 +18586085333 +13632161641 +18534915448 +15100599777 +13677466750 +13693649230 +13944891736 +18804893841 +13961880252 +18501217351 +13947878207 +13611143377 +13973171629 +18546257576 +15881409840 +13627280780 +13921415495 +18887669840 +18862204658 +13686572923 +15113798425 +15124526124 +13956902053 +13981978095 +18594930449 +15867701868 +15177111976 +15833491028 +13690347865 +13958563462 +15140056166 +18886255341 +13960937479 +18524825807 +15152681129 +18810209368 +18510232211 +18817382469 +15849948510 +15873701587 +15847103475 +13986679650 +13611801324 +15898525189 +18843583099 +13997903814 +18889639721 +15106280384 +13629431551 +15192747483 +18539802917 +18852955264 +18896592280 +15190908722 +18804527631 +13929974886 +18508173874 +18856136886 +15802933859 +13962263545 +13997380360 +13678177510 +18516053602 +15822052198 +13935698927 +15844934522 +13617994829 +13675348839 +15138483142 +18852575140 +18592407992 +13605939751 +15164046943 +15176313418 +13605382703 +13695332506 +15850105367 +15839616428 +13629654829 +15869703699 +13950194442 +15842329010 +15185779354 +15839412742 +13623344370 +18883422115 +15140194941 +13625311361 +13991418623 +15161289920 +18845420594 +13634699810 +13646719078 +15896914194 +13632427991 +18804961659 +18583400754 +18888373594 +15873864138 +18582709188 +18832036637 +18591307820 +15139204177 +13618911732 +15857928283 +13970626175 +15137200846 +18551526653 +18807719363 +15874250132 +15803996944 +18543358830 +13903940148 +13959302306 +15114882468 +13675563691 +18560041172 +15881749281 +18869831829 +18808764334 +15855190701 +15834919311 +18847251116 +15119082724 +18597697205 +18569395362 +13669799039 +18861489155 +13633657114 +15132185179 +13925250697 +13660744569 +18559490992 +18542347002 +15845358513 +18803663396 +18847331047 +15109435514 +18865524143 +13629872533 +13640986980 +13973454886 +13685540707 +15892787884 +13917613865 +15181004428 +18829716126 +18820609256 +15856693622 +15866477174 +18810792483 +15876729167 +15827845539 +15851827864 +13673704867 +13602865848 +13683815158 +18567120798 +13601236366 +15824620080 +13926305133 +18804681185 +15850834011 +15822072017 +15816540092 +18853489697 +15895874853 +15192606586 +13689851285 +13966526375 +18527047353 +18577151706 +15838162047 +13946847212 +15184141793 +15860097081 +18512164161 +15186215492 +18886910515 +18824972053 +13601928932 +15836222402 +13933129420 +15867045327 +15137875253 +18827645639 +18552425196 +15170841464 +15134103578 +15829311068 +15881040960 +18802687381 +18833076385 +18842825429 +18593460033 +18584349183 +18502797819 +13925825233 +18557172260 +18589420653 +13988605075 +18804297754 +13613921601 +15858367036 +18508862606 +18574214602 +15199076439 +13618319577 +15818731967 +13938340082 +15131185010 +15836607096 +13696399113 +18578709872 +15842536519 +15175098871 +15842997039 +18874978055 +13671724376 +18534663810 +13926301248 +13630060164 +18819443438 +18863402589 +13624164557 +18894716025 +13966575983 +18522021039 +18868198708 +15173251506 +13988254767 +15163188249 +18527843359 +13972716715 +15894616095 +13982559803 +15804764898 +15846697500 +15100640280 +15850194345 +15164743582 +18535494876 +18818833291 +18594114319 +18806307365 +18518841850 +18803534160 +18578822782 +18812494866 +15193801197 +18894536023 +15838664161 +13922087523 +15863765942 +15815517376 +13644914003 +13627972743 +13903493855 +13620836752 +18583466859 +18556735419 +15188706786 +13953514575 +13937157317 +15129521933 +13901900808 +13984624219 +13629621463 +15882005414 +18509666610 +15813538908 +13605310410 +18590866489 +18843646773 +13653953626 +13668202243 +13634084423 +18854017700 +18582874804 +18513136346 +15874284662 +18530531141 +15147294471 +18527469067 +13955611199 +13944528754 +15846340895 +15196500508 +18558956652 +18525376974 +13995296035 +18829141791 +15150391703 +15143156545 +15119421899 +15132665281 +13683848989 +18890978707 +18899327078 +13659686371 +15806813610 +13613446885 +18813765855 +13901276340 +15843692161 +15844413756 +13694168402 +18567650423 +15832092155 +18506615373 +15141145745 +13696581865 +15166098311 +15821083082 +15882478687 +15859938657 +18575311367 +15814731294 +18849572842 +13965959160 +18533165789 +18883931299 +18506345137 +18898664967 +15193176095 +18860974011 +15866841155 +13969377625 +18520954450 +15853805693 +15174150415 +13965716368 +18574750772 +15838047128 +15857213772 +15180429110 +13600053530 +13662902963 +13961781969 +15170271568 +15894658980 +18823541555 +15887876993 +13639539947 +18542132193 +13902851379 +13649574513 +13698759463 +13622276084 +15817757961 +15817105481 +15122619082 +15880565196 +13915018481 +18825356130 +18569441629 +18888458192 +18589332111 +18862007858 +13971154771 +15169180910 +13696684517 +13672008921 +18804912798 +18883389009 +13690740109 +18552930987 +15889024536 +15888379725 +13627055605 +18809654821 +13696822463 +15873809711 +13607759718 +18599483170 +13630822555 +13608792982 +13968343401 +13623039376 +15821830594 +18592189058 +13640362662 +13935205076 +18589798634 +18561941222 +15864468484 +15804301662 +13945108516 +18552889069 +13951148005 +18568149042 +15176213732 +18534593016 +13630670870 +13967067314 +15132239953 +15884970520 +13661270966 +18537729757 +18500239798 +13923002209 +18597320570 +13986340971 +18873346349 +18846282274 +13996929917 +13636132561 +13678372077 +13910010150 +13941949275 +15871155482 +13661343513 +18846299080 +13630743812 +18830820707 +15158719643 +18845773722 +13699074717 +18509969666 +15810375830 +13986559152 +15888829154 +18507943843 +15829098478 +13986977272 +13602591503 +13690390127 +15809716091 +13657754303 +13913211255 +18586153048 +15114399029 +18558387579 +15884411196 +15881505113 +18551309252 +15847601613 +15108990587 +18506936887 +13986882613 +15175444209 +15100017219 +13921540082 +18587732391 +15192315099 +18897157872 +15132656008 +13971687111 +15182951803 +13697083390 +15880938187 +13694712575 +15158902876 +15183260717 +15127045009 +15120435977 +13969095337 +15878399290 +15830859969 +18815629821 +18548352742 +13945456052 +15821095004 +18528694109 +13958132413 +15846340737 +15199537034 +15153843830 +13690975847 +13903357366 +15128097272 +15197240375 +18512725116 +18593794958 +13663897414 +15861762469 +13985723297 +15883984160 +18848565472 +15884632969 +15149996782 +18824067143 +15134017873 +13679452992 +18883023615 +13694543246 +18550324662 +18591693389 +15187024934 +18800618753 +13966675248 +18540276105 +15839537704 +13925251143 +18525535977 +18844547073 +18570812953 +13690854261 +13615262931 +18851348318 +15115777735 +15882272184 +13959278924 +13972956375 +18862117673 +15172381008 +18891995543 +15124871108 +13674858124 +18882555168 +15821868367 +13626956404 +18874751107 +13630466802 +15880920164 +15182808645 +15839917230 +18850038185 +13650876205 +15890224649 +18548585837 +13998154625 +13993254453 +18537182672 +15174246070 +15879440560 +18524715505 +18897197222 +18885410884 +15156340091 +13638806545 +18856261140 +15869083034 +18535421710 +15170847435 +15172794310 +13689699435 +15169871865 +15885615091 +13936011309 +15108202780 +18855048003 +15131056191 +18559607279 +15141611531 +15186768163 +18899379565 +13965587067 +13948769809 +15807758650 +13628462221 +15879274139 +15155658404 +13633555023 +15862480874 +15110087100 +18568841794 +15134809742 +18599762723 +13643173512 +18822711945 +15867716999 +18517722325 +18832229371 +15153185857 +15130128857 +13977996539 +15828982765 +18579454295 +18891430329 +15855239155 +18893312719 +13944244290 +15802509964 +13938072707 +18505706391 +18852669612 +15890491607 +13933095383 +18864089045 +18840364101 +15116571657 +18828598978 +13608114014 +18819709310 +15179027282 +18866133951 +18569804346 +15863604229 +18534314063 +15885837169 +18880583228 +18848248484 +13982817599 +13680256618 +18800085104 +15188212716 +15182340499 +18803702457 +13685898393 +13695786298 +18545481085 +15198380380 +13908213673 +18823697306 +18865867031 +18519036865 +18843299958 +15870887918 +13602841420 +18826054552 +13996150014 +13662135551 +18562216489 +18852316463 +13650358331 +15146793171 +15183890586 +18803699161 +13971465424 +18861104365 +13912155243 +13653355650 +13617951080 +18836356278 +13979812673 +18805442051 +13672177309 +15188447678 +13952236824 +18583701897 +13949174780 +13972037280 +18884057482 +18535620787 +18865388284 +13640365681 +15889672485 +13643221136 +18536923518 +18895434333 +15192314789 +15114640321 +18533833106 +18865884436 +13965941669 +18810873758 +15125577703 +13941673722 +13939567289 +15116975293 +18805734582 +15868537177 +13929655374 +13932269662 +18896010438 +18846808440 +18511530742 +13924090995 +15127022128 +15868420996 +15886455211 +18847819069 +18505722877 +15815044192 +18842447308 +15141583008 +13680393250 +18593971489 +18529446629 +18573953387 +18871892459 +13638072186 +15121973310 +18855081626 +13997626216 +13917752860 +13990840985 +18882188799 +18516749628 +15814817699 +18833140897 +18884979568 +15153134621 +15113180317 +15879491519 +15131431113 +13671548159 +18562444527 +15195126735 +18544868303 +13662494932 +18846354485 +13688979198 +18586118713 +15898441819 +15159430293 +13643511984 +18528985687 +13604245554 +13910378288 +15844141400 +15882311868 +18541658536 +15149721709 +13929113064 +15880976163 +15186649067 +15822869781 +13609496321 +13972818835 +18510253978 +18808571717 +18535814466 +18894587158 +18539665165 +18883726415 +15800215199 +15123265506 +13916308101 +15862080166 +18515622913 +15883256441 +15840108375 +13602776106 +13918757107 +13604317715 +15107118897 +18821339301 +18537213950 +18889425039 +13654205025 +15128494138 +15154639011 +15824459358 +18509932807 +18833218451 +18860212956 +15843435969 +13965932053 +15845512538 +15895343024 +18880792904 +13618412213 +15864823350 +13938157390 +13984193339 +15873817367 +13654212764 +18854649198 +13628953808 +13936344038 +15157943200 +15892723815 +13601282145 +18595855779 +15162375955 +15152198820 +18503153098 +15889857097 +13668463443 +13920593283 +13614533209 +15159014294 +18848797007 +18581031504 +13637675201 +15889384027 +18835319712 +18801185170 +15177271159 +18593135587 +15161389396 +13914740044 +18560884616 +18554670070 +13618747732 +13611955281 +15831727030 +13673755415 +15102773575 +13940075862 +13658728658 +18568562288 +18564220328 +15884649794 +13666356626 +13904787280 +15199037124 +15151537032 +15153000798 +13973030024 +15132712409 +15866387461 +15876525525 +18538669864 +15882575406 +13623886009 +15178311669 +15192553091 +18874618947 +13609234045 +13689947255 +13971303356 +13924825306 +18574045174 +18593954510 +18892334249 +15863716796 +15855678537 +13630816969 +15150883528 +18887165618 +13646496432 +13669339053 +15170057390 +13902875125 +15182814575 +13950367775 +15810970747 +15847206963 +18584367688 +15130911268 +13630967165 +15124777085 +18580758719 +18812413231 +15144673943 +13694951077 +15184755833 +13677084317 +13631427592 +15180849556 +18566386163 +15134780154 +15864606611 +13957441985 +15827572699 +13965662374 +13654999062 +15832782570 +18533774175 +15148615904 +15163686044 +18840126026 +18816096216 +18510498561 +13952973553 +15119506157 +15151776358 +15176231939 +18569659468 +18843144194 +18878264193 +15117562570 +15806547930 +15811619874 +13634183610 +18864164221 +13634045086 +18599188956 +18591000024 +18563124136 +15844572677 +13648473783 +15180445948 +15105517539 +13914614826 +13926654668 +18533566448 +15118489710 +15827828195 +18577621583 +18572359864 +13962065977 +18887213953 +13957392356 +18565849608 +13661366736 +18558556090 +13906055165 +18561110436 +18875720290 +15832928240 +18572584923 +13932743940 +13613732748 +18533575421 +15811810558 +15190755722 +18592336944 +13633747898 +13693786895 +18587614757 +15191553151 +15106469233 +18563797933 +15197791351 +13924680801 +13661421861 +13971074757 +13935969372 +15892586607 +15882343854 +15145987614 +13976660240 +18829818708 +18517894937 +18523475873 +13944455205 +18586955565 +15852884103 +13685326707 +18557458317 +15828919990 +15147474702 +18509032347 +18835390009 +18895184172 +18581023108 +15886841862 +15134533166 +15895012739 +13682100237 +15196281457 +15810412009 +13934474003 +13933449390 +18562727028 +15802471876 +15194909158 +15826938742 +13953932755 +18598450537 +13937786038 +18804644459 +13604376060 +18888103649 +18510990539 +18549628995 +13641841995 +18557570720 +15816505383 +18837941767 +13978640910 +18800106564 +15836864829 +13928093926 +18589474343 +13973929528 +13959305159 +15181250714 +15176731776 +15873244968 +18511414586 +15178813259 +15896560351 +13604474196 +15129168341 +15105313796 +13900544649 +13941919384 +13908326484 +13990450958 +13656166989 +13907495419 +18566450044 +18558580160 +15837711337 +15180261109 +15857910888 +18837228160 +15865148133 +13940400196 +18595368035 +18526420840 +18574392553 +18846349939 +13663527426 +13984170889 +15846996891 +13934647665 +15167462910 +15151446063 +18590595345 +18801415301 +13607099389 +15192436201 +13978674466 +18501920961 +15815744334 +15878070961 +15881099782 +15836682655 +15137409014 +15134400773 +18824598024 +13977347999 +15864572514 +18505277004 +15854831128 +15844163798 +13997344708 +13945171450 +15863154364 +15815266676 +15834849885 +18808575085 +15172091014 +18826472525 +13602607044 +13654276331 +18540417937 +13927893323 +18892719248 +15178313602 +15192529056 +13958546272 +15149553431 +13654061817 +13610593826 +15878883568 +15837907496 +18832391970 +15843321524 +18592636202 +18856123378 +13975806525 +15866922843 +15140320635 +15137408893 +18566449678 +15151479817 +13913760770 +13901200022 +18539791221 +15128331069 +13686459908 +18567249204 +13649154757 +13994804240 +13949464317 +15104336063 +15809658693 +15111273877 +13901411855 +18842283806 +15810317824 +15110363158 +15179738575 +18856831873 +13959515119 +13628444274 +18505996000 +18858621700 +18817174712 +15156090476 +13664301489 +13654701765 +13909424901 +15147354440 +13928596295 +15803408804 +13986877519 +18873469278 +18853222220 +13936828817 +15879095308 +15154783205 +15810795623 +13696585350 +15876495274 +15151943820 +13944921975 +18867927257 +15168412280 +15120129604 +18854584608 +18510194478 +13600770380 +15157130495 +13692268005 +13928467176 +13663494571 +15883342280 +18519551947 +15136611206 +13909439921 +18847579751 +13611322347 +18540893092 +13974099311 +18891258986 +18589825456 +15125645435 +18898954445 +13929720126 +13655916939 +18516190380 +15863820877 +13989946667 +13900912759 +13922909148 +15173944708 +18556141775 +15807496195 +13630808416 +15832934175 +18873818376 +18823401598 +15843246228 +13906948205 +18898596348 +18562840810 +18805618280 +15851316835 +15106661035 +15141902516 +18536316582 +13670881949 +18577369969 +18592857269 +13687905369 +18520513504 +13646547848 +15859995353 +13616487790 +18533679317 +18803630053 +13908075015 +18501461770 +18556386331 +13632882230 +13644426796 +13653313835 +18842798478 +18538907581 +13937781195 +13673097019 +18579741675 +18828239127 +18557592641 +18894489818 +18866922709 +18570831149 +13958945158 +15832651533 +18547616290 +13605759133 +15874167692 +15140360761 +13679663003 +18833102453 +13615019298 +15886448002 +18581793003 +13666193944 +18867911944 +13951626643 +18875962267 +15889164235 +13962327096 +13944768680 +18578535511 +13663525166 +15191472844 +18568921774 +18808548104 +15838650504 +15106086120 +15154461763 +13675390340 +13631250111 +13939859108 +18818757715 +15144646813 +13927300722 +15155749200 +15184352194 +18504700488 +18891599934 +15856242632 +18847940718 +18596474684 +18592693718 +13904620838 +18576784091 +15125612403 +15884644610 +13950420889 +18539056973 +15143672720 +15806282046 +13699758310 +13693848158 +15804414093 +15182143680 +15818702342 +15172600703 +15155954246 +15151047689 +13627475223 +13652881790 +15126142161 +18529583377 +13978231062 +18879806320 +18574713164 +13994793577 +13693076991 +15162661070 +15181113263 +15847453684 +18540034524 +13646383971 +13686190662 +18893336708 +18524264957 +18881726904 +13922014585 +15132395605 +18805762032 +18574846565 +18801330047 +15870735362 +15851520844 +18598623558 +18801825527 +15115886598 +15809026014 +13684777856 +15110406270 +13999675873 +13691657471 +18503713448 +15181731390 +13976811410 +13922807800 +18528086958 +13632190919 +13949191315 +18560688752 +13682910606 +15895806285 +15147300334 +18584113934 +15823913519 +15831457335 +15191490690 +18589586916 +15108125866 +13643161926 +18830308122 +13938471889 +13669158055 +15875514398 +13630792800 +18516947686 +13682562051 +13653996870 +13926427565 +18876136361 +15855851823 +13925854381 +18593564816 +13926453121 +13693815822 +13988616969 +15860863257 +15195353866 +18823493566 +15852595113 +18835976132 +13663469913 +18543010798 +15898114548 +15142350664 +15874245161 +18584029580 +15107735098 +15850222281 +13946357979 +15894307201 +13963800928 +13668526398 +15877138343 +18539259868 +15854344541 +13641569117 +18505145682 +13910079684 +15161621689 +13618872669 +13911273587 +13681288180 +18842027860 +15121396469 +18575125630 +18546326507 +13661501615 +15178124980 +13956901237 +15820448092 +18881303428 +15104321351 +18886278188 +15105819444 +15138319217 +15862870024 +15190000482 +15176776027 +18525264417 +13979809622 +15819752506 +18810897200 +18815929413 +15827722368 +15897432573 +15194155048 +15803774240 +15160056852 +13671553889 +15861673160 +13965867544 +13915241022 +13960934725 +18891343337 +13688987985 +13925318051 +13659479904 +15843303602 +18536234307 +13640887091 +15194146786 +18561681932 +15857178553 +13656727927 +18598808505 +15176386339 +13932914622 +13901344448 +18803473220 +13634853193 +18806617847 +18871394354 +13606224211 +13993124794 +13928016818 +15879125399 +18867731766 +18557493553 +18591832403 +15809869478 +15872434265 +15842039933 +15820369215 +13627717268 +15873602365 +13941363313 +13633124287 +18899083350 +18878308264 +15831116669 +15804978291 +13697892666 +15102974944 +15846589301 +15162593926 +15199245795 +18825042014 +18585766239 +13954157324 +13647320754 +15811211392 +18890793755 +15846489479 +18594034040 +15890907922 +18521263868 +15843144076 +13639789635 +13622010253 +18542602787 +13926795250 +13637850673 +15823002998 +15131925646 +13678441127 +18866344306 +13971243437 +13644330337 +15860511457 +13676791802 +15818344543 +18858584092 +18802928908 +15134414159 +18853605713 +18897181082 +18504823252 +13981798725 +15193759186 +15189284741 +18827888334 +13900372266 +15812884041 +15832172605 +18588685069 +15838607026 +18898168778 +15199032326 +15145657699 +13910080355 +13678810333 +15835377184 +15832295461 +13645393942 +13903881984 +13946258729 +13660132296 +15136164029 +13630715860 +13961265095 +15856903988 +13658799242 +18831124459 +15198500670 +13983937104 +15182004509 +18823233835 +15195394433 +15810215444 +13653553952 +15174290338 +13934595824 +18541771548 +13622359533 +13964099643 +18598099479 +15146659576 +13664107502 +15821102593 +13935843312 +13908963363 +13984751959 +15864944962 +18834575341 +13610249479 +15880146632 +15117522632 +18823246463 +15170376244 +13981181701 +15196186161 +13643402591 +18892909082 +18833321332 +18859332885 +15186215815 +18588299106 +18518141084 +13699733202 +18830596985 +15806983743 +15833137727 +13635872858 +13961996140 +15174983934 +13979028459 +13657863826 +13639789962 +13974406893 +15182991580 +13627994318 +15194675898 +18855605878 +13661963855 +18890247315 +18578235774 +15195783856 +15165913716 +13615515577 +13900122222 +13943889101 +13985262609 +18873230927 +15830514940 +18596888910 +13911031144 +15829695426 +13610798659 +18810697387 +18521191347 +13968078110 +13619890684 +18555149033 +13632980544 +15130391875 +15856972465 +18878204229 +15870140940 +13617919127 +13657005432 +18539955593 +18860906384 +15873000148 +18598699773 +18514070521 +18530656688 +18800600438 +15192925782 +13943587630 +15193781076 +15860766504 +18542388321 +18579439946 +13915413503 +13976669246 +13917191843 +18507448357 +13684092790 +15899048763 +15128392453 +13669505673 +18584103529 +18525787733 +13972294251 +18851489465 +18802455900 +18864581131 +13987726371 +15820120886 +15844585988 +15875530924 +18532832230 +15845119718 +15133775578 +13986529545 +13691311328 +15198363005 +18550927365 +13627125884 +18851827135 +13969364130 +13976208044 +15855095656 +15104001910 +15811257325 +18866723821 +13934786220 +13994384791 +13910879236 +18510075680 +15150745481 +18821246163 +18863560339 +13923362063 +15878609502 +18541820214 +13650310965 +13977722075 +13696970317 +13964490613 +18550403719 +13909012483 +15142923111 +18523644913 +15858212644 +18570731784 +13952519433 +15803782715 +18867116927 +13963037363 +15880001936 +18561509279 +13683610401 +18502719109 +13608004440 +18542916398 +18544230521 +18582256935 +13959868294 +15826811348 +18517065733 +13978938854 +15868806407 +13907736134 +13982053282 +15150831300 +13637549399 +13659814146 +18887409428 +15819628572 +15803961598 +13998031638 +13900582409 +15806601216 +18814860420 +13953360586 +15165826627 +15169906382 +13914348582 +18501850826 +13623436752 +18859296111 +15853910848 +15845721082 +15114738793 +15148112041 +18855483567 +13657194286 +18567044133 +18523827211 +18802167605 +13621193286 +13607597018 +15143635541 +13916807656 +15176296184 +15130749196 +18521970089 +13693872179 +15136368400 +13620556574 +13666058810 +13955134875 +13993017186 +13915331111 +13619925841 +15894604372 +15886141665 +18505082776 +15847503759 +13983410237 +18852105590 +13981668213 +13968174281 +13956659681 +15177861017 +15197995121 +15817533285 +18505494522 +15822119059 +13990178835 +18817067130 +18502952470 +15152111286 +18873914363 +13970252414 +13645857797 +15812315496 +18558528283 +15898376510 +15888088893 +18827500059 +13924749739 +18863622692 +15151356500 +13601931510 +13951507284 +13674581392 +13994774869 +13944403307 +15109691467 +15138168779 +15858285226 +15873561690 +13686657939 +18504114887 +18811406163 +15804081938 +15173336972 +18861513688 +18539861263 +18540819953 +15187834406 +15865549700 +13630661593 +13655311983 +13625456656 +13696878206 +15189233575 +18804632590 +15152164778 +18531553365 +13992588909 +13622694308 +13927105178 +15862014497 +13679362080 +15831115645 +18538792852 +13667324753 +18865228594 +15836621664 +15137818347 +18821273865 +13666363075 +18800345066 +13938858573 +15874027620 +18552748659 +18861972419 +18590554499 +18511580802 +18899300552 +13677680427 +13945561871 +15896608021 +15836789852 +13617945717 +13678687372 +13950143458 +13965118083 +13995706030 +13997759800 +15870128347 +18876931294 +15831936197 +18503508004 +13645687248 +18835042924 +18515299912 +15870415205 +13959253672 +18574757631 +15191112407 +15818875743 +13615332117 +15852790846 +18810314243 +15801419700 +15182225580 +15842239423 +18801125515 +15135343805 +15881852902 +13991744768 +15856717022 +15894409219 +15857805020 +18864570313 +18580850681 +13624867329 +18563679735 +13942485074 +13650399175 +15181438245 +18838116088 +13919941996 +15886582307 +15132310532 +18819287662 +15129552483 +13638654937 +15805337812 +18816694296 +18591294926 +13639612029 +15855095725 +13681094385 +13945545741 +15190638143 +13669896647 +18521020450 +15149501570 +13632239751 +13649775914 +13630413557 +13606683339 +18885527597 +18509714214 +15177241643 +18522590316 +13671752127 +18891339720 +15122168323 +13992620724 +15898531131 +13969097610 +18885740912 +15896482378 +15186695803 +13686032228 +13612743344 +13973076150 +13685254767 +18520572638 +18889986105 +15137862791 +13602895202 +18828735605 +13610828107 +13670276254 +18563392318 +13997815651 +15889492421 +18560909364 +15825768891 +18593218024 +18527221095 +15185506304 +15851972597 +15187997431 +18866495949 +13931163451 +18804238015 +18562385240 +15861579633 +15117489919 +18859490972 +18572146239 +15813729654 +15886023768 +15121108831 +13696790345 +13967008043 +15830606942 +15820811858 +18893197880 +18574090828 +13649628278 +15170720784 +18526582395 +15193788259 +18583065486 +18505969111 +18584928771 +18806220602 +18578923198 +13980539858 +15827368426 +13923884659 +13623130199 +13611898693 +13696979340 +13613366973 +13607545062 +15136717126 +15153853325 +13605779034 +18857550224 +18802731164 +13648019382 +13662484072 +18844977290 +15829354525 +13624659369 +13957281487 +15888227289 +18882176454 +13683026294 +15124839979 +15152660543 +18830064971 +15100319557 +13608487676 +18831920926 +15152809562 +18860827411 +18550844758 +15176847051 +15890923899 +13652289588 +18522615792 +18518334078 +18577227852 +15132206383 +15153260494 +13600581508 +13910358968 +18521086995 +18871767052 +18880109985 +13962835209 +13907748666 +18838505567 +13684661753 +15861563498 +15870268605 +13986963901 +13665520309 +13612776590 +13995000947 +15803395929 +15813849703 +15139678464 +18557214234 +15183325987 +18505026107 +18529691048 +18848401952 +18552211980 +18536989251 +18556490281 +18514144629 +18559655791 +15827291512 +15140463001 +18827771829 +13625580560 +13614646487 +13920751611 +18586107035 +13921449020 +18865340511 +18505545578 +15181608592 +13690689184 +13988720489 +15804413998 +15849438819 +18526723407 +13972092022 +18844003284 +13916637837 +13962717543 +18870622618 +13662507661 +13989137643 +18593261472 +18875307150 +18509975551 +15893195497 +13910750828 +13606931584 +13954761144 +13968659909 +13647525509 +13911177279 +18526340031 +13950334825 +15192797361 +15170125786 +18509903231 +15187629036 +13625185307 +18824172426 +18829455302 +15184123868 +13976563354 +15829089772 +13989689636 +18575973112 +15126459253 +18519496912 +13611584463 +18562418515 +15820252560 +15848300034 +13951868992 +13929643589 +18894036988 +15873267030 +13697870469 +15832050296 +18574826701 +13980729901 +15100458587 +18523229464 +13633228482 +18820927581 +18842857133 +13978750007 +18558728751 +18557422944 +18803523285 +13911259737 +18824551624 +13940239409 +18512595690 +15805053700 +15800194135 +13925967239 +15858569403 +15859875636 +15189126107 +13615124289 +15197661233 +13624848247 +15839703630 +15883272502 +18879625723 +15134075883 +15861116910 +18516633097 +15870808448 +18535292560 +18850081257 +15113994643 +15829581058 +18510656242 +13997322206 +18559124711 +18545355032 +15842205656 +18527632546 +18580340166 +13987274315 +13954012052 +13679260523 +13618391892 +18544636197 +13688234132 +15114037659 +13657164745 +13956080297 +13670110505 +15828457130 +13981803729 +15151715209 +13957600467 +18555938140 +18506145610 +13629708514 +13611246063 +18546658187 +13969593704 +13628628985 +13629172636 +15871974993 +13972685928 +13981483404 +15110545654 +13909749601 +18531987340 +13946966176 +15873127152 +18527086694 +13957007040 +13603499383 +15164725370 +18809568362 +15154977347 +15889415793 +18882204780 +18868869008 +18532433691 +18848012426 +13670232410 +13945937459 +13638757168 +18899942281 +18878479433 +18520123928 +13993422491 +18519237936 +18598289358 +13978515710 +15803889900 +18524404828 +13993055050 +18893533690 +15127568678 +13966546290 +15122057993 +15885807163 +18540884740 +18870986173 +13960640402 +15819773488 +15835783728 +13606912168 +13699442823 +18557567783 +15832142324 +15148843660 +13951322639 +15810803197 +15806744074 +13976951731 +13966384404 +13913319217 +18817577426 +18854626881 +15875049428 +13693457007 +15856142747 +15179496366 +18547151842 +15853726088 +15114456810 +13927522464 +15142597973 +15171126596 +18804668493 +13976716837 +18892945488 +13601150889 +15854053745 +13902349867 +15176289623 +13901125308 +15163218182 +18567562318 +18548894672 +15185169068 +18880882051 +18508057849 +18842911791 +13625147918 +15833243309 +13901749124 +18598145432 +15870993449 +13654991336 +18826732769 +18875059868 +18567007430 +18835672706 +18867702840 +18846244374 +15195787097 +13909272010 +18535796852 +13953196511 +15836761432 +13900822739 +15839334629 +13934954207 +15115714624 +15890840977 +18500230284 +13928342001 +13639718622 +13658166120 +15168415391 +13990725306 +18585865526 +13696772793 +13912430228 +15865434713 +13968851345 +15166817742 +18578613955 +18808856365 +13632058222 +18516385557 +15808298120 +18525201725 +18870904657 +13915561129 +18854052724 +15858272301 +13604097955 +15808683652 +13994946623 +15157958742 +13926693879 +13621786104 +18584854946 +18849171885 +15159845977 +18828882681 +13685858130 +15176794246 +18585085761 +18520884921 +18821983648 +15848235407 +18563851819 +15850810986 +15813504044 +15100556443 +18526015401 +15120157048 +13633779921 +13924284344 +13989071783 +15824918782 +15144602330 +13685223610 +18860146306 +13644318780 +13921972416 +18899973582 +15879610112 +18856661321 +15170695741 +13614112994 +18823695214 +13946584529 +13925051896 +15810430893 +18890230584 +13657355508 +13607242527 +13605025436 +18831602627 +13648866175 +15878463282 +18512004383 +15834795013 +15181941162 +15899911832 +15151277026 +15130520934 +18860335539 +18521872592 +15171617696 +13681255945 +15805756468 +15861658274 +13973082189 +15828878463 +13945623354 +15189252103 +13974308836 +13606470387 +13985053966 +18552793598 +18809099177 +18824581375 +15810072089 +15857059926 +15108060325 +15819648330 +18599738344 +18527370123 +15178737774 +13607068666 +13658823947 +18872117499 +18870289137 +13915464335 +15882237841 +15805239703 +15111705536 +15808533717 +13687742347 +13965303822 +15824482634 +13685363475 +13649400616 +18820143734 +15876323930 +15861687903 +13601075589 +13680472912 +13934860791 +13924984524 +13996219736 +13944125570 +15889234723 +13628472054 +18853928405 +18850586211 +15866318362 +18857837379 +15890476324 +15887131629 +15167599910 +13671505383 +15845452304 +15849192114 +15842129312 +18517878213 +15133037167 +15899496420 +18807790397 +15193860754 +18843895020 +18577987619 +13684430462 +13925964530 +15132359992 +13647090893 +13623817349 +15142230949 +15830875445 +15867641606 +18866132472 +15820818265 +15866284260 +13903854768 +13637614376 +15138262147 +15872471466 +15865515585 +15135801264 +13659590859 +13916949096 +18530036440 +18864818216 +13971527429 +13624091340 +18823541002 +13919209990 +18599248203 +18548349416 +13925696323 +18837548829 +18849775787 +15162170268 +13691309671 +18801021059 +15189646249 +15858653467 +15868019077 +18832009112 +18563339199 +15159295640 +13675094089 +18853403665 +18876011044 +13933837533 +13653199807 +18888434850 +15848147181 +13928052211 +15154343613 +15884241481 +13911428847 +13974004558 +18814418231 +15840475968 +18500746618 +15109630937 +15848395319 +13946433108 +13938644714 +15891457858 +13633524316 +15827190745 +18556685954 +13604688095 +13981657595 +13923059759 +13949992588 +15854232153 +15157064322 +13619467594 +18891233572 +18584255254 +18808494751 +15865658286 +13927689455 +15131798660 +18555973074 +13641425082 +13630048079 +13932885915 +13679116745 +18581019687 +18844267111 +13986374466 +18885504219 +18568683921 +15825742788 +13946435907 +15187669581 +13636841998 +15831105804 +13605219146 +18580725554 +18893770859 +13601143340 +18823140351 +13686272289 +15148597156 +18802669368 +13689097887 +15819769698 +18876392289 +13661895492 +13600012741 +18865740824 +13990800620 +18857544434 +15887971943 +15815072663 +15121387744 +13943027752 +15893247735 +15102184518 +13993279970 +18854117994 +13618700468 +15895109756 +15162356020 +15825706548 +18819021951 +13600954556 +18802839507 +13932534654 +18595518092 +15110129729 +18857386254 +13939580503 +15834570536 +15139020071 +18510462572 +18598679873 +15174150695 +15889107822 +15855354106 +15881549340 +15836591358 +18548883836 +15871626175 +15835995078 +15836959018 +18503090840 +13989834079 +15159213708 +18878454068 +13900984196 +18841026895 +18534386232 +15125172204 +13640438770 +15114259991 +18829889238 +15844733269 +18543837089 +13980439752 +13915311520 +18581827028 +18577478020 +15809552755 +15112034955 +13620122355 +15891445367 +15113899679 +18826604029 +18567561467 +18541572758 +15811504419 +15892545943 +13986900281 +15845365061 +13984613272 +18541673640 +18804972930 +18532309479 +18543917631 +18829235916 +18590455433 +18523822378 +15812557731 +18551426171 +13659967392 +15892645752 +13619540256 +13984873812 +18826703781 +15135849727 +18542526962 +15103105466 +13636100997 +15139378175 +13979453196 +15182709257 +15124105641 +18856496217 +15164973652 +15827132525 +13969250924 +18869093150 +13665617893 +13623714105 +13678449999 +15135099057 +15177476412 +15866781905 +13906294108 +18891012817 +13614795050 +13658673333 +15867553131 +18568975219 +13973315008 +15152953800 +13907031970 +15838494017 +15125181149 +18870945534 +15153953124 +13633946318 +15869262471 +13603460953 +15122636616 +18846623810 +18832446291 +13983816589 +15156076363 +13996657081 +15894980562 +18839114687 +15143892128 +13919227972 +15847532930 +13995452583 +15174721041 +15139588466 +15882486422 +15164676819 +13956380439 +15896071592 +13951022765 +18568341511 +15160465242 +15184270882 +13614445919 +15198211490 +13974862710 +18855611019 +15194976757 +13919410937 +13612299042 +13665108463 +15128919619 +13908757836 +15875031826 +18809462023 +18814153467 +15833277279 +15846675768 +15107230913 +18885793906 +18858975910 +13682901535 +18546615906 +13981665646 +15851098403 +18875215920 +15138015842 +15132097451 +13636841927 +15836695752 +13972987150 +18514046166 +13932292462 +18882824176 +15862352765 +18534253580 +18549764034 +15122203731 +13685390555 +18887860272 +13625736674 +18594868304 +13674328324 +15867022067 +15143820632 +15811357759 +18811134615 +15152983775 +15116978192 +13600249672 +13600523785 +15148774321 +18512628906 +13648889638 +18537855111 +13962645308 +18844138592 +18575207778 +13624735903 +13919246964 +18851105151 +18818747730 +15158923513 +15828851175 +18505131169 +15879811838 +15112693027 +15139012062 +18845653055 +15880359292 +15126571908 +13900227603 +13981415055 +15160888908 +15191154888 +15861588755 +15158384726 +15153835207 +18880070499 +18584762259 +15127484687 +15100776492 +13985382801 +18867099244 +18538787222 +15190638296 +18539031132 +18832778918 +15111633152 +13967393855 +18550341113 +13934345864 +15100780864 +15842560906 +15150014296 +18568262199 +18583429988 +15170668535 +15149914509 +18825463476 +18851151973 +15134439089 +18896123844 +13998480531 +13938927647 +18847996430 +18853333207 +15104406122 +15803629707 +18585692599 +13611905886 +18846797437 +15824772508 +13933541612 +13968143024 +18526370162 +15181994089 +13633097244 +13649932732 +18886355597 +18882926529 +15135600341 +18806332709 +18854080886 +15150833091 +13994997565 +13632689863 +18557170868 +13931484449 +15877876769 +18893218017 +15862363749 +18828705704 +15854336509 +15104855316 +15846354376 +18846552493 +18893141534 +18815294380 +13958418946 +13989415106 +15848006394 +15120392955 +13962919734 +15129268579 +18875311299 +15863308128 +15888237701 +15172485781 +15147990424 +15132440344 +18598149809 +13693763507 +13990432143 +13642081964 +13901993697 +15826191887 +15159907388 +18574073118 +18542143236 +13923632524 +15867911370 +15866286424 +13929373802 +15802532501 +15153992221 +13681688572 +13993073592 +15854207980 +15173107253 +13918041926 +13684830669 +15861306293 +18826344304 +13649908102 +18520149315 +18836704779 +15126494166 +18568597115 +13931376753 +18511461393 +15153746953 +18581631044 +15155299761 +13906959435 +15109273879 +18569500380 +18512427480 +18861626645 +15108232430 +15173418847 +15887483398 +18516843121 +15857367124 +18884656092 +13631254659 +18803397328 +13998572676 +15140407224 +13679752274 +18500774515 +18514078339 +18506368813 +15800572093 +15848509015 +18842771036 +18572177263 +13935476973 +15889325948 +13913040723 +15195671175 +18879105527 +13969900634 +13609310866 +13680850483 +18886065631 +15858839019 +13932190754 +18836116686 +18558402000 +18500395805 +13925482637 +13690295964 +18805997622 +15194044469 +15885804987 +13987374530 +18510163902 +18865788401 +15110999271 +18595539342 +18894605801 +18515756101 +18530743245 +13951259067 +18560088828 +15881803060 +18505205472 +13671018152 +13692097423 +15885357190 +15128417593 +18556530695 +15149838505 +18829465416 +13642810537 +18567258927 +18552497588 +18580819997 +15107935702 +18556228337 +13902432626 +18523477216 +18893855703 +13917743600 +15159908313 +15871980578 +18845193294 +13682618506 +15858133418 +18546169979 +13912851792 +15810964431 +18522979980 +13638065861 +13688476202 +18865946557 +15818329328 +18564462900 +13917401166 +15874935624 +13626012312 +13923904617 +15193624490 +13613201900 +15108846914 +15877012950 +13907590194 +15837647880 +18574833498 +15802526864 +13986349407 +18885237903 +15166497519 +13674858093 +13644642006 +13938188345 +13684003965 +15109340003 +18836245761 +13922235323 +13626740180 +15809317021 +15815918923 +13649600954 +18877931606 +15884479340 +18547134582 +18597218537 +13971637265 +15852407128 +18844855980 +13698799056 +13626107845 +15857974495 +13615348258 +18579643896 +13699356904 +15161107104 +15867828182 +13989390139 +18572270861 +18822136249 +18883632531 +15178189972 +18875644895 +15821174698 +13940634252 +18863096448 +13928373821 +13912697818 +15175207605 +13900069713 +13663192106 +13953824887 +18845541584 +18532489845 +18830502276 +13631022291 +15112965297 +13645395799 +15895987815 +13917429676 +15192675444 +15883018950 +15197872858 +15122642793 +13973073865 +18812914824 +15102135005 +13689601113 +18575718037 +18852437571 +15802762775 +18829908912 +18567912859 +15813268896 +18886328018 +13939541269 +13649842181 +18552569889 +15823089204 +15883624360 +15855180184 +18831977860 +15134789676 +15842354012 +15109858364 +18838011263 +18886003201 +15161957832 +15836022429 +15867506441 +13652013973 +15801877832 +15872515032 +13626169542 +13974532361 +18588433685 +15183152932 +18501567176 +13620839486 +15148639078 +18836811087 +15832365375 +13692385430 +13990123124 +18585596003 +15884851330 +15809690406 +15848581402 +18805290127 +13649939941 +13930756466 +13600856293 +13912315725 +13612503452 +18593526276 +18551173709 +15830341867 +18511530774 +13901313466 +18541305495 +15857242746 +15811711766 +13601924543 +18512287549 +13693905258 +13935695265 +13955032550 +13977426472 +18805134434 +18845602802 +18847646104 +13934066585 +18899539123 +18581359784 +15822366549 +13649240887 +15892498428 +18511871858 +15145870932 +13606134233 +18810233558 +15807746689 +18559300478 +18584120641 +15164152531 +15863612000 +18895127759 +13937780336 +13658238224 +13971985705 +18856966599 +18816993073 +15864096355 +15139701401 +18890553367 +18890039116 +15185114935 +18803187431 +13616453231 +13616558328 +13693870337 +18533043349 +18585797348 +13607404262 +13947243561 +15874301363 +15893879432 +18892763823 +13922327491 +13968672291 +13994845560 +15852181241 +15862886136 +15827454058 +15160791731 +18821449092 +15824571133 +15194397725 +18820914833 +18834569855 +15836058844 +15875770812 +18592234992 +18850379298 +13625887728 +13950655804 +18573903205 +13617567144 +18598045965 +15867342875 +13993185389 +15806232993 +18826400760 +18586452502 +18868380761 +13600638266 +18548493785 +18517618300 +15164774225 +13948539034 +18595974098 +18523206725 +15851479460 +15803733911 +13667620354 +15100668691 +13651851562 +18591261881 +15862306375 +13616283111 +18857093604 +15832660299 +15897426661 +18533101897 +15133118174 +18592241329 +13604699704 +15174320559 +18566821103 +13664879406 +15855982683 +15197842746 +13647681857 +13656418441 +18859923005 +15104747328 +15823074390 +13625248132 +13644539534 +15803969055 +13672176888 +13914025877 +15821761499 +18816752704 +15102012279 +13628859927 +15117392484 +18591623745 +13902245088 +15828490059 +13658427215 +15108834487 +15800874615 +13627513383 +18870934389 +15196834037 +13929909063 +15144151058 +18891416545 +15162592376 +18575436670 +13957339363 +13685584017 +13674416154 +18597602910 +13996745553 +13999039345 +15867207033 +13966590138 +15152319920 +18861116409 +18560010491 +18569503000 +15898831563 +18853191690 +18518496236 +15160127066 +18594559137 +18816612749 +15834859848 +18825062497 +15890550969 +13972042369 +15198020829 +18835607307 +15823629140 +15149279692 +15145294668 +15111048926 +18568765506 +15117323038 +13933349999 +13626779301 +15162670795 +15868197216 +18814784302 +18880291460 +18800816805 +15840196673 +18526892963 +15893560839 +13949821487 +15162102033 +15196085205 +18897570029 +15898750566 +13929471621 +18526210661 +13972033182 +15134432730 +18549483204 +13933556178 +18571534050 +15891652135 +15137827062 +15829167450 +18555959308 +18563370956 +15830098141 +18843072222 +15803964520 +18552737853 +15884789350 +13654976317 +15170346938 +15825551181 +15872830125 +13618440753 +18587895895 +18881337194 +15808564934 +15170639865 +13670944167 +13953624664 +13647310477 +15152249452 +15830532796 +15188212765 +18867609745 +13648131116 +13633305320 +18886383363 +15872526198 +13973608845 +15124854218 +15892253081 +13617736206 +18820160325 +15881926292 +15129173137 +18860303672 +15195656442 +18834976250 +15802010714 +15891145347 +13920168186 +13956044169 +15856456338 +15111340447 +15826374294 +18505569205 +15158100615 +18521261698 +18854347923 +13978155790 +18893362140 +13620440265 +15128299166 +13690599332 +15148821542 +13646121396 +15857813961 +15127360272 +13613648049 +13654657637 +18851582542 +15119281496 +15105415644 +15167619893 +15865382520 +18500892038 +13613521775 +13618836267 +13908065608 +18843924438 +18587555965 +18815615429 +13607060319 +13634659765 +18830977777 +18803311217 +18859145755 +15165162139 +13644974382 +15162049394 +13648278550 +18508257368 +15132024954 +18505628301 +13967224313 +15121708472 +18598301759 +18572276016 +18511356367 +13937797406 +13686312454 +13948735297 +13922014160 +18816014152 +13628050653 +15150819749 +13601853129 +18876571997 +13667847340 +13641978586 +18500970081 +13985057990 +15165900552 +18536894094 +15881768843 +18889170669 +15103993930 +18556679756 +13986022970 +15189693173 +15164578121 +18815212145 +15847763083 +18891332843 +13945382154 +18509787738 +15193726851 +18585928574 +15846669983 +18892419028 +15848349859 +18520194596 +15179394421 +13952103787 +18584877255 +13696446510 +13969147221 +13655049357 +13990386856 +13938891363 +15805146591 +15135982046 +18598364838 +13694043967 +18891289097 +13694507018 +15823364265 +13612310776 +13672804690 +13686051697 +18513807650 +15163172646 +15113957942 +13692999361 +13651073786 +15824284542 +18800729219 +15197604877 +15823584824 +13616219428 +15139350595 +18864866367 +18573225779 +18568327447 +18896318983 +18554306000 +18849834083 +18858428983 +13941995180 +15178312260 +18820918685 +13685582122 +18553327282 +18866870532 +18593631097 +15145908607 +15160204206 +15153708583 +13679530045 +13633491546 +15167750500 +18518063087 +13937455943 +18523042845 +18896743893 +18866926491 +18805922969 +15181027699 +13617743539 +13979405100 +15103704818 +18806481688 +15873558161 +18825866724 +18515302884 +13927379173 +13903106663 +13641087352 +18873608756 +13695866221 +18565554616 +18897866077 +15197273691 +13928158982 +15122180863 +15828987726 +13996878332 +18578307651 +13949036115 +18544331053 +15109078112 +15115534441 +15880140811 +13693322150 +15164748470 +13662056067 +18542116737 +18816533677 +13663278780 +15827408488 +13611320341 +13685046006 +13913152344 +15177125726 +18859261817 +18822478229 +13696754478 +13613730280 +15147599796 +18897052582 +18876140365 +15128348253 +13633652174 +13695703481 +15129145083 +15102464364 +15138951299 +18585658479 +15875520986 +13921557115 +15836059467 +15834007855 +18569294468 +15123910086 +13682352530 +15805309648 +15833246724 +18541711737 +15855011317 +15876107594 +18828004433 +18509573302 +13993158291 +15101829920 +15850993752 +13636200603 +15830779144 +13944263323 +15192652708 +13631904048 +15823247300 +13964303915 +13902108540 +18815687556 +13962959585 +18595754631 +15838901071 +15883529827 +18505731481 +18847981326 +15146483967 +13699150307 +13964855854 +13965482830 +13628433053 +18546789836 +13905579623 +18540376159 +18533022177 +13936154192 +13944630938 +15825206970 +13600427404 +15806723737 +13952362421 +18810139982 +18516708830 +18841898100 +15180735832 +15190902676 +13632584598 +15887877792 +18824886654 +13993860598 +18850114865 +18591510185 +18888889843 +18831994213 +18598627739 +18577870125 +15165501425 +18520295953 +13943340619 +13606424681 +13682570184 +13603511414 +15121725835 +13603439298 +15189693402 +15138126476 +15880079084 +18509558427 +18506654102 +13670945755 +13691547788 +15163712057 +18508056601 +13615313433 +13657545689 +13972745391 +13641345667 +15842197133 +18887138122 +18573102915 +15872813487 +13680913271 +13989661444 +15878989747 +18541428080 +18543908336 +15120141937 +15171601118 +15872953481 +15192178057 +18829346624 +18508409673 +15858680720 +18837145472 +15105023152 +13695001693 +13957899378 +18536337307 +13676555150 +13989157220 +13978093350 +13679787853 +13909434566 +13635550794 +18804543376 +13654527053 +15840124965 +15816615344 +18518926999 +13622210966 +13978698750 +18587068879 +18538604285 +18588481675 +18525557438 +15171563552 +13645881863 +18521225384 +18586103197 +13613620586 +15830517958 +15193671457 +13924172602 +13934239669 +13679241589 +13637204536 +18533119907 +15198556582 +15155168218 +13959397230 +15151524940 +15877753292 +18848704920 +18898098999 +15129299719 +18564962675 +18560014686 +15172516838 +13981706463 +18827395249 +15863157699 +15119430653 +18852993821 +18830286908 +15817427062 +15864769044 +15823533305 +13609182556 +15878899136 +15160746692 +13967241821 +15121652412 +15153522505 +15109827438 +13914412157 +18595035003 +15140244234 +15130005481 +18818213692 +18820236298 +15181942828 +18851264707 +18590976794 +15886464854 +15840596552 +18834444280 +15182695460 +13674218645 +18811692965 +13909681961 +15137613072 +15137811344 +15800591680 +15134327939 +13674313621 +15853347883 +13644140957 +18810736317 +18505135932 +15863654705 +18872940980 +15808910643 +13927096563 +18580019620 +18504035681 +18895481979 +13995760015 +15116450949 +13968882134 +15110666375 +18886673405 +15125853175 +15122095058 +13661100348 +15100759654 +15145154061 +15828405812 +15803196134 +18830860350 +13902884265 +18549031250 +15885214757 +18879045619 +18539265195 +18804196431 +15142262106 +15889476290 +15854594879 +15820396836 +18586750899 +15883568677 +15140452363 +15826615862 +18891236007 +15812774479 +18853398471 +18895459269 +15177085732 +15815953197 +18549301460 +18865932987 +18544193018 +15122059743 +13654414894 +18825188488 +13687848750 +13637109684 +15143011243 +13931516973 +18821575778 +15815841127 +18574871832 +15852110096 +13996745784 +15160445637 +15848851392 +18519694414 +15190320044 +15815435956 +13933693964 +15835423014 +15197090081 +18531208937 +15895260047 +13982375517 +13611354257 +13951750255 +13613665137 +18503699286 +13900506679 +18535704995 +18540825721 +18591078071 +13685317535 +18584331304 +13925284533 +18881325651 +15144650275 +13987110101 +15877474087 +13642211060 +13950704854 +15850625437 +15145115732 +18572940034 +13927577798 +13912601776 +13633618103 +13621032519 +13646395757 +18829685750 +13914796718 +15894191328 +18582961206 +18888025059 +15133936105 +18836592167 +15150887374 +15125823489 +13644618057 +18874863147 +15876844178 +13908922133 +15168958427 +15133831913 +15175480870 +15175479764 +15178216656 +18515415088 +15139804707 +13989475943 +18575036875 +15851519412 +18549017372 +15823806355 +15142893625 +13925932619 +13620814726 +18888120384 +13669887680 +13691331011 +18582202023 +18501651052 +13999516922 +15150667393 +13985372566 +18804542218 +15835107191 +13970291472 +13605240226 +15862762683 +13911176561 +15824579130 +18802112140 +15155538858 +18873155268 +13693434428 +18820667396 +15872085614 +18525647897 +13942378798 +15865950683 +13635503989 +13687419491 +18815144972 +15885465323 +13630328683 +15123249092 +15149825272 +15866319681 +18506132547 +13639522500 +13627789324 +18837422893 +15183428726 +13695790906 +13930246869 +18529425506 +18509543166 +15848652618 +13641123603 +13965338294 +18812873806 +15869164690 +18574472439 +13934172784 +18806834081 +15883227119 +13934001506 +13615246553 +15815847171 +18593723001 +15123524279 +13617718013 +13615119165 +18857530404 +15198312574 +18848535657 +15877979184 +18509089569 +13957319641 +15823593001 +13994517191 +15827095615 +18810143548 +13981148196 +15870320740 +13947041213 +13613711460 +15188068280 +13635370155 +18820789873 +15813936499 +18503337540 +13907691538 +18586125856 +13999858621 +18801503124 +18809075073 +18896800301 +15128338645 +18569221821 +15125150608 +15833137640 +18825227788 +18823940974 +13965236160 +13647854049 +18545074786 +15170132320 +18516218297 +13695293210 +18844642248 +18509951863 +15805375621 +15864602058 +13628943348 +15809268461 +18575213301 +13953626764 +13902452935 +18516520070 +13691042703 +18843315335 +15180278195 +18532903166 +13649549636 +13922726476 +18532998017 +15890488652 +15171357599 +18593685911 +15136944109 +18885210387 +18889258210 +18516139455 +13943841485 +15151354984 +15878179293 +13937958756 +18843979524 +18527430710 +18866663702 +13642085892 +13923460193 +15172926850 +15169017433 +13659327885 +13687856932 +18818164540 +15894465637 +15887274029 +15823960450 +18554181802 +15833070479 +18875621229 +18593181035 +13684259725 +18866285155 +13653327669 +13954804147 +15129945319 +15163518841 +18560303060 +13618639481 +15181306529 +18810952919 +13903733878 +13612675275 +13998029841 +13992922521 +15802680365 +18815955231 +13902808040 +13946067998 +13952416176 +18871080020 +18883189951 +13934572826 +13603945242 +13656928511 +18598516770 +13663052776 +18594132395 +15816122537 +18544687398 +18896376421 +13622198300 +13651514465 +18555103324 +15894391940 +13950301281 +13998490543 +13909299818 +13684950015 +13653117081 +18866327921 +13955835581 +13623668565 +15184873435 +18564784787 +18832525578 +13913454390 +15820595932 +18522461577 +18813546666 +18506747244 +18503491369 +13966087777 +15195492614 +18835240527 +13619421717 +13664796341 +15892503456 +15860985493 +18879800344 +13987504076 +13617730953 +13615992359 +15180192634 +15873145454 +15141310090 +15860472268 +18822637244 +13622159543 +18584077161 +13658837277 +13960778367 +18500360926 +13642990293 +13606345176 +13958488927 +18514983177 +18872803672 +18851670887 +15897836825 +15145505337 +18533186619 +13679570146 +15824975908 +15134597192 +13928768150 +18810016364 +15831710650 +13985460478 +15144633561 +15164193621 +15851308890 +15834672602 +18857173154 +18840643108 +18882979888 +15160125495 +13656151160 +15129811214 +13993961427 +18832727718 +15170348661 +13645641767 +13604122462 +13988218757 +15899882304 +13962107733 +13691379428 +15154000003 +15835354899 +18530503833 +18811139995 +13977372007 +13661741864 +18524880708 +13923009494 +13624825198 +18529686233 +13986248185 +15110335216 +13946047222 +13619558233 +18532333017 +15815039774 +15198069479 +15839152813 +18804181540 +15898852732 +15836283381 +18529746774 +15809456178 +18832674625 +13929973327 +18520272631 +15809425589 +15813848255 +18813367436 +15874670374 +15883963563 +18520627593 +13639175397 +18869985375 +13937610696 +18865931215 +13901017233 +13964678937 +15152677351 +18878144098 +13625087780 +13631871140 +15171188494 +13620466108 +18531407745 +13653981463 +13990911995 +15151645356 +18579884994 +15818118044 +18522602935 +18802885564 +15199315537 +13600826547 +15136207527 +15897716281 +13950004374 +15115428751 +13962032725 +15164610276 +18563575209 +18555063587 +13683216317 +18855446585 +13996687451 +15108412174 +13933231584 +13620748858 +18583541897 +15186704004 +15890367450 +13967394683 +13647130905 +13615697925 +18873876267 +13638293145 +18885719797 +15852294530 +15115723160 +18855553939 +18550992321 +13612872264 +13994531316 +13606143513 +18825163747 +15801505737 +15109306719 +15149139188 +15152218749 +18536229849 +13642431295 +15186936532 +15197062881 +18815323040 +15132053321 +15827275570 +13640108303 +15128875848 +13676248593 +13970406757 +18859441537 +18805811274 +15807622862 +15178739224 +18876676836 +18815057905 +18523198932 +18579606757 +15887038244 +13674299272 +15859942443 +13612992759 +18801292170 +18594581186 +15103894707 +18814447343 +18511433653 +15137426864 +13661847559 +18849773198 +18816789493 +18506462612 +15896303188 +13653877611 +18855409986 +15120041682 +15811685072 +15174514116 +18548172671 +13985005798 +18503377672 +15830162091 +18520824708 +13906985250 +18840750970 +13687518299 +15100156812 +15133313110 +15120700555 +18843663619 +13982620168 +13676919805 +15130206378 +15854562092 +18800436451 +18545283784 +15188527894 +13654520261 +13968357873 +15175355457 +15165322469 +15125589363 +13907432463 +13682639876 +15875398800 +13650789048 +13610375082 +13993628567 +13996501120 +15118986886 +18539646567 +13925458192 +18530184935 +15897023078 +15851977188 +18523069004 +15873113727 +15886467610 +18570314468 +15195878123 +18890990888 +15192526699 +13964146333 +13988798915 +18583337854 +13985386378 +13988262556 +13924598377 +18517115659 +13930466660 +18853276321 +15861680673 +13664610470 +15185883193 +13939793351 +15883343254 +15122392919 +18517145271 +13927687008 +18882226167 +18887063183 +15873005974 +15151496966 +18819975388 +15152438430 +18858712655 +18580038565 +15862559569 +15834531807 +18871078471 +13919671838 +13916163202 +18885560953 +15852354957 +18573253112 +15842342509 +18885190640 +13686400477 +15870045583 +18574436673 +15862809244 +13965344173 +18801715974 +18838937803 +13970615879 +18828135618 +15820394343 +18866268618 +13956797722 +18870739962 +13934656088 +18890791438 +15100677339 +15184533872 +13955235818 +18563777123 +18541683932 +18596695393 +15883226549 +15872922706 +13669408471 +13653294128 +18860092837 +15112058533 +18888292027 +15871611604 +18517056498 +13949062719 +13995082122 +15174134378 +13654531989 +18577706532 +15801206050 +15801331280 +13665704076 +13974912864 +15146041322 +15817148233 +13678590218 +18806217251 +15171103030 +15833715866 +13907212601 +13912760781 +13945803857 +13976845389 +18884377877 +18891077839 +15842761584 +13640222717 +18826295639 +15862472600 +13629754949 +15835853838 +13698720219 +15131817233 +15835405754 +15884526397 +13609947934 +15846536059 +15874998999 +18597362118 +13637120194 +18834148945 +15816307146 +18530858120 +15852704144 +15164271924 +15897532418 +18817154444 +18846111413 +13953061267 +18574896415 +18801642972 +13992447506 +18527664642 +13627790673 +15868515398 +13991993350 +18505903097 +18580367744 +15124769844 +13956650523 +13680494117 +18572408017 +13654170155 +13654480328 +18539176855 +18576823200 +15182580617 +15178857986 +18595248581 +18513577841 +18851704405 +15823583665 +13698095917 +15155375868 +18527095867 +18813891694 +13957004324 +18813172952 +18837760855 +13610902882 +18544878008 +18512565946 +15867826048 +15170027802 +18552379631 +15803982638 +13660975315 +18583601234 +15190519004 +18843157040 +13990488801 +15883331336 +18878628507 +18833253136 +18562850747 +15832746838 +18849952951 +18830810703 +15124644997 +13972182200 +15103685860 +18504072058 +15101449005 +13931776689 +15169420892 +18524705088 +18861925175 +15899498467 +15154679961 +15177863234 +18599544982 +15800089412 +15104349801 +18571637266 +15854967381 +15801516603 +18823634928 +13652578451 +13973708779 +13904096500 +13928511379 +18561783596 +18552476521 +18876187422 +13673881462 +18870519930 +18578441364 +13982091716 +13662198709 +15840585762 +18510639473 +18844180745 +18502737959 +15877670773 +15818096607 +18587989391 +15173304200 +13673384923 +15169673117 +13979395432 +13956013094 +15101831154 +18867867490 +18847436656 +18558202754 +15863540910 +18867743578 +13606683821 +15860853204 +18573586890 +15152112315 +15147771450 +15170667016 +15816459749 +15163159522 +15168693922 +18558656577 +15871575289 +15818710221 +18552526971 +13627157483 +15881752118 +15172509633 +15132634070 +18545227035 +15196721460 +13983673783 +18519784666 +13653840529 +18577516090 +13994690089 +13940537127 +13663706971 +18547560307 +13691562120 +15874356802 +18856390035 +13695198813 +15110328793 +13913774309 +13982899114 +18519614768 +13937732871 +13918249759 +13969456492 +15885520400 +18878139470 +13643705362 +18848849948 +13984816196 +18557217764 +18817900881 +18865887540 +18500638386 +13936479151 +13930575901 +18583533733 +15147507833 +13948589713 +18548231730 +15173802927 +15159919937 +15897592790 +13654414072 +15840496215 +15128444547 +18871042473 +18871870094 +15898350658 +18578096219 +18570511790 +15866144637 +15113681289 +13909227652 +15159852419 +15126608836 +18516662583 +18880229464 +18548348865 +15805134898 +18562814413 +15887131149 +15176464406 +15891582358 +18851365468 +18504923003 +15892678397 +18567713772 +15102947360 +15857058962 +18551230265 +15886429544 +13693728128 +18552556814 +13610717915 +13687557092 +13930725523 +15830956254 +15135191229 +15885409676 +15826149392 +13664467603 +18836251643 +13995869541 +18895470230 +18517876404 +18511326456 +18893385031 +18821468191 +13682200234 +18527008904 +18889048039 +18840843805 +15818199130 +13655239746 +15187714131 +15875365582 +18547314413 +15188485526 +13943923986 +13907084914 +15831783010 +15157232409 +15882337192 +18545827740 +13671953706 +15877602197 +18533760456 +15806045048 +18526074340 +18513885883 +15194207467 +15113740611 +15145585646 +18824996871 +13620403341 +15114822521 +18505275372 +18866899128 +15140598253 +13681970567 +18531990628 +18899771044 +13657520937 +18880940488 +15101595568 +13987526189 +13677662466 +15132725619 +15136593481 +13963099830 +13634625094 +15161580199 +18804828534 +15158609555 +13663677185 +15130528168 +15891313365 +18563878201 +18815676248 +13631492456 +18512219110 +15141822346 +13685095806 +13961751924 +15102218621 +13944766559 +18582169276 +13628401573 +13626926991 +13949471478 +13920270693 +13951657675 +13929955407 +15161821702 +18815117100 +15185411867 +15828372849 +13602677300 +18842027790 +13607407923 +15862310679 +13631809044 +13650382213 +13612645282 +18542437404 +13651447612 +18599901587 +13648211043 +13910986681 +13645934384 +15868007333 +18813205285 +13676450809 +18547798508 +13637913223 +15815571759 +18824849670 +13977259484 +13694618543 +18535862466 +18856779915 +15889967211 +18834429105 +18824185506 +13619582368 +13605410935 +13969312788 +15174790612 +15800570069 +13909494863 +13996229777 +13671477182 +15876361560 +18820032790 +18596620757 +18508731342 +15806160078 +18865154596 +18541097429 +13670751673 +13928766228 +13617597119 +15140958408 +18888227377 +18894763507 +13656223990 +18894717082 +13671407660 +15167466870 +15145584245 +15162531566 +13624977415 +13699627539 +13647828714 +13653711010 +15881794425 +18845203724 +13617756239 +15829459610 +15831882685 +15197582210 +18545890996 +18844630743 +13991986911 +18881219389 +15817611445 +18823459398 +13987027888 +18533817756 +18825601952 +18861130708 +13648020370 +13656296970 +13992391243 +15898462563 +18531920642 +18590858488 +15160418141 +13667531240 +13988690084 +13670483360 +15828020145 +13678557750 +15122166239 +18856061008 +18578584550 +18515081764 +18508026005 +18871495039 +13677972998 +15862951240 +18563282455 +18567357277 +15898763105 +15166148069 +13936283449 +15857974229 +15177146708 +18869084735 +18514913348 +13963880790 +15184094218 +18817280000 +13917637498 +18815963403 +15811607801 +18545370398 +18836610666 +15158461736 +15166542520 +15125694606 +15167194698 +13686849726 +15125679208 +15100258702 +13950197302 +13997275998 +13618849274 +13986601180 +15198829940 +18855842763 +18839516205 +18852292926 +15181061023 +15124317288 +13959865204 +13979200191 +18501890537 +13680602787 +15803990028 +18548532885 +13988204993 +13997631909 +15117821090 +15844179414 +15157626862 +18890288563 +18894192241 +18829661916 +18518897571 +18548381205 +13918760080 +13648090286 +15864620891 +18815435792 +13612952535 +18818472146 +15162673599 +15114224610 +18560423911 +13944868525 +18577823797 +13609597811 +13962726094 +13956375994 +13980360536 +18582439195 +18827546561 +15160908634 +18550449838 +13901506742 +18833098211 +13647618241 +13635934953 +15156510446 +18839179620 +15141973153 +15174307201 +18844825313 +13902553768 +18813725336 +18868565341 +15125460882 +15846678534 +15818812462 +18512210925 +15192402989 +13644694139 +18555269367 +13640431849 +15882659884 +18528929432 +13910785074 +15815329898 +13928215263 +15864052171 +18896165494 +18542874221 +13918027714 +18542614516 +18898951820 +13666713193 +13971543510 +13614254419 +13622594512 +18509848359 +15108439469 +13937298526 +18888606946 +15132652434 +18597271661 +15175977680 +15145144317 +13689629524 +15885611708 +15824613047 +13938577654 +13977749228 +13632501103 +15815997504 +15127886950 +18897079788 +15861728482 +18528385423 +15194217179 +18519737884 +15192402277 +15808222785 +18809017251 +15153420181 +18506264060 +15893824594 +18501885159 +18826217476 +18835099847 +15839644363 +15809934882 +18584420431 +18583723235 +13937003795 +13612872960 +18592621677 +15823874986 +13626533936 +15805095875 +18825924245 +13988057558 +18807466055 +15866965023 +13994124429 +18527536993 +13938944461 +15156403592 +13950803245 +18542856946 +15196774621 +13637886065 +15856547965 +15815576781 +18588176841 +18845716396 +15860909379 +15852276474 +15889144577 +13665506527 +15148070171 +13600816930 +18570744160 +13935839098 +18510682802 +15842505965 +18574233459 +13630445048 +13609560627 +15803908803 +15885885236 +18829032375 +13965367317 +18587964335 +15141118999 +13627316775 +18536274811 +18871578572 +13602013354 +18540069952 +13629839248 +13933832463 +15835519975 +13921968310 +18881371493 +15814820500 +15196736833 +13654600097 +13621509893 +18549041857 +13680670059 +18892090947 +18801576229 +13931568171 +15176126215 +13635514399 +18550869576 +13975266176 +18862376671 +13603976131 +18591994374 +13636288266 +15890739853 +18847365969 +13637111078 +18558427930 +18559834290 +18595778830 +15186476279 +13658976136 +15101296797 +13687879678 +15861650551 +13937457743 +13939045542 +18556789702 +15885931731 +15896462455 +13948422056 +15862409436 +13681623244 +18544242562 +13672135246 +15830869310 +15835133724 +18511215924 +18513341126 +15846114859 +15877900905 +15867134487 +15191500595 +18885356545 +15156216169 +13932388260 +18825578267 +13969833431 +13953330397 +15807817824 +18566027512 +18875708106 +13638717164 +15805810532 +13996074190 +13693140045 +13977492344 +15119026952 +13657283318 +15191457712 +18892918178 +18887577719 +18511702972 +13970813735 +15820849635 +18855695785 +13648848635 +13611703433 +15834582727 +13645258971 +18578322689 +13695201613 +15877612903 +13668174258 +15115813820 +18867010541 +13615468042 +15170444535 +15199347178 +15838659057 +15852737527 +13927593547 +18898573700 +15166301880 +18880689300 +15107696821 +15180723193 +13663870742 +13975130536 +15178989193 +15873742215 +18816672343 +13650207917 +15146985789 +18513329144 +13909286682 +15157122334 +15842882462 +18815662878 +13667411626 +15899203788 +13610430391 +15880001972 +18520734916 +13950744545 +13670768388 +18551091951 +13956693526 +18816192555 +18586927852 +15171661073 +18581594438 +15865082884 +15184948257 +13638848759 +15107299577 +13936591731 +15891419760 +15842080410 +15852815813 +15806884052 +15824628315 +13677572556 +13964705127 +15174316424 +18806112024 +13624311450 +13622690653 +15804840624 +15100444401 +18566061101 +15813912588 +13904335284 +13986036188 +13682626260 +18840978886 +18801189577 +13978692622 +15892991588 +13974366278 +13674167479 +15122238689 +18806191257 +13977829128 +13906764745 +18882059112 +13975286594 +13681258922 +18533512188 +15889403658 +13687126282 +13679361181 +13979568769 +18818755440 +18520635029 +15804467253 +13906731861 +15182835963 +13954129436 +13688453291 +15147899096 +15842431845 +18573345892 +13947537136 +18835658976 +13656722749 +13962152084 +15871986028 +18503895864 +15101163559 +15805605252 +15857789489 +13995929202 +15817773105 +18525796000 +18523556377 +13909624885 +15153476751 +18807694840 +13987919674 +18562046245 +15887268641 +15864866200 +15809353499 +15145844971 +13668558137 +18513082609 +15826431023 +15131880027 +15874708376 +13622839604 +18872991355 +15159399258 +13685093388 +13948247183 +18841214257 +18508690715 +15144026673 +13647663504 +15871588846 +13609477073 +15819801062 +15149964267 +15111749635 +18862165294 +13634014108 +18807130770 +18582462927 +15869121185 +13657446416 +13907685649 +13693988974 +18532472209 +13634885652 +13654304943 +13962085764 +15158604089 +15815115244 +15876339430 +15137633441 +13683708380 +15114602355 +13956964570 +15185372207 +18887223928 +13627671862 +18879983028 +18813598894 +15187967033 +15858664654 +13620072425 +18508127421 +13962259470 +13628516407 +15855819006 +18813946258 +13972827364 +18510132142 +15100758968 +13976491282 +13680927519 +15136525748 +15873242276 +15129392498 +15103203915 +15842872141 +13640188597 +13604034979 +15166521751 +15800966731 +15887291595 +15831316106 +18541978323 +15878252403 +13685172635 +15145565291 +13923249581 +15845469268 +13674571656 +18535752364 +15174424355 +15858108465 +18813701063 +13686113191 +18561983748 +13672290802 +13672698430 +18844189217 +13955895656 +13696903404 +18866125765 +13950993272 +18544895694 +18564299887 +18573774003 +15118677979 +13629629684 +13955670551 +15884211880 +15156199253 +15802968498 +15824641982 +18804016751 +15139138222 +18872492750 +13945492330 +15163914900 +13680127808 +18537452546 +13618282052 +15840699549 +15172189086 +15846941645 +18887419527 +15899294608 +18899399919 +15801411818 +18534608799 +15836644406 +13689264665 +15134742841 +18506195967 +15121929294 +15126663745 +18558156103 +18867372204 +13644409508 +13967008691 +15811114037 +18822166718 +15803851943 +15879446477 +18569837552 +15834459121 +15169855763 +13940473714 +13900996104 +13929317435 +18591894518 +15155875026 +13912225357 +13663797672 +15146559123 +18587523795 +15811985953 +13625291862 +15138352314 +18874753013 +18885447490 +15151375172 +15146164485 +18855898165 +15163345580 +18837506833 +18590004322 +13668513795 +13672979449 +18517754643 +18855054584 +15116553765 +18552265085 +13930899532 +18579240806 +15834551723 +13629560470 +13914191210 +18535216670 +13635003935 +13909104126 +15196525969 +18522354523 +15158432739 +18531567860 +18883473806 +15831745384 +13967389725 +15836226744 +15825038636 +13605000855 +15166872742 +18854887592 +15832538357 +13606568765 +15154683642 +15163714342 +13942674926 +15893544138 +13995709150 +15819788643 +18579373538 +13650658643 +15190645425 +15877985979 +15830195226 +18502184264 +13641661752 +18820334087 +18501825279 +18520323287 +13632582265 +15888498126 +18882202347 +13941164539 +15125821975 +15182764042 +13698838343 +15882789850 +18552230581 +18546363861 +13688168757 +15832475539 +18521913907 +15106636747 +15196023353 +15198632244 +13954452759 +18586935701 +15180504375 +18539356551 +18850565273 +15853711590 +15883839708 +15827185813 +15159108580 +15860830680 +15812704570 +15108550984 +18898299583 +18896239117 +13983896371 +13998323684 +15114102339 +15863460807 +13689967522 +15193172589 +15133877707 +15868989001 +15141377257 +13945116124 +13678050441 +13948706624 +15112435088 +13660904294 +18804026938 +15827784678 +15173669249 +15191817578 +15139396443 +18508344712 +15184482775 +15828789259 +15147077084 +13916694140 +13638933901 +18574121854 +18885853605 +15869151585 +18849336872 +15197510870 +15124519685 +15834666650 +15877311248 +13649633009 +13601921974 +18553259411 +18812833567 +15139671668 +13975211087 +15820792709 +15820538457 +18811528751 +15859152745 +13940882570 +13966439567 +18868135740 +13978552698 +13960761877 +18507403380 +15815430965 +15839115871 +13602917812 +18513595700 +13994572228 +13940107920 +13932751614 +15835071305 +18874342837 +15114544713 +15872920486 +15886949332 +13645083095 +18581942605 +15863441159 +15881485737 +15857602621 +13953207521 +15145533091 +18839617775 +13609252810 +18558863679 +15195844786 +13667754960 +18810633828 +18576731002 +13660614970 +13993326829 +15862679996 +15817496109 +18598876433 +15187778249 +18821326271 +15851518542 +15161071622 +13618982001 +15846436769 +13933582398 +13990422701 +18587345262 +18854336109 +15886133205 +15186602423 +18836255629 +15163786811 +18863150056 +15826439236 +15182385685 +15825927815 +13661165919 +13953836014 +15838774841 +15856369736 +13660861335 +18523450932 +15140934522 +13918501719 +13618622766 +18580105801 +15808006890 +15800179946 +18841766930 +15818139563 +18576483503 +18886592526 +18575751102 +15140618206 +18887632643 +15105284414 +15876450399 +15862225919 +18842600443 +18809399508 +15163131595 +18529320109 +15816141535 +15182356828 +13645832596 +13972786825 +18579315375 +13605938230 +18553870321 +15149247493 +15802439925 +13632733387 +18513591997 +18541019844 +18895991083 +18873182665 +18502756442 +13927901172 +13924124355 +13666542813 +15863786641 +13996900608 +18853496244 +15892725967 +13902529876 +13679415746 +18885926534 +18864545557 +15877268915 +13679958937 +13640079177 +15194751449 +15835317990 +18806070193 +13963938684 +15196980810 +13645874273 +15129084995 +15124090341 +15111016149 +18506362468 +18585095072 +15874743687 +13643539019 +18818977754 +13991185378 +15168192468 +13993461802 +13629183534 +18564082533 +18878272496 +18804776516 +18848429006 +15115845400 +18885038911 +18868377334 +13973624444 +18845389648 +15811194826 +15872556078 +13685986674 +15172164017 +15820697431 +15105464830 +18506881206 +13977936807 +13672169284 +18520907822 +18501466375 +15861556728 +15128235339 +18597493295 +15145147586 +13922795235 +15187288974 +15851398195 +13971148111 +13651027051 +15890039737 +15825920362 +18849611856 +18867184398 +15876429908 +13642964080 +13641208039 +18557143607 +13627298758 +15853596530 +15860342537 +15139640391 +13626040512 +13920210486 +15142929263 +15892243827 +15180051053 +15853579388 +15115899837 +13644472587 +18507386467 +18512359699 +15812582638 +18529843601 +15821870452 +18543025172 +13937233978 +15198654528 +13619080451 +15850109926 +15157910745 +15805264432 +13915241189 +18812822707 +15898066897 +18568444412 +18529299301 +15126159870 +13952293480 +13610245335 +18829109736 +15165349885 +15151404154 +18890920901 +15880515349 +18876019137 +15199364948 +13694731378 +15146161788 +15118963371 +18569005329 +13950866270 +15117216323 +15899191774 +13959821864 +15115099617 +15139210325 +18517238868 +13953254246 +15840318731 +15809538130 +13680090780 +18531356439 +18887068299 +13904725129 +18874097072 +13949017669 +15104041363 +13913654422 +18592485547 +13910728358 +15849136326 +13950412307 +15199660948 +13615148137 +15197360539 +18851198851 +15147163100 +15134776637 +13926388063 +15814358096 +13606327258 +15851201869 +18530417428 +13962547921 +18806654721 +15175449890 +13961770194 +18512203522 +13942654490 +13921182703 +18554447622 +18539747620 +18843417809 +15809564134 +15153068846 +18564813973 +13627051371 +13965981310 +15830157010 +18536006062 +13651411516 +18534159214 +13948925609 +18551908768 +18551959535 +13919083484 +13697494592 +18827711406 +18860229441 +18836348630 +18592767352 +13913738234 +18868618559 +18898869058 +13619750478 +18828427744 +15135755416 +15830577086 +18861216036 +13921985099 +18585263259 +15809254366 +13647595937 +15876477091 +13674516911 +18569289609 +13996275593 +13939522730 +18884894446 +13692191349 +15131023522 +13690623064 +18532323884 +18513555273 +13635564858 +13697752651 +13643893362 +15132054382 +18580154385 +18851876492 +13948150293 +15105937613 +13681726074 +13916215086 +15199656128 +18575720448 +15875946209 +15197332679 +13964393707 +15851564151 +18813261720 +18840352751 +18519063611 +15805069005 +18826975278 +15865646391 +13606377946 +15124056909 +18845559825 +15817944864 +15182452656 +15118530660 +13954760707 +18543955705 +15125925176 +15837531955 +13999106994 +13925563964 +15138197525 +13686100001 +18897436108 +13668757669 +15105467219 +13641164118 +18825152152 +13954653913 +15831368792 +15869626157 +15822578326 +13675001349 +15175087963 +18883544630 +13643838027 +18541827401 +13672523624 +18571254040 +15860121092 +18804252366 +15127325101 +18548055616 +18824705460 +13973410408 +13987066449 +18581329010 +13948452447 +18565181148 +15829146925 +18523295814 +13973610202 +15831604693 +18543782487 +13682627871 +18518163943 +15195503758 +15174180718 +13617187591 +18581168934 +18526826611 +18846337170 +15124594763 +13612699813 +18582593818 +13947758215 +18867880582 +15884813962 +13954870196 +18561742433 +15173377033 +13631638701 +15889774587 +13914350044 +13995201408 +13648968154 +15883494585 +13617027164 +15893571946 +18552049962 +15179843376 +18869917575 +13655916245 +13687814689 +18506226089 +15840054629 +18854307635 +15897807325 +18873441335 +18864482387 +18584820373 +18513620201 +13956077615 +15119022834 +13980498112 +18826569995 +15849624755 +18865370376 +13923728915 +15139980053 +15140542669 +13910862556 +15825377195 +15135731167 +13968116532 +18869190713 +18517287537 +15188248999 +18809851498 +13678345987 +15136723279 +18803524564 +13618902760 +13670109546 +15116331177 +15827649144 +13667815585 +18863770159 +18587121496 +15181069705 +13634823765 +15190815366 +18560897231 +18843602067 +18868194526 +18898993329 +18552322948 +13693601045 +18504661379 +15148836181 +15111732662 +15141183851 +15106288223 +13603886849 +15808747738 +18506219811 +18589429680 +18562251027 +15896551536 +18510959784 +15879466966 +18881854077 +15800357471 +15101435626 +15887749089 +13958103012 +15117208421 +15841343888 +13987436260 +13657355303 +18890689584 +18824733191 +15809361693 +15159695389 +18894414906 +13981888152 +15843813892 +18502135252 +13649741596 +13625848301 +13633744123 +13687806246 +15859812826 +15822137758 +15130844319 +15102282704 +18882999805 +15839944625 +13956159618 +13634172706 +18859794913 +18569769829 +15156388512 +13928917438 +13955272086 +18855695533 +13967531841 +13927596313 +18506105473 +15820003852 +15887231757 +18543659046 +15119122101 +18840934476 +13982757747 +18804408452 +15895882070 +15826001116 +15111273556 +13914707925 +15132127146 +18581663748 +13998340056 +18583584726 +15159408133 +15805178486 +13654805152 +13972117458 +13620868675 +13659347241 +18828258414 +18811293948 +15824817512 +15868752175 +15812202731 +15836911180 +15802437599 +15810140303 +13975236546 +18858614815 +13604376899 +13972117932 +18591406794 +13935011680 +15166101288 +13921365954 +18806588650 +15193387307 +18885393356 +15168987603 +15162264967 +13676509733 +18500346894 +13623116622 +15129693822 +15163643837 +15134871569 +15109430416 +15857031718 +13601804768 +13663270094 +13907707714 +18596149509 +18539729409 +15114471808 +15168162803 +13699664215 +15162700630 +15128972449 +18833263896 +18881878895 +15890648202 +18554413918 +15866204487 +18810102411 +13936666413 +18565059384 +15141072682 +15114230833 +18570463925 +13968777310 +18517118888 +13979424955 +15133354845 +15823410938 +18812581748 +15154277491 +13955704042 +13927410168 +13693927802 +18596148204 +18831826317 +18577191229 +15894361457 +15101881213 +13952793989 +18577904179 +13632183160 +15887013412 +15879935798 +13648017430 +13677047994 +18529321182 +13656479336 +18588570050 +15118500578 +15127764851 +18584860761 +18864621438 +15136573988 +13990891450 +13620714353 +18553768988 +15149426714 +13678585928 +13697777219 +15135556141 +13945916043 +18835122076 +18872000236 +18808542194 +18554208216 +13937891727 +15167603714 +13614845967 +13650575220 +15829860824 +15167147104 +13601365761 +18837440436 +13927114072 +18845218839 +13616876201 +15819920213 +18559058327 +18824294198 +13940548154 +15101285792 +15850181466 +18528461583 +13685233408 +13934913003 +13930672136 +18824162581 +15876661541 +18541075308 +15849355040 +15801831664 +13923406747 +13923101296 +13975300500 +15125874878 +15173824924 +18860916867 +15131656874 +18538946129 +13655511735 +13688983857 +15885371836 +18575079988 +13994184360 +13947895555 +13916059561 +13954318179 +15892667956 +15834076688 +13958338408 +18551565253 +13956936673 +18887809818 +15883539856 +13662068620 +18821361881 +18812202106 +15122594022 +13682172988 +13685528594 +15800723447 +18875723362 +18815858278 +15122131177 +15163376939 +15186210919 +18867487442 +13929435144 +13937996970 +13603179808 +13677377339 +15121348270 +13650212682 +18809628029 +15896277717 +15111337040 +18855257432 +18828461036 +13940429577 +15837718394 +18837121414 +15108514503 +15196660527 +18524020566 +13626881323 +13938383358 +13622400556 +13637407056 +18816155215 +15104375155 +15840888475 +18528795120 +15810794574 +18508224664 +18500804409 +18864163319 +15881172470 +13985395754 +13612290372 +18870348346 +13903802051 +18579954568 +18841502688 +13686623898 +18888104698 +18586771045 +18512387168 +18542973996 +15110907635 +15184574473 +13975669706 +15129127021 +13671323332 +18524240041 +13905136034 +13954159995 +15145400595 +18577212701 +13947189896 +18877525477 +15130744848 +15189654218 +13960835482 +18886218671 +13918360529 +15119831712 +15194578547 +18536973396 +13686502267 +15172172144 +18832217749 +15857270256 +15852276787 +15113217027 +15872074586 +13977181762 +18862022095 +15108909210 +13958337260 +15822941417 +15887422442 +13958525893 +13647162955 +18540030750 +15893860582 +18579534957 +18515335319 +15898514104 +13626488102 +18517896019 +18884986475 +18885586230 +15194634604 +13648175359 +15839568608 +18531762902 +15812827201 +13907864457 +15197045494 +15107375579 +15127365233 +18848182244 +13697978268 +18582537136 +13944554174 +15833638730 +15835778184 +13925716278 +13671498109 +15133575605 +18534711265 +15196892933 +13639201186 +15140701567 +15868223027 +15193280697 +18876767455 +13915614500 +18599385797 +13956169476 +18593810223 +15131123136 +18854113270 +18851924351 +18843415727 +18505732970 +15199274559 +18582909284 +13694583836 +15825096140 +15871188883 +18898137780 +15871182247 +13647917331 +13987765772 +15137298961 +18853508406 +15146602887 +15111789475 +13633610277 +15119678200 +18557977364 +15158749777 +15108175688 +15168836192 +15868013266 +13947896182 +18554153093 +15123701171 +15108103051 +15128206384 +13610638920 +18831529937 +13979860739 +18581747357 +15130747224 +18898510904 +13616015975 +18551788487 +15823203490 +15139674585 +13640297897 +13920326092 +13644642799 +15106945242 +18532876713 +18508696137 +18871176893 +18556811319 +13941717762 +18549257589 +18846693303 +18879733063 +13915819017 +13911822437 +13979966671 +13646226751 +18570351707 +15140079297 +18580704956 +15145165503 +18507486277 +13618519868 +15114447617 +18571947048 +15844660295 +18564721695 +13909927218 +15176724214 +13660413320 +15132876950 +18597685424 +13912029772 +13630491736 +18595354527 +13985173484 +18554471008 +13636593038 +18533999392 +13632475840 +13662484291 +15880644676 +18817185641 +18522219802 +13958369218 +13661967152 +18540609455 +13623061084 +13913359402 +13927673392 +13652912634 +15874933824 +13625021057 +15843770692 +13644816009 +15808163565 +18517992014 +18805724396 +18889368745 +13930535654 +13648617056 +13978182309 +13962231698 +15141258159 +15872341470 +13972115897 +13662800686 +18829902252 +13987300785 +18808428719 +13611170144 +18822807535 +15838871981 +18866696160 +15831464021 +13608961088 +15197271302 +18862146871 +13627982465 +18507328021 +13948312152 +13906788551 +18886051754 +15835332107 +15842538906 +13627290952 +15102046003 +15811098960 +18525112265 +13916102754 +13699874161 +18581269807 +15158619186 +18840987341 +13654390204 +18589618264 +13983815651 +18568838979 +18536128364 +13668304070 +15199546061 +18577394851 +18850503409 +15193829165 +15895740183 +18895822464 +18568200989 +18524137171 +13985704014 +13651253940 +15196352188 +13629993524 +15172036165 +13954410824 +13929322258 +15178259804 +15157297167 +18877359344 +13998311050 +18572574497 +18589009860 +18830996517 +13940601650 +13914887172 +13690083944 +15144874691 +18525101371 +13649929715 +13657278694 +15878257095 +15836965933 +15170308209 +13693855439 +13941444006 +15807807446 +13956956789 +15870465086 +15142937616 +18852350558 +18885203560 +18888383633 +18885065732 +18551481923 +13633258703 +13957712667 +13682095556 +13926556001 +18513978013 +13922761853 +18850022888 +18891290747 +15838732406 +15115438501 +13932435675 +15838261525 +18881469560 +15814672090 +13655004573 +13622748012 +18520143624 +13663583265 +18569380009 +15844094152 +13643520156 +15853127643 +13673102036 +15158999256 +15103833368 +15829337015 +13635500837 +15127603972 +18540350711 +15854613376 +15138763720 +18595251185 +13685114302 +15183472603 +18524112576 +13618707781 +18858419286 +13944765658 +18503002279 +13665947302 +13651509545 +15166981471 +13688190763 +18533753742 +18599427915 +18859820088 +18550231349 +15808430465 +13931633749 +18819088956 +13994225225 +18825548370 +15889451730 +18836350656 +18831736250 +18842585285 +13677722496 +15113539179 +18575896736 +15849843567 +13631613815 +15889873422 +18898610644 +15152893786 +18511296748 +15848330578 +13679733795 +13927745547 +13907290202 +13616465352 +15867253411 +13648145655 +13989942418 +15828585477 +18581173141 +18540383909 +13697633841 +15841040175 +18847275806 +15835879408 +13691438074 +15129738746 +15872315432 +13612956198 +18894389834 +15865848703 +15807306986 +15832043096 +13663313207 +18852340501 +13686657105 +13655658157 +18854164165 +18541702256 +13620626460 +13931992522 +13601191223 +15175273952 +18809235439 +18818010611 +18889249355 +13929723364 +13981659559 +13685546432 +13930665172 +15106565973 +15197650752 +13693206876 +18539760409 +15162703708 +18820457637 +13994046251 +15891863274 +13967700813 +13963350945 +15166170845 +15842742058 +15860001109 +18547647091 +13629958265 +13608163457 +13903939953 +13980376377 +13956524837 +13900816436 +18887714047 +18559053420 +13975646775 +15809681927 +18508853324 +18508496654 +15800314550 +15115875538 +13927801565 +18515026089 +15860501698 +15113299130 +13983216747 +15887208058 +15814575501 +18807187750 +18577859423 +13901382710 +18823525671 +18875687892 +13944796497 +15886359098 +18858217784 +13668877881 +15841871325 +13993386535 +15885428565 +18828389784 +13971446126 +18520993761 +18822112227 +18547432437 +15194455014 +18872823859 +15812121981 +18565040442 +15811481875 +13975608797 +18597979680 +15112149758 +15846678006 +15813805263 +13638828167 +15837102806 +15813364341 +18551782124 +15845161086 +13985576648 +13945367643 +18503973902 +18822148587 +15827574468 +18543202654 +18882958327 +13941369497 +15821300294 +15809981197 +18522209126 +13931167278 +18828825818 +13998032558 +13628396063 +18889792053 +15156700406 +18888423130 +13932799630 +18568442434 +13618944271 +13684997941 +18835054291 +13919333828 +15119445159 +13993620115 +18819219440 +13921533730 +18564090518 +18557820623 +15195204450 +15816530400 +18880376728 +15850423995 +13975021787 +18877055365 +13654226021 +13916140382 +13903578717 +15137276305 +13975841299 +18826609347 +18556174921 +18881475790 +18529199850 +15184364035 +15854787902 +15194844824 +18804871810 +18589991422 +18511388263 +18884348813 +15869433365 +18550030469 +15812611120 +18864252025 +15105609006 +18885116696 +15193624295 +18897509676 +15891519597 +15102587094 +15822774604 +13609512131 +18562447437 +13660764908 +18587165464 +15866457032 +13668118954 +15135160738 +15882762038 +15810501701 +15160481234 +13612078317 +15109884336 +13643620458 +18595311996 +13961765454 +13624985799 +18569550005 +13980643323 +13662813446 +18812181826 +18898676187 +15168365155 +18506535009 +18862311211 +15111666182 +18521570006 +18819348837 +13635260624 +15181657697 +18527275223 +15198907715 +15101230346 +13637519060 +13626433976 +15162293955 +18564409596 +18536009288 +15164313032 +13934348417 +13941097600 +15837277345 +13665795833 +18555106989 +18813525897 +18899935731 +15190209288 +15848798876 +13685390807 +18863991198 +13676112747 +15825307441 +13919588635 +15815342979 +15156625349 +13909108399 +13669456462 +18517090961 +18571115980 +15877207922 +15112142855 +15804629382 +15132469810 +13918490594 +13939336515 +18840283949 +15881725817 +13606769571 +13977838408 +15837738709 +18848970163 +13692778975 +13943731768 +13941774394 +18826213390 +18816255505 +15804620782 +13985576083 +18546829657 +15103592302 +15197186125 +18528223863 +15163089828 +18823832644 +13631409750 +18858993808 +15893364574 +13954464370 +18825987848 +18834321382 +15812400927 +15153802554 +13960902987 +15158525867 +15160369756 +18801752848 +15808992167 +15872521818 +13997101664 +15864063936 +18890617839 +18517823978 +13954998775 +13963722272 +13610883781 +15888431367 +18815570068 +18859070407 +13623395122 +18521201968 +15878728065 +18805905498 +13639851640 +15189027208 +15180174982 +15889481657 +13654901535 +18899161843 +13662942923 +18503514077 +18805606799 +13988630493 +18515745878 +13942954285 +13676038438 +15110778454 +13931758905 +18879386755 +18585399602 +15841172819 +15181557308 +18505845365 +18852164927 +13666012989 +18509380272 +18814252008 +15877617726 +18501965248 +13621439215 +18880786034 +13625624855 +15183191758 +15819692445 +15811531864 +18836613454 +15156997940 +18806097257 +13642383777 +13672249654 +13965592357 +13606408826 +15835436936 +18828567706 +18835123822 +15821874946 +18513179546 +13699009548 +18803638109 +15804839799 +18521219760 +18893041452 +15890906638 +13926102566 +15150774933 +13606374900 +15115860810 +13931366652 +15119736211 +15810504192 +13990007782 +13648395835 +15138681496 +18560482539 +18557229346 +18817151710 +15839205137 +18838053440 +15841630467 +18873763640 +18827055519 +15153643008 +18507670811 +18547880374 +18574243226 +18530534486 +15826037642 +18509334365 +13694676294 +15103957063 +18576779808 +18876550773 +15854257937 +15105528920 +18515822750 +18562419016 +13903395981 +18535718820 +13608273458 +13699942046 +13917631497 +15121064618 +13665047014 +13991638373 +18820845788 +15119725057 +18501660169 +18826452052 +13943999386 +15866434980 +13603425038 +13943136019 +13947935702 +18579003618 +18884611897 +13983706197 +18841518364 +15141861603 +18877046961 +18564929270 +15152996397 +15181264460 +18857831721 +15171813361 +18809089498 +13607801841 +15121525371 +18504945841 +18866888265 +18897350884 +13696363109 +15132758047 +18826625268 +15821699191 +18898079569 +15190619460 +13698146749 +13652334076 +18577091592 +18899758959 +13623270261 +13630235016 +15803319376 +15129349798 +18823737978 +13933268802 +15889767984 +13919425456 +18894025741 +15107510272 +18809099530 +13917823255 +13681826989 +13997566416 +18550752817 +15101156259 +13671103462 +18857763343 +18829657913 +18515705632 +13992050718 +18898755722 +15183627821 +15845960111 +13630834937 +13631267508 +18555697784 +18586624223 +18851115841 +13640334116 +13656151763 +18501881619 +18584407479 +15175284259 +13638500091 +15161348759 +18885474074 +13637360961 +18846028374 +15891074412 +13918239366 +18533475688 +15882062842 +18544516907 +15829803821 +15109326316 +15176399928 +15125043975 +18867493360 +15849244025 +15874165972 +18808247730 +18511901691 +13601591776 +15856413278 +18545812603 +18858472060 +18525911215 +15108738974 +18841944311 +15849484311 +13681623670 +15875855117 +13927869633 +13950053612 +15880432582 +18855127412 +18576040493 +18549694232 +13974122703 +13662862109 +15174209550 +15140018296 +18509452791 +15897342366 +18848698910 +15188689250 +13693671669 +13687940782 +18853101858 +18551008756 +18883757439 +18584772697 +13940085342 +13622672050 +15895130888 +13974651535 +13639736170 +15828134945 +18816472789 +18887607151 +18866895230 +18800897173 +13609224295 +15860670375 +15832243234 +15125568338 +13987005674 +15837063587 +13915703109 +18522245144 +18566187822 +13601393165 +18851331653 +18540462115 +15134036642 +13640601059 +13929173709 +15804299803 +13633941364 +15110980425 +15138420360 +15121546504 +13942122470 +15881182539 +15194862871 +18585333448 +18515665670 +13940103748 +13629315131 +18886724830 +13977679094 +15142915422 +13695178120 +13952144237 +15817473380 +18560705289 +18519174688 +13957168969 +18588459363 +15853748774 +13645514911 +18553553843 +13680540705 +15115155659 +13912294906 +18859964958 +18848431472 +13908512587 +13931422807 +15133201435 +18502421198 +15824515170 +15111149903 +18878470271 +13684116702 +15185859561 +15869177036 +15125673914 +18577278156 +18523291286 +18820962129 +13670126173 +18825573862 +13908712217 +18529408371 +15876425289 +13662168609 +18584744087 +15103929219 +15108602577 +15899922303 +18827712895 +18817674642 +18564814848 +15879545592 +18866997529 +18567646746 +13952908976 +13646676304 +15187476778 +13912972116 +13939774627 +15159375530 +13674698199 +13920664287 +13928897337 +13908064116 +18554561452 +13933266145 +13981284716 +15821540244 +13604053930 +18558588131 +15109773227 +18853263010 +13922327527 +13630746375 +13685593198 +13908593211 +18521847012 +13999246786 +13938666280 +18860581866 +13604519429 +18589319666 +13985657302 +15163362692 +18512956440 +13627559185 +13698858762 +18806525429 +15882690191 +15842887851 +18574532152 +15158854286 +15852473043 +13676282118 +18808980065 +18848058300 +15881234455 +18593986537 +15803021435 +15880654715 +15896821752 +15120238462 +18829462334 +13679473193 +15186161055 +15879851171 +13621329593 +15120566257 +15184041373 +13930720844 +18816844578 +15123863569 +15172350374 +13661052795 +13683375059 +15111517916 +18861710414 +13681244323 +18877980260 +13948481900 +18860529827 +18574100685 +13924619477 +18882310668 +15828692325 +18856414294 +18861490188 +18510457458 +13929874384 +15106106817 +13990398324 +13968034254 +13973730262 +18887165425 +13683071177 +13636536047 +18807723422 +13980226841 +13934043107 +13605381952 +15848419951 +13641496783 +15180438646 +18877992240 +15887850081 +18523568516 +13995408105 +18552818336 +13667499920 +18513080356 +13669292175 +13655759847 +18550451256 +18591431125 +15867632018 +18547431133 +13948391428 +18859202995 +18519189619 +18860359734 +13969459403 +13632444228 +13987155100 +18542257971 +18590130453 +13953725811 +13603524297 +18847974548 +18544488862 +15804202269 +15839658957 +15149547616 +13900390162 +18583566504 +15100336547 +13687262713 +13656657111 +13939672664 +18548820498 +13691155933 +15165044008 +15825286147 +18807607509 +18845224624 +15174456569 +13941291929 +15163584501 +13903001188 +18878010057 +18856313467 +13672991949 +13657751812 +15815345341 +13629650477 +13983710162 +15853004634 +18546139759 +13977806440 +13608440437 +15868363968 +13959482211 +15849881674 +18514426520 +18593730468 +18567166951 +13636615521 +15859499588 +15847867454 +15144195934 +15814716803 +15195281245 +15109874400 +13632151001 +13679956048 +15164149966 +13644829243 +15886607213 +13971152685 +15136349315 +13952901522 +15177539658 +15892881113 +15177723302 +15838576899 +18865252834 +13999691377 +18890751996 +18861642097 +18836590048 +13614198827 +13923211739 +15160475502 +13961017668 +18533152628 +13603596702 +13616556767 +13674221117 +18503198425 +18524692421 +18893588885 +18500885297 +13682939718 +15179776630 +18824981903 +18582929763 +18511947349 +15184969020 +15164916346 +15176107640 +18819956336 +18517308029 +15162694563 +18556480106 +15151176895 +15868876791 +13926909435 +18874854063 +13638847165 +15881572077 +13982685738 +15884802078 +13684294154 +15826509128 +15144221266 +15829727450 +18507206271 +18849576836 +18546474841 +13641528819 +13686918579 +15805021012 +13934907485 +13683078569 +18830943974 +13926397739 +15874091563 +18531112897 +13675014992 +18566203352 +13687659781 +13986198079 +13911683059 +15131806861 +18859377526 +13642589885 +15864175768 +18563346756 +15189600243 +15872373439 +18842724459 +13924820368 +13672546917 +15849179948 +18890506355 +13975558008 +15136487581 +13622627222 +15814239218 +15882985394 +13647314467 +15100014059 +15148607335 +13916529782 +13928371577 +13935939266 +15847885319 +15824108862 +18512714719 +15839462812 +13911096113 +18869757757 +18865142233 +13941088404 +18806479665 +13966287854 +15166693062 +18812920745 +18570415954 +18821618016 +13969850745 +13950420271 +18830475631 +15159538836 +15841743152 +13617829614 +18825663891 +15867819304 +13965161217 +18535359752 +18874299659 +18527832408 +15864777017 +13637114813 +15162088564 +13922696874 +18836311715 +15807996350 +15175030656 +15865077553 +18854968805 +13632499005 +18860417054 +15887944644 +18878670032 +18541277058 +18804106324 +18539808913 +15180430285 +18843614312 +13964298507 +18800337932 +13933045086 +13631435334 +15853475946 +18814395577 +13637936453 +15877020880 +15168232567 +18509604985 +18840996674 +18531053981 +18509097782 +15124096051 +15815944677 +18830457632 +18877703401 +18811582063 +18871984809 +13907842753 +13674074734 +15100394719 +15164567039 +13637798806 +15190096905 +13676242544 +15829505748 +18868496222 +18520661847 +18878776385 +15167213983 +18849437828 +18545505865 +13631629037 +18593412829 +18886746409 +18849918993 +13997667324 +18840014415 +15845050264 +13901258921 +18575942416 +18521609694 +13634183972 +15106941709 +18563249437 +15840128714 +13682541377 +15125404160 +15809212967 +13906391075 +18806428225 +13984085983 +15143811891 +18550197632 +15827198058 +18532269292 +15863695970 +13925353095 +15870397440 +18554837457 +15859312916 +13918466362 +18883182322 +18524072000 +18811724738 +13653087411 +18567640914 +18875255455 +13924312304 +15119966786 +18536018501 +18801269033 +13671669435 +13699805441 +15893362992 +15152917772 +18878680768 +13627121354 +18867252486 +18816370374 +18579347644 +15871622322 +13624750775 +18889503568 +13684366186 +13970810447 +15196949141 +18898367700 +15156902734 +13911585884 +18565270326 +13642531157 +13657667699 +13946811576 +13641540377 +15843693636 +15178730485 +18876317061 +15836758095 +15896516108 +15833414873 +15817494109 +18877188221 +13645671253 +15160617222 +13659446282 +15116543805 +13969618351 +15830801649 +15879749976 +18870096291 +18840383582 +18866661621 +18500630013 +15826946977 +15189314406 +15840628532 +13610833621 +15868565542 +18591443795 +13909732107 +15117121579 +15185335505 +18522356325 +15834169814 +18542295729 +13903292083 +13667111044 +13992498487 +13988006733 +18519659123 +15878518684 +18803986016 +13663359883 +18846737588 +13984291577 +13699305574 +18598385639 +15116019448 +15134008019 +15840736486 +18839035350 +18583010383 +18564554399 +18511424612 +13916961565 +18818056009 +15157218387 +18531013935 +18598700363 +15841030741 +18525375173 +15149430436 +13653840482 +13601790769 +18816398888 +13902247796 +15199645082 +13909714705 +18539603808 +13974154535 +15871361456 +13980467972 +13904201289 +13992734287 +13634354936 +18571382074 +13960127488 +15811089742 +15817662682 +18869381105 +13696353738 +15164378522 +18502471493 +15110073175 +18854796030 +18558809285 +18585602461 +18804316237 +13687767496 +13972681722 +15109818169 +15134203457 +13673793953 +15869707295 +13618215600 +18572332227 +18825932933 +18862768467 +13634138098 +18585928755 +15852835965 +15829757693 +18587027455 +13922909266 +13656652760 +13680608456 +18554034755 +13611641652 +18871621365 +13608681626 +15173681076 +15821573535 +18549771498 +18842762918 +15150915416 +15172288021 +13945569959 +15130268575 +15816927000 +18523408319 +15838170087 +18533125170 +13603172666 +15891093718 +18825439488 +15118527104 +15160146948 +13665111391 +18594341115 +13992658825 +18812664041 +13624627905 +18576622976 +18807945907 +13962388732 +18848381093 +15822009799 +18578364165 +13643934351 +15135268929 +13901617948 +18568317929 +15859819055 +18598977549 +13995965042 +15883907168 +15801609409 +15820285060 +13644790479 +13999988595 +15843200481 +13972696549 +15803662329 +13619605268 +15172350156 +15812888743 +15811892301 +15801255719 +18531066988 +13625839304 +18820002451 +18844545786 +18804708101 +18575176814 +15149369623 +18555114458 +13932000668 +15187823442 +15884649197 +13650105615 +18538521285 +15175442746 +13960414313 +13921118635 +13913772881 +13677332849 +15899737546 +13650821487 +15129461889 +13677757453 +13643815341 +13969590995 +13652760790 +18859962240 +18582983746 +13988724781 +15147246617 +18806711587 +15137726642 +13946507595 +15886001065 +15877977147 +15829908827 +13971527780 +18833469443 +13672477653 +15885900861 +15851878430 +15805389179 +18571182206 +18542518997 +13682342954 +15108949467 +18880085774 +15895141614 +15134435527 +13636006089 +18526743648 +15822646579 +13977679788 +18858090702 +15166562863 +13672388691 +15151242406 +13668484880 +18891815382 +15104561325 +13653300483 +15180212233 +18885994652 +13927843298 +18501253351 +18809314415 +13634281333 +15190189425 +15193512169 +15145377737 +13698848847 +15816679762 +15124371156 +13694766534 +13989116496 +18561284728 +15872764124 +13688449796 +18581774829 +13928777896 +18561110790 +18843354253 +18858857040 +13601858684 +18517899129 +15813571766 +13679081722 +18596864995 +18535524291 +13614234152 +18801716871 +18554150913 +13610698763 +18819024135 +18867855608 +18822083429 +13631101443 +18535733245 +15134732402 +18556484479 +18547921414 +15103872906 +15169538373 +18821135216 +15811885263 +15811203988 +15812551855 +15878795267 +15135288751 +15147053805 +18824249658 +15168072636 +13997352908 +13909964661 +13632994440 +13632416803 +18591823084 +15888195840 +13923519553 +15865339804 +15890104153 +18567234987 +13679329709 +18872932444 +13696742217 +15162614391 +13997398231 +18546769608 +18526045519 +13600955591 +15885022709 +15834993071 +18599292478 +18846621751 +13947745124 +13969034427 +18840351195 +15164729122 +15842626238 +13943229478 +13900500468 +18500465158 +13976543467 +13614602483 +18843000660 +18554124130 +13641732546 +15135639380 +13638720402 +15809091651 +18584103946 +13936857473 +18516175899 +15803332203 +13624617142 +13912329808 +13679380656 +18535098754 +15836592957 +15849597397 +15867337375 +15894661700 +15150397346 +15818754363 +18813108656 +15861535974 +15802796936 +18594521359 +18845188394 +15875902581 +13606178183 +15160210802 +13659955913 +15122344173 +13667224098 +18810659971 +15139262499 +18812731055 +13984238022 +15160872431 +13621686711 +13621206900 +13641717530 +15199257766 +15184872922 +15881361428 +18563637312 +15852023405 +18577565185 +18861206085 +18852453416 +13677158640 +18809695275 +13698561720 +18595308175 +13987896617 +13628403429 +13965009954 +13933015403 +18890760550 +18804626791 +15884951768 +13962287175 +15888297702 +18591023843 +15128118401 +18569101778 +18511453678 +18883640698 +13963454306 +13653599683 +15125168439 +13696716417 +13984103475 +13973660003 +13692674891 +15861227283 +15107866795 +18859560373 +18842572267 +18805400342 +18883679731 +13964841112 +18521503519 +15178683163 +15890185574 +18509949974 +13901151871 +13628316285 +18521344035 +18881943977 +18834299131 +15196242326 +13603274382 +15875970330 +15824808509 +18837362735 +15802757442 +15133174343 +18556208470 +18890298618 +18555042445 +15849376229 +15834028339 +13607872915 +18594980058 +13697824656 +18535277621 +13957049200 +15131584830 +18548204974 +15849264173 +15185380465 +15878018031 +13613495008 +15865420611 +13956743351 +15182693275 +13646339733 +18535887314 +15144919037 +13939994348 +18899259160 +13601724855 +13669030407 +18539739905 +15830585240 +18592708955 +18856606884 +18884102676 +18596288934 +13971112073 +13959266655 +13640976930 +15186411022 +15146486827 +15815669555 +15156593840 +15146672621 +18838650035 +13971190764 +15888911089 +18586865609 +13680605040 +15880467022 +18875057348 +15857688672 +13987383663 +15815192917 +18560143946 +13975188878 +18809907192 +18559309536 +15142656295 +15891698461 +15843513509 +13957908801 +18546583513 +18544495105 +13970704993 +13954689394 +18871170440 +15118988415 +13695496429 +13669797942 +18880346969 +15118433348 +15847905632 +15179437594 +15825303748 +18543208005 +18514738879 +15868594865 +18521416527 +13937353249 +15806169440 +15829038438 +15107404661 +18555705522 +18867489018 +18852767381 +18565870408 +18868002785 +18521273151 +13668820754 +15171108397 +18598043084 +13988804843 +15163387654 +18882867580 +13603100373 +18583675193 +18858888290 +13664871904 +13913734757 +13986487852 +18597101361 +15818717867 +13983051108 +18846097434 +18545745480 +18866050290 +15815504735 +13933192144 +18520844164 +13664905468 +15149974539 +15883436258 +13635405843 +15816527744 +18874873172 +13995134435 +15110415942 +15119316998 +18848020875 +18863339907 +18826002979 +15846547421 +15157734191 +13618962745 +13955594965 +15871825866 +15888870835 +13660554108 +18511430421 +15806665577 +13631124789 +18871174660 +15189965619 +15142000943 +15874676054 +18864530660 +13691737605 +13916492621 +15157083422 +13948957267 +15816245353 +13967236646 +15889189819 +15889924428 +15851725568 +18502426949 +18813972897 +13637370178 +18863042534 +18588727694 +13917071850 +15811616285 +18519114518 +13604633349 +18812397419 +18556694025 +15806410327 +18564045677 +13642660607 +13680607330 +15836420027 +13934809054 +15125969895 +18516403560 +15837622659 +15840289824 +13677217303 +18867959993 +15186000249 +15123918555 +13922895267 +18813004038 +18503198843 +15891612979 +15178779764 +15135594152 +18863897331 +15196045586 +13976619583 +15806402936 +18523330877 +18871379440 +18816966391 +13648085565 +15154119483 +18536258853 +18824575001 +15876894382 +13644395767 +18895588266 +18521109720 +18878697176 +13632373453 +13655280778 +15864775121 +13608262381 +15817512515 +18839374248 +13995984086 +15843166132 +13910461435 +15142278094 +15191161513 +13975433841 +15804542882 +15112133139 +15876490354 +15176263598 +18857185024 +18593835088 +13992681149 +18846645985 +15821879985 +15861346073 +13943567671 +13676550805 +18579050044 +18896268706 +15826977226 +13995375162 +18881272654 +18533652115 +18504125911 +13670534451 +15849718335 +13627229075 +13693928409 +15103728429 +18533401229 +13905787963 +18570530417 +13940393510 +15839808318 +13617802990 +13979174876 +13989826254 +15894709518 +13603112428 +13952977580 +15172957951 +13961158995 +15814862155 +13630580801 +15183396071 +18592615742 +18821087163 +18514934551 +18565947019 +18837202531 +15880824222 +18836155535 +15194987939 +15181453007 +13653727330 +15819691054 +15198726563 +13933197460 +13624573479 +13667718633 +18825827053 +13997595250 +13689163891 +15153417337 +15178547237 +18507278934 +18572263653 +15829286424 +13600566761 +15107165880 +13659020432 +18873598090 +18874784184 +13616415854 +18819859175 +13665896912 +13677985746 +13650010613 +13619269004 +15108818187 +13648242350 +18875834749 +15890429519 +18591396718 +13986555168 +13950197057 +18568353743 +18844077138 +15871175931 +18539509075 +13901461531 +15884240709 +13976572905 +13964030221 +15159215114 +18554418063 +13910560878 +15113391381 +18806829923 +15171993359 +13626067864 +18853827604 +13999726364 +13698602286 +15145062947 +15871768067 +18591851189 +15896391897 +13625595285 +18897620413 +13907744721 +13903741416 +13608934582 +15195910421 +18578138711 +13699004491 +15105368375 +18893050716 +18804169027 +13609452589 +13632690827 +18892054482 +13640851686 +18507756787 +18543071881 +15157854909 +13926363990 +13695729532 +18557167796 +13942846304 +18596754728 +13900694337 +18590766171 +18842130046 +13964809204 +18579926526 +13614215478 +18570300772 +18535264271 +18598470020 +13620905730 +15885915691 +13671542788 +18813757274 +15168306962 +18511663756 +13604916136 +18522297470 +18860401490 +13684523849 +15835710280 +18579301684 +15162754746 +15121263316 +15172420974 +18596035342 +13955526525 +15169858993 +13698200725 +18844044823 +18525625527 +18802412389 +15872215385 +18553564561 +18866757743 +18856902887 +18889068296 +13926611878 +18563577489 +13930082847 +15879298437 +13903790947 +18561103690 +15138986262 +13921536179 +18573270132 +18810144183 +15111223952 +15196166412 +13922790856 +13619752432 +13936523438 +15138237262 +13620152691 +15867012985 +13665554786 +13651212804 +15163959915 +18866004924 +13993502271 +18570965725 +13620778888 +18863193237 +13640693402 +13676568532 +13969961533 +13644144190 +15896364156 +18835011809 +13979587953 +13636307599 +18515669936 +15135935005 +15823171741 +15851945802 +15843847796 +15898657555 +18813314081 +13671261629 +18843933776 +15163911796 +13919557917 +13629759668 +15129854241 +18826416569 +13685372509 +15151697850 +18825977100 +18536633073 +15898852363 +15173430295 +18569312434 +15153323488 +15168281993 +15121157675 +18534686362 +18554187075 +15873625724 +13919507244 +18584020899 +15194621640 +18822469718 +15180073906 +15813522777 +15170373666 +13987753768 +18565158030 +15198741585 +15108840226 +15139434145 +15165706240 +18896112805 +15186950078 +15157461157 +13691395690 +15885737213 +18802577168 +18583064775 +15130568663 +18821303876 +15117655071 +13959760876 +13990823504 +13662513670 +18893938636 +15894711663 +15815457618 +18527195262 +18537302507 +13601328691 +15802607662 +18879219785 +15880000014 +15120815511 +13921029527 +15193641212 +18598269900 +15120297125 +13627174694 +18833166276 +13965390853 +15834392189 +15123606941 +15113197802 +18549246703 +13918997463 +15149183436 +15832091858 +18824959022 +18529585312 +13636633940 +15848479789 +13614608725 +15175348927 +13975399643 +15842407269 +13987604570 +15820699692 +18546275639 +15826711998 +13643298517 +18570463960 +18817599958 +18589815332 +13912356905 +15152280245 +15171971121 +18883131675 +18580351418 +15888290198 +13604497099 +15181815715 +18859016231 +15119709584 +13643387515 +15874275955 +15144697780 +13917318232 +15101616311 +18578372200 +15884760732 +13608595716 +13927284639 +13927863886 +15101722358 +18819339593 +15819024987 +18846900246 +18894128487 +18554903533 +15849928003 +13607721257 +13652661010 +18567395963 +18836320984 +18866333997 +18525918888 +15826111854 +18598968111 +15109040226 +15116789409 +13995852451 +13606187758 +18568551100 +18551564808 +15150995091 +15120516332 +18853820343 +13929749800 +13676041355 +18849372388 +15159988535 +13939949104 +13676872241 +15834123331 +15163691613 +13668861010 +15859604065 +15129322966 +18509371128 +13992412340 +13966479663 +15159553992 +13650155290 +18590023478 +18506520939 +18895262687 +18827232898 +18827635423 +13674949693 +15174299260 +15870188520 +18865502083 +18557145260 +13698634969 +13670263536 +15128258173 +13625192994 +13683912447 +18544871337 +13923401104 +18542386087 +13694683499 +18850213220 +13646183430 +15135263396 +13999970228 +13900084968 +15894427185 +13971428126 +13928494415 +18574865344 +18555068409 +18801129834 +18527014021 +13690134234 +13645409259 +15895628349 +13907328869 +15817244231 +13668534225 +18576526496 +18589125281 +13686189232 +15803917362 +15129838590 +13616289767 +15896770404 +18512620138 +13938044348 +15887356207 +13900291406 +18513187014 +13602422598 +18570502441 +18856957190 +18540944014 +18517355699 +15134336519 +13958252405 +18838186905 +18585947499 +15168495455 +13681991325 +18814079252 +15172338485 +13678127568 +15185765795 +18845981760 +13962258573 +15879345526 +15173457221 +13648365037 +13987017117 +13989531752 +13602360545 +18898294825 +18888694847 +18851600550 +13679013328 +13630614535 +18528537334 +15867391105 +15872096861 +18597827259 +13994272675 +15892987551 +13617639557 +13695930249 +18503693988 +15853211045 +15837921467 +18849556403 +15167023638 +18880258712 +15141992299 +15129817426 +18806084964 +18565325166 +13621804533 +18575644278 +13662436199 +18542267868 +15811424666 +15838427317 +13920317366 +13916862183 +13686030053 +18503506603 +15808398336 +18504647234 +15818095091 +13983397415 +13624777082 +18856665983 +18585840438 +18535988589 +18567324061 +15890884796 +13647732501 +13679842331 +18567281563 +15148295921 +13980234237 +15153330634 +18550434158 +15826697946 +15145521006 +18584452907 +13675747007 +15149734814 +15169592099 +18806670283 +13644366794 +15875698587 +13952900805 +18849699212 +13673523182 +15101947992 +18857500592 +15142412328 +18840488964 +15155774156 +18894787686 +13963118803 +18862261896 +18574564504 +15132898772 +13617753683 +15821727735 +13686637900 +15121201753 +13948324099 +18568226193 +13624824905 +13905233237 +13658036598 +18557590549 +18566457662 +13642868926 +15810665593 +15826859690 +18599162017 +13955143262 +13928857519 +13913697721 +15887660673 +18841600125 +15888950026 +15837313886 +15186741493 +18840618567 +13917153153 +15854597051 +15820277305 +15155671726 +15105200659 +18517129691 +13619042928 +13670676721 +13654188627 +13946102767 +15111561941 +15860935215 +15883304050 +13652398762 +13694417333 +13969489204 +13630578149 +18866608832 +15187509237 +13903189960 +13936371844 +13686985360 +15864598413 +18865983621 +15828434864 +13954500652 +18544810647 +13930230480 +13610647469 +18503442411 +18891181564 +15104878836 +18542867559 +18838217130 +15180832722 +15801607888 +15161742042 +13625028444 +18542678885 +15124523847 +15161075002 +13926530867 +13962417038 +18803572387 +13919001088 +15863983861 +15117792462 +13685778331 +13629649297 +13920988936 +13656912503 +15131397777 +18833393631 +13608646156 +13911929942 +13654130219 +13616781982 +18505617282 +15895741230 +18536867628 +13900672366 +13953177297 +13970300164 +15194347123 +15838515719 +13691306928 +15843399991 +18899536562 +13951247281 +15863337532 +13995106739 +15862782647 +13644985748 +13934531550 +15854407160 +18538040409 +18582016930 +13928621038 +18542740451 +18831743086 +15116749283 +15842525383 +18849791421 +18566126848 +15177588335 +13601031076 +15815656089 +15888668331 +13647765002 +13940616167 +13680783112 +13919666676 +15119310661 +13693699017 +15186722982 +13681071336 +15811286151 +15864920062 +15802348541 +15871924935 +13684661937 +13932587842 +18802209645 +18570311724 +15849404457 +15160546857 +13640760469 +18523162996 +13675983719 +13607812218 +13930544347 +13603106999 +13607381780 +18889098365 +13996521144 +13932521499 +13621690596 +13670499481 +18547996885 +18587098672 +13919534307 +15195914790 +15871954096 +13626666853 +15832247224 +13621435077 +15129254218 +13958162640 +18564010378 +15160819175 +13994121207 +15864732568 +15186160174 +13676790309 +15830086659 +13986036280 +18818488858 +18816733534 +15847306225 +18810568441 +13978385448 +13642580411 +18542804314 +13975838897 +15848252427 +18865632876 +15179707544 +13961623557 +15824617754 +15819609705 +15894472383 +18884950020 +15878052733 +13920988905 +13905584686 +18859627317 +13689904603 +15177702517 +18895160395 +18819821498 +13640180987 +15178268706 +15185356307 +15818703370 +13682008844 +18569622545 +13653320773 +18860202995 +18865538195 +13606328001 +13629850234 +13644217710 +18851728489 +15172896777 +13601157252 +18539220348 +18559860454 +18541443638 +15120707261 +13633095385 +15823728655 +18527147126 +15889216539 +13666895734 +18505993795 +18549439845 +18866380679 +13959164105 +18571369614 +18591577467 +13923265252 +13951667789 +15867423371 +18857900706 +15125960363 +15180513590 +15850069560 +13983155945 +18842052307 +15133013912 +13605454511 +13976015192 +18851326462 +13942954389 +13620236996 +18574570427 +18532516073 +18865174894 +15167108783 +18501826279 +18844944104 +15139542415 +18575132478 +18804064297 +15890240534 +18598199603 +13656377049 +13602435368 +18872376609 +18528874949 +15836829188 +15104676455 +15187028444 +18500695281 +13649749902 +13684625256 +13697727873 +13932565881 +15898249482 +13930803534 +15800701111 +15828103715 +15178201611 +18531772847 +13915895799 +13936478356 +13667983148 +18874456717 +18504457432 +13944142853 +18536045622 +18580684070 +13631618611 +15847721138 +15817393422 +15148641504 +15187857925 +13903700876 +18894113281 +13654929973 +13648422715 +18516190266 +18509481654 +13950391286 +13907178883 +13979499773 +13937700298 +15800414976 +13677357299 +15138596144 +15886055038 +18560271480 +15176563192 +13974075072 +13933434920 +13966031009 +13665580510 +18591567300 +13679774291 +18847977027 +13617753610 +18507664992 +18548976134 +13986365155 +13904844675 +13631083308 +18523231946 +13611566981 +13933458079 +13998908878 +18510404017 +13962567790 +13690069322 +15164583590 +15851325939 +15147037180 +15848073899 +18841144690 +15870452648 +18842264420 +18881953418 +18500575697 +18837374923 +13983879802 +15139744533 +13997243153 +15892658240 +13980146504 +18869095414 +13967463353 +15886236573 +13993950977 +13673216355 +15127397577 +15183174958 +15853626038 +15867265393 +15862812618 +13945066748 +18588788575 +13620833644 +18826011175 +18894640264 +13682294910 +18514471391 +18547948099 +13634998362 +15155858180 +13987700449 +15865146002 +15836357738 +13694006400 +15143782653 +15170518922 +13630706390 +13951896837 +15877578594 +15157355390 +15894081365 +18584987329 +18877090903 +15127168215 +13647536884 +18591727607 +15151528009 +18530027948 +18879719026 +13908442944 +18579971302 +18879693685 +18890655715 +13605862058 +13684872434 +13974796975 +15128876438 +13602053747 +13655997439 +18865175404 +18872645378 +15868360579 +15137562507 +18858131391 +15872251051 +15814855769 +15860395288 +18543023954 +15184706236 +18556136212 +13678061167 +13682041376 +15142960427 +18542955058 +13951560132 +15842377138 +18804137605 +13606706788 +13919413080 +13999643087 +15189068871 +13632103532 +13934140064 +18853676114 +13945743343 +15851516373 +18878412757 +13605288669 +13600830687 +15831753602 +13921666233 +13934146819 +13905952145 +18820743164 +15878406025 +18820216593 +15886053394 +18830930776 +15850426594 +15185340835 +15809223175 +18515121359 +13691428484 +15148262042 +13656203478 +18516978895 +18887024632 +15108087090 +15861756860 +15829457729 +13681780069 +18526620456 +15808972535 +18868525543 +18579778176 +15162899202 +18811852185 +15845331046 +18846558503 +18595402395 +15809755816 +15190593895 +18836096756 +18582077423 +18869530937 +18549589803 +13687827069 +13932726840 +15129470862 +13648140637 +15885205039 +18831360455 +18534611797 +18583480319 +15189356132 +15109000940 +15879000416 +18534706988 +15188691688 +13964316962 +18863472010 +13626728753 +15804608780 +18866450240 +15870028831 +18881941098 +18582569696 +18572840767 +13930824877 +15123467829 +13632056028 +13685355599 +18887508019 +13994826120 +18886070447 +18808405164 +13625922882 +18535704020 +15800096984 +18502360824 +18841670492 +13606867143 +15157738994 +18843083919 +15168772734 +18865899704 +18830104966 +18821779052 +18541240562 +18892434872 +18841936556 +13603578721 +18524797989 +13984360516 +13675866712 +18598831666 +18535160409 +18582089149 +15813188662 +15100776569 +13615137193 +15192026523 +15187440788 +13939814997 +18833838352 +15806600890 +15152142392 +18860682972 +15113515414 +15136737029 +13657134336 +18821960800 +15841472272 +18886757326 +15115550143 +13622086372 +15898781019 +18575267815 +13902565548 +15190881950 +15845192872 +15882425560 +15197626073 +18598869927 +18566087265 +15848907504 +13615255318 +13960945881 +15125460898 +18855760152 +13930516448 +13901518074 +13956527002 +15162251902 +13977905346 +15110470134 +18884324386 +18518126318 +18566359298 +15857771886 +18575775474 +13662720054 +15196023626 +18568785491 +15121473640 +13917969586 +13640542939 +18890519537 +13993575244 +13635265261 +15109192943 +15147836038 +13910392939 +18808871066 +15850554954 +15876400216 +18515003064 +15810236644 +18871031722 +15827991979 +18827276567 +18543252105 +15852330509 +13920365580 +13659947501 +18556994109 +18847799491 +15114700464 +15884682906 +18549860596 +15174061524 +18835907968 +18897338312 +15805463950 +15117102403 +13978486250 +13644120391 +15866136955 +13693473289 +15123481569 +18515871225 +15804120476 +18521484219 +18505819533 +13974798901 +18806867557 +18863279038 +15164144054 +15866826717 +13912456721 +15170721631 +18801869432 +18510178464 +15147643069 +18599679156 +15187407637 +15193805969 +15129789479 +15156450596 +18553228943 +13933125912 +15840722052 +13967244986 +13637246535 +15893172479 +18521448553 +13642781935 +15113047291 +15115745185 +18820151678 +13928329511 +13931288792 +15146987586 +15826274747 +15146557494 +15840475362 +13603793125 +15161658151 +13630452146 +18806683793 +13667845759 +13602528141 +18597406886 +13697117980 +15132941921 +15112503327 +18552051100 +15839695432 +15813853610 +13650074870 +13990558079 +18575662479 +18845502520 +15830943444 +15100906378 +13607550573 +18555568976 +13646217553 +18554076513 +18852472073 +18506673972 +15106550216 +15839347560 +15859012553 +18882675633 +15844704190 +13965690913 +13622119426 +18552755118 +13965949374 +18599285908 +13631502445 +13613943419 +13664816668 +13972547057 +13984630769 +13911296938 +13617452217 +15140330175 +13948520235 +15107022160 +13939853770 +18856004217 +15831549570 +13677537054 +15869872932 +13983231365 +18593678933 +15848615530 +15142536143 +15888373595 +13966062318 +18875751975 +13956976727 +13623983809 +18541504640 +18568024449 +15142105121 +13901775841 +13963612277 +15865022995 +18592894648 +15894963114 +13943515909 +15117803759 +15197985220 +18504887871 +18802782719 +18562000309 +13989651550 +13696946716 +18876127750 +18512747067 +15887247134 +13607320763 +18541642564 +18518407521 +13957614258 +15808756535 +18537929337 +18837040288 +18597495646 +15198565075 +18521678316 +13937481041 +18500169197 +18585282013 +13652982259 +15130804821 +13916513206 +15844426802 +15871252260 +13908116998 +18862686747 +18877445612 +18509818786 +18852719181 +13623795968 +18855290908 +18867240888 +18523417231 +13618507574 +15821536589 +13629650666 +13689099886 +18558866440 +13984126700 +13953079939 +15122424141 +15827879126 +13638757515 +13633387869 +18869397494 +18829261087 +13685988163 +13945241087 +13660125322 +15148899052 +18875347405 +18864217588 +13970258624 +15197430926 +13939405228 +15846106764 +18520028133 +13986680571 +18560784637 +15112297227 +13681853192 +18825179670 +13637285851 +13691163964 +13985050494 +13612968454 +18876681283 +18891288897 +13657204528 +15198322947 +18594193780 +18881633856 +18556757307 +13974282294 +15890846818 +15100624429 +15127486303 +15176740059 +13639921325 +15889517664 +18594691651 +18806835037 +15141827996 +13623705192 +13643237387 +18590426446 +18574768763 +15108524707 +18828384800 +18518521555 +13604602278 +18525128839 +13991207939 +18882698163 +18807315260 +18538566917 +13646925989 +13609789401 +13974220330 +15161202270 +15150318393 +13958743285 +15149919634 +18805263590 +13908385415 +18834444211 +18534711162 +18554129818 +18844604900 +13910607805 +18868666932 +15113472209 +15167345712 +18864017371 +15141478156 +15836407680 +18857772048 +18516103566 +18502163298 +18830344760 +13658405158 +15165274932 +15120424381 +13926325251 +15182648510 +18515480960 +13631620073 +13634419167 +13656186385 +13994591036 +15192019890 +13979834502 +15195545768 +13699461355 +15858515692 +13691316542 +13998773515 +13665129528 +13943172348 +13943645724 +18874073063 +15102685927 +13987978419 +15811012068 +13620224205 +18541241277 +18836150240 +18539748987 +15864724279 +13974397758 +18850598840 +18522516972 +18870824819 +15128533873 +15161049685 +13654876149 +18596344410 +18508613691 +13618542317 +13992703469 +13626274636 +18568901222 +15832323534 +13941224628 +18892589165 +15106130056 +15852211537 +13990992026 +18867824891 +15149159030 +15150716171 +18848750696 +13978971852 +15105604341 +15170925988 +15800688662 +13920540655 +18507141879 +15189884426 +15117668588 +18810739540 +18540421888 +15161848840 +15891693524 +15146365184 +13923544531 +15891716476 +18564654920 +15891332873 +15854252261 +18858911109 +15810479344 +15177925897 +18533246776 +13603489644 +15848359912 +13676404021 +15109061149 +18858495146 +15899093763 +18501001502 +13686462104 +18891883143 +15892285780 +13636684104 +13685102540 +15192049744 +18566135163 +13658147499 +13660428237 +13640340139 +18858242824 +18540981557 +15806332708 +13645735060 +15172955749 +18545092937 +13965485939 +15863293132 +15190428389 +13682140502 +15867033190 +13614503730 +13912851763 +13930159068 +15162383810 +18500466296 +15884350874 +13991210188 +18504238481 +13940859827 +18882072355 +18846925711 +13643510534 +15139655612 +18519987996 +15188261560 +15147841635 +13639498724 +18856951817 +15853635319 +15887160570 +13975231716 +18862063463 +18864641568 +13942399089 +15143399896 +13967203660 +13929576408 +15898261383 +15135465942 +18566239423 +18801112195 +15872728511 +13920464797 +13633915145 +18577825554 +15897309971 +15134855620 +18539570435 +15898164172 +13671138287 +15185125724 +13966835083 +18514053710 +15873130331 +13904962788 +13673826590 +15161365189 +15128705154 +15188523192 +13967174740 +13630256566 +18500314713 +15170129639 +13620020565 +15148990930 +13929981716 +15800506942 +18828300727 +13932694785 +13628361587 +15864553560 +18804099161 +18851001151 +15176937032 +13667959856 +18829750155 +18542831465 +13650201659 +15119128863 +15140088202 +13931175591 +13628947936 +15895731537 +13977103095 +13675625245 +15849346285 +13684000011 +15805676181 +18573808311 +13685125479 +18887946418 +18801025038 +15834218139 +15856584591 +13602087699 +13979603359 +18813230831 +18807959503 +15151940000 +13904462768 +18597315754 +15874438357 +18890125598 +15874264537 +13998080141 +13617218894 +13952776928 +13689470643 +18534401576 +13943842312 +18840693850 +15170083490 +13630510163 +13608812510 +18592035205 +13961963225 +13975023606 +15168335315 +13961963395 +13693590737 +18504596711 +15165581746 +15869639475 +18877071272 +13693353077 +15801105164 +18873897941 +13671397899 +18847864277 +18526874239 +13937923632 +13686592061 +15819636849 +18516494501 +18593466404 +18568458774 +18530766430 +13637551103 +18536357058 +15899676252 +13671716935 +18833661313 +15822261377 +15893516880 +13628140000 +18566016123 +15869583425 +15851700054 +15888629454 +18505152011 +13677460779 +15143573748 +15167019974 +13676317364 +13908556545 +18514663072 +15151480190 +18529635150 +18840290446 +18855654949 +18560480950 +18863848555 +15810510228 +18546922425 +13629389906 +15874534115 +15198189873 +15871024022 +13632151478 +13693340053 +18805909565 +13913350037 +15826545821 +18596815928 +15831391046 +13925210900 +13664703993 +15863424038 +13625371991 +18569691287 +15148501705 +18804868106 +15187464353 +18508924068 +13646439948 +13911212139 +15886558816 +18505436649 +15824050469 +15102448133 +13631194297 +13901843263 +15838007308 +13663880863 +13697946757 +18872365222 +15161999219 +18509197059 +15187516170 +18865120930 +15808843647 +15169243865 +18822963163 +15122081271 +18517535992 +18817485749 +15849122296 +18885050536 +18593492213 +15104215574 +18506785738 +18536089662 +18813177186 +15816206616 +18586564984 +18553382767 +15126321855 +18806343048 +13971373225 +18899124567 +13605972603 +18585409324 +18855566188 +15130593176 +15142594236 +15815490511 +18559961014 +18846222100 +18554325698 +13643917724 +18585876180 +18806098464 +15894128548 +15853822160 +13906420118 +13934846115 +15897262183 +15100625657 +13639943284 +18855293476 +13679741178 +13636593989 +13634054064 +18830424637 +18862685445 +15860108322 +13941074481 +18504270411 +13683923351 +15125100649 +15164751961 +15804899831 +18819798560 +13918354203 +13905120018 +13926629672 +13930037280 +15810995123 +13676112526 +15808922727 +18838768804 +18590508037 +18836537072 +18865472117 +15154436793 +13635324958 +18565550207 +18847271034 +13613508795 +18832905492 +13926064487 +15153446007 +15898991558 +18814406757 +15802733380 +13994013112 +13663561205 +15145313072 +18861200625 +15845849230 +13911422266 +18855324668 +13603067962 +15821809196 +13914562907 +15101244213 +15120902563 +18873717656 +18802742840 +18544064443 +18599553223 +18560364724 +18589696126 +18567859466 +18500317650 +15111625310 +15115164278 +18516051743 +18533766836 +18582170424 +13936326601 +15169443173 +15814426280 +13900182941 +18518553596 +18871592596 +15161357742 +18822048270 +13681855347 +15195325235 +18829423377 +18505890346 +18569933855 +18535709737 +18575595534 +13958592172 +15165170399 +18850568565 +18507461923 +15823220609 +13695591571 +18593855580 +13964685696 +18844522279 +13913753476 +18573190177 +18536292589 +13611841629 +15897957422 +18562604814 +18572399274 +15851173488 +13996826922 +15823859863 +13624927381 +18535392393 +15883137002 +13967801548 +13912299523 +13900424435 +18857942519 +15119247818 +18528207355 +13990077182 +18571922652 +13621881066 +13985952879 +13932735054 +15852179945 +13645139591 +15894145861 +13982528254 +13993792895 +15882786546 +18522785068 +18813394787 +13630340590 +13931614479 +13978544606 +13990450044 +15194838565 +15152429876 +18811505613 +18867983477 +13600756467 +18816124674 +15176865418 +15188451344 +18841893082 +13641457795 +15119587990 +15127556097 +15162038831 +15136244993 +15129370084 +18507090001 +18535410011 +18810702821 +15833076525 +13659578080 +15883252285 +13698530233 +15171284209 +15170512283 +13963077289 +18829249278 +18579845162 +15137417527 +15810761786 +13902311966 +18835117023 +15854766447 +15843778232 +13695440618 +18590374910 +18862802002 +13631835811 +15876030621 +13600010483 +15856727279 +15889065561 +18528517861 +18828142975 +15877348252 +15889601656 +13931969577 +18567996928 +15137042180 +13600739679 +13948281625 +15822102795 +13989008427 +15838280965 +15162156501 +15110777670 +15842243063 +13634446065 +18878013359 +15844917781 +18877788350 +13923033226 +18571035933 +13909591351 +18890598227 +13627554216 +13651955091 +18846625434 +18858720593 +15170230640 +18812101456 +15115510712 +13993935087 +13913390337 +18551354319 +18526213807 +15859155973 +13695474162 +18577687206 +13636387997 +15127989665 +13981568125 +13986072420 +18853835504 +15817766330 +15191705112 +13925644271 +15892738542 +13641174933 +15109829108 +13973856191 +15859769632 +13902677261 +18823653121 +13698628378 +15882023173 +18521101737 +18511575092 +18553944119 +13911352993 +13905298487 +13954075646 +15195679988 +13907105238 +15196367923 +15802160445 +15108626543 +13664682200 +15814251336 +15897223030 +15809126772 +15843277917 +18530639808 +15152551654 +18529491062 +13662112733 +15813435494 +13634474854 +18873515111 +18572581782 +15887256719 +13989529397 +15160953755 +15833915763 +18877233884 +13672146694 +15144989229 +18863306752 +15196870508 +15150842252 +15805360825 +13609714561 +15883807838 +15829966056 +15116474607 +13909305029 +13923642008 +18566754127 +15848840534 +18812666966 +13932013668 +15840771316 +13916524200 +18868175052 +15829369274 +15176946683 +15823192192 +13994845241 +15817317922 +13695271322 +15824837103 +18579459016 +15876836858 +15105924534 +18514973539 +18800617744 +15832321128 +15829047681 +15807791469 +15809543594 +18844695125 +18892957435 +18526646676 +13989726291 +13645980999 +13656363217 +15197618674 +13652495538 +13620119102 +15862422299 +18830804428 +15185713406 +13919371077 +13921881581 +18552714353 +15107296474 +18508770579 +13605144248 +15812790197 +13647819503 +15189070995 +15831289021 +15173694317 +15199118146 +18584410293 +15866526925 +13921880202 +13671144057 +15837719011 +13690158841 +13979622314 +18817555729 +15832037845 +13953101635 +18593449707 +13691801562 +18876469619 +18547942039 +13666343211 +18517430041 +13652067490 +15803423555 +15890306607 +18840320178 +13966478412 +18563646568 +13600495439 +13903723654 +13934567064 +13962443475 +13979987979 +13646539061 +13965041648 +13957892262 +15824800094 +18530358564 +13696611445 +18589603584 +15119645647 +15843812750 +18597853800 +18848010582 +18816698121 +13687359908 +13684916797 +18886318951 +15117872644 +15893371915 +15142321213 +18819824501 +18832650737 +18864679670 +15860094205 +13601786051 +15185370030 +15171492815 +13965775648 +18814613636 +13676363733 +18514419557 +13665295332 +18884273049 +15124429375 +13961841154 +18892568767 +13907605989 +13611188334 +13647472120 +13938646765 +15894296810 +18560084300 +13987182566 +15850035914 +15134416645 +18593807751 +13696196052 +13967742138 +18894527322 +15103232567 +18580193844 +18526700774 +13631843406 +15115119905 +15863650638 +15178948334 +15871191319 +13980065276 +15193237398 +13645546163 +13634324392 +13640059563 +18507854638 +15880017949 +15812230502 +13962708650 +13909190165 +13633018242 +15822396556 +18596836853 +15861387479 +15880936195 +15801799535 +18837797200 +13902945728 +18807276373 +18591586479 +15873904092 +18876918675 +13639369177 +13913740995 +13909471263 +15104602629 +13654032923 +13944093767 +13913145078 +18513170225 +18898387283 +18546740513 +13971925830 +18545077215 +18599802529 +18819364002 +18830932980 +15136149779 +15134949046 +18563976061 +13920021367 +13948960735 +18529485224 +13965757066 +13993352420 +13926161920 +18857066289 +18877063807 +15821562657 +13986372533 +13972274528 +15184286851 +13679910443 +18553663309 +18803821515 +15148524804 +18834744817 +18889073861 +15830496925 +13952745797 +13688976609 +18555312316 +13649153445 +13684102248 +18861310240 +18823916691 +18583497913 +18589314041 +18870270378 +13688303617 +13996483748 +18558460521 +13652765538 +18891227793 +18570162641 +18567353812 +18822670021 +13680412078 +15826586607 +15123457235 +15852676770 +15887642269 +13979940931 +18545404837 +13658492722 +13659202789 +18514728588 +15814334164 +13628327091 +13604630057 +15878617110 +15849686055 +18812679680 +15141486336 +15146364625 +13673139715 +18841160157 +15197961024 +13936994011 +13986966538 +18821783447 +13956647379 +15125821777 +18861374655 +13661263208 +15118553617 +15856647816 +18579765325 +18869744885 +13929489816 +13908003650 +18857571184 +18819757189 +18568245384 +15847533412 +18560710953 +18888857670 +13619799891 +15147073128 +15826556536 +15132893852 +13916906576 +15155055871 +18824342253 +15196794091 +15145212774 +18888488656 +15861449101 +18812750207 +18893059312 +13920958259 +13917405864 +15893747638 +15109094121 +13904407188 +18577496147 +15181907650 +13677237031 +13943886772 +18855661384 +13971150052 +18536907712 +18804416397 +13683168244 +15137321002 +13921424832 +15823990988 +13954787543 +13982629343 +18858556777 +18522430461 +18896951929 +18855040505 +18883937703 +15133084113 +13996865900 +18587569712 +18597490050 +18815793870 +18523013386 +18890477782 +15851272043 +13637252638 +13962228460 +13913842753 +15151061444 +13999337329 +13933763066 +13952030764 +13998307048 +15189208816 +18539314957 +18555374622 +13684363812 +15804988476 +18854428163 +18597590719 +13961673207 +13609356143 +15861652707 +18528387000 +13965903817 +15146625742 +13952348189 +18825129717 +15147475602 +15818181063 +13689151060 +13964166983 +13933622780 +15110082346 +18844497508 +18539370477 +18885734556 +13958121252 +15163196259 +15886182325 +18890233974 +13613152430 +15146124072 +15819137086 +18830543850 +18532634313 +15823213272 +18848990213 +13664109946 +15811588279 +15162063665 +15862645985 +13930515841 +15816218946 +15176584089 +18824969512 +15875597891 +18597754767 +13996423360 +15171617210 +15157882972 +13921027109 +13688179127 +13910316054 +18526396961 +15862887417 +15134437764 +15137916571 +13649051394 +13639419629 +13618673637 +18803063102 +15123706011 +15884683675 +15114821245 +13984173547 +13692434612 +13665841913 +18855455338 +15832680027 +15886216571 +18820526019 +13955889868 +13929759470 +13962470768 +15176278632 +15899629385 +15812738908 +15175077261 +15857942159 +15887868646 +18590059281 +13940550219 +13954564720 +13919680330 +15823839853 +13981368276 +18576318315 +18549426447 +13900233841 +18516112382 +13622351423 +13653877475 +13660844103 +18543632731 +15878698115 +15116903280 +13934059589 +18551552622 +13917050527 +13922695790 +18598103130 +18595960208 +13674605727 +15195170156 +13619503831 +15154829487 +13905766052 +18514391001 +15124835545 +18863901223 +13653212047 +13980097765 +13994417381 +15890118161 +15187068645 +13972466540 +13643239164 +15187014771 +15153038670 +13992999806 +18861724654 +15199323698 +18826477840 +15160918420 +13667011851 +15828034830 +13686885389 +18574681153 +18865576461 +15103399257 +15825571209 +15877111892 +13972390120 +15812890065 +13689617942 +18820871271 +15104507034 +13608772653 +13614560716 +18877542750 +15110666576 +15108485847 +18849030016 +13655269194 +13967754922 +15187368506 +18545304452 +13904385010 +13995489536 +18892918891 +15880050738 +18567400305 +18544271822 +18598211269 +15146026960 +13641376647 +15872539421 +18876187724 +18872551060 +18867141410 +13995140484 +13623334444 +13975802934 +13624132982 +13954426181 +13688264623 +15133474960 +18868208432 +15838407950 +13663499525 +13979741096 +13651396764 +18593398321 +13683638039 +15195007454 +15812999509 +13698356678 +15830953320 +15850327953 +18877360144 +15810323836 +15199184321 +15811842554 +18508442320 +18859297746 +15122751651 +15881982726 +15153901820 +13659389187 +18882558376 +13677739868 +15160468058 +15146915119 +15868394281 +13660837246 +18513371452 +15122087583 +15105065598 +15871759967 +18880513321 +13955832556 +13919971766 +18590194770 +15883425546 +15853583553 +15852495819 +15828624589 +18528549757 +18847671295 +13974312165 +13645978662 +18850206705 +15895904890 +13652806196 +18834717301 +18835062239 +13990263228 +13988651471 +13628460853 +13608273528 +18885452901 +15898375708 +15168980365 +18589809477 +13600375425 +13986224232 +18574986905 +18892628229 +13910049841 +15800857019 +15816689974 +15169879436 +18842958482 +13654479830 +13632404314 +13933453001 +18514865309 +15834145954 +18592673331 +13920129371 +18864452233 +15829716551 +15859375206 +15809293263 +15895837126 +15844711841 +13609424475 +15192058771 +18803004985 +18599072114 +15115186274 +15819561096 +15868094850 +13920781339 +13672184935 +15866773902 +18806503665 +18560842412 +15897349487 +18506743668 +18563785275 +18818742775 +13993224139 +18855516603 +15869705680 +15886494487 +18861849246 +15179094562 +15836959538 +18515834787 +15188822381 +13944171428 +18584997539 +13965114781 +18869460535 +13961182027 +18884578271 +13978324242 +15848480106 +18539251584 +18849220778 +13631469818 +15817800329 +13659523162 +18821300761 +18858929445 +18553842407 +18816760480 +18899120555 +18520004294 +15887715688 +15833429887 +13954285410 +13691358317 +18558209357 +18845364094 +15884895536 +13634197542 +15882201403 +18808145115 +18586697007 +18572323961 +15827785590 +15124279472 +18557234393 +15146648741 +13908945312 +13974066175 +18884650139 +15186027145 +18805758889 +18828709693 +18858472616 +15107440136 +15174958567 +15160198749 +15113366880 +15142163074 +18545846155 +13953674298 +15115954858 +15844342347 +18883970171 +15163300864 +13908756121 +18858124849 +18520314639 +15863266541 +15804728123 +18588108141 +18542324009 +18837688376 +13672111427 +18516588592 +15144152479 +13999931979 +18502962042 +15839994279 +15802828665 +15167254239 +18877531286 +15804503366 +18591986136 +18880425082 +18834560961 +18881089612 +18526369015 +13995347740 +15885625325 +13917525775 +15831736730 +13982102368 +18528444477 +18556854617 +18523838947 +15152666852 +18862475592 +13647181162 +18850927132 +18533774888 +15850835091 +18883796234 +18506494192 +13999795025 +15868811590 +13968473104 +13640643201 +13962466202 +13699614993 +13645827973 +13900796911 +18822363899 +15800248644 +18841211870 +18860020851 +13626266312 +15849544046 +15896688233 +18804122353 +15857490153 +18819363263 +13963467269 +18547988452 +13936259843 +15857679934 +13910979365 +13958899350 +13971715603 +15823342003 +13935843650 +18853868475 +18595030982 +18554681239 +13949447727 +13609653087 +15168294948 +13973757718 +15865242873 +18829432503 +13914695248 +15120206792 +13976700083 +15874275898 +18564699964 +18806339097 +15165824348 +18534546070 +15863415570 +13915830957 +13979463056 +15159091173 +15817910229 +15802880651 +18825911551 +18541900933 +15830360615 +18536588701 +18545563100 +18812352382 +15103777587 +15120247400 +13997889810 +15188601496 +15875602463 +13667015448 +13662817050 +18840597599 +18823637706 +18871036951 +15112947515 +15807244741 +15131771202 +18546818501 +15107626229 +13600846667 +15884849368 +15856543823 +13904990194 +13918112045 +13958759726 +13651266199 +15841420075 +13916564744 +18804966237 +15809718951 +18870571383 +18839879281 +15819991204 +13975945773 +15840221365 +15136407422 +15116381834 +15138628576 +15133330108 +15142321945 +18598036289 +18535184359 +15193568819 +15129858439 +13990408237 +13989356934 +15129182915 +18896829754 +15195118034 +13674523587 +15161116741 +15812105319 +13688592954 +15881007094 +13947949721 +18898089081 +13972743285 +18800125192 +18596220489 +15104401973 +13951847997 +15172340404 +18881498469 +18804231917 +13960065439 +15168286645 +13674456153 +13629958626 +18882740750 +13913744570 +15875493016 +18861576599 +15847441881 +15101272266 +13667457584 +15844939704 +18801041010 +15834941928 +15137999530 +13916958835 +15188484822 +15898586304 +13947894755 +13619938558 +15845086775 +15106116715 +15167142228 +18596939872 +13668560475 +13968408714 +15878912664 +15168316370 +13918820313 +15880288778 +15883019925 +15815410053 +18591867368 +18842361532 +13950566784 +15123007767 +15101676140 +13669792486 +13943524986 +18841517175 +13944621464 +15839039950 +18558020602 +18517353497 +15826480798 +15875084063 +13662519560 +15849509401 +13938360885 +13917735820 +18854055512 +18588088981 +13604206937 +18865847045 +18546676858 +15829087859 +15172482763 +13935117963 +15847055504 +15844860352 +13973557937 +15876895140 +15151609007 +18827106605 +15861680516 +13643484687 +18595351636 +15132145561 +13613928452 +13920961614 +13969632032 +15195778578 +15881806024 +18590159807 +15136996251 +13626685419 +18824429556 +13685905785 +15877360787 +15105057988 +15898060824 +15805152847 +13609810265 +18537127334 +15134999683 +15836115445 +18827829093 +13690279275 +13941777486 +18567458974 +18869459583 +15881169845 +18508765316 +18511799190 +13980751577 +15187327189 +18521980910 +13928954056 +15809556903 +13944404742 +13602638714 +15897787957 +15152167173 +13950528848 +13919597962 +15897351356 +18528795274 +18560776154 +13919706250 +13655666549 +18857819027 +13689165645 +13924039225 +18873577525 +13607742740 +15848858035 +15174733342 +13939529270 +18893202910 +13620788678 +13686781646 +15103593187 +18853995512 +15830735686 +15882360166 +13913858075 +15190996658 +18845340029 +13921604052 +15833354698 +15146309226 +13983910408 +18825423119 +15876847947 +15133198680 +18811869226 +15111969449 +15198724476 +15883267530 +18847875943 +18859155270 +13609476010 +13651630814 +18888210301 +15818459250 +13991553492 +18896834473 +15167369210 +18845360233 +18525844884 +13676893060 +13657472697 +13692109833 +18884351655 +15104912294 +13906307111 +15842523019 +18878925302 +15876818489 +15102694424 +13986843803 +13668591671 +18517261616 +13948164938 +15858743813 +13697289473 +18805532281 +18568799263 +15878690000 +18520024372 +15850782719 +15876030427 +15855354259 +15127827048 +15882359089 +13667274641 +18534755326 +18581803027 +18504371832 +18578862813 +15126287702 +13970000920 +13614082237 +15867345567 +13630730589 +18837385878 +13626523931 +18505843953 +13969123457 +13679970481 +15898066272 +15895184476 +18591924436 +13652149398 +13973816660 +15160696452 +13614262736 +18816598906 +18801898467 +13918441988 +18565606096 +15198588517 +15181661355 +18820364185 +18878713760 +18830681952 +18543988273 +18844656590 +13997768269 +18595927394 +13659981088 +15109934017 +15154461495 +18862494173 +18898503199 +18543107022 +18580494754 +15888098542 +15839543278 +13919284590 +18547764461 +18563675923 +13626905092 +13922735165 +15813727243 +15866928450 +13662916927 +15132656017 +18853299483 +15148077955 +18500512523 +15131280717 +18853833598 +13627167264 +13921230028 +13669121172 +15109164826 +13622585530 +13697798998 +18581947087 +18803881903 +13610330374 +13959924237 +13957385637 +15811886071 +13933571402 +18584730437 +18532091112 +13915693679 +18598758766 +13694405023 +15195621145 +15840997437 +13682012050 +13984049854 +13679353421 +13912303661 +18552295824 +15176740433 +15182118801 +18574212665 +13914924133 +13641800288 +15807973920 +15122140173 +18509788846 +13671108602 +18590653236 +13900366846 +15115647698 +15855180295 +13978395634 +15100839530 +13652372451 +15158483768 +15892307296 +15102702718 +13988216024 +18876819724 +13967411909 +15890153896 +18572964031 +18848523975 +18842503034 +15868778345 +15131326895 +15844497956 +13962818875 +13654018841 +15844184508 +18548479503 +18823458237 +18568266181 +13667697623 +15871204016 +13900396389 +13683152234 +18839482386 +15844580545 +18843861105 +15838400455 +18523410397 +15890779055 +13904074948 +18545826919 +13993125048 +13629791504 +13605559282 +18558006811 +18881866696 +13986757006 +18896140403 +15103451065 +18849376650 +13624587108 +18576498417 +18882552455 +15199637815 +13691667132 +18899868331 +18866631357 +15835445409 +18551716543 +15899367919 +18546408885 +15863851170 +18833862064 +15818945406 +13906633117 +15130377807 +18579298545 +18551070087 +18574527231 +13658149759 +13698521599 +18802741197 +13614407342 +18810034723 +13919646441 +18525079484 +15828707387 +13653363610 +13662087604 +18886542830 +15111360561 +15870394892 +18878040447 +13638131464 +15101407771 +15123027271 +13905763085 +13982075154 +13961411882 +18885267807 +13902209485 +18594122375 +15151415741 +18583656390 +15829769728 +13951848651 +18563017275 +18580014041 +15859037635 +15167850117 +18898466539 +18889130909 +18877426162 +18552972665 +15141668547 +15879963736 +13603896785 +13624278424 +15873641781 +15819324170 +15868969231 +18877743059 +13657913406 +15834543243 +15196317327 +15130187783 +18525736780 +13619435947 +18842926897 +13675475616 +18560854448 +15102979840 +18572443820 +15162127560 +18532421470 +18583718391 +15147912993 +18587070370 +15151400141 +13663457332 +18898164658 +13965905980 +18574216544 +13640261466 +15121260410 +18539922721 +15110888839 +15883073538 +15880508218 +13693564747 +15151270224 +15121932984 +13908313438 +15133289755 +13695184963 +15172921479 +18886744440 +18573354559 +13913591146 +18570015810 +13628886502 +15161756604 +15874739709 +15195941080 +13613279079 +13673428198 +15126950760 +18854781161 +13914009764 +15824775596 +13932933884 +15824203343 +13927099431 +15129041895 +13690490524 +15153467344 +15170085828 +15834755764 +13965429621 +18803230499 +13660738273 +18577214092 +15827499210 +13622135792 +15194205889 +18520230712 +13969566892 +18857346259 +15113728463 +18543718949 +15875797997 +18541834186 +15880920669 +18847375290 +18853862921 +15894531712 +13621356054 +13688242597 +15139181055 +13928789061 +13687522737 +18554694238 +18583905600 +13907855987 +18511841541 +13645209275 +13618238969 +15869746072 +15839515922 +18522264448 +15195085423 +18576351126 +18506621690 +18820211367 +13978638455 +18895544244 +15109816131 +18846542697 +13678218597 +18550078250 +18823044152 +13988198242 +15871033346 +15894557037 +13993624694 +18873547827 +18524963351 +15861206513 +18864813147 +15178989151 +18544655493 +13655328693 +18555389181 +15111311663 +15131387418 +13636844985 +13949015541 +18877233365 +15154183041 +13640153830 +15159664309 +13952111954 +13967356606 +15806638364 +18887399464 +18858945600 +13922907102 +15148003137 +18538310143 +15178076021 +15121258550 +13697565224 +13614417378 +18596630996 +13933727928 +13666658870 +15827449342 +15184485687 +15816652882 +15185697459 +18863069273 +18891341884 +13626764139 +18577576563 +13667511357 +13696412212 +18824990524 +18564295065 +18872189278 +13978629152 +13682913614 +18578181379 +15186329303 +15820494837 +13990178024 +13925077173 +18561834363 +13638578470 +13928857523 +13979231818 +13618331105 +15130619294 +18598445773 +18864064500 +18854578362 +18596760538 +13944118729 +13916490238 +15165475113 +13611264574 +13959404729 +15109791361 +18563870383 +15127451656 +18524458125 +18564229707 +13990440180 +18856574080 +18572740887 +15100345656 +15880560663 +15135628145 +18548972572 +13698428806 +18802099230 +13636004335 +18869464833 +18562401718 +13632797803 +15100489072 +18522554891 +18587593418 +18520566804 +15100708011 +15856494096 +15866494050 +15894132207 +15845244438 +18558568826 +13620422486 +13912166525 +15868181202 +13657591898 +18532472173 +15109686853 +18833628797 +15863969997 +15804045650 +18514676840 +13618218365 +18826419700 +13607140628 +18830516063 +18879626259 +13649283739 +18552917002 +15146544341 +13947106244 +18528998784 +18899841129 +15879825916 +13942477500 +13670998189 +15824044579 +15803366534 +13906192399 +18842513752 +18508218698 +18866147928 +18574295270 +13934359800 +18840603197 +13694188081 +13649735688 +13610719951 +15105726788 +18531592925 +15885258244 +13604055753 +15884226315 +18879369843 +15192007826 +18840718805 +13690419343 +15805244920 +13600871900 +18856470531 +13657419739 +13639911349 +13639700249 +18506691953 +13696383725 +18845699723 +15163641280 +15892765444 +13916427470 +18816504448 +15874252796 +15130821326 +15882231968 +15845000595 +15127163175 +13608696901 +13977829273 +13952223328 +15100415279 +18554833736 +15852427187 +15898486138 +18871131286 +13656966279 +13987721881 +18804296703 +15843747850 +15896315660 +18501678718 +13911329587 +18848282495 +13916618706 +15150226510 +13906195838 +13903230564 +15186096481 +15115579776 +18807520676 +15159852515 +15150870878 +18822092612 +13604766347 +18854380918 +13689266769 +15126632880 +13617275753 +13981622949 +13933518202 +13927983258 +18877001824 +13694860776 +15182685267 +13609672400 +15817032316 +15103147453 +18810649448 +13932237877 +15195443909 +18895337519 +15144357706 +13939227795 +18528748723 +13901246498 +13917472145 +18592537010 +18867675703 +18565337588 +18511763354 +15184413113 +18869962112 +18879319514 +13693162254 +18849294098 +18504483285 +18501739790 +13914627632 +18543535474 +15151276869 +18558491789 +13915141702 +18505941177 +18567844035 +15155651863 +15848718166 +15881290548 +15809945200 +18591674884 +18857042735 +15896177392 +18525728063 +18884684731 +15866546544 +13948491458 +15899055930 +15803322260 +13900282025 +15172517643 +18560814322 +15839366064 +13698294641 +18811915645 +15827267983 +15168870027 +15807019588 +18579720071 +13660087498 +13609975787 +18583958660 +13631041517 +15840248353 +15109567338 +18581204482 +13635883275 +18843373187 +18808310083 +13679554598 +15182315018 +15167508772 +15181925826 +18592000082 +13678072307 +15119293531 +13661918979 +15193425769 +15803370452 +15156134815 +15854410595 +18859263894 +18582343045 +18517323569 +13915418821 +18865819647 +18546686562 +13934462666 +15875578505 +13665601622 +18508073272 +15878520906 +15143615328 +13984631897 +18802847345 +18580851839 +15169015762 +18512719082 +13974381262 +13919999275 +15867638682 +13638715695 +13605610318 +18810517919 +13673359884 +13676072338 +13613645263 +18562504366 +18888756118 +13609441295 +13931176449 +18899428874 +18526208857 +18863471365 +13990691566 +15199156169 +15128119454 +15143742760 +15126021846 +15133954040 +13671449775 +15147778611 +15129134785 +18523627547 +18552979390 +15184996025 +13940599287 +18873247192 +15119170646 +13673596274 +15171356076 +13973083659 +18813035819 +13622502691 +18506627427 +18584995701 +15120881913 +13950033235 +18828323617 +15164577962 +13684234027 +18806587207 +13661225192 +18823667474 +13685580000 +18872212331 +18503490414 +13664337890 +15881134278 +13957544067 +18551820781 +18841856261 +15844134482 +18549352937 +13617903371 +15832444652 +18820827101 +18599852887 +18537907153 +13938394825 +18534915915 +18542743358 +15163109470 +15868057322 +15160346125 +13906071667 +18545590460 +13906673055 +13633708162 +15823659358 +15817092490 +13672477303 +18501568751 +15892825365 +15144559763 +15143514937 +18597167458 +15112783244 +18579335794 +18568716521 +13958622418 +13940070159 +13945686906 +13962544534 +18532664527 +13642601650 +13618565360 +13947344805 +18553620394 +18507700438 +13958669010 +18552893383 +13679145706 +18562866880 +13975793100 +18805298610 +13916794578 +18587383576 +13684255004 +13961260207 +15111333097 +15864796830 +13973990858 +13910582824 +13957464786 +18871017991 +13675574115 +18859396085 +15148155829 +18881594507 +13904439511 +18514591813 +18572304083 +18836127583 +18509463918 +18883201622 +15120094747 +15866331904 +15188284906 +18822975428 +15890287258 +13987221604 +18881035531 +18596314059 +13601814153 +15861427146 +18592341427 +18571428970 +15197708006 +13937750609 +18856741303 +13955092421 +15150602653 +13986294109 +13659589774 +13957917079 +15858366519 +13654055579 +18886026433 +18896150390 +15151049388 +15137559619 +15826193818 +13625737972 +13676605205 +15818791541 +13924605294 +18875033926 +18570110657 +18844774801 +18534739706 +18531467415 +15198658680 +13929297461 +18881403047 +15864445409 +13924941344 +18842874410 +15188662658 +15813155139 +18838890096 +18509130238 +18517925093 +18856745142 +15171397113 +15821985494 +15176113422 +18850780476 +18880994928 +15866507645 +15878535184 +15833259890 +15818095458 +13921422126 +18861188864 +13647152443 +18563666211 +13915234474 +13998006720 +15861583464 +13640845732 +13672036677 +13984782361 +15831854993 +13696074479 +13607999838 +13684837671 +18809980865 +13622340679 +18507914022 +13673755027 +15801881750 +13946959026 +18532351303 +18522837794 +15192734898 +18577223270 +15181157036 +13662744188 +18581223308 +15805810142 +15812854148 +15190419566 +13985657489 +13983027754 +15146309685 +13658325465 +18832991745 +18552790901 +15894700180 +15870134914 +18579582250 +13676288401 +18523388517 +15861175218 +15837436054 +13690637946 +18521238625 +13911727226 +13675000844 +13995219300 +15884140400 +13618239624 +13928306058 +18899898322 +15149498095 +18520526253 +18576690068 +18501050697 +15878631119 +18856924961 +15184145744 +15811167083 +15875891220 +18877663819 +13937246169 +13660954331 +15853724162 +15117244993 +15827617126 +18559085303 +18848223698 +18545219451 +15898185737 +13996684851 +13697815577 +13928566981 +18516977268 +18562072454 +13921176850 +13643248952 +15838812270 +13698513660 +15853685154 +15899464617 +13661661790 +18543050942 +13956853357 +18567504090 +15137007329 +18539499381 +15869019942 +13611910586 +15812106565 +18895693275 +15132920403 +13631125567 +18585690316 +13651391234 +13981355212 +18840767226 +15888658843 +13942965091 +13696887753 +18502189536 +15892487357 +15862112173 +15845520975 +18594057568 +13624327064 +18553224763 +13937174124 +15864708906 +18592910483 +15177031497 +13659359090 +18864315411 +18813688922 +15109448645 +13904596537 +18511904669 +18514744386 +15107057791 +13689536799 +15111034134 +15106144173 +13697975820 +18872168707 +15146663673 +13686483394 +13985854046 +15847307655 +18516785324 +13938453930 +13699299612 +13920608474 +15165234436 +15816545066 +13607539577 +13654350271 +18545805766 +13634545515 +18535217912 +15880433246 +13968961426 +18806684837 +18537008036 +13630374825 +13947982897 +18815252064 +15876140449 +18504362580 +18506368230 +15829554428 +15859448448 +18517948909 +13642082261 +18525340853 +18863663729 +18856052859 +13632148153 +15124581405 +18854479334 +15108862214 +13946886586 +18845013734 +15160446680 +13903105389 +18855242726 +13989656033 +18862280158 +18538900193 +15875845212 +18872637081 +18566650509 +18524838669 +18538855873 +13636617029 +13926950404 +15877369916 +15835908469 +15184910304 +15162937953 +15144831636 +18834134242 +15874752043 +13923028526 +15839865157 +18815767338 +13921515226 +15186028957 +15896170356 +13903624718 +13956757741 +18511110656 +18899719652 +13619990080 +15120307838 +18588720085 +15816534115 +15170709545 +13657731323 +13951754922 +18501187176 +15122203670 +13680345581 +18584125192 +15190765670 +13662108258 +15819192379 +18883873582 +13659620897 +18590810774 +18545188778 +15849718185 +13646922788 +13932284111 +18595693851 +13660312735 +15824051084 +13663391066 +15173336547 +18582807217 +18888809656 +13670497527 +13939320012 +15107930058 +13676136576 +18885367088 +13960171149 +15836826226 +15881421302 +13655419963 +15868030323 +13936899853 +13946237424 +18821385093 +13954544627 +15845213271 +13910080360 +13922906777 +15876411322 +18822472566 +13600451844 +18599497255 +13619787777 +15117972298 +15168314001 +15802195635 +13961911239 +18577134206 +18898856157 +15857853828 +18890560527 +15154207447 +13684784275 +15865075709 +13923273283 +15841790880 +18858144554 +13966185030 +15882983302 +13663212854 +15166989762 +13681099979 +13639353769 +13953044176 +15193606788 +15113831545 +18561649226 +13971045559 +15121558352 +15852971418 +15189824230 +13915532415 +15850770117 +18500948631 +15876537368 +15176723037 +18581806238 +13617205465 +15147685850 +18529799124 +15824807908 +18524126857 +18542419150 +13922801991 +18888939255 +13656644917 +13990440151 +13946350303 +15870401391 +18593007995 +18553155436 +15812077357 +18577859816 +18530452082 +13965837208 +13945982580 +15102560340 +18872938633 +15105321452 +15191861474 +13986708771 +18880429404 +18544721551 +13956710694 +13931361220 +18869511325 +13977898947 +13956566130 +18877545166 +15893741102 +15863531217 +18525493251 +18830187415 +18856370576 +15132537189 +18857538538 +18550372415 +13993420783 +18874437961 +15199686472 +18893185913 +13929093186 +18829647320 +18563975809 +18528127453 +13943999948 +13930965655 +15142253969 +15168054701 +13607440509 +15110436701 +13603697226 +18524706847 +18841462651 +15107268167 +15152212060 +13933708611 +15893748685 +15879023214 +18505694672 +15111618057 +18545829305 +15187128795 +15128940111 +13970648989 +18592597779 +13986916344 +13926925672 +18819519106 +13979046162 +13936913054 +15870908156 +15815506141 +18813919099 +13614621619 +15182046670 +13648453319 +15899751530 +15140286618 +18532642717 +13947163095 +13998862355 +13612584689 +15140247256 +15100992641 +18595132682 +13600974733 +18519165836 +15191220175 +15899270091 +13643190993 +18555378405 +15103712030 +15812277703 +15857466895 +13692819234 +18551761085 +13622568954 +15801231523 +18824178150 +18855780573 +18875809635 +18892481216 +15827349988 +18813512509 +13648266670 +15834486748 +13666952489 +13963377552 +13913534260 +18849909815 +18875695692 +13624543758 +13601461269 +13987354778 +15853793644 +18860406830 +13648807750 +18544168810 +15815424495 +18846207798 +13683224279 +15894645981 +13951430177 +15850250557 +18532363178 +18504927236 +13627852442 +18599543862 +13619670993 +15833155604 +18577448595 +15174322442 +15892226369 +18828176723 +13699581371 +18521026030 +15862495752 +18889288714 +13631852856 +18894758423 +15137584542 +13662348829 +15848393803 +15140277345 +13644941796 +13625007971 +13613678733 +18597021336 +18816446028 +18566259533 +18594806917 +18576532380 +18846921694 +13910980192 +13656949203 +13974073816 +18839969568 +18859007221 +18558965344 +13935350401 +18511089807 +15150746614 +18589636194 +15108579313 +18877800258 +18838807392 +18849442153 +18865534649 +15182821803 +18809055018 +18874350165 +13640527294 +18885078260 +15828231609 +15192876695 +15151300429 +18825552207 +13928269729 +13997162959 +18834629136 +18537885158 +18541004725 +15102859771 +15113487501 +18832386678 +18836390791 +15156973557 +13900316897 +13626220675 +13986075793 +13695466899 +18859520554 +15179619471 +13698379103 +18526407282 +13990514527 +13698859327 +18524513804 +13927585167 +15806941244 +18502339111 +18836509981 +15107825055 +15159212152 +18557695939 +15185734879 +15823088753 +15157171073 +18845160203 +15143264059 +15838794973 +13616275809 +13619133398 +15120599741 +18805803388 +15199101339 +18835564789 +18586540742 +15112627380 +18525238923 +13614656484 +15199716843 +15108151277 +15191641185 +18584887010 +15199491802 +15828825932 +13698549621 +15119480253 +15140072627 +13684512028 +15183367277 +13933179848 +15857764614 +18843192755 +13944148949 +18506622949 +15826200030 +18857582732 +13932686607 +15830672376 +18844647137 +18507896012 +15894332352 +15152808877 +18825395647 +15135195279 +13917306858 +13616247849 +15859855638 +18566152176 +13629406878 +15800295858 +18866453928 +15131230958 +13922540884 +13960475314 +15132153915 +15885397869 +15135705580 +18536970964 +15125088903 +13674949266 +13929909136 +13691710429 +15121154625 +13932278621 +18833133624 +18882396684 +13673532371 +13989829472 +15843968530 +13945283377 +15820206845 +15859833906 +13947179355 +15887920686 +18518239322 +18594379187 +13901808772 +18829121112 +18810784770 +13699650436 +18854483016 +13653955855 +18589018157 +18889303235 +15852030707 +13921784963 +13904252167 +18884446830 +15136621342 +13679051056 +18830365483 +18596342231 +13606308637 +15821474599 +18539875978 +18576421668 +18832140346 +18824518528 +18519853629 +18864003239 +13649237542 +15809418769 +13911917715 +13959463823 +15113989511 +15149031699 +13997294290 +15866674411 +15879651644 +15138562816 +18575870831 +18561105057 +13945323994 +15849965522 +18881706832 +18551307550 +13921275641 +13652259354 +13691174190 +13664762738 +18520899271 +15847861940 +18829985621 +13666845882 +18589229150 +13991335235 +15822510885 +18838852237 +15138795462 +15114576023 +15150514638 +18824390600 +13939369241 +13990903322 +18812627195 +15883770834 +18805179268 +13906428188 +18803561336 +15102466164 +15879014897 +15191772645 +13935284629 +18896058538 +13689359934 +18569329525 +18819989468 +18817573263 +13695498828 +15174100196 +15834613598 +13669257309 +13682556885 +15158100415 +15188342989 +15879635488 +15811707598 +15163263291 +13694430595 +18848021515 +18580037374 +13698707600 +15190002250 +13650655798 +15816337708 +18881213049 +18852360031 +18856325291 +15867263073 +15117913672 +13980443994 +13630734356 +18826243436 +13960504327 +13901531896 +15850442992 +18888334234 +15833371650 +15173893888 +13678469549 +15115248201 +18545193739 +13987237802 +18588285884 +13660551797 +18833975358 +18530626804 +15135490397 +15158825493 +13987671278 +15194326481 +13606610477 +15800815048 +15886479378 +15812766346 +13680360902 +13697386705 +15892365828 +13906929572 +18827056490 +18530844294 +13948640389 +18534162880 +18834217521 +15877916039 +15865909551 +13672029422 +13645564535 +18857806121 +15187691193 +18885961030 +13900197786 +18572375602 +18576916741 +18570745558 +18520149662 +18506217978 +13603341920 +18598006090 +13958464080 +15134181205 +18862702360 +15849509284 +15863782402 +13603312377 +13694880252 +18568172305 +13626745823 +18511867236 +18586228682 +18558948147 +13989415506 +13961037685 +18533317168 +13960584468 +18837066533 +13692483642 +15153195591 +18549317285 +13666514225 +15123074046 +13920916362 +13630937337 +15894244933 +15811970326 +13916495449 +15815037797 +18502843417 +18856541400 +18512974356 +15108674843 +15128075853 +18597512525 +18894302978 +18541135621 +18594491327 +15827746889 +13613718509 +13688070931 +18558824525 +15851946816 +18559552288 +18534230959 +13994409294 +13929443767 +18555998306 +18826555156 +18573260699 +13645963757 +15174321442 +15116356442 +13947288833 +18895371329 +13653391935 +18577134970 +13955659874 +15855775200 +13635863093 +18849370580 +13942084882 +18504043424 +18886523194 +18885632617 +15856178557 +13658811336 +13634985482 +18835877232 +15189862662 +15881929421 +13905548172 +13604141892 +15167711719 +15880461347 +13609745244 +15159112458 +13931763402 +13662878645 +18539128212 +13617209422 +15830817557 +13624481812 +18515559703 +18867989334 +18855134767 +15131409719 +13698338173 +13653025176 +18544242117 +15145432813 +15192317824 +18880217491 +15114738000 +18880995181 +15862234065 +18896433310 +13623553533 +13967050307 +18808610355 +15105448358 +13961118935 +13988223825 +13688743962 +15808533615 +18821770416 +15838905722 +18590901810 +15889629335 +13946028678 +15138239757 +13963223741 +15889995952 +15188591277 +15118887418 +18840040781 +15806703763 +18805870529 +15138970351 +13978604008 +18560211491 +13637882106 +18883841977 +15159166934 +13674371894 +18892387633 +18550460561 +15891535861 +13999739349 +18866518631 +15134147274 +15140790259 +18895296715 +18866874279 +15123806469 +18825150821 +18836213506 +18852007989 +15814439610 +18522055722 +18535898393 +15193280084 +13693099612 +18582664451 +18555160065 +18801383606 +13977254808 +18516084949 +15878636790 +15880633042 +13695689990 +15804054438 +13657173941 +18509278285 +13640945795 +15845972697 +15130986086 +15830501673 +13676188209 +18831362479 +13614702609 +18597361484 +18859837937 +13955919397 +15847992624 +18598894865 +15820883836 +15188676736 +18541383572 +15134433135 +18827073747 +15166883266 +18818006420 +15850268348 +13620106072 +15176004384 +13981893792 +18531689579 +13630435951 +15837855979 +13684603593 +18852444728 +13699339406 +15893759775 +15803258573 +13947691606 +13618664092 +15825133226 +15878533131 +18828155509 +13682556743 +15826631234 +18843337266 +15188025158 +13975957266 +18811255912 +18846900179 +13680815228 +18834691865 +15800045054 +13940074740 +13657024834 +18534788671 +18569820493 +13991991209 +15868325114 +18881715871 +18854952712 +13989331591 +18830389788 +13952045213 +18878569964 +15143287055 +13975260960 +18529560812 +18862321695 +13658565000 +15112237241 +15151946930 +15104406524 +18573227388 +15162251952 +13931705288 +18513147481 +18504039614 +13951556772 +18868000788 +18527810175 +18525194527 +18527255496 +18571571026 +15812387855 +18831531530 +15148297912 +18816130104 +13694029248 +13643191560 +18559460165 +18830803949 +15186427105 +15175548132 +15859508827 +15152110024 +18527678921 +18511472393 +15861279475 +13607259775 +15853549291 +15820252144 +18564377000 +13931918530 +15156758691 +15863947047 +15814330386 +15105020703 +18558723843 +18518963568 +18867479458 +18883468987 +18592892324 +18856833753 +15122265044 +18596379738 +18819947255 +15801321367 +15801113365 +15827395631 +13663918286 +15154155229 +13960852723 +13675901729 +13916137610 +18520263561 +15193853505 +18840761646 +15853891676 +13683189223 +13930003546 +18832563829 +15873422340 +18566319832 +18511888181 +13964250344 +13692997624 +13969046829 +18541639716 +18839539897 +18827167484 +15138829464 +18598117893 +18576447737 +13600646709 +13980738788 +13672663397 +15154515793 +18850056897 +18875066788 +18547560765 +18501563202 +13941548317 +13698579548 +13603593537 +13699947645 +15137036684 +18850570172 +18589911869 +13940209521 +13633759461 +13601609370 +15886537001 +13601150624 +15195407272 +13647745619 +13962897502 +18853537369 +15837660387 +15800859818 +13641288485 +13627488025 +13606438973 +15173930913 +15848020909 +13697753393 +15821722223 +13653421357 +13685455257 +13903116232 +13953900604 +18828288018 +13673565127 +13641899059 +18508276173 +18814878358 +18872581196 +13925079604 +13653377937 +15816217008 +18847815765 +13951724795 +13918811482 +15141566609 +13932807391 +18521461822 +15135557587 +15816934544 +15103414249 +18840574690 +15822840012 +15892634712 +13985950593 +13961140544 +18868848260 +13972352881 +15887327447 +18575429958 +13932856527 +15897833932 +15871806453 +13962048393 +13601443867 +13691601823 +18838482741 +13607791751 +18834015456 +13623588078 +15866338588 +15105355076 +13668691913 +13621241087 +13945089579 +13643527817 +15104816604 +13668683370 +15164001335 +18818184329 +13967555140 +13960193633 +13661023353 +15842673338 +18544357713 +18569188632 +13610616655 +13688749979 +18871076787 +18599533750 +13646076707 +15160688233 +15852205988 +18564177368 +13934727299 +13934460049 +18531711316 +15890788320 +18895714506 +18855295909 +13992378506 +13649143662 +18847114676 +18820152751 +15166456136 +13690450089 +18535007188 +15146421343 +18577403940 +13682730099 +15814560808 +13943280283 +18594477276 +18595520149 +18582933082 +15168694074 +15190550655 +18571401951 +13965870384 +18870939613 +18529874006 +18866031792 +13985098518 +15154738133 +15180753162 +15158228954 +18552063711 +15847114030 +18851714123 +15850388133 +13958043489 +18854807200 +15165857077 +13919206026 +15863914411 +15121681363 +18526774227 +18862798044 +15117162876 +13635507952 +13981435155 +18873888319 +15100831176 +18873155217 +18845440466 +13977515325 +13601550507 +13954800360 +18867831906 +13931805264 +15176302638 +18877425110 +18562280560 +13918363106 +13654482268 +18567214859 +18868605825 +15103006252 +13616173563 +13613953330 +13687527035 +13660711407 +18813780549 +13916301848 +13654431967 +15885617239 +15158093383 +15137941087 +13974264735 +15874324361 +13669421527 +15844068939 +18502174300 +15810041094 +15899888580 +15873760674 +13972179084 +13654306100 +13695556626 +15829753056 +13674675196 +13644525844 +15107061056 +18810772028 +18541176852 +13626105260 +15159806392 +15121691425 +13922741034 +13911011576 +13949115132 +18571835688 +15865036108 +15169600651 +13932561282 +13969699264 +13602300785 +18542617792 +13926151307 +18591957407 +18883397779 +13624446542 +15120312018 +13697322957 +13930784517 +15888252555 +15117374479 +13685710635 +15186599481 +18527287328 +13620457742 +18884522024 +15106991605 +13967856163 +13699919084 +18540915123 +18898301261 +15178367916 +18553655941 +13992770851 +15830564620 +18845425399 +13662273110 +13938254865 +18830632588 +15117654166 +15177049462 +15852182607 +18587237060 +13677192503 +15874268598 +18802366566 +15861887736 +15174964181 +15195631625 +13915311026 +15143274182 +18550558932 +13676026063 +13984335276 +18595757020 +13692649704 +15818045729 +15117247679 +15175114437 +15806417064 +13960365797 +18819583315 +13683532041 +13693139316 +15819742169 +18823991367 +15802753721 +18560414367 +15174317448 +18890960086 +13910482424 +18572210190 +15878491232 +15894433382 +15854760642 +15140767589 +18547007781 +13626392970 +18867006488 +15847880619 +15808189632 +13984884176 +13624281768 +18827170987 +13957609337 +13903075135 +15193694255 +13690793410 +18808742674 +13970439479 +13930100258 +18578647142 +18843358853 +18501223472 +15802726366 +13695646570 +15875619539 +18510350171 +15144078946 +18596088171 +15143681049 +13669384322 +15128706085 +18831615201 +13962101550 +15886327779 +18821476204 +13608048284 +15182729076 +18516044194 +18566692313 +15132121896 +18531977108 +18871008044 +15850153736 +15831939946 +18817209208 +13600855015 +15890151846 +18806995927 +18833871000 +18585620847 +18812760912 +15162153287 +13645722643 +18598735098 +15139059799 +13660981400 +13998926446 +18895463803 +13995127128 +15178751808 +18524211331 +13689548531 +15848853380 +13971546048 +13698325176 +13616654997 +18874151248 +15181064325 +18575397261 +18575483742 +18886284616 +18877625170 +13936124739 +18877955278 +15101180550 +15169155280 +18587173297 +13964990303 +15113338458 +18578470649 +15136738840 +18857164896 +18522410785 +18870072265 +15819086547 +15111205425 +15109747013 +18532430030 +13938372883 +18847553259 +18846084477 +18567605900 +18846179588 +15845179671 +15147970386 +15882039955 +18526630616 +15870249007 +15148490955 +15162537413 +13966387839 +13926005989 +18538042466 +13923227620 +18842334605 +13906389921 +18511088930 +13901096560 +15848985658 +18564760657 +18510314481 +15145743238 +13925063311 +13696892530 +18554076729 +15824643759 +13980629343 +18847924966 +18504121182 +15876072964 +13995426597 +13975072581 +18556262945 +13969932062 +18551208256 +13644494842 +15890570120 +13998250243 +18844731523 +13903591252 +13683932747 +18876553504 +18831104790 +13645110152 +18562943542 +13613500775 +13673622763 +15824017051 +15134679348 +15867672965 +18541926045 +15844795853 +18805367406 +13654368591 +18561332638 +18858480476 +18871948758 +15871898467 +13660851899 +15113541527 +13985794299 +15811679611 +13907230929 +13696049832 +13990255298 +18877582937 +13919195016 +15158310865 +13602458107 +15158040897 +18824168464 +13969284992 +15172707517 +13628368938 +18891868773 +18886146563 +15869054896 +15158151213 +18575892139 +13655994889 +13617762256 +13632866119 +18505055068 +13698639759 +15131846929 +18520600587 +15146232606 +18546999003 +15189597774 +18571304900 +18578760388 +15180275129 +15816978244 +13952591683 +15829244712 +18592924672 +13622286904 +15174296411 +13652248442 +15834855654 +13688382972 +15810017237 +13953452077 +18824147369 +18862820780 +15162197385 +15828953433 +13630946453 +18584487145 +13988158421 +18821577913 +18824030519 +15831844436 +15136155379 +18833789570 +13651526849 +13905417104 +13674840350 +18579643992 +18820062490 +13606355756 +15196525729 +15822637794 +13608843580 +18866327016 +15103045216 +18884257683 +13657360619 +13930636492 +18833598034 +13626669564 +18507090587 +18505938288 +18834786428 +15144413399 +18507677257 +15832433105 +15131384005 +18867777909 +15187864006 +15829606504 +13617695302 +18807385245 +18591628116 +18548257324 +13694392302 +15816235094 +13957586694 +18817585055 +18598964617 +15148004680 +13922796005 +13970395217 +15132689683 +18571003072 +13632694177 +15141211366 +18826124231 +18832595120 +13943198196 +18855561110 +18862130271 +15132440709 +18808843242 +15165159535 +13958232741 +13995891807 +13970896216 +18898807506 +15108404708 +13938170055 +13628383729 +15856333709 +13683331035 +15158801393 +15801181679 +13697282723 +13914081484 +13642879731 +18521616690 +18534363931 +15835559828 +13608429161 +13668315365 +18892948871 +15188295255 +13907309580 +18537180115 +18589467538 +15849196432 +15840251687 +13652365230 +13696596924 +18504950488 +15800953619 +13903235354 +15800326595 +18873893420 +15115102016 +18550448283 +15826163842 +18506117422 +13665645795 +18537822769 +13661315868 +18861644290 +15897707327 +15198718720 +18820824676 +15128791112 +15870230554 +18560038617 +18813101293 +15839538585 +13917263720 +18569122461 +15882079136 +13608952787 +15816888097 +15132915559 +18518055378 +15147799828 +15192012901 +13677086776 +13972617935 +15818491671 +13677704189 +13906584352 +18589042348 +18567892236 +13946847219 +15173791819 +13909853355 +13970919199 +13940923647 +18890033888 +18877506974 +13658512988 +13907442785 +15143379011 +18892401311 +18504739282 +15188265539 +15817665876 +18848001786 +18579309423 +15875948827 +15182235586 +18807139838 +15891652689 +18889568137 +13685700059 +13680085032 +18502204301 +18835081820 +15811479190 +15866142322 +15880661635 +15829086864 +13665535302 +15189025161 +13933546578 +15122416537 +15894370892 +18866755156 +15835867754 +15803606300 +18552783536 +13966299789 +13928033646 +15808353067 +13685054174 +18878777777 +13635575380 +15131689825 +15869947243 +13651600483 +18860678725 +18861658079 +15135982753 +13930849482 +13610875377 +18843212594 +18805624238 +15887639341 +18521670911 +15897351300 +15105062204 +13978923575 +18819693693 +15898584519 +15823679451 +18506004581 +18593699050 +15122228043 +13619408301 +15132202034 +13982975088 +18803519701 +15844700161 +18843911579 +13642796690 +18871289812 +18824644596 +13973010980 +15190647845 +15111142515 +15862238363 +18529636906 +15158686212 +15199534364 +18889334250 +15198820148 +13957789658 +13922269195 +18822709530 +18549344833 +13905948094 +18890124721 +15181207634 +18838244525 +13914424598 +15841279009 +13992330075 +15132660496 +13972192348 +13903586147 +18558679086 +18585737200 +13645382826 +15860689906 +15890933500 +18819085402 +18525621811 +13951748605 +15162942381 +18510386118 +18809987310 +15131802256 +15182193162 +15828857844 +18879746348 +15875229104 +15888280608 +13678181215 +15155854938 +18855756372 +15160560197 +13941978042 +18579859350 +13647949620 +13997633036 +15199263035 +18892103544 +13976514073 +18561875297 +18886216093 +13976480436 +15175204697 +13652797785 +18817736163 +13648157723 +18576816639 +15100397886 +18523448971 +13969369293 +13920270645 +18828604408 +18570145131 +18545681481 +13914150303 +15133527742 +15849734120 +13693374084 +15895391020 +13940948903 +18586563514 +15892927610 +13603663063 +18871998152 +18831352370 +13960096908 +15127528306 +13946965141 +13635023124 +15123278900 +15114291953 +15194554515 +13969786845 +18869571712 +13999483471 +13967610888 +18538215910 +18583193561 +13993024989 +18868334823 +18589331982 +15102319710 +18843132007 +13677980813 +15861660895 +18824098182 +18860304242 +15896379317 +13996078405 +18545994629 +15809478064 +13953104605 +18879013116 +18588606022 +15839240706 +13912045233 +13652486721 +15167798266 +18501789629 +13637083387 +18864962343 +15849360476 +18584451568 +15118834183 +13658001838 +15840129300 +15823549432 +13942568373 +15165143440 +13620129238 +15168163513 +13661831053 +18824973278 +18894125204 +13988805166 +18817977403 +15110353421 +13674953952 +18559249909 +13636355241 +13670101402 +18552626052 +18559380866 +15160748033 +15191214307 +18831730615 +13917914162 +15184000233 +13666932576 +15846402287 +15855152163 +15869693316 +13654671784 +13649311900 +18838917305 +18815118613 +18505891877 +15159306519 +15835682237 +15889849759 +15136711479 +18587819427 +15880794441 +13903551425 +13916176650 +15821978378 +15846449257 +13656928003 +18882413915 +13633039785 +13901127233 +13938513509 +13600977139 +15111326458 +18817143647 +13664292432 +18555193665 +13676116385 +18848755025 +15863682439 +13620571441 +15137208849 +15127784738 +18516929098 +13965259317 +15107355332 +13925125843 +13945816700 +13645856978 +18589488798 +13684026433 +13949513698 +13668348924 +13948320681 +13912351772 +13624410478 +18502472238 +18878772863 +13976165662 +13912258930 +13948167629 +13651896013 +13907837540 +15829669014 +13965126986 +15876624512 +18838718974 +15164287806 +15832197169 +13623549445 +15133752939 +15176270773 +18874531753 +18854643258 +15880795603 +15110937188 +15857813475 +18874467554 +13989471451 +13918755243 +13956067562 +13965489221 +15854390637 +13625738448 +15856194854 +13620766342 +18515018387 +13917560558 +13966764328 +18506836560 +18577606362 +15113192510 +18539179461 +18599359372 +18596587213 +15880609184 +15144215763 +15147398516 +15802019097 +18863270807 +15149327362 +18564204392 +18533410222 +18524944378 +18560023430 +13935697595 +18546253517 +13958869039 +13638862737 +18875320154 +13662887512 +13603862445 +13692645722 +13935022535 +18511223789 +18543680030 +15834344876 +15126736777 +15804749525 +15132569596 +13915147835 +15141669286 +13605011197 +13686556282 +13642919037 +13623546262 +13677078683 +13974776281 +15853564848 +15833406870 +13607151286 +15858537193 +15819192831 +18841846088 +18855126122 +15874782853 +15867757280 +15806814936 +13654832712 +13916772625 +18568522753 +18822163723 +18822908639 +15190693286 +15183107953 +15115446006 +15166919785 +15831619300 +15140365497 +15829159451 +15849875964 +15132715423 +15871878277 +15193715254 +15126564927 +15826472076 +13673330860 +18856661739 +18594803886 +18890237088 +15145321760 +18808236903 +18878096548 +13659802409 +15199588273 +15164984351 +15800227860 +18890755362 +15129859938 +18803565298 +13612328308 +18813136323 +13675499898 +18516803545 +15147968169 +18810778405 +18559761007 +13663520245 +15892878605 +18809312920 +13921285082 +15150638612 +15109763365 +18545645244 +13960548130 +18530924341 +18812646586 +18566661235 +18823607458 +13978005175 +15809003763 +18553807950 +13918039203 +15862484629 +13967517150 +18544947411 +13952442082 +13634663906 +15108072241 +18883988661 +18861293932 +18545418150 +13906691922 +15876862843 +15100731043 +13610460933 +13621258458 +15121511816 +13693543638 +15855652947 +18897618306 +15852998052 +18575308485 +15121989345 +15143834348 +18579812636 +15155947154 +18518748980 +13917437541 +15839666497 +13655320939 +18546208408 +18568576568 +13998656957 +15840329243 +13974594887 +15165870151 +15898221327 +15861565594 +18840205700 +18848689080 +18860796625 +15835150602 +13647329789 +15105419207 +15152229823 +13615580388 +15846237525 +15107371401 +13685239388 +13953021109 +15888369642 +15838421786 +18807449942 +15154838693 +13936476759 +18863968007 +15850399706 +18864871295 +15120118273 +15166257056 +13935396397 +15152611316 +18856603881 +18835192688 +15813990521 +13965265730 +18888749953 +15134873823 +13653473022 +15191112058 +13989455641 +15160726569 +13954242262 +15807718745 +18531740184 +15850759182 +13629981520 +15141666113 +15857359643 +15840645414 +18852123641 +18508625106 +18826098241 +15190662775 +13665739400 +18518433112 +13927802913 +15887564678 +15873868200 +13602366789 +18855422291 +13681059015 +18837667601 +18503134437 +13947174024 +15169985255 +13938255498 +15157661292 +15173788405 +15875758965 +13971355093 +13622951343 +18552859704 +18505738513 +13937140345 +13986156820 +18825539382 +18809307721 +18890473170 +15104763645 +18818025515 +15871767069 +18830753873 +15859706873 +18572566635 +13957601631 +18552007797 +15874774287 +18867056521 +15193588002 +13617954005 +13691662263 +18850224602 +15836946626 +15194605666 +18824615678 +13996417542 +13610653204 +18809209005 +18883777716 +18587785175 +18865048323 +15126420420 +15159571450 +18538081860 +18836123251 +13689650908 +13665188047 +15898542666 +18869666348 +15104526321 +18551637733 +18509119837 +13635114214 +13698532795 +13621220637 +13642393161 +13647776186 +15156409065 +15832496628 +15871760804 +15888419595 +13654199551 +13904611373 +13975786720 +15111135138 +18833920685 +15168943691 +15811572276 +15120049579 +18546998310 +18529402981 +18515307046 +15833420077 +13905343905 +15154059991 +18518414108 +18885152480 +18897818123 +18523835760 +15145386668 +18599535010 +15142413271 +13941133218 +18544330600 +15897647084 +13692415171 +13950381377 +13943439657 +15883392417 +15871287681 +15195336187 +13968043240 +18555920790 +18551026188 +15189264395 +15190709830 +15807957072 +15826780284 +15838318173 +15823988549 +18589819108 +18859913542 +15176464137 +13661628109 +18516523433 +15874057445 +13657924801 +13915620944 +18554881239 +13654084056 +15161666888 +15137216802 +15109089601 +18582207367 +13652495490 +15169024859 +15845906647 +13645691910 +13902383044 +18567498747 +15879808653 +13645313542 +15816473058 +13697580460 +18500663993 +15139604177 +18567903330 +13933419093 +18564534301 +13690231026 +18561571201 +15187195451 +13988846945 +18580516336 +18881251993 +15801833890 +18567587476 +15119926654 +13919557188 +15106467405 +18852904827 +13914596952 +15166395925 +15841727942 +13913451790 +13948071216 +15832292969 +18585835332 +13687352403 +13941950714 +13644173446 +18832485762 +18883248562 +13952225710 +13989831495 +18801716931 +13611074944 +15894910061 +18834734362 +18850352807 +15880487893 +15133950759 +18578449677 +18899134012 +18502655951 +15863666012 +15161328837 +13690073945 +13976517992 +18811818915 +13680245678 +18536431593 +13605851110 +13997457111 +15140516143 +15153288459 +13925144160 +13666811597 +18533871750 +13657539505 +13912533798 +13927524547 +13665592916 +15182960624 +15103430920 +13658665950 +13994174193 +13993555247 +15867776181 +15809528264 +13915043946 +15832511303 +13655104079 +18576403868 +15193567015 +18854756636 +15133302043 +18803298043 +18517702313 +15139802542 +15858442835 +18810388140 +15820376472 +15854780396 +18887244985 +15148816895 +13913337443 +18513987885 +15110501488 +15845492248 +18810809398 +18806806867 +15154095761 +18844171355 +18803618352 +15124979435 +13696165592 +13669793691 +13977226069 +13953670203 +18540075760 +13673386630 +15141014934 +18849224390 +15103328748 +13989971640 +15800673609 +18527033441 +13932215380 +15192129854 +15878002744 +18534394637 +18552097984 +13672957177 +18571234759 +15864771991 +15173076215 +18507393038 +18561291952 +15885617855 +13652577618 +18850491441 +15811048304 +18513714136 +18598288121 +18516628401 +13633505035 +13989658030 +15161785877 +15116082099 +15176717062 +15830111892 +13994224525 +13980185822 +15155109865 +13622706336 +18869084438 +15812993305 +18537159863 +13961950885 +15886393737 +18570183473 +18841241886 +13943155577 +15112130250 +13904474880 +15819136022 +13620277830 +18544588023 +18500687915 +18884295906 +15134764200 +18541198650 +18832659540 +18505277730 +15845209636 +18542686237 +15175366219 +15855461476 +13639522966 +15887747611 +15186873831 +13616140037 +13658091319 +13955893873 +15887540590 +13988106129 +18809212804 +18539037971 +15134888375 +18842696413 +15897865210 +18562689286 +13647764385 +15829884030 +18850831756 +15824636744 +15134347905 +18574928387 +15161883302 +15185204533 +13969449987 +13679645945 +15874107898 +18826488218 +13696374574 +15814724814 +18505383250 +13640733195 +15194619690 +13947272180 +18882930418 +18812149372 +13635100056 +13966960186 +15896436882 +13991238940 +15163668374 +18587574011 +15877427930 +18855356585 +13900335042 +15886801760 +13629612260 +18824601517 +18822208790 +18507006691 +13658897674 +15868865398 +18593842411 +15872555939 +13627523731 +15160432543 +13908499744 +13909478275 +13990817642 +15103899872 +13696607918 +13975898520 +15897783515 +15152634136 +15805796146 +13665611865 +18845437293 +18834493330 +13606583914 +18807763264 +18837981608 +15838296477 +18898570845 +15113061628 +15814500949 +15167207239 +18599466880 +15144337201 +18886712567 +13686675239 +18854796221 +15129680526 +18574807550 +15119988574 +13968469441 +15874361274 +13987570239 +15829815825 +15863494476 +13962822926 +18801855376 +13941176856 +15130390405 +13978963806 +18842097051 +18599103014 +15195221989 +18858013909 +15896123385 +13654163053 +15895695650 +18592296162 +13651944560 +18821495562 +18865004803 +13986705199 +13992313520 +15185308295 +18599433999 +15179982682 +18832156003 +13913703276 +15876951271 +18523442364 +15842055749 +18852926602 +15108596578 +18532846212 +13661224894 +15856284622 +15819502786 +18879558436 +15839291960 +15182137502 +13615989311 +13629920945 +18805739733 +15155667515 +13663464217 +15842897516 +18855411101 +15130303392 +13956226855 +15890060515 +15139435069 +13984512050 +15817166186 +13615619658 +18830210987 +18594623591 +15890793854 +15164831791 +13932003797 +18881208666 +18849983108 +18869796280 +15176220758 +18827872331 +18810207869 +13648623743 +13696905739 +18570707939 +15857442877 +15853059587 +18895503412 +18588383072 +15891691766 +15160241033 +15877223778 +15891230929 +13927209009 +18891536450 +13644424207 +13945745237 +18595787861 +15101384739 +13998870436 +13610276941 +18884792773 +13672574364 +18865756007 +13963433718 +13922220283 +13907957628 +13998489963 +15172957099 +15874935362 +13638729719 +18545454818 +15188599037 +13683926583 +13628253963 +15817743930 +18500046703 +15118633599 +13997849038 +15111227536 +15895220885 +13949565131 +15158458572 +18814480065 +15891804594 +15884906206 +18838751674 +18871655033 +13981803263 +18870474511 +18511760766 +15140674267 +13922177146 +18885146217 +15823520331 +18822482628 +15820436347 +15846463406 +13980621990 +18533788619 +13956258674 +15808575150 +13691527710 +18818967854 +13640841826 +13908480300 +15184611810 +18806304930 +15167539413 +18817985428 +13675873304 +13927520149 +13958540308 +13965497410 +18879016994 +18526858174 +18874213821 +15819302372 +18858683644 +15194912893 +18881373593 +13929103857 +18801014550 +13931729412 +18886982319 +18861250257 +15808972903 +18866274919 +13918075298 +15176302138 +13638863479 +13632486040 +15178028923 +18552570282 +18822361268 +15143761768 +13691405027 +18585280970 +18823160243 +18820244206 +13609376130 +18571155867 +18874131978 +18810758180 +15871144681 +13970339543 +15873138582 +13640013876 +18862881975 +15104642583 +13913557313 +18821631306 +13633770831 +15104460352 +18865367608 +15866567986 +13632827555 +13919877468 +18830185695 +18542159807 +15162222334 +13947905114 +15808655408 +13688179143 +13946102696 +13902212796 +13643965545 +13932734602 +18577553237 +13937354818 +13935465238 +18524287958 +13681471096 +13630693094 +18881164882 +18832172049 +13646564444 +18595479482 +18866692447 +15132105979 +15892412618 +15872051790 +13973276831 +18539073331 +15165342036 +13918026108 +15125531555 +13901327151 +15805817918 +15823903624 +15187376754 +15885051422 +15820076051 +18533625443 +18874508520 +13975313842 +13984112591 +13972749453 +15890263031 +13606276279 +15863586867 +13613383743 +13609637992 +18895627098 +15100714684 +13643071198 +15884879217 +18506390136 +18586987765 +18870974865 +18873760540 +13959931107 +15170611745 +13911310908 +15143633136 +13989191686 +15115953155 +18827765898 +13959314452 +13947634490 +18590918492 +15110550181 +13913678924 +13936895629 +18817773332 +13679506429 +13662294216 +15185290362 +15109435040 +15190555501 +13625570180 +18877535454 +18881663931 +18885737529 +18835978453 +18583023632 +15877836722 +18549493322 +13944696176 +13920833302 +13675490338 +13637279452 +13992117858 +15170723922 +13942364861 +15896384595 +18829279691 +18850458665 +18884787142 +15839259998 +18878692603 +18856260753 +13636211262 +13919282485 +13647425721 +18807185595 +18580456021 +13671821372 +13610323488 +13988817455 +13969697665 +13655886165 +15161725663 +15816105100 +18844676238 +15118948473 +13614557243 +13971841028 +15806644993 +18507760744 +18872624629 +13990339486 +15855454359 +15179880718 +18542362395 +15827030480 +13666097434 +18522790502 +15893716310 +18577766977 +13670796823 +13999801595 +15113067785 +13911850009 +15851659181 +18836136114 +18598859967 +18805700294 +15139337543 +15155528519 +18531798370 +13687132125 +18575046644 +15876075806 +13971984007 +18828472998 +18543044809 +13979059359 +13642552103 +18826678623 +13915873283 +13651081840 +18814764460 +13929301908 +15153319464 +13912424802 +18501603104 +13631808470 +15863179303 +13931718292 +13994494992 +18842411308 +18581132808 +18518694037 +13949138786 +13966656505 +13908652414 +15133280108 +15146361294 +18567031081 +18884744538 +13989969565 +18888537573 +15102580893 +15887829335 +18552224094 +13699608536 +15800596259 +13653174699 +13680955339 +15894033566 +13689491587 +13605789687 +15184028757 +13667748138 +18587584471 +18849043606 +18828645760 +13931427569 +13992893635 +13952456164 +18539204780 +13919445800 +13976249327 +18828923641 +18809793045 +13637073779 +15195981690 +13652104736 +18585599794 +13901943646 +15193239427 +13974989164 +13600608627 +15174028963 +18862182239 +18549579389 +13697600741 +18878751920 +13686343945 +15121953119 +13978100514 +15830611396 +15894488448 +15134213008 +15817859909 +15126749939 +18837259042 +15101414370 +15191023757 +15105583893 +15182822580 +15879744337 +15882057105 +13672322733 +15843905967 +15838378740 +13693198449 +15168312878 +13937455630 +15162774529 +15176199177 +18817130989 +13912243582 +15154620106 +15839502544 +15888354020 +18898671100 +15835105390 +18575429064 +13688472091 +13969621163 +18826704201 +13985600016 +13695379456 +13642271073 +15886746386 +15109345833 +13655688337 +15869643631 +13929003383 +18877466910 +18832837447 +18533441672 +15851129888 +13686921327 +15104109282 +15894190575 +15850788385 +18848002956 +13918845202 +15896828743 +13621722630 +13955015706 +15194687249 +13919117864 +13607545877 +13929221295 +13627967120 +18580859569 +15849481489 +15835301747 +18857498849 +15870324756 +15817363715 +15880291977 +18566470472 +15139402658 +18554725874 +18545967505 +13960153765 +18880676398 +13669119005 +18838849847 +18882002708 +18555359783 +15863615170 +15118015365 +13670630808 +15133893000 +13974200660 +15140852119 +18543941197 +18527655086 +15824376998 +13975918025 +13968676668 +13696208004 +15157369093 +18512027776 +15146402623 +15160002759 +13666229226 +13969800072 +18827996455 +18598969754 +15855874623 +13637283668 +15883485550 +15191884499 +18584906953 +13920615962 +15852425299 +13608199278 +13979452516 +15108560297 +15102570573 +18531264438 +18596831806 +15187531936 +13655999231 +13651209301 +18884474069 +18539782504 +15885015131 +18838723936 +13935885743 +18582010449 +13998703945 +15857119051 +15875770346 +15180918261 +13932942228 +13627925576 +15134483379 +13673133045 +18534771908 +13973524761 +13609407364 +13611124453 +18818246925 +18888806991 +13975343436 +15817623820 +13611004181 +18521319938 +18570436826 +18856000556 +15173745755 +18888379462 +18882300971 +15814779659 +15808720304 +15133888046 +18888574249 +13904658480 +13955696341 +13670585792 +13985783967 +18507704339 +18588161479 +15196158881 +18508913875 +13690757917 +13643800159 +18593134828 +13692281320 +13603061074 +15138566549 +18578326653 +13911739801 +18843069271 +15130856368 +15147808816 +18806635533 +15855903558 +13902718255 +13643329374 +18560717654 +18538433241 +13604362033 +18564860623 +13644037379 +15849395826 +15889318176 +13665763512 +13919348680 +13604298244 +18804413324 +15883420441 +18519523282 +13650478520 +15865755700 +13999171954 +18555044055 +15122490742 +13909466767 +13946496164 +13643302287 +13685343594 +15857360792 +13607257245 +13903800386 +15173460101 +13604080547 +15829215476 +18562658049 +15821069337 +18535653586 +13663628978 +18893260716 +15806737599 +18533093007 +13612193365 +15145708937 +15848258198 +15197312472 +15864876429 +15133491576 +15863965660 +13967119003 +13934005282 +13603005882 +13989706674 +13634585614 +13980337961 +13629860243 +15112057661 +18847337283 +13638476107 +13602257074 +15882452719 +15162265938 +18820753207 +15143051706 +18848677738 +18503345763 +18834005483 +15861491363 +13699871209 +18534328512 +18511984464 +15801844803 +15892488176 +18515583124 +15109134006 +18558546774 +18829729955 +13602957775 +15112916279 +13610442848 +13960775454 +13942102533 +13673644449 +13933835307 +15801282797 +18804729641 +13959284478 +13922085644 +13904701895 +15176588907 +13645025171 +18560258808 +18545650945 +13939636595 +18577564576 +18841798708 +13945897532 +15878548332 +15820307956 +15167792965 +15176643988 +15854255454 +15829734415 +15155157050 +13996909759 +13659127074 +13906194017 +18852630947 +15890348278 +13607696996 +13991094526 +15880819901 +13607402681 +18833173583 +15830166293 +18517328200 +13662995734 +18848101180 +18877329041 +13698717540 +13947463632 +18538441209 +15147692226 +15120923500 +15111880127 +15186762463 +13918788322 +15864609045 +13694275613 +18561842638 +13906561891 +18587769859 +15803267245 +18814235458 +13648798996 +18819966596 +18830554731 +13903836605 +18874190882 +18512012587 +15870623531 +15143181388 +18562837739 +18532634800 +15119128733 +13660764028 +15118833804 +15175593451 +13915670701 +13934163409 +13638026230 +18521676343 +18878706352 +18843655174 +15124041641 +15841131920 +15855291679 +13606635570 +18844585822 +18541580417 +13609399993 +15110533519 +15141385262 +18508672130 +15199143885 +13963500657 +15852108122 +15151803521 +15868696812 +18569245346 +13631734047 +15834700333 +15114870164 +18513760328 +18866245788 +15866651719 +15850282181 +15867855717 +15827643449 +15889698208 +15118022160 +13936476333 +15189001814 +13912704758 +18882486788 +15886006508 +13688187599 +15867051990 +18581674924 +13913247896 +15822338020 +13909042028 +15162140688 +15194190816 +13616917893 +18835153325 +15838315714 +18815059356 +15836164811 +15186260375 +18528668558 +18565542529 +15179221065 +18584077309 +13905861460 +13941596133 +13676053809 +15145270936 +15139259554 +18573588614 +15109204922 +15136948546 +15863964307 +18857415235 +18880522663 +15151676388 +15855721369 +13677305680 +13993585173 +18527101930 +18809199168 +18803119700 +18897052346 +18557100919 +13902394403 +13907202511 +18562698191 +15841685913 +18872303841 +18568590996 +18571616674 +13684300401 +15883927383 +15156610851 +15131646494 +13601269327 +18524781999 +18578778490 +15857022985 +13641591388 +15196119471 +13680988127 +18598346298 +13611960028 +18848664485 +18862278201 +15880594129 +18858443813 +18807287362 +13606478147 +18541642133 +13934669312 +15100205764 +13991466055 +15862876081 +15129335421 +13972822574 +15861347483 +18515093310 +13943126544 +18893259161 +18838425138 +15125172944 +13946377975 +18886517611 +13635172356 +15195685328 +15874851250 +15152977201 +18807027682 +15150201141 +18527392817 +13961008576 +15192634882 +13676397651 +15889876698 +15162541763 +13984774829 +15193029856 +13680263711 +13962682183 +18869371522 +18885149784 +18825383814 +13964939775 +13680535689 +13944126945 +18535904773 +18895747597 +18829648722 +18508751390 +15155165339 +15180003157 +15117124385 +13625597615 +18851061206 +15121941015 +15145458194 +13653808242 +13973711802 +15164450757 +13975302227 +15894836942 +15801479419 +13669566790 +18567168048 +15120065796 +15827910095 +13991206010 +18556009792 +18532485796 +13660533520 +15837196476 +18880426049 +18829641743 +15805030133 +18885029885 +13681068116 +18884940710 +18553657776 +13965582035 +13999424673 +18878889435 +15109856720 +13999261592 +13632306505 +18573238379 +13950013293 +13619293051 +15823538804 +18566371039 +18528677153 +18532124360 +13926001407 +13925580807 +15149557510 +13989320966 +15107228323 +15119256590 +15862286404 +15175364940 +15138641847 +15144308944 +13605958896 +13640149670 +18512304084 +18801900303 +15124343961 +18580201424 +15146261683 +13644704053 +15172746855 +18865462897 +18883806851 +13921599930 +13659924192 +13969344967 +15859895250 +18510038677 +15834823965 +15815648279 +18807073452 +18846979970 +15134706369 +18536672075 +15838302103 +13679359431 +18882405482 +13992631509 +18572994847 +18585566833 +13970035885 +15811329606 +18863819949 +15179718832 +18806401843 +15870269391 +15178617943 +18802798003 +15878288413 +13968926097 +18533426962 +18560803130 +13627702125 +15148505748 +13603349162 +18842518739 +13697773477 +18520595660 +13936388783 +15146378712 +18864500614 +13629302861 +13924954437 +15140145612 +13644442870 +15112783450 +13652638266 +18892965381 +13902282679 +15892846776 +18509402246 +13965073320 +18570469841 +13993722250 +13970374350 +15852977529 +13949692581 +15825460777 +15846642719 +15848647140 +13631615014 +18556628234 +15820357745 +15847232882 +15802374959 +18553209515 +13623184298 +13609593557 +13680637886 +13914676284 +15885582863 +15178239790 +18890192298 +13660191019 +15809679576 +15872908819 +15184583120 +15870808390 +13663673100 +18583373763 +13975031753 +13974180346 +13993232770 +18881844761 +15864761495 +13655628116 +13699466890 +15817252042 +15163532630 +18558951655 +13690239424 +18881576975 +15132977233 +18810653113 +13613343672 +15819438761 +15160734819 +15855639319 +15117216695 +18867878890 +18843581693 +18539263245 +15821418565 +18894191234 +15126063895 +15829231366 +13616688131 +15128209028 +13668296313 +13983099353 +15880056062 +13977191575 +15820115382 +15159847679 +13975443456 +18830818863 +15834635793 +18803477399 +13916327762 +13696861486 +13646028087 +18818444769 +13614788019 +13664512790 +15131315241 +13973578747 +15174711613 +13930827882 +13693698813 +18560752265 +15193674590 +15819129601 +13914518672 +18800346658 +13933846743 +18522343635 +13993961156 +15857956507 +13641456328 +13632565142 +18838297982 +15141604589 +15896798648 +13904910006 +15168354300 +13690145727 +13966759693 +18811181193 +13611596363 +18584899770 +15178024151 +15824160984 +18814690869 +13974572339 +18516666858 +18852032988 +15839241831 +13693965524 +18580677727 +13621701752 +13989803022 +18851282489 +13980951335 +13942575415 +15878399996 +15807690577 +15178706843 +15879537601 +15137700280 +15119868894 +15884413146 +13950582121 +13648344841 +15116948696 +15851715725 +18594812454 +15846871742 +18839159628 +13607353369 +15158506159 +18895793290 +13916185902 +15133999438 +13979655211 +15134622140 +18812753794 +13608381265 +18843982662 +15894944482 +15805921527 +18583218463 +15133655603 +18525051660 +13917931237 +13659857570 +15893953601 +13955444586 +15851305976 +15804989290 +18848322152 +18565068111 +13665002590 +15160460348 +18885797492 +15841641972 +13915913059 +18506186801 +18848111872 +18561134242 +13653637758 +13690340572 +13600268207 +18841810367 +15108306996 +18876979825 +18563348499 +18844450271 +18877655871 +18521650862 +13997999359 +18532900527 +18534758951 +15183995464 +15880277349 +13614790877 +13946176490 +18896134136 +13626713640 +15865116349 +18802281165 +13694717032 +18537742737 +18885050691 +18879621415 +18592383384 +15132461215 +13954376100 +15815833211 +13638524609 +13629463708 +13617749780 +18833934913 +13956097044 +18843262958 +18556376838 +15127602001 +18818514250 +13678345463 +18848404352 +15865473182 +13628093966 +15842818840 +18864385058 +13601651709 +18837394579 +13955039854 +13970182602 +18806370544 +15179014844 +18853355204 +18846218970 +18816287622 +15884065382 +18558552613 +13649445194 +13903356160 +18502028213 +13621305296 +18811766686 +18521833654 +18862068253 +13981289000 +15124883849 +18558112903 +13601811659 +18888890515 +13645242651 +13977970289 +13945928616 +13910913597 +15178316933 +15869070697 +18880199591 +15817879861 +13674461082 +15817166144 +15145215314 +13916144799 +13922134116 +15131130819 +15108689849 +15813884592 +13621686214 +15865534284 +15815403927 +18557812391 +15877735114 +18522625467 +18864025072 +13944050723 +18599693010 +13604759526 +13950831604 +18864464515 +15818466623 +15121032458 +15143535790 +18810269175 +13637418367 +15135580192 +18510091118 +18824139409 +13683521843 +18838677582 +15898258149 +15119677525 +15840684545 +18593211479 +13915440650 +13694382314 +13963839433 +15801272902 +18588731494 +18824475935 +18571375525 +15805802594 +18530628952 +15102312968 +13974462915 +18541582645 +15895271467 +15100102749 +13615822482 +18826653833 +13920429410 +13955612033 +18504389932 +15890051450 +18879265850 +18855088865 +18528683989 +18593904279 +15895746542 +13680392878 +18870940919 +18588257130 +18537550683 +15880921566 +13969850310 +18527081536 +13999932991 +18884839402 +15831058908 +13970782205 +13626926648 +18863599792 +15801376464 +15147171783 +18843055977 +18515141093 +13640885238 +18865583420 +15127690257 +13960206198 +15801383228 +13938451622 +18523422889 +18540611353 +18857256374 +18532059552 +18814028800 +13641820684 +18578033858 +18868054913 +15868679662 +13615098832 +13929847227 +18524136484 +15191441007 +15826062864 +18561587495 +15841853094 +15873083061 +13961587739 +13957434151 +13952048622 +18573601847 +13944884869 +13986786414 +13924915877 +13907170806 +15127472903 +13650397406 +13991231808 +13939912470 +13906332815 +15888747824 +13651765829 +18895439073 +18555289057 +13930798495 +18565230219 +13644018319 +13914095159 +13605436979 +18571285624 +13929343471 +18823820164 +15802489700 +13983581546 +13918167836 +15116753333 +18538132468 +13629765363 +13636613495 +13909950083 +13668392488 +13699121323 +13974610066 +13965337970 +13919738384 +18803981603 +13688998131 +15815076701 +15154719195 +15853426635 +18824823254 +15162296875 +13939253934 +15199213452 +15858322729 +13905407364 +13601042987 +13982693772 +13958521559 +15113410538 +13641306280 +18578416338 +15175249646 +18896343297 +13688612396 +13946282415 +15822779999 +15194802321 +13613375267 +13635042141 +13616369022 +18823424903 +13633620848 +18838097041 +13602961125 +18820091166 +18556270804 +13697256785 +18815602871 +13608239120 +18866583686 +15825324659 +18846939323 +15155981075 +18514416679 +18839310024 +13695172773 +15155905909 +13607009439 +15833816210 +13637895177 +13617970770 +18823979856 +15843034941 +18861338812 +15113260626 +13602130925 +15885161026 +18594418068 +15160664418 +18842848188 +18518975095 +18546976649 +18546359783 +18856289291 +15859933459 +15127216784 +13646227024 +18837107972 +18511074876 +18522473080 +18855314821 +18556596811 +15812781917 +15874978492 +13926733922 +18565394838 +18817928502 +15848227103 +18590345224 +15825757295 +13914873711 +18829476902 +15183885718 +13604207641 +13623651469 +18818484655 +15882576489 +18875518219 +13951502123 +13607776371 +15141697692 +13984320382 +15857470949 +15199046922 +18845529144 +13696740352 +15843515015 +13647060518 +13969809617 +15139397837 +13649343663 +18851515637 +18508434408 +13642780838 +13947253507 +13946981692 +18552451804 +18599470447 +13689193330 +18566205191 +13900994845 +13912525777 +18862418552 +15809281766 +15883599502 +13672275215 +15112624510 +18595082041 +18515513471 +18571203893 +13609612788 +15194137253 +13928006961 +15869371013 +18589207219 +15831093159 +15188094412 +13661035770 +15195773649 +15182447578 +18590788409 +13658036593 +15122900852 +15118479997 +15103944714 +13621880156 +15899752811 +15158270905 +18579676031 +15199514371 +15869032231 +13621397974 +13676352194 +18558224553 +13973634851 +18526741986 +18509345846 +15198549877 +15829505984 +18531571165 +13660677100 +15112333625 +13918470786 +18592567907 +13979959448 +13924167148 +18801170924 +18800921965 +18849047968 +15125275546 +18883268209 +18895978778 +18822727415 +18880659124 +18825186874 +13974488594 +13916878213 +15870635955 +15166850605 +13976489413 +13674161742 +13638635411 +13661570865 +18564361709 +15866431198 +18884276023 +15150925017 +18511736321 +13637206141 +15840726763 +18503701067 +15178107532 +18829463332 +15854748308 +15172079398 +15827446091 +13699109913 +18578043516 +18876636308 +13612749451 +15170278290 +13646286100 +18588129495 +15864745555 +15167478906 +15157002451 +15865823528 +15888820974 +13646814743 +18571425784 +13646512731 +18572496363 +13931112254 +18894996233 +15135513245 +18519501336 +13983903256 +15146952983 +18592031647 +18812753149 +13939433579 +13934914225 +15838012887 +13919687543 +15192122749 +13988007622 +13679941702 +13607914243 +13907179067 +13946945700 +13905520996 +15186560442 +13633383060 +18812957794 +13927596550 +13693541478 +18581041180 +18595983563 +13909899103 +15159681545 +13660277582 +13665314689 +13968229431 +15824332290 +13961649148 +18898813253 +15121655247 +18557271883 +13652095847 +15818567485 +15876536717 +18562297383 +18808954321 +13677487215 +15107695135 +15820506971 +15861672662 +13612734911 +18501086171 +18802769126 +15870749710 +13963232256 +13615154370 +18854300962 +15873029887 +18830687591 +13683236703 +13989130478 +18595256534 +15188349480 +18844320858 +15808017527 +18549302849 +13677694716 +13636799631 +13667514600 +13942949322 +15112733238 +18561193600 +18504151463 +15144073835 +13686220206 +18857032419 +15815796131 +13913194612 +13668525132 +18881989912 +15837707540 +15850316130 +13922965957 +13924173327 +13993083782 +18871502104 +13678064411 +13639849760 +18845001330 +18884056341 +13910141406 +18534665543 +13907174694 +13984261718 +15875051384 +15184450806 +18877226552 +15804375640 +18826890014 +15184215387 +13600320448 +13997597094 +18806812139 +18540706816 +13908788269 +15100605101 +18533969585 +13962345470 +13600714019 +15146124866 +18540855449 +18824418170 +15872530076 +15132249876 +15176750208 +13668527125 +18890240367 +15881563086 +18801038482 +18531548691 +13981645339 +13690781937 +18859501944 +18591507246 +18568585125 +18502392678 +15169700040 +13991349935 +18885250380 +13602489688 +13685374650 +15179761325 +15194289294 +15855225815 +13912790749 +15871088780 +18538977990 +18566779725 +15118888049 +13603510958 +15820807024 +18895744253 +13989047768 +13969748873 +13918831613 +18520592276 +13967313747 +13925513869 +15154008324 +13611701097 +15880699236 +18862500247 +15122048465 +18818678167 +15874543088 +13686257395 +13919568764 +13905206129 +18525320707 +15849316502 +18565106038 +15128569532 +15154886121 +18590226389 +13641930705 +15126371628 +18563163345 +13657792021 +18880961913 +18801131094 +15829708162 +13623161361 +18850121342 +18584332345 +13662528338 +15803623393 +15869557019 +13952217180 +18823829117 +13665473405 +18557136574 +18872747647 +18860420099 +15877004877 +15840060441 +13914928831 +15839004736 +13950923947 +13954629856 +13689816982 +15856640197 +15896141862 +18893168829 +13622860181 +18855371018 +15134421910 +13973327180 +18844969782 +13608312741 +15859046015 +18574262785 +18864529896 +15804780409 +18540556846 +18506968093 +15106799849 +13607208726 +18829821751 +15154207771 +15899449271 +15168768551 +13642500822 +13606956169 +13638947382 +18837716462 +15122658095 +13975879127 +13699469894 +18844761953 +13986389080 +18818575862 +15814955292 +13946082484 +18823109690 +15145035238 +15875687299 +15867140668 +15866507038 +15858622195 +13642124002 +15187644769 +15832075865 +18867484798 +15846389917 +18867496859 +13607307139 +13613068907 +15192497883 +18801284182 +15878520339 +15878584777 +13695318480 +15107744878 +13611511249 +15143687709 +15132382936 +18569377157 +13628525555 +15834694252 +13930745178 +15844925472 +15189259305 +18587734294 +18887993892 +15839047124 +13959943403 +18542485005 +15103749727 +18822788305 +18807812880 +13996090535 +15833727718 +15874453270 +18503960828 +18874918498 +18527614781 +13938898099 +18812080681 +18584621820 +15156649162 +13925831147 +13640518023 +18586342149 +15153017838 +15160255178 +13937668090 +15114430932 +13620482986 +18545683897 +15873329069 +18558645242 +15844353770 +18842179763 +13655607986 +18801371728 +18846135842 +13934608317 +18578196124 +18851636287 +13981054836 +15809740766 +15105520810 +18859406124 +15821672931 +18850318541 +18835953894 +18876482442 +18531550119 +13970334516 +15890121323 +13616194577 +15196300407 +15160906435 +15827969762 +15107349125 +15152607858 +15870007921 +15183936541 +15848022757 +18507102136 +13670779457 +15127270025 +15138722107 +18870397142 +13693372100 +15884892675 +15176429287 +15858625542 +13903110099 +15862056150 +15889806411 +15840669365 +13999695152 +13622951750 +15123749362 +15168526081 +18532920140 +13659408564 +13634905555 +15103359575 +15131538119 +13929077356 +18553750249 +15117801129 +18539250398 +13683213043 +13651911382 +15862942936 +13659634896 +18814132020 +13994198747 +15883952843 +18530593199 +18526152633 +18507847487 +18891188441 +18878147949 +15111414938 +15173738258 +13967992105 +13930091962 +13965839673 +13642379864 +18816337168 +15168783881 +18822296945 +18859431285 +15879880974 +13650438924 +18893298366 +15852948171 +15882641091 +13959384194 +18558976870 +18846413209 +13926616616 +18843748522 +18847545192 +18541327300 +15125113401 +15187662250 +15176342622 +18895158325 +13996455616 +13980651762 +15822898422 +15116484432 +18551381640 +18864694177 +18848279187 +13970276205 +18833041395 +13694865811 +13646085591 +18829187950 +18501809209 +18829188032 +15886341701 +13945812945 +15170561927 +18534234086 +15180756494 +15840830549 +13907415671 +15847053489 +18846264895 +15830587079 +13630341550 +18504830753 +15821197119 +18859044561 +15167252305 +13985021956 +15127625128 +13694374369 +13673627040 +18820891845 +13901074378 +15156865534 +13950702135 +15124938419 +15194364388 +18524745179 +18856969357 +18857302240 +15808371255 +15895460564 +13910327150 +15174101697 +15801489457 +18552159615 +15887558791 +15182809654 +15832368571 +13997095838 +18555602538 +13654951216 +15129165088 +13603246005 +18809325425 +13954069422 +18848685599 +18533156759 +18576748956 +15109544288 +18877547001 +13685347465 +18819431036 +15180729552 +18872712689 +13617682802 +18585717482 +13610045796 +15194302393 +18591903741 +18890022279 +18596184090 +15805737890 +18565873958 +13904293009 +15160674468 +18808422728 +13921333751 +13971627471 +15850431185 +15117753915 +15168363495 +18532552614 +18898445324 +13943496588 +13644735901 +18844381215 +18561501889 +15891412009 +15854880473 +15877023777 +18524817275 +15136550052 +18816987958 +18801495687 +15152262848 +13649457247 +13934806015 +15830950024 +13914048011 +13632432245 +18542668327 +15884459800 +13684078064 +18561997686 +13654552802 +15897092260 +13970021811 +15858530398 +18514859858 +13975758375 +13943821959 +13634781900 +13617900254 +15111402859 +13912094577 +15196074824 +18512355145 +15136453849 +13678846058 +15834143863 +18810860252 +15110428976 +15802932268 +15169575391 +13932702986 +15859899003 +13976681875 +18885179419 +15874717621 +18859079561 +18599949888 +15891061516 +18568461080 +13613302464 +13942165838 +18829160209 +13673942089 +18576412386 +13916284467 +15164217441 +13654201217 +18580702108 +15841323866 +15170311534 +18513856577 +18571247149 +18554204112 +18500084392 +13668422901 +13647436768 +18881764735 +15118505405 +15196505336 +15899950743 +15847007594 +18572124209 +13961173475 +15196955939 +13916430856 +15123885726 +18556679160 +15800391160 +15895071232 +15192236926 +18539201395 +15129523133 +18531903626 +15150489559 +13965899495 +13943492842 +18847544142 +18812002044 +18821438690 +18858369227 +15132501852 +15138264690 +15849245354 +18830445188 +18825330841 +18549768681 +13978849585 +18807807167 +18881412676 +13943954369 +13634716286 +18548808713 +15848714855 +15122245413 +13947068798 +13932737127 +13655242092 +13660193166 +18866787739 +15161250413 +18852572955 +15126843940 +13996052340 +15859607115 +15820104805 +18514710019 +18560431098 +18827013932 +13904783859 +15833605641 +15849291358 +13944374123 +13944398410 +13608767199 +18506399203 +18880760665 +15819531105 +13981164579 +13610429850 +18553868935 +18559346935 +13683419685 +13974240650 +18525152997 +18595918691 +18563022220 +15195991912 +18853774479 +18581263081 +15823329431 +18835746881 +18864665955 +18512473040 +13990972012 +15898775704 +13632673875 +13603225937 +15198226328 +15113429011 +15157680408 +13643052099 +15109919098 +18864778318 +18570957464 +15136049310 +15892708129 +18554702002 +13956923563 +13670137339 +15841398802 +13995866252 +15187081765 +13693917941 +15807294934 +15853896781 +18851780132 +15879621356 +13641369619 +18889398728 +15135264361 +18860892616 +13690515385 +13909203788 +15152197166 +13690683533 +18526592610 +18520304395 +13946854064 +18842621821 +15861147662 +15180636365 +18596376645 +15184389600 +15809014713 +15191521037 +15871383760 +13664390567 +13617124040 +18888340168 +18853703907 +13927470943 +18543693587 +18501550070 +15151505322 +13679683026 +18872263512 +15183247875 +18529473042 +15851737756 +13977720655 +15845013079 +18522929472 +15884124746 +18567030079 +15140715282 +18519829697 +15881123311 +18515290299 +15873357790 +18568631649 +18883981532 +18554817770 +18539356173 +13915858214 +15127979256 +13667533260 +13973033910 +15861313890 +13943441378 +13609666644 +18505827004 +18851240694 +13642840682 +18831263179 +18564112167 +15125055902 +15142056118 +13698209208 +15818427440 +13680624731 +15811520807 +18567311432 +13642118210 +15893850854 +18548213579 +15199600544 +18596272714 +18575792195 +18897765624 +13692935316 +18848987788 +13969746848 +18587316319 +15153672678 +15130882234 +13956657708 +13981564058 +18812200213 +13967305010 +13938628713 +15171300736 +15147349954 +15107454800 +13960990849 +15104013646 +13955416921 +15182816385 +15849626168 +15184058602 +13990351225 +13980834045 +13640345612 +18893003875 +15168544040 +18859485456 +15118481015 +15806847812 +15892818591 +18800845967 +15132687683 +15865297794 +15156231202 +15845438540 +13917932834 +18530289999 +15879489199 +15129261040 +13640412332 +13694534711 +13911947831 +13685860651 +15836423970 +15807365366 +15893477446 +15828732589 +15157677249 +15138991530 +15873122055 +15179918627 +18533665571 +15173156109 +15860202875 +18805950410 +18523303484 +13688737099 +13679296132 +13966359674 +15117526395 +18564977468 +13944695872 +18554846149 +18547503466 +13973637191 +15130567598 +18500615684 +18881984084 +15108731111 +13641651384 +13904786328 +18587974095 +15816985777 +15116111922 +18806967109 +18589850916 +13600950573 +18526946599 +18847282460 +18555311356 +18588766059 +13663267299 +13676514711 +13690352856 +18550002271 +18895336767 +15831751416 +18899453550 +13989200296 +13907475410 +13672360567 +18867936473 +13920826466 +18891092581 +15156134773 +13697741834 +13643938164 +18590738597 +18522218934 +13696928156 +15861248131 +13612124071 +13966577092 +18505995594 +13999394073 +13928161744 +13973338807 +18872011142 +15807565649 +13683967282 +15803377380 +18532134834 +13662692753 +18833614878 +13994948433 +13998643589 +18848883281 +15832774575 +15898445710 +15155682097 +13694949711 +18581097234 +15851804791 +15161687088 +18866539279 +13930688393 +13628621280 +15844238325 +15182267103 +13645916461 +18888296841 +18862381074 +18818963861 +18555126812 +18898312832 +13636257812 +18567030918 +13622166533 +13641487544 +18591390383 +18892958605 +13648057841 +13625722662 +13903749830 +18599155785 +18825243662 +15131388946 +15103696316 +18867558958 +13963684401 +18510737342 +13655030098 +15105547018 +18874653149 +18883524301 +15137918474 +13945306286 +18844321715 +15126665062 +15149332842 +15888042496 +15189239904 +13973025587 +15145967903 +18808112359 +13682555393 +15884730224 +18851729458 +18594560024 +15128014023 +13628538316 +13698701037 +15116819259 +13649909442 +15865953279 +18585291221 +13693896010 +13670599538 +13998274448 +18583917972 +13674803835 +15895617576 +13938253004 +15134966878 +15862080823 +13970920286 +18523640413 +13698212655 +15132068322 +15860523905 +18562426920 +13627302083 +13920760217 +15825467820 +18898134575 +13905756585 +13667183701 +13648425734 +13692749410 +13665934980 +15187541849 +15182357676 +15120957889 +15891121249 +15110736933 +13930965645 +13629872296 +13918119206 +15880454716 +18822282380 +18512979682 +15897455905 +18869497839 +15165318296 +13667550919 +18807403047 +18587765615 +18899027881 +18870876385 +13639956201 +15897467293 +15153621797 +18527356440 +15828093774 +15891612574 +13629754452 +13687587795 +18535524921 +15165211497 +18855660985 +15110157300 +18896272618 +18831988386 +15137657771 +18883125756 +15106859436 +15137059509 +15845021408 +15102575184 +18862929797 +15802991382 +13902990062 +15121720263 +13653874196 +13986078229 +18820641403 +15158891663 +15161315244 +18519134723 +13625580320 +13618850490 +18896466738 +18577362203 +15883306023 +15884025706 +15895653661 +15154946802 +18851158534 +15889360454 +13933486185 +13607811277 +15896784509 +18870600334 +13920051583 +15813298398 +18525638353 +15868063196 +15127171184 +13912663827 +13934931683 +13618654314 +18814919898 +13960314992 +18579646192 +13676389898 +13635388235 +13669357157 +13650074404 +18593778789 +15199956635 +18580539667 +13648634482 +18503057061 +13970048504 +13618029069 +18593553558 +18568874768 +15820527853 +18847208469 +18878341653 +18571713095 +18550373449 +13952301493 +15120557788 +13931408095 +15155876775 +13607038895 +18896540667 +18585456599 +15871903890 +15199945330 +18818856964 +18884459286 +13906354991 +15830566266 +18840267263 +15156356169 +13941352999 +18897681165 +15863935537 +15873904744 +18564315015 +18505428254 +13668924467 +15101488219 +18802078620 +15877255371 +15853025989 +18532422671 +18846518593 +13689711185 +18824275590 +15811544129 +15119137834 +13965672451 +15146140341 +15812674796 +18591042803 +18814087514 +18541800812 +15825929380 +18806126505 +18865316899 +13934107209 +15149847846 +15198162049 +13928209192 +15166127619 +18561506988 +15167068461 +13910573720 +18528568917 +13607448980 +13976274447 +13967800014 +18802848402 +13696125256 +13613834074 +13994620232 +13926642368 +18546796411 +15193555554 +13959030061 +18533410802 +15146149497 +13641825367 +13679185831 +13622556310 +13904490332 +18515515849 +13620123558 +13677590022 +15166299908 +15822545959 +18563924987 +15891853897 +13624224757 +18533109464 +13913329080 +13986966650 +13690169261 +18507009093 +13665427900 +13609612230 +18572612530 +13954342907 +15156215551 +18848682456 +13636711769 +15861503022 +15895853300 +15115861383 +13632567906 +15195048473 +18533627279 +15184464068 +18862959335 +13978412646 +18846588754 +15105660306 +18539215741 +15852612147 +18889777385 +15819402575 +18826253215 +13611627978 +15180261459 +15151532659 +18891066571 +15839737555 +18851938755 +15867488976 +15141570670 +18888056037 +18557065069 +18547194897 +15851891264 +15152455057 +18586643018 +13631597434 +18893872338 +18834998662 +13688931656 +15802124536 +15872821842 +18525001594 +18862209062 +13951472831 +13929755124 +13991633782 +15893199302 +18580906370 +18895705946 +13993696813 +15162000964 +18579846557 +15808661364 +15877780497 +13923419820 +18874826424 +15899814705 +15880176584 +15840216268 +15859264690 +13662236854 +13674083296 +18829421136 +13679767700 +13990642402 +13920686306 +13625115338 +13947106244 +18519140491 +18830676362 +13979617535 +18895504152 +15134341439 +18507589607 +13681087418 +15819315826 +13621351553 +18533905596 +15108638114 +13957115582 +15188513700 +18881165265 +13625558836 +18824079618 +15814534873 +13655228277 +18525924268 +15894067432 +15194118029 +18838817248 +18811635609 +18547004772 +18809258858 +13634986822 +15155461063 +18889977052 +18897692254 +18849839941 +15828890085 +13623639860 +13958500493 +13971738283 +18835801364 +18522163170 +18859503655 +13957656106 +18855582049 +18804097422 +13942194612 +18546130795 +13944617732 +13961667819 +18813103369 +15154073459 +15126780139 +13620039956 +13980029784 +15878690878 +13625578852 +15885196056 +15156116699 +13916867531 +15836669365 +15179187628 +18854158021 +18597927902 +13687788646 +18879326986 +18574311492 +15805508831 +15838394224 +13991643626 +15807945890 +15130816279 +13611098996 +13660278546 +18598047542 +13989260029 +18891210050 +13979599536 +18532861362 +13698854991 +13954671941 +18580790425 +18546436510 +15854399076 +15177579032 +18887922027 +15157727192 +13958255370 +13637091154 +13630735365 +18853224810 +15192624586 +15127056769 +15165455134 +15846247218 +18803389379 +13606834061 +18505256672 +18817617993 +15897009245 +18892869993 +13656881096 +13678139164 +18537411466 +13935518536 +15110195384 +13912954739 +18514794389 +15803927253 +18851737236 +18843204390 +13628630882 +15146452953 +18858509408 +15195889217 +13925661610 +13962433607 +13680020520 +13984399422 +15127833381 +18866873485 +13646819681 +13983919269 +15869855964 +13975937491 +13673882201 +13680496281 +13617422635 +15139184357 +18871621865 +15135754877 +18868444700 +18863736826 +15850279297 +18538167791 +15145931299 +15125199541 +15895221755 +18837138012 +18574178888 +15859533558 +15130018936 +15883765768 +18802612255 +18500863846 +18540446894 +13968191677 +13696444251 +15177646786 +13673540760 +15122175749 +13920025551 +18519910873 +15864018251 +15855515806 +18523837034 +18808143370 +13637421087 +13993137212 +13964410226 +18578330803 +18571947193 +13946440624 +13944630958 +18876615645 +18896258701 +13977469804 +18864602718 +13625673723 +15879051973 +15115012521 +15804244672 +18599361835 +13612002776 +15157720482 +18543316327 +15137010614 +18542577146 +18828745693 +13910857570 +18868525207 +15804316532 +13658701532 +18556363339 +18896762750 +13605811683 +18827621904 +13933590646 +15153057552 +15854090853 +18846071530 +18805287779 +18568603763 +18581602364 +18863393280 +18873541317 +18832325134 +13643170572 +13614100619 +15182269042 +15820794021 +13939124256 +13982904156 +15144997158 +15821968292 +13982069081 +15110358447 +13981409979 +15850682505 +15121587139 +18565564308 +18816609400 +15140482629 +13976455060 +18890184681 +13957302158 +13673147254 +13654909266 +13640187917 +13647900342 +18565684891 +15153401012 +13967138105 +13613296696 +18523993561 +18518465732 +13685155645 +15100446554 +15180725104 +13623749202 +13904221829 +18817726981 +15184258762 +18581767896 +13916245002 +15896229449 +18526805249 +13912530807 +13609303247 +13923702699 +18562143387 +13989071680 +18593753572 +18572840142 +18873694715 +13613300917 +15893210071 +13985205691 +15154836353 +18872929048 +18564648352 +18876763140 +13995353573 +13696758483 +15162596851 +15884995531 +13903799507 +13954533561 +15857979503 +18877286688 +15809999808 +18594000269 +13973671689 +15175785057 +15175234354 +18809150869 +18876488380 +13985612060 +18816986628 +15188121624 +18524073972 +18824383217 +18879985472 +18573318431 +13655503781 +18567986132 +18835552214 +13625076408 +15129278862 +15876982590 +13644225574 +18821300943 +13693366761 +15839526988 +18891067099 +15163751371 +18521500146 +15190050904 +15162737758 +13918194105 +15143195589 +13628629713 +13683131928 +13993641098 +18809211218 +18594022383 +15143661528 +13620571619 +15829866808 +18518577130 +15175711830 +18848315880 +15858908791 +18867828546 +18800141908 +18596356754 +13936235601 +13687070165 +18847125530 +15156193768 +15102322839 +15175891890 +15899366896 +15825676719 +18838402000 +13639598326 +13620280119 +18864304860 +18848687168 +13930207596 +15172819231 +18864704684 +15153200729 +13633741380 +18817213559 +15162336809 +15127082639 +18534814709 +13694078167 +18587656502 +18867714011 +15803091330 +18555431221 +18596223726 +18565886894 +15134660561 +15818070607 +18884239947 +15818728656 +13989520917 +18804367850 +18865506982 +15870114577 +18594828821 +18547352543 +18581417048 +15150272073 +13928091769 +18515622957 +18589089411 +13619033939 +15193635846 +13668215787 +15808466671 +15197078432 +15855563694 +15117965137 +13994549334 +13615461549 +18853928444 +13600126439 +18837893463 +15813041626 +18853328966 +15119179780 +15123812328 +13615261222 +15191947998 +15820107618 +13626911095 +15875519755 +15819657425 +18504769573 +18804003928 +18882360039 +18515137595 +18516364784 +15114160123 +13991383456 +15140362378 +15154024283 +13986266548 +15167151402 +15197914939 +13674728500 +15134147620 +13917478025 +18865519814 +18822449757 +13697944898 +18552369261 +15141611266 +18876432701 +18567410969 +15816503594 +18835340254 +15867873344 +15851417945 +13942897218 +18588056773 +13656964567 +13977702230 +18589851467 +15811826655 +18816497820 +15161000763 +18866141069 +13917148287 +13626306264 +15837442900 +18534546898 +13958020054 +18597585081 +15854937251 +15841482301 +18591278210 +15113461454 +18855088147 +13975204561 +15163089725 +18820484313 +15103338668 +15843508698 +15815069077 +15889568638 +13699694267 +18528617594 +15867588795 +18885097707 +13621356379 +13615153815 +15110137476 +15876438074 +13952668442 +13940648110 +15111885048 +18542912707 +15810224802 +18862873500 +18558867316 +18817531774 +15104623226 +13672863155 +18825062361 +13902154629 +13928295338 +15185434870 +13965224899 +15874427808 +15858410580 +13929222095 +13647076962 +15829673762 +13692939500 +18844661211 +13922775557 +13930462918 +15824221560 +13945810943 +15833383176 +15852390252 +18516855202 +15142114926 +18506724710 +18846280871 +13695132914 +13663144379 +13999937456 +15153395157 +13957048121 +18546176878 +15862647998 +15178781351 +13671609770 +13995820562 +15807427803 +13920240697 +13990161120 +18844800222 +18852285824 +18889211971 +15848173174 +15807727157 +18597000362 +15821863815 +18804258720 +15127233008 +15855620991 +15121695392 +15803229185 +13914427235 +15889312411 +15115718489 +13692205999 +18863364732 +13689924197 +13670324175 +13954528862 +13665982676 +13973417765 +18802026215 +15818348549 +15870030395 +13617999761 +15165851531 +13903479640 +18544117120 +15169258515 +13651467247 +15834800592 +13676921885 +15883069938 +13926034896 +13949385539 +18864329485 +18516456648 +18855298288 +15192754898 +18576125202 +18509182621 +13640905481 +18508580521 +15871760594 +13644554189 +15872854863 +18528563429 +15193238526 +15149198920 +15196304074 +13600027105 +18851165318 +15139205558 +13905951744 +15815156543 +15185898746 +18808546309 +13965046582 +18883443296 +18585923847 +15118057831 +13904035202 +13946594369 +13603930863 +13984992528 +18830954943 +18846821676 +18537217744 +15133685101 +13611658386 +18836754585 +13687663585 +15864834752 +18522431806 +15199742515 +15178018013 +18856784814 +13976686592 +15136807607 +18503350475 +18824492400 +13699703681 +13931218725 +15858770849 +18501248298 +13987918188 +13678367205 +18563471753 +15898837190 +13945141725 +13636282403 +18581057417 +18579317165 +13971224500 +13931903962 +18865514501 +15829781554 +18827501626 +18801499745 +18857963252 +15133857338 +13911195188 +18583814177 +15815226411 +15141646103 +18854478698 +13675623901 +18885012712 +15131950137 +13915195377 +13610670068 +15863970900 +13642295682 +15110974186 +13642792367 +18800077687 +18599184387 +15892505602 +18581269253 +13638306477 +13988554134 +18516269409 +15833238684 +15151853850 +13973347632 +13637123811 +18596802394 +15133261828 +18585828488 +13980039526 +18813273890 +15857598271 +13636905627 +13937702280 +15184535179 +15184628410 +18894768594 +13920214461 +13929436975 +13646768576 +18830902086 +13970525227 +15197765673 +18580375661 +15127156876 +18889174593 +15166285403 +18528596475 +13643033856 +18839359322 +18853684291 +13684989292 +13911315946 +15875984819 +18536122728 +13908138774 +15103649094 +13948780088 +18563062593 +13981920933 +15890008120 +13957052186 +15853960016 +18832707077 +18522845675 +13929891538 +13682951221 +13960268257 +13909261478 +13618221260 +13612742267 +18580553113 +13966634302 +18596131484 +15118713549 +13693542628 +13662046678 +18557917944 +18864735803 +13665333233 +13981363829 +18539599401 +13605558570 +13649125837 +15175998658 +18523318403 +15854040205 +18890338981 +15112294831 +13921016672 +18510796922 +15141586410 +15821977004 +18849426941 +13969397838 +15845120474 +15138109385 +18535282521 +18801067469 +18854515586 +18891315552 +18565383608 +13696673025 +15119302162 +15861638490 +15881632009 +18854470108 +18827806415 +15183715982 +18861854931 +18840554047 +13942821165 +18529135567 +18579853122 +15818707567 +18803767893 +13632042684 +18516458372 +13678844309 +15136857438 +18562055168 +15189181581 +13910276261 +15846832408 +13976320400 +13635551998 +15142392501 +18517272383 +13915615692 +18853234071 +13600635216 +18831591563 +15886976768 +15135578049 +18868933245 +18566804295 +13979759580 +13914494069 +15165217830 +15192194804 +18563472943 +18813019776 +18854503642 +15157117848 +13611827832 +13968714806 +15193646069 +13980505563 +15847701946 +18566308893 +15187749884 +18864928362 +18857177965 +18894588783 +18804780365 +15146436777 +15870136975 +13971425068 +18833929613 +15854965499 +18835985478 +18583546870 +13649724779 +15803010935 +13918589976 +13666770417 +18889958113 +13658051984 +15810119473 +18864258469 +18583343196 +18807653624 +18879489233 +13679061757 +13606484584 +13608600017 +13674370397 +18859002090 +15127400073 +15804399928 +15178816546 +15108460520 +15164289958 +18518106024 +15849121021 +18578733813 +13961875038 +13910129120 +18539579554 +15807858603 +13645706691 +13981784607 +13643543823 +18811792121 +18845184027 +18544460795 +15111963558 +13955315666 +13646854090 +15161218819 +18581288677 +15815893629 +13674326723 +13681804549 +18896606124 +15122672789 +15881548419 +15193443012 +18891930103 +13991862258 +15120744289 +18876904570 +15844050289 +18546590639 +15805654916 +18896256180 +18587781801 +15870990721 +13659086188 +18544343435 +15865807515 +13648503694 +15125244486 +15813791449 +15831417854 +13658435944 +15800867780 +15125670280 +18888442416 +18839508165 +18504588531 +15129159665 +15144687986 +18550225671 +15165225465 +15165985118 +18859026724 +18865211563 +15138478866 +13643510216 +18596500807 +15876687721 +18822258815 +15193605237 +13699825036 +13655256854 +13661191162 +15834679412 +15130840677 +18560798934 +13662993359 +18819293386 +18553092942 +18847152674 +15113131421 +15844319401 +13934557613 +13900390011 +15128812190 +13641937435 +15173059910 +18817163098 +13982142501 +13925909611 +13987449342 +18824351170 +15807491401 +18858538186 +18522134579 +13643540883 +13998466588 +15161894924 +13621478439 +18570561276 +13672541799 +13659143255 +15161832324 +18515099264 +13970700464 +15180741878 +18508825617 +15837351024 +18806285998 +18866651885 +18512562050 +15157771971 +18892724813 +13940534139 +15163730684 +15849711590 +18545905257 +18831312639 +18853596374 +13682624913 +15887951226 +18510146688 +15833060857 +15187938205 +18592807291 +15890559635 +18875429691 +13616920063 +15898723131 +13999921746 +13679998363 +15838213750 +15150321375 +13617488515 +15103712628 +13690133437 +18539656731 +18857882757 +13926671734 +13621098225 +15109155508 +15102107001 +15835906302 +18887158122 +18844866394 +13957532069 +18537706597 +13656034337 +13966035507 +15840954889 +15158004061 +13665667924 +18819607761 +15807846240 +18537539615 +13661052713 +18898196408 +15180086371 +15873202949 +13603932396 +18556512017 +13931587373 +15861353952 +18805243803 +13629596607 +18595667110 +13965448152 +18513878024 +13953818327 +18821276860 +13699377077 +18828115012 +13602224370 +15830965935 +15180566774 +13912234515 +18899837567 +13972466748 +13637286338 +18843424492 +13689147945 +13912101096 +13664748193 +15167249426 +18887874392 +18519929628 +15819599991 +18823110890 +15163212924 +18552444006 +18832784415 +18582721424 +18593629073 +18835486723 +13963347309 +13610684931 +15151536735 +15855624535 +18856398349 +15124246085 +13681716897 +15848723711 +18872181536 +18547533053 +15186299985 +15199829308 +15111738267 +13673618582 +15895712198 +18894334424 +18883433515 +18888758731 +13940898165 +13925911692 +13639073238 +13692754747 +18511665041 +13656966004 +13630686970 +15831916635 +13648236987 +13615958096 +18582700295 +13943853509 +15863289981 +13680555390 +18889172822 +15880705544 +13913083009 +18519091159 +18532570698 +18855627198 +15801503149 +18884504277 +13606872718 +13902138144 +13931829819 +18856171102 +13986784756 +15186561413 +15806074306 +13938819894 +13929613399 +15867274135 +13602640468 +18574392889 +18540851159 +13620207865 +15139739476 +15171848390 +13989278345 +13684461233 +18536892182 +15179280564 +18580556283 +15816964607 +18835774016 +18888650870 +13924667953 +15176801752 +15188732940 +18856530848 +13999613515 +18883585548 +13632663256 +18504855360 +15120774673 +15180767321 +13942649213 +13676464201 +18500110992 +18826214613 +13633958358 +18570949869 +18587455061 +18897148780 +18882269489 +18881315966 +13676458492 +18526731426 +18805777487 +15827792041 +15179793214 +18836369210 +13982084110 +18818980404 +15880673556 +15884189408 +18853483707 +15147621946 +13973893548 +18826989565 +15126049283 +13944191128 +15890975389 +13914171826 +13937516661 +13915207133 +13656399237 +15871458103 +15884364492 +15164200861 +18821792484 +13985431599 +13648925785 +13949653447 +13629809995 +13680679056 +18543795690 +13656409162 +15877324141 +15830592603 +13637720865 +13636632595 +15101008127 +15891264945 +13658449658 +18816270501 +15143205838 +15810520622 +13956105834 +13985795310 +13644185277 +18531037188 +15142051649 +13693592263 +18586547017 +18822127727 +18808364204 +18878218643 +18556283321 +15864748513 +18803144132 +15815249579 +18573462414 +18551065591 +18828068780 +15886037516 +15116331029 +15166395200 +13929053771 +18584383091 +13687611871 +18593540291 +18876160241 +18536767659 +13630173906 +18561778503 +13668287090 +13607501348 +18504001755 +15163423304 +18835991644 +13609537512 +18825423824 +18593229961 +15135935599 +13668130690 +18516672471 +15151500920 +15178794341 +18597213778 +15821847938 +18824474965 +18801822012 +15882695327 +13996761707 +15140218665 +18529208030 +18540132664 +13953541741 +15831533842 +13670694357 +15140865505 +15170082187 +15812387365 +13968796055 +15879411763 +13676538965 +15144761028 +15115543373 +18575632084 +13669895905 +15141446255 +15148388598 +13659749752 +13952980927 +15853280428 +15855300676 +18861809311 +18864972588 +15103434190 +15844616947 +18842071932 +13946415374 +18533266906 +13678066684 +15198952132 +13624042582 +15895175230 +13912313416 +13618593709 +18878470383 +18522357235 +18829737753 +13646631985 +13664701856 +13664691878 +18828751362 +18574417319 +13646210386 +13693835904 +15847038912 +15896516251 +15884388525 +15164747607 +18886297879 +15857793320 +13943051698 +13953953317 +18829191582 +18895853954 +13698095197 +13647078472 +13646690127 +13616942284 +18538946189 +18877069092 +13935029345 +13694475778 +18812413584 +13624928496 +18527303248 +18883260826 +13914664374 +18526943908 +13661910215 +18838910944 +15821354321 +18875014471 +13678727985 +13994185868 +18591450760 +18557569333 +18527894280 +15173932745 +13986020880 +18863971893 +15126656520 +18501487730 +18512405845 +15168734500 +13681551306 +13945823453 +18548417235 +15888668910 +13906189252 +15883176767 +18818142329 +15878171535 +18570708426 +13695810561 +18809901264 +18879644176 +15167835034 +18575295080 +15168890616 +15814100855 +18854270131 +15876343308 +18864688494 +18599696087 +15125461972 +18898715567 +13636590775 +13653032104 +15174305173 +15873371279 +18599997496 +15819432853 +15809274078 +15100928182 +13610965052 +13903211134 +18540222540 +15848174543 +13921661980 +15835756690 +15813199011 +18894460543 +18896958977 +15169442326 +15130444723 +15178784582 +18575737464 +18507251383 +15807008045 +15881679022 +13992228786 +18578595248 +13675339770 +15882058966 +15155971934 +15160915191 +15135390713 +15855518710 +15865524439 +15871508092 +15843278486 +15857796777 +13665766455 +15191180915 +18587874442 +18828054617 +18833811301 +18872121389 +18597057105 +18813224883 +13902890558 +18548355171 +15137483756 +15824821161 +18514165180 +18584715904 +13944060888 +15866294225 +15104645889 +13968212321 +13616614321 +18597303646 +18852036594 +15177668050 +15810107986 +18552927206 +18576115727 +15157328088 +13698628276 +13960841420 +15188458727 +18833212096 +13650231040 +13601076087 +18876006361 +15849707782 +13699366714 +18544221537 +18532027557 +13955747780 +18571676148 +15109955136 +13923805327 +18855887212 +18828722692 +15109751872 +13623286502 +18574400083 +13945465926 +13667310128 +18887182023 +15832326135 +13928956315 +15110427003 +13618342729 +18827745756 +15159337773 +13924395005 +18879960338 +13631656245 +18580911430 +15820714014 +18870645717 +18888995753 +18815927442 +13912668745 +15891085954 +18530393313 +18871534252 +15838860700 +15130935765 +13904782576 +15108459082 +13660574037 +13681368616 +18830884709 +13965624570 +18584555032 +18818272319 +13911944001 +15886246894 +18517234356 +18505306370 +15830892956 +18572240787 +18557541808 +13996695835 +15187585519 +15128905633 +15182663247 +18581203198 +18568556061 +18807315310 +18538116161 +13958815732 +13606314004 +15153930357 +15843760447 +18569695169 +15199986819 +15162206526 +13976733177 +15857810575 +13607096080 +15881377186 +13974692484 +15829585357 +15858184454 +18567692522 +18800180462 +18878661915 +13980965130 +13630124559 +15899394848 +15813918805 +18827501808 +15134405935 +13623320122 +13657502837 +15196542995 +18523301337 +15873718746 +18541207137 +18887789862 +13954458627 +18580523152 +13912926809 +15841576048 +15866965145 +18886624640 +13671757557 +13620144479 +15868324792 +18849808043 +15128806701 +18870876461 +13600311448 +15891225612 +13959582435 +15883763181 +18889265781 +18862398517 +13669135725 +13631802894 +13670328987 +18817539430 +18564202741 +18824636216 +13976948645 +15807983589 +13952041038 +15857219746 +18589579556 +15839597687 +13977341955 +13600452115 +15866211980 +13625162532 +18511874770 +18518084705 +13609656344 +18834536940 +18804322461 +18831885996 +18533086385 +13644374423 +18572719004 +18566150666 +15868926993 +13607572264 +13918627808 +15131408244 +18871090457 +15853232528 +15132512989 +15884123018 +18814947842 +15898412368 +18596105310 +18544579137 +15136667384 +13687944795 +18557922630 +13659265341 +15853609891 +18861175363 +15805931795 +13657707615 +18516590837 +18845654932 +15880833670 +18889586837 +18544581752 +18528047154 +18825531556 +18599925538 +18824656086 +15868832065 +18500354188 +18836124104 +18546173090 +13649420393 +15826023885 +15856295453 +15111637985 +18818318243 +15874578235 +13919504570 +13683183086 +15820476568 +15174537513 +15895606890 +13685578776 +15890493355 +18529866238 +15198701274 +18864153095 +15803327702 +15181430017 +18502642375 +15855128711 +18883307335 +18806268060 +18844729180 +18509372573 +15183356723 +15809307324 +15186808268 +15822164543 +13645343326 +13605117299 +13629149802 +18865100944 +15886641508 +13919580716 +13902408575 +13679279546 +18574144431 +15822040515 +13908410866 +13905150693 +18832445409 +15130487977 +15176195932 +18502105603 +15834157314 +15829435538 +15858955016 +13958839895 +18504851503 +13605528670 +13982188482 +18896954771 +13681409121 +18898147501 +13948417900 +13934935477 +15893313185 +13995563366 +13968298733 +15100906795 +13942931267 +15814380774 +13695456521 +13634620172 +13965416608 +13932614255 +13618248883 +18841241625 +18562390646 +13954750214 +13921999424 +13994870207 +18567080338 +18524543694 +15874748142 +13639443553 +13939533168 +18577166987 +18513423134 +18532932374 +18565173595 +15187192704 +15124508027 +15877725280 +15157515484 +18531707670 +13921043794 +15891169736 +13608791779 +18845248939 +18559614341 +18829828855 +18878616294 +13625796295 +13942870774 +13937118139 +13627406104 +15897834519 +13900538317 +15836756664 +15197877959 +13942768003 +13941390238 +13658988204 +13628258946 +13972317830 +18504562578 +18532651423 +15190018693 +13963991749 +15117540230 +15140666334 +18599239552 +13942431426 +13961949968 +13999525926 +15194686742 +15171193955 +15193483922 +15189279703 +15848564984 +13969395601 +18877695874 +15880238380 +13652199404 +18826993293 +18812362235 +18891624021 +13644069783 +18538200941 +15163450762 +15113631587 +13605642260 +13943884111 +18879486449 +18589370265 +18593575973 +18872552731 +15120341969 +13607460780 +15180186005 +18527481410 +15172183700 +15154557401 +13904037850 +18828255449 +18816161315 +18874613590 +13998835825 +15168244213 +18537632693 +18864253316 +13691369594 +18515580223 +13964613536 +18830066249 +18545495202 +15839744700 +18873508938 +13934556800 +18582255917 +18834041190 +13672691893 +15820667514 +13957513083 +13687245043 +13984733112 +18830151959 +18561570867 +13952926132 +13922383217 +18558749318 +13694734201 +18846243059 +18880628645 +15137714982 +15879723702 +18516483935 +15188608858 +18837136614 +13699253649 +15811019298 +18503140571 +18564079986 +15877728414 +18879684505 +13602820305 +15158522281 +15199326698 +13918601563 +13607014427 +13911013777 +18529915834 +13974288455 +13924329824 +18569416528 +15138272471 +15895194546 +15891628448 +15120007591 +15121919945 +15168815386 +15115713823 +15117588520 +18595903925 +18821377687 +13986046118 +13686820106 +18552723496 +15154636014 +18541391813 +15873394071 +15875150889 +15851456250 +15101068878 +18838163797 +18887224106 +13928467183 +15155040411 +15156562198 +18813407527 +15895026067 +18546191259 +18578670283 +13628005033 +18581204794 +18878070198 +15158647703 +15118861778 +15867554813 +15818411839 +13951037883 +15198968295 +15192262969 +15800524236 +15865240915 +13978212989 +13601085891 +13949542673 +15175676619 +15199576405 +18807157961 +15806639959 +13939529792 +13926977250 +15838357659 +18821914318 +15192704695 +18564969713 +18875647771 +15154543476 +18532585787 +18504588196 +13656924256 +18828003209 +15889494730 +15104714497 +15110873004 +15823748207 +18862737787 +18881232048 +15148189500 +15842113352 +15194514892 +18899475827 +15800393409 +18553961580 +18831684128 +18863046483 +13964472515 +13668336417 +13645392082 +18812569890 +15829649944 +13653308461 +15884068754 +15888085272 +13647587021 +13997107396 +18516773272 +18531903551 +13963353484 +18872168664 +15877140332 +18544908246 +18810191068 +15147740361 +18882323177 +15826990806 +18568766782 +13672327985 +18525181773 +13607651796 +13999774293 +15876146270 +15176695211 +18808037468 +13692225867 +13929877581 +13911444976 +18530426227 +15852052015 +13639239445 +15116068035 +15174676197 +18819267278 +18854628084 +13991467375 +15898861158 +18850758013 +13665672606 +18522462647 +18844602894 +13653907069 +18597835790 +13655930089 +18504316739 +13642644990 +13947594709 +13977560926 +15840802720 +15100976642 +15151537164 +13905773437 +18520954802 +18850569374 +18899127369 +13935637121 +18862108778 +13939635358 +15130104381 +13926573697 +18869592123 +18510977584 +18881695211 +18867738160 +13918093396 +15181363248 +13910569335 +13679340394 +13685971046 +15131260947 +13909793756 +18876083667 +15855415326 +15888456766 +13969322519 +15118805826 +15837512704 +18870094751 +13937293627 +13614399351 +18509428538 +18539226348 +15851618204 +18841683630 +13608622331 +13931751162 +15826867453 +15182710416 +15888219880 +13603845907 +13995030911 +18895155374 +13914981860 +13923442462 +15847911721 +15166213749 +15172722079 +13628759997 +13979882550 +18594429475 +15172751983 +15837631793 +13667763289 +15146507799 +18895235377 +15829266013 +15122259705 +15882256365 +15893040405 +13654668627 +15104796509 +13997568192 +13944870214 +13684411811 +13934837699 +13694960886 +15183894332 +15820443071 +13975622910 +13608905396 +15182463202 +15106300939 +15866353725 +15804041379 +18543352560 +13632748679 +15830065994 +18840307865 +18812521905 +18577156945 +18846112039 +13675930529 +15801413456 +13627597636 +13978338731 +13694843578 +13944085680 +13967862004 +15172686579 +18892912448 +15845368260 +15183737292 +15196010769 +15872102545 +18576152796 +13961281662 +18800686079 +15833103811 +18575732313 +15898844698 +13953442302 +13973318223 +13624237300 +18548025553 +15881860153 +18845953012 +13906628125 +18522284726 +15156708664 +13664799781 +18827256862 +18576247908 +13937521696 +15806873570 +15822996996 +15841245102 +18537621306 +15887824533 +18804768923 +18836327967 +18867622926 +18858159027 +18813722363 +15172550943 +15137072398 +13620190198 +18559004139 +13905497186 +13935081604 +15111246604 +15140568618 +15816922687 +13650441335 +18812790912 +15859194827 +15125307838 +18532844732 +18824839537 +13958300540 +15188515019 +15191191408 +18868317703 +13622732365 +13674143995 +15166326696 +13968058577 +18886178178 +15197916096 +15818866933 +13907944718 +18862585852 +15801763450 +13615537106 +15127325907 +13919749362 +13631588235 +13689411896 +13621625951 +15894715773 +15147183216 +13949164499 +18822094155 +13926039998 +15833549768 +15113739767 +18584121097 +13634972907 +13986893974 +15814047619 +18566482219 +13639202431 +18884006756 +15841596780 +13602541924 +18876349244 +13992189967 +15163267495 +18850817177 +13647087815 +13630223626 +13944060643 +13964010242 +15879915122 +13642753273 +15128086565 +18588887355 +15121897023 +13966584703 +18529628228 +13602699048 +15108131786 +18590654998 +15834686967 +15842986295 +13925995813 +18813634327 +18857501700 +13643068285 +13985544848 +18807325746 +13961336222 +13681015572 +15842614543 +18581084717 +18538794980 +15140462571 +18899522668 +18838751656 +15136147662 +15830353746 +15168026018 +18538615262 +15132439936 +15816166545 +18802426823 +13910719732 +15809557631 +15852780465 +15862162524 +13915397851 +15824995935 +15818492338 +18508482717 +13904634711 +18571280721 +15856476328 +15875041725 +15813842189 +15856646754 +15141007820 +15817312408 +18539628181 +18556863855 +13658315711 +13623340945 +13903808527 +18538053933 +13983478679 +13950391548 +13697190313 +18872177292 +13957914692 +18508298254 +18848758106 +15114067381 +18800111136 +18517587753 +15101283990 +13958229074 +18591727142 +15118744394 +18807551972 +18536797994 +15193233564 +15130264765 +18818450277 +15179649425 +18529165535 +18536102132 +15172804863 +18860152008 +15865227602 +18833610960 +18583818471 +13967257434 +13654107668 +13913486153 +13958704407 +15168968679 +13965716715 +13917080672 +13962118074 +15872682258 +18561248595 +13907949914 +15866206146 +18550880486 +13957491754 +18525802348 +18506569114 +15167249899 +15153640900 +18541337747 +15833561872 +13962573430 +13971402471 +15150057776 +13945051320 +15858985245 +13631286359 +15869434760 +15108893248 +13609710455 +18871877349 +13671637054 +13983453661 +15872139030 +15871879915 +18562298926 +13907827555 +18509186691 +13999552858 +15157197200 +15131437609 +13973798134 +15802047221 +18801512401 +18877383905 +13974832708 +18801083896 +13677837706 +15142937434 +13917072190 +18855580177 +13682350923 +18806798910 +18528569441 +13610053139 +13653073740 +13632486470 +13610479687 +18554349801 +18573697908 +13631068297 +13927178016 +18573785948 +18852566777 +18802214936 +18824497860 +15847315703 +18884564672 +15860380380 +15168665670 +13940314914 +13606879589 +18581849024 +15855583752 +15864330899 +13994370835 +13611834031 +15163755279 +15117942339 +18562730022 +15145591586 +13643778052 +18545218522 +15832919182 +15172523769 +18542543356 +15894855101 +13930084221 +15105045799 +15807901951 +13974052412 +13633433176 +18887168316 +15807283351 +13975110550 +13947339380 +13631052111 +13655879023 +13920487339 +18514755579 +15139020436 +13620169084 +18827970329 +15857089147 +13696014659 +15819401781 +15165034431 +13929269976 +18866675908 +15875389633 +15105281304 +13931724050 +18849802382 +15865667715 +13664815928 +13692406829 +18595436441 +18525124175 +13699179409 +18826691982 +18526405611 +15158638188 +18851856049 +18539230758 +13926281830 +15160881549 +15827598339 +13655405799 +18856941308 +13939468688 +18532444001 +13985803182 +13634239827 +15865984347 +18570152165 +13984424945 +15104052413 +15850252608 +15801949743 +13973659239 +13699365894 +18874038607 +18878179580 +18596374446 +13957119670 +13698630218 +15869859576 +13920665533 +15155981230 +15880741988 +18834719721 +18870709362 +13627679190 +13928781795 +15129262865 +15835218698 +15118791337 +15809082078 +18589554250 +15845886460 +13911246466 +15105674299 +18829243434 +13933704988 +18868911816 +15838886710 +18821276705 +15899034845 +13644893638 +18844826706 +15847348760 +13608969753 +13620451525 +13682120841 +15830342313 +13943652290 +13934648326 +15871023829 +18587501514 +18819835730 +18551537587 +13990298545 +18552765309 +15147672341 +18597986264 +15887062271 +18535184800 +18510162196 +13944652750 +18523050797 +13606356654 +15814046589 +13614645453 +13671133421 +13948847054 +15143454711 +13613629720 +13958472093 +13619173223 +15140090824 +15103213069 +13919800400 +15176270252 +18510303862 +13654670196 +18860408756 +15172928067 +15132335973 +13933075136 +18861950895 +18516159381 +15823707487 +13995951890 +13979264629 +18826658087 +15888731125 +18842024884 +13601592188 +15829316420 +18566255289 +15873822762 +13642659881 +15821290416 +18569899684 +15811184711 +15826331197 +13687244565 +18541964953 +18517847468 +18816433963 +15162145453 +18558518179 +18873929581 +13607714027 +15825091426 +13918085921 +18810281655 +13666898208 +18827324310 +13985556924 +15864800118 +15181502111 +18824125457 +18568126995 +15895000783 +13980813973 +18806288170 +13913285649 +15137473321 +18824911560 +15868297098 +15850940284 +13962659031 +15834617469 +13604150083 +15886942581 +15130926565 +15809869088 +13972672127 +13679627998 +18593529452 +15125651218 +15150714606 +13918626179 +13609851692 +15840825564 +15176580556 +18556336352 +15166321805 +13624624223 +15150154505 +18559273323 +13667337649 +13957229056 +15118376127 +13974618455 +13974989769 +15826311051 +13674888033 +18555064219 +15813597779 +13628200967 +18883882593 +15834778685 +15812811597 +15883814527 +13994190624 +15889522451 +15120263332 +13684739335 +18837674128 +18592364221 +18838690616 +15862397500 +15891778676 +18854644800 +13637367023 +13910145140 +13660830167 +15887103524 +18553564338 +18533314203 +13973553715 +18568232678 +13658772624 +13634829119 +15887174141 +15133423976 +18538243021 +15174863066 +18837239371 +13687290635 +15828541245 +15161310824 +18895056252 +13660621943 +18543284309 +18570727781 +15810591824 +15815688373 +13687127886 +15191284355 +13935462336 +18801228371 +18891825097 +18598093547 +15874814092 +13966352777 +15194795897 +13910756870 +15827291834 +13640876337 +18592273008 +13661590490 +15876389373 +15183206257 +15184273366 +15857105704 +18831506591 +15133688574 +13954041816 +13677692288 +15121550789 +13683050150 +18538448635 +18884627730 +13687509001 +15112330945 +18591135620 +15168092757 +13604223406 +15834325684 +15145066353 +13638059366 +15124260727 +15175954465 +13623422254 +13954065011 +15123061811 +13951091186 +18531966323 +18835920433 +13653436725 +15140879345 +18889261794 +15878259629 +18564617287 +18827953899 +13968106653 +13957415920 +15835288568 +13972547992 +13647113519 +18819251227 +15184248230 +13919946002 +15884074537 +13680072836 +18856804862 +13697845792 +13982055156 +13688591774 +13953724303 +13905190678 +15811225397 +15861229840 +13682416944 +18866558916 +13934383716 +13930638935 +18898578875 +15855993380 +13692421197 +13979350439 +13963777179 +18807914271 +13630545777 +15800184577 +13677330899 +15135517609 +18835929541 +15184989074 +18816982732 +18544737478 +15826579611 +13687718207 +15132977340 +18590013218 +18576031600 +18549592963 +13639086338 +13991803547 +18890453580 +15862113925 +13964194870 +13926999933 +13985265043 +13930044382 +13901280978 +18852792550 +18572904328 +15861769093 +15171564418 +13971307824 +13999054797 +13653071408 +18545934530 +15805356470 +15813931198 +15816759268 +13607592372 +18893009031 +18841179901 +18879464800 +13996374551 +15128335150 +18583882577 +13647431059 +13900230674 +18850427081 +18802263990 +15186126398 +15169578616 +13605078225 +15816248776 +13646666247 +13692053807 +18525764752 +13615385898 +13621474358 +15886219913 +15139040382 +18869692681 +13676950722 +15816446144 +13934727509 +15184410899 +15185425062 +18875565424 +15851893908 +15114097647 +13913263469 +13928932873 +15863319304 +15872118298 +15162203790 +18583405773 +15860129940 +15831686419 +18804820158 +15179886592 +13941514853 +15855884194 +13951987871 +13946402415 +18545877896 +15121647830 +18594912559 +18898947325 +18830289765 +18590234042 +18536347208 +18821026595 +15872180081 +15114105998 +18831152081 +18502134724 +13988571521 +18802021342 +13901185141 +13627140666 +13608447443 +15880865105 +18573015852 +13903843342 +15837853507 +18596770258 +15896903809 +13999744208 +13696603143 +15848742331 +15141881678 +13908210295 +15101086723 +18508330079 +18895226462 +15891534929 +15823602493 +15809806066 +18834527582 +13687695567 +15850985402 +15866386729 +18843877328 +15195709277 +13613860737 +18597411725 +18867705642 +18581089080 +15103746039 +18845958299 +18867888120 +15101106318 +18591806005 +13681796031 +15833769438 +18589373811 +15124515254 +13903219324 +13956687322 +13904531379 +13642973429 +15154152883 +13972399701 +13656713187 +18843815079 +18506213501 +18521986251 +18857552535 +18835969895 +18802513011 +13902829670 +18844874549 +13688016043 +15194186780 +15158704196 +18551458367 +15122016491 +13601560177 +13611629347 +15153627156 +13623236129 +13689089252 +18576615290 +15191548777 +18590014085 +18585036630 +13695305388 +13618234910 +13914195084 +15862980024 +13651534461 +18516730961 +15146386906 +18558656138 +15145508250 +18561763850 +13632905456 +13654430680 +13652146511 +13662495130 +18579444145 +15825019536 +13919311503 +13618952280 +15843097401 +18807623811 +13621404264 +18882141265 +15818829032 +18828269093 +18821752299 +13959626929 +18818576719 +15842928524 +13916663673 +18583534173 +18539156077 +15116255568 +15133111066 +18816031243 +18514789827 +18832773740 +18894915882 +13622419077 +15802353552 +13641544923 +18568797023 +18569892969 +13942072334 +15102014076 +13927960782 +13990767611 +18825708764 +15813095626 +13948696914 +15843328517 +15194364365 +13962117805 +15831380537 +18862996029 +18521739812 +15838433789 +13986028000 +15868919835 +18532324861 +15147073043 +18574108564 +18899638983 +15184230885 +18817379551 +13924551428 +18824380970 +13670548631 +15136653928 +13678670970 +15195990325 +15196177946 +13900712315 +18895991548 +13994841872 +13672107184 +13942479390 +18874723979 +15167263004 +18598857479 +13637134784 +18854057141 +15824952618 +15119690657 +13916788451 +13691378388 +15831054874 +13674740077 +18850776168 +15122767878 +15870397089 +15100899360 +13654730478 +13694454334 +13690491267 +18527328216 +13682690141 +15114489663 +18579655955 +18826119163 +15157719134 +13629836158 +15847149072 +13645244630 +13986714333 +15864755423 +18887980714 +13648509606 +15195929882 +13905387898 +15812149090 +15158277144 +15884438504 +13942427099 +18595207992 +13984534895 +13973734324 +13644026584 +15869908578 +13964565435 +13691500408 +13902946468 +18819939480 +18825524846 +13933316016 +15193363542 +18552210640 +15865450814 +15810211052 +15147951250 +15128712045 +13947425918 +18820422791 +15858946538 +15878909266 +15133617562 +18599195718 +13645457899 +15873143646 +18893929217 +15135996935 +13968659263 +13692679415 +15875403321 +15827142989 +18867930528 +13935518704 +13669226586 +18802810281 +18523880321 +15134529442 +15877404155 +18841344610 +18560538857 +15863068220 +15185723523 +15818511876 +13651871981 +15868531915 +13654720883 +15845850111 +18592474144 +13995320618 +18810397702 +18851943940 +15168529933 +13648285957 +18868423902 +13951040663 +15801639674 +18867873027 +18832100105 +13903366084 +13963836768 +18853959239 +15844987399 +13689478705 +13988073619 +15122909504 +18503012319 +15824989415 +15849484035 +15148611688 +13694985368 +18819281731 +18507528240 +15816949598 +18510604297 +15897988130 +15847095532 +13992528025 +18514478482 +13935284953 +13680348814 +13962361118 +13952240203 +15147658766 +13657331360 +15815595411 +13909605015 +15160511699 +15154789485 +15190886904 +13955218074 +18824225328 +13917209029 +15817053146 +15853474600 +13946903901 +15138269667 +13956264973 +13913113790 +13957314435 +18529493692 +18554713440 +13990433205 +13970353803 +15832534186 +15130130636 +18886042450 +18848616649 +18824320885 +18595774420 +18834643846 +13942716162 +18507796740 +15833509051 +18827239106 +13993049935 +15152172378 +15812681416 +18841430380 +13615304437 +15897233307 +13615457778 +15176658374 +15127230130 +13908414604 +15136054259 +15817736380 +15152213230 +15841072971 +15860530941 +13905033974 +13686251671 +18858974354 +15816829022 +13652630038 +18575077291 +15866530273 +15885743683 +13917427789 +18872631696 +13621313866 +13989298823 +18529269325 +15114645371 +18892264392 +13667699562 +18847348715 +18836230094 +18563564901 +13995306229 +15846365169 +18587838752 +13636503071 +18875290492 +18580678071 +13627398531 +15871274297 +13970000401 +18826399753 +15172849193 +15173996491 +13946427776 +18866546767 +15122927129 +15187735305 +13664666763 +18879434651 +15160575008 +18506611003 +18862230021 +15832802485 +13946789437 +13686149342 +13958153132 +15846151533 +18842527696 +15111080039 +13634716237 +13956091618 +13917752835 +18546161349 +18841849202 +18542678137 +18852931896 +18832293552 +13976317455 +18827982992 +13620889290 +13688704384 +18835200956 +13981743660 +18891245985 +15802841061 +15826967298 +18863044786 +15828547730 +18857834311 +13608901574 +13991444619 +15828456129 +13936173221 +15103556517 +15802360658 +15816542014 +18501167256 +13926121999 +15802551260 +18896049071 +13951784364 +15155728365 +18570408785 +18834679022 +15188873995 +18563089863 +15821756775 +18563373892 +13602477772 +13974373110 +15850683655 +15134205916 +18803782597 +18551170097 +18872205511 +15165378010 +15190753455 +13918027332 +18571423872 +15840008502 +13644717430 +15133253565 +18567282873 +13942593378 +15841756896 +15846203228 +13682666783 +15844547321 +13979839749 +13904601334 +18874231096 +18571183052 +18882880222 +13602661783 +15856765507 +13985359590 +15128939050 +18851459769 +18888040562 +18503994119 +15131461166 +18508449219 +13689380388 +15805093338 +15183358135 +15130460989 +13926904663 +15814091031 +15833963410 +13991645811 +15813471210 +13617877951 +18575690390 +18577400875 +13982532615 +13689888153 +18576534766 +18825850849 +13959898701 +18802119340 +13953134381 +13946819405 +18807409089 +18827549858 +15148772714 +15114408730 +15891415122 +13694672827 +15171481263 +13634797333 +18555859916 +15128629579 +18852256725 +15150247685 +18865370980 +15847360304 +13617915987 +18817318367 +18851443086 +15189780040 +18558820782 +13636935574 +18871326703 +13638298911 +13684965587 +15836800939 +13620174294 +13616620329 +18801488356 +18587756214 +15842624734 +18826843554 +18867859861 +13672013984 +18851654763 +15159567900 +13964247569 +18850331883 +18857839559 +18870523229 +18887051737 +15164064084 +13913816463 +15834262689 +18580218057 +13953077538 +18562839537 +13968717057 +13952665129 +18843695488 +13932831999 +13686790797 +15116129110 +18811013657 +15144388683 +18855695215 +13909255796 +18823206543 +15830931154 +15167768957 +13949367769 +13977746916 +13967298862 +15804854374 +18566720586 +13908672464 +13606302217 +15126307791 +15107728592 +15196612173 +15145246484 +18870051276 +13993979873 +15882073401 +15115959592 +18551030180 +18592730108 +13636010818 +13942519031 +18522282271 +13679745322 +15155323523 +18836915482 +15122374572 +13949417170 +18523116120 +13972935312 +18554974178 +18525500566 +15120106764 +15111940989 +18846441573 +13649659137 +13933223505 +13974952699 +13656295856 +18554061680 +18863419428 +13635120897 +18545458561 +15173968103 +13621613942 +15151454250 +15185627417 +13942137766 +13976449614 +18518337482 +13618423130 +18578580426 +18599794842 +18590781248 +18550589456 +13954922994 +15115414644 +15869846172 +18848014061 +13678435017 +15116500277 +13622236096 +13984523210 +13916890933 +18506468993 +13967360142 +13994090914 +18813054167 +15823973447 +15863580083 +18513940258 +18828878322 +13602925868 +15155448448 +18899755916 +15111544142 +13977024656 +15876802936 +18818333106 +13654661639 +13975387761 +18505746690 +15185762082 +18565178314 +15891270795 +13678988949 +15846619135 +18590588579 +13655275532 +13609868719 +15125792404 +13660923481 +15811543538 +15805850093 +15840559341 +15878789126 +18568884355 +15163929850 +18575302775 +18851500460 +15862413999 +13674601930 +15140871029 +15152596178 +18818318142 +13653594905 +18590395230 +18849775160 +13994836883 +13646369324 +13686492555 +13675415096 +18817405092 +18818655852 +13667652668 +13912823933 +18564236040 +13692641893 +13986393166 +13918405894 +15168617115 +13935954625 +18876923457 +13958479726 +13953936734 +13998467008 +18586192404 +15841228067 +13908459922 +13931203642 +15807213661 +13966310832 +15171605285 +13631785507 +13666286484 +13605007130 +15100728755 +18896393410 +18800081347 +15816149191 +15147993958 +15141127422 +13663183012 +18886815602 +18577267888 +15880699262 +15814456893 +15865070166 +15897045584 +18511545468 +13651737631 +18872659901 +15105056025 +18868777726 +15876040594 +13638946533 +15149649035 +18884927514 +15184974538 +18512199910 +15865029641 +15899086219 +18575055155 +13609034435 +15872711240 +13651937320 +18587095410 +15806024804 +18827597520 +15817028733 +15176833691 +15889890787 +18892640328 +18509827538 +18868436536 +18557791316 +15853351592 +13693503436 +15169032641 +18520775199 +15816042112 +18899669238 +15139872509 +13659896923 +13964182283 +15177229856 +18803371626 +15892302283 +18896491359 +18812301620 +15190445672 +15821888649 +15175748299 +13992708044 +13654678541 +13929865398 +13643179833 +13653503236 +18530014424 +13667600264 +15820793307 +15868886125 +15111188548 +13997416504 +18597769266 +13965150314 +18860877337 +18504721912 +18522435093 +15885427046 +18501402906 +15179993695 +13601740650 +13955709964 +13934003024 +18518323485 +13625996783 +18581294224 +18582842845 +15809132588 +15874272488 +18884052047 +15868424998 +13625117604 +15131757775 +13953704488 +13607247132 +13922583233 +13978644905 +15153642009 +15862025235 +13908310558 +13994118430 +13990499456 +15164608088 +15889196605 +15826318164 +13902826835 +18889482728 +13910401180 +18539150237 +18579872473 +18539750878 +15838641418 +15879695316 +15120217479 +15150402997 +13695246152 +13987438747 +13639913290 +15129625352 +15814100858 +18562698567 +18550970654 +13625817030 +18860627103 +15108726971 +15852313143 +18894107110 +15831287243 +18536636939 +18877125036 +18514732851 +13693537578 +13602156480 +15123889110 +18571443432 +18831926920 +13998230382 +13644131469 +18579463384 +15132703404 +15877417863 +13956384169 +15812432161 +13915005238 +18546105072 +18579251632 +15818383626 +15818389754 +13601229891 +15110264751 +18892740183 +18579815487 +13687972748 +18896362743 +18812484656 +18580259240 +13696255269 +13611876517 +18549230706 +18849959521 +13986881657 +18570295985 +15185535123 +18853913049 +18517780920 +15186733075 +15826881998 +15182969437 +13616794464 +15892939832 +13619463267 +18534126595 +18580266938 +15829209662 +18802468944 +13602884467 +13960415669 +13698345637 +18857168997 +18834449558 +15178142573 +15800890303 +15184659703 +13692261686 +13623999618 +13912213444 +15119699842 +18509348403 +15108250469 +18570809225 +13924381814 +15842641320 +13945208195 +18560639824 +15187522626 +13922184304 +15811182158 +18578079736 +13977175437 +15855520191 +15862673812 +15835160660 +18543633066 +13635304317 +13642569063 +18557992717 +13625026025 +18879240271 +13626769151 +15159777250 +18587738635 +18557165187 +18897398759 +13936461091 +15860655164 +13949313907 +13913114506 +13656830218 +13983694383 +13629145433 +13974596119 +15179117017 +18567849323 +18566981183 +13671705013 +13993354997 +18586343691 +15866896921 +18590274587 +15189901847 +15896880418 +18507961259 +18533303135 +13616849521 +13676924996 +15802153782 +13613959259 +13689107298 +18577267249 +15889000902 +15137718490 +13649550949 +18874273607 +13634188528 +18876254856 +18560582596 +15842005266 +13636319104 +18836513829 +18852701808 +18550786874 +13932805142 +13660815051 +18544104006 +13960431404 +18892467704 +18552162346 +15837591283 +18571784294 +18551292050 +18561640622 +13987523299 +18504144219 +13687689846 +18801442423 +18817673229 +18587747679 +15166273557 +13976207107 +18550992263 +18824450719 +18866784667 +15187456393 +13915564448 +15149467617 +18850048134 +15135952001 +18871103067 +13994920201 +13942250190 +18508063587 +15194108672 +15101958809 +15888654356 +13993969742 +18527687982 +18569280519 +18551495626 +18896334158 +18870815336 +13642106418 +18540809314 +13961874260 +18835597695 +15841272210 +13920217598 +13905089100 +18886927886 +13602226597 +18525666643 +13647117887 +13617084954 +15864448058 +15887072305 +18831544322 +13971133635 +15806356979 +13977138669 +13975653247 +18566624345 +18561145863 +13642536583 +15812727123 +18863772869 +15895209156 +15158133445 +18578627625 +13955448421 +13635268386 +13996256001 +18516980162 +18526707464 +15179384759 +13944557876 +15808037969 +15837617108 +18520399554 +18868430076 +13653347685 +18579804105 +13664009354 +15828307801 +13675159454 +18849782874 +13680302407 +15808054836 +13653718309 +18804844728 +13691243438 +18542188810 +15833670619 +15106879916 +18500381369 +13619614882 +15816046199 +13636900194 +15832817005 +13600679153 +18874360375 +13934196933 +15106363659 +15899187153 +15131193841 +18867557063 +15894085621 +13634984680 +18513115641 +15162954298 +15143802741 +13632962296 +15188781655 +13624828086 +15846164101 +18849456294 +18503531080 +13913026202 +13674941933 +15867576468 +15872832258 +18529149422 +15115262656 +15823957462 +15189339645 +13912478700 +15875099507 +15147352386 +15819223702 +13628952212 +18860712126 +13974318706 +15824660045 +18809031777 +15195678387 +13926267505 +18599759334 +18891176009 +15183779474 +18803573475 +18553090083 +15151374632 +13696135765 +15821859604 +13658522313 +15870721707 +18877709819 +18582598678 +13669533098 +18583434406 +18871900501 +13697723494 +15800469042 +15159659912 +18543113684 +15896273738 +18531433475 +18596707830 +13971792554 +13911434918 +18858453982 +15804094138 +13693473043 +13692675434 +13928775702 +18507276550 +18824876525 +13991637413 +15129893591 +13916634692 +18876018839 +15812891198 +15826305394 +15849301373 +13916905362 +18884692251 +13913189048 +15104335772 +13925440135 +18837550354 +15160178024 +15126380290 +13691715221 +18594495473 +13924246678 +15139989716 +13909339335 +18564759618 +15899132747 +15898135763 +13966943300 +15171865391 +13961142472 +15824685842 +18515195945 +18524318002 +18884056756 +13648934313 +13960379602 +18506221398 +18539575358 +18808285689 +15147882042 +15807645109 +15887422221 +13624773751 +18874994441 +15891833157 +18875068962 +18585776107 +13685556581 +15197325587 +18537323835 +13627654672 +13960928299 +15112673191 +13968410783 +15812266107 +15121732955 +13630672196 +15105463002 +18848749926 +18521210895 +13609472184 +13919682948 +13695194250 +13925716620 +13617891326 +13623646171 +18850178940 +13922003123 +15816702423 +13953133835 +13937160969 +18519769914 +18544079400 +15842987378 +18579509150 +13930811263 +15106338457 +13957876855 +13634219234 +15823615660 +15113381434 +18544586320 +18589514554 +15857070163 +13993176936 +18587846442 +15879275620 +13602844088 +13614472116 +15815434644 +13979866604 +15141770164 +15808325372 +18562074495 +18551822870 +15824240677 +18882684267 +18884087681 +18844676481 +13659448114 +13663989732 +15862898250 +18554966840 +15111882517 +15135150832 +18577389196 +18804334400 +13954412768 +18591099340 +15185491310 +18802274903 +13924772320 +15839199084 +15824157146 +13665976384 +18502846355 +15156007239 +15131293799 +18843899868 +13986002704 +13940262205 +15815649095 +15156246361 +15890332530 +15117307183 +13911311097 +15854006952 +13981283703 +13644699583 +15864859463 +15133354256 +13668702263 +13994659235 +13605243895 +15178841252 +13681737191 +13689655227 +15156841633 +18820542420 +15805725802 +13616396127 +18800466048 +13613770406 +15183230470 +18833405186 +15173560636 +18816142228 +15143019270 +15891978812 +18838583319 +15818845766 +15199002058 +18564873895 +13695904961 +15144878471 +15179254972 +15120288521 +13632089304 +15173406646 +15881697008 +15887236749 +15862368024 +15843186612 +15879761586 +18895113765 +18538537402 +13632795893 +13942459865 +15172817128 +13690007426 +18576937025 +18805397510 +13953777272 +18807482894 +18868877101 +18585111595 +15833732906 +15173977958 +18569872777 +13999929579 +18879191623 +15116373530 +18504738594 +15841428658 +15182972702 +18895478617 +15812965743 +15815590945 +15839945042 +13681093883 +18894087358 +13915937724 +13903699727 +15129675457 +15120862725 +13682957345 +15128853940 +15162154154 +18826951927 +15861405595 +15897896913 +18520992985 +18516365818 +15826573443 +15890212119 +13997877072 +18573168079 +18827891501 +15100952418 +13981307881 +15812430281 +18818338273 +15879751172 +13918100792 +15142855281 +18575731209 +15811584949 +15815093806 +15184671919 +15832931994 +13971838286 +13954501821 +13677381082 +18597061109 +18895215005 +18804635471 +18555867533 +18540517707 +13616174908 +13959708871 +18515564455 +15858278518 +15107733080 +15842027717 +15830154690 +13942208005 +13978647493 +15870436542 +18836848899 +15886286047 +13931586952 +13607981095 +15193218075 +13916302697 +15819698623 +13926307343 +18877660031 +15104302784 +18841988948 +15118136623 +18547214213 +18516681553 +13991502775 +13697020972 +15154716103 +15133613832 +15102493907 +18875768643 +18534606379 +15182705358 +18894245111 +15873178927 +15188405494 +13972800053 +13632429673 +18588781374 +18843126032 +13623205646 +15898410342 +18864380296 +15151080062 +13659923307 +18862334169 +18876493796 +13940727431 +13951692814 +18565519267 +13923238559 +13985419738 +13648883785 +15103219106 +15196433385 +15821652483 +18582917846 +15888444087 +18899108290 +18583007389 +18575747741 +18542981057 +15808901218 +13967350147 +13692001852 +13656172653 +15835010020 +18516265913 +13949804532 +15849344156 +13986753924 +15103463040 +18885146487 +15836904609 +18817837990 +15192291154 +18879873592 +15805566034 +18546385276 +13611264243 +18824894405 +13698522745 +18808984176 +13639542309 +18551808587 +15172044977 +18818095397 +13609154081 +18554669386 +13931625678 +18821902991 +13915957304 +15803227338 +18572934315 +13939761304 +18800691684 +18870236497 +15178456187 +18563597231 +15194805244 +18563021690 +18555229768 +13666972778 +18814110314 +18826991704 +13960159734 +18883443341 +13682558547 +18542188493 +18887832723 +15152301430 +18895864912 +15871223862 +18530465305 +13680333768 +18599151157 +15107389689 +18524699483 +18527336567 +15115646273 +18501917613 +18523541684 +15115285118 +13919338609 +13964187717 +13643849083 +13976130542 +13603234216 +13674692812 +15825816102 +18590848911 +18821706447 +18807892503 +18850738999 +18831613456 +13931805924 +15135923458 +18519001400 +13958189106 +18829325539 +18503243788 +13672497350 +15830565919 +13941022942 +18807779465 +13612689726 +18550499333 +13616002066 +18813134956 +18532669643 +18561961387 +15896149681 +13929556578 +18803037804 +18806459864 +13657174490 +13633637210 +18893227604 +15149672222 +15869625303 +13667881717 +13655509657 +18833779842 +18570515499 +13639782286 +18557291960 +15816790296 +18891985983 +15165285512 +13608825527 +15812953601 +15800843257 +18855475819 +15151692755 +18867699192 +13669714912 +15144575755 +15822941097 +13917307470 +13905203988 +15149766955 +18578138486 +18873776365 +18897005830 +18888586358 +15899051246 +15871412951 +15803491768 +13906924859 +18529595652 +15125334752 +18583291600 +15159716168 +15168719189 +13926130030 +15865967058 +18873070623 +18507876422 +15166073002 +13912385493 +18812400848 +15171327079 +13656294134 +18838240568 +15123561940 +18574340814 +13648168609 +15884718391 +13925484553 +18578453271 +18569200811 +13926479735 +13900550915 +15820862375 +15802885479 +15858685458 +15196548551 +15809305961 +15174926908 +18518036709 +13913136851 +13699761057 +18810260984 +15144663450 +13643392902 +13643540057 +13685034408 +13946753367 +13985185329 +18826274667 +18535558544 +18847816006 +18503657889 +15888696810 +15817648821 +18870711976 +13667593336 +13653874378 +15856812331 +18883465333 +13690660384 +15862646370 +18816439051 +13687307564 +13641914846 +18514978571 +13937363683 +13975572910 +15190365397 +13999348359 +18554782493 +13690023411 +15112698117 +13951667922 +13914201585 +15866154831 +15103807870 +13935368114 +15119437221 +15891540743 +18507843900 +18571411521 +15818845839 +13994412814 +18864804466 +13659948663 +18549394336 +18558747678 +18541975007 +18841564794 +15199758534 +15871409797 +18547667374 +15112202841 +15887763028 +18880152718 +18846244585 +18864211426 +18829947516 +15814360558 +13954642716 +13676911156 +13620069163 +15129183445 +13939397861 +15823730157 +18858101329 +18826144584 +18546344969 +18566721582 +15176477017 +18892057386 +13603961522 +18560929247 +15109539032 +13692488368 +18501860172 +15846429716 +18596963889 +15111260732 +15148272041 +15899195290 +18897495844 +18578395355 +18809269429 +18535869853 +18551069435 +13996467285 +13629288554 +15163661866 +13917878115 +15803850934 +18513660813 +18802883904 +15847748245 +13931790814 +18593856712 +18535977551 +18865315724 +18853163649 +18818830594 +18547995027 +15162339877 +15161086064 +15123626447 +18564968654 +18899158194 +18546282181 +13614173397 +18567295497 +13983721364 +15129233251 +18537407621 +15884197745 +15122725320 +13965858611 +15803548288 +15824281287 +18811827937 +13987696154 +13986928152 +18583177716 +13665617441 +15896015466 +15181389875 +18876705745 +18853768972 +18523987852 +13958856816 +13957913652 +15106847188 +15143456388 +18552000518 +13633562451 +13987758530 +15821192841 +18874578213 +18558723501 +15121724868 +13906922766 +15130861634 +13631998103 +15146843512 +18539776423 +18541066164 +18851330714 +15843222212 +15811193311 +18530193555 +13944641137 +15869461161 +15126296614 +18819443879 +13646283810 +18886557741 +13938431584 +15841416823 +13982800720 +13988382882 +13644133419 +18534569438 +18564185737 +15101868841 +13959906007 +15104923207 +18825061949 +18504116814 +13612383595 +18502966140 +15170113238 +18820212210 +13901852856 +18550508573 +18525677394 +18840798194 +18800612402 +18590714219 +13667796367 +15860629489 +15848958389 +18572526397 +13938922026 +15868738182 +15160065915 +13692847233 +13623408071 +15145102580 +15891648531 +15842343041 +18561220130 +15801450666 +18859256754 +13953670779 +15181962171 +13994942945 +15875962090 +15811966093 +15887725013 +15123236216 +18577958695 +18845042820 +18870153389 +13905580245 +18833275103 +15117871212 +15861570971 +15167278625 +18800026370 +18500969137 +13936441200 +15816188123 +15170341627 +18826007845 +15161715972 +13673688915 +15157779076 +13609271828 +15118268957 +13921007404 +18841323121 +13686186448 +18516843415 +13909620423 +18593412273 +18887151323 +18817357312 +13964874003 +13987377257 +18845143701 +18841870577 +15881524454 +18876659757 +18854721085 +18894664297 +18878723126 +13973224467 +18541276652 +13664309474 +13664661726 +18523792356 +13620952622 +13615415004 +18560773148 +15126485069 +15140436898 +15815414587 +13973129636 +18818802027 +15876751440 +18520788918 +15864687888 +13650762056 +18885846505 +18516601557 +13607714142 +13606909352 +18856244304 +18809383411 +18856803891 +15128401022 +18836014872 +15103834100 +15845177279 +13620862460 +13604184436 +18899473789 +15885634057 +15129077385 +15837526109 +13662011324 +15868010451 +13921215641 +15113570189 +13908286481 +15121610911 +15108484605 +15161354835 +15881840235 +13955234669 +18594718193 +13667922284 +13947653573 +13970460124 +15891442155 +15109551692 +15136791708 +18801872894 +15129520333 +18598948725 +18898410440 +13652961157 +13602572207 +18846564921 +13986609304 +18536355548 +13693630552 +13947303311 +15133878753 +15811033224 +15121434134 +18572143074 +18552352169 +13914275131 +13948217048 +13607113083 +15152999814 +18856136140 +18589001763 +15152706673 +18847872275 +15835259238 +13960146091 +18547681885 +18882138686 +18886883389 +13915359607 +13936574344 +15868962938 +15153993442 +15864443661 +18828813211 +18507701794 +13911296877 +18815808126 +18851088663 +18889459869 +15891188836 +13640601597 +15876210250 +13623451972 +15128437507 +18558990760 +15843212289 +13605352731 +15161045745 +18508505140 +18839753325 +13990946160 +15822747480 +18880283634 +13616101166 +13912288682 +13648499934 +13637829334 +15853733567 +15156537323 +13660089603 +18581824219 +13972058524 +18803859479 +13980547044 +18588145006 +15146631498 +15849863787 +15898479957 +18593528346 +13668810686 +18857620220 +15859550514 +18522770392 +13699140862 +13961388947 +15890076029 +15815048291 +18513836348 +15863860729 +13937610828 +18890730609 +18549155699 +13618839163 +13612493454 +18830015917 +15174970183 +13921858434 +13963515519 +13621324821 +15830040824 +13973252376 +13671192494 +18812194606 +15812384917 +18868376681 +13614760744 +13612295274 +15884969885 +15845829024 +13997874792 +15163695214 +15119135997 +18832072502 +18824082348 +15152648496 +13679057456 +18885811312 +15843717741 +15893656294 +15139411568 +18502434248 +18840521658 +18542111172 +15105175379 +13692340395 +18892984137 +13675803688 +18507707339 +13685962280 +13671297994 +13622743378 +15135133486 +15179538626 +15807097287 +18559407936 +15879789061 +18540240156 +15857649268 +13643423595 +15861315113 +15165437602 +13942312468 +18592802596 +13961537185 +15839968491 +15809010860 +13672496435 +13934710684 +15191053652 +18505802362 +15887577938 +15163624052 +15152922005 +15874871910 +18534226882 +18886005484 +15825209609 +13651310361 +13909412764 +18580102378 +13659951401 +13660975621 +18853196568 +15841661938 +13999412295 +15882692931 +13623091714 +18868280439 +13966822966 +18893538045 +13984643615 +15183298248 +15114186266 +18875336378 +13972683991 +13643146581 +18513974059 +13660772022 +15826873758 +13628716168 +13617892284 +15102397487 +13906171138 +13980618180 +13989870506 +13920311634 +13684823661 +18859095818 +13658829508 +15134936652 +18592495991 +15187273078 +18812841853 +13952642416 +18515878213 +13961160513 +15131099413 +18850287814 +15173085647 +15830728536 +13688743905 +18550552590 +18539782790 +18526205876 +18500160566 +18804705861 +18810415895 +13634582666 +18895571507 +18539033342 +13931369792 +15815657285 +15190143486 +18510552085 +13631408459 +15897758838 +18516224281 +18503663878 +18801936783 +13980612219 +15106974054 +15810258816 +13979148386 +18819668160 +15150732300 +13931235087 +13950248564 +18504602111 +13689897511 +13929994992 +15164393861 +13979775526 +15857022644 +15131471738 +18831981779 +18811963068 +15823716551 +15878048180 +15848121058 +13696155106 +18895141301 +18576146678 +18527788285 +13977489702 +15177558469 +13906999774 +15866626373 +15849348705 +13995089604 +18557606874 +13669882160 +15139312116 +15842357637 +18582765878 +13932761506 +15845479273 +15894405815 +15161433329 +18591680913 +18550663472 +15894046625 +13602512277 +13902117266 +15163492327 +13945647652 +15846871710 +15160681772 +15118016812 +13688382916 +18563570431 +18818816381 +15157685736 +18850867240 +18530140712 +15865921797 +15848994893 +13637590279 +13630915082 +15156204813 +15890132648 +13604470221 +13642001406 +18849249326 +15853736703 +13969514865 +18807578455 +18510777977 +18597897770 +13916156653 +18538851874 +13614667913 +18587567758 +15855808439 +18554078061 +18889118071 +13656609669 +13661479103 +15136465817 +13639277840 +18807714624 +13685632243 +15850720023 +13605769499 +13676269744 +13661166736 +13618711996 +13969336316 +15120755038 +18825158308 +18519674426 +15855026234 +15898471410 +18879143149 +13923644467 +18879292791 +13687072946 +18523931229 +13903224786 +13980703835 +15112063421 +18576777994 +18539911302 +18811990780 +15132744310 +15882632810 +18587532579 +15174416920 +13949058778 +13946639944 +15832768107 +18597866918 +18554612195 +13953692236 +15188152358 +15144377432 +15140049956 +18501420557 +15807759290 +15114077671 +15199999151 +15139494729 +13928761647 +15119552526 +18826797259 +13998069857 +15803766373 +18521675890 +18889652203 +13932792333 +18859315038 +15866985835 +18567922429 +13949777487 +15892624364 +18821007488 +13606283710 +18572698821 +18570291781 +15863486270 +13654034400 +15113291411 +18849430084 +13665863086 +18597955297 +15119477697 +18809079730 +15120462113 +13951343535 +18891607463 +15808227656 +15150185475 +15884275418 +15831671223 +13685703167 +15860895375 +15808322062 +18559644300 +13912486640 +18594428150 +15199328876 +18564420831 +18541926523 +13672670111 +13667360677 +15891128261 +13937219999 +15147295393 +15156052858 +18522823576 +15856898780 +15161703235 +15175353723 +18807989741 +18800029942 +13914650307 +13630441476 +13932535736 +13955859680 +13665691558 +18891393600 +13922478367 +13914473219 +15152948995 +18871478613 +15898794582 +18597604267 +13928262858 +13692297323 +18527355638 +15109475749 +13679106829 +15801670611 +13943082770 +13623396031 +18561524619 +13603287796 +13945791150 +13635699173 +15892615655 +13937689542 +15110368411 +15819991201 +13935059140 +13918951659 +18813007630 +15871042748 +13693112834 +15183880999 +15879056823 +13690966992 +18580543545 +18503116900 +15142357983 +13608036889 +15196351570 +18546205317 +13691399795 +18838275307 +15130423759 +18874734352 +13948564437 +15179114189 +15114674920 +15196940704 +13665900613 +18855914469 +13608587155 +13990531782 +18804352343 +18872879469 +13636161223 +13686273499 +13637542535 +15165747166 +15175917456 +18584703365 +13919713979 +18835741725 +18567497248 +13617013256 +15806098593 +13913522867 +13911334572 +13922065541 +15865274611 +15109738371 +18881006049 +15160756562 +13903279587 +18505993295 +13631247774 +13675653256 +15165665892 +13998991801 +15178648684 +15880287280 +18581859938 +13666617815 +13672614382 +13949083371 +18868569291 +13972289453 +15860637049 +15837485399 +13601776693 +13600176992 +13980587760 +15183883873 +15110436504 +15178522548 +13997115659 +13921677420 +15811721712 +18896921428 +18546730231 +13914057692 +13604979495 +18579050956 +13923702815 +13604109808 +13959339094 +18857757616 +15136850402 +13933256028 +13962403131 +13987653946 +18565392145 +18510336561 +18882602700 +13671730353 +13673218053 +15891353978 +15195796552 +15187485626 +15824477215 +18828009255 +15882872514 +18538723085 +13909969494 +18594112346 +15886216309 +13915425875 +15869958668 +15156574343 +15180273741 +15842083202 +18567025916 +18582450996 +15176340017 +18863368084 +13979829564 +18873515538 +18547071082 +13974436259 +15152418432 +15125156504 +18533129569 +18847869224 +15858680717 +13963040445 +18849521284 +13966137031 +18508285541 +13684941295 +13605535144 +13607687219 +18879627500 +18810401683 +13600001249 +18584409862 +13625603401 +18895349321 +18582208852 +18885174295 +18875613720 +13948998528 +13929590062 +18541166149 +18589571056 +15138806850 +13954858459 +18586500511 +13644930296 +18805651419 +15167637241 +15173109676 +15100164377 +18805534524 +18561294261 +18817764068 +13636991816 +18819684992 +15855694420 +13618048756 +15809592213 +18576496349 +15117290734 +15121770271 +15136693475 +13930267479 +15871591204 +15115947378 +18579279318 +15868743145 +13603013439 +15106505807 +18519326172 +18573695810 +13975663843 +18584050729 +13948329810 +13931417222 +15800364551 +18875804384 +13632240037 +13691453911 +15820617699 +13980356885 +18865157551 +18875193231 +18886698286 +18830498460 +13962607388 +15104758887 +18821936013 +13612874079 +15893531773 +15199630571 +18887733953 +15165834200 +15858632844 +13932298329 +18591224328 +18853781456 +18542876205 +18597745042 +13629348609 +13968180287 +15838074344 +15804674590 +13690989980 +18583751132 +13609521851 +13944112446 +18557106294 +13960721818 +13963916111 +13957209872 +15180739967 +18815481890 +15814929931 +15155738185 +18587532298 +13908304827 +13623264236 +13938659580 +15830628154 +15852597322 +15843134340 +18810591529 +15878100416 +18538562810 +15861139428 +18592132813 +18543078560 +15175281719 +18523971579 +18891254470 +13961290911 +18882073477 +13606189369 +18571369296 +15845014584 +18806307640 +18563925873 +13962900913 +18563198050 +18879571929 +18577345287 +18507784561 +13676121174 +15193883069 +15167063357 +18509069047 +18508795249 +13657899760 +18580936135 +18552335575 +15847979904 +13638980618 +18880293514 +13683943229 +13942219104 +18575223220 +13944857547 +13906069183 +15161789814 +18847474669 +15103068146 +13948761976 +15118606441 +13939245225 +15166028877 +18501360984 +13900042685 +18586025603 +13664240349 +18508636970 +18897963847 +18861490926 +13657144356 +15100227480 +18545130322 +15182272916 +18540687751 +15811073700 +18802884657 +15121035923 +15889942678 +13972433429 +13626054880 +13669270037 +15846129327 +15170228244 +18888803595 +18512759251 +18868689312 +15804217482 +13697746235 +18519696678 +15155699546 +13909373848 +15172508759 +15147130836 +13647725021 +15184106333 +15150731295 +18599401184 +18845436519 +13908860184 +18543006494 +18880747006 +15173659751 +18593582775 +13659381014 +13947049980 +18822336831 +13610106418 +18550111119 +13952232958 +18533166573 +18581832024 +15126031037 +18577062300 +15102649005 +18849293554 +18889368371 +15805821100 +18892988407 +15188688532 +18834848759 +15114712701 +15893563814 +15111103368 +15806740589 +13905744751 +13921664547 +15114184073 +15141459479 +13992048472 +15140659040 +13698551363 +18815874770 +15848370772 +18802744871 +18815471245 +15153028107 +18865123233 +15179396547 +13698418904 +13689096911 +18876782064 +15876650150 +15171145398 +18508781538 +13903561128 +15892621377 +13945303847 +15856678091 +18859685223 +15882012382 +13658123707 +15835744803 +18838142421 +13686877186 +13919809089 +13978270998 +18598715667 +18512970054 +18813512094 +13916615275 +15128905698 +15805605021 +18813776313 +15147486918 +13658022110 +18849613559 +15898199750 +15124486682 +15802736636 +15188133809 +15809832684 +18883671001 +18554625053 +18893084312 +18503325162 +18854885785 +18810002606 +15824137750 +15142495126 +13967616492 +13910206232 +13977987720 +15875515560 +13692000566 +15885459424 +13981759904 +18847720135 +15193379419 +15196041513 +13902849136 +13989003394 +18540702456 +13698611473 +15182408052 +18854267690 +18543456391 +18865025923 +18517722995 +13944527404 +18898906841 +18564568044 +15135181959 +18823216856 +13950579691 +13966081598 +13959330746 +13694564363 +18599696554 +15827905537 +18816219132 +18843839019 +18856372809 +13936125890 +18574489715 +13976708323 +13654550768 +15828528557 +15849427158 +13972651822 +13693837105 +13636149475 +13950068550 +15196267376 +15126319301 +18564878469 +18591499469 +18589452718 +13638007078 +18843067059 +13954681316 +13604319441 +18858645216 +13664665279 +18597499472 +13688435526 +18887171626 +18563785311 +15852899288 +13939000598 +15830501017 +18860934081 +13606769078 +18818124859 +18581032998 +13638559883 +18828250552 +18539915170 +13699970867 +18841173296 +18504848134 +18893200944 +15888966770 +18518725641 +18827082132 +18827086063 +18573420111 +15170541334 +15855557921 +18840516887 +13642973877 +18518341883 +15176954723 +15181877807 +15143122817 +15149194551 +13658105231 +13656572827 +18597896332 +13681267672 +15152732415 +18582612169 +18596223246 +15191572044 +13957545975 +18510914244 +13900181427 +18866419368 +13622579254 +18573310695 +18809007152 +15892253425 +13626816202 +15859067207 +18503731983 +15802576427 +18571192212 +15172943738 +15144201123 +13644990415 +15893539318 +15186906294 +15881720513 +15813914095 +13949786270 +15818537507 +15186862857 +13990422289 +13678088547 +13985704958 +13961511207 +13614426794 +13905055835 +15142582526 +13645011197 +18505933799 +13908768606 +18543963768 +13971461960 +13921437853 +15117131999 +15188687770 +18899245092 +13969600274 +13680447310 +15879030609 +15123442608 +18573926619 +18565401958 +15847020323 +13624425697 +15114403197 +18829008094 +13963184532 +13907478737 +18596541530 +13945534996 +13976138146 +18534711762 +13984533593 +18519979589 +18832401426 +13944613765 +18508156517 +18572701790 +13698468305 +15111356644 +18586627664 +13655361318 +18502668097 +13632101578 +13961032990 +18846244054 +13629867767 +13927510261 +13945405920 +15176944139 +15840294514 +15158195635 +18847634456 +13679927444 +18565487744 +15187298858 +13927279313 +13640312999 +15108632665 +15873164805 +13682646919 +13974379031 +18850072495 +13911014234 +15110938377 +15875680962 +15804827307 +13939006926 +18500421016 +18577002641 +15179537168 +13920487419 +15138248749 +15840614725 +13641942713 +13905717527 +15128846626 +15816055444 +18590685634 +18898941640 +13657115116 +18524057233 +15899146418 +15864041913 +15877186428 +13628037650 +15879441419 +13655102873 +18540250142 +15161559744 +18527212888 +15139766009 +13922163160 +13684697207 +13976058250 +15811895914 +18508795233 +13902644744 +15116606226 +13620526091 +18541922760 +18539806153 +15883824252 +13644621002 +18554212820 +13919018846 +13623911926 +15182527689 +15194250831 +13684912871 +18542965581 +15801964398 +13943360491 +18874136601 +18581268626 +13624880038 +15142778213 +18803153532 +15839295971 +18847063005 +15175813241 +15191698585 +15136482858 +13601319808 +18804418073 +18802048850 +18875178919 +18886292692 +18857051139 +18585725566 +18558507607 +13973992151 +15181256081 +13973493747 +18842762577 +18568365630 +13682588636 +13995792960 +13631793438 +13906557292 +13659153358 +15899269379 +13913177298 +15173847561 +15859725516 +13952918594 +15137327144 +18870663906 +15811080985 +15101647031 +18825245207 +15804865869 +15805707588 +15113684432 +13680253576 +13625226111 +18575273761 +18513420425 +18574934062 +18564905573 +18572834806 +13945749568 +18870435885 +13951564639 +18540930415 +13600358590 +18560227933 +13689925791 +13914473943 +15118262786 +18805707723 +15880072302 +13626715378 +18544607221 +15880525756 +18553781892 +13956308567 +13916582962 +13925785443 +18899295356 +18822552989 +13685637612 +18556389954 +15826171771 +15173172962 +15123334107 +13612751026 +13672974440 +15818472960 +18852945567 +13647660642 +15818913791 +15826109283 +15867729773 +13600868596 +13678075244 +18804000037 +18519196699 +18860181853 +13610443081 +13950856084 +15882217952 +13903192270 +13607715639 +13986114546 +13946997671 +18555457279 +13639790666 +13613622277 +18532435387 +18565616444 +18581098191 +15138225808 +13961582972 +15174016995 +18827604164 +13676414807 +18595310943 +18557615777 +13946669766 +18561454536 +18851437774 +13938864643 +18899272840 +18822983751 +18837592014 +13679189743 +13694499195 +15822276918 +13658950838 +15110919064 +15824597063 +15110055413 +18535318436 +18552170437 +13951346728 +13672886279 +15845717595 +18540367337 +15161196643 +15120377768 +15839693306 +13948360792 +15178385825 +13967524357 +15160016326 +18515113026 +18897786794 +15818920726 +18590643381 +13617551761 +13968151173 +15108646725 +13998533636 +18581806737 +15886409969 +18853207943 +13665391866 +13916151371 +15883816225 +13902940627 +18820071048 +18534899549 +13662564104 +15121515380 +13672865059 +18549723184 +18847469960 +15195935287 +13973623012 +13971146976 +18826155177 +15184284104 +18529940141 +15871579895 +13935010626 +15192138494 +13627717172 +13904768622 +15886002935 +15126458926 +15199768337 +13613732835 +15873073173 +15857003010 +18586542313 +13602501146 +13996268446 +15890659257 +13933775598 +18596259560 +15888967208 +13913640776 +18563629852 +13678969556 +13661923316 +18545640807 +13646977594 +18860978811 +18859839526 +13945799019 +13978982910 +15830343034 +18551840827 +13613053365 +18808832989 +15866929901 +18878052668 +13957944125 +13684615553 +15853841963 +18563140913 +13947302680 +15166316409 +15193235875 +18588018830 +15882446552 +18852728799 +18886219782 +15830144771 +15198939785 +18817431090 +18564147872 +18531003995 +18569510211 +13911005724 +18511699538 +18886000472 +18546612291 +13610780461 +18861551067 +15169618288 +13633180707 +13608713220 +13690115905 +13932304912 +18835039044 +18588704907 +13602926706 +13928964676 +18543939656 +15128901171 +18832065584 +15134139483 +13622684409 +15163318948 +18534725433 +13666499258 +13680634046 +13998699031 +15134019774 +18529608433 +13609111386 +18582249079 +18559923433 +13910211706 +15144670358 +13982447688 +18556015354 +13658393879 +15196068028 +18507865358 +18517524284 +13622245312 +15168120273 +13987550115 +15827082130 +13951577708 +15135425354 +15183926277 +13993251941 +13625943123 +13688375497 +15133524135 +13662839415 +18818767002 +15137044532 +15884518383 +13982976799 +18866990608 +18542998919 +13608109175 +15199403803 +15142807073 +18803033679 +13961571781 +15803455857 +15835175139 +15155895784 +18830276904 +13629826303 +13950481374 +13970501468 +15887451798 +13653929848 +13620228288 +13690250800 +18823785231 +18506508378 +15850599759 +18547718040 +18505608152 +18872827428 +15883262377 +15193832077 +15118850921 +13984582964 +13619771347 +15821270944 +18514518724 +18588719854 +13960895165 +18503772487 +13653497394 +18515515154 +15125441987 +18887224961 +15138776666 +13966225004 +15180078223 +13947826138 +13941662117 +13613757786 +15187466638 +15161179115 +15848450278 +18899775297 +18867861154 +13962838305 +13638955887 +15880439001 +18835252719 +15167533617 +13696371472 +15117825746 +15164710222 +15179241740 +18866672341 +13638807569 +15827211667 +18856703493 +15828760861 +18888950526 +13682112096 +13997373787 +13917526644 +13994539573 +18599998845 +13941678715 +13600888471 +15196008021 +15807573299 +13607326978 +15115019502 +15847725612 +18807608058 +13927485895 +18537072990 +15158021426 +15882824957 +13900070310 +18806249512 +13948203252 +13919624903 +18558806273 +15895790246 +15130264512 +15131485884 +15883256751 +18525010837 +13643441805 +15804336438 +13969707483 +15875024962 +15817429524 +15168321575 +18880400731 +15139557344 +15128893045 +13626928227 +18550632020 +15809216482 +18897983484 +13937301757 +13996412972 +13908887931 +13652542588 +18551534652 +13628529868 +13905437565 +18809771013 +13931323009 +15138104460 +15858201406 +15893765632 +18825564517 +13650329702 +15804665704 +18856440605 +18806886589 +18521380926 +13658256171 +13981255314 +18814765956 +15868242818 +18501331637 +18588117477 +15118529046 +13614259566 +15830557600 +15176153587 +18566223703 +15878806654 +18895698245 +13972227110 +15863602340 +15116246869 +15824121917 +18867359778 +15852868138 +18501591966 +15873797512 +15176819200 +18507527550 +15881175484 +13695272044 +18577687031 +13697001098 +15811353985 +13646942041 +18891190359 +13664644217 +18802703530 +15139902663 +13693153720 +13906853806 +15831502563 +15151862046 +15143525174 +18551388367 +18594472234 +18837364915 +15108981219 +13940909834 +18827120410 +15163524733 +18870283171 +13986414897 +18509861084 +18860517728 +18844944889 +18813356008 +13919728806 +18565346459 +18812070566 +13663004885 +15118088910 +18580886202 +18874636546 +18530489698 +18574468185 +15838467003 +15875700078 +13955353823 +18813383855 +15831062357 +15159432836 +13939258001 +15182061937 +18882362180 +13927539327 +15166333103 +13689306575 +15814835874 +18884944776 +13652863145 +18516062613 +15838533020 +13624891721 +13956759138 +13974828663 +15193477049 +13667295540 +13990369370 +18842979834 +13936177267 +18574754391 +18555888424 +13982787612 +18578259971 +15805304578 +18876179593 +13944292735 +18834709604 +13656266019 +18808994498 +13600592179 +18883622998 +13901121332 +15152339349 +13687043384 +18816380747 +13954900711 +18853353421 +15132362808 +15128056621 +15103870269 +18540785246 +15119672880 +15104568537 +18895783308 +13604187149 +15874257366 +18593431095 +15884746113 +18512003062 +18832511624 +15175455821 +15125192994 +15822703539 +18504129361 +15160788030 +18584100402 +13919441262 +13683760435 +18526323072 +15131054341 +15878872797 +18549433573 +13620273040 +18571671629 +15140525401 +15129749338 +15128526129 +18877904428 +15139896738 +15870964423 +13691846736 +15823110653 +13635844546 +18866565190 +18517250668 +13974849943 +13608775562 +13618761297 +18864513119 +15125315331 +13936710966 +15182745390 +13911283306 +13618111391 +15879765166 +13606379494 +18830670343 +13639359241 +15833072783 +18886053940 +18543598090 +18568730291 +18546740918 +13651122617 +18803986248 +13607127783 +13687233683 +13697258626 +13602120469 +15197238060 +13942303084 +15118465470 +13902201076 +18593536195 +15168616136 +13973932341 +15865524679 +13985291090 +13991563982 +15875490381 +13682146327 +15165640151 +15828218268 +15820452956 +18806522099 +13611392914 +13633601710 +18880666255 +18510283289 +15843378704 +13634776224 +18887900662 +15860910306 +15827442531 +15840073616 +13600513112 +15196356691 +15114386144 +18579315765 +18530706655 +18888197195 +18520544627 +13907415438 +13644723938 +15851717048 +18816326156 +18593860601 +18804820242 +13675805415 +15872206507 +15143479307 +15872413569 +13672209993 +15145724747 +13936176529 +18554519168 +13672888568 +15170600760 +18860578682 +15198989117 +15873020171 +13969729976 +13687299817 +13958412842 +13685412541 +13903802197 +13625933017 +13922424573 +18555159237 +15116804496 +18594167753 +13676474769 +15196029677 +13676200694 +18839795749 +15882697939 +13698203748 +15169183739 +18879788391 +18514848659 +15842773721 +13972150696 +13925754592 +15854068873 +13933090300 +13608646856 +13693823091 +15124910853 +13695525401 +15823245334 +15105598028 +18529973097 +13991544946 +15859201974 +13662652514 +15190381140 +13638688238 +13952956506 +13999163131 +15119927119 +13983312506 +18580038225 +13967162860 +15159735489 +18545138706 +18502025796 +15179690620 +15863390966 +15883805118 +13959483223 +18570882845 +13684234581 +13639519377 +15824873535 +18820044005 +13694267610 +18857261311 +15114985766 +13664356520 +18871458726 +18846232760 +18807648792 +18822253477 +18813655348 +15143029204 +18827763303 +18549732647 +15198816879 +13946810069 +18861917410 +15849371821 +18858247743 +13958347655 +13679396339 +15103342176 +18581624541 +15169291488 +15148913138 +13988184404 +18548424379 +18893265951 +15886210867 +13622485787 +18873545363 +13697731155 +18865949480 +15898771215 +13940069329 +18830788186 +13643722328 +13965943828 +15888606827 +13604889654 +13913008666 +15800906277 +18508886354 +18807641313 +13650402903 +15187721883 +15869969415 +15133131567 +18841201380 +13911884716 +18803050960 +15100482892 +13962216264 +13610826068 +18843440432 +13660308365 +18891454980 +15169648362 +18867432978 +15133803806 +15180839959 +18808708070 +18590933092 +13653461550 +15144575251 +15849603540 +15801181148 +18814455011 +13940221372 +18535278979 +18507091266 +15190305654 +13692652639 +13959095486 +18804418250 +18570754727 +13996797788 +13680410659 +13626649041 +15168336963 +15156372832 +15885370938 +13660197144 +13943102280 +15138721850 +13643904079 +13984641455 +18881741233 +13664856531 +15806294030 +13944454093 +18585943616 +15854553789 +15152072816 +13991968514 +15822593584 +15142175731 +15190581626 +18893050659 +13990606446 +15800243179 +15814440449 +15897805748 +15859183233 +13609139115 +15893472361 +13936468309 +13636826250 +13617402988 +18868315162 +15147760347 +18511257984 +18860705633 +13666523396 +15888691773 +13681714789 +13646313731 +18582606606 +18897667415 +13930498741 +18561290816 +18818083775 +18883189677 +13633468450 +15171713393 +15154565958 +18535642464 +18526497190 +13667379974 +18896018340 +15802493106 +13934423258 +13919349192 +13909536677 +13972805651 +18554634011 +13950944803 +18898861888 +13671851429 +13958478875 +18850655916 +13930659699 +13677516909 +15827660740 +15863824225 +18555442862 +13613430998 +13997845811 +13602800534 +18867034759 +13636792373 +13681844550 +15815399859 +13927783709 +13690521076 +13695364673 +13939633929 +15107913338 +15872406862 +18818635276 +15152030394 +13633252677 +18848259620 +13990348154 +18810091715 +13904081627 +15898373498 +18593558993 +13921160910 +18580995791 +13686343862 +18895655371 +13976816248 +18896831941 +18584016041 +18588531481 +18554460210 +18572606860 +18535225655 +15111826676 +13674408677 +15161426681 +18547374115 +13932634649 +15119115276 +15873953538 +15845940246 +15882740184 +13972433265 +13926453422 +18556794372 +15113599896 +15874085678 +15139559867 +15169201331 +15808717211 +13948998876 +15861403894 +18803226096 +15890258051 +15132549275 +13991614617 +15865919007 +13926729821 +18541166572 +18537853186 +18532870208 +15892969887 +18861568687 +15166186287 +15151852823 +15898485499 +15113895828 +18822704393 +18536565862 +13988615722 +15155550434 +15194301995 +18857923446 +15191406074 +18826023222 +18517578672 +15161551274 +18884562946 +15134729896 +18801570877 +18550859273 +15810919346 +18857471054 +15166388916 +15152951195 +13979688455 +13650294450 +15145704386 +15128928659 +13948092180 +15168622770 +18592525140 +13619431329 +13920876657 +18514742802 +13933555027 +13608285653 +13641138669 +18822158526 +15149286449 +18890186329 +13615179757 +18858316632 +13644727677 +15809158669 +13979875821 +13644020124 +18581011658 +13900114885 +13670421829 +13970072594 +13924042280 +18510679637 +18834385427 +15167747558 +13915514455 +13628062535 +13624264580 +18513474367 +13655029235 +18888169820 +13942742369 +18891985916 +13906190929 +15877843537 +13623731216 +15806218971 +13963952735 +15158911614 +13674710497 +15124924010 +15195131092 +18522949783 +15811233395 +18529179731 +15177829175 +13927000925 +13966805894 +15116789944 +15180465421 +15122394068 +13944443817 +13992697250 +15175969405 +18559446988 +15158094799 +18899230955 +13633875643 +18853373626 +18835161877 +13692334207 +13654459614 +18859674845 +18849766789 +15825675803 +18571549635 +18514543036 +18547254994 +18850685376 +15899969821 +13930584953 +13668228375 +13933106006 +15898506970 +18842609013 +13945073108 +15175150596 +18522167713 +13970815013 +15879563701 +15184052903 +15183490506 +15115998893 +18573546461 +13688464035 +13630194270 +13959673680 +13933588082 +13645975016 +15187337361 +13950319305 +18599272609 +15846571934 +15120193519 +15195462371 +18597140660 +13606571530 +18811909637 +18804761533 +13682754633 +18866896904 +13628419436 +13650333252 +13961502915 +13972100233 +15187221098 +13690409012 +18589835620 +18854014842 +15884297792 +13656690676 +15875131381 +18574726873 +13655299113 +15142382726 +18818897024 +13624494515 +18819913577 +13952605091 +15855192756 +15107655794 +18578628359 +15886686938 +18591557254 +13668975398 +13960955448 +18885311698 +13907317800 +15867812348 +18888895711 +18533226182 +18857931237 +13611680848 +13625431433 +18521075246 +18580500148 +18571476446 +13617542665 +18575691925 +18580625347 +15805827778 +15182693942 +13928440744 +13620389015 +13681442525 +13632115706 +13997069168 +15878109257 +18523666220 +18879897042 +18839678771 +18523189394 +15868618643 +18509490093 +15166608899 +13928409673 +18851707671 +15801091322 +13650462405 +15161019834 +18578685763 +15114528268 +15802858171 +18818063876 +13993029680 +18831182784 +15839821223 +13669275430 +18821494274 +13678816726 +13629150169 +13986256775 +18868447854 +15184723096 +15177180122 +18582442322 +18897101086 +15826292784 +18885341260 +13647321697 +15856237110 +15116464203 +18809939189 +13967279483 +18516285219 +15142212890 +13962310927 +13644330804 +15805413346 +15122069904 +13681366228 +15136518163 +18527817919 +18509599720 +13911005721 +18589451304 +13983900574 +18598140329 +15836590958 +13624998752 +13611648186 +18832361383 +13616615440 +15856010575 +15800352970 +15160671553 +13941371069 +15153894525 +18559553187 +13978348900 +18570411437 +13665055053 +15813608831 +13922245602 +13694123754 +13651991609 +18546651427 +15193146967 +15886492278 +15103345517 +15835914286 +15875377766 +13675218090 +15104587288 +13961173492 +13692650985 +13664180107 +15175310079 +15180126927 +18826925438 +15827067281 +15888358647 +18843006158 +15834239813 +15828799381 +18536362782 +13926461773 +18842132716 +13667216937 +18850729117 +13977204776 +15840595202 +13672099664 +13621228744 +13984228293 +13667075962 +18846395902 +15178683163 +13930601110 +13997220469 +18547872643 +13642328602 +15186459222 +18866272447 +18555478886 +18896717895 +15110007287 +15101753853 +18875938034 +18511601284 +18508891465 +15887303354 +18832696212 +15823035604 +18844492695 +13949767901 +13651234293 +13923841498 +13628158541 +15825767506 +13979286718 +18537004496 +13651228511 +18514186250 +18850043785 +13947297529 +18814271829 +13934030805 +18516302693 +13947354079 +15812982388 +15856309636 +18565150710 +18839364628 +15143714112 +18805381459 +18842815337 +15805137710 +15842187519 +15199732077 +18577508373 +13966713005 +13639169976 +15813297129 +13628789745 +13628411920 +18579208147 +13941278067 +13674083082 +18571806927 +13938758092 +15193141963 +18503182545 +15852563700 +18806865783 +13942586881 +15165610081 +13606206656 +15188795969 +13938999924 +13984651700 +13931053782 +13916239847 +13664205089 +18591905722 +15846257049 +15881237880 +18897049952 +13688827248 +15869618212 +13639416856 +15802182373 +15809873015 +18859443141 +18875842345 +13622894999 +18879594643 +18530827091 +18558241380 +15872569341 +15128157707 +13936461665 +13947058592 +15132479571 +15171535652 +15120022988 +18855025058 +13621827195 +15882043943 +15806153263 +15899623071 +13997595209 +18547987802 +15177888620 +13670927727 +15185162428 +18581362002 +18597803909 +13960785071 +13637245521 +15125471628 +18552535154 +15851923810 +13646906793 +15871299271 +13918820166 +13642021688 +13995514827 +18837485925 +18879068964 +13959966967 +15139988526 +15170930769 +13927048645 +13655196047 +18561411725 +13698718287 +13606368736 +18856284629 +13644314266 +13613249749 +18875441326 +13614781945 +13675157308 +13612839774 +18576650700 +13936979280 +18595454517 +15120458062 +15893872954 +18878941035 +15120065313 +18589792161 +13620518122 +15150408738 +18560325707 +18535073934 +18571529692 +13933313597 +18860853785 +15167372093 +15124397235 +13991919686 +13666816929 +15897252241 +13940701133 +18528182094 +15850006098 +18866311148 +18881696532 +15175107076 +18880868993 +18813980999 +15843111222 +15157563040 +18549115342 +15882110773 +18842283416 +13697061465 +15122504594 +13690557988 +15138110436 +13693869032 +15860623611 +18862477981 +13643361004 +13693692645 +13985613110 +18893945810 +15184164478 +18554557571 +18836042594 +15854657223 +18542155848 +18897476126 +13633429192 +15173016690 +13695455290 +15152285774 +13960785872 +18556876487 +15844213155 +18536364059 +13688696366 +15148951758 +18500737578 +15129684551 +15873118949 +18534970650 +15175442035 +18525912290 +18538414163 +15848284252 +18526071000 +13614025441 +13983599339 +18857656134 +18850227721 +15102634699 +15184506956 +13978367329 +18543821318 +15160522325 +15154850607 +18570371700 +13901726387 +18547526023 +18518759527 +15135547520 +15843090509 +18860434864 +13927923211 +13686678081 +13940953878 +15133012088 +15899107629 +18534597735 +13623590645 +15864111326 +13946304575 +18546381418 +15888401872 +15820341928 +18837566690 +18545332214 +15883635103 +18591665647 +15841133599 +15115585538 +13672619591 +13919898966 +15101509634 +18876364899 +18549348031 +13651812310 +15144286773 +13689949640 +15128319175 +18535614446 +18853441020 +18807345320 +15184961579 +15838247324 +18566635560 +18582908199 +13984363456 +18831447337 +15856781466 +15881791791 +18814090094 +15899885690 +15802279618 +13633783423 +18808443873 +18510723084 +13988635172 +18575679051 +15153693935 +13976612018 +15180147769 +18528055149 +18841343769 +18502053313 +18527438551 +18842736436 +18522502963 +18582246262 +13965842838 +13967058696 +18539456516 +15890838030 +15813518983 +13657346540 +13961843379 +15882601090 +13634085352 +15804088204 +18891080800 +15111076082 +13618214500 +15815144991 +13951827977 +15188970205 +13985789934 +13983677486 +18545651727 +13608559723 +13665255276 +15898946044 +18829875267 +13982149309 +13978940031 +13928072856 +18840207800 +15877114671 +18879870282 +15127890006 +13622502409 +18823409382 +15819229625 +15186582038 +15817962677 +18825150449 +13656370878 +15113877908 +13624471918 +15818532163 +15143657675 +13624483427 +15125083746 +13916366622 +13628039615 +18511719488 +13925470623 +13622956121 +15163757007 +15189964532 +13631653486 +13620962904 +13964724912 +18829180608 +13906682246 +18545470787 +18871474551 +18548361458 +18856689283 +18510865344 +18884496115 +18582852095 +15196598888 +18851652107 +13649180680 +13926914914 +15152505977 +18854830815 +15190606776 +18526234219 +18537563641 +18877224140 +18828225972 +15149029033 +18586970317 +15883351030 +18894316525 +18553346702 +15810170505 +15884783490 +15893206505 +15826302556 +15150967830 +15895887491 +18815269333 +13972322911 +13645670490 +18509767572 +15163951411 +18595225027 +18530659192 +13605793178 +15813403856 +13930341058 +15102797570 +15185825954 +15866215042 +15178488321 +15806424276 +13663145842 +18880208567 +13635604522 +15897424470 +18831828842 +13651538861 +15807486957 +15851792986 +18846192074 +15863308478 +18567362153 +15172931553 +15870329566 +13601791618 +15895678109 +18810977422 +13951405092 +18581303138 +18570434455 +13904690781 +15182521168 +18887016852 +18828895609 +18816439299 +13693164314 +13641510132 +18592263902 +15133229896 +15158552237 +13931203488 +15823527256 +15858276363 +18870855760 +15128414334 +15837070384 +18517483881 +18814607780 +13946149324 +18873435231 +15112219562 +13688148253 +15115163484 +13632470927 +15899040856 +13926369106 +13976163366 +15819656360 +15129507055 +13677159704 +18827651088 +18531288764 +18552782315 +18552188977 +15186799207 +18892837678 +18531643250 +15815183517 +15857259759 +15874021908 +18873613397 +13931412892 +18899211746 +18582253359 +15153792988 +13676106453 +18588384275 +13663209860 +13926353238 +13920213212 +18538566670 +18515616151 +13932995441 +15137160318 +15892907524 +13937855206 +13606548658 +13646734878 +15177699715 +18584960263 +15805865299 +13600892977 +15137968274 +15121086146 +15874026514 +18848239951 +15144898161 +13910993048 +15180559602 +15844372717 +18881052343 +15170000416 +13962167175 +13965456648 +13938064925 +13948914510 +13617341503 +13939481898 +13946157328 +18821356445 +18803553210 +15155930317 +13989335260 +18562314145 +18535104559 +15108726659 +18537694573 +15806233013 +13634737978 +18587477456 +15193669824 +18599281008 +13924491255 +18570906366 +15880833009 +13958024181 +18875553832 +13913387265 +15134886655 +13667297822 +15811157460 +15153053560 +18817897409 +18878260845 +15808467185 +18587600768 +15133974578 +18517210857 +18872663364 +15844216517 +18899690305 +13994779581 +18526555819 +13684796176 +15176249516 +18888559674 +13636573691 +18889613198 +13603000592 +15181046707 +13974577043 +18864092021 +15891593811 +15838614349 +13959723266 +13667167108 +15153705146 +13972053615 +15126762807 +15823755671 +18599107470 +18505813986 +18818192732 +18517527523 +18866715786 +15197034826 +13906846387 +18571725783 +15155531790 +13931443463 +15107162530 +13613682399 +13636333674 +13918404682 +18819473062 +15871221581 +13942919860 +13955410648 +13991006763 +15876044395 +18832649027 +15841588306 +18822855890 +18819406062 +13995122305 +18514623861 +13631404194 +13979016089 +18894285887 +15875534569 +13938500260 +13978222171 +13995628986 +13620909118 +18810938249 +15881275372 +18500046084 +13965524434 +18519214412 +13660937160 +13636426066 +18573092027 +18849470017 +15114713998 +13971768838 +15120892491 +15885246338 +15834990850 +15810410031 +15189836185 +15174608939 +13952202697 +15887727056 +13602331921 +18842967116 +18845200080 +13937653215 +13639316450 +15897145326 +18890016378 +18826928408 +15897526790 +15849348437 +13961149177 +13985200496 +13632267831 +13946059600 +15832086326 +13648132787 +15852856050 +18585559582 +15188387735 +13954811558 +15177037254 +15850035501 +13657382876 +18881635010 +18506103435 +15806516002 +18847627528 +18813940417 +18522846632 +13670295788 +18852065764 +15183063028 +15146267141 +18802084308 +18888823827 +18541612184 +13905646038 +15173721982 +13680942084 +13916173813 +13997103061 +15804930669 +18531483988 +13912011982 +13904925217 +15113399343 +15120888152 +18857436022 +15139798178 +15195671358 +15803635381 +18839746210 +13603512103 +18588704255 +13966344439 +13673466234 +15142421932 +13618014154 +18823919436 +13636196741 +18512322207 +15111447773 +18839807493 +18557008326 +18539101262 +13697815184 +13951484399 +18590769075 +13920673784 +13679333157 +13665010883 +15866244229 +13913631418 +13646578453 +18509079243 +13984199949 +13693593342 +15114379167 +18801046761 +13979541393 +15855142136 +13941030815 +15139649882 +13620725815 +13625530948 +15184619662 +15805943803 +13969951474 +15191222584 +18553957283 +13604292082 +15106455086 +13997561490 +18563079724 +15896237071 +15183359428 +13694144608 +13623011691 +13944772035 +13651243257 +15124531529 +13983067621 +15828945635 +13942296006 +15841212056 +13926572656 +18849035689 +15830590292 +15126436978 +18863065872 +13974312074 +13638211153 +18888564912 +15112929041 +18569064110 +15826291789 +13677450763 +13671318827 +18597426617 +15120193542 +15188659996 +18820157023 +13657064506 +15866909752 +15879182720 +13971013856 +13634786266 +18547879689 +15108465606 +18859518889 +13686924131 +13681124947 +18522224161 +13608772697 +15862874905 +15138969406 +18823081289 +18880628983 +18502325904 +18884835361 +15853450711 +15848831246 +15865546059 +13670148541 +18839580421 +13679333267 +15855052729 +18880147265 +15826826095 +13919032221 +15137038828 +13610202370 +15802256052 +18580880177 +15183151886 +15831946230 +15890447974 +13935919658 +15168294218 +18894613837 +13936775888 +15890380539 +15148885548 +18569355139 +13655121539 +13962844125 +15887627647 +15138178120 +18821090351 +13976198847 +13935750692 +15175486880 +18517167040 +18887343155 +15132802483 +15832973763 +13683116017 +18839980117 +15817232988 +18852989978 +13612242613 +13665495902 +18894246134 +18556774381 +13983398014 +18532001783 +18878938680 +15814404703 +18583253997 +15161554750 +18800225538 +15174637942 +13664417370 +13615703008 +15151630575 +18816838783 +18826361918 +18594426811 +15870059182 +18874193059 +13663468614 +18583002130 +15180914447 +13636685338 +13603558186 +13699756878 +18533837897 +15897334788 +18895908063 +13624248932 +18879483221 +15860494504 +15167286988 +18572857641 +15140539498 +15803728828 +15149579508 +15145241600 +18808897086 +15147808671 +18530621449 +18599252794 +18858884090 +15896890753 +18877197683 +13676843069 +15816940593 +18588152614 +18524484833 +13998356294 +13906682327 +13997042486 +18808500974 +13632177589 +18595372752 +18588427758 +13653039958 +18525669013 +18506125173 +13960572799 +18502318540 +13612533030 +15184469465 +15834353576 +15895558549 +13619989080 +15128110152 +15829804117 +18881452421 +18563158266 +15125324281 +18524341281 +18557554564 +13904217990 +18577404948 +13620518284 +15857888371 +15116509889 +18523998986 +13957660730 +15193134596 +18851040941 +18591732341 +13669552768 +13942839782 +18514949633 +15830542434 +13958303079 +13654714348 +18813862807 +15885890849 +15178814567 +15898268015 +13932230247 +15829118041 +13933335921 +18839463289 +13620455985 +15829164618 +18587335366 +15152522525 +13997751447 +18592606587 +18561815944 +13905217735 +13980114259 +18514688703 +13945762387 +15839840236 +15114481254 +15811473105 +13623534550 +13632533675 +15806226588 +13621471912 +15192712557 +15891279370 +18521986576 +13994533843 +15124195309 +15153453861 +13999247723 +13928938959 +15872501120 +18522850436 +13941506131 +18856187340 +15801477806 +18509366355 +15152390125 +13947779743 +18864572036 +18547374070 +15165619515 +18875109922 +18875886429 +13649085802 +15876590500 +13687790346 +15195270336 +18538193203 +13603927074 +18573650269 +15129080899 +15862960130 +13690930576 +15833190884 +18595460546 +13917651204 +13665223575 +13993026976 +15175869140 +15153380402 +13645592345 +13905071389 +15127250825 +15140207168 +18558749996 +15855733336 +15835314040 +13645572609 +13639101626 +18562511990 +13604703191 +15887758716 +15141608196 +15142082805 +18595589404 +13925376451 +15870733158 +13670570148 +18597299161 +13640130411 +15874095769 +18514497857 +18536738387 +13657463032 +13639164250 +13992358456 +18577107364 +13612768250 +15819780306 +13975281568 +15128416176 +18874638964 +15153154184 +18512002996 +15821923446 +15150097792 +13637396831 +18828873816 +15858320474 +15186115292 +15844461814 +13621296395 +18833065406 +18585252274 +18802189265 +18545996263 +15894351098 +15826826119 +18874017764 +13615114101 +13698954210 +15118848109 +15812412970 +18805600838 +15884470856 +15860120869 +15157985807 +18827372520 +15183239069 +15858841489 +18516331307 +15111652129 +15126022916 +13655674357 +13929299277 +15128958962 +18596220084 +15860088364 +13997877142 +18820075967 +18593440813 +15159507321 +13957987985 +13904014098 +13638851304 +15183413067 +18579666227 +13951728653 +15859226991 +13913807009 +15871300850 +13623332433 +13931001264 +18825242515 +18822136833 +18505222346 +13985997355 +18568687093 +15166668255 +18578448088 +13978955379 +15109768913 +18534716721 +13995439058 +15882888907 +13636738131 +13932084434 +13632646986 +15163523652 +18816868987 +18818063351 +13622984703 +13664581244 +15172901859 +13662354636 +13942756802 +18560651713 +18893188933 +13616596722 +18510345824 +15879735317 +15850005605 +15889602175 +15192953659 +13670630819 +15185217049 +18832320695 +18825852754 +15823106212 +15850491297 +15837259976 +15824538404 +13600510644 +15117219524 +13629344819 +15800273479 +18835997181 +18837085212 +15889209083 +13971604714 +15814345254 +18500465486 +15142911047 +13665341453 +18814551988 +18560156263 +18823048570 +15811817310 +13903239313 +13625741836 +18574205750 +15169154375 +15143744387 +13912426004 +13629526974 +13628521617 +18535738905 +13910610956 +18867242935 +13953669590 +13930756921 +15834984356 +18554184374 +18881034720 +13969342443 +13978872404 +15852709342 +18801548082 +13610601896 +15807213853 +15124563535 +15882635353 +13647676578 +15856735287 +15849522859 +18533252308 +15812910601 +18844440736 +13698482728 +15134281289 +13678610961 +13664573337 +13972726554 +13653384535 +13642386830 +18893919585 +18888370439 +18517405462 +15874208779 +13670746826 +15856966165 +18571862590 +15838093026 +15185397948 +13941877891 +15121910235 +18810524703 +13659578978 +13984689641 +15180936030 +15193534058 +18532179743 +18859956775 +15883646570 +18890866234 +13620804108 +13683421870 +15876109483 +18828363697 +18841498257 +18896540480 +18887963347 +15836241502 +18818025863 +13653873507 +15837328054 +13962945913 +13938350834 +18840702992 +13983574670 +15861683548 +13917395120 +18847915829 +15827961616 +15890501266 +13645428061 +18535436635 +13925312235 +18500498778 +15852726441 +18537523328 +13640795201 +13691726717 +13913789363 +13929616178 +15155281727 +15171120878 +15105443276 +13997001147 +13937179146 +15870611976 +18554606415 +15116704043 +15184957008 +15892554072 +15104473407 +15858621146 +15155465954 +15873143579 +18861784487 +18825308065 +15879599447 +15899354502 +13934805515 +18806400267 +15886787213 +15801622942 +15864752319 +18529722287 +13959559830 +18861045900 +13995427052 +13625156895 +18801557501 +15843377035 +15165313705 +18555920269 +18507249429 +15821489922 +13696437288 +15194656229 +18885523450 +13947742082 +18899873684 +13988095942 +15881104938 +15866458570 +13622774173 +15135718986 +15876879297 +18591960343 +13908082179 +13972254906 +15820798338 +13651339311 +13615382527 +18525645259 +18835414136 +13999305667 +18890555993 +13685777463 +13640718711 +15122726090 +18884900820 +15822296462 +18506111838 +13696981019 +13959992862 +13916402971 +15134848420 +13618055262 +13984605421 +13605172727 +15186233398 +18833523063 +13913174602 +13972914292 +18863509614 +15183936918 +18580788834 +13696843981 +15143770652 +18531516501 +15133302484 +15157850290 +15198710198 +15139408607 +15129317941 +15119389619 +13633025636 +18533366881 +18821497010 +13971833786 +13909754045 +18814573101 +15114721434 +13602805887 +15809686485 +13682566361 +15102985739 +15172318075 +15856749637 +15893868426 +15826031741 +13675724530 +15887975400 +18896645851 +18821658101 +15839009623 +18820353068 +15881493030 +18594873469 +15126816783 +13607757774 +15809212340 +13665816327 +18545850392 +13908613209 +13620424790 +15160124535 +18872668846 +18844183769 +18804292400 +15809985862 +13629775125 +18814200288 +15185408640 +15149218600 +18844339306 +13634597158 +13693305999 +18836268350 +15187394105 +13699108808 +15139462519 +13604271991 +18563592900 +18831762282 +18576140741 +13962354486 +15800257293 +13680253952 +13652523875 +18869637163 +15850092940 +13692668409 +15810700995 +13684257574 +18834961645 +18532699038 +13698919917 +18555361951 +15110174924 +15168718302 +18888897342 +15810144556 +13668507839 +18847220426 +15145294992 +13970649528 +13639073641 +18818637720 +15162717567 +15115471701 +13612010200 +13932110673 +18529588965 +18807428221 +13933224610 +18528819054 +15138803333 +13935766609 +18869701472 +13624108943 +18891085159 +13999998838 +18855905726 +18503460201 +15824738655 +18803252518 +15187011530 +13653912974 +15872960600 +18811085843 +18801133359 +15180715073 +15821048107 +15837074490 +18802825546 +15841132066 +18866258348 +13610968946 +15176405254 +18561575814 +15828187849 +15852005964 +18522869449 +15109481395 +13668446169 +13695357078 +18810368755 +18880019358 +13685561503 +13995223805 +18507253868 +13617417175 +13659800517 +15856572551 +18844451182 +15158351870 +15837837158 +13628022328 +18500485096 +13901633986 +18568942566 +18585537834 +15111470304 +18543062244 +13997670602 +18527606786 +13625872646 +15863597892 +18806168301 +15158266303 +13610361646 +15155087434 +15196116168 +18855130989 +18851273772 +18895395597 +18565781308 +13684891387 +18514679758 +13987875233 +18582256971 +18818378170 +15890205914 +15195774009 +13605093470 +15889186041 +18547828073 +18895031708 +15157949183 +15154384443 +18545356241 +15849113531 +15892255815 +15121408907 +18521347541 +13958988171 +13655082616 +13913005024 +13945629567 +15157404024 +18875830599 +15869316117 +13935229040 +18590921238 +18512697691 +13694252798 +18579541526 +13650718219 +18556804035 +13678231009 +15836345616 +13993730024 +18545829505 +18591819677 +15852732786 +18578961021 +18855548903 +18538960412 +18865939642 +13691111578 +13926063612 +18566047176 +18569787986 +18845809522 +13665537399 +18591241903 +15881188402 +18826686844 +13942862539 +13662997705 +15836681935 +15134073243 +13645133004 +15161642763 +13998903271 +18844160136 +13945517967 +13929716596 +13605512201 +13615433983 +15199488461 +13603614207 +15863461721 +18821761258 +15834420160 +13953594374 +13655760195 +13601744971 +18512069786 +13669838206 +18855615797 +18569652709 +13942425250 +15157752706 +15166254708 +13920900316 +13622075364 +18596939335 +15137033980 +15113077365 +18594565645 +15886484063 +13633822623 +15838249697 +15896446236 +18533182299 +18858152064 +15132089470 +15868091389 +15151788856 +18535096848 +13603464174 +13997029414 +18869795150 +15137529644 +18597476518 +18831996778 +15834961568 +15117552474 +15113354531 +18834443333 +15878402204 +13921960654 +18559802491 +13936620083 +15173818893 +13673969687 +15133925226 +15190958742 +15836372929 +15873127191 +13618484537 +15119998458 +15145529904 +18569949046 +18535686656 +13945792750 +13643184753 +18573196105 +15808143226 +15890433778 +15831398382 +13965949805 +18863669401 +15113595875 +18808690325 +18567479513 +13684089034 +18846427033 +18845253178 +15852410127 +18501794885 +18802081025 +15897524976 +18837691164 +15878577074 +15132273350 +13621627263 +18597225355 +13975377239 +15110766261 +18826975115 +18541118195 +13690450533 +15811077581 +13658625929 +13669316472 +15131736956 +15163843932 +13958346834 +13925012948 +13975137785 +13608168554 +15802065786 +13636049904 +13986113910 +15823106796 +18810482612 +18556584358 +18561309364 +13919245166 +13629864080 +15852178486 +13955088584 +18846262617 +15805703451 +18503661799 +18883836864 +18847711782 +15831161939 +18589303132 +18801132362 +18807658629 +18591586667 +18891225798 +18553354706 +13693033789 +18595233481 +18554656163 +15843077075 +15139088409 +13983297198 +18894831133 +15838190038 +15822661278 +18521460374 +15808157936 +15827028898 +13602284749 +13619449499 +18867495452 +13917239689 +13975776635 +18575927380 +15804301177 +15180521501 +15826876269 +18821323704 +13632401304 +15827500770 +13946988164 +18801546853 +13940390967 +13933324988 +15880918518 +15841986975 +18897702920 +18569488867 +18847097891 +13663239311 +15195019913 +15879135545 +18891116345 +18573246814 +15899579393 +15808896054 +18572637055 +18547701588 +13611849483 +15133417829 +18507215187 +13990586758 +13948567167 +18530255563 +18839366544 +18599514693 +18836912484 +18849728047 +15170637240 +18866254516 +13957825515 +13921485522 +18825914064 +13949714689 +18884603788 +15875616804 +15145755238 +15875467744 +13932292717 +13917003352 +18502620744 +15180425190 +18585897374 +13959993656 +18805877944 +13992591092 +18874348702 +18886068460 +13970043941 +18850711033 +13939429111 +13909401963 +13993194493 +18869439750 +15850501594 +18844850104 +15104628764 +13973296068 +15146380840 +15812678923 +13917591754 +18505899498 +18577869424 +13949707466 +13676706903 +15117046112 +15181025919 +15865000361 +13678223393 +15892735974 +13624879692 +15182527699 +15150593543 +13653984812 +13646330192 +18555253906 +13698122998 +15195589206 +18850266755 +18844521425 +13904059450 +13618283795 +18859162524 +15871279071 +18883070090 +13611284047 +15108413528 +15139021237 +18591913634 +18521429305 +18860342987 +18502935321 +13607695876 +13905346178 +18804090474 +15163707954 +15122917468 +13675923308 +18537974653 +18850887626 +15180060893 +15151084193 +13663047381 +18591912135 +18595837107 +18814493376 +18825169359 +18819516863 +13628522291 +13613531735 +18599800445 +13994024493 +18889010653 +18893036060 +13913246924 +13661960775 +15861345526 +13641580845 +15889110495 +13601011510 +15810534224 +18873534045 +13697809917 +15822499145 +13695141071 +18594883198 +13933286667 +18808767210 +13610799039 +15843282666 +15129311002 +13692770004 +15875825030 +15829864522 +15804666862 +13639480551 +15831140620 +13987675788 +13617164305 +18563594087 +18842100958 +18549640399 +15139496567 +15837468137 +15132329831 +13612470582 +18875565229 +18825158292 +13643129105 +15142512919 +13654290566 +15131071107 +18885425636 +15810263070 +15838161074 +18803368704 +15875075597 +15106071644 +18876163258 +15131524592 +13951033566 +13604044068 +18838654355 +15171651577 +18896325124 +15172720273 +13670948082 +15162247573 +18570239905 +15839468710 +18524851786 +18884742749 +13643554890 +13636722601 +18521906046 +13663979787 +18532157155 +13999987985 +13948062555 +13962700643 +15865036870 +15842221669 +13633375270 +13979637009 +18548389378 +13638796747 +13939520451 +13672749732 +13953216744 +13936729658 +18500565795 +13637145846 +18868303258 +15893140171 +15184295629 +15107210555 +18582818507 +18884181712 +18805814165 +13602142539 +13672389321 +13690437307 +13605255722 +18889753254 +13970443065 +18859840747 +13977527329 +18561964997 +13649701092 +15125001098 +18816092382 +13936984937 +15198355155 +18587139333 +15888554293 +13940878630 +15800179230 +15140146787 +18529996427 +13601998778 +18896780180 +13677168577 +15161129355 +15121857282 +15154825371 +13950371079 +18816412455 +18522333127 +13992061129 +18528238599 +18843142917 +13667756124 +18552464838 +15872042349 +13960229226 +13666472698 +18593748188 +18563004273 +18866934002 +15822240998 +13614122535 +18546832241 +15144891587 +13666803423 +18893504149 +15103755996 +18518581298 +15154669989 +15874414326 +18505567666 +18864607669 +13938161874 +13956716879 +18835534067 +18559740701 +18574599114 +18569522813 +18560684423 +13965049231 +18824890467 +15156190294 +15170428407 +13949797257 +15885630199 +18875930231 +18534441218 +18585891937 +18897294346 +15121010290 +13623127867 +18579295103 +15181257374 +18507909463 +15191002814 +18887237053 +13940094403 +18869432743 +15146181308 +15107256274 +13673081966 +15175562487 +15132100800 +18585983675 +13924123219 +18574560556 +15182954172 +13913318313 +13920821728 +13617545578 +13619441374 +13910972332 +18529402812 +18894465679 +18594810993 +13947883279 +13671098024 +13901221163 +15139464048 +18854995144 +15112373303 +18840490326 +15881845430 +13639062197 +18500316918 +18582119375 +18894316017 +13621579209 +13617421878 +13610314033 +15120180050 +13642211269 +13689727157 +13950067461 +15862136572 +18502908492 +15177900768 +18882182737 +13941037793 +13605687835 +18556842508 +13984839637 +15824727919 +15892591271 +13639689180 +13613105364 +18562092085 +15807640963 +15188093903 +18808277884 +13974321453 +13617789965 +18886964658 +18894518620 +13665871733 +13930672782 +18527497854 +18849352266 +15165549750 +13652485103 +18814967767 +15894273231 +18808468102 +15839868576 +18568616465 +15874843785 +15119223201 +13659483744 +13687275661 +15816792471 +13689911718 +18585307377 +18890843109 +18568762175 +13962761250 +13917343679 +15826362244 +13939817843 +13993863975 +18861954817 +15892257745 +15162113450 +13911521201 +18599091837 +18842173360 +15179991656 +15831795414 +18500044474 +15181152310 +15837144468 +13683522104 +13619139346 +13906171350 +15104257046 +18898172095 +15864137641 +15822540429 +18875906230 +13623790113 +18839320049 +18870957299 +13975718467 +18538162360 +15878592840 +15128370971 +13683025674 +18529322014 +13902888792 +13900235265 +13909936016 +13607464274 +18859177512 +18892445387 +13987147291 +18512807978 +18870466630 +15150322755 +18807750188 +18871895637 +15181125292 +13989213582 +18552360023 +15860930772 +15831814907 +13924691354 +18806004651 +13951825117 +18860058215 +13960105115 +15120502049 +18548373265 +15818746266 +15181913969 +18502544946 +18539848040 +13654466618 +15811888205 +13686671298 +13967821014 +13904650677 +18828340962 +18529886273 +15106324460 +18841939700 +15113425631 +18504139251 +15156935589 +13994327752 +18891876015 +18590018188 +15135758738 +13662284526 +18542966095 +15850564805 +13666487390 +13634567680 +13638514326 +13992204159 +13931951761 +18549867091 +18529395380 +18833060992 +15130413665 +13666155774 +15839566481 +13646438401 +15802383152 +18830209510 +15886999968 +15103585341 +13621315678 +18571973274 +13625139124 +18899624010 +13946935930 +15891340919 +15834964090 +15151234246 +13628659377 +18577128289 +13958795052 +15192804203 +18892012528 +15821531131 +15143534955 +18505223813 +18508237252 +15151869302 +13671145602 +18579684596 +13955464635 +18844992978 +15181958639 +15863232542 +13681325370 +15183635836 +15154746129 +15115166209 +13923270837 +15829830567 +18587536865 +13675824619 +13942434841 +13944734246 +15196389577 +18823669393 +18500548172 +13959078992 +15841073773 +13625932119 +18871311677 +15834896843 +13636457618 +15813001008 +18579447347 +13949880588 +18869566987 +18841474711 +15816024831 +13930639909 +18808398073 +15101140634 +15105265911 +13943004378 +13963821734 +18830263455 +15872457528 +13958463854 +15193696252 +13924895904 +18810026130 +13677516514 +18855165605 +15118892155 +18576429461 +18578784377 +15128543865 +13986498633 +18595879050 +13647025946 +15117585679 +13914410958 +15140406801 +18542197194 +15158988635 +15115187184 +13683113678 +15173063709 +15875149393 +13911618134 +18518784483 +18848778576 +13647936795 +15199661364 +18808561196 +18864437338 +15816868675 +18543093272 +13959815608 +18588664525 +18517945175 +15874102860 +18889191623 +13620460455 +13661411896 +13976584578 +18523525565 +18843843062 +13621849459 +15116687260 +18596360993 +13988771251 +13656832271 +13652877086 +13910030469 +13902623377 +15850225212 +18513949485 +13687760287 +15101570416 +15877503135 +15126949890 +13626540241 +13950549565 +13634070102 +13929608841 +15103183013 +15881718912 +13641590266 +13934994412 +18858196536 +15837588166 +13933670866 +18538080738 +15868593556 +13900711347 +13951937170 +18812570919 +13662184931 +15842495502 +15157071387 +18851847408 +15801711777 +18559923200 +15883600965 +18865690099 +18539621395 +13973239222 +13614659507 +15868635652 +18816204926 +18806020858 +15858020317 +13904616619 +15186118892 +15855394587 +15808807383 +18527134176 +13675855818 +15163898590 +18843175049 +18881200314 +13965671003 +18584728045 +15183630007 +13652135332 +13935317576 +15153759260 +13949996429 +18538383237 +13660128780 +18896781902 +18583568086 +18812497822 +13650941328 +13900525199 +15191574130 +18589112298 +18872974519 +13600187484 +13686652558 +18577935718 +18848123300 +15183680736 +18595071794 +15813463134 +15867943433 +18818872577 +13951186025 +15873297317 +15812563327 +13964004631 +15879790505 +18840646513 +18889926025 +18857379790 +18806792521 +15845933434 +18833083621 +18831983268 +15814691670 +15194606034 +13607605742 +13911538537 +18551521727 +18585649146 +15199535031 +18548526071 +18546718032 +15827582418 +18576655508 +15853868593 +18846698500 +15818764473 +15180363758 +15137126636 +18540951596 +15851279249 +13612398072 +15107628602 +13670847715 +15147610920 +13915645268 +18814273829 +15857043370 +15876496600 +18536047729 +13950936832 +13638756488 +13676527575 +13901521778 +15898693208 +13925032657 +13688015075 +15802205903 +18815137033 +15144532816 +13955251298 +18586014235 +18876098529 +15867978851 +18546945698 +15118266745 +18568940455 +15107142832 +13688099225 +15161447257 +13984592085 +15186194473 +13663614403 +13946541054 +15806353662 +13910932620 +13992161347 +18877981092 +15181723882 +13669929440 +18586293554 +15130579630 +13967075078 +13946728352 +18892566662 +18887697006 +18847611686 +13985667681 +15131402361 +18825291725 +13995905025 +18522425256 +13655199334 +15106820092 +15871213349 +15803196669 +18564769830 +18896733166 +18861436040 +13957874596 +15120397021 +13626176818 +18845736933 +15842249494 +15119401590 +18514123107 +15854510161 +18574255437 +15857134982 +18536417965 +18512949057 +18817253155 +18865335322 +13643050697 +18865241673 +18592545221 +18839084951 +13905972836 +13697107461 +15809621313 +15148000769 +13647059285 +15126123433 +15810797076 +18850499808 +15897010009 +18574165313 +15157117874 +18802834966 +18586861344 +18514734769 +13956560680 +15115512153 +15181751656 +13619270636 +15163132471 +13969976324 +15815290509 +15169517388 +15887358580 +15175193440 +13950009456 +13906769123 +13692397584 +13674247023 +18568046156 +15882847469 +18557877212 +18585384740 +15182558288 +18857687561 +15827275292 +13625959239 +13985360055 +13606883199 +18592254152 +18807284468 +13996372459 +18865296417 +13917023264 +13677134251 +13606872387 +18593086260 +18515724396 +18818646670 +13688717685 +18501476601 +18810878935 +15849128895 +13699633253 +18530730242 +13619872448 +15172174631 +15170520292 +18587445097 +13907017488 +18572958595 +13981920685 +18519486330 +15876357194 +15194382734 +15105923226 +13661611658 +18594563793 +13693486631 +15127141355 +15137016242 +18836866024 +15123802754 +13923029488 +18528833592 +18802932044 +15804439291 +15160610139 +18555825109 +15161391694 +15875981554 +13955925539 +13957710864 +13940030529 +15103392536 +15827294226 +18537250858 +18812135461 +18844096524 +15137655186 +13962120673 +15800528553 +15824771679 +13903096196 +15167649400 +13950629801 +13611324604 +18523823778 +15856947745 +15108918234 +15147294314 +13637139578 +15128743804 +15889338956 +13656167391 +13675284230 +13609789193 +18841850851 +18837220141 +18819926153 +15892142443 +15857883733 +15185449697 +18530734677 +18507581530 +18537059310 +15848879935 +18899443532 +15883670308 +18882783664 +15189329075 +13948785663 +15111024037 +13929431852 +13940061388 +18864782137 +15149558425 +13925812268 +15850755453 +15838485385 +18809790163 +18550293832 +15187530893 +13925886033 +18542838635 +15812631552 +13944534520 +13928685759 +18859552416 +18825461353 +13613040034 +13934907221 +13921563488 +18829991441 +15838239066 +13678917510 +18557585449 +18867734578 +13622719207 +15160242458 +18532773068 +18575561444 +18586343573 +15827285970 +15830407014 +15142280496 +18579079581 +15124845537 +13952527488 +15885916007 +13937137978 +15167541763 +18506586846 +18547623553 +18526156536 +15893950621 +15160926244 +18566854755 +15173107029 +13990077964 +18836626673 +18876158383 +13930089261 +18898506257 +15881274399 +15883742511 +15876927764 +15155932078 +15160306595 +18539685214 +18826754854 +13601482399 +13991387830 +15115261822 +18564241998 +13965444396 +13666236783 +13990703309 +15867838130 +15134590465 +18574703553 +15872940760 +15894289626 +18524114942 +13652035579 +18531372141 +18524123650 +15831890015 +15176914285 +18549328351 +15199061102 +18871989687 +18599042820 +15890971370 +15861812226 +18544841901 +15850264824 +18807863274 +15889261059 +15138621596 +15136654648 +15115334420 +18554153182 +13980351698 +18552237969 +13602585009 +15123474563 +13980807695 +18856777507 +15143458221 +18864590323 +18546616146 +15176529873 +13605093773 +18899587131 +15835029061 +18806024613 +18535616437 +18572531914 +15843556047 +18552084637 +18849783869 +18524492364 +13620288480 +15108633397 +13918260472 +15804639733 +13624213955 +18899157836 +13607892981 +13615447211 +18585283629 +18548703419 +18575546123 +18596877296 +13669245842 +13676419936 +18825183475 +18582055231 +18594805935 +13922252192 +18827711514 +15853716424 +18853485899 +18843259254 +13678687649 +15898331370 +18584888069 +13625627456 +18883046378 +18550169300 +15170340285 +15197738303 +15124649035 +15815445603 +18873894399 +15843903802 +15894324215 +15838474457 +15179158693 +18595273563 +18805293936 +15109832341 +15180411473 +18542836300 +13679695464 +15181687775 +18580169158 +13918326667 +13677032696 +15815117103 +18807618049 +18505934145 +18810165633 +13663791085 +13923967317 +13670037409 +13614335339 +15891458280 +13695638281 +13900082804 +13927242495 +18831156726 +18839675396 +13653863192 +13935560327 +13933588121 +15145510005 +13693005731 +15167359471 +13601043083 +13978549617 +13982330561 +13905288078 +15196060798 +15815597508 +13953740639 +18879663873 +13696611605 +15845117661 +13673011821 +13691023046 +15120666429 +13962184122 +18856181562 +13624024782 +18541932524 +13671198121 +15154272598 +13601062891 +15803789576 +13928191301 +15186284776 +13936784747 +15878674745 +18581642320 +13900993802 +13945618254 +15852390359 +15846366586 +18508459022 +15864191223 +15819693472 +13682834921 +13917751943 +13975227449 +15142248181 +18817799228 +18870099326 +13600382352 +18576496924 +15178283897 +13696852550 +18832737905 +15186877984 +15137060373 +13909164352 +18804299647 +18815600918 +18806553078 +13941788811 +15115639968 +15819895393 +15162241386 +13928406648 +13610034382 +18802488686 +18510255568 +13931094956 +18838878875 +15169222590 +18876723245 +18520286465 +18554635824 +13920428321 +18800825592 +15847334463 +15137922453 +18835343502 +13645653845 +13939820380 +18558759025 +15173313780 +13962240462 +13605217867 +18573113140 +18898465530 +15836016378 +13608513472 +13988118758 +15169166098 +15198115583 +18563553405 +18590899728 +18549890190 +13624438946 +13623637378 +18547942489 +18829089785 +18503005342 +18800190965 +13961508956 +15803712679 +18565660402 +13619898321 +15137102909 +15142983374 +15806153395 +13608043878 +13619076286 +15198508928 +18870771977 +15106273528 +18549530772 +13992953141 +15180057045 +15187691141 +15827083840 +18555394987 +18893345261 +13640534797 +15114121729 +18869220575 +15197164481 +18825576299 +13917170080 +18887536086 +18549650154 +15154146135 +13993976165 +15145621048 +15876373335 +18873203618 +13695660247 +15868146490 +15899783721 +18859556490 +18819459994 +15880575511 +15152952168 +15134068686 +13669101875 +18871294613 +13971311409 +18803453616 +15132875651 +13683059687 +13924500138 +15864869362 +18819610862 +15810291827 +18524111976 +18545397218 +13987168342 +15180128969 +18534443491 +15857862869 +18830796048 +13691695362 +13661644164 +13652346287 +18520384598 +18838278703 +13652769026 +15113628434 +13986563451 +13632692925 +15175158118 +15166772942 +13636385530 +15804521129 +18560462155 +15881813533 +15194538091 +18897365456 +13900062614 +18826263539 +13974217118 +18517795547 +13627402881 +18573408036 +13657030514 +13954463640 +13957291661 +18529392231 +15855224234 +15897231438 +15174817453 +13903215089 +18804748849 +15109075997 +18893480392 +18571325182 +13940172916 +13904430488 +13646011232 +18518858001 +13654908262 +18571705735 +15836481932 +13660925274 +18848100784 +13926177412 +15869120506 +18813388544 +18838561114 +13686038659 +18576311582 +15812520694 +15837972004 +13677102164 +13689704535 +18862911760 +13630059604 +18598009264 +13635320762 +18865211808 +13995220149 +13947693199 +15146341709 +13678890461 +18511407972 +13922434857 +15175195933 +18519523771 +15858923332 +15821474342 +18895585952 +13909667112 +18856338493 +18555062881 +18838686460 +18550865916 +18579999921 +15189942222 +18808561576 +13935204026 +13900463482 +15135098786 +18532802835 +18553928944 +13606663202 +15197455169 +13915907472 +18595242493 +18511923430 +18876166926 +13998161253 +15103113124 +13668829465 +18842408004 +13662670904 +13986526205 +18552404554 +13922469245 +13698583740 +13946603447 +13644979338 +18845923823 +15100412619 +18561253450 +18591100366 +15183260186 +15831113902 +18512236829 +18565214693 +15872910297 +15899805267 +15897223613 +15800710032 +15818235576 +15187757330 +13903291510 +18878773890 +18537530717 +18890596036 +15142372299 +13910726150 +13694452189 +18830748918 +15123114443 +15802057866 +15821209133 +18558746864 +13903589943 +15185807728 +18816606552 +13908039158 +15865792022 +15113863484 +18529576556 +18587286633 +15118844183 +15803636657 +15111907341 +18567868177 +15859012409 +13926628057 +13662877689 +13910360522 +15837534729 +18554170528 +15144651295 +18815176139 +15862722145 +13694074481 +15839665365 +15173125342 +13971623565 +15189881963 +18578240425 +13627100481 +13923238282 +18579025535 +18568445430 +15144449530 +13931491704 +18805316590 +13697899707 +18527396712 +18873642247 +13612257507 +15889765560 +15888294188 +18861514241 +13630308337 +13908916926 +15801370784 +18824466426 +13658589087 +18825417799 +13621506262 +13651563479 +18504859253 +13934652510 +18833381193 +13660207786 +18843875800 +15122036092 +13936568342 +13940207179 +13698881668 +18811796233 +15825060894 +18835433366 +13915934718 +15860269139 +13973990939 +15813738689 +18541980078 +13625567494 +13673150732 +18872892699 +13659536970 +13618740790 +18522384073 +15872697923 +15895672750 +13604419966 +18505265356 +13686178184 +18828667305 +13698402488 +13952105114 +13643039601 +15116553884 +13697750734 +18576818511 +15883019224 +18844919427 +13924155117 +18532432044 +15184590277 +15109281676 +18506248533 +13904289709 +15137335257 +18578388223 +18562103132 +18896950067 +18575134305 +15100865113 +15130636629 +15157871977 +15873328503 +18847397247 +18555975331 +18818035165 +13909752853 +13932462195 +18895738671 +15800591933 +13945194964 +18848897556 +18579867652 +15880995852 +18511928941 +13668166804 +15169790009 +18505348033 +18557659575 +15867213739 +18525867361 +15816387300 +15853432476 +18806372320 +15800178604 +15166530652 +15813069820 +13960466710 +18524813629 +18530866014 +15177329529 +18594108088 +18571610467 +18536032012 +15856964549 +13659038417 +13652551062 +13623256515 +15189388597 +18824999071 +13630261471 +13640450870 +15845225811 +18523571365 +15892524625 +15134885247 +18862850789 +15151855926 +13941264928 +18843013473 +18845400737 +13924644131 +18845153348 +13698181677 +15857332542 +13647359727 +15184970684 +15194287264 +18562675314 +18812364765 +18862674458 +13618637789 +18831669658 +18864257880 +18866479137 +18559879839 +18538386186 +18836379035 +15139677070 +13967442841 +18816652497 +18520808601 +15815254780 +18874030133 +18545540429 +18882419741 +15894325073 +13641623314 +15884629897 +15889780332 +13665756858 +18586090095 +15863915773 +13668216785 +13662747037 +18566697175 +15104060810 +13628181446 +18594666443 +13692508119 +15851356565 +15104173450 +13946384285 +15164379006 +18508195977 +18596915790 +13986397089 +15177236633 +18815422058 +13613323226 +18864192186 +13984200837 +13667160600 +15163489753 +15869276749 +15899270356 +15188980141 +13942007355 +18504892786 +18594696712 +15865960860 +15139516385 +13687324130 +13900288512 +13977944971 +13650765341 +15836429309 +18571363254 +15151142279 +18523386184 +13952692004 +18562341436 +15154582266 +15885964069 +18568490504 +13985560871 +13677590227 +15170873841 +18544841356 +15886775195 +15876173876 +15100105306 +15136693397 +18514553279 +15164863170 +18538288802 +18820517053 +13628612704 +15110298665 +18851837133 +18830804352 +13941706579 +13620225974 +15114530402 +15178859549 +18863647154 +13649739757 +18844795946 +15101024498 +18841000103 +13907369377 +18857338868 +15816237843 +13668553387 +13674003217 +15848427290 +15867791452 +18561096395 +13925007762 +13927730362 +15877853662 +13956466680 +13945557157 +18522646907 +13634549937 +18565305342 +18886699200 +13978093239 +13652789926 +15128572976 +13958082385 +13661702124 +18835416206 +13628660218 +15897745975 +18574148860 +13940416922 +13603929954 +13677003389 +18566211107 +13631199872 +15868154623 +13912179811 +18899388467 +15124500235 +18543011937 +15172799340 +18524337703 +18846805407 +15873925848 +15106458105 +18520260882 +18540570665 +15174543731 +15892210082 +13657785877 +18561327953 +13629875996 +13689786570 +15821045248 +13653238122 +15196163325 +18506461311 +13928403436 +13982757377 +18524416080 +18860657316 +13977234429 +18850298059 +15158941556 +15143730722 +13931263827 +18515383137 +18508732330 +18822358992 +15164522615 +15174481135 +18880022739 +15821104378 +13985854019 +18813649978 +18536620653 +15854767006 +18555410434 +18584056817 +18540166029 +18561443356 +15856798947 +15190067864 +18816186541 +15810706232 +13615400082 +15818598552 +13908097637 +18832519591 +18552486036 +13919977706 +18538729117 +13626299674 +13697074487 +18834163849 +18515939135 +18546009954 +18806586967 +13690995258 +18811174158 +13671115158 +15160279618 +13617589704 +13666466437 +18834081045 +13642904646 +13695471926 +18580553904 +13698879267 +15139717774 +18541497622 +15177539363 +15178080689 +13960841714 +13980841971 +18865018073 +18828296705 +18551241806 +15833974771 +13670433960 +15104967872 +18804037614 +13625332885 +13687473250 +18894825827 +13922068781 +13640660067 +15109363770 +13601801445 +13632909039 +18899647543 +18814325018 +13929011245 +13984431498 +15147554377 +18832689983 +13965818724 +13633263197 +15184889118 +15161984017 +18523940758 +18856058500 +13650729353 +18882020698 +18860671723 +18577509256 +13958108988 +15162945496 +18546000259 +18865440055 +13972470684 +18598082332 +18523518670 +13921512720 +15107203212 +15101878935 +13960397317 +15835609169 +13631506656 +13944910843 +15143998533 +15857494067 +13925211622 +13634800254 +15153744508 +18554230410 +13648532371 +13629980961 +13963087513 +18868277056 +13933970931 +13669064364 +18533815447 +13618057763 +13665442123 +15115356943 +18520017526 +13929914686 +13981818276 +13666049804 +13639162516 +13610667123 +18564651084 +13623266163 +13619484980 +18879902784 +13965045888 +18858459394 +18888058063 +13989001596 +15827529794 +18503942811 +13607143394 +15118055463 +13954920080 +13943104854 +15882537378 +18522847369 +18520498991 +18861452444 +13921389874 +13999710640 +18505985187 +18583563464 +18590716444 +18878299906 +13677566949 +15198038271 +18573446788 +13989943783 +13608859926 +15108964072 +15865143743 +18830998246 +18879595783 +15125863771 +15871757705 +13603631326 +15879162641 +15196006681 +15881413481 +18571575215 +18890137789 +13640165365 +15818631837 +15140217466 +13604154649 +18547019282 +15194822818 +15135466581 +15181242749 +18881364210 +18572270964 +13691412386 +18806048972 +15176424989 +13698253293 +15864380465 +15873468756 +18814734930 +18553830721 +15173849151 +13959331896 +18824455840 +15119579077 +18809195329 +18806408166 +15107351135 +15131530270 +18578781086 +18565262543 +13954656261 +15149225154 +18516843899 +13975104342 +13625189928 +15156451513 +13979221882 +15157142832 +13999868076 +15126430683 +15147764117 +15107502575 +18804908635 +13661050172 +15150045738 +15128952047 +15191577731 +13958393751 +18574509335 +13930422878 +13938665407 +18536473145 +15164105236 +18501174876 +15114312562 +13977497562 +15176599388 +18525946539 +15876371973 +15191471622 +18515289060 +13962703738 +13633762607 +15859090046 +15195389925 +13945254893 +15873983062 +18517229392 +15811642639 +13924531475 +18537910140 +18874706804 +18802720769 +18837543576 +15185511779 +15197318983 +18829506860 +13651136804 +18833314087 +18576521664 +15186249996 +18571339995 +18857331550 +18870137259 +18896649938 +18552292276 +13694331133 +18846573956 +13605409409 +15857166772 +13619593392 +15175868390 +13609437493 +13611605699 +13939115071 +18597213253 +18509560041 +13937314908 +18542836901 +13970862954 +18840340448 +18555481549 +18544472261 +15822497005 +13960360994 +15804413489 +15125618552 +15194472190 +13617600119 +18544520350 +15862098169 +13675512775 +13964966245 +15823767824 +13922252404 +13919284479 +15116798331 +15889027647 +13607566247 +13639221881 +15825454156 +13952567440 +18852773780 +13660994404 +13627572233 +18818646678 +18594427472 +13645345523 +15868916527 +13913900955 +13994844409 +15835417570 +15102130781 +18562843533 +15121678064 +18589442509 +13948709326 +18555319497 +13970141456 +13997255906 +13963288694 +13640056095 +18591498839 +15160455233 +18597573091 +18567020016 +18540056546 +15159980684 +18810931243 +18538514718 +13908221588 +15894251122 +15842443303 +18841636686 +18881310359 +15841317878 +18839389557 +13641980418 +15862927976 +13935306857 +15838565740 +15112374219 +15147484321 +18836249791 +18572340780 +13612822820 +13901307716 +18584227665 +18892774620 +18573101320 +13988848625 +18583618941 +13951961748 +13981118159 +18866619722 +15149633665 +15851871351 +15159544755 +13638759184 +13663223051 +15155166473 +13951818370 +15180083509 +13954893880 +15167047772 +15849324203 +15188137461 +13655377851 +13999673787 +18807204183 +18874925216 +15875078684 +15818099329 +15866291228 +13698005368 +18542660232 +18894767010 +18593828103 +15855146291 +18518184764 +15854356921 +13982819153 +18883932738 +15839498995 +18875059271 +13903145385 +15868118170 +18514692583 +18871359291 +15813169298 +13617508085 +13694913077 +18895499683 +13678416147 +18552997835 +18830269316 +18553002603 +13646565651 +15111513742 +15138515855 +13656316846 +13604502500 +13660930001 +18884338959 +15893922678 +13960193417 +13620103747 +15137532361 +15824045514 +15879707645 +15867789885 +13625502341 +18527245782 +18821794417 +18889126759 +13909487904 +15813253797 +15198197768 +18842746116 +15161415032 +13692481112 +13954576688 +13659874390 +15807852430 +18841870569 +13958790003 +15878775629 +15825972759 +18508510490 +18545921007 +18877148714 +18560260993 +15834242828 +18596874094 +15149419133 +18554426161 +13684811065 +15828439407 +13902179571 +13989915222 +13961843228 +18553910973 +15135650059 +15136957619 +15842245654 +13699561655 +15822085098 +15188356542 +18541206919 +15169822378 +13640211307 +13613919983 +18838834155 +18849033331 +13943393952 +15847308127 +15139400112 +15888302710 +15826326580 +15857660897 +18876995465 +13677024954 +13966734459 +18583505409 +18531578091 +15856449121 +18840825182 +18592355006 +13936771446 +18520311683 +15192277378 +13908579637 +13998319050 +15805977273 +15152994084 +15147967872 +18857172302 +13929236439 +18563493228 +13954628966 +18576279269 +15122487889 +18893022418 +18896829625 +18891281217 +15810875764 +15168758208 +18512509799 +18593350817 +13905618568 +13605874342 +15822545625 +15874945184 +13937935638 +13656019635 +15105329149 +13601187256 +18845264591 +15117818865 +18567832943 +18533855779 +13671362687 +13922398043 +15156021424 +18542552596 +13601567135 +13995991425 +15135505204 +13907905398 +18500905878 +15121586664 +18845302591 +18589335382 +18539080662 +15132737015 +18869508323 +13665336272 +13666060065 +15122135385 +13601892535 +13993656548 +15839890901 +13692237402 +13613185249 +13929162178 +15165196091 +13622324285 +15158660322 +13678590201 +15810760105 +13954318886 +13956504270 +15187038074 +15171116415 +13670608350 +13684702771 +18549800026 +18585031100 +13658921715 +13637679044 +15175822612 +15108770050 +15145310159 +13625249809 +15174742755 +13618219608 +15148554232 +13942429073 +15838064149 +18586965301 +15891350119 +18835585937 +13905751435 +13654198586 +15113522409 +15165339107 +15114926945 +18814698280 +13913573108 +13923509109 +13979518272 +13676728386 +15891665818 +13683789084 +15153281410 +18517416302 +15152721389 +18897718189 +13683477608 +13636487042 +18815653192 +15806388788 +13609617256 +13613905806 +13938793240 +13689905587 +18848186284 +18869837587 +13644507039 +18580878015 +15842024824 +13641908847 +18506346552 +15185763122 +13918881483 +15199539350 +13992607654 +13646247741 +18584768954 +18537913972 +13982228328 +18560865020 +15196968062 +18557661542 +13687392344 +13956863277 +18877926714 +13904029875 +15810100068 +13676675437 +15812807922 +15837200540 +15163616206 +15858325131 +15153109015 +13695314643 +18800287526 +13633358624 +18880016200 +18518343079 +18521257180 +15890799425 +13672000320 +13949928464 +18542724541 +15814858991 +15805883462 +13618008362 +18856284828 +13648295258 +15888017023 +18572074886 +18804102567 +13660299294 +15199315500 +15845778419 +18540710216 +13667264527 +13912715537 +15804493838 +18814933962 +13621215467 +15171455224 +15842088611 +13935063570 +13653437375 +18562748339 +18583376779 +15196696060 +18575690411 +15816111325 +18547422133 +15174178244 +13918796116 +18513943157 +15105818728 +15188040080 +15824411193 +15177007514 +13659646522 +15175508098 +15842599176 +18505570623 +18882372766 +13684132199 +13928853662 +18891963386 +15111094556 +18844182732 +15853862244 +15842165932 +13968121180 +13918944892 +15106165086 +15127426568 +18589942924 +13971870691 +15169571185 +15132967153 +13665069239 +13692807674 +15829600080 +13607927906 +15109202286 +18579469783 +18527626951 +18887711407 +15199759223 +15829868969 +18556099226 +15808911442 +13644410606 +13600665190 +18526088830 +18541931551 +15154163767 +18590580520 +18574038740 +13943437533 +13655536415 +13618633750 +13677687273 +18834230530 +18512837131 +13672612796 +13923463178 +13919240771 +15154736621 +15190136971 +13963160895 +18546346067 +13984955676 +18554187513 +13626825573 +15169467579 +13615311184 +13669148197 +15893948037 +15807825625 +13635535579 +15842336721 +18850909746 +13936197292 +13926041536 +13977358856 +13953590230 +13965085623 +18566320358 +13911591014 +13991947246 +13900515219 +13901132448 +13606261894 +15882351217 +13906384846 +15130888508 +13623243484 +13622932309 +13918994075 +13969120697 +15199604294 +13948831952 +18591950865 +15173282824 +13670792819 +18881755917 +15853783239 +15821057561 +13984441223 +15828262215 +15815278225 +13661036107 +13900065532 +13620472038 +13996966749 +13996759757 +18518869320 +13913855575 +15162894021 +18560335250 +15853263763 +18529771086 +13673484761 +18808669536 +18573115825 +15856928822 +18506161632 +18509215416 +13956015177 +15126633280 +15823416826 +18858607020 +13683972833 +18565811918 +13678711647 +13928734834 +15896403836 +18888572210 +13646490887 +18593866512 +18873237375 +18529317778 +18820412087 +18596342270 +15815153754 +13650187921 +13925016902 +15117509334 +18567844633 +13965977711 +13910304415 +13646012798 +13916809179 +13694228611 +18528640985 +15853565674 +15837899063 +15157614270 +18827961859 +18852552592 +18543379921 +18874422002 +18591485215 +15862075873 +13935900397 +15129909063 +18586071738 +18515217290 +13646744512 +15101656247 +18888171407 +15812330355 +15151317242 +18827036335 +15810124849 +13624257978 +15117142588 +13623726749 +13682220490 +15870911449 +18845860088 +13936800552 +18823304524 +13906579744 +15863825324 +15114235224 +18880521236 +18525987210 +15134833089 +13664587927 +15886557782 +15148460198 +18541414623 +13908755999 +13962842025 +13674523871 +15164294885 +18896046894 +13901037307 +13637858338 +15890327556 +13976239416 +15884153045 +15874369536 +13960094835 +18804942600 +13971943891 +13904307708 +18534258674 +13966139080 +18521655479 +18829250162 +18528214826 +18538237942 +18592366292 +13678428223 +13933891652 +18819845219 +13621687528 +18804788314 +18570030825 +15179840899 +13911254560 +13971422753 +15101544042 +15894340283 +15104636525 +15196853181 +18517839246 +13934840961 +13646217284 +15815752345 +18816798530 +13969633138 +15813438051 +15806390055 +13649659641 +15821596568 +18522043769 +13681839012 +13625043065 +15127299333 +15877913519 +18840082619 +13927805029 +15104757097 +15114018730 +15851979535 +13966992383 +13913179934 +13630526776 +18887158770 +18518974795 +15114531569 +13656710218 +18589687636 +13965242464 +13617464499 +18541693857 +15820771766 +13959648676 +15896493693 +15888523797 +15877762818 +18833003688 +18858248350 +18877773275 +13909015835 +15828101856 +18834996447 +15895175602 +18847487522 +15841619772 +15128719847 +18584122015 +15185222536 +18516342057 +18564087843 +18820513658 +15164922305 +18854476347 +13694321763 +13626129095 +15880284250 +18883649162 +13640313836 +18868882210 +18553946467 +13929892757 +13905367366 +18806381749 +15845777354 +18550063868 +13672902418 +18801586030 +13946047415 +18527296286 +18857607861 +13973040164 +13648281457 +18539283240 +18863038876 +13916195577 +15895257621 +15142425851 +18890089352 +18890779109 +18887095404 +15812087086 +13689313294 +18511406022 +15888060504 +18563041174 +15840627771 +13673518021 +13986488893 +13642847614 +18821340617 +15146583930 +15892691965 +18533073442 +18538779674 +18543801754 +15164697033 +13685016932 +18869387950 +15874454703 +15187101766 +15843457964 +13926341130 +18539672130 +15837928258 +18841502036 +18892744214 +13661300404 +15872948873 +18828932034 +18510670530 +18891283657 +13913511506 +15836655071 +18599112472 +13613164935 +13615448584 +13929285420 +15137412969 +18585332042 +15142670263 +13646045832 +18843172344 +13656658369 +13624862151 +18577945031 +18882098520 +13972740349 +13678370019 +15145475689 +15894974484 +13927327624 +13972451033 +15867959023 +13937083871 +13942493694 +13613306086 +15188200456 +18516093247 +13605116356 +13912140271 +15160132221 +13694579808 +18586817637 +15116541026 +18814093178 +15806630638 +15145510203 +18848148898 +18587855119 +18831232903 +15102497505 +15853492793 +13912267803 +13910916303 +15150469194 +15122952239 +18860455620 +18877831978 +13907729155 +18874316367 +15824183547 +13660365367 +13670342126 +13663823091 +18852540857 +18839975553 +15152744209 +15833787163 +13933721790 +13970931031 +13609667040 +15819073812 +13626903960 +15104421614 +13626495846 +18885641230 +18839724648 +15858309975 +15879995565 +18897769723 +13624427019 +13665732731 +13918936935 +18554470062 +18829913100 +15153214959 +15852800122 +18805939674 +18897707620 +18528942222 +13654253072 +18814608151 +15118637909 +13697773409 +18553276577 +18592829115 +13927847139 +15841714978 +13672187866 +18861642949 +18588721774 +15141789791 +15177598252 +13912545915 +18578030853 +18562524261 +15829179460 +18809958887 +13904799298 +18551825692 +18886991356 +15810374847 +15822789491 +15896000068 +18874400555 +15185067318 +15846628249 +13917295326 +13988347220 +18821746228 +13953222134 +18855602643 +15173252850 +18876491181 +18832705104 +13678102067 +13948317847 +13955691909 +18888283889 +18875195378 +13603186439 +15850042290 +18535604837 +13922032028 +15825932001 +13689677137 +15139984472 +18861464670 +18858336692 +15137282858 +18825830464 +18886187961 +13963677454 +13670353172 +13930827644 +13643877267 +13653976502 +15191680410 +15157608365 +18501082216 +13612364170 +18865293020 +13691011566 +15193510704 +13679433775 +13604634702 +18887114519 +18872020157 +15181917528 +18559336127 +13904478895 +18547924142 +15141435217 +15144516418 +18880130400 +15841580229 +18814250340 +18850483170 +15180008764 +13968136416 +15815719009 +18823616957 +13691053168 +13973955492 +13619871512 +15138779938 +18562238359 +18504397165 +15851690807 +18562300388 +18858692905 +15820636511 +15892652033 +13691808803 +15140909893 +13948668610 +13964347191 +15854031495 +18506602559 +18500960255 +13919044475 +15808058328 +15173119166 +18821093108 +18842348068 +18529250282 +15855386832 +18824640816 +13983154541 +15197795922 +18562913864 +13900359526 +18575425835 +13601781579 +13636325862 +18844402330 +18598580782 +18850741267 +15102937327 +15816554964 +15845098603 +13687585261 +15887721561 +18892108585 +15136526378 +18860694138 +18827316853 +15866648110 +18894506811 +18529374123 +13990822538 +13994421150 +15815265039 +15122628647 +15878979959 +18848046276 +13999161352 +15825093529 +15155099360 +15840838474 +13630304490 +13940874106 +13613429561 +18522195314 +15117988430 +13935545032 +15120180003 +18588910679 +18589901575 +13975465671 +18550646595 +15874084897 +15117085048 +13663632874 +13686278904 +13948974388 +13609926887 +13616121620 +15899521640 +18569451413 +15125361128 +18525714171 +15131197742 +15832877938 +15196893902 +15841157317 +18806417588 +18868276550 +18596248011 +18821274498 +13667761553 +13931619355 +13669036373 +15884597576 +18536654654 +15113596041 +15861130488 +18821633619 +15838098752 +15135793292 +15803628581 +15893787531 +18576660185 +13982167866 +18840821358 +13932335939 +13618654850 +13926359591 +18585654783 +15887055391 +18580858032 +13988481017 +13670479910 +13626923676 +13959937004 +15850781985 +18887585106 +18591036587 +15115617396 +18544947286 +18513530374 +13940859570 +18833824264 +18533399402 +13635668469 +18868591826 +13649481719 +13969090198 +13604579543 +13630801610 +18565541841 +13950329169 +18507303168 +18562890474 +18867725227 +13671138335 +18855940073 +13968076299 +13937174749 +18834952431 +15102209783 +13965051223 +15842398138 +13997777581 +13985584077 +18580365627 +13940431220 +13923454391 +15883298317 +18897919077 +13915786955 +18536181941 +18880202851 +13642198430 +18515821825 +18864464261 +15121749466 +18870023273 +15198409023 +13628254624 +13620753247 +13603546727 +18864501833 +18598677470 +13929036989 +18545896119 +13611958137 +13657319426 +15113606477 +15133127217 +15171264479 +13919122858 +15882127742 +18525256332 +13660266514 +18570475685 +13671544149 +18595959274 +18801699109 +15171410523 +13916898203 +13977418027 +18524818580 +13636644533 +15846789905 +13692922255 +15847832690 +13940327801 +18528866329 +13909967596 +18825785109 +15842792085 +18537509139 +13901436352 +13955827423 +13927561037 +13941328118 +13987023571 +13697675669 +15119519100 +15163809924 +18804737091 +18850846773 +15869856125 +18549118621 +13678139832 +15821956603 +15116414485 +15834012336 +18515437974 +18808814088 +15859322894 +13638654005 +15807967017 +15149496569 +13683834230 +18875267252 +18874203834 +15116279996 +15855212336 +18808681672 +15821443298 +13954132642 +15850390937 +15860318379 +18559984532 +15176416703 +13666088177 +13948275960 +18543563346 +15152753596 +15121815154 +18511650299 +15888112486 +18845181875 +15871052972 +18552327104 +18881893867 +13947747226 +18876593740 +13666240460 +15120596915 +13601562616 +13661739765 +18813635515 +13639328300 +15868551173 +15866967176 +13970635038 +13622842211 +13675808154 +13637841324 +18896545535 +18801316868 +13651493534 +13665642825 +13671916815 +15806856603 +15157235700 +15171414312 +18840414143 +15135596820 +18874684587 +13609192729 +15161465559 +15149643173 +15103369329 +13659669589 +15860143281 +13647695860 +13680445082 +18527272806 +18882269268 +15807843427 +13630342216 +18527987561 +18886903176 +13935639246 +18871007262 +18598892380 +18564786401 +15801363799 +18803642502 +18510581213 +18530897819 +18872762931 +18510957594 +13920828565 +18518284810 +15180794367 +18812320299 +15889471343 +15119775296 +15177618995 +18846489723 +13610409659 +13667532839 +13610210878 +13678422151 +18511398799 +13973866355 +13901276344 +13680300424 +15875534420 +15115205087 +13641014597 +15832043489 +18596010551 +18894353867 +18530706432 +13690168394 +15867158954 +18524943461 +15143956418 +18500186579 +15123053467 +18877921663 +15188976362 +18511875256 +15116649002 +13676349016 +13620007176 +15142007526 +13966357033 +18507096615 +13929181903 +15107738256 +18520388300 +15864990982 +15105211759 +18549536604 +13989920685 +15124003806 +15146134026 +15886905714 +15103944725 +15879713337 +13922528056 +18886418309 +18853450864 +13903207591 +13950783241 +15870662982 +18899923931 +13921711148 +18520341230 +18549282559 +13946580840 +18856687014 +18588986774 +13961601098 +15864318763 +13959128389 +18534504487 +18811009817 +15835780768 +15887479896 +13993932425 +15806625102 +18861517976 +13656052008 +13628247251 +18864086712 +15881653163 +15179260240 +18876625141 +13629166961 +13696525995 +13625459233 +18506876464 +13901070958 +15860598289 +18504914548 +13915725845 +18866117943 +18567515949 +15860277549 +13912072099 +13910479731 +18559884812 +13605335908 +13655837211 +15899688990 +15110556762 +13644257804 +15127037788 +18872702701 +15172253639 +13660051249 +13956329287 +18526248218 +13649609331 +15867278624 +13977771959 +13621955081 +18863533722 +15896754262 +18865310199 +13696446452 +15852847304 +15172638107 +18506748303 +18571923442 +13658034156 +15193441274 +18874604512 +15181689725 +13962479525 +13933582286 +13624110512 +15818551104 +13670929850 +18513752850 +13633773402 +13978195198 +13671691623 +18872683856 +13957003495 +18500196411 +18869154097 +18831272785 +13925060940 +13656577395 +15134617630 +15168343565 +15106505694 +18533868836 +13954923326 +13627806752 +13934132942 +18881375657 +13688552333 +13643840721 +18562816621 +15812161872 +13611736274 +18885813956 +18551145596 +15197991669 +13907832669 +13618460299 +13919966800 +18850738014 +13652100636 +18864166880 +15824685690 +15108510808 +18847741291 +13687076462 +18570445490 +18883795235 +15885688698 +15828467949 +15159595208 +18549165970 +13903390826 +18529728885 +18896611546 +15190287415 +18861369791 +13649739518 +13937552392 +13925154206 +15819585124 +15897431539 +15856389606 +15869800530 +13983990493 +13960665068 +13654498510 +13956482571 +13605277427 +13659279615 +13907547940 +18525337947 +13609626276 +13608252274 +15872781620 +15155053604 +13979481164 +13950997749 +18867275549 +18839479864 +13644756092 +13615991462 +13941880507 +18880046048 +15810905557 +18592712464 +13964925962 +15153443850 +18542513278 +15845056130 +13917813809 +15872495719 +15862453936 +15179075217 +13693943411 +15124119502 +15164403621 +18536114595 +18816366629 +13970463890 +13922430696 +18892573983 +15820223472 +15823870079 +15873455576 +13976216419 +13662220593 +13647392509 +15831393042 +15806578833 +13912458425 +13978606965 +13672874544 +13963617436 +13939432410 +18874426776 +15857468430 +18510791191 +15168814715 +13619694164 +18517541613 +18814613701 +13996412224 +15150226910 +15116426577 +15139594696 +15100440408 +18504074857 +18554293722 +13994004358 +18565209942 +18534179851 +15838389212 +15885755859 +15179755806 +18595020304 +13685002126 +13644119202 +18520936941 +18530337291 +18889902792 +13960952129 +15107909587 +13993500320 +15824437133 +13955043298 +13611856287 +15123174479 +13954439379 +15844398215 +18582954490 +13997472964 +18816069485 +18510605750 +18584175562 +15199065368 +18526817346 +13979904047 +13958649546 +13634514063 +13620598882 +15891190809 +18529054770 +18885689561 +15148218875 +13620197686 +15132410121 +15196817958 +13989946767 +18840498839 +13991148208 +18586946057 +15190577916 +18865206262 +15851290091 +15198900129 +13926932833 +13656161453 +13638818710 +13638848203 +13989296545 +13631484979 +13967732241 +15850421158 +15197829875 +18827814425 +15899642802 +13610960617 +13964454502 +13631738069 +13968174651 +13624938258 +15101590260 +18562049771 +18853810673 +13919965323 +13621679126 +15148668389 +18588584206 +13685164769 +18572279042 +18572284479 +18867734537 +15189115164 +13993979765 +18527480297 +18541533752 +13985215300 +13979754358 +15178060886 +18866454388 +13963508380 +15877768316 +13664547546 +15871730716 +13619121759 +15878571797 +13919670349 +13620673240 +18577088512 +15853888302 +15164751058 +15135049951 +15143187227 +13993864871 +13622501459 +13922672264 +13938945445 +13981924215 +15871877550 +15122560504 +15856172559 +15108892354 +18848358054 +18529249295 +15846447070 +18525651506 +18505943824 +18537768970 +18800864154 +13629852813 +13627931252 +18539641691 +15809831181 +15815383176 +18566534646 +15169996518 +18882885320 +13621287060 +15146466125 +15127419660 +15168118489 +15198598327 +18577065452 +13652460437 +18521960961 +15150667315 +18833500873 +15868131018 +18559432972 +18879611726 +15117514854 +13633261829 +18500278622 +13929318823 +13697728256 +15822688207 +13645154688 +15833909101 +15812461196 +13623067250 +18831948032 +13966129434 +18805069895 +13659793369 +15899676210 +18530470902 +13921895065 +18836971709 +15158320619 +13956970020 +13993628194 +15868891259 +13627821520 +13696906869 +15852554428 +15108240517 +18539840578 +13639247319 +15167170505 +18570852608 +13669785268 +18516693092 +18511063674 +18569982224 +13942959256 +15130827377 +13903359431 +15124518690 +18873622669 +13913170799 +18811422168 +15860817700 +18804409194 +13976290756 +15875897683 +18883345421 +18889876547 +18507372847 +15175275340 +13674995279 +13946931722 +18899939557 +18546835000 +18593692227 +15186443855 +15879829229 +13961726758 +18867723715 +13969576831 +18834975475 +13668172730 +13921026596 +15177763259 +18827484879 +15865406837 +18503215170 +13613666056 +18517136815 +15856710755 +18853408502 +13972436352 +15114105445 +13903792126 +15828251773 +18580354021 +13697219901 +15135399693 +15125142283 +13691329017 +18540371896 +15183767466 +15181695699 +18561182745 +18546727193 +13627136802 +18591355145 +18525907168 +15163053065 +18556452962 +15127919018 +15165457475 +13615581879 +13647303150 +15165661341 +13943006803 +15190919918 +13605344324 +15125624164 +18859507495 +18556817856 +15800195240 +15129977010 +15843381409 +18547589740 +15800846181 +13943849167 +18545437142 +15839626041 +18816761193 +18503464297 +13900940527 +13925369478 +15851746290 +15122200035 +13924454310 +15179914326 +13927316392 +13683175655 +18823037539 +18573625788 +13901838845 +15137372229 +13685334047 +13637105263 +18586420188 +15196590101 +13694188093 +13695603569 +13656772414 +15177130131 +18865372434 +15145541090 +13954270681 +15803863471 +15196037022 +15148550005 +13990274330 +15836274145 +15131364482 +18591023030 +13621045525 +13634370596 +15139899682 +13998417836 +13669725901 +13957856775 +18588632105 +13673149211 +13912908314 +13944193706 +15125290192 +15892364825 +15101552791 +13640783220 +15836050254 +13915599741 +18542706911 +13679395286 +18874547526 +18896832921 +13609529589 +18868871569 +13956160963 +13635056246 +18527326765 +13956822300 +15882267495 +18516882618 +15863539876 +13696060276 +18562899145 +18577474488 +13903858300 +18545362305 +15171994875 +18593998255 +18800660521 +15885971242 +18818133517 +13905041635 +18867673457 +15872629874 +18543705284 +18588542278 +18579196719 +18538082005 +13626467265 +18566716098 +13623960602 +15852984626 +18567171641 +13987014760 +13648729845 +18593111980 +15834897878 +15119695194 +18568539978 +18886898347 +13691303582 +18855003216 +13953455188 +13681827071 +13676807202 +13972953189 +18509251466 +15131708523 +18593397393 +15180301965 +18895715045 +18895097191 +15190331314 +13619154041 +13668296229 +13614263270 +13989952295 +13612570309 +18578184807 +15840334098 +18806361175 +13685585865 +18804448107 +18510593431 +18501414719 +15191679117 +18565794860 +18524629059 +15142811191 +13620637755 +15864332706 +18833693102 +15882303944 +18853593540 +13978888002 +18883934534 +18896078110 +13634405331 +13908416116 +15184478734 +15852955469 +13618849977 +15837210032 +13649509313 +18595440155 +15855435132 +18874264806 +15159529753 +13683089550 +18840745130 +13661810802 +13688282578 +15806486352 +15894776498 +13659573177 +13921997395 +13988850044 +15800531986 +18534912229 +13925132884 +15820265498 +18818664712 +15165526268 +18866498922 +13630137765 +13667985014 +15193060263 +18882630345 +18584975490 +15108058581 +18861035897 +13681305128 +13626909973 +13623292908 +15166894117 +18513030624 +15115898935 +15188107149 +13644179509 +18562481142 +15191082566 +15132009364 +15874399423 +18542285248 +13638009227 +18882892041 +15124593497 +18506596216 +13910107241 +13647719773 +13611439520 +13632740386 +15888982906 +13617360294 +15155940543 +15881323705 +13951185063 +13935111128 +13933871156 +18575450698 +18825665172 +18815136954 +15889469169 +13926628890 +13978228381 +13645399959 +15152956232 +13670139986 +15803459058 +13907498335 +13677630400 +18803015757 +13972891064 +18872260956 +13903360461 +18545008002 +15846213170 +15816124343 +13616924926 +13661646414 +13987133720 +15192751161 +15876873216 +15193479538 +15120605523 +13684727588 +18539178576 +18873409477 +18544673890 +13670501024 +13634801371 +13635258098 +13936698863 +18859768660 +13916565085 +18539353897 +18548665230 +18553838475 +15164718816 +18504793254 +18864251488 +13933380160 +13959253910 +18589352868 +18840663572 +13650152292 +15162023869 +13635483588 +15114805637 +18839266308 +15888786297 +18810375590 +18574484159 +15118566703 +15854972755 +18593354837 +15819473842 +15871001377 +15814628176 +18560638257 +18578539496 +15193647206 +13932983332 +18834029577 +15814134118 +13931462106 +15118818359 +15135864714 +18560085535 +15810079792 +13980479135 +15138615283 +18846141804 +15116814426 +15801316080 +15813002657 +15809979967 +13970460310 +18893077381 +13676699291 +18568015815 +15183899958 +18572704385 +13694315935 +13912570289 +18826202757 +13675083728 +18580223767 +13622307690 +13904036537 +15176823452 +18856012113 +13692670364 +18813261143 +15149437797 +13631922925 +18576974204 +15895034015 +13620132669 +18869433899 +18517885471 +18845493820 +13640799607 +18859697473 +13944304168 +18507867418 +13643710343 +18515902935 +18534913898 +13926082496 +15169326807 +18533189048 +18533834908 +15871184678 +13934793339 +13916677032 +18871228184 +18567365157 +15122635414 +13632831067 +13671249272 +18874125751 +13648882880 +15187609527 +15103599502 +18576780993 +18885361486 +18815871272 +13932295830 +18856511438 +13953675038 +13676381686 +18877796749 +18537082195 +13602560883 +13905440580 +18531321017 +15885549057 +18850333068 +13679573801 +15835969087 +15884731862 +15152772437 +15855599175 +13910367680 +18504589866 +13911550196 +15167510912 +15878031392 +15102785279 +13904225992 +18807199011 +13952109029 +18854496429 +15807009891 +13610726418 +18501023318 +13699955083 +18861854085 +13982043284 +13659073198 +15133449657 +15838321414 +18536740041 +18871848853 +15850455447 +18807054845 +13639428752 +13961517734 +18848717847 +15836728344 +13993679973 +18856818991 +18868084888 +13627255012 +18544307309 +13953233976 +18862267491 +15194541959 +18877108130 +18824665248 +13962688086 +15881535868 +13635063817 +15830057772 +15182058269 +13930657727 +13981468815 +13982483937 +18590971986 +18598228663 +13648188812 +18867031035 +18553246443 +18504686247 +13937827926 +15111000597 +18831235712 +18574351306 +15851711148 +18575349523 +13601557393 +15890164297 +15191535937 +13971594807 +13931597348 +18586722893 +13657696056 +15150204115 +15887821175 +13925505962 +13687288859 +15179449991 +13655706068 +18543337015 +13684218841 +13644493520 +15120641284 +18874028694 +18553770929 +15827644520 +15880621391 +13943820127 +13949386997 +18859873472 +15155038464 +18512090430 +18534822631 +18859918028 +18891260531 +15146039249 +13903303150 +13960716103 +15889300907 +18815383149 +13998070944 +18846051349 +13664012303 +18544031421 +18868350203 +15882770919 +13962339483 +15862025706 +13616620657 +18557754113 +15159523856 +18848448251 +13652042430 +18572930599 +13990388520 +13964178402 +13678872559 +18842084408 +15856310029 +18892037238 +13600456967 +18809176248 +13643104210 +13608981949 +13930662782 +13685380333 +13652981517 +18818338460 +15154890337 +15895053087 +13945514168 +15862353617 +13678344323 +18811490473 +13935073949 +13915294483 +13681196394 +13940842363 +13619314347 +15820539310 +18885041386 +13618812753 +13969619275 +15103577306 +15159201819 +18596143998 +13919194257 +15846002100 +18813011389 +18552605952 +18833009291 +18808405890 +13907852881 +15148182986 +15898573891 +18853158642 +18802368982 +15821495606 +15857571794 +18851389779 +15877642826 +18576682248 +15806014399 +13930085689 +13961315592 +15148164243 +18547007513 +13915377368 +15821455023 +18855434868 +18546683710 +15810160867 +13678415858 +18570540388 +18509570903 +18883342452 +13638168199 +15103943899 +13975909072 +15110313145 +15163500021 +13900097761 +15153912171 +15107511757 +13913043266 +13645667173 +13954752885 +15128346238 +13935091127 +18853466546 +15833734990 +13945899656 +15173344259 +13942791448 +15109163457 +18834649847 +15835772567 +18810827357 +15112850185 +15130005962 +15870249930 +13685302400 +18838201299 +13615849593 +13998098719 +18847441782 +18867447841 +13942303949 +15111228844 +15832363496 +13623800561 +18817161728 +18595949969 +13905814704 +13981172286 +15883032611 +13651540240 +18816585721 +15176239685 +18516690221 +13633026040 +18848242380 +18876813700 +18847585104 +18522028421 +18876007496 +13697251599 +18517026234 +13970482172 +13610313408 +13931593560 +15168752018 +15126657801 +15859267698 +13949317282 +18864469794 +13699466982 +18882223988 +13655890045 +15189834620 +18811314994 +13606200688 +15124475622 +13652068123 +13667592402 +18592503993 +13963273606 +13959932131 +15197626595 +18586484681 +13926457804 +18598307777 +13670270704 +18575313109 +15160117361 +15115290240 +18567057116 +18582187684 +13621548174 +13643251621 +15136042864 +13608268876 +15875479253 +15117194930 +15170951953 +13651007811 +13963774738 +13949915722 +13695766645 +18596071038 +15138744545 +13940497755 +15179844829 +18515588624 +18527105043 +15809459107 +13958841553 +18814579212 +13923991678 +13660804740 +13679446638 +13634036853 +15145925044 +18850829525 +15155930469 +18599206119 +15841855052 +13953879962 +15849692888 +13998175101 +18576213534 +13939517152 +13921731268 +13964428576 +18596054356 +13638136662 +15860565004 +13960383409 +13686593841 +15807840509 +15102583559 +18509738901 +15889157968 +15891860514 +18804522981 +18881756419 +15155077878 +18581170687 +18892001284 +15189102323 +18855570108 +13664223876 +15852051241 +13670559244 +13621434186 +13600336845 +18817220888 +13956577909 +13639283011 +13685316952 +13949518734 +18826782246 +15122810427 +13906736902 +18822883111 +13694515748 +18522099545 +13971236413 +13985099706 +18517354229 +18537552907 +13987158980 +13961645025 +13959882850 +18552111085 +13643935643 +13660300537 +13965463924 +18872027159 +18513165005 +18550745320 +13644807378 +18844240763 +15839221639 +15152401069 +15146547383 +18519364194 +18887952992 +13696420005 +18846922803 +15856505537 +18892156220 +18519986673 +13695247774 +13946417130 +13639579882 +13645002908 +15867374689 +15889906614 +13900650026 +13958299580 +15816022033 +18801503969 +15822912907 +15874796769 +18810626366 +18882531908 +15171925251 +13922308623 +15883768102 +13935901365 +15107787231 +13628397640 +15152282581 +15858578218 +18887260900 +13989048285 +13988257848 +15172383843 +18816000164 +13945972154 +13940240633 +13999911924 +13963768831 +13687212184 +13965347943 +15173400619 +13601585521 +18827772278 +18587991933 +13699803089 +18841803193 +15125325989 +13688050833 +13663843240 +18831593280 +18528261126 +15844175913 +13677436193 +15151296351 +13600736911 +18858928443 +18865604793 +15100539944 +13686967250 +18835029992 +13929117516 +13687365097 +18591437914 +15850822563 +15871599612 +13983995394 +13973589459 +13959024380 +18897449911 +13971312263 +15840015180 +13680918416 +15876328335 +18866006812 +13603308475 +18868795381 +18536902079 +18531543008 +18520596652 +15883328634 +13696079314 +15811777385 +15882807406 +15113742911 +15876499829 +18538992573 +18573185903 +15821898100 +13687756534 +18540525647 +15199615594 +18810230148 +15152074078 +18877648407 +13969950088 +15835181437 +13934360610 +13922082514 +18503462799 +15805233491 +18844786978 +13624660680 +15192133816 +13674041022 +15154692254 +13969715779 +18808848490 +13992895463 +13956173347 +18860330867 +18856534522 +15816254897 +13905353290 +13668270505 +18894523177 +15814424593 +18556632286 +13916704333 +15899394700 +18580043588 +15148591269 +15849408177 +15150176280 +18840553812 +15811842504 +15848330203 +13643849551 +15861333475 +15171043186 +15821226094 +15163610185 +15109750504 +15138680645 +13932941034 +15875152986 +13976804684 +13625310154 +13680969594 +13928142589 +15862553228 +15145239925 +13624406739 +15865206259 +15843900566 +13978095597 +13936433485 +15133280196 +18816923803 +18589570488 +15121843222 +15159030041 +15877917293 +15818901103 +18548268885 +15883924710 +18554622470 +15176970781 +13965271915 +18883612270 +18550137187 +15165906228 +18587244881 +13603718191 +15838562413 +13942423268 +13653802644 +15182130568 +13992648410 +13653405961 +18890411477 +13947031059 +15892890431 +15831279194 +18515989589 +18588594499 +13643603884 +18585531718 +15166533903 +18575381116 +13697542993 +18866792517 +18542717728 +13932686792 +13954249269 +15835359926 +18832084075 +15199691628 +15127694726 +13905057971 +15135245093 +13652253086 +13613587043 +13976195673 +13681579594 +13617190706 +13974250231 +15161808049 +13930386555 +13698987944 +15193342452 +18557526811 +13981363163 +13625213516 +15158386320 +18881424961 +18823943074 +13601124952 +18591902996 +18830309996 +13695862703 +13930371674 +18859271215 +15885833638 +13929590391 +18812143155 +13970099038 +18855502391 +18825120446 +18819389441 +18898921684 +18882312163 +15137180923 +13917074836 +18517358484 +15844634628 +15822940877 +13636915683 +13664966458 +13680014304 +15872449283 +15166197788 +18581051928 +18596027626 +15810783148 +13653402487 +15861480437 +18511546489 +15853901856 +13681769628 +13981302990 +13662719132 +15190676876 +13646904716 +18825220825 +15170859781 +15806878865 +15871974663 +18575101141 +18511270737 +13901174001 +18532440099 +13940494836 +13693533862 +13606177736 +15891948205 +15875790083 +13668874019 +13618799361 +13654462112 +18597522469 +18557288113 +15179324785 +13968143436 +18838658587 +18534087143 +13668106717 +13935051002 +15187954268 +13617707311 +18560658516 +18888447670 +15135141163 +15132564343 +13639655637 +18898459046 +15848051849 +15866224575 +18823220369 +18820446334 +13953682386 +15190702632 +13929921016 +13666619066 +15850159197 +18564710824 +18538987959 +18883412899 +15800270174 +15199081963 +13659918354 +15865635662 +15139047698 +18587745651 +15114369562 +15831582613 +15145687811 +18571036291 +13617498995 +15863964046 +13698621851 +15827230362 +13989671571 +15196068891 +15192599300 +15897814923 +13966262253 +15883703910 +15857312790 +18576322931 +15184578727 +18592050903 +15892842940 +18592184050 +15818332284 +13658669005 +18549941884 +13955560827 +18891705111 +18524207182 +15165987309 +15170672241 +18596183144 +15176353705 +13664392001 +15154367233 +15125011126 +13980904515 +18539879981 +13936321683 +15806133771 +13602415166 +15872523066 +15193057312 +18525593985 +13948749172 +13676342778 +18514544669 +15878208124 +15880374980 +18594194548 +13960848452 +15198269873 +15128754481 +15822531186 +18825824054 +13643611848 +15880487651 +18800397695 +18833192730 +15154358535 +18845698386 +18814119938 +18525913395 +18568179542 +15188334553 +15800015398 +13680030832 +18802997844 +13670285178 +18805239077 +15193096744 +18840256471 +13948933289 +18818454405 +13976313686 +13627310902 +13670764856 +18556710671 +18869607747 +18831859366 +15165461771 +18519479959 +15894172797 +15887270407 +15169972066 +15195607612 +13671082250 +13966561990 +18847053246 +18879966331 +15193519063 +18572016285 +13959499026 +15889844490 +18561803204 +13626993724 +18586148824 +13625436529 +18837851981 +15136669651 +15815360709 +15808394703 +18874300109 +18517749912 +15858845109 +18835430372 +15852902406 +13976262012 +18845018089 +18883520161 +15182069761 +13983326095 +13683212104 +15194576502 +15166630756 +18823769055 +18513034914 +13674128039 +13619970346 +15895584999 +18534310490 +15174012235 +13926062210 +13919898663 +18838381994 +15196172513 +15180734541 +18534166717 +13693807046 +13612310508 +18831636871 +18567660530 +15837282244 +13953392234 +13942245438 +15165884946 +18892824480 +18819875711 +15182120959 +18501454224 +13657054008 +18866328925 +18832026036 +15123033477 +18585945346 +18807873965 +18589009894 +15865785512 +18832604161 +13971171907 +18507523936 +13635606217 +13692961376 +15155054402 +15176240920 +15855382855 +13931375805 +13912577126 +18509086193 +13917086647 +18546618403 +13909387675 +18513728769 +13634407970 +13656560020 +13680879029 +15111710955 +15145003310 +15895005930 +15112382907 +18559895462 +13632644355 +18813121262 +13913562249 +15161493130 +18542993184 +15149510392 +15110098611 +13907295477 +18512096401 +15810914572 +13953342034 +18824233418 +13683903456 +18848683134 +18512998470 +13684162769 +13903399244 +18801987884 +18824449751 +18843355404 +18544883771 +15115916329 +15138105718 +13964860111 +13638442566 +15107356459 +15161799819 +15894646145 +18804836702 +18821720307 +15188784998 +13621842744 +13947411372 +13905842113 +18810513752 +13914365776 +18542938053 +15121347233 +13637543366 +18511346532 +18824378562 +18522836767 +18837634235 +13631689920 +15899665145 +18868066244 +18514291158 +15187215034 +13925043689 +18890258219 +15155163352 +15171821354 +15859512815 +15154416205 +15105465291 +18582748181 +13667087615 +13951343512 +13616376845 +15185196710 +18807439558 +15823209373 +15867229827 +18893433867 +15146123862 +15146415998 +18551662034 +15808837671 +15825097639 +15867382682 +15838277342 +18531602682 +15818368347 +13658400654 +15814692365 +15815978333 +18542599667 +18887561839 +13673039796 +18565539366 +13671250141 +18592584722 +13657623853 +18850409032 +15130835155 +13663170505 +13926656259 +15155381271 +15161430943 +15895963637 +13648950853 +15891941559 +18563960156 +13610800095 +13666138912 +13657694926 +15876128132 +13915408469 +18894020472 +18871538806 +13613191410 +18817256141 +18805685914 +13989750383 +15164745181 +13641757733 +18857279229 +18596531779 +13976508145 +18581906389 +13663883012 +18588422540 +15180484875 +15854087829 +18599963924 +18519906908 +18826375153 +13944770545 +13944136522 +15166149863 +15810734097 +13671207501 +15875966866 +18552320598 +13914398841 +15832800298 +18516150420 +13958531591 +15162314776 +15102271028 +15804847849 +18869964900 +15143537981 +18599177330 +15897459764 +13994447999 +18544528082 +18806262140 +18837920858 +15126804116 +18816573540 +13982564547 +18843087980 +15140459081 +15802640000 +13907833473 +13987909738 +13951061669 +13985422837 +13670947697 +18565704319 +13678815193 +13945373262 +15114470582 +15836033159 +18539435207 +13675704175 +18540879787 +13628099214 +15124656845 +18539432112 +15151489939 +15874047867 +18548155816 +18507876340 +13910515746 +15856504410 +18839844805 +13934071059 +15176276556 +15192654245 +15163678979 +15111436651 +13644540661 +13969795055 +18596837583 +15188831013 +18823142280 +13646773072 +15106264597 +18529552893 +13910699645 +13665804892 +13608683167 +15835138439 +15877384134 +18549432489 +15160282030 +13965220673 +13986689698 +18820505783 +18564515564 +13603136152 +15856671471 +18820393940 +18583159776 +18515590016 +13963285747 +15801416917 +15130991537 +13921474584 +18583753174 +18874299223 +18552305619 +18551692453 +15805078929 +13903194142 +18575398494 +15804110779 +15115302664 +18568609164 +15830815460 +15187583073 +18841898183 +13636454713 +18841480882 +18880851287 +13926992307 +15162874137 +18805782866 +15835407507 +15806277903 +13993634469 +18578137004 +15111047503 +15146064213 +13605921438 +13688575174 +15811737684 +15851920467 +15192184299 +13660565871 +15851916519 +15133567622 +13900525523 +13612093421 +15193071931 +13900799794 +15127867294 +18537436675 +13961721441 +13617141443 +18580329955 +13946992591 +15158809230 +13678521400 +13953184509 +15833341507 +15871351823 +18839720758 +13906672770 +13900517673 +13619039273 +18855553970 +18889798506 +15838745177 +13687763175 +18539734522 +15873089851 +15818240393 +15189076568 +15875303326 +15129569814 +15836510955 +15811092080 +18802581455 +13960855389 +18531606143 +18572358478 +13669417837 +15852188376 +13943168346 +13658871399 +15860014132 +13925905349 +15865472973 +15145101291 +18856966082 +15868869617 +13912084988 +15863919448 +18894177771 +13902329561 +13911059035 +13917956728 +18524751050 +18815918479 +18571321469 +18850671236 +15116750421 +18810313710 +15850493726 +13946550226 +13682366850 +15853020774 +15872173910 +18845360754 +18856653453 +15800294266 +18850449483 +18563408357 +15812994836 +15102538494 +13949690731 +13676214284 +13663637504 +15118438133 +13937372052 +18563153004 +18804377103 +13600185285 +18855767819 +18552813250 +18524183658 +13949501242 +15818261962 +18812157897 +13625846664 +13918124176 +13669254112 +18570416414 +13916502848 +13947597175 +13672021226 +18862081610 +13906930873 +15121074791 +15811361574 +15172746406 +13671333666 +15816953095 +18569060073 +13966589133 +13613381560 +18523686153 +13685077298 +18518783625 +13969793561 +15159521882 +18873141746 +13631915581 +15151010571 +15172253157 +18515940092 +15110839857 +15166424328 +18800984180 +15806507879 +13641744865 +15847165557 +15105447047 +15107069281 +15100212615 +13989971949 +18852804040 +15835922082 +18517541689 +18884046265 +13607967122 +15875434073 +18875442255 +13962623332 +18579750307 +15151330226 +18845289434 +15141236129 +13994262559 +15891173688 +13662323169 +13951964357 +13675629742 +18579548681 +15199781502 +15148486473 +18833000632 +15841033684 +18508398725 +13659465961 +13991424799 +18845285915 +18515055007 +13924421234 +13648291251 +13953144977 +18557277750 +15872456145 +18568736649 +13919713331 +18572626408 +18868403968 +18877913703 +18880601682 +18851321131 +15866606696 +13983102924 +15112786233 +15880006131 +15193796504 +15897258953 +18557881084 +15815240255 +13948769657 +13674463202 +15144433751 +15140695833 +13640380337 +15185104118 +15125006044 +13620084919 +13680968695 +13664339154 +15878179916 +13606000988 +18862013649 +15163216223 +13627724867 +18588950355 +18521974653 +18888925303 +13638560788 +15815928813 +15804442858 +13936936901 +18807310690 +15890724487 +13949357093 +18523441809 +13941062004 +13983178267 +13913529229 +18804983991 +13693274117 +15106413686 +13622770015 +15856187474 +18860043500 +15806068666 +13923971171 +18807086583 +18886911873 +13608351231 +15141178377 +13659410904 +15866181999 +15179455732 +13933538753 +13985642197 +13609084360 +13663883068 +15155227736 +13678359730 +18859673446 +13655759453 +13630039713 +18834008514 +13674917664 +13605269166 +18538188935 +15171382839 +18523013277 +15803371590 +18841448413 +15858331984 +15806285394 +18807856112 +13673456043 +15869288592 +13618674927 +15894984244 +18845624711 +13944464478 +15113355652 +15811379461 +18858274206 +15894944158 +15851697571 +13971654441 +15826475044 +13670969428 +18872241726 +18549727410 +18591161005 +18871830114 +15138946842 +13971987600 +13652279126 +15878753548 +15853537897 +18800263717 +18547361057 +13985149242 +18590575374 +18841132198 +13601141318 +15897151838 +18812625775 +18800839769 +18580470849 +13634862737 +15884225800 +13958485830 +15844774888 +18594598816 +13958805585 +18892917776 +13982428774 +18527418728 +13624420116 +13955562304 +15818917170 +13638392687 +18872802596 +15197359009 +18583060271 +18525091645 +18524210446 +13697173705 +18814313748 +18817651072 +15892742890 +13949860040 +18531308428 +18818700986 +13602963783 +15149593819 +18824223245 +18566649914 +15193782654 +18810688061 +15858089814 +15144842130 +13641463144 +13936773288 +15800612239 +18593906227 +18569869630 +15196702721 +18551311206 +13977043289 +15116337216 +15870795316 +15199763585 +18576235279 +13902267600 +13916209090 +15175675466 +13692652396 +13664463948 +13605554030 +15117576606 +18840193493 +18523811053 +18891009014 +13974577614 +18546827547 +15808869960 +13689805937 +18859524329 +15834974227 +18870513133 +18528287411 +13979298151 +18573750991 +15829694902 +18559164999 +18572825541 +18530107527 +18553620948 +13900469513 +15179447841 +18829896040 +13678060397 +15870038064 +18530265227 +15846848919 +13624190227 +13982915021 +18867624054 +15818556639 +15893836346 +13917602218 +15187499481 +18874858064 +18559933037 +13618866366 +13987845153 +15142241349 +15884819872 +18598773496 +18892801749 +15183232563 +18840446063 +18835714784 +15820571748 +13920315555 +15887544636 +13922963614 +18574981208 +15839863746 +13652367799 +15180077948 +13970360853 +13936582391 +15841976753 +13911465575 +13900105745 +15876248105 +18591070864 +18506441346 +15142783041 +15157467832 +13629795178 +13606284545 +15114175907 +18880327253 +18597844348 +18838975527 +18832860587 +15184389380 +18899503421 +15806661802 +18527397436 +18595823001 +18509897703 +18814080267 +13647201908 +13667099253 +13933099963 +18845960302 +18833930964 +18546224862 +18822425372 +13939075505 +18530035405 +18829988674 +13692388061 +18586208609 +13625746146 +18865199765 +13977162046 +13667929095 +18502714567 +15830459013 +18856474299 +13675616811 +15875798075 +13915084388 +18890334614 +15883480383 +13688095869 +15831644195 +13942363073 +18577977364 +18538589037 +18585993677 +18558588931 +13906578024 +18825707463 +18554080821 +15105425444 +15172994096 +15800556551 +18832176131 +15140034973 +13949001197 +18557706073 +15875437626 +13648759863 +13634339957 +18806828523 +13993175532 +13900858100 +18544406306 +13990757050 +13934896896 +18850578512 +18804808612 +15154237229 +13622685238 +15843407116 +15886189221 +18845518807 +18866315018 +18811905651 +13661290395 +18829523513 +13649568883 +18509379037 +15122774193 +18875488339 +13604129276 +13661961717 +13994212314 +13632303197 +15116831818 +18588634743 +18555275094 +13925632308 +15863405071 +13968823439 +15146713188 +13699451321 +18870508874 +15133871925 +15857239050 +15890835606 +15190212023 +15865707919 +15849253018 +18563070467 +15104371502 +13624144150 +18857240232 +18542736656 +13933221667 +18892025802 +18599898982 +15119993116 +15195687234 +15110269830 +15829866453 +13906004412 +13997072766 +13649532330 +18840094172 +18880109642 +15870238641 +15844925410 +15107702183 +18804076343 +18540919388 +13983145846 +18519889002 +18547615536 +15866355742 +15827399644 +18844457130 +15801659809 +13918515797 +15840604529 +15189454399 +18879020459 +13949471316 +15855877981 +18889806634 +13602326673 +13616371319 +13631392798 +15161431284 +15181576084 +18504321408 +15124524218 +15885116450 +18855581127 +18824571649 +18507895346 +13632067555 +13669502008 +15143783806 +15148661638 +15866090088 +13904017275 +15153161571 +18850654810 +13922272885 +18871808344 +18509708078 +15155257874 +18861199678 +18851199168 +18845621954 +18805501430 +18812588087 +18599229504 +18526192876 +15160115307 +15829923701 +18835713559 +15890449378 +13641285632 +18808067056 +18828132959 +18873958072 +15192858099 +15851696585 +13699675717 +13610543277 +18599168391 +13669090575 +18502118560 +13681577973 +15154703423 +18844768368 +15862340658 +18824463705 +13687563408 +18576503388 +15823957914 +13642048381 +15801890596 +18810059044 +13977483804 +13602567148 +15898446293 +18554694910 +15849315534 +18597773670 +13697461584 +13644221780 +15826092264 +18590903939 +13622145141 +15886045138 +13924727876 +15872625228 +13637575917 +15177793090 +15134072016 +15162753201 +18816586137 +15894204999 +15105057470 +13904979284 +15105318359 +13638724790 +18564967087 +18842827032 +15841479470 +18809496920 +15818739920 +15839247849 +15179652137 +15115529529 +13982154933 +15153820224 +13623942463 +18573847539 +18571133034 +13967071280 +13970658511 +15145428940 +13909992596 +15156626089 +15156299792 +13902222461 +15191000276 +13930872234 +13649937120 +13962728772 +15121808318 +18558092545 +18820548385 +15871844491 +13959102625 +13945048818 +18559679185 +15166398184 +15198994578 +18884921450 +13662322820 +15118395244 +13675724896 +13615531781 +13977222715 +13631955578 +15882862457 +15123137298 +18881723243 +18883484631 +18524704705 +15171102473 +15154990312 +15185262237 +13949951582 +18833031421 +18555325866 +18524907238 +18537647701 +13908026394 +15119552322 +13673376030 +18568615842 +18597264518 +18531833356 +15859628495 +15170734513 +13909973943 +13959425674 +15872609086 +15142871482 +13655734370 +15881198292 +15116924407 +15843411387 +13687604334 +13904986552 +13663153338 +18510040880 +13630622524 +13686768050 +15180939199 +18885696624 +15106798023 +13652793339 +15851402446 +15889846389 +18845553280 +15124988580 +15143336358 +15823356689 +15839187316 +18855075521 +13661210354 +18591696006 +18886891173 +13992596099 +15878557079 +18524769967 +13604027465 +15191371668 +18525406155 +15106661211 +18579258731 +15118541490 +18869535897 +15808388008 +13975246683 +13937931555 +18504520045 +13920499562 +18596066133 +15188493631 +13685210594 +13946288092 +15860202146 +15106757812 +15836512854 +18831549589 +18565597622 +15877296557 +18851869341 +13611903420 +13635849163 +13682518190 +15122463830 +13600723015 +13647846527 +18575603627 +15871620256 +15835599098 +18862879122 +15896233765 +15148078842 +15844763562 +18842339537 +15142757793 +13996075999 +13652797981 +18587774899 +15839498483 +13633602747 +18817241113 +15880204593 +15198679544 +18818169616 +18514206608 +13624613208 +15160421657 +15128109242 +15102818328 +18533618994 +13928583569 +13619635400 +18502574389 +13698219366 +15167950338 +13603534268 +13992319654 +15106053411 +15167485497 +13995143779 +18807726829 +13940296738 +15874144346 +13664025407 +18556070210 +15877564014 +13982213843 +15120523140 +13661443927 +18538323802 +13623509046 +15856447769 +18828636795 +18831972305 +13601255961 +18528892304 +13620729603 +13950571319 +13983931181 +13692866441 +15185851220 +18597304967 +13681262806 +15150496530 +13607343668 +15893379244 +18879683831 +18837822585 +18862711992 +15876809394 +18833446933 +18827647724 +15130652193 +15194190898 +13949816662 +15144165645 +13616123002 +15177008846 +15173267657 +13641819372 +18823868786 +18880814770 +18860712489 +15108511676 +15156151859 +15801033789 +18587550417 +18522205343 +13916733707 +15179879537 +18889622532 +18892408564 +13670409868 +15142398908 +13918840488 +13945439911 +18500744047 +18889770976 +18567616348 +13635941695 +15858648777 +13692825857 +13907518757 +15857045676 +13956559773 +18579040827 +15883343081 +15167031401 +13962131211 +18565090655 +15814939707 +15845935348 +13676066019 +18577624847 +15889592234 +13667015298 +15828252543 +15175594858 +18593663155 +18532804663 +18838351097 +15175523099 +13902120617 +13919277822 +13914710569 +13966111612 +15896236145 +13942670127 +13651676144 +18828635633 +18842241986 +18818687063 +13953118607 +13682617234 +18577872639 +15154835064 +18847480056 +13657243786 +15171662550 +13901123331 +15816952700 +13906051574 +15158762681 +13926943614 +15113389337 +13636035267 +13981394823 +18569196622 +18873749747 +18800071869 +13638690427 +13986472096 +18895534248 +15130869888 +13983031676 +15808067840 +18834145452 +13989761001 +18583435077 +15143837837 +13919613961 +15827339630 +18517372868 +13657495394 +15841937842 +13673209958 +15182598246 +18816732132 +15826202206 +18548200303 +15803642696 +18815940969 +18802088802 +18819637006 +18878867342 +13914443036 +18582575834 +18577910556 +15116866122 +15138230428 +18897335315 +18842317034 +18532349244 +13902879514 +13650548944 +13624051164 +13986563736 +15814324708 +18880598795 +15151712393 +15178795696 +15195129844 +18867325480 +18814407652 +13624029296 +18826155992 +15897640105 +18504003098 +15121473687 +13641041608 +13975864358 +15889996921 +13612224396 +18524886535 +13631049015 +15109298313 +18506635032 +18510752676 +18526503456 +15836100549 +13651355744 +18527639648 +15106936680 +15141212558 +15146808363 +13928079693 +18593985955 +13991795210 +15140629919 +18858573048 +13914274579 +13927455314 +13633250054 +13903053745 +13652090268 +15107873443 +13911172733 +13994988768 +13984122932 +15891792826 +13993357133 +18826312709 +15170493943 +18549408601 +18831205308 +13667145043 +18851265983 +18801856401 +13641735463 +13672926742 +13991570930 +13971721714 +18801580301 +15813263875 +15816439264 +15845671346 +13627247703 +13976894710 +18860783457 +13961211023 +15139912798 +13685139794 +13618497768 +18587505121 +13908213649 +18525319730 +13680800736 +15157528762 +18893694089 +18891524998 +18519729961 +18520479164 +15800536106 +15155118876 +13928809024 +18525944685 +13972218368 +13609375928 +15871996511 +13925832934 +18848736090 +13613590441 +13677627952 +18838612227 +13975663015 +18858919601 +15194175365 +13914947021 +13618878047 +15869484438 +18841078710 +15879798135 +13606063339 +18830935448 +18541349998 +18809630728 +18578775757 +15883611054 +13966588077 +18592667322 +15127830808 +15132009452 +15864903297 +15886283241 +18886254262 +15121111033 +15140279213 +18533506421 +15823426251 +15169933490 +18855495011 +15153250143 +15802461033 +13653633960 +13922799171 +18504717625 +15869082218 +18560195072 +13609915611 +18508137071 +18849450567 +15175623928 +13676561376 +13934907437 +18512918123 +18570617502 +18830620498 +18547841170 +13911751581 +15148702901 +18580418126 +18853915490 +13970653748 +13930713179 +13964304623 +13924383859 +18597640236 +13649854055 +13916263332 +18505435848 +13993021991 +18592358857 +13638783755 +18594352576 +15854304491 +18522303561 +15859456015 +15858202472 +13672393158 +18509143471 +13948597487 +18805118543 +18835973444 +13947251715 +13620657411 +13938469905 +15141066405 +13989486906 +15179978176 +18574781828 +18834318971 +18549759912 +15888999936 +13974087590 +13991075489 +15850728744 +15100416594 +13603323062 +13677879356 +18858551113 +15115698523 +15817244664 +15824265655 +18559497304 +13982841372 +15114332734 +13970080000 +13905234840 +13682102728 +15868354304 +15192123583 +15181457263 +18524974818 +13615511462 +13617278475 +13638550248 +13927152490 +15812440332 +13924406546 +15874411841 +13620053456 +18527779641 +15183987222 +13623701044 +15134340966 +13676982359 +18868040644 +18868445281 +18558628544 +15152049421 +15874403389 +13694427848 +13948388463 +15827191148 +18810940442 +15132169447 +18835422953 +15168545867 +18535270491 +13931849354 +18577259040 +13648521089 +18807243365 +13681081679 +13673368618 +18820090560 +15157393624 +15101412111 +13961762623 +13618663757 +13903395296 +13674992585 +15148122576 +13924137486 +13622439474 +15195098169 +18531333635 +15840760018 +15821534334 +13950027635 +15137630344 +18819571631 +18508812414 +15180993629 +15158438412 +13948053341 +18558018926 +13610549726 +15813222698 +15825400102 +15837683420 +15884515799 +13982961092 +15859416615 +15855815859 +15156921979 +18510173605 +13942931951 +18594680972 +13606344586 +15166228397 +18800549600 +15898394667 +18508908430 +15151878933 +13931213923 +13912389008 +13937583744 +18823148426 +18859927561 +15171358236 +13901461605 +13688320420 +13653350010 +18569071332 +13621534326 +18876945903 +18868842065 +18512492844 +15185782995 +13993215536 +15863639438 +15862400864 +15859550997 +13613645567 +15804537123 +13936795980 +18532938582 +18879270257 +15826741708 +13697556716 +15170853065 +18543902716 +13686354454 +15831116961 +18538082358 +13612012358 +18868347883 +13941300269 +18842145772 +18840128026 +13929916739 +18894428800 +15156506454 +13696734313 +13965693642 +13950632945 +15197387925 +15108737012 +15192339986 +13915334500 +18841313597 +18830363027 +15836736106 +13979842900 +13965466947 +18526032059 +15101565316 +13676632924 +13947674399 +15178213005 +15840453379 +18831833182 +13999063093 +15138397176 +13655404168 +15827902399 +15195894319 +18896814380 +15862242284 +13970815332 +15844623528 +15833753839 +13993098523 +18882007368 +13979558968 +18864840534 +13946706157 +18861676063 +13917978260 +18597153266 +18556840366 +13998801416 +13910265611 +13621116434 +15138264089 +15872854374 +13626244246 +15143998458 +18577590208 +18599996485 +15180112492 +15160944220 +18579231948 +13646626254 +18527870221 +13901722635 +18837165828 +13940564361 +18524705552 +13964445131 +18865212245 +15881793615 +18850346982 +15804310970 +13607562600 +18830519433 +18573495709 +13696030198 +13936557748 +13998793643 +18875292369 +15165808597 +13689044943 +18520530051 +15108170002 +13631722315 +13926067760 +13699791647 +18815197728 +15134874622 +13990920679 +13643119107 +13939909075 +18846179185 +15864951664 +18872450153 +15111393742 +15172416489 +18542339048 +15160533590 +13663014364 +13968482529 +15818880066 +15811152219 +18596009576 +13985444785 +13681071956 +18537920179 +13937538490 +18523919480 +18818065081 +15123674730 +18576963480 +18595654515 +18845286455 +15826571177 +15802035405 +15106228423 +18518705860 +15873424672 +15178202021 +18888683841 +13998417277 +18895044457 +15879812576 +15120120342 +13991122202 +13681600403 +15824788548 +13630472112 +15822426240 +13638808261 +13694142661 +18873808534 +13684647172 +18800195070 +15883904883 +18854417094 +13994866015 +15164537729 +13650881312 +15192491319 +15145237074 +15126620245 +18819818279 +13692303495 +15152389940 +18525357710 +15801262694 +18578543217 +13622596068 +15153525377 +18570239723 +13976203758 +18531676284 +15190524150 +13908551415 +18508818479 +18578981884 +15870819436 +13955627397 +15181849348 +13992955604 +13637467946 +13974639939 +13972120789 +15880166355 +15147647674 +15800316444 +15892012930 +18843818589 +15182115986 +18871072721 +15826895182 +13611743635 +15827000101 +13697153216 +18877510371 +13629861533 +18513141173 +18566337727 +18549592599 +15881379117 +18532429588 +18882872172 +13670981378 +13972194337 +15805863006 +13649879657 +15873185283 +15106524413 +15825261391 +15182217076 +18857603225 +13958167634 +15177898918 +15898653302 +18564500401 +18862291273 +15802021370 +13652809788 +18526857946 +18540501079 +15196618757 +18818861023 +18894029136 +15872734025 +15823981770 +18593176450 +18588133193 +18597275630 +13917043066 +15159652432 +18896815367 +13995261564 +15180373966 +18554460437 +13667741570 +18574192134 +18506683720 +13961459553 +13970559818 +13903566245 +13957399220 +18510787733 +15800521278 +15892390616 +15134715785 +18526326270 +18832602065 +13666660028 +13962077637 +18560324789 +15818886953 +13682025930 +13663725813 +13662103644 +18885549664 +13678557833 +15850988453 +15826161295 +15871886661 +15168977239 +13682716231 +18594904061 +13910759435 +15136493237 +18554007081 +13633383023 +15823622189 +18841206701 +15898952046 +15852069766 +13699283152 +13962384648 +13678161911 +13680368840 +13919458035 +18834522513 +15884530270 +18839808433 +18824780670 +15161324461 +18530128945 +18898404877 +13955695789 +18850020042 +15176824388 +15121826344 +18844872199 +18522622779 +13654278784 +18568350396 +15139812539 +13905396237 +13666282462 +13940263149 +18884260632 +15107487082 +13687972663 +18807915578 +15122570399 +15836362407 +15169204114 +18503326428 +15173244159 +15809753782 +13909061173 +15149729582 +13940631482 +15834382102 +18863110746 +18812470992 +15171657829 +18823038736 +18833110172 +13661073086 +13976966839 +13615082213 +13945502919 +15187397812 +15192773649 +15121743669 +15191390190 +18534235792 +18814655735 +18890651953 +15192009485 +18801908724 +13616947421 +13674709397 +13915410392 +18502807918 +18833754928 +18573437747 +15121907875 +13683987590 +18551340009 +18529201356 +18551033726 +13691394224 +15807525583 +13679852504 +13988016855 +15871321343 +18566795663 +18559816327 +18516417524 +13909942977 +15842498216 +15824134745 +15148677345 +13949239459 +15828204310 +15143137159 +15887583632 +18896667243 +18592652928 +18577773392 +18530705135 +15158266962 +15102513618 +15880087354 +18886543473 +13902477968 +18844779550 +13682773195 +13931293174 +18815523071 +13636917633 +18527003571 +15864046456 +15872854674 +18566714722 +15146095180 +15805303153 +18867531604 +18507319716 +15851554867 +15803471991 +13907423485 +13999374539 +15866247316 +15178531955 +13969686647 +15185560253 +15155456118 +15111876451 +15822015968 +18801921243 +15190329879 +13642452760 +13688976689 +18839454651 +15170342233 +15815709999 +15172309109 +13653228120 +15889517173 +13662968865 +13912838775 +18587029878 +15885293458 +13963915848 +18582970289 +13681773539 +13999074676 +15167555237 +15878210052 +18843309252 +15114736211 +15804549108 +18580145340 +15819117555 +13995510748 +18537457343 +15191743150 +18553286088 +15154722277 +13668407091 +15102417258 +13624981037 +13940977487 +13612699989 +15174708104 +18880797641 +15129457013 +18897055850 +18511756797 +13648051346 +13649960275 +13617741747 +15869568650 +18821955394 +18564059107 +13636999252 +18595433525 +13634011309 +15855279043 +15185054669 +13696033903 +13936210545 +15826879521 +13695240490 +13960797452 +15128195981 +13657635161 +15840336895 +18838180406 +18506347082 +15198753395 +18582689813 +15100836666 +15147529743 +18816590929 +15106187619 +13672768023 +15862207079 +13677052850 +15160866770 +18887300829 +18583233338 +15108995133 +18829452450 +15178524885 +13695078420 +18820871723 +15876671765 +15873604251 +15185900731 +13913518885 +18573377163 +13614180268 +13901081544 +18552178503 +13948671899 +18508188400 +15848671620 +18526296043 +13944550468 +18539267903 +15156620571 +13621756618 +18814532090 +15122978467 +15128514486 +18560833409 +15172469202 +15815083095 +15150923967 +13925428248 +13964325349 +13657985504 +18561434499 +15843949516 +15866731193 +13601865145 +18581392325 +13669756057 +13961505771 +15886439022 +13938576185 +13656952435 +15843552897 +18547525187 +15873546824 +15807670081 +18525881317 +13602474608 +13990926914 +18841223970 +13645323439 +15108326799 +15136764902 +15875037764 +15129911757 +18837615538 +15153974649 +15853997382 +15810391326 +15888286900 +15176086825 +15153128461 +15131578672 +18572325180 +13647935461 +15140542536 +15896821350 +18897327744 +15800658890 +13648168973 +13931394422 +15801167424 +18565422821 +13612485171 +13957481560 +18501116597 +15825321356 +18839072829 +15190433036 +13969528473 +13968721862 +18518378673 +18508090414 +13668828269 +15143338548 +13663613007 +18830849805 +18879283515 +18595734665 +15886981651 +13961079670 +18843219157 +18524870495 +18553925484 +13640269273 +18885911015 +13999544792 +15140896308 +18504468779 +15164436089 +15897127219 +13622650291 +18522740905 +18814120119 +18558493769 +15812692377 +15878057591 +18564946607 +15893020672 +18824937998 +15877014213 +18533405037 +15164055482 +13906554954 +15178955926 +13941880164 +15112379507 +15808600486 +13964297206 +18871245251 +18821818613 +18893328847 +18539259766 +15820148051 +15854841639 +13693788527 +13900080314 +15867536521 +15834318903 +18532412089 +18879113722 +13907391817 +13912910113 +18511561408 +13613111485 +15865317563 +18838936574 +15810520211 +18859602546 +13654246154 +13611057327 +13922002655 +15875460423 +18558810688 +13621685388 +18565094048 +13968999188 +13925878686 +18501808803 +18584133381 +13966881773 +13922889926 +13690012523 +13966759546 +15852726971 +18530230609 +18520801891 +15848436881 +18811197397 +13637235545 +15156844433 +18898839589 +13624754798 +15189106905 +15147402421 +15180635159 +15835916182 +18803520966 +13956654483 +13696992116 +13906583262 +13944727372 +13643455662 +15811182518 +13939531137 +18540371539 +18884191205 +13658527643 +13616746414 +18869982240 +18531338133 +15893984939 +18560749460 +13650883504 +15811448298 +18842414212 +18878070960 +18859755627 +15168133359 +18849386116 +18562916846 +18550545350 +18543664279 +18845708069 +18832684048 +13677814122 +18859753496 +13615595010 +18511564514 +18875429921 +15127716806 +13637372419 +13689029588 +18578412723 +18548111610 +15151932492 +18522609851 +13613192106 +18591356818 +13611967268 +13636214570 +18871696036 +15862306362 +18879021580 +18800716590 +18862030837 +13614731170 +15896381563 +18876942187 +13958525991 +15860594301 +13982272311 +15816446662 +18851983871 +18556966885 +13995510643 +18515847365 +18802057355 +18872462441 +15189019134 +13624134244 +13653858659 +18581270939 +13978091737 +15854273539 +13979154391 +13670804350 +13609315194 +15809898258 +13641895828 +13982073376 +13943473042 +13626784367 +18571803443 +18515947731 +13905588501 +13948477595 +18827516418 +18819226282 +13972926655 +15830419537 +15196261343 +18562010293 +13984643597 +18863261467 +13618708254 +15851453666 +15810644723 +15867481629 +13919562668 +13969811365 +18842934417 +18589338245 +18808253446 +13676607917 +13947494785 +15139120707 +13604417943 +18862719236 +15871410126 +18881849487 +18803408116 +18860914850 +13619549724 +15151506381 +18867102394 +15845276374 +18847608369 +15175179982 +18543115165 +18817069641 +15881047204 +13693490685 +18815749235 +15837399228 +15886121672 +13939273663 +15183270199 +18588429174 +15155715305 +15152469957 +18504780918 +18564139961 +18832029406 +13637997882 +13616355206 +15861095265 +18519852149 +13629830473 +15153297387 +13999140152 +13934997999 +15173559341 +15822635403 +15194682437 +18589783890 +18815817135 +13655947577 +15116548661 +13951058462 +15892538579 +18515100413 +18837633325 +15856202785 +18540062847 +13670402483 +13610616516 +18500715980 +18572841458 +15118805862 +15883512362 +15891714999 +13618587102 +13982695606 +13609704245 +13604512612 +13693433877 +13633008459 +15117770346 +13677929635 +15874088572 +13934597263 +15863259948 +15184905073 +18829343696 +15811946850 +15819770441 +13675378504 +13970126312 +13966590883 +13922883485 +18534743108 +15145588379 +13995694381 +15872606034 +13672725820 +18554442528 +13906096342 +15128316625 +18558401487 +18855569007 +15106041752 +13913301752 +13925263971 +15118614773 +15113953591 +18827466137 +15841319908 +15159274056 +13935955601 +13932624659 +13604540045 +13960035348 +15861214794 +15111710932 +13977738241 +18803446284 +15878065348 +15135752896 +13681496455 +13640982736 +18893123194 +18573471988 +13986824538 +18558835885 +15821258233 +18509593224 +15843256729 +13696349369 +13942425468 +15862422149 +13975879385 +13955012127 +15844117921 +18564663984 +15103715493 +18553676297 +13964212672 +15141357754 +18570969311 +13605098834 +18576113121 +15829121448 +15106488373 +15197153621 +13624231157 +18847426473 +13664559124 +18818988361 +15878172947 +13601466876 +15163150839 +18555982649 +15850656593 +13650856110 +15199610685 +15884306389 +13929037583 +18502182093 +18842789996 +15164313441 +13959743971 +15164176427 +18833028444 +13637620657 +18827157042 +13919187118 +18532777358 +13632146006 +15843094253 +15842284316 +18842027948 +18592096156 +15122476008 +15802306307 +18836807714 +18505657231 +15150863436 +18858836157 +13636015814 +13913118931 +15810471587 +13931487856 +15801618754 +18823251828 +18573398094 +18804602320 +18831423693 +13969988249 +15119365311 +13930370476 +18836857272 +15138181117 +15190063238 +13669219833 +15812543885 +18530807020 +18553609268 +13664917703 +15820676258 +15111124053 +13915315028 +15132681971 +18582815013 +15149696860 +15160836967 +13651897298 +15890104745 +15822676674 +13602843389 +18861780615 +13669912687 +15158031268 +13955049035 +15155272747 +15150963078 +15148324948 +13976657293 +15102541403 +13930411766 +13690166952 +18573355829 +13926551544 +15804879499 +13633200413 +18522060312 +13928218758 +13658939255 +15139995252 +13974816106 +15169913928 +18820275210 +18849712587 +13619333744 +15834606675 +15134246285 +15890471285 +18876686645 +13661886234 +15800570645 +18834561557 +18805967117 +18849828923 +18880159074 +13617404529 +13903790328 +18819150351 +13647816733 +15156625272 +18843203545 +15849981995 +13909073183 +15898306532 +18891160647 +15158418534 +18564171461 +15157790247 +13960765143 +13920224896 +13971276395 +18507546021 +18590783981 +18857510277 +13611292788 +13930998746 +15821862220 +15159468480 +15154168446 +15870598648 +15125966262 +13965380096 +18844583314 +13914523202 +15846324338 +18559774328 +13672281856 +15821738790 +18562832174 +13694249387 +18809683743 +13649142887 +18508069561 +13639221455 +18874764052 +13607650691 +18828138685 +18521531522 +18885492113 +18519891176 +18801573745 +13958291837 +13602115546 +18895010437 +15159289194 +13926137505 +13647534031 +13672656733 +18870698038 +15813552474 +15816026810 +13684516507 +15102191313 +15890174351 +13650956135 +18823386628 +15805009613 +15161381095 +15182167723 +15857867677 +18832280019 +15847874781 +15160522118 +13938194345 +15101096615 +18513655921 +13601455507 +15885183310 +15120885190 +13654185581 +15135242681 +18866903300 +18889770204 +18843603766 +15846122944 +18883790620 +18828184225 +18886624785 +18838932343 +15180861399 +13987102109 +15180997081 +15110618268 +15857084567 +18818205393 +18807268102 +18580214053 +15882917265 +13925033639 +15144835383 +18846391891 +15120014547 +18844590122 +18842023379 +13608801403 +15853003037 +13975455314 +15152745772 +13603915243 +13996445161 +18898714932 +18501498771 +15109664107 +15800540110 +13679363158 +18539036786 +13642008232 +13969628785 +13692351896 +18548727174 +15184792112 +18519127586 +15189238185 +18832276300 +18891709492 +18598559688 +15140539177 +13633723446 +18530269426 +15155653594 +15130061966 +15102755937 +18582400783 +13627700757 +15855070152 +18590759356 +18580140671 +18896505969 +15194690632 +13917677215 +13604692747 +18555920099 +15890295510 +18862585096 +18503023342 +13601039656 +13998742857 +13907067175 +15123104382 +18821869942 +13676436717 +15106518566 +13988230374 +18852611630 +18846683839 +18867196083 +15189228945 +18556910534 +13949141748 +18892015567 +18578886051 +18835213538 +15861611247 +18855653712 +18532809754 +18518888836 +18878534320 +13697312299 +13608058712 +15852911239 +15165452014 +13652745843 +18857332532 +18814329370 +15855170054 +13629257175 +18523688940 +13614898083 +18508757137 +15822521610 +13987883377 +18549606894 +13673449604 +13648468040 +15823885006 +13995949443 +15841961158 +18517295125 +18507380369 +15817324909 +18862978302 +15823530642 +13957253332 +15813733470 +15859040265 +15102412531 +15152081402 +18587203142 +13694929823 +18555678624 +13938015216 +13685749989 +13651690300 +15144456752 +18806150241 +15818753295 +18858738677 +15879430317 +13982760468 +18888693054 +15891787825 +15159480716 +13613458780 +13654848680 +15877589007 +13688238107 +13934210519 +13909081218 +18500313673 +13947911725 +15142357774 +18519266874 +13971134342 +15165448653 +13954105561 +13612583898 +15893358789 +15143017673 +13958390977 +18564812846 +18544402366 +18578403928 +18523466312 +15196321410 +13669749104 +15155389113 +18562407619 +15871116982 +13663719662 +15181136461 +13676905170 +18899180703 +13656401798 +13934599847 +13680636356 +15878849242 +18534440132 +13939449529 +13608457934 +13658531706 +13660149774 +13972787593 +13966561399 +18535467420 +13962645374 +18863751499 +13938678321 +13666352119 +18859754600 +13614953304 +15154407122 +18550015823 +13698471727 +13906433427 +15169617033 +13621064248 +18567797460 +13613765317 +15889594295 +18809735757 +13989069944 +18891311160 +15858892697 +15834626757 +18841779873 +18545331293 +13616204288 +13601264684 +15110706790 +15855214887 +18514116289 +15827349185 +15180865024 +15188883175 +18569481843 +15841965377 +13681311692 +18537276222 +18523687414 +13900775877 +15143790504 +15158941791 +18552775993 +13931757843 +18520882091 +13662198335 +18504382291 +15861311412 +18836648068 +13901667107 +18554756146 +15190001132 +13976692706 +18564008477 +18845203607 +13630028905 +15172479630 +18862165488 +18551114886 +13939035690 +13635871248 +15135178294 +18526858578 +15858781883 +13601703451 +13670489401 +13633133395 +15802143188 +18541259625 +13696688145 +18576976334 +15104586921 +15175068879 +18851171912 +15835893524 +18541690640 +15103601848 +18861722302 +13690622810 +15182211646 +18822023379 +13932363175 +13902883353 +13982365346 +18864034882 +18532348219 +13962719093 +18809058885 +18594172334 +15802699611 +15174857494 +15140683142 +18816552273 +18861449254 +18598855152 +18893032077 +15138922863 +18521840131 +15169731013 +18859636408 +15117708133 +18521821759 +15814297710 +18507338463 +15823011060 +13636635968 +15193672332 +18833407611 +18808045903 +13970755650 +18883179878 +13620173981 +13684887580 +18830350813 +13915826081 +15866804093 +15182676915 +18555090472 +13961418550 +18821564331 +13606969109 +15191359820 +15810555106 +18568396820 +18534296575 +13658277974 +13660046138 +18876663473 +18856582687 +18831778173 +18537644824 +18870285707 +15844040842 +18836769045 +18528033950 +18554671804 +18813006444 +15153424175 +13902678399 +18507724674 +15841019773 +18864524000 +13984292253 +18889865236 +18833465232 +18889827971 +18813246669 +13687282855 +13650488176 +18877885060 +15840382196 +15183807573 +13952910243 +18832850698 +18549182589 +18533533584 +18555519766 +13699526602 +18549953352 +15131737979 +13985012004 +18809934715 +15802946532 +18581615356 +18800622962 +13968885339 +13633970196 +18880486498 +15150144761 +18595439393 +18525066493 +15110638491 +15146308124 +18584302824 +15111043609 +15139583856 +15861178621 +18547348378 +15119940987 +18501392173 +18884691359 +15131668400 +18824532370 +18824342080 +13928082441 +15139168642 +13633830118 +18884676698 +15102075549 +18551987559 +18562556585 +15172549435 +18841486533 +15891406288 +18596410513 +18803641176 +15800873705 +18556409993 +15859857973 +15186184011 +13937108454 +18878399850 +18555285874 +13968818504 +13652013718 +13637804014 +13655347767 +15188650329 +15880081342 +15190322753 +18571159337 +18821873367 +15861150778 +18560963279 +15817222967 +18889043747 +13679637078 +13945041690 +13959395776 +13612112313 +15198506202 +15841505236 +15185753249 +15190636118 +13698518531 +13903784820 +18553084657 +13691535607 +13955730110 +13999453461 +18523709840 +18843506729 +15106796700 +13689144907 +13921270132 +18856446208 +18530715830 +18504009390 +13699023500 +13913736448 +13992753547 +13986900337 +18862139583 +18561922158 +18861960649 +13611850850 +15852569961 +15880352095 +15182921373 +15120632583 +13917207667 +13974560303 +13693711255 +15159802259 +18875185306 +18826987818 +15801057139 +18808866437 +18568396385 +15837208217 +15197806103 +13646156328 +18503564891 +15126849993 +13644056077 +18595024764 +13680680765 +15188292700 +18522962048 +18839889033 +13671342873 +15151032604 +18845815611 +15863495617 +13611968931 +15193099932 +15100043563 +18800613114 +13915456514 +18895717121 +13943832274 +13650712402 +13942829216 +15115609098 +13621685183 +13643265194 +13642968274 +18879682239 +13650563214 +13638949734 +15821006986 +18516366156 +18507699398 +18876819033 +13650293546 +18585244145 +18847256910 +13937747450 +15122703637 +18813737772 +13641079739 +18535654863 +18849890713 +13673420643 +18899590579 +18881668986 +13974783598 +13698626150 +18536764839 +13931630955 +15863222577 +13651107267 +15863754099 +13667048662 +15800395108 +13988800152 +15159524106 +18502299328 +18564272509 +15126873982 +18546353558 +18841395859 +13663217455 +13663461262 +13610097818 +18582024798 +13693187055 +13603008675 +15185276850 +15863889061 +15872659360 +15840486099 +13978502923 +18854447993 +18857218359 +18803176232 +13672561028 +15123550018 +15856003183 +18553630241 +13653869014 +18803548281 +18581251142 +15182289533 +13674624434 +13985835985 +18847939909 +15153587562 +18897688568 +13933495236 +18839571508 +13913172465 +18891859479 +18525600277 +18597313246 +13910598258 +13944191217 +15866372867 +15819919162 +15116522990 +15834433223 +13984367522 +18576741179 +13944342112 +18502169476 +15888649634 +18574480899 +13690755311 +15857877784 +18583703469 +13960904058 +13665081034 +15853201859 +18824600865 +15877698038 +13640290548 +13963141567 +13626544303 +13615461055 +18825624327 +13933700729 +18505863522 +13640852161 +18588288970 +15176388494 +18503888518 +15161333323 +18839444961 +13985879077 +15885619532 +13673877296 +18868301290 +15898000644 +18855138320 +18540099614 +18801648486 +15129802333 +15147390760 +18875101403 +13644942761 +13683041205 +18562000889 +15172123499 +15162621003 +13691527264 +15824565139 +18815511345 +15847481490 +15106271629 +15199539547 +15893041453 +15866596818 +13671502909 +15120299991 +15824947405 +13636956838 +18890072186 +18899009332 +15834072124 +18517326684 +13903460785 +15806885845 +18505431086 +15189484571 +13984772738 +15837709237 +18573243393 +18844484901 +18551978933 +18811734349 +15839252521 +13984841003 +15840044313 +15884485164 +15848793430 +15100241950 +18863183355 +18851116527 +13957158007 +15839869425 +15159151045 +15193187961 +13666818010 +15168488259 +18512694986 +18805050129 +18870577174 +13636384825 +15812372807 +13992774811 +15145270595 +18820812137 +13693645853 +15111710717 +18522022212 +15833796649 +15808301553 +15813754730 +18820591288 +13995517480 +13680812758 +13686315797 +13967510792 +15195426630 +13960069976 +15825026189 +15196080570 +15802845608 +18557978609 +13978208164 +18512039445 +15175538599 +18587100319 +15819526747 +15165096528 +18858953314 +18516054768 +18588611355 +15842315259 +15876511934 +18833961790 +15892044231 +18505308863 +13642671965 +15139902645 +15862733186 +13625036804 +15114708826 +15107358757 +13950177828 +15166076597 +15120946549 +18824345164 +13959963938 +13998092976 +15851650448 +13932972349 +13664691203 +13652059179 +15895266054 +13932939524 +18828352681 +18870945382 +13980795496 +13976150198 +13635997563 +18582169574 +18878342691 +13633410208 +15810661551 +18889270767 +18548248385 +15821573876 +15166040976 +15828262877 +13613446669 +13637619761 +18558015556 +18543020668 +18818005568 +18811795429 +15154165147 +15835631425 +13629001210 +15130271212 +13694016342 +15800014049 +15862241935 +13988726741 +15114990918 +15861857045 +13682459548 +18532239179 +18815262751 +18576111620 +15146195085 +13901732222 +18539446940 +18876420573 +15831532812 +15864836416 +13658250144 +15113508628 +13628455412 +15866794272 +15118167393 +13693473779 +15840520175 +15886239669 +18512919119 +15163138146 +13962840278 +13923971924 +15872225639 +18832387340 +18876333004 +15816749984 +18508257598 +18811917864 +15808163184 +18853906499 +13998174093 +15836249384 +15857911985 +15170124423 +18828844300 +13968406097 +18820643017 +15816739267 +18837207515 +18856022010 +18565087490 +15108576559 +15122999019 +15892468923 +13626602270 +18594176517 +13666006773 +15836536628 +13656166592 +13911551220 +13998242798 +15148227075 +13914514133 +18886993731 +13616273563 +15159525893 +18573826360 +13947346575 +18894163131 +18861039923 +15816821649 +13988627339 +18548662377 +15892481735 +15891829121 +13949103127 +18827020171 +15860674619 +15188723211 +15817160291 +18837225639 +13608620858 +13672734266 +18543073148 +18818884748 +13981995083 +13687240614 +15843871390 +15815230248 +13981387142 +18838848648 +13913337275 +15129520763 +18508739040 +15117239517 +18516960430 +18504203366 +18575328437 +13945312191 +18518245490 +18512409058 +18590828774 +15103771208 +18849258728 +18824880710 +13912151500 +15838864219 +13952176952 +15151570068 +13686171096 +15163995466 +18866521338 +15168037973 +13954800953 +13668587615 +15121254770 +18528821194 +18513354868 +15193158902 +13955946760 +18864286712 +13663932938 +18870497408 +15814031282 +18538376447 +15867952603 +15130754561 +13900259474 +13643988537 +15188168818 +18817490248 +18580631584 +13946351610 +18833715271 +13661908269 +18529434540 +13672711670 +13652157279 +15807755399 +15894512478 +13652609192 +13992221285 +18874441469 +15822352737 +15149242955 +15870603813 +18530218125 +13675549095 +18596904752 +13681177109 +18502442120 +15891486146 +13996399710 +15880610203 +18597090554 +13630138915 +18573153170 +15182621820 +18531400853 +13932362926 +18808358867 +15190723376 +15143529020 +13997027094 +18550365933 +15161591530 +15187305235 +18834382136 +15175019445 +15115647730 +13672801507 +15164575799 +13969235873 +13649781414 +18813407687 +15197490325 +18896717777 +15115600519 +18818179086 +18520473168 +13641852924 +15111360943 +13688817767 +13906332304 +13990691409 +18837624900 +15177450317 +15881845541 +13627390656 +15123238703 +13623111287 +18829997725 +15108950475 +18517960522 +15874708214 +15843302831 +15179136523 +13691643378 +13613418020 +13955981054 +18548309267 +13983450308 +15806167373 +15821901097 +18511333174 +13951244748 +13628184739 +13908354815 +18893739510 +15184745369 +13982055728 +15128009690 +15143362867 +18880114849 +18868698213 +15150740365 +15191564313 +15118342680 +13925440805 +13979597993 +13969880849 +15158094067 +13993931897 +18803202998 +13934746373 +13940230742 +13654112578 +15138918980 +18564063340 +15157340444 +18572603334 +13975949894 +15845942606 +18546255668 +13654621701 +15125984698 +15188099025 +13928919193 +13982860186 +15184325796 +13979851749 +18501796102 +18844217533 +13965126468 +18883968978 +15169075626 +13688464310 +13982203244 +15832605199 +18575940585 +18584549985 +13984644860 +13962396810 +18893901074 +13667898013 +13954567657 +18842103603 +13682972983 +13983841014 +18827421689 +13996527428 +13657713313 +13677797252 +15863673305 +13969311072 +15857676998 +18852007986 +18518059739 +18806942516 +18552976482 +18519586186 +15834275115 +13691678554 +13650041170 +15122533535 +15842230901 +13940620526 +13640652475 +13983770337 +18546112320 +18818160290 +18535674665 +18849489709 +18815012795 +15151974649 +15168060188 +15161986507 +15196421309 +18879514674 +13645874113 +18899429354 +18523958357 +13639886395 +13671395551 +18518968917 +13925573525 +15104933164 +13645086181 +18817230858 +18580836700 +15881321830 +13950093398 +15183708064 +15804245029 +18510756570 +13687985789 +18522121350 +15851264183 +15169000037 +13921161824 +15173868487 +13603041654 +13972139054 +13628840842 +15157618565 +18586499868 +18819744470 +15835927753 +18806420155 +13656997670 +15129995123 +13692980250 +15164297770 +15164601961 +13916751889 +15815457688 +13618534277 +13659591191 +15135090523 +15856015537 +13633308531 +13912929705 +18879888298 +18849750124 +18582174056 +18880416486 +13971197126 +15153384603 +13910670968 +15809416711 +13684160218 +15839145616 +13640331229 +13640524622 +13912040332 +13636572174 +18888646631 +18844792319 +15185194654 +18529562400 +13920248273 +13975891856 +18854073556 +15142979770 +13676532668 +13606691139 +15146434182 +13971578930 +13909072963 +13938368372 +13696704592 +13906419314 +18838792784 +13950542074 +15842285298 +18815870574 +13625271220 +18824303351 +15110437875 +18864656128 +15895222741 +13691753565 +13926412317 +15875786385 +13628374222 +18584561591 +15114964238 +15881792055 +13969914752 +18872798205 +13903726479 +18868611863 +15187926852 +18878486962 +13663379561 +15146891160 +13922749601 +15872911431 +13657469050 +13644161294 +13948967584 +13982931868 +15139745616 +15831755844 +15179826242 +13615865945 +13666166678 +13686083568 +18814464223 +18553492533 +13642507624 +18849193494 +13617220242 +15800430184 +13660323663 +13965872192 +15185382290 +15866040099 +15179997485 +18802719231 +15884893122 +18857519508 +15100943301 +15127346158 +13957270192 +15195151305 +15191425151 +18818673248 +15832478268 +13906458993 +13614343265 +15854923686 +13991432002 +13650923697 +18513955218 +13639105134 +18840925076 +15128585420 +18585730153 +13691273792 +15862596575 +15895977287 +13632137032 +15833113430 +13983742659 +15831214146 +13646496808 +13667991189 +18531208748 +15118074047 +18583984642 +15860921095 +15137379971 +15179213798 +18869945978 +18532998273 +18595894024 +18560061325 +18855734636 +18831469844 +13616636745 +13994160376 +13647602508 +18565115666 +13669357199 +18558891800 +18850042654 +15116081035 +18825311019 +15115723634 +18889718193 +13607979980 +18836923903 +15157401202 +18579746675 +15122003208 +13604952645 +15128393963 +13965526949 +15813035503 +15829249166 +15136296162 +13610550704 +18581807333 +13911531918 +15139677357 +13945016702 +13658214777 +15812525674 +15125279729 +18556368347 +13940641543 +15199362387 +15871601008 +15138905142 +15189402873 +18865437136 +13901721435 +18537719496 +15164760828 +18576588159 +15153838898 +15883372994 +13663752793 +18588292449 +13986499667 +15194644800 +15845286087 +15813894779 +15841042463 +15185413797 +13902634168 +15136525933 +18815105896 +15160499765 +13963825966 +13687980319 +13900732464 +18812442964 +15180430699 +15194446274 +18857371097 +15147833641 +13658488519 +18863283138 +13998764146 +13935155869 +13991577812 +15837667790 +18557675879 +15886018185 +18504390915 +13917040251 +13989814432 +18575985590 +15153491196 +13616239845 +13969603150 +15846340282 +13670035855 +15122728986 +15141763420 +18822520879 +13937303408 +18506839774 +15892005746 +13655600738 +18867003604 +13991666465 +18590270904 +13975052527 +18858043408 +15147864954 +18529936670 +18842710492 +15164270234 +13908611714 +15173694251 +13901867566 +18587357688 +13961510162 +18508791742 +15833857524 +13919189535 +13944924294 +18515920872 +18848745193 +15143115569 +18857358424 +15899696784 +13991941105 +15152075435 +13616102055 +15823105042 +15147824432 +18574059694 +15189252827 +15879573104 +13640222305 +15146544045 +13973017033 +13937487154 +18501407906 +15841915725 +18812404712 +15186418183 +15861433209 +18874079051 +15848593921 +13634731329 +18869655891 +15868255819 +18533922727 +13664256446 +15805678105 +15143661132 +13693423902 +15891903764 +15807874674 +13609146974 +15805134185 +13952009010 +18572832179 +13988882290 +13998653393 +13935453402 +18575062103 +15867445352 +15815037962 +18816364761 +13981377891 +18560197411 +15897245714 +15128546241 +18846459220 +13901071177 +15810799574 +13990856284 +18523502551 +13932477864 +18834792054 +15898782904 +18896645018 +13698398392 +13973729942 +15824667506 +13930012357 +13931878808 +18551016790 +15813763682 +18541901235 +18893852577 +15126709763 +18862289176 +15833109945 +18815784074 +18854214473 +15894134192 +15861012396 +15131992952 +15833890974 +15179232295 +13612332655 +15172988096 +15890245490 +18599133619 +13651705471 +13609378571 +18566224295 +18539986457 +18535294125 +18878197367 +13642011107 +13909701088 +13681499433 +18828973808 +18545409289 +18831267571 +18564913888 +13629213989 +15899786309 +13680564175 +18552732000 +13600458102 +18576990156 +13995457258 +18589884015 +18597953799 +13669566799 +13633311479 +13939502431 +18855193801 +18585521071 +15877634972 +15193233954 +15180220439 +15826433519 +15815297900 +18880233489 +13905043644 +18506451073 +15831719431 +13936982689 +15137941215 +13927556146 +15821378478 +18532811341 +15884003825 +13970389326 +15890144584 +18582684316 +15828655401 +13948444082 +13985967267 +15828441705 +15179380954 +15167184873 +18503603801 +18839368588 +18561129702 +18893894330 +18870225174 +18852345235 +15113084265 +18527286678 +18882041781 +13644874942 +15166857035 +18896772429 +13984918487 +13690532684 +15863290908 +18845466422 +15835243958 +13935283573 +13653873585 +15857831200 +18527236488 +15844807534 +13641486506 +18852573726 +18859447850 +13981443090 +18840171540 +13958407833 +18507911688 +18515924845 +15197818233 +18515437091 +15873009125 +13685948100 +13681191899 +15823041268 +13630466811 +18535075075 +15842221626 +13629781151 +13979251831 +13631118382 +13606559781 +15815361324 +13909595651 +13927466592 +13632640297 +15852061377 +13919629477 +13607685867 +15127619419 +13952067454 +15813655127 +15835915881 +15818493449 +13645472378 +13664158645 +13610314086 +18854695568 +15105543524 +15842469675 +13613133322 +15880934972 +13951082949 +13690992762 +13655376024 +13665845872 +15899396247 +18545335495 +15863242485 +15885919239 +15897126581 +18833573995 +18548391749 +15111455546 +13656301580 +15122096078 +13942146146 +13947353693 +15872784882 +15170527222 +15889139421 +18833269957 +18505282353 +15128903108 +13682910332 +15165115266 +18571790628 +18505657959 +18890457539 +15131536278 +13915901916 +15144097927 +15872055918 +18815007888 +13607194849 +15864423176 +18801875476 +18846199412 +18563400424 +15887577083 +13944545000 +13681815022 +15822063121 +18598641465 +15173585573 +13600062473 +18535616170 +15141241011 +18862070761 +13687814328 +18535082070 +15189462481 +15148535062 +18892415294 +15889250831 +13644308126 +18587127431 +13945399737 +18574793963 +15820277031 +15131393488 +15129299085 +13671009760 +15868121580 +18831458320 +15852753029 +13617857792 +13690633954 +13906041425 +15136589224 +13668808568 +15102054806 +15851971578 +13904065975 +18508685818 +13608318437 +15887253833 +13963408078 +13647795622 +18867399816 +18803278863 +13633094264 +18595077324 +15140668123 +18871306576 +18548249953 +18584358399 +13971891733 +15815450589 +13916945314 +15110746973 +15882448427 +13651405977 +18565560515 +13633726977 +15834359180 +15881029282 +15151778686 +13970676667 +15889112235 +15117138395 +15194182971 +13915293427 +13969224069 +15834920797 +13914062918 +18844767680 +13616807566 +13661040551 +18574622743 +15140828560 +18883945955 +13978119078 +13971829799 +18555735996 +15818538962 +13984599425 +15137815811 +18868593785 +18863649365 +13650324934 +13961822765 +13646241187 +18865653879 +15183220372 +18586281178 +15870035778 +15811996330 +13910193966 +15842122371 +15898504380 +13985415393 +13690547853 +18586354556 +13607847556 +15146418236 +13660069513 +18866065143 +18599132163 +13913174299 +18522596691 +18531970393 +15887423217 +15881980406 +15898425888 +13903575573 +15814483792 +13609845950 +15176440659 +13958382170 +18838903503 +13637871900 +13677291716 +18877575410 +15893008274 +13630583896 +18887170030 +15866177533 +13699265978 +15897874457 +15126682369 +15186084740 +13997097710 +13931147827 +15826404047 +13619172231 +18841726128 +15196636637 +13990481448 +13996846710 +18860349382 +15153164032 +13697039906 +13921279771 +18896327435 +15186084847 +15875765202 +13910487965 +18871366136 +15847268556 +18596731548 +18549713257 +13935398761 +18523180783 +15112903469 +15186335457 +15846205607 +13613770751 +13962885324 +13634156515 +15139291068 +18595066656 +18806851369 +15844741410 +15194347302 +15196102937 +13604056707 +18894587829 +18569873801 +18533380322 +15834056981 +18834008229 +15155875092 +15812596319 +15811835315 +13600232522 +13656061596 +15808519702 +15890946844 +15141066045 +13658467208 +18577370794 +13988774002 +15163760896 +13699460646 +13998963290 +18871037947 +18513562734 +15898669330 +18561742734 +13906900156 +18899046474 +13612890788 +18517363014 +13684798295 +18870218245 +13633423731 +15125032965 +18871082486 +18581508324 +15115753159 +15100240449 +15100819944 +15867109764 +18525340392 +18546734720 +13614192374 +13944806690 +15104502073 +13917501076 +13613698801 +15878891364 +13998839658 +15804349962 +15877284979 +15170409020 +15830582775 +18858023054 +18516372018 +13639981697 +13627179027 +13924558085 +13917333987 +15871349740 +13684411467 +15109397953 +15890333928 +13999195623 +13653022825 +13918179467 +18880874439 +15170618873 +18569933344 +18537489883 +15810816501 +18822901526 +15168730038 +18555381355 +18889317974 +18550291152 +13901220145 +13651354284 +15121840756 +15871149223 +13902297950 +13615203667 +15120223262 +15158660307 +13675945243 +13655086404 +18859169321 +18896382959 +18847169601 +18847526207 +15142342812 +18589647263 +18524113904 +13645168982 +13968152763 +18846910090 +15899821316 +15116911943 +15106468319 +18592624845 +18570736529 +15842490274 +15871984439 +15807402301 +15871356254 +13994312602 +18895531356 +13635197828 +13656326448 +15162673160 +13940066710 +13924008866 +18810615131 +18539102023 +15820759756 +15868234390 +18882668695 +15865967537 +15892152131 +15823927256 +15187572331 +18564995984 +18845075816 +18551371057 +18536871456 +15806552279 +18819653273 +13974981905 +13632712687 +13630561187 +15163239036 +13980317222 +13903587262 +18891352007 +13689496550 +13653541887 +15195142066 +13605489986 +15175842999 +15152938932 +15876504619 +18895193696 +15819511668 +18532801585 +18556246392 +18592317505 +13968966568 +13623589142 +13616231080 +18532810550 +13957329028 +15144778381 +13620516808 +18589124831 +15860823955 +18880644769 +15872025674 +15198370291 +13946281260 +15144019492 +18844210258 +15824639245 +15193990596 +13958668131 +15142028385 +18580504270 +15137537547 +15192933861 +18559100685 +15104939820 +18534831152 +15805548053 +15865971847 +13607377306 +18884997171 +18812309790 +18838397000 +15172869257 +13931300834 +15103885352 +13628684898 +13672487528 +15855214666 +13916897276 +18860856993 +13993363205 +18811100371 +13939911624 +13626130754 +18896328204 +15811128707 +18565484512 +15119030083 +13646179458 +13665341415 +15198591259 +18527725891 +13906630932 +15840524780 +15807447052 +13931760257 +18821950632 +13607686308 +15174043094 +18581633093 +13602192303 +15196428800 +15155991427 +13600889683 +18518010380 +18869508636 +15890216740 +15886464631 +13690581529 +18879291612 +15848079149 +18580446011 +15857851429 +15168264467 +18527748820 +13987004230 +15841576581 +15143779710 +13620675889 +18814613533 +13912870964 +15840215965 +13686739227 +18827457525 +18574172873 +13607891455 +13605056615 +18816759773 +18853217439 +13918698610 +18547230474 +18502989547 +18878685693 +15172610567 +18503321195 +15851422676 +13611066897 +13992641657 +13691446252 +18832362362 +15877765755 +13915824043 +13993772083 +18835432011 +18819466121 +13621024283 +15103719653 +13671550667 +15129070337 +13913647651 +18548450778 +15805411433 +15801721740 +18544957406 +13652945059 +13904440837 +13982630654 +15182165438 +13987841902 +18806429319 +18826559238 +15821493470 +15124677042 +13952892358 +18530945963 +18544385646 +18831655487 +18547361740 +13649115123 +13602352844 +18836859466 +18530496277 +15133138511 +15136293039 +18858657915 +15127499562 +18822877243 +15100359087 +15842954680 +18509324463 +13905378000 +15144252478 +13972168421 +15167178538 +15173979767 +15189891361 +18566069273 +13628490721 +15823058892 +18587120654 +18898832190 +15118500085 +15836049118 +13617988419 +13928027221 +18862914393 +13980041507 +18567768400 +15147275064 +13951523087 +18572018432 +15843604165 +15181852082 +15180524267 +15838427252 +15110429899 +18565811832 +13971085569 +13995526783 +15805240519 +13646296859 +15187691512 +18843570252 +15137967420 +15890066666 +18889257555 +15882229491 +18836844365 +13928547132 +18556279489 +15156013094 +18828857963 +18800142249 +13643582069 +13681196257 +18815129355 +15825807340 +18514355670 +13696123567 +15808415441 +15854772615 +15806287429 +18578514333 +18833419972 +13929258042 +18896190335 +18562344775 +15104977150 +18891292741 +15876363917 +18844865149 +18875613691 +15873404424 +15878853886 +15119440536 +13662021589 +15155397914 +13621484899 +15126157239 +13683443081 +18837241152 +18845176989 +13942985045 +15117452517 +13915459138 +18896011173 +13964657445 +13683680906 +15105906474 +15115735242 +15186833719 +18879924697 +13652822632 +18898797289 +13961552121 +18527666352 +13925980348 +15831402006 +18876667638 +13654934834 +13959443953 +18827727965 +15879730067 +15105320081 +13623884482 +15812753311 +18547204983 +18536899446 +18869586486 +13613154198 +15179556602 +13922649198 +13682843790 +18856148992 +13922862424 +13658788764 +13601981972 +13625968245 +18831064911 +18803623320 +15100406302 +13981985428 +18534927788 +18805393908 +13675268856 +18831087813 +15827463365 +15828198345 +15827009330 +13672372635 +13982954234 +15119396200 +13991729557 +18811978692 +18539170525 +18598204582 +15168238055 +15170440349 +15112221652 +18857836496 +13642859121 +15810561911 +18574047694 +13980114179 +15163222546 +15161932060 +18579144430 +18888980155 +13698219467 +13646169526 +18590192185 +13623905957 +15193573145 +18523101532 +13952355064 +15868351805 +15111346801 +15113897465 +15171245327 +13982522440 +15882142116 +18833309034 +15141897921 +13903468571 +13995710948 +15828897643 +13984091908 +13623230250 +15109028743 +15186311086 +15175693187 +18513187881 +15804753417 +15140314617 +18568075553 +18824460826 +18816646538 +15826838763 +13982544057 +18842313073 +15893482008 +13681754035 +13693135746 +15819930421 +13989523728 +15871733802 +18863556456 +13678294678 +15816557942 +13983628460 +15831867228 +15115011032 +13955820053 +15889988673 +15881725306 +18501629184 +13661693470 +18506578979 +18860873762 +13904420385 +15106200340 +18881478777 +15163162689 +18521490608 +13687115056 +15156348372 +18849071193 +15877236124 +18818370761 +18878615714 +18836514072 +15127755956 +13653162678 +18862310592 +15873079058 +18846300694 +15878188319 +13900874472 +13987757466 +18840363189 +18896649302 +15852873704 +13985589938 +18850818454 +18861783306 +13932130732 +13668788103 +13964031121 +13605906964 +18563778689 +13958743194 +15168649813 +13614872770 +13984654957 +13657627762 +18561694411 +18535699479 +15147010663 +15899274905 +15168645290 +18869664409 +18891887305 +18821607792 +15148834653 +18566887666 +18525704726 +18851025709 +13609238215 +18542522447 +18845393668 +15854693551 +15838317069 +15102623623 +13933580502 +13617540241 +13990963121 +13970576083 +13978005280 +15847137303 +18530658884 +18827626102 +18587109620 +18535641505 +13904482235 +13627127186 +15834671111 +15890472967 +18885365356 +15120658098 +13953096352 +13975695740 +13975143422 +18568002300 +13666250826 +13991724495 +13675833031 +18862248168 +18807358063 +18572374990 +18861491614 +15829825246 +13614901939 +13996676352 +15189172595 +13958481478 +13923841313 +13622085127 +13675706943 +18537575225 +13633800571 +18516182982 +18817723946 +13687055739 +18508957451 +18884205851 +15137288775 +18556731044 +18831796069 +13618664301 +13918309220 +18809102560 +15837163045 +15130000901 +13919241927 +15110066929 +15845638770 +18546035833 +18525949532 +13998277147 +18848289478 +15843869583 +13666868829 +13695763714 +18592753571 +13919291419 +18872296703 +15117596425 +15193218642 +15868873352 +13648006099 +15159399333 +15822973819 +15819664326 +15104373869 +18577562695 +15141868939 +18804485655 +15858854573 +18893584311 +15826674900 +15115276974 +13656067338 +15896598905 +15150816741 +13963674107 +15109693051 +13609089325 +18565533989 +15101867098 +15817468577 +13954312806 +15859088191 +15892179400 +15128576527 +13698945898 +18521796971 +18569266057 +15153465159 +13901923030 +15189921549 +13655709988 +18891003226 +15872901381 +18583258859 +15114408413 +15108473789 +18593976523 +13600156670 +18876179474 +15153714319 +18541762543 +13913372317 +13609927827 +18807507441 +18836054585 +15846755775 +13993654916 +15805318552 +13937529287 +18850931958 +18834073728 +13668196281 +15112292014 +15867387768 +13929887994 +18869589331 +15180071585 +15878785092 +18845080345 +13615380279 +18514518016 +13973669473 +13959726846 +13946847947 +13632201048 +18525635874 +13992348388 +18596982878 +18566909607 +13609307206 +18593210461 +13623525752 +13679865863 +15135722370 +18553404335 +15122382528 +13616952201 +15893011988 +18500549467 +18565499012 +18884483203 +13666688447 +13649216733 +15833520482 +18525117730 +13913302999 +13666365870 +18529877052 +18831209079 +15881923895 +18586937505 +13687449355 +13666389596 +15865418002 +18854243960 +15821266658 +13911216824 +13993906699 +15147114303 +15181784035 +18824354068 +13611914863 +13969650862 +13975147807 +18574379302 +13965785843 +18897319745 +13640177663 +18860620949 +18542912007 +15834301977 +15164513181 +13955558861 +15841288195 +15110682875 +18875565853 +18548631724 +15809680863 +15811699027 +18585701240 +18875639920 +15853958000 +15127173294 +13992630954 +13954603561 +13953514569 +13900898836 +15860350730 +15898725718 +13635155758 +13900151038 +15148461292 +15197975579 +15114407368 +18558910880 +15193563767 +18858269145 +18829899561 +15129201989 +15893959893 +15866494440 +15863963571 +15137548012 +15181054589 +18821169628 +15153900313 +13685986562 +15148971280 +18544204645 +15851699963 +15167222276 +15107417760 +13695088331 +18580087852 +18894921706 +18519278502 +15851661597 +15130213491 +15892339366 +15185761634 +18877777423 +15137296711 +15821314552 +18595454749 +13621552463 +18859013434 +15821390657 +13600483616 +13956902487 +15146678097 +13626876395 +18544132722 +13636133735 +15844425279 +18889308790 +15843459635 +18810253947 +13671910395 +18563419948 +18571945521 +18571756551 +13922587041 +18500933709 +18828190343 +15105349031 +13978460818 +15133559191 +15133960048 +15154196744 +13999227243 +13690362106 +18534092053 +18546669766 +18832481739 +13646969534 +18858769442 +18882968636 +13654064337 +18835519771 +13639703210 +18882719964 +13952740153 +18579460484 +13634242373 +18572627905 +15822003052 +18857385951 +18521833936 +15838202355 +13948004192 +13634786698 +13682841833 +15872172970 +18517772524 +13906158852 +13650130203 +13990928991 +18854995400 +13958208644 +13660196594 +15884414644 +15129570705 +13683998441 +13675804696 +15881862175 +13669467794 +18530890585 +18513975606 +18878785451 +18506439657 +15823278079 +15808154726 +18534721976 +15142722873 +13622771306 +15139717313 +15114565092 +15108469002 +18819893795 +13961848485 +15187281994 +18815033751 +13602750073 +15197134810 +15193942089 +13928486448 +15102880944 +15877877582 +13667517663 +15151323168 +13945743870 +15183847157 +13693156864 +18812076996 +13614862677 +15889335875 +15143648501 +15815839640 +13974904389 +13602503243 +13996270934 +15875884830 +13622154472 +15109467216 +13611016477 +15830695555 +13640684063 +18833214537 +13983437599 +15112321113 +18599535034 +18805962696 +15809646636 +18509142981 +15886834408 +15110828999 +15842698553 +15100125590 +13955889885 +13939518908 +15830432672 +15154787206 +18892729426 +18865466467 +15885934473 +15188000308 +15146713931 +15174489791 +18552049761 +13955202662 +18564476540 +15137538472 +13679157802 +13661252661 +18805366343 +15837684638 +15877462947 +18877611846 +13924256832 +13925593532 +18595435186 +18590626371 +15159465127 +15807767436 +15840177027 +15848300904 +18561542115 +13936710588 +18513999406 +15848302876 +13690062280 +13932694141 +13656970022 +15162868473 +15184411055 +18582187128 +15187181090 +15170469672 +18866975461 +18537035467 +15144978601 +18515804670 +18592496660 +18596139447 +15893715241 +15838151775 +15867791173 +18520782449 +18879961812 +13625733134 +15825529471 +15802123713 +15838454168 +13979659078 +15827912415 +15160515116 +15805870688 +18503070685 +18858857698 +15170503804 +13609100431 +18552878313 +18855170595 +13609396683 +13659345390 +13923485537 +15113104419 +18892630715 +13663367750 +15887667861 +18580622805 +18552123074 +13939009558 +15829993185 +13988603123 +15168907104 +13918104217 +13977532898 +13600508620 +18868922923 +18881952408 +18502427925 +15171489902 +18824629763 +15115873684 +18806645810 +15883154483 +18544766644 +13948603786 +15816252815 +13667553032 +13957782358 +15108820331 +15120921281 +15134053441 +18557938074 +13633587882 +15889926457 +15135907236 +15160882066 +15846763360 +15166312654 +18546497113 +15891180406 +13967254865 +15163477165 +18544257011 +15189047338 +15835913725 +18888103977 +15879508169 +15116623335 +18867561178 +13947170874 +18519500121 +13616626126 +15175009643 +18580639593 +18828063714 +13945619334 +15169451369 +13975321397 +15140732112 +13968964261 +15141133226 +15899618507 +18511004044 +13688938563 +18599792037 +18555300157 +18548975807 +18880976873 +18850716303 +15845921058 +13648661607 +18813495403 +13979075756 +18813109173 +18508134050 +18529714549 +18871525294 +15841311932 +15188573555 +13658516967 +18881724529 +18867488624 +18574220553 +15165074211 +15117543613 +15139294896 +18551425302 +15150831778 +18898357194 +13665744426 +18576066488 +15857598303 +15854721583 +18804728453 +18893282306 +15128768087 +18594160786 +15839301468 +13960548968 +18838518951 +18890526917 +15181750111 +15881164211 +18801958932 +13652994025 +13624382667 +18858715593 +13914735217 +15102710337 +13903966371 +18595020325 +15898301112 +15121009164 +15854297608 +13938334345 +15899842723 +13685746741 +13637681409 +13955080379 +15155787414 +13943285826 +13938076191 +18890771455 +15182556263 +13914737375 +18869489943 +13966375511 +18574820341 +18846941371 +18559386736 +15827049798 +15165447827 +18841141443 +13971554232 +18893600240 +15163618828 +13957399227 +15853163753 +13962734977 +18551658755 +15178107570 +15836884878 +18544099703 +15821222432 +18848355142 +15160551613 +15180019720 +18832535642 +15815435465 +15159000201 +13924631649 +15886424539 +13615695397 +18887451630 +18510042694 +15844532853 +18503398140 +15191068496 +15102150321 +18895022468 +18542384436 +18592236640 +13979112022 +13983130188 +18875390294 +15816768013 +15895026215 +13924096480 +18556996556 +18527084848 +18819648590 +18823850860 +18871521555 +15146769681 +13632174295 +15844311963 +15812282845 +15848229387 +13992458015 +15869725516 +18544780334 +18838939783 +15868816362 +18870872729 +18541047984 +18583887930 +18587858510 +15861670887 +13908345392 +18847913912 +18552867385 +15865806630 +13988609038 +13989374329 +13923722735 +15102491941 +13949939752 +15152043013 +18574837781 +13625911996 +13628051123 +13939079884 +15857464219 +15894320946 +18824405240 +13961163689 +13997775942 +18881062830 +18533406557 +13606292989 +13980410979 +18541173944 +15199592670 +13984083329 +13927413105 +13601493542 +18550261808 +18508431412 +15107896030 +13938287724 +13688852366 +13649348826 +18872986972 +18509639179 +13622001270 +18537667763 +15135838125 +18845673244 +15837994269 +18899389577 +18890771108 +13664817470 +13981157372 +15170672274 +13690876124 +15845621112 +13636207412 +15198086341 +15820851855 +15110700047 +15849808861 +15889244891 +18861944950 +18896386797 +13947480827 +15164996749 +18505488688 +13615510186 +15891468849 +13643691872 +18837888389 +13640806270 +15134341549 +13695524019 +13952159515 +13660905837 +15170301385 +18540774087 +18529928335 +15802689017 +15899507772 +15199254731 +15109540749 +13914189087 +15860815978 +15102082206 +15855160387 +13622550890 +13658211336 +13624209442 +13974191418 +13664002340 +15882500560 +18890580903 +18515865989 +15808873842 +15126847440 +13643948753 +15894793429 +13981814107 +15878780064 +15157910842 +18822833657 +15864336391 +15843863356 +13674312099 +13986728757 +18512499655 +15863696091 +15163223053 +15158567161 +15867610390 +18508060539 +15107434701 +13687220720 +18825654724 +18552699412 +15156274386 +15837855579 +18888988298 +18561628916 +18815400466 +18569809489 +13993719730 +18576611667 +18855830094 +15890392121 +18812903460 +15890612379 +13961910321 +18537743483 +15812662292 +13663376142 +15874269253 +15886701967 +13905815271 +15882327882 +18544165097 +15106829473 +15152006557 +18558900624 +13686136125 +13998924921 +18507655031 +13617765240 +18525037038 +18851999778 +13656974924 +18893042944 +18508201047 +13617238771 +18899883776 +13647610136 +15866347862 +18520087190 +13925216589 +13928545929 +18830103683 +18552071056 +13937882643 +13622710620 +13624390877 +13979763149 +13915720159 +13628749107 +15864133238 +18837132778 +18594324834 +13998673937 +18877139374 +18533502481 +15896177245 +18825350582 +18580136235 +15888828624 +18516872885 +15844940498 +13639300218 +13943838733 +18544931663 +15184572911 +18830357315 +13618275500 +18585221716 +13625371907 +13612384641 +15857324952 +15890932362 +18555267738 +15157463298 +18811405006 +13653158712 +13979626557 +15852521770 +15187448670 +15146472439 +13602891853 +13925354604 +18897927762 +18508671532 +15894585514 +15809860245 +15115735843 +15819407289 +15880287362 +13644577957 +18815688979 +13936614083 +15181358202 +18824410938 +13611478410 +13930699332 +18596032645 +18800418840 +15808619976 +15822393557 +18564262962 +18575287622 +18872805659 +15888882029 +18535168675 +18516122036 +13950999954 +18880528162 +15108305563 +13968491800 +13904116156 +13994132620 +13613374839 +15114556272 +15848330114 +13918504848 +18593878782 +13623745065 +15112485414 +18547193253 +13999347369 +15179208126 +15143303948 +13603064039 +18826692439 +15845074666 +13909998336 +13905905839 +18824074909 +18841942868 +18821438095 +13905985865 +13919339863 +18841091019 +15180955407 +18537535312 +15111585556 +18541379449 +18580074318 +13927657205 +18548625843 +13697574233 +13621091483 +13973262910 +18832435975 +15105231005 +15149683989 +13644714352 +13938304783 +13941841861 +18819048905 +18861859971 +15170973869 +13645048783 +18551536586 +13968668511 +13915835348 +13918507813 +15855665861 +13921798680 +13998830016 +18509890757 +13984788605 +15176597960 +15132540505 +13665935801 +15815547722 +18835811566 +15844177371 +13938494162 +15134025994 +18838635636 +18853053947 +18890445872 +13620173825 +13662580047 +18851624824 +15836852095 +15839537331 +18594923454 +13949544036 +18505465471 +13612597686 +13955297727 +13901431812 +18506114336 +13945692800 +18818217138 +15173633626 +18837534888 +13944980896 +13915557745 +15876231134 +15107627184 +18848800905 +13620552673 +15150923728 +18813405615 +18898779730 +13934153632 +18511918934 +15827556472 +13985624414 +18560590055 +13939970384 +18825993368 +15135986291 +18847836238 +15819763868 +15853637582 +15125928436 +15852095143 +13911092887 +15849772150 +18597065707 +18530698447 +13611961496 +18552807138 +18868669093 +15891070451 +18820885657 +13945094446 +13912365089 +13942990243 +13974094191 +18505365811 +18813229566 +18573679060 +18807874504 +13617452404 +15851274380 +15130679983 +13942729460 +18815793475 +18511831030 +18582522927 +13982559187 +13923912586 +18508520649 +18881823189 +15186840004 +18861242949 +13689098047 +18853979486 +15824676525 +13667479278 +18882803880 +13926522736 +15891260465 +18587976904 +18880265728 +13608078718 +18575853014 +13968778183 +15150399908 +15847492163 +18885969811 +15140141292 +18840653180 +15812121072 +13676984265 +18534134063 +15823609478 +15128115366 +15864452843 +13938747802 +15893520585 +13680712779 +15808923070 +13676011357 +15811136913 +18856422096 +13682711695 +18886030634 +13999094322 +15804714748 +15886001259 +13691726318 +18531026028 +13681165850 +15166138501 +18573584326 +15811426722 +15803125848 +18515418178 +13926589597 +18843815235 +18544002736 +18838415359 +15804363959 +18559495560 +18524227005 +18850916231 +15154830490 +15844224168 +15818493125 +18519927054 +18500944069 +18563669544 +18587525633 +18536255708 +13691505480 +15114656836 +13620118534 +18813885542 +15833148391 +15807440475 +13940381113 +18537601595 +13995072609 +18805346094 +15139483449 +18812582945 +13981547032 +18897940883 +15882652782 +18863354161 +13935410953 +15126105884 +15109543970 +13686944836 +18810422702 +15891759810 +18839715008 +13904250756 +18806480574 +18805715881 +18836006592 +13992565227 +18885806710 +15882277292 +18879396628 +18501760109 +13608079115 +15139520482 +15830231252 +15810471167 +18847050163 +18884047960 +15854930359 +18527104989 +13661276599 +15851925390 +15170540123 +13632569382 +13675849026 +18501320598 +18540995885 +18585624994 +15199122923 +18509424114 +13973770735 +18885535557 +13643825504 +13938134973 +18506197572 +15828767186 +18874226875 +13918111637 +15139987926 +13604164634 +18812845628 +13918783573 +15845392965 +18814718333 +13960420717 +18885876334 +15838226636 +15898527234 +18881845822 +15114649217 +15887068462 +13690375170 +15135818358 +15800380368 +13997304111 +15149710713 +18820967308 +18568480860 +13942778073 +13902166754 +15825588709 +13649248601 +18546872828 +13974582838 +18881456330 +15123863427 +13910542998 +13904145323 +18892316851 +15153370338 +13973880351 +15845928873 +18879429261 +18866393174 +13958662559 +15189672101 +15819099156 +15802262752 +13681379122 +18895675979 +15186595657 +18596584541 +18571790037 +15863512711 +18510073151 +13971391614 +13692481153 +18594709753 +18551168815 +15818984041 +18857385512 +13997229105 +18860395451 +15140947648 +18531111824 +18893427799 +13917415575 +18826054679 +15199878816 +13697693809 +13671877429 +13641567140 +18575855923 +13634822969 +13989444499 +13975338027 +13958260038 +15826243362 +15116949307 +13925079493 +15166386619 +15148182685 +13613392087 +18870108046 +13912554463 +18520501887 +15892398693 +18590976874 +15153911500 +18570758084 +18856415729 +15818468986 +13968687374 +18553292627 +13618344156 +13941145257 +18587514968 +15183810163 +13937634083 +18858197409 +15897888865 +18858578022 +13644932577 +15878181005 +13645686591 +13679686289 +15831814299 +18532200782 +13672872475 +18523883028 +13612023716 +18881032495 +18594158901 +13680768788 +15830117659 +15147008173 +13926344247 +18895152079 +15191935692 +15109632954 +15818455378 +15188428596 +18519526452 +13625597236 +18597045875 +15887776201 +18571085455 +15161094806 +15841427477 +15160384355 +13661197611 +18501442938 +15860672293 +15835594142 +18862689923 +13647939285 +15144425967 +18878997214 +18594750814 +15194563771 +18860738661 +13660422832 +18875073965 +15196671699 +13907132805 +15819929601 +13970748974 +13673770367 +15179709777 +13661233340 +18804807468 +13672534433 +18893712665 +13909009178 +13603321954 +15874227790 +13628456326 +18894626883 +18877150413 +18893627860 +18565223175 +18549487602 +15846592187 +13609500876 +18516192267 +18836112389 +13626596850 +15881561971 +18843359499 +13965937604 +18505851367 +18556242877 +15842545099 +13624696342 +15151634869 +13604137916 +13660761310 +13618166309 +15197302531 +18817526159 +13978301576 +13968226543 +18877970884 +18865490573 +13612629125 +13917899535 +18824961833 +18812681685 +18842559055 +13640258533 +15875554280 +13904644107 +15823239217 +15191479373 +13928659192 +15147453961 +13955501706 +15896625539 +18820208917 +18876944526 +15816499780 +18823108287 +18570609992 +15834639399 +15142763724 +15818444482 +13681632568 +18512072882 +13930831144 +13662013426 +13919343510 +13993666662 +13921185918 +13689405818 +15159681375 +15184398076 +18512932850 +18899681224 +15135008032 +15897498257 +15801580046 +15803923776 +13925693139 +18862172729 +18814335568 +15188721685 +13993169716 +15104864504 +13930005467 +15129444227 +15848471430 +15104262572 +13972516922 +18535771586 +15861878994 +13658141794 +13664929907 +18827154360 +15148771847 +13917222190 +15822904848 +13997301667 +18814143650 +15125985662 +18569020742 +13926327584 +13655821612 +13679878610 +13630802629 +13612071226 +13992608515 +18852516885 +13956442331 +15830547008 +13603115047 +15108560073 +15195962728 +15895110944 +15845875136 +13912387927 +18524027538 +13684560526 +13905416161 +13602504797 +13927688760 +13900872790 +18875666948 +15835219868 +18891628943 +15830215965 +18827816076 +15806679293 +18890431495 +13907915402 +13965763761 +18829715946 +18892549200 +15842650011 +15847265161 +18522400644 +15825918226 +15850751117 +18545465621 +13614642424 +18511270692 +13687178452 +15166163456 +18595938289 +13663112333 +15845289604 +15172454256 +18806705888 +18879864278 +18874213423 +13638265067 +15841793708 +13645839045 +15834233371 +15179884941 +15807691809 +13689007548 +13631038250 +18577118995 +18858550890 +18883377799 +15812686535 +15120158888 +15169612957 +13698960447 +13949705330 +18845876271 +18595295296 +15873582403 +13951349487 +18816159707 +15192400204 +13925838626 +18868708065 +18817249566 +15814741455 +18596070207 +13916248882 +15831876051 +15198535892 +18559397490 +18858837923 +15826339936 +15819392154 +18560653499 +13664242412 +18831832995 +13998821649 +13684081123 +18850624550 +15817588626 +18833566120 +18534381402 +18574960667 +13618635735 +15866703489 +15864665000 +13988779610 +18565709736 +18597720059 +13933804425 +15119546451 +13929061920 +15174149319 +18885563508 +18829993761 +15193840370 +15136637398 +13625233468 +18894319932 +13985723703 +15111409083 +15845940877 +15131603136 +18517076330 +18861778274 +13926376166 +15103136722 +15128346429 +15123213717 +15870188690 +13954465099 +15874725936 +18597645130 +18557127819 +15864763013 +15158595675 +13940325512 +18579448624 +18590754186 +15192451954 +15860489519 +15131839280 +13631473624 +18545871877 +15853574073 +15822160456 +13972368344 +15825249967 +15834106720 +13953171443 +18815562113 +13954538033 +13641551900 +18874600014 +15857180514 +18547105391 +13642373797 +18557003696 +13630176809 +15863229377 +13676550474 +13612518447 +15893981592 +13919043741 +13989411758 +13926347657 +13964876174 +15833578451 +18872135098 +13691363756 +18590001137 +15182083863 +15190850313 +13630531566 +13951086239 +15862225742 +13926152980 +18594796400 +15857623928 +13608242029 +18586646583 +15898571682 +15879742419 +18800274144 +13996137534 +15117292294 +13936799940 +15894595886 +18860481747 +13655715602 +18859549599 +13674205343 +15839252044 +13917834303 +18888953750 +15101511826 +13693751049 +13971782039 +18869276833 +15170508470 +15829033358 +18570798407 +18562334729 +13639056178 +15164335775 +18886039087 +15117286691 +15878760331 +18541418151 +13628106100 +13994297837 +15891002269 +18550941788 +15868542021 +13660596752 +15829776680 +13646212279 +18818777396 +18509669377 +18565976018 +13644489538 +15860491681 +15157084424 +18585807730 +15802180268 +18866032174 +18514506013 +13958682565 +18801966425 +18500643647 +13636189553 +13620217577 +18530680378 +18544505076 +15141179840 +15169565339 +15176127518 +18846319118 +13927538545 +13926733026 +18525933269 +13968748044 +15105816059 +18514213732 +13683948891 +18547649634 +18551669189 +13975797979 +15807673826 +18870905720 +15174223331 +18869037931 +13618167852 +18877747921 +13925926086 +13962584126 +15869466972 +15168979363 +15862410861 +15117724264 +18876691991 +18832910256 +18589518775 +18870179169 +13688457680 +13920224020 +15853254627 +13950298517 +13624807248 +15859400168 +15121432345 +13608121397 +13611065495 +18848281222 +15831345389 +13927748637 +13944589234 +18835945675 +13983673896 +15807314596 +13663495822 +15809357872 +15159055061 +15131115238 +13949186612 +18565122806 +15163487833 +15170866426 +15139128812 +15162138286 +18588389853 +18833239602 +18886767756 +18844821317 +18847539123 +15853694960 +18560462508 +15826720433 +18831664997 +15170164940 +15100902948 +13601011035 +13616387013 +13689109860 +18564667912 +18575846656 +18868619561 +18574660864 +18587063590 +13901493116 +15838751992 +13650044025 +15831445892 +15881880701 +18878128889 +18871861356 +15831090116 +15179767562 +15109493017 +15173918598 +13684212559 +18804702669 +15800447125 +15151693430 +13667921920 +18531454175 +15159378611 +13622440782 +13618724340 +18522595727 +15896850142 +15109948238 +15832002119 +15111748912 +15155137957 +15884335902 +18816258406 +13948782959 +18814542985 +13647990249 +15866248869 +18560807653 +13976148554 +15186689657 +15839097617 +15124917957 +13688171718 +18569163839 +18593331185 +13681057375 +13906751859 +15103178299 +15199293110 +13639361537 +18881947639 +13934683000 +15101749154 +18589427305 +18561437279 +15842026116 +18812213287 +18546535262 +15193117879 +15817794457 +18838143220 +18588262865 +13663883326 +15114268045 +18863683477 +13930444672 +18584956295 +18551547118 +13965076408 +13971175045 +13688514805 +15115444032 +15830933843 +18588793763 +18508956001 +18843382069 +13600259801 +15196118595 +18518976518 +18514954439 +18543724979 +13989502750 +18880316102 +15198823957 +13974764753 +15815438421 +13699914142 +13635061680 +13956267149 +15170861722 +18526500462 +13992289268 +15812885570 +15192920228 +15123223887 +18876698460 +13609385465 +18529814375 +15806897813 +15805455003 +18535564843 +15878993867 +13911608576 +13994113959 +18529619213 +15880534687 +18807134687 +13933263973 +15151208276 +18806104856 +13668337228 +18862793424 +13633177983 +13969482314 +13956798815 +18830828372 +13946367906 +18563223367 +18885371600 +15856193429 +18562893907 +13922920181 +18833987233 +18542028104 +15137166937 +13986195157 +18870768170 +18598970892 +18816780418 +18550318256 +13638559952 +15148470031 +15846294645 +13647693708 +13624781821 +13675540006 +13691702763 +13610151832 +13902921681 +13634767106 +13933670162 +15843451817 +15153309039 +13619741204 +13629972477 +15108244901 +15129941592 +18502799853 +18577347429 +18568248211 +15834955856 +18538646617 +18892527399 +18872057718 +15877478171 +15166286317 +18851354432 +15161971972 +18553611015 +15801626487 +18586949139 +18563494729 +15894992595 +18828320440 +18535790979 +18511516071 +18523266424 +18520187162 +18850856239 +18893409377 +15885097383 +13634525140 +15864196285 +15194784599 +15127687219 +18525102523 +13650524991 +18862070022 +18523144508 +15866602765 +18560825659 +18867674943 +15164062301 +15836862176 +13637659553 +15811109152 +13944065129 +13642449386 +18833185730 +13642913014 +18870937759 +15155204676 +13955404957 +18522498616 +13971413726 +18537835831 +15119659814 +18547162827 +13914251621 +18888982839 +15858231121 +13641189739 +13612885601 +13917930374 +13631793360 +13971151800 +15142765593 +15135997469 +13608683215 +13616664057 +13602176537 +18549200062 +15178043113 +13674425292 +13629614096 +15808973929 +15801345114 +18876089458 +18509914661 +15884995516 +15880369481 +18547444415 +13640602343 +18878796476 +15821716628 +13686173542 +18510701307 +13667701804 +13612342057 +18877473739 +15142434409 +15824413852 +18530089196 +13919381066 +13627399020 +15103670843 +15195258751 +13602675114 +15844654694 +18590021927 +13691956996 +18806765906 +13629938516 +15156659221 +18810031983 +15873185492 +18551084554 +18564946574 +18552731435 +18585816805 +13929402643 +13611109298 +18570186294 +18529999549 +18890178413 +18538459331 +18832565863 +15875739165 +18873436202 +18559221519 +15853146995 +15197193777 +18563371453 +15108492060 +13672554116 +18560580056 +15846259529 +15192709955 +13955010616 +13969407794 +15863723856 +13972118014 +18592573376 +15893738562 +18897932086 +18579412560 +18806952103 +18543730104 +13681372068 +13647534588 +15872673565 +13675562470 +15112616175 +18871155869 +13961603292 +13996976939 +18513847716 +15130317431 +13919242192 +13623132067 +15100471853 +15866876026 +13919271278 +15108557431 +13946185948 +13615439034 +15898308453 +13961248946 +15154759363 +13919695630 +13670229412 +13903205064 +18584197639 +18576221647 +18544344494 +15171723839 +15804520396 +15117667037 +13940470230 +15151121182 +13647484788 +18542529411 +18585509571 +13609543674 +18578546530 +13997878723 +15142664766 +18895473467 +15879233605 +13695728827 +15848969033 +13680293464 +18837233363 +15175495792 +15882807422 +15837365596 +18542146188 +18575835801 +15886058108 +15174164424 +18506915311 +15179930815 +18857814765 +15197169633 +15126358171 +15143460537 +13621670548 +18542941777 +15874661845 +13609801221 +18517140233 +18889500140 +15175439501 +18598549673 +15837453227 +13985128183 +18591149802 +15118821572 +15131661249 +18814449133 +18535220266 +18549310820 +15193478715 +13610396336 +18535116473 +18827597260 +18885329231 +18851792139 +18579065410 +15107922900 +13633095471 +15129125142 +13693985375 +18877706464 +18889929004 +18511156209 +13966174940 +13618491086 +18886779679 +13948296387 +13677380329 +15818244225 +15197925627 +18855736584 +13686032836 +15852762246 +18581439442 +15854574130 +18899182617 +18526354412 +13978957994 +15870877181 +15118792365 +15841192599 +13606509296 +18516008751 +13621849209 +13658782737 +15144549010 +18871543935 +13629707698 +18556239609 +18885756846 +15177915255 +13916534125 +13901891888 +18550409737 +13608886468 +13646260270 +15172870890 +18531907860 +13957304993 +13939123785 +15194600299 +18846495508 +18585118500 +18818533874 +13604995684 +18854121277 +15121153782 +15809746398 +18802524111 +13612687257 +15867985972 +18842937570 +15175594623 +15877785483 +13641253342 +15116402888 +15825265345 +15869101484 +15127926773 +13606200780 +18575585357 +13601998253 +13618302082 +18507845204 +18821690538 +15859023391 +18599450008 +13690348211 +18891049414 +18528018422 +13615726579 +18579242741 +18545559968 +15885588429 +18897303228 +15833471954 +13935966676 +15163577342 +13630857467 +18885054678 +13609748720 +13935682712 +18571796338 +13686049394 +15873560879 +18586689440 +15827450203 +18563139263 +13906423572 +15854693668 +18846700318 +15116090092 +13684221169 +18804739164 +18570014284 +18811626690 +13661175085 +13673923953 +15136298492 +15863951270 +18831630117 +13966608988 +18816674340 +13921314528 +13677976889 +13958603926 +18810051842 +15117477112 +18597975013 +18540344531 +18897867278 +15164982240 +13668916859 +18518938762 +15831726239 +18892470121 +15120117590 +13963550813 +18873700601 +15133003838 +13671427822 +18536997616 +18853625991 +18536738308 +15851094771 +18857757503 +13988564586 +15197523913 +18846685338 +13685721751 +18870612491 +15103045463 +15178533007 +13915804476 +13695458618 +15857305513 +18829466241 +13990405624 +18535810832 +18557924234 +15135429408 +13680380820 +15157652420 +18814354002 +13926366341 +13971868314 +18820652978 +15857476203 +18895895244 +13602078798 +15157485231 +15843659244 +15103393410 +13602248151 +18845927939 +18891197279 +18531086307 +18817917239 +13966896494 +15142421659 +18599870717 +18513034358 +18522688002 +18569578037 +15875888556 +18807522563 +13947447134 +18827733541 +13682345689 +18532626926 +13941468122 +13683186867 +13664473847 +13683820750 +13629868657 +13647329533 +13677378729 +13635243488 +18806205695 +18857197858 +13632490466 +13994028011 +13600219617 +15871891211 +13982226177 +15193688866 +18828083839 +13689375979 +15876443168 +13983631467 +18803777394 +18827388978 +15172934756 +15129615989 +18586568900 +13933796474 +18515414098 +18821735119 +18537023548 +18839480300 +18583499350 +18541544813 +18876822830 +13658654278 +18825459700 +13936514746 +18534150852 +18534048853 +15121127236 +18888924934 +18884720575 +13992013632 +18890713460 +18855656741 +15843660082 +18514794576 +15199095635 +13697474074 +13637037604 +15894283556 +15177619429 +15155751835 +13633428364 +18846380963 +13652627626 +13691900562 +18548722274 +15875222211 +18801550723 +13907836284 +13642947256 +13611147356 +13609324469 +15149695541 +13653990403 +13975063390 +18575781015 +18576411314 +15100647618 +18878562078 +15892683024 +15894468254 +18879152723 +18858671951 +13642169204 +13923830792 +15146583584 +13941914503 +18837196494 +15175245208 +15888774308 +18815916100 +13607590346 +13692440769 +13642560441 +15180955269 +18803164163 +13939943932 +18525531794 +18860528703 +18842623547 +18892355789 +18854556737 +18820861473 +13933281345 +18566848704 +13948265900 +13648275912 +15808670855 +18875427525 +15147114683 +18520800713 +13960700630 +13652635608 +15111985748 +18529382285 +15824076830 +18533577355 +13957329719 +15120722863 +15137491442 +18823654357 +15860164148 +18890989211 +18538027857 +15824228099 +15870940122 +13902259424 +15859009453 +15842521207 +15851072909 +13943766389 +13962800164 +13688718594 +18879807254 +18537252855 +18847798283 +15162841116 +15128655904 +15802404719 +15801983027 +13903023239 +18523755967 +18803221854 +13699498416 +15188324882 +18564305573 +15874575290 +13618027533 +15877343355 +15168826473 +18515950738 +13949887580 +18818549348 +15850969502 +18894118583 +15105223950 +13984976926 +13620180724 +18522306481 +13954175591 +13654841757 +15118687381 +15151041725 +15885090726 +13916846713 +15192661056 +13682644944 +18830405473 +15182090276 +18889509640 +18560835141 +18545690554 +18816381492 +15192115045 +18817955062 +13901238020 +13975944225 +15875361195 +18515484825 +18591606906 +13972429057 +13687133529 +15814120518 +15194561378 +18872622592 +18886807467 +15126356764 +13929096742 +15873206722 +15105521853 +18846881021 +15116721318 +18843923612 +15147431843 +13698701569 +18822731030 +13695500006 +15865181580 +13663720189 +15105204644 +15131909765 +15194258705 +15874182880 +15172832275 +13666378858 +18817784974 +18898471836 +18502240502 +18526447462 +13624614990 +18803775951 +13940332351 +13980355844 +13960049395 +13633377560 +15889031905 +18852936200 +15136024367 +13665046130 +13997304677 +18841186190 +18562205586 +15893239713 +15856500884 +13660216083 +13681415285 +15168950475 +13635094614 +18881033044 +13924415227 +15803363818 +18591802848 +18812873980 +13657891253 +13975654324 +15181588104 +13662661126 +13976239045 +13959452955 +13641877150 +18587133348 +13914752407 +18575240983 +18888064558 +13699243388 +18516455602 +13651679008 +15134315554 +15173341529 +15869185068 +15897938525 +18500217747 +13693033391 +13976993291 +13622619620 +13988445350 +18867149623 +15187234629 +15108169416 +15875201258 +13614713534 +13657527787 +18522069636 +13656181776 +13661424155 +15888055446 +15855462070 +15841096685 +13636240707 +18866629846 +15104115975 +18588320605 +13621564145 +18529870340 +13624087662 +13999627241 +13992988365 +18541587437 +18849465892 +15192540648 +15819010667 +13646538566 +18805383616 +15105618299 +18585079124 +15834838352 +15819166994 +13692337676 +13679414593 +13902998399 +13935533104 +15819295260 +13653722082 +15192051873 +18857784812 +13916003530 +13674151079 +15181052184 +18814289289 +13987147174 +13991693732 +15136283384 +15109961853 +18579638609 +18531877983 +15850539249 +15179746317 +15862182372 +15802002210 +13644079955 +18833306518 +15105136649 +18882316952 +13661021290 +15839655973 +18505366957 +18801759722 +15169901987 +18555172795 +15184886695 +18896048029 +13662677838 +13907035405 +18855282312 +15123650023 +13621679770 +15805505680 +13917996765 +15128326973 +18807099370 +13618893785 +18897392255 +18879247197 +13978659484 +18870712737 +15832453402 +18877453159 +13956956144 +13613591152 +18847927190 +18888588700 +18873580434 +13916507190 +15897311214 +18545962963 +13659292468 +18583932365 +18505883841 +15109400081 +18534600551 +13928780712 +15188403195 +15173311232 +18539842657 +13941782600 +18830778209 +15111751165 +18582033252 +13637272735 +13986501327 +13925116650 +13671275510 +13670120139 +13690612226 +13954001249 +13610586583 +15840501449 +15894003255 +15171688027 +15197924643 +13955333972 +13628658072 +13653626560 +18554442475 +13645067195 +18599421981 +18538786867 +13616657073 +18863726373 +18507864150 +18825421517 +18514918439 +18517819778 +18811575647 +15118497856 +18549270740 +13694054649 +18550598361 +18573427271 +18532640057 +13988042403 +18817856317 +15858412891 +15165873008 +18885879472 +13975467289 +18894103666 +18868873900 +18805160149 +13652124913 +13680403145 +13682624792 +15865481902 +15802207949 +13619841622 +13604577134 +13632320009 +13925856486 +15127820889 +18568995828 +13919315589 +13645959268 +18579220477 +15818100099 +15176877556 +15877629519 +13667986091 +18500339718 +13916367974 +13915409430 +18898778591 +15890072281 +18860639558 +13956226886 +18874685061 +15871346972 +15833098224 +13634276478 +15867897868 +15846792432 +18599925237 +13614394332 +18548127017 +15870020991 +13663456835 +15192865120 +18519914133 +18502585221 +18579793072 +18528787953 +13690719656 +13955810341 +18885207857 +18585878910 +18521844904 +18802949655 +18847494988 +13971699043 +13634792110 +18500105022 +18812396820 +15189464114 +15109701246 +18809939258 +15123247719 +18584075532 +18567659575 +18590059580 +13646535713 +13964091908 +18867336653 +13914000451 +18844287490 +15103557600 +15819865079 +13610052040 +18842149466 +13669707465 +15893857661 +15893404708 +18871880526 +13952962329 +15130717941 +15897010327 +15818549587 +18811214205 +15133581369 +13654657865 +18854764406 +18873703898 +13910673616 +13917354055 +13604735608 +13667179105 +13612487490 +13913097153 +13693964670 +15114931000 +13618021071 +13943040421 +18831804137 +13996068349 +15856551546 +13662798825 +18511748674 +18553254621 +18560913592 +13653315269 +18521669771 +15133833240 +13989851617 +18819889217 +18580920523 +15840851057 +13928540901 +15136149126 +13972562196 +13699913915 +15189731055 +18510493383 +15871536657 +18596493473 +18586203811 +15863002589 +18819723592 +18824606342 +15876387000 +13953840619 +15145648656 +15190554761 +18886231233 +15808631594 +13978535506 +18804430872 +13953206875 +18564221633 +18856729479 +18559297023 +18534461184 +13604347793 +13653893891 +15873779797 +18574234695 +13902899762 +13989424389 +13608416457 +18854227238 +15187487324 +18831840086 +15148687791 +15170049927 +13637927247 +15178007632 +15892895787 +18842954122 +13627373886 +18587431698 +13911618743 +18853457876 +13924304995 +15169208057 +18823945403 +15139849534 +13623185968 +15175299874 +18556536920 +13606533890 +13986493629 +18517490883 +15166654847 +15896817632 +13605620234 +15880768574 +15841269511 +18524936649 +13609473649 +18583365817 +15141765811 +18516822298 +15843364933 +13688613830 +15802303219 +15150809563 +15197228506 +13619520756 +15860334623 +18518799576 +18555703999 +13931546110 +15146057254 +18575260494 +15827335566 +13938470500 +18838913668 +13662310033 +18505670555 +18579509594 +13620850073 +15188910989 +13991458560 +15174672404 +18556935064 +15117203359 +15114292073 +15820989633 +18579426497 +18869260373 +18531969257 +15875762799 +15145788988 +13682146463 +15825591682 +18512920677 +13666193068 +13697019541 +13923824119 +15141000072 +15129462262 +18512167634 +13970560496 +18824569111 +15181490228 +13931084353 +15152010893 +18518545813 +13666391626 +18587246401 +18542207808 +13629252844 +18521885313 +13960371732 +15139131038 +13648875965 +15872040799 +13680715626 +15106639524 +18880578670 +18885225111 +13940731657 +15887116649 +18862536868 +18503297143 +13903904716 +15105126698 +18822921819 +13918254273 +15162225489 +13602641787 +13973695315 +15810001080 +15859961600 +13660684543 +13634024764 +18809488848 +18895947464 +15883769614 +18551499872 +13605312850 +18852286356 +15152642158 +18866826030 +18839594619 +15884808368 +18505451418 +15811219072 +18512786463 +13646964022 +18879669403 +18832268394 +15831239673 +18848649339 +13965949999 +18802094720 +15810530599 +13631560897 +15851134823 +18556718117 +13624806764 +13969376052 +18522624053 +15816608936 +18510641660 +13931812060 +15126261017 +18574859467 +18559231676 +13969355507 +15888859979 +15189928725 +15101287265 +13653019894 +18898727998 +18840632834 +18809475832 +15857660341 +13977369548 +13627433827 +13970189362 +13914462343 +15183792339 +13966546355 +15867317123 +18837840521 +18876847478 +15819692313 +15161669901 +13934284004 +13974037345 +18892268547 +15805321591 +15155145321 +13927537981 +15881278330 +13686864609 +15142752525 +15159770220 +13651094121 +13966589535 +13986498076 +15175328426 +18831808162 +18568478289 +15823669568 +15858642961 +13984909752 +15834509389 +15161396332 +13918324950 +13643517047 +13917672709 +18562071682 +13687552926 +18528079917 +15807271451 +15193864520 +13914525135 +18892019362 +15898402070 +15187955070 +13678534236 +13635491226 +15179036500 +13679614113 +15896977401 +13603566648 +15852334568 +13605703304 +13629954595 +18845551563 +18868714542 +15181087807 +13935119536 +15117794171 +18583974682 +13676295693 +18559359294 +18868366477 +15835643191 +18837791851 +15181034546 +18855834868 +13942915904 +15801728309 +13669635645 +13664729064 +18538233805 +13694048436 +15133364354 +15847832976 +18550250361 +18593661457 +13900484257 +13607295117 +15190749282 +13945487203 +13916376960 +13911181737 +15809031501 +15868241896 +18534583943 +13968116271 +18566729954 +13927816784 +15126725937 +15820689322 +18870995987 +18574646185 +15143031791 +13678664027 +13686047125 +13957502510 +15136305650 +13671665039 +13983382672 +13669930765 +18866617310 +18534079020 +13688502437 +18513176778 +13624780119 +15195343758 +18544230773 +18533183439 +13916633664 +15842081314 +13657243758 +18574976658 +18527125190 +18890421758 +13951359523 +15196868364 +13638115956 +13977000602 +18538714549 +18544065293 +18532501890 +15185066029 +13665826300 +15824024830 +15805268377 +15143185092 +18563594745 +18858515996 +18540999706 +18841510735 +18522733889 +18543640040 +13616424431 +15157406080 +18560595984 +18829807667 +18832723136 +15118430801 +15157176493 +13988810634 +13991416478 +18510560236 +13920989721 +15154417289 +18543896727 +15882722653 +18808972010 +18812757044 +18578125441 +15195553267 +13609262592 +13925628239 +13952193867 +15807675864 +13690988981 +18544276910 +18503500735 +18827844524 +13981296306 +18540113874 +18523105186 +18523760504 +13959202809 +18508987443 +18507919685 +18867603301 +18801188135 +18894404434 +18865103932 +18882911454 +18859891232 +13989529304 +15148664770 +15820251576 +18884272971 +18881024345 +18552135334 +13903061115 +18875135639 +18841145684 +13635657508 +15135737769 +13690656516 +13992086289 +15873647996 +18841987692 +13684654232 +13678372966 +15809585322 +15116241721 +18879330472 +15831592313 +13932820969 +13937294445 +15147159778 +15879565107 +13637845023 +15134775092 +13690503256 +13994207172 +13937925273 +15143698458 +15888756461 +13672595584 +15108939952 +13683119221 +18512014280 +15834616481 +18848366234 +15890811137 +13644678917 +18892386432 +15824261428 +15884969731 +18583101061 +15897334885 +18893743452 +13656549263 +13603770784 +13999027346 +13939981155 +13975303330 +18863602348 +18567746369 +15172732114 +15183750992 +18537987687 +15867505753 +13934510363 +15144172428 +18541940488 +15196582714 +18598322585 +15875404366 +15829826763 +15823227013 +18556968931 +15860974679 +13671133890 +15838718837 +15869754173 +18807781680 +13651017696 +15820192658 +15115856404 +13612181900 +18862982811 +18842563539 +18562112542 +18808063604 +15833849354 +15167417441 +13955915498 +13665123045 +13940699088 +15819677556 +13642689501 +18814263577 +15827725586 +15820876033 +13919015083 +15887163725 +15879342656 +15896757494 +13949527707 +13940914583 +15155414672 +13999394605 +13980560132 +15869247087 +18524108618 +13642854464 +13929832277 +13610100704 +18542327547 +18841662112 +18541555813 +13919622033 +13969350903 +13655280188 +18583474267 +18830732055 +13666729426 +18528430407 +13911132692 +18813129080 +18864197528 +13602732876 +15163941858 +15156691340 +13975980445 +18824239091 +15802473942 +15103396676 +15802910085 +13610592282 +15119772276 +13991838540 +18829746606 +18864564647 +18880192433 +13903439216 +18540965459 +18842783263 +13982152014 +15816359752 +13963260597 +18581016646 +13909414569 +15842310079 +15879047856 +18819884643 +13944813769 +13920826788 +15150098201 +18567028471 +18566162849 +18535654954 +15827858563 +18554235653 +18590057401 +18806122075 +15836944223 +18857289360 +18820908736 +13670006543 +15877860561 +18519668410 +15188645296 +18813023504 +18818328973 +13685873097 +13939897954 +18554587491 +18583048889 +13672504993 +13610614940 +15143678267 +13963657891 +13600973524 +15855064169 +15804534219 +15105055787 +13686880810 +18873525072 +15858248374 +15892596607 +15159552433 +13654045289 +18888146564 +18883260927 +15130585842 +18807372266 +15197393088 +13670403927 +13903580027 +15800741222 +13696510375 +18516466743 +15834677000 +15156063013 +18839969773 +13975465857 +15195672587 +15138648431 +18882026182 +13627125618 +18833942773 +15833350923 +13993359661 +18889752886 +13946465800 +13670603759 +15880883136 +13994613422 +15145447043 +18572999529 +15866305951 +18532717642 +18535372958 +18589625807 +18590412639 +18514171109 +13941478539 +13917841530 +15198714922 +13924475195 +18593406653 +18597916313 +18884013801 +13919906754 +13963259288 +13931574763 +13631061298 +15199226460 +15123821625 +13664364009 +13911864351 +15133618182 +13610643068 +18886373557 +18818770822 +15818441200 +13903275922 +18834205245 +15899787795 +18519856785 +13670328208 +13981477406 +18533489390 +18544425288 +15157104119 +15175746093 +18535918429 +13925209543 +13988183889 +18898571766 +18573849860 +15172997773 +18544707461 +15858986361 +18510908915 +13662200505 +18592340852 +18566068778 +13966167640 +13911803009 +18815024572 +13695410666 +15818455704 +15106465706 +18549600745 +15888013748 +15822020862 +18532040358 +15165281372 +18510400154 +15872433834 +15830753450 +13640372182 +13910998716 +13934759329 +18857455137 +18505337608 +15808563696 +15150075595 +13909051761 +13682899058 +15199057083 +13690115914 +18590861407 +18502131412 +18885134516 +13964108257 +15804576751 +18827645157 +15818500154 +15141460261 +18577888044 +13954763830 +18591646188 +18528068244 +15143533702 +15847034927 +18869829720 +15872429180 +13653453220 +18887775120 +13635022521 +18552739222 +15182889811 +18503251263 +15879305935 +18505789168 +15184691550 +13903504249 +13674131178 +15899269977 +18591569851 +18867824709 +15149128307 +15868924886 +15113884644 +18835228849 +18879911907 +15893408602 +18886294774 +13689630346 +13647440368 +15886447240 +15189400296 +15157174706 +15820710763 +18805521596 +15197798787 +13642045436 +18860804561 +13676593144 +13659575603 +13984053907 +13959530774 +13978766701 +18565198225 +13983987751 +15867066667 +15852009637 +18509020761 +15839444598 +18800649363 +15109347019 +15816835955 +15153805479 +15133215870 +18534574158 +18546513410 +15859737325 +18845334871 +13907242293 +15181338057 +18548081317 +18807911496 +15102493291 +15125622462 +15184999658 +18826538421 +18810067761 +18501934485 +18528800280 +13977608390 +13677285211 +13627007065 +18875547065 +13977300281 +13954803254 +15140557988 +15855144265 +15128226325 +18511271679 +13613747110 +18547800926 +18895155360 +13646872792 +18814887765 +15129704267 +18536438639 +15177354290 +18531453155 +18594768711 +15190656977 +13656870359 +18509988557 +13929566736 +18514451318 +18555639902 +15809985193 +13623676744 +18880548035 +13943276302 +18868258989 +18898459638 +18804596795 +18584600868 +13684306664 +15875279615 +15854692682 +15837994348 +18561698044 +13947148652 +18818047824 +15184700786 +13642017939 +18880862665 +13623779222 +18574191292 +15826337156 +13901993838 +15831048187 +18895137798 +18849151466 +18881281320 +18526588957 +15167156905 +13668684619 +18589195760 +13633364345 +18524187621 +13995070789 +18849605537 +13652608983 +13981216659 +18553505786 +15120806724 +15839666384 +13615276795 +13616706228 +13965940772 +13649188553 +13602048048 +18808020456 +13929867372 +15865201613 +15838749713 +18529270610 +13669247666 +15116307342 +18595229306 +13681215806 +18591422550 +18848696608 +15855128698 +13931183292 +13661633514 +18854469891 +18889944296 +15891200283 +13953036476 +13663465573 +18502774819 +18879298779 +15157117891 +15822861641 +13613257079 +15124666057 +15824653117 +13950782769 +18807095095 +15126333150 +15174412663 +15169545511 +18827009876 +15192793689 +13670284382 +13918984352 +13946489988 +18522669742 +13668428024 +15877799116 +13925631137 +13968260218 +13988907679 +13908933855 +15179667679 +18845964177 +13636729409 +13932627244 +13656702257 +15188245661 +15868411379 +13686969923 +15158242919 +18804200480 +15812786012 +13680811817 +13645596831 +13609480622 +18855616217 +15172907697 +18850509866 +18561850428 +15890730602 +13940896586 +15869852727 +18530787781 +18553048247 +15892569251 +18840166331 +15117022121 +15852912813 +18524204146 +15821983624 +13653103863 +18808260379 +15168749925 +15161416709 +18584725833 +18557670378 +13696468628 +13939111715 +15875828241 +18859966756 +13699630948 +13985713536 +15843030531 +18567632824 +18532923116 +13942939140 +15107213203 +13970140489 +18584074392 +18827545620 +13674079221 +18552588635 +18811491799 +13915717370 +15114752884 +18566832020 +13979026347 +15873503889 +15890496146 +15811851955 +15150461511 +13902696052 +18582397676 +15111028094 +15843963486 +18835981794 +15865381665 +13923119967 +18511258247 +13908476841 +18514819540 +18826876300 +18818464998 +18823471521 +13610933904 +18851795945 +18583781564 +18560343100 +18856328238 +15118425490 +18501789442 +18811978853 +15164756224 +18594669097 +18502689435 +15191524223 +18506652296 +15188597875 +18522540998 +18511700050 +13912927317 +13625123489 +18865254520 +15124705154 +15194880108 +18576116607 +15878125143 +15144245604 +15812345543 +15859262285 +18816008662 +18815231719 +13694308932 +18503935074 +15801228533 +15812997402 +15877503863 +15149073425 +13970993105 +13927399742 +18594730984 +13612969260 +13626474318 +15136184484 +15815002896 +13916176556 +18534576973 +13909401635 +15867308582 +15107476037 +18534716559 +18543051899 +18592813889 +13902156804 +15803188745 +18518985584 +13621251875 +15810796789 +15109890040 +15862875821 +15888366947 +13687106784 +15865682881 +18573194746 +13934980383 +15142378062 +13639472755 +18872455491 +15185067828 +13911605118 +15194821273 +18878406730 +18850166045 +18824431209 +15121547810 +15177588386 +18869160234 +13951286070 +15102707110 +18585788472 +13944663219 +15196825979 +15898259673 +13997535471 +18823738001 +13689375556 +13911510864 +15193791467 +15112038071 +13692417835 +15865005424 +15105101647 +13696536620 +13953016390 +15101194215 +13964947779 +13991738142 +15189305799 +15804546119 +18527105289 +18584909358 +15855985455 +13615665197 +13624089298 +13939621769 +13906233161 +18831311435 +15154819529 +13699418822 +13937091955 +13658530929 +15884706133 +15111666391 +13658263502 +13993213287 +15116063203 +18510674739 +18563590428 +15129394728 +18541454889 +15812754515 +18567838824 +13974823561 +13684510699 +13990471846 +15804185436 +15193115243 +15130512323 +15167154180 +15149328912 +13928816133 +15181520354 +15889770044 +15842317697 +18875567952 +18803481217 +13989333642 +18848867296 +13614678830 +13933834328 +18829588648 +18572511573 +18868549130 +18528473976 +13982977575 +13929884220 +13908512465 +15185575631 +18863049691 +15831189762 +18560856650 +15803730240 +18802218424 +13953810571 +15898172760 +13647143746 +15865600714 +15117910926 +18506217048 +13995255510 +15867592528 +18557590733 +18802032393 +13911625615 +15855399798 +18850100285 +13973871687 +15802577702 +15864696072 +13605562385 +18881297443 +18854671538 +13929700879 +18870668842 +13631397048 +13645511136 +15183232870 +18573994113 +13675494041 +15148375074 +15870722113 +18551956751 +13650543273 +15855512729 +15832359091 +18824029616 +18810223441 +15195937992 +15847539453 +15108767223 +18506264238 +13693793289 +13953079535 +18554249525 +15895193990 +18569362594 +18897229689 +15860568022 +18878803694 +13923110560 +18848018224 +18513707321 +13629302446 +13634816403 +13934306670 +15180174688 +15102232059 +18548084916 +15184340801 +13998016432 +18818689335 +13692398150 +18553088671 +15113536752 +13602149542 +13689138167 +18857201136 +13943565981 +13624159096 +18503667774 +15831301308 +13951065630 +13640682153 +15884312164 +15175208038 +18805451411 +15116618305 +18899437346 +18508073523 +18537132401 +18841088183 +13659787151 +18517445268 +13973994778 +13619609920 +15159673653 +13613888439 +13967099496 +18587395302 +18873145487 +18864989362 +18517161751 +15895474465 +18837325898 +13688108474 +18507788987 +13697162571 +18822306934 +18833690927 +15896609662 +15886103117 +18862738572 +18805474612 +18526511180 +15187563250 +13977621338 +18575303958 +13901062259 +18579568950 +18891516922 +18558888443 +13977481968 +15822646912 +13601658329 +13998238853 +18856380895 +15136457442 +15882867606 +18588116297 +15892624825 +13675773247 +18826303765 +15160096729 +18514546645 +13900652638 +15885193373 +15163900221 +15888508858 +15116423311 +18831591706 +13915106660 +15193836821 +13934356762 +13946289872 +15847969637 +15889224950 +15826985971 +18866276424 +13981168451 +13961758113 +15856746289 +13909939729 +13648315904 +15822275757 +15831166238 +18573354265 +18506200910 +18847433394 +15115944728 +13943923521 +15886751848 +13684603003 +13983280770 +18828797002 +13685498030 +13602009479 +18802547198 +15149902520 +13692740069 +18815067761 +13924568440 +18866877378 +13980862406 +13960085062 +15863348013 +13993187951 +13682084725 +15140571427 +18801677418 +13915787538 +15841112059 +18807334807 +15161615188 +15125023001 +18589731863 +15898223515 +18576079487 +15835969651 +13665082841 +18819464669 +15145128105 +13984984975 +18533614522 +13614010599 +15130565680 +18893119666 +13981336636 +13623751080 +15892911962 +15840305865 +18548909080 +18806985819 +13623840755 +13966533185 +15179210942 +13904816477 +15874079243 +18587014170 +13965998188 +18803293946 +18510128646 +13905682299 +13696303639 +15848699576 +18536194618 +13933011313 +13992823928 +13952746743 +13926126527 +18824260105 +15818642361 +18848846268 +13902328733 +18824084409 +15895443298 +18878842798 +18865050245 +13921607541 +15817381207 +13669521145 +18539852620 +13682058768 +13951806566 +13983548810 +13640332374 +18530711089 +13960412546 +18583964542 +18531379646 +15105800853 +13651461205 +18588055912 +15817762687 +13649381794 +18560993595 +15160659563 +18558654675 +18826108951 +13965125445 +15121925323 +18518943067 +18868931169 +15833386167 +18593661068 +15888560457 +18839103198 +18567491523 +13627635593 +18511088805 +18893723635 +13632653737 +18879891115 +15172086467 +18569571054 +15852072253 +15894784723 +13960038109 +18548739828 +13994047143 +13946151613 +13695019169 +18573579619 +15858482615 +15116201044 +15192764145 +15840079275 +15107151094 +15850787526 +15899847815 +15101663668 +15108437829 +15145922267 +15179656233 +13630928476 +18541098677 +13620848501 +18564307862 +15138826738 +13911017048 +13999691134 +18838474399 +15816643445 +13927490070 +18811329904 +18596278189 +18504695340 +13938972983 +15195020931 +13611276842 +15160650277 +15818672814 +18576948794 +15198654071 +18551748794 +18581995865 +18588638681 +13650895259 +18867971075 +13696169724 +13640723037 +13685350635 +13601267565 +15180458141 +13930121700 +15115332357 +15838311005 +13625345364 +18569372756 +13951047142 +15843343021 +13964504393 +18882393526 +15146644923 +18865476078 +15134658893 +13926652656 +13668892356 +13993887396 +13661530656 +13985773063 +15176521272 +15172401319 +13605975481 +18565854488 +15804734050 +18829252813 +15812889675 +18561720062 +13909202545 +18521454100 +13944703976 +13991706522 +15855994454 +18540039937 +18518809027 +15803086065 +13917695869 +13952271650 +13940215219 +15853248361 +18562204277 +18530947746 +18819220383 +13621826364 +15140069915 +13608890273 +13946843689 +15128823699 +18860654512 +13693316013 +15103206938 +15122846235 +13608259387 +13976305397 +15810377947 +18892578330 +18826916239 +13653419787 +15845969932 +13602178040 +13667271237 +13943392362 +15194478306 +13691600420 +15818393930 +18520600347 +18527711699 +15815355620 +13980378350 +13610909145 +15892754590 +15100843728 +13652212039 +15112244105 +13996011509 +15145490684 +13697544871 +18594654277 +13950523002 +15107161676 +18517532338 +13904651792 +18879981000 +13663529391 +13621968151 +15109713960 +13621420810 +18599210508 +18516202764 +15149679008 +15137467466 +18578804793 +18594424994 +15184425015 +13932287479 +13928367228 +15810864447 +13958977237 +18579618713 +13615682976 +15182413718 +13922255535 +15818428432 +15183540712 +18814091805 +18588357432 +18884927595 +13622255070 +13618216818 +13973363346 +18844724362 +13623377809 +15139610138 +15866246765 +15879831654 +15807686298 +18596298392 +13997969037 +18557376165 +15898526355 +15161198322 +18858633732 +18524047307 +18871385542 +18510828924 +13699458774 +15840191876 +15136385666 +13980471052 +13979477466 +13618703335 +18876360227 +18822301898 +15824487990 +18568767067 +15831680707 +13955839752 +18854532609 +13677169211 +13680744197 +15832658975 +13616295375 +13982973542 +18529816645 +13992440570 +15887133300 +15868875687 +13929993941 +18802323181 +18893417422 +15128035501 +15156628619 +15851972859 +18817336373 +13947483595 +18595291779 +18896412554 +15120449780 +15898433284 +13631044152 +18816793191 +13919453977 +15853055730 +13944167650 +15808177052 +15894642908 +15866967729 +13915006633 +13942508866 +13604715954 +18542362670 +18835109869 +18538224071 +13691328547 +13665961241 +15860489293 +18585053725 +18802099398 +18521963298 +13685981899 +18845525877 +15167207278 +13937689576 +18810920727 +15193531401 +18833707703 +13637645817 +18596730921 +18822068747 +15853998383 +15177301978 +15194245720 +15130884368 +15819471870 +15876743275 +15810012950 +18802403092 +13965679708 +18865762595 +15151533957 +18557624834 +13903071403 +13936167510 +15147374151 +13622042184 +15136952912 +13926222605 +15894110230 +15113603218 +18552642927 +15178176307 +13661788058 +13645253248 +18808587351 +13692514879 +18592789716 +13924753393 +18818459049 +15843875552 +18866761187 +13621095440 +18525130473 +18598444738 +18506212816 +15146551005 +18860711767 +18877100841 +13672149647 +18898042772 +18874411551 +15831560647 +15119184556 +18880459147 +13633907603 +18881279937 +15869003269 +15159398679 +15895728396 +15112660774 +15816972507 +18570645995 +18561658718 +13912138110 +13977557025 +18881074635 +18598799625 +15175617960 +18837940501 +13665038632 +13965253437 +18538920624 +18889186965 +18535724673 +15157814504 +15856237517 +13696431781 +13682539078 +18841831733 +18871743032 +13917239266 +13673267767 +18523739204 +18599410651 +15137984199 +18855016005 +18508685323 +13667943725 +18503384491 +13985388254 +15867090059 +15838375632 +15885587639 +15108656324 +13958673377 +13974824767 +13912961402 +18557912496 +18590399459 +15842806419 +18533999171 +18567333302 +13631794290 +13669959570 +18500165242 +13991311901 +18590560489 +18574926452 +18870971533 +15892433413 +15886183172 +15811016775 +13958821399 +15884530046 +18562979441 +18847602320 +18527171466 +15815739751 +15188816964 +18820831589 +13910602579 +13999064231 +15820535268 +15897063920 +18519327766 +18503874560 +13675453979 +13678071005 +18883200843 +15818728644 +18893190727 +18892756150 +13648869569 +13671244807 +18517801127 +13645777918 +15148856850 +15177593026 +18856598218 +18567328922 +18547811434 +18534554272 +13986791167 +15125684818 +13694451653 +13968847283 +15810860519 +13667425752 +15888502838 +13943883523 +18855598607 +15117919618 +13688657108 +18535709127 +18858381356 +13920085868 +15852454270 +13950188312 +15117138236 +18835060022 +13687371280 +18574708738 +13904104222 +13992712020 +13688066102 +13696606225 +15834491666 +13965479850 +15107649458 +18511185971 +15873099040 +15845222857 +15845036201 +13976815154 +13643064788 +15822028659 +15194338105 +13905952724 +18873006809 +18825518548 +15102571898 +15163009029 +15183776019 +18809689970 +13654250971 +15137018848 +15896648862 +15132247907 +15880967541 +15153459654 +15854058436 +18875992885 +15145874015 +15867700358 +15198063631 +18831037057 +13603043825 +18598090853 +18551448665 +18583597858 +15166747968 +13698161389 +18808290275 +13690353647 +13999734618 +18819801373 +18554930618 +15103394582 +18835663095 +18862551159 +13615360253 +18806609454 +15821671410 +15177078183 +18890017706 +13983996809 +18833055399 +15868033899 +13995352074 +15829344550 +18862653387 +18506239922 +18881890936 +15850261174 +15183188697 +13919571055 +18807196142 +15109704458 +13929118465 +18860798112 +15147961137 +15152513120 +15801633910 +18898438570 +15191497652 +15803693317 +13691019940 +13966059118 +13648812911 +18851063823 +15810011780 +15159643058 +13655992137 +15860468925 +15185372101 +18581252774 +18818114877 +15803763080 +13646946793 +15850104175 +15136644321 +18871167628 +13695840303 +18884216447 +15143934615 +13997055868 +18802673772 +18810206110 +13947717406 +15875644339 +18850437334 +15129206717 +15819156204 +18831770636 +18882745514 +13657345498 +15187786122 +13922145320 +15834659276 +15836082561 +13942232632 +15185891382 +18841004123 +13613709027 +15872779132 +13628403017 +18812215714 +13668460450 +13613975991 +13908555510 +18852475222 +15803602913 +15873975714 +13976424926 +18883476203 +15136670067 +13913551204 +18890237639 +15830789567 +18874950566 +13659959002 +18879176831 +18547226587 +18878044804 +13699814366 +13950245076 +13940449875 +15882119368 +15174922142 +18831697293 +13635138290 +15862211990 +18869067920 +13632585009 +15105671458 +18807399845 +15835603987 +15824436443 +13983999774 +18894394961 +13683167373 +18527146501 +13918263348 +15837927199 +18562117084 +15158817658 +13612779018 +18562228709 +13671266169 +13951036334 +18549529033 +18844610633 +15178211456 +18837042917 +18520633427 +15187587221 +13907207979 +18890427132 +18814807708 +13961652841 +18521427273 +13990800615 +13900796159 +13612990783 +13699597686 +13915701858 +15843575123 +13920693303 +18526126061 +13995950650 +15851439102 +13966477315 +15137259334 +13641378421 +15187173689 +18841447202 +13691416814 +18860205047 +18847295027 +15896969001 +15855206922 +15827326345 +15104753562 +13901708257 +18588187586 +13612158257 +15830930326 +15175315338 +15130136566 +18542756229 +15119913591 +15165183665 +18594827171 +18524057201 +18507804149 +18574057499 +18573258972 +15840346931 +18542421193 +15134809186 +15871676910 +15141465624 +15122657070 +15142126561 +18522441090 +15892854422 +15114746415 +18845881533 +15148013134 +13904695489 +15854261279 +15130283306 +15814302158 +15880306729 +15114396412 +18887708788 +13618500207 +18595646351 +13921161720 +18571003487 +15842724651 +18593470108 +18894558420 +13625836544 +15117140323 +13968677663 +18808538994 +18507548248 +18559062795 +13614616842 +18839746796 +13992367049 +13697070954 +18580983011 +13966227848 +15191997462 +18812496819 +15175504250 +13635553409 +13997650420 +15833163531 +18836040723 +15821082023 +15109229034 +18518853254 +15137570910 +18527142091 +15102919020 +18892712133 +18566400276 +13670809240 +13669046509 +18539792988 +15100501802 +18518593190 +15874065454 +15886269696 +13912393392 +13641965243 +15186319061 +13957130968 +18575588111 +15141380979 +18509927507 +15164648039 +15893697798 +15821845010 +18559187355 +13914548709 +18578607937 +13972296814 +18830616201 +18556192748 +13959500255 +18588720728 +18501323373 +13911921465 +15819361951 +15845303941 +15144703792 +15886614941 +15199565210 +18571293321 +18858987103 +15867314427 +18578614123 +15888680928 +18545353463 +13659995755 +13943874690 +15845607905 +18510302211 +13911884069 +13931234774 +18829680190 +15877202301 +13636674222 +13639239173 +13951485679 +18557491553 +15160727282 +13689318927 +13970517483 +15160289062 +15899687941 +18806991899 +18889035487 +13944190330 +15134101682 +15817657063 +18847858935 +18585068233 +15822893676 +15165039532 +18810192978 +13689622535 +15832273855 +18552965384 +13682101243 +18542810958 +18528348326 +15169947071 +15113737174 +13955716606 +18523198765 +15152470578 +15885098543 +15166785922 +18877453353 +18831154884 +18874307011 +13699713204 +13639500042 +18504485679 +18867569228 +13610261293 +13952037328 +13632760086 +13917907203 +18523364274 +13961170600 +13617476797 +18869837629 +15122483434 +18828455800 +13643062189 +15164164703 +13691730891 +13608854412 +15188360395 +15134670329 +15199147357 +18546194145 +15151468383 +15159900694 +18887605650 +18826204745 +13685939878 +15845259672 +13981351883 +15833880894 +13926590434 +15802370431 +13972676468 +18531485658 +13628470271 +13966337770 +18555094436 +13630378170 +15181100511 +18512388677 +15179955550 +18501943277 +18839559897 +18529240253 +15810248845 +15123652295 +15148144100 +13623427050 +18833925173 +18581034101 +18876881255 +13980631201 +18557145174 +13913744221 +13961328179 +15159232149 +18820400185 +18821586956 +18809985421 +18872620545 +13952241739 +18853639297 +18891789989 +18582652751 +18579395574 +13977819893 +18536063230 +15140717181 +13660806884 +13918585228 +13951352902 +18872395346 +18856095610 +15132572353 +15888991481 +18521381279 +15883537932 +18882508978 +13970654769 +15894858978 +18550574755 +15112560542 +13630306240 +13637937327 +18503476122 +15838967694 +15153108678 +18515703649 +15804239610 +15116327327 +13968140115 +15127547260 +18867516681 +18510416564 +13638207644 +13643120812 +15114637517 +15145144160 +13612608807 +15814461146 +18859621998 +15866371715 +13927587104 +18523635133 +15186731780 +15190958281 +13688052114 +15810790453 +13962604988 +13933674472 +18517279097 +13640385868 +13668384361 +13626220329 +18590081563 +13925968618 +15812213620 +13698934246 +15140254559 +18856454440 +13607573228 +18870427989 +13674860364 +18546005075 +18849101584 +15186802120 +15873227949 +15806408749 +13608649905 +18544193957 +15888266347 +18528632657 +18849054524 +18895830095 +18810743860 +15169392591 +15169050287 +18899715673 +15866542716 +13906257075 +18879072605 +18504349554 +15848105768 +13681155606 +13964435749 +15824480088 +18889113093 +18845271286 +13988410862 +13615819963 +15886735307 +15854688234 +13993122153 +13994742242 +13957221573 +15176664764 +18560866996 +15840860373 +13930424249 +13625438550 +15871636829 +15864917695 +13625746316 +15140261665 +15893571010 +15889197359 +15841451457 +15128202343 +15129461524 +15154711982 +15851820640 +18503328305 +15871448757 +18537270770 +15156805291 +13669041887 +18859900238 +18576898619 +15191852101 +13659992655 +13630317017 +18834244436 +18887406509 +18565501872 +13663808783 +15817900486 +13660423354 +15894887156 +18823018124 +15105357146 +18833073542 +18529426917 +13677622306 +18812430256 +18820558169 +13677966049 +13656595030 +18882538981 +15815129183 +18808456266 +18877513274 +13942547654 +18580254689 +13646470882 +18860719948 +18517122005 +13657726132 +18814239522 +13660746655 +18893825317 +13904636058 +18567999999 +15170057200 +15849234489 +15187707203 +13691215723 +13670016521 +15849958118 +18553300978 +18517256350 +18889234446 +15145334837 +15895537469 +15878526408 +13938997448 +13625476722 +15152103984 +13644473803 +15101339787 +15871605418 +15166646010 +15135962142 +18852304849 +15142015137 +18809250531 +13948583404 +18517877643 +13638395409 +13998665255 +13973106234 +15192325028 +15149156886 +15860731928 +18896445349 +13685049086 +13912512199 +13944750858 +13688754756 +13612833762 +15178319490 +15881769205 +15861083039 +13634272418 +15161051064 +15145834243 +18536974132 +18505913093 +18598686556 +13664290910 +13985889595 +15197139928 +13661276910 +13937984657 +18506853345 +13658929445 +18866395798 +13975139351 +15157578556 +18897727607 +18832142517 +18840665884 +18525979811 +18552950138 +18827055136 +15883508120 +18843210724 +18816897675 +13903479607 +18583291537 +15885291855 +18503726295 +13615995795 +13681834300 +15154398966 +15108174032 +13902828664 +15176712081 +15832822228 +15111327594 +15894359375 +15184381410 +18813007742 +18595472499 +18584852586 +18591561643 +15830658111 +18833369148 +18888709309 +13635560279 +18879540044 +15189627995 +15116110048 +13982938976 +13999100432 +18805452111 +18877455856 +15180448152 +13621523573 +18847049522 +18566467103 +18581154022 +15892021227 +13684117959 +15185682532 +18888540845 +15886277221 +18510617440 +15137638438 +13902440766 +18520894019 +15191405560 +18818693812 +15834108572 +13965050475 +13931271543 +15897439787 +13675333969 +13906912037 +15118885297 +18853192616 +15188980979 +15888991863 +15889074534 +15154756472 +18590880234 +15877798076 +18832407301 +15104526435 +15853967899 +18566961476 +13933075927 +15891990969 +13676684352 +15887513068 +13971691826 +15813450460 +18831675199 +18595468222 +18863622253 +13619431432 +13995545050 +15888217010 +15855908532 +15120299491 +18873830818 +15818613104 +13684974787 +18514999919 +13931127448 +18544034279 +13614048107 +18872626109 +13957808096 +13692699295 +13986651198 +15148258908 +18815198920 +15864797019 +13992696996 +15851436999 +15146098638 +15122786227 +13918673458 +18557478352 +18815613127 +15863600162 +18849856058 +15839437780 +18555509001 +15866289498 +13908762200 +18825692912 +13699687292 +18548577185 +13611174524 +15196390592 +15844115598 +15130720603 +18879480218 +18815245350 +18867281396 +18838202760 +15828542015 +13985482875 +18528323531 +13629797642 +15106074656 +18538051559 +18880245001 +18587301628 +15135452839 +18517967577 +15123425092 +15186164617 +18830192600 +13621040721 +13675600749 +18567858694 +18563802028 +13649226086 +18590991122 +13601291185 +18507953160 +13649488388 +15169846322 +18512360762 +13959289277 +18519708365 +18514723649 +18895707951 +15837331559 +15171054288 +13949803275 +15868872811 +13989340612 +18527270026 +18873299367 +18883790884 +18511884339 +18587669583 +15870507622 +13639747155 +15888202848 +15829456213 +13602281989 +13650133459 +18808578852 +13948764086 +15827358977 +18558805737 +18555338224 +18899852963 +15813217574 +18552892567 +18899425313 +15174871533 +13905927911 +18547257447 +18574101162 +18855313345 +13660790023 +18533655625 +13699887248 +15846340625 +13603627672 +13603860293 +15856880158 +15130429444 +18883719875 +13908379347 +15152172816 +15169045431 +18510619067 +18574703030 +15866616947 +15823129567 +18593946391 +15819829321 +15880940757 +15154548882 +13623592694 +13901377257 +15191077428 +18511512894 +13645028523 +18847383534 +13696526784 +15168046830 +15157089563 +18599513509 +13607530606 +13965178182 +13627882681 +18831573006 +15192120243 +13623050887 +15835840617 +13670801373 +18599106845 +18820053702 +13679535678 +18870442249 +15813844948 +13616382022 +15811281396 +13640611624 +18525334121 +15198594389 +15815930592 +18853129458 +13606252596 +18834954682 +15155615012 +15873257908 +13920649210 +13951353403 +15861525299 +13911374907 +18513798298 +13644314090 +18590699212 +13692435317 +18544730730 +18523354001 +13920516449 +18841414785 +13961828067 +15806521733 +13940470209 +15107238255 +15830492416 +18805628672 +18527254030 +15893053973 +18542763361 +18579437330 +18532328284 +13908662762 +13937601265 +15123037490 +18528725448 +18820112605 +13601420307 +18575189028 +18587723228 +15845061893 +18830343857 +13918448126 +15105485519 +13674968269 +15882518013 +15134354298 +13682313342 +18522804155 +13973763040 +15888636576 +18528434086 +18876342834 +18844027684 +15873243622 +13944741199 +18880796882 +13663070944 +18524739956 +13987051050 +18553595650 +18568910639 +13980059248 +15160544699 +15856418382 +15119073598 +18587194222 +15804339764 +13641035255 +18546807947 +18581932304 +18503500595 +13608821792 +18889603098 +13648830924 +15173367444 +18530394925 +13621168412 +18587981371 +13983671907 +15862359539 +15144035258 +18549248662 +15805803167 +15188361183 +13677428011 +13688467023 +15877033501 +13671086122 +13659475548 +15150887532 +18514719335 +15166943592 +18867828163 +13616548127 +18891210945 +18809007396 +18849380988 +18844340769 +15120105804 +18812147559 +18899901799 +13924951029 +15165261151 +15833537782 +15852893338 +13657694605 +18801984948 +13911420231 +13643060498 +18580540438 +15154926138 +13906477990 +18552189711 +13934403153 +13611613345 +15190427704 +15156493080 +13942598212 +15867319972 +15187510065 +15861666822 +18590816649 +13619918345 +15802479348 +15110697904 +15847849104 +18889410065 +15186480367 +18587428746 +15101408607 +18543146276 +15123875457 +13952165215 +18591975366 +15802665556 +15897223137 +13630502545 +15806574439 +13945375645 +13904863647 +18578570898 +18855750859 +18504140082 +13619470280 +15869006954 +18848797011 +13645664483 +15896276737 +13640619175 +15100797919 +13625230405 +13667947165 +18800496222 +18517239376 +18855206020 +15865839531 +18861496171 +15193341538 +18553880819 +13658946475 +13656193672 +13638788216 +15824693663 +18578114147 +18577206952 +18534146417 +15854562604 +13962997228 +15884337859 +13948717347 +15165045662 +13963940169 +15826186737 +18873336844 +15121066343 +18805805219 +18532097641 +13638670068 +18565257774 +15169452906 +15849313631 +13955474955 +18510372895 +18812368010 +15884297155 +13909049575 +18533961724 +15157082678 +13983628649 +13634889782 +13949399657 +18577652388 +18591287210 +18890081949 +15151103321 +15898756390 +18880107156 +15832890819 +18587090704 +15835327965 +18891139881 +13624588107 +18868756259 +15153966187 +15856880564 +15816190360 +15150216997 +13669627576 +18852600648 +15817078014 +13964514189 +13969190359 +18889678232 +15145154740 +15100719110 +13647960360 +18850970969 +13964201464 +18840355146 +18886695598 +18873625928 +18864906612 +15889295568 +13943465443 +15183006033 +13633867486 +18542109764 +13604037031 +13603246885 +13693673709 +15144144132 +13915517356 +15858172108 +15855913872 +13975257360 +13625072697 +13671066072 +13671463462 +13698278621 +13919157376 +15828312627 +15183542438 +15127507326 +18803044942 +15895988741 +13991298973 +18598564114 +13992122083 +15133022673 +18879725566 +13624847981 +18590592280 +13648586642 +15832498059 +15876053962 +13693320744 +13959433278 +18849918763 +13973111062 +13976019192 +18516651550 +13625975496 +13650420647 +15852833329 +13923101431 +18865199787 +18535947764 +15187983632 +15139984145 +13687859104 +13957308062 +15176145013 +15868749477 +15891277299 +13990910853 +15198924932 +13608184857 +13961227459 +15890516242 +15848989695 +13961091606 +18857125851 +18596232154 +15155033321 +13900963761 +13957422376 +18875114619 +13674037262 +13679470552 +15152682275 +13668561039 +15102004662 +15872886701 +13644694335 +15877111740 +18812923450 +18521877591 +18553038941 +18828180151 +18557782343 +18593425400 +15161263604 +15848374626 +15817439898 +15835073763 +15181931658 +15899446220 +18589880753 +18545787950 +18585960473 +18845102210 +15877929251 +18503126198 +13648248831 +13625352306 +13669660090 +13956884583 +13947130779 +15836024663 +15192593270 +13957500104 +13665120724 +13913361691 +15844188800 +13698588224 +15846427216 +15107887231 +15857283406 +15135798746 +15166443146 +13933968427 +18873212094 +13924373054 +18583321586 +13934181045 +18531350913 +18550876915 +13962438577 +13962197537 +13604607275 +15198341818 +13652983982 +13919739854 +15175245633 +15875046494 +15173895799 +15128440455 +13917981349 +15114106916 +15869196919 +15160797364 +15806435433 +13936493579 +18590824227 +15814250688 +13695267419 +15139016241 +15184961537 +13961006709 +18595808275 +18867737787 +13961894343 +13628561329 +15112990180 +15121142702 +13636836174 +15144019636 +15858969134 +18580193289 +15889201128 +15157891566 +15817946866 +18831666571 +18879431033 +13691134461 +13909995770 +18502485160 +18586955181 +13980267091 +13903402487 +13618529456 +15168961164 +18528222251 +13941607216 +15164919897 +15890544872 +13609599409 +18896205058 +18548512379 +13653248903 +15116830707 +15127264799 +18840509440 +18593522799 +13607793440 +18825450004 +13945326085 +15898150300 +18886039808 +15850178951 +18870641498 +18544061936 +15159641476 +13952892192 +13939928904 +15816318279 +13981132744 +18573151519 +18554854374 +13964133007 +18877072587 +13949655643 +15199885438 +15876792761 +13964091151 +13675067174 +18560031996 +15870541892 +18523264850 +15840104178 +18551927077 +13647502902 +18857184059 +18800044045 +18801314499 +18539274478 +18850176302 +15891593837 +15810186686 +13980390392 +15828106871 +18883408586 +13971726391 +18814585856 +13632024198 +13630812738 +15873669317 +15137274491 +15116664039 +15179778843 +18550051475 +15874266673 +18849278175 +15186094018 +13969320430 +15195978860 +18863935062 +13966722679 +18584556861 +18811291939 +18809359957 +15894675606 +18836673535 +18549064723 +13922317946 +18560895985 +15104146709 +18870128010 +18856242503 +18599560050 +18841997638 +13668310087 +15844299987 +18819001128 +18523190808 +18516573814 +18518415674 +15145612298 +15192704307 +15892332829 +13923133436 +18867174839 +18575477729 +15853357599 +13954329811 +18834029340 +18593422387 +18507947322 +15128901095 +15144539008 +15874584636 +15843831033 +18886605948 +15139260609 +15128232414 +15880815547 +13650056456 +13694934819 +18829336656 +13625898334 +18851254226 +15889565461 +15899897033 +18590905229 +13920714642 +15892220275 +18848453054 +13622736699 +13608763811 +13997312234 +18584832752 +15839565834 +13667561210 +13669525839 +18843410804 +13946870319 +18896990122 +15114231396 +15183484034 +18568522569 +15844225433 +13961836500 +18518686848 +15158646980 +15869763554 +15136576140 +18828052685 +18591211087 +13990243345 +18506261193 +13924177259 +15141596039 +15178355379 +15158305308 +18884976979 +15885758536 +13665070257 +18558159074 +15889014677 +13667663808 +18554421459 +13961124216 +15849549056 +18506749426 +15146383313 +18871329934 +18534205519 +18540967561 +13992789015 +15143880215 +18539505609 +15132894371 +15881661649 +15825910395 +18521128256 +18897906174 +13996538837 +15826910066 +13937518330 +18830086042 +13645738160 +13603641251 +13993769795 +13621753579 +18513553233 +15179709092 +15822295611 +15866642977 +13653221631 +13605486463 +13667668123 +13920478692 +18566453710 +13922546534 +13914405531 +13643725683 +15891775500 +13682060549 +13959605360 +18894517894 +15870049033 +13687737319 +13639450009 +18804521975 +18825211176 +13601972813 +18841428675 +13933295439 +15158406367 +13660755045 +15115276423 +13662401604 +15892126891 +13676673695 +18513581271 +18824586420 +15120060513 +18516558603 +18821089512 +18875368178 +18811103796 +18537976041 +18554481946 +15855610020 +15869071730 +18503144195 +18579187632 +18851351041 +18534711697 +13959299038 +13908293027 +15105982206 +15811419109 +13613571724 +15804398336 +18861391645 +15822755533 +18568192695 +15873510915 +13938438548 +18594595096 +13678438352 +15835810110 +18850961645 +18521804587 +18822296446 +15111914741 +15134575823 +15167111342 +18868773788 +18577408439 +15177259567 +15884274085 +15808772971 +15846975279 +18889108456 +13972606540 +18595047924 +15133058137 +18896625283 +18888209911 +15868705046 +13634948861 +13931333935 +13911759491 +15114161262 +13958778013 +18532981471 +18885288055 +18854867886 +18827338672 +18848732243 +18522307909 +18855351071 +13900896488 +18893345666 +15143498761 +15154669957 +18828265645 +15157699591 +13915932469 +18544007110 +15166449276 +13935204483 +15163051212 +15856044485 +15872047010 +18844493859 +15804073297 +18591255030 +18503891656 +13964281139 +18852194836 +15179101088 +15864580343 +15149812693 +18548536332 +15142848095 +18899067058 +13604106220 +13685581455 +15856487335 +18800656720 +13963219859 +15188335906 +15193796018 +13907831986 +15126797799 +13921563432 +18838916347 +18834735664 +13606466016 +13632389136 +15184494821 +13608661026 +15166473504 +13684954866 +15159481951 +15883968712 +13686044755 +18828239480 +15164896955 +15181169254 +18839862359 +13923980136 +13932780405 +15151337827 +13942643987 +13985743929 +15800736558 +15809268568 +18872007699 +15880998532 +18581391299 +13684461015 +18554308179 +18533951860 +15867965283 +18566753916 +18537975355 +15175088498 +18877195939 +15869117054 +15134015057 +18832510816 +18810740021 +18576180801 +15898692655 +15159023746 +15147281977 +13929832727 +13912612021 +13602005334 +18811420869 +18875212041 +13927872128 +15806899771 +13635857702 +15197093531 +15139787041 +15833499112 +15842879108 +18509718456 +18522989276 +13691731092 +18874250734 +15162567749 +15125166208 +13641557955 +15187387921 +15152796958 +15116612272 +18863847786 +18894729630 +15135065340 +15123152662 +18596055051 +15862015101 +18856805512 +13934283995 +18826759778 +13623725659 +18873322049 +18501640186 +15851594105 +13922864562 +13608696724 +13960898829 +13690974944 +13669785211 +18823128214 +13613447234 +18581264675 +18558629306 +18504497657 +18890862793 +18541858779 +15109372906 +15866384492 +13991718407 +18535244144 +15132620515 +15149116300 +15858847932 +15123995174 +18545553940 +15132421107 +18565230416 +18537401876 +13613603997 +15876369241 +13929989305 +13993686316 +13940509357 +15173648963 +13620014423 +13661208212 +18876210340 +15107696186 +13682479512 +13980670346 +15110583120 +13925378553 +18593260973 +13917846711 +15156070308 +18870241617 +15864661607 +13693686043 +15108880497 +18593498385 +13902588551 +15896731187 +13612754583 +18515024468 +18842435504 +18573806273 +15885859092 +15102913790 +15802166961 +13903480471 +18521341190 +18873976849 +18534676093 +18814633855 +18828402974 +13648942220 +15123752335 +18584218597 +18841850154 +18894395647 +15122675191 +15161239429 +15829030945 +13990944537 +18503441145 +15829760793 +18867381024 +18858831065 +18872106675 +15160068599 +15129772440 +13679226718 +18507133249 +15807498592 +18871579645 +15141604894 +18831521721 +15893364078 +13673137608 +13991332355 +18551221152 +13636942038 +13970426920 +18806186923 +18557857918 +13645819121 +15132581960 +18892722469 +18572688007 +13935237133 +15159891520 +18599045033 +15831426598 +15142829212 +15196302436 +18557066549 +13969816800 +15105397608 +18543472381 +18859387741 +13994717608 +15142942408 +18859925579 +13996504743 +15894330267 +15827918755 +13908009863 +13621651440 +18881574103 +18801889961 +15828899847 +18829414745 +18519369594 +15142096723 +13671822455 +13663356828 +18807802952 +13946972103 +13647996648 +18899599352 +18598481995 +18875531023 +15125197986 +15877954512 +18896199569 +18888509185 +13940560108 +15881185836 +15173562675 +18870467535 +13687307030 +15897937935 +18547405306 +13677134382 +18847780354 +15165054729 +15854796181 +15147443029 +13990245560 +18537288125 +13981711482 +13970959607 +13976256099 +18890200869 +15132327045 +18804540917 +13927060780 +18587662224 +18874852011 +13976289115 +13909995384 +15892258944 +18809647737 +13967241538 +18566989851 +13610080179 +15881787668 +18577677911 +15178542025 +15135395716 +18527558110 +18838990168 +15129862900 +15863784581 +13973778835 +15137585482 +15822185928 +18520067796 +18845410392 +18593029732 +18808372599 +18505704734 +15849253550 +13699973021 +18588239069 +18819042866 +18504867287 +15884412630 +18533546714 +13678213095 +15151848320 +15145372211 +15815735540 +15147021994 +18850164541 +13937827849 +15828090539 +18531825586 +18517667398 +15806768571 +15824121714 +15865959244 +13607521431 +18858188242 +13623068851 +18533497173 +13679270303 +15190005880 +18538497631 +18567823295 +18842528955 +18579472513 +13945100965 +18833756303 +13670761102 +13996994332 +18807406977 +15853491371 +13948575913 +15826667565 +18543799343 +13987790071 +15164578904 +18588978790 +13683466722 +13902215752 +13688049438 +18889027089 +18558086553 +13640605893 +13635293492 +18868455016 +13696802628 +13670531609 +13965996091 +13901818350 +18540100588 +13612169821 +15893261754 +15801168414 +13664205609 +15176903182 +15115882446 +18585645795 +13611576452 +18803615568 +15139427692 +18883328420 +13604036391 +18505518605 +15175740370 +18501538498 +18590195011 +13691444082 +15892252976 +13998558901 +15116218091 +13986125807 +13635763260 +15104097419 +18870517235 +13997136600 +18868430676 +15899815362 +13638783978 +15156286278 +18878385143 +15123682621 +18547447958 +15166314030 +15865043630 +18836201496 +18563589786 +13976269616 +15160350378 +13602248215 +18534745218 +13985964713 +15191871256 +15899060771 +13989430374 +13693099370 +13983439994 +18547365249 +13666492918 +15833053224 +15808678663 +13662027168 +15129339610 +13923192072 +18531374403 +15143552641 +15125421369 +13603060288 +18554748290 +18865241511 +18832693386 +18534103158 +13959497905 +15101649376 +15177848985 +15141281647 +15899701723 +15885114147 +15158768748 +18566596183 +18592022696 +15120200136 +18850817119 +13950436660 +13690582324 +15879294311 +15103676077 +15159800630 +18556517088 +15136131034 +15811485534 +13911236269 +18807766815 +18894612085 +15136284463 +18865447242 +18523461849 +15127873092 +13944420499 +13973882159 +13691168506 +18837527398 +13950191646 +18851419644 +15137285289 +13938297637 +15130964087 +13686203746 +15189086180 +18526452645 +13648655487 +13657813788 +13945789341 +18555446378 +15144057487 +18507676140 +18880337029 +15107653415 +15857540250 +18577764022 +18547927718 +18818426842 +18840239191 +13994766647 +13658499985 +13965585953 +15117846045 +15138062725 +18821952282 +18572055568 +18824917895 +18543592995 +18554214139 +13911940870 +18518211872 +15873629077 +15129806732 +13676078132 +15883622047 +13926179177 +13919762493 +18852601516 +15836504022 +13974865820 +13666964295 +13923283442 +15104309744 +18556509327 +13967397761 +18580885346 +15845437095 +13910999059 +15103397487 +15883886198 +13684520769 +18813937698 +13645920703 +15832703888 +18807541619 +15833704663 +18893784109 +18825263179 +18818528345 +15118332560 +13955025400 +13982910947 +18852192011 +15863250291 +18840416336 +15148973068 +18888804675 +13679870449 +13967457012 +13936762780 +15803869199 +13996929184 +15192655520 +18846182819 +13973300801 +13654785716 +13609682787 +18898311197 +15148387133 +13906137283 +13668583145 +18513094949 +18864533006 +13627590119 +18512082129 +13959118005 +13620783132 +15872696697 +15122910271 +18510589645 +13994076228 +15119991199 +15839363370 +18885372670 +15877473959 +18870405597 +13655784657 +15845757369 +18883866052 +13604817129 +13916655270 +18551310092 +13903946152 +13927692575 +18552300077 +15130592716 +18529831539 +13908585652 +18860023750 +13656023219 +18897286193 +18594012897 +15803654388 +13694793440 +18577510217 +15882661259 +13974198278 +13919745042 +13609681325 +13991726972 +15147557932 +15154366701 +18843459561 +15816417075 +18515514827 +18500493280 +13639127526 +15803482573 +13959501326 +15154212387 +18592036680 +13662002192 +18536791987 +15853813089 +13948908459 +13615964394 +15873558820 +18551728666 +18511482851 +13637228653 +15174342774 +15184216721 +18533969573 +15128565517 +18865864683 +18537269053 +15838458598 +13922082770 +15199605556 +15831955595 +15102975893 +13994678731 +18572619930 +18891662082 +15112512490 +13920815798 +18517486777 +13914205225 +13920858704 +13908128675 +13932525979 +15851202981 +18870216407 +13935680787 +15846014178 +18568174677 +13650998218 +18809635606 +18807853712 +13941001466 +18836233333 +18557748331 +15826742847 +18847336473 +15855174196 +15138357800 +15819353407 +13658049196 +15169074475 +13964863676 +13627068897 +15162866156 +18520717366 +15185263762 +18537499768 +18511178674 +15828699717 +18541620779 +13900897023 +18573125620 +13997004811 +15199278610 +18538762121 +15873881745 +18592665272 +15892710365 +15186802597 +15193042440 +15135249764 +15885507522 +15801090853 +15104425046 +15893598291 +13945898802 +13669463635 +18570399679 +15808299625 +15870448964 +18509178804 +13934889931 +18870304522 +13971262137 +18815681954 +18585965479 +18874567440 +13662931701 +15853533835 +18887073375 +15857465273 +15833577489 +13647487151 +15171748657 +15165785921 +13602171420 +18822572792 +15162076176 +15103846062 +18817199120 +18848229617 +18577946663 +18546136545 +15845579159 +15829677955 +13926186316 +15843455640 +15815675742 +15154659924 +18556698848 +13683536112 +15804847912 +13632455374 +15112174016 +18896712657 +18857994902 +18844478730 +18869526923 +13947460243 +18515326187 +15888312774 +13659744562 +18847061592 +15892480156 +18894012409 +15830991062 +15889662636 +18833809020 +18548641566 +18513114740 +18852149074 +13970614257 +18829272244 +13694827536 +13600354525 +18865249899 +15892181228 +18555912990 +15834938863 +15838270719 +18806203215 +18840361753 +18524243630 +15134552221 +13630887275 +13906082925 +13652285724 +18867613556 +18552577269 +18872175627 +18845420769 +18879502374 +15127218378 +15110550477 +18837878157 +18580987692 +15141085770 +15818725547 +15152529773 +15154445180 +13620046815 +13984090043 +18592703695 +15170758006 +15824771678 +15882219180 +18536679686 +15839928457 +15870691257 +18837958104 +13651839871 +13664290813 +13632815560 +18537702719 +15824423779 +13661676578 +13631193542 +13632617131 +18818546048 +15157462281 +15107434015 +13615128586 +15819219684 +15806362163 +15813992938 +15123220381 +15176576727 +18501045894 +18869154492 +18897028228 +13958237743 +15835362562 +18535557185 +18892771352 +15898699328 +15818640737 +13681988976 +15850782804 +15875365273 +18841333414 +15135558270 +15190754408 +18508080802 +15150978427 +15105912454 +15821176349 +15127185210 +13619717515 +15132868891 +18508788991 +18519812599 +18534040272 +13938865566 +18562396873 +18519240207 +13976262712 +15816678407 +18534007821 +13960662797 +13639165828 +13660018133 +18893353973 +15898616910 +18502303032 +13968998571 +15895346323 +18589838798 +18563912338 +15873366037 +15844027754 +13628271521 +13956750426 +15812687830 +15134724470 +15188376669 +13688979948 +13904946639 +15819365463 +18571282458 +15800112531 +13918733727 +15164547677 +15840387216 +13943032798 +15199330315 +15124337941 +15154725084 +18809704564 +15139840013 +13608455420 +15873955023 +18502761004 +18569360624 +18823477676 +13958185602 +18811414794 +18522841738 +18866848052 +15874411347 +13908953993 +18888041930 +18560006888 +18889291672 +18587695999 +18887586388 +13925386091 +18594643600 +15838388103 +18579105338 +15137086704 +13644722549 +18855384957 +15129735020 +18894894023 +18803666432 +13617248790 +13664101594 +15843931522 +13662836395 +13922271868 +13684143346 +18865866326 +13611254070 +13970267112 +15116557447 +13664563701 +18858856703 +13911317754 +18544822484 +15850606284 +18594674222 +15897338764 +13638696463 +15101343477 +15135471313 +13637624242 +15157757814 +13995496916 +18558151769 +15883866606 +15820205598 +18530697131 +13989655983 +18577949940 +18537473632 +15876204845 +13932011664 +13935753483 +13913762463 +15162081542 +13903635830 +13929611736 +15142961182 +13943555592 +15144534887 +18862738104 +18586489021 +18885489199 +18547647411 +13629142421 +15888669777 +18858859312 +18882588366 +13602408131 +15135171946 +18871455172 +13679189124 +15870099908 +18583864038 +13966244908 +18880373364 +18815400830 +13957742072 +18595427996 +15809025078 +18821198785 +18818113825 +13604367182 +18826831514 +15851312985 +13905985261 +13905607264 +13625848105 +15138503478 +15826438664 +15845818317 +15139547753 +13984208818 +18854422797 +13919866354 +15170651467 +13992844726 +13905104076 +18897595810 +13946487188 +13686385553 +15169114309 +15834411840 +18516706560 +13911730014 +18559692555 +13929937804 +13925265133 +13611809690 +15890942247 +13992998008 +15183864218 +13989970360 +13996944409 +18569880776 +18569409618 +13948755066 +18593960040 +15198235689 +15832076037 +15176552617 +18836805254 +18824007640 +15865737053 +15839400608 +13632231969 +18550867941 +18547521027 +15810674891 +15883998630 +18833588993 +18897431730 +18840122937 +15170888556 +13977514317 +13968032946 +18541335865 +13977467323 +18501526526 +13699590364 +13913958163 +18863597313 +15873780730 +13962587552 +15146222580 +18889372860 +15805565161 +13926027376 +18806636155 +13677057672 +15115221394 +18863541571 +15141462040 +18837263597 +15125179698 +15182539002 +13679555459 +18565867063 +15124662828 +18580858932 +15128858322 +13686482132 +15116841150 +18822927666 +15805790208 +13929936115 +15813744160 +13663648968 +13954093768 +18536856134 +18870594191 +13967695876 +13989974755 +18836797283 +15168283406 +15190924483 +13919563075 +15177412944 +15130331880 +15828153971 +18546860980 +13978745492 +18885160068 +13984074922 +15198256635 +18871634525 +18851250566 +15861986604 +15120661758 +13645693964 +18544370610 +13957238067 +13901159077 +13975971984 +15169932717 +13633420656 +18812362691 +15178840870 +15800963037 +13935877434 +15835949651 +13614623937 +15191798671 +15825520180 +18854768988 +18581731113 +18557564892 +18819259360 +18881471265 +13977328673 +15818929069 +18852248829 +13659215460 +15870932966 +15871175552 +15828975579 +15156975772 +13998718156 +15814903508 +13626806878 +15821446764 +18892697293 +13995316486 +13918223314 +13687070867 +18858557909 +18505695117 +13664397127 +18861362558 +15873597068 +15194848525 +13660761852 +18555786759 +18843351431 +13675541161 +13984683748 +18567497091 +18540881794 +15174879928 +13633677597 +15156680391 +13606779364 +18562123266 +18877470909 +15898599273 +13996624806 +18597378803 +18882158585 +13629735597 +13630996342 +18580265413 +15811810838 +15885907417 +18590560202 +15184110228 +13963999448 +15801946730 +13606727822 +18877331638 +13920819488 +18884777312 +13649681607 +13659345888 +13670397465 +15197646570 +18574297565 +15889440767 +13619181158 +15127139838 +18575204494 +15169379640 +18859322332 +18579567662 +15830237359 +13970247920 +18506365564 +13610060833 +18540381281 +15832673532 +13613042848 +15835397361 +13949103881 +13603247205 +18571421993 +18881330414 +13638675313 +13675171343 +18866844085 +15130616034 +15872988582 +18510134672 +15139197744 +15880928514 +15163245543 +18827865541 +13980610273 +15808264143 +15887138367 +13955696158 +15857175691 +18559446512 +18519201538 +18831413527 +18828854451 +18859257939 +13665767121 +13660609025 +13949188965 +18550623058 +18564103685 +13667759537 +15190155498 +13931294583 +18882825120 +15856733422 +18814642492 +18508124494 +18583489040 +13624199353 +18575248698 +13966716745 +13922384714 +15167215104 +18502915030 +13658407992 +13906033045 +13615394247 +18581622050 +15809962934 +18841795108 +13614174275 +13648989972 +15862061642 +13914895069 +13653917143 +15146463642 +13928859498 +18564820495 +18816430050 +18568005786 +18549544750 +18559809225 +13637970003 +15806056730 +18897161869 +18811873326 +13652355461 +15167974009 +15125534226 +18878414021 +15816172749 +18824527210 +13916496964 +13670822847 +13907897316 +13971516522 +13952283935 +18845111505 +15849224683 +15875069174 +13941582147 +18821628241 +15114655421 +13684694403 +13909594549 +18897332905 +15165059843 +15175054994 +15170080165 +13951289635 +18876763028 +18862059841 +15167834370 +18538883473 +15167876478 +18525443447 +13933593527 +18830747782 +18508067050 +13608517171 +13652366605 +13653592444 +18833100536 +13629680109 +15170694072 +15868243680 +18553103250 +13939501896 +18515962770 +13904162127 +15861474920 +13919831873 +18822971960 +13661747793 +18593487373 +15864423311 +18814491386 +15821539335 +18830893140 +13968083836 +15830302188 +18850178031 +13634527949 +13947323230 +18540685622 +13959770278 +18524785126 +18548476328 +13674766072 +18879488091 +13971810364 +18808388846 +15102018646 +18896741793 +15812896379 +13661791571 +15106336781 +18538089329 +13980815899 +13924940944 +18593846856 +13631281703 +18889407055 +13923017053 +18875899428 +13611925446 +18528371467 +15846544195 +18811907357 +18519591472 +13967338564 +13689583402 +15818787777 +15892910192 +13675471469 +15843969026 +15808942737 +18533479291 +13907529615 +18578240374 +18888674333 +13690785594 +13997287966 +18566579319 +13674198504 +15160515065 +15126833924 +15100653744 +15142669018 +18525629575 +15870826066 +18877252492 +18888974612 +13610317112 +15838859870 +18529102242 +15127518786 +15874236006 +15151865794 +18506225841 +13679418080 +18819183209 +13635408417 +18869016116 +13924903662 +13981913664 +18551080383 +18531555744 +18834683209 +13619426382 +15140845222 +13605599444 +13992173339 +18582396069 +15165163580 +18536804813 +18865883397 +15134768608 +18548564499 +15144410305 +13916186976 +18548658258 +15874471680 +15153101287 +15177832490 +13938875162 +15894010383 +13982532137 +13964858729 +18820490912 +13955861996 +18849124407 +18547865621 +18532526615 +13698505254 +18854539638 +13675096597 +18840162037 +18807680934 +13666308616 +13693238627 +15165605716 +13607986134 +15871443443 +15120683032 +18889938697 +13913446384 +18821723648 +18878613623 +13642447028 +15893482726 +13671659908 +15870020589 +18509679173 +18523373121 +13958851268 +13620907395 +15857250159 +18578973418 +18825308968 +15801111008 +13958870778 +18580116818 +18594300079 +15842572003 +15157653355 +18538009709 +13678809888 +18536030519 +15106510378 +13944973665 +18825259819 +15161519530 +15196665292 +18524396272 +18883827869 +15149913120 +18522372900 +15178583474 +13929686599 +13968151094 +18879577258 +15168371563 +13999588926 +15892384511 +15179729009 +13903437356 +18869678922 +13614407624 +15195637238 +15192419228 +18852137568 +18588046698 +13680696451 +15190760275 +18558398046 +18501765660 +13925904407 +18583757181 +18502372402 +18540123517 +13641538511 +13943591395 +15881879510 +13670302049 +13946215788 +15197136142 +15885511466 +15832693872 +15148061393 +13608173840 +15810188325 +13904513887 +13695388660 +18571701091 +15191776305 +18845151330 +15129707489 +13618765728 +13614486733 +13906583072 +13931784601 +18887183359 +18894568186 +15874095580 +15840250710 +18561667346 +15137679654 +15889971136 +13651834737 +18860361958 +15158665780 +18572858863 +18568477169 +18828810547 +18842011505 +18594435096 +15862979210 +15130091540 +18519052267 +18553517141 +15185664841 +13695504643 +15802093566 +13987407820 +18555077469 +18547924805 +15197771396 +15892014673 +15853791781 +15128264346 +15895747601 +15149027339 +13957773600 +15103385107 +13979609097 +15863731980 +18526526777 +13923581504 +15125392030 +18562020595 +15852826614 +13979932852 +13912496621 +13943936312 +15185520582 +15869652259 +18880137371 +13943042879 +13668570085 +15191641571 +18589575802 +18824754501 +13634488465 +18810018116 +15825026312 +15882082750 +15190907121 +15853225167 +15854004433 +15176422629 +15120878687 +18849654118 +13638049189 +18841798113 +15123019125 +18812932976 +18844834835 +15875621595 +15125578755 +18599569473 +18807794923 +15855946206 +13627567994 +18543654485 +15162889522 +18815049271 +15888229498 +15867483909 +18549597295 +13998392640 +13995506703 +13639536772 +15199667164 +13996519722 +15844623411 +18828470277 +18555383827 +13992971422 +18862074036 +13976797370 +15198664481 +18537995647 +18852054115 +15199987644 +13929767789 +18503738548 +15165636885 +13992319073 +13668787272 +13959999797 +13653438764 +13699357785 +13920435356 +18579046959 +18812997026 +18868426505 +13682931298 +13917769844 +18530186093 +15147117708 +13682595003 +13602225534 +13904627891 +13617088773 +18816255322 +15803534542 +18562384801 +13601532550 +13968963294 +18573566082 +15148195323 +15112693240 +15810020068 +15137556903 +15857216450 +13932612765 +13914189166 +15136957171 +15889642146 +15816570131 +13615279977 +15869018897 +15819392216 +18855067206 +13902458277 +15845898542 +15860254471 +13975534784 +18809331401 +15820623515 +18505908307 +13699355359 +18872688326 +15856666954 +15861242201 +15165337775 +18509686721 +15800425368 +18502183806 +15828592381 +13636690420 +15144012320 +18572713006 +18896916201 +18514781228 +13681520164 +15181218949 +13991389303 +15141137725 +13621710860 +18850761604 +18517458902 +15852787409 +18585706721 +15155567859 +18589018892 +15158345956 +13912096973 +18875264426 +13925900223 +18812589034 +18829398625 +18525520063 +18554209624 +18836182606 +18849843009 +18579024746 +18822265795 +18815749822 +15163712266 +18807843904 +13668740761 +13905090406 +15113633041 +13683580670 +13680994741 +13630282055 +15102367024 +13695730887 +15155239738 +18553921239 +13613626374 +13984164135 +18804542575 +15807860358 +15164066113 +13993025706 +18892278417 +15847811558 +18509691202 +13663652783 +15143935255 +18563731012 +13994805462 +15140716348 +15122418747 +13654728382 +18848435243 +15852492249 +13648975120 +15144020530 +15847184215 +15834244644 +15192902151 +15873485858 +13913822934 +15899434393 +15106188769 +13689590996 +13940333670 +15860350068 +13658522088 +18589698793 +13633273684 +13645360483 +18805272943 +15824546865 +13953628324 +13603142845 +13673372961 +18560068297 +15158467063 +18864666928 +18870393965 +15800625780 +15131340803 +18529324220 +13693987807 +18562271484 +15809249641 +13947804994 +15116801877 +18575959403 +15188121962 +18847000647 +13622204278 +18889632339 +15860509698 +13923288141 +15125973460 +18890193333 +18508303271 +18858495814 +18593736756 +15177317494 +15812536699 +13664048034 +18576559670 +18527743478 +15190645985 +15891451344 +18537530106 +18598050902 +18555548290 +13635471605 +13632074849 +13925150019 +13954607371 +13691977311 +13686198931 +15893743523 +13696132500 +15157481466 +15827903963 +18579578402 +15115058739 +13988589549 +15140620013 +13686678188 +13668662036 +18887177276 +18839291129 +18587896055 +15195008268 +18869335745 +13604643275 +15855006821 +18894564670 +18533925623 +13654368013 +15137534103 +13635854206 +13616425776 +13698563568 +13937327891 +18821737230 +15829165431 +13651063597 +18865457025 +13610386116 +15174065581 +15125941246 +13648192899 +15835008802 +18801873588 +18503214660 +18570803145 +13976932400 +15843668618 +18825377324 +18875523660 +15818200764 +18852687222 +15855942377 +15149514612 +18589830551 +13923021708 +13930064968 +15821523022 +13600402343 +18555880016 +15157148399 +13980510721 +18517548745 +18861964909 +13977413900 +18815124839 +15126965497 +18871105498 +15194659016 +15159428680 +15800516403 +13953646844 +13953899183 +15187154435 +13930155100 +15172051992 +15884127203 +13640847052 +18574156685 +18588400142 +18585833091 +13611642731 +13903494519 +13969998439 +13966892628 +15855664211 +13650000080 +18804545206 +15873900826 +18519909298 +13656505462 +13659505755 +15882032166 +15151069292 +18850468418 +13964199012 +15826819130 +13659347854 +13668107971 +15155443693 +13640470173 +15127987218 +13938337563 +13666540528 +15810124549 +15803791745 +15836298619 +13994376350 +18554373260 +15154629878 +15113967424 +13664831813 +15877951346 +13972754458 +15849299900 +18849597859 +13695852833 +13655330128 +18802621343 +18580800837 +18883410784 +13628427477 +13914820910 +13935409834 +18823910511 +15886555576 +13671647453 +18593115241 +18579128347 +15144431185 +18584296802 +15187108530 +18880451552 +15805979145 +18844287265 +18846282973 +13693503414 +15166928283 +15126731136 +13988457260 +18520455654 +15188604236 +13933068649 +18882138391 +15137636046 +18840679687 +13930970039 +15141087168 +15103006728 +15125568650 +18557163805 +18518714530 +18512007549 +15117319586 +15145374719 +18515092632 +13662788459 +18563022821 +15831880007 +13605577182 +18850716729 +13650200651 +15806218110 +13612396977 +15145533315 +18549026178 +18511868924 +18582293130 +18880058547 +18811395825 +13971950277 +18550077916 +18816844504 +15808452643 +18817012882 +18587230096 +18598755636 +18512536205 +13649366979 +18898397682 +15846136268 +18830455120 +18573360992 +13661011887 +18816559634 +13919591101 +15870414659 +18578111762 +18580651215 +18593297220 +13972949777 +15865390449 +13688903775 +13929450179 +15806927152 +15183104913 +15115503096 +18881046870 +18514573366 +13978905747 +18549984072 +13642078297 +13663669529 +13619304004 +18501273982 +15117343551 +18818590865 +15143194723 +18548038014 +13679036017 +15867250226 +15809541050 +18572431349 +18816224287 +13990084656 +18850608234 +18590285268 +13982999990 +18569885812 +15834814693 +18504865459 +18572706485 +15110866116 +15181857910 +18593441711 +18511784921 +18563995865 +15178793210 +18839464233 +13983584871 +18854760703 +13683796516 +18899134893 +15886923929 +18888638439 +13900781952 +15198190602 +13986042668 +18891160354 +13604117365 +18515702448 +13959793456 +13695796702 +15887837883 +18520937807 +15179161602 +15125251810 +15105195530 +18849039763 +13614037788 +13642339491 +15152355499 +15898196279 +18505842816 +13972252281 +13600362275 +18857776629 +13620029511 +18820215239 +18830343318 +18821532980 +15180201820 +18873380699 +13994379739 +13690155406 +18568253423 +13608739751 +15819162567 +13695566082 +15872535923 +15108805973 +13624962500 +15161803434 +15834048844 +18805788049 +18511995861 +13984309352 +13659110631 +13694539308 +15885792115 +15182378870 +15821062448 +18800652954 +13935677542 +18505447896 +18820424297 +15114390156 +15874689889 +18561783926 +18831080287 +18829322302 +18515456982 +15136289392 +13911859249 +18879009964 +15874321179 +18517889892 +13936790763 +18839867356 +13988624058 +13668759860 +13603749942 +18526311288 +18826856691 +18878887296 +13618145231 +13960830410 +18578089018 +18511133431 +13971554458 +13952912382 +18855437565 +13636429806 +15822457630 +15133015293 +15850869734 +13951211537 +15128696318 +13968850786 +18830292294 +13646292524 +13945626227 +18868031854 +15830750807 +13672239904 +13994075785 +15193018246 +15104541371 +15851885497 +18828661957 +13652918898 +15810267755 +18594279013 +18520303538 +15881444301 +13617917099 +18521365672 +18502046569 +15853017514 +15116124421 +18543623853 +18519976997 +15876770624 +18861169902 +13968193863 +15876452815 +13661325435 +18559837213 +18570143394 +18589809180 +15840236100 +18840805947 +13923558240 +15124917315 +13938415504 +13927514145 +18845787528 +15896080883 +18509765503 +15175363838 +13935630722 +13608356913 +18892497532 +18851376866 +13920318727 +18570844590 +13684532676 +13676405351 +18539758341 +15149138390 +18800968795 +13645421158 +18863132476 +13974488679 +15118196024 +15802778810 +13934457359 +15171063712 +15809081194 +13943489355 +13695464988 +18544258408 +15835146312 +15123349573 +13908475286 +18515639313 +13971192876 +13942993379 +13699720435 +18531170691 +15174329409 +13605793939 +13675504938 +15119655240 +15836124722 +15844911385 +13600782557 +13987206249 +15184430883 +18814213144 +15115578862 +18889656238 +15869148631 +13610724741 +15839027445 +15123170505 +13965207811 +18807543242 +13648667864 +13648481595 +15877266944 +18841913013 +13955916649 +18854184521 +13926358914 +13688598623 +15122739850 +15861839842 +15811209860 +13984484706 +15117448702 +13642011653 +18520141388 +13603795124 +15841548739 +15179663041 +15198604174 +15163562114 +13973301687 +15859976238 +15106698569 +18847312480 +13974302133 +18839848449 +15895188639 +15110936544 +18521461536 +18530718503 +18587786635 +13635115944 +15139084282 +15179195669 +15113452927 +15899298223 +18857379983 +15847612850 +15175810716 +15861177805 +13636897157 +18545945397 +15181419222 +15125488908 +15120326416 +13962769025 +15113930946 +13682880026 +18525835048 +13964987290 +13929736686 +18817923549 +13697231483 +15818999659 +18848056213 +18871922209 +13915155078 +15823660301 +15831779674 +18815927013 +15151174236 +13619985639 +18804462114 +15183602928 +13922120441 +18821942514 +18889232747 +18501870325 +15832029509 +13951636591 +13643768133 +18584298337 +15820370738 +15189666281 +13987223182 +13942021539 +13605892545 +18500409565 +15888726846 +13616518799 +18514892149 +15831725815 +18858588915 +15803268352 +15149764736 +18595649587 +15156745448 +13650516699 +15851487536 +18896415587 +15112687915 +15828855896 +15833209282 +18575286842 +15149297284 +15174002461 +18527139757 +18843149163 +18567097988 +18835574400 +15117070905 +15826933512 +15146693083 +18815741400 +18587594234 +15889122048 +18866763671 +13608747578 +13903790263 +15164985916 +15154705721 +15817131945 +13667220228 +13937769135 +18562271950 +15829778588 +15181047169 +13940323689 +13619671753 +18866499941 +15132045868 +18562806067 +15163452033 +15822848298 +13932257780 +13928821889 +18898180912 +15184174889 +15801594421 +15157984117 +13635261101 +15143338549 +18860785565 +15817427060 +13667531013 +13956867057 +18548778009 +13684367785 +13993716419 +18891407656 +13913160885 +13977797245 +15879384986 +13939293151 +15810076431 +18546366744 +13629604290 +15889724502 +18806913864 +15106082611 +13930108439 +13948098571 +13995068585 +18594286484 +13996636477 +18514745223 +18814161828 +15881013989 +13648888899 +15881861879 +15119481116 +18568889335 +13643395278 +18580177638 +15848865008 +15816121237 +13694065214 +15133228484 +13941687651 +15842990178 +18504221249 +15110802476 +18839842551 +18875194249 +18577826862 +18585559266 +13900001802 +18511488552 +13639097047 +15854425177 +13936326233 +15835469221 +13651577219 +15824926756 +18530403466 +13995271042 +18851097310 +15847959549 +13956737015 +15140792151 +18590180038 +13645534716 +18592029489 +13921729502 +13991242470 +13610972733 +18825964592 +15169280350 +15189278866 +13941719626 +13674165460 +18890828483 +18880066890 +18832689694 +15191341169 +15132934855 +13674507912 +18591053976 +15828058183 +13952676994 +15897449370 +18586769998 +13669999100 +13610011200 +15837521982 +18524847109 +13924592291 +13999748596 +15835108709 +15838992458 +13971815833 +13666718329 +15123964244 +18871645625 +13949049901 +18546262659 +18564295671 +13936503732 +18507795586 +15122251629 +13673762949 +18802236274 +18594855331 +15190841189 +13930679366 +18853702875 +15171522659 +13693526830 +13947489119 +15173857881 +18894588977 +13996595349 +18562890952 +13649812061 +13630342089 +13962340063 +13635869350 +18515684148 +13972523934 +15185501641 +18810544456 +18501033117 +13695386573 +15863327824 +15811894817 +13990770435 +13684098334 +18804946886 +15122500286 +18510746114 +18833322164 +13664702017 +18809806452 +18813321294 +18855136404 +18888476796 +18523069248 +18570682347 +18537518943 +13970861327 +13623060007 +15876955308 +13619390583 +18879268290 +18592692400 +18558292789 +18895941445 +18843436703 +18554364332 +18543024587 +18539389128 +18553827826 +18537839512 +13626067214 +13697240468 +15152794177 +13953827666 +13908403128 +18810518458 +13984440699 +15108754582 +13679597203 +15116173343 +15186783037 +15841230892 +18542883386 +18895715026 +18818801033 +15124542303 +13655359136 +13923837979 +18516597514 +18896684856 +18587720220 +18568936144 +13659381575 +13932457816 +15135385389 +18888373719 +15840631951 +18870715899 +13662825774 +13690982718 +15898600625 +18808075035 +13682548273 +18507285952 +18888519912 +13686230775 +15195231026 +18505792529 +18871221611 +18566347729 +13652875056 +15199863203 +18848010432 +13640296165 +18503439256 +18892476280 +13948339058 +13628406591 +15199908403 +18507487244 +18802960223 +18819436413 +13697202495 +18513421134 +18845393847 +13919028750 +18524152653 +18898073790 +18593778102 +15158426562 +18534145673 +13910472951 +13621947923 +18542204873 +13996052689 +15186207029 +15153966079 +15815434610 +15113889425 +13644633466 +18843082138 +15872501415 +13641292931 +13609844752 +13606038094 +15861328607 +13933551934 +18522937714 +13972587210 +18541458969 +15186133895 +13904789599 +15899143087 +18813311680 +18864645693 +18879999641 +13675340392 +15804250171 +13980816577 +18575337762 +13907229269 +15152170889 +15882566975 +15141679953 +13632061668 +15196520034 +18502462119 +18830188123 +15834246130 +15193829576 +15889482896 +13919522200 +13988733925 +13629720457 +15160095228 +15179025816 +13681616161 +18872128149 +13928951007 +18839837925 +13940669497 +15114699466 +15176704105 +15825821665 +18860618432 +18508607002 +15193802792 +18519238285 +18830166389 +15147741098 +15109190818 +15819004912 +15831666834 +13913284411 +18533612228 +18832679609 +18577524905 +18552446549 +13662379234 +18529171463 +13686097879 +18517255098 +13913859805 +13933731710 +13693659054 +13615487549 +15138706033 +15825258943 +18879083021 +18817388308 +15139403335 +13980738595 +13962517634 +13909691731 +13693293175 +13658082075 +15159585015 +15153810555 +13647883884 +15112495901 +15151384870 +13957037012 +15134592089 +13652378781 +13672075873 +18527939761 +18519796182 +15875733820 +13670811941 +18514529439 +15105628883 +18868272081 +18554513670 +15128162847 +15852454931 +18542730007 +15124973169 +15851262539 +18583076621 +13605876777 +18583644353 +13996260581 +18819249820 +15191643789 +13953501993 +13688631853 +13943538254 +13968705230 +13958334269 +18820956827 +18869786028 +13992857530 +13910852995 +15831655632 +13998320954 +18829671621 +13694678985 +13627721814 +18828062503 +15808930503 +15135989653 +15860176615 +13988657755 +13685426144 +15101210797 +18566916646 +15124465813 +13623508835 +13930002389 +18837087185 +18808900022 +18579171002 +13980482434 +15114440688 +15843423470 +13650228486 +15845209451 +15807236469 +13669805975 +18884181632 +15134142159 +18514266228 +18872153284 +13976010060 +15858258787 +18592188491 +13918388363 +18811333367 +18559678360 +18838364611 +13652428899 +15872956858 +18517102378 +13605733563 +15838988803 +15863459095 +18836767257 +13646344954 +18540420352 +13981339426 +18572015524 +15808805817 +15162087469 +13936213964 +13614965498 +13985874370 +13924986814 +15122758179 +15884200888 +15888027470 +18511938101 +15863029401 +18801986110 +18591461791 +15879956999 +18807449528 +15187633419 +13696675445 +13976352500 +13913457201 +15853366227 +15117121032 +13997613238 +18845021723 +15856856910 +18841824963 +13961480155 +15809911814 +13684561275 +18872712066 +13924309509 +13931202825 +18847033263 +13907326250 +13686625568 +13983141297 +18803373809 +13643036922 +13612279869 +15848371553 +13904681214 +15894706867 +15878827213 +18861704734 +15119517983 +15818800992 +13665689521 +15136449501 +18581049046 +18821872777 +13629868418 +13922240413 +15198484069 +13947702079 +13940088777 +15859459950 +15810136624 +15836741519 +18826807541 +13998196301 +13636656825 +18547620520 +18858242513 +13669324435 +15112173023 +13631269376 +15875142481 +13686947814 +15891098529 +13603282029 +13957500093 +15153190933 +15164277087 +18593762601 +13683424947 +13673805887 +15809036173 +18537331982 +13993136009 +15829048332 +15122499637 +18513596497 +13626216067 +13628075444 +18532709922 +13621275343 +18583243817 +18808536222 +15873429403 +18891465452 +15814304803 +15172923882 +18809306031 +18891337551 +15101295473 +18808391868 +15807684222 +18855564474 +13688630553 +15170069481 +18512463802 +15894236936 +18504553185 +13927527854 +15870486532 +18835042502 +13644835989 +18507656322 +15141576974 +15143978963 +18583847871 +13973642500 +13943879830 +13651401303 +13663160238 +13967995779 +15841620258 +15115893291 +15824190605 +13683619954 +15129864459 +15176296378 +13679058841 +15893276136 +13622994390 +18531101967 +18882835344 +13623222830 +15183947518 +18876421560 +13919729607 +18883901003 +15809475836 +18508151130 +18556789250 +18830545389 +18817670684 +15879798241 +15824889361 +18539844153 +18548486519 +15193101177 +13625305235 +15155554705 +13686092578 +15865581582 +18845331049 +13961848903 +15133965722 +15817459464 +18886272634 +13934897682 +18536587014 +13978978254 +18844499069 +18875967191 +15837764190 +13957970760 +15825186422 +13983519427 +18547106060 +18869007661 +18557202576 +13616612770 +13613949322 +15196467288 +18571364899 +18899359948 +15152502969 +13648347897 +15841654337 +13670514320 +15876052905 +13692624950 +18597759536 +15850367566 +13603031032 +18835972837 +13930503971 +15840811487 +18556184896 +18561679334 +13674836819 +15133012738 +13914479340 +15142057447 +13651891194 +15102755552 +13677406562 +15825859842 +18884526810 +18871326965 +13628045563 +13907293892 +18879658159 +13654947091 +18503064302 +18571484154 +15113566579 +15138257712 +13942569785 +18579185155 +13618723946 +18526089019 +13642167129 +15830302302 +15128908981 +15149985463 +13654706429 +13949651584 +18596481682 +13922128690 +13957311894 +15186967332 +18556390301 +18892989649 +15864550397 +13618800944 +18868110872 +18892605828 +18831456630 +13949363079 +13988574619 +15177926892 +15851692526 +18812541572 +18530677517 +18802308035 +18591564159 +18507736691 +18836269543 +13617980890 +18895256478 +13628025936 +15192761915 +13689653824 +15157660781 +15826610364 +13959913604 +18889670115 +13617874233 +13948827425 +13674113752 +13652569669 +13660038255 +15851158511 +18571118896 +18870614121 +13688433065 +18863493576 +13936438718 +13944510005 +18812387691 +13614721707 +13944168674 +15818570504 +15851159924 +15137592572 +15892745692 +18804705671 +15816943860 +15896813678 +15104847687 +15890555647 +13678990313 +15815105894 +15818306862 +13992913695 +15879568472 +15866414200 +15142863559 +18551726373 +18820193551 +13944311891 +15127286761 +15186723960 +18849302911 +13613600742 +15873022092 +13620234264 +18561346311 +15181655196 +18852125992 +13615324268 +13900371649 +15846439175 +15811030274 +15875867933 +18858489000 +13693120731 +18877204121 +13992755879 +18824311847 +15168923341 +13622468850 +15144965272 +18585078869 +13673582912 +13925203973 +13695264969 +13625016954 +18551354066 +15874404683 +13640886319 +15164781078 +13607592919 +13696032636 +13606009388 +18524877819 +18509374400 +18845110189 +18801131675 +18509297556 +13975913613 +13980596679 +18546090008 +18559218042 +13992361654 +18541965095 +18816330338 +15183147245 +15856713567 +15169009588 +18521252405 +18585518306 +13656237322 +13924692999 +13932331432 +18870422773 +13974077015 +15141576973 +15159129122 +15833732479 +13613290943 +15125929822 +18867316789 +18537593015 +18596157572 +18550614599 +13682935418 +18818908162 +13683688958 +18885904530 +18803425786 +13684258944 +13677654841 +18854841908 +15870650563 +15167974990 +15817368780 +15158055031 +18888400378 +18558420411 +15822163982 +15167403399 +15832146852 +13957436707 +15830092583 +18567460057 +18842283514 +15881189983 +15121103717 +18809722040 +13643063560 +15839931380 +15132636187 +13623145254 +15896901446 +13944240077 +18550172965 +15825779885 +18577012383 +13660969015 +15153579119 +15811196153 +15193344266 +13940045484 +15116076355 +15165348303 +13908446776 +13681427661 +13692350909 +18895744117 +13690062350 +13961020061 +13978398093 +15826336285 +13646492539 +15151345503 +13688681321 +18815480984 +18869579234 +18855557090 +15120523411 +13969362413 +13915267473 +18892516902 +18549924310 +18834641121 +13929346492 +15847707944 +15869064392 +13678086578 +15196584571 +18842688704 +13912057047 +13658149630 +13991673432 +18504353694 +15853118284 +13688263741 +15151280287 +15198367721 +13971524139 +18839659219 +18899619957 +18554244639 +13674794663 +18538279052 +18863397703 +13633647457 +15193512595 +15818486168 +13657249591 +18846936602 +15825592718 +18822111591 +15178701997 +15102952993 +18809562890 +13631449832 +18851189509 +18570138568 +13609740376 +13608286717 +18587463483 +15892495957 +15196788595 +15849865567 +18842586755 +18562512743 +13919147001 +18826810755 +13688330240 +18879015548 +18570687795 +13693028091 +13650099487 +15849713090 +13960657216 +13631662471 +15832271826 +13925064753 +13694855551 +15184409080 +13979809802 +18835555157 +18886255345 +15106006171 +15858209377 +18829573643 +15839959396 +15852593387 +18848437119 +15173332250 +18818998689 +15112842375 +18828735123 +18824778636 +15818786448 +13907914087 +13900381771 +18833943757 +18548177454 +15147192841 +18806046397 +15191869663 +13949567497 +15818285110 +18599200753 +13957047021 +18813477214 +13666332508 +18504682675 +13995826974 +15815034309 +18812841854 +18878892313 +13661903650 +13948977990 +13917417746 +15112092796 +18580560152 +15807866118 +18511344940 +13912294137 +18581935894 +15161631096 +15110404820 +18805704292 +13947452483 +13658259056 +15876693378 +15844007467 +15812469539 +13903271779 +18518231878 +18588350873 +18876615751 +18859197254 +13643064550 +18525969440 +15142239449 +15885681404 +13627575659 +15118791570 +13652494301 +18586430801 +13699757637 +13634252233 +13960795998 +15187205218 +15848091428 +15148479781 +13636599892 +15877991513 +13905120599 +15892138878 +13939735467 +15100073799 +13623582800 +15123660182 +18814843460 +15864925530 +15825016525 +13973086444 +18545713045 +18848380194 +13908739113 +18562148959 +15830091146 +15162646298 +15148787979 +15169359751 +18515167692 +18504634555 +15899286927 +15165015988 +18519653918 +18818456854 +13685663305 +13923607432 +13908481108 +15155219764 +15117432129 +18846928059 +13991431636 +18570120539 +15865025474 +15867998059 +13906628700 +15128612794 +18535110829 +15878084808 +15884998694 +13683919691 +15129943582 +15186305643 +15123298601 +13653297034 +18543980809 +13968983548 +18804643378 +13963882566 +13624334536 +18825131511 +15889437376 +13678983372 +13946520314 +18888261051 +18516079015 +18529845203 +13669069723 +13636226836 +15844593323 +15127167088 +15180112304 +18884416823 +13948382902 +15183543851 +15807120601 +13954708574 +13993166866 +15156893891 +15878793071 +13927618414 +18569709147 +13641395527 +18897574517 +18833224390 +18540695027 +13971418658 +18510573548 +13648062878 +18814551636 +15179114781 +18802979302 +18521043063 +18518569990 +13947692339 +15816426087 +18884270203 +13970241415 +15144914580 +18550024696 +15135924409 +18507497075 +18570340298 +18864173750 +18891835943 +15851010601 +18505111069 +13663591689 +18886395333 +13980985379 +18869841028 +15177344778 +15122724698 +15819411782 +13640015376 +18858452465 +15818554206 +18566836167 +13953677746 +18544916315 +13960932850 +13672320018 +18875640622 +18880782075 +13651256441 +18886540972 +13641144434 +13653493823 +13609195248 +15166713555 +13692594520 +15183213510 +18840411763 +15113523474 +13698585683 +15800166265 +18591334128 +15185087728 +13953223469 +13649898809 +15139276653 +18529423499 +13944994862 +15895911479 +15885641959 +15865688907 +15125684525 +15195375641 +13623082810 +13952727506 +15188463165 +15890784117 +13962793379 +13906080249 +13647500186 +18515294052 +15132915971 +18880915110 +13993334044 +13982404419 +15119441338 +13901929759 +15812362303 +18526487709 +18506657776 +18861076935 +15101847403 +13681591710 +15151689778 +13903264881 +15164211618 +13976612202 +15142173491 +13613353119 +18803685340 +15823957622 +15145615496 +13608265894 +15142305093 +18574784644 +13969057642 +15870439439 +13641808074 +15150206970 +15842112639 +15195835470 +18848125499 +18898582784 +18855727280 +13915143560 +13988087473 +18823923670 +18541898616 +18811878246 +13609360527 +15186128627 +18566416774 +18883767804 +15890287429 +13651960389 +15198625207 +18853523310 +18853596230 +15150869688 +13608374154 +18594517750 +18851124388 +15802674879 +18566698252 +13919156607 +15873953049 +18806064864 +13651393594 +15850453671 +15186847296 +13680835233 +15820694023 +13680138991 +13973119192 +15110767464 +13616498335 +15171358995 +15877751635 +15870236290 +15847373224 +18824695624 +18895104212 +15897255607 +18533427959 +18828696880 +13675532399 +18899240090 +13998310551 +15801204349 +18514055369 +18880578825 +13951232400 +15879290176 +15150146659 +18890243812 +15147004871 +13600590588 +13650361041 +18537933315 +13678343711 +13928223405 +18874318720 +13970870728 +15812358079 +15890818358 +13907180291 +18569705037 +18574261235 +18899938334 +18509311713 +15190050171 +13944261695 +15125156874 +15197070118 +13972134502 +18870307042 +18831021389 +15884654067 +15181505244 +18805109041 +18509041422 +15177126537 +13680208762 +18827285672 +18859350702 +18890320243 +18584506288 +13661908937 +15816717119 +18832352950 +18855228665 +18504336871 +18542252334 +13965844535 +15180934839 +13934551219 +13914509884 +15199150801 +15151182360 +18542799262 +18805227954 +13624393750 +18816180391 +15168257439 +13966820992 +18812650895 +15841024944 +13930852231 +13630326011 +15824523958 +15149102276 +18556922164 +13900259888 +15896631573 +13615063094 +15841025945 +15167894020 +15833824265 +13972679215 +13683979175 +13906924211 +13971343500 +13656631569 +15887925705 +13916467285 +13952950547 +18825781142 +18838575716 +15103989028 +13638688429 +18587325677 +18580724678 +15193180555 +15101909085 +13987474299 +13654264439 +18508497163 +18517841039 +18805159275 +15144050187 +15850431345 +18824270090 +18865291085 +18866215779 +15866134362 +15185307786 +15864803053 +18892616725 +18850118248 +15815245929 +18848337686 +15169333495 +13640585084 +13995319126 +15106373970 +15114156260 +18862164047 +15134414866 +15140214525 +13601309411 +15854144873 +18886013411 +15196769545 +13984050793 +15842319489 +18556696296 +15151210002 +15891521448 +15817579422 +15197171996 +13680115621 +15836234135 +18556316425 +13961755507 +13966271396 +18512390528 +13976601234 +15846450052 +13658454950 +13662501819 +18577233068 +15814106459 +15848296577 +15174214972 +13980882905 +13602887934 +18506078168 +18887977023 +18596194318 +18587793478 +13674986483 +13629684885 +18899250785 +15891407663 +13959694961 +13659445607 +18815405374 +18594257410 +15815155759 +18815888531 +18814002479 +15154636124 +18845333709 +13917546574 +13959308961 +13607821980 +18813970300 +15848440311 +18511129821 +18812995374 +15175625028 +18899155516 +18522544895 +13931629897 +18590206398 +13619319968 +18870851482 +13635285829 +18599986428 +13943906983 +13961529750 +18854905101 +13990373213 +15154152910 +13616420843 +13629118456 +13935863834 +13678848823 +15837510639 +13995176987 +13680522761 +18554015991 +18503230189 +15828098729 +15160368496 +15139147160 +15842279932 +13937887884 +18510714792 +13622874158 +13601841776 +18510529150 +18590678167 +18574249546 +15850858515 +15140043868 +13977385359 +18853179320 +18818420418 +15861051668 +18513890165 +15102529772 +15886443611 +18504882475 +18516300450 +13607498462 +15858549822 +18896202608 +13649749036 +15148173447 +13997137752 +13919125950 +13979164325 +15841606700 +18884880819 +15865049003 +13915508365 +18873963911 +15831052935 +18507782365 +15862919449 +13942169487 +15189986340 +15856576725 +18880679626 +13678489047 +15804156555 +18828599109 +18832929566 +15191600395 +15834824082 +15874108505 +13997804448 +15123551581 +15137186665 +15863747979 +15145848144 +18504643158 +15129400230 +15832801896 +13902981290 +15103442182 +15813136273 +18514032440 +18597164423 +13654112963 +15875958603 +13911837676 +18520655554 +18843651971 +18873000209 +13671295542 +18549630204 +15855944745 +13943804483 +18527817547 +15859319953 +18882617532 +13912303360 +13667991664 +15858049414 +18531581711 +15124886471 +13624711319 +13618784638 +13630855914 +13692184261 +15816549216 +15861243457 +15105234725 +18829241287 +18807743762 +18860141519 +18893685092 +15132448975 +13646870243 +13661313099 +15137057722 +15158038743 +18501513940 +15111095583 +15167975947 +15895060069 +15815553873 +13938309151 +13965749394 +13649759847 +18890731060 +15181148548 +15142058523 +18872293570 +18849942827 +13665733552 +13619410847 +18555480508 +18524450437 +15895038566 +18842831599 +18892635640 +13972494978 +18840992690 +18871549022 +15885222911 +18568386739 +18804990392 +13976414006 +13993212244 +15883256222 +13983765811 +13988659591 +15884495393 +13620861009 +13927383657 +15822556921 +15177982450 +13971629779 +13677317562 +15862336012 +13652397531 +18505619354 +13668310252 +15844349666 +13689318215 +18802935564 +15194424647 +15135215469 +13979763295 +13696899299 +15879316949 +18564854185 +13995139396 +13979216992 +18520060792 +15898540263 +15182553845 +18820168929 +13969548112 +13639981748 +13629086882 +15166527450 +15872897599 +18513487167 +13688893495 +15122106466 +18552118011 +15123047366 +18552641907 +13627226912 +15162767073 +13948919761 +18888577870 +13958663571 +15846199191 +15894068507 +15873338240 +18517321893 +15107406244 +13627530006 +18523831682 +13699677878 +13673647522 +18558240170 +18899359475 +18519001375 +15833026656 +18596592630 +13670679978 +15877794427 +13919259792 +18856350042 +15140407294 +13619810229 +15813390196 +18847964801 +13675362559 +15151227997 +15850597582 +18871013674 +15132274745 +18814795114 +15879334862 +18861676689 +15120732399 +13630161987 +13657188528 +15809342148 +18879518480 +13625202239 +18589694995 +15878166628 +13632347819 +18509139971 +15100611186 +13619714855 +18560428958 +15195307170 +13954600765 +18523804926 +18513082060 +13924464032 +13938629835 +13689796109 +13621992801 +15175548811 +15831249286 +13962714077 +13983362440 +15808310547 +18524146901 +15801282834 +15846258276 +13659924497 +18898518364 +13655154111 +18580697491 +18879697905 +13925325525 +15128719373 +18593800278 +18875267957 +13946937876 +18534077396 +13956501241 +13953216748 +15895705934 +13606274159 +15830666972 +13605322409 +18832691707 +13992591509 +18821927389 +18861685018 +13978114816 +15191872525 +15817749625 +18555573085 +15105232473 +13663750160 +18838025681 +13618169218 +18522529603 +15188554998 +13643622722 +15149771185 +13686098530 +18865761723 +18846439987 +15821151986 +13640415586 +13640850583 +15830753875 +13978134198 +15832392431 +15867042583 +15122990200 +13930823933 +13684611307 +15171240117 +15162068446 +13660620140 +13976190655 +15842553731 +15186366569 +15113302916 +18870436383 +13672595801 +13936220264 +18544013886 +13611007857 +18542056006 +18891105158 +13904633056 +15150858681 +18519769724 +15830749109 +13972326053 +18884096400 +13694158471 +18886898957 +13980930918 +18809211701 +15829797082 +15151147925 +15855668728 +18816633055 +13908135746 +15199358817 +18521801081 +13623113432 +15179364892 +13696328735 +13626879933 +13677822408 +18567867937 +13957871397 +13672409150 +13911915345 +18834916424 +18503731030 +18539147955 +13983990041 +15146617584 +18860648951 +18548692622 +18833969307 +13924458899 +13687281890 +13998885585 +18512267696 +13664262951 +13943602226 +18813888691 +15191396023 +13918961723 +15815771727 +13641175494 +15196154633 +13677245825 +18823506885 +15115535092 +15822773569 +13965952409 +15192311213 +18571906880 +13975688051 +18854117978 +13658378769 +18569528181 +18880101628 +15888032229 +15122359698 +18851570348 +13920238646 +13653172570 +15118638414 +15155869950 +18883522596 +15813453821 +13915075918 +13966863334 +15187157956 +18510577579 +15861947533 +13669808953 +15841624094 +13968240245 +18832008800 +13982631797 +13936673212 +15842464854 +15133430925 +13651345740 +18858256452 +18550438553 +13699808877 +15838007668 +13935316851 +18807423738 +18570245193 +15852134003 +13642406174 +15166817622 +15894689769 +15120727687 +13606040000 +13613922199 +15124927266 +15871184886 +13610748461 +18539964816 +18804842354 +18828613671 +18506837387 +18836060795 +18519957220 +13901327329 +18889695235 +18823457276 +15813020657 +15198493302 +18855015638 +15814739860 +13938695256 +13653385086 +18575026914 +15812241799 +13935946845 +13635253533 +18501079524 +13656577131 +13632114799 +13617230100 +15861478789 +15867213926 +18594473183 +18516648661 +13699714985 +18822929996 +13606928182 +13942800021 +15820915230 +13611370612 +15837475377 +15859164768 +13624093101 +15147679393 +18893962085 +15131658930 +15162688251 +15850003746 +15189405700 +18537766375 +13962548412 +13948133958 +18883092055 +15199963642 +13918025107 +18547299063 +18865439346 +13639966540 +18525758991 +15107466995 +18806455941 +13602753566 +15131654447 +15840812792 +18532901309 +18500223969 +18829256662 +15887204963 +18832488972 +13951421262 +15132864969 +13910328484 +13657549667 +18857262662 +15147132075 +15165919317 +15880409291 +15816779031 +18569141064 +13608330074 +18567242759 +13608162812 +15173384639 +13698830569 +15110546086 +15833459231 +18893126885 +15884580477 +18572590833 +18861120762 +18869499872 +15828250232 +15158499787 +18805599850 +15881099418 +13625570359 +18545967460 +15874967371 +13997911045 +15147473921 +13932920603 +15808829293 +13644395291 +15876674474 +13986895986 +13986713628 +13921066169 +18531771529 +13619803676 +13951306771 +18538147307 +15889686101 +13642999983 +18555809994 +18852285532 +18854115868 +15848731136 +15195871174 +13902510943 +15800739142 +13642823333 +13634070049 +13960048155 +13959679524 +15155312449 +15150328426 +18805514353 +15835668039 +15114939163 +18594705233 +13680964215 +13975483634 +18593749636 +13612963901 +13967199131 +15146037991 +15145501686 +18598865742 +18525774920 +15830914640 +15837781715 +15174583034 +13688910037 +13667063001 +18599998274 +15836718107 +15151081881 +18805691429 +13952320120 +13648270203 +13642824842 +18861133412 +18509959107 +15167501487 +13984642038 +18839341238 +15169505411 +18876215299 +13914957571 +18539093423 +13916536936 +13648676821 +15863287830 +15801959453 +18520506741 +18520898144 +18579636015 +18580833510 +15108276180 +15157656125 +18846527451 +18800999557 +18842755745 +15810635789 +15872093060 +15880867457 +15816893781 +15197642606 +18849756662 +15857756079 +18879778981 +18829691533 +13670808737 +18588742937 +15811089427 +18807588477 +13630118761 +18815255221 +15806385865 +15100931698 +18577836582 +18527300008 +13664439697 +15117527747 +13661482063 +18831112682 +13678747478 +18521546076 +15842346147 +15133025805 +18514341841 +15870839103 +13601505353 +18517452377 +13620167494 +13950066064 +13998882195 +18854456013 +18549516257 +15190596314 +15115117380 +18880131901 +18542880368 +13946764906 +13698296100 +18557167181 +15800089836 +18560742082 +18507997737 +18867872852 +15162988813 +13950924942 +15844096521 +15138539070 +18880354693 +18849785175 +15140284640 +18865811935 +18559545802 +18513821883 +15835480025 +15833076257 +13916655791 +13677331491 +13657083565 +13929309098 +18812580105 +15804741091 +13602091021 +15184576560 +13999930815 +13613301151 +18834585265 +18812392130 +15839333913 +13916561010 +15131944065 +18595747070 +15825354603 +13656983642 +15829127163 +15832705706 +15826693612 +15151737554 +18514116172 +13917893900 +15149412230 +15106364826 +18844680093 +18588153279 +13618971198 +18535564770 +15137433367 +18810724800 +18571075341 +13905671035 +18513289435 +13672150520 +13697939267 +13992058964 +15802709519 +13921764874 +13950287691 +13604920432 +13915272496 +15197187040 +18562360418 +18566060249 +18586017876 +15105921424 +15867862600 +15826104940 +15888796719 +15105001157 +15806369251 +18892701364 +18591102855 +18545925459 +15159830588 +15838161743 +13652330309 +13977545615 +13647114419 +15890328015 +18524293362 +13931181389 +15877471830 +18515668937 +18501299980 +18856417230 +15848787505 +13628853807 +13903365929 +18893430545 +15855461354 +15192579458 +15168793652 +15868231765 +18815295002 +15130090499 +18881508485 +13922367858 +18851593598 +18561263591 +13686772743 +15812212195 +15802288838 +13692840127 +18866833277 +15837847894 +15863176131 +13922342655 +15185189394 +15882049662 +18868659972 +13950219018 +18825523738 +13903835728 +15182529445 +13673150571 +15882898621 +15852298617 +18886432162 +15834263262 +13659653655 +15144547393 +15172329377 +15106247655 +18596806526 +15886113035 +15189254908 +18567539050 +15143334042 +15802558960 +18586268205 +15163085699 +18580868305 +13654337028 +15176493263 +13681594183 +15845451819 +18824224018 +18536096491 +15198307679 +18884267489 +18837265003 +18841535163 +13602712626 +13668565848 +18895441659 +13689529529 +18505043611 +15171535193 +18846415553 +18528996730 +13930770260 +13651568112 +18860184995 +13659408523 +15830693890 +13953418424 +18558644434 +13611962710 +15822841565 +13647343540 +18598188252 +18884167475 +15187799016 +18508841469 +15841385743 +18572519521 +15129129339 +18840728640 +15144223628 +18895338792 +15820201091 +15894073365 +15843208208 +13912389998 +15160843732 +13618822865 +18868361534 +13682036576 +18518891677 +15855211258 +15167883210 +13949167143 +15159304318 +15877363382 +18837967641 +18880809263 +18818409811 +18515316022 +18598662806 +15185940833 +18574771601 +15113490030 +15129641336 +15132506406 +13632111596 +13974371771 +15123932770 +13677037673 +18842221244 +13958038792 +18577615361 +15121028069 +18829002433 +13996886019 +13615453975 +18843842555 +18819601130 +18881804754 +13689152467 +15823826883 +13974932140 +15175849245 +18819169697 +18886241732 +15857176578 +13611341549 +13696080679 +18579542399 +18519343775 +15192444158 +18511253125 +15169977065 +15839659390 +18822554336 +18856702690 +15869866604 +13643792572 +13625161354 +13987625013 +13685087197 +13676006880 +15164762104 +15150110592 +15892485172 +13920472298 +18518050729 +18551609765 +18880144084 +13969617450 +13948060962 +18839636152 +15150538826 +13929922266 +18824862896 +13979452530 +13696444420 +13928487393 +13628918064 +15878898726 +15894632616 +15859767131 +18851558399 +15800953323 +13937558331 +18567300960 +13639179844 +15143971381 +13640740710 +18569858151 +15857573551 +15155007656 +15178592049 +18875327562 +13988591304 +18805360811 +15857181868 +13954676959 +15836495508 +13985861152 +18557856587 +15161425678 +13658551429 +18855357755 +15858248229 +18814543699 +15824699021 +13643543674 +15109723679 +15133482082 +15858042535 +18581348911 +15172193590 +18579611432 +15191860617 +18595029278 +18597763860 +13667012631 +13929163231 +15875615995 +15854699659 +13963150291 +18808891528 +15851243108 +18816288839 +13900238991 +18853597685 +13686788095 +13683809082 +15876035788 +15128048344 +15889137345 +15195795452 +15899235369 +15190143362 +13986313820 +18563112354 +15865490754 +15111424716 +13917068952 +13662582138 +13950161452 +13669070796 +13964681562 +15846451847 +13633439029 +18518440159 +13605691862 +15187816488 +15139265246 +18516813821 +15863400839 +15860112146 +15849810098 +15184856126 +18549999067 +13948220032 +13606940762 +18576471510 +18555122947 +18826705393 +18536739424 +13638290856 +18829776216 +13691975933 +18887960882 +13699611053 +18558300373 +18546551195 +13904741057 +18865435460 +15817029428 +18884613192 +15112216122 +18541172292 +18881379632 +13953517902 +13962807537 +13904788321 +13633363859 +15136797388 +13992818378 +18553068298 +18513287379 +18508722366 +15864862521 +18543799240 +15178037300 +18813551856 +13941195742 +18548802436 +13695065953 +15183800421 +15822897741 +13963847874 +18838820224 +15162082000 +13903001340 +18841848451 +15833190870 +18592322903 +15854659230 +15801353262 +15893965429 +18830141902 +13912253066 +15121079793 +13685845053 +15152475840 +15818399443 +13645644080 +18871224688 +13939889510 +18558687857 +18838370373 +18569372339 +13658366745 +18564190389 +15142619737 +13672782773 +15191454540 +13907762146 +15142426009 +13689872768 +13635173125 +15108910300 +18527961664 +18803282312 +18542597328 +13901878922 +13987945384 +18801748854 +15129436479 +13997351777 +15885185916 +18580195782 +15866670542 +15195125467 +18851823295 +18559428745 +15853916372 +15867072851 +18505328658 +15121995112 +13681541770 +15188876843 +18851368344 +15899330140 +13692000513 +15803296736 +18506362415 +18547893589 +15176596704 +13976429242 +13606747663 +13913474033 +13993248898 +15836873110 +18810836621 +13936500948 +15118083802 +18542592330 +13969708993 +15158494007 +18862984112 +18841092239 +15199946286 +18537887167 +18526339546 +15832739784 +18567149920 +18872443692 +15144155381 +13984153802 +15870430536 +15801789669 +18569610614 +15865726916 +13692145074 +15134347388 +15196711804 +15180295631 +15192662737 +18576171539 +15899047913 +15852278663 +13925615918 +13912544948 +15133031549 +13644184371 +15858421717 +18817606163 +15120442463 +18535386081 +18572063537 +13942691206 +13986629968 +15119576993 +15863486049 +13676414494 +18597416735 +18539896141 +13628180872 +15850066329 +15893124505 +18884345103 +13601768457 +18535753664 +15819043178 +13619279141 +18876148610 +15180539734 +18516776711 +13683583883 +18521485915 +13638424147 +13678135607 +15118768032 +18546538649 +18577809444 +15876536827 +13646506735 +13908805395 +18856381841 +18841105488 +15141876211 +13693765023 +13932674831 +15858819589 +18874927713 +15841510759 +13650292907 +15890589471 +18882771325 +13696855202 +13695454807 +18502088721 +13668797963 +15822457992 +18523394684 +18891402904 +13684767645 +15153815073 +13955950104 +13633374222 +13923284269 +13630338056 +18529503389 +18530916519 +13957764656 +18544181009 +13631396092 +18521350860 +13628378306 +18583528157 +13904440130 +13602417025 +18829948730 +18810256384 +18803314333 +15143603631 +18598099835 +13906737200 +18843408140 +18551399241 +18865185796 +13611936284 +13904567365 +18582046260 +18819879572 +13908300401 +18845351660 +18809349390 +18820842368 +18847834095 +18566938233 +15861614985 +15858478480 +18529216871 +13984335411 +15187919022 +13684306629 +18869081755 +18599461778 +15182370690 +13673778842 +18867980908 +13960298685 +18576527085 +13965558549 +13624868659 +18507466666 +15176190773 +13623047375 +13609777156 +15862226770 +15857923860 +15889440210 +18883627303 +13698528763 +15817085351 +15140488493 +15888051959 +15895525130 +13678253121 +15180537204 +15115728379 +13912334836 +15142501465 +18849484351 +13694901117 +18553372400 +18811530819 +13614301744 +13625039348 +18899452542 +18513228978 +15862292928 +18877359735 +15883324622 +13995854429 +18594660270 +13628506289 +15881744557 +13989715981 +15878997565 +13924483653 +18806946189 +15800329866 +15155494691 +13680586847 +18577947069 +13690640907 +18566517946 +15120309331 +13650522571 +13646401964 +15154253374 +18862240431 +13969476145 +15156634412 +13657879428 +18834489970 +13626236943 +18535314652 +13988765805 +15157049024 +15892670043 +18872767495 +13970110739 +13979032076 +15191300325 +18569228208 +15117147033 +15107502692 +18877214490 +15827489925 +13991764841 +18846571227 +15878753038 +13675778210 +13636474052 +18899617104 +15887330039 +15819840006 +13991153790 +13956833437 +15825481557 +15801331767 +15881895364 +15150364987 +15132751759 +18515096504 +18818852770 +13607082276 +18863010950 +13604333827 +15180378337 +15104213277 +15157866544 +18866996936 +15155356564 +15133614493 +18876751756 +15889126068 +18569111737 +13956629904 +18554807811 +18850530825 +18894561824 +18838900987 +15186527835 +13995556455 +15194844518 +18519959163 +18595690062 +15104405746 +18839332513 +13979334439 +18858816621 +13946042436 +13617321584 +18535102858 +15883343675 +13640145595 +15129734784 +13663206436 +18832656818 +13698000982 +13941759338 +18501965121 +18868884216 +15115238168 +18564039466 +13659879236 +13623350399 +13995028788 +15896543001 +18560354166 +18581542781 +13610928106 +18558177921 +15868635674 +18803786192 +18829623124 +15843583524 +18845394950 +15868514028 +15881404942 +15159449656 +18881942859 +13936740396 +13984841291 +15103922726 +15862639251 +18515613883 +18592927989 +18827717345 +15173851473 +13952660198 +15144410386 +15887904196 +15840041516 +13970138024 +13965858254 +18533498060 +18541510531 +18837525108 +15134919159 +18837658777 +18875510882 +13972685137 +13665065173 +18861033088 +18539633174 +15862378334 +18881373614 +13613050795 +13697401090 +15101007196 +18576265289 +13940920323 +18547940284 +13989884173 +18533875260 +15810717377 +13609401232 +15199765102 +15850267999 +13922603790 +15886090345 +13945101338 +18571194813 +15889690482 +15198888248 +15849027281 +18537248011 +15809297735 +13684943316 +18508906236 +13937551530 +18529527825 +13937895838 +18865526257 +18512222933 +15167667969 +13687953145 +18859164472 +13949946076 +15141845685 +18854835297 +18583824017 +13641956602 +18532959969 +18591943238 +15877282156 +18848957920 +15844213285 +13625038712 +18597093002 +18554031511 +18884251180 +18887630217 +18868265780 +13664934627 +15834319138 +18832961865 +18559660480 +15181504228 +15818061244 +13636908394 +15897433524 +13944248466 +13635235751 +15155274896 +18517355318 +13903084180 +18852397391 +13691108850 +15106725038 +13685390467 +13654935010 +18576912476 +15193517028 +13613302542 +18553551038 +18529413070 +18560949909 +15171669705 +13624536244 +18597850744 +18592228612 +13635420507 +13989729608 +18899703124 +15894834187 +13641431471 +13606624910 +15829483558 +18895455935 +15182697771 +18574776406 +13672142454 +13646051579 +15152326793 +13603700031 +15842806721 +15823660967 +18535858320 +13910830338 +13604280647 +13631144549 +18517502522 +15871971098 +15158216597 +13932468391 +18884788574 +13695525886 +13688027182 +13978080909 +15823910405 +13611638209 +13601961650 +13944477459 +15840723463 +15183047854 +13919370007 +18598915957 +13996001557 +13664995998 +13652351567 +18871138362 +13907612418 +18528927324 +18573917920 +15116126766 +13668704993 +13996877854 +18500505482 +13980747213 +15199388273 +15178541420 +15125073821 +13652309309 +15862250253 +15116666576 +15182375236 +18837408621 +15845531951 +13624344811 +18804028266 +18824700914 +15845420204 +15165461417 +15880376438 +13970571395 +15840865157 +13945630324 +15885382008 +15807968613 +13972465367 +18538314930 +18843049838 +15847078895 +13981728016 +15890751461 +13982908681 +18829608926 +13633036899 +13624031937 +13932502668 +15151580258 +15872592589 +13612768125 +13913805196 +13905308857 +15115313171 +13978892745 +15846544941 +13915474280 +18834348144 +15126992113 +15102647329 +13913159853 +18571578949 +13689319133 +15174850198 +18561010752 +13935001810 +18561181288 +13603800432 +18512724982 +18829270383 +18839326434 +15170322648 +13996566833 +13656929289 +15848903144 +13651576003 +15142101054 +15851262697 +18549183960 +15878227817 +18519840156 +13665628678 +18552657461 +15191126915 +18543204199 +15135986946 +13695286423 +18556962716 +18874572835 +13635860891 +13650187125 +15134940976 +15849462804 +13602549690 +13674931418 +13925199787 +15836956987 +15139403539 +18570424875 +13680625174 +18891656921 +15120464551 +13694434485 +15186840959 +18508689238 +18543316460 +13670523617 +15118640830 +13961230127 +13937853561 +18517320774 +15116720548 +18830173816 +13929294224 +18880482367 +13987627398 +18822577411 +13646618402 +15816828559 +18565076833 +13627715451 +13908008211 +18825983331 +18587569699 +18555557842 +13964986857 +13699397519 +15149740541 +13637674752 +18510289581 +13954638257 +15808485417 +15879439363 +13912054163 +13648545300 +13927190055 +13667932953 +18587581159 +13979627958 +18811861270 +13926486532 +18876603551 +18876255094 +15189305278 +18527174251 +18869044924 +13600096491 +15150854925 +13678412055 +15814096756 +18518301290 +18583926613 +18575253656 +15809409800 +13622348879 +13986374707 +18536758494 +15100931372 +13945000934 +15898476785 +15844987988 +18831837705 +18823103067 +18832318953 +13931002635 +13612205934 +18810565083 +15119438138 +13990634881 +18515476843 +18802300068 +13613335203 +18522760176 +15871366419 +18500123986 +13911051663 +15803107957 +13956016824 +18857691377 +13958895710 +13945775884 +18579142960 +18550108099 +15178967841 +18579185804 +18530314281 +13636539828 +15174160035 +13673128319 +18839970940 +15101500187 +13640145939 +15851664102 +13637457304 +13911750788 +18828278287 +13661831151 +13938551861 +15160092696 +18565322027 +15863187844 +18533534226 +13952395865 +13606542924 +18540897847 +15883138027 +18845608363 +18803595641 +18510097027 +15859269845 +13616865311 +15818717079 +15841397906 +13994447709 +18535461461 +15827661484 +13666207542 +15818704132 +13659793946 +13938233162 +15144764766 +15107362106 +15832673790 +13645839204 +15814446837 +13669093968 +15123224229 +18584353487 +13989058972 +13603584266 +13622434836 +15191082715 +18508590829 +15152988079 +13604028753 +13947890447 +15183031027 +13614049774 +13620652885 +15192322241 +18819859344 +18594326012 +18541842252 +18889406200 +13929692954 +13981887608 +18843004584 +18570929772 +15119599953 +18525323857 +15183204533 +15168096534 +15818488832 +15804661232 +13671670423 +13935031163 +15176570198 +15116384023 +18835052334 +18809999023 +15131816174 +15881977480 +15123909855 +15142133675 +15195378459 +15113549923 +13993165925 +13620495245 +13941962295 +15113204231 +18541606688 +18542314215 +15197141850 +15850961687 +15856799161 +15806619833 +18890443294 +18576086218 +15101269600 +15879154300 +18585115550 +18540068484 +15857618853 +18817864097 +18833040068 +13985504441 +18830602659 +15131449130 +18527769054 +13696550992 +15807283303 +13647838573 +15122140499 +15106432482 +15800870599 +13609612411 +13690848665 +13955341239 +15811663702 +18880061270 +13941676133 +18530945289 +18829731856 +18526296176 +13995048065 +18578431149 +15148994091 +18538390385 +18581689263 +15117259740 +15174473179 +15129377212 +18827537953 +15175932197 +18512664877 +15878006031 +13992015930 +18570269843 +18548763474 +18525923049 +15866846306 +15186556871 +15105320450 +18523372878 +15841784377 +18872666952 +13954941965 +13657136721 +18534550238 +13954122237 +18809953493 +15891556700 +13994627624 +18838844548 +18846518458 +13690258804 +13613855173 +18585597619 +13966433799 +18527554478 +13665894129 +13976306625 +13658994380 +13667132762 +15143431785 +18550718326 +18873978370 +13929439128 +13618321364 +13667074669 +13664872117 +15120358011 +13978830602 +13689148080 +15895034147 +18548270409 +13941824681 +18555358342 +13641058669 +18880466060 +18800853796 +13902886588 +18889432106 +15184760660 +13602142857 +18539146987 +13944268991 +15187010943 +18814073984 +13662304708 +18800927676 +15847289147 +18599834284 +15115457656 +18886073918 +18849874666 +13676809470 +13674417500 +15838213467 +18831135204 +15827775917 +13963751998 +18588438913 +18514593648 +18540665503 +15802626844 +18827227998 +13667219610 +18847912535 +18510781412 +13650621930 +13692503405 +18532209524 +13697319441 +18521664048 +18882907454 +15846442426 +13646719481 +13658682129 +13931218810 +15827902452 +15870919992 +18801769405 +18887358312 +15833657015 +15120036412 +13965729686 +18805805435 +13610993045 +15856326595 +18810816259 +18585960984 +18807528985 +18847937019 +15899264246 +15163118975 +13920641113 +13691124100 +18537050772 +15117617519 +13695898345 +13640980347 +13603920321 +18823664970 +18547409103 +13929900846 +15803342816 +18517404194 +15116608007 +18847056112 +18830451003 +15845634462 +18829367175 +15870665952 +18559948503 +13992069999 +15151593474 +13970764530 +13623688299 +15801334861 +13926453966 +13964403490 +18886770252 +13682625813 +13902598132 +13972867851 +18824999633 +15152877018 +18850466168 +15851075814 +13643910242 +18814971259 +18562871687 +13623797683 +13685037189 +13903091172 +18586868385 +18550317146 +18506623821 +15815065040 +18565269247 +15158609965 +15897224973 +18583346900 +15120857515 +15832230170 +15853023119 +13937892922 +18897794984 +15882328228 +15838566239 +15845799730 +13981700175 +15887941631 +13960730392 +18517146574 +15137496486 +18559530221 +13926947360 +18574887124 +18571595573 +15809881555 +18892554736 +18851651568 +15176362628 +13613608677 +18548091508 +18844146989 +15872355654 +15142063816 +18890600942 +15819038685 +15827727304 +15147846327 +18550867279 +13916843843 +18855057734 +15173360023 +13669640161 +18806912631 +15892796319 +18588890821 +15148749006 +15872743957 +15827099481 +15874029310 +13625451496 +15867184052 +18865735451 +13614583331 +13627951162 +13654014705 +13954884108 +13928363852 +15819660720 +13679867854 +15810788728 +13962145150 +15176701761 +18556881484 +18813572618 +15841689820 +15130531926 +13922682382 +15853202024 +15135054710 +15159150714 +18872746009 +13991902019 +18817202765 +15869777449 +13926286992 +15860906268 +15126283251 +13669537058 +18843101771 +13680385703 +13953538256 +18502323304 +18598629747 +18804326726 +13614731975 +15137355662 +15126817473 +18582456025 +15864132213 +15168563349 +15146119703 +13626231571 +18857969935 +18569869217 +18855301656 +18878508309 +13634371371 +13682678763 +13955378598 +18858222691 +13685456033 +13687359546 +18533759324 +13607478692 +18592212374 +13990811245 +18589497752 +15857954256 +18896719865 +13940504133 +18847984823 +18807856097 +18526288198 +13653842246 +13932759739 +18853480615 +15836358884 +15835888169 +15851404551 +18891056100 +15875658904 +15106651001 +15133049831 +15115210226 +15157793027 +13667771012 +15150403165 +15126861461 +13632529441 +15869362461 +13699860025 +18536887126 +18536193444 +15135241237 +18534136661 +18876796360 +13961292859 +15103321855 +15892198535 +13937634551 +15857433072 +13655351168 +13957502111 +13922499187 +13642155498 +15831750935 +15850591793 +18881128880 +13928734345 +15138738579 +13621604725 +13918048146 +13970350150 +18818302605 +13602724405 +15898265094 +18573231223 +18543782348 +18598090726 +18867776865 +15862533723 +18848618905 +18511585447 +13629117683 +18595956592 +18895993734 +18859175497 +18821749098 +15119918657 +18817448523 +18884025171 +18552468076 +18873176129 +18804518299 +15844181305 +15852595556 +13618492586 +18875674440 +13673388388 +13940059413 +18803759345 +18511562927 +13647401173 +18811202139 +15108846631 +18536897612 +15854598573 +13621297573 +13643695109 +18898051569 +15882070429 +15115294774 +15161724336 +18544120372 +18805795916 +15164575363 +13670947812 +15826107636 +13902161989 +18542571347 +15894533973 +18550647218 +15854157027 +13655869525 +18576027278 +15842457501 +18503608192 +18598126556 +15866955579 +13978891579 +13634141847 +13953473453 +18818426388 +18861942859 +15856070292 +18822119556 +18568307383 +13691788944 +13990582820 +18864251029 +13620906771 +13901401052 +13640178825 +18532431171 +15193860225 +15890822292 +13681673839 +13641945145 +18876311925 +15896857057 +18526061702 +18830352655 +13683992644 +18563251256 +15191813494 +15895699662 +15176538069 +15108041981 +18502528998 +13991868099 +13653567467 +15854290156 +15125110433 +15886829736 +15167423730 +18513901587 +13909969488 +15801388232 +13641419974 +18559004843 +18505230071 +13907101935 +15828437404 +18894222576 +15128249687 +13657899980 +15810737514 +15182970466 +15853422264 +13968670267 +18895524281 +18820212540 +15867831773 +15124185447 +15155942208 +13902596061 +13924702794 +18561012772 +18846166034 +15817807432 +15893518316 +13954524983 +15140246583 +13610044984 +13909174599 +13947445311 +15178513392 +18522481299 +18553144474 +18591868695 +13669042015 +18819331240 +13647226011 +13964010385 +15813961375 +15830162671 +18861462971 +15872777034 +18563593382 +13905176032 +18517083084 +18573080489 +15194859758 +13670126054 +18509513640 +15858885556 +13935985427 +18811522162 +15111717881 +15192693392 +13616320340 +15176842525 +15139345011 +15177868800 +13672666843 +18544044674 +15862448370 +18502172634 +18538448438 +13612748972 +15867224587 +13615939406 +18874460104 +18587058179 +18592583146 +15130300852 +15887910270 +15879111274 +15899971048 +18596122408 +18512386667 +13665127074 +18802556855 +18871944155 +13959982208 +15122934049 +18836507465 +13966688149 +13687120242 +15875067934 +15122752286 +15819376737 +15181833447 +18515492580 +15836994626 +15846202169 +13931520176 +13647933679 +18820196115 +15826173278 +13607056242 +13678569269 +13617688493 +15878562441 +18582887327 +15165101019 +13987576643 +13998991537 +15103594142 +18599223187 +18521807281 +18509544684 +13602933443 +15808403577 +18574082958 +18557169991 +15846292194 +15136350683 +18858481247 +13999099880 +18518948959 +18893077443 +13914873955 +18842311921 +15851434746 +13688938623 +13639604819 +18864980422 +18898964425 +15104766881 +13998535074 +15871330956 +15858704636 +13687676226 +18572371408 +18842859430 +15887743145 +18514307545 +18861065843 +18536400489 +13989999385 +15816827592 +15123148327 +13924505187 +18861570939 +18829920867 +15843211625 +18575280206 +13903050887 +13928767617 +18585144915 +13934211715 +15162041508 +18855481391 +18576117998 +18599187217 +13929696177 +15102261409 +18549665003 +15869787746 +18557772374 +18810857122 +13640460719 +18870276818 +15143064542 +13903999478 +15801742431 +15150354892 +18595581956 +15119602298 +15813290910 +15831318719 +18825318244 +13957196265 +18835569022 +18863871708 +15190271302 +15859353054 +13655054823 +15818852910 +18867253453 +13940542561 +15166244165 +18563983128 +15854180995 +13619064651 +13964046205 +15890498772 +18800450917 +18865816085 +15872666049 +15843826975 +18800390905 +18884343430 +13615040136 +13969708165 +15147103907 +15161259106 +15192830075 +18870164160 +13961710583 +13943032704 +18591095521 +13691087955 +18809126170 +15815499812 +15895682207 +15119898549 +15135194655 +18559425171 +18516119506 +15108121245 +13902079622 +18503220340 +18809409292 +15196580865 +18594238207 +13913552078 +15812691579 +15811047838 +15818206160 +15145993827 +18573954650 +15835903955 +13603873001 +13943113961 +18509696792 +13687772486 +13901123459 +15144930321 +18870757046 +13628611192 +13967565324 +18553373809 +15168179997 +18880025834 +15899993923 +18840658086 +13999467822 +13618830101 +13692363096 +13977998780 +15894935706 +13615395371 +18559259949 +18516193115 +18501372401 +13926177943 +15178186473 +15874813720 +13675634751 +15168943561 +13668927034 +13649268348 +15145098321 +15122471578 +15194135748 +18836119256 +18527483117 +13900451464 +15873771723 +18842538789 +18538070185 +15893451765 +18510639422 +15198202670 +18514666286 +18838077678 +15174487706 +18568350460 +13622213316 +15119904047 +18596056022 +15805506562 +18564843626 +18849435141 +13932133597 +18500750121 +13934049793 +15102028861 +15894464786 +15813629203 +18888074952 +13981122202 +18899257436 +18567475875 +18517253522 +15110501958 +13981164720 +18868891953 +13983335079 +18886343140 +15849461566 +15172053205 +18868492790 +13653290904 +13921568825 +13692413931 +15167259001 +15859855291 +13958766190 +13940258433 +13902526770 +18825890630 +18805672114 +13988426890 +13913073272 +13939132396 +13967218444 +13986782342 +18887838718 +18825694950 +15872873099 +13968004366 +15133191656 +18854839111 +18568765263 +13611327249 +13944465812 +15151990443 +15852524533 +13634375370 +13613918542 +15807517370 +13651497712 +15880345163 +15134388825 +18597587173 +18875057819 +15127561364 +13994283993 +15186282520 +15127704133 +18570774507 +18590425866 +18546063680 +13632378064 +13916277719 +15172459284 +13651406765 +18508430352 +15110637374 +13639876178 +18856310606 +15898558476 +15863041482 +15171218142 +18582301847 +13603652228 +13689869287 +13991502279 +13645272520 +13607040303 +18528339012 +18845605736 +15804095988 +18554637418 +18867255950 +13974901509 +13953829613 +18815555119 +18889777737 +15101851904 +15852438320 +13955901224 +15869971346 +15847185419 +13930244437 +18833796981 +18830087742 +15174801127 +13675846369 +18577441511 +15820336514 +15824203588 +13915044301 +13970948017 +13939520897 +15888555343 +13680711829 +18526158469 +13914749291 +15149646000 +15880021548 +13625492396 +13633553554 +15898554983 +13987654456 +18888071110 +18590805158 +18562182449 +15845981598 +15806621563 +18584662359 +15893195743 +18853783817 +15190376686 +15185973602 +15165427716 +15170521390 +18517575841 +15861874257 +18529376308 +13695140635 +13679347904 +18817937686 +15872197914 +18829207302 +13908002737 +15800902145 +15108695462 +13627108061 +15188999769 +18808296875 +15835542022 +18555238947 +13641939654 +15121711379 +13625200980 +13904758243 +13954584121 +18845244863 +13619554858 +18814686978 +18811631889 +15801382860 +13659841708 +13976821378 +18565540793 +13657833200 +18899992695 +15812787125 +15160860718 +18893079957 +15801785017 +18599890229 +18868027362 +15801644076 +18884983634 +13935425471 +13672830957 +18862236775 +15863382427 +13678037110 +18879236672 +15162807079 +15159936674 +15854120964 +15863399783 +18510920892 +13646113242 +15163074294 +18504021999 +18577339024 +15124859227 +15180465827 +15141226303 +15843903840 +13679405435 +15831088069 +18522661338 +18820197692 +13617264745 +13996947821 +18831777129 +18512971953 +13979386823 +13931132738 +13948007785 +15892895313 +13968957034 +18536214255 +15122381486 +13699957694 +18584116230 +13629902805 +15168109121 +15883605013 +18515512007 +13959355633 +15804633950 +18522229362 +13675576977 +18860423372 +15804553772 +18589492430 +15123443284 +18594650651 +15886628664 +18862994137 +13998828629 +18509120262 +13991796088 +18864267540 +15833872637 +15820526410 +18507997046 +18896802556 +18547578939 +18801924401 +13655901571 +13660157179 +15851633230 +13647549590 +18585782081 +18510601150 +13647714550 +18896097067 +18819667688 +18811042952 +15898587561 +15874263418 +13973671367 +13937378511 +15849719022 +18867920134 +13962542529 +18512244735 +15857274082 +13911132636 +13692672807 +13660192417 +13625221179 +13975884155 +18832534107 +18584527724 +13625483580 +18571542750 +13991158342 +13982879326 +15189655409 +15847586960 +18507313700 +15802364062 +13986277798 +13620962998 +18540577323 +18519252408 +18574965602 +18801557972 +15187452907 +18572434915 +18591482353 +13632052418 +15858162941 +18592098051 +15848218964 +13974692559 +15885237425 +13686831175 +18886159388 +18830538913 +13635036051 +15825020660 +18801613358 +13675492503 +18511006522 +15120301422 +18584770325 +13629426508 +13982339010 +15169373196 +18510563381 +15885381391 +18814829669 +18888397305 +18827833791 +13688642223 +15852577973 +13988224100 +15160868990 +13997576083 +18546954490 +18562901613 +15167783234 +18829418733 +13680463347 +13970830323 +18560606246 +15174676215 +15898308492 +15835458330 +15192453614 +18885873403 +13956930338 +15880290971 +13615909105 +13923455095 +15199691092 +15158528864 +13922141477 +15855883680 +13662762336 +15889350783 +13634263579 +13905745310 +18844776313 +13628536480 +13943935909 +13950793552 +15107968839 +13922757047 +15189330629 +13986988053 +15863963932 +13932537914 +15837721699 +15860343374 +18817353044 +13618356532 +13694422485 +13983117506 +13690187858 +15135180282 +15196889509 +18866454469 +18834952902 +13977273677 +15182766418 +13906397568 +13669083560 +13901150013 +13922361967 +18875802970 +18812706715 +18857755811 +18554002998 +13609364894 +15883235445 +18813655922 +18552210659 +15169067529 +15830366991 +15160940670 +13949844191 +13638932738 +13901168765 +15891186169 +15866848169 +13943467874 +18806970220 +13602728532 +13686123406 +13965549376 +15849860667 +18584072229 +13939650092 +13954486055 +13651166966 +13635875415 +13906766236 +15156209871 +18821850621 +13603772816 +13624651704 +18854791227 +15142097100 +13658763910 +13959643497 +15119530932 +13982674717 +18502062273 +18853771562 +13619216895 +15116552053 +13992811524 +18877902274 +18587043705 +18569634968 +15180566993 +15110996964 +18532392638 +15101350527 +13672746948 +18598013444 +18562685901 +18551560207 +15891618746 +13650490972 +13983480482 +13694165807 +18853782164 +15151079289 +13680774169 +18585587971 +18835073568 +18511477230 +15851216403 +13625989968 +13607941509 +15198478402 +15837364195 +18899747658 +18840973434 +13931867377 +13954478799 +18504428450 +15815501391 +18570098120 +18535339186 +15175277653 +13965470144 +18578091302 +18877065159 +18551518638 +13972356016 +15102986290 +13626359964 +13989231515 +13901451545 +18516816294 +15819279185 +15195387044 +18862304197 +13922840486 +13952145761 +15874583346 +13931868608 +15899604666 +15886490957 +15898474278 +18567968725 +15130384750 +13939674595 +18881819842 +15876178803 +15183858019 +18883763225 +18866352464 +18517491951 +18816596464 +13694470553 +18520535481 +15863484234 +13986942889 +15840103721 +13925389066 +15169639220 +15879343014 +18501794112 +18530471619 +18897020705 +13683606501 +18897063645 +18861924906 +18827681199 +18831316520 +13937220378 +15197386078 +13915127204 +13689108118 +15847114716 +13932302395 +13945799601 +15894054803 +18808153891 +13666672802 +15845423382 +13971260007 +15183363543 +18873685347 +15130826437 +18588194882 +13911427716 +15167002675 +15851771196 +18857505695 +15857847212 +18552904021 +15823170932 +18872776600 +18578659355 +13613159765 +13612651228 +18886680870 +13642329194 +18860928911 +13985297076 +15861432508 +18889367387 +13967083827 +18509085862 +15879471948 +18569183907 +13990409771 +13932329038 +15163147233 +13982304980 +18533692158 +13649463260 +13660546965 +15170680318 +18579765669 +18899020847 +13604541322 +13691701972 +13946712493 +15878689737 +18529493862 +13695810987 +18868906411 +15174622480 +18838369158 +13671382363 +18548313225 +15179969075 +13910023363 +13956336527 +13960834890 +15853971128 +18868482814 +15881594063 +18865168819 +13934255119 +13645332777 +13917322604 +18819611626 +18519302644 +18587240890 +18820179193 +13603582940 +13685317122 +15864343087 +15170819086 +18856165177 +13920130783 +13631398958 +15105643893 +13925907750 +13636605852 +15867046825 +15885877790 +15152485795 +13647798589 +18548049137 +18504376679 +15825385266 +18891987281 +18581298645 +18588059721 +15128415539 +13642162897 +15189523672 +13643855726 +18887286627 +15868382302 +18503113032 +18539929778 +13909122451 +18560347912 +15882220837 +18802806859 +15893321049 +13925741587 +15880082684 +18514819369 +18581259926 +13953566194 +18590561769 +18852535396 +13907743169 +15190957114 +15816530409 +18824646982 +18847690734 +18887649521 +18857025934 +13992783741 +15897009121 +15130194322 +13612905527 +18503525763 +15106555931 +18870818617 +18861560115 +15151674005 +13663844995 +15109282751 +13608100925 +18830334185 +15194965422 +18568886083 +18545520606 +18525262414 +15124411628 +15823954525 +18849617034 +18802639227 +13924121621 +18564392156 +13947763372 +15158748810 +13950834503 +15815947249 +15882065217 +13944051979 +13649055626 +13930931079 +15850836882 +13902804797 +13995446487 +18561757476 +18807496421 +15883892981 +18574037713 +13932898708 +15153192087 +15172612095 +13673339944 +15851515223 +18837415957 +15179329097 +13924128924 +18818688735 +18801653576 +13669891856 +13999816294 +15845199451 +13955068808 +13614712814 +13613060855 +18885990539 +13925184715 +18882146262 +15129684674 +15836864370 +18820199695 +18511757409 +15171951248 +15826690093 +13902046446 +15824979324 +13658763007 +18820451583 +15840290192 +18541649133 +13975856041 +18898942587 +18578914961 +18571714944 +15191591953 +13931123320 +15894520009 +15166069884 +18833565965 +13695388443 +15160552355 +15867906913 +15152427264 +15802893386 +15127518368 +13973334743 +13696690317 +15179187673 +13996039341 +18533317745 +18803938346 +15866234322 +15845075644 +15176360584 +13916231430 +13919806066 +13951024347 +13988310291 +15137763120 +15171965736 +15866678712 +13928507463 +18543670160 +18877203686 +18562134877 +18877550357 +15829106774 +18595026085 +13638597408 +18511437293 +13998560108 +13646039890 +15886822697 +13689188606 +18564474524 +13644471021 +15822733690 +13623864269 +15141737076 +13937035683 +13928027416 +18555301233 +13659757035 +18512855810 +15898160238 +15112257264 +13987949238 +15844514028 +15130073952 +13682134067 +18512249218 +15817597788 +13687158411 +18517308665 +15853615148 +15848657442 +18569949899 +15101717922 +18870332204 +18802782317 +13997470891 +15842345912 +13640764071 +18526072282 +13924441281 +13929510981 +15863896587 +15169034900 +15111244295 +18878216905 +13629858191 +13627540522 +13911778658 +13666241650 +15199604203 +18889479433 +18881199450 +18870677535 +18804068713 +18832713066 +13613072507 +18839691192 +13980576423 +18876930973 +15893598781 +15817065023 +13903906297 +15823148315 +13675077658 +18870966236 +18878514262 +13906298327 +13667790468 +18836840746 +13614172063 +18504615457 +15883438843 +18865099055 +18870218960 +13940149317 +18800340688 +15134183602 +18818278510 +18803630610 +18580214767 +18882298024 +13687492227 +18878686783 +13631508246 +13933449896 +15837834572 +15822376286 +15833255658 +15812819410 +18817976762 +18817275026 +18520115848 +15845985776 +13920012935 +15845164778 +13919330410 +18540231012 +13652307704 +15887450114 +15889554010 +18587509245 +13992244338 +18555103632 +15862294899 +18509300018 +15897158629 +18558553777 +18833248585 +15869966494 +18805252896 +15864181348 +18596839632 +15894631329 +15101281996 +18501881555 +13980700602 +18890261256 +13988247985 +18868689537 +13686990457 +13928791397 +18504997898 +18829490031 +13636556138 +13990903157 +15174058388 +18524268130 +18809019318 +18527915444 +18831594084 +13610699092 +13915239771 +18597392818 +18507042907 +18540569536 +15827919639 +13918446320 +15860601939 +15858400464 +18888146299 +18896627700 +15159618816 +18839970061 +18520450143 +13991204272 +18566047188 +13600811451 +13652197445 +18811460166 +18552654604 +18883622689 +13630311893 +15860526738 +15831721431 +15162680730 +15844187351 +15101221019 +15852523225 +15897714201 +13936184805 +18579003556 +13661690822 +13929241854 +15134765527 +13982663024 +13991674399 +18811263974 +15186088023 +13994290374 +18586108286 +13658778138 +13631683246 +15178241072 +15122192628 +18824719707 +18844636108 +13627887324 +18581432140 +13683695104 +18842536648 +18816442268 +15192404322 +15147818297 +13639413974 +18540835965 +18876107625 +15812713448 +18574349501 +15878869303 +18586481902 +13945172916 +13697061976 +18535036157 +13634028005 +15832060689 +15149894663 +18889603001 +13661984124 +13658469258 +18555654808 +15163185328 +15130391774 +18589394798 +15852773329 +18816338484 +18521971658 +18865192627 +15185026415 +18526071732 +13944923330 +15144624150 +18856801263 +15846261024 +13651183529 +18542381288 +15890466027 +15176010091 +18880751501 +13903744671 +13927211827 +13988835130 +15876960523 +18802975221 +13617596940 +15113323713 +13629673492 +15116036546 +18596138099 +13917387698 +15183718983 +13655143396 +18585123353 +13634752318 +18899640024 +15135193153 +13987762605 +18877786395 +13996713549 +13626047579 +13910393440 +15142331034 +18888216762 +18853891622 +18897470131 +13661473508 +18865452441 +13691891183 +18884019332 +13676452492 +13938515904 +15165801536 +13651227645 +18551019198 +15120052387 +15845498717 +15898781323 +15854302168 +18561877645 +15190214258 +15155943038 +18845873595 +18514088998 +13953202442 +13627002310 +18894685605 +15895436029 +18522047285 +15875594788 +18883232142 +18821930514 +18595916264 +18807057196 +13955557093 +18570626073 +18856660348 +13938017931 +13659609542 +15858764934 +13908645486 +18512346041 +13939753659 +13900896518 +15146237965 +15870262247 +15188050852 +15858171085 +18847073996 +18805644732 +13665508080 +15156478478 +18582839213 +15192025719 +13939115681 +13938647525 +18884528566 +13694906755 +15896778488 +13908475926 +13627270450 +18502862602 +18585406905 +18833544030 +15883604798 +13923471567 +15102889702 +18506700510 +15164911745 +13940157620 +18516571415 +13941635883 +18819162434 +18818053404 +15152173001 +13610306304 +15892945130 +18536009861 +13600451888 +15120820830 +13942902551 +15889933526 +13604862802 +13933340450 +15185530595 +18516493551 +18877594328 +18542229395 +13698317117 +18844162942 +18868518014 +13932858760 +18842233008 +15143459303 +15859057255 +18527807111 +18564589605 +15142769967 +15847642026 +13698491197 +18579492720 +13959441051 +18540313762 +18589595885 +18899439013 +15100752731 +13985007278 +18821586660 +18598336333 +13969986538 +15854078458 +13930004658 +18510305107 +15800654765 +18532953022 +15187821675 +13937326734 +13662225365 +13996314264 +18566421729 +15813086081 +13959717343 +13672198085 +15802287973 +18826609713 +18896292190 +18817140607 +18521665273 +13938315028 +13956443522 +15842105724 +13673050465 +18563652449 +13962597586 +18829139353 +18886297771 +18529054272 +13971721890 +18800485528 +13946886716 +13964008653 +13660248504 +18573984343 +18535215859 +18593636673 +15104387266 +15840046645 +13625085285 +13659438608 +18538202133 +18509560020 +15853564458 +18545831901 +13691413328 +13987903549 +18538838432 +18515592047 +15807802274 +15134299699 +15196799598 +15877954707 +13933111421 +18581746202 +13947975624 +18889753177 +13639760306 +18599164868 +15829982082 +18519156728 +15816471206 +13614089366 +18803860468 +13606614425 +18808339726 +13995792955 +13999932477 +18566891773 +15864222337 +15113284986 +18835320340 +13610204603 +15133154705 +18518545863 +18850009532 +15199845300 +15143905734 +18585701038 +18804809030 +15875385054 +15179641188 +18591756112 +13971141478 +13915460926 +15105196109 +18586275233 +13941956640 +15191486234 +15115907030 +13670656131 +15834825240 +13946149864 +15899148083 +13953625440 +13970456168 +13611626219 +18890839055 +15122416584 +13996797544 +15122429130 +15180307856 +13937673025 +13657799358 +18874371280 +13950159780 +18541386754 +18800663588 +18853271342 +18853741947 +13666250754 +18804669216 +18523313125 +15176633472 +18851815619 +15165336721 +15876401181 +18847386481 +13678264886 +15133899075 +13627444464 +13627601073 +18890429365 +15162496575 +18586923426 +15824512869 +18810369190 +18514851876 +15876883422 +18563532133 +15128859922 +18539910758 +18527973373 +15143691790 +13619548994 +13908331451 +18832906565 +18564719907 +15865674691 +15830738036 +13670280719 +13671025588 +15836338057 +18528151641 +15123282824 +15111977829 +18515995103 +13948268389 +13600058294 +15189759730 +15174031493 +15128642474 +15100620022 +13905762792 +18872637248 +15134002178 +18888708961 +13670385706 +18530335994 +15843389682 +18591890862 +18523845817 +15875905265 +18542609070 +13683200656 +15891276664 +13603077395 +15885967105 +13935679685 +18597532662 +18814434828 +13934634691 +18586517271 +18548104641 +15889799626 +18558812846 +13931382773 +15819110265 +18566261725 +18581572438 +13656401797 +15113417981 +18893883303 +13628314381 +13945977574 +18514437351 +13939153897 +15138769449 +18518937824 +13667785486 +18519076975 +13904908085 +18596811765 +18858385109 +18501408491 +13936569537 +15855694957 +13907075671 +13666573217 +18503330395 +15196396557 +18814282641 +18847500951 +13699376847 +18591409089 +15849229186 +13957482875 +18832404395 +13681610626 +13673090665 +15179468570 +18569108531 +15817769369 +18864825751 +18565525825 +18875044928 +15880937267 +15850809212 +18825654412 +18830727139 +15150378858 +18880181162 +18838680545 +15104583535 +13990832505 +13947320862 +15185887770 +15178897002 +18580043065 +13600125574 +18583887140 +18862616479 +18537471264 +15827767723 +13970918526 +15848004664 +15139848897 +15850938296 +15172769650 +18833157380 +13963375528 +15183252791 +15838945164 +18832739436 +13661942529 +13941453930 +18840908164 +18529946524 +18524017359 +15158792349 +15884197561 +18558678853 +18853652579 +13689758194 +13636640392 +13980935713 +15834410581 +15113462427 +13645225805 +13999808123 +15852356793 +15192860188 +13612485319 +13696526596 +13932145520 +18817430046 +13606579417 +13677733512 +18813998922 +15187774685 +13943431720 +18549378169 +13910807219 +15834265379 +18510466063 +13606045060 +18594564962 +15831182461 +13987561445 +18508499103 +15131362080 +18809416744 +13680566363 +18551422199 +18521465543 +18800997717 +13934176901 +15191143262 +13641126012 +13994080020 +18504404246 +15815367235 +18503269391 +18894520763 +15180926772 +15157401630 +15143039593 +13946421427 +15818286419 +13992678411 +18535200173 +18572958627 +13921248482 +15132790587 +15152696145 +15806983833 +18529956365 +15870241485 +15871444809 +18591055457 +15169808164 +18880583455 +15115886959 +13962542145 +18545491473 +15149408493 +18808637911 +15805079820 +15138336965 +18824497033 +13649375827 +13634802753 +15816788182 +18897522647 +18589569651 +13625120308 +18571499872 +13947413664 +18526643268 +15887730460 +18563300801 +18563148874 +15112318470 +18827929044 +15817620911 +18546935060 +18846178798 +18886087055 +15814143903 +13659231902 +18578522660 +15821859426 +15850203362 +13949044930 +15819236672 +15194801844 +13699299579 +13960465241 +13645279613 +18520333592 +13920975597 +18514780698 +18846079871 +18536588806 +13686529008 +13692833959 +15859665481 +13950117837 +13627901170 +18545076242 +15130978152 +13606449843 +13645605301 +15127879238 +15180382627 +15100787243 +18896985847 +15121821771 +13977915791 +15149483034 +13998965231 +18856083802 +18872842032 +13978453768 +15118283498 +13986152839 +18896675517 +13969325599 +13954699124 +15821541961 +18849104618 +18509858627 +15812493252 +18556118284 +15865697843 +15830520506 +15855068065 +18506097601 +13680847048 +15859757868 +15119673618 +15184882010 +15859071100 +15802312603 +18506834952 +18879497438 +13658126718 +13645251900 +15824712786 +13667169664 +13657259805 +15159566581 +13927848832 +15882397440 +15174261117 +18851816308 +15895380957 +13991412105 +15193483090 +13648608656 +18529177705 +15143110596 +13959228687 +15151475443 +18871183494 +15148723740 +18561576848 +15165156921 +15803009855 +18806184632 +18813600934 +15874311717 +18524451805 +18846500971 +13658588915 +15825821382 +18521474265 +13650551511 +15892791878 +15849015315 +18544463670 +13698328253 +15171652670 +15188163964 +18856881377 +13671540448 +18805198361 +13984619393 +15801664981 +15100792155 +13918524933 +15198989633 +13674837609 +15867879644 +15189078028 +15897741499 +18859232362 +15867267144 +15838958084 +15174360192 +13631632291 +15125243777 +18578836801 +18838513731 +13652355895 +18890319767 +18500776920 +13653944106 +13976679388 +15189331728 +13663133375 +18895460515 +13643615851 +18548277396 +15169204818 +15841081055 +13601261414 +18899745750 +18546849986 +18566156137 +18837967639 +13634080104 +13976553675 +18853757634 +18580831028 +18543601605 +15105780922 +18878187877 +15185763034 +18830800992 +13939369489 +18843892463 +13935493336 +13647462920 +13616975165 +18537276322 +15826069913 +18584537870 +15801837548 +18843539936 +15852746618 +13917511493 +15189036739 +13687149736 +15844566849 +15145363202 +18832982225 +18875646993 +18507150146 +13645170367 +15151706088 +15197637282 +13675662661 +13916026574 +15144998306 +15884439035 +18545069452 +15817568580 +18558499139 +15882129699 +15825454510 +18502283181 +15124816760 +13687743148 +13993956853 +15100641832 +13961168711 +18597911224 +15871964560 +15811552781 +18503741985 +18512855402 +13980499161 +13967864781 +18803649429 +18533227877 +15869761818 +15814167363 +15178680661 +13628118865 +18847723927 +18543009715 +15163078368 +15105415366 +13947799601 +18558454234 +15116106723 +13968314188 +13653019664 +18885902664 +18534052864 +18588576299 +15865224456 +18843488481 +18501467542 +15178935865 +13939297132 +15187226002 +13662080414 +18592220929 +13652183701 +15100121910 +15830356846 +13677330571 +13971498472 +15887956031 +18882576198 +13620900642 +15823748938 +18812928683 +13620812336 +18895456153 +18828779367 +13937225945 +15817265687 +13657496018 +18851064188 +15803718937 +13921603642 +13617796406 +15141206612 +13639034826 +13627821699 +13627848361 +15834865928 +18577438261 +18863093985 +13951236943 +18559811868 +18813575989 +15171702310 +18836083393 +13630422437 +18516984578 +15867110481 +13612867550 +18528575194 +15178884758 +15138304385 +15897914083 +13623797709 +18586112932 +18596457408 +13643610662 +15178048712 +15839900241 +13625859993 +18563337579 +13940130148 +18801729485 +18881632304 +18505667661 +13619168593 +13951386094 +15817820808 +18868530417 +13627022152 +13953718963 +15105360489 +13615126630 +15893766478 +13694350864 +15856118123 +18876614624 +15856347989 +13954065702 +13907842994 +15883182987 +18502269697 +13911939128 +13603916729 +18856199332 +18885178930 +13917552873 +13643285182 +18878336371 +15854150749 +15185591407 +15139283233 +15151209289 +18543060884 +13985107560 +15881393615 +13929404573 +18515083626 +15878861656 +15175215399 +13687552744 +13647256691 +15116768640 +18854069941 +18521639050 +13955479483 +15151516320 +18545544407 +15135515276 +18527251644 +18829176613 +15108858732 +15859647753 +18599673868 +13689150397 +13675637068 +15815142914 +15834871717 +13604633763 +13646859947 +13632394431 +13633866023 +15104098310 +15179784299 +13953759827 +13903252260 +18571345864 +15862814079 +13624494510 +13983675445 +13996322621 +18538404581 +18593155632 +15102892083 +15138730655 +15832115640 +13920209750 +18887924643 +13926040312 +13951858073 +18556872602 +15104845289 +15878828276 +18887863722 +13674812259 +18807885813 +13683150903 +13648384633 +13661693502 +15111290032 +18839519334 +13968201804 +15855528162 +13622378545 +15151606689 +18520164137 +15890267874 +18899173600 +13668853503 +13625714717 +15817132508 +15119188089 +15830542014 +15830009555 +18500067786 +13998390740 +15831928007 +13692802315 +18572791845 +18550023822 +13974079489 +18537648668 +18847398608 +18815509141 +13615618969 +13690302687 +13642037163 +13994892032 +18828536451 +15875140341 +18811200091 +18515875923 +13979455747 +15830027009 +13631803028 +18599994740 +15859247734 +15848505421 +13947070995 +13955534011 +13953478510 +15184006796 +18549822067 +15152657709 +15802071227 +13602335761 +13931859195 +13907143396 +18549628825 +13691186376 +13692458636 +18877264715 +13920460172 +13923344121 +15139834046 +18572639644 +18556134024 +15100482606 +18840244267 +18839907569 +18864596401 +13698572823 +18530936069 +18596227796 +15152739461 +15888849898 +18575247731 +13611922709 +15187110859 +18859455649 +13939238406 +18864608194 +13955885947 +13696372319 +18560365131 +15160220621 +18868603833 +15862900237 +18870169517 +18885010164 +15118088576 +15124309587 +15166242686 +18526369092 +13936728697 +13641362707 +15819072637 +13967176575 +13688847658 +13938288931 +18543075825 +18830174143 +15884724815 +13947647664 +15841672056 +15130285725 +13671927253 +15890498604 +18527145597 +18556208503 +13929531024 +18504222197 +15826579515 +18829647005 +13645789645 +15825845272 +15176741179 +15182328536 +15863675431 +13699947909 +13958704094 +13632764223 +15131323368 +15841741649 +18576773698 +13938037853 +15846316414 +15886045423 +18831599583 +13654931661 +13632800690 +15865886991 +18587661986 +18879147710 +18598019764 +15827673146 +15152283210 +13988206300 +15153310683 +13930272100 +18507108436 +18571977728 +15130216862 +13678019357 +13658121218 +13653869304 +15898905300 +13641720691 +18812764110 +13982433176 +18575446218 +18575824683 +13972582030 +13603237711 +15142292594 +13663561485 +13918526105 +15196971657 +15151181434 +18867135787 +15121786648 +13652004504 +13697226622 +15176753177 +15132708472 +18539547331 +18859496221 +18880096908 +15832416208 +13951952750 +13680982412 +13692154432 +13613941370 +13653151427 +18866067005 +13697750587 +13677172520 +13619100671 +15170860565 +15188624330 +18572566725 +13989400618 +13924059503 +13966534094 +18885852925 +15898385411 +18827007094 +13622228932 +13940773135 +18825155553 +15844040693 +13629837435 +18525982424 +18889221840 +13687844833 +18501931367 +15818824873 +18872502949 +13644777348 +15175162797 +13980811337 +13675110848 +13694727015 +18816386250 +13967252939 +13607062051 +15138800862 +18558452250 +18504848011 +15150893873 +13952805998 +15883711938 +18531276727 +13623899021 +18815450099 +15832089088 +15119101055 +13979617288 +18580184618 +13624157776 +15835977712 +18864910023 +13677307370 +13948588535 +13638189338 +15871230410 +13660069255 +13969322453 +15168088820 +15105868977 +13618454625 +13993209848 +15819786828 +18526836915 +13982461756 +18856646230 +13983742255 +18814844152 +15846903201 +13632037866 +15828547376 +15813174848 +18593124902 +13903436273 +13612573845 +18875111148 +18823451987 +18557414648 +13645659155 +18873271630 +15136286396 +18866133423 +18812896265 +15112629379 +15885316975 +15126220044 +13952241331 +18525277848 +15833514888 +15832277652 +13952143488 +15852966164 +15196385412 +15109072351 +18845895408 +13649126830 +13658531704 +18598738008 +13682278677 +13922554650 +18855187670 +18891496122 +18859742451 +18844080488 +18551433426 +15104800006 +18537533385 +15844524592 +18851002957 +15144074340 +13940337135 +18593505551 +18824518463 +18833983309 +15122638930 +18861011525 +18839397864 +15825694854 +13922340793 +15122343964 +18523456992 +15825005519 +15822490790 +15832983924 +13988150654 +13960530959 +13913652913 +18562722721 +15159318786 +13632493138 +13692018327 +15860361739 +18834976363 +15149939347 +15834924556 +15809760794 +18893189480 +13935337906 +15116934738 +18539056638 +13687979451 +15872948212 +18873894577 +13934030870 +13935674595 +13931782236 +15880911265 +15136430017 +15109998062 +13685871755 +18884095344 +15824682171 +13639389518 +13928010878 +18527762516 +15186116273 +18529895914 +15844973337 +18510349294 +13699281151 +15103264950 +15163737826 +13659342167 +18588051990 +13634075222 +15113784254 +18503240609 +15180999536 +13668160852 +18532437664 +18500964116 +15122446367 +15126797790 +18898571740 +15121457928 +13659001517 +18861130448 +15172303292 +15127376798 +13664814799 +18822273511 +15124675403 +13941314477 +15856122383 +18533157143 +13612036353 +13681603868 +13914570890 +15890790325 +15134339960 +18842086617 +18504294916 +15121083199 +13682116095 +18817643000 +13993986194 +15876143052 +13919903856 +18857004519 +13654454015 +13965841624 +15171559095 +15107266175 +13690335334 +18869290231 +15101128758 +15181775137 +15882525203 +15150592176 +15189317883 +15129314169 +18829924758 +13959520654 +18844715521 +13916382344 +15100054335 +15156059778 +15858727172 +18881342510 +15852223214 +15889305389 +13996113342 +18834398146 +13646388243 +13931218801 +18822779359 +13952563516 +13672734385 +15103336417 +13602968201 +13683118488 +18823053326 +18867796117 +13635549462 +18893070220 +18890527627 +13939567238 +13683215883 +13995287974 +13936272653 +15820630911 +15193156808 +13652129801 +18542371884 +18599108958 +15155809459 +13993045062 +13680420836 +18870440633 +18588199322 +18831307603 +15804943745 +13626490328 +15155888847 +13624299554 +15895595007 +18864788550 +15846515062 +15178188515 +15135288823 +15113680182 +13926310826 +15803387320 +15832991056 +18833021172 +18856967309 +18562506744 +15179031729 +15123850628 +18881201122 +15176994351 +15109957032 +18549261776 +18872085021 +18588524282 +15894766681 +18564297239 +13620314236 +15839844601 +15117599715 +15886599113 +13920099963 +13923434503 +18862252900 +13991146283 +13978117692 +13966024210 +18574858574 +18878587561 +13921025681 +15128407977 +13669707331 +13987182391 +15803868541 +15142065722 +18504198763 +15882613794 +15827253588 +13982076423 +18802941447 +13673951255 +18857411512 +15115301074 +13630674957 +15108204925 +13671394034 +13649867480 +18880575788 +18524003925 +15847087801 +13671626117 +18521276633 +18873598222 +18568881500 +18524697679 +18887977587 +15881207358 +15891214889 +13980389992 +15804179971 +18858958431 +15130708563 +15802350057 +13695424768 +15833598181 +15835767238 +15872984892 +18517003002 +18555367686 +15842066899 +18872682030 +18867236492 +18832843621 +18544210625 +18592176094 +18514507438 +15144528819 +13922419698 +18510620508 +15873599850 +15150107358 +15112701323 +15136744126 +13679619155 +13983663299 +18803151660 +18815822091 +13978344003 +15125711672 +15136574804 +18513842147 +18873965966 +13673081582 +18816893373 +15808692376 +13645538574 +18588807459 +18584294077 +18862524373 +18834494027 +13637220741 +15140206839 +13690697036 +18571578676 +13992819507 +13971026049 +18540006408 +18555213863 +13913044804 +18567556559 +15166090768 +18820281110 +15183027488 +13984397385 +13975230156 +15123104327 +13650748766 +13944952480 +15852403022 +13967897523 +13650828244 +15811677008 +18863074696 +13954658862 +15839855239 +15164561737 +15890266206 +13991835195 +15102533386 +18834810161 +13975038387 +13681450424 +15867039571 +18502822721 +18516821597 +15125529234 +15862502895 +13931691661 +13923503283 +13665803311 +15881777974 +13645662025 +13661424622 +18539634019 +15877913001 +15126240032 +15867938319 +15178778635 +18849290792 +18885853078 +18883302166 +18841409664 +15876199568 +18891872216 +15104480684 +13934493173 +15102432295 +15835876370 +15155286498 +15868590850 +15895412979 +13947753469 +13960961622 +15132266355 +18566166025 +15179867252 +13617153700 +13680629672 +18547877336 +15125995135 +15823916149 +15813007015 +13622483252 +18511572170 +18868112532 +18811088545 +13646346518 +18503380385 +18509724022 +18518882625 +18886633521 +13677984898 +13621796377 +13619060936 +18510900206 +18583503182 +18530807769 +18841381147 +15164009295 +15869230902 +13651633178 +13696381099 +18883536216 +15195828044 +18533260255 +15816921512 +13675558736 +13988352076 +18529123012 +15190114483 +13944684021 +15193880435 +15197756778 +15844310501 +18898414790 +15130580308 +18569270906 +18851987694 +18819243118 +15188394038 +15802568874 +13917777461 +15108972440 +13998913722 +18861417956 +15115380437 +15118252870 +13606395420 +15186478789 +13919449024 +18582688399 +18542763083 +13679394281 +18888026197 +18513169795 +13997261885 +13687624367 +15144999067 +13641010841 +15160109253 +15195449959 +18829616677 +18555891079 +13900233232 +15849754484 +18889017805 +15175868882 +13691791013 +18864214740 +13679654627 +15123046601 +15852614641 +15196040761 +15867081300 +18870677672 +18582169944 +18843149898 +13685833174 +13928866017 +18837832135 +18557102099 +18543560118 +15122428450 +15175890781 +18591373467 +15899125323 +18831551171 +15855626731 +18574924691 +15179023751 +15127403192 +13628901308 +18555717396 +13626618544 +18883776605 +18813567482 +18871477529 +13931898901 +13931950516 +18838002734 +15116096652 +13646372691 +15836233063 +13973823042 +13988903676 +18887564390 +15120353236 +13681163518 +15892280855 +13617906920 +13985697673 +18846139294 +18574651419 +18589037670 +15808437222 +15193204033 +18576063216 +13944275046 +15170977154 +18538115230 +18881599104 +15825840085 +18534878311 +13680379988 +15165343501 +15827157721 +13638423440 +15876251968 +15161398029 +18595468972 +13903749759 +18537148733 +18531618250 +13641263847 +13990556409 +15108040362 +13641276562 +18583482506 +13680214110 +15137516326 +15171322770 +15185206199 +18807894529 +15832002433 +13689779281 +18871278966 +15182382857 +15147594410 +13698964057 +15844109624 +13976491718 +15163625351 +18899685137 +15188388182 +15896552242 +15866634341 +15805661346 +13911496694 +13656182040 +15100840977 +15195926174 +18890799694 +13665934977 +13637364417 +18839194516 +13656813288 +18862323132 +13967226915 +13639327450 +18830838202 +15123766379 +18565537204 +18805626968 +18503902601 +15805204986 +18581620445 +18894581606 +18808988138 +18599235296 +15140056146 +18510542857 +13602230388 +15894338737 +18837594372 +18869935656 +15158695054 +13655502023 +15839015620 +18578027199 +13951742574 +18851319009 +18801340344 +13657180246 +13696809854 +15103279669 +18511909725 +18872414024 +15812284274 +15825275170 +15877387674 +18845969604 +13626654718 +13932607033 +15156283034 +13978590158 +18580482596 +13916657704 +18554354883 +15150143024 +15853224354 +15811843436 +13964157213 +18854953271 +13666142832 +13666834618 +13674779299 +13647679858 +18886680960 +13624543667 +15108503763 +18836196946 +15892187971 +13938396218 +13677328929 +18863829777 +15850735682 +13666241537 +13929262912 +15183603718 +13901327706 +13674379880 +13919224146 +18584856778 +18858294040 +13626394634 +18860407258 +18542943583 +13601470638 +18564731889 +18815150361 +13604531998 +18522491243 +15179478701 +13639324307 +13685249737 +18831381739 +18593336528 +13951206948 +13665232780 +13903908394 +15885518333 +15864254652 +18831823099 +18507137281 +18848838073 +15172830191 +15800853425 +13684894442 +13695494393 +13688994573 +18584032386 +15124909865 +18827445054 +18543132973 +13917235383 +18518899569 +15111073919 +13618842874 +15858321900 +18559527414 +15127230998 +13612379212 +18591177474 +18566192900 +18588113727 +15166025981 +15840961077 +15838189632 +18542685969 +13931013743 +18587145617 +18551903024 +13954897665 +15887413602 +15858567175 +15833119459 +13999684644 +13698120238 +18878744806 +15808483209 +15121383966 +18817582360 +13988293303 +18834804432 +13947772261 +13680377522 +18894535382 +15121836745 +18864584819 +15885532399 +13922995883 +18520121099 +13618622497 +13633086630 +15827423719 +13698161901 +13684360988 +13965459389 +18571741546 +18883098779 +18892267826 +18587004872 +15133883430 +15191783691 +18869134231 +15178136338 +13990974512 +15166661222 +15198256764 +15101039013 +15193282193 +13637318378 +18592865731 +18891774689 +13914268217 +13908872227 +15815163477 +15875733912 +15101012384 +15134759163 +15800102914 +15150248685 +15882995816 +13987745032 +15840537330 +18589670741 +13681932334 +13980114366 +15883216400 +18847229273 +13615409390 +15810576847 +15891434298 +13990189642 +13903259016 +15171855249 +15871118890 +13944610255 +13601134059 +13988118408 +18521525273 +15127402244 +18859344180 +13924056820 +18521262873 +13666023276 +13916163157 +15863287563 +13623509703 +13669443828 +18567690634 +18543089667 +18846972812 +13926786030 +18560099855 +18566655314 +18896893784 +13630754814 +18566024467 +13904483595 +18815957283 +18886192392 +18546777076 +15156503431 +13686041266 +13678284204 +13960252268 +15137773404 +15100403951 +13984336919 +13615127739 +18553970652 +18584478547 +18854242984 +13980866568 +15839130371 +15880304434 +15102486577 +15110151649 +13916068684 +13938281486 +15864218818 +15816625233 +13655736512 +18857711436 +15883340078 +15824926236 +13986442116 +15121265268 +18817424797 +15809077184 +13917784669 +15106165457 +18593721860 +15819750011 +13965176914 +18834574948 +18514893051 +13986578184 +15184118174 +18569951442 +18568634269 +13991225146 +15127331940 +13656291868 +15195558458 +15837982372 +13606346571 +15842284538 +18543330169 +13913638796 +13951011820 +18887880932 +13925521130 +18857682654 +18558701816 +13621454947 +18813530123 +13983090468 +18540564619 +15174774965 +13927922653 +18884391420 +18569195220 +18886205025 +13913121445 +15181140465 +13626474081 +18572265235 +13961436788 +13609465555 +13605231563 +18867076325 +15140555600 +18511301102 +15117871856 +13905531063 +13987217180 +13931462072 +15178735274 +18858374964 +18548987491 +18597615334 +13615115978 +15812875749 +15189602615 +13985116021 +18501438242 +13610772896 +13644622912 +13932736273 +18820966389 +18500110156 +13996010441 +13693779295 +18541938358 +13981129478 +18511279003 +18817473166 +13909305760 +13950704409 +18588849912 +13619448753 +18503581914 +13699983313 +13697577183 +15845705332 +13957158705 +18845362279 +13663903180 +18592733203 +15191649062 +13949631126 +15858745035 +18585062052 +18866354081 +15125731817 +13678682668 +13906695358 +15835906326 +18537562346 +15129344201 +13916986018 +13975250803 +13913079076 +18898684263 +18827304736 +13943938897 +13696194895 +15103027074 +18569109860 +15805356618 +15151318515 +18897537838 +15136773292 +18850322706 +15882377752 +18805404686 +18598244358 +13675055697 +18519001677 +13680636389 +13603282455 +18805024072 +15885498155 +15158526709 +15169305167 +15834453664 +13934238336 +18516596665 +18543374265 +13947906046 +13933894796 +13999515645 +13958536521 +18594656550 +18560868680 +15852108627 +18896104507 +13956058626 +13639942470 +15849964571 +13695391027 +13999058156 +18856381113 +13921702205 +13944765279 +15895528947 +15175645423 +18550224310 +18838486884 +15868252973 +13646394077 +13951639712 +18505829349 +18814855067 +13902112880 +18812302262 +13682508853 +15839120630 +18585708946 +18599122828 +15177971209 +18866839835 +15115358942 +15859841659 +18856676721 +15128036158 +15813377926 +15832452334 +13604318964 +18584839405 +15160664036 +13903900793 +18585572958 +18895467475 +15130380279 +15107054689 +15107930808 +13936539887 +18582638504 +18873759012 +15178977020 +18585267930 +13692323421 +15897538853 +15805793305 +15848552359 +13670457398 +18515416603 +18813378588 +13981049156 +18546611674 +15186176300 +15114132860 +13654205980 +15809002129 +18815516283 +18842580230 +13928821348 +13959576534 +18835691432 +13695667097 +15137120268 +15866382139 +13992116387 +15137341081 +15842262856 +15118939409 +15156084173 +18599050128 +15896858405 +18808032818 +15186795039 +18841094806 +18548620844 +18506357243 +15154369702 +15874200868 +13683089844 +18529243328 +18866124697 +15831516257 +15185340132 +13618909326 +13997398592 +13918704609 +13679330028 +15113281387 +18880825814 +13924512695 +18554030306 +15127784090 +18860397033 +13920404854 +18809414371 +18804962827 +18848175642 +18556966255 +15186497638 +13690973726 +13661438954 +18526613853 +18568738183 +13926566026 +18585004395 +18581063194 +15188948882 +13612599599 +15185568072 +18591846018 +18501828257 +13602527178 +13659964644 +18867838571 +15894800659 +15833887531 +15153031004 +13685576539 +18894951371 +15181567105 +18856572402 +18589044382 +18579466197 +15180550688 +15873501528 +13631853980 +13952516654 +13654974011 +13918138897 +18509641486 +15196983058 +15118572066 +13938175143 +15826587855 +13699864013 +13661520028 +13962886494 +18536945922 +15850341287 +18854995148 +15876751869 +18507841275 +18528308127 +18560139993 +18512475813 +13692414385 +13986040255 +13629692532 +13612861869 +13911397380 +15825999704 +13992241965 +18888103299 +13689652428 +15836539109 +15898559111 +13605660607 +13624685977 +13672074628 +18802961274 +13636015542 +15888337368 +18811106192 +15145674590 +13693456333 +15881048670 +13923320298 +18861971473 +18570046250 +15821951900 +15851262067 +18556229985 +15121851526 +15187041200 +15899497015 +13604573082 +18812067615 +15151723853 +18885877109 +13622594839 +18537009524 +15850853941 +18863814974 +13963750117 +18808636377 +13664912400 +18578033581 +18896509543 +15116852934 +18889099183 +18817447318 +13913202902 +15808445896 +18575438268 +13931279811 +18831770982 +15800825861 +18525464348 +13610238995 +13929300627 +13909570866 +15106602730 +15106168741 +15118617956 +15143268393 +15890670682 +18518388716 +18563455228 +13692639929 +15174076491 +15128662777 +18585696579 +18532794100 +15104069874 +18576119976 +13604323688 +13974848599 +13906302782 +13612186316 +13678542070 +18800487244 +15190863113 +18812728060 +15152748428 +13974455134 +13662641900 +18527342228 +13912462469 +15868010391 +13615640469 +13939781299 +13937333822 +13640872666 +13667826736 +13602432040 +18800106704 +15122100301 +15193175937 +18593369660 +13628490170 +15831118865 +18527519634 +18561720931 +13905540918 +18840332222 +15880824084 +15873614726 +13698492135 +18899279839 +18519339189 +15858823707 +13671941123 +18815591275 +15149740303 +18526174502 +15191029775 +13662456124 +13976931304 +15822502565 +13623412978 +18857540455 +15846522707 +18878273378 +15843186724 +15879856313 +15887895994 +18839396952 +15148873020 +15180390566 +18521706008 +13610307303 +13947413890 +15124263398 +18571751081 +15185271450 +18551012840 +15180535374 +13995747248 +13619149914 +15114289611 +15166159366 +13664878448 +18567217309 +15865613085 +18892171326 +13978717198 +13644691844 +18817710059 +18863416431 +18543226964 +18591261327 +13945900417 +18500475526 +13653192641 +15154973554 +13908957635 +13629438716 +13617340246 +15863082364 +15887409945 +18836509105 +15149613705 +13943881195 +15199082662 +15837191711 +18874041763 +15113132101 +15882738582 +13697477118 +18553637375 +13623431164 +13931011405 +18519927381 +15860213283 +15820859219 +15179174562 +15886432860 +18823854744 +13950181938 +13978281909 +18549685055 +13672026381 +13617424884 +15840069246 +18870340125 +18866324170 +15178238054 +13907270318 +15800480953 +13687180712 +15135466490 +15884633468 +18533241030 +15146469597 +15826438714 +15887135157 +18880563230 +18849739436 +18879138497 +13977181321 +13928678848 +18506534944 +15156674126 +13643163027 +15817305978 +15871807469 +18544780075 +15171083196 +18860431756 +18830828045 +18843971218 +18811666335 +15157893799 +18829086829 +18837266699 +18542723572 +18863277391 +15115522199 +13928519565 +18549384154 +13968347197 +13654572078 +18858228613 +13655605903 +15181820203 +15137177802 +13989958756 +15873483499 +18578800275 +15179544173 +13951369836 +13629023204 +15882789506 +15109221264 +15824874603 +15833968847 +18839812060 +18855243427 +13909452959 +13635630472 +13611477929 +15827487791 +15821458040 +18818164053 +15819219332 +13643500742 +18895724972 +13941032123 +18825406635 +15851005298 +15802027375 +15148389569 +15101955144 +15131365125 +13625276994 +18862524971 +13936806211 +13607929581 +18504545559 +15143235684 +13947788789 +15167053535 +18505016634 +13916125400 +18851965164 +15819270628 +15878719158 +15163666314 +13955444585 +15198973209 +15845912284 +13970542619 +13635796526 +15175613991 +18824846250 +18564750523 +18811843191 +13629163701 +15127873405 +15847946355 +15135325238 +15833984269 +13619011358 +15137983419 +15806951076 +15833984419 +13673580492 +13996613640 +18593226985 +13974474218 +15154274557 +15157058166 +18599695718 +15173401592 +18588516551 +18581195754 +13694351954 +18816601814 +13912689580 +13697343725 +15811324435 +15166230930 +18542900304 +15848017202 +18533005254 +15158774182 +15193541074 +15198582454 +13650898346 +15122869136 +15148697231 +18865740165 +18535994899 +13682046007 +13951705740 +13654066992 +15182483568 +13672195921 +18588564345 +18836126557 +15895143770 +18528212055 +18885120440 +13933860716 +18848489437 +18559075491 +18566477824 +13959741889 +13646059382 +18898893604 +15130289536 +18813131379 +13905857167 +18829592462 +13695645548 +13634578910 +13624967498 +15163150661 +13677221145 +18550549955 +18540616707 +18502210919 +18564556942 +13910546977 +18813120443 +15808151605 +13639204853 +15182373268 +15120036091 +13609421263 +18566330722 +13900816453 +13617620275 +18524190421 +15870246472 +13686964161 +15180773843 +15194540705 +18577728419 +15150348156 +15861224847 +13654884392 +18506614948 +15816472148 +13968660412 +13903346688 +15849732285 +15150323563 +18548090268 +18573642603 +15842278610 +15101982563 +18513539485 +15168635232 +18590093062 +15898816868 +13945606039 +15899803939 +13931680882 +18557353616 +18839259845 +15804640543 +18520387352 +13948396527 +18515703365 +15837197492 +18570009061 +15109762606 +15179069499 +13647449054 +15193912016 +15141674137 +13968279998 +15812544430 +15158337369 +13916489980 +15873313016 +18591630122 +13961942823 +18850450510 +13911112125 +15858994053 +15827210937 +18530942742 +13941446771 +18573826428 +13904663039 +18526916952 +13647775860 +13609490335 +13933361423 +15888714058 +13680655573 +13656333751 +15899335728 +13664342647 +18531068565 +15832251580 +18575864286 +13952153286 +13969784630 +13697900402 +13656037036 +13633374177 +15844105891 +15175691182 +13688856594 +18580651938 +15183581417 +13663377975 +13956537181 +18555630242 +15191349231 +15824383627 +13963009232 +18842423957 +18570170473 +13641598779 +13630014859 +13990062883 +13938313418 +13919127780 +13926055845 +13930407664 +15180878228 +18818318680 +13912595445 +18835404241 +13658881455 +18804108099 +15886417902 +15870241127 +15829277835 +18538863294 +13934232377 +15819264724 +18831159188 +15867490829 +18870523370 +15195288754 +15113246967 +13960080811 +18541198051 +18544349320 +15808890516 +15186458276 +18803826776 +15111183577 +13966408686 +13952711555 +18814244919 +18536896556 +13981133284 +13999996611 +13650412905 +15110521371 +13659303546 +15844851751 +18597676594 +15813237410 +18569373409 +13931805800 +18592949428 +15109213774 +15107345365 +18567441675 +15813064877 +13677551858 +13980215331 +15102791612 +13956290849 +13992502890 +18879139734 +15893198249 +15188678187 +18553568614 +15817394149 +13619636663 +18542955427 +13634145104 +15812988772 +15123201194 +13922983060 +15149349616 +15189545545 +15155200776 +18832326232 +18835862187 +13942861729 +13616471296 +18888126864 +13680641692 +13649902660 +18811298524 +18846969961 +18823786569 +13915100981 +13913405933 +18884824398 +18899837851 +15810689384 +15186722254 +18802261245 +15833111232 +13908827232 +13682202861 +18508677686 +13922879269 +18890917131 +18597234284 +13603898905 +15805015442 +13985607220 +18810836674 +15896595707 +15139909644 +18889556158 +13615271363 +13997819367 +18576460717 +18597658587 +15126682893 +13926458623 +13977510164 +18520562652 +13919498605 +15838339574 +15808148983 +18584627839 +15147730787 +13612174475 +15166605460 +18534908323 +18508673373 +18515631284 +13680121914 +18526187281 +18805888239 +15194106359 +13618798587 +15168187841 +15106287211 +13956240388 +18569941923 +13674504515 +13676689235 +13655823840 +13939730471 +13960849090 +18855407056 +13622183408 +13661161838 +13903080387 +15153114038 +15830725202 +15171014606 +15898586173 +18572635730 +13685045613 +15858677865 +15144655423 +15830909900 +15819653258 +15142194889 +18586687366 +13632856210 +15170816615 +13634278699 +15198752958 +15199877391 +18510585202 +18854333993 +13669018745 +13608459837 +13668445468 +18806240909 +18536072821 +13957882497 +18558040652 +15816446844 +13969307720 +13999165257 +13930644781 +13618609464 +13903072673 +15848450460 +18847587505 +13677992631 +13642097931 +13963657593 +15162676958 +13659364375 +15882034678 +13900018002 +18861337360 +15878567855 +18592570982 +15199313189 +15879045867 +15886664184 +15880425555 +18522898610 +13928475201 +15199056493 +13664868328 +13924451941 +15823217282 +15161370976 +15800681809 +15882215457 +13690758683 +15106205631 +15151451927 +18834564099 +13986923776 +13910253053 +15105693347 +18510161922 +15826783586 +13618927055 +15174715622 +18506862879 +15108446503 +15872424236 +15895180252 +18824726933 +18821619446 +18863616597 +18531585958 +13906960776 +13925694320 +15131775022 +15886662505 +13637733739 +18888399882 +15145897572 +13980330930 +13914452131 +18867882858 +15133376086 +15128790522 +13600012493 +18852196347 +18545568075 +13989087090 +18533058121 +18880560009 +13616713918 +13698514515 +15867096383 +18808090205 +13664371056 +18833694325 +18880039894 +13964461555 +15112410930 +15179362764 +13950922503 +15891998172 +13920253896 +18841565831 +13629153071 +13694144358 +13986709313 +18573975135 +13603113532 +18843236910 +13634873499 +15865066722 +15171017902 +15813811264 +18548427683 +15811360854 +13639056378 +13653800972 +18564227962 +13934447244 +15168252552 +15164427374 +18806646725 +13906957217 +18842084438 +15802705288 +15180487081 +13698713287 +13607593215 +13686343681 +18805687590 +18544072727 +18596025635 +13606566951 +13651324317 +18585162168 +15824980225 +13685000132 +13945501183 +13921357376 +13612071654 +18563710433 +18886669193 +18589997791 +13612755775 +13924605089 +18545596290 +18584013402 +18549012713 +13960911397 +18559832305 +15189795574 +13991703685 +13622984811 +18833761934 +18547463906 +13666866371 +18549227185 +13905695903 +15816729423 +18887286194 +13671651715 +15138983336 +13941584946 +13904526275 +18523905144 +13607421319 +18560881967 +15851308903 +13916652584 +13975236855 +18565828880 +15890966533 +18545927500 +18584588260 +13682136993 +18871092637 +15801949099 +15853571503 +15897552267 +13658921131 +15837686354 +18855756795 +18892884915 +15131446871 +18832805822 +13915135470 +15198509985 +18844465870 +18598684500 +18551184969 +18515683104 +15187341994 +13964135589 +15181001241 +13634970264 +18811000596 +18522135380 +15123741056 +18537341497 +18584013895 +13985508146 +13673783231 +13947663386 +13901628344 +15146279175 +13676358300 +13969040614 +13979539517 +18823894300 +13634598650 +18559780838 +15802509086 +15116816416 +15819689574 +13976960694 +15867077806 +15882307322 +18512981858 +18880896200 +15197371603 +13678179550 +15148668111 +13994807075 +13968470251 +15192519369 +13685410333 +13649911930 +13997878609 +13660487111 +15148728492 +13677536552 +13688187742 +13628366995 +15116348701 +13654937374 +13984092808 +13912671755 +18511505628 +15158888543 +13681432074 +18555230580 +18839170878 +13639040650 +13601374666 +15845617579 +15130171152 +18841775236 +15140882125 +18812466554 +15844484182 +18504305014 +13923338445 +15884730684 +15146476261 +18890577636 +18850062105 +13622001531 +15839084773 +15135827647 +13688230040 +18865386967 +18567941811 +18853009058 +13939401424 +13659485852 +15864103349 +13665892847 +13936334976 +18580836908 +13938042734 +18811367341 +15867213461 +15871645856 +15136671572 +13915870381 +18573485516 +18810234677 +13632776132 +15899926665 +18591414606 +13667656108 +13686130166 +18510098096 +13967385075 +13608397558 +15863087533 +18853448346 +18538020471 +15808319679 +18899609047 +15801575316 +13675433990 +13921051126 +13971392943 +13986617086 +15148692177 +18836233746 +13606997505 +15888105918 +18891143139 +15148274801 +18800367474 +13944772536 +18874595785 +15887772135 +15853633924 +13685894428 +18575583280 +13662845460 +18819632385 +15811660494 +18879055691 +13927383691 +18834549241 +13638999551 +15124376381 +18546093573 +15800347301 +13606636353 +15834767483 +18879716575 +13643296209 +13615944543 +18597401538 +13971168249 +18500039984 +18869249164 +18526905600 +15120439681 +18544165365 +15188807921 +13998803477 +13989775358 +18519602685 +13669955970 +15887507059 +18836390859 +18831020695 +18553833582 +15879135690 +18818884481 +13655130300 +13612583231 +18848043906 +18829378447 +15875778563 +15101585015 +15101546649 +15859062274 +18877498440 +18537711396 +15114433804 +15880937429 +18515174774 +18810659726 +18550318502 +18539427268 +13651746699 +18580615839 +15175492183 +15184742695 +15129131519 +15872003709 +15132270122 +13680665035 +18526361458 +15188932933 +15807587680 +15191647527 +13924152043 +15818968160 +13660537830 +15166118618 +13981681828 +18574692717 +13956060345 +15111231481 +15129606864 +15832064943 +18885881928 +15897014796 +18568097316 +15112232232 +15869024849 +15832569433 +15897365442 +15188377946 +18854860546 +15152114477 +15894749512 +15138824467 +15873957280 +15121546006 +15111812422 +18803143036 +13918613517 +15113314681 +13603446605 +15132325222 +13995102249 +15106916019 +15801703417 +13978391389 +13626063900 +15859517593 +13968849976 +13936795570 +15157362699 +18844270809 +18516050442 +15118250766 +18536439308 +15142497140 +15167470184 +13965151354 +15864635271 +15807015654 +15160463798 +13611351716 +18805374208 +18560393813 +13907408499 +15130833920 +13986489613 +18814176889 +13626199968 +15119755655 +18899598100 +15179864004 +13673992800 +15127691153 +13934358779 +15818542401 +15817876404 +15888492304 +18816096805 +18564743593 +18890227564 +18818469145 +13604773839 +13690435251 +15805155527 +13685294500 +18896893095 +13940192505 +18518251097 +15891571400 +15194317465 +18849877813 +15180978889 +13973005511 +15186719977 +15896422182 +13979131113 +13910174538 +15831937600 +15108888993 +18543358521 +13966452950 +13961714279 +18539240591 +15800743247 +18856732239 +15109705486 +13672633281 +13954122803 +15130267441 +13930833022 +15834248239 +13605508475 +18824294094 +15128143671 +18847654336 +15856810170 +15888324108 +18564819783 +18536008247 +15157468629 +18877734045 +15191572991 +15124659873 +15836063526 +18520709890 +18579381778 +13626180197 +15133290981 +18549122880 +15869793572 +13662748752 +18542428642 +13698707086 +13634818103 +13690122464 +18589084979 +15815641072 +13676082328 +13962209837 +13945434801 +15111968495 +13912373261 +18510746008 +15835004489 +18541190414 +15125587036 +15851191481 +15860183603 +13939858831 +13669026689 +15865020889 +15146012569 +15185706238 +13939345780 +13971480589 +13629469829 +13629473345 +15836094695 +13609260620 +13632157495 +15888749851 +15831466150 +18539073403 +15157455979 +18805036096 +15855965176 +15148059982 +15134107726 +18561854559 +13935509729 +13986772363 +13616527719 +15179665436 +18827997841 +15186578370 +15151872447 +13920797449 +18828405590 +15176070047 +15109696709 +15880023181 +13665648025 +18832430731 +15829712575 +18829317422 +13620672222 +13646097354 +18534881745 +15811905390 +15116907606 +18883255074 +15111477289 +18522240859 +13682525858 +18893534858 +15121245991 +15138625062 +18858561799 +15197843033 +18845884414 +13904978633 +13686176892 +18517807433 +18588068963 +15877134628 +18571746610 +13921068546 +15174090304 +18533275517 +15885273248 +13618545529 +13907865657 +18591196925 +13610866926 +13636997068 +18831689934 +18553253497 +13986419082 +18826662138 +18585534939 +13651504920 +18504558177 +15163776429 +13910057823 +13962378398 +15116609849 +13686946635 +13914134641 +15886348616 +13655542747 +18579830623 +15832227310 +13993526515 +13607468727 +15801282865 +15186671571 +18894722918 +18835122183 +15825619324 +13695260604 +18547912856 +15157346274 +18531897341 +18556020567 +13696164015 +18515964712 +13655534116 +13622657340 +13990351571 +18856875209 +13969033797 +18509462646 +13632477557 +18527773146 +13988111147 +13916694324 +15872510628 +18512791226 +13916631213 +18591011344 +13976588051 +13630690742 +15100825280 +15819133845 +18500275656 +13692297644 +15824167488 +13680253202 +15815894174 +15143015593 +18504362375 +15852995781 +18572358727 +13950467764 +13908953426 +13991362133 +15103946600 +15814913798 +13999895776 +13614971755 +13998796586 +13665207238 +13903122991 +13923932541 +18554510907 +15878961335 +13639600806 +15873397254 +18537603186 +15855388250 +13925734571 +18898054671 +15867476194 +15167071228 +18874153982 +13959810733 +18575253480 +15888223933 +15110310328 +15165304852 +18579500210 +13980898675 +15840783634 +15105709922 +15181596354 +15894712810 +18564103811 +18839722496 +13631365929 +18513634728 +13649897681 +13905580163 +13660711375 +15143826093 +18513256157 +18585155571 +15127931966 +15828164439 +13680143333 +13645589438 +13902956501 +18832542594 +13649192079 +18548309298 +15806428880 +18886027911 +18893653881 +13945169454 +15819916555 +18818359239 +18578922534 +13927547368 +15898817090 +18532386505 +18586508828 +15152240917 +15881424359 +13919657935 +18809167169 +18847839594 +18589150235 +15199974436 +18569631708 +15107234741 +13628945964 +13957946361 +18850188547 +18884767061 +15123858807 +18893851942 +15107141087 +18810007985 +13947372784 +18867748452 +18833113965 +15144795188 +13971378157 +13665265655 +15179876553 +15186828434 +13900247505 +18814609270 +18544967972 +13653919196 +13641830224 +15134547242 +13628815758 +18847975183 +18567509705 +13643860160 +15111068153 +15128239509 +18813320664 +18860073920 +18596628316 +18568931112 +13605763582 +13649397265 +13918052232 +18587495022 +18510684915 +13917708872 +15123206549 +18895248936 +15855304265 +13954102661 +18531611581 +15883727165 +15129446517 +18556059634 +18582482748 +15126103786 +18878057334 +13994676767 +15161339408 +13985275507 +15858691115 +13655718843 +18819676062 +18895511178 +13671063931 +18805117032 +13628079362 +13676783529 +13628845035 +15120384162 +18841953165 +18555130485 +15111319925 +13906748761 +18571175050 +18831255893 +15186184209 +18584511491 +15812753326 +13699274499 +15894261049 +18532052904 +18517278731 +15126845307 +13676526295 +15886361322 +15190048801 +15879815257 +13682904748 +18899457137 +18528665898 +15875280142 +13934343268 +15129784330 +15816170287 +15108771598 +15814084714 +15814981642 +18555926193 +15179898775 +13676668628 +13643291348 +15146523884 +13943005852 +13946016736 +13611129286 +15842734626 +15134178241 +15899389473 +15819160614 +15848889089 +13999775595 +13915941995 +18564991502 +13632096247 +18526386840 +18571476858 +15840118078 +13938947337 +15841749863 +15176062842 +18875296218 +15173636074 +15893569676 +18846183634 +18801220234 +13694693909 +13627844675 +18883076207 +13653596964 +15114045273 +13959136020 +15198804357 +13630091761 +18881545355 +13661126587 +13685423033 +15825624966 +15123774807 +13993855899 +15830997576 +15873801401 +13995500988 +18868806991 +13981172602 +18861202049 +18550759865 +15881434229 +13602714461 +13949431698 +15844130787 +18520507602 +15172275642 +18567585581 +13604165169 +13999974141 +18506243877 +18865145789 +13694544512 +13656214696 +18853143417 +15188872342 +15892317811 +15185968210 +13608504845 +13912193067 +15116564028 +13658485458 +18590862400 +15176689057 +13626621553 +18553957682 +13668524913 +18571338146 +18848092319 +13625287035 +18814919812 +18521697631 +15103978841 +15889244469 +18833560489 +13656963433 +15809920818 +13989812970 +18871091771 +15803389409 +15182247958 +13691519410 +18545125389 +13950867136 +15895811009 +18507110257 +15142564201 +18811002755 +13915989380 +15139868148 +18596447523 +13647315136 +18818440358 +15163186838 +13957300424 +13680580582 +15184900324 +13923059068 +13984556118 +13676830892 +18811038519 +13942865639 +13695578298 +15144800175 +13614293554 +15840580264 +18811758420 +15108993665 +18596567201 +15838420136 +15828449884 +15176274603 +18563343744 +18814682012 +18859787879 +15144089943 +15838712143 +13948412449 +15897141273 +13996191346 +18532430987 +15839871913 +13649888624 +18892014901 +13661347765 +18847760555 +13999373706 +13691746792 +13667983491 +13998413174 +13646909319 +15891690427 +15106824551 +18561910261 +13916363027 +15162315727 +13946222426 +15129348120 +13664122040 +13604106069 +18503446291 +13951574945 +18562847781 +15802107115 +18853886592 +18540245718 +13931811681 +15120968728 +15162860627 +15198890109 +15174141008 +13993226397 +15855864924 +13953878372 +13932480445 +15114095638 +18812577531 +15162181570 +13610982257 +15148411375 +15890118414 +15808153769 +13991041260 +15867510984 +13659610990 +15157551233 +15149845123 +13666025225 +13656078133 +15193194323 +13909318180 +15898594847 +13940770702 +15132292837 +15146450229 +13910631314 +13911529145 +18830993010 +18870026889 +13685705051 +13942318556 +15175667052 +15197547222 +18876713867 +18557395901 +13969786750 +13990778996 +18530555763 +15177603211 +18522875306 +18892081026 +18566282758 +15118892314 +15869304664 +15825560408 +18862774179 +18573300569 +15815580161 +15162936617 +13959986881 +13945074040 +18875880029 +15194407510 +18800094488 +18537285834 +13936535349 +18897709605 +13658626903 +15103159957 +18565848795 +15179688715 +15808384167 +18854934894 +13964472626 +18810913583 +15801719483 +15837140043 +18844944072 +18819957974 +15165221265 +13925306680 +15128300029 +15817373612 +15837922488 +13688251936 +13667764894 +15894924391 +15168659770 +18832639477 +13605296317 +13695959927 +18807434384 +13685000766 +18595843761 +15880146387 +15848783657 +18565736728 +15838060006 +13686061557 +13668187532 +18592834633 +18541386510 +13973973356 +15148447209 +13910357737 +13678465522 +15149695048 +18845233889 +18534205545 +15149220788 +15817563417 +18553567162 +18513941170 +18898398976 +13690630855 +13645262727 +13939371764 +13938944122 +15149753856 +13929316571 +15838434478 +13949053500 +18532127128 +18548889034 +15833768829 +18897046896 +13925990497 +15198239245 +15849487249 +15150664087 +15154173576 +13666280251 +15803967901 +18511352131 +15194743960 +15114028477 +15139037307 +13609810889 +13902831251 +15886693917 +18586921279 +15843713185 +15175715509 +15846436160 +18833227278 +15857388241 +18578217745 +15893723620 +13699816705 +18867929935 +13633374618 +15126044477 +13904617540 +13697840262 +15863222207 +18589032240 +18871998306 +18866707723 +13999220177 +18550638196 +15163352277 +13902461133 +13647714288 +15888431584 +15801980120 +18575224199 +15142236052 +18575115687 +15138659964 +15104292556 +15822327465 +15887415900 +18893452878 +15187460599 +18895348152 +13679906164 +15154722617 +15885674656 +18885461213 +13978446591 +13660742818 +13647791871 +15826635884 +18855992235 +15888571285 +13630511694 +15114111881 +13616163493 +18531562862 +15185836803 +18527670002 +13605007612 +15152706101 +15118594607 +13927015401 +18587214139 +18560702230 +18583867001 +18821176272 +15136383089 +18876376271 +15137844473 +18570178791 +18544827480 +13957577397 +13635172437 +13623938312 +18806266890 +15857948940 +18836250725 +15833275275 +15120867453 +13661212112 +15100609301 +13948058825 +13676636136 +18817595927 +15145008621 +13609740281 +18868182584 +18538961853 +13618165207 +15127138986 +15881097185 +18512640720 +13988800777 +15860674689 +18561743024 +15845528159 +15115587626 +13996067915 +18513383270 +15808552249 +15882471947 +18592727457 +13613415827 +18876473993 +18852764707 +13640324557 +13956725322 +15849056772 +15179180965 +18597997499 +13696846510 +15185988845 +18523818125 +18800902615 +13614512759 +13900614250 +15821957001 +13645871930 +18810847534 +13667017696 +15162708503 +15809490562 +18560815292 +18859127546 +18531322363 +15841689715 +18575378751 +13642767774 +18582536399 +13903529338 +13926384372 +15896361594 +15129844246 +18582559680 +18843325694 +15844386058 +13638426591 +15115650273 +18870835039 +18846980586 +15160533690 +13966855731 +18891437568 +15113562069 +15820607933 +18849621818 +13644255141 +18832751347 +15189246735 +13644559874 +13670224444 +13944501183 +15890530075 +18550049240 +13938920596 +13989038714 +15123759821 +18838340637 +15183276446 +13639023119 +15196454465 +15192048776 +15803205101 +15167960213 +13682339362 +18863250646 +13901512046 +15848026326 +18814698905 +18877967831 +13979346685 +13671885293 +15158499074 +13955514438 +15888916263 +18539853879 +15184949105 +15188215698 +15197623985 +15128417300 +18873454223 +13680811882 +15192611748 +18515849571 +13662963786 +18527765844 +18886164217 +15159950894 +13642455632 +15109746384 +15829567725 +13985444182 +13917046148 +13680728189 +13988882900 +15190561491 +13917942903 +13657089919 +18561627468 +18822550687 +15122179906 +15858385946 +18821222552 +15173770041 +15817885149 +13619416808 +18898933793 +18556634063 +13640978693 +13995776177 +15808237750 +18529055715 +13998525800 +18554201203 +18552435921 +18807927638 +18533406526 +15127904693 +15196798987 +13948078080 +18897605705 +13648396784 +18589132009 +13682510045 +15885878054 +13997038086 +15850656381 +18824542797 +18593065543 +13665480169 +18587144069 +18587798075 +15139926927 +18834394562 +15842343490 +13636025228 +15100041596 +18826236084 +15834263451 +15118147343 +13671962282 +15818519455 +13936309823 +15878142331 +18500797192 +18886624485 +15887742423 +15860343184 +13992939643 +13616413200 +18502636867 +13979992220 +18805604436 +15106379085 +18865782468 +18588644158 +13903781586 +15857124731 +15890608484 +15879802708 +13625713499 +13973164187 +18833495197 +13614738618 +15111765965 +15835910898 +18515415276 +13610723210 +18595137560 +18816804027 +18551084249 +18580981155 +15131127314 +15145352904 +15199748448 +18855550801 +13694241246 +15150561428 +15890295074 +18851216651 +15158413131 +18504596973 +18504721145 +18892339223 +15152795093 +18869336834 +13672108051 +13695424400 +18572574038 +15194382197 +18519247689 +18858248729 +13924126223 +18599337531 +18515580697 +18840913504 +18877828772 +15143745123 +15101154460 +13928738101 +15122530705 +18836725525 +13938274448 +13634778890 +18598203527 +13616880120 +18580609700 +18821064030 +15823528182 +13970997766 +18550007982 +13669260686 +18836038354 +15886559485 +18870919136 +18893798256 +15807187565 +13965973247 +13911853331 +15868477277 +18562337600 +13925370769 +13993487759 +15817769446 +15144693502 +13941064030 +18529103830 +15166665139 +13611541072 +15872037445 +15141907895 +15846067489 +15820401150 +13991744922 +15167935780 +15863068873 +15106680285 +13681349823 +13637066918 +18898459617 +18599139836 +13944189773 +13619233141 +13927926314 +15867996022 +13659158509 +13661642283 +15156261094 +18547365946 +15886985115 +15814817315 +18872072931 +18579251911 +13649598862 +18852494692 +18885477550 +13901790180 +18552846547 +18841282001 +13902716124 +18561950610 +13625810616 +13643688939 +13647154410 +18511286389 +18597605187 +13904913720 +18546584798 +18530812556 +15851994423 +13924173232 +13684930498 +18553813537 +15824791589 +18583199485 +13934057110 +13687426578 +18839098282 +15179038453 +15827869829 +13985285977 +13658684585 +13643634900 +15112527461 +13955391310 +15134568066 +15116281939 +13940820690 +15103107504 +15878823991 +13693927418 +15100231844 +13930008729 +18859170479 +15883697147 +15135314120 +15806480127 +18564473950 +15130031619 +18591164186 +15865540901 +15155897212 +18858321491 +13671149729 +13908593462 +15100865971 +13665094164 +15883479565 +18570230107 +15180160211 +15859461192 +15899187484 +13902942371 +18547114205 +13966577810 +13914107762 +18836706974 +15177497654 +15105456639 +18598935314 +18882877342 +15185396152 +18536926142 +15105616954 +13667719977 +13604210559 +18547449624 +15885137294 +13944999554 +18568736455 +18895581321 +15129179987 +15122722609 +15882729580 +13938299728 +18510136410 +18833660852 +13615968987 +13997815176 +15852526584 +13684453611 +18506683192 +18852798730 +13907516966 +13923269881 +13908525213 +18505026905 +15861514021 +18839631894 +15845152157 +18566391568 +15100293176 +15178383031 +18846631635 +15816628394 +13602376544 +13619974495 +13922725669 +18599312899 +13947659247 +13944841224 +18852972486 +18522062721 +18883699461 +15176546484 +18875293818 +15898106861 +13927465507 +13918438847 +13914188069 +15821835588 +15180864815 +18849648295 +13985374257 +13674533082 +13986582018 +15147323323 +13958301284 +13681572229 +18839710008 +13914028203 +18817845595 +15813448484 +13959022259 +18875382491 +18547096324 +13905232075 +18883809063 +18570606328 +13978952724 +15139426559 +13690018916 +18533756000 +13678936822 +18549308885 +13677150794 +18587112986 +18841435086 +18880779230 +15877221924 +18584042048 +13978910881 +15839480008 +13992508844 +18802396141 +13927538867 +15812814487 +15126818445 +13908669012 +13679047802 +18566523911 +15167166322 +13613035195 +13659732828 +13911295158 +15893657549 +13609888378 +15182000675 +18885829353 +15136125496 +15855187611 +15108122585 +15817864830 +13646894354 +13632713128 +13691170962 +18580805211 +13639585578 +18549536755 +13913605063 +18565637263 +13672527005 +18579852764 +18822184496 +13957970990 +18892860263 +15118219649 +15109694386 +18840088749 +15176369556 +13690689759 +13946456907 +18837701536 +18816742541 +13617595924 +13664533675 +15818568353 +18851771514 +13664239205 +15128135357 +15884631860 +15824640448 +18877712125 +18891808165 +18595614613 +15870360683 +13672130864 +13647098874 +15835306455 +15833763320 +18509514821 +13963334513 +18800971543 +18507439307 +15829989778 +15189294241 +15108291256 +15800590013 +15801960708 +18553427840 +15198835444 +18811114844 +15848526235 +13618133993 +13947079991 +18849381881 +13934841450 +15892107580 +18834252186 +18526328382 +18853791904 +18509144960 +18550167450 +13990273514 +18543165754 +15119784887 +13963571806 +13951604117 +15880133026 +18545840670 +18503082152 +13647017461 +15185444436 +15897163038 +15870879815 +18866684558 +18504289959 +18550951955 +13971424298 +15155141325 +15114132309 +15143648631 +13902038308 +18805966419 +18500191513 +15872757470 +18547147517 +18854473029 +15832976048 +18811828364 +15125714763 +13680281008 +18556056778 +18829743264 +15892506132 +13625400577 +13686871574 +18527831051 +18588493232 +15148978133 +15843290843 +13951855839 +18869091739 +15128570091 +15814232429 +18817274334 +13682719989 +15849028741 +15175349857 +13610410535 +13984845270 +18842015587 +13616449133 +13697965187 +18572803776 +15101684679 +18854333740 +15173124289 +18847930208 +15160330318 +18861218002 +15124482300 +18878030227 +18592828337 +13983959583 +18854740996 +15128751769 +15898280814 +15883313392 +13626841946 +15183106650 +13668231364 +15825749969 +15184083331 +13675348001 +15115248454 +13900438639 +15169816359 +13974391216 +15888609393 +13967157405 +15138123236 +18562973301 +15112260198 +15104936142 +18834078755 +15149644962 +13935911794 +18591037574 +15150341235 +18898551249 +13693421910 +13630426466 +13627643091 +18809814718 +15152096588 +13674615824 +13992364971 +15194118864 +18843953529 +18800647326 +15181142358 +15880093327 +15175781968 +18877022425 +15897586594 +15854890197 +18546868457 +15825433163 +13946375675 +18863179471 +18821701913 +18817907350 +18564635272 +13680811997 +18818033335 +15878167496 +15119347347 +18507690569 +15872678370 +15806767951 +18872703392 +13910143775 +18590964436 +15144679890 +18589848270 +18859648797 +15857092922 +18870789583 +15805810985 +15163688535 +13601070526 +13687684138 +18877465130 +15877931258 +15860167089 +18884163226 +15810431514 +18591998782 +13916062089 +13602755740 +18533373649 +15181014525 +18843010396 +15155375852 +13677958258 +13960732593 +13934443600 +15826874692 +13958708840 +18523997676 +15127605218 +15830867572 +13942777929 +18571015676 +18523509659 +13683271696 +15814418529 +18801888825 +13671007306 +13974101097 +15120026854 +15179888058 +18581313280 +18529824279 +18510148236 +13632471572 +15814416572 +13620926810 +18850718333 +15806023339 +15166130984 +18508275390 +18572560346 +15122738378 +13687726549 +13621478993 +13967178082 +13650197647 +18890299026 +13931074992 +13671758427 +13650398584 +13913043794 +13920347062 +15893214404 +13989341057 +15161153432 +15863114886 +15803029676 +13672555561 +13946671872 +13620817151 +18811274897 +15164056393 +18878180009 +15877131510 +18559438383 +18878873336 +18571868373 +15810410492 +15857304322 +15135631052 +13999504476 +13922117111 +18508477698 +18843878841 +15809998388 +13958391375 +18848626646 +18525422807 +18530912864 +13633718023 +13975866722 +13690042803 +15811902403 +18581598967 +18885018638 +13972998498 +15126883547 +18529570565 +15129465112 +18566388736 +13695381083 +15890696598 +18523017481 +15801553986 +18809702023 +18520576964 +18514071264 +18861988093 +13924042408 +18817099076 +13621515980 +13979648171 +18591031243 +18566324758 +13650649502 +13672838786 +18890569989 +13904272780 +18571694385 +13979052996 +18502360491 +15892023318 +13666439430 +13964974824 +18877936597 +15833988217 +15140751569 +15115467175 +13981657310 +13609482205 +15859792698 +15827680363 +18804788837 +15158403239 +13676784479 +15163694393 +13683511665 +13677882428 +15856964798 +18806403195 +15808957621 +15161981858 +18848269899 +13669740726 +18553320389 +13636572151 +15196373290 +13996916273 +18809786254 +18536848140 +18873036984 +18899330323 +15129993839 +13627088191 +15872939566 +18594120637 +15106731541 +18818680904 +15171709236 +13928430389 +13647396956 +15826792317 +15840788906 +15194748229 +18532665870 +18527163655 +18852612616 +18814589841 +18871289749 +15183026680 +18516822027 +18896417788 +15170492195 +13606452531 +15172130044 +13630666480 +13933908098 +15897872677 +13954513713 +15871633866 +18553442034 +18555551695 +18849598187 +13684832090 +15151240797 +15893473606 +15167655051 +13960446601 +13601845884 +13962607504 +18565215446 +15825965998 +18899664931 +13931112753 +13626503513 +13989121102 +13635414992 +13964748019 +13685327031 +15182954667 +13986281533 +15868425479 +15165227081 +15115696681 +18541807244 +15122555145 +13610859715 +13956024158 +15848074072 +13987369403 +15167995211 +18550028549 +15175069878 +18817916848 +13913276110 +13963908586 +18856270016 +15182727325 +15124779208 +15118423998 +13968403927 +15115672387 +18517724083 +18508783537 +18810859502 +13921442884 +13617805131 +18516753713 +18891126443 +18531909981 +15111361608 +18826445676 +18558488625 +13931543511 +13968459653 +15176695479 +18591382737 +18532900650 +18822630079 +13623689609 +15142809900 +15845178200 +15137377312 +13991396766 +13903477136 +18593244765 +13626177697 +15839079607 +18560177892 +18833572483 +13666837726 +18829708462 +18863525494 +18862757119 +15863303655 +15157563971 +15144740280 +18519985043 +15823945387 +13932484193 +13684241580 +15109368874 +13920255769 +15184931876 +15805995984 +15105922533 +13651378777 +13920221498 +15805366318 +18883941205 +15891781002 +15897501627 +15131837940 +15895404010 +18520106227 +18516539592 +13997576464 +15171821587 +15182742526 +18885572246 +13697962562 +18574789590 +18564167616 +15181294064 +18887069256 +15122505122 +18826154848 +13957735952 +15828526074 +13668970442 +15834528317 +15834030720 +18530572427 +15841124783 +13611894195 +15802395289 +13976770645 +15809651601 +15818944656 +18515087166 +15117180316 +18880410598 +15801875901 +18585766516 +13660230305 +15123078160 +13951890151 +15150285696 +18836155223 +15861950767 +18868458531 +15178113106 +13647813879 +15845353160 +13927858399 +15147529347 +18802923210 +18832985472 +15803492271 +18558236917 +18857553018 +15851216006 +15181228241 +18529501446 +15166231645 +15855254731 +18877878507 +18522595918 +13640214838 +15196920606 +13918133716 +18841121576 +18819178633 +18809160702 +13697661914 +15803613303 +18548783549 +18580325574 +18819084830 +18804816123 +15127465300 +18518040060 +13627644044 +15140145385 +15167373204 +13677283751 +18563087409 +18869438374 +18857492840 +13928973339 +15850481513 +15826424839 +15874037742 +18545109145 +18834237387 +13637246448 +18573231397 +13991315805 +15817890067 +13673560646 +13985018573 +13929474326 +13668726306 +13965417321 +15165445231 +15104424236 +15163387467 +18510127179 +15875707763 +18530871810 +18813721430 +15887947856 +13689120606 +15139861608 +18874131783 +13953760471 +15111563204 +18849370929 +13927672988 +13613209762 +13654958291 +18596712639 +15873518953 +15823021509 +15812996071 +18532939274 +13664674564 +18868947817 +13627622205 +18539009462 +15881742409 +13682375587 +13682139978 +18864476782 +13995345672 +13946802271 +13632214692 +13979212097 +15838009868 +13988964192 +15104538661 +13681206735 +13653340519 +18569341626 +15808672348 +18824885709 +13999038634 +13905839372 +13964999577 +15818863629 +18832465334 +15125953166 +15870186354 +13628665553 +13641225065 +13626833992 +18846743303 +18510853349 +18841788526 +13984178764 +18888050114 +13629799344 +18556001197 +15869699948 +15172488643 +15185649503 +15832703162 +15101344412 +15193054050 +18584791397 +13997168373 +13943244494 +15172818929 +18536188188 +15197654199 +18546457703 +18534398248 +15186739171 +15832973022 +18591651588 +18881378506 +18518626532 +18857498274 +13638614249 +15115632855 +15856545333 +13910172878 +18857548882 +18851699111 +15858851099 +13624097388 +13633027145 +13679808112 +15192614418 +15859385129 +18845885585 +13984717207 +18804358696 +15856122009 +13904057287 +15868507849 +15867685629 +18565287404 +18822009723 +15145989417 +18864032673 +18879427315 +18849547671 +18520719836 +18856875117 +13961953321 +18596338772 +18525641837 +13699687613 +18525786897 +13931718746 +15854815817 +15817633449 +13910300253 +15822376260 +18552343477 +13648417096 +13612406055 +18532438713 +18877487481 +15148552590 +15868402088 +15871320093 +13924369923 +13693422093 +15190021706 +15853632453 +13688994541 +13949169758 +15865410688 +15808064415 +15863656518 +18589791049 +18589698583 +15861163406 +18526081237 +18859964602 +15805506150 +15104724888 +18545740121 +18501915769 +18882341186 +18514895040 +13619222498 +13953117736 +18562301225 +15173033287 +18839649068 +15159840274 +18543616389 +18504003041 +18502065471 +15184660646 +13991591001 +18537663766 +18879573555 +15808633048 +13678027829 +13948923609 +13942333990 +15817206748 +15130445292 +13689906311 +15875710914 +15115361314 +13908671828 +18834184007 +18569994535 +18841895828 +18837799472 +13688520303 +15846123858 +18864907297 +18833046922 +18525422871 +15841285527 +18580177301 +18825990803 +15800877518 +15872031449 +15153741351 +18873741752 +13938350829 +13989315633 +18585636782 +15174622332 +18507737180 +18895054299 +15173816189 +15896613216 +18591524943 +15808775954 +15836335690 +13610766854 +13995905457 +18832108267 +18832538842 +15177661204 +15892502881 +18893090550 +15199655934 +15168291811 +15121981515 +15811333996 +18527233810 +15818043303 +15864978821 +15895099247 +18823641081 +18595765935 +18579528886 +15129391853 +13678192159 +13696654007 +15113416243 +18503433469 +13633350764 +13668609946 +18552444119 +13656233929 +13904752952 +18846732532 +13914696386 +13998034336 +18545528618 +15163609383 +15193802059 +15104644866 +18592988203 +15873402304 +15868970394 +18573268357 +18830980906 +13698267251 +15128229119 +13684772399 +15107749208 +15821827168 +18590648951 +13910114170 +15145360195 +13660078563 +18520001900 +13668181913 +13996609723 +18547878758 +15889285094 +15806612424 +15141364060 +13633135877 +13613569323 +18825632710 +18803829942 +18547967318 +18530177025 +13925354528 +13952570467 +18539762041 +18829046335 +13990121220 +13663548544 +18586814023 +15123216287 +18881408856 +13623430651 +18558080131 +13962708724 +18516453694 +15156863571 +15170011613 +13609976300 +15148800346 +18852904641 +15154066739 +18888772250 +18544380595 +13966719182 +13634564722 +18580316276 +18518048110 +13982002204 +18856484742 +13992948863 +18526784208 +15859903385 +15850239322 +13932413961 +13948510596 +15870376217 +18844308716 +13964779562 +13989843667 +13978988460 +18531757363 +15153779750 +18523913080 +18805523457 +18585040485 +13927360798 +15135376665 +18892052919 +13939456575 +15893581544 +13945405091 +18560612994 +15181206259 +18584814394 +13682816200 +13621840746 +15152456788 +15187999344 +18538012866 +18874278817 +13618472542 +15850029779 +18805876533 +15824016693 +13605019540 +18598525145 +13962217434 +13971888005 +13954741928 +18884165887 +18845392413 +13675677855 +18882378327 +15875651412 +18561394665 +15864015359 +18529949516 +15139579071 +18860880403 +18582643981 +15885439832 +13616953260 +15817350379 +18540595491 +15810192291 +15853003395 +18562695738 +18822491795 +18558643872 +15155147020 +18572889647 +15171186754 +15125816672 +15171996970 +18572905454 +13612040960 +18575077241 +18577234921 +18822981364 +13901539721 +13631688986 +13665246009 +18587265132 +15140039062 +13601169678 +13633855131 +18869770570 +18520473339 +15840376559 +15137418511 +13682172658 +13612089816 +13920450764 +13689482322 +18868990574 +18825585719 +18501069051 +13643131631 +15192409817 +15182502913 +15885286234 +18816903675 +15812399006 +13609443041 +15139306793 +18545446148 +13918162764 +15139796384 +15810945207 +15102591470 +13972747127 +18839040430 +13959486829 +13625186976 +13974174856 +15838206645 +18837303839 +18892538916 +15156705162 +15186046844 +15197274400 +13612169777 +15883040906 +18590573920 +13653195999 +18869668513 +13955788563 +13952976100 +18845887440 +18504444888 +15105721522 +13651210168 +15818887805 +15148068778 +18893510389 +13603671288 +13924269070 +13698328727 +18515952951 +15114590690 +15848165555 +13961442445 +15860781164 +13651147514 +13667137801 +18522067475 +13905824005 +18808559352 +13682777707 +13656838621 +18826131342 +13957170825 +18549598003 +18844305725 +15852123160 +18554593771 +18585739412 +15131580705 +13652776402 +18831849294 +13669831648 +18596127149 +13680763904 +13986731444 +13996127125 +15805491300 +13957876342 +18854807409 +13658209634 +13652417749 +15803754582 +15103491161 +13947630656 +18533989931 +13943492248 +15172576027 +18895608215 +18576288690 +15194248631 +18889717577 +13689228389 +15866014407 +18871858855 +18523364635 +13943701790 +15817228241 +18559357226 +13663512322 +15157635975 +18837252258 +13656608365 +15821686653 +15178274628 +15849000501 +15805708466 +13608419472 +13673212411 +15874811228 +15109464168 +13920078930 +13609125319 +15132217790 +15816002444 +15190321791 +18889401042 +15193154465 +15832141560 +15170507088 +13940761743 +18855357499 +18513523106 +15158136640 +15196668926 +15112375998 +15810385838 +15849737008 +13957643880 +13652442115 +18586007379 +13973521641 +13944013026 +18511983650 +18527800381 +18836323023 +15100291844 +18867667270 +18827961273 +13930505880 +13951888503 +13621371865 +18513109360 +13666368876 +18851536138 +18534529000 +13921402945 +18535420034 +15840764487 +13916556217 +13680965544 +18588645047 +13951562256 +15849263729 +13652735883 +18534425669 +18561602586 +15842863076 +15121726702 +18844282329 +18567012362 +15874887364 +15135334767 +13679740942 +15196943952 +18500795549 +13900242709 +18823115398 +15166597482 +15878437575 +15122809724 +15128229261 +18827536889 +13944610890 +13947586574 +18878920993 +15813074297 +13603076303 +18514304274 +15161829823 +13699773436 +15154563471 +13928697004 +18858807587 +13990558706 +13634434481 +18582383494 +18523484673 +13691961529 +18897649352 +13993166599 +13671011243 +13693873900 +13923695883 +18833959808 +15138023871 +15875100966 +15190533172 +15147437768 +18820050258 +15157315365 +15847234423 +18531417100 +15176419678 +15104287270 +13636373697 +15843914772 +13662271494 +13657731628 +15870098378 +15180170371 +15187906129 +13983437014 +13676492354 +18868108960 +18807223266 +18839244673 +15815005198 +13688828676 +15109641396 +13641333112 +15113001393 +15872147048 +18867518276 +15809264377 +13610537035 +18836122236 +15845514338 +13606980970 +15820737729 +13625622899 +13605250655 +15155772603 +18584756124 +15126787092 +15188897856 +13631663098 +15139070953 +15853094301 +13952729964 +18847368856 +13967528469 +18823415542 +15854496616 +18883763762 +13621011225 +15838712791 +13612586132 +13622400365 +18822876669 +18801179888 +13934447688 +13973254877 +15891735438 +18816437096 +18575068539 +15129347044 +18565794240 +18875799645 +18543219743 +15898551571 +13934650911 +15812688459 +18853736773 +13922672456 +13933605659 +13682406743 +13949504352 +13901740008 +13994624727 +13684234399 +18827631134 +18579155397 +18812157825 +13628574421 +18556828497 +13990680654 +18818594053 +18553052336 +15851908036 +15157872987 +13684384293 +13679190049 +18824597349 +18876110856 +15139193461 +15150334098 +18518824809 +13606826080 +13978177677 +13989825316 +15145585718 +15812804476 +13635355617 +13956019603 +15800008778 +13964801427 +13687851495 +13912754921 +18810373572 +18556920446 +13690257091 +18517715039 +18801989042 +13925846665 +13994944809 +13941803051 +18884462023 +18544307155 +13935429355 +15117120828 +15831121820 +13604114233 +15847946248 +18546676140 +15116511244 +13954981419 +18538096196 +15127403518 +15872283947 +15843244648 +15809335213 +13979605234 +18526681398 +13983062168 +18886504637 +15833255998 +15854518913 +18819602814 +13911241328 +15137524027 +18835575554 +15859631437 +13990379676 +18819443431 +15172624305 +18820549984 +13631480285 +15861484840 +13657777177 +18808310900 +18523705018 +18517167573 +15114510382 +15190634411 +18824315292 +15808544481 +18528867967 +13966807917 +18508157694 +18857660034 +15858284482 +15864348706 +18585787906 +15866818741 +18848971236 +13938908502 +13667505689 +13683935123 +18852166437 +15885148211 +13907735150 +18587806382 +18532923513 +15885073952 +18506041678 +13623799065 +13917938167 +13960066977 +18896160431 +15898026939 +13691952201 +13658893883 +13664021276 +13612447940 +15173286484 +13625256874 +13948925538 +18520664658 +18524304791 +18817258901 +13975503133 +13979894304 +15813377911 +18891797424 +15198385914 +15147141236 +18579596191 +13925581625 +13650767823 +15196440695 +18848084610 +18564454864 +15810830242 +13950980406 +18891512179 +15134614403 +15813847536 +15118877366 +18562279592 +18863057269 +13624980017 +15130507961 +18534265054 +15182399893 +15896209711 +18857187590 +13657167029 +15845781089 +15870602204 +13918301527 +13923920613 +18579378284 +13997349198 +18571578339 +15112118946 +13683265427 +18574150727 +18550337529 +15816745732 +18573410193 +18838845264 +15835762176 +18532751673 +18514353307 +13974221741 +18833764921 +13904238331 +18585396116 +15168322636 +13687666974 +15118241951 +15874554786 +13699453671 +15147521250 +18801221687 +13914496587 +13991426468 +18808780246 +18870958628 +13938752605 +15822357068 +15817941699 +18560920576 +18858373178 +15801148756 +18845297218 +15865662287 +13619677651 +15890135850 +18533739829 +18839070369 +18515576617 +15114897852 +18546863080 +18575287976 +15174690453 +15810344655 +13672459567 +13971659446 +13679282193 +13956760783 +15828330582 +13905238824 +18896506159 +18555046591 +18500001448 +15805193240 +13618150998 +15176050738 +18815289188 +18867544877 +15860992591 +15175574249 +15863983764 +15120301820 +18849892718 +18837569693 +15873080820 +18507303190 +15120517206 +13956566831 +18807764316 +18506695324 +13661871931 +13616309767 +18563907835 +18807142118 +15169196431 +15179505726 +18530104146 +13608608765 +13623621057 +13627529386 +13601504550 +15159833493 +13946685220 +15129774875 +13627901506 +18857694833 +15886371702 +15192427002 +13688995389 +18873550621 +13642186259 +15139868703 +18835557684 +15180645432 +18849786695 +15157512433 +15865000570 +13983842474 +18548878948 +18824577485 +15187478957 +13674631875 +18560897542 +18500428107 +13972802951 +18518359931 +18533701576 +18867432292 +18812641923 +13618916696 +15110725995 +18815165558 +13981672388 +15862855859 +15898158047 +18840776842 +13629131548 +13951727201 +18811723109 +18849776699 +18544283326 +15865082819 +13964452824 +13633608021 +18838522817 +18515579974 +18510269302 +18866032604 +13641048221 +13619042830 +15890093121 +18582786533 +18804163129 +13917867069 +18823860269 +15145200339 +13603362928 +15820651439 +13909595096 +13996605598 +13929501692 +13615527804 +13611722187 +15806812164 +18551244335 +13674689550 +18537855384 +15160767067 +15163276706 +18571202038 +18805218730 +15804860083 +13949886777 +13993596663 +15833577527 +15187685571 +13916022696 +15859287910 +15892372955 +18809890423 +13631953427 +15847870897 +13970469104 +13629573987 +13650205615 +15849209877 +18848626652 +18805548670 +15193966192 +13992287310 +13993480368 +13990607003 +18826917082 +15183209396 +15195316269 +13956293729 +15842262447 +13939575100 +13697039987 +15196740329 +15143973350 +18544214605 +18813630852 +15162061984 +13912413728 +15148159997 +15806500286 +15152159263 +15102814666 +15160331587 +13626228485 +15121539132 +13945387515 +13939386034 +13696511699 +18549105179 +15142523300 +15120764928 +15820205472 +13636127290 +18880965274 +13900149282 +13694891087 +18517775670 +13937189859 +13926914808 +18813550768 +13980443761 +15152942924 +18548118416 +15878371160 +13987117014 +18841793570 +18816327563 +18593994857 +18823943836 +13605068164 +13959502565 +15816539728 +13907902528 +18848033843 +13626568332 +15124775040 +18539006051 +18503331847 +15812851801 +15190688662 +18869530221 +15883002777 +15837795919 +15129428246 +13651697046 +13989267814 +15184575222 +18549200739 +13695078627 +18843585105 +13970504615 +18582921741 +15110670603 +13678981058 +18505883210 +13924659422 +18502395798 +18578861299 +15894095074 +15110488366 +15143201040 +15832596192 +13691027392 +15832961953 +18834188678 +13690541005 +18525388427 +18803907211 +15854318938 +15133673913 +13697756587 +15860131987 +15128345913 +18824795674 +15890231483 +13902082582 +18535713597 +18561140253 +13622602904 +18515147881 +15110490793 +18857704579 +15848319797 +13986714719 +15854415990 +13987019273 +15847561096 +18861058082 +15837883113 +13996770008 +15116360581 +15897954387 +15837827534 +18829210272 +18545662065 +18897432712 +13604528291 +13905950561 +15195660477 +15113561460 +18806486040 +15828997405 +13985164147 +15172083400 +15186471057 +18520206502 +18584882805 +18576308361 +18551642150 +18817813406 +15825860400 +13677099252 +18536471842 +13678236513 +13681061876 +15800481827 +13985141779 +15151834218 +13681106570 +13927142379 +13689319862 +18547429230 +15142649780 +18815084664 +15805927316 +18582097307 +18583361051 +15171415311 +15826206954 +15896343859 +13672202607 +18864175963 +13658986598 +18816833107 +18510925662 +18502962446 +15864234642 +13695682538 +15828978386 +13659788285 +13616393877 +18884126865 +13680334947 +18807187070 +13658142419 +15153950287 +15157041828 +13662059546 +15154687846 +13915332240 +13987637607 +15175066068 +13963881289 +18567056251 +18833446440 +18555326462 +15856991040 +18505068101 +13627441425 +13632124714 +15895293590 +15851721469 +15858085393 +13926476223 +18813073795 +13633983859 +18861652229 +15191252966 +13963056611 +13992935380 +18840653058 +15869231395 +15139348880 +13924886641 +13948325718 +13624608033 +15101454331 +18842256884 +18808733752 +18510733288 +15179510229 +18879087046 +13697987530 +18572936873 +18580877578 +15109413334 +15120150925 +15857182020 +13949920628 +15883022020 +15892812197 +18849761337 +13673286866 +13678729568 +18836491623 +13938307003 +18513567578 +18868773883 +13661075940 +13647260009 +15860554190 +13934260471 +18555057473 +15157428461 +15162920542 +15828611518 +18591354559 +18511467195 +15840988436 +18889655540 +18561147475 +13697097679 +18894376589 +18590085917 +13679506068 +18842889845 +15169874002 +13674049812 +15160535754 +13954751505 +15826042472 +18561007259 +15164421166 +13654863792 +13659599333 +15144896709 +15828333321 +15847011417 +15133436911 +15123947729 +18550679341 +15830500617 +15195042506 +13973667303 +18856516655 +13937715768 +13673085675 +15866252320 +18853648805 +15189245242 +18849006003 +18842934002 +18537030594 +15136039101 +18829669874 +13959297839 +18851211827 +15854747933 +13687733398 +18584646167 +15116315314 +18504437609 +15804011747 +13635001944 +13614870208 +18527052282 +18883792019 +13930776157 +18504433699 +18858976039 +15869700004 +13601579121 +18521718430 +18524398798 +18585474327 +15178273534 +15129337853 +18884411659 +18801144477 +15831778859 +18529607428 +15835825733 +13621270750 +13657343386 +15172278411 +18843346031 +13619698148 +15836395187 +15140477392 +13610652962 +18530772629 +18865096358 +18820038543 +15829726950 +15148268521 +15176407440 +18555047278 +13628037941 +15130319565 +18859709897 +15126329838 +18503820410 +15166843826 +18846202521 +13912124845 +18878951824 +15812689157 +18812294196 +13931313771 +13946677533 +18538774558 +13699848865 +15897051247 +18880265856 +13978114094 +15103687418 +13634083121 +13921285596 +15808918054 +13911273943 +18534933090 +18507060748 +15806341609 +18809891912 +15893695069 +15128085028 +18803836190 +13978887770 +18880135338 +15198951655 +18835771750 +15809237299 +13908802136 +18540835179 +13615163783 +18591232037 +15130495814 +18891021323 +15868550616 +15895309538 +15149854336 +13613787544 +15166528394 +18523096326 +15870594380 +15159861080 +13687238917 +15137964234 +15860653714 +13997559762 +13909914162 +15834998325 +13682368525 +15182273230 +18522797194 +18859000370 +15881606529 +15809464219 +13962768260 +18893310589 +13689836770 +15827507536 +15846199017 +18532839622 +18862718986 +13649864313 +15181287363 +13993726297 +18530805675 +15872705170 +13954877750 +18560351046 +15153939367 +13664105583 +18897227564 +15826546528 +15851736640 +15186649996 +18502759076 +13664307695 +15194581307 +13980646724 +15122156697 +13636980429 +13694102603 +13916510251 +13685050523 +15860807028 +13978717957 +13965588831 +18895996980 +13679707095 +18888747192 +13903543450 +15119540267 +15165459165 +18832647574 +15176965758 +18531130122 +13665558354 +15104944339 +15808384684 +13980179565 +18555248334 +18843368910 +18582213806 +15888463606 +18529216425 +18819688997 +15813165457 +18577278584 +13941761853 +13999505520 +15159180519 +18844334480 +15872443625 +13983413797 +13653262479 +18528046074 +15188962247 +15167682620 +13945194914 +13647766030 +15161559417 +18567248381 +18867065349 +18562785446 +15135138526 +18899695474 +15170018912 +18554557121 +15138400816 +18541186950 +18826393476 +15854142622 +18805247668 +18524882883 +18530057874 +13625726118 +13671920720 +15104675642 +18577966849 +13900721597 +13939152541 +15164992820 +15114733740 +13629074503 +18546993938 +13640761529 +13661684107 +18819651167 +13930560091 +15898290998 +18807295356 +18803430450 +18847514237 +13942502434 +13999888052 +13678790607 +18888752838 +13955916007 +15149557174 +18548766286 +15880065118 +15179439864 +13684541762 +18891008542 +13947203533 +18883713340 +13675366529 +15108490986 +18881593159 +18884711590 +13901108360 +13957494913 +13976624855 +15867944046 +15848631078 +13689508018 +18843633874 +15185766086 +13908702254 +13646155431 +18591069975 +18552878743 +18559232081 +15148176600 +15131065375 +13924495787 +18588917798 +13900846698 +13614183930 +15882388603 +15113897004 +15166739709 +13678586791 +18517009315 +18552638485 +18595214272 +15177929276 +13988661333 +15184817824 +13633787443 +15140371213 +18576336611 +15142596464 +13611090933 +18534367361 +13973569115 +15159867054 +13959472020 +15173941402 +18862594365 +15805457753 +18852149811 +15813108577 +15879304029 +18808643967 +13914724573 +18854265315 +18554774283 +15895277930 +18534258541 +18570048560 +18581569357 +18558696624 +15896510962 +15870802193 +15843607395 +18578295321 +13984463284 +15852217739 +13694356466 +15141808812 +15810398115 +13970629458 +18836939514 +15851467017 +15895466074 +13601638191 +15844775794 +13605258964 +13639892497 +18882496969 +18870304075 +15190237268 +15129931612 +18893287222 +15867328103 +18544661688 +13675207762 +18897778847 +13939577270 +15161155134 +13944647576 +13991181984 +15804808890 +18883658773 +15151197819 +18583634048 +13984249611 +15141283963 +15145992393 +15890887073 +18530291147 +15115512699 +13627237940 +15193916076 +13689433385 +18515588929 +18563765458 +18530875970 +15854487386 +13630628495 +18504423536 +13627330989 +13640802232 +15198183031 +15836814005 +15858221645 +13600987707 +15836285781 +18545588012 +15129518005 +18873598392 +18580707727 +13669630918 +18875595089 +13931224913 +15887412040 +15835831794 +15885129576 +18848110668 +18895866441 +15189152653 +18534735199 +15179247070 +13993414829 +18883388116 +13936789237 +13695489249 +18802732847 +18887037000 +13946600673 +15827420607 +15125069817 +18891844820 +15185473517 +13624484156 +18543297893 +15171523102 +13689005903 +15117375090 +13965565400 +18844102460 +15877599054 +15177549221 +18583219111 +18579147611 +15150041527 +15896662673 +18518230210 +18857561532 +13962006128 +18853489450 +13963278086 +18831928891 +15156502149 +13995447100 +15837042190 +15167669231 +18549597350 +13930983583 +15886022291 +13606479180 +18503991349 +18876450737 +15191350737 +15141462808 +13695730221 +18826251242 +13953765275 +15194281318 +15104049975 +18550006780 +13652757782 +15836387393 +13919916763 +18840933306 +18831473129 +13914483740 +15884838180 +13625814822 +13914311648 +13947798994 +18817617790 +18865870602 +15833519960 +18559622057 +13623237261 +13939029330 +15111296792 +15854088517 +13940529510 +18535903954 +18832395063 +13652808597 +15846006120 +18569505954 +18594601413 +18813651067 +18824197688 +15819384659 +13988479575 +18820997673 +15814977049 +13666110348 +18598052815 +18568396109 +15887541458 +13949616806 +13676304853 +18508548749 +15823528200 +15148251626 +18822533231 +18891082146 +18812586438 +15825611050 +13973399387 +18580826350 +15818495936 +15120137258 +18869368928 +18882369750 +13622268201 +18834723405 +15124438078 +15179847070 +15819950276 +18587137005 +15143880328 +18831655345 +18532317040 +13611035792 +13924225386 +18574077417 +13605897275 +18583748677 +15120161245 +18560142410 +15156979520 +18869385666 +15188071800 +15883529321 +13948741658 +13963809540 +18512876749 +15891394791 +13676219683 +18879530598 +13661704249 +18859811781 +18568310885 +18522156297 +18855867654 +13677477625 +15804339685 +15151167539 +18880441272 +13691136925 +13622858411 +15827023041 +18859930900 +15138246128 +15101468078 +15166346571 +18577730856 +15888231035 +18804867575 +18803294347 +13928292203 +15870621168 +13684744510 +15161697546 +15894315439 +15125426755 +18520134563 +13611812902 +18517937469 +18891900441 +13942790798 +13969896681 +13692360621 +18593330381 +18523208105 +13616546284 +15114133133 +13621936733 +15191604555 +13662877972 +13976234937 +15183385032 +13636678143 +15175541809 +15159750341 +18571510608 +15174269399 +18872318322 +15169300820 +13951788006 +15842107510 +15183324637 +15813543045 +13615731487 +18802926781 +13946442196 +18869530126 +15183219962 +18895159851 +18889493623 +15115228034 +18838692684 +13687708045 +15878709736 +18524552194 +18558699168 +18501904207 +13688959424 +13921101026 +15897565597 +18811418324 +13678861270 +15116765168 +15847629317 +18890630904 +18536464864 +15809899251 +18867541710 +15841081609 +18544329627 +18573152630 +13970632859 +13626370645 +18829757363 +15159830988 +15879606932 +18542583354 +15124764638 +15129792531 +15124462558 +13689799759 +15820056183 +15126343263 +15173928658 +13648694199 +18522316797 +15175668513 +15887747058 +18538537587 +13627519890 +13977006014 +15121233236 +18598746322 +15162677383 +18863544995 +18553624578 +15894037733 +15179048808 +18539558386 +13950490742 +18851083824 +13615400463 +15862639322 +15103362553 +15807945975 +13953077085 +13970932301 +15832389278 +15153404382 +18805026099 +18559077122 +15889989433 +13920718446 +18824801706 +13607410923 +18804992158 +15878849328 +13688156670 +18530938398 +15197613841 +15802993619 +18561765871 +18836678805 +13957421100 +18837878408 +18536859899 +15856451588 +15142948573 +13928039789 +13912915900 +18864297572 +15842181121 +15162062932 +15831429268 +15819221527 +13908204366 +15861972788 +18528182950 +15100802392 +13999555357 +15889698583 +13612895860 +18864914065 +13908509700 +15133694760 +15801799259 +13981086221 +13674484039 +18514348110 +15158942454 +18808907333 +18542305013 +13655411390 +13922865324 +15145752910 +18535280470 +13986444822 +15124026867 +13687981240 +18817122067 +13944914229 +18805705512 +13952900544 +13687553714 +13624806703 +18873891668 +13614634592 +13628761420 +15109247389 +15110307130 +13951127276 +13949182182 +13975077854 +15862247029 +15807932570 +15856682872 +13902098921 +18510718194 +13988937259 +13660160958 +15825287375 +18579571214 +18570422337 +15861679616 +13958219189 +13653738619 +15131255709 +13925946124 +13957063020 +15859798594 +18844083460 +15892959364 +13652629052 +15879538059 +15135509270 +13695267704 +15803344683 +13913322234 +13623546859 +15883738189 +18891607378 +13651342991 +18886483114 +18532666885 +15859609000 +15875599018 +13648029790 +13927334024 +13931478498 +13970545911 +18577429573 +18538998449 +13930640514 +13998914822 +13612913331 +15888359573 +15898012043 +13611350162 +18827991105 +15140621469 +15145355624 +13636447958 +13649368660 +13629555394 +13987177319 +15123078607 +18561902818 +18529323624 +18510521902 +15106773811 +13639837131 +13995491607 +18883995598 +18814693784 +15138568656 +15804831339 +13926236837 +15184490990 +15106185922 +18503464128 +15885525953 +18825550386 +15869745005 +15199291261 +13949090408 +15862917173 +15878543034 +15194054371 +15162726680 +18500597857 +18536517159 +15861013267 +13911183637 +15180453154 +18596484526 +18526496962 +15841799766 +18502339619 +15807855057 +13940863027 +18875998234 +13929563210 +13671854341 +18586371940 +18847823323 +13960663193 +18523949581 +13941664605 +15835546579 +15125999379 +13678348196 +13657923766 +15848997705 +18817535848 +15163987448 +15836309019 +13939258110 +18856574942 +13644077282 +13674385728 +15874980553 +13921884918 +15827613912 +15872537225 +18570141326 +13603145217 +15182788298 +18867720781 +15111449204 +18570797578 +13666706899 +13984807174 +13643480330 +13661990628 +18863460318 +18544929423 +18819199256 +18855477273 +13964596967 +13683745885 +13901361307 +15810250722 +13924123006 +15180078257 +13624579142 +18806783804 +18893366916 +13954848765 +15180874738 +13652594364 +13983849761 +13962168922 +15179870930 +15844023281 +18864641788 +18575888188 +18888675956 +18500345505 +15133477881 +13982716287 +15874700647 +13679171755 +18599271430 +13926987031 +15187266736 +18500428373 +18863452527 +15177897501 +15103212100 +13994666726 +18889567430 +13982842477 +13904721413 +18540026565 +13931957317 +13692688831 +13625322339 +15126571373 +13988993211 +18854379719 +15197511781 +15855850872 +13902196746 +13656533562 +18867042564 +18516440946 +13928362453 +18896594368 +13615413651 +18513423693 +18806179505 +18532102530 +18864495638 +13920538504 +13987481076 +13950856694 +15154304090 +13957703526 +13976506666 +15147672119 +13631878042 +15861728836 +18576193447 +18593202106 +15195237479 +13978830800 +15111787142 +13926135979 +18587207533 +13951015198 +18835442110 +18879532642 +15194059814 +13628502769 +18852511223 +13669231112 +15849123953 +15164620959 +13908206981 +15899618379 +13638545774 +15894129321 +15130936058 +18843961034 +13666447684 +13971733971 +13667574327 +18500688517 +15128144809 +18848265193 +18515275256 +13985083022 +15831719721 +15898412932 +15857051282 +13614524762 +15842685839 +13627692460 +13915370014 +13687975914 +13687968215 +18594872717 +13694787434 +15854680479 +13957210434 +15187780189 +18824144082 +15850035370 +15120020011 +18845767378 +18880231864 +15811725644 +18890230251 +15160976177 +18589403097 +18558664486 +13666488926 +18806224939 +18521257759 +15125931484 +13685479842 +18512991101 +13670012223 +13941737042 +15101457697 +15887066423 +13984714125 +13664171516 +13621420361 +13654248137 +18510978125 +15188343650 +15154125825 +15824868879 +18823542220 +15147615804 +18510031850 +13921870391 +13662428622 +18865171633 +13691265640 +13646858926 +18577961078 +15141630845 +15893448300 +15190522598 +15843739880 +15806755267 +15805410953 +18853878836 +15100368683 +18517760541 +13987427705 +15852244823 +15135669949 +18594419452 +13992680361 +13912337111 +13913558003 +15836443502 +13608522291 +18869854083 +18526826218 +13636816126 +15188705140 +15835931165 +13686468532 +18535109175 +15134622047 +13615237606 +15830619527 +13944126699 +18581784726 +15160023680 +15156122504 +15137826783 +18867375009 +13989567885 +18581135690 +18504841784 +18866084865 +13625619397 +18840332360 +13698985297 +18512713164 +13973236839 +13940506677 +15823136759 +13663298434 +15866605860 +15846910472 +18877952387 +13984665715 +18527107707 +18585114023 +15810802736 +15851383373 +13678978791 +15119538358 +13681874526 +13984609283 +18547226770 +18862019688 +13667105854 +18887745840 +13671215104 +13646145640 +18508280541 +18858154489 +15129139471 +15818071636 +13948872291 +15833264232 +13671965133 +15140030141 +15110411662 +13929250512 +15153590677 +15156911285 +18860970086 +13666827676 +18897807924 +13694158081 +18807010913 +18556602155 +18544578100 +15103500651 +15812419561 +15801088643 +15859636621 +13978719948 +18896088659 +13660224249 +18531656564 +13980306519 +15132368216 +13980574579 +18827753172 +13626818246 +13942895359 +18593322965 +18594038042 +13684531659 +15870327551 +18528744527 +18593873110 +15845067877 +13928738484 +15817131309 +15119227525 +13685228172 +13909809404 +13981945295 +13626877325 +18550316625 +13615400106 +18856018839 +18505145974 +13661138083 +18801338074 +13923193155 +13993175831 +15815046608 +15148796238 +18555863604 +13629622599 +15874264053 +13917848255 +15857266972 +13632333120 +13970005693 +18574659168 +13908994008 +13675784052 +13914905179 +13627302096 +13639103292 +13617292257 +13913578553 +18887638149 +18515223255 +15861778260 +18868036743 +13946415728 +13662389609 +18835613893 +13621928379 +13638203310 +15175449700 +13938571711 +13639199716 +18827280793 +15113007541 +13933727025 +13650632562 +13927281482 +13697023183 +15892598273 +18886161949 +18872497784 +18876309100 +15863460282 +15154474429 +15152535060 +15821321405 +15106669881 +15818512156 +13998062762 +15826092206 +18876668106 +18883921318 +15835375995 +15891574335 +13649861730 +15882888323 +15103052573 +15119337780 +18589595764 +15154817460 +15868685918 +18862787842 +18852533671 +13660709596 +13681124888 +18572947480 +18510759870 +15887753462 +15133971061 +15105270952 +18831505698 +18875450546 +13681830452 +18557779840 +13973256549 +18507869390 +18829419511 +13995048848 +18511889452 +13948749386 +18500877612 +13979239513 +13932464406 +18529237206 +18870300332 +15805106444 +15894007224 +13964129193 +13977607762 +13934537929 +18826525129 +18894820370 +18577862990 +15896036905 +13960233059 +15165113828 +18525503324 +13643015957 +13665790375 +15859502099 +18835344766 +15159115709 +18803948926 +18808538001 +15186310027 +13950685004 +13693021477 +18533448304 +15895612164 +15111238428 +15128141787 +15887110218 +18801045098 +18833179193 +18537127575 +18842887980 +13902661492 +15188598816 +15859040452 +15143870886 +18819706425 +18520383698 +15134457937 +13908828949 +15834655201 +15840927728 +13662266487 +18896390865 +18862661610 +18531334243 +13994320156 +13974460054 +15150960899 +15829098979 +18880801904 +13633433274 +15895869239 +15878695066 +15850159355 +15866685127 +18566216854 +18801729493 +18523715507 +18530773737 +13673268641 +13949844764 +18538442491 +15199609027 +13690968184 +15810471302 +13637546987 +15117895553 +18866043798 +13630208012 +15146786477 +13655100055 +18860588276 +15844628300 +15872931587 +13963663590 +18500586455 +13932836938 +13615350950 +15879814771 +15884336678 +15839500735 +18533085577 +15830506009 +13635141841 +18505881458 +13986152564 +13936389888 +18546734053 +18825270478 +18875183495 +18853168167 +15843692767 +13667697554 +13659515044 +15172527989 +13613709931 +13948662508 +13975947228 +13659425047 +15858926447 +15113519304 +13635371784 +18529430847 +13680665620 +13953286292 +18577022234 +13613322315 +13664596925 +15146328394 +13620977802 +13671378943 +15818021147 +13630013443 +13939608471 +15196986662 +15165529735 +15863229878 +15172463727 +13918976436 +15129278235 +15196631152 +13995379826 +13912274641 +15117184456 +15869125278 +18860569247 +13615198618 +15136707403 +13637979419 +15854985990 +15865978240 +13986030751 +13681364283 +13923673136 +15855110445 +15194551554 +15858817524 +13986210360 +13957804564 +18506028157 +13995011534 +15868293744 +18504846350 +13988347536 +15887262032 +13635217391 +18524880144 +15123410149 +13977889530 +13672509853 +13917515169 +13959292577 +13960989010 +13928325365 +15144540853 +18839825168 +15863184973 +18880720129 +13660080252 +18848014981 +18837143266 +15136757811 +15891574759 +15113486879 +13914824956 +13977482677 +13982466066 +15115811244 +18826072655 +13960285997 +15144836613 +13920263675 +15889913685 +15857093940 +13973874432 +18501265819 +18502757184 +15172858315 +15191068760 +18864300539 +18535706833 +18528077195 +13621001173 +18872874311 +18891642080 +15130506779 +18819239581 +13989433042 +13976886196 +13900119665 +18511048985 +18877232371 +13674829449 +18538356045 +13662010904 +18810000012 +18859398846 +13659550729 +18538883915 +15845498187 +18825611348 +13951099535 +15141381023 +18572887017 +15889937916 +15832066293 +15811056252 +13944962858 +13646417924 +13603453353 +15191146007 +15804905915 +13973027789 +18801699659 +15114399967 +13963891640 +13656543278 +15171659256 +18507154611 +15855005429 +15881618351 +15825816662 +18868968854 +13679430896 +15132989963 +18864449423 +15893311257 +18895989350 +18562022527 +18583626190 +15121216054 +18848609095 +15835780235 +15824932688 +18848009523 +13618989555 +18514345908 +15887558580 +18850328983 +15855805718 +15115766271 +13611833755 +18875821120 +13696825708 +13932053044 +13639867518 +18585887935 +18590811349 +13904999236 +18595133948 +15885153005 +15133628004 +13945682305 +18899840810 +13927541668 +15896420913 +13620186059 +18873834028 +15845456172 +18532932233 +13637610612 +18501597213 +15897458012 +15197329931 +15100407785 +15869914722 +18567241367 +13986227043 +13996006503 +13968434486 +15105411669 +15807727473 +18529227864 +13611404497 +18827671153 +18875639068 +15854157224 +15822467782 +13601944702 +13905886171 +18590863895 +15170433564 +13687574026 +18877164189 +15873220444 +18883967334 +13608654420 +18865594660 +13944070523 +18547108323 +18816345773 +15184751706 +13699393545 +15144264228 +15857856923 +15156404632 +18556679090 +15116812411 +13961834891 +18856225933 +18554405456 +15850739502 +13662933823 +13645788486 +18863512859 +13612526599 +13990422086 +18546245651 +18878864207 +18532618937 +15879186010 +18893754160 +13695127640 +15843098191 +18582812571 +13930613707 +13624803759 +18563715306 +13983518927 +18825149977 +13697162514 +13936487376 +15852897107 +18520946370 +13618190156 +15146559467 +18528565283 +13625720122 +18854418194 +18546706584 +15157368350 +18545453424 +15893775693 +13684245207 +18894123279 +15169818352 +13658741900 +13681109766 +15150252115 +13999254194 +13908229909 +18515767580 +18834726453 +13611744276 +15158641788 +15174548715 +18533342628 +15876392282 +15152939398 +15118448593 +15112075654 +15112957006 +15819846955 +18873784507 +18806634898 +13631744787 +18872683440 +15846257746 +18865702084 +15840134764 +13910773616 +13665770996 +15836038265 +18543659843 +13692657073 +13699221682 +18846716652 +13665664325 +18586647483 +18816862951 +18587398254 +18524075533 +13618499460 +13974085780 +13926060674 +18520579257 +15888879615 +18531788617 +15136327143 +13981462625 +18583682307 +18837684602 +15177356389 +13962451679 +18813293177 +13639467886 +13673630468 +15160295034 +15877473129 +13946581811 +18509426115 +18573660875 +15179091592 +15888289392 +18876855587 +13603251496 +15836539964 +13663372661 +13987817834 +18848087795 +15871763434 +18566178382 +18517848504 +13659359890 +18522239707 +13610327115 +13953990491 +18528493914 +15117272463 +13942391971 +13697180192 +13952499323 +15196853821 +15170468053 +18597091801 +15178791868 +18852020142 +15198885178 +13944432285 +13649568198 +15194738204 +13990006656 +15181616531 +13907290578 +13629249686 +13960760925 +15866457382 +15809320272 +18593409583 +15830089727 +13692848973 +18558932776 +18510202142 +13660370326 +18866542307 +13968236307 +15845504481 +18837028571 +18855566230 +18559971436 +13611967728 +18820724912 +13612740125 +18821555391 +18810334036 +18852196623 +13639168266 +18516492382 +13989164990 +13995291528 +18844433536 +18894450587 +18834463491 +13995968135 +15172343865 +13656436705 +13977863344 +18875482305 +15100803662 +18507715711 +18879692398 +18544562077 +15897304672 +15101826242 +18899332311 +18518096417 +15873389027 +15147543446 +13944291298 +15818932373 +13933331033 +18843010840 +15115510080 +13652049346 +15113903308 +18848426682 +18570045271 +15160838236 +15109531262 +13687139917 +18878279633 +13999966856 +18550836638 +15893030507 +15121851889 +18808522777 +18856856370 +15820396412 +13686258465 +13950461904 +13656708866 +15883530168 +18582739385 +18855995420 +18825946763 +13659977646 +15146671085 +15883112294 +13968343813 +13944973792 +18524797161 +15879600808 +18559877466 +18583613029 +15172776832 +15161955191 +18837126342 +13952746002 +13636692435 +15809592041 +18854704900 +13601586858 +13932380983 +15818427249 +18560415861 +15150216933 +15182535175 +13676503482 +13995436324 +18594882265 +13989545905 +18865060614 +15812434321 +18551791746 +15122506127 +13973695204 +13973315756 +15135616384 +15858809558 +18810700888 +13608206085 +13691060351 +13992881316 +13927774972 +13971924960 +18882364590 +18551366121 +15846526917 +18543608359 +18850762928 +13677054459 +15805955988 +15131971885 +18531967945 +13678217115 +13664851303 +15112715842 +18517023586 +13604770552 +15103499069 +15837979535 +18818422747 +13952122054 +13991096703 +18556392990 +13925615414 +15137593050 +15851921414 +13970194081 +13650738955 +18816874327 +15166887669 +18820202067 +18563078975 +13622392741 +13946253834 +18843241655 +13659926732 +18586004305 +13617450197 +18559775121 +18599861488 +15101156274 +13962347027 +15100934910 +15168193520 +13678224803 +13984501082 +15152559545 +18572195239 +13904614100 +18547403776 +18899383453 +13972713434 +15150401749 +18865792425 +15875846760 +13986412931 +15818711066 +13915451569 +15855468977 +18870792358 +18894599853 +13903286454 +18511958935 +13695326913 +18597118595 +13659751301 +18515772486 +13695807189 +15819047368 +18506141316 +13620309753 +13920686593 +13615353024 +18888937983 +18828726474 +13989061190 +15170710888 +15189494142 +15111539932 +18517709677 +13904640299 +13652236764 +15168786933 +15842870075 +13942247693 +15845163383 +18565445598 +15179122553 +15152417626 +13634552819 +18876413389 +18818006009 +15112843180 +15842890399 +18847078961 +13637973900 +13670048947 +13667489128 +18827384228 +18594432146 +18575296295 +13648812297 +18851121746 +13646087663 +13608058702 +18557387765 +18579753796 +15191641214 +15152064998 +13600565489 +18870048712 +15897915258 +13964259356 +18581336155 +13675902647 +13943287969 +15895388721 +13977999178 +18570616045 +15802611290 +18557241573 +15803961068 +18817071505 +18826890466 +13625138918 +15807758562 +13952444817 +15159511399 +15875927099 +18815663356 +18836252516 +13925102903 +18884842172 +18807107400 +13656611801 +18536486988 +18556979318 +15191594262 +18595964189 +18897787878 +13650580546 +18513636111 +13922069493 +18500805676 +13649553368 +18533866452 +18811026574 +15177557439 +18579848185 +15133148954 +13961162321 +15120926943 +13923079570 +15135353355 +13944068613 +18870536141 +15808519822 +13679615994 +18898427559 +13691485742 +13908321860 +15138454606 +13680477086 +15831848060 +18575957867 +13638120948 +18801735419 +18860943421 +13601267380 +13906954198 +13932271520 +13627001393 +15802584269 +18513082688 +18514917155 +15158094463 +13931187514 +15811607340 +15867157938 +18531430680 +15191546726 +18535866602 +18838877390 +15129905617 +18852702420 +13636555545 +15152724858 +18514572623 +13982205769 +18819897748 +13659176970 +13669617789 +13952709745 +13615755241 +15827077102 +15138544645 +13654845367 +18890394757 +13600313673 +13684244272 +18807966271 +15164825885 +13680029245 +15898111663 +15843700377 +13966415189 +18853285872 +13622975181 +13627513536 +18519154320 +18851988711 +15815233303 +15888577435 +18502418763 +15174134480 +15898432111 +15171676062 +15167117626 +18548433212 +18892178137 +13968179961 +18832602473 +18893096519 +15150713191 +15872189982 +18529507887 +13652348814 +15181348049 +18803014793 +13964805076 +13646001746 +18561796542 +13693316277 +13923429620 +13955468234 +18846669498 +18591153060 +18519942065 +13669515062 +18839401301 +15105674267 +18816346666 +18589743884 +18508849329 +18571561710 +13633359514 +18838944292 +18564897851 +15115603060 +15849257702 +15864275415 +18843768560 +18840125119 +15193770968 +18563830105 +15123679946 +13618967382 +15178572618 +15836395117 +15828843120 +13970819979 +15123479258 +18540177983 +15803364521 +13603804624 +18504556910 +15820734025 +18580786202 +18844457228 +15816921123 +13917061918 +13669026951 +15113780503 +18558618687 +13986868279 +18831910426 +18873637946 +13988055804 +15800491545 +13939205308 +13907792298 +18879897794 +18830159038 +15195502544 +18545206779 +15185216413 +18545041432 +18853474480 +15816658214 +13616867234 +18594274743 +18879917167 +13999269190 +13696014723 +13630372600 +13641762440 +18888522300 +15825914677 +18880337225 +18524603671 +18821029439 +18582916228 +18522680820 +18842787634 +13939012125 +15189973628 +18583865480 +18861520832 +15127314457 +18838014158 +13607400581 +15877171441 +18845561694 +13677864513 +15888254383 +13658353015 +15822650271 +13930262797 +13622933647 +18576473393 +15891600081 +18541002591 +18839225774 +15174513744 +13696053717 +18508720446 +18895343992 +13624665658 +18534447718 +13991338135 +13919275816 +18500589018 +13618012198 +15151429216 +15132596789 +18863690549 +13646114326 +13908723406 +18833385174 +15166793554 +13647949176 +15181652657 +13943505033 +15815269414 +15143812947 +13630283233 +15129169111 +18551598132 +18875418804 +18807959236 +15103241074 +13905938193 +13648333011 +18507841272 +18578587762 +13933326201 +13662548911 +13929986533 +18887663776 +15870955402 +15192539691 +15849889085 +18843775454 +15144625236 +15177384369 +15179175793 +18565730916 +18824795828 +15880950124 +18890894168 +13681353743 +18803759248 +18587083720 +13984156079 +13609537914 +18583082760 +13951772038 +15100085461 +13922125866 +13672098486 +13959871581 +13684648985 +13932015890 +15827768869 +15880592477 +15848720357 +18891486722 +18848649416 +15869280332 +13667920331 +15128746079 +15894196772 +15126847958 +15898286117 +18898975010 +18823212238 +18855755709 +15199719396 +18827685574 +18830701385 +18896615679 +13952848082 +18861714058 +18846096357 +15853713172 +13683894309 +18553541728 +18892238835 +15888217238 +18541945622 +18814758637 +13653650840 +13696016905 +18580965666 +15166341338 +15848582399 +18552701256 +13967251586 +15127603806 +15197225186 +15145603918 +13943278992 +18886045455 +18534624388 +13634471563 +15106886101 +18821402775 +15101298024 +15846786133 +15177778465 +15198745190 +15100655823 +18820492407 +15883986831 +15145308193 +18855430994 +13980803952 +15115682933 +15185547981 +18814923537 +13611027971 +15111849838 +13674326913 +18527439044 +15156192656 +15151465855 +13680042040 +13970962740 +18823211486 +18841188544 +18814731493 +13910353567 +15825662464 +13679751287 +15130317611 +18589953907 +13639700033 +18856997467 +13933805748 +15819736705 +13604933847 +13601198575 +18823230040 +15158832792 +15876223067 +13960258582 +13924219779 +13957312229 +13686396506 +13610660082 +15871708536 +15855337429 +13961947106 +15148084128 +18554668546 +15868311889 +18850622257 +18558002551 +18548771904 +15168962307 +18507228230 +13696110375 +18534903489 +18809304419 +13651955313 +13618460405 +15847833302 +15866270760 +13629218985 +18587061233 +15878462944 +13926087410 +13621488490 +15104273316 +13995940084 +18854001494 +15169709961 +18563330571 +13628679195 +13675900172 +18544631618 +13997546843 +18581917909 +18538704574 +18811575005 +13912584970 +15170418497 +18857728670 +13938263861 +15143163882 +18843905350 +18500089544 +13625096575 +13932959469 +18873032053 +15877814924 +18557153322 +15109540046 +13911811933 +13650290335 +18829329054 +15874611321 +18526429030 +18874387036 +13999695280 +13971375078 +15125894636 +13620014964 +13643747390 +13942798624 +18814405518 +13930445933 +15179896008 +18550822959 +18553531124 +15890578371 +13663077421 +13917814735 +15169978341 +13943155712 +13635779055 +15844688162 +18868014103 +15830259258 +18814704493 +18885731966 +13933502799 +13982772757 +18562444983 +15190335528 +15891894993 +15865187365 +18564993099 +13645876209 +18886890136 +15829343901 +13631388933 +18531953847 +18500058663 +18808436335 +15892906485 +15147819353 +18899121670 +13641628108 +13686124272 +18869110170 +18511510953 +18506755205 +13905415967 +18829437926 +18897614856 +13642486478 +18516838125 +13608958505 +13623128680 +15196340738 +13981952176 +13994091685 +18883225451 +13641732257 +18578178718 +15141976651 +18845979835 +18507541183 +13963372403 +18800590164 +13603541002 +13663876341 +15150323184 +13938900386 +13639631266 +15822125417 +15194474827 +18823047841 +18853608285 +15812932303 +13908627234 +15180556963 +15811949046 +13919106143 +18847928136 +18821425086 +18847462040 +15186936870 +13632133596 +15100976455 +18512044692 +18599322539 +13965526344 +18845854233 +18810579854 +15144731640 +13644337405 +18524547083 +18816948011 +13634095802 +15864847790 +13967726518 +18506995365 +15178603167 +18844310095 +13944111277 +13695632714 +13941759922 +13689319527 +13944986903 +13604024761 +18818613860 +13939498340 +13963337133 +18552891771 +18561894686 +15829996876 +18501082875 +18593799544 +13953097094 +15167559415 +13611722198 +13695440034 +15858449545 +15193716573 +15887413795 +15838529979 +13665131248 +18895795608 +18864451203 +13698488491 +13991715730 +15159247331 +18537407181 +15893788524 +18587657418 +13902242374 +18838902008 +15142998123 +13948994494 +18837350480 +15891626347 +13934712373 +18554546219 +13648562909 +15855940389 +18844839020 +13923330264 +18801810645 +13607073622 +18569009110 +13664656197 +18877725674 +15886835911 +13902714200 +13913276618 +15190302243 +15809826909 +18886871124 +18842865984 +13998166528 +13697552212 +18863052947 +13631625893 +13985794577 +18563513218 +15142761921 +13947523289 +15874131321 +18535626459 +15180628163 +13963263609 +13937779072 +18506878936 +18804413338 +13684204665 +13932913481 +13954658733 +13678478375 +18587445234 +18803751872 +13970176622 +18513706119 +18578707934 +13968887938 +13679801563 +13970070816 +18898721845 +13642826843 +15158977890 +18891232868 +15800109830 +13941020569 +13950069837 +13914083644 +15135609495 +13643601825 +15813028166 +18865844707 +18856390498 +15890007796 +18577730032 +18830660943 +18525914252 +13978996113 +18526672758 +13920336514 +15103887093 +13940520208 +15828998892 +15193961141 +13922829966 +13907186486 +15127093732 +15179356368 +15889896046 +15142051465 +18566341228 +13628468076 +15890797801 +18556750415 +18829337393 +18837353366 +15842254931 +15189133751 +18508288941 +18517779942 +13938319277 +15178710331 +18560709243 +15101190267 +13681926964 +13601249395 +18846728907 +18511816535 +13684677534 +13663355940 +18850378307 +15833818639 +15812732407 +13600782496 +15869544654 +18523801440 +13673756393 +18880803325 +18862017783 +13933061861 +13999596720 +13943056457 +15151415827 +13603738625 +13900020047 +15817850564 +13681058772 +15192156220 +13935812052 +15166774160 +13928212593 +15160652096 +18875752335 +18549309154 +18559625779 +18882617525 +13606512347 +13644180339 +15867841506 +13965736730 +15833803618 +15113824858 +15147014674 +13942888410 +18875768979 +15888905077 +18822915167 +18524189380 +18508763893 +13621142679 +13903860220 +13678734610 +15867082274 +18894985704 +18535987978 +13954124956 +13961932774 +18856075327 +13628714402 +15811195490 +15899718764 +13672609441 +13911492732 +15145626376 +18562496488 +18860441217 +13988311299 +15885459192 +18880218809 +15176382046 +15844123314 +13624463088 +13976569611 +15194565276 +15860846441 +15152369607 +13609894937 +18897445705 +13645173098 +18534561428 +18537355045 +13982877637 +18851780643 +18819407828 +15822712787 +13681317949 +18543868263 +15867401758 +13988944242 +18557782143 +15120585816 +18541453177 +13602717467 +15158222101 +18890001308 +13654610241 +18855982435 +13622765862 +18876335819 +13690735770 +15163329470 +13693943878 +15875602304 +15836155585 +18869847229 +18857648359 +18871676792 +15163853898 +18803685108 +13625371273 +18541510475 +13907385979 +13977050084 +18531871097 +13936633353 +18580223605 +18858626377 +18516084870 +15878485403 +18840135191 +18849314215 +18515842275 +15188778913 +15190652862 +15882791462 +18505141239 +13972776501 +15133724439 +18503944985 +18583417864 +18586241658 +13906456234 +18808048312 +13617737259 +18527255643 +15872502861 +13619892004 +13686982936 +15829863723 +18562734729 +18800343578 +18816606046 +13634281920 +18586153134 +13658828557 +13640891909 +15105880378 +15127269052 +15872798199 +15139203016 +13656860434 +18893024211 +15873183280 +13611492513 +13986093652 +13940838852 +13908410427 +13964451489 +13962721764 +13646374262 +18525688118 +15124337124 +13606753383 +18809381959 +15867848752 +18515287400 +13991319707 +13631782136 +15115460407 +13631294788 +18504696311 +13955835718 +18553643654 +18556937599 +18550317995 +13993101093 +13902905284 +15890336408 +15857658910 +13604183287 +18872003668 +13656564155 +15183651097 +18585253644 +13941506445 +15860647004 +18516680672 +18524494753 +15811103929 +15845323535 +15897527678 +13961463456 +18812620553 +13660888981 +18897673353 +15809090481 +18565462609 +13695112502 +13608860032 +13938692270 +13992364727 +18507003937 +15869917600 +18566523797 +15129066549 +15172473085 +18806556996 +15197265364 +13687976525 +13649461906 +13959872845 +15158572041 +18803759061 +15115553054 +15898858569 +18830771175 +15139568864 +13903819623 +13687013258 +18560022607 +13912990079 +15123786572 +18860454212 +15879838452 +18809259377 +13695395645 +13648462167 +18513867960 +18862097068 +15184798455 +18546548851 +18530594146 +13912441508 +18596708026 +18825586503 +13654496312 +18509215862 +15817705699 +13986574162 +18590945006 +13934630192 +13611113892 +13992630843 +13602938790 +13942799719 +15862393690 +15846552634 +15803531158 +18851308403 +18885335362 +15112561306 +18856249192 +13696914977 +18871438513 +18508262579 +18544235899 +18801411000 +13986355241 +15897784489 +18875480070 +15196006922 +15139517371 +15813662409 +15108339160 +15173834577 +18831411668 +15100325468 +18884050476 +15840252676 +18530219849 +15853655481 +18855940345 +15188864896 +13922511634 +18509685325 +15862971419 +18849867667 +15132254242 +15193959844 +15154033632 +15842479371 +18862591946 +18846439548 +18808150666 +18548245252 +13962054034 +13653635330 +15800572334 +15174828507 +18563985777 +18809132727 +15888188113 +18804292774 +15840170779 +15147108427 +13688054212 +18538211593 +15837885941 +15161549168 +18882943401 +15183140114 +18510537654 +18890361971 +15169040954 +13985108682 +13915835392 +18519445393 +15875666731 +18535686746 +15835596040 +18558903719 +18516531058 +13601839647 +18858261007 +13998899186 +18816818283 +13640105394 +13906796218 +13604331262 +15161145050 +18832978291 +18833585862 +15190091822 +13685930781 +18540468603 +13921516447 +13625638655 +15854348669 +13619732817 +18888834923 +13637444097 +15154784097 +18815691288 +18506335512 +15895611064 +15122355838 +18559162989 +15832665033 +13900008864 +15835517843 +13678849720 +15142773326 +13909872719 +13663113965 +15151910372 +18594526883 +18870658142 +15832649603 +15859136383 +13915004805 +18846715379 +18834746978 +15823348284 +13642514366 +15139581554 +13683048831 +13622973193 +18597039367 +15884814838 +15868561544 +18562072557 +13983106061 +18599976666 +15884387053 +13698095820 +15847540989 +13646718347 +13695472682 +13623368506 +18898741840 +18594654778 +15117455911 +18539153885 +18864942495 +13604831695 +15880244401 +15125244120 +13681181902 +18599297108 +13666393736 +13922181517 +18567070123 +13923381802 +13692314151 +13984898890 +13959148737 +18536421430 +15132754394 +18520551541 +13962894731 +15804682151 +15848853097 +18863658973 +15823821600 +13670040245 +13934020369 +18508055721 +13674724046 +15181224964 +15175838675 +18876715177 +18561542689 +15886561792 +13684215657 +15856013167 +13696795809 +15109496119 +13650725137 +15803991345 +13986000312 +15887125024 +15862467433 +15861310222 +13957097140 +18899814310 +18887180867 +13924627819 +13919627984 +13906599561 +13933239030 +15827639106 +18862351853 +15158935025 +15830677815 +18895465398 +13621680099 +13664421752 +18536021766 +13934856949 +13955876107 +13975902000 +18510800642 +15845644481 +15110110779 +13937783728 +13993841058 +18845709080 +15878767810 +18826482083 +15139166874 +18813165803 +15164032865 +15175707534 +15185934185 +15869161776 +18831913085 +15870183333 +15826325469 +18855917589 +18584833258 +13674581119 +15811119775 +13613248544 +13990191906 +13918111021 +15169249548 +13945369328 +18588832151 +13638050907 +13698326440 +15169266817 +13976363270 +18536668975 +18518864554 +15816902784 +13623038825 +13685950316 +13935424680 +13640782548 +13904647149 +18557891835 +15184652911 +13948697231 +13911991851 +15159950855 +13924232750 +13913104533 +18592732433 +18502106033 +18531003832 +18552550902 +13905879108 +18812700537 +15171023207 +18821541230 +15800365331 +13633141519 +13989996739 +13950550555 +13600082742 +15120637546 +13624677420 +18553017610 +15858809226 +18891067694 +18810432754 +15805540690 +18539781790 +13944387889 +18844980448 +18870879742 +13643551140 +15875687241 +13949402257 +15168947739 +13668668099 +13936843291 +13997384015 +15800188442 +18586575694 +18879272348 +15865927434 +18525129318 +15189109403 +13622400334 +13612014343 +15853399234 +13627797422 +15145511761 +13616372104 +13968963484 +13660888650 +15190286889 +13934102177 +13990122126 +18861450522 +13954957408 +15855795332 +18521497439 +13684542934 +18538276129 +18501822704 +18590981651 +13966996265 +15152185520 +18589568910 +13678018332 +13900063153 +15837229244 +13615790710 +18852662352 +13928239777 +15186482083 +13681734760 +18574859943 +18561993775 +15100454817 +15151843775 +18578263849 +15832613412 +13945616029 +13992752102 +18565240378 +15166584226 +18579001213 +18508020147 +13941041890 +13952437407 +18853180183 +15841170715 +18507593861 +18856267950 +13959566685 +15119752595 +15130562275 +15844031991 +15121704440 +18837666746 +18500741236 +15108793095 +15870110403 +15114050331 +15119478953 +13630107939 +15836388858 +15887156639 +13995620564 +18885250098 +13984680507 +15161652390 +18828269159 +13936120520 +13636266311 +18815705083 +18574165739 +13692430295 +15872427726 +15826728931 +15165254419 +18566479787 +13978020184 +15152326635 +15823348406 +15127302233 +18549681323 +15869167997 +15112102445 +13671483242 +13659225896 +18521375033 +15889045807 +13974080776 +13681199511 +15117621010 +18849960224 +18827594335 +15860875352 +15818216688 +18819812540 +13925518008 +13937778935 +15187597727 +15859871992 +13620644167 +18519745897 +13965421706 +15821950111 +13906705540 +18588696236 +13953291110 +18542613861 +13935747444 +18508661040 +13947274755 +15818416035 +13987702685 +18882486981 +15887026356 +15828602075 +13661596081 +15898889890 +13659119431 +15163535118 +15897079595 +15112209045 +15125538766 +18822682130 +15141105208 +13976502423 +18873399640 +13902795177 +18863347686 +18560172756 +13918889167 +13689487305 +13961201395 +13922836796 +18876057296 +13904846378 +13640154114 +13605143272 +13693480811 +13997138634 +15134993850 +18568061970 +13924081080 +15887847212 +18867127992 +13939033453 +15864016563 +13606818512 +15837198712 +18546532725 +18575572503 +18531185484 +15836666866 +18898667027 +13921951023 +13665648821 +15858496737 +13919446593 +13624210246 +13922917553 +18545156319 +15131922830 +18898191651 +15121166618 +13605071166 +13659289730 +18537619013 +18883610901 +15157782051 +18520215778 +15186875656 +18877854417 +15884119415 +18850698302 +15822656539 +18858151806 +15181661458 +18836233927 +18566960750 +18844572644 +13943121733 +18574952623 +13636394241 +15190218966 +13974832655 +15197806619 +15197201402 +18863455912 +18848885753 +18850839752 +15886024515 +15871544082 +18528012190 +13617584487 +15872717050 +15870805528 +18881653443 +13601008459 +13985691342 +13642817654 +15832640908 +15169844947 +18845357462 +18536575720 +18554940680 +13991085981 +15897116909 +15192669090 +13658560792 +13667265962 +15838583685 +18586230978 +15834215053 +13960942807 +18829893445 +13971356393 +18557479072 +13995980505 +18512558207 +15187692022 +13946759300 +18871287025 +18573520018 +18889773247 +13990099730 +15870849467 +18532894243 +15820917646 +15110905699 +15829191958 +13684084264 +15815370937 +13997312672 +15192898004 +15808741846 +13617042837 +18882769947 +13622974643 +18895644460 +13915439612 +13647094190 +15126793128 +18808798680 +13967108182 +18512648383 +15848235954 +13680184012 +13624765347 +15190946009 +13625493007 +15892333336 +15109396190 +18847785137 +15198963503 +15112158231 +15140929805 +18559880762 +15130261604 +15854884693 +13624676599 +13985934754 +13627831518 +15159305453 +18543122889 +18526332867 +13692305648 +18515877949 +18527633416 +15166929012 +15142775672 +18548364493 +18594935352 +15818231251 +18831719819 +13608308295 +13686984526 +18506944522 +18593620475 +13909974256 +13657856368 +15859959121 +15874220331 +13667076343 +15174951388 +15852334858 +13923130755 +15147858154 +13942888784 +18520989132 +13621687981 +15144151307 +13952870007 +18529288034 +13994114957 +13987010910 +18803387686 +13671808365 +18578850410 +13617145992 +15805308765 +13600292063 +15826470220 +15834304211 +18530719183 +13678805130 +18593743962 +13979891104 +13908949110 +18532427328 +15859650770 +13672568660 +18867105384 +15888137586 +15164658839 +13606334299 +18800550524 +15187904187 +13904325686 +18869014541 +15826293107 +13970947588 +18546620143 +18893954688 +13929093196 +13909753332 +15195450544 +13906543869 +18507229920 +13995025652 +15116798428 +13622356244 +13654454350 +15139439172 +18565357503 +18533923727 +15883673154 +13660703654 +18816308501 +15181694634 +15870770467 +13927949840 +13656470364 +13970130264 +18879791958 +18537790050 +15109948556 +15808907887 +15199466007 +13625737110 +18849549328 +13994865280 +18568531182 +18582025240 +18812772375 +15150350804 +18535564682 +13944863306 +15849108411 +13637442827 +13994980779 +15160798881 +13676955830 +15155264151 +15802384571 +15876186816 +13972003888 +15114312073 +15136276907 +18878543575 +18822643018 +18858624484 +15168025121 +18558727334 +18848434671 +18823889953 +13612408586 +15149528545 +15872207385 +18557746338 +13609523915 +15170055895 +18855028985 +18870758470 +13942654546 +13989994595 +15185398878 +15161440217 +13648679830 +15898867367 +13669781577 +13915822075 +15157424730 +13684873245 +18535292227 +13641048372 +18549600171 +15886545650 +15141194255 +18888849590 +13911226160 +18890261410 +18588176613 +18567805147 +18888689854 +15886992080 +18533783699 +18520084302 +18555109438 +18834651187 +18845139775 +13911670304 +18812979348 +13993050494 +15145494146 +15160200340 +15865256770 +15140107715 +18839042390 +18584719464 +18813618774 +18898048571 +13976818166 +18547811708 +18561486716 +15143968640 +13655410178 +18548526750 +18566654599 +18565296606 +13987486873 +18812964843 +18572784323 +15817906461 +18504653547 +13912637430 +18821937285 +15820381008 +13957578300 +13693815072 +13959384105 +18829452810 +13698664727 +18834658290 +18854030941 +13690122972 +13952366583 +15897134544 +13991152969 +15850289036 +18598259183 +15167607899 +18855167338 +18565464655 +18818988407 +15129385573 +18862211536 +13911793878 +13981424203 +18854981480 +13680972578 +13951188246 +15195635949 +13962823642 +15174000228 +13902097230 +13954966497 +18846921699 +18548470568 +13635291626 +15166950155 +15178714584 +15818109472 +18541421547 +15119916158 +13657587685 +15881429547 +13628455922 +18898362536 +13917564496 +18576099141 +15898471909 +13661945985 +15139836583 +13652023586 +13624524773 +15189948303 +15186011006 +15880883031 +15881355190 +15890981833 +13631009548 +13977601403 +13690613148 +18835548002 +13989580538 +15893223538 +18813135989 +13951341286 +15877576817 +15828940745 +18809604806 +13618006477 +13984503536 +18583163742 +15188879159 +13918449304 +18576312531 +18871579700 +13950124731 +18521383806 +18836089339 +18803920447 +13619103622 +18596019707 +13930883831 +13638017705 +18893979348 +15118524703 +13646506553 +15101361067 +18888992976 +15103622709 +18565005957 +13665264129 +15855203175 +18523030559 +13966361169 +13943983415 +15165948827 +15153546614 +13908262467 +18520341023 +15196030742 +13602347661 +18866469004 +18888143191 +13667595840 +18520693410 +13914132081 +15822639329 +15837080517 +18812511587 +15195729958 +13999382877 +15184276990 +15110871208 +18524307966 +13915753150 +15194656444 +18522531293 +18546346253 +15166987020 +13652442062 +18593034376 +18841386067 +18515948776 +18804329134 +18551915535 +13924444924 +13917198416 +15894842396 +15842024011 +13903646272 +18817339700 +18851628943 +15852284256 +15113498342 +15856867114 +18870449720 +15112566047 +15819069031 +13955355659 +18824571137 +18541682485 +13968763948 +18820296158 +15156287729 +15173635068 +15840173443 +15139946491 +18827598395 +18548954514 +15176321817 +15168394421 +18856601098 +15135959788 +13913327861 +15115440822 +13946637975 +13630105994 +15168960132 +18592876590 +18810224337 +15161114111 +15108933275 +15171990914 +13666861412 +13610696743 +15891825827 +13948819003 +18532244894 +18501060710 +13698126215 +18561173474 +15894023030 +18556487934 +13985384932 +13935265928 +13663284266 +15181104566 +15185494358 +18806451469 +15107421863 +18836824071 +15135037463 +15113779067 +15899389990 +15101901435 +15848059927 +18821578239 +13966867832 +13602022323 +13963954716 +18590354969 +15117645100 +15806308065 +18532840259 +13640890952 +15878561607 +15129514396 +13916269743 +15171690100 +13616072006 +18813884355 +18513052402 +18894722394 +18550094843 +18853274231 +18895714456 +18524099180 +18805895114 +18868566579 +18867637020 +18514211806 +13932039230 +18575457011 +13677369913 +15193704594 +18551933525 +18533062972 +15134973977 +13688185071 +18536350748 +15876180088 +18590997846 +15125645845 +15829314323 +15842679197 +18831038775 +13946044107 +18876678218 +15130990385 +18595598347 +13617856074 +15164795419 +13919103026 +18594515611 +18580909363 +13601828661 +18813876589 +13665978180 +13657744213 +13916287745 +13917401382 +18863336537 +18544283078 +15844315486 +15894876059 +13918536306 +15852606784 +13621139813 +18588276127 +15854815479 +15847606056 +18526160139 +13626598802 +18521594846 +18540156894 +18567629377 +13630171826 +18848586446 +13647750115 +18849745328 +18578359178 +15190719621 +18884137174 +15179550130 +15167236648 +15142148868 +15161643885 +15862848330 +18874343284 +18576331857 +13617709853 +15889789835 +13696260997 +13619811941 +18842658489 +15103792159 +18856285556 +13695875845 +15814551323 +18592721734 +15164150800 +15180255875 +15124215536 +15837332702 +13939304273 +15856190935 +15102854548 +15167134461 +13970966442 +13660062850 +15165834740 +18870135061 +15162272064 +13688898198 +15171532342 +13930544131 +18554259442 +13935905359 +18565411629 +18559138105 +18835796199 +13654258921 +13640938954 +15139909219 +13936805505 +13631570812 +13929983134 +15830930926 +15856310710 +15176936423 +18853023100 +18532763977 +18598431295 +13975728854 +15106937173 +18825828076 +13603585872 +13672856956 +13604706711 +18868078793 +18565581148 +18518241841 +18862046317 +15149035803 +18510501306 +15101794437 +15102638752 +15101643430 +18585848380 +15854915499 +13627281989 +13986873898 +15833115956 +15811470311 +15121613503 +13932353252 +13602706944 +15179863607 +13982170456 +15827807576 +18524355268 +15198794736 +18575031260 +13975853574 +15864528177 +13689202579 +15872520270 +13933885789 +18565824851 +15826475322 +15160883254 +18582356734 +18593514504 +13627806008 +18836270826 +13942776912 +15155162632 +15857084820 +13995146514 +18825005155 +15173880157 +18517103334 +13679729240 +13666342395 +13698454924 +18561798482 +18809269468 +15124028726 +18833216464 +15832696470 +15149172683 +18879137102 +13978695234 +18516570053 +15813187811 +18577495618 +18582116638 +15120863766 +18848279006 +18520249112 +13975775314 +15819289479 +18537897313 +13602205665 +18886115266 +13638811523 +13917547962 +18880390262 +15820650753 +15112381125 +15866448741 +15136132116 +15132193777 +18801653353 +18867935333 +13942962590 +18832938154 +18827706506 +18849237351 +18567967918 +18513629747 +13928539081 +18872198192 +15128757117 +13600685510 +15118858833 +13983924870 +18585010359 +13604846132 +13698996071 +13927921041 +13648091820 +15143219934 +15151159382 +18514846024 +13696744098 +13683961566 +13685841910 +13642737530 +15147290624 +15199087897 +15879131558 +13905105852 +18854433448 +13993394694 +18554800627 +15819449712 +13903829484 +15868594603 +18533268816 +18513774719 +13919639606 +13687910314 +13981234445 +13960517978 +13633848505 +15818580974 +15833619690 +13628174738 +13658673465 +18876116114 +18540930308 +15851199802 +18813942000 +13643735892 +15129886431 +18585179431 +18503380480 +13611530124 +15833702083 +15180541377 +15802074721 +18509348236 +15189276350 +18844632648 +15854502638 +13999081967 +13656199492 +15897345154 +13917650347 +18816314312 +18529330166 +18509811542 +15835592303 +13957438381 +18568878466 +18873707992 +13623588061 +18543398894 +15829656824 +13657910587 +15838175839 +18535593720 +13903859040 +18519693772 +15809119604 +13912826856 +18557021821 +18535812458 +18574682170 +18524441775 +18555025795 +18593501267 +15126345993 +15191723224 +18886988445 +18586967674 +15822299010 +15873780548 +15112756743 +18896929666 +13615713490 +18828306478 +13921661712 +18588102021 +15870133232 +18817423353 +15190077587 +15175223529 +18863275701 +13912432024 +13925933100 +18514868195 +18589296089 +13693120575 +15800927132 +15899513719 +13970566107 +13960985974 +15895880876 +18560446331 +13651411838 +15837219752 +18821632681 +15862001743 +13961110648 +15130055604 +18829775927 +13697167200 +13689905840 +13619672314 +13600771768 +18508557347 +15824369987 +18808764018 +15828175998 +13976267536 +13991631775 +13646551185 +18592037602 +18894982689 +15872328577 +13946481566 +15875104831 +15196196325 +15840268835 +15179089050 +18547724553 +13945578281 +13625560628 +18545883326 +15854209563 +13939668659 +13967904294 +18809940897 +18500337458 +18588070718 +13932038750 +15131820017 +15892768318 +13945463110 +15118423446 +18859590605 +13689328490 +13996054511 +18557432594 +13975296471 +18566147441 +15185449402 +15836598030 +18890068684 +18509794704 +15159704885 +18530901130 +13600441679 +15836397552 +18552252123 +18528573173 +15854587183 +13962295459 +18810525067 +13930109410 +15861550854 +18879135455 +15805750967 +18869477820 +18555147071 +18535825468 +15165322331 +13917843501 +13641778068 +18817761573 +18856829595 +15888832766 +18856648712 +18847510017 +13943431995 +13657910676 +15160458319 +13655879210 +18558718922 +18531463094 +18896907903 +13689275340 +18527515065 +13937905600 +13919877695 +13949606416 +13619293894 +18850120467 +13645016169 +15182692805 +18863612393 +18540838193 +13698308032 +15860975543 +18836999152 +13995343377 +13641010932 +13990190677 +15818294825 +13697366308 +13643915151 +18822751495 +15173492631 +18882121362 +18590964757 +15853715587 +15141382563 +13606295400 +13910328476 +13644447652 +13684169426 +13912369349 +15168870360 +13605165762 +13634009765 +13915981127 +18525120072 +13656716312 +13969560201 +15174145645 +13616575878 +18863651283 +18574082592 +15170936909 +15830244392 +13642490768 +18883367232 +13987967647 +13663187216 +13944254080 +13620904661 +18877216604 +15128656787 +18886057792 +15868644680 +18559918052 +15889424132 +13993488012 +15127433124 +13655301338 +15142024951 +18569873992 +18565720239 +13910570880 +13625787733 +18556545487 +15171884421 +18569801724 +15132073223 +18504392657 +18800841475 +18524012983 +18531653566 +18503159151 +13698442858 +13986095479 +18847071309 +13945944685 +15817512361 +13944272594 +13605013803 +18574343327 +13962702476 +18585966524 +13631009735 +13641391600 +18535015005 +18589972297 +18524934720 +13911625955 +15133199553 +18808373621 +15853284603 +18572810641 +18814917276 +13662752308 +15874135953 +18531294667 +15172781205 +18822493001 +15148769056 +15155463995 +18558824590 +18532867738 +13675629041 +18826493221 +18595690198 +18847869110 +13615449802 +13945368716 +13985341665 +15855769917 +18890829884 +18847695280 +15886300276 +13675172608 +13616778120 +18524740708 +13628167619 +15833152340 +13697636653 +13983584527 +13969076862 +13989549721 +18820532928 +18553681187 +18809216581 +15124709110 +13685149416 +13977221998 +13600770328 +13906047898 +15810508709 +13601487851 +15124774766 +15886491669 +13629231950 +15896585700 +13678625556 +18536207427 +15886953995 +13622718093 +13669381855 +13902853080 +18501993204 +13960675802 +15893221203 +13641913741 +18802023216 +15181327338 +13669171988 +15192788813 +13699581707 +13950500772 +13900197629 +13607832231 +15138881356 +15144080458 +18840992834 +18523948481 +18839358503 +18516529207 +15111661813 +13957960048 +13926475738 +13934827587 +18561192909 +18854319954 +18801259741 +13970806676 +18893190891 +18547730825 +18822402051 +18803928029 +15109647813 +18813246129 +18854293705 +15184976587 +15872695046 +15197932006 +18894271698 +18803884177 +18538624791 +15855585004 +13951826531 +13631091114 +13684169481 +18513819970 +13600044063 +15111552586 +18589659169 +13687715198 +18860367811 +13602765307 +15193959897 +15857511804 +18502864412 +15805395317 +13909490862 +18537464316 +13919416352 +13699442887 +18516453734 +13689453412 +15142711348 +18824026904 +15894769603 +13925291251 +18547382213 +15128817459 +15885208238 +18515765068 +18510626103 +18513078178 +15826692917 +15182608597 +18564544216 +18856898036 +15846858588 +15102833783 +18588427060 +13679885907 +15181824555 +13947593864 +18891408132 +13653155187 +13635193127 +18583477961 +15166153101 +18820445489 +13680707404 +13676665644 +15877855926 +13974219993 +13977418323 +18509428628 +13989557064 +18556775662 +13674815641 +18514827526 +13945190531 +18504212138 +15833915993 +15142238905 +15892040131 +15846310114 +13946443574 +13690193022 +13908970435 +13646600816 +18542368109 +13612795592 +13908525148 +18890961912 +18598173942 +18807867230 +13938785276 +15132485915 +18584196274 +13620292270 +15113571086 +13963018952 +15827321128 +15867859045 +18809428944 +13650603242 +18826906599 +15138553759 +13975469885 +15839748125 +15877730372 +13927699748 +15814275795 +15816493320 +15140397773 +13957662900 +15845381143 +13663413955 +15836618809 +13665146421 +13649440905 +13603133083 +15116835244 +18599122225 +18853679779 +18571747679 +15125750018 +18501587644 +18533792057 +18546631241 +15147873779 +13933745887 +15101226659 +15106331992 +18814781913 +15840347145 +18865665172 +18599691301 +18594644995 +18598171783 +15845203463 +18865201726 +13602518785 +15128595407 +18828761565 +18824329351 +15105193536 +15114382583 +13669437785 +18514944631 +13647187948 +15861195682 +18532111153 +18806375747 +18538149363 +18834596909 +18897685866 +13670051196 +15871219363 +13980196953 +18551292110 +13912871532 +18588317977 +15190934403 +13606111672 +13945837411 +15189668412 +13946157077 +18851371461 +18529241642 +13926479565 +13949730924 +13988155871 +13616748747 +18526066527 +13948755783 +18555060151 +15151931552 +18884822688 +18856662620 +15847415680 +13987907213 +18825507158 +13955282573 +15847689137 +15117531292 +18823777388 +13921919008 +13992295228 +13919603180 +13921253153 +15111889409 +13900006711 +13638801192 +18557244867 +15841625577 +13699123328 +18864079966 +15802726722 +15162718824 +13911664001 +13651218499 +13630834584 +18894089652 +13955368229 +13677058444 +15158208961 +13977557767 +18859059231 +13997715912 +13958052403 +13671341737 +13931069175 +18816748298 +13630615891 +15859203496 +15806008740 +13907549966 +13626003220 +15877061269 +18820597755 +13676355230 +13692139174 +18816718732 +13662509975 +18592993217 +15151558383 +15121996900 +15135935739 +18575694245 +15147961646 +15110775064 +13632735320 +18805982554 +13645054801 +13651726780 +15838194420 +13997471353 +15869045890 +18540101734 +18803953981 +13602912394 +13666787761 +15881741101 +13605599528 +15842662051 +15114323045 +13612273858 +18505503178 +18535621410 +18548840018 +13969540668 +13635743434 +15885398441 +15175200615 +13630125094 +15157745761 +15136783681 +15869264526 +13642670247 +15853284130 +18890354352 +15198606152 +18880006088 +18824403924 +13920968243 +18577408617 +18529196205 +18895379079 +13618809789 +13946809018 +18876236236 +15852473569 +13623359930 +13979337015 +15854060648 +18536614292 +18864693174 +13666303262 +18867795780 +13682214158 +18548731419 +15133671753 +15128444740 +13980849336 +18549488342 +18860736911 +13934440563 +15140530662 +13928457689 +18572007465 +18827914314 +13638359471 +18870655358 +13932948393 +18803879776 +13928568444 +15823315536 +15145932490 +18886285369 +13611479786 +15189028689 +15812088459 +13927480035 +13627047724 +15126256736 +18861468879 +13642373546 +18577588069 +18828311228 +13640196777 +15179603412 +18876139740 +18524561217 +18868312252 +18826247100 +13916170574 +15172957540 +18599776225 +13975775868 +18830002473 +15151404812 +13667148315 +18816214466 +15877173645 +18817815203 +18543453437 +13676404366 +13945962821 +18526956475 +13930572877 +15107146092 +13627348094 +15828267338 +15881241519 +13914822402 +15851508533 +18861981840 +18820142920 +13646282596 +18510521699 +15861680895 +15874621047 +13692518644 +13913704827 +15130261818 +15176383385 +15179450828 +15127267349 +13933667045 +18803694149 +15875073893 +15199911234 +18861485412 +18537364310 +15146395594 +18553273548 +18895497985 +15110502896 +18530621624 +15168889780 +18522319800 +15814991448 +13928155154 +15106957582 +18511775461 +18895354221 +15184698063 +13925387284 +18578497663 +18842987599 +18599481108 +13901740107 +13946288611 +18852787719 +18872036253 +15189670974 +18577422629 +13908700198 +15862772892 +18568625174 +18519807774 +18814413788 +18538120061 +18575372644 +13648402534 +15830301602 +15191204662 +13936947005 +13637018840 +18872140468 +15180782900 +18804692043 +13951609707 +13621737179 +18896332418 +18580859464 +13685572410 +15194077199 +18816813557 +15896162876 +13672096956 +13984146935 +18524331837 +18817420311 +13629635017 +13911936185 +18568353723 +15188341904 +13608908913 +18595918833 +13637364076 +13925812212 +18570621582 +15887073534 +13939377128 +15135524860 +15110957058 +18567968728 +18546723233 +15802587047 +13917152842 +18548865242 +18848631428 +15159627271 +18556622296 +18585552678 +18884384747 +15155642603 +13940738883 +13909465568 +18818394724 +18837075442 +13636070036 +13980306775 +15164585195 +15824719335 +18584035406 +13942199223 +13920137908 +18880691633 +18852771797 +15168924049 +18534356450 +13956469412 +15175175145 +13679127880 +13975893849 +13914505747 +13645391503 +15103518246 +15831498873 +18836607632 +18802195615 +18523980098 +18522464663 +13910204142 +15152081991 +13980312939 +13903481852 +18587344571 +13917389449 +18850235604 +13619361776 +13941658783 +18834018199 +18549180747 +15159283106 +18504883247 +18548734400 +15147083371 +15184190949 +15826428125 +18514426841 +18551182586 +13914919517 +13651164903 +18814054864 +18864592190 +15144975603 +15159385975 +13615261032 +15184644753 +13639972411 +15855451183 +18897230144 +15109870681 +13950379221 +15102920961 +18804282435 +13681357959 +15112980260 +18851191614 +15119158893 +13954115945 +15175979750 +15167451266 +13955921600 +13910028529 +18844572832 +18820441261 +18568966823 +18599964503 +18595911781 +15159773298 +13620929509 +15802539462 +13601197674 +13643009583 +18850180464 +13693207501 +13934804641 +13908819474 +13665924947 +15175189671 +13911777815 +15854908055 +18822302987 +13970046653 +18869518484 +13988682795 +18531604240 +13950462864 +18549068796 +15806983640 +13989869587 +13934814761 +13640921318 +13992087620 +13680695717 +18838611823 +18520526999 +13698690596 +15861365787 +18530520793 +18599061545 +15881172559 +15173276039 +15884653311 +18571202662 +13612072782 +15181237409 +15841002791 +13923243968 +13634780192 +13904672170 +13636099500 +18532135909 +18590099763 +13972052989 +13988723332 +15124151571 +13681868917 +13620935624 +18881605841 +13653294632 +13923803940 +18535957227 +18589705427 +18567287453 +13931524290 +13988751862 +15186474414 +15172539469 +18850924244 +13668414990 +15135866444 +13635506076 +18506677319 +18827964455 +18575093168 +13917858711 +15805903539 +18802554087 +18534388740 +13932459618 +18532959849 +15855172490 +13986002227 +18583903746 +18895267913 +15879829032 +15112394358 +13659527704 +15122141576 +18881910435 +15852817892 +15152099626 +18580112073 +15884363494 +13670828698 +13693560836 +15864997770 +15852657708 +15803458863 +18583544381 +18504820092 +13662866717 +13654950718 +13694553757 +18537053012 +18862137782 +15190905750 +15143622354 +18579405283 +13691913567 +13608500828 +13931388662 +18869561072 +18837309194 +18865117276 +18800908850 +15122359252 +15861612240 +15110668098 +18839214068 +15188970716 +15845600835 +15861795876 +13679727947 +15194128144 +15864764577 +18820359924 +13961660265 +13665888897 +15182079734 +15127597296 +18544759194 +18509358925 +13948548954 +15101619709 +13988502011 +13676793106 +15122687007 +13694204670 +15866417178 +13916647658 +15827633874 +15153380188 +13645828169 +15877307587 +13917451124 +18837950052 +13691806896 +15893246969 +15135882655 +13910626696 +18834875020 +18528634059 +15160795368 +13602957487 +18803282380 +18570127583 +18826698563 +18514078242 +13924116436 +15138839292 +18853177444 +18846394085 +15853573768 +15187419275 +15840372276 +13672618910 +13693481429 +15844740887 +15874704004 +18853884144 +18895686096 +18547239714 +18563742269 +13686991488 +18506269900 +18857055848 +18531931027 +15197314719 +13953737484 +15111569006 +15870232219 +15137866283 +18821909219 +15891111345 +13905110480 +15826077115 +18876654938 +15178541819 +18837695972 +13947622519 +18546227014 +15160827145 +13643111867 +15864826174 +18899617822 +18559284555 +15811870301 +18843687172 +13950221591 +15874969978 +13693591088 +13663171937 +18897478730 +18529403502 +13675218221 +15125480017 +15882135825 +15117738023 +13686773085 +15151344759 +13691599003 +13685174315 +13977863786 +13631562105 +13965974328 +15821118996 +18895604320 +15122320364 +13682697970 +15163463106 +13612447599 +15843963900 +18856186909 +18874149514 +18879299016 +18898885421 +18864393481 +18577637099 +15138167480 +15866469848 +18853236912 +18847904785 +13959380520 +13975581792 +13971573199 +15168846069 +15124393096 +13938907883 +15193606469 +15816264624 +18554651726 +15154986501 +15862774255 +13683337290 +15873074901 +15829807489 +13694966494 +15118141100 +13985239678 +18573397710 +13644973933 +18518336845 +18558775127 +15131290472 +15116163834 +18887283759 +18529130924 +13977192226 +18860740238 +15194883531 +13647343426 +13912418979 +15134051224 +13659711498 +18511060921 +18849643462 +13915363713 +13677502827 +15820843669 +15169573612 +15842331495 +18572447872 +15110174608 +13684531911 +18577196911 +15126535285 +15885572799 +13938062561 +15108127797 +15193528555 +15894532042 +13675656470 +15123566362 +18536015813 +13974450067 +18505746768 +18575022005 +13987618259 +13607965503 +15183712700 +13912763566 +15888723169 +15126734886 +15838715125 +18801132921 +18820401787 +18586327241 +18872905810 +18559128993 +13976341221 +18882769729 +15139476842 +18559374738 +13904551149 +15142794976 +15130784072 +13968959745 +13930934493 +18565983572 +18591221693 +18587464260 +15822671913 +13978064798 +18594496930 +15807230126 +15107459470 +15842745057 +18524845615 +13973492627 +13605033371 +18866947108 +18858126655 +15802569992 +18509271073 +18586368655 +18567712673 +13632236085 +13664941841 +18537807100 +15131450222 +15103448379 +15150672910 +13610060377 +18853419750 +13685460841 +15138889048 +18801264101 +13676858739 +13924223417 +13972474513 +13977118817 +13628083530 +13627281961 +15180738386 +13676490200 +15862788549 +15127823370 +18531732435 +13928897616 +13905402101 +13617912232 +15829478309 +13676785743 +18830027279 +13610916849 +18592062717 +13918259605 +18524752201 +18571849773 +15867179199 +18802488166 +18835714515 +18502359319 +18520874211 +13900044798 +13915090845 +13613042620 +15100707310 +18857855055 +15101656761 +18853069643 +15131972890 +18832693772 +13953584484 +13673107744 +13971171506 +13667572799 +18856503645 +18848940727 +18854575056 +13636138836 +18597419037 +15124881193 +18885423413 +13616309517 +15813544077 +13619957691 +18848634672 +13689798020 +13604857991 +15804129575 +18596350325 +18546227499 +15190757159 +13917820892 +15143886216 +15889435236 +18853881896 +13965747570 +13668927780 +13661359133 +15883491323 +15101658783 +15810752276 +15839014839 +15115301507 +18589659433 +15199333651 +15840322121 +18897102724 +18515455808 +13981363466 +15172646901 +13603086820 +13615209890 +13985804690 +15148805949 +15824378156 +13904689279 +13648996091 +18562503445 +15181197278 +15159861061 +15104284049 +13601531186 +15157261731 +18578911810 +13648617740 +13913600178 +18823900710 +15103812714 +15850456109 +15853590336 +18571740826 +18883499480 +15123602158 +15161254971 +18847839068 +13677518881 +15831598986 +15853217811 +18859978313 +18895265193 +15870677813 +18514792144 +13945989033 +18543871320 +13928860966 +18526953895 +18534318445 +15864163673 +18555935966 +15135808099 +18809405363 +18867195902 +13679532117 +18892808077 +18564958170 +13659704685 +13956160980 +18813684468 +13670819607 +13631884220 +13962261035 +13691963868 +18554812052 +18869892930 +18593109902 +18591795018 +18862689637 +13662097248 +15174183043 +13954425983 +15184835686 +18544578129 +15837705786 +15871039464 +15197182034 +15849410057 +18801826321 +13683715114 +18834145568 +15197637899 +13935167575 +15877898880 +15833284760 +13689465802 +18880636928 +15104861325 +13645331344 +13986122146 +15121798224 +15118427517 +13698512963 +15814844327 +18502889907 +13951958591 +13923620933 +18899524361 +15162809737 +13682463306 +15872383718 +15110128547 +15140428744 +13917674788 +15120206113 +15154990394 +15140580534 +13921691360 +18831162234 +15175317956 +13979855345 +13993028785 +18553878942 +13624076059 +15136232605 +13665311446 +13602652214 +13681584193 +18897268516 +13600200559 +18597058745 +18875555236 +18867160284 +18845870048 +18539090478 +18874174293 +15102053564 +18866945292 +15813903275 +15158096395 +15888219386 +13932325556 +18860929233 +18824506009 +15121797853 +15103740145 +18559586672 +18846663463 +15152281574 +15899063567 +13601489019 +18529886485 +18579586173 +13997409027 +13949035361 +18519872701 +15817849840 +15887158439 +18867038264 +13627022353 +15819336704 +15855457163 +18525546924 +15801235777 +13623406159 +15139554074 +18572199114 +18533318356 +18830032977 +15192893681 +13910380455 +13604724687 +18842572216 +13933779371 +15891406162 +15831752169 +13642999732 +13603721518 +15843266332 +15889280600 +18584701532 +18583774594 +18562520110 +18577191203 +18893492848 +13968111307 +13608042893 +15120310363 +18846500948 +15804382613 +13993266502 +15150338422 +13684291457 +15166008701 +15110174112 +18592169549 +13639409460 +15158029288 +18896875257 +15804890159 +18820709418 +18548873954 +18530702341 +15166481642 +15159899936 +18586050379 +15110629305 +13612842653 +18864833601 +13616561335 +15840401637 +13987165232 +18582450008 +15868758927 +18515942421 +15878912625 +13926009147 +13969431351 +15114277870 +13661252967 +18502524218 +13606045824 +15176233090 +15869883246 +13695650606 +15825191141 +15194659555 +13930051356 +15146282111 +13948107625 +18865845256 +15845251005 +15147707529 +18835534872 +15825215421 +15861842263 +18882809906 +15813233594 +15867082353 +15184367701 +13915034331 +15871327505 +18592390450 +18886764944 +15188985338 +13603936081 +15152068163 +18589534588 +18576277073 +18829461870 +13686728381 +15894290939 +18513498819 +18581638203 +13608522256 +13939694831 +18829478526 +13647281752 +18847045040 +15168409516 +18524314266 +13994238116 +13691031414 +15141753890 +15146312433 +18803341396 +18527060743 +13948451816 +13694830099 +13964357866 +13675048434 +18893710517 +13698415455 +15136574593 +13932961936 +15803348477 +18886088126 +18521339439 +15142373636 +15825766098 +18891148371 +13912698754 +13632847363 +15150932008 +13919593932 +18856384577 +13992952611 +13677100194 +18872397034 +18898476698 +13984274105 +15172125592 +15162704636 +13613686254 +15188393510 +18558715643 +15165665888 +13987073725 +15818765233 +15861423031 +15174310966 +13927226652 +15190415511 +18813427750 +13651146153 +18876413637 +13613710159 +15168366090 +18552696655 +15151439727 +18813352717 +15820119561 +18803610050 +15194346128 +18560898830 +15145298199 +13697873789 +15834616130 +13911599235 +15882002425 +15119585925 +13928373903 +15101622470 +18832274264 +13970938662 +13668201667 +18854100703 +15882609676 +18835652655 +15859232698 +15861738614 +18571445076 +13626296797 +15154414215 +15148921626 +18568082831 +15878930354 +18892711710 +15164680393 +15116530149 +18861687828 +18536640006 +18591339522 +18569659268 +13637434801 +18529409587 +15810709625 +13912455906 +13683735921 +18842630577 +18563484431 +15129485471 +13658476890 +18575873444 +18853971513 +18893686040 +18518831009 +15197891632 +18878703557 +18538240211 +18843814464 +15826575837 +18557427205 +18806158019 +13653973465 +18895606044 +18531455895 +13955331873 +13662968093 +13655982360 +15825412819 +18861907859 +15830554773 +18854099824 +15893680670 +15166960325 +13616464359 +13618062722 +18836676098 +15172491357 +18544236947 +18575511626 +18511349666 +15873087953 +18540480054 +15147341828 +18579655710 +13926195593 +18861803402 +15869196639 +15194216773 +18819900484 +15893115125 +18551398572 +18899571193 +13933747208 +15115802574 +13693213365 +15128555290 +15191079228 +15814123726 +18594978999 +18898748942 +13698876119 +15105253207 +15817222600 +13698810564 +18592856520 +18858654701 +13629720782 +13969920624 +13675394599 +18846583259 +18578070061 +15844827257 +15841887657 +13629667981 +18887607098 +15893405238 +13692042742 +18854503560 +13960496369 +18825282611 +15117382705 +15170434931 +13920049391 +13670413567 +13620730242 +13902002896 +13957477993 +15884835638 +18503371835 +13609914963 +13967281210 +13622079187 +13949409749 +13932487031 +18512264288 +13683708034 +13909810345 +13998225663 +18563616788 +13927610906 +15837558646 +15837001231 +13973088054 +18563433998 +18801524582 +13621786166 +18592029193 +18514299262 +18801381424 +18833244202 +13979953821 +18579568624 +13932023838 +18895252687 +15856670875 +18833276864 +15877006560 +13651229510 +15123930407 +15873917341 +18861077363 +13978623189 +13967012471 +13931233357 +15166385402 +15849881031 +18882812258 +18536809711 +15889506555 +18838530582 +18540878138 +18815222001 +13976838860 +15166665322 +18567912809 +15173152336 +18850120404 +18559021515 +15159859292 +15801809012 +15864643106 +18533052373 +13675061886 +13956817803 +18882973085 +15133614195 +18823409390 +15871041898 +18820061601 +15857256713 +15820064640 +13912638117 +15110652974 +18873284836 +13697167126 +13990432502 +18595422695 +18813042113 +18882732341 +13939817436 +15183796598 +13696607497 +13641582599 +18545793831 +13918727616 +15123411992 +18829671810 +18522829545 +13971971204 +13923355908 +15178507847 +13906821671 +18852404473 +15133168259 +13671545912 +18577806174 +15128164565 +13929421268 +18893232111 +15128585697 +18546232763 +13943993328 +18825359205 +15153090151 +15822174787 +13696222888 +18887191276 +18822039320 +18827086487 +18801002352 +13937097599 +18823812879 +13937536003 +18880509300 +15101498117 +18860740462 +15867567993 +13954392360 +15186397701 +18569044739 +13969040566 +15814399545 +13977749592 +13601799134 +15180329610 +15876240859 +13917896031 +13955889978 +13922619238 +15130342899 +18527343421 +13601140322 +18528601876 +15874128140 +18828420415 +18521944130 +13945675168 +18897648877 +18583450132 +15167177549 +15814535952 +18816684060 +15196201822 +15132329416 +15854777720 +18844734266 +18515614553 +15848415564 +15169028120 +18594612457 +13956521938 +15167217429 +18836840676 +18501688408 +13950900072 +18559423335 +18894159032 +13621703476 +18537085749 +18524134289 +15187373537 +13978900322 +18545735150 +15851140260 +15883641611 +18553253025 +13953398739 +18866019269 +15120048809 +13608235299 +13641718738 +15863675799 +15134755659 +15846886839 +18803006330 +15860924477 +18814619341 +15878171129 +15828011659 +18575118266 +13660676954 +18543560323 +13638362751 +13903305263 +18894901482 +18876414284 +15142913382 +13904237934 +15138196273 +13903346579 +13935730416 +18529270829 +15132242360 +18809864430 +13656808260 +13986843722 +13959632599 +13951618047 +13689265161 +13950139329 +15149163136 +18525073026 +15122916126 +13972854614 +13955494371 +15837734881 +15870092043 +15157360169 +18516421371 +18533465081 +18896584612 +13653299325 +18819956870 +15128012559 +15851266863 +18505458349 +15170595045 +15805678347 +18802504212 +13987698611 +18878876848 +18851133105 +15832545348 +15122663599 +18867363798 +18581365275 +18876237601 +15152739930 +15113677430 +13646176298 +13647071662 +18884914098 +18821039862 +15828248762 +18862701968 +13650463723 +18516174823 +15810438898 +15174114273 +15869948596 +13666119208 +18830763581 +13619219405 +13627246389 +15168519541 +15877821320 +13692126600 +18581200579 +18843585546 +15854408018 +15144741800 +18580552904 +13919558709 +13946281710 +13908001304 +15143190530 +13607602811 +18877021825 +13966744493 +13905687196 +18575068999 +15169340491 +18555809054 +15846802167 +13902644545 +15817521150 +13986409238 +13637365726 +15852706421 +18800584167 +13999233243 +18555513869 +15177371942 +13665728423 +15143848660 +13616585563 +15847352802 +15854413410 +18856046562 +15115839039 +18883533485 +13622647166 +15889833980 +15109103879 +13678197374 +18547442303 +15150701824 +15878341273 +15898904053 +13681874743 +15812211646 +18840078825 +15873958547 +18847914402 +18824709709 +13946369472 +18852291194 +13990782634 +15129632090 +15195422917 +15123497213 +13984989670 +15850667826 +18870852171 +15809716109 +13633172623 +18836438152 +15843337415 +13955925333 +13923949473 +13909956195 +18586455534 +15118020751 +18589050466 +13659482478 +15162053980 +18885296796 +15105563077 +18500415663 +15160663743 +15809452826 +15802659294 +13913065929 +15169991296 +15195924897 +13967744696 +18508654320 +18530533900 +18527606020 +13693087984 +18860950559 +13943014911 +13923482534 +15873296008 +15196395216 +13992588320 +15859547920 +18882210151 +13682335095 +18866587315 +18808734051 +15850029259 +13666472104 +15189173056 +18811870409 +15855878797 +15131062473 +13697680110 +13945700842 +13624537296 +18875464349 +15891984837 +13938410849 +18525107508 +18570640401 +15883866466 +13611205923 +18856145250 +15819297031 +15156062373 +15124292828 +15848421340 +15151826052 +18590603123 +15886519963 +18827186879 +15854926023 +13618863054 +15179521682 +13920111822 +18878778531 +18874599273 +15196001273 +13690676843 +13694914736 +13941310669 +15132005077 +13674937526 +15171757012 +18869210895 +13637807765 +13650419466 +13993166298 +15842381183 +13964177378 +13976993131 +18861702172 +15191357848 +18557756817 +18502452965 +13991280327 +18853799572 +13915618781 +15871910837 +18508729507 +13982099325 +15121463674 +18506741042 +15176400017 +15195993853 +18835884683 +15818147620 +18510745306 +18861147222 +13679533569 +15826925231 +13601571287 +18564383373 +18570949686 +15143029996 +15885273779 +13911004736 +13643005527 +13935063024 +13976186764 +13951747720 +18844733777 +15138225600 +18591210624 +18880638232 +18800874816 +15880146543 +13624590478 +15875894825 +15899216117 +15833115547 +13604713259 +18560730555 +13634380920 +18500986897 +15150303565 +18533349159 +18521021232 +15878553944 +15121532137 +13938537561 +18840699603 +13934504028 +15198774909 +13663092673 +13932387387 +15182453271 +18863217542 +13913170233 +18878214384 +15189613551 +18890093682 +15821074784 +13681260515 +18809945597 +18899239123 +15858201059 +15113530975 +15802755683 +18877713197 +18570026743 +13942091825 +18563908090 +15878958740 +13638051470 +18813409956 +18876383122 +18880620258 +18528270350 +18827143330 +18814048079 +13699082131 +15107043210 +15150465843 +15136856612 +18854370939 +13694396229 +13616654943 +15801551686 +13660020233 +15821124126 +15157795211 +15880833973 +18815114822 +13693412572 +15186471234 +13953127412 +15157046023 +15119003154 +15102768839 +15874280912 +13641454465 +18815434448 +13937407393 +15142235327 +15112282589 +18578901836 +13951117514 +18588136876 +13936562404 +15898407719 +18876917131 +18599936845 +15858555770 +13693434144 +13961787741 +18867118363 +15846227905 +13611402743 +18523698313 +15121507824 +18501133691 +18827128801 +15160698344 +13946508324 +18561332761 +13954690369 +15108138800 +18805446891 +13657599510 +13962441972 +18561968002 +13977671763 +18590701401 +15834787485 +15837021834 +18839654593 +18861247041 +18848657584 +18865032829 +15877628551 +13686907369 +13970464605 +13636199677 +13629815249 +18881405262 +13982328037 +18894864729 +13669572757 +13987360851 +15110544455 +15101871071 +15113001452 +15816730239 +13938553687 +15886815493 +13661280117 +13993365925 +13616485967 +18814612610 +18596971503 +13990984809 +18552687948 +13665272721 +15115612431 +18846394720 +13607919281 +13925339573 +13987034297 +18589464793 +18864907563 +13633211000 +18808238658 +13663684393 +18868687147 +13611822625 +13630944866 +18554826271 +18861772829 +15179707093 +15817204433 +13652955335 +18805489630 +18819655686 +13657970158 +13989003779 +13645465361 +15823239815 +15150568385 +18824540746 +18878153043 +15839075701 +13643689152 +13634324090 +15123336714 +13968860602 +18872626089 +13698575687 +18830386948 +15169333138 +15883283072 +15886150714 +18839531535 +15181423589 +13674513197 +18896595064 +18864198229 +18545422299 +18541375840 +13978521920 +15193769373 +13911920787 +15888125340 +18563595475 +13682473401 +15899667943 +15109936285 +18884011977 +18586322825 +15819972458 +15865563004 +15897233487 +15161627198 +15842825209 +18563610446 +18592636886 +13655243828 +18889567453 +18568561194 +13677226902 +13681856504 +15876818366 +18860605860 +18880222270 +18548619599 +13660246517 +13977013136 +13637663033 +15811100157 +13943070509 +13612290022 +15812320685 +13627322797 +15105149002 +18581677278 +15128095746 +13617931248 +13904404566 +15141635578 +18835910541 +13953977477 +18548182935 +13693444162 +15162517249 +13981395018 +15846551224 +13969641973 +15151705693 +15898590289 +13676674474 +18843138892 +13997461314 +13904551790 +18554160678 +13940914280 +18831102459 +15147416936 +18807192645 +15196487749 +15198905895 +13953708667 +18881580059 +13922840478 +13954400241 +15169949212 +13694413865 +18893424635 +15154749585 +18569006602 +13647655346 +15802435127 +13913604262 +15196513902 +13622972387 +13679971139 +18586301256 +18576672825 +18509462302 +13637554039 +13998965341 +15101140546 +18593474710 +15810615623 +18567771418 +15883973715 +15890623283 +18541530864 +15177346510 +13624837082 +15884245466 +18854810976 +13965296509 +13630633301 +15136234742 +13629916117 +18592005350 +18545234939 +13991519694 +18884507985 +18594266212 +13660420974 +18515274511 +18566157778 +15160391443 +13975315491 +13979878635 +15831520010 +18838408129 +18502274440 +18593251948 +15103959565 +18871309520 +15851502470 +18505310101 +18850266134 +18586448781 +15831339972 +13986733659 +18884727626 +13928187605 +18516700873 +18500900827 +15127205756 +18867188808 +15809313113 +15127136719 +13941500463 +15800449284 +13946024164 +13930651570 +13685083530 +13670691449 +13663598200 +13644827194 +13974986617 +18890901865 +13905694568 +18534975021 +13952126450 +15113075092 +13615881434 +15192637312 +15100657235 +15133310075 +13951472204 +18884985009 +18571470992 +15826251491 +13646160954 +15197912772 +18833756619 +15806088073 +15112878761 +13902864055 +13958012774 +18503731197 +13678530354 +13612038265 +13982587740 +13987650309 +18527371303 +15155306581 +15826537161 +13977366492 +15178579358 +15136979179 +15104416780 +15117283220 +13986522744 +18578242277 +15818768595 +18512999748 +15888295279 +15186340826 +18536716370 +15854312489 +15103201760 +15156135315 +13657753472 +18522213105 +15182761559 +18593423052 +18855996006 +18862681091 +18500953355 +15861221798 +15820031345 +18589908098 +15836818253 +18500244701 +15809051705 +18891938658 +15159613498 +18826301295 +13670531002 +13986657251 +15101474991 +13938635438 +15105350879 +18835799004 +18518784084 +18562397302 +18573595169 +15879292789 +15177597259 +18553437592 +13950793843 +13677337547 +15114172597 +15890655540 +15130505357 +13954040168 +15199671784 +15815149071 +13621039189 +13924977291 +13659664239 +18842129651 +18586367104 +15863058918 +13677782927 +15843586690 +15124826124 +13668338021 +15859977009 +18855888491 +13927420645 +13964428071 +13974867422 +15852366667 +15871727198 +15115271386 +13912407616 +15886070913 +13656618488 +18529360178 +13947237109 +13617676218 +15132001083 +18864336357 +13954134972 +18523200115 +13952119456 +15814623614 +13946726505 +18824399505 +18524792861 +13634744623 +18550939046 +15179450870 +13933366142 +13664524781 +13969933963 +13913384280 +13977839520 +13940837344 +15865082028 +18590888193 +13697956898 +15118251034 +15167453507 +13612272147 +18828345750 +15107736275 +15109654580 +13647609268 +15850623948 +15119098999 +18517652015 +15866344668 +15119858510 +18547091512 +18594512074 +18879958247 +13972968997 +18816283544 +13908960814 +18524571672 +18864788845 +13605578258 +18561387100 +15164124037 +15838744918 +13682547108 +15189063915 +15187949009 +15119849021 +13621175268 +18503238991 +15185361585 +13993022490 +15856159850 +15113289387 +13940926936 +15188929566 +13950370435 +13917863866 +13629135930 +15892059789 +15126006151 +15190986298 +15870791773 +18826339270 +18526964188 +18898754313 +18503592231 +18585748209 +18849619579 +18897528040 +18810503290 +13968378385 +15141592838 +18887763477 +18855895339 +13613708078 +13627020020 +18872688657 +13979388085 +15108463300 +18529280264 +18803899790 +15841128187 +15157846233 +13636089738 +13641039692 +15884727745 +13635176438 +13600972571 +15816669257 +13918165962 +18526558290 +15801075710 +13651481608 +18893718064 +13658483832 +15190640504 +13918295698 +15851477471 +15898895160 +13983315012 +18519571653 +13600972489 +15823130492 +13922613140 +13625451989 +18583717642 +13633568070 +15816340037 +18537587908 +15141432255 +15148222954 +13936258489 +15153020034 +13924826318 +13670184540 +13624076664 +13992251853 +18865542198 +15882390610 +18593929807 +18854106086 +18545824937 +15177761433 +18562079813 +15105084016 +18587701367 +15843948501 +13989979628 +15869524808 +13657385133 +18880600901 +18833867928 +15127869993 +18886025084 +18530716758 +13671721224 +15113360318 +18590784333 +13994649841 +18530323702 +18858557572 +13945158123 +18545681382 +18563982509 +18503270635 +18534186809 +13614612112 +18805726003 +18879415486 +13610532311 +18826395778 +15876545686 +18545402701 +18558120144 +18562303404 +15134786332 +15125318731 +18509124289 +13655969105 +15852168208 +15191097155 +18501700522 +13607095220 +18581052987 +15826549838 +15814108159 +13935190545 +18523366456 +13925630122 +15191353557 +18554912921 +15844238453 +13611865720 +15134373344 +15186516669 +15111722113 +18501169171 +13905136449 +15886660614 +15188734483 +13916913251 +13647762614 +15138909426 +15117820622 +18836818021 +15867821439 +15825251317 +18806618633 +15130158738 +18541750351 +18854272269 +15840441683 +18597825877 +15107508447 +13673211196 +15883838613 +18588135311 +18884442079 +15856038730 +18818395435 +18579384805 +18505615710 +18584765202 +15806236763 +13967439998 +15866673845 +15827035050 +15109697934 +15888151290 +18514055872 +13963353536 +15186700896 +18533867993 +13929607622 +15154233137 +13951107837 +13963239364 +15854971571 +18898205126 +18897831070 +13638635655 +18526208724 +13960044966 +13634421684 +18538300371 +13965896521 +13608016831 +15175378063 +15184735042 +15165540830 +15834413731 +15100665016 +13693455966 +15195476306 +13606921805 +18877285466 +13901392860 +18821318927 +13908754555 +18850115662 +15899219922 +18538913478 +15127872536 +13683998713 +13913648361 +13628278450 +15891188647 +13955329697 +15842905352 +13619334191 +15184614516 +13679981469 +18568087282 +18586565564 +13937464727 +13667679888 +18556545399 +15817357845 +18837693255 +18574309708 +13991295656 +15814389540 +18547006938 +13623194291 +15834436779 +18574625668 +15138168331 +18542418074 +15858089286 +15803163152 +13945329186 +15899989950 +15895766631 +15108072073 +15840337327 +15169851558 +13695430321 +13606527630 +18820427882 +15876087928 +15152793366 +13617179264 +18830631553 +13918614448 +15164140657 +18569272088 +15179973487 +15168035471 +13964856462 +15101081516 +18890335427 +15196378216 +13670764267 +15898994146 +15158642784 +18899774032 +13936870566 +18560660460 +18844495889 +15873640865 +13920052178 +13671419480 +15824684249 +18872078804 +13622878660 +18567621038 +13617184548 +18866742479 +15106898557 +18555279895 +13624802573 +18506754321 +13949157422 +15169349588 +15809991437 +15145904726 +18855909868 +13668733181 +15124787756 +18572584622 +15848964534 +13662789332 +18893827997 +18841493151 +15895663965 +15890554882 +15815666357 +13974480842 +18825867822 +15171114729 +18547433054 +15828774982 +18551187678 +18870097887 +18518223810 +13943014018 +13642297617 +15171173444 +15875748282 +15126153297 +15136856174 +15132766165 +13909773684 +15159266265 +15107732995 +18865141531 +18583822639 +18546884292 +18859744981 +13995637015 +13628225799 +13687522791 +18523979093 +13931894431 +18597380062 +13978362276 +15874158597 +15870347025 +18555020781 +13622346533 +15869281993 +13647166682 +18844498325 +15888922368 +18522576250 +13632872507 +18542788686 +15181917394 +15883088452 +15122207068 +18575968226 +13912845495 +13940164416 +18580828787 +13662629767 +15190099109 +15127443568 +13940643211 +13692734331 +18821373284 +18549311461 +18828255571 +18534318849 +18856226508 +15134598215 +15120299085 +13654977217 +13627524534 +18583306251 +15127378831 +15197525486 +15172531451 +15848826333 +13945127683 +13680753595 +13976015231 +15136135871 +15154756119 +15172477456 +18823487296 +15875758618 +13685548011 +13659218192 +18853535999 +13946040562 +13633248391 +18544319153 +18551985769 +18546904437 +15121954931 +15898678462 +18843206648 +15846611181 +13979444294 +13601138399 +13924373799 +13618530919 +13661918366 +18808373281 +18873590842 +13973587086 +13638669140 +15873175446 +13959091457 +15809203378 +15829228151 +13658166512 +13979234907 +15119455584 +15144118989 +13694763984 +13905951840 +15863524151 +18539469851 +18800960419 +15885520798 +15173708860 +18529834556 +18513252420 +13974645509 +15892748664 +18800123161 +18501073368 +18523702609 +13672560955 +15846162803 +13995780935 +13984963408 +15124232961 +13903348289 +13960504383 +15120672093 +13910654495 +13989156191 +15132597122 +18563650543 +18801213975 +15853295118 +18859980396 +18830515352 +15895263152 +18867591126 +15862432747 +15825638045 +15859276561 +15877198573 +18522815377 +18504590596 +15800708241 +18524579225 +13951334623 +13628526243 +18552329125 +15105956614 +15890723006 +18833387074 +15173319009 +13901715154 +15835018020 +13620050814 +18818433724 +13663754270 +15100943022 +15103203864 +15815361675 +18839099217 +15175486316 +18805400860 +18599075216 +15835937255 +13980168125 +13924840479 +13915066293 +13972574773 +18893151055 +15146565700 +13637622035 +13663390687 +13911198578 +15137427921 +13656740308 +15195638271 +18882222074 +13964850557 +18519043741 +13994006792 +15196641804 +18852276283 +15121778912 +13967570667 +15885090924 +13924548311 +15111630090 +15111285071 +18855976420 +13927441441 +15823717886 +18586363598 +13663954342 +13689791533 +13982815855 +13682206831 +13664421143 +15827000501 +15100765090 +13665696317 +15154770426 +18567680793 +18804946968 +18584019860 +15807794870 +15128755028 +13907198582 +18832585323 +15817712460 +15892468087 +18817416845 +15160968976 +13990945228 +13689110960 +15161938227 +18540570570 +13940342754 +15173164657 +15857496673 +18573921070 +15185991576 +18554076339 +15898883099 +13611579034 +15149550376 +15186447395 +18520961286 +13919099758 +13616297083 +15883861281 +15157019801 +13644765984 +13654811063 +13939455463 +13994095093 +18529854406 +13907636492 +15117979754 +18541877230 +13662907773 +15803516731 +15811123036 +15898281684 +15854084015 +18830439385 +15121964566 +13644046710 +18886332051 +18535573562 +15171160882 +18845819701 +13641344653 +13676784976 +15865947201 +15130496954 +18803681074 +18888990497 +15163449892 +18838068369 +15181092622 +15135752719 +15124864048 +18808749624 +18559069868 +15119572818 +15885395246 +15182662551 +15112766885 +18503924044 +13655082942 +15119941673 +15133068082 +13682286106 +15810080703 +13939073310 +15813277289 +13969937209 +15170052942 +13904078165 +18581341137 +13929513552 +15167982113 +15123976721 +18873347105 +13934162256 +13948192700 +13948876251 +13685792768 +18832647568 +13609106205 +13992045828 +18548383453 +13956255093 +18591034564 +15110293426 +18519289120 +18854484156 +18809051092 +15133378734 +15157106932 +18565795753 +13665771607 +18840241920 +13695542034 +13663845268 +18549222911 +15872311591 +15122603435 +18844772284 +18825975580 +13649209237 +15118755333 +13948228959 +13670888895 +13907751387 +13969154067 +15858815068 +13604375807 +18803052755 +15867756520 +18526888303 +18892021101 +18852953958 +18580734223 +18599864560 +18549449549 +15806587491 +13637034336 +13903394518 +13651112768 +18829503273 +13963660914 +13925559872 +13631170289 +18587729361 +15129654242 +18549621952 +15128610517 +18583299511 +18883201459 +13667891288 +18818201636 +18828820816 +18846869753 +15828484177 +18578491850 +13960366821 +13619363340 +18885385523 +18828383280 +15807272142 +18807586779 +13685464282 +18894775199 +15893519417 +15847172375 +15194525195 +13603226020 +15802542593 +15843092991 +15175429493 +15146895444 +15829722411 +13697242270 +18839967913 +13624155042 +13605927504 +13647634197 +15178064842 +15807373561 +15149251235 +18593199874 +15859642488 +18840746828 +13624381000 +15102016148 +18841012653 +18808154725 +18515362022 +13956589814 +13625824617 +15118452477 +18805266827 +18894659357 +13694667912 +15849603488 +13680213377 +18593015767 +15838220952 +13624703788 +13902470536 +15145129093 +13639378884 +13690905297 +15874239341 +15137365473 +15840624884 +13653441579 +15841484248 +15151094794 +13624744375 +18873794851 +18805683988 +13932094247 +18554567806 +13995693493 +18588340227 +18847681784 +18535329702 +15831621423 +13932163309 +15196831049 +18522729793 +15110499262 +18842471844 +18568965438 +15194100804 +13953030280 +18510762120 +18524875290 +18865241070 +13917062756 +15847619288 +18830560136 +15149103206 +13655263734 +15816797672 +18529751776 +15800290503 +18885175936 +13601250482 +13620904703 +15888032839 +15871860449 +13620136032 +13688540060 +13664588014 +15891087719 +15151255375 +15128878228 +13635593399 +18844752447 +18536879243 +15104283284 +18562352115 +15863843392 +15139803458 +13901414196 +15158636495 +15895019269 +18555493918 +15835254003 +18504706376 +18887385454 +13640387154 +18537303605 +18560392136 +18808607893 +18504779820 +15127114076 +18591771319 +18571690680 +13636689564 +13610216833 +15882655208 +13697201631 +13998576283 +13682365267 +13913924517 +15150427469 +18882665813 +15896607586 +15169814708 +15119067760 +15134150002 +15802474496 +18806748780 +15800733479 +13948856875 +13990615016 +13947551271 +15886145390 +15151586123 +18816739393 +15896705447 +15153558237 +13973304887 +15132073898 +13997397240 +13974721014 +13961315453 +13680755898 +15899939726 +18845887638 +18880629305 +13981005851 +13604720477 +13975006433 +15140437180 +13973628294 +15142048280 +13915353049 +15898792542 +13658058684 +15102229022 +13604656944 +13644507927 +13671171327 +15142027894 +13621322497 +15166923881 +18810256355 +15832032909 +18886611363 +18816317475 +15828768763 +13909610227 +18854639435 +15874834505 +15864933363 +15898141471 +13624657250 +15161010560 +13656338394 +15826667176 +18553511272 +13983044403 +13629177644 +18822045000 +13600154530 +13677801465 +15804611982 +15165486607 +13905858039 +18809088652 +15190269812 +13683584950 +13936143717 +15856264128 +18568234118 +15845927312 +15834890604 +15198713210 +18840691269 +18886012462 +15852571130 +13970921511 +13957167880 +18892043375 +13964607304 +18806733956 +13941920960 +15198413191 +13662612765 +18819117160 +15882306677 +18834630959 +13647117051 +18511853075 +15153163718 +18834744717 +13951588057 +15869391711 +13952083384 +18840547428 +18844899232 +15858818004 +15179723616 +15161224219 +15106089146 +18888461313 +18814845861 +15857779409 +18838773238 +13692204295 +15848230229 +18876254593 +15169965654 +13625109572 +13904741426 +15824124687 +15846230127 +15855011058 +18823443309 +15861837370 +15861771957 +13900168111 +13950556453 +15884626945 +18506849759 +13909616919 +13641979857 +18876459821 +15870354215 +13978432106 +15133682706 +13618893934 +13614022522 +15829523266 +18898909363 +18809820635 +15142121895 +15814776698 +15858547084 +18556178088 +18501955299 +18810935362 +15193798869 +13696306704 +15156633948 +13901164480 +18823348474 +15175633962 +13936765155 +13941728558 +15805031953 +13914675527 +18850484142 +18554590049 +15860613537 +15174200929 +13929310476 +15811946701 +15842296421 +18573505880 +18891489657 +15115714360 +15199809403 +18891039283 +13951315293 +13665846873 +18893491523 +13608091255 +18543814271 +13993210425 +18838197146 +18560766473 +15881703646 +13622346328 +15809810358 +13972038717 +15815217550 +15199089419 +13903439338 +13998757168 +13987864476 +15881263551 +13692028017 +18872995679 +15196291278 +15809487862 +15141924747 +13627474518 +15169099783 +15887298899 +13630634198 +18587871436 +13607323474 +13696573118 +15133633845 +13633827196 +13685976109 +13924091999 +13607159679 +18868829983 +13699186128 +13631428898 +15109577429 +18844569443 +18828901953 +13619185804 +18598326608 +15123557171 +15128564715 +13660203859 +15819872557 +15821363326 +18549250738 +18873001604 +18883470612 +15848413989 +15198756263 +15884813354 +15107049948 +13958938780 +13978442418 +18835614929 +15101153432 +15839156880 +13624791706 +13924749749 +13608055169 +15820376535 +13697629036 +15817779031 +13606566234 +15836075058 +15859068187 +13675570926 +15127259537 +13605399240 +13674313868 +15852786847 +18564910027 +15110953072 +13988945121 +15821588822 +13629034616 +15152254583 +13978779792 +13684685864 +15870841765 +18566275457 +13914555641 +13611774362 +15801195233 +18832805314 +13604743083 +15131044152 +15136208807 +15833548987 +13628314275 +13955089364 +13631186723 +18846719585 +18854931286 +13625342571 +15129892714 +18562135005 +15159611739 +18881412615 +13917600555 +15157174739 +18595486624 +13691938639 +13997152558 +13671099658 +15112697733 +13697668239 +13654707384 +13687886434 +13652254292 +13638166986 +18512403856 +13955441004 +15886801897 +13938636053 +18546182543 +18800896082 +15163500340 +18886147696 +18522220953 +13612205478 +15107118056 +15132934127 +13629063525 +13651625211 +18577553741 +13944713163 +15137591479 +18532871290 +18551756840 +13939280139 +15176784369 +18874889639 +15139897217 +13629359443 +15854845076 +15101848196 +18826685517 +13986505022 +18531691217 +15803001479 +18895485432 +13933556623 +18852351569 +18599892182 +13627683143 +13981785899 +15112300611 +18859309198 +13613394185 +15185908027 +13927235562 +13654457929 +18534893672 +18533306119 +15165571186 +15105573736 +13944536861 +13931874977 +13971116527 +15851597052 +18814069315 +13953091092 +15847861018 +15196784837 +18546188953 +18557317901 +18822829405 +18582548980 +18570472149 +13654933447 +13924511300 +18818239234 +18575166927 +13962303849 +18834942738 +18809714771 +18547855332 +15189639058 +18550572193 +18817112215 +13651398273 +18581548957 +15178948105 +15103874962 +13942672968 +18532289022 +18587189789 +15801824585 +15158810539 +18586757225 +15175097154 +18889479134 +15179766222 +13904699909 +13992970467 +13972252407 +18836816279 +13634483473 +13988173533 +13620690389 +18541570864 +13951359931 +15835719008 +13981972399 +15834796974 +13954149278 +15158791792 +15852375652 +18516338231 +13633471449 +18598434822 +15818895625 +18520527123 +13646910227 +13695786890 +15154671470 +18868128901 +13686199928 +15114383962 +15876874325 +15849090938 +15833950321 +18549763130 +15800023702 +13967331496 +15813905668 +13635807566 +18502582735 +18578596572 +15880777091 +15115118866 +13989324557 +18549507865 +13644366747 +13943194451 +13678648494 +15807945664 +15173419409 +18883855014 +18568248782 +15870668699 +18835950259 +18512040086 +18530995020 +13691403114 +15864394270 +15196695280 +18505018838 +15105320244 +15871920643 +18828151476 +18841932270 +18564230362 +13985282892 +15851146220 +18594969526 +18527342390 +13979082336 +18535262015 +18509834081 +18596743161 +18532644816 +18851023266 +13677953498 +13639837306 +15813685411 +13636427619 +15841115140 +15889137277 +18841744824 +13943532576 +15865949894 +13650268160 +15870704210 +13927890773 +15814133147 +18578125608 +13691793436 +18891347276 +13982127737 +15107589924 +13639633764 +13665678181 +18850882313 +13643570964 +13650922959 +13680441441 +13972637858 +18592657110 +18893817626 +15809661540 +13960149722 +15891463323 +15826604875 +13605920096 +18582159063 +18841743809 +18870528562 +18530145195 +13657308586 +18529933557 +13667999213 +15859273052 +18866972387 +18553224704 +18860349200 +18523359956 +13969713552 +15806647290 +18548350494 +13605653288 +18804689927 +18580568473 +18502485065 +13979005265 +18513693352 +13932780744 +15198749376 +13676066281 +13929960758 +13662378425 +15841293523 +15889306097 +15892638004 +15136543265 +18570846862 +18546503436 +13641112252 +15842797252 +18842574114 +13915940224 +18852024689 +18532252453 +18554627328 +15876910424 +18517487305 +15148324309 +13978725843 +13930104172 +15114945048 +15836642749 +18575680858 +15870869292 +15155196757 +18514839106 +15162741094 +13626805262 +13683193334 +15803596099 +15113393164 +15152840483 +15824558437 +15102507222 +13959965930 +18813619997 +13971037711 +18857250127 +18850870992 +15178652356 +15128303914 +18876560812 +15850932221 +15132641321 +15862154042 +13985209490 +13900022755 +15113485759 +13670058513 +13626972861 +13655976767 +13923328499 +13646459252 +13617649975 +18553628024 +13679462048 +18543649960 +15155455674 +18831705971 +18544740000 +18882444318 +18887242520 +15149500032 +15870727365 +18855650557 +15886150561 +13934931043 +18822334564 +18855756379 +15161241526 +15872235578 +13666166277 +18590090797 +13651500963 +18882500189 +18570530852 +15104604071 +15809078392 +15871571998 +18873956605 +18850313847 +15171011902 +18885824908 +15851588911 +13648777042 +18806396002 +15809392938 +13637603525 +18566565218 +13696936820 +18819250705 +15135683266 +18852365593 +18842270908 +13997346789 +18573761594 +15122076834 +18570243851 +13926528278 +18582261866 +13685159118 +13927797880 +18573081062 +15842103093 +13674279452 +18857909768 +18804173749 +13604047562 +13623698561 +18510300307 +18579291450 +18587868204 +13978863714 +15843025981 +18550361750 +18808329130 +13993009341 +18881675755 +15133778663 +15861574273 +15148088509 +13651976171 +18879053839 +13618393232 +15143056623 +15880112573 +13926886057 +15834258355 +13641301134 +18563801902 +18549738358 +15867191769 +13915918588 +15156292663 +18524934646 +15845424896 +18534984140 +13652226057 +15833071457 +18869948555 +18818370466 +13930792973 +18813652116 +15843873714 +15862744520 +13668387229 +13636166751 +15824687893 +15103431691 +15108164673 +15827280116 +13929589932 +18872118035 +13922661910 +18523517837 +15142638037 +15143238084 +15832189264 +13959957825 +18535922280 +13919411578 +13941196679 +13946016135 +15817455968 +15155394804 +18574184542 +13648983502 +18870006853 +15841890440 +18524135155 +15841562302 +15860091219 +13629430203 +18552769116 +18878691736 +18856443586 +13637363463 +15820180782 +13967773201 +18523494245 +15869662479 +18832718420 +18856043523 +15108811691 +15859252492 +18523057737 +13947055689 +18522053397 +13934228785 +15132198857 +13934618223 +18595630296 +18877721133 +18545975271 +13989253332 +13952875334 +13981546651 +15166645302 +13916568546 +18857728850 +13615289162 +18510235269 +13622325686 +15846472960 +13935996172 +18505333346 +15868105294 +13930720832 +18534881688 +13931852177 +13921933378 +18568902320 +18547745386 +13960574676 +15865096559 +15807416109 +18875128369 +15870355423 +13612695950 +13684145666 +13993041471 +15166779050 +18566302365 +18803993377 +18558068932 +13945667314 +15862843083 +15191876818 +18556708143 +15891967009 +18576047807 +15824517010 +13952736056 +18564035840 +15198735712 +18828859115 +18500697858 +15845530390 +13630761543 +15892367680 +15112843803 +18827224226 +13967029849 +13689403357 +18814599575 +13691721176 +18895518189 +13997212076 +13998797957 +13630041702 +15189985115 +15809105625 +18566170390 +15827306091 +15867048291 +18568360731 +18562733155 +18818550073 +18516736839 +15111326221 +13628137000 +18887746258 +18539786739 +15895544668 +15859882043 +18895791540 +18560206831 +18596960054 +13620227539 +15184832339 +13622207681 +15147167655 +13901272688 +13953207127 +15871060287 +18559352066 +15818996075 +13630653966 +13662790345 +13632256948 +18565942293 +18852197519 +13906945648 +15163266005 +13923079953 +18517219829 +18885327992 +18540204805 +18594072991 +18843455349 +15881563417 +18542274040 +15824256456 +15813426156 +18502990567 +13938599943 +13908034676 +13621795287 +18511315541 +15108584680 +13676972288 +18546695300 +18889846375 +15152153116 +18873967655 +13631100405 +13966540227 +13992540140 +18896210844 +18888605014 +18830587569 +13621141163 +13980306046 +18800284758 +15102008882 +15147411453 +15885596156 +15186360113 +15874716069 +18879600008 +18848228042 +13926784731 +13634962500 +15852470922 +15191385991 +13614682057 +15137238411 +15164881357 +13933731858 +15843410518 +13692432470 +13984097033 +15197379024 +15142325534 +13941692207 +15181463589 +18573263784 +18808713327 +13621913361 +15163963995 +13604929942 +15113659824 +18810557886 +13689685259 +15104625960 +13696373232 +13688146213 +18880706818 +18579646651 +15828974730 +15876966793 +18825187996 +15854083119 +13630608081 +13649118171 +15122403301 +18808091429 +15190155490 +15138648338 +18864910605 +18821513830 +18872913468 +18500295076 +18869449379 +15894389604 +18557348793 +15196178397 +15190322064 +15160362279 +13949098315 +13947830278 +15806758084 +13648694738 +15121425158 +13917499932 +15199734583 +15194212313 +13908705977 +15843019944 +18587310683 +13923428052 +18559164255 +13625656885 +18596705095 +13911548200 +18507050510 +15880321353 +13619268076 +18886228749 +13608955437 +13650421027 +13603064137 +18538146689 +18585723886 +13615347600 +15868836102 +15102419233 +13991336410 +15883445559 +15806115437 +15864273617 +13629106060 +13986074503 +13942271680 +15800267121 +13931108305 +13601350112 +18868592927 +18810887029 +18552176741 +18854260526 +18825672247 +15132845074 +15155673573 +18572870755 +15888316497 +13959360173 +18873054217 +18524264173 +18501333054 +15184258078 +15101356516 +13946049383 +15808462158 +15198511764 +15183291120 +18835243644 +18815505008 +18803595511 +15854320844 +18857403827 +15172137831 +15841882536 +13942364674 +15134504662 +18893147547 +15162002774 +15865499701 +13634498771 +15896356602 +13905392571 +13622622055 +15858409269 +18554450076 +18864905383 +13663463251 +13698630400 +18541305846 +18845881673 +13929996785 +15192009227 +18817030518 +18541909271 +15159055409 +15828366072 +13958307434 +15157765197 +18891546661 +18516512901 +18597919527 +15181557949 +13642573953 +15809918730 +13610075897 +13951730287 +18844909002 +13984376420 +18858677865 +18500925754 +18830684928 +13606992008 +18863584524 +13969968258 +15899216495 +13685624791 +13601633764 +15113126555 +13987788167 +18814037672 +13605318454 +18805348291 +18813563685 +18562703947 +13926770399 +18579221759 +15883274987 +15127119799 +18899927819 +15183776074 +13605361926 +18562586155 +15135373556 +18805901513 +18540797733 +18556952722 +13909694755 +18802699610 +13692024984 +13667840398 +18552787788 +15149983463 +13961513207 +15153724955 +13909439965 +15144382266 +15857327799 +18503205164 +13933621315 +18591145535 +18547677555 +13945653928 +15135703830 +18849486013 +18513388899 +15868958297 +18571347309 +13977353846 +15869101349 +18574679417 +18851251814 +18528330445 +13633808009 +15133952340 +13998568737 +18864510665 +13688965455 +15884041959 +15854362537 +13655669812 +18821558332 +15800725169 +18833709770 +18581307273 +15160804707 +15129653055 +15896127067 +18528731787 +13964201087 +18805403628 +15861777568 +18544317818 +15898814880 +18849310081 +15107127702 +15879729976 +15812942452 +15160869581 +18807537126 +15191131709 +13670602646 +13940826984 +18583906284 +18867983452 +18544362889 +15802740637 +15163823915 +15846279936 +18839345603 +13629168449 +13971711701 +18819723678 +13980878708 +15829380024 +18818250892 +15120197352 +13624648736 +18501461685 +13605587090 +13631321290 +13655964481 +13974763953 +18892604859 +18566897798 +15132836304 +13909966617 +18501467502 +18532656084 +18583004028 +15816019737 +15867711414 +15116429337 +18870575856 +18560860311 +13686763051 +18561975530 +13681816769 +15185223556 +13976164616 +13684585941 +18593578749 +18575091707 +18539887594 +18514449870 +13600378758 +18880825348 +13634460213 +18870205225 +18844936972 +13613658156 +15865367464 +15102107287 +13606579373 +13662440173 +13694295787 +18870431825 +13968463353 +13688406825 +15102800644 +18541500998 +15845194457 +18817830238 +13950078890 +13990909963 +18815666749 +18811548914 +15844381471 +13666755497 +15159704532 +15877334851 +13946270067 +18891884237 +15893385680 +18583239085 +13946353244 +13935025025 +15882341773 +15827504286 +15888332491 +13672665499 +15860120101 +18587694629 +18535122218 +18859083926 +15137260713 +13990683526 +15894392219 +13919954899 +18859136204 +15839818072 +18854548535 +13627520925 +15198406085 +13631401425 +18800661744 +13944337204 +18507427094 +13698791644 +15126513374 +18814002521 +13621445392 +15813201789 +13963796023 +13944707195 +15125924989 +13633112097 +13975504729 +15160120909 +15180946326 +15880731852 +18537196327 +13686655947 +13909811669 +13638289120 +18813299222 +13638651105 +13681832928 +18859320371 +18897213747 +18566851040 +13679063662 +13622255767 +15163265954 +18543871689 +18596156152 +18817439072 +18857854557 +13908092295 +13923922598 +15179745155 +18573540329 +13697369449 +13692363082 +18803994221 +15111146573 +15136166588 +13941322668 +13973422977 +15113560989 +13610303803 +15881598758 +13622153028 +18874718877 +13969436442 +15145285633 +13957177407 +13983655899 +13654388509 +18857517317 +18887560220 +15821493426 +15823493540 +15891701089 +15109932595 +18823490948 +15128782290 +13972442510 +15800334717 +15122512489 +15174719808 +13954587336 +15109639580 +15881744437 +13619330229 +15843515675 +15145385644 +13606473392 +13906115067 +13632288068 +13947194243 +18840320631 +18876379759 +18596745227 +13680226037 +13940804350 +15801552249 +18846368827 +18824605148 +15164231529 +18516603540 +13973143115 +15801001744 +13945686228 +15186355505 +13923884825 +18851655372 +13964384611 +18833766573 +13964627435 +18563642816 +13667232743 +18583973370 +13628451483 +13669134307 +15133081212 +15839000890 +13957564572 +18805319452 +15110911937 +13619449405 +18500932903 +15829630475 +15104467863 +18829145373 +15845139783 +15893791603 +13620754994 +18822222884 +13966683579 +18879768871 +15139858341 +13984972729 +15163064220 +15107526848 +18571649506 +18857166113 +18561058783 +15870005705 +15171730687 +18814503827 +18874312787 +15885855885 +15873314645 +18550443624 +18554602788 +15861424708 +18522990750 +13653448524 +13698437334 +18888964065 +18591658751 +18527733394 +18553260322 +15102400588 +15851579932 +18580970641 +18823647442 +15123141851 +13998750757 +13917106486 +15194019687 +13697760612 +18536607494 +15842151415 +18889407286 +18596128022 +15120777905 +13690641665 +15124032890 +15801014250 +13977475855 +18883449455 +15890094853 +13961570447 +15814350550 +18562939398 +15153364630 +18531803115 +13915214636 +18516026941 +13975472771 +13992444761 +13634470085 +18855147049 +13976073861 +13683724685 +18856778196 +15146261206 +13649808875 +13965296816 +15871555829 +15858737115 +15883542454 +13692924461 +13911903692 +18897861222 +18599937290 +18536005427 +18818561947 +13646045821 +15103374260 +15895183638 +13692446689 +18883063035 +18803670511 +15193558762 +13900980177 +13988064866 +18596238572 +13907914467 +18824394073 +15191727612 +15176071386 +13991116142 +13690949410 +15873883964 +15110044330 +15826671365 +13647799935 +13918909873 +18551577658 +13697767195 +15858487725 +18551412604 +15816564896 +15895119637 +15882687473 +15851114721 +13935302883 +15897713799 +18866092870 +13937720744 +13687681877 +18869981906 +13631220909 +13652874612 +15866924363 +15843069199 +18888672561 +18848009395 +15850596900 +15178734518 +15140927550 +18538104589 +18552180925 +15169039668 +15119499356 +18525132428 +18827276267 +18516258526 +13966400790 +15897814640 +15878147329 +13641308706 +13698206452 +13902796835 +18526452699 +13607702586 +18514375889 +15138418584 +13907492030 +15846057969 +15811474284 +15869279328 +18530938943 +15890575274 +18588725654 +18881088782 +18557243138 +18589841279 +18840980110 +13907198465 +13674822988 +15135250144 +15879745446 +18530035154 +15135732711 +18888483224 +18589244802 +13653577947 +15869194484 +18583099416 +13674801457 +15161823542 +18822394752 +15879817638 +18519417659 +13673486507 +18507566191 +18804091346 +18844069348 +15868862594 +13664410706 +15849774425 +13634435761 +18504289919 +15834515711 +13659377490 +15138909192 +18809481923 +13614036409 +18868869385 +13988048530 +18507519732 +15820350982 +15110554548 +15126145916 +15128105207 +15878221541 +13666109556 +18839146309 +15113508633 +13904649220 +18587427825 +15854050050 +13640037570 +15143558239 +13667260610 +13627390583 +13673598183 +15849261369 +13667710958 +15837382585 +13983650852 +18553491843 +13650513149 +18572344999 +15126295831 +13905704866 +13667525538 +13995769118 +18883071267 +15821487357 +18843472083 +13633588068 +18582422243 +15834375055 +13664233975 +15865886507 +18583741514 +13921019336 +18551957437 +18891567863 +18886970572 +15134665010 +13676428845 +13977597698 +18817634837 +18559082721 +18529620122 +18586885517 +18884849062 +13914453807 +15823483640 +13663569598 +18819281424 +15821297000 +18896880483 +13674433431 +15178740405 +13679347677 +15853377204 +18502317258 +13910616041 +15850183817 +13664449484 +15804719583 +13647015913 +13983825635 +18859779240 +15840683486 +18588533757 +18572913318 +15191006630 +15136197436 +18562859244 +13917105340 +15874842854 +15871141814 +18575305474 +13650454161 +18830558885 +15150604145 +15814425982 +15182601298 +13952638433 +15136873213 +15100788586 +13612886381 +13942646704 +15101118688 +18594710234 +18827553205 +13942812396 +15102848210 +18848241341 +18502481683 +13699439579 +13914083092 +13670680257 +13636284962 +15842810752 +18860656565 +18562631324 +13982720578 +13684336573 +13627917332 +13630154584 +18579132843 +13908856947 +13964958744 +13941690825 +18851046969 +15152090928 +15143136785 +13624695081 +18821417639 +15829265218 +13661089605 +13668991675 +15898068988 +18530708863 +13913373669 +18500775350 +18896468203 +15120384937 +15867077579 +15142564514 +13644508565 +15164771217 +15183764870 +18576751192 +13917784604 +15102291373 +18538060752 +15832822839 +18807614131 +13990682516 +13642936237 +15149043049 +13949704922 +13957253109 +13619401370 +15899438614 +13612235561 +18521901638 +13973580586 +15173050113 +18868186323 +18569309236 +18815992892 +15828924729 +13926937177 +13661287561 +13992553469 +18538698354 +18558174046 +15888189365 +18574197427 +18511460627 +15161650361 +15864606777 +15131229798 +13667058880 +15894510850 +13999511361 +18883295886 +18548273983 +15813731754 +13684553492 +15141626893 +15883461198 +15156871175 +15845858416 +13622812482 +15836910795 +18837128886 +18503899357 +13977319251 +15180495681 +13680434883 +18502999689 +18809986309 +15106499040 +13666633381 +13944983796 +18566402786 +18536451143 +15113919265 +13937923034 +13914945673 +13902435924 +18593625813 +13679048138 +18561108737 +13999237447 +15899765963 +15848759919 +18552995149 +13632718830 +18871673236 +13611946238 +18833793525 +18805069180 +13666984498 +15104957900 +15154693912 +18884515018 +15816126814 +15806269493 +13954608408 +18583726896 +13634362323 +15142747180 +15104940219 +15157223983 +13654427269 +13948305358 +15150893287 +18857745575 +15147975068 +15835293416 +15133076262 +13642471632 +13616847673 +13643159167 +18547010183 +18541888275 +13934855151 +18581068510 +13655312424 +15136595665 +15133349379 +13687441668 +18855651054 +15145767911 +13975052805 +15841807893 +13943582154 +15126950548 +15877769496 +18866117302 +18584807896 +13933376133 +13618849918 +18858919845 +18508382029 +13935481223 +15105374172 +15133139921 +13608693037 +18594872111 +15831271540 +13962504255 +18555362597 +15154818461 +18543991356 +13982592973 +18881582947 +13643997231 +15181783828 +18534668459 +15820308651 +15140383306 +15125156391 +15894182543 +13683634688 +15857870796 +18820295075 +18831390157 +13969899091 +18532279828 +15896009364 +13975595031 +18825717565 +18541591851 +13959203063 +18588593831 +15833720212 +15873712790 +13613794233 +15177644913 +13990456917 +15879210324 +15154297096 +18899514037 +15851435657 +15142726693 +15123991034 +13961975125 +18521917487 +13999611830 +18541676698 +13680894439 +18848343134 +18859341368 +18557167380 +15871541892 +13670778626 +18535736758 +15174550851 +18538859228 +15877861547 +13942915272 +13602603272 +15852607860 +15169112840 +18584453507 +15848340948 +13980336285 +15809536474 +13997771933 +13989262984 +18519720733 +18589377476 +15874356733 +13672197028 +13938965490 +13911811642 +13600136187 +18805984580 +15125884397 +15198057745 +18514052252 +18583362009 +13611330750 +15846627189 +15109488338 +15849515954 +18540876654 +15828948050 +18819439325 +13950149909 +18543887140 +18809382719 +15138857214 +18804731088 +18828202851 +15859832883 +18553730497 +15844256549 +13994055938 +13959672526 +13619629608 +18596132245 +13963168595 +18540358789 +13652482182 +13986942469 +15805731348 +18842774869 +15842774267 +13650903268 +15864596791 +18894188309 +15867953440 +15854329817 +13966312253 +15153292833 +15131825975 +18885761256 +13634107488 +15197802747 +18595312129 +18544490652 +13948821408 +18883068987 +13602715696 +15123683530 +13696955853 +18853952758 +15192305543 +13933163055 +18596322501 +18589748138 +15899417615 +13907932696 +13952388123 +15102004279 +18503497933 +15138111268 +13620560895 +15177085340 +13955948816 +13673829163 +18881047111 +13940458169 +15159301515 +18584120990 +13696502850 +15842191007 +13904827859 +18870154955 +15811237435 +18886387609 +13954459249 +15114407821 +18516891461 +15891608021 +15138797249 +15196686249 +15839582535 +15841965431 +15107199089 +13939856001 +13624260862 +15132821203 +13941831362 +13657855014 +15832167796 +15885583920 +15190441248 +18863405942 +18561482980 +13900009442 +13905154838 +13690797833 +13968998681 +18870608600 +15110944940 +15822258821 +13971115715 +13639104229 +15182670040 +15127407451 +13614183431 +15853596735 +13962924555 +18860420523 +18821978140 +13679549985 +15850163512 +13907522526 +18539843765 +15857788593 +13989201475 +13625208538 +18574788632 +18857662839 +13964064120 +13967111787 +18859433283 +13613301007 +15152461740 +18879636442 +15825874399 +18524595692 +18810664506 +13695068007 +18525769978 +18507338367 +18835939533 +15119834729 +13663956011 +13953027771 +13904417058 +13984499292 +13960577859 +18809027677 +18516838965 +15123702072 +15839749922 +13689312280 +18578335810 +13907297056 +18580297255 +15852263829 +15146970601 +18583283897 +13693507622 +13902175853 +13627765307 +18541368576 +15892412895 +18881845070 +18593231556 +13642921755 +18569137257 +15850581764 +18883593534 +13948011156 +18529192739 +13627983254 +15164786409 +13609380136 +13976497935 +15836496792 +18807898650 +18506178983 +18837871243 +13907750698 +15149353167 +13989858016 +18835606504 +18882401722 +13612147191 +15871438834 +15829511601 +15813093481 +18832574978 +18886229316 +18840025778 +13968078230 +18875802573 +15882900841 +13677488769 +18862009858 +18895628452 +13956488475 +15163445575 +13663307720 +15127199131 +15156675541 +15155462484 +15194705503 +18574430963 +15899904955 +15863187410 +15174637729 +15177042143 +18816425496 +18816863327 +13913659925 +18820635238 +18813856199 +18563414002 +18815199982 +15116583264 +15869831639 +18564147367 +18864814596 +13693039848 +18514492214 +13992453046 +18891460414 +15830353217 +18581333941 +18500079021 +15174540278 +13699614379 +18514253002 +15150225067 +15187373601 +18500497637 +13980511811 +15823858349 +15822875262 +15107888579 +13632079324 +13605654095 +18515081266 +13627776149 +18545827428 +18812778700 +15107393183 +15124209683 +15812406029 +18853154960 +13643218074 +13951677444 +18594702591 +15831674172 +15894671854 +13693494964 +13640224018 +13613049617 +15130460297 +15846724772 +18545820568 +18892299195 +13653004394 +18586323979 +15123932271 +15121150847 +15136503617 +18857095478 +18805643201 +13970611928 +15110359821 +15167920321 +15830395790 +13641853422 +13916350475 +13962655864 +13600419324 +18594868715 +18522838239 +13902470459 +15896236386 +15874851405 +13617256758 +13963201361 +15857287869 +18560436738 +13651016841 +15879363776 +15863497198 +18582499491 +13999302943 +13935889194 +13942958241 +18533634299 +13658393829 +15105282632 +15870921550 +15168333948 +13910223386 +13996106522 +15147637504 +15875368930 +13904724612 +18559524052 +18520504711 +15851861152 +18546684197 +18586315975 +15181995503 +13940403792 +15134638011 +13676916133 +13935394264 +15809806491 +18888505439 +15159159252 +15150084808 +18837434466 +15176496849 +13957475216 +15164042294 +18552719862 +13919875398 +15844210746 +15865631293 +15870272268 +18874029227 +13997250266 +13681566627 +15114747082 +15169502425 +15884410325 +13950672983 +15892704145 +15143431836 +18562605424 +13616268858 +13974274909 +13645811836 +18804060618 +15827045496 +18519002485 +18826786218 +18579518870 +18802054438 +13632616604 +15862544815 +18575846381 +13697239594 +13963353784 +18563469506 +13678645300 +13675533157 +13652731314 +13673421996 +18574421573 +18832182121 +15857517044 +18820488970 +18587590816 +13637903501 +15159628609 +15891409714 +18572935815 +15892596762 +15833688890 +15167291301 +15898792534 +15803512609 +18530974409 +18860913377 +18841527376 +13687034066 +15139029412 +18585798834 +18526305798 +13928826443 +15198880539 +13635665107 +18591458960 +13618009922 +18847200408 +18872662901 +15117002600 +15836491668 +13983296647 +13625997943 +13621347490 +15156111123 +13932894958 +15812075083 +13941696907 +13954119195 +18803544098 +15178087002 +18882770879 +15860146465 +18865596934 +15119090465 +13604527663 +15153766844 +15889539997 +13644819789 +18876009550 +13626699473 +15106318361 +15125368036 +18508915086 +13908531039 +15808109917 +18861256000 +15883980356 +18528867659 +18555873989 +13680047851 +13997062897 +18867781538 +15819001555 +15853224169 +13950150312 +15179635387 +15125750614 +13973895623 +13991666851 +13624773364 +13661738447 +18551342765 +18884772407 +18809098024 +13907917584 +18506651404 +18830853338 +18836576534 +18552481511 +13994499587 +18560392622 +15801310988 +18808006879 +15152015589 +18561193736 +13901046276 +18556926391 +13982327228 +13659703027 +15174623420 +15834973197 +13941318244 +15177599426 +18596316303 +13667435132 +15894736897 +13655298153 +13927327363 +18885331733 +18842503081 +15830335990 +18822087359 +13907043340 +13967730544 +15167288175 +13989931174 +13631526812 +18864769206 +13972423903 +13632127900 +13905777536 +15831096512 +15173693879 +18883896563 +15120739494 +13966999338 +15844585550 +13679120509 +18857930769 +13649911835 +13917053449 +18823793453 +15113495471 +13961304512 +13952102711 +13691736356 +18868624075 +18849446389 +13626593313 +13982013669 +18522068368 +13908411120 +13630178601 +13625540650 +18536899297 +18892242760 +13984914576 +13994259345 +15184051696 +18805992588 +13955601909 +15105076245 +15804342316 +18525288128 +15864340595 +18810573500 +18575898083 +15821539241 +13992568337 +13964737904 +13965107247 +13695078016 +13959593561 +13967708698 +15180862294 +15118509341 +18829228860 +18859864942 +15893174057 +13909234836 +13662270615 +13958595384 +15133836185 +13633025483 +18552022960 +18830238643 +13936983295 +15872119008 +13994466311 +13610147209 +15128401905 +15108898995 +13938540352 +18853995865 +18835982697 +15811809655 +18851353378 +15802707588 +13603813361 +13667741985 +15134503042 +15160884658 +13630488528 +18895002174 +15124101885 +15841218821 +13978037955 +15177119966 +18502599497 +13607674313 +18518954134 +13649046375 +18522202252 +13649215347 +15112319993 +18576164079 +13657862655 +13661437362 +13967466044 +18591331261 +15133392995 +15876133242 +15809127234 +13679660705 +18515808554 +18846178524 +13969705827 +18896951264 +18858429640 +13609061276 +13968852367 +15817541197 +13906518883 +15895743578 +13662380926 +15166868745 +13624959035 +18826494521 +15872867476 +15148117324 +15125477285 +13964658969 +13671625815 +18531362245 +18823283047 +18855565103 +15115365386 +13989976291 +13947500586 +15122685627 +18889104094 +18820673008 +13606796438 +18891740934 +13608169750 +18815870656 +13609952790 +15898824817 +18588755261 +15860127829 +15842634600 +18552217991 +13914505636 +18838645417 +13912722734 +13951276327 +18523819838 +13921309338 +13927230624 +18580722775 +15857455645 +13600372785 +15800365422 +13645621000 +18879668351 +18838722469 +18869623905 +15807500827 +15172314365 +13923259834 +13969717535 +15113355386 +13988241273 +15805662147 +15142969911 +18820167999 +13992889439 +13979550815 +13667004366 +13944415608 +13629833311 +15137511675 +15106127360 +13957710106 +18595538743 +15852285748 +18504685306 +18826053595 +18826508147 +13651843428 +13946432560 +18591169859 +13962539650 +18541512707 +13930122041 +13952419249 +18513398448 +13927236167 +13913322333 +13910896386 +13931506264 +15875707641 +13965262168 +18523882848 +13947712153 +15817589827 +13667058583 +18552027399 +13931386112 +15838586351 +15101009241 +15809965290 +18515696029 +18541163691 +18533266303 +13929949781 +18539252478 +15135359594 +13622156762 +15856401735 +18567878449 +15835201912 +15826415634 +13950622704 +18571041762 +13692564875 +13972160095 +15102838913 +18835091797 +18551135476 +13605818369 +13614759544 +18867351204 +18827322571 +15807332779 +15862595472 +13956673381 +18892821750 +18827992427 +15153735103 +18539939334 +13671676339 +15862160415 +15830836826 +15176441878 +15177389386 +13995064420 +18534595800 +15841960343 +18567106371 +15862019012 +15861657957 +18509493249 +18554707992 +15834149390 +15113668136 +15883593843 +15899356680 +13968438521 +15839974486 +18865127587 +18868044721 +13647688545 +15869108330 +18538977153 +18565778212 +18518177526 +13963845471 +13930605948 +18860498509 +18818180828 +15100360526 +15833644796 +18873407839 +13916348155 +13631058776 +13664105286 +18570800597 +15168667118 +15139037910 +15875060691 +13939569029 +13650201641 +18890553957 +13941530250 +13918762688 +18821219469 +18587918974 +18514192216 +18534310157 +15165308431 +13961889458 +13997858537 +18554176565 +18850961621 +15846593707 +15115549419 +13930623795 +13679288941 +15838984407 +15863673720 +13695552562 +13653219658 +18582281041 +15107047465 +18504089631 +15116731128 +15103032195 +18597384504 +18508920838 +13914423848 +13966377118 +18598073065 +13630673475 +18539424599 +18549636678 +18823580480 +13973323784 +13979155123 +13687239790 +13659613847 +18847916581 +15115152655 +18847939968 +15865089375 +18544639162 +13627910367 +13600305037 +15111471898 +18509577121 +18817233887 +18870776759 +13983820189 +18591670399 +15154266029 +18520802484 +18836448871 +15164526254 +18804388133 +13938264059 +18868438828 +13946069785 +15159151921 +15120159819 +15824222197 +15152735632 +18511430062 +13631945726 +13961757738 +18864244597 +18594998913 +13939289312 +13993397165 +15141529110 +18536055286 +18817519473 +13679627998 +18879458778 +18596924841 +15159640608 +13900816771 +15196182956 +13672042685 +13931697673 +18810841639 +13648668540 +15890691677 +13924909918 +13646754607 +15107954160 +13994421900 +18816410712 +13989829039 +18836128451 +18826163765 +13947080059 +18862465906 +13906277209 +18891736551 +13687416436 +13976052386 +18598671694 +15161830566 +15135913543 +13959232974 +18814670560 +15123733243 +18503355906 +18528033820 +13619654848 +15126995683 +13909753100 +13954442439 +18847177604 +13679215435 +13926953645 +18825739240 +15894131777 +13696829292 +18548087774 +13679437279 +13699236058 +13991389079 +18520853061 +13985065758 +13984229638 +13624305726 +13959437335 +15198835483 +13946893586 +15145998948 +18846702189 +18513076953 +18537409279 +15156672503 +15136193562 +15170698599 +15111764545 +15895001599 +13640277957 +18870225709 +15107963114 +18593641204 +18806263334 +13630187879 +18832115908 +15882607601 +13637086347 +13601619947 +15856642769 +18589645975 +18535337486 +18541504386 +13956095485 +18803513609 +18805165832 +18594137877 +18892310227 +15138199722 +15885201800 +18509625019 +18873233480 +15813730891 +15848861286 +15116336751 +18842578143 +13986562799 +15138617511 +15829244297 +13954533529 +18581311167 +18509906289 +18547612546 +13926020549 +13918427209 +18552845109 +15855168949 +15105590768 +13631234752 +13694329418 +18855323918 +15801163621 +18578992461 +18878100622 +15126629569 +13619980425 +13999460446 +13960446797 +18843606361 +13698671594 +18525244559 +18811128046 +15189851327 +18542010512 +18580764054 +18862387410 +13927631880 +18576426949 +13991420018 +18844121377 +13674961124 +18541270980 +13960550642 +13967008854 +18504156179 +13609405001 +13970919353 +18532924630 +18540827291 +15117377745 +13641480577 +18835893998 +18810417113 +15811103159 +15123555432 +18800641927 +18577523618 +13685994453 +18843944233 +13652750434 +18868466019 +15844796725 +15142665940 +18855959484 +13677134640 +15142010424 +13916885130 +15827991491 +13956316773 +13644823471 +18856043201 +13999725539 +15891957376 +13933559670 +18861906173 +18584004798 +18546970001 +15803540352 +13961433764 +13935596625 +15847368359 +15182527611 +18815868100 +15824270879 +15894701999 +18592213765 +18591088751 +15848869208 +13917075747 +13607981600 +15862763304 +13604107907 +18563107390 +18834473454 +13951106379 +13914779911 +15124677028 +18838012910 +13602167328 +18504863108 +18899631461 +15120162891 +13983542059 +13909227477 +18876800679 +13959439472 +13673178522 +15848815973 +15851527406 +13603035554 +13626295204 +13687633118 +13616920909 +13645657113 +15875575466 +18508346035 +18549526040 +13955454201 +13674567864 +13656797361 +15895497634 +15154053521 +18871498983 +15107522068 +13989484548 +18837052414 +18573505931 +13986321143 +15866001209 +15807955323 +18521533982 +13905705820 +18849946814 +13969045301 +18898234746 +18575396661 +13607103397 +13670466097 +18536664658 +18586664827 +18887301202 +18897901675 +15100917987 +18851562746 +18588847047 +13617499501 +15104686297 +18530161084 +18579943741 +15843134086 +18570144536 +18884120394 +15813871928 +15161177209 +15133804883 +13999074073 +13695843509 +18838561161 +15145329300 +15168205441 +18864255709 +15847917572 +13995149075 +15891983684 +15180032624 +13665721024 +13693925048 +13640009336 +18896750869 +18840999985 +13631815981 +18539644763 +15884500157 +15176884377 +13621913391 +13929890540 +13942901849 +13983795356 +13659538800 +13649266055 +13949841472 +13907087167 +15124459324 +13916077102 +18858085156 +15181723112 +13614538822 +13637602817 +15805205281 +13961722435 +13981796441 +13953210826 +13668643433 +15847184633 +13659765635 +18512839982 +18877121512 +15199351503 +15142446874 +13963927916 +13997248015 +18500437418 +13915683215 +13626301330 +15142745942 +13646297522 +13966168929 +18565659998 +18508036284 +13603841400 +15884020618 +15112438152 +15835960135 +13955196860 +18819290402 +15879912033 +18864651174 +13904724609 +13665825879 +15874075899 +13955831106 +15140636943 +15842818329 +18808760880 +13645961197 +18509478935 +13931449484 +13684261928 +13672577263 +15851339148 +13965122304 +15882805484 +18833868239 +15176708528 +13940673614 +18578781328 +13689895707 +18820388066 +18811085048 +13652951515 +13930064696 +13670655309 +15179915058 +13952979532 +18526845906 +13970321476 +15152233771 +18557470594 +13648484850 +13672518725 +15122128161 +13640430526 +15187051420 +13664700656 +18831868253 +13688209751 +18838418174 +15823554778 +18873131661 +18837190866 +18543306151 +18548038047 +13683365651 +15835797314 +15144385860 +15129621973 +18869145334 +18570729531 +13912819263 +15188288209 +18503170920 +13998256031 +13692396751 +18848508087 +18584217913 +18579316949 +18836813407 +15126668126 +15125092286 +15142043063 +15172284936 +13929014562 +13658124641 +13653230023 +18845435335 +13695901300 +15159391349 +13699827150 +13636201527 +13669468794 +13995704664 +15821276268 +18876755486 +15874842836 +13620231869 +15126450392 +13967014590 +18814674356 +15858532136 +15804392691 +15136032337 +18523344861 +18805747717 +15852176789 +18531812582 +18861745312 +18565841477 +18532445042 +15130984028 +15135603703 +15133724119 +18528470456 +15122743212 +13922707401 +13636074276 +18535168094 +15832968233 +15198863611 +15177885358 +18806411323 +18817987845 +15820131566 +15814261568 +18826841482 +13636056421 +13699236172 +13929250075 +15833849882 +15895742606 +15181391177 +18811002917 +13910061323 +13654690226 +18824976742 +18528349740 +18566399358 +15131944852 +18889740858 +18816435334 +13990520392 +18870456463 +18869248721 +13938047020 +13689612662 +18562787612 +15886974854 +13609449732 +13988003597 +13655263986 +18523553458 +15126536218 +15800355635 +13930002623 +18848803744 +15188958131 +15894505604 +13678902305 +15855253811 +18835307090 +13664591861 +13693014744 +13645646238 +15173657984 +13929802251 +15174742909 +15854189675 +15822078088 +13668273336 +18857011313 +18566964710 +15118273837 +13954474025 +13938479822 +18806562313 +15183051571 +15195784719 +18808190834 +18841857663 +18874618026 +15802116447 +18514183910 +18511127731 +15130313565 +15129565689 +13648894438 +18598188535 +13619709190 +18501374485 +15805306141 +15179130086 +13991766253 +13693007379 +18575740917 +13693325687 +18545995129 +13679707396 +15123153383 +13604230934 +13909805016 +15873414380 +18585174699 +13602072238 +13672058631 +15893150188 +15136721900 +13910170805 +15138029102 +13669557560 +15114412270 +13656991003 +18852195794 +13616817916 +15886830846 +18525748070 +18553704463 +13996836876 +13981388303 +18887030340 +13616344755 +18859640320 +13687572924 +13990745015 +15851337679 +18508048358 +15133898419 +15137164270 +13607700887 +13661258919 +18898693213 +15127749004 +15133330455 +13978544958 +15886304628 +18858362980 +15896290305 +13695565745 +18814029013 +18867740327 +13626306002 +15817532441 +15175747046 +15887338334 +18893686871 +18817915102 +18840881861 +15136283467 +13614674340 +18541419082 +15898478467 +15153176519 +15859368626 +15177264261 +15103443682 +18589438177 +18804626290 +18568280672 +18548549732 +13917832887 +18817067264 +18809461798 +13953862575 +15104015672 +18801706941 +18849719949 +13901741613 +13691491455 +13605767836 +13683433160 +15132103652 +18513199458 +15890995550 +13686648500 +15116043382 +13988202204 +15107272786 +18587695881 +13618517111 +18553822060 +13635969553 +18885182324 +13661370331 +18596949015 +18578771141 +15132313478 +18564117690 +13993036087 +18539822112 +15130104750 +18553873470 +15845256770 +15156119111 +15110254215 +15886979300 +15804180213 +18507843716 +18565737077 +18563940645 +15836774975 +15839542675 +15123917786 +18835683313 +13622424283 +15824014163 +18832718195 +13902442707 +15134364952 +15191514955 +13694601739 +15198272690 +15188085313 +18864684470 +15821561750 +13972412582 +18505502972 +15888373831 +13606435639 +18515358128 +15812797925 +15196872684 +15825085872 +15849031795 +18590247713 +18530515488 +18554472047 +15122149147 +15193259315 +18546401586 +18547517450 +18854219106 +18873213018 +18530520570 +15808835928 +15885126515 +18835565801 +18803383960 +13960093465 +15844156233 +18564956907 +13600404375 +13908372432 +15835776831 +15879146650 +15158392113 +18817890276 +15193509826 +13999332335 +13608027660 +15826987859 +18520735338 +13642266020 +15852474821 +15856350361 +18804432269 +13984474836 +18876625671 +18598775975 +18541472123 +15806541706 +13681052523 +18825335192 +18857391271 +18833073170 +18595164253 +15193081074 +13682341803 +15844849599 +13677848387 +15812705460 +13634769002 +15841539241 +18863004679 +18870946801 +13650775965 +15116750634 +18589525031 +15177695301 +13610558865 +18536576274 +15885100532 +15195110520 +13680364440 +15820175968 +13924928424 +15174167676 +13997436062 +13934172875 +18502217699 +13635978124 +15110714974 +13668436153 +13909493651 +13981736248 +15872350062 +15151247631 +13988794706 +15880326306 +15129164153 +18576921596 +13942752082 +13925633618 +18829107721 +15177664063 +15840895165 +13905120312 +15176401238 +13658676949 +18882457170 +13649531892 +13951356324 +13991089426 +15107001471 +18508382300 +13937396638 +15123261457 +13948010103 +15831162910 +13697823552 +15882358554 +15875342314 +18511151947 +18557069283 +18865325848 +15106402106 +13625674740 +18848103559 +18883822411 +15838759039 +13959928596 +15128667205 +18557294635 +18563484699 +18542456000 +18557620605 +13622457006 +13681308035 +15855664282 +18543142615 +15161332681 +18503734814 +13664304923 +13618265028 +13914362964 +18895810180 +13918370906 +18548936370 +15132193796 +18802329194 +18877883070 +18899943567 +13643033012 +13624241744 +15181948688 +15836023473 +18870689841 +15895636024 +13912987983 +15111082325 +18541036647 +18876722674 +13997865485 +13600322474 +15196521952 +18838703934 +18870646669 +18526305397 +15180024012 +18855334748 +18869286170 +15191281093 +18586530512 +15816443406 +15878319279 +13979206505 +18863092689 +18525300730 +18882656245 +18551419255 +13649211006 +13930412285 +15834223394 +18816890652 +13970954309 +18897659981 +15805395515 +13632100813 +13999840133 +15811783032 +13949380551 +15806639615 +18895089362 +18535996549 +13605273423 +15133730664 +15816631298 +15182225452 +13654312315 +15100250612 +18830982766 +13635862741 +13639348848 +18833545596 +15877307191 +18884508702 +18533633111 +13616824945 +15893591192 +18542597361 +13660469784 +15159533965 +18865160899 +15817530708 +15882044718 +18831405480 +15817941929 +13689299667 +15800287392 +13938065296 +13922878571 +13688397915 +18570574065 +13900984213 +13692448018 +15197200186 +15867074972 +18802845683 +13952328692 +18510607715 +15816190751 +13657113814 +18852773390 +15817857220 +13688172027 +15878486864 +15196428245 +15161422934 +15823446649 +15899734617 +15882913014 +15883520660 +15808391141 +15882921872 +15198808263 +18595388785 +13613918053 +13639720706 +18857282033 +15118391836 +13901622786 +13649672302 +15817506217 +13988219923 +13956896856 +13675400088 +13920466319 +15136446599 +15874729844 +18813864394 +13974091730 +13932365705 +13626186458 +15874196049 +15110590797 +18880513351 +15165667123 +15883157076 +15827159715 +13620598403 +18503045124 +13979788946 +13614976653 +13675434312 +18531110716 +18594770579 +15159639029 +15884029033 +13924730822 +15834970668 +13999842734 +13918953133 +13650211001 +15184450028 +15880520670 +15178684138 +13631431392 +15856219826 +13667430193 +13905107978 +18571674147 +15874174754 +13680537181 +13988814330 +18561902606 +13940443341 +15127840141 +18508918147 +13616441635 +15800803057 +18511248788 +13925518993 +15141675295 +18841263351 +18881123695 +15105772418 +18530833934 +15802803568 +18896229864 +18502641923 +15829717239 +13911740106 +15808076576 +18548907383 +13950972255 +15868814708 +15847945063 +15842836563 +18817549219 +18809836658 +13926072068 +13655779709 +15151359134 +15185873541 +13614424792 +13974567668 +15150297203 +15132900733 +15194092046 +13950029574 +13917316715 +15801361213 +18551920108 +18549263668 +15877539219 +13603576808 +13976596335 +15121509255 +18591729100 +18861218864 +13658398527 +18818304591 +18878502759 +18860571060 +13600799292 +18824085956 +13611604373 +13664651891 +18828537001 +15883111636 +15146022176 +15132829946 +15859075708 +13692573945 +18831312130 +15884581152 +13976668656 +15831862088 +18519945742 +18880617633 +13652498096 +13680886548 +13901381746 +15100544578 +13956376103 +13691832784 +18850656913 +13627395003 +13642534429 +13922240663 +18889178138 +13941884701 +15143456766 +13904110360 +13650365191 +13618555521 +18519146030 +15123677606 +13657018075 +15852972720 +13657173640 +18843464388 +18504501815 +18543051050 +15875038671 +18803120875 +15860400160 +18587151109 +15178861929 +13611299372 +13992699288 +15130738613 +18510908416 +18533387538 +15196526186 +18506438340 +13686439502 +18818562641 +15150982910 +15155756200 +18858519743 +15123491031 +13667345607 +18857256071 +13963430007 +15884665725 +15138766495 +13970864535 +15825332950 +15172319996 +15847093957 +15873956358 +13651401587 +15883899006 +18871461425 +13650544822 +15186600976 +13612612010 +13674244305 +15121024871 +15110324673 +15884059785 +18592075579 +13658234191 +15197703593 +15154620220 +15801710666 +13694103065 +13608662216 +18826770697 +13901390825 +15107665670 +13919422386 +18540659750 +13602961140 +18557342242 +18552115503 +13919625667 +15154893632 +15146519078 +18555348213 +13963534503 +13606799785 +13949262138 +15119136654 +13618540281 +15871006843 +13617553902 +13907822035 +13626843899 +15848581609 +18529641596 +15196984758 +15806597423 +13604103071 +18880002942 +13936897480 +18892516196 +15857786758 +13929158926 +13984520730 +13948714807 +15109137630 +13936751145 +18565681183 +15185612621 +18521308279 +15159932147 +15885400539 +13958464716 +15102622962 +13932877564 +18802705699 +15810360959 +13969841829 +18806961584 +15132204116 +18532216685 +18587849064 +18857072477 +13637275375 +15866194650 +15823708316 +18546606873 +18892750744 +15149082203 +18879864345 +18593608958 +18557099588 +13663984106 +13616350181 +15813428916 +13628673419 +13676730873 +13997032060 +13650986893 +18896381397 +18555564314 +18877779896 +18518443703 +15833879124 +15883466140 +18838582135 +13626502132 +15119143085 +13986882091 +18545931428 +18860437345 +15133949608 +18851523240 +18856785372 +15124282944 +13981432192 +18866651151 +13977898792 +15188905940 +18504436761 +15191356898 +18513406853 +13917156841 +15140221866 +15126876502 +13982863703 +13686059263 +18571736747 +13964070794 +15872676194 +15848772320 +18894238137 +15182950843 +15151777236 +18518047164 +15870138007 +18531450792 +15131613942 +13678116349 +13656278440 +18544472518 +18819577867 +18881487505 +18566004597 +15830390217 +13676386266 +13674840061 +18589120247 +13939038006 +13687408275 +15108758104 +18847872965 +13901227875 +15828461718 +18599768767 +15164204962 +15889882052 +18848669640 +15864918506 +15865558592 +18531298158 +13671271271 +15881046270 +13974100707 +13907615221 +18561291586 +18538714725 +18535576996 +18539269792 +18556708456 +15899621963 +13615736433 +18862400849 +13995249167 +13686356810 +18587774736 +18824698788 +15141383525 +13623268917 +15195184968 +18836464698 +13602783771 +15161587545 +15858390823 +13974009333 +15829279729 +15871385776 +18503228472 +15815808182 +13985594583 +15863082028 +18505085524 +13640122594 +15122937370 +15129275486 +18811368982 +18851153987 +15823022808 +15169164054 +13904235787 +13935485541 +15815838117 +13925138930 +18572951270 +13963742116 +18537766837 +13944855877 +18592732069 +15104066698 +13667893104 +13659757177 +15889886775 +18863887607 +13903710722 +18525171428 +15194815133 +18562012085 +18806149370 +13919587635 +13952652992 +18827478119 +18820570355 +15126740316 +13963814636 +13919531756 +15126272589 +18882983873 +13983164025 +18819654486 +15179254994 +13982366254 +13692637809 +15125811951 +13985753560 +18552564122 +18865419083 +18861378260 +15172908349 +13991570219 +18550994419 +15845457111 +13620191271 +18500834843 +18570441365 +13673513645 +15847971191 +15851161420 +15815524981 +13915552745 +13979348703 +18543203055 +13969408319 +18501416864 +13997326030 +15169591396 +15851085984 +18863108967 +13648267182 +13932848376 +13916138654 +18822599418 +13695267733 +15807020638 +15110049244 +15170644851 +15883828967 +13919531920 +15841779629 +15872453573 +18580609485 +18872921070 +15810792745 +15862824903 +15836779369 +15836239636 +15114988291 +15122746762 +15141184425 +13670066821 +15163732576 +13602576241 +15819002071 +18816842396 +13688504292 +18873321039 +18874442421 +13612496567 +18869636865 +13955434638 +13695436242 +15816184364 +18846187653 +15169399091 +18859614520 +18897532797 +13904034781 +13904395133 +15817538841 +13662597025 +13914639573 +18833843350 +13977723983 +13960484796 +18853506337 +15173119977 +15890736031 +13601436495 +18525421401 +18846074784 +13629215774 +13918222900 +15834906343 +13947013042 +13659061186 +15887325845 +13605872107 +13656264396 +15828417545 +18857687649 +15131044008 +15152238949 +15190939007 +18560281357 +13958248698 +13929152691 +18837941773 +18884920579 +18518754847 +18542596999 +13988728281 +18515564723 +15836040049 +15835823312 +13967028616 +15822003683 +13995087871 +15105087816 +13651859571 +13689929248 +15152073154 +15185989283 +15163913502 +13655419929 +18582909154 +13950193313 +13646208641 +18860374357 +18592823433 +15803455039 +13607683420 +15116626008 +15138545332 +18824718258 +18862969470 +15175994504 +18813746145 +15838231672 +15164650590 +15892233249 +15841789153 +18898423352 +18889943168 +15177998157 +18883920680 +13646190261 +18889811266 +13660284075 +18851214968 +15883472904 +13603119692 +15878045011 +18887537030 +13630583489 +13936055494 +15865319990 +18561850885 +13633251318 +15159648718 +13674261107 +18861782979 +13661747027 +15818939430 +15152038097 +15105591418 +15837116271 +13902143505 +13644945177 +18588420951 +15868137876 +18873446998 +18899130635 +18879696196 +18589317547 +15126840804 +18574100872 +15831572612 +13965512671 +15154611329 +13655696129 +18510635746 +15110691873 +18511549562 +18599607315 +13668045347 +15851265402 +13990036775 +15866071586 +18829057607 +15858390618 +15851193595 +13606513183 +13619018293 +18535009143 +13960564451 +13902510247 +15866483560 +13963666059 +15107157054 +13918756601 +18502726268 +18884018581 +18882699093 +18878550405 +15137834604 +13628799693 +18537731596 +15852963453 +15144788429 +18539789716 +13941035603 +18893076461 +18833485403 +18523733642 +13931402948 +15838947410 +15174991784 +13937900123 +15855021199 +15157360561 +18843479147 +18836552955 +13629894897 +18550105438 +15866006752 +15168161465 +18860198586 +13974214308 +18846445788 +13655289422 +13981405457 +13925880937 +15175768883 +13976637473 +18596848469 +13635650044 +18818803280 +13918245169 +15825837058 +13961101663 +13613740164 +13678364071 +13928460473 +13652244392 +13914792925 +18856936923 +15820387114 +15189571283 +13986345399 +15164340854 +15130332341 +13617519246 +13984551786 +15104671085 +15811988442 +18569335117 +13678138523 +18835245269 +13982902451 +18894941804 +15835995649 +18846686095 +15172462613 +13953139388 +18546500220 +18820759307 +13678744680 +18830779518 +13647705146 +13967505412 +13644174535 +13657268607 +15812230714 +15863361868 +13655046077 +13673750757 +13691944289 +18844052206 +18806419414 +13969960571 +18531652554 +18858729728 +18551375555 +13600146420 +13998551113 +18803748221 +13666332938 +13603400717 +18831744693 +18504061610 +13920301928 +13982978109 +18879630807 +18527102526 +15145626344 +15891787983 +18534224249 +13681864325 +15895085823 +13932908202 +15885260896 +15106294592 +13639439203 +18871202804 +15884845136 +15852023961 +15190955159 +13694491964 +15847026701 +15805556994 +18517424135 +18814847775 +13906295585 +15820014238 +15156687891 +13956107128 +15809014259 +15108677745 +15888607087 +18896632492 +18886053627 +13977418287 +15121155867 +18825945866 +15106808655 +15851629159 +13632748115 +13689920852 +13976898734 +18546538160 +15131753310 +18514355068 +18872758746 +13687368299 +13607900558 +13640013496 +18884594562 +18509162443 +13663897794 +18551979828 +18803664736 +13691772300 +13981032946 +13608595238 +15135705232 +13601138149 +13636165617 +18586236404 +15833542688 +15858413438 +15108325182 +15117484474 +18578569712 +18850904374 +13682502004 +15162927968 +15157902832 +15849397555 +13960721028 +13968508646 +18529118493 +18563196013 +18529930320 +18560135110 +18502508106 +15132636202 +18544380591 +13932476931 +18568360227 +18865738803 +15878866655 +15804217328 +15182156539 +15880908414 +15115657156 +18580086098 +15834275217 +18592153968 +15822080478 +13902598248 +13984568937 +15135817901 +15143482303 +13696939247 +15822604844 +15833282303 +18842119746 +18842196054 +18569403036 +15101236937 +18853843935 +13986026814 +13992916050 +18582038185 +15155296149 +18504012887 +13997745321 +15896604929 +13631375488 +15840667671 +13944065297 +15158753737 +13920482361 +18527555009 +13950228233 +13958175035 +15179604563 +18873317250 +13658562390 +13650715994 +13993250358 +13983635374 +18851488114 +13989597475 +15124338511 +18890989882 +13957219999 +13917247969 +13656273766 +18883964010 +18536423715 +15124770559 +15888687231 +15160593715 +18578409217 +15893541430 +13655663622 +13960805933 +13944338301 +18807118904 +18553195185 +18850515592 +18587027203 +15168687065 +13947828166 +18835177247 +15130643902 +15188184488 +15885622598 +18596017874 +18504019995 +13616819085 +18805879809 +18508497963 +13921323495 +15809558534 +18847549669 +15198727092 +15191236305 +18852238397 +18837184285 +18856477983 +18585940459 +13607376791 +13965477646 +18898899127 +13953998153 +13648917596 +15164488246 +13610083849 +13687568586 +13638476715 +18850790126 +18512910233 +15895739533 +15190045991 +15119498978 +15816400149 +15158771671 +18537708512 +18818084342 +13903358287 +13602637956 +15868917588 +15189178662 +18594123096 +13668507401 +18599122135 +15113137840 +15824547885 +18809358645 +18520735407 +18529326494 +13939464408 +15129803063 +13689626370 +13956688593 +18816355719 +18536395681 +15814281813 +13978820584 +13689623760 +18577906494 +15195542226 +15119213477 +15173352485 +13900783374 +15119331066 +13957032704 +15869074460 +15843356380 +18802697882 +18853897931 +15146478180 +15143853982 +13617092788 +15829137322 +13987015831 +18898316530 +18581350546 +13924051931 +13966593676 +13978945370 +15181831330 +13601108909 +13945508341 +15155378594 +13636354553 +13644186848 +15835599661 +13956694311 +15857203720 +13956780463 +18566665613 +18572880516 +18864506367 +18506334828 +13905949726 +18507340491 +13900231868 +13601004727 +18856400233 +13635255466 +13940080945 +18599822796 +18567316111 +13661369283 +13616136654 +13644828621 +13912301780 +15192962444 +15800841511 +15111018398 +18827591211 +13636252366 +13927710952 +13652598697 +15114810447 +18875287896 +13910598499 +18857394359 +18521615364 +13972390344 +15877383940 +15854557506 +18505129724 +15104447613 +15134828209 +15850711350 +15829980701 +15161817340 +15841474642 +15136489775 +18824519676 +18850044129 +18568303603 +15877652067 +13678232617 +15820154852 +13637527132 +18570630824 +15159771087 +18822979306 +18553126857 +18572909651 +15197017052 +13999792513 +18563382189 +15851900771 +13992856907 +13689249492 +15883413667 +18882496376 +18556268177 +18878592701 +13921221534 +13635007864 +15849729849 +15882982842 +15826520223 +15160078347 +18867370130 +15196938667 +15823823530 +13661081284 +15877897724 +18807054346 +18549724321 +18803416905 +18521899156 +18544955000 +13963193669 +15141709990 +15170333667 +15870342820 +18533217646 +13997681993 +15865294734 +13910864836 +13616281186 +13618912850 +13999906144 +15885302755 +15880502312 +13615317252 +13678992116 +15104499494 +13999665793 +13664334629 +18534581319 +18563931674 +13651517939 +13686034055 +15875506592 +15832148488 +18842820535 +18535709293 +15184081009 +18886830066 +15812757429 +18807869205 +18892988315 +15199782231 +13905632902 +13625466168 +18882997792 +18844977801 +15816525826 +18549862582 +15886062618 +15846391293 +18558806865 +18854784250 +18510638724 +13934232374 +15850208164 +15877855160 +18897198076 +15169486736 +13699015528 +13641011945 +18880103109 +15105746524 +15155356465 +18898820908 +15129112200 +18516487490 +15838595853 +18594314591 +13637801841 +13630008202 +13911170352 +18843050026 +18898484300 +13647594384 +15853752181 +18592843666 +13948629004 +15192346281 +15146589356 +13613024296 +18592776806 +13908212331 +13988846962 +13983996583 +15123415886 +13690940181 +18817834759 +13944429476 +15144289467 +18531671463 +18519233692 +18524698196 +13983770974 +15192999024 +13664215946 +15182225172 +15196487349 +18880470433 +13607578681 +15866448758 +15136782405 +15844264853 +18528506076 +18508516893 +15850205387 +15151074538 +15194814161 +15834281816 +15175915812 +18880655578 +15892029872 +15880018283 +13986099310 +15898867171 +13928507404 +18541678348 +18544399737 +18870105692 +18857365016 +15813567879 +18547274176 +18579719316 +13943544306 +13604067180 +13613097518 +13664007450 +18893133502 +18549344225 +18517999218 +13667169388 +18806246510 +15177082109 +18881812700 +15879125313 +15128618999 +13678837469 +13925007723 +13916811985 +15137609476 +15806494996 +13685320256 +15893647453 +18863108649 +15841344914 +18863470549 +15160223455 +15183497389 +13664433622 +13652956781 +18524851624 +15837786008 +18814211952 +13614360845 +15805820434 +15124355795 +18534639588 +18857779139 +18848354588 +13975249845 +15816247082 +15132206881 +15839609632 +13942905274 +18863626160 +13627906841 +15112623506 +13979163712 +18869856145 +18508757060 +15828766698 +15829483310 +18885344328 +18828532403 +13997532032 +18851868875 +18507084494 +13912333097 +13611235172 +15816208438 +13967447673 +13963824820 +13965981022 +18847537520 +13996069454 +15130849629 +18570366794 +15829804325 +13689331928 +18854298982 +18806701896 +18563170579 +18887178067 +13610819188 +13608831054 +15168023211 +13630730050 +18513500723 +18893319709 +15877911020 +13646118613 +18590591649 +13906668000 +13643503654 +13926413022 +15842761322 +13675046267 +18895189084 +13656229319 +18559996433 +15886769446 +13624588998 +18589281921 +15853816034 +15197539258 +15122459888 +15864376409 +18886028528 +18802013933 +13937886933 +15133727771 +15129546009 +15100681868 +15123021622 +18502898461 +15183178533 +18809367178 +15821824024 +18876436937 +15171842544 +15829996306 +13657186298 +15108478432 +13651029561 +18892102210 +13962577417 +18864867335 +15161293150 +15199425794 +15889821562 +15865517701 +18508404245 +15867642989 +15848836465 +13987625001 +13972013095 +13661399110 +13692462209 +15135102244 +18581971437 +18823397801 +13635916969 +18502315177 +13998115348 +13648393343 +13933585910 +18823030041 +13658346197 +13955851809 +18555172580 +18565762318 +18891586599 +18874564252 +18867895078 +15873042746 +13935314767 +18551886496 +15808532592 +15881599310 +15883478139 +18870344719 +13982891148 +18807705761 +13614759703 +15171550075 +13694289161 +15819633849 +18591902526 +15810691785 +18521384630 +15196765012 +18857953916 +18886165655 +15837696423 +13908789680 +18574493014 +13667710860 +13674674186 +18568105955 +15894690415 +18885699839 +15191518417 +13679773853 +13971216435 +15141988184 +15870133268 +15140573303 +15153975838 +15860691195 +18525176159 +13601459206 +18574747144 +18541424648 +15843104517 +15150392884 +15816266241 +18520952345 +18586899240 +13609986863 +18826239542 +15891483871 +15898834478 +18893383705 +18858344585 +15879183842 +15834995432 +15845590786 +18519702315 +13672455725 +15149230457 +15166015450 +15841163021 +13608916937 +18510914746 +13686694620 +15133455537 +18524308071 +13606283763 +18817633587 +13981690849 +13612869203 +13995490268 +13652999361 +18516888612 +13697221419 +18562396065 +18588182788 +15821508636 +15160832849 +15844548629 +18893167690 +13698482647 +15839674876 +13954798727 +15828268437 +13636069641 +13993275110 +13908914301 +13944007045 +13989063900 +15829861104 +13936832791 +18526002319 +15841602097 +15197015678 +18808039997 +13920629704 +18800295801 +13945295087 +18506534831 +13926853551 +13957975241 +15196954592 +18890219139 +13600996134 +13975301431 +13648082843 +15110595474 +13687045980 +13654893008 +18869258409 +18582804280 +15854079695 +13658372007 +13902192493 +13962107863 +13609412731 +18818935148 +13640373971 +15102041167 +15135622000 +15821217672 +18560254504 +15855718361 +13605499295 +15891083552 +15175794115 +13641004553 +13684493966 +18813975705 +18557247766 +15179299063 +13637674601 +13607699234 +13653685355 +13664457970 +13964939841 +18887285422 +13944688613 +18886482347 +13963692079 +13953115996 +18504867597 +18566266869 +18886902391 +18867431709 +13679728209 +18575087919 +13994447840 +15816176596 +13954690516 +18833858812 +18518583149 +18530836683 +15866224685 +13666721494 +15115299744 +13687780214 +15128529326 +13974313181 +13635986218 +13692863254 +13962705010 +15802624137 +13904618857 +15164050771 +15814016937 +15853153645 +15190481797 +18550113319 +15155553654 +15861402271 +13961014695 +13981743502 +13952872322 +18521277692 +15872327691 +13918885573 +13635320784 +15838188363 +15803171953 +15165107155 +18596512515 +18585621977 +13965481640 +13649559585 +13952701588 +13977104997 +13679624040 +13935568346 +15840260378 +15828130333 +13689221495 +13620596371 +18526398632 +18827552580 +13688674086 +18860258823 +18869828099 +13636844552 +15100282669 +15801160032 +13648538783 +15842810649 +15883441320 +15806015395 +13917279268 +18851598488 +18549887515 +15877868297 +13615444587 +15806020616 +13629886413 +15192653595 +18551740511 +13977268032 +13967954387 +18571144976 +15182407353 +18591318412 +18880588130 +18587931010 +13908900910 +13608181214 +18843758300 +13927238568 +13914564355 +13953447282 +18585764854 +13936440174 +18578462824 +18511142549 +18853628949 +15838590952 +15864160062 +18585740397 +15893127025 +13680575454 +15830808991 +18538019632 +15822847636 +13939114477 +13628022073 +15810771872 +13658533166 +18841735585 +13690819540 +15107039906 +18816956733 +18888546227 +15801726498 +18509416635 +13957877169 +18579017232 +18570742547 +18542147705 +13912793226 +15884629048 +18551911196 +18596429047 +18527226107 +18858469649 +15109217066 +18545364283 +13652530099 +15899107554 +13973573471 +18856844823 +13615410077 +15833842084 +13996016463 +15884300788 +15124977330 +13642468039 +18592164554 +15184215468 +15170663697 +18565491252 +18547659950 +15109276742 +13999663763 +18565983267 +18567142560 +15144803766 +13936370604 +18812890518 +15851099167 +13666326850 +18506297924 +18526784235 +15856366776 +18856058090 +13940411543 +13654047715 +15856936182 +15162841909 +18504346383 +18829107653 +15868141705 +15129650219 +18513791369 +18841981733 +18881315695 +13931354582 +18824933176 +18544883075 +18890252410 +15110281420 +13625753098 +13921585625 +13927859632 +18548062486 +15116692716 +13987203145 +13938134991 +13955829296 +18821231943 +15836501197 +18826784652 +13635405183 +15814649285 +13973525997 +18575087833 +13688154581 +18583918314 +18884372496 +13974869246 +15851005951 +18551783518 +13906888519 +18892595891 +13978313927 +18519115290 +18583563010 +15102010790 +15117363420 +18599860916 +18583717914 +15836865382 +15177288316 +18884007786 +15137243362 +15848023406 +15140123007 +13693810983 +18882270279 +15840359944 +13956383582 +15104935933 +15188535107 +18536165235 +18829087851 +18888062553 +13909165697 +15135087454 +15800764364 +13635646851 +15125058971 +18568808661 +15147916997 +18538941464 +13969667462 +15131344174 +18809599557 +18815072386 +15896836418 +15189877989 +18801099636 +13950737026 +15129604616 +13964999706 +13618473653 +15169886551 +15895207683 +13666052906 +15159517799 +15837262029 +18549082529 +15120584136 +18508641755 +18825319072 +15898522115 +13999468646 +13918741583 +18566863728 +15822309205 +18525386092 +13616293229 +18836735798 +15860288928 +18854198694 +15867860842 +18899674522 +13647596392 +18860697352 +13951664489 +13633773617 +13636716814 +15138071802 +15116932128 +13628806640 +18826755310 +13654544703 +13677442205 +15838210127 +15149239827 +18516466222 +15197224537 +15806094768 +18803851897 +15151182574 +13934263680 +13649586403 +18880488327 +13981170065 +13934449194 +15809472191 +18573467189 +15841047880 +18872832904 +15805537397 +13624941702 +18886439915 +18863556843 +13998563310 +13633471249 +13959674599 +18835073902 +13922097028 +15865246648 +18863106728 +18541232329 +15843907202 +13667222022 +18813052829 +18569053866 +18510567301 +15172779450 +13664826903 +15860647643 +13969104775 +13990027733 +13954750792 +18563259041 +18519672216 +18868080913 +18861014213 +13944297393 +13998109102 +15108687373 +13907929802 +13677379821 +13636038392 +18810094968 +18818154601 +15100544453 +18849466120 +13994523813 +15167217762 +15166548589 +13695792353 +18864486741 +18897510120 +15151458584 +15843892547 +13970371943 +15134148643 +13958342651 +18599873874 +15850678171 +15811538138 +15891669255 +18569200817 +15136352844 +15108844545 +15881060232 +18870470045 +18848265329 +15894188605 +18807004336 +13629558018 +18865127082 +13670259546 +18590056170 +18514961682 +15169616047 +15172244644 +15880819774 +13995057201 +18890684152 +15155688047 +18542276583 +15873892845 +18511185155 +18510436445 +18573272752 +15128265255 +15157384842 +18534683924 +18537330136 +15170877835 +18814263191 +15831747349 +18849597283 +15827212274 +18558354962 +18887268562 +15168539901 +18819174399 +13926401746 +13932928611 +18833790532 +15844625817 +18523706434 +15132531204 +18888291902 +18876504261 +15876189004 +13986155032 +15170307080 +18527431666 +15881077041 +15831558561 +13640598738 +18553245022 +18801994439 +15102143009 +18573465815 +13627032318 +18541606273 +18530764895 +18830911372 +13661998364 +15814839872 +13960607738 +18881997439 +13994275978 +18506083832 +18874947883 +18871134794 +13681643312 +13641857638 +18564455328 +18526687542 +18894772284 +15111122388 +15825007618 +18809457948 +18830558167 +15816515994 +18584417243 +13601614320 +18542374576 +18520683384 +13603765635 +18851388124 +18533341137 +18568555966 +15187984423 +18509819015 +18561243696 +18868398927 +15146090578 +13678714428 +18818295925 +15857051191 +18502967658 +15181659377 +15191341603 +18875446812 +13632560268 +13904148429 +15814383405 +18881297617 +15121948135 +13646588319 +13656382235 +18896490640 +15126516519 +18861175656 +15822256925 +18887717434 +15803201342 +13648209431 +13685021955 +13902769131 +18582705533 +13947240762 +13996683211 +15893537042 +18828900961 +18566725753 +18814106356 +13929711403 +13644374953 +15875715482 +13668891637 +13958446279 +18850278062 +18560286989 +15804589330 +13632884705 +15897786166 +18832061598 +18813976343 +15105230893 +15848302305 +15861821634 +15161995399 +18859352488 +15190262811 +15853198143 +18811844032 +18554469115 +13659730737 +13636251262 +18849803230 +18553230860 +15859628303 +15879400339 +18801479407 +15170537894 +13949142176 +18816407965 +13919382415 +15143951044 +18853181659 +15854396736 +15877630808 +18559465139 +15125924510 +18872578908 +13658926685 +18527116526 +18534539927 +15119714140 +18864017915 +13948450383 +13933531668 +15107733374 +18850928797 +13957431828 +15870292633 +13974787754 +18853011380 +13651367490 +13601364003 +18822456825 +13971141503 +15885475545 +18808179046 +13636883926 +18542738571 +13905855204 +13691609615 +18556795761 +18894438248 +13908084912 +18592480142 +18842155939 +13907482918 +13689169640 +13928270412 +13957789554 +15137820206 +15810552863 +13624694036 +18886036850 +15842110836 +13904071314 +13670700852 +13967716133 +15183220548 +15872792369 +13655310781 +13672883974 +13633472981 +13984684221 +13613289549 +18860726716 +15173913286 +15176938724 +15825332426 +13665676676 +18888204743 +15841572501 +18895143128 +15102243173 +18813141830 +13624226266 +15826953631 +13643907542 +18536187272 +15166378534 +18553705693 +13976508897 +13995414281 +13671527417 +13980880572 +13906511669 +13975073923 +13660283427 +15847526832 +18576235558 +18588363125 +18853566768 +15189570470 +18582595693 +15883136941 +13976144948 +18530070888 +13654375001 +18854726241 +18878731256 +15891834495 +18569155126 +18869993403 +15800171129 +18812599396 +13638733729 +18822038524 +13690705447 +13654427594 +18823271422 +15165482648 +15120301939 +18508479236 +15891674562 +15101134047 +13939521492 +13951939279 +18828722978 +13980662550 +15104296974 +18529798593 +18503202733 +15189389894 +15831326205 +18539854978 +18807574093 +18540995708 +18813490041 +13653541743 +18885977428 +13904719525 +18811640827 +13924801536 +13696883983 +15867785339 +13694190480 +15119292845 +18837093350 +13690901202 +18839953405 +18890289847 +15826704816 +13912596072 +18817583801 +15851667413 +15880798319 +13959350184 +15849852307 +13975878812 +15124446012 +13918340163 +13627069349 +13978369212 +13987293254 +18852153521 +18892502304 +18582959827 +15828479839 +15838928140 +15892240895 +18510263808 +13912848713 +15112627248 +18889401075 +15868453543 +18515477810 +18511739525 +13969557909 +18558247789 +13668670741 +15896118547 +15148124206 +13663220744 +18840583066 +18893523469 +13920522108 +13672332265 +15112836755 +15860769680 +15182486147 +18894725140 +15871559048 +18599625094 +15141779585 +13985585768 +13939464912 +18832477016 +13679339100 +15116698692 +13922756972 +13689475624 +13961552512 +13686308612 +18805845285 +18532094063 +13922962620 +18844630826 +13947696524 +13674382753 +13667258961 +13929443528 +13926163936 +13925930378 +18500897768 +18515039296 +15162334829 +13654531932 +18536724542 +18849099421 +13949299790 +18837779755 +15868303902 +15815627890 +15849322647 +13625730851 +13644431827 +18534111473 +18893933108 +13937002679 +15175360058 +13996936125 +18505638441 +15112327885 +15194640518 +15878010413 +13933630601 +15806903521 +15102736618 +18569624844 +15853050392 +18568857600 +15880213820 +15154054242 +13663578944 +13682416231 +15850399466 +15892806908 +15171274941 +15199403264 +15803700303 +15106848509 +15170448364 +13670061596 +15897558723 +13981951423 +15136630671 +15166491847 +13648166813 +15883417270 +13936465413 +13974818553 +18582892199 +15151322030 +15185485124 +18510459790 +15832007419 +18828911181 +13639585303 +15856492018 +13931255635 +18530790522 +13945846042 +13656761720 +18885633990 +13934270054 +13679148039 +15157565304 +18549762784 +13976638665 +13984212787 +15803380467 +18564862583 +18883679085 +15887104212 +18807991535 +18829209447 +13682863667 +18809542815 +13935266148 +13978346144 +15110764188 +13617797770 +18546054387 +18517293954 +13689624884 +13686733533 +15822880040 +13652023087 +18892493532 +18800916739 +15804954807 +18813906224 +15876776558 +15893382750 +18561628647 +18860062005 +15101532864 +18517820566 +13990482394 +18858159481 +13984634400 +13662540603 +13695783200 +13615735916 +15106314109 +18534282506 +18828713498 +15137477959 +15180502991 +15868859379 +18518726239 +13986365613 +18548794255 +13961339398 +15876163980 +18558199772 +15875080870 +15897054745 +13902682729 +13982015074 +18870662251 +13960371828 +15107397958 +18504075354 +18503719650 +13905906851 +15117860320 +13675139614 +13693015124 +18507679594 +13966171470 +18884001518 +15801802114 +15106055750 +13980168086 +15834614983 +13980575526 +18542174154 +13967569834 +18555765555 +18871811483 +18563228707 +13618920038 +18844577417 +15170466024 +13900115011 +13666232245 +15196324787 +18818148625 +15164914674 +13691508243 +18886128446 +15875843388 +13650837253 +18533201530 +13992211353 +13938291957 +18535452939 +18886785491 +18843887413 +13996720154 +13638485868 +13957561556 +13948952894 +15810573910 +18548122608 +13618751642 +13650468927 +18842854500 +18859178185 +18594969791 +13925390528 +18521528245 +13978492876 +13911553764 +18842034907 +15100777310 +18525907875 +15115326392 +18824919119 +15159606499 +15178236916 +15864622290 +13968441417 +13663575575 +13912931263 +18861454337 +13994921751 +15140049781 +18559700779 +15194801061 +13638250782 +13602287351 +18826059465 +13606398008 +13925431495 +18845250606 +13667729497 +13963057436 +13907783689 +13913712674 +15808222279 +15165479964 +13617836983 +15822163216 +18801493306 +18813824228 +18855645609 +18544527363 +15843647102 +15118825654 +13957471930 +18524710176 +13670249686 +15864730412 +15115662957 +15151527941 +15189452444 +15125925782 +13648066822 +13626034301 +18511853590 +15803386400 +18806216977 +13642050593 +15877965521 +13937145346 +18888522329 +18811549154 +18555710206 +13935067595 +18804225216 +18575268144 +18590407759 +15815725075 +18889794732 +15819052665 +13627416159 +15184772466 +18829201993 +18864408421 +13691610825 +15889868937 +13672284213 +15191306023 +15119483592 +18501777495 +13906291057 +15187941740 +18839654876 +15149118559 +15837203573 +15810468539 +13952636876 +13637782733 +15817169967 +15154166728 +15111899518 +18891308261 +15875036733 +18832684881 +15878641126 +18591609031 +18810604013 +15885319818 +18829940569 +18511093491 +15883375711 +13673074374 +13901184751 +13972591664 +18860023838 +15807620438 +15177095011 +13687750420 +13991184149 +18545466823 +18850499674 +15863289335 +15159772616 +15108855709 +13634471269 +13969928004 +13967893888 +18593230597 +13606875139 +18839168724 +18522522825 +15199946333 +13687628320 +13643149156 +13636400762 +18576364882 +15858322666 +15188412195 +13906376655 +15831705681 +13635912767 +18581830871 +18887956599 +13934937729 +18893235242 +15115058404 +18875477054 +15124793362 +15873061022 +13938375583 +15894259602 +13621062233 +13966781921 +13624890567 +18824363201 +13669377213 +13981552305 +13989028151 +15170857799 +15151571042 +18515619522 +13959683984 +18877435241 +13923283441 +15819780442 +15117895772 +13954542517 +15842921924 +15862498310 +15104994027 +13929288732 +15196710726 +18866712772 +15845348090 +18819095909 +18862452441 +13932747091 +18595865273 +13934530371 +15122637122 +18834341756 +18897077164 +15187462180 +15866948281 +13981367751 +15861185118 +15198158620 +18544327246 +13991398043 +13901062539 +13903705723 +13629866328 +13928248899 +13926845469 +18875467798 +18837164188 +18584726920 +18549734917 +18539098964 +15848081826 +15187660078 +15845136786 +15873741232 +15118512348 +13640607745 +13654097357 +15191809998 +15827004455 +15854006544 +15892901259 +18515805877 +15147353059 +18565156091 +13633754759 +18828034731 +18573040165 +18845127503 +15893939361 +18501211197 +15847744182 +13667981562 +15159480630 +13609000986 +13914717277 +15803019851 +18575298587 +13693419784 +18817821912 +13625639605 +15144556898 +13697541013 +13947140706 +15108043314 +15893325536 +15887051156 +15808183990 +18519426129 +18842849592 +18863914564 +13914872311 +15851383612 +18823399276 +15173937535 +15899902300 +13605864647 +15869259681 +13949744709 +13926333714 +13652159161 +13996322266 +18897821432 +18578648451 +13913007777 +13976894139 +15139796580 +15836943293 +13609694961 +13601420253 +13973149263 +15152906788 +18895068202 +18829723392 +13636959802 +18835145521 +18882480757 +18597602119 +13924650109 +18862149938 +15102526203 +15153679929 +13935063652 +15165891006 +18877098341 +18830311145 +13645784448 +15811178503 +18839924467 +15890433523 +13620715922 +18804299801 +13920355725 +15829228465 +18891672560 +15829025665 +15115873221 +13696519628 +18879972247 +15137162839 +15124834284 +15110295063 +13616753171 +18850575148 +13642787975 +15107234521 +18808633447 +18512745774 +13922361334 +15153502018 +13659169863 +15806380156 +15886467847 +15170439166 +15833547115 +15162490039 +15185201051 +18537893866 +18593769244 +13694200311 +18830794768 +13983335020 +18561136232 +18559712178 +18526017647 +18886523276 +13655544386 +13953959655 +13969532391 +18509530086 +18524898237 +18897382849 +13691950281 +15814605806 +15862637481 +18819619518 +13935624274 +15115964029 +13686463063 +13601800677 +18852667106 +18845513046 +15111757661 +15174125838 +18894341122 +13659409891 +13917877145 +13676512634 +18534487809 +15804540694 +13939098206 +15810932459 +18588483507 +18832789533 +13922523406 +13991219047 +15827531033 +13624183559 +13994374830 +13618788482 +13911024711 +13678225287 +15195271763 +18556128741 +18862914276 +18827048056 +15865565843 +13674470601 +13633908579 +15875002926 +15100404458 +15847991106 +15108960851 +13616128781 +15887800048 +13965383959 +15170282216 +13669098751 +18516959405 +15154707523 +13980162812 +15112160446 +13901180229 +15185729330 +15833788171 +15889700400 +18815539819 +15104947124 +13990403157 +13685432780 +18803968724 +13658451223 +18553591960 +13970768507 +13661257018 +15174928577 +15884489420 +13657623803 +15179759035 +15863416761 +15195017664 +18864900519 +13917924450 +18895698738 +13605917069 +18564358868 +15836430072 +13681120386 +18807876828 +13951519053 +18591389992 +15147626232 +15143968285 +15878748982 +13664511043 +18573073665 +13642428490 +13686611392 +15869261930 +15121251339 +18556282430 +15810276349 +13661729724 +18538438445 +13935693415 +13987086262 +13663737039 +13668014601 +13627944499 +15840689393 +18526582472 +13943013088 +18809031262 +15188375019 +18823938312 +13931105998 +15809816434 +15882578663 +15852734116 +18852377196 +13937174675 +18894339864 +15806090663 +15189251913 +13956218953 +15130971731 +13983968847 +13932534559 +15104802626 +15176811650 +18507992710 +18513008395 +18539933818 +13946215523 +15806661800 +15119490488 +15808270161 +13975441495 +18588318123 +18848628895 +18592289262 +18809687707 +18820060906 +13689284870 +18541448027 +13671876691 +18851275899 +13954479157 +18521791443 +18550324295 +15174868043 +18552541442 +15898510306 +15142678060 +15832529011 +13920422449 +18543418284 +13986217119 +15829876131 +18559395082 +13913625516 +18816925905 +13647738863 +18880434581 +15821264672 +15198807124 +15199513338 +18524484597 +18507162521 +18596206677 +18896138903 +18851210987 +15185896046 +18805722203 +18893746428 +18579204374 +13643843957 +18576697920 +13604040475 +13686808036 +18872613155 +13987117010 +13632410289 +15197162504 +18514703299 +13652484454 +13950989860 +13981077484 +13950775860 +13972878369 +15191661391 +15879793433 +15195769469 +18593336551 +18851757953 +15849121351 +15809123692 +15841158971 +15186704242 +13961034480 +18806322834 +13920438750 +15897846271 +18517265417 +15187438124 +15130178019 +13945061478 +13628653310 +15163133849 +15845915988 +15809779305 +18899373619 +18566051973 +13686743180 +15142038548 +18502232065 +18572712268 +18885027261 +18841533873 +18568928587 +15113439660 +13900661879 +18594448747 +13904115215 +13660794264 +13664651874 +15145773253 +13653519983 +15895326275 +18558403963 +13693716825 +13927016112 +18877761523 +18857672228 +15149077584 +18516170440 +18501527480 +18804323612 +13610084105 +18886597462 +13691762270 +18560196748 +18544825154 +13626188003 +13618890483 +18522637377 +13979804437 +13698215788 +15899346936 +13990561972 +13651741452 +18800336098 +15866433762 +13952453829 +18597976643 +18586713919 +15874411517 +13616790113 +18504222412 +18549365571 +18859829409 +13687100667 +15868854319 +18847934130 +13947792746 +13986707333 +15852112092 +13672514627 +18895389576 +13966095791 +13996053851 +18500401357 +18560946148 +15886669724 +18863337775 +18837993836 +13952726263 +13673982784 +15846894292 +13671346264 +15110431620 +15857094840 +13686875915 +13604568999 +13609375724 +13900783430 +18571476026 +13901970185 +18863763300 +18567122040 +15877461717 +18829396975 +13669559922 +13994069633 +15156921646 +13999224416 +13972346456 +13923183143 +15868136061 +15142522888 +15161285542 +18571048987 +18800295432 +15854439004 +18521299285 +18585732321 +15140285839 +15173838487 +15881920452 +18853800811 +15178018630 +18846049994 +15878246804 +13957149520 +13610991447 +13901503267 +13941398695 +15841050347 +13651457369 +15863995993 +15110097529 +18858586384 +18837328027 +18852973706 +18504566803 +13677002326 +13654628633 +15109803459 +15181685536 +15100009302 +13650143342 +15139157007 +18552551938 +13657019822 +13998187162 +18864049142 +18847657581 +13929610137 +18500672385 +18851561558 +13669634636 +18571632262 +13983759584 +18550812575 +13619520822 +15191539437 +15165890710 +15890016281 +13623096666 +18851791383 +15155456089 +13914315753 +13614674082 +18584250080 +13638826574 +15826122478 +13637082259 +18886739633 +13652770770 +15842432290 +15137425646 +15130555188 +15830128780 +13669018366 +18806450012 +15820513576 +13629069270 +13976280914 +15862360387 +13926820968 +18891672897 +15892566029 +13920955493 +13655091573 +13937052081 +13682591795 +15130464830 +15116381153 +18824969548 +18862565119 +18893964374 +18824337628 +15865971057 +15809375760 +15864128879 +13918017844 +15100598252 +15817554888 +18826476413 +18583832337 +18819667029 +15883707249 +18886829595 +18524650869 +15179220902 +15842367770 +18818677853 +15128510963 +18853168937 +18561225087 +13614598119 +18534628625 +13998594863 +18538660746 +15808986727 +13902579875 +13696812731 +18810614313 +13943588000 +18808500210 +18539305638 +15148664595 +13905621336 +15184830161 +13683105301 +18896483476 +13677879345 +13964247530 +15126870854 +13929857683 +18888193009 +18815180968 +15887343821 +18540997232 +13954908644 +15132393245 +13906973964 +18574277036 +13641295793 +13939524684 +18551628714 +18854490761 +13617109575 +15803082623 +13657138585 +18540179168 +13906283229 +13603320899 +13675925250 +18567419182 +13638896888 +13905323201 +18508778875 +18528355116 +15112660785 +18879242617 +13994294338 +18869232280 +13962673099 +15840951618 +18824423531 +15813833511 +15887142013 +15164632143 +15802375163 +13989693534 +13609653336 +13612684775 +15134215810 +13633721188 +18867666575 +15871714335 +15880800306 +18586711645 +15871822352 +13929270423 +13902974797 +13650645819 +18574808379 +13967688226 +18569896912 +15850851520 +13908864832 +13932232471 +15880585653 +18573825938 +18586072322 +13670837899 +15155323412 +13607309162 +18525540946 +13605944101 +18808058533 +18520514790 +13905184550 +18898209417 +13638942724 +13685453682 +18833798818 +13668806869 +18899732505 +15150483535 +13628501541 +15127654500 +13612130874 +15860578991 +18578336883 +18597444722 +18897933713 +18549769736 +18577337892 +13635255540 +18526328240 +15182679703 +18842415943 +18809314535 +15894313273 +18820502659 +13671978137 +18879785141 +13645228440 +15109368445 +15807857344 +15827267728 +13918255569 +18573634646 +13650772182 +15162849967 +18864348160 +15887524644 +13962849493 +18546523109 +13921324001 +15876375896 +15857105145 +13672181346 +18811583286 +15877025808 +13699915585 +13682514525 +13971183428 +15198610108 +15121945563 +13689450473 +13615447974 +18874653356 +18825474004 +13998018792 +18516298434 +15154993108 +15864202332 +18863512649 +18595822416 +18887383932 +13657603413 +15851166056 +13600611922 +18501135080 +18873852957 +13962562828 +18838120626 +15156322266 +15879772852 +15817636703 +13656293907 +18579169273 +18512757167 +15164508623 +13913364911 +15842711238 +15161613790 +18871407910 +13688851061 +15854241393 +18803697104 +15840112653 +15117814268 +15123634152 +15863166604 +15899655756 +13640360229 +13630482763 +13616889376 +13941651068 +18831820793 +15814927477 +18594162883 +13919135399 +15845696690 +13974727388 +13937752073 +13602268960 +13627705108 +13608405466 +13906435851 +13939144270 +13638680299 +18567053040 +15184400355 +13607887143 +15880723251 +13920699377 +18542197486 +15150786546 +18588336285 +15863864696 +15831503310 +13601182234 +15118652965 +15821434844 +18572380543 +15840266853 +15858319207 +15857480993 +15849499039 +13665260133 +13601481147 +13952597268 +18889990902 +13683769922 +15101681727 +15165658978 +13988578995 +18502658230 +13664324973 +18578520928 +18588178965 +13913131883 +15133095837 +15129025086 +18898265959 +15179789705 +15880033693 +18551722450 +13988397431 +18572825632 +15199501471 +18586149374 +15804434671 +18802033889 +18568071533 +18850669264 +15167911579 +15190401552 +13650829537 +15151280379 +15164951020 +13938613943 +18878317394 +13933758697 +13634305182 +15849734838 +15814003682 +13669926167 +18538493351 +13670569423 +13635079184 +18526030986 +13904383812 +13649466928 +15188104779 +13686596696 +18591876269 +18504170123 +18813967295 +18533103208 +18846231886 +18846364418 +15824514517 +15859070686 +15176506120 +13902592449 +15170373772 +15177462816 +15152504789 +13905062289 +18858214774 +15876897206 +15852469124 +15897309852 +13959696985 +18817608856 +18861698356 +15187671734 +18894192007 +18871199502 +13970884962 +13991094509 +15157223329 +15856844938 +18802419426 +15894975595 +15874715143 +15833649957 +13634653579 +18855860785 +13915834737 +13951745762 +15854487075 +13623157435 +13604457816 +18804711489 +18530458436 +18528093015 +15165171204 +13907181533 +15813652090 +18877400502 +18568238488 +13679103488 +15137235641 +15175511664 +13617098744 +18540582658 +18846087997 +15115016481 +18831023185 +15816585036 +18566000862 +13637243662 +15166848468 +15183342119 +13939205291 +15107342969 +15809040757 +15854881463 +13664631900 +18826423519 +13644232136 +13914686377 +13930323011 +18869232003 +15812483776 +13683197202 +18840073039 +13682049337 +13620192728 +13697511937 +18552506267 +18557422613 +13970628549 +18857092415 +13956322730 +13972917023 +13919853611 +13957443765 +15163724430 +13661808802 +18531274188 +15151018188 +13938186115 +13693301318 +15856875385 +13913485347 +15822034309 +13903093299 +15802051617 +13948086260 +18862970533 +18820218125 +18876593967 +18538590457 +15149074328 +15843912403 +15110045706 +15172071187 +18800402750 +13904235268 +18817307316 +15852987397 +18506180068 +15116183816 +18521021310 +18524002199 +18559524347 +15160449002 +15164464397 +15815980055 +18817823445 +18833838805 +13952965415 +13620508083 +13929195231 +13621452934 +13916408176 +15870745348 +15199167555 +15895770074 +15872292773 +13923907159 +13901673381 +13681041673 +13961569832 +13906043178 +13931656731 +15879345600 +18890487492 +15150047865 +15814447898 +13654403355 +13658822816 +15812665155 +15196473818 +18595396104 +15188594323 +15819761699 +15800324434 +13995140861 +18838985702 +13910929553 +18510461550 +18802370113 +18586507887 +13904839401 +15166814191 +15867331696 +13918743216 +15109415824 +13934658398 +18874047978 +13685834910 +15810162162 +15162520851 +13911127680 +18586715204 +18548185273 +18807686691 +18510720710 +13917039060 +13656794097 +15807329206 +15803716467 +18811265902 +18584560298 +15152458320 +13644529559 +13940060634 +13916818553 +18827369353 +13984080267 +13656064308 +13613059203 +15891378006 +13901249901 +18895355440 +15140297937 +18591076203 +15805829363 +13969009941 +13655776559 +18883690181 +15826103757 +18861347792 +15821048384 +18537459165 +18895085976 +15111008978 +18850286109 +13955157319 +15879504462 +18826836681 +15820921732 +15142207660 +13695350247 +13609554210 +13615972484 +15880303556 +18834440731 +18536434533 +15847262940 +15806769392 +15871321930 +15821181684 +18521678419 +18856001618 +15151510696 +15150231455 +13997300441 +18520480347 +18570290570 +15146032924 +13600046798 +18819994314 +13954644957 +15874688070 +15107098522 +13659822587 +18567198036 +13686447879 +13947157754 +15183707430 +13679197883 +15155037363 +18860473898 +13930170157 +18552943979 +15811897440 +13606426265 +18537402365 +13629954335 +15152930232 +18876964405 +18560608973 +15130295040 +18549241073 +13656230969 +18579687139 +13998490105 +15135210095 +15113862753 +13668747450 +13940959375 +18516105412 +13607960114 +15108216918 +15812220577 +13910484112 +15191662878 +13925615069 +15170404516 +18555505949 +18882523129 +18858389421 +15144042029 +18584372988 +18823603834 +15194323746 +18884239796 +13965004486 +13974757560 +18504130381 +15867438821 +15178042444 +13966120404 +13638691139 +15805927628 +18815250468 +15878750465 +13632987744 +13625064645 +18510002900 +15856463081 +15868344108 +18855420718 +18854721924 +13946891577 +13940036026 +15169922039 +18858187398 +13619216874 +15899466553 +15102150397 +18594665509 +15800850899 +15101840111 +15125454995 +13997881473 +13919136191 +13667804752 +18552853582 +15180843013 +18853119929 +13626083736 +15824510057 +18804607047 +15808039401 +13666289324 +15101229700 +18532105133 +13946034931 +13676514628 +15156177047 +18810691566 +15191813358 +18538180077 +18507943079 +13605169922 +15816771905 +18585751317 +18566368502 +15873298868 +13666357977 +13960634172 +18568234119 +13945089723 +18849187326 +13642372282 +13992745770 +18594863080 +18568821524 +15809182134 +18861872619 +18882351979 +18829661618 +18552487392 +18885910966 +13635587013 +15117700945 +13911628929 +18517847390 +13920799954 +13910977979 +15137198827 +18569068900 +15130310762 +13982261465 +13675251047 +18545085969 +15131151811 +13632590651 +18835859451 +15132587520 +13612543488 +13634203650 +18848649326 +15182527453 +15845947347 +18871423868 +18523960306 +18517268755 +13631498389 +18830734558 +13610947484 +18541540692 +18880715838 +13631949966 +18863155341 +15883471181 +13964385709 +15843488401 +18592825677 +18815270194 +18823246681 +18860790101 +15878326841 +18877727052 +18524266614 +18567904822 +18869624947 +13661491636 +15159005198 +18856015476 +15828961117 +18842674110 +18514338427 +13685202847 +15172182123 +13658333938 +13987508444 +15899519839 +18865389782 +15849759983 +18567620419 +13683560251 +15125586254 +18811516172 +18857657942 +15828322495 +13687324878 +15118497394 +13699857412 +18801581733 +18833551674 +13965765059 +15851043776 +15144031020 +13922882831 +15151661657 +15110642708 +13630986661 +13920654428 +18597900070 +18862124340 +13923134771 +18853942353 +13974842432 +13658052541 +13632493300 +13614585758 +13951986956 +15134191650 +18873710182 +13900871255 +13982499072 +15806841168 +15170947085 +15846214608 +18562459936 +15872674080 +18835948458 +13916652685 +13926574739 +18884625628 +13676278534 +18804742654 +15121031922 +13993167323 +18861371948 +18550074975 +15872244412 +13957101229 +15868147269 +15192728154 +13919752034 +18569018887 +15872232359 +18873796090 +15164739485 +15801328943 +18550333414 +15840448583 +13608281879 +15807272375 +13976573514 +13630940214 +15147025937 +15184971454 +15127347943 +18511963404 +15157130896 +18531369385 +13677739089 +13931344801 +15190261265 +13992118424 +15135802574 +18540117993 +18848529716 +13692004310 +13954745522 +18820033273 +13941138903 +18881568685 +15860977864 +13955090865 +13932267125 +18876854298 +13999933786 +18879316936 +13901202010 +15889822098 +13915149847 +15804574729 +13938430650 +15897495245 +18540852375 +15854951033 +18599799192 +15122404757 +18884838371 +15833862735 +18579585332 +15841174850 +15846984045 +13663135795 +13976860645 +18502762060 +18837505781 +15127715313 +13965308644 +13988645315 +13672159023 +15144247692 +18865239238 +15127750829 +15881670666 +13620152759 +13901907270 +13626333234 +18823524204 +15864289514 +15140243397 +15123182178 +18852581250 +18594201775 +13618435366 +18530832102 +15187910077 +13919620801 +13671877397 +18580930640 +18867251138 +18577719826 +13980786951 +15145550794 +13673095914 +15146256835 +15809003721 +15818537696 +15818145911 +15803621212 +15876059944 +18553164741 +18823410345 +15828586786 +13682839114 +15875939711 +18835965760 +18523862463 +15884755838 +15117257323 +18594556175 +13641775392 +15154620574 +18886453358 +18801059708 +13634528898 +15815725485 +13994348254 +15842690308 +18584234008 +13653405588 +18872809152 +13998427341 +15180738350 +13946601871 +13651328040 +15838099339 +18567506863 +15114708064 +18500371961 +18855179810 +13926566850 +13917140328 +13611799211 +13689343267 +18570431243 +18584687998 +15116197001 +15183269820 +18847292104 +15165248683 +13635010734 +13910022590 +13942522540 +15868374064 +18809775069 +13631750934 +18586669132 +18588422827 +13620771068 +15101688765 +15897215120 +13635363757 +13602263055 +13665127917 +18537003008 +18539027272 +18595017855 +18811273485 +18805256159 +18866030535 +18800651716 +15835585496 +15807261442 +18838097179 +18564539202 +18510308445 +18554137711 +13668560124 +13991393027 +13933680466 +15862526541 +15852939409 +18516159217 +15115648817 +15824276870 +18887214352 +13650613177 +18596094669 +15834396295 +15131349051 +13659179865 +15857949987 +15898467599 +15842972585 +18838599749 +18564608147 +13689793432 +13904623097 +15870064038 +18580863350 +15158852327 +13640560195 +18583929254 +15810153348 +18566878328 +13637274493 +15826984025 +18894370376 +18864903130 +15878228596 +15895677601 +15812230549 +13606756084 +15198631220 +18518674875 +15142439140 +15872240485 +18569509775 +15820013889 +13646195069 +18803652330 +18831888918 +18527762162 +18533310901 +15884181903 +15165045577 +15192966561 +18807371180 +18598777067 +13625153082 +18865572942 +18852879142 +13991282786 +15899719954 +15127109215 +15829152572 +18885112445 +15814258113 +15817462067 +13946383012 +15823476123 +13645757984 +18542067966 +13698068027 +18500470246 +18894985721 +13963680058 +13674970854 +13915058335 +13941554491 +18850335750 +15166094746 +18883645740 +13905413393 +13650134889 +13698941151 +18541568573 +15133540595 +13670522152 +13984716193 +18599393331 +13653371770 +15122082904 +13635424092 +13944247130 +13945287275 +15111831141 +13961159787 +15849733707 +18571151232 +15857790011 +18578678051 +18899889555 +13605543869 +15837597525 +15110382113 +15898775588 +13649863089 +18557266511 +13677911651 +13908570534 +18897495550 +15841340589 +18500722796 +13655594125 +15843169085 +13955634033 +13935215069 +18506092865 +15866882900 +18896236422 +15816243627 +13994280008 +15112075902 +13693543814 +13957441717 +15867309751 +18518536798 +18521019665 +18561787987 +18578817694 +15159407323 +15125377658 +18874522143 +18879121296 +15159974409 +18579889528 +13661110728 +13650705188 +13681595934 +13904119632 +15150573963 +15804504272 +15151099039 +15194736693 +15815955867 +15882992924 +13682775752 +13619453014 +13698257141 +18504964065 +18835603139 +18841749747 +18874877070 +15145924317 +13971266984 +18530675009 +13997351645 +18882811228 +18548595842 +18587098304 +13905925200 +13617005897 +15853135407 +15149971403 +13927216878 +15112461666 +13609919355 +13978247142 +15197976419 +18559028160 +13941061373 +15178621200 +13688170098 +18832923828 +15812265891 +13690356248 +15188039747 +13996875311 +13900888565 +18860137621 +13602247506 +18554132243 +13988768802 +13629006009 +15151455834 +18543864205 +18805900540 +18596912333 +13982605857 +15119394306 +18847962893 +13642358606 +15894264999 +15171011499 +18843559344 +15167980480 +13626505972 +15172858857 +13616947039 +18894654539 +15193169143 +13931400791 +13671890440 +15878867678 +15129517332 +13911434618 +13922664807 +15820858356 +15169083676 +15809032804 +18887076836 +18851001350 +18508229323 +18868242514 +18579405498 +13927857383 +15100071248 +15118709061 +15866584638 +18849784653 +13643635538 +18883746280 +15189990878 +18541050315 +18540226284 +13668221479 +15115832371 +13926134032 +13968868529 +18820699292 +13607364367 +15855568440 +18570195425 +18541407982 +18890583877 +18833200294 +18530267836 +15137034844 +13667929095 +13615438272 +15877177495 +18863953066 +15879904867 +15885407127 +18519505774 +13924786063 +18579644936 +15114126405 +18892261878 +13997820730 +13687579295 +13909222978 +15847582192 +15805962690 +18803254385 +18832812204 +13612461741 +15830817569 +13982282756 +15895024499 +13631731623 +18581470260 +18865890500 +13672304367 +18897281731 +15895636965 +13915277854 +18555369356 +13946386330 +18549312348 +13678501247 +18881018415 +13945540923 +13960482042 +15122441905 +13631865709 +15880375739 +18515034023 +13973930161 +18839318414 +15167600000 +15828073649 +15811731012 +15869916428 +18885190690 +18562300358 +15199981016 +18865061823 +18514255326 +15131639555 +13618693497 +15863662547 +18591295496 +15840338893 +13978176570 +18552341578 +18584620026 +13679861375 +15125143978 +15131309712 +13698644249 +13950017226 +15166033679 +18847396468 +13637967377 +13994258999 +15177457241 +18869907614 +18894445606 +13973733729 +15871548586 +13665724654 +15135655787 +18588868481 +13685649222 +18503573518 +15854257088 +18556946177 +13698001407 +13698302382 +18577885849 +13924964011 +18543250283 +15159449926 +13664449747 +15843020699 +15884859229 +18846158113 +13912549240 +15809172968 +13685055335 +15138041433 +15123452721 +13964179167 +15115264150 +15866871187 +18810100058 +18805682453 +15195673655 +13963791904 +18882889155 +18819935790 +15149134648 +13921352533 +18892334106 +18521281388 +15195873979 +13952494483 +15171905764 +15828805201 +18556190283 +13687119593 +13902773863 +18513635743 +15818762620 +15111538935 +18547168437 +13951817417 +18518094798 +13994730872 +18504376620 +13640295083 +18523001050 +13915494392 +15174783101 +15142078001 +15809933775 +18803084889 +15846472355 +13669857342 +18887109559 +18593604467 +13977659706 +15132600034 +18864882235 +18526549545 +15851422434 +15164030984 +18810189001 +18580219272 +15161210192 +18896462911 +18570046498 +18544905377 +13674979640 +13664943224 +18548370028 +15870398060 +15858793651 +18565833707 +15836537330 +18802375799 +18812226515 +18813515253 +13643033313 +13602869840 +18519507838 +15106050466 +13918691281 +15149402032 +18527082882 +13975134466 +15898179769 +18802833943 +13622168564 +13956146131 +13612280975 +13940095445 +18875356962 +15171164988 +15823321344 +13910176080 +18538457497 +15844980274 +15800833878 +13671516483 +15158816084 +15128875503 +15180750437 +18579993218 +15857838744 +15870440695 +13999980490 +13600917711 +13973945559 +15846217037 +18810081356 +13939051183 +18865065667 +15860399410 +13954883529 +13696203329 +13671054382 +15896868467 +15194874650 +13961573746 +15128413560 +13955222382 +13619099202 +18829969293 +13638777578 +18828495515 +13612749025 +15828453642 +13966578366 +18557591763 +18500900487 +18899235090 +13605779294 +15194626126 +18832042821 +18864448704 +15179945854 +15126364718 +13907315163 +13628728260 +15198406645 +18875650753 +15196662292 +15847325015 +13655108031 +15856758853 +18865075040 +15129714515 +18837693972 +13972638804 +13673521643 +15143079764 +13974046944 +18816467480 +18549902582 +15181089733 +15857616903 +13910872749 +13997145254 +18587073085 +15863170026 +18825507832 +15117243664 +18574870210 +15114836481 +13979318986 +13612604516 +18897573262 +13692824044 +18578726306 +13932298056 +18556121631 +18873315760 +15107790382 +15816765044 +13998249702 +18810709945 +18898544193 +15847598108 +15172870715 +18892676435 +18500704447 +18525822760 +13956392486 +15189785102 +18501146396 +15850680755 +15104293227 +18817048599 +15136893797 +15853093302 +15187460332 +15823533001 +18528013039 +15155389222 +13698664978 +13654925815 +13610400138 +15125349656 +18525132670 +15132748147 +18508863936 +18877249640 +13901038041 +13689177145 +18598844253 +18810186874 +18587539077 +15186070086 +13671960486 +15855612908 +13679600565 +18844149477 +18847463026 +13984571935 +15826633602 +18565704903 +15194427998 +18579482243 +18548972904 +18550592897 +15119688919 +18557171340 +13632063287 +15198662248 +13621816983 +18561843914 +15134262585 +13903779486 +18515431583 +13942597411 +15175122059 +18544256263 +13632181266 +15802826859 +13902507238 +13925326033 +18810535893 +15152453830 +13628256629 +18537445891 +18801999074 +13678488106 +15173837523 +15179825612 +15163596931 +13662898942 +13917918477 +18527654699 +18549617733 +15154119450 +15898053853 +15867926323 +13624320755 +13931514618 +13913589108 +13971375383 +13648906253 +13610392950 +13999046684 +18811578320 +15109047914 +18872648616 +13618252534 +18826702425 +15811684504 +18850950986 +15196042099 +13667011992 +15167825109 +15172739813 +15142547409 +18824468192 +13954398079 +15125039503 +18595501451 +13681108431 +13638224523 +18877908087 +15100199018 +18563046709 +18571505632 +18815459550 +18885340656 +18540573801 +13938876002 +13699053131 +15143623135 +15178878038 +13953985295 +18540014418 +13958548591 +15120170304 +13912139663 +18565728593 +15136455914 +15106284869 +18886222729 +18899795814 +15126084539 +13926155939 +18873999407 +18870366135 +15838251379 +15896197567 +13979516901 +13614212815 +18893282348 +15193076245 +18598060622 +18872889166 +13697789330 +18838109045 +15178409020 +18810506234 +15197171340 +18542205518 +13653314502 +13944527040 +18505379898 +18513246093 +18855734795 +13983206810 +13984624734 +18864526830 +13626525243 +13665676651 +18884108582 +13952641677 +18579822737 +15118652310 +15143588686 +18514563297 +18825516713 +13686524830 +18893089747 +18841519666 +13915949508 +15115441154 +15835264661 +13937452841 +13940062108 +18889779623 +13920843492 +13607029648 +15879794222 +18511454629 +15170778080 +15864823328 +18875292152 +13603728873 +15855226199 +13660535960 +15109061860 +15887049875 +13693274323 +15807089734 +15167716054 +18892856704 +18533557924 +15817857562 +15177443619 +13686815523 +13961150608 +15877771188 +13620285084 +13647884722 +15181150270 +13687063209 +15118507067 +13645054319 +13924182524 +18533715062 +15873791838 +13908120243 +13607754052 +15842554765 +18502618918 +18550702751 +15888544049 +13600520208 +18822609287 +18569785119 +13974803686 +15132080674 +13642672044 +15828194165 +18808347519 +15154138835 +15842603754 +15163068378 +18535531315 +18825084078 +15841883204 +13904681036 +15150158510 +18526695760 +13674992264 +13694748820 +13921269648 +15806774735 +15155992789 +15140595872 +13682445708 +18578263946 +13959926340 +13932209282 +13645828273 +13698444785 +15174379052 +13948159464 +13624609564 +13683803495 +13663585377 +15882328391 +18806840402 +18509846055 +15887692502 +15179626079 +13966979544 +18806061889 +15164803814 +13670158560 +15815085113 +15124815699 +15820646660 +15192888273 +15161995574 +15803004752 +15100031122 +18873942850 +18551554365 +13673821111 +13966220166 +15107690385 +15837945415 +18811841560 +15802569807 +18842474387 +18543682362 +18544628385 +18552393323 +15124957399 +13676005686 +15888291455 +18535686917 +18838363870 +15180745583 +15843498582 +13653157920 +18830847169 +15852194459 +15848897121 +18551451328 +13655622770 +18512410656 +13943620974 +18840368516 +15809198118 +18593109340 +15195360339 +13996497253 +13644704313 +18556386918 +18861013431 +15132016327 +13915939063 +18840174804 +15848759453 +15861445852 +18840655483 +13939411909 +15197390968 +18843433579 +15845368398 +18581821456 +18802088301 +15106507065 +13664267939 +18501625113 +13658125951 +13910663728 +15184960870 +18872283793 +15814875980 +15864225700 +18879846539 +13945614218 +18507713787 +15830272023 +18826192279 +18531815301 +15114893644 +15841504015 +13975011271 +13979955179 +18500681904 +13977052184 +13955572000 +13906708471 +13648830846 +15872821296 +18553910797 +15188004449 +15154662461 +15187910201 +13684336954 +18592112426 +18549987588 +13652799483 +15194872575 +13935654495 +13659840391 +15835706415 +18848204846 +18831791267 +15890319737 +13952759701 +18848423923 +13964351669 +13651545839 +15152132764 +15160501597 +13685339814 +15880783016 +13984769826 +13927913227 +15815414123 +13641557618 +13695505729 +18578369543 +15188745458 +15875998845 +13905421307 +18543423847 +13687123975 +13947955772 +15116028810 +13632910264 +18843805449 +15164899240 +15123519416 +15877760834 +13997056947 +13974571539 +13686717758 +13690265024 +18880131632 +18828834061 +15107432682 +15112885969 +15167015706 +15874687674 +13690018692 +13933335385 +15845706349 +13963006194 +13930426623 +15141481491 +18584807011 +13958103327 +15174260623 +15896016813 +18538768273 +15884391875 +13991566909 +18538447473 +13601532554 +13963803568 +13641245260 +15855016793 +18527363412 +13978374461 +13625027106 +15101414046 +13673122927 +13956604181 +15120660944 +18599832640 +13950009130 +15825000570 +13980394255 +18857292547 +15820773406 +15116994542 +18564081268 +13602461898 +15831629901 +18501583186 +13653173958 +15130478427 +18802778131 +13930890572 +13681830020 +13938253179 +15141238513 +13680792611 +15153303315 +18892122340 +15130449758 +18873377186 +18556733155 +18543474133 +18835639961 +13650583915 +18811517760 +15826518855 +13652507753 +13983670518 +13989675775 +13918978509 +15149814437 +15167448103 +13686086004 +13914802881 +18801459056 +13649241132 +15105141215 +18849693428 +15850299041 +13602381842 +18894645966 +13980924165 +15864841774 +18541257331 +13698376745 +15842829698 +15886514111 +13997747627 +18891708345 +13639088442 +18868633850 +13673378346 +15195731942 +15844183507 +13621925331 +18552656054 +18579246591 +15168013779 +13671812189 +15194565912 +18892676738 +13909673830 +18857814666 +13917062978 +13684697489 +15853662724 +15117170628 +13981399361 +18533448964 +13661481806 +18824140448 +18595534174 +18591363466 +13605284036 +18527014608 +15191613367 +13972562520 +13949605064 +18883754597 +13622537971 +18500057524 +18892530760 +18586824534 +15843340558 +13941722924 +18865805607 +15175347337 +13613172069 +18518125500 +18851985958 +15817592274 +15187468599 +13997057862 +15813845970 +15808497849 +13965543215 +18543363942 +15846492784 +15105800257 +18534013859 +13928607436 +15176639335 +18536099091 +13920994085 +13968872105 +15885076074 +13979037916 +15188516985 +18892079483 +15805845347 +15123109902 +13694989863 +13611732654 +15115041370 +15886736516 +13624300250 +15867565279 +18880167701 +18598459533 +15840415463 +13992995490 +15144641868 +13953547491 +13675861540 +18526842712 +15835957640 +18814623436 +15864632509 +18893489172 +15891953195 +15122283784 +18551774634 +13651974515 +13983832380 +13909491753 +13628112910 +13657305435 +13910419777 +18588866809 +15854962453 +13691970666 +13650981547 +18854747394 +13970011936 +13647265112 +15111348116 +15138284667 +13679905289 +18517115079 +18511038964 +15179444839 +13604071613 +15848427451 +18540713852 +13902936482 +18542925151 +15177791107 +13607826296 +18855254105 +18815991363 +13632948210 +18547800560 +18853298673 +15129690019 +18522110384 +13671224856 +13955188780 +15136045764 +15882663391 +18895617813 +15889916321 +18596178361 +15822171723 +18855015871 +15181679534 +15863305942 +18501149137 +18836961813 +13607473167 +13610295386 +18816159454 +18595877633 +15882556488 +13649752035 +18556573601 +15842448972 +15835356048 +18535622328 +18567294772 +15825346601 +13669997361 +18538012137 +13626104616 +15833522676 +15143044963 +18585079583 +13924702393 +18545687273 +13952338333 +13963544934 +15866565407 +18555484584 +15140980186 +15148472857 +15885101292 +18551221323 +18582788391 +13928469744 +15854535900 +18894309959 +15861754828 +15153096256 +13635871788 +18871574258 +18568194193 +15160003357 +18812570023 +15832271491 +18515039740 +13672785095 +15186565792 +13909037520 +13955716942 +13970062832 +18828704999 +18842581784 +15819327797 +15198820212 +15839264444 +13902485483 +18842102138 +15129696931 +15803597836 +18869715310 +13965946700 +13984306537 +15125928501 +18503365223 +15893752611 +18534061162 +18831203666 +18525698443 +18800070896 +18872887127 +18803883007 +18825745659 +15107286736 +13614740011 +18883427245 +15173299469 +15807849609 +18831499570 +13620718123 +15178222586 +18880792109 +18860942980 +18529089271 +18857417238 +18592791101 +15879486656 +18814591699 +13633428916 +13985208224 +13687904147 +15878805835 +13637461613 +13908500448 +15884594793 +18541582387 +13674675477 +18509933590 +15180136850 +15842822350 +13995525328 +18816550879 +18872990051 +18530139754 +13612273928 +15837169942 +15813159323 +13605079485 +15817392206 +13697212335 +15842766486 +15851412664 +18534939176 +18525120858 +13923887691 +18591069946 +18528350103 +13694353727 +13692490342 +15143568683 +18517829699 +18597000312 +13945584918 +15125345040 +18515545177 +18596683679 +18574728509 +13605061856 +15872626389 +15193193966 +13633832927 +15172368206 +18864753953 +13925941578 +18513114161 +18568787305 +13902460888 +15802994147 +18839687444 +15853225243 +18527325858 +15164251884 +18595716000 +18857930731 +18554124280 +13974142155 +13677131730 +18523513670 +13609494031 +15109628502 +15183379157 +18887279376 +18553865913 +15157565434 +15163715497 +18878531807 +18884982857 +13609738198 +18549590494 +18822598098 +15107254334 +18592415816 +18840343696 +15841010600 +13667283490 +15126577855 +15178793107 +13673404494 +13610224211 +15142991895 +18853061928 +13938787594 +13945695372 +13931933757 +18802473852 +15175667553 +15183614302 +18513849563 +13637967778 +13625635427 +15803229282 +15174429568 +13613805437 +13923606305 +13610531286 +13658657206 +15172671944 +18823150549 +15193243195 +15878435924 +18557034855 +18533326084 +13983328914 +18815325523 +18502360002 +13947744998 +18547600635 +13907608294 +13611488510 +18527268628 +15141350409 +15840941847 +13654645062 +13613129940 +15872531930 +18809947314 +15838359068 +13916470374 +15130247803 +15194418749 +18512376937 +15188337824 +15118129350 +18505689029 +18523403950 +15845112130 +15173705694 +18572567924 +13620356519 +13600813716 +13989652674 +15808892326 +15122201195 +18587269692 +13616291088 +15861529725 +18809961763 +18822302924 +15839355402 +15896557556 +13674869596 +18868389821 +13607762583 +13948983622 +18555168821 +15154887171 +15112574940 +15147211765 +13940819981 +15827703612 +15880493385 +18842210305 +13998727747 +13659361592 +18548888594 +18816018536 +15812760661 +18801961197 +18582452442 +13652219579 +15150807075 +13648856240 +13687426553 +13948872337 +15833787924 +15115096506 +18818357412 +13944475355 +13964986433 +13645589195 +15101146840 +15180880505 +18891165448 +13641156707 +18511122400 +13679821114 +18828346539 +18890216847 +18896241061 +15187634844 +15867541698 +15890817106 +15103829731 +15804733438 +15898693655 +18808382933 +15166841337 +13933713836 +18524338254 +13942236221 +18896084337 +18836756373 +13971392858 +15125369169 +13646207863 +15816386614 +18843534756 +18813525579 +15114288975 +18831130434 +15866007935 +18578695363 +15181794229 +18560374411 +18800734060 +13954537308 +13970935012 +13952689415 +13969993598 +13941027018 +18838589694 +15133490941 +15837095055 +15877620443 +15186862669 +15887441426 +15803684570 +13614227142 +18864903461 +13657424773 +18531266461 +15181592978 +15860293734 +18894775018 +18891964756 +13641914628 +15831962256 +15803247377 +15124753876 +13606564120 +13948449837 +15891593854 +18883867722 +13643713046 +15871083722 +15160182672 +13919237286 +15889211938 +15160917879 +15117328589 +15841724435 +18843483664 +18526821175 +18598283383 +13690184364 +13977007086 +13902856898 +15850649222 +15861935315 +18834367789 +15185887220 +15100591295 +15850663237 +15130359874 +13995712717 +15885891672 +13947235612 +15197497104 +18580038699 +15862212208 +15196342404 +15100848164 +13603223680 +18893410350 +15129878461 +15876053569 +18554301626 +18587370879 +18507889312 +18838327670 +15864366240 +15102995186 +18858884219 +13694467551 +15848491693 +18844882076 +13988046681 +18558433902 +13917629792 +18838782865 +18897234544 +18882525454 +18521916312 +13607793509 +18564627764 +18582890831 +15827386281 +13615454892 +18598921788 +15179344300 +18828966104 +18551540622 +18565432147 +18594698337 +18878526231 +18883092760 +15880799074 +15802313963 +13668980820 +15191517172 +13605435292 +18883266418 +18880213642 +18818864846 +18809301086 +15812545725 +18511398599 +13938130886 +15805267785 +15115713144 +13613027431 +18569256678 +13937495288 +15873438154 +18845167520 +15865816478 +18577282324 +18845471689 +15839949635 +13993907773 +13940512296 +13910569535 +15866162936 +15160555989 +13975160032 +18506227928 +13998385138 +18567740605 +13682781333 +18502084137 +18512797355 +18503400796 +15148165179 +18510708760 +13997088883 +18824752162 +18598593570 +18839772072 +18555695463 +13915418510 +13914792291 +13949862134 +13601838806 +13672177270 +15183365564 +13615934664 +18583572601 +15843376279 +18877563924 +18899174923 +18838589025 +15874993620 +13697436779 +18581989812 +13645675885 +13670390906 +15878562946 +18590453775 +18822461642 +15114871125 +13921632386 +15175733592 +15887153896 +15189048348 +18525788062 +13950149155 +13617940209 +18570776423 +13622151107 +13908117665 +15805959252 +18569071712 +15123321441 +13914105532 +18850946802 +13693628061 +15824567730 +13602821812 +15131307065 +18593938580 +13662700394 +15181140051 +18509899231 +13642589855 +18842106913 +15199773494 +18876964401 +15833583486 +15120835524 +18547427671 +13931616316 +13926555058 +18569276697 +13681850389 +18847028777 +15108761416 +15816909866 +18589709324 +18554122310 +13694347705 +13909040136 +13649324157 +18891371034 +15891130328 +15125379568 +13693051789 +18841385641 +18802834107 +15892645444 +18569494582 +13689780013 +18879393971 +13905867398 +18841727235 +15883082854 +13926558568 +13659200971 +15173495565 +15176342543 +13672978764 +15106441226 +15172837761 +13932506444 +13956858491 +18522703625 +13948076938 +13622681737 +13945729926 +15849895084 +13636425404 +15835115217 +18865556169 +13618557736 +18519259749 +13695859778 +13654207413 +15185766106 +15120642517 +13990606368 +15145881368 +18510325500 +15110755953 +13617925951 +15101627088 +13948494664 +15871237597 +18822634529 +18815661892 +18585935674 +18595281976 +15124359445 +13977502033 +13927774154 +13631778877 +13956535608 +18556311129 +13944608310 +13613887112 +13935763824 +15122192815 +13642877833 +13972234907 +13907401199 +13977764439 +13650399946 +15151411956 +13970057962 +18507998813 +18857075902 +13933957997 +18896766855 +13642390859 +18506576270 +13962825842 +13902342864 +18566009384 +18896420273 +15871513983 +18811320429 +13650757309 +18882080044 +13619610285 +18514757155 +15856978598 +15167267007 +18555843393 +15193515163 +18844487486 +15837743986 +18842472262 +18800087267 +18508557869 +15164895498 +15863296361 +15188736877 +18500039672 +18562379525 +13631172970 +18857444993 +15159454840 +18540896905 +13621894192 +15164836370 +15107531289 +13901543154 +13944376096 +18531285664 +15186968402 +13676816984 +15108955261 +13939318435 +13608561492 +13637993725 +18892404493 +18828610620 +18541939629 +18841930977 +13675421910 +13688484308 +13934337617 +15877424515 +18803342707 +15103656833 +15834947125 +18869083956 +13967227791 +15118305339 +13680868234 +18523452062 +15896031907 +15839766692 +18515472921 +13907793878 +13671936719 +13900861697 +18862907476 +13638025628 +18543060380 +15878883770 +18886364777 +13639264407 +18591674625 +18853570911 +15841790221 +13662703555 +13671720432 +18824418262 +15195307980 +15830701991 +18524297353 +15814588561 +18842514666 +15875007926 +15109353345 +15868952950 +15129158887 +18804007319 +18872226110 +18581583098 +15825240971 +15145616034 +15156461868 +18892468241 +13622735711 +13931837794 +15833911491 +13648108965 +15158659974 +18826108093 +18559722707 +13638561951 +15893786492 +18871101808 +15130484963 +18884095255 +18876618763 +15197819846 +15803908583 +18807196728 +18898671121 +15837346455 +18517048347 +13688551702 +15183391352 +15143203065 +18869748357 +18805294028 +15869902419 +15834526446 +13611840067 +15817424592 +18861385129 +13627455859 +18856839948 +13976182519 +15187310240 +18886017768 +13660213960 +18580924431 +18870425373 +15838267222 +13695453580 +15850846239 +13976194659 +15152429480 +13952112358 +15188580647 +13639269845 +15849921587 +18510910663 +15887907272 +15838260861 +15859747037 +15897306841 +13659051010 +15187425826 +13909823011 +15834401863 +13688226739 +15899671949 +13671771776 +13970949682 +18538908335 +18851881012 +15880897672 +15872390747 +13969586301 +18846535993 +15142137343 +15876773538 +18880874701 +18852899528 +18801575391 +13900941949 +15820296052 +18507670611 +15123572737 +15199584662 +18854524487 +15878193922 +15803673119 +15813555981 +15873233114 +18873985610 +15145302381 +13983146077 +15857337881 +13665681129 +15187100114 +13646050254 +15166699891 +13900589238 +18888373196 +18873603157 +18512667603 +13953071343 +18843507779 +13698110803 +13630961494 +15145501665 +15115734616 +15818682232 +13939744518 +13614760977 +15804029372 +15114489796 +13943518884 +15198132051 +18580529148 +13939897787 +13683796990 +15188987965 +15883660985 +15112456572 +18548818953 +13938685965 +15850266728 +13963118081 +18542811452 +18535986281 +13921178647 +15148476897 +15874338424 +15852650024 +15187765073 +15127905343 +15182489089 +15831895557 +18530011016 +15171167189 +18894062030 +18591292222 +13670846495 +13916789320 +13648456809 +15191445396 +18801284069 +13927371553 +18516739932 +15882858270 +13674225659 +13993106616 +13657056267 +18890240202 +13956153602 +18521438442 +13685097976 +13668701092 +13627092411 +15179478637 +18853886401 +18870835038 +18866474752 +13623379434 +18871410606 +18584808858 +18580511481 +13945825582 +15100643194 +18525525204 +18850927625 +18882743466 +15878663753 +13951494078 +13681137162 +13965516095 +15898925200 +15176767008 +15117959406 +13664142753 +15866067944 +18510256162 +15880522128 +15169366024 +15142367762 +18877544432 +18894085673 +13652889758 +15842514233 +18863510034 +18850064861 +13684893320 +13682502772 +15111387085 +15188657838 +13917992911 +18819447408 +15899197779 +13918277417 +13955480903 +13689241958 +18523107346 +15825166649 +13677004524 +18834677610 +15186414434 +13931272492 +13905510330 +15129298792 +18584477156 +13976304296 +18597919744 +18590069445 +18829652264 +13641152303 +18838980750 +15866511263 +18858920342 +18877575778 +13627945698 +13946777778 +13696580154 +18843439665 +13922165960 +15193041801 +18845703593 +18513079933 +18575064058 +15876174758 +15158655871 +18806819301 +15859083928 +13910141970 +18522575652 +15869726228 +15854235823 +13943353090 +15814210980 +18509642603 +13957959916 +18548333845 +15859794708 +13910430939 +18557198760 +13692975681 +18880936051 +18895937216 +15892602137 +18897945516 +18576110203 +15105234444 +13690201493 +13912288366 +13652057534 +18816610408 +13931812140 +15167852591 +18809841015 +13939563114 +13685951001 +18819031742 +18562720788 +18518497447 +15837021955 +13696097024 +15146056417 +15883178718 +15867308100 +18513722251 +18801541003 +15162741020 +15121408457 +15893509851 +15199683388 +18565359962 +15850052528 +15124959817 +13946092273 +13962932246 +13940331094 +13965377535 +15831294022 +15820052474 +18538265593 +15845295921 +18893618802 +15869769412 +18558725839 +15872450899 +18576803655 +13613243441 +13604589009 +18506458032 +13647927611 +18534343485 +15887498295 +15138978577 +13642628437 +15148450872 +15176669579 +13643813998 +18567774981 +13943809409 +15853030084 +18523934713 +15897449813 +15112590566 +13659273370 +15829108742 +13645357349 +13620793393 +15803714187 +18845261607 +18571164518 +13989305710 +18507136074 +18568381659 +18809298380 +13905624835 +15167337125 +18500898251 +13995204176 +15131726551 +15185403496 +18518108845 +13636489669 +13680619137 +18543100791 +18580894627 +13631224746 +18868208796 +13647427745 +13643272717 +15877922694 +18535127280 +18824583846 +13954472692 +13675433028 +13608630771 +13984510917 +15128459734 +15157529439 +15128392510 +13916218896 +18846734528 +18888625594 +15821238240 +15102239707 +15832341695 +13600573822 +18514466369 +18558243841 +15844939023 +15114312106 +15120536156 +15837944944 +13656726675 +13993980445 +18518578138 +13936897055 +13621149727 +18536804888 +18568882136 +13974740078 +15855449517 +13673933516 +13971070642 +13937198495 +13902632471 +15150008167 +18841994137 +18578468720 +18598901561 +13907535487 +15860269509 +13978019592 +15167046494 +15115662726 +13943572894 +13968644970 +18834335881 +15187083774 +15144023340 +18853043047 +18587494940 +18572357510 +13949503269 +15118082602 +15816699474 +18801069110 +13947210866 +13984224193 +15811040436 +13655478908 +15833819960 +18808733936 +15866392965 +18821974310 +15169086026 +13902392733 +13936873562 +18827152525 +18809764391 +13937904585 +18837076060 +13905128041 +18561187293 +18881443224 +18834676902 +13639303985 +18804099338 +18883325822 +13618304286 +15801762093 +18829820124 +15143431580 +13995461599 +18550430638 +15196193303 +13630358550 +15847645873 +15822654532 +18500231891 +15859679196 +18886258820 +18561829098 +15879722690 +15852813941 +18884349078 +18886506703 +18530996035 +15125405860 +13947801395 +13604740185 +15802548449 +18513478857 +18579664400 +18811554338 +18869800933 +15123464025 +18551457980 +18843724173 +13922138657 +13635068146 +13922607932 +18882514988 +13908164369 +13964631500 +18557514681 +13935295780 +15839398327 +13988467640 +18597428201 +13920525178 +15861997298 +13602900487 +13697111589 +18898901259 +13904220591 +15819529908 +13940572242 +15803929513 +15868754894 +13617423166 +15194636646 +15158656310 +13616943357 +13991512062 +15822943218 +15194752793 +18864781368 +18511478702 +15800155918 +15164878576 +18570095825 +15140084915 +13633681456 +15891807927 +15895788461 +13696334279 +18832399723 +18883242938 +15875804043 +15897306098 +13635296879 +18569475426 +13958095315 +18514938466 +18588049287 +13666486372 +15853757776 +15118303051 +18855515603 +15871708994 +13909435395 +15106545758 +13602929193 +13670273596 +18810238830 +13924326868 +18504762746 +15115884721 +15162184838 +15882505419 +18551822130 +13994629642 +18816255240 +18826262754 +15160371160 +13940827380 +18536632052 +15886295197 +15838031872 +15126787192 +13931109862 +13627658262 +18578168819 +15836506643 +15895186991 +15110162767 +18558643459 +18532378101 +13968331522 +15859322416 +18892222756 +18537508015 +18567478088 +15125993121 +15172714064 +13652222184 +13697110531 +13967938352 +18565207378 +18559562506 +18596199401 +18514076694 +18898160824 +13604613073 +13927102685 +15184595053 +13614908586 +15880187940 +18840838063 +13630523241 +15831935323 +15182994388 +13992711881 +18500993516 +13687003360 +15197383687 +18892796687 +13658606633 +13927691255 +15174745047 +13982886341 +15885872601 +18566301293 +13991265337 +15162817811 +15139001046 +15800118111 +18850278516 +18835608016 +18859080195 +18849420136 +18544303469 +13951821008 +15819078515 +15883737142 +18513883933 +18822059617 +13630750415 +18804865785 +18846699128 +15110678128 +13631450402 +13635515144 +15821976845 +13642821580 +18507757095 +13617000219 +13669809596 +15143361734 +15831476836 +13687491268 +13921020368 +18855438257 +18875518446 +13695323787 +13682679443 +15196084966 +13913251279 +15189859463 +15155196893 +15873009521 +15825951216 +15889137768 +18517130138 +18561335815 +13607695563 +15167628293 +18830839443 +18578758057 +18865688138 +18838217163 +18535778156 +13694345102 +13900829470 +18566175826 +13699814671 +18574817085 +13931800622 +18543434706 +15840421793 +15142200757 +18538662358 +18508096769 +15195607420 +13603120390 +18895794027 +13612395125 +13937597124 +13946624011 +13642858041 +15152924138 +13672407082 +13977102401 +13602212296 +18565329914 +18883086199 +15113944690 +15103755137 +15114357366 +18564839874 +18843426746 +15896210925 +13976740204 +18536826619 +13638626809 +13946009843 +15835896977 +15195620084 +18804546290 +18862025083 +13690221034 +18804525500 +18502429200 +13639406036 +18815554600 +18812577076 +15197232477 +18535774118 +15165673345 +18501245892 +13999003294 +13642592020 +15180761154 +18569834985 +13977268550 +13658366309 +18554545742 +18846189908 +13626423777 +15104310964 +15804911277 +18559874052 +15118074148 +13677195494 +18521967599 +13647734136 +13901323774 +18555589756 +18841982160 +13686257207 +13977351097 +18850157877 +13651056402 +15851079692 +15122920258 +13693399208 +15882371944 +13613393194 +13928413609 +13975893712 +13974317855 +18815118382 +15885669863 +13647962634 +13675934419 +18533245106 +15825304873 +13647525092 +15893853188 +18896802582 +15194242322 +13961784561 +18562683222 +15816805232 +15899318915 +15859859304 +13625542558 +13954243574 +18550975002 +13672392586 +18833065602 +13980617011 +15865241266 +18878442700 +18530354231 +18874072351 +15824657026 +18848817093 +13983947572 +18835538951 +13973826457 +15191362201 +15890597745 +18848902633 +15899188955 +13651151469 +15877486418 +15129363788 +13629022048 +13605175360 +15113981876 +18877109781 +15189646781 +18539207463 +13638063083 +18869582362 +18556164670 +18872072325 +13905581072 +15172164786 +13627831152 +18592538438 +15196424101 +15880419023 +15142548272 +18878850949 +15117519553 +15162965013 +13633989026 +18569201459 +13985850176 +15817610368 +18504334754 +15844126130 +13945364318 +13909461209 +18586626791 +18887075304 +13943238281 +18801289196 +18513842882 +18531460797 +18559490589 +15821536864 +18852443882 +15854816776 +15841368477 +15837430105 +15107274120 +13681662262 +15867109716 +13939932439 +13679660640 +15865679698 +18887305264 +18838577064 +18521550875 +13628272931 +18529587743 +13672884629 +15116762504 +13646249552 +15877039429 +18540131447 +18885144782 +15826782100 +13695117209 +18855850600 +13962157359 +15810970656 +15127756129 +18824269210 +18537033077 +13942935935 +15861276093 +18886255113 +15146840081 +13628822555 +13994935482 +13694555126 +13989002990 +18595416239 +18873886593 +18509480547 +13971026554 +15847991328 +13635538269 +18897260800 +13664213462 +15873544306 +18514021248 +18511894248 +13967339262 +15194650174 +13605768981 +13630247238 +15867011100 +18859381651 +15184987567 +13638050055 +13938071047 +13616247745 +15136552199 +13656336847 +13978906073 +13643593675 +18511518394 +15199843744 +15148026772 +15891175509 +18567730999 +15104331529 +18518580684 +15109019266 +15164481520 +15116774609 +18872675965 +13993053070 +13692229333 +18588810628 +18819373082 +15101734842 +18559790345 +18540374698 +13917843426 +18853072445 +18500269987 +13904488900 +15888181498 +13938013834 +13923050625 +18831372826 +13984553583 +13653967553 +18833600886 +13976909627 +13634517583 +18886595995 +15821994943 +18503056906 +18852883587 +18517374179 +13903005675 +13968461866 +15168796993 +13602192674 +15163788813 +13675860158 +15198487589 +15801984800 +18874751760 +18515359016 +18874170461 +13948127868 +18897399401 +15815054463 +18573780597 +15151098581 +15861898069 +15161727447 +18533410028 +15180688275 +18861020411 +18546903749 +18528813010 +13917323118 +18505405018 +15869392617 +18550021681 +15119999642 +18877028539 +15112909745 +13955972554 +18511157472 +13975700344 +13970391430 +15176898699 +15166605353 +13655071455 +13671240191 +18588968502 +15863601905 +13974547795 +13967944053 +15842153462 +13946023549 +18837808703 +18875288091 +18817408587 +18863695942 +13992976748 +18838143623 +13952709356 +13673568699 +18806148884 +15800321454 +15805094762 +13959269188 +18526793902 +13640898544 +13615199370 +15867754521 +13657408554 +15843889293 +13681002796 +13681460293 +18843182892 +13993753715 +15159300550 +18876800385 +13973132543 +13662006035 +18813410619 +18599430755 +15810876431 +18850060978 +18816961214 +18590657691 +15185815423 +18553026788 +15117289189 +15179990037 +15879638152 +15126927090 +18894647243 +15800155978 +15178353433 +15101061764 +15194677268 +13681833872 +18507513833 +15183889651 +18561636485 +18567149098 +15164434940 +18890817694 +15813853849 +13666433492 +13689418597 +13617697116 +15825486424 +13943814264 +13933244337 +18805663520 +15827242286 +18545502459 +18594624114 +13616030787 +18886736508 +18539118126 +13956590584 +18838516542 +15888208438 +15155989557 +15836170795 +13986072269 +15106469033 +15138667416 +15856647077 +15893282297 +13697885481 +15885980839 +15809389365 +13905856715 +18521721904 +15802425230 +13627446300 +13653593577 +13659244504 +15864482371 +13999248045 +13653578244 +13978435691 +15831705099 +13650787291 +18817636288 +15163789100 +13945713821 +13901949134 +13683413636 +18555966647 +18808868243 +13981503805 +18879398529 +13966365616 +15171932297 +18839096375 +18594849915 +15880754157 +15152575601 +13644537479 +18570094963 +13643397932 +13661134363 +18806123613 +15177911318 +13661977381 +15874008095 +13969371740 +18889994594 +18853254368 +13989540191 +18581729518 +18561813879 +13614535377 +15831962062 +18517764333 +18886236286 +15106036904 +18806461054 +13677621816 +15180910723 +13635206578 +13648172747 +18856533837 +18571637569 +15110004134 +18884655751 +15841907871 +15155211383 +18584039005 +15850865136 +13948923757 +13631093538 +15860496124 +15852471496 +15119263471 +13971431868 +18554324053 +13606443555 +18596770460 +18563458775 +15803362076 +18844436592 +15173985569 +18892806213 +15881587170 +13918272311 +15161307626 +18850070440 +13698271243 +15841165548 +15120038867 +15800318208 +18882806029 +18550954495 +15141425194 +13644814056 +13980041938 +13630052178 +13978061344 +13644338169 +18808231644 +18813066238 +13612181007 +13629610556 +18504438726 +18807888122 +15841808515 +18872399413 +18557486018 +15810926138 +15855370488 +13922709489 +13691366128 +15824518337 +13623495432 +15150805403 +13943089779 +18537586854 +15801959027 +18881948024 +18853742534 +18830865084 +15132639675 +18547404693 +18805142890 +18516729578 +13680177369 +15844989693 +18589912461 +18822347073 +13920236484 +13666116370 +13989759880 +15109654202 +18864253015 +18533678796 +13967837464 +13635323831 +15173484545 +18509551597 +15158719686 +15889071900 +13669386985 +13912377420 +13685528247 +18520625297 +15847781331 +15840640628 +18858630374 +15891623052 +15800996737 +18861233065 +18551017974 +13652681403 +13905413573 +13674690283 +18551519673 +15129892993 +13668472947 +18883521443 +15143896607 +15191653318 +13952425820 +18859237635 +13978101204 +15130297736 +13966944257 +18818178318 +15142580074 +18572861799 +18895818515 +13912425047 +15887878282 +15117409262 +15162665192 +15898340257 +13947414893 +18890201673 +13985571829 +13641841683 +18563243138 +15879394166 +18863158346 +18566247571 +13625440099 +13974986431 +15164444851 +13934039856 +15116489877 +18504777290 +15146207591 +18836186188 +13635828794 +13604947448 +15127773313 +15800581569 +18862396877 +15850244000 +15870168090 +15849356678 +13682923400 +18542078431 +13907692503 +13668029690 +18535269637 +15837163914 +13906069402 +18571956223 +18545985187 +18582981742 +15187603014 +13642032732 +18864076638 +13628661657 +18847195712 +13985167493 +15841276051 +15197415986 +15120314046 +18850164294 +15199348036 +18559858942 +18879478082 +18888036706 +18814781588 +18831374277 +15174307934 +13949035063 +15897362825 +18807902018 +18522171167 +18579223498 +13997617562 +13951006793 +13928424422 +15127129538 +15137583519 +13959484608 +18538283202 +18807589660 +13603363826 +15169462529 +18851263475 +15832868560 +13604457736 +13634351057 +18567159856 +13951352272 +15858690815 +18558410862 +15834181882 +13601677301 +13974253232 +15184695717 +18551829194 +18812626969 +18828625594 +13992757428 +18819815436 +13983754411 +18820521613 +13652008297 +13963094474 +13603382759 +18560224286 +15851987928 +15151599540 +15867180728 +13660327258 +13924850948 +15840442339 +18800955715 +18858289391 +18557039471 +18839003505 +15104498622 +13695887640 +18895410507 +18552178569 +15191396651 +18811655138 +15819063892 +13945779344 +13918178080 +13928406077 +18802379591 +18853188015 +13649176052 +15141171706 +18805812674 +13988290109 +13651082538 +15849488776 +13904103952 +15130294784 +18524809404 +13639424265 +13650175844 +13647193825 +18899670666 +15134158755 +13973373955 +15162860242 +13970066403 +13942663107 +13931680781 +13909034642 +18806940358 +15861466438 +13945977815 +15119186690 +15814391818 +15890189109 +18812967928 +18839832818 +18521030252 +13934197061 +15109254912 +13949009312 +18889835539 +18845352754 +13969745941 +13935544984 +13654243827 +13639232087 +13930555478 +13689090909 +18899361497 +18858147917 +13966235527 +15888987201 +18502018550 +15830438868 +18575241241 +15187240365 +13630327485 +13673843301 +13637571783 +13623289715 +15105303121 +15828101699 +18513720719 +18543551612 +18556349582 +13904781828 +13617396877 +13613142360 +18846081482 +13963689706 +18592203203 +13955572157 +15823543171 +15142569986 +18841154476 +15841556020 +18803215034 +18527783983 +18567437623 +15160129133 +13657884943 +13932889444 +18532757512 +18809638827 +18892428290 +13669979901 +18531232270 +15168403897 +13668751043 +13908307763 +18506380754 +18884142195 +18552297611 +18521907225 +15886489397 +18820637838 +18573225012 +13608244934 +15819092513 +15189937653 +15885724812 +18526150545 +18586122277 +15112861307 +18595324025 +13911261347 +13652262460 +15861378844 +18860294822 +18876868554 +15846614934 +18819576149 +13978643629 +18832441496 +15858647635 +15117585087 +18595418530 +13956144680 +18557940588 +15196238180 +13668372642 +18583558493 +15878009428 +15185021079 +18537588511 +15148655697 +13908004698 +13659231436 +18586874243 +13931186141 +13623112696 +15177929617 +13688168030 +15810689473 +18526794627 +18885190833 +13617492484 +15178921141 +18808338372 +13949980997 +15138850789 +13909283903 +15845411601 +15890307215 +13981031849 +13963642465 +15848247849 +15804675983 +15125629541 +15855115198 +15143212971 +18809555379 +18555506406 +13919788649 +15878825703 +13661514377 +18592124919 +18866069623 +15120207551 +18852401242 +15191829624 +13967303068 +18855998084 +18883333210 +15880459374 +18818008817 +15185698244 +15853881520 +18803481142 +18856043359 +15157726334 +18544055916 +18882228965 +13944574365 +15882831710 +15190982933 +13666888159 +18505491871 +15185518050 +15801625801 +18887536266 +13934877644 +13650599962 +18543522000 +15176461228 +18591609909 +15892084819 +15852350757 +13610376070 +13952704424 +13922255029 +13942365973 +15135961004 +15806107963 +18563923232 +13940593297 +18531359207 +13921302917 +18574837442 +18519398921 +15125064205 +13681486534 +15815492774 +18824503321 +15840993441 +15106436363 +15139111595 +18507856012 +15837402703 +13661248692 +18869759364 +15112815112 +18849866636 +15199114689 +18859017784 +13907187663 +15840035100 +18824420629 +18591781619 +18800632989 +18841406912 +13606925302 +13627021852 +15834290583 +15185670869 +13696950846 +15873429924 +13674445874 +13623141832 +18593091282 +15814926022 +15113244350 +15813122086 +13675094700 +13978845503 +15872880922 +13635211099 +18838575651 +18558247176 +18807300893 +18522503575 +13665520455 +18577945474 +13630224139 +13972797057 +18592883876 +13695852535 +15895494907 +15825638463 +15882245921 +18563854675 +18828043170 +15109880080 +15141839861 +18584695297 +18519283335 +15114710525 +13960741036 +15163210805 +13654534619 +15108384357 +18507271155 +18896691617 +13653663011 +13687735792 +13940343574 +13646092095 +18807749195 +18519633138 +18832462087 +15841314367 +13696356069 +15838794097 +13647786580 +18886472347 +15142974655 +13646126760 +18594968109 +13658154196 +18827565337 +15104390610 +18550741741 +15142939855 +15189340803 +18837172555 +18518122689 +13654929838 +18595928628 +13971888673 +15889895727 +15827719825 +13604207667 +13656204667 +18582044962 +18894480809 +15862882723 +18819997062 +18811292734 +13603219197 +13996644981 +18571251228 +18847237463 +18868708176 +13687768607 +18568519715 +18883487743 +18864592631 +13673524483 +18550918258 +15145848343 +13944298229 +15166781722 +13924531053 +18588523601 +15871558835 +15194651433 +18841217751 +18883795443 +13923911638 +13696418586 +13639007580 +18516763503 +18811941340 +15161284689 +18506070020 +13965885951 +18847903315 +13945596565 +15150479086 +15166204807 +15144841538 +13660106126 +13977892487 +18518308283 +15879512694 +15148415585 +15898889828 +18560038505 +15195875378 +13930494952 +18817949474 +18843212204 +13952042295 +13632047342 +18861200164 +13903288800 +13970954588 +13990630395 +13641226742 +18500215894 +13903422192 +18506355807 +13628361011 +15174637915 +18812537055 +15166472591 +13984404104 +15159050736 +18556529553 +13956376366 +13678650234 +15196108468 +18818540960 +13990604479 +18537683098 +13912780721 +18884985446 +13920415390 +18846212989 +18502594359 +18587451491 +13973090361 +15853781914 +18806798617 +15137831729 +18552762086 +13658916578 +15858900955 +13998364300 +15826272632 +13665962428 +18598221835 +15107439076 +18816208888 +15848336868 +18587219080 +15872724315 +18535046849 +15102031932 +18891336642 +18832385386 +15147709510 +15820686382 +18578289921 +18524003815 +18555685062 +18831000290 +18565325989 +18567283204 +15195139063 +18812652384 +15149268712 +13912294993 +15157275793 +15806420457 +15821567790 +13615533163 +13939312237 +15127770372 +13969122883 +15114391159 +15122934214 +15110072727 +18532460235 +15175209295 +13984382091 +15894895036 +13644788276 +13669404302 +13970516008 +18802347241 +18502772641 +15154962734 +13607625263 +18573354919 +18870109943 +18823514801 +13946460068 +18552406904 +15877286743 +15186801015 +18829629099 +18814269033 +15836815499 +18896008872 +18874454402 +13606900780 +15803642321 +18892694773 +13902476857 +13680917647 +15897405202 +18547704983 +18522012765 +18535762000 +15166316287 +13674934076 +18889129563 +13655600981 +18870436803 +18523994116 +15847647741 +18871562541 +13970693382 +13974582455 +13657318244 +18879515202 +13920846911 +13641846194 +18525550201 +18865307435 +13680126157 +18810177973 +15135357205 +13922391841 +13932705840 +15197663559 +13605721688 +15864907169 +18815891835 +13903193485 +15847716677 +18895497227 +15169740928 +13982819668 +15116625907 +15883928835 +18517950320 +15131892869 +13939772107 +18537841507 +15877141726 +18862539181 +18588023641 +18818337875 +15162195736 +15115075076 +18557328013 +13698217004 +18855207692 +13914605191 +15133361602 +18516469735 +18860722138 +13637413572 +15835599631 +15812977313 +15163525018 +15805492479 +18548747759 +15118896783 +18511153584 +13986686183 +13651434570 +13999297928 +15159474754 +18553337362 +15118891398 +13628198584 +15853898381 +15852080252 +15135183718 +18848549120 +15809860360 +13912007098 +18573527012 +15139620819 +13914824593 +15198341996 +13977389530 +18556600636 +18800900481 +13666574869 +15198901090 +18528666757 +15184479880 +13673462900 +15132396866 +13695454619 +18515832166 +18872277466 +15113431211 +15884912966 +15852449229 +13952444301 +15864762499 +13961300336 +18556611033 +15826158194 +15896877407 +15101025555 +18576128060 +15872244476 +13655688947 +18830298151 +18502892357 +13985011484 +18553413174 +13620466224 +13656014298 +15116468340 +15123942722 +13616046258 +15141810410 +15109744989 +13918001543 +18830644174 +15805739210 +15166716284 +18566771686 +15874008788 +18584193709 +18843673507 +15172108870 +13681783130 +18873947183 +13989504952 +15148597237 +15813568552 +15155921788 +18512332863 +15828219831 +13638251621 +15154339278 +15174465255 +13690849799 +18542569875 +13976535213 +15147503402 +13607930027 +13627876558 +13616071649 +15152143152 +18825714758 +18863796906 +15806326410 +13648338472 +15185036652 +13672604787 +18827531605 +18577044938 +18825563478 +13622787429 +15149597947 +18810218975 +13684695974 +13653925484 +18543709654 +18583390218 +13949409398 +18573904525 +15882831408 +18862207959 +15824135291 +15865237867 +13640817859 +13665810372 +15151197549 +13938825398 +18846619278 +13698808634 +18842657476 +18803406107 +18529451653 +13945243113 +13969091073 +18814063927 +15174063670 +15176139382 +15837204739 +13649593164 +13686699897 +13630982198 +13938990607 +15893790257 +13625720139 +18596108210 +15820202464 +13642785847 +13669930041 +13996135663 +18851516453 +13926696735 +15156865061 +15154638851 +13991667500 +18838742502 +15125731901 +18841784415 +15800939629 +18867256201 +13630127487 +18869956633 +15101797866 +15857779714 +18517916171 +13979329069 +13984442555 +13936738318 +15125050945 +15846910959 +13967320758 +13657766790 +15858239814 +13621930554 +18517460526 +18559764935 +13900637606 +15107844939 +13600833668 +15147200892 +13933790656 +18821913850 +13916118527 +13953201093 +18893989631 +18513516943 +18596989813 +18814645307 +15890585173 +18899656087 +15884997018 +18871176385 +18895532152 +18512558183 +15141388768 +18858017497 +13923477865 +18808459783 +18505105748 +18501200676 +13946113843 +13610172444 +13959202077 +13976356738 +18820881584 +18539811098 +13936589378 +15163770705 +18862868999 +15182953712 +13986372631 +15865399718 +13934313113 +13961052663 +18853394740 +13991723348 +18852070172 +15845935801 +18571565243 +13939937357 +18855701748 +13653594684 +18852461621 +18503100884 +13645194334 +18514062655 +18515935523 +15110472632 +15809398293 +15834772964 +13650813529 +13605075873 +13930661253 +15169829694 +13683704087 +15145617906 +15811090403 +15160218864 +13633434558 +13943334591 +15126974362 +15801219095 +13696638842 +18515965319 +18525586034 +13668117871 +18545009179 +15113747758 +18541203559 +13687042191 +13616989078 +13936026191 +13915878840 +18850892983 +15151445938 +15187492290 +15862907807 +18520570030 +15837705823 +13927052116 +13941012222 +18823691888 +13634394293 +13621167871 +13628372193 +13959499778 +15853860776 +15867549831 +18590716024 +13665902532 +15198964616 +13622089844 +13944840097 +13930030328 +13650482607 +15120953185 +15142666611 +15856852116 +18509154513 +13602219415 +18871999468 +18887848340 +18594143732 +13618881852 +13696655582 +13978761704 +18552752901 +15850741307 +13636697545 +13999426161 +13698662628 +18825980280 +13672944294 +18854393952 +15827829697 +15181225255 +15133762520 +13994996337 +18590671139 +15133808743 +15103508183 +13642383160 +18800913299 +18870451265 +15853802144 +13983477178 +15825255414 +18544189805 +18814523969 +15191593892 +15813760628 +13918730359 +15189027602 +18552463634 +15804319063 +13964416712 +13684230257 +18850421092 +15807311205 +18896517459 +18819489366 +15876580101 +15126619711 +13616727187 +15124262710 +15156095453 +15180202198 +13927132450 +15828900934 +13947212751 +18527794016 +13696271583 +13936655186 +18871269896 +13656034002 +15119699311 +15184892928 +15167637966 +13912210061 +18522781165 +13652218284 +18525965686 +13935947686 +13971355494 +13984704778 +15163686826 +18842394560 +18564671071 +13984746733 +15174411707 +18591900619 +15179335414 +18880997264 +18512213250 +15899118024 +13648573821 +18567260988 +15802487224 +15818334353 +18859707363 +18569599195 +18504798876 +18824827641 +13902377537 +13916549841 +15120226014 +18546003905 +15856361304 +13698910389 +13951364832 +15152345963 +13685426441 +13668308525 +15113416635 +15806003120 +15108995776 +18506641087 +15840672271 +18579996836 +18859382241 +13680523422 +18532834130 +15803875145 +13693834749 +13950980399 +18868588231 +15181070293 +13656496499 +15186320974 +13980418562 +13638994688 +15126100106 +18891885253 +18856951040 +13665905039 +13640425921 +18565065201 +18523562150 +13678557974 +18531744733 +15812988000 +15146450708 +15167711966 +18578487331 +13960793779 +18526420512 +18809696037 +18568950279 +15829696243 +18536589682 +13900830550 +18582521451 +13686127160 +13955295488 +18539210112 +15825585692 +13636270290 +15815532447 +18858314546 +13977801490 +18556433419 +13696395616 +18899977452 +15889241868 +13955950521 +15192717381 +15156342155 +18844519229 +18878069917 +18861046949 +15897301708 +18856651989 +13926377334 +15819411419 +15819012530 +15155888874 +18886953137 +18854888490 +13670313752 +13928466265 +15192483720 +15138959765 +13673221320 +18805458648 +13943385158 +13983602015 +18897819476 +13640999329 +15818821350 +13627885042 +18515971904 +18855218340 +15822672441 +15899810979 +15824997408 +18500211674 +18893640612 +18850604123 +18548536952 +15125211204 +13924155893 +13922975379 +15153065672 +15140410516 +13631908575 +15124754859 +13970488854 +18854591257 +15124581463 +13601204510 +13662976542 +15896396716 +18546811360 +13952461438 +18834718253 +15103625088 +18585700163 +15179259161 +13930155600 +15805868366 +18549647411 +15113105305 +18829663459 +18846516079 +15828955025 +15839104255 +18577842245 +15894652474 +15180707521 +18856075043 +13683656305 +15859113975 +15169575788 +13654862477 +15812648545 +15832075450 +15117011952 +13632773319 +18809317111 +13986794783 +18850413757 +18530728906 +15846815681 +18520827242 +18887087948 +13999419180 +18551343923 +13994425544 +13902463221 +18589127655 +13983645071 +18854253767 +15856435839 +13674678142 +15129721855 +18528139532 +18848998617 +15868559551 +15120244942 +15860544991 +15859318588 +15898674538 +13698162348 +18857914446 +18872265126 +15813917713 +13959291095 +13656176115 +18505331133 +18581711155 +18597349550 +18559448720 +15180606474 +13672761145 +18894796463 +15198007791 +13620094586 +13995588991 +18814257873 +18523766505 +13634229744 +18526561711 +18596059093 +18525851891 +13971722463 +13929414975 +15139657305 +15193817573 +15818414065 +15861405793 +18561212341 +18567193874 +13605878763 +18555382472 +13931699142 +18828096039 +13908752306 +15131693607 +15148478612 +18510178241 +13688256515 +13905507442 +13970442937 +13603779066 +18577711553 +15194988345 +13912886097 +15179477317 +15131307742 +15802410444 +18593388516 +18514108811 +13996905940 +13911386217 +15806501190 +13931199039 +18503531228 +15860097926 +18838684952 +13965254408 +15178979495 +13698252540 +15805639615 +15188868610 +18506337787 +15884810735 +18893903304 +18885061909 +13603602356 +13942087469 +15145328121 +18540423629 +18560109977 +13600994202 +13665336508 +13634561463 +13653399583 +18570661191 +15107373764 +15844963502 +18833832099 +18592551179 +18598910405 +18841999914 +15885011135 +15177174888 +18818079058 +15803578693 +15199064059 +18593630722 +13640947974 +13614110745 +13951518056 +13660355535 +15119225371 +15131842774 +18591904750 +13677403233 +13633261411 +13912239452 +18511710935 +18820434853 +18554539916 +15876015474 +15125615764 +15196143960 +18839313227 +18557873534 +18843044507 +13611637963 +13967982145 +18540632882 +15814359314 +15196463609 +18597471432 +15123013260 +15180456299 +18824851341 +18844876355 +13688494848 +18874751766 +15189902764 +18525883220 +15813959717 +18534954061 +15100824824 +15134713922 +13929899550 +18831990208 +15844081562 +18894515373 +18581535488 +15182285388 +13644412137 +13639234579 +18597276888 +13664321775 +18861691578 +13631466073 +13959498128 +15872402667 +18831515244 +13657796294 +13606990861 +13915616030 +13970507826 +18862338866 +15150393278 +15888669131 +13972709640 +15872593745 +13929243907 +15105732069 +18544816114 +13669930511 +15852277555 +13959571064 +18539659469 +13991056934 +18897924678 +13970207601 +15148770426 +15154183435 +13626204398 +18532668948 +13633614575 +18824286086 +13933153191 +18505686052 +13673752397 +13610328026 +13924748667 +13664338339 +18878686601 +15854762773 +13957844969 +13619684604 +15833858121 +15101160576 +18515817218 +13940095081 +13991068506 +15859003483 +13925807252 +15119844368 +13936690990 +18573565594 +15140808837 +15805657054 +13945811252 +15186028169 +18827380233 +18803830302 +15155003896 +18891161463 +13979552246 +18595590416 +13674962361 +15132949207 +15119306145 +18574337113 +13684842030 +13934759081 +18545105998 +18571765350 +15875853959 +18895761571 +13948638604 +13968005111 +13613208358 +18867376235 +18879343251 +15807962825 +15889754383 +13982484266 +13903421206 +18877926815 +13902917795 +18824859468 +13688003560 +15160436353 +15879058396 +18878534262 +18807222277 +18812202283 +13639128945 +15163362176 +15868597894 +15125175436 +18873567248 +13917861385 +15106894911 +15843856381 +18864100588 +15177983579 +15860286316 +13994422892 +15849353970 +18884194713 +18540988179 +13916524620 +18533256873 +15840124858 +18824684650 +18865561447 +13699501890 +18867242792 +18584306084 +13634072239 +15199890055 +15857323557 +13696802246 +13622296629 +15173118228 +13919949072 +13901732709 +18581567382 +13690272010 +18840232545 +18836392908 +18522269869 +18500535353 +13658570570 +13679774183 +18539121047 +15857878869 +13955285781 +13935317359 +15869573580 +18823916813 +15811105206 +15848844595 +15895403041 +18892730270 +18816397490 +13953178386 +13614616101 +15178223469 +13615195704 +15851941876 +15836760208 +13680393167 +13662470764 +15822933093 +15895974737 +18825837278 +13980349975 +13676569926 +15865564165 +13935432416 +13975902405 +13915754487 +13682906550 +15852071221 +13926318477 +18889101455 +15136789787 +13684157425 +13952929803 +18594135975 +15198391027 +15807866037 +13699891719 +13987209767 +13964581603 +15875432007 +13679112656 +15134200654 +18845233235 +15105927626 +13958317568 +18549925516 +15844110509 +18895989871 +13667947888 +18544449250 +15826352934 +15851681064 +18511123730 +15195130856 +15823629824 +15118158775 +13696014112 +18845331400 +13683170273 +15139483103 +13954159064 +15108548138 +13668578264 +13909901505 +18844318605 +15100067560 +15175413896 +15181408283 +13650848181 +18523061271 +13610882183 +18892151618 +18551841838 +13644237490 +13638011793 +18581384886 +15808037170 +13613916082 +18895475296 +13928005277 +15116178147 +18803031532 +18572264597 +18802871726 +13998210181 +13943395080 +15153051624 +13618418661 +15180867943 +15131590897 +18551659320 +15825883886 +15106802131 +18882713883 +13693852943 +15195488351 +15852604209 +18573394074 +18855543969 +18831772364 +13939778273 +18504412189 +13978712611 +13662512816 +18575789681 +18519309492 +18801547965 +13662064994 +13930278985 +15825437581 +15113131782 +15147674799 +15170580835 +15122979500 +13606776367 +18810033003 +15897254491 +13662053662 +15144741955 +15112425083 +18596119782 +13685109354 +13937970992 +18850812514 +13960042784 +15898962129 +13640540768 +15822434031 +18869391028 +18595830687 +15832808864 +18591150440 +13945179026 +18822875973 +15177786880 +15819834274 +18867715074 +15853289779 +15154118288 +18513442412 +18551671466 +15878846960 +18594819888 +13986774904 +18867225451 +13908423324 +13645547918 +15880825367 +18583577401 +13616101018 +15836180574 +13980800122 +18568213078 +18528613363 +15131212254 +18856311411 +15102059954 +13692719034 +15870394843 +15892957817 +18549316837 +13627525664 +15188224157 +18589064497 +18876238188 +18848716211 +13659342134 +18567025134 +18592997558 +13669717955 +15836190752 +18572310968 +15847968381 +18559915210 +13951305449 +15180145463 +15804770266 +18520040107 +15868876380 +18864558701 +18845251663 +15889646147 +18590057882 +15180729906 +15135944798 +13963708120 +13975001486 +13673814393 +18872981532 +13606001995 +18579721108 +13938118606 +13635057257 +15818742873 +15106654850 +18585511045 +13919851737 +13607536310 +18821463960 +15147886095 +18513185431 +15144619073 +13997832450 +13958639350 +13687017398 +13922532482 +13639500600 +15181668141 +15198938052 +18503940400 +15197080451 +15892853475 +15199311493 +18597913059 +13963118197 +13978734963 +15161262766 +18515430509 +18541366236 +13662818506 +15141702512 +18537240504 +18836325445 +13905774807 +15863548302 +13910409837 +15145223388 +15833847514 +18887599200 +18507736509 +13908395878 +15824156937 +15819495445 +15829142392 +13684893488 +13958236225 +13695320070 +15868157799 +15873293393 +13948094199 +15870279239 +18509134909 +18803601269 +18826806738 +13997696185 +13661278648 +13604626533 +18547190014 +18576183122 +13911679846 +13968833820 +18561595900 +13674062826 +13948435945 +13686206315 +15851934929 +13617932010 +15850591185 +13948490929 +18519587961 +15821946949 +18547683960 +15181847032 +18876844455 +18516021813 +13697594377 +15885856028 +13662300627 +18849036018 +15881156162 +18568286752 +13906781420 +13688016697 +18508432835 +18875011836 +18505787609 +13932357128 +18576854063 +13906633649 +13950537948 +13620482912 +15864941684 +13923046288 +13932249978 +13950100817 +15169808821 +13967780832 +13996555570 +18879749958 +18858635873 +15175085309 +15183336184 +15112846550 +13944571082 +15115221515 +15804322739 +15136705506 +15118560481 +15128832378 +15855440502 +13665286196 +15801283481 +15868612745 +13949818910 +15142185557 +18523401043 +18549512112 +18524341453 +18538856287 +15814378693 +15185351545 +18844110883 +13617990610 +18541711114 +13628931655 +13655815134 +13622701833 +15119591921 +18526547748 +13620727492 +13953475052 +15117576044 +15133109697 +13954995592 +15891349201 +13917637275 +18536898104 +15144642205 +15842651794 +13655861555 +13984580461 +15873400834 +18834806068 +13625618785 +13980798175 +15810697729 +18858645427 +18518351730 +18511040079 +13627567338 +15800729580 +13668272249 +18843376032 +13966019545 +18884463321 +15103605266 +18892819109 +18898707639 +18813755793 +13917279508 +13697166618 +15863187695 +13623161192 +18839007003 +13664607031 +13622137397 +18873432757 +18549822723 +13943969939 +15827938405 +18575117247 +13927665388 +18588378978 +13626066427 +13644982010 +18596747320 +13698253592 +13689425479 +13950183844 +15195906766 +18513471264 +18850995731 +15839831363 +13630540686 +13969341129 +13641727276 +15124537206 +15184664759 +13915579626 +18807613266 +15167460637 +18588117198 +15844851149 +15157084123 +13904061217 +18532449715 +15886295529 +18508202036 +18875460457 +18552837563 +18518173996 +13956331503 +13911927697 +13915353173 +13667329453 +13667457155 +15166000401 +13957022365 +15147788958 +15140801520 +18858553605 +18848309476 +13617555056 +13665297954 +18817107855 +15156474652 +15855423162 +18835716620 +13989976699 +15199886438 +18571376801 +18527444027 +13677482244 +18505185830 +13667412164 +13900429268 +15135413479 +18849765769 +13604657492 +13622194455 +18582167945 +15180247846 +15808440934 +15817460935 +13938114835 +15179508583 +15835048785 +13675048772 +15174481761 +18857236392 +13954298104 +15881411945 +13901424167 +18555948488 +13989594671 +18834083490 +18529712018 +15148830126 +13913775606 +13668816437 +13996200056 +18590903564 +18539940477 +15167525754 +18541026863 +18897973149 +18510510762 +13652150105 +15834150169 +13988708092 +15851454365 +18836696567 +13916155737 +13923137431 +18539101981 +15170087390 +18831456874 +15113117606 +18894481295 +15873401250 +15887870425 +13931373132 +18586923567 +15181684765 +15104719473 +13652994712 +13927494346 +13624982380 +18539406547 +15802951739 +15865802891 +13681594214 +18585686301 +18557736305 +13925906368 +18895509051 +13699785111 +15178483540 +13944057772 +18811359353 +13959458157 +13968993236 +13960638074 +18830063822 +13634769991 +18879463089 +18570586185 +18554302839 +18516882698 +15868197360 +13963100421 +13698595835 +18836440186 +15147951284 +13906928610 +18823754361 +15846323570 +15863592106 +15815896315 +18561571782 +15892795039 +13972276585 +15104875330 +13934486175 +15104095187 +15845986737 +15884178350 +13984308123 +18505689486 +18848702701 +15863779430 +18803355053 +18510630950 +18878866782 +15871176349 +18566630708 +13690603206 +13938818526 +18834376979 +18522306163 +13952025968 +15165619242 +15149333762 +18553993128 +15139369681 +15832426978 +18813291444 +15852690831 +18549085229 +18860763902 +15161114952 +15100146464 +18809494567 +13691066484 +15105628066 +15108346334 +18824777576 +15164067611 +18594653386 +13952918504 +13976192448 +18538926692 +18595793068 +15885434411 +13677199495 +15161655258 +15123923307 +13911052450 +13941433251 +18811030280 +15823450474 +15843591833 +15132338491 +18878756562 +15846206564 +15864411918 +13903172190 +18551359405 +15192498171 +13605954123 +18583051657 +13663769692 +15103618599 +18885968628 +15848730264 +15834526337 +13619608624 +18867764001 +18512073967 +15130379861 +13679550927 +18822723977 +13928723002 +18852138635 +18893271956 +18850888560 +15194980281 +15885811302 +15125283882 +15153564338 +15150970205 +15835064746 +13657213544 +18584993005 +18500159119 +13966613015 +18569489851 +18869953093 +15808500473 +15896113045 +18879564796 +13639451656 +18509951197 +18560121237 +15891828367 +18889136279 +13960570254 +15107723245 +13644464439 +13655106364 +15812242320 +18893897564 +15165359449 +15883755721 +13942326811 +13646211560 +15832990788 +18886498886 +15878945620 +13956649386 +13650566686 +18894313154 +13687296906 +18800488974 +18812986631 +18506491373 +15193055322 +13995122641 +15150118239 +15178370181 +13652012549 +18575585495 +13619422964 +18505797890 +13963440360 +18518719290 +13663999465 +18810344981 +13602085369 +18807505424 +18508264231 +15883934888 +15116045306 +18865522123 +15189756070 +13942877254 +13642405269 +13974327698 +15853986810 +13950491501 +18885479871 +13669723152 +18805111410 +18574454043 +13956301400 +15100833180 +18512397505 +13976331984 +18808536004 +15191222023 +13652528942 +13944533202 +15857445241 +18544297937 +18820576264 +13609415680 +15858300145 +18859112685 +15844782468 +15184576043 +13970380359 +18541733651 +15867410320 +13904142852 +13604266093 +15134044789 +15196749986 +18593381884 +15195174612 +13670070084 +18838508724 +18595461911 +13937299388 +15820241428 +13660149890 +18544558018 +18574958922 +15824041300 +18889854238 +13675470897 +13636404590 +13617921646 +15131029841 +13994512082 +13650180589 +18848202917 +15104675777 +13636828782 +13924095847 +18818703095 +18864529578 +15883352013 +18582484715 +18564067496 +15117569602 +15196280504 +15883042995 +15807625924 +18830211936 +18897466506 +15862592560 +13644675038 +15181615241 +15858356405 +13634836255 +13953080468 +18807919426 +15808215624 +15105489838 +13665655195 +13985637551 +15879914106 +18846535272 +15138469518 +15130895502 +13977286034 +18563974689 +15195230263 +15889816655 +13639025623 +15124561397 +15880165435 +13958544062 +13910151514 +15872639654 +13900297762 +18505247643 +18800120172 +18893442414 +13919961353 +18843676333 +18892026133 +18862781806 +18525530273 +15124893368 +18862479837 +13930570148 +15846043602 +15191301910 +13955805295 +13996182262 +13601342673 +18524931725 +15123067355 +18588020867 +18820526706 +18843212523 +15165529882 +15158308431 +13689968997 +15120085800 +15890059214 +13628014284 +15847279869 +18849597520 +13910641841 +13963683855 +15181379604 +13681973721 +13942059317 +13907286341 +15830420190 +18508724623 +13905258044 +15869061677 +18864143310 +18509453981 +18818925665 +15876099626 +15173984488 +15132436517 +15850297221 +13673860390 +18807301732 +18579150568 +13642401824 +13606416086 +18514679132 +18849474692 +15837519765 +15131637683 +15170181772 +15863352638 +15823000395 +13618799090 +15129459411 +13986412273 +15108197515 +15867888558 +18509051134 +15157395882 +13942359027 +15821582654 +13978284586 +18893854606 +13659413031 +13939332514 +18520496309 +13651516060 +18858237995 +13648417706 +15879280043 +13984154099 +15173219756 +18599758207 +15813863988 +15842249966 +15897516631 +13962660269 +13954949438 +13656961403 +15122937486 +13914905999 +13963026404 +15803885312 +15194633735 +15895593957 +13674138384 +15852208707 +18594242388 +15832503877 +13908971659 +15156802884 +15104067764 +13959931998 +18501801178 +13609484303 +18539959845 +18542953476 +13673948522 +15889421075 +18890862736 +13689816791 +18877351576 +15887235901 +15886272098 +15151646634 +13617402976 +18563707561 +15169945251 +18888923178 +18576631625 +13996652915 +18551140466 +18849765348 +15132591695 +18564617606 +15114657804 +13653467659 +13970900723 +15107194658 +18584904428 +18809951762 +13962385423 +18543685677 +18578348809 +18870925587 +13653547494 +18586831997 +18595597675 +18561204037 +13656055129 +18548708201 +13936203724 +15170307524 +18853455836 +18532923901 +13986727211 +15186030714 +13699319132 +18812329633 +13947859118 +13695377311 +18593238075 +18877784060 +18865616351 +13902381138 +15818258600 +18538319630 +13986404655 +13907342903 +18576715701 +18848245094 +15803651962 +18833549255 +13938314620 +18806378302 +18812460670 +18850569700 +13997731450 +13900181377 +18800607605 +18854770804 +13953812510 +18521738886 +18855767129 +18811724545 +15110369683 +13956482000 +15119646505 +18836979208 +13631177505 +15837038357 +15809339113 +18501233592 +18555493140 +15846451188 +15159814800 +18861382635 +13936877521 +18837166568 +18546936027 +18569295767 +18570908378 +18838234202 +15870555859 +15169054067 +18556750460 +15127641449 +13622359274 +13670185976 +18822309447 +18804768421 +18844185429 +13607259404 +18521281531 +13633272564 +18549549494 +15161237705 +15898878269 +13917584947 +18833242690 +18561993076 +18892083407 +15863993517 +15887356278 +13918257471 +15171181957 +18525051729 +13996940315 +13656844013 +18808906587 +18567448554 +13611521665 +13649296985 +13602173247 +18501203801 +18886033482 +15844892564 +15825517604 +13944782018 +18899341080 +18860762032 +15837614380 +13990167348 +13676197800 +13635865174 +13900671624 +18588462539 +18546991394 +13699040127 +15887901373 +15830818930 +13932997579 +13952410794 +15864294986 +13972913920 +18525751243 +18518489662 +18550030114 +15178793804 +15134904360 +15890775277 +13932404574 +13624732100 +18875396111 +13964551582 +18813805692 +13984145842 +18894408986 +18514003314 +18502612320 +18573726792 +13659033034 +13683213430 +13968108004 +13641081165 +15848001845 +18557099421 +15880722912 +15114756193 +18829426130 +18835635799 +13992004873 +15841992101 +15173512939 +15878013514 +18882902390 +18537230879 +15856123007 +13681417493 +18522444914 +15817501000 +18855408814 +13619767065 +13697038914 +15173073285 +13679586117 +13672702983 +18826767247 +13666310197 +15888368171 +13676960202 +15141751104 +15118999874 +18805828795 +18586513999 +18852600033 +13604970273 +13610574868 +13911513908 +15800926061 +18546957847 +15199911139 +18811331178 +15821944896 +15850358755 +15103685048 +18595980598 +18825924872 +13670223740 +18866169474 +13611796473 +15134795552 +15116690359 +15199235614 +13678182885 +13940508082 +15170590823 +15891228925 +15872980048 +15198468249 +15168931719 +15871159576 +18848681964 +18842841996 +13943039655 +18540814771 +13662675067 +18821238831 +18837198756 +15884734345 +13937879743 +15123724043 +18846286999 +18863886644 +15173732442 +13633851596 +13632848087 +18571728635 +13939513980 +15850847575 +13645978797 +18873213160 +15129185054 +15115007271 +18572595037 +18585161198 +13949752280 +18824825013 +13674535553 +13660361644 +15820914134 +13977294675 +13914944942 +13694942612 +13678733536 +13661987417 +15140945318 +18516604490 +18531316824 +13609743872 +15812362694 +13612086285 +15857898525 +13679786254 +15862389605 +13620705606 +13925931827 +18524200763 +18534325817 +13981102774 +13639155577 +13600979941 +13613291842 +13942780596 +15102586649 +18803366688 +15830586837 +13645761400 +13901802382 +18892275485 +15831183818 +13973758930 +18526327742 +18831660927 +13956860213 +13674932803 +15185185371 +15194355566 +13635869933 +15154992449 +13644458620 +13646018394 +18585445083 +15850244724 +13686433649 +13637401152 +15896023849 +18578552606 +13983746613 +18827540101 +13634135309 +18861105132 +13924397281 +15109721412 +13946502379 +18827257174 +13623750098 +18819359450 +15196804748 +18524573468 +13987044524 +13909952576 +18800493989 +13941815218 +15879610639 +15187067439 +18502752271 +15118791494 +15121608033 +18862751669 +13682160832 +13625013023 +13632803450 +13945760724 +18552042698 +13623656003 +18808646734 +13687070461 +18878554403 +18885397828 +18532422934 +18872359323 +13619747062 +18800786677 +18547190410 +15888376524 +13689100913 +15107750017 +18518790550 +13636104593 +13687264516 +15198664433 +15152917882 +18882969625 +18528972078 +13968630439 +13959469170 +15142293586 +18815002015 +15827102404 +18552947373 +18549323800 +15159095546 +13982283192 +13695908792 +18551299250 +18822471268 +15199793636 +18871795288 +15166281644 +18898044211 +15886794516 +13623032634 +15852589161 +15852215560 +15171945197 +18834170155 +13697398214 +15183860938 +13988155603 +15103473881 +18803950847 +15167975944 +15894120125 +13963177946 +15872064911 +15802692683 +15893332399 +13650393334 +15104173019 +13993288075 +15132061077 +18548189266 +13941411441 +15173127097 +13907174783 +13650520676 +18539006616 +15127834531 +18550385013 +15184978421 +15822000385 +15872821635 +13651520690 +18554556548 +18554958330 +18873497346 +18512296615 +18545802841 +18890816139 +18540676895 +18544855642 +18585511506 +18538087629 +15831300355 +13625505125 +13658410002 +18872863401 +18851742233 +15166536663 +15106643931 +13644357555 +13958677538 +15864442234 +13691730014 +18866430448 +13697605967 +15131358534 +15114204444 +18850639100 +15863259053 +15854727938 +13648189406 +15155424736 +18899546784 +15170736573 +18832657494 +18835095960 +18814281693 +13947930290 +18590181128 +15815618185 +18530778232 +18575959050 +18551427027 +15154151233 +13904189798 +18500146705 +13671094807 +13684921722 +15872596860 +18828007759 +13612095360 +18524179809 +13644015426 +15814327913 +13646294782 +13971386892 +13610948020 +15178622380 +13959103360 +15853023498 +18873447743 +18819487344 +15846029054 +18534569676 +18835060155 +13648372833 +18553878558 +13674262607 +15183124598 +18828159075 +18569667769 +15182622016 +13966280669 +13689763911 +13683178578 +13697311927 +18894867901 +13907115641 +15864533974 +13954343244 +15113151064 +13671996888 +18599879751 +15143814140 +15182760296 +18597093592 +13688206238 +15178533223 +15128448713 +15809813518 +15857445404 +18511593408 +15185010671 +13903937395 +15130515530 +15873142463 +18529108795 +15168349807 +15869648278 +13692467281 +15119048611 +13977656847 +13697965543 +18533036671 +13692607118 +15106640457 +15829204169 +13948891904 +15163756487 +18560190764 +18876039241 +18887602314 +13604369115 +15104693012 +13604152566 +15196644518 +18583517093 +13905120785 +18807121601 +18880913012 +15184059483 +15864611237 +13930049456 +13666980880 +13938189266 +18876380907 +18807826466 +13692229214 +15880022782 +13987368475 +13629409942 +13920147104 +18853075037 +15144343236 +13655460362 +15117113188 +18802453022 +15806169978 +15806589727 +13658434224 +18561358293 +15807150374 +13679959480 +13999106541 +13958184794 +18548059211 +13670062460 +18894613184 +18530708836 +13976274416 +13692634955 +13916010755 +13944934958 +18508470320 +18549089183 +13932983036 +15104279147 +15864293349 +18868448482 +15103484688 +18800262772 +13649865259 +15810761736 +15118625789 +15823786135 +18577378329 +13947177041 +18504154096 +15135566418 +13904787565 +13973875599 +13642705131 +13978001266 +15892699027 +15892055253 +18821048232 +15851460394 +15823734818 +15883147880 +18542912184 +18593107771 +15838672260 +15866492799 +13965911184 +15876945448 +15804570207 +13977708516 +15851787545 +13692762414 +13692436102 +13921719640 +15841018405 +15809732673 +15838179161 +13963524377 +13640294232 +13975841298 +13654074664 +13997064668 +15175779765 +13930329709 +13605516739 +15811982481 +18877759250 +15129407740 +13977074951 +15196413024 +15819870495 +15196228252 +18569944440 +13669994360 +13959840749 +15808812825 +15159147815 +18810638770 +18845846034 +13918083586 +15167411957 +13626807285 +15889488966 +15803069539 +15142156975 +13626889501 +15891602532 +18898069525 +13961344602 +15861029308 +15895354327 +15834435860 +18888003210 +15148806828 +18592417872 +13927292343 +13930868875 +15104119789 +15877530349 +13953339892 +13625123327 +15109804787 +18891118486 +13920151627 +18531601635 +15189382906 +18833465279 +15844391380 +13912195483 +13687888230 +13652260780 +18510045154 +15887352381 +13653482147 +18532441488 +15123580241 +15194955519 +13934899022 +13922001064 +13957423454 +13949503411 +18516297957 +15195498235 +18897736063 +18837943003 +15120553464 +15845437456 +13921601365 +18803411149 +18579805004 +13971026205 +13661672163 +18870920152 +13924460238 +13634836084 +13601503497 +18813760088 +18518845662 +15834650693 +13989968688 +13942302124 +18810946997 +15877017092 +13918296133 +18890419038 +15874940865 +18820316169 +13915821425 +18884031283 +15183776944 +18573810952 +13649185442 +18578225328 +15178624905 +15165598551 +15189465077 +15101657075 +15862588887 +18839446670 +18544769771 +13665841531 +18818080625 +13919240756 +13696804045 +13919811746 +13632365764 +15810927538 +18832698654 +13600948748 +13963452086 +15809488272 +18845533219 +15185060493 +13667690175 +13621041198 +13698238904 +15161712007 +15132341606 +18841574172 +13964786540 +18586838053 +13945792843 +18514201285 +13608857071 +13623259119 +13691423110 +15122949756 +18546943122 +15152381508 +13921030560 +13910434559 +13659014913 +15816150130 +18539213172 +15817965743 +15846092549 +15804583174 +13692834480 +13984761694 +15806951115 +13967114361 +13687764926 +18838526041 +18534497834 +15802995597 +18533379035 +13968248247 +18547425730 +13631452162 +15132401135 +13657426486 +15129214356 +15897954175 +18857303698 +18564591823 +13992864424 +15814443592 +13938712404 +13669270036 +15851294294 +13630217013 +18839769239 +13632509980 +15188573664 +18532334484 +13962578171 +15163034224 +15169872099 +15846032272 +15147226300 +13923685855 +18897321516 +13930093562 +15840646911 +15146558968 +18530316736 +13696422712 +18852585149 +18859388000 +13999032985 +18591156146 +13909633695 +15819909647 +15894377472 +15831032009 +13620428905 +13953270226 +15144237707 +15178032692 +15832861185 +13669634582 +13966030815 +13981705855 +13905714730 +15186253053 +18536637168 +13675137219 +15156985357 +13623297386 +15853822336 +13932660838 +13698285069 +15854251772 +13900500504 +13619685640 +18597679933 +18586870664 +13617891586 +18558864859 +15878853509 +15871071631 +15888978694 +13941311359 +15116845300 +13914212440 +18829942212 +15805282728 +13613670196 +13926910904 +18826473223 +13637633789 +18837540460 +15802591774 +13967080362 +18574564312 +15881015604 +18564381260 +18891122393 +13601841611 +13693002237 +18505693228 +15867885626 +18595152998 +18551601392 +15863509061 +15844066979 +13962392969 +13980714468 +15853585573 +15869035162 +18818325759 +15861790244 +15821354290 +18811420196 +18534445582 +15887290683 +15818560928 +15150012808 +15145949019 +13933733837 +18827195339 +13958509052 +13675180499 +15821664826 +13688165408 +13994903650 +18839306495 +18598331697 +18806944127 +18801950784 +18599828433 +18835724100 +13669502211 +13916671440 +15832063335 +18857236316 +15149076892 +13635715658 +18874149305 +15131639200 +18864198908 +15127244566 +13621576512 +13984654388 +15107710671 +15873240531 +13947626009 +15194614929 +18820597616 +18539187372 +13991284095 +18519870104 +13936548278 +18522127634 +18878909789 +15885602227 +18814459906 +15126312050 +13928489162 +18543576407 +18821745403 +18535318838 +13698095304 +13654838269 +18894969551 +15882601144 +15825079390 +13610419763 +18806928792 +13950525819 +18592052364 +15821587434 +18831665573 +18535705497 +13958583156 +13642147539 +18563221181 +18886060121 +15814987996 +15832298484 +13953377161 +15873887355 +13653249159 +18814195396 +18803487052 +18804707110 +18895797452 +13960425343 +15129700847 +13960098837 +15833650127 +13994921574 +15869015365 +18583371550 +15827142900 +15807287261 +15131197992 +15106982075 +18806059883 +13998336317 +15862672828 +13964119528 +13668643370 +13984326579 +13920951579 +18867678352 +13993007740 +15811426866 +15124020496 +15848971842 +13693942117 +13920985390 +15887251041 +15194908450 +13987995914 +18502434123 +15897862602 +15180346377 +13677513800 +18842185796 +13960390473 +13656629512 +13974648355 +18566261846 +13602659592 +13932682598 +18592079510 +13644276491 +13910125961 +13626320030 +18570793945 +13693526668 +18552664917 +13608280382 +15129262460 +15887268587 +18525493169 +15864338114 +13681278635 +13622437912 +13614496254 +13924547996 +15818567105 +15831317626 +18585240417 +18548161953 +15142462465 +18884116093 +15139231714 +13999677418 +18523775493 +13989787475 +13935553566 +18573753869 +15176586086 +13607203333 +18888339110 +18549714417 +13661004866 +13910076904 +13636377767 +15809069184 +18885068853 +18577018382 +18531676778 +18513507392 +13636428323 +13958253520 +18878775718 +13942717222 +15135896755 +13692304033 +18853389223 +18578687107 +18897966096 +13602089509 +13612741123 +13616290777 +13639251643 +13655162464 +15893824560 +18813925177 +18545072644 +15135032223 +18820805848 +18587762760 +13966970893 +13969218652 +15112351322 +18804410687 +13956763224 +13667956407 +15123051750 +15875270934 +13680557113 +18876415227 +13948837121 +15157770894 +18874653106 +18560377167 +13912789945 +13959949160 +18876033000 +18501824441 +18551489734 +13911667569 +18538177646 +13922889887 +15119080731 +15888992994 +15144199367 +18517528135 +13678059920 +15111247785 +18887742796 +13950170468 +15192951869 +13657731857 +13949517541 +18513739543 +13955573460 +15112728802 +15825172083 +13688930297 +15172828219 +13994979045 +13606008517 +13671732939 +15828245834 +15181146376 +13617877848 +18891372552 +18564892979 +18824573632 +18892931112 +15817093844 +18856156970 +13694570500 +13698764425 +15150657887 +15102873397 +15163488163 +13697964294 +13694213267 +18502946731 +13623333564 +18528866410 +15131754835 +18515878870 +15188454931 +13913084883 +18858063325 +15867372515 +13659705978 +13950200522 +15818363881 +18818596582 +13963099194 +15837944405 +15142025434 +13660527237 +13905383498 +18584169206 +18832528511 +13927908335 +15828329226 +15881888506 +15172722833 +15876327956 +18545151052 +18807265060 +13605696746 +13628831164 +13931331846 +18828251374 +13952442057 +18896587400 +15111125847 +18514950343 +18570437176 +18502980354 +15175165174 +13901017650 +13639647453 +15163161122 +13927279023 +18818357217 +18597508738 +18871657259 +13674608300 +13600828237 +13623513934 +18823933456 +13977567175 +15196829513 +13902260080 +15124757959 +13917247888 +18524338312 +18822276484 +13639525994 +18889167398 +15160651096 +15859854406 +13695247976 +13690605774 +15128229846 +15164186105 +18512020417 +13645619274 +15111991698 +18556845281 +13683395311 +13658644430 +13918212118 +15817217476 +13638916098 +18835966192 +15825207011 +13684101464 +15128990333 +18845120966 +13687369897 +13676315441 +13680517851 +18524594246 +15131830148 +15184279209 +18566156416 +18561967941 +18568737072 +13905062936 +15156072975 +13907164871 +13907777814 +18879905606 +15883732958 +15857065728 +18883261636 +18554179587 +18514152230 +13633091812 +13651332502 +13613575254 +13671801551 +13664059429 +18828838306 +18549335183 +15127467060 +13653093007 +18869436197 +13657227642 +18859741382 +13673016084 +18842157863 +15851960984 +13629904186 +15803876435 +15194107478 +15130609782 +15899311165 +15182411792 +13994929381 +13909252957 +13667695810 +15129083559 +18539236510 +13616753354 +13682988956 +13630317539 +15189617932 +13962819798 +18551882669 +18586850180 +18807153355 +15819869195 +13930768283 +15834620639 +18509837167 +13921120658 +18855141352 +13935350716 +18598809217 +18575591018 +18597657267 +13952385910 +18552886928 +15179107303 +18869488765 +13925513175 +13691932239 +18590089840 +13614520164 +18897586867 +13645634060 +13959273522 +18853167440 +18541754503 +13943398594 +18871608264 +13692626218 +13607019373 +13699081158 +15832836761 +15113183802 +13957195202 +18854077710 +15191413158 +18538557415 +18805181493 +13602457222 +15862470726 +15157425598 +15100773039 +13901350515 +13938476019 +15197756575 +18534549345 +15816298563 +15830124379 +15191061798 +15846555211 +15833138017 +18875182882 +15805034798 +13694073408 +15129962968 +15802206979 +15845232524 +13997238991 +13961106117 +15157520761 +15183315492 +13952809684 +13939601801 +15185984445 +15142690281 +18891115018 +13672096800 +18898300141 +13603663568 +15802797629 +13991966824 +13941676780 +15849378033 +18566317020 +15870266691 +15867839467 +15874333661 +18546419409 +13905923202 +13658527031 +13661513901 +13651645714 +13684018918 +15167597483 +13635106718 +15193148780 +18584154282 +13941409816 +13908764385 +18559459923 +13965096574 +18889599174 +18568122424 +13902843077 +13604408828 +13600571751 +15845269051 +15106507966 +15813163022 +18892926778 +13624812472 +13655146456 +13663440841 +15149173462 +15876350371 +15881276287 +13966283581 +15831265696 +18506813249 +13921899947 +18502044581 +15103860692 +15164899235 +18562440069 +15858756719 +18555110263 +13635206394 +15110115854 +13952098949 +13603073169 +18883723325 +15152509717 +18801472408 +18862134160 +13624489487 +13958621387 +13999716509 +13907317395 +13926354329 +13679041067 +15849700409 +15839608074 +13682628000 +18551523932 +13964424546 +15127745674 +15884279311 +18841730395 +18540048430 +18800341474 +15196915089 +13658259991 +18582656159 +18820746880 +13678533329 +13954419667 +15819141286 +15140026316 +13935159861 +13671059471 +18862883923 +15148298311 +13697425493 +18857697559 +15116244257 +13620698353 +15118867791 +13948692002 +18894644539 +13645590636 +15837140999 +13651454060 +15168229786 +18503463582 +15105559959 +15104715004 +13940069897 +18857842955 +13672480666 +18862668678 +13601008618 +13693146956 +18504203935 +15804977096 +18593963563 +18850404602 +13637836975 +15846754162 +13654815888 +15142401786 +13978452408 +13685860594 +13623263529 +13603454560 +13924804878 +13979959151 +18866399881 +15105443724 +18867217250 +13908489427 +18879152672 +15140271422 +18891606793 +15855571101 +18890341770 +18508992368 +13654949262 +18810934885 +15816166018 +13643404948 +18896826760 +13641665583 +18563697328 +13666940640 +15135955768 +18874174972 +15889614002 +15858419555 +15887481267 +18835536688 +13904157672 +15891348011 +18819445016 +13984735290 +18894086596 +13681353911 +15193713972 +13938378002 +18835575941 +13933368859 +13924325383 +15129966812 +13640470501 +18567898200 +13954692473 +15171430344 +13969750812 +13984541752 +18807782587 +15192702648 +13994328998 +18532958694 +18521939837 +13638086372 +13675940087 +13972206909 +18533239771 +15829612204 +15153528919 +15863924585 +15886806184 +13957757252 +15844428096 +18813936854 +15182053329 +15197408206 +15126200494 +18500149359 +18596091204 +18848685773 +15806641000 +18807456219 +18869400448 +18564480421 +18545182505 +18840495043 +13946499299 +13652099462 +15167513706 +13668396295 +18500397769 +18562942202 +13946914638 +15853121294 +18559401890 +13632187361 +13993604668 +13978762275 +18556567284 +18875346012 +13631374734 +13962718040 +18815628304 +18850027296 +15117051808 +13965351894 +18822416728 +15194602224 +15136394296 +13948792176 +18525286845 +18570736032 +13655678844 +13974580562 +15851932958 +13651191182 +15148145210 +18845577502 +18534486751 +18507459568 +18581045846 +18838716562 +13651487380 +13668150041 +18523128198 +13924790020 +18855511928 +13917242425 +18580916551 +18826107712 +13629749193 +18557951435 +15153071399 +15115155847 +15166864867 +18564322830 +15803181752 +15899381893 +13601655787 +18546878219 +18838345910 +15848737824 +18579912139 +18534868856 +13658602347 +18800073948 +13634699348 +18834694229 +15825020465 +15854612830 +15114570280 +18839883008 +18528605066 +15182712220 +13690708632 +13975840723 +15137388447 +18846414321 +13678271689 +15860651858 +15898061049 +18572936219 +18523016356 +18839769869 +13915507207 +18521192997 +13601873859 +18532935171 +13975350041 +18892662804 +13684817616 +13665364105 +18850978387 +15180988594 +15835199110 +15807476163 +15875244525 +18812504210 +18540185725 +15836474169 +15802827351 +18807864478 +13613591206 +18872019046 +18564705434 +13642271404 +15165115705 +15830146432 +18894998051 +13987642792 +18510518928 +15147373974 +13914515769 +15837440361 +15867856760 +13914279284 +13653777790 +18839760097 +15127512668 +18565695666 +13634124585 +15801775341 +18808386031 +15808313909 +18580082656 +13986823877 +13998420893 +15866837646 +13990231034 +15809954624 +13651058497 +15113255669 +15852581993 +13606196363 +15845153520 +15802815358 +15166194165 +18897097349 +13957044108 +15114791782 +18539537526 +18844282471 +13690761953 +13971110115 +18560869888 +18841437292 +15857847198 +15816926745 +18887262631 +15137407770 +13985901829 +13635516935 +15807876738 +13958281126 +18823463539 +18884658035 +18853386921 +13611922580 +18592763310 +15809043561 +13997956916 +18866978950 +18594841928 +18839764084 +15155168623 +18532222548 +18503507261 +18869011254 +18848630932 +15830684523 +13601980388 +13630434502 +13647815569 +13690387751 +18806745243 +15107572763 +15171863200 +13948326173 +15188290994 +18887421800 +15830108159 +13671159664 +18577628084 +15857645544 +15825474672 +15166856146 +18835256780 +15183144223 +18572311320 +18895014848 +15889395234 +15804891327 +13623879870 +13995789624 +15182932493 +18874086618 +13609751630 +13901949738 +15111883152 +18881105051 +15196964512 +18869559994 +18807039076 +18814896393 +18515462053 +13999243319 +15172490488 +15193216748 +13974816024 +18840526328 +15156200702 +15133835291 +15860197117 +15151769250 +15199675899 +18568170117 +13939764415 +13913219732 +18590031953 +15847830532 +13919010840 +18553018029 +13622030676 +15113515503 +15181739460 +15884198541 +13675300840 +13952482622 +13693924904 +13699163434 +15174164343 +13625307567 +15162510266 +13622608089 +15824170857 +13924490794 +13629857338 +18828015719 +13924220450 +15800678934 +15114343543 +13605784726 +13681191436 +13965959465 +13950134760 +13957324390 +13956990166 +18520697197 +15184276569 +18888126321 +13982229261 +15181062893 +13919067119 +15112943648 +15144880259 +15886053527 +18590807592 +15183963406 +18563587786 +13912101986 +18531674193 +18803287127 +15111616457 +18535751073 +13937828954 +15163264643 +15184028009 +15807956918 +13988604396 +15819494069 +15807336882 +15852655233 +18540650510 +13698949558 +13655439152 +15170585303 +18545908818 +18825035523 +18892346017 +15129959912 +18500535884 +13916291772 +18528797740 +15101008662 +18580416009 +15879069488 +18502318333 +18874198522 +13922604670 +13625192359 +15868760717 +15127392180 +13633343464 +15855195524 +15898659731 +15173887205 +13987680737 +18592645778 +13689864898 +13624238803 +13967985023 +13634655397 +15813106736 +15835657948 +18825696628 +15160504726 +15804036401 +18562448780 +13947500568 +13602611214 +18813680486 +15830177886 +13625673496 +15188465307 +15870131085 +13952341131 +13936266078 +13651966451 +13648031611 +13649903165 +18887160327 +13656058166 +18579459016 +13961717849 +18515927257 +13639078700 +15152868895 +13930693886 +15872934887 +15123827509 +15173238639 +18595639154 +13943924329 +15174605655 +13656717629 +18806494632 +18535477793 +13917796427 +15801605053 +13698435828 +15842706412 +18843788290 +15815912375 +13944660357 +13658144146 +15173993206 +15148112012 +13954794601 +18528314348 +15881526145 +18598344404 +18872434425 +15109289977 +13935504916 +13680103866 +18505674739 +15187002712 +15877552309 +13923918774 +18808096321 +15817503275 +13652503043 +18580694460 +13635348244 +15169271369 +15175962949 +18552609533 +15180697063 +13951472203 +18535705971 +13992250901 +13652539607 +15114013345 +13934772511 +15169279232 +15898179116 +13656769112 +13919023224 +15125110755 +13692877145 +15166407740 +18811402531 +18869270231 +15184798973 +13997358131 +15863802968 +13611380651 +15131667302 +13654871201 +18573753927 +18897971329 +15857638226 +13919925369 +15152280737 +13909242436 +13667399323 +18562647945 +15122610883 +13645723370 +13695788449 +18558707114 +15154268128 +13911759525 +15175878400 +13996179633 +13919793434 +18884326498 +13630016649 +18820527275 +13943768607 +15147003509 +15818774141 +15875167584 +15823795333 +13900428986 +15824972743 +18574723008 +15820450529 +15181742715 +18896325908 +18816423291 +15161397763 +18818625965 +15899845980 +15152274762 +18527016468 +13687636706 +15869294784 +18595706580 +13600636186 +18588107532 +18898165077 +13926548470 +18549255299 +15842478234 +13947009833 +15822394115 +15119029506 +15152715833 +18889541024 +18844963394 +15850720645 +18527291435 +15185227196 +13955292450 +15161574444 +13929974590 +18550328135 +15182152022 +13625535200 +13996117669 +13991603906 +18592650954 +15194935098 +15153257162 +15844957190 +15100394517 +13937980962 +13649567732 +18897054980 +18813805658 +15114673254 +13608700661 +18580302074 +15103956813 +15133538845 +18589770876 +18804468600 +18564174960 +15111216988 +15171375567 +18546318274 +18898716469 +15129063451 +15842206980 +18508261250 +15168567780 +15895224522 +18524565170 +18551898475 +13668227467 +13616160423 +18864848333 +18899165885 +15876539045 +13627963027 +13952916633 +18579164483 +15134284195 +18558986486 +13927141105 +18834991493 +15888226478 +18833310462 +15852595287 +18812023582 +18828062955 +13956062942 +18844232196 +15121264337 +18584592843 +18822124885 +15841543165 +18566872855 +13664880591 +15825382170 +18571964947 +18835838007 +18519550206 +18800568933 +13616532135 +18857000979 +18839420012 +18582032310 +15112924209 +15117718686 +18820847986 +18515111450 +15867646782 +18893220087 +15111060635 +13904328127 +18810594597 +15838453622 +18833447724 +13656730832 +18816024221 +18850312964 +15835590441 +13984267282 +13948314753 +18505236337 +13988991616 +18825095694 +15156137812 +13695973229 +18865197749 +18887805408 +18561187879 +13663264777 +13637763679 +15153864310 +15124824616 +13634072626 +18569149881 +13661170130 +15136390358 +15131960272 +18556740243 +13698757584 +15180184367 +18827280780 +18591208821 +13973001496 +13975400602 +13987061506 +13941832907 +18515327340 +18564041781 +18547206370 +18801325040 +15138328143 +18563023908 +18584511601 +18806180448 +15807626241 +18841864815 +18817172274 +15811424985 +13667176393 +18823153525 +15164589862 +15183989539 +15137292414 +18815867458 +15833282375 +13647271001 +13916892218 +15899172688 +13914844310 +15893136673 +18595432161 +13664272929 +13666901204 +13621195069 +13978018333 +13930935179 +13668440996 +15197954821 +13999699495 +13663092408 +15899812265 +18802318545 +18556385209 +18585074069 +13619117727 +18563625691 +13952805864 +13990004130 +13679101969 +18859229110 +15119039670 +13651448993 +13979192994 +15836967832 +15873494356 +15150807978 +18875193161 +15851020643 +13918926126 +13925970148 +13930772281 +18564915421 +13929318375 +18567658717 +13920158493 +18530881202 +15873511095 +15126325813 +18552021920 +18550735841 +13988621397 +18873243480 +18502248881 +15883724281 +18559407986 +18891013680 +13688681398 +15178022071 +15809592309 +13626832730 +18553818342 +13661387683 +15874721060 +15184392396 +18877511640 +18891823584 +15847902985 +18503682108 +13607438066 +13900005566 +18858073839 +13933424081 +15855479142 +13914641078 +18883230271 +18593770100 +18513933226 +15838932111 +13978450199 +15804121110 +15167417646 +13605290746 +15837283414 +15830401785 +15179873394 +13600672859 +18896900947 +15825566461 +15197011724 +15815253986 +13914549726 +18573647470 +13937236955 +15100280124 +18835933444 +13988536569 +18821755617 +15829299364 +18585978901 +15124366462 +15848213747 +18546906474 +18865408982 +13942043280 +18588777343 +13922141772 +13698093946 +13639158107 +13609000250 +13904449682 +15129301689 +13948285751 +18579266837 +18895218680 +18848767297 +13689811980 +18864519607 +15105962293 +13998469909 +18582792240 +13915145851 +15805688141 +18544306492 +18860328688 +13628826854 +13973566007 +18598436947 +15859676310 +15104606246 +18824207492 +15810644670 +15176454697 +13623482889 +15196571897 +13960056824 +13967418904 +13924998016 +15894496481 +18803857298 +13993185881 +15156166086 +15149954501 +13695165398 +18864145151 +15100701803 +15884241761 +13934970612 +13680493543 +18546627210 +13631617750 +15895921331 +18596205025 +18566433310 +15884428540 +13930959044 +13619998579 +13663093903 +18526855830 +18856814307 +15895935259 +13660328179 +18877301477 +13635074750 +18594400021 +13992311300 +15139476315 +15166010328 +15862136850 +18552580557 +15107985175 +15141505696 +18855056726 +13624867178 +15159661528 +13681796618 +15194815823 +15868587888 +18856395697 +18505401394 +18841072705 +15862897198 +18856803772 +13672275153 +15884484747 +15870077888 +15183654299 +15196829044 +18821801417 +18509464987 +15166407673 +18536465700 +13605561353 +15883864529 +15176316090 +15163088675 +18833768762 +18832476847 +15195030856 +13654983026 +13998719333 +13975411532 +15860156649 +18841149728 +15149655370 +18526262210 +18555475146 +15853806667 +18503097655 +18818763735 +15174403949 +15156337841 +15830431084 +15165292462 +18570572595 +13658140212 +13667935205 +18857125661 +13915223428 +15812307379 +15187239193 +15120989497 +18515636117 +13965368473 +13625319518 +13909216595 +13672219547 +18528965250 +15810389634 +18815205241 +15102771729 +13635132698 +15106128605 +18823397700 +15878123792 +15148372531 +15826690484 +18591319721 +13957933382 +15167338718 +18845322262 +13904389183 +15808235235 +15131358196 +18848244124 +13694079079 +18551182632 +18581893553 +15132243874 +13618487354 +18558157461 +18844107419 +15852832692 +15887502614 +15101208535 +15185522718 +15143007975 +18875647180 +15886694799 +13669599228 +13642795387 +18591082267 +15118724920 +13997393129 +15844045575 +13914123719 +15108800457 +13620426687 +18832495518 +13644696240 +13689349750 +15897421137 +15182013964 +18811150924 +18892455192 +15134149489 +18563058167 +18510900309 +13680097697 +15867155064 +15159421148 +18809412197 +13680155277 +13695399276 +18520287026 +18860928952 +13601588820 +15867799698 +13683548701 +13662329221 +18854138524 +18503378112 +18589550560 +15181316508 +15140986872 +18873376458 +13992158467 +13672547673 +18545738267 +13906372377 +18511435329 +15130989754 +15896956334 +13914216570 +15147977225 +15157511741 +13650744231 +15108426175 +18857417105 +18828835501 +13605201742 +18873482597 +15839795488 +18579619437 +18591747066 +18872103379 +18592884197 +18862490215 +15832145358 +13660630028 +15195200027 +18835208677 +13626021531 +15818805403 +13923590037 +15879718559 +15154571137 +15867310664 +13627395488 +15855822191 +15899398016 +13654376507 +18588710768 +13989999967 +13615665210 +13925880543 +15194970590 +13662519925 +13615083674 +13968614720 +15103827330 +18867432532 +15107503521 +13685739411 +13985241333 +13975335808 +18834164818 +13621085353 +18844952990 +18563283197 +18836271734 +13615742487 +18841782487 +18821066056 +15138275305 +15850814018 +15182800596 +15809413019 +13622165329 +18539890407 +13984319481 +15194545551 +18878141789 +18820787186 +18525760866 +15136910543 +15803072631 +13958765703 +18843400388 +15135039972 +18853553545 +13911396251 +15139296514 +18568511780 +18554296838 +13956150355 +13653422836 +15805065028 +15807751430 +18501200443 +15878853876 +18504374801 +15827920957 +15812523285 +15174296185 +15187792891 +18522371849 +15109042642 +15175380750 +13668225350 +15182267132 +13605389118 +15151764456 +13606204058 +15118146335 +13684055503 +15893818140 +13615566660 +18511056689 +13687717788 +15172822115 +13970928879 +13634839092 +18533588685 +13655966226 +15181778272 +13994968338 +15187032886 +18570875407 +15809953509 +15136131138 +18552975299 +13996192744 +15822603011 +18500064575 +13665067745 +18560168214 +18531767272 +13615435684 +13603061403 +18875337728 +15839018856 +18821790915 +13915282242 +15132128072 +15848856801 +18827727318 +13990357309 +15156913159 +13690009668 +18555419946 +18596607724 +13680581881 +15894574217 +13918575628 +18512869017 +18564797208 +15148733774 +18806858368 +18558293881 +15870293963 +15846127730 +18819960383 +13912768863 +15816405169 +18850321115 +15899974006 +13606903114 +15162465615 +15801166027 +13690773608 +18559522882 +15170993795 +15823457910 +18556987343 +18521514174 +13638822626 +15891211203 +18531772940 +15145640423 +13902402968 +13607663621 +13619007608 +18578371824 +15143874272 +15868335972 +15836389760 +13964241358 +18825275502 +18577670119 +18589172468 +15124093224 +13693098066 +13689694300 +18565966903 +13621217456 +15197651990 +13611404664 +15895906945 +13909129298 +15818701391 +13691109296 +15188720555 +18874395541 +15829703040 +13633246314 +18823045516 +18557460632 +18528636490 +13670526924 +15831238589 +18558740281 +15155851809 +13650359032 +13639075374 +13669040034 +13650311887 +18842084626 +18861196949 +18889345590 +18558978122 +13981955737 +18852831274 +18839757804 +15172473018 +15817877042 +18553918228 +13916126584 +13691664171 +15168508110 +13936719562 +13613164126 +15874074211 +18568940341 +18511936464 +13600906481 +18832742253 +15107642768 +18875942438 +15114678707 +18524563410 +13609090736 +15864419395 +13607583221 +15860788846 +15138632072 +13678610894 +15822518322 +15103988672 +18546575781 +18804859632 +18561085978 +13927203797 +13666500214 +18823514437 +13949511446 +18596269546 +15856570225 +18581677479 +15891143096 +15147389501 +13915534852 +13661162574 +15131219870 +18555686062 +18586038122 +18562555033 +13670230061 +18576518537 +13998024462 +15199533396 +15818126880 +18522929718 +18892969241 +18505840852 +15830102283 +13901736852 +13600760132 +15864562295 +13959349693 +13921250372 +15168994755 +18887132165 +13618777069 +13615104634 +13996614360 +15815016152 +15185925667 +15826144583 +13973868484 +13686443407 +13625482441 +15132587611 +13680123336 +15109055030 +15136393454 +18514076227 +18870608806 +18599592608 +18530638006 +18852100706 +18842659351 +15805217180 +18591210631 +15819264907 +15176909587 +13695298825 +15166465345 +13631752251 +13961341665 +15826713301 +15112424510 +18541361633 +13951091445 +15868768532 +18589763471 +13983160165 +18877101072 +13664116029 +18533202627 +15126341974 +18810780174 +13641678399 +13677987629 +18813871044 +13924562272 +15134115894 +13933924223 +15149603636 +13974559775 +15839015120 +13982840458 +18511529637 +13952406101 +13624987231 +15888231898 +13644446055 +13908017332 +15199770541 +15839845418 +18859737453 +18576759834 +15182252368 +13628460054 +13666548052 +13900814449 +15147643837 +13926125303 +13965298392 +13970415055 +15895734989 +15171837322 +18519389458 +15865278359 +13630623840 +18528421285 +13944485758 +13995352361 +13933610803 +15151626594 +18578135942 +15867758793 +18592112519 +18860558332 +18539311777 +13624387216 +13623387332 +13677915672 +15123854937 +13925389758 +18519999355 +13987080970 +13923849476 +13626026441 +13922607581 +18536384501 +18525385644 +13932763571 +13607657665 +13925869060 +18896744372 +15146706614 +15891794259 +18514340140 +15823103328 +13944224507 +18532664914 +15885567973 +18819867322 +15167655452 +15898490059 +15878161911 +13662441374 +13690206946 +15146192690 +18502402223 +18597575394 +13652886862 +18574341586 +15841521897 +15821091344 +18539949315 +18898285399 +13917385115 +13632219967 +13610544485 +18879899866 +18829111352 +18544953237 +13924700636 +13686932883 +15891403854 +18540713788 +18504356724 +13628962607 +18847489358 +18551473006 +13932942911 +18846415368 +18811289502 +13991936630 +18598311205 +15185912847 +18517929435 +15870351135 +18870252148 +15180200055 +13658919707 +15114418477 +15809290732 +13665032865 +13698446907 +18826621479 +13991803775 +13934549826 +15896816909 +13983326963 +13969384581 +18501088338 +15150010118 +15116541395 +18873354323 +15104253275 +13695267474 +13611898332 +15841571063 +13948691294 +13990775075 +15862610921 +18561819809 +13625588512 +18898575949 +18805274691 +15147150679 +13661507330 +13936236267 +18517465927 +15893542276 +15894526363 +13928473216 +13624475898 +13983412261 +18575831509 +13953946874 +15894388609 +13915269986 +18507063417 +15863299465 +18870177624 +15888026158 +15191217357 +18882648593 +18808164897 +15153390393 +13638411812 +13674082631 +15135080151 +18503669248 +15897163211 +18878189753 +18546593647 +13980167988 +13628814301 +18551806274 +15121846525 +13988011773 +13602797475 +18883358394 +15862527635 +18512165618 +18588989814 +13691326349 +18555011333 +13941997331 +13952052501 +18572144786 +15108898102 +13694136112 +15164329843 +15100635224 +13636784502 +15118695215 +18578106369 +15178448492 +15126064161 +18887423375 +18879088664 +15186376829 +18857944629 +13625719360 +13973249591 +15196481691 +13692109916 +15834918845 +18557935267 +18598762219 +15815808810 +15164375306 +18835677413 +18896935969 +18887795905 +18503875344 +15876615401 +15853671657 +18543080759 +15129762398 +15117246658 +18810390523 +15831300712 +15164486580 +18598332012 +13920965740 +18801675037 +18892571749 +13993800592 +18849159207 +13685486303 +13671778209 +18854293979 +18896142304 +13639572130 +15157240437 +18872006568 +15893397054 +13689741699 +18574973972 +13618114001 +15824845166 +13622666997 +15139413471 +13984066871 +13967065078 +18838614602 +18893706252 +15872030167 +18887411848 +18810854034 +18886468079 +18532935857 +18881160881 +13942412559 +18813618664 +15836624830 +15114466479 +15169357806 +15814148511 +13989109704 +18817425348 +13603928404 +15185523060 +18887635501 +18563757290 +18579771529 +13608813440 +13681653785 +18893295152 +15812227065 +15122499332 +18558271245 +15174656049 +13614301350 +15108629399 +18588236263 +18581446186 +18838528603 +15885614805 +18824975985 +18876978433 +13962155693 +18541287513 +18851570082 +18530157933 +15148717278 +13954096366 +18591815040 +13697159397 +15846860414 +15102020258 +15184231098 +13626574046 +18851802991 +18874141551 +18852032017 +18826987863 +18594554889 +13931125417 +15183237035 +18828736955 +13927611499 +15163867215 +13935872902 +13969282737 +18563011464 +15128496261 +15121626922 +13946603760 +13991168224 +18507764629 +18527752687 +13999037322 +15166890130 +13687407882 +15147016289 +15105281544 +15883104287 +18531446805 +13642037770 +18811482908 +18580614377 +15151725716 +13693572084 +13922638185 +13998608508 +18855810144 +15828159800 +18809942009 +13631370727 +13653301100 +15137100477 +13934999370 +13655786609 +15889958009 +13698209807 +18515151451 +18524293367 +13942582168 +15136317965 +18877632297 +13680986557 +13645454338 +18506382105 +18854604369 +18507771427 +15127824258 +18595440684 +13936638579 +15114241562 +18863099746 +15127163886 +13984938749 +13683072848 +13904467261 +13920698524 +15143733794 +15119178505 +18541231114 +15179352478 +15898520882 +15169765884 +15863761714 +15132078506 +15156275434 +18566766828 +13627100779 +13975118639 +15166405394 +13907378442 +15148872014 +13978969184 +18535492981 +18823457276 +15194168613 +18824998116 +18881514751 +15856280682 +18505477653 +13608327964 +13688354876 +13918057945 +18543012640 +18880041353 +13626914510 +13982427059 +13627246040 +15840991456 +13929448313 +13935516956 +18594595177 +13927835691 +13966936726 +13995332386 +18869493920 +13618875245 +13612670788 +15105096102 +13995494615 +13676494827 +13624314860 +13637723504 +13638503644 +18594467159 +13998512578 +13673261789 +13932778261 +18846639503 +18817415224 +18858547693 +13672927853 +18542658858 +13603784109 +13670976146 +15149197889 +18553640679 +13631159172 +15807573734 +13954883311 +18586577225 +13646217542 +13955227742 +13968238626 +13950218035 +13909693993 +13956256678 +15858697927 +18858272622 +13659837117 +13638838796 +18884414354 +13916688784 +18856894959 +18525641103 +18857772381 +13675776144 +18552437392 +15876568602 +15145923590 +18564025191 +13922817493 +18507691777 +18894537199 +13916455046 +15814292325 +13935746708 +15859152968 +15897480815 +18596817637 +18832505220 +18559248968 +13627262667 +13961371484 +13690098804 +13972415327 +15155072122 +13679525869 +18558727238 +15818777955 +18507317418 +18581408881 +13920877139 +13912525313 +15823742191 +15863740532 +15137600698 +13651933774 +15198922278 +18891741492 +18855704957 +13614338807 +15803820968 +18557849402 +18514447533 +18583005943 +13977296694 +18510655310 +13601122018 +13965552684 +15169258003 +13683016820 +18819077441 +15105002549 +18556055325 +13602070151 +15845933203 +13697565169 +13944093163 +13952090164 +13979754881 +15109087071 +15865805796 +18576597687 +15150712785 +13616913703 +13931674830 +15870098838 +18860998620 +13986822629 +15839392783 +15181908062 +15130591602 +18842400846 +13600501414 +18800890456 +15860876245 +18878129685 +15858098868 +15802664797 +15196662703 +13688933990 +15884822641 +15162449645 +13996937485 +18517789132 +18891171298 +15174227885 +13996078975 +15843184359 +15176115154 +13681289366 +15153135419 +18865047016 +15827593475 +18588750374 +15153263375 +15828981109 +13680409693 +13643200955 +18564117985 +15852379710 +13924358033 +15112660541 +13645813703 +13632592151 +13662409663 +18861193902 +15194184801 +15173125554 +13637816757 +15154228612 +13666711650 +13954788414 +18872068989 +18519068941 +18544842595 +13911170566 +13626391028 +15888267362 +13900266812 +15800738293 +18531064743 +18834387165 +13674663481 +18823872057 +15850867445 +18875449914 +18576710674 +15139345186 +15106118194 +18572831194 +18546835068 +18596533953 +18801992622 +13673451958 +13635055685 +13927733516 +15891354861 +18557741036 +15152439990 +18563053794 +15169391731 +15141080917 +13613390164 +18588304465 +15898812596 +13664682663 +18856705999 +13658677515 +13684120171 +13684549337 +18893497310 +15891646829 +15137564874 +15136220354 +18579810918 +18523493693 +18545332728 +18516611779 +13904671545 +18516136681 +15897597223 +13994313208 +15883935650 +13625627324 +13667620611 +18821280929 +18582595919 +13927263004 +18559169050 +15879736331 +13990139721 +13976175050 +18813130694 +18850063163 +18525202054 +15102879799 +15808385311 +13602980191 +18842812099 +13615828091 +18585746185 +15185415263 +15822405784 +15170217163 +13699034357 +15117203442 +15166069891 +18515928349 +13602403345 +13999092634 +15801436540 +18539503874 +18544261169 +13627280926 +13607183496 +18812347744 +13993551606 +18514030368 +15164367943 +15853833155 +13982855460 +15882173699 +13976426407 +18842383820 +13982650256 +15158443587 +18810166343 +15881267664 +18882743709 +13985374016 +18537387907 +15897994809 +18824137833 +15809160573 +18588229436 +15838264193 +13634868918 +18894333421 +18845454021 +15836696487 +18899292155 +18524929934 +13956119198 +18550254202 +18899840166 +18579150155 +15845621772 +15186400175 +13940946655 +18860863986 +18577440068 +18807673481 +15893424228 +13981795552 +18504140361 +15118396328 +15851033604 +13650872863 +15125132620 +18840133559 +18581896516 +18885536031 +18839733959 +15166822987 +18556017375 +18520365483 +18875764376 +18846925690 +18549828917 +15834456463 +15834338354 +18873581466 +13633386080 +15896269812 +18876302259 +18859245994 +13900845528 +18831516611 +15187708130 +13610735997 +13923426557 +15820001162 +18502821446 +15884784632 +18556149925 +15806577734 +13958728973 +13689638136 +15863264771 +15824225297 +18866537250 +18844899976 +13916192250 +15146551023 +13634319813 +15163291432 +13904596636 +15162524892 +18538336484 +18564504634 +18578780316 +13697347419 +15875180168 +13977263322 +18816942724 +15879331711 +15898751867 +15867478062 +15821106125 +15108220571 +13647382408 +18594893648 +15873389766 +13972532884 +18579372996 +18805301641 +13693264755 +13909984908 +15170888703 +13671515665 +15833579586 +18519178503 +18591431331 +13677103765 +13907649961 +15158958433 +13683447008 +13948144816 +15843672884 +13938149416 +18883290940 +13637166089 +15132799906 +18577345798 +13919785542 +13619734173 +13647339901 +13989192973 +13676547540 +15807625072 +15823856186 +18807678362 +13930286077 +13613575472 +15886683401 +15805158317 +18810177658 +13633489022 +15197695147 +15190715049 +13613151229 +13964398319 +13970221424 +13664524748 +13950226772 +18825866241 +15844445214 +15159288836 +13970006355 +13695636777 +18541432494 +13955781661 +18544779168 +18882646494 +13655217378 +13616092493 +18579223427 +13659323563 +15839531279 +15865685382 +18841102266 +15867366545 +15136254946 +18810659426 +18538434888 +13986132249 +13649651875 +15141036421 +13923703284 +15817370385 +18877477847 +18557338952 +18553161528 +13699596184 +15845586440 +13664411297 +18566711206 +18511157067 +15827981114 +13686746913 +18846437401 +18866322213 +18549908566 +18509661085 +15112245594 +13974669326 +15107575957 +13962033395 +13622488422 +13677395222 +15127473863 +13943092809 +13621621871 +18841614827 +18508807365 +18894458503 +18850663745 +18587100551 +18598863221 +13624051123 +18534224412 +15170797618 +13982475713 +15804474797 +18552292068 +15809552907 +18808564913 +18821555462 +18822940285 +15148449019 +13610755194 +18884503523 +15146823830 +15148491681 +13983558710 +13608676121 +15858657376 +15814424956 +18585931530 +18546830726 +15877507861 +15857697312 +15829235596 +18800923066 +13622382233 +18859247169 +18514131843 +13669803331 +18857591026 +13967362334 +13934482681 +15812316694 +15157255408 +15868985590 +15885489595 +15127090459 +18860376494 +15859291066 +13638159788 +13638182637 +13989629924 +18885210390 +15194101971 +13663943989 +15139206933 +13927109003 +15117068319 +15174684994 +18834319459 +18532841606 +13935914693 +18891037224 +13607164091 +15158397090 +13905130923 +13972210709 +18502023805 +18858496760 +15868886031 +15116131529 +15102586376 +15832447497 +18564711516 +13659364851 +15198490570 +15863700984 +18809263009 +15181614248 +18548368790 +13909060649 +13930005762 +13622366562 +15177148019 +18870247959 +15881581752 +15869090971 +18812612392 +18868227329 +18891056592 +18833595461 +18579186581 +18804089857 +15173693904 +15833346655 +15867380640 +13620868880 +18814538355 +18828795760 +18521016589 +18893182908 +18520380463 +13960454103 +18882038731 +13968862841 +15106943023 +13600599498 +18801195557 +15844079308 +13973440757 +15853317202 +15100191379 +15157521499 +15152300214 +18516519839 +18578026414 +13981133226 +15893549561 +18535450886 +13656925637 +13634754824 +15885986526 +18878843083 +15820590176 +15872057262 +18519644669 +13629895671 +18885620407 +18554441512 +18549294385 +13641143767 +15818120221 +13663015269 +13980067948 +15196945460 +18841336059 +13677218601 +15142521341 +13624096453 +15196735002 +13988234923 +15101728524 +13698379215 +13681164312 +18580776207 +18557022554 +15124044794 +13987163426 +18549617433 +13621546485 +18553199825 +15181513484 +18516596885 +13655738054 +13998046298 +15107205607 +18552271660 +13976350912 +18894150853 +13918226959 +18869805232 +15159626612 +18819505125 +18507926626 +15124945293 +15144593410 +18552504544 +15172560367 +15869246832 +13666906616 +18891039230 +18822416856 +13646577809 +15129270027 +13947807506 +13946890546 +15142898116 +18592557958 +18556185984 +13985899650 +15114243844 +15109518041 +15151571234 +18515678862 +13617206887 +13677687876 +15846755404 +18836374597 +13958191351 +13658683391 +15861980796 +15836109200 +13974994495 +15172317742 +18540214193 +13621962794 +13963812996 +15856460455 +13674089597 +15188105320 +15114967612 +18893649819 +18586515143 +15873635857 +15158550697 +15841399938 +18843995899 +13680601397 +18524059766 +15111008374 +15132980792 +13666479035 +18894401204 +15808307810 +13641037406 +15185787603 +13690222878 +15834654736 +15839093899 +18808886632 +18553052708 +18588672429 +18894032472 +15840020827 +13965874532 +13908658080 +15885439995 +13639670566 +15815790316 +15890474491 +15893475019 +15800938315 +15822621177 +15884696100 +18588817801 +18506451245 +18896995949 +15863127426 +13931786836 +15813916175 +15109530648 +15802530068 +13930700673 +13936693909 +15848623181 +13929990292 +18846446938 +15878856621 +13691819787 +18809659036 +18835488667 +15849867037 +18880866936 +13975145923 +13685795996 +18808341647 +13962180372 +15171038446 +15127012647 +18586033493 +18803477171 +13648405356 +15819648076 +18847231930 +18804115546 +13950137792 diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/randomphone.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/randomphone.py" new file mode 100755 index 0000000..ca2632a --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Hash/randomphone.py" @@ -0,0 +1,5 @@ +#!/usr/bin/env python3 +import random +import sys +for i in range(int(sys.argv[1])): + print(random.choice(['139','188','185','136','158','151'])+"".join(random.choice("0123456789") for i in range(8))) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/.gitignore" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/.gitignore" new file mode 100755 index 0000000..e9055a0 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/.gitignore" @@ -0,0 +1,3 @@ +test +*.huff + diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/3_PB17000002_\345\217\244\345\256\234\346\260\221_Huffman.pdf" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/3_PB17000002_\345\217\244\345\256\234\346\260\221_Huffman.pdf" new file mode 100644 index 0000000..3f0d474 Binary files /dev/null and "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/3_PB17000002_\345\217\244\345\256\234\346\260\221_Huffman.pdf" differ diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/CMakeLists.txt" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/CMakeLists.txt" new file mode 100755 index 0000000..df46460 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/CMakeLists.txt" @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.10) +project(Huffman) + +set(CMAKE_CXX_STANDARD 11) + +include_directories(.) + +add_executable(Huffman + huffman.hpp + myzip.cpp + ) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/README.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/README.md" new file mode 100644 index 0000000..bbac831 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/README.md" @@ -0,0 +1,7 @@ +# Huffman压缩软件 + +效率很一般 + +配有简易Python TK图形界面 + +需要cxxops \ No newline at end of file diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/gmyzip.py" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/gmyzip.py" new file mode 100755 index 0000000..01c4e2c --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/gmyzip.py" @@ -0,0 +1,124 @@ +#!/usr/bin/env python3 +# my simple compression software GUI frontend +# based on tk +# by ustcpetergu + +import tkinter as tk +from tkinter import messagebox +from tkinter import filedialog +import subprocess +import sys + + +window = tk.Tk() +window.geometry('800x600') +window.title("GMyzip - myzip GUI frontend") +# canvas = tk.Canvas(window, height=500, wid=800) +tk.Label(window, + bg='red', + text='Welcome to GMyzip, a simple file compression software', + font=('Consolas', 15)).grid(row=0, sticky=tk.W) +tk.Label(window, + text='File: ', + font=('Consolas', 13)).grid(row=1, sticky=tk.W) +entry_val = tk.StringVar() +tk.Entry(window, + font=('Consolas', 13), + textvariable=entry_val).grid(row=2, sticky=tk.W) + + +def choose_file(): + entry_val.set(filedialog.askopenfilename(initialdir='.', title="Select file")) + # window.filename = filedialog.askopenfilename(initialdir='.', title="Select file") + pass + + +btn_choose = tk.Button(window, + text='Choose file', + bg='green', + font=('Consolas', 13), + command=choose_file).grid(row=3, sticky=tk.W) +tk.Label(window, + text='Mode: ', + font=('Consolas', 13)).grid(row=4, sticky=tk.W) +mode = tk.IntVar() +rb_c = tk.Radiobutton(window, + text='Compress', + font=('Consolas', 11), + variable=mode, value=1 + ).grid(row=5, sticky=tk.W) +rb_x = tk.Radiobutton(window, + text='Extract', + font=('Consolas', 11), + variable=mode, value=2 + ).grid(row=6, sticky=tk.W) +tk.Label(window, + text='Options: ', + font=('Consolas', 13)).grid(row=7, sticky=tk.W) +isverbose = tk.BooleanVar() +cb_verbose = tk.Checkbutton(window, + text='Verbose', + font=('Consolas', 11), + variable=isverbose, + onvalue=True, + offvalue=False, + ).grid(row=8, sticky=tk.W) +isforce = tk.BooleanVar() +cb_force = tk.Checkbutton(window, + text='Overwrite existing', + font=('Consolas', 11), + variable=isforce, + onvalue=True, + offvalue=False, + ).grid(row=9, sticky=tk.W) +tk.Label(window, + text='Output: ', + font=('Consolas', 13)).grid(row=11, sticky=tk.W) +logtext = tk.Text(window, + font=('Consolas', 10), + height=15, + width=80 + ) +logtext.grid(row=12, sticky=tk.W) +logtext.insert(tk.END, "Output shown here.\n") + + +def run_myzip(): + myzip_exec = './myzip.out' + cmd_exec = myzip_exec + ' ' + '-' + if mode.get() == 1: + cmd_exec += 'c' + elif mode.get() == 2: + cmd_exec += 'x' + else: + messagebox.showerror('Myzip', 'Select a mode first') + return + if isverbose.get(): + cmd_exec += 'v' + if isforce.get(): + cmd_exec += 'F' + cmd_exec += 'f ' + cmd_exec += entry_val.get() + logtext.insert(tk.END, "Executing: " + cmd_exec) + logtext.insert(tk.END, "\n") + status, output = subprocess.getstatusoutput(cmd_exec) + logtext.insert(tk.END, output) + logtext.insert(tk.END, "\n") + if status == 0: + messagebox.showinfo("Myzip", "Done.") + else: + messagebox.showerror("Myzip", "Failed. See output for detail") + + +btn_go = tk.Button(window, + text='Go', + bg='green', + font=('Consolas', 13), + command=run_myzip).grid(row=10, sticky=tk.W) +# tk.Label(window, +# text='Log: ', +# font=('Consolas', 12)).pack() +window.mainloop() +print('End.') + + diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/huffman.hpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/huffman.hpp" new file mode 100755 index 0000000..3a7a930 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/huffman.hpp" @@ -0,0 +1,154 @@ +#ifndef HUFFMAN_HPP +#define HUFFMAN_HPP +#include +#include +using namespace std; +typedef unsigned int Weight; +//const MaxTreeSize = 10; +//Maybe this Nodesize cannot be changed +const int NodeSize = 8 * sizeof(char); +class HTNode{ +public: + HTNode(){ + weight = 0; + parent = 0; + lchild = 0; + rchild = 0; + } + Weight weight; + int parent; + int lchild; + int rchild; +}; +class HuffmanTree{ +public: + HuffmanTree(){ + tree = nullptr; + size = 0; + } + + explicit HuffmanTree(int tsize){ + tree = new HTNode[tsize]; + size = tsize; + } + ~HuffmanTree(){ + delete tree; + } + //Select two elements with least weight from the first n nodes (tree[0] to tree[n-1]) + void SelectMin(int len, int& idx1, int& idx2) const { + //If I set the maxes initially 0, then int the following code >= must be used instead of > + unsigned int min1 = UINT32_MAX; + int min1idx = -1; + unsigned int min2 = UINT32_MAX; + int min2idx = -1; + for(int i = 0; i < len; i++){ + if(tree[i].parent == 0) { + if(tree[i].weight <= min1){ + min2 = min1; + min2idx = min1idx; + min1 = tree[i].weight; + min1idx = i; + } + else if(tree[i].weight <= min2){ + min2 = tree[i].weight; + min2idx = i; + } + } + } + idx1 = min1idx; + idx2 = min2idx; + } + //This should be run only after weight of the first n nodes are decided (tree size 2*n-1) + void BuildTree(){ + int idx1 = -1, idx2 = -1; + for(int i = (size + 1) / 2; i < size; i++){ + SelectMin(i, idx1, idx2); +// cout << idx1 << " " << idx2 << endl; + tree[idx1].parent = i; + tree[idx2].parent = i; + tree[i].lchild = idx1; + tree[i].rchild = idx2; + tree[i].weight = tree[idx1].weight + tree[idx2].weight; + } + } + void PrintTree(){ + cout << "Huffman Tree" << endl; + cout << "Size: " << size << endl; + for(int i = 0; i < size; i++){ + cout << char(i) << '\t' << tree[i].weight << '\t' << \ + tree[i].parent << '\t' << tree[i].lchild << '\t' << tree[i].rchild << endl; + } + } + HTNode* tree; + int size; +}; +class HuffmanCode{ +public: + HuffmanCode(){ + code = nullptr; + len = nullptr; + size = 0; + } + explicit HuffmanCode(int tsize){ + code = new bool*[tsize]; + len = new int[tsize]; + for(int i = 0; i < tsize; i++){ + code[i] = nullptr; + len[i] = -1; + } + size = tsize; + } + ~HuffmanCode(){ + for(int i = 0; i < size; i++) + delete code[i]; + delete code; + delete len; + } + //Generate huffman code using a huffman tree + void GenerateCode(const HuffmanTree& tree){ + for(int i = 0; i < this->size; i++){ + delete code[i]; +// code[i] = nullptr; + } + int num = (tree.size + 1) / 2; + auto buf = new bool[num]; + for(int i = 0; i < num; i++){ + int start = num; + int node = i; + int father = tree.tree[i].parent; + for(; father; node = father, father = tree.tree[father].parent){ + buf[--start] = tree.tree[father].lchild != node; +// if(tree.tree[father].lchild == node) +// buf[--start] = false; +// else +// buf[--start] = true; + } + len[i] = num - start; +// cout << "..." << len[i] << endl; +// cout << code[i] << endl; +// cout << "..." << len[i] << endl; + bool* t = new bool[len[i]]; + code[i] = t; +// code[i] = new bool[len[i]]; +// cout << "..." << len[i] << endl; + for(int j = 0; j < len[i]; j++) + code[i][j] = buf[j + start]; + } + delete buf; + } + void PrintCode(){ + cout << "Huffman Code" << endl; + cout << "Size: " << size << endl; + for(int i = 0; i < size; i++){ + cout << i << "(" << char(i) << ")" << ": "; + for(int j = 0; j < len[i]; j++) + cout << code[i][j] ? "0" : "1"; + cout << endl; + } + cout << "End printing." << endl; + } + bool** code; + int* len; + int size; +}; +#endif diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/myzip.cpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/myzip.cpp" new file mode 100755 index 0000000..1587956 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Huffman/myzip.cpp" @@ -0,0 +1,331 @@ +#include "huffman.hpp" +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +/* + * My simple compression software using Huffman tree + * part of the argv parsing code copied from jarro2783/cxxopts + */ + +//Thanks stack overflow for this judging function +#include +// Function: fileExists +/** + Check if a file exists +@param[in] filename - the name of the file to check + +@return true if the file exists, else false + +*/ +bool fileExists(const std::string& filename) +{ + struct stat buf; + if (stat(filename.c_str(), &buf) != -1) + { + return true; + } + return false; +} + +string ifile; +string ofile; +//blocksize and NodeSize count in bit +//blocksize should be larger than NodeSize +int blocksize; +bool iscompress; +bool isverbose = false; +unsigned int filesize = 0; + +const char* MagicString = "Myzip file v1.0"; +const char* Delimeter = "Below are main compressed data"; +const int defaultbs = 1024; +const int TreeSize = 2 * (1u << (unsigned)NodeSize) - 1; +const int CodeSize = (1u << (unsigned)NodeSize); +//const int BufRate = 10; +//int BufSize = BufRate * max(defaultbs, CodeSize); + +void exitprogram(int status, const char* msg, ...) +{ + char sfinal[500]; + va_list ap; + va_start(ap, msg); + vsnprintf(sfinal, 500, msg, ap); + cout << sfinal << endl; + cout << "Program now exit." << endl; + exit(status); +} +void verboselog(const char* s, ...) +{ + if(isverbose){ + char sfinal[500]; + va_list ap; + va_start(ap, s); + vsnprintf(sfinal, 500, s, ap); + cout << sfinal << endl; + } +} +//Parsing argv using cxxopts, results are saved in global variables, the program may exit +//if error parsing or incorrect commandline +void parsing_cmdline(int argc, char* argv[]){ + try{ + cxxopts::Options options("myzip", "A simple file compressing program, by ustcpetergu"); + options.add_options("Available") + ("v,verbose", "Being verbose") + ("c,compress", "Compress file") + ("x,extract", "Extract compressed file") + ("F,force", "Overwrite existing file") + ("f,file", "Specify input or output file name", cxxopts::value()) + ("h,help", "Show help") + ; + auto result = options.parse(argc, argv); + if(result.count("h")){ + cout << options.help({"", "Available"}) << endl; + exitprogram(0, "Help shown."); + } + isverbose = (bool)result.count("v"); + if(!(result.count("c") ^ result.count("x"))) + exitprogram(-1, "You must specify one option, compress or extract? Or show help?"); + if(result.count("c")){ + iscompress = true; + verboselog("Compress."); + } + else{ + verboselog("Extract."); + iscompress = false; + } + string ff = result["f"].as(); + if(result.count("f")){ + if(iscompress){ + ifile = ff; + ofile = ifile + ".huff"; + } + else{ + if(ff.length() <= 5 || ff.substr(ff.length() - 5, 5) != ".huff") + exitprogram(-1, "The file should have extention .huff"); + ifile = ff; + ofile = ff.substr(0, ff.length() - 5) + ".decompressed"; + } + } + else + exitprogram(-1, "You must select a file."); + if (fileExists(ofile)) { + if (result.count("F") != 0) + verboselog("Overwrite existing file"); + else + exitprogram(-1, "File exist, use -F to overwrite"); + } + verboselog("Input file: %s", ifile.c_str()); + verboselog("Output file: %s", ofile.c_str()); + if(!result.count("bs")){ + blocksize = defaultbs; + verboselog("Use default blocksize %d.", blocksize); + } + else + blocksize = result["bs"].as() * 8; + } catch(const cxxopts::OptionException& e){ + std::cout << "Error parsing options: " << e.what() << std::endl; + exit(-2); + } +} +void GetWeight(HuffmanTree& tree) +{ + ifstream fin; + fin.open(ifile, ios::in | ios::binary); + if(fin.fail()) + exitprogram(-2, "Error opening input file"); + filesize = 0; + char chr; + fin.get(chr); + while(!fin.eof()){ + tree.tree[(unsigned char)chr].weight++; + filesize++; + fin.get(chr); + } + fin.close(); + verboselog("File read for the first time."); + verboselog("File size: %u chars", filesize); +} +void WriteCompressed(const HuffmanTree& tree, const HuffmanCode& code) +{ + verboselog("Writing compresse file..."); + ifstream fin; + fin.open(ifile, ios::in | ios::binary); + if(fin.fail()) + exitprogram(-2, "Error opening input file"); + ofstream fout; + fout.open(ofile, ios::out | ios::binary); + if(fout.fail()) + exitprogram(-2, "Error writing output file"); + //Write magic information + fout.write(MagicString, strlen(MagicString)); + //Write the Huffman tree + fout.write((char*)&tree.size, sizeof(tree.size)); + for(int i = 0; i < tree.size; i++){ + fout.write((char*)&tree.tree[i].weight, sizeof(tree.tree[i].weight)); + fout.write((char*)&tree.tree[i].parent, sizeof(tree.tree[i].parent)); + fout.write((char*)&tree.tree[i].lchild, sizeof(tree.tree[i].lchild)); + fout.write((char*)&tree.tree[i].rchild, sizeof(tree.tree[i].rchild)); + } + //Write file size (counted by char) + fout.write((char*)&filesize, sizeof(filesize)); + //Write Delimiter + fout.write(Delimeter, strlen(Delimeter)); + char chr; + char outchr; + string buf; + string outstr; + long len; + unsigned int bit = 0; + fin.get(chr); + buf.clear(); + outstr.clear(); + while(!fin.eof()) { + for(int i = 0; i < code.len[(unsigned char)chr]; i++) + buf += code.code[(unsigned char)chr][i] ? "1" : "0"; + len = buf.length(); + if(len > NodeSize * blocksize) { + outstr.clear(); + int cnt = 0; + for(cnt = 0; cnt + NodeSize - 1 < len; cnt += NodeSize) { + outchr = 0; + for(int i = 0; i < NodeSize; i++){ + if(buf[cnt + i] == '0') + bit = 0; + else + bit = 1; + outchr += bit << (unsigned)(NodeSize - 1 - i); + } + outstr += outchr; + } + fout << outstr; + buf = buf.substr(cnt, len - cnt); + } + fin.get(chr); + } + len = buf.length(); + if(len) + for(long i = len; i < NodeSize * (len / NodeSize + 1); i++) + buf += "0"; + outstr.clear(); + len = buf.length(); + for(int cnt = 0; cnt + NodeSize - 1 < len; cnt += NodeSize) { + outchr = 0; + for(int i = 0; i < NodeSize; i++){ + if(buf[cnt + i] == '0') + bit = 0; + else + bit = 1; + outchr += bit << (unsigned)(NodeSize - 1 - i); + } + outstr += outchr; + } + fout << outstr; + fin.close(); + fout.close(); + verboselog("File compressed"); +} +void Decompress(HuffmanTree& tree) +{ + verboselog("Start decompressing..."); + ifstream fin; + fin.open(ifile, ios::in | ios::binary); + if(fin.fail()) + exitprogram(-2, "Error opening input file"); + ofstream fout; + fout.open(ofile, ios::out | ios::binary); + if(fout.fail()) + exitprogram(-2, "Error writing output file"); + char* flag; + flag = new char[strlen(MagicString)]; + flag[strlen(MagicString)] = 0; + fin.read(flag, strlen(MagicString)); + if(strcmp(flag, MagicString) != 0) + exitprogram(-3, "The file seems not Myzip compressed"); + delete flag; + delete tree.tree; + tree.size = 0; + fin.read((char*)&tree.size, sizeof(tree.size)); + tree.tree = new HTNode[tree.size]; + for(int i = 0; i < tree.size; i++){ + fin.read((char*)&tree.tree[i].weight, sizeof(tree.tree[i].weight)); + fin.read((char*)&tree.tree[i].parent, sizeof(tree.tree[i].parent)); + fin.read((char*)&tree.tree[i].lchild, sizeof(tree.tree[i].lchild)); + fin.read((char*)&tree.tree[i].rchild, sizeof(tree.tree[i].rchild)); + } + fin.read((char*)&filesize, sizeof(filesize)); + verboselog("File size: %d chars", filesize); + flag = new char[strlen(Delimeter)]; + flag[strlen(Delimeter)] = 0; + fin.read(flag, strlen(Delimeter)); + if(strcmp(flag, Delimeter) != 0) + exitprogram(-4, "File seems corrupted"); + delete flag; + verboselog("File info read successfully, start decompressing"); + unsigned int cnt = 0; + char chr; + string buf; + int node; + //node point at the tree root + node = tree.size - 1; + fin.get(chr); + while(!fin.eof() && cnt < filesize) { + unsigned int bit = 1u << (unsigned)(NodeSize - 1); + //process the chr read from fin bit by bit for NodeSize-1 cycles + for(int i = 0; i < NodeSize; i++) { + if((unsigned char)chr & bit) + node = tree.tree[node].rchild; + else + node = tree.tree[node].lchild; + //One huffman code found + if(tree.tree[node].lchild == 0 && tree.tree[node].rchild == 0) { + buf += (char)node; + //begin another cycle and set node back to root + node = tree.size - 1; + cnt++; + if(cnt == filesize) + break; + } + bit = bit >> 1u; + } + if(buf.length() > (unsigned int)blocksize) { + fout << buf; + buf.clear(); + } + fin.get(chr); + } + //Print remaining to file, + //just ignore the bits left undecoded, they are dummy bits filled when writing. + fout << buf; + fin.close(); + fout.close(); + verboselog("File decompressed."); +} +int main(int argc, char* argv[]){ + parsing_cmdline(argc, argv); + HuffmanTree tree = HuffmanTree(TreeSize); + HuffmanCode code = HuffmanCode(CodeSize); + + + // Compress file + if(iscompress) { + GetWeight(tree); + tree.BuildTree(); +// tree.PrintTree(); + code.GenerateCode(tree); +// code.PrintCode(); + WriteCompressed(tree, code); + + } + // Extract file + else { + Decompress(tree); + } + verboselog("End."); + return 0; +} diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Lib/linklist.hpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Lib/linklist.hpp" new file mode 100755 index 0000000..ea387c4 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Lib/linklist.hpp" @@ -0,0 +1,198 @@ +#ifndef LINKLIST_H +#define LINKLIST_H +#include +#include +using namespace std; +typedef int Status; +#define Inf 2100000000 +#define Eps 1e-6 +#define ERROR 1 +#define OK 0 +//OVERFLOW already defined in cmath, avoid it. +//#define OVERFLOW 2 + +template +class Node{ + public: + Node() + { + next = NULL; + } + Node(T data) + { + this->data = data; + next = NULL; + } + ~Node(){ + } + T data; + Node* next; +}; +template +class Linklist{ + public: + Linklist(); + Linklist(const Linklist&); + ~Linklist(); + const Linklist& operator=(const Linklist& list); + Status GetElem(int, T&); + Status ListInsert(int, T); + Status ListDelete(int, T&); + Status Clear(); + Status Append_head(T); + Status Append(T); + int GetLength(); + Node* head; + Node* tail; + int length; +}; + +template +Linklist::Linklist() +{ + tail = head = new Node; + length = 0; +} +template +Linklist::Linklist(const Linklist& list){ + Node* p; + Node* q; + Node* r; + p = list.head; + q = head = new Node; + while((p = p->next)){ + r = new Node; + r->data = p->data; + q->next = r; + q = r; + } + tail = q; + length = list.length; +} +template +Linklist::~Linklist() +{ + Node* p; + p = head; + while(head){ + p = head->next; + delete head; + head = p; + } +} +template +const Linklist& Linklist::operator=(const Linklist& list) +{ + if(this != &list){ + this->Clear(); + Node* p; + Node* q; + Node* r; + p = list.head; + q = head; + while((p = p->next)){ + r = new Node; + r->data = p->data; + q->next = r; + q = r; + } + tail = q; + length = list.length; + } + return *this; +} +template +Status Linklist::GetElem(int idx, T& data) +{ + if(idx < 1 || idx > length) + return ERROR; + Node* p; + p = head; + for(int i = 0; i < idx; i++) + p = p->next; + data = p->data; + return OK; +} +template +Status Linklist::ListInsert(int idx, T data) +{ + if(idx < 1 || idx > length + 1) + return ERROR; + Node* p; + Node* q; + q = new Node; + q->data = data; + p = head; + for(int i = 1; i < idx; i++) + p = p->next; + q->next = p->next; + p->next = q; + if(tail->next != NULL) + tail = tail->next; + length++; + return OK; +} +template +Status Linklist::ListDelete(int idx, T& data) +{ + if(idx < 1 || idx > length) + return ERROR; + Node* p; + Node* q; + p = head; + for(int i = 1; i < idx; i++) + p = p->next; + if(p->next == tail) + tail = p; + data = p->next->data; + q = p->next; + p->next = q->next; + delete q; + length--; + return OK; +} +template +Status Linklist::Clear() +{ + Node* p; + Node* q; + length = 0; + q = head->next; + while(q){ + p = q->next; + delete q; + q = p; + } + tail = head; + head->next = NULL; + return OK; +} +template +Status Linklist::Append_head(T data) +{ + Node* p; + p = new Node; + p->data = data; + p->next = head->next; + head->next = p; + length++; + return OK; +} +template +Status Linklist::Append(T data) +{ + Node* p; + p = new Node; + p->data = data; + tail->next = p; + tail = p; + length++; + return OK; +} +template +int Linklist::GetLength() +{ + return length; +} + +#endif diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Lib/queue.hpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Lib/queue.hpp" new file mode 100755 index 0000000..418f0d6 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Lib/queue.hpp" @@ -0,0 +1,41 @@ +#ifndef QUEUE_H +#define QUEUE_H +#include +#include +#include "linklist.hpp" +using namespace std; + +//Prerequsite: type T should defined operator< +template +class Queue: public Linklist{ + public: + //Just a dummy constructor + Queue(){} + Status Enqueue(const T& elem){ + Node* p; + Node* q; + p = this->head; + while(p->next && p->next->data < elem){ + p = p->next; + } + q = new Node; + q->data = elem; + q->next = p->next; + p->next = q; + this->length++; + return OK; + } + Status Dequeue(T& elem){ + return this->ListDelete(1, elem); + } + Status TopElem(T& elem){ + if(this->QueueEmpty()) + return ERROR; + elem = this->head->next->data; + return OK; + } + bool QueueEmpty(){ + return this->length == 0 ? true : false; + } +}; +#endif diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/Makefile" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/Makefile" new file mode 100755 index 0000000..cea131b --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/Makefile" @@ -0,0 +1,11 @@ +CC = clang++ +CFLAGS = -Wall -g +.PHONY: all clean + +all: main.out +main.out: poly.o main.o + #$(CC) poly.o main.o -o $@ + $(CC) $(CPPFLAGS) $^ -o $@ +clean: + -rm -f *.out *.o + diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/README.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/README.md" new file mode 100644 index 0000000..62e45b2 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/README.md" @@ -0,0 +1,37 @@ +# 多项式计算器 + +使用示例: + +``` +❯ make +g++ -c -o poly.o poly.cpp +g++ -c -o main.o main.cpp +#clang++ poly.o main.o -o main.out +clang++ poly.o main.o -o main.out +❯ ./main.out +q to quit, new to create new poly, print to print polys stored, delete to delete a poly, add sub mul eval to do operations +poly> new +New poly: (enter 1 2 3 0 for +1x^(2)+3x^(0)) +1 2 3 0 +Your poly: +1x^2+3x^0 +poly> n +New poly: (enter 1 2 3 0 for +1x^(2)+3x^(0)) +2 2 1 1 +Your poly: +2x^2+1x^1 +poly> mul +Enter two indexes: 1 +2 +Multiplication is: +2x^4+1x^3+6x^2+3x^1 +Result saved +poly> poly> print +Total 3 Polys: +#1: +1x^2+3x^0 +#2: +2x^2+1x^1 +#3: +2x^4+1x^3+6x^2+3x^1 +poly> eval +Enter a index: 3 +Enter an x value: 99 +The value of poly +2x^4+1x^3+6x^2+3x^1 when x is 99 is: 1.93149e+08 +poly> poly> q +``` + diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/main.cpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/main.cpp" new file mode 100755 index 0000000..1d50dae --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/main.cpp" @@ -0,0 +1,178 @@ +#include +#include +#include +#include "poly.hpp" +#include "../Lib/linklist.hpp" +using namespace std; + +void test_linklist() +{ + Linklist test; + test.Append(2); + test.Append(3); + test.Append(4); + test.Append(5); + test.Append_head(1); + int p; + cout << test.GetElem(1, p) << endl; + cout << p << endl; + cout << test.GetElem(2, p) << endl; + cout << p << endl; + cout << test.GetElem(5, p) << endl; + cout << p << endl; + p = 999; + cout << test.GetElem(6, p) << endl; + cout << p << endl; + cout << "----" << endl; + cout << test.ListInsert(1, -1) << endl; + cout << test.GetElem(1, p) << endl; + cout << p << endl; + cout << "----" << endl; + Node* q; + q = test.head; + while((q = q->next)) + cout << " " << q->data << endl; + cout << test.ListDelete(1, p) << endl; + cout << p << endl; + q = test.head; + while((q = q->next)) + cout << " " << q->data << endl; + cout << test.ListDelete(1, p) << endl; + cout << p << endl; + Linklist test2 = test; + q = test2.head; + while((q = q->next)) + cout << " " << q->data << endl; + cout << test2.ListDelete(1, p) << endl; + cout << p << endl; + q = test2.head; + while((q = q->next)) + cout << " " << q->data << endl; +} +void test_poly() +{ + Polynomial p; + Polynomial q; + Polynomial r; + Polynomial s; + Polynomial t; + cin >> p; + cin >> q; + cout << "p: " << p << endl; + cout << "q: " << q << endl; + r = p + q; + cout << "add: " << r << endl; + r = p - q; + cout << "subtract: " << r << endl; + r = (-p); + cout << "opposite: " << r << endl; + r = p * q; + cout << "multiple: " << r << endl; + cout << "eval p(0) q(2)" << endl; + cout << p.eval(0) << endl; + cout << q.eval(2) << endl; +} +int main() +{ + //test_linklist(); + //test_poly(); + Linklist polys; + string cmd; + int idx1; + int idx2; + double x; + Polynomial p1; + Polynomial p2; + Polynomial p3; + cout << "q to quit, new to create new poly, print to print polys stored, delete to delete a poly, add sub mul eval to do operations" << endl; + while(1){ + try{ + cout << "poly> "; + getline(cin, cmd); + if(cmd == "q"){ + break; + } + else if(cmd == ""){ + continue; + } + else if(cmd == "new" || cmd == "n"){ + cout << "New poly: (enter 1 2 3 0 for +1x^(2)+3x^(0))" << endl; + cin >> p1; + cout << "Your poly: " << p1 << endl; + polys.Append(p1); + } + else if(cmd == "print" || cmd == "p"){ + int l = polys.length; + cout << "Total " << l << " Polys: " << endl; + for(int i = 1; i <= l; i++){ + polys.GetElem(i, p1); + cout << "#" << i << ": " << p1 << endl; + } + } + else if(cmd == "delete" || cmd == "d"){ + cout << "Enter a index: "; + cin >> idx1; + if(idx1 < 0 && idx1 > polys.length) + throw "Index out of range"; + polys.ListDelete(idx1, p1); + cout << "You deleted " << p1 << endl; + } + else if(cmd == "add"){ + cout << "Enter two indexes: "; + cin >> idx1 >> idx2; + if(idx1 < 0 && idx1 > polys.length && idx2 < 0 && idx2 > polys.length) + throw "Index out of range"; + polys.GetElem(idx1, p1); + polys.GetElem(idx2, p2); + p3 = p1 + p2; + cout << "Sum is: " << p3 << endl; + cout << "Result saved" << endl; + polys.Append(p3); + } + else if(cmd == "sub"){ + cout << "Enter two indexes: "; + cin >> idx1 >> idx2; + if(idx1 < 0 && idx1 > polys.length && idx2 < 0 && idx2 > polys.length) + throw "Index out of range"; + polys.GetElem(idx1, p1); + polys.GetElem(idx2, p2); + p3 = p1 - p2; + cout << "Subtraction is: " << p3 << endl; + cout << "Result saved" << endl; + polys.Append(p3); + } + else if(cmd == "mul"){ + cout << "Enter two indexes: "; + cin >> idx1 >> idx2; + if(idx1 < 0 && idx1 > polys.length && idx2 < 0 && idx2 > polys.length) + throw "Index out of range"; + polys.GetElem(idx1, p1); + polys.GetElem(idx2, p2); + p3 = p1 * p2; + cout << "Multiplication is: " << p3 << endl; + cout << "Result saved" << endl; + polys.Append(p3); + } + else if(cmd == "eval"){ + cout << "Enter a index: "; + cin >> idx1; + if(idx1 < 0 && idx1 > polys.length) + throw "Index out of range"; + polys.GetElem(idx1, p1); + cout << "Enter an x value: "; + cin >> x; + cout << "The value of poly " << p1 << " when x is " << x << " is: " << p1.eval(x) << endl; + } + else{ + throw "No such command"; + + } + + }catch(const char *msg){ + cout << "Error: " << msg << "!" << endl; + + } + } + return 0; +} + diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/poly.cpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/poly.cpp" new file mode 100755 index 0000000..322494d --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/poly.cpp" @@ -0,0 +1,178 @@ +#include +#include +#include +#include "poly.hpp" +using namespace std; + +Mono::Mono() +{ + expn = 0; + coef = 0; +} +Mono::Mono(int expn, double coef) +{ + this->expn = expn; + this->coef = coef; +} +void Mono::printmono() +{ + cout << showpos << coef << noshowpos << "x^" << (expn < 0 ? "(" : "") << expn << (expn < 0 ? ")" : ""); +} + +Polynomial::Polynomial() +{ + //tail = head = new Node; + //length = 0; +} +Polynomial::Polynomial(string s) +{ + *this = Polynomial(); + if(s == "" || s == "0") + return; + stringstream ss; + ss << s; + int e; + double c; + int elast = Inf; + while(!ss.eof()){ + try{ + ss >> c; + if(ss.fail()) + throw "wrong reading coef"; + ss >> e; + if(ss.fail()) + throw "wrong reading expn"; + if(e >= elast) + throw "Must input expn in decrease order"; + if(fabs(c) < Eps) + throw "coef shouldn\'t be zero"; + if(e < 0) + throw "expn should >= 0"; + elast = e; + this->Append(Mono(e, c)); + } + catch(const char* msg){ + cout << "Construction Error: " << msg << "! You get Zero polynomial"<< endl; + *this = Polynomial(); + return; + } + } +} +void Polynomial::printpoly(ostream& out) const +{ + Node* p; + p = head; + while((p = p->next)) + p->data.printmono(); + if(length == 0) + out << "0"; +} +ostream& operator<<(ostream& out, const Polynomial& poly) +{ + poly.printpoly(out); + return out; +} +istream& operator>>(istream& in, Polynomial& poly) +{ + string s; + getline(in, s); + poly = Polynomial(s); + return in; +} +Polynomial Polynomial::opposite() const +{ + Polynomial poly = *this; + Node* p; + p = poly.head; + while((p = p->next)) + p->data.coef = -p->data.coef; + return poly; +} +Polynomial Polynomial::add(const Polynomial& secPoly) const +{ + Polynomial c; + Node* p; + Node* q; + p = head->next; + q = secPoly.head->next; + while(p && q){ + int flg = p->data.expn - q->data.expn; + if(flg > 0){ + c.Append(p->data); + p = p->next; + } + else if(flg < 0){ + c.Append(q->data); + q = q->next; + } + else{ + double delta = p->data.coef + q->data.coef; + //Do nothing if the two mono makes zero + if(fabs(delta) > Eps) + c.Append(Mono(p->data.expn, delta)); + p = p->next; + q = q->next; + } + } + while(p){ + c.Append(p->data); + p = p->next; + } + while(q){ + c.Append(q->data); + q = q->next; + } + return c; +} +Polynomial Polynomial::subtract(const Polynomial& secPoly) const +{ + return this->add(secPoly.opposite()); +} +Polynomial Polynomial::multiply(const Polynomial& secPoly) const +{ + Polynomial c; + Polynomial t; + Node* p; + Node* q; + p = secPoly.head; + while((p = p->next)){ + t = *this; + q = t.head; + while((q = q->next)){ + q->data.coef *= p->data.coef; + q->data.expn += p->data.expn; + } + c = c + t; + } + return c; +} +double Polynomial::eval(double x) const +{ + double val = 0; + Node* p; + p = head; + while((p = p->next)) + val += p->data.coef * pow(x, p->data.expn); + return val; +} +Polynomial Polynomial::operator+() +{ + return *this; +} +Polynomial Polynomial::operator-() +{ + return this->opposite(); +} +Polynomial Polynomial::operator+(const Polynomial& secPoly) +{ + return this->add(secPoly); +} +Polynomial Polynomial::operator-(const Polynomial& secPoly) +{ + return this->subtract(secPoly); +} +Polynomial Polynomial::operator*(const Polynomial& secPoly) +{ + return this->multiply(secPoly); +} + diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/poly.hpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/poly.hpp" new file mode 100755 index 0000000..084e8b1 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/Polynomial/poly.hpp" @@ -0,0 +1,33 @@ +#ifndef POLY_H +#define POLY_H +#include +#include +#include "../Lib/linklist.hpp" +using namespace std; +class Mono{ + public: + Mono(); + Mono(int, double); + void printmono(); + int expn; + double coef; +}; +class Polynomial: public Linklist { + public: + Polynomial(); + Polynomial(string s); + void printpoly(ostream& out) const; + friend ostream& operator<<(ostream& out, const Polynomial& poly); + friend istream& operator>>(istream& in, Polynomial& poly); + Polynomial opposite() const; + Polynomial add(const Polynomial& secPoly) const; + Polynomial subtract(const Polynomial& secpoly) const; + Polynomial multiply(const Polynomial& secpoly) const; + double eval(double x) const; + Polynomial operator+(); + Polynomial operator-(); + Polynomial operator+(const Polynomial& secPoly); + Polynomial operator-(const Polynomial& secPoly); + Polynomial operator*(const Polynomial& secPoly); +}; +#endif diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/README.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/README.md" new file mode 100644 index 0000000..1db6be4 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/README.md" @@ -0,0 +1,7 @@ +# 2018秋马建辉老师班数据结构实验 + +古宜民 17少 (https://github.com/ustcpetergu) + +**多项式计算、电梯模拟、哈希、Huffman压缩软件、Dijkstra图最短路** + +项目依赖Lib(是linklist和queue的实现)和SimpleDraw(是Linux终端上画文字界面的小库)里的文件所以改变目录结构可能导致无法编译。 \ No newline at end of file diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/SimpleDraw/SimpleDraw.hpp" "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/SimpleDraw/SimpleDraw.hpp" new file mode 100755 index 0000000..3a0ea09 --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204/labs/2018/SimpleDraw/SimpleDraw.hpp" @@ -0,0 +1,186 @@ +#ifndef SIMPLEDRAW_HPP +#define SIMPLEDRAW_HPP +#include +#include +#include +#include +#include +#include +using namespace std; +const int colmax = 500; +const int rowmax = 500; +const int maxlen = 100; +class SimpleCanvas{ + public: + SimpleCanvas() + { + ClearCanvas(); + rownum = 24; + colnum = 80; + color = "No"; + } + SimpleCanvas(int r, int c) + { + ClearCanvas(); + rownum = r; + colnum = c; + color = "No"; + } + ~SimpleCanvas() + { + cout << "\033[?25h\033[0m"; + } + void Show(bool isclean) + { + string clr = "No"; + if(isclean) + ClearScreen(); + cout << "\033[?25l\033[1;1H"; + for(int i = 1; i <= rownum; i++){ + for(int j = 1; j <= colnum; j++){ + if(colormap[i][j] != clr){ + clr = colormap[i][j]; + if(clr == "Black"){ + cout << "\033[30m"; + } + else if(clr == "Red"){ + cout << "\033[31m"; + } + else if(clr == "Green"){ + cout << "\033[32m"; + } + else if(clr == "Yellow"){ + cout << "\033[33m"; + } + else if(clr == "Blue"){ + cout << "\033[34m"; + } + else if(clr == "Purple"){ + cout << "\033[35m"; + } + else if(clr == "DarkGreen"){ + cout << "\033[36m"; + } + else if(clr == "White"){ + cout << "\033[37m"; + } + else{ + cout << "\033[0m"; + } + } + cout << canvas[i][j]; + } + cout << "\r\n"; + } + cout << "\033[?25h\033[0m"; + } + void ClearCanvas() + { + for(int i = 1; i <= rowmax; i++) + for(int j = 1; j <= colmax; j++){ + canvas[i][j] = ' '; + colormap[i][j] = "No"; + } + } + void ClearScreen() + { + cout << "\033[?25l\033[1;1H"; + for(int i = 1; i <= rownum; i++){ + for(int j = 1; j <= colnum; j++) + cout << " "; + cout << "\r\n"; + } + cout << "\033[?25h\033[0m"; + } + //Be able to use c printf style + void AddString(const char* s, int row, int col, ...) + { + if(row < 1 || row > rownum || col < 1 || col > colnum) + return; + char sfinal[maxlen]; + va_list ap; + va_start(ap, col); + vsnprintf(sfinal, maxlen, s, ap); + int len = strlen(sfinal); + //Ignore overflow parts + for(int i = 1; i <= len && i + col <= colnum; i++){ + canvas[row][i + col - 1] = sfinal[i - 1]; + colormap[row][i + col - 1] = color; + } + } + void AddChar(char c, int row, int col) + { + if(row < 1 || row > rownum || col < 1 || col > colnum) + return; + canvas[row][col] = c; + colormap[row][col] = color; + } + void AddRectangle(int row1, int col1, int row2, int col2, char srow, char scol, char scorner) + { + if(row1 < 1 || row1 > rownum || col1 < 1 || col1 > colnum) + return; + if(row2 < 1 || row2 > rownum || col2 < 1 || col2 > colnum) + return; + if(row1 > row2) + swap(row1, row2); + if(col1 > col2) + swap(col1, col2); + for(int i = row1; i < row2; i++){ + canvas[i][col1] = srow; + canvas[i][col2] = srow; + colormap[i][col1] = color; + colormap[i][col2] = color; + } + for(int i = col1; i < col2; i++){ + canvas[row1][i] = scol; + canvas[row2][i] = scol; + colormap[row1][i] = color; + colormap[row2][i] = color; + } + canvas[row1][col1] = scorner; + canvas[row2][col1] = scorner; + canvas[row1][col2] = scorner; + canvas[row2][col2] = scorner; + colormap[row1][col1] = color; + colormap[row2][col1] = color; + colormap[row1][col2] = color; + colormap[row2][col2] = color; + } + void AddColLine(int col, int row1, int row2, char s) + { + if(row1 < 1 || row1 > rownum || row2 < 1 || row2 > rownum || col < 1 || col > colnum) + return; + if(row1 > row2) + swap(row1, row2); + for(int i = row1; i <= row2; i++){ + canvas[i][col] = s; + canvas[i][col] = s; + colormap[i][col] = color; + colormap[i][col] = color; + } + } + void AddRowLine(int row, int col1, int col2, char s) + { + if(col1 < 1 || col1 > colnum || col2 < 1 || col2 > colnum || row < 1 || row > rownum) + return; + if(col1 > col2) + swap(col1, col2); + for(int i = col1; i <= col2; i++){ + canvas[row][i] = s; + canvas[row][i] = s; + colormap[row][i] = color; + colormap[row][i] = color; + } + + } + void ChangeColor(string c) + { + color = c; + } + char canvas[rowmax + 1][colmax + 1]; + string colormap[rowmax + 1][colmax + 1]; + string color; + int rownum; + int colnum; +}; +#endif diff --git "a/\346\225\260\347\220\206\346\226\271\347\250\213/README.md" "b/\346\225\260\347\220\206\346\226\271\347\250\213/README.md" new file mode 100644 index 0000000..d51c66d --- /dev/null +++ "b/\346\225\260\347\220\206\346\226\271\347\250\213/README.md" @@ -0,0 +1 @@ +# [课程主页](http://home.ustc.edu.cn/~weihuang/pde/) \ No newline at end of file diff --git "a/\346\225\260\347\220\206\346\226\271\347\250\213/\346\225\260\347\220\206\346\226\271\347\250\213B2017.pdf" "b/\346\225\260\347\220\206\346\226\271\347\250\213/exams/\346\225\260\347\220\206\346\226\271\347\250\213B2017.pdf" similarity index 100% rename from "\346\225\260\347\220\206\346\226\271\347\250\213/\346\225\260\347\220\206\346\226\271\347\250\213B2017.pdf" rename to "\346\225\260\347\220\206\346\226\271\347\250\213/exams/\346\225\260\347\220\206\346\226\271\347\250\213B2017.pdf" diff --git "a/\346\225\260\347\220\206\346\226\271\347\250\213/\346\225\260\347\220\206\346\226\271\347\250\213B2017\347\255\224\346\241\210.pdf" "b/\346\225\260\347\220\206\346\226\271\347\250\213/exams/\346\225\260\347\220\206\346\226\271\347\250\213B2017\347\255\224\346\241\210.pdf" similarity index 100% rename from "\346\225\260\347\220\206\346\226\271\347\250\213/\346\225\260\347\220\206\346\226\271\347\250\213B2017\347\255\224\346\241\210.pdf" rename to "\346\225\260\347\220\206\346\226\271\347\250\213/exams/\346\225\260\347\220\206\346\226\271\347\250\213B2017\347\255\224\346\241\210.pdf" diff --git "a/\346\225\260\347\220\206\346\226\271\347\250\213/\346\225\260\347\220\206\346\226\271\347\250\213\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\230.pdf" "b/\346\225\260\347\220\206\346\226\271\347\250\213/exams/\346\225\260\347\220\206\346\226\271\347\250\213\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\230.pdf" similarity index 100% rename from "\346\225\260\347\220\206\346\226\271\347\250\213/\346\225\260\347\220\206\346\226\271\347\250\213\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\230.pdf" rename to "\346\225\260\347\220\206\346\226\271\347\250\213/exams/\346\225\260\347\220\206\346\226\271\347\250\213\346\234\237\346\234\253\350\200\203\350\257\225\350\257\225\351\242\230.pdf" diff --git "a/\346\225\260\347\220\206\346\226\271\347\250\213/notes/pdeBreview-\351\273\204\344\274\237.pdf" "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/pdeBreview-\351\273\204\344\274\237.pdf" new file mode 100644 index 0000000..ee5f7bf Binary files /dev/null and "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/pdeBreview-\351\273\204\344\274\237.pdf" differ diff --git "a/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\270\200\347\253\240\347\237\245\350\257\206\347\202\271\346\200\273\347\273\223.pdf" "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\270\200\347\253\240\347\237\245\350\257\206\347\202\271\346\200\273\347\273\223.pdf" new file mode 100644 index 0000000..7486bd8 Binary files /dev/null and "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\270\200\347\253\240\347\237\245\350\257\206\347\202\271\346\200\273\347\273\223.pdf" differ diff --git "a/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\270\211\347\253\240\345\213\222\350\256\251\345\276\267\345\244\232\351\241\271\345\274\217\347\232\204\347\233\270\345\205\263\346\200\247\350\264\250\344\270\216\347\254\254\345\233\233\347\253\240\351\207\215\347\202\271\345\206\205\345\256\271.pdf" "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\270\211\347\253\240\345\213\222\350\256\251\345\276\267\345\244\232\351\241\271\345\274\217\347\232\204\347\233\270\345\205\263\346\200\247\350\264\250\344\270\216\347\254\254\345\233\233\347\253\240\351\207\215\347\202\271\345\206\205\345\256\271.pdf" new file mode 100644 index 0000000..bd369f4 Binary files /dev/null and "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\270\211\347\253\240\345\213\222\350\256\251\345\276\267\345\244\232\351\241\271\345\274\217\347\232\204\347\233\270\345\205\263\346\200\247\350\264\250\344\270\216\347\254\254\345\233\233\347\253\240\351\207\215\347\202\271\345\206\205\345\256\271.pdf" differ diff --git "a/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\272\214\347\253\240\345\217\212\347\254\254\344\270\211\347\253\240Bessel\351\203\250\345\210\206\347\237\245\350\257\206\347\202\271.pdf" "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\272\214\347\253\240\345\217\212\347\254\254\344\270\211\347\253\240Bessel\351\203\250\345\210\206\347\237\245\350\257\206\347\202\271.pdf" new file mode 100644 index 0000000..ecd9034 Binary files /dev/null and "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\272\214\347\253\240\345\217\212\347\254\254\344\270\211\347\253\240Bessel\351\203\250\345\210\206\347\237\245\350\257\206\347\202\271.pdf" differ diff --git "a/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\272\214\347\253\240\345\233\233\347\261\273\345\205\270\345\236\213\346\226\271\347\250\213.pdf" "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\272\214\347\253\240\345\233\233\347\261\273\345\205\270\345\236\213\346\226\271\347\250\213.pdf" new file mode 100644 index 0000000..ccf8fd2 Binary files /dev/null and "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\272\214\347\253\240\345\233\233\347\261\273\345\205\270\345\236\213\346\226\271\347\250\213.pdf" differ diff --git "a/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\272\224\347\253\240\347\237\245\350\257\206\347\202\271\346\200\273\347\273\223.pdf" "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\272\224\347\253\240\347\237\245\350\257\206\347\202\271\346\200\273\347\273\223.pdf" new file mode 100644 index 0000000..23a6682 Binary files /dev/null and "b/\346\225\260\347\220\206\346\226\271\347\250\213/notes/\345\220\264\351\242\226\346\226\207/\347\254\254\344\272\224\347\253\240\347\237\245\350\257\206\347\202\271\346\200\273\347\273\223.pdf" differ diff --git "a/\346\225\260\347\220\206\351\200\273\350\276\221/codes/mbinary/system_L.py" "b/\346\225\260\347\220\206\351\200\273\350\276\221/codes/mbinary/system_L.py" index fb9ed7c..25d4597 100644 --- "a/\346\225\260\347\220\206\351\200\273\350\276\221/codes/mbinary/system_L.py" +++ "b/\346\225\260\347\220\206\351\200\273\350\276\221/codes/mbinary/system_L.py" @@ -23,31 +23,33 @@ import re import sympy -from random import randint +from random import randint from collections import namedtuple - NON = sympy.Symbol('~') CONTAIN = sympy.Symbol('>') -AND = sympy .Symbol('&') -OR = sysmpy.Symbol('|') -EQUAL = sysmpy.Symbol('-') +AND = sympy.Symbol('&') +OR = sympy.Symbol('|') +EQUAL = sympy.Symbol('-') LEFT = sympy.Symbol('(') RIGHT = sympy.Symbol(')') -CONN=[NON,CONTAIN,LEFT,RIGHT] +CONN = [NON, CONTAIN, LEFT, RIGHT] +PAIR = namedtuple('pair', ['pre', 'suf']) -PAIR = namedtuple('pair',['pre','suf']) def non(p): li = p.getPreOrderLst() - if li[0]==NON:return formula(li[1:]) - return formula([NON]+li) + if li[0] == NON: return formula(li[1:]) + return formula([NON] + li) + -def contain(p,q): +def contain(p, q): '''p->q''' - return formula([CONTAIN]+p.getPreOrderLst()+q.getPreOrderLst()) + return formula([CONTAIN] + p.getPreOrderLst() + q.getPreOrderLst()) + + def isConn(p): return p in CONN @@ -56,90 +58,116 @@ def in2pre(s): ''' inorder symbols of list -> prorder symbols of list ''' - def matchParentheses(i=0,reverse=False): + + def matchParentheses(i=0, reverse=False): '''match parentheses from one end of s and ret pointer i''' delta = -1 if reverse is True else 1 - ct =0 + ct = 0 while 1: - if s[i]==LEFT:ct-=1 - elif s[i]==RIGHT:ct+=1 - i+=delta - if ct == 0:break + if s[i] == LEFT: ct -= 1 + elif s[i] == RIGHT: ct += 1 + i += delta + if ct == 0: break try: - while s[i]==NON: - i+=delta - except:pass + while s[i] == NON: + i += delta + except: + pass return i n = len(s) - if n<=2 :return s + if n <= 2: return s i = matchParentheses() - if i==n and s[0]==LEFT and s[-1]==RIGHT:return in2pre(s[1:-1]) - if s[0]==NON and s[1]==LEFT and matchParentheses(1)==n and s[-1]==RIGHT: - return [NON]+in2pre(s[2:-1]) - i=-1 - if s[-1]==RIGHT:i = matchParentheses(-1,True) + if i == n and s[0] == LEFT and s[-1] == RIGHT: return in2pre(s[1:-1]) + if s[0] == NON and s[1] == LEFT and matchParentheses( + 1) == n and s[-1] == RIGHT: + return [NON] + in2pre(s[2:-1]) + i = -1 + if s[-1] == RIGHT: i = matchParentheses(-1, True) else: - while s[i]!=CONTAIN:i-=1 - return [CONTAIN]+in2pre(s[:i])+in2pre(s[i+1:]) + while s[i] != CONTAIN: + i -= 1 + return [CONTAIN] + in2pre(s[:i]) + in2pre(s[i + 1:]) + class formula: - def __init__(self,preOrderLst): + def __init__(self, preOrderLst): self.preOrderLst = preOrderLst if not self.isValid(): raise Exception('invalid formula') self.inOrderLst = self.pre2in(self.preOrderLst) self.sz = len(self.preOrderLst) - def __bool__(self): return bool(self.preOrderLst) - def __len__(self):return self.sz - def __getitem(self,i):return self.preOrderLst[i] - def __iter__(self):return iter(self.preOrderLst) - def __repr__(self): return 'formula({})'.format(str(self)) - def __str__(self):return ''.join([str(i) for i in self.inOrderLst]) - def __hash__(self):return hash(''.join([str(i) for i in self.preOrderLst])) - def __eq__(self,x): - return isinstance(x,formula) and self.preOrderLst == x.preOrderLst - def getPreOrderLst(self):return self.preOrderLst - def getInOrderLst(self):return self.inOrderLst - + + def __bool__(self): + return bool(self.preOrderLst) + + def __len__(self): + return self.sz + + def __getitem(self, i): + return self.preOrderLst[i] + + def __iter__(self): + return iter(self.preOrderLst) + + def __repr__(self): + return 'formula({})'.format(str(self)) + + def __str__(self): + return ''.join([str(i) for i in self.inOrderLst]) + + def __hash__(self): + return hash(''.join([str(i) for i in self.preOrderLst])) + + def __eq__(self, x): + return isinstance(x, formula) and self.preOrderLst == x.preOrderLst + + def getPreOrderLst(self): + return self.preOrderLst + + def getInOrderLst(self): + return self.inOrderLst + def isValid(self): return self.validSub(self.preOrderLst)[0] + def isNonType(self): '''return True if it's ~p form''' - return self.preOrderLst[0]==NON - - def validSub(self,s=None,begin=0,end=None): + return self.preOrderLst[0] == NON + + def validSub(self, s=None, begin=0, end=None): ''' check a *preOrder-list* s from left of its preOrderLst until forming a valid proposition return ('if s[begin:end] froms a valid prop' , the index) return: (bool,int) ''' - - weight={NON:0,CONTAIN:-1} # proposition varible :1 - if s is None:s = self.preOrderLst - + + weight = {NON: 0, CONTAIN: -1} # proposition varible :1 + if s is None: s = self.preOrderLst + def w(sym): return weight[sym] if sym in weight else 1 - - ct,i = 0,begin + + ct, i = 0, begin n = len(s) if end is None else end - while ct !=1 and i!=n: - ct+=w(s[i]) - i+=1 - return (ct==1 and i==n,i) + while ct != 1 and i != n: + ct += w(s[i]) + i += 1 + return (ct == 1 and i == n, i) + def getPairs(self): '''return Pairs of formulas likr[(p,q)...] after applying enough p2p func, eg q>(~r>(~t>s)): return [(q,~r>(~t>s)),(~r,~t>s),(~t,s)] ''' - s = [] + s = [] cur = self while 1: - p,q = cur.p2q() - if q is None:return s - s.append(PAIR(p,q)) + p, q = cur.p2q() + if q is None: return s + s.append(PAIR(p, q)) cur = q - - def p2q(self,fm=None): + + def p2q(self, fm=None): ''' if f can be formed in the form of p->q: return (p,q), else return f,None @@ -147,211 +175,220 @@ def p2q(self,fm=None): ''' if fm is None: fm = self f = fm.preOrderLst - n=len(f) - ct,i = self.getContNonNum(f,0) - if n>=3 and ct%2==0 and f[i]==CONTAIN : - _,i= self.validSub(f,begin=i+1) - if i!=n: return formula(f[1:i]),formula(f[i:]) - return fm,None - - def getContNonNum(self,s=None,i=0): + n = len(f) + ct, i = self.getContNonNum(f, 0) + if n >= 3 and ct % 2 == 0 and f[i] == CONTAIN: + _, i = self.validSub(f, begin=i + 1) + if i != n: return formula(f[1:i]), formula(f[i:]) + return fm, None + + def getContNonNum(self, s=None, i=0): ''' visit s from i until s[i] isn't NON, then return the num of continuous NON and the pointer i ''' - if s is None:s = self.preOrderLst - ct=0 - while s and s[i]==NON: - i+=1 - ct+=1 - return ct,i - def pre2in(self,li,begin=0): + if s is None: s = self.preOrderLst + ct = 0 + while s and s[i] == NON: + i += 1 + ct += 1 + return ct, i + + def pre2in(self, li, begin=0): ''' li is a list of preorder symbols repring a proposition this func converts it to preorder form(probably contains parentheses) ''' + def addParentheses(li): - return [LEFT]+li +[RIGHT] if len(li)>=3 else li - + return [LEFT] + li + [RIGHT] if len(li) >= 3 else li + self.pt = begin - - if not li :return [] - if li[self.pt]==NON: - ct ,self.pt= self.getContNonNum(li,self.pt) - nn=[NON] if ct%2==1 else [] + + if not li: return [] + if li[self.pt] == NON: + ct, self.pt = self.getContNonNum(li, self.pt) + nn = [NON] if ct % 2 == 1 else [] if li[self.pt] == CONTAIN: - return nn + addParentheses(self.pre2in(li,self.pt)) + return nn + addParentheses(self.pre2in(li, self.pt)) else: nn.append(li[self.pt]) - self.pt+=1 + self.pt += 1 return nn elif li[self.pt] == CONTAIN: - self.pt +=1 + self.pt += 1 ct, lst = 0, [] last = self.pt - while ct!=1: + while ct != 1: tmp = li[self.pt] - self.pt+=1 - if not isConn(tmp):ct+=1 - elif tmp==CONTAIN:ct-=1 + self.pt += 1 + if not isConn(tmp): ct += 1 + elif tmp == CONTAIN: ct -= 1 return addParentheses(self.pre2in(li,last)) \ +[CONTAIN]+ addParentheses(self.pre2in(li,self.pt)) else: - self.pt+=1 - return [li[self.pt-1]] + self.pt += 1 + return [li[self.pt - 1]] -class system_L: + +class system_L: def __init__(self): pass - def l1(self,p,q): + + def l1(self, p, q): '''p->(q->p)''' - return contain(p,contain(q,p)) - def l2(self,p,q,r): + return contain(p, contain(q, p)) + + def l2(self, p, q, r): '''p->(q->r)''' - origin = contain(p,contain(q,r)) - new = contain(contain(p,q),contain(p,r)) - return contain(origin,new) - def l3(self,p,q): + origin = contain(p, contain(q, r)) + new = contain(contain(p, q), contain(p, r)) + return contain(origin, new) + + def l3(self, p, q): '''~p->~q -> (p->q)''' - left = contain(non(p),non(q)) - right = contain(p,q) - return contain(left,right) - def genFormula(self,s:str)->formula: - s=s.replace('~~','') # simplify the deduction, to do - s=s.replace('<->','-') - s=s.replace('->','>') - li = re.findall(r'[\(\)\>\~]|\w+',s) + left = contain(non(p), non(q)) + right = contain(p, q) + return contain(left, right) + + def genFormula(self, s: str) -> formula: + s = s.replace('~~', '') # simplify the deduction, to do + s = s.replace('<->', '-') + s = s.replace('->', '>') + li = re.findall(r'[\(\)\>\~]|\w+', s) li = [sympy.Symbol(i) for i in li] s = in2pre(li) return formula(s) - def addL1(self,i,p,q,tmp_mp): + def addL1(self, i, p, q, tmp_mp): '''i = p>q,加入由 否定前件律 或 L1 得来的公式''' if not p.isNonType(): # p>q or p>~q: get ~p>(p>q) - tmp_mp[contain(non(p),i)] = ([],'否定前件律') + tmp_mp[contain(non(p), i)] = ([], '否定前件律') if not q.isNonType(): # p>q : get theorem q>(p>q) - tmp_mp[contain(q,i)] = ([],'L1') + tmp_mp[contain(q, i)] = ([], 'L1') - def addMP(self,i,p,q,tmp_mp): + def addMP(self, i, p, q, tmp_mp): '''i=p>q 加入由 换位律 或 MP 得来的公式''' if p.isNonType() and q.isNonType(): # p=~a,q=~b: ~a->~b ->(b->a) - nonpq = contain(non(q),non(p)) - comb = contain(i,nonpq) - tmp_mp[comb] = ([],'L3') - tmp_mp[nonpq] = ([i,comb],'MP') + nonpq = contain(non(q), non(p)) + comb = contain(i, nonpq) + tmp_mp[comb] = ([], 'L3') + tmp_mp[nonpq] = ([i, comb], 'MP') elif not p.isNonType() and not q.isNonType(): # p->q ->(~q->~p) - pq = contain(non(q),non(p)) - comb = contain(i,pq) - tmp_mp[comb] = ([],'换位律') - - tmp_mp[pq] = ([i,comb],'MP') - def addTheo(self,li,mp): - def _iterLst(li,f): + pq = contain(non(q), non(p)) + comb = contain(i, pq) + tmp_mp[comb] = ([], '换位律') + + tmp_mp[pq] = ([i, comb], 'MP') + + def addTheo(self, li, mp): + def _iterLst(li, f): tmp_mp = {} for i in li: - p,q = i.p2q() + p, q = i.p2q() if q is None: i = non(i) - p,q = i.p2q() - if q is None:continue - f(i,p,q,tmp_mp) + p, q = i.p2q() + if q is None: continue + f(i, p, q, tmp_mp) return tmp_mp - - tmp_mp = _iterLst(li,self.addMP) - tmp_mp.update( _iterLst(li,self.addMP)) - for i in tmp_mp: - if i not in mp:mp[i]= tmp_mp[i] - lst = [ i.pre for p in mp for i in p.getPairs() if i not in mp] - tmp_mp= _iterLst(lst,self.addL1) + tmp_mp = _iterLst(li, self.addMP) + tmp_mp.update(_iterLst(li, self.addMP)) for i in tmp_mp: - if i not in mp:mp[i]= tmp_mp[i] + if i not in mp: mp[i] = tmp_mp[i] - def mpDeduce(self,formulas,x,mp=None): + lst = [i.pre for p in mp for i in p.getPairs() if i not in mp] + tmp_mp = _iterLst(lst, self.addL1) + for i in tmp_mp: + if i not in mp: mp[i] = tmp_mp[i] + def mpDeduce(self, formulas, x, mp=None): def getIdx(x): '''insert x in deduction and get idx of it, var ct, mp is in the outer func''' - if x in appeared:return appeared[x] + if x in appeared: return appeared[x] li, wds = mp[x] for p in li: wds += ' [{}]'.format(getIdx(p)) - deduction.append((x,wds)) + deduction.append((x, wds)) nonlocal ct - ct+=1 + ct += 1 appeared[x] = ct return ct - + def _mpDeduce(x): if x in proved: return mp[x] if x in mp else None - proved[x]=True - if x in mp:return mp[x] - + proved[x] = True + if x in mp: return mp[x] + li = [] # x在fomrulas 中的 可能的证明: [p1,p2,p3...,x] 的列表 - - for p in mp : - pairs =p.getPairs() + + for p in mp: + pairs = p.getPairs() for idx, pair in enumerate(pairs): if pair.suf == x: - li.append(pairs[:idx+1]) + li.append(pairs[:idx + 1]) break - + for pairs in li: - for pre,suf in pairs: - if suf in mp:continue + for pre, suf in pairs: + if suf in mp: continue tmp = _mpDeduce(pre) if tmp is not None: - mp[pre]=tmp - mp[suf] = ([pre,contain(pre,suf)],'MP') - else:break - else:return mp[x] - return None + mp[pre] = tmp + mp[suf] = ([pre, contain(pre, suf)], 'MP') + else: + break + else: + return mp[x] + return None - if mp is None:mp={i:([],'假定') for i in formulas} + if mp is None: mp = {i: ([], '假定') for i in formulas} proved = {} - tmp = _mpDeduce(x) + tmp = _mpDeduce(x) if tmp is None: return None mp[x] = tmp - ct,deduction, appeared = 0,[], {} - tmp=getIdx(x) + ct, deduction, appeared = 0, [], {} + tmp = getIdx(x) return deduction - - def nonDeduce(self,formulas,x,mp=None): + def nonDeduce(self, formulas, x, mp=None): '''反证法,归谬法''' - if mp is None: mp={i:([],'假定') for i in formulas} - mp[non(x)] = ([],'假定') + if mp is None: mp = {i: ([], '假定') for i in formulas} + mp[non(x)] = ([], '假定') formulas.append(non(x)) - self.addTheo([non(x)],mp) + self.addTheo([non(x)], mp) nonSet = [] for i in mp: - if i.isNonType():nonSet.append(i) + if i.isNonType(): nonSet.append(i) pairs = i.getPairs() - if pairs and pairs[-1].suf.isNonType(): + if pairs and pairs[-1].suf.isNonType(): nonSet.append(pairs[-1].suf) - - meth ='归谬法' if x.isNonType() else '反证法' - + + meth = '归谬法' if x.isNonType() else '反证法' + for i in nonSet: - p1 = self.mpDeduce(formulas,i,mp) - p2 = self.mpDeduce(formulas,non(i),mp) - if p1 is None or p2 is None:continue + p1 = self.mpDeduce(formulas, i, mp) + p2 = self.mpDeduce(formulas, non(i), mp) + if p1 is None or p2 is None: continue else: s = '由{meth},即证(1) {{{formulas}}} |- {p}\n (2) {{{formulas}}} |- {nonp}'\ .format(meth=meth,formulas=','.join([str(i) for i in formulas]),p=i,nonp=non(i)) return s, p1, p2 - return None,None,None - - def prove(self,formulas,x): - print('*'*65) + return None, None, None + + def prove(self, formulas, x): + print('*' * 65) x = self.genFormula(x) - formulas =[self.genFormula(i) for i in formulas] - print('证明: {{{}}} |- {}'.format(', '.join([str(i) for i in formulas]),x)) + formulas = [self.genFormula(i) for i in formulas] + print('证明: {{{}}} |- {}'.format(', '.join([str(i) for i in formulas]), + x)) #演绎定理  syllogism origin = x @@ -359,64 +396,72 @@ def prove(self,formulas,x): if pairs: formulas += [i[0] for i in pairs] x = pairs[-1].suf - print('由演绎定理,即证 {{{}}} |- {} '.format(', '.join([str(i) for i in formulas]),x)) + print('由演绎定理,即证 {{{}}} |- {} '.format( + ', '.join([str(i) for i in formulas]), x)) - mp={i:([],'假定') for i in formulas} - self.addTheo(mp.keys(),mp) # get some theorem + mp = {i: ([], '假定') for i in formulas} + self.addTheo(mp.keys(), mp) # get some theorem # MP modus ponous - p = L.mpDeduce(formulas,x,mp) - + p = L.mpDeduce(formulas, x, mp) + if p is None: #反证,归谬 - s,prv1,prv2 = self.nonDeduce(formulas,x,mp) + s, prv1, prv2 = self.nonDeduce(formulas, x, mp) if s is None: - print("Sorry! I can't prove this proposition. Maybe it's unprovale ") + print( + "Sorry! I can't prove this proposition. Maybe it's unprovale " + ) else: print(s) print('证明(1)') self.display(prv1) print('证明(2)') - self.display(prv2) - else:self.display(p) - print('*'*65) + self.display(prv2) + else: + self.display(p) + print('*' * 65) print('\n\n') - - def display(self,props): - for i,(f,wds) in enumerate(props): - print('[{}]: {}{explan}'.format(i+1,str(f).ljust(50,'-'),explan= wds)) - + + def display(self, props): + for i, (f, wds) in enumerate(props): + print('[{}]: {}{explan}'.format( + i + 1, str(f).ljust(50, '-'), explan=wds)) + def random_prop(prop = formula([sympy.Symbol('p')]),\ symbols=sympy.symbols('p q r s t'),n=10): fs = [formula([i]) for i in symbols] - def addLevel(p,sig): - if sig==0: + + def addLevel(p, sig): + if sig == 0: return non(p) else: - cur = fs[randint(0,len(fs)-1)] - if randint(0,1)==0:return contain(cur,p) - else:return contain(p,cur) + cur = fs[randint(0, len(fs) - 1)] + if randint(0, 1) == 0: return contain(cur, p) + else: return contain(p, cur) + for i in range(10): - prop=addLevel(prop,randint(0,1)) + prop = addLevel(prop, randint(0, 1)) return prop -if __name__=='__main__': +if __name__ == '__main__': L = system_L() - props=[('((x1>(x2>x3))>(x1> x2)) ->((x1>(x2>x3))->(x1>x3))',[]), - ('(~(x1>x3)>x1)',[]), - ('p->r',['p->q','~(q->r)->~p']), - ('p>(~q>~(p>q))',[]), - ('p>q>p>p',[]), - ('~p>p>p',[]), - ('~(p>q)>~q',[]), - ('~(p>q)>~q',[]), - ] - for prop,garma in props: + props = [ + ('((x1>(x2>x3))>(x1> x2)) ->((x1>(x2>x3))->(x1>x3))', []), + ('(~(x1>x3)>x1)', []), + ('p->r', ['p->q', '~(q->r)->~p']), + ('p>(~q>~(p>q))', []), + ('p>q>p>p', []), + ('~p>p>p', []), + ('~(p>q)>~q', []), + ('~(p>q)>~q', []), + ] + for prop, garma in props: try: - L.prove(garma,prop) + L.prove(garma, prop) except IndexError as e: - print(garma,prop) + print(garma, prop) print('Error! invalid propositions') except Exception as e: print(e) diff --git "a/\346\246\202\347\216\207\350\256\272\344\270\216\346\225\260\347\220\206\347\273\237\350\256\241/notes/P&MS - 20160422Revised.pdf" "b/\346\246\202\347\216\207\350\256\272\344\270\216\346\225\260\347\220\206\347\273\237\350\256\241/notes/P&MS - 20160422Revised.pdf" new file mode 100644 index 0000000..a4bf740 Binary files /dev/null and "b/\346\246\202\347\216\207\350\256\272\344\270\216\346\225\260\347\220\206\347\273\237\350\256\241/notes/P&MS - 20160422Revised.pdf" differ diff --git "a/\346\246\202\347\216\207\350\256\272\344\270\216\346\225\260\347\220\206\347\273\237\350\256\241/notes/README.md" "b/\346\246\202\347\216\207\350\256\272\344\270\216\346\225\260\347\220\206\347\273\237\350\256\241/notes/README.md" new file mode 100644 index 0000000..4435634 --- /dev/null +++ "b/\346\246\202\347\216\207\350\256\272\344\270\216\346\225\260\347\220\206\347\273\237\350\256\241/notes/README.md" @@ -0,0 +1,19 @@ +# 概率论数理统计复习提纲 +## 使用指南 +本提纲按照中国科大 “概率论与数理统计B” 课程资料作成,主要介绍每章节的常用数学公式和数值计算方法/算法简介。 ~~适合考前突击/构建框架/查找等需求~~ + +## 附注 +- 如有错误或者需要增加的内容,欢迎联系作者。 + +- 如有索要原 .tex 文件的需求,请联系作者并注明合理原因。 + +## 参考教材 +- 《概率论与数理统计》陈希孺,中国科学技术大学出版社,2009.2 + +- 《概率论与数理统计讲义》中国科学技术大学统计与金融系概率统计教研室,2008.4 + +## 联系方式 +~~GitHub @ApocalypseMac~~ + +Michael Zhu +2020.3.27 \ No newline at end of file diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab1/PB16030899-\346\234\261\346\262\263\345\213\244-\345\256\236\351\252\214\344\270\200.py" "b/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab1/PB16030899-\346\234\261\346\262\263\345\213\244-\345\256\236\351\252\214\344\270\200.py" index fe2e828..daaaab4 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab1/PB16030899-\346\234\261\346\262\263\345\213\244-\345\256\236\351\252\214\344\270\200.py" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab1/PB16030899-\346\234\261\346\262\263\345\213\244-\345\256\236\351\252\214\344\270\200.py" @@ -2,143 +2,165 @@ from time import time from functools import total_ordering + @total_ordering class point: - def __init__(self,x,y): - self.x=x - self.y=y + def __init__(self, x, y): + self.x = x + self.y = y + def __neg__(self): - return pont(-self.x, -self.y) + return point(-self.x, -self.y) + def __len__(self): return self.norm(2) - def __lt__(self,p): - return self.xd2: + if minD > d2: minD = d2 - p,q = pts[1], pts[2] + p, q = pts[1], pts[2] d2 = pts[0].distance(pts[2]) - if minD>d2: return d2, pts[0],pts[2] - else : return minD, p,q - n2 = n//2 - mid = (pts[n2].x +pts[n2-1].x)/2 + if minD > d2: return d2, pts[0], pts[2] + else: return minD, p, q + n2 = n // 2 + mid = (pts[n2].x + pts[n2 - 1].x) / 2 s1 = pts[:n2] s2 = pts[n2:] - minD ,p,q = _min(s1) + minD, p, q = _min(s1) d2, p2, q2 = _min(s2) #print('\n\n',minD,p,q,s1) #print(d2,p2,q2,s2) - if minD> d2: - minD,p,q = d2, p2, q2 + if minD > d2: + minD, p, q = d2, p2, q2 - linePoints = findif(s1,lambda pt:floatEql(pt.x,mid),reverse=True) - linePoints += findif(s2,lambda pt:floatEql(pt.x,mid)) + linePoints = findif(s1, lambda pt: floatEql(pt.x, mid), reverse=True) + linePoints += findif(s2, lambda pt: floatEql(pt.x, mid)) n = len(linePoints) - if n>1: - for i in range(1,n): - dis = linePoints[i].y -linePoints[i-1].y - if dis 1: + for i in range(1, n): + dis = linePoints[i].y - linePoints[i - 1].y + if dis < minD: minD = dis - p,q = linePoints[i-1], linePoints[i] - leftPoints = findif(s1,lambda pt:pt.x>= mid-minD,reverse=True) - rightPoints = findif(s2,lambda pt:pt.x<= mid+minD) + p, q = linePoints[i - 1], linePoints[i] + leftPoints = findif(s1, lambda pt: pt.x >= mid - minD, reverse=True) + rightPoints = findif(s2, lambda pt: pt.x <= mid + minD) for lp in leftPoints: - y1,y2 = lp.y-minD, lp.y+minD + y1, y2 = lp.y - minD, lp.y + minD for rp in rightPoints: - if y1< rp.y =low + + def overlap(self, low, high): + return self.val <= high and self.high >= low + def setMax(self): l = 0 if self.left is None else self.left.max r = 0 if self.right is None else self.right.max self.max = max(self.high, l, r) return self.max + class intervalTree(redBlackTree): - def search(self,low,high): + def search(self, low, high): nd = self.root - while nd is not None and not nd.overlap(low,high): - if nd.left is not None and nd.left.max>=low: + while nd is not None and not nd.overlap(low, high): + if nd.left is not None and nd.left.max >= low: nd = nd.left - else:nd = nd.right + else: + nd = nd.right return nd - def insert(self,nd): - super(intervalTree,self).insert(nd) + + def insert(self, nd): + super(intervalTree, self).insert(nd) while nd is not None: nd.setMax() nd = nd.parent - def delete(self,val): + + def delete(self, val): nd = self.find(val) if nd is not None: nd.max = 0 @@ -59,56 +73,65 @@ def delete(self,val): while tmp is not None: tmp.setMax() tmp = tmp.parent - super(intervalTree,self).delete(val) - def rotate(self,prt,chd): + super(intervalTree, self).delete(val) + + def rotate(self, prt, chd): '''rotate prt, and return new prt, namyly the original chd''' - super(intervalTree,self).rotate(prt,chd) + super(intervalTree, self).rotate(prt, chd) prt.setMax() chd.setMax() - def copyNode(self,src,des): + + def copyNode(self, src, des): des.val = src.val des.high = src.high des.setMax() - from random import randint, shuffle -def genNum(n =10,upper=10): - nums ={} + + +def genNum(n=10, upper=10): + nums = {} for i in range(n): while 1: - d = randint(0,100) + d = randint(0, 100) if d not in nums: - nums[d] = (d,randint(d,d+upper)) + nums[d] = (d, randint(d, d + upper)) break return nums.values() -def buildTree(n=10,nums=None,visitor=None): + +def buildTree(n=10, nums=None, visitor=None): #if nums is None or nums ==[]: nums = genNum(n) tree = intervalTree() print(f'build a red-black tree using {nums}') for i in nums: tree.insert(node(*i)) if visitor: - visitor(tree,i) - return tree,nums + visitor(tree, i) + return tree, nums + + def testInsert(nums=None): - def visitor(t,val): + def visitor(t, val): print('inserting', val) print(t) - tree,nums = buildTree(visitor = visitor,nums=nums) - print('-'*5+ 'in-order visit' + '-'*5) - for i,j in enumerate(tree.sort()): + + tree, nums = buildTree(visitor=visitor, nums=nums) + print('-' * 5 + 'in-order visit' + '-' * 5) + for i, j in enumerate(tree.sort()): print(f'{i+1}: {j}') return tree + def testSuc(nums=None): - tree,nums = buildTree(nums=nums) + tree, nums = buildTree(nums=nums) for i in tree.sort(): print(f'{i}\'s suc is {tree.getSuccessor(i)}') + def testDelete(nums=None): - tree,nums = buildTree(nums = nums) + tree, nums = buildTree(nums=nums) print(tree) for i in nums: print(f'deleting {i}') @@ -116,14 +139,16 @@ def testDelete(nums=None): print(tree) return tree -if __name__=='__main__': - lst = [(0,3),(5,8),(6,10),(26,26),(25,30),(8,9),(19,20),(15,23),(16,21),(17,19)] + +if __name__ == '__main__': + lst = [(0, 3), (5, 8), (6, 10), (26, 26), (25, 30), (8, 9), (19, 20), + (15, 23), (16, 21), (17, 19)] #lst = None #testSuc(lst) tree = testInsert(lst) #tree,_= buildTree(lst) while 1: - a =int( input('low:')) - b =int( input('high:')) - res = tree.search(a,b) + a = int(input('low:')) + b = int(input('high:')) + res = tree.search(a, b) print(res) diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab2/redBlackTree.py" "b/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab2/redBlackTree.py" index 1f11463..541773c 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab2/redBlackTree.py" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab2/redBlackTree.py" @@ -12,36 +12,45 @@ from functools import total_ordering from random import randint, shuffle + @total_ordering class node: - def __init__(self,val,left=None,right=None,isBlack=False): - self.val =val + def __init__(self, val, left=None, right=None, isBlack=False): + self.val = val self.left = left self.right = right - self.parent= None - self.isBlack = isBlack - def __lt__(self,nd): + self.parent = None + self.isBlack = isBlack + + def __lt__(self, nd): return self.val < nd.val - def __eq__(self,nd): + + def __eq__(self, nd): return nd is not None and self.val == nd.val - def setChild(self,nd,isLeft): + + def setChild(self, nd, isLeft): if isLeft: self.left = nd else: self.right = nd if nd is not None: nd.parent = self - def getChild(self,isLeft): + def getChild(self, isLeft): if isLeft: return self.left else: return self.right + def __bool__(self): return self.val is not None + def __str__(self): color = 'B' if self.isBlack else 'R' - val = '-' if self.parent==None else self.parent.val + val = '-' if self.parent == None else self.parent.val return f'{color}-{self.val}' + def __repr__(self): return f'node({self.val},isBlack={self.isBlack})' + + class redBlackTree: - def __init__(self,unique=False): + def __init__(self, unique=False): '''if unique is True, all node'vals are unique, else there may be equal vals''' self.root = None self.unique = unique @@ -49,23 +58,28 @@ def __init__(self,unique=False): @staticmethod def checkBlack(nd): return nd is None or nd.isBlack + @staticmethod - def setBlack(nd,isBlack): + def setBlack(nd, isBlack): if nd is not None: if isBlack is None or isBlack: nd.isBlack = True - else:nd.isBlack = False - def setRoot(self,nd): - if nd is not None: nd.parent=None - self.root= nd - def find(self,val): + else: + nd.isBlack = False + + def setRoot(self, nd): + if nd is not None: nd.parent = None + self.root = nd + + def find(self, val): nd = self.root while nd: - if nd.val ==val: + if nd.val == val: return nd else: - nd = nd.getChild(nd.val>val) - def getSuccessor(self,nd): + nd = nd.getChild(nd.val > val) + + def getSuccessor(self, nd): if nd: if nd.right: nd = nd.right @@ -76,17 +90,18 @@ def getSuccessor(self,nd): while nd.parent is not None and nd.parent.right is nd: nd = nd.parent return None if nd is self.root else nd.parent - def rotate(self,prt,chd): - '''rotate prt with the center of chd''' + + def rotate(self, prt, chd): + '''rotate prt with the center of chd''' if self.root is prt: self.setRoot(chd) else: prt.parent.setChild(chd, prt.parent.left is prt) isLeftChd = prt.left is chd prt.setChild(chd.getChild(not isLeftChd), isLeftChd) - chd.setChild(prt,not isLeftChd) + chd.setChild(prt, not isLeftChd) - def insert(self,nd): + def insert(self, nd): if nd.isBlack: nd.isBlack = False if self.root is None: @@ -95,16 +110,17 @@ def insert(self,nd): else: parent = self.root while parent: - if parent == nd : return None + if parent == nd: return None isLeft = parent > nd - chd = parent.getChild(isLeft) + chd = parent.getChild(isLeft) if chd is None: - parent.setChild(nd,isLeft) + parent.setChild(nd, isLeft) break else: parent = chd - self.fixUpInsert(parent,nd) - def fixUpInsert(self,parent,nd): + self.fixUpInsert(parent, nd) + + def fixUpInsert(self, parent, nd): ''' adjust color and level, there are two red nodes: the new one and its parent''' while not self.checkBlack(parent): grand = parent.parent @@ -125,8 +141,8 @@ def fixUpInsert(self,parent,nd): # grand grand # parent or parent # nd nd - self.rotate(parent,nd) #parent rotate - nd,parent = parent,nd + self.rotate(parent, nd) #parent rotate + nd, parent = parent, nd # case 3 (case 2.2) the new node is inserted in left-left or right-right form # grand grand # parent or parent @@ -134,25 +150,27 @@ def fixUpInsert(self,parent,nd): self.setBlack(grand, False) self.setBlack(parent, True) - self.rotate(grand,parent) - self.setBlack(self.root,True) + self.rotate(grand, parent) + self.setBlack(self.root, True) - def copyNode(self,src,des): + def copyNode(self, src, des): '''when deleting a node which has two kids, copy its succesor's data to his position data exclude left, right , isBlack ''' des.val = src.val - def delete(self,val): + + def delete(self, val): '''delete node in a binary search tree''' - if isinstance(val,node): val = val.val + if isinstance(val, node): val = val.val nd = self.find(val) if nd is None: return self._delete(nd) - def _delete(self,nd): + + def _delete(self, nd): y = None if nd.left and nd.right: - y= self.getSuccessor(nd) + y = self.getSuccessor(nd) else: y = nd py = y.parent @@ -160,58 +178,59 @@ def _delete(self,nd): if py is None: self.setRoot(x) else: - py.setChild(x,py.left is y) + py.setChild(x, py.left is y) if y != nd: - self.copyNode(y,nd) - if self.checkBlack(y): self.fixUpDel(py,x) - - def fixUpDel(self,prt,chd): + self.copyNode(y, nd) + if self.checkBlack(y): self.fixUpDel(py, x) + + def fixUpDel(self, prt, chd): ''' adjust colors and rotate ''' while self.root != chd and self.checkBlack(chd): - isLeft =prt.left is chd + isLeft = prt.left is chd brother = prt.getChild(not isLeft) # brother is black lb = self.checkBlack(brother.getChild(isLeft)) rb = self.checkBlack(brother.getChild(not isLeft)) - if not self.checkBlack(brother): + if not self.checkBlack(brother): # case 1: brother is red. converted to case 2,3,4 - self.setBlack(prt,False) - self.setBlack(brother,True) - self.rotate(prt,brother) + self.setBlack(prt, False) + self.setBlack(brother, True) + self.rotate(prt, brother) - elif lb and rb: - # case 2: brother is black and two kids are black. + elif lb and rb: + # case 2: brother is black and two kids are black. # conveted to the begin case - self.setBlack(brother,False) + self.setBlack(brother, False) chd = prt - prt= chd.parent + prt = chd.parent else: - if rb: + if rb: # case 3: brother is black and left kid is red and right child is black # rotate bro to make g w wl wr in one line # uncle's son is nephew, and niece for uncle's daughter nephew = brother.getChild(isLeft) - self.setBlack(nephew,True) - self.setBlack(brother,False) + self.setBlack(nephew, True) + self.setBlack(brother, False) # brother (not isLeft) rotate - self.rotate(brother,nephew) + self.rotate(brother, nephew) brother = nephew # case 4: brother is black and right child is red brother.isBlack = prt.isBlack - self.setBlack(prt,True) - self.setBlack(brother.getChild(not isLeft),True) + self.setBlack(prt, True) + self.setBlack(brother.getChild(not isLeft), True) - self.rotate(prt,brother) + self.rotate(prt, brother) chd = self.root - self.setBlack(chd,True) + self.setBlack(chd, True) - def sort(self,reverse = False): + def sort(self, reverse=False): ''' return a generator of sorted data''' + def inOrder(root): - if root is None:return + if root is None: return if reverse: yield from inOrder(root.right) else: @@ -221,12 +240,14 @@ def inOrder(root): yield from inOrder(root.left) else: yield from inOrder(root.right) + yield from inOrder(self.root) def display(self): def getHeight(nd): - if nd is None:return 0 - return max(getHeight(nd.left),getHeight(nd.right)) +1 + if nd is None: return 0 + return max(getHeight(nd.left), getHeight(nd.right)) + 1 + def levelVisit(root): from collections import deque lst = deque([root]) @@ -234,87 +255,97 @@ def levelVisit(root): h = getHeight(root) ct = lv = 0 while 1: - ct+=1 + ct += 1 nd = lst.popleft() if ct >= 2**lv: - lv+=1 - if lv>h:break + lv += 1 + if lv > h: break level.append([]) level[-1].append(str(nd)) if nd is not None: - lst += [nd.left,nd.right] + lst += [nd.left, nd.right] else: - lst +=[None,None] + lst += [None, None] return level + def addBlank(lines): - width = 1+len(str(self.root)) - sep = ' '*width + width = 1 + len(str(self.root)) + sep = ' ' * width n = len(lines) - for i,oneline in enumerate(lines): - k = 2**(n-i) -1 - new = [sep*((k-1)//2)] + for i, oneline in enumerate(lines): + k = 2**(n - i) - 1 + new = [sep * ((k - 1) // 2)] for s in oneline: new.append(s.ljust(width)) - new.append(sep*k) + new.append(sep * k) lines[i] = new return lines lines = levelVisit(self.root) lines = addBlank(lines) li = [''.join(line) for line in lines] - length = 10 if li==[] else max(len(i) for i in li)//2 - begin ='\n'+ 'red-black-tree'.rjust(length+14,'-') + '-'*(length) - end = '-'*(length*2+14)+'\n' - return '\n'.join([begin,*li,end]) + length = 10 if li == [] else max(len(i) for i in li) // 2 + begin = '\n' + 'red-black-tree'.rjust(length + 14, + '-') + '-' * (length) + end = '-' * (length * 2 + 14) + '\n' + return '\n'.join([begin, *li, end]) + def __str__(self): return self.display() -def genNum(n =10): - nums =[] +def genNum(n=10): + nums = [] for i in range(n): while 1: - d = randint(0,100) + d = randint(0, 100) if d not in nums: nums.append(d) break return nums -def buildTree(n=10,nums=None,visitor=None): - if nums is None or nums ==[]: nums = genNum(n) + +def buildTree(n=10, nums=None, visitor=None): + if nums is None or nums == []: nums = genNum(n) rbtree = redBlackTree() print(f'build a red-black tree using {nums}') for i in nums: rbtree.insert(node(i)) print(rbtree) if visitor: - visitor(rbtree,i) - return rbtree,nums + visitor(rbtree, i) + return rbtree, nums + + def testInsert(nums=None): - def visitor(t,val): + def visitor(t, val): print('inserting', val) print(t) - rbtree,nums = buildTree(visitor = visitor,nums=nums) - print('-'*5+ 'in-order visit' + '-'*5) - for i,j in enumerate(rbtree.sort()): + + rbtree, nums = buildTree(visitor=visitor, nums=nums) + print('-' * 5 + 'in-order visit' + '-' * 5) + for i, j in enumerate(rbtree.sort()): print(f'{i+1}: {j}') + def testSuc(nums=None): - rbtree,nums = buildTree(nums=nums) + rbtree, nums = buildTree(nums=nums) for i in rbtree.sort(): print(f'{i}\'s suc is {rbtree.getSuccessor(i)}') + def testDelete(nums=None): - rbtree,nums = buildTree(nums = nums) + rbtree, nums = buildTree(nums=nums) print(rbtree) for i in sorted(nums): print(f'deleting {i}') rbtree.delete(i) print(rbtree) -if __name__=='__main__': - lst =[45, 30, 64, 36, 95, 38, 76, 34, 50, 1] - lst = [0,3,5,6,26,25,8,19,15,16,17] + +if __name__ == '__main__': + lst = [45, 30, 64, 36, 95, 38, 76, 34, 50, 1] + lst = [0, 3, 5, 6, 26, 25, 8, 19, 15, 16, 17] #testSuc(lst) #testInsert(lst) testDelete() diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab3/lcs.py" "b/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab3/lcs.py" index 1341927..78e7ab6 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab3/lcs.py" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab3/lcs.py" @@ -10,43 +10,46 @@ ######################################################################### ''' -def lcs(a,b): + +def lcs(a, b): '''time: O(mn); space: O(mn)''' - m,n= len(a),len(b) - board = [[[] for i in range(n+1)] for i in range(m+1)] + m, n = len(a), len(b) + board = [[[] for i in range(n + 1)] for i in range(m + 1)] for i in range(m): for j in range(n): - if a[i]==b[j]: - board[i+1][j+1] =board[i][j]+[a[i]] - elif len(board[i][j+1]) < len(board[i+1][j]): - board[i+1][j+1] = board[i+1][j] - else : - board[i+1][j+1] = board[i][1+j] + if a[i] == b[j]: + board[i + 1][j + 1] = board[i][j] + [a[i]] + elif len(board[i][j + 1]) < len(board[i + 1][j]): + board[i + 1][j + 1] = board[i + 1][j] + else: + board[i + 1][j + 1] = board[i][1 + j] return board[m][n] -def lcs2(a,b): + +def lcs2(a, b): '''time: O(mn); space: O(min(m,n))''' - if len(b)>len(a): - a,b= b,a - m,n = len(a),len(b) - board = [[] for i in range(n+1)] + if len(b) > len(a): + a, b = b, a + m, n = len(a), len(b) + board = [[] for i in range(n + 1)] for i in range(m): upperLevel = board[0].copy() for j in range(n): - tmp = board[j+1].copy() - if a[i]==b[j]: - board[j+1] = upperLevel+[a[i]] - elif len(board[j+1]) < len(board[j]): - board[j+1] = board[j].copy() # copy is needed + tmp = board[j + 1].copy() + if a[i] == b[j]: + board[j + 1] = upperLevel + [a[i]] + elif len(board[j + 1]) < len(board[j]): + board[j + 1] = board[j].copy() # copy is needed upperLevel = tmp return board[n] -if __name__ =='__main__': + +if __name__ == '__main__': a = 'ABCBDAB' b = 'BDCABA' - print('s1:',a) - print('s2:',b) + print('s1:', a) + print('s2:', b) while 1: - print('lcs:',lcs2(a,b)) + print('lcs:', lcs2(a, b)) a = input('s1: ') b = input('s2: ') diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab5/directedGraph.py" "b/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab5/directedGraph.py" index 2151fac..a9ea02a 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab5/directedGraph.py" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/labs/2018-\345\276\220\344\272\221/lab5/directedGraph.py" @@ -15,11 +15,17 @@ import argparse parser = argparse.ArgumentParser() -parser.add_argument('-p','--parallel',help="use parallel algorithm",action='store_true') -parser.add_argument('-o','--output',help="output all edge",action='store_true') -parser.add_argument('-s','--sep',help="file format for seperate character",default=" ") -parser.add_argument('-n','--nedge',help="generate n edges randomly (including duplicate edges)") -parser.add_argument('-f','--file',help="input file") +parser.add_argument( + '-p', '--parallel', help="use parallel algorithm", action='store_true') +parser.add_argument( + '-o', '--output', help="output all edge", action='store_true') +parser.add_argument( + '-s', '--sep', help="file format for seperate character", default=" ") +parser.add_argument( + '-n', + '--nedge', + help="generate n edges randomly (including duplicate edges)") +parser.add_argument('-f', '--file', help="input file") args = parser.parse_args() @@ -29,28 +35,33 @@ NEDGE = args.nedge SEP = args.sep + class DG: def __init__(self): - self.nodes={} - def addEdge(self,inKey,outKey): + self.nodes = {} + + def addEdge(self, inKey, outKey): '''unique edges''' if inKey in self.nodes: - self.nodes[inKey][outKey]=None + self.nodes[inKey][outKey] = None else: - self.nodes[inKey] = {outKey:None} - def addEdge2(self,inKey,outKey): + self.nodes[inKey] = {outKey: None} + + def addEdge2(self, inKey, outKey): if inKey in self.nodes: self.nodes[inKey].add(outKey) else: - self.nodes[inKey]=set([outKey]) + self.nodes[inKey] = set([outKey]) + def display(self): print('edges: ') for i in self.nodes: for j in self.nodes[i]: - print(i,'->',j) + print(i, '->', j) + def bfs(self): '''broad first search''' - self.dq =deque() + self.dq = deque() self.visited = set() self.edgeNum = 0 for inNode in self.nodes: @@ -59,32 +70,37 @@ def bfs(self): self.visited.add(inNode) while self.dq: cur = self.dq.popleft() - self.edgeNum +=len(self.nodes[cur]) + self.edgeNum += len(self.nodes[cur]) for nd in self.nodes[cur]: if nd not in self.visited: if nd in self.nodes: self.dq.append(nd) self.visited.add(nd) - print('visited {} nodes, {} edges'.format(len(self.visited),self.edgeNum)) + print('visited {} nodes, {} edges'.format( + len(self.visited), self.edgeNum)) + def pbfs(self): '''parallel bfs''' self.visited = {} self.edgeNum = 0 pool = MP.Pool(processes=MP.cpu_count()) - cur=[] + cur = [] for inNode in self.nodes: if inNode not in self.visited: cur.append(inNode) - self.visited[inNode]=None + self.visited[inNode] = None while cur: - self.edgeNum+=sum(len(self.nodes[i]) for i in cur if i in self.nodes) - lsts= pool.map(self.vis,cur) - li = sum(lsts,[]) - dic = {i:None for i in li} + self.edgeNum += sum( + len(self.nodes[i]) for i in cur if i in self.nodes) + lsts = pool.map(self.vis, cur) + li = sum(lsts, []) + dic = {i: None for i in li} self.visited.update(dic) cur = list(dic.keys()) - print('visited {} nodes, {} edges'.format(len(self.visited),self.edgeNum)) - def vis(self,nd): + print('visited {} nodes, {} edges'.format( + len(self.visited), self.edgeNum)) + + def vis(self, nd): li = [] if nd in self.nodes: for i in self.nodes[nd]: @@ -92,46 +108,53 @@ def vis(self,nd): li.append(i) return li -def vis_f(line,sep=SEP): - a,b = line.split(sep) - return int(a),int(b) -def readData(fileName,sep=' '): +def vis_f(line, sep=SEP): + a, b = line.split(sep) + return int(a), int(b) + + +def readData(fileName, sep=' '): with open(fileName) as f: - for line in f:# this read method is the best + for line in f: # this read method is the best yield vis_f(line) -def pread(fileName,sep=' '): + +def pread(fileName, sep=' '): with open(fileName) as fp: lines = fp.readlines() n = len(lines) cores = MP.cpu_count() pool = MP.Pool(processes=cores) - yield from pool.map(vis_f,lines) + yield from pool.map(vis_f, lines) + from random import randint -def genData(n=100,upper=None): - if upper is None:upper = round(0.3*n) + + +def genData(n=100, upper=None): + if upper is None: upper = round(0.3 * n) for i in range(n): - yield randint(0,upper),randint(0,upper) + yield randint(0, upper), randint(0, upper) + -if __name__=='__main__': +if __name__ == '__main__': dg = DG() t = time() if NEDGE: n = int(NEDGE) - for a,b in genData(n): - dg.addEdge2(a,b) + for a, b in genData(n): + dg.addEdge2(a, b) elif FILE: - for a,b in readData(FILE,SEP): - #for a,b in pread(FILE,SEP): - dg.addEdge2(a,b) - dt = time()-t + for a, b in readData(FILE, SEP): + #for a,b in pread(FILE,SEP): + dg.addEdge2(a, b) + dt = time() - t print('creating graph costs time: {:.4f}s'.format(dt)) if OUTPUT: dg.display() t = time() - if PARA:dg.pbfs() + if PARA: dg.pbfs() else: dg.bfs() - dt = time()-t + dt = time() - t print('cost time: {:.4f}s'.format(dt)) diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/algorithm-general.md" "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/algorithm-general.md" index bbc33c5..298feb4 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/algorithm-general.md" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/algorithm-general.md" @@ -69,11 +69,11 @@ top: ![](https://upload-images.jianshu.io/upload_images/7130568-d452e7efb6fb3433.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) -* $\omicron,O,\Omega,\Theta$ +* ![](https://latex.codecogs.com/gif.latex?\omicron,O,\Omega,\Theta) * 最坏情况, 平均情况 -* 增长的量级$ O(1), O(log^*n), O(logn), O(n), O(n^k), O(a^n) $ +* 增长的量级![](https://latex.codecogs.com/gif.latex?O(1),&space;O(log^*n),&space;O(logn),&space;O(n),&space;O(n^k),&space;O(a^n)) -$\log^{\*}*(\log x) = log^{\*}x-1$ +![](https://latex.codecogs.com/gif.latex?\log^{\*}*(\log&space;x)&space;=&space;log^{\*}x-1) @@ -82,11 +82,11 @@ $\log^{\*}*(\log x) = log^{\*}x-1$ ## 4.1. 分治(divide and conquer) 结构上是递归的, 步骤: 分解,解决, 合并 -eg. 快排,归并排序, 矩阵乘法(Strassen $O(log_2 7)$ +eg. 快排,归并排序, 矩阵乘法(Strassen ![](https://latex.codecogs.com/gif.latex?O(log_2&space;7)) # 5. 递归式 - $T(n) = aT(\frac{n} {b})+f(n)$ + ![](https://latex.codecogs.com/gif.latex?T(n)&space;=&space;aT(\frac{n}&space;{b})+f(n)) ## 5.1. 代换法 @@ -98,74 +98,58 @@ eg. 快排,归并排序, 矩阵乘法(Strassen $O(log_2 7)$ ### 5.1.2. 例子 -$T(n) = 2T(\frac{n} {2})+n$ -猜测$T(n) = O(nlogn)$ -证明 $ T(n)\leqslant cnlogn$ +![](https://latex.codecogs.com/gif.latex?T(n)&space;=&space;2T(\frac{n}&space;{2})+n) +猜测![](https://latex.codecogs.com/gif.latex?T(n)&space;=&space;O(nlogn)) +证明 ![](https://latex.codecogs.com/gif.latex?T(n)\leqslant&space;cnlogn) 归纳奠基 n=2,3 -归纳假设 $T(\frac{n} {2}) \leqslant \frac{cn}{2}$ +归纳假设 ![](https://latex.codecogs.com/gif.latex?T(\frac{n}&space;{2})&space;\leqslant&space;\frac{cn}{2}) 递归 -$ -\begin{aligned} -T(n) &\leqslant 2c\frac{n}{2}log(\frac{n}{2}) + n \leqslant cnlog(\frac{n}{2}) \\ -\end{aligned} -$ +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;T(n)&space;&\leqslant&space;2c\frac{n}{2}log(\frac{n}{2})&space;+&space;n&space;\leqslant&space;cnlog(\frac{n}{2})&space;\\&space;\end{aligned}&space;) ### 5.1.3. 放缩 -对于 $T(n) = 2T(\frac{cn}{2}) + 1$ -如果 直接猜测 $T(n) = O (n)$ 不能证明, -而且不要猜测更高的界 $O (n^2)$ +对于 ![](https://latex.codecogs.com/gif.latex?T(n)&space;=&space;2T(\frac{cn}{2})&space;+&space;1) +如果 直接猜测 ![](https://latex.codecogs.com/gif.latex?T(n)&space;=&space;O&space;(n)) 不能证明, +而且不要猜测更高的界 ![](https://latex.codecogs.com/gif.latex?O&space;(n^2)) 可以放缩为 n-b ### 5.1.4. 改变变量 -对于 $ T(n) = 2T(\sqrt{n})+logn $ +对于 ![](https://latex.codecogs.com/gif.latex?T(n)&space;=&space;2T(\sqrt{n})+logn) 可以 令 `m = logn`, 得到 -$T(2^m) = 2T(m^{\frac{m}{2}}) + m $ -令 $S(m) = T(2^m)$ -得到 $ S(m) = 2S(\frac{m}{2}) + m $ +![](https://latex.codecogs.com/gif.latex?T(2^m)&space;=&space;2T(m^{\frac{m}{2}})&space;+&space;m) +令 ![](https://latex.codecogs.com/gif.latex?S(m)&space;=&space;T(2^m)) +得到 ![](https://latex.codecogs.com/gif.latex?S(m)&space;=&space;2S(\frac{m}{2})&space;+&space;m) -$$T(n)=T(2^m)=S(m)=\Theta(m\log m)=\Theta(\log n \log^2 n)$$ +![](https://latex.codecogs.com/gif.latex?T(n)=T(2^m)=S(m)=\Theta(m\log&space;m)=\Theta(\log&space;n&space;\log^2&space;n)) ## 5.2. 递归树 -例如 $T(n) = 3T(\frac{n}{4}) + c n^2$ +例如 ![](https://latex.codecogs.com/gif.latex?T(n)&space;=&space;3T(\frac{n}{4})&space;+&space;c&space;n^2) 不妨假设 n 为4的幂, 则有如下递归树 ![recursive-tree.jpg](https://upload-images.jianshu.io/upload_images/7130568-4a1b9b6ee852b725.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) -$$ -T(n) = \sum_{i=0}^{ {\log_4 n}-1}cn^2*(\frac{3}{16})^i + \Theta(n^{\log4 3}) -$$ +![](https://latex.codecogs.com/gif.latex?&space;T(n)&space;=&space;\sum_{i=0}^{&space;{\log_4&space;n}-1}cn^2*(\frac{3}{16})^i&space;+&space;\Theta(n^{\log4&space;3})&space;) 每个结点是代价, 将每层加起来即可 ## 5.3. 主方法(master method) -对于 $T(n) = aT(\frac{n} {b})+f(n)$ -$$ -\begin{aligned} -T(n)=\begin{cases} -\Theta(n^{log_b a}),\quad f(n)=O(n^{ {log_b a}-\epsilon}) \\ -\Theta(n^{log_b a}logn),\quad f(n)=\Theta(n^{log_b a}) \\ -\Theta(f(n)),\quad f(n)=\Omega(n^{ {log_b a}+ \epsilon}),af(\frac{n}{b})\leqslant cf(n) \\ -\qquad \qquad \quad \text{其中常数c<1,变量n任意大} \\ -unknown, \quad others -\end{cases} -\end{aligned} -$$ +对于 ![](https://latex.codecogs.com/gif.latex?T(n)&space;=&space;aT(\frac{n}&space;{b})+f(n)) +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;T(n)=\begin{cases}&space;\Theta(n^{log_b&space;a}),\quad&space;f(n)=O(n^{&space;{log_b&space;a}-\epsilon})&space;\\&space;\Theta(n^{log_b&space;a}logn),\quad&space;f(n)=\Theta(n^{log_b&space;a})&space;\\&space;\Theta(f(n)),\quad&space;f(n)=\Omega(n^{&space;{log_b&space;a}+&space;\epsilon}),af(\frac{n}{b})\leqslant&space;cf(n)&space;\\&space;\qquad&space;\qquad&space;\quad&space;\text{Constantc<1,VariablenArbitrarily-large}&space;\\&space;unknown,&space;\quad&space;others&space;\end{cases}&space;\end{aligned}&space;) ### 5.3.1. 记忆 -直观上, 比较 $n^{log_b a}$ 和 $f(n)$, 谁大就是谁, -相等的话就是 $\Theta(f(n))\log n$ +直观上, 比较 ![](https://latex.codecogs.com/gif.latex?n^{log_b&space;a}) 和 ![](https://latex.codecogs.com/gif.latex?f(n)), 谁大就是谁, +相等的话就是 ![](https://latex.codecogs.com/gif.latex?\Theta(f(n))\log&space;n) 这里的大是多项式上的比较, 即比较次数, 而不是渐近上的 -比如 $n$ 与 $nlogn$ 渐近上后者大, 但多项式上是不能比较的 +比如 ![](https://latex.codecogs.com/gif.latex?n) 与 ![](https://latex.codecogs.com/gif.latex?nlogn) 渐近上后者大, 但多项式上是不能比较的 ### 5.3.2. 证明 #### 5.3.2.1. 证明当 n 为 b 的正合幂时成立 -* 用递归树可以得到 总代价为 $\sum_{j=0}^{log_b n-1} a^j f(\frac{n}{b^j})$ +* 用递归树可以得到 总代价为 ![](https://latex.codecogs.com/gif.latex?\sum_{j=0}^{log_b&space;n-1}&space;a^j&space;f(\frac{n}{b^j})) * 决定上式的渐近界 * 结合前两点 @@ -184,10 +168,10 @@ $$ 则得出 B={2,3,1},因为第二个(2)优先级最小, 为4, 接着第三个,最后第1个. 优先级数组的产生, 一般在 RANDOM(1,n^3), 这样优先级各不相同的概率至少为 1-1/n -由于要排序优先级数组, 所以时间复杂度 $O(nlogn)$ +由于要排序优先级数组, 所以时间复杂度 ![](https://latex.codecogs.com/gif.latex?O(nlogn)) 如果优先级唯一, 则此算法可以 shuffle 数组 -应证明 同样排列的概率是 $\frac{1}{n!}$ +应证明 同样排列的概率是 ![](https://latex.codecogs.com/gif.latex?\frac{1}{n!}) ### 6.1.2. RANDOMIZE-IN-PLACE @@ -200,18 +184,18 @@ def myshuffle(arr): arr[i],arr[p] = arr[p],arr[i] return arr ``` -时间复杂度 $O(n)$ +时间复杂度 ![](https://latex.codecogs.com/gif.latex?O(n)) 证明 -定义循环不变式: 对每个可能的 $A_n^{i-1}$ 排列, 其在 arr[1..i-1] 中的概率为 $\frac{1}{A_n^{i-1}}$ +定义循环不变式: 对每个可能的 ![](https://latex.codecogs.com/gif.latex?A_n^{i-1}) 排列, 其在 arr[1..i-1] 中的概率为 ![](https://latex.codecogs.com/gif.latex?\frac{1}{A_n^{i-1}}) 初始化: i=1 成立 保持 : 假设 在第 i-1 次迭代之前,成立, 证明在第 i 次迭代之后, 仍然成立, -终止: 在 结束后, i=n+1, 得到 概率为 $\frac{1}{n!}$ +终止: 在 结束后, i=n+1, 得到 概率为 ![](https://latex.codecogs.com/gif.latex?\frac{1}{n!}) # 7. 组合方程的近似算法 -* Stiring's approximation: $ n! \approx \sqrt{2\pi n}\left(\frac{n}{e}\right)^n$ -* 对于 $C_n^x=a$, 有 $x=\frac{ln^2 a}{n}$ -* 对于 $C_x^n=a$, 有 $x=(a*n!)^{\frac{1}{n}}+\frac{n}{2}$ +* Stiring's approximation: ![](https://latex.codecogs.com/gif.latex?n!&space;\approx&space;\sqrt{2\pi&space;n}\left(\frac{n}{e}\right)^n) +* 对于 ![](https://latex.codecogs.com/gif.latex?C_n^x=a), 有 ![](https://latex.codecogs.com/gif.latex?x=\frac{ln^2&space;a}{n}) +* 对于 ![](https://latex.codecogs.com/gif.latex?C_x^n=a), 有 ![](https://latex.codecogs.com/gif.latex?x=(a*n!)^{\frac{1}{n}}+\frac{n}{2}) @@ -220,20 +204,18 @@ def myshuffle(arr): ## 8.1. 球与盒子 把相同的秋随机投到 b 个盒子里,问在每个盒子里至少有一个球之前,平均至少要投多少个球? 称投入一个空盒为击中, 即求取得 b 次击中的概率 -设投 n 次, 称第 i 个阶段包括第 i-1 次击中到 第 i 次击中的球, 则第 i 次击中的概率为 $p_i=\frac{b-i+1}{b}$ -用 $n_i$表示第 i 阶段的投球数,则 $n=\sum_{i=1}^b n_i$ -且 $n_i$服从几何分布, $E(n_i)=\frac{b}{b-i+1}$, +设投 n 次, 称第 i 个阶段包括第 i-1 次击中到 第 i 次击中的球, 则第 i 次击中的概率为 ![](https://latex.codecogs.com/gif.latex?p_i=\frac{b-i+1}{b}) +用 ![](https://latex.codecogs.com/gif.latex?n_i)表示第 i 阶段的投球数,则 ![](https://latex.codecogs.com/gif.latex?n=\sum_{i=1}^b&space;n_i) +且 ![](https://latex.codecogs.com/gif.latex?n_i)服从几何分布, ![](https://latex.codecogs.com/gif.latex?E(n_i)=\frac{b}{b-i+1}), 则由期望的线性性, -$$ -E(n)=E(\sum_{i=1}^b n_i)=\sum_{i=1}^b E(n_i)=\sum_{i=1}^b \frac{b}{b-i+1}=b\sum_{i=1}^b \frac{1}{i}=b(lnb+O(1)) -$$ +![](https://latex.codecogs.com/gif.latex?&space;E(n)=E(\sum_{i=1}^b&space;n_i)=\sum_{i=1}^b&space;E(n_i)=\sum_{i=1}^b&space;\frac{b}{b-i+1}=b\sum_{i=1}^b&space;\frac{1}{i}=b(lnb+O(1))&space;) 这个问题又被称为 赠券收集者问题(coupon collector's problem),即集齐 b 种不同的赠券,在随机情况下平均需要买 blnb 张 ## 8.2. 序列 抛 n 次硬币, 期望看到的连续正面的次数 -答案是 $\Theta(logn)$ +答案是 ![](https://latex.codecogs.com/gif.latex?\Theta(logn)) 记 长度至少为 k 的正面序列开始与第 i 次抛, 由于独立, 所有 k 次抛掷都是正面的 概率为 -$P(A_{ik})=\frac{1}{2^k}$,对于 $k=2\lceil lgn\rceil$ +![](https://latex.codecogs.com/gif.latex?P(A_{ik})=\frac{1}{2^k}),对于 ![](https://latex.codecogs.com/gif.latex?k=2\lceil&space;lgn\rceil) ![coin1.jpg](https://upload-images.jianshu.io/upload_images/7130568-780b9795b6d9a2bd.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![coin2.jpg](https://upload-images.jianshu.io/upload_images/7130568-7d112b304e2d78b6.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) @@ -246,60 +228,60 @@ $P(A_{ik})=\frac{1}{2^k}$,对于 $k=2\lceil lgn\rceil$ # 9. 摊还分析 ## 9.1. 聚合分析(aggregate analysis) - 一个 n 个操作的序列最坏情况下花费的总时间为$T(n)$, 则在最坏情况下, 每个操作的摊还代价为 $\frac{T(n)}{n}$ + 一个 n 个操作的序列最坏情况下花费的总时间为![](https://latex.codecogs.com/gif.latex?T(n)), 则在最坏情况下, 每个操作的摊还代价为 ![](https://latex.codecogs.com/gif.latex?\frac{T(n)}{n}) -如栈中的 push, pop 操作都是 $O(1)$, 增加一个新操作 `multipop`, +如栈中的 push, pop 操作都是 ![](https://latex.codecogs.com/gif.latex?O(1)), 增加一个新操作 `multipop`, ```python def multipop(stk,k): while not stk.empty() and k>0: stk.pop() k-=1 ``` -multipop 的时间复杂度为 min(stk.size,k), 最坏情况为 $O(n)$, 则 n 个包含 push pop multipop 的操作列的最坏情况是 $O(n^2)$, 并不是这样, 注意到, 必须栈中有元素, 再 pop, 所以 push 操作与pop 操作(包含 multipop中的pop), 个数相当, 所以 实际上应为 $O(n)$, 每个操作的摊还代价 为$O(1)$ +multipop 的时间复杂度为 min(stk.size,k), 最坏情况为 ![](https://latex.codecogs.com/gif.latex?O(n)), 则 n 个包含 push pop multipop 的操作列的最坏情况是 ![](https://latex.codecogs.com/gif.latex?O(n^2)), 并不是这样, 注意到, 必须栈中有元素, 再 pop, 所以 push 操作与pop 操作(包含 multipop中的pop), 个数相当, 所以 实际上应为 ![](https://latex.codecogs.com/gif.latex?O(n)), 每个操作的摊还代价 为![](https://latex.codecogs.com/gif.latex?O(1)) ## 9.2. 核算法 (accounting method) -对不同操作赋予不同费用 cost (称为摊还代价 $c_i'$), 可能多于或者少于其实际代价 $c_i$ +对不同操作赋予不同费用 cost (称为摊还代价 ![](https://latex.codecogs.com/gif.latex?c_i')), 可能多于或者少于其实际代价 ![](https://latex.codecogs.com/gif.latex?c_i) -当 $c_i'>c_i$, 将 $c_i'-c_i$( `credit`) 存入数据结构中的特定对象.. 对于后续 $c_i'c_i), 将 ![](https://latex.codecogs.com/gif.latex?c_i'-c_i)( `credit`) 存入数据结构中的特定对象.. 对于后续 ![](https://latex.codecogs.com/gif.latex?c_i' ## 9.3. 势能法(potential method) 势能释放用来支付未来操作的代价, 势能是整个数据结构的, 不是特定对象的(核算法是). -数据结构 $D_0$为初始状态, 依次 执行 n 个操作 $op_i$进行势能转换 $D_i =op_i(D_{i-1}), i=1,2,\ldots,n$ , 各操作代价为 $c_i$ +数据结构 ![](https://latex.codecogs.com/gif.latex?D_0)为初始状态, 依次 执行 n 个操作 ![](https://latex.codecogs.com/gif.latex?op_i)进行势能转换 ![](https://latex.codecogs.com/gif.latex?D_i&space;=op_i(D_{i-1}),&space;i=1,2,\ldots,n) , 各操作代价为 ![](https://latex.codecogs.com/gif.latex?c_i) -势函数 $\Phi:D_i\rightarrow R$, $\Phi(D_i)$即为 $D_i$的势 +势函数 ![](https://latex.codecogs.com/gif.latex?\Phi:D_i\rightarrow&space;R), ![](https://latex.codecogs.com/gif.latex?\Phi(D_i))即为 ![](https://latex.codecogs.com/gif.latex?D_i)的势 则第 i 个操作的摊还代价 -$$c_i'=c_i+\Phi(D_i)-\Phi(D_{i-1})$$ +![](https://latex.codecogs.com/gif.latex?c_i'=c_i+\Phi(D_i)-\Phi(D_{i-1})) 则 -$$\sum_{i=1}^{n}c_i'=\sum_{i=1}^{n}c_i+\Phi(D_n)-\Phi(D_0)$$ +![](https://latex.codecogs.com/gif.latex?\sum_{i=1}^{n}c_i'=\sum_{i=1}^{n}c_i+\Phi(D_n)-\Phi(D_0)) -如果定义一个势函数$\Phi, st \ \Phi(D_i)\geqslant\Phi(D_0)$, 则总摊还代价给出了实际代价的一个上界 -可以简单地以 $D_0 \text{为参考状态}, then \ \Phi(D_0)=0$ +如果定义一个势函数![](https://latex.codecogs.com/gif.latex?\Phi,&space;st&space;\&space;\Phi(D_i)\geqslant\Phi(D_0)), 则总摊还代价给出了实际代价的一个上界 +可以简单地以 ![](https://latex.codecogs.com/gif.latex?D_0&space;\text{Reference-state},&space;then&space;\&space;\Phi(D_0)=0) 例如栈操作, -设空栈为 $D_0$, 势函数定义为栈的元素数 -对于push, $ \Phi(D_i)-\Phi(D_{i-1})=1$ -则 $c' = c +\Phi(D_i)-\Phi(D_{i-1}) = c+1 = 2$ +设空栈为 ![](https://latex.codecogs.com/gif.latex?D_0), 势函数定义为栈的元素数 +对于push, ![](https://latex.codecogs.com/gif.latex?\Phi(D_i)-\Phi(D_{i-1})=1) +则 ![](https://latex.codecogs.com/gif.latex?c'&space;=&space;c&space;+\Phi(D_i)-\Phi(D_{i-1})&space;=&space;c+1&space;=&space;2) -对于 multipop, $ \Phi(D_i)-\Phi(D_{i-1})=- min(k,s)$ -则 $c' = c - min(k,s) = 0$ +对于 multipop, ![](https://latex.codecogs.com/gif.latex?\Phi(D_i)-\Phi(D_{i-1})=-&space;min(k,s)) +则 ![](https://latex.codecogs.com/gif.latex?c'&space;=&space;c&space;-&space;min(k,s)&space;=&space;0) -同理 pop 的摊还代价也是0, 则总摊还代价的上界(最坏情况) 为 $O(n)$ +同理 pop 的摊还代价也是0, 则总摊还代价的上界(最坏情况) 为 ![](https://latex.codecogs.com/gif.latex?O(n)) diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/b-tree.md" "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/b-tree.md" index 6b62b25..a9eaafb 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/b-tree.md" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/b-tree.md" @@ -1,609 +1,609 @@ ---- -title: 『数据结构』B树(B-Tree)及其变体 B+树,B*树 -date: 2018-08-29 15:42 -categories: 数据结构与算法 -tags: [数据结构,B树,数据库] -keywords: 数据结构,B树,数据库 -mathjax: true -description: "B 树的原理与实现,b+ 树介绍" ---- - - - -- [1. 背景](#1-背景) -- [2. 定义](#2-定义) -- [3. 查找操作](#3-查找操作) -- [4. 插入操作](#4-插入操作) -- [5. 删除操作](#5-删除操作) - - [5.1. 第一种方法](#51-第一种方法) - - [5.2. 第二种方法](#52-第二种方法) -- [6. B+树](#6-b树) -- [7. B*树](#7-b树) -- [8. 代码实现与测试](#8-代码实现与测试) - - [8.1. 测试](#81-测试) - - [8.2. python 实现](#82-python-实现) -- [9. 参考资料](#9-参考资料) - - - - ->>从此心里有了B数(●'◡'●) - - -# 1. 背景 -当有大量数据储存在磁盘时,如数据库的查找,插入, 删除等操作的实现, 如果要读取或者写入, 磁盘的寻道, 旋转时间很长, 远大于在 内存中的读取,写入时间. - -平时用的二叉排序树搜索元素的时间复杂度虽然是 $O(log_2n)$的, 但是底数还是太小, 树高太高. - -所以就出现了 B 树(英文为B-Tree, 不是B减树), 可以理解为多叉排序树. 一个结点可以有多个孩子, 于是增大了底数, 减小了高度, 虽然比较的次数多(关键字数多), 但是由于是在内存中比较, 相较于磁盘的读取还是很快的. - -# 2. 定义 -度为 **d**(degree)的 B 树(阶(order) 为 2d) 定义如下, -0. 每个结点中包含有 n 个关键字信息: $(n,P_0,K_1,P_1,K_2,\ldots,K_n,P_n)$。其中: - a) $K_i$为关键字,且关键字按顺序升序排序 $K_{i-1}< K_i$ - b) $P_i$ 为指向子树根的接点, $K_{i-1}=2); -2. 除根结点和叶子结点外,其它每个结点至少有 d个孩子; -3. 若根结点不是叶子结点,则至少有 2 个孩子(特殊情况:没有孩子的根结点,即根结点为叶子结点,整棵树只有一个根节点); -4. **所有叶子结点都出现在同一层**,叶子节点没有孩子和指向孩子的指针 - - -性质: -$h\leq \left\lfloor \log _{d}\left({\frac {n+1}{2}}\right)\right\rfloor .$ - -如下是 度为2的 B 树, 每个结点可能有2,3或4 个孩子, 所以也叫 2,3,4树, 等价于[红黑树](/red-black-tree.html#more) -![](https://upload-images.jianshu.io/upload_images/7130568-30342360fb9674b4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -# 3. 查找操作 -可以看成二叉排序树的扩展,二叉排序树是二路查找,B - 树是多路查找。 -节点内进行查找的时候除了顺序查找之外,还可以用二分查找来提高效率。 - -下面是顺序查找的 python 代码 -```python - def search(self,key,withpath=False): - nd = self.root - fathers = [] - while True: - i = nd.findKey(key) - if i==len(nd): fathers.append((nd,i-1,i)) - else: fathers.append((nd,i,i)) - if i -# 4. 插入操作 -自顶向下地进行插入操作, 最终插入在叶子结点, -考虑到叶子结点如果有 2t-1 $(k_1,k_2,\ldots,k_{2t-1})$个 关键字, 则需要进行分裂, - -一个有 2t-1$(k_1,k_2,\ldots,k_{2t-1})$个关键字 结点分裂是这样进行的: 此结点分裂为 两个关键字为 t-1个的结点, 分别为 $(k_1,k_2,\ldots,k_{t-1})$, $(k_{t+1},k_{t+2},\ldots,k_{2t-1})$, 然后再插入一个关键字$k_t$到父亲结点. - -注意同时要将孩子指针移动正确. - -所以自顶向下地查找到叶子结点, 中间遇到 2t-1个关键字的结点就进行分裂, 这样如果其子结点进行分裂, 上升来的一个关键字可以插入到父结点而不会超过2t-1 - -代码如下 -```python - def insert(self,key): - if len(self.root)== self.degree*2-1: - self.root = self.root.split(node(isLeaf=False),self.degree) - self.nodeNum +=2 - nd = self.root - while True: - idx = nd.findKey(key) - if idx -# 5. 删除操作 -删除操作是有点麻烦的, 有两种方法[^1] ->1. Locate and delete the item, then restructure the tree to retain its invariants, OR ->2. Do a single pass down the tree, but before entering (visiting) a node, restructure the tree so that once the key to be deleted is encountered, it can be deleted without triggering the need for any further restructuring - - -## 5.1. 第一种方法 -有如下情况 -* 删除结点在叶子结点上 - 1. 结点内的关键字个数大于d-1,可以直接删除(大于关键字个数下限,删除不影响 B - 树特性) - 2. 结点内的关键字个数等于d-1(等于关键字个数下限,删除后将破坏 特性),此时需观察该节点左右兄弟结点的关键字个数: - a. **旋转**: 如果其左右兄弟结点中存在关键字个数大于d-1 的结点,则从关键字个数大于 d-1 的兄弟结点中借关键字:**(这里看了网上的很多说法, 都是在介绍关键字的操作,而没有提到孩子结点. 我实现的时候想了很久才想出来: 借关键字时, 比如从右兄弟借一个关键字(第一个$k_1$), 此时即为左旋, 将父亲结点对应关键字移到当前结点, 再将右兄弟的移动父亲结点(因为要满足排序性质, 类似二叉树的选择) 然后进行孩子操作, 将右兄弟的$p_0$ 插入到 当前结点的孩子指针末尾) 左兄弟类似, 而且要注意到边界条件, 比如当前结点是第0个/最后一个孩子, 则没有 左兄弟/右兄弟**) - - b. **合并**: 如果其左右兄弟结点中不存在关键字个数大于 t-1 的结点,进行结点合并:将其父结点中的关键字拿到下一层,与该节点的左右兄弟结点的所有关键字合并 - **同样要注意到边界条件, 比如当前结点是第0个/最后一个孩子, 则没有 左兄弟/右兄弟** - - 3. 自底向上地检查来到这个叶子结点的路径上的结点是否满足关键字数目的要求, 只要关键字少于d-1,则进行旋转(2a)或者合并(2b)操作 -* 删除结点在非叶子结点上 -1. 查到到该结点, 然后转化成 上述 叶子结点中情况 -2. 转化过程: - a. 找到相邻关键字:即需删除关键字的左子树中的最大关键字或右子树中的最小关键字 - b. 用相邻关键字来覆盖需删除的非叶子节点关键字,再删除原相邻关键字(在;叶子上,这即为上述情况)。 - -python 代码如下, `delete`函数中, 查找到结点, 用 `fathers::[(父节点, 关键字指针, 孩子指针)]` 记录路径, 如果不是叶子结点, 就再进行查找, 并记录结点, 转换关键字. - -rebalance 就是从叶子结点自底向上到根结点, 只要遇到关键字数少于 2d-1 的,就进行平衡操作(旋转, 合并) - -实现时要很仔细, 考虑边界条件, 还有当是左孩子的时候操作的是父结点的 chdIdx 的前一个, 是右孩子的时候是 chdIdx 的关键字. 具体实现完整代码见文末. -```python - def delete(self,key):#to do - '''search the key, delete it , and form down to up to rebalance it ''' - nd,idx ,fathers= self.search(key,withpath=True) - if nd is None : return - del nd[idx] - self.keyNum-=1 - if not nd.isLeafNode(): - chd = nd.getChd(idx) # find the predecessor key - while not chd.isLeafNode(): - fathers.append((chd,len(chd)-1,len(chd))) - chd = chd.getChd(-1) - fathers.append((chd,len(chd)-1,len(chd))) - nd.insert(idx,chd[-1]) - del chd[-1] - if len(fathers)>1:self.rebalance(fathers) - def rebalance(self,fathers): - nd,keyIdx,chdIdx = fathers.pop() - while len(nd)=self.degree: # rotate when only one sibling is deficient - keyIdx = chdIdx-1 - nd.insert(0,prt[keyIdx]) # rotate keys - prt[keyIdx] = lbro[-1] - del lbro[-1] - if not nd.isLeafNode(): # if not leaf, move children - nd.insert(0,nd=lbro.getChd(-1)) - lbro.delChd(-1) - else: - keyIdx = chdIdx - nd.insert(len(nd),prt[keyIdx]) # rotate keys - prt[keyIdx] = rbro[0] - del rbro[0] - if not nd.isLeafNode(): # if not leaf, move children - #note that insert(-1,ele) will make the ele be the last second one - nd.insert(len(nd),nd=rbro.getChd(0)) - rbro.delChd(0) - if len(fathers)==1: - if len(self.root)==0: - self.root = nd - self.nodeNum -=1 - break - nd,i,j = fathers.pop() -``` - - -## 5.2. 第二种方法 -这是算法导论[^2]上的 -![](https://upload-images.jianshu.io/upload_images/7130568-119c3bc27eee8ee6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) -![](https://upload-images.jianshu.io/upload_images/7130568-567cc0ffd8a4da80.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - -例如 -![](https://upload-images.jianshu.io/upload_images/7130568-1f3e6003a5ccf800.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -```python -B-TREE-DELETE(T,k) - -1 r ← root[T] - 2 if n[r] = 1 - 3 then DISK_READ(c1[r]) - 4 DISK_READ(c2[r]) - 5 y ←c1[r] - 6 z ←c2[r] - 7 if n[y] = n[z] = t-1 ▹ Cases 2c or 3b - 8 then B-TREE-MERGE-CHILD(r, 1, y, z) - 9 root[T] ← y - 10 FREE-NODE(r) - 11 B-TREE-DELETE-NONONE(y, k) -12 else B-TREE-DELETE-NONONE (r, k) -13 else B-TREE-DELETE-NONONE (r, k) - - -考虑到根结点的特殊性,对根结点为1,并且两个子结点都是t-1的情况进行了特殊的处理: -先对两个子结点进行合并,然后把原来的根删除,把树根指向合并后的子结点y。 -这样B树的高度就减少了1。这也是B树高度唯一会减少的情况。 -除了这种情况以外,就直接调用子过程 B-TREE-DELETE-NONONE (x, k)。 - - -B-TREE-DELETE-NONONE (x, k) - -1 i ← 1 - 2 if leaf[x] ▹ Cases 1 - 3 then while i <= n[x] and k > keyi[x] - 4 do i ← i + 1 - 5 if k = keyi[x] - 6 then for j ← i+1 to n[x] - 7 do keyj-1[x] ←keyj[x] - 8 n[x] ← n[x] - 1 - 9 DISK-WRITE(x) - 10 else error:”the key does not exist” - 11 else while i <= n[x] and k > keyi[x] -12 do i ← i + 1 - 13 DISK-READ(ci[x]) - 14 y ←ci[x] - 15 if i <= n[x] - 16 then DISK-READ(ci+1[x]) - 17 z ←ci+1[x] - 18 if k = keyi[x] ▹ Cases 2 -19 then if n[y] > t-1 ▹ Cases 2a - 20 then k′←B-TREE-SEARCH-PREDECESSOR(y) - 21 B-TREE-DELETE-NONONE (y, k′) - 22 keyi[x] ←k′ - 23 else if n[z] > t-1 ▹ Cases 2b - 24 then k′←B-TREE-SEARCH-SUCCESSOR (z) - 25 B-TREE-DELETE-NONONE (z, k′) - 26 keyi[x] ←k′ - 27 else B-TREE-MERGE-CHILD(x, i, y, z)▹ Cases 2c - 28 B-TREE-DELETE-NONONE (y, k) - 29 else ▹ Cases 3 - 30 if i >1 - 31 then DISK-READ(ci-1[x]) - 32 p ←ci-1[x] - 33 if n[y] = t-1 - 34 then if i>1 and n[p] >t-1 ▹ Cases 3a - 35 then B-TREE-SHIFT-TO-RIGHT-CHILD(x,i,p,y) - 36 else if i <= n[x] and n[z] > t-1 ▹ Cases 3a - 37 then B-TREE-SHIFT-TO-LEFT-CHILD(x,i,y,z) - 38 else if i>1 ▹ Cases 3b - 39 then B-TREE-MERGE-CHILD(x, i, p, y) - 40 y ← p - 41 else B-TREE-MERGE-CHILD(x, i, y, z)▹ Cases 3b - 42 B-TREE-DELETE-NONONE (y, k) - - - - 转移到右边的子结点 -B-TREE-SHIFT-TO-RIGHT-CHILD(x,i,y,z) -1 n[z] ← n[z] +1 -2 j ← n[z] -3 while j > 1 -4 do keyj[z] ←keyj-1[z] -5 j ← j -1 -6 key1[z] ←keyi[x] -7 keyi[x] ←keyn[y][y] -8 if not leaf[z] -9 then j ← n[z] -10 while j > 0 -11 do cj+1[z] ←cj[z] -12 j ← j -1 -13 c1[z] ←cn[y]+1[y] -14 n[y] ← n[y] -1 -15 DISK-WRITE(y) - -16 DISK-WRITE(z) - -17 DISK-WRITE(x) - -转移到左边的子结点 -B-TREE-SHIFT-TO-LEFT-CHILD(x,i,y,z) -1 n[y] ← n[y] +1 -2 keyn[y][y] ← keyi[x] -3 keyi[x] ←key1[z] -4 n[z] ← n[z] -1 -5 j ← 1 -6 while j <= n[z] -7 do keyj[z] ←keyj+1[z] -8 j ← j +1 -9 if not leaf[z] -10 then cn[y]+1[y] ←c1[z] -11 j ← 1 -12 while j <= n[z]+1 -13 do cj[z] ←cj+1[z] -14 j ← j + 1 -15 DISK-WRITE(y) - -16 DISK-WRITE(z) - -17 DISK-WRITE(x) -``` - - -# 6. B+树 - B+ 树[^3]是 B- 树的变体,与B树不同的地方在于: -1. 非叶子结点的子树指针与关键字个数相同; -2. 非叶子结点的子树指针 $p_i$指向关键字值属于 $[k_i,k_{i+1})$ 的子树(B- 树是开区间); -3. 为所有叶子结点增加一个链指针; -4. **所有关键字都在叶子结点出现** - - B+ 的搜索与 B- 树也基本相同,区别是 B+ 树只有达到叶子结点才命中(B- 树可以在非叶子结点命中),其性能也等价于在关键字全集做一次二分查找; -下面摘自 wiki[^4] -> ->### 查找 -> ->查找以典型的方式进行,类似于[二叉查找树](https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%8F%89%E6%9F%A5%E6%89%BE%E6%A0%91 "二叉查找树")。起始于根节点,自顶向下遍历树,选择其分离值在要查找值的任意一边的子指针。在节点内部典型的使用是[二分查找](https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE "二分查找")来确定这个位置。 ->### 插入 -> ->节点要处于违规状态,它必须包含在可接受范围之外数目的元素。 -> ->1. 首先,查找要插入其中的节点的位置。接着把值插入这个节点中。 ->2. 如果没有节点处于违规状态则处理结束。 ->3. 如果某个节点有过多元素,则把它分裂为两个节点,每个都有最小数目的元素。在树上递归向上继续这个处理直到到达根节点,如果根节点被分裂,则创建一个新根节点。为了使它工作,元素的最小和最大数目典型的必须选择为使最小数不小于最大数的一半。 -> ->### 删除  -> ->1. 首先,查找要删除的值。接着从包含它的节点中删除这个值。 ->2. 如果没有节点处于违规状态则处理结束。 ->3. 如果节点处于违规状态则有两种可能情况: -> 1. 它的兄弟节点,就是同一个父节点的子节点,可以把一个或多个它的子节点转移到当前节点,而把它返回为合法状态。如果是这样,在更改父节点和两个兄弟节点的分离值之后处理结束。 - > 2. 它的兄弟节点由于处在低边界上而没有额外的子节点。在这种情况下把两个兄弟节点合并到一个单一的节点中,而且我们递归到父节点上,因为它被删除了一个子节点。持续这个处理直到当前节点是合法状态或者到达根节点,在其上根节点的子节点被合并而且合并后的节点成为新的根节点。 - - -由于叶子结点间有指向下一个叶子的指针, 便于遍历, 以及区间查找, 所以数据库的以及操作系统文件系统的实现常用 B+树, -![](https://upload-images.jianshu.io/upload_images/7130568-6a129fb2d32bda7d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - - -# 7. B*树 -B*-tree [^5] 是 B+-tree 的变体,在 B+ 树的基础上 (所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针),B * 树中非根和非叶子结点再增加指向兄弟的指针;B* 树定义了非叶子结点关键字个数至少为 (2/3)*M,即块的最低使用率为 2/3(代替 B+ 树的 1/2) - -![](https://upload-images.jianshu.io/upload_images/7130568-517a256d15adb70d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -# 8. 代码实现与测试 -[github地址](https://github.com/mbinary/algorithm-in-python) - - -## 8.1. 测试 -```python - - -if __name__ =='__main__': - bt = bTree() - from random import shuffle,sample - n = 20 - lst = [i for i in range(n)] - shuffle(lst) - test= sample(lst,len(lst)//4) - print(f'building b-tree with {lst}') - for i in lst: - bt.insert(i) - #print(f'inserting {i}) - #print(bt) - print(bt) - print(f'serching {test}') - for i in test: - nd,idx = bt.search(i) - print(f'node: {repr(nd)}[{idx}]== {i}') - for i in test: - print(f'deleting {i}') - bt.delete(i) - print(bt) -``` -![bTree](https://upload-images.jianshu.io/upload_images/7130568-5dd763f4b28d853c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -## 8.2. python 实现 -```python -class node: - def __init__(self,keys=None,isLeaf = True,children=None): - if keys is None:keys=[] - if children is None: children =[] - self.keys = keys - self.isLeaf = isLeaf - self.children = [] - def __getitem__(self,i): - return self.keys[i] - def __delitem__(self,i): - del self.keys[i] - def __setitem__(self,i,k): - self.keys[i] = k - def __len__(self): - return len(self.keys) - def __repr__(self): - return str(self.keys) - def __str__(self): - children = ','.join([str(nd.keys) for nd in self.children]) - return f'keys: {self.keys}\nchildren: {children}\nisLeaf: {self.isLeaf}' - def getChd(self,i): - return self.children[i] - def delChd(self,i): - del self.children[i] - def setChd(self,i,chd): - self.children[i] = chd - def getChildren(self,begin=0,end=None): - if end is None:return self.children[begin:] - return self.children[begin:end] - def findKey(self,key): - for i,k in enumerate(self.keys): - if k>=key: - return i - return len(self) - def update(self,keys=None,isLeaf=None,children=None): - if keys is not None:self.keys = keys - if children is not None:self.children = children - if isLeaf is not None: self.isLeaf = isLeaf - def insert(self,i,key=None,nd=None): - if key is not None:self.keys.insert(i,key) - if not self.isLeaf and nd is not None: self.children.insert(i,nd) - def isLeafNode(self):return self.isLeaf - def split(self,prt,t): - # form new two nodes - k = self[t-1] - nd1 = node() - nd2 = node() - nd1.keys,nd2.keys = self[:t-1], self[t:] # note that t is 1 bigger than key index - nd1.isLeaf = nd2.isLeaf = self.isLeaf - if not self.isLeaf: - # note that children index is one bigger than key index, and all children included - nd1.children, nd2.children = self.children[0:t], self.children[t:] - # connect them to parent - idx = prt.findKey(k) - if prt.children !=[]: prt.children.remove(self) # remove the original node - prt.insert(idx,k,nd2) - prt.insert(idx,nd = nd1) - return prt - - -class bTree: - def __init__(self,degree=2): - self.root = node() - self.degree=degree - self.nodeNum = 1 - self.keyNum = 0 - def search(self,key,withpath=False): - nd = self.root - fathers = [] - while True: - i = nd.findKey(key) - if i==len(nd): fathers.append((nd,i-1,i)) - else: fathers.append((nd,i,i)) - if i1:self.rebalance(fathers) - def rebalance(self,fathers): - nd,keyIdx,chdIdx = fathers.pop() - while len(nd)=self.degree: # rotate when only one sibling is deficient - keyIdx = chdIdx-1 - nd.insert(0,prt[keyIdx]) # rotate keys - prt[keyIdx] = lbro[-1] - del lbro[-1] - if not nd.isLeafNode(): # if not leaf, move children - nd.insert(0,nd=lbro.getChd(-1)) - lbro.delChd(-1) - else: - keyIdx = chdIdx - nd.insert(len(nd),prt[keyIdx]) # rotate keys - prt[keyIdx] = rbro[0] - del rbro[0] - if not nd.isLeafNode(): # if not leaf, move children - #note that insert(-1,ele) will make the ele be the last second one - nd.insert(len(nd),nd=rbro.getChd(0)) - rbro.delChd(0) - if len(fathers)==1: - if len(self.root)==0: - self.root = nd - self.nodeNum -=1 - break - nd,i,j = fathers.pop() - def __str__(self): - head= '\n'+'-'*30+'B Tree'+'-'*30 - tail= '-'*30+'the end'+'-'*30+'\n' - lst = [[head],[f'node num: {self.nodeNum}, key num: {self.keyNum}']] - cur = [] - ndNum =0 - ndTotal= 1 - que = [self.root] - while que!=[]: - nd = que.pop(0) - cur.append(repr(nd)) - ndNum+=1 - que+=nd.getChildren() - if ndNum==ndTotal: - lst.append(cur) - cur = [] - ndNum = 0 - ndTotal =len(que) - lst.append([tail]) - lst = [','.join(li) for li in lst] - return '\n'.join(lst) - def __iter__(self,nd = None): - if nd is None: nd = self.root - que = [nd] - while que !=[]: - nd = que.pop(0) - yield nd - if nd.isLeafNode():continue - for i in range(len(nd)+1): - que.append(nd.getChd(i)) - -``` - -# 9. 参考资料 -[^1]: [B树](https://en.wikipedia.org/wiki/B-tree) -[^2]: 算法导论 -[^3]:[B - 树特征及插入删除操作总结](https://blog.csdn.net/u010842515/article/details/68487817) -[^4]: [B+树](https://zh.wikipedia.org/wiki/B%2B%E6%A0%91) -[^5]: [从 B 树、B + 树、B * 树谈到 R 树](https://blog.csdn.net/v_JULY_v/article/details/6530142) +--- +title: 『数据结构』B树(B-Tree)及其变体 B+树,B*树 +date: 2018-08-29 15:42 +categories: 数据结构与算法 +tags: [数据结构,B树,数据库] +keywords: 数据结构,B树,数据库 +mathjax: true +description: "B 树的原理与实现,b+ 树介绍" +--- + + + +- [1. 背景](#1-背景) +- [2. 定义](#2-定义) +- [3. 查找操作](#3-查找操作) +- [4. 插入操作](#4-插入操作) +- [5. 删除操作](#5-删除操作) + - [5.1. 第一种方法](#51-第一种方法) + - [5.2. 第二种方法](#52-第二种方法) +- [6. B+树](#6-b树) +- [7. B*树](#7-b树) +- [8. 代码实现与测试](#8-代码实现与测试) + - [8.1. 测试](#81-测试) + - [8.2. python 实现](#82-python-实现) +- [9. 参考资料](#9-参考资料) + + + + +>>从此心里有了B数(●'◡'●) + + +# 1. 背景 +当有大量数据储存在磁盘时,如数据库的查找,插入, 删除等操作的实现, 如果要读取或者写入, 磁盘的寻道, 旋转时间很长, 远大于在 内存中的读取,写入时间. + +平时用的二叉排序树搜索元素的时间复杂度虽然是 ![](https://latex.codecogs.com/gif.latex?O(log_2n))的, 但是底数还是太小, 树高太高. + +所以就出现了 B 树(英文为B-Tree, 不是B减树), 可以理解为多叉排序树. 一个结点可以有多个孩子, 于是增大了底数, 减小了高度, 虽然比较的次数多(关键字数多), 但是由于是在内存中比较, 相较于磁盘的读取还是很快的. + +# 2. 定义 +度为 **d**(degree)的 B 树(阶(order) 为 2d) 定义如下, +0. 每个结点中包含有 n 个关键字信息: ![](https://latex.codecogs.com/gif.latex?(n,P_0,K_1,P_1,K_2,\ldots,K_n,P_n))。其中: + a) ![](https://latex.codecogs.com/gif.latex?K_i)为关键字,且关键字按顺序升序排序 ![](https://latex.codecogs.com/gif.latex?K_{i-1}<&space;K_i) + b) ![](https://latex.codecogs.com/gif.latex?P_i) 为指向子树根的接点, ![](https://latex.codecogs.com/gif.latex?K_{i-1}=2); +2. 除根结点和叶子结点外,其它每个结点至少有 d个孩子; +3. 若根结点不是叶子结点,则至少有 2 个孩子(特殊情况:没有孩子的根结点,即根结点为叶子结点,整棵树只有一个根节点); +4. **所有叶子结点都出现在同一层**,叶子节点没有孩子和指向孩子的指针 + + +性质: +![](https://latex.codecogs.com/gif.latex?h\leq&space;\left\lfloor&space;\log&space;_{d}\left({\frac&space;{n+1}{2}}\right)\right\rfloor&space;.) + +如下是 度为2的 B 树, 每个结点可能有2,3或4 个孩子, 所以也叫 2,3,4树, 等价于[红黑树](/red-black-tree.html#more) +![](https://upload-images.jianshu.io/upload_images/7130568-30342360fb9674b4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +# 3. 查找操作 +可以看成二叉排序树的扩展,二叉排序树是二路查找,B - 树是多路查找。 +节点内进行查找的时候除了顺序查找之外,还可以用二分查找来提高效率。 + +下面是顺序查找的 python 代码 +```python + def search(self,key,withpath=False): + nd = self.root + fathers = [] + while True: + i = nd.findKey(key) + if i==len(nd): fathers.append((nd,i-1,i)) + else: fathers.append((nd,i,i)) + if i +# 4. 插入操作 +自顶向下地进行插入操作, 最终插入在叶子结点, +考虑到叶子结点如果有 2t-1 ![](https://latex.codecogs.com/gif.latex?(k_1,k_2,\ldots,k_{2t-1}))个 关键字, 则需要进行分裂, + +一个有 2t-1![](https://latex.codecogs.com/gif.latex?(k_1,k_2,\ldots,k_{2t-1}))个关键字 结点分裂是这样进行的: 此结点分裂为 两个关键字为 t-1个的结点, 分别为 ![](https://latex.codecogs.com/gif.latex?(k_1,k_2,\ldots,k_{t-1})), ![](https://latex.codecogs.com/gif.latex?(k_{t+1},k_{t+2},\ldots,k_{2t-1})), 然后再插入一个关键字![](https://latex.codecogs.com/gif.latex?k_t)到父亲结点. + +注意同时要将孩子指针移动正确. + +所以自顶向下地查找到叶子结点, 中间遇到 2t-1个关键字的结点就进行分裂, 这样如果其子结点进行分裂, 上升来的一个关键字可以插入到父结点而不会超过2t-1 + +代码如下 +```python + def insert(self,key): + if len(self.root)== self.degree*2-1: + self.root = self.root.split(node(isLeaf=False),self.degree) + self.nodeNum +=2 + nd = self.root + while True: + idx = nd.findKey(key) + if idx +# 5. 删除操作 +删除操作是有点麻烦的, 有两种方法[^1] +>1. Locate and delete the item, then restructure the tree to retain its invariants, OR +>2. Do a single pass down the tree, but before entering (visiting) a node, restructure the tree so that once the key to be deleted is encountered, it can be deleted without triggering the need for any further restructuring + + +## 5.1. 第一种方法 +有如下情况 +* 删除结点在叶子结点上 + 1. 结点内的关键字个数大于d-1,可以直接删除(大于关键字个数下限,删除不影响 B - 树特性) + 2. 结点内的关键字个数等于d-1(等于关键字个数下限,删除后将破坏 特性),此时需观察该节点左右兄弟结点的关键字个数: + a. **旋转**: 如果其左右兄弟结点中存在关键字个数大于d-1 的结点,则从关键字个数大于 d-1 的兄弟结点中借关键字:**(这里看了网上的很多说法, 都是在介绍关键字的操作,而没有提到孩子结点. 我实现的时候想了很久才想出来: 借关键字时, 比如从右兄弟借一个关键字(第一个![](https://latex.codecogs.com/gif.latex?k_1)), 此时即为左旋, 将父亲结点对应关键字移到当前结点, 再将右兄弟的移动父亲结点(因为要满足排序性质, 类似二叉树的选择) 然后进行孩子操作, 将右兄弟的![](https://latex.codecogs.com/gif.latex?p_0) 插入到 当前结点的孩子指针末尾) 左兄弟类似, 而且要注意到边界条件, 比如当前结点是第0个/最后一个孩子, 则没有 左兄弟/右兄弟**) + + b. **合并**: 如果其左右兄弟结点中不存在关键字个数大于 t-1 的结点,进行结点合并:将其父结点中的关键字拿到下一层,与该节点的左右兄弟结点的所有关键字合并 + **同样要注意到边界条件, 比如当前结点是第0个/最后一个孩子, 则没有 左兄弟/右兄弟** + + 3. 自底向上地检查来到这个叶子结点的路径上的结点是否满足关键字数目的要求, 只要关键字少于d-1,则进行旋转(2a)或者合并(2b)操作 +* 删除结点在非叶子结点上 +1. 查到到该结点, 然后转化成 上述 叶子结点中情况 +2. 转化过程: + a. 找到相邻关键字:即需删除关键字的左子树中的最大关键字或右子树中的最小关键字 + b. 用相邻关键字来覆盖需删除的非叶子节点关键字,再删除原相邻关键字(在;叶子上,这即为上述情况)。 + +python 代码如下, `delete`函数中, 查找到结点, 用 `fathers::[(父节点, 关键字指针, 孩子指针)]` 记录路径, 如果不是叶子结点, 就再进行查找, 并记录结点, 转换关键字. + +rebalance 就是从叶子结点自底向上到根结点, 只要遇到关键字数少于 2d-1 的,就进行平衡操作(旋转, 合并) + +实现时要很仔细, 考虑边界条件, 还有当是左孩子的时候操作的是父结点的 chdIdx 的前一个, 是右孩子的时候是 chdIdx 的关键字. 具体实现完整代码见文末. +```python + def delete(self,key):#to do + '''search the key, delete it , and form down to up to rebalance it ''' + nd,idx ,fathers= self.search(key,withpath=True) + if nd is None : return + del nd[idx] + self.keyNum-=1 + if not nd.isLeafNode(): + chd = nd.getChd(idx) # find the predecessor key + while not chd.isLeafNode(): + fathers.append((chd,len(chd)-1,len(chd))) + chd = chd.getChd(-1) + fathers.append((chd,len(chd)-1,len(chd))) + nd.insert(idx,chd[-1]) + del chd[-1] + if len(fathers)>1:self.rebalance(fathers) + def rebalance(self,fathers): + nd,keyIdx,chdIdx = fathers.pop() + while len(nd)=self.degree: # rotate when only one sibling is deficient + keyIdx = chdIdx-1 + nd.insert(0,prt[keyIdx]) # rotate keys + prt[keyIdx] = lbro[-1] + del lbro[-1] + if not nd.isLeafNode(): # if not leaf, move children + nd.insert(0,nd=lbro.getChd(-1)) + lbro.delChd(-1) + else: + keyIdx = chdIdx + nd.insert(len(nd),prt[keyIdx]) # rotate keys + prt[keyIdx] = rbro[0] + del rbro[0] + if not nd.isLeafNode(): # if not leaf, move children + #note that insert(-1,ele) will make the ele be the last second one + nd.insert(len(nd),nd=rbro.getChd(0)) + rbro.delChd(0) + if len(fathers)==1: + if len(self.root)==0: + self.root = nd + self.nodeNum -=1 + break + nd,i,j = fathers.pop() +``` + + +## 5.2. 第二种方法 +这是算法导论[^2]上的 +![](https://upload-images.jianshu.io/upload_images/7130568-119c3bc27eee8ee6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) +![](https://upload-images.jianshu.io/upload_images/7130568-567cc0ffd8a4da80.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + +例如 +![](https://upload-images.jianshu.io/upload_images/7130568-1f3e6003a5ccf800.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +```python +B-TREE-DELETE(T,k) + +1 r ← root[T] + 2 if n[r] = 1 + 3 then DISK_READ(c1[r]) + 4 DISK_READ(c2[r]) + 5 y ←c1[r] + 6 z ←c2[r] + 7 if n[y] = n[z] = t-1 ▹ Cases 2c or 3b + 8 then B-TREE-MERGE-CHILD(r, 1, y, z) + 9 root[T] ← y + 10 FREE-NODE(r) + 11 B-TREE-DELETE-NONONE(y, k) +12 else B-TREE-DELETE-NONONE (r, k) +13 else B-TREE-DELETE-NONONE (r, k) + + +考虑到根结点的特殊性,对根结点为1,并且两个子结点都是t-1的情况进行了特殊的处理: +先对两个子结点进行合并,然后把原来的根删除,把树根指向合并后的子结点y。 +这样B树的高度就减少了1。这也是B树高度唯一会减少的情况。 +除了这种情况以外,就直接调用子过程 B-TREE-DELETE-NONONE (x, k)。 + + +B-TREE-DELETE-NONONE (x, k) + +1 i ← 1 + 2 if leaf[x] ▹ Cases 1 + 3 then while i <= n[x] and k > keyi[x] + 4 do i ← i + 1 + 5 if k = keyi[x] + 6 then for j ← i+1 to n[x] + 7 do keyj-1[x] ←keyj[x] + 8 n[x] ← n[x] - 1 + 9 DISK-WRITE(x) + 10 else error:”the key does not exist” + 11 else while i <= n[x] and k > keyi[x] +12 do i ← i + 1 + 13 DISK-READ(ci[x]) + 14 y ←ci[x] + 15 if i <= n[x] + 16 then DISK-READ(ci+1[x]) + 17 z ←ci+1[x] + 18 if k = keyi[x] ▹ Cases 2 +19 then if n[y] > t-1 ▹ Cases 2a + 20 then k′←B-TREE-SEARCH-PREDECESSOR(y) + 21 B-TREE-DELETE-NONONE (y, k′) + 22 keyi[x] ←k′ + 23 else if n[z] > t-1 ▹ Cases 2b + 24 then k′←B-TREE-SEARCH-SUCCESSOR (z) + 25 B-TREE-DELETE-NONONE (z, k′) + 26 keyi[x] ←k′ + 27 else B-TREE-MERGE-CHILD(x, i, y, z)▹ Cases 2c + 28 B-TREE-DELETE-NONONE (y, k) + 29 else ▹ Cases 3 + 30 if i >1 + 31 then DISK-READ(ci-1[x]) + 32 p ←ci-1[x] + 33 if n[y] = t-1 + 34 then if i>1 and n[p] >t-1 ▹ Cases 3a + 35 then B-TREE-SHIFT-TO-RIGHT-CHILD(x,i,p,y) + 36 else if i <= n[x] and n[z] > t-1 ▹ Cases 3a + 37 then B-TREE-SHIFT-TO-LEFT-CHILD(x,i,y,z) + 38 else if i>1 ▹ Cases 3b + 39 then B-TREE-MERGE-CHILD(x, i, p, y) + 40 y ← p + 41 else B-TREE-MERGE-CHILD(x, i, y, z)▹ Cases 3b + 42 B-TREE-DELETE-NONONE (y, k) + + + + 转移到右边的子结点 +B-TREE-SHIFT-TO-RIGHT-CHILD(x,i,y,z) +1 n[z] ← n[z] +1 +2 j ← n[z] +3 while j > 1 +4 do keyj[z] ←keyj-1[z] +5 j ← j -1 +6 key1[z] ←keyi[x] +7 keyi[x] ←keyn[y][y] +8 if not leaf[z] +9 then j ← n[z] +10 while j > 0 +11 do cj+1[z] ←cj[z] +12 j ← j -1 +13 c1[z] ←cn[y]+1[y] +14 n[y] ← n[y] -1 +15 DISK-WRITE(y) + +16 DISK-WRITE(z) + +17 DISK-WRITE(x) + +转移到左边的子结点 +B-TREE-SHIFT-TO-LEFT-CHILD(x,i,y,z) +1 n[y] ← n[y] +1 +2 keyn[y][y] ← keyi[x] +3 keyi[x] ←key1[z] +4 n[z] ← n[z] -1 +5 j ← 1 +6 while j <= n[z] +7 do keyj[z] ←keyj+1[z] +8 j ← j +1 +9 if not leaf[z] +10 then cn[y]+1[y] ←c1[z] +11 j ← 1 +12 while j <= n[z]+1 +13 do cj[z] ←cj+1[z] +14 j ← j + 1 +15 DISK-WRITE(y) + +16 DISK-WRITE(z) + +17 DISK-WRITE(x) +``` + + +# 6. B+树 + B+ 树[^3]是 B- 树的变体,与B树不同的地方在于: +1. 非叶子结点的子树指针与关键字个数相同; +2. 非叶子结点的子树指针 ![](https://latex.codecogs.com/gif.latex?p_i)指向关键字值属于 ![](https://latex.codecogs.com/gif.latex?[k_i,k_{i+1})) 的子树(B- 树是开区间); +3. 为所有叶子结点增加一个链指针; +4. **所有关键字都在叶子结点出现** + + B+ 的搜索与 B- 树也基本相同,区别是 B+ 树只有达到叶子结点才命中(B- 树可以在非叶子结点命中),其性能也等价于在关键字全集做一次二分查找; +下面摘自 wiki[^4] +> +>### 查找 +> +>查找以典型的方式进行,类似于[二叉查找树](https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%8F%89%E6%9F%A5%E6%89%BE%E6%A0%91 "二叉查找树")。起始于根节点,自顶向下遍历树,选择其分离值在要查找值的任意一边的子指针。在节点内部典型的使用是[二分查找](https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE "二分查找")来确定这个位置。 +>### 插入 +> +>节点要处于违规状态,它必须包含在可接受范围之外数目的元素。 +> +>1. 首先,查找要插入其中的节点的位置。接着把值插入这个节点中。 +>2. 如果没有节点处于违规状态则处理结束。 +>3. 如果某个节点有过多元素,则把它分裂为两个节点,每个都有最小数目的元素。在树上递归向上继续这个处理直到到达根节点,如果根节点被分裂,则创建一个新根节点。为了使它工作,元素的最小和最大数目典型的必须选择为使最小数不小于最大数的一半。 +> +>### 删除  +> +>1. 首先,查找要删除的值。接着从包含它的节点中删除这个值。 +>2. 如果没有节点处于违规状态则处理结束。 +>3. 如果节点处于违规状态则有两种可能情况: +> 1. 它的兄弟节点,就是同一个父节点的子节点,可以把一个或多个它的子节点转移到当前节点,而把它返回为合法状态。如果是这样,在更改父节点和两个兄弟节点的分离值之后处理结束。 + > 2. 它的兄弟节点由于处在低边界上而没有额外的子节点。在这种情况下把两个兄弟节点合并到一个单一的节点中,而且我们递归到父节点上,因为它被删除了一个子节点。持续这个处理直到当前节点是合法状态或者到达根节点,在其上根节点的子节点被合并而且合并后的节点成为新的根节点。 + + +由于叶子结点间有指向下一个叶子的指针, 便于遍历, 以及区间查找, 所以数据库的以及操作系统文件系统的实现常用 B+树, +![](https://upload-images.jianshu.io/upload_images/7130568-6a129fb2d32bda7d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + + +# 7. B*树 +B*-tree [^5] 是 B+-tree 的变体,在 B+ 树的基础上 (所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针),B * 树中非根和非叶子结点再增加指向兄弟的指针;B* 树定义了非叶子结点关键字个数至少为 (2/3)*M,即块的最低使用率为 2/3(代替 B+ 树的 1/2) + +![](https://upload-images.jianshu.io/upload_images/7130568-517a256d15adb70d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +# 8. 代码实现与测试 +[github地址](https://github.com/mbinary/algorithm-in-python) + + +## 8.1. 测试 +```python + + +if __name__ =='__main__': + bt = bTree() + from random import shuffle,sample + n = 20 + lst = [i for i in range(n)] + shuffle(lst) + test= sample(lst,len(lst)//4) + print(f'building b-tree with {lst}') + for i in lst: + bt.insert(i) + #print(f'inserting {i}) + #print(bt) + print(bt) + print(f'serching {test}') + for i in test: + nd,idx = bt.search(i) + print(f'node: {repr(nd)}[{idx}]== {i}') + for i in test: + print(f'deleting {i}') + bt.delete(i) + print(bt) +``` +![bTree](https://upload-images.jianshu.io/upload_images/7130568-5dd763f4b28d853c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +## 8.2. python 实现 +```python +class node: + def __init__(self,keys=None,isLeaf = True,children=None): + if keys is None:keys=[] + if children is None: children =[] + self.keys = keys + self.isLeaf = isLeaf + self.children = [] + def __getitem__(self,i): + return self.keys[i] + def __delitem__(self,i): + del self.keys[i] + def __setitem__(self,i,k): + self.keys[i] = k + def __len__(self): + return len(self.keys) + def __repr__(self): + return str(self.keys) + def __str__(self): + children = ','.join([str(nd.keys) for nd in self.children]) + return f'keys: {self.keys}\nchildren: {children}\nisLeaf: {self.isLeaf}' + def getChd(self,i): + return self.children[i] + def delChd(self,i): + del self.children[i] + def setChd(self,i,chd): + self.children[i] = chd + def getChildren(self,begin=0,end=None): + if end is None:return self.children[begin:] + return self.children[begin:end] + def findKey(self,key): + for i,k in enumerate(self.keys): + if k>=key: + return i + return len(self) + def update(self,keys=None,isLeaf=None,children=None): + if keys is not None:self.keys = keys + if children is not None:self.children = children + if isLeaf is not None: self.isLeaf = isLeaf + def insert(self,i,key=None,nd=None): + if key is not None:self.keys.insert(i,key) + if not self.isLeaf and nd is not None: self.children.insert(i,nd) + def isLeafNode(self):return self.isLeaf + def split(self,prt,t): + # form new two nodes + k = self[t-1] + nd1 = node() + nd2 = node() + nd1.keys,nd2.keys = self[:t-1], self[t:] # note that t is 1 bigger than key index + nd1.isLeaf = nd2.isLeaf = self.isLeaf + if not self.isLeaf: + # note that children index is one bigger than key index, and all children included + nd1.children, nd2.children = self.children[0:t], self.children[t:] + # connect them to parent + idx = prt.findKey(k) + if prt.children !=[]: prt.children.remove(self) # remove the original node + prt.insert(idx,k,nd2) + prt.insert(idx,nd = nd1) + return prt + + +class bTree: + def __init__(self,degree=2): + self.root = node() + self.degree=degree + self.nodeNum = 1 + self.keyNum = 0 + def search(self,key,withpath=False): + nd = self.root + fathers = [] + while True: + i = nd.findKey(key) + if i==len(nd): fathers.append((nd,i-1,i)) + else: fathers.append((nd,i,i)) + if i1:self.rebalance(fathers) + def rebalance(self,fathers): + nd,keyIdx,chdIdx = fathers.pop() + while len(nd)=self.degree: # rotate when only one sibling is deficient + keyIdx = chdIdx-1 + nd.insert(0,prt[keyIdx]) # rotate keys + prt[keyIdx] = lbro[-1] + del lbro[-1] + if not nd.isLeafNode(): # if not leaf, move children + nd.insert(0,nd=lbro.getChd(-1)) + lbro.delChd(-1) + else: + keyIdx = chdIdx + nd.insert(len(nd),prt[keyIdx]) # rotate keys + prt[keyIdx] = rbro[0] + del rbro[0] + if not nd.isLeafNode(): # if not leaf, move children + #note that insert(-1,ele) will make the ele be the last second one + nd.insert(len(nd),nd=rbro.getChd(0)) + rbro.delChd(0) + if len(fathers)==1: + if len(self.root)==0: + self.root = nd + self.nodeNum -=1 + break + nd,i,j = fathers.pop() + def __str__(self): + head= '\n'+'-'*30+'B Tree'+'-'*30 + tail= '-'*30+'the end'+'-'*30+'\n' + lst = [[head],[f'node num: {self.nodeNum}, key num: {self.keyNum}']] + cur = [] + ndNum =0 + ndTotal= 1 + que = [self.root] + while que!=[]: + nd = que.pop(0) + cur.append(repr(nd)) + ndNum+=1 + que+=nd.getChildren() + if ndNum==ndTotal: + lst.append(cur) + cur = [] + ndNum = 0 + ndTotal =len(que) + lst.append([tail]) + lst = [','.join(li) for li in lst] + return '\n'.join(lst) + def __iter__(self,nd = None): + if nd is None: nd = self.root + que = [nd] + while que !=[]: + nd = que.pop(0) + yield nd + if nd.isLeafNode():continue + for i in range(len(nd)+1): + que.append(nd.getChd(i)) + +``` + +# 9. 参考资料 +[^1]: [B树](https://en.wikipedia.org/wiki/B-tree) +[^2]: 算法导论 +[^3]:[B - 树特征及插入删除操作总结](https://blog.csdn.net/u010842515/article/details/68487817) +[^4]: [B+树](https://zh.wikipedia.org/wiki/B%2B%E6%A0%91) +[^5]: [从 B 树、B + 树、B * 树谈到 R 树](https://blog.csdn.net/v_JULY_v/article/details/6530142) diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/fib-heap.md" "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/fib-heap.md" index 271440f..6d9df17 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/fib-heap.md" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/fib-heap.md" @@ -1,170 +1,168 @@ ---- -title: 『数据结构』Fibonacci-heap -date: 2018-09-06 19:09 -categories: 数据结构与算法 -tags: [数据结构,斐波那契堆] -keywords: 数据结构,斐波那契堆 -mathjax: true -description: "介绍 fibnacci heap 的原理" ---- - - - -- [1. 结构](#1-结构) -- [2. 势函数](#2-势函数) -- [3. 最大度数](#3-最大度数) -- [4. 操作](#4-操作) - - [4.1. 创建一个斐波那契堆](#41-创建一个斐波那契堆) - - [4.2. 插入一个结点](#42-插入一个结点) - - [4.3. 寻找最小结点](#43-寻找最小结点) - - [4.4. 合并两个斐波那契堆](#44-合并两个斐波那契堆) - - [4.5. 抽取最小值](#45-抽取最小值) - - [4.6. 关键字减值](#46-关键字减值) - - [4.7. 删除结点](#47-删除结点) -- [5. 最大度数的证明](#5-最大度数的证明) - - - -![](https://upload-images.jianshu.io/upload_images/7130568-22531846a72b0d83.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -# 1. 结构 -斐波那契堆是一系列具有最小堆序的有根树的集合, 同一代(层)结点由双向循环链表链接, **为了便于删除最小结点, 还需要维持链表为升序, 即nd<=nd.right(nd==nd.right时只有一个结点或为 None)**, 父子之间都有指向对方的指针. - -结点有degree 属性, 记录孩子的个数, mark 属性用来标记(为了满足势函数, 达到摊还需求的) - -还有一个最小值指针 H.min 指向最小根结点 -![](https://upload-images.jianshu.io/upload_images/7130568-d4e8a85754fdbc14.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -# 2. 势函数 -下面用势函数来分析摊还代价, 如果你不明白, 可以看[摊还分析](https://www.jianshu.com/p/052fbe9d92a4) - -$\Phi(H) = t(H) + 2m(h)$ -t 是根链表中树的数目,m(H) 表示被标记的结点数 - -最初没有结点 - -# 3. 最大度数 -结点的最大度数(即孩子数)$D(n)\leqslant \lfloor lgn \rfloor$, 证明放在最后 - -# 4. 操作 - -## 4.1. 创建一个斐波那契堆 -$O(1)$ - -## 4.2. 插入一个结点 -```python -nd = new node -nd.prt = nd.chd = None -if H.min is None: - creat H with nd - H.min = nd -else: - insert nd into H's root list - if H.min -## 4.3. 寻找最小结点 -直接用 H.min, $O(1)$ - -## 4.4. 合并两个斐波那契堆 -```python -def union(H1,H2): - if H1.min ==None or (H1.min and H2.min and H1.min>H2.min): - H1.min = H2.min - link H2.rootList to H1.rootList - return H1 -``` -易知 $\Delta \Phi = 0$ - -## 4.5. 抽取最小值 -抽取最小值, 一定是在根结点, 然后将此根结点的所有子树的根放在 根结点双向循环链表中, 之后还要进行**树的合并. 以使每个根结点的度不同,** -```python -def extract-min(H): - z = H.min - if z!=None: - for chd of z: - link chd to H.rootList - chd.prt = None - remove z from the rootList of H - if z==z.right: - H.min = None - else: - H.min = z.right - consolidate(H) - H.n -=1 - return z -``` -consolidate 函数使用一个 辅助数组degree来记录所有根结点(不超过lgn)对应的度数, degree[i] = nd 表示.有且只有一个结点 nd 的度数为 i. -```python -def consolidate(H): - initialize degree with None - for nd in H.rootList: - d = nd.degree - while degree[d] !=None: - nd2 = degree[d] - if nd2.degree < nd.degree: - nd2,nd = nd,nd2 - - make nd2 child of nd - nd.degree = d+1 - nd.mark = False # to balace the potential - - remove nd2 from H.rootList - degree[d] = None - d+=1 - else: degree[d] = nd - for i in degree: - if i!=None: - link i to H.rootList - if H.min ==None: H.min = i - else if H.min>i: H.min = i -``` -时间复杂度为$O(lgn)$ 即数组移动的长度, 而最多有 lgn个元素 - - -## 4.6. 关键字减值 -```python -def decrease-key(H,x,k): - if k>x.key: error - x.key = k - y=x.p - if y!=None and x.key < y.key: - cut(H,x,y) - cascading-cut(H,y) - if x.key < H.min.key: - H.min = x -def cut(H,x,y): - remove x from the child list of y, decrementing y.degree - add x to H.rootList - x.prt = None - x.mark = False - -def cascading-cut(H,y): - z- y,prt - if z !=None: - if y.mark ==False:y.mark = True - else: - cut(H,y,z) - cascading-cut(H,z) -``` -![](https://upload-images.jianshu.io/upload_images/7130568-0a29221f8a1fbfbb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -## 4.7. 删除结点 -```python -decrease(H,nd, MIN) -extract-min(H) -``` - - -# 5. 最大度数的证明 -这也是`斐波那契`这个名字的由来, -$D(n)\leqslant \lfloor lgn \rfloor$ -![](https://upload-images.jianshu.io/upload_images/7130568-c9e0cd3be4e98c4b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) +--- +title: 『数据结构』Fibonacci-heap +date: 2018-09-06 19:09 +categories: 数据结构与算法 +tags: [数据结构,斐波那契堆] +keywords: 数据结构,斐波那契堆 +mathjax: true +description: "介绍 fibnacci heap 的原理" +--- + + + +- [1. 结构](#1-结构) +- [2. 势函数](#2-势函数) +- [3. 最大度数](#3-最大度数) +- [4. 操作](#4-操作) + - [4.1. 创建一个斐波那契堆](#41-创建一个斐波那契堆) + - [4.2. 插入一个结点](#42-插入一个结点) + - [4.3. 寻找最小结点](#43-寻找最小结点) + - [4.4. 合并两个斐波那契堆](#44-合并两个斐波那契堆) + - [4.5. 抽取最小值](#45-抽取最小值) + - [4.6. 关键字减值](#46-关键字减值) + - [4.7. 删除结点](#47-删除结点) +- [5. 最大度数的证明](#5-最大度数的证明) + + + +![](https://upload-images.jianshu.io/upload_images/7130568-22531846a72b0d83.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +# 1. 结构 +斐波那契堆是一系列具有最小堆序的有根树的集合, 同一代(层)结点由双向循环链表链接, **为了便于删除最小结点, 还需要维持链表为升序, 即nd<=nd.right(nd==nd.right时只有一个结点或为 None)**, 父子之间都有指向对方的指针. + +结点有degree 属性, 记录孩子的个数, mark 属性用来标记(为了满足势函数, 达到摊还需求的) + +还有一个最小值指针 H.min 指向最小根结点 +![](https://upload-images.jianshu.io/upload_images/7130568-d4e8a85754fdbc14.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +# 2. 势函数 +下面用势函数来分析摊还代价, 如果你不明白, 可以看[摊还分析](https://www.jianshu.com/p/052fbe9d92a4) + +![](https://latex.codecogs.com/gif.latex?\Phi(H)&space;=&space;t(H)&space;+&space;2m(h)) +t 是根链表中树的数目,m(H) 表示被标记的结点数 + +最初没有结点 + +# 3. 最大度数 +结点的最大度数(即孩子数)![](https://latex.codecogs.com/gif.latex?D(n)\leqslant&space;\lfloor&space;lgn&space;\rfloor), 证明放在最后 + +# 4. 操作 + +## 4.1. 创建一个斐波那契堆 +![](https://latex.codecogs.com/gif.latex?O(1)) + +## 4.2. 插入一个结点 +```python +nd = new node +nd.prt = nd.chd = None +if H.min is None: + creat H with nd + H.min = nd +else: + insert nd into H's root list + if H.min +## 4.3. 寻找最小结点 +直接用 H.min, ![](https://latex.codecogs.com/gif.latex?O(1)) + +## 4.4. 合并两个斐波那契堆 +```python +def union(H1,H2): + if H1.min ==None or (H1.min and H2.min and H1.min>H2.min): + H1.min = H2.min + link H2.rootList to H1.rootList + return H1 +``` +易知 ![](https://latex.codecogs.com/gif.latex?\Delta&space;\Phi&space;=&space;0) + +## 4.5. 抽取最小值 +抽取最小值, 一定是在根结点, 然后将此根结点的所有子树的根放在 根结点双向循环链表中, 之后还要进行**树的合并. 以使每个根结点的度不同,** +```python +def extract-min(H): + z = H.min + if z!=None: + for chd of z: + link chd to H.rootList + chd.prt = None + remove z from the rootList of H + if z==z.right: + H.min = None + else: + H.min = z.right + consolidate(H) + H.n -=1 + return z +``` +consolidate 函数使用一个 辅助数组degree来记录所有根结点(不超过lgn)对应的度数, degree[i] = nd 表示.有且只有一个结点 nd 的度数为 i. +```python +def consolidate(H): + initialize degree with None + for nd in H.rootList: + d = nd.degree + while degree[d] !=None: + nd2 = degree[d] + if nd2.degree < nd.degree: + nd2,nd = nd,nd2 + + make nd2 child of nd + nd.degree = d+1 + nd.mark = False # to balace the potential + + remove nd2 from H.rootList + degree[d] = None + d+=1 + else: degree[d] = nd + for i in degree: + if i!=None: + link i to H.rootList + if H.min ==None: H.min = i + else if H.min>i: H.min = i +``` +时间复杂度为![](https://latex.codecogs.com/gif.latex?O(lgn)) 即数组移动的长度, 而最多有 lgn个元素 + + +## 4.6. 关键字减值 +```python +def decrease-key(H,x,k): + if k>x.key: error + x.key = k + y=x.p + if y!=None and x.key < y.key: + cut(H,x,y) + cascading-cut(H,y) + if x.key < H.min.key: + H.min = x +def cut(H,x,y): + remove x from the child list of y, decrementing y.degree + add x to H.rootList + x.prt = None + x.mark = False + +def cascading-cut(H,y): + z- y,prt + if z !=None: + if y.mark ==False:y.mark = True + else: + cut(H,y,z) + cascading-cut(H,z) +``` +![](https://upload-images.jianshu.io/upload_images/7130568-0a29221f8a1fbfbb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +## 4.7. 删除结点 +```python +decrease(H,nd, MIN) +extract-min(H) +``` + + +# 5. 最大度数的证明 +这也是`斐波那契`这个名字的由来, +![](https://latex.codecogs.com/gif.latex?D(n)\leqslant&space;\lfloor&space;lgn&space;\rfloor) +![](https://upload-images.jianshu.io/upload_images/7130568-c9e0cd3be4e98c4b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/graph.md" "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/graph.md" index 0e7dcd5..597f34e 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/graph.md" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/graph.md" @@ -1,495 +1,466 @@ ---- -title: 图算法 -date: 2018-09-06 19:10 -categories: 数据结构与算法 -tags: [图,算法] -keywords: 图,算法 -mathjax: true -description: "算法导论上常用的图算法, 代码, 原理等" - ---- - - - -- [1. 图](#1-图) - - [1.1. 概念](#11-概念) - - [1.1.1. 性质](#111-性质) - - [1.2. 图的表示](#12-图的表示) - - [1.3. 树](#13-树) -- [2. 图的搜索](#2-图的搜索) - - [2.1. BFS](#21-bfs) - - [2.2. DFS](#22-dfs) - - [2.2.1. DFS 的性质](#221-dfs-的性质) - - [2.3. 拓扑排序](#23-拓扑排序) - - [2.4. 强连通分量](#24-强连通分量) -- [3. 最小生成树](#3-最小生成树) - - [3.1. Kruskal 算法](#31-kruskal-算法) - - [3.2. Prim 算法](#32-prim-算法) -- [4. 单源最短路](#4-单源最短路) - - [4.1. 最短路的子路径也是最短路径](#41-最短路的子路径也是最短路径) - - [4.2. 负权重的边](#42-负权重的边) - - [4.3. 初始化](#43-初始化) - - [4.4. 松弛操作](#44-松弛操作) - - [4.5. 有向无环图的单源最短路问题](#45-有向无环图的单源最短路问题) - - [4.6. Bellman-Ford 算法](#46-bellman-ford-算法) - - [4.7. Dijkstra 算法](#47-dijkstra-算法) -- [5. 所有结点对的最短路问题](#5-所有结点对的最短路问题) - - [5.1. 矩阵乘法](#51-矩阵乘法) - - [5.2. Floyd-Warshall 算法](#52-floyd-warshall-算法) - - [5.3. Johnson 算法](#53-johnson-算法) -- [6. 最大流](#6-最大流) - - [6.1. 最大流最小截定理](#61-最大流最小截定理) - - [6.2. 多个源,汇](#62-多个源汇) - - [6.3. Ford-Fulkerson 方法](#63-ford-fulkerson-方法) - - [6.3.1. 残存网络](#631-残存网络) - - [6.3.2. 增广路径](#632-增广路径) - - [6.3.3. 割](#633-割) - - [6.4. 基本的 Ford-Fulkerson算法](#64-基本的-ford-fulkerson算法) - - [6.5. TBD](#65-tbd) -- [7. 参考资料](#7-参考资料) - - - - -# 1. 图 - -## 1.1. 概念 -* 顶 -* 顶点的度 d -* 边 -* 相邻 -* 重边 -* 环 -* 完全图: 所有顶都相邻 -* 二分图: $V(G) = X \cup Y, X\cap Y = \varnothing$, X中, Y 中任两顶不相邻 -* 轨道 -* 圈 - - -### 1.1.1. 性质 -* $\sum_{v\in V} d(v) = 2|E|$ -* G是二分图 $\Leftrightarrow$ G无奇圈 -* 树是无圈连通图 -* 树中, $|E| = |V| -1$ - - -## 1.2. 图的表示 -* 邻接矩阵 -* 邻接链表 -![](https://upload-images.jianshu.io/upload_images/7130568-57ce6db904992656.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -## 1.3. 树 -无圈连通图, $E = V-1$, 详细见[树](/tree.html), - - -# 2. 图的搜索 -Introduction to algorithm[^1] - -## 2.1. BFS -```python -for v in V: - v.d = MAX - v.pre = None - v.isFind = False -root. isFind = True -root.d = 0 -que = [root] -while que !=[]: - nd = que.pop(0) - for v in Adj(nd): - if not v.isFind : - v.d = nd.d+1 - v.pre = nd - v.isFind = True - que.append(v) -``` -时间复杂度 $O(V+E)$ - -## 2.2. DFS -$\Theta(V+E)$ -```python -def dfs(G): - time = 0 - for v in V: - v.pre = None - v.isFind = False - for v in V : # note this, - if not v.isFind: - dfsVisit(v) - def dfsVisit(G,u): - time =time+1 - u.begin = time - u.isFind = True - for v in Adj(u): - if not v.isFind: - v.pre = u - dfsVisit(G,v) - time +=1 - u.end = time -``` -begin, end 分别是结点的发现时间与完成时间 - -### 2.2.1. DFS 的性质 -* 其生成的前驱子图$G_{pre}$ 形成一个由多棵树构成的森林, 这是因为其与 dfsVisit 的递归调用树相对应 -* 括号化结构 -![](https://upload-images.jianshu.io/upload_images/7130568-ba62e68e5b883b6c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) -* 括号化定理: - 考察两个结点的发现时间与结束时间的区间 [u,begin,u.end] 与 [v.begin,v.end] - * 如果两者没有交集, 则两个结点在两个不同的子树上(递归树) - * 如果 u 的区间包含在 v 的区间, 则 u 是v 的后代 - - -## 2.3. 拓扑排序 -利用 DFS, 结点的完成时间的逆序就是拓扑排序 - -同一个图可能有不同的拓扑排序 - -## 2.4. 强连通分量 -在有向图中, 强连通分量中的结点互达 -定义 $Grev$ 为 $G$ 中所有边反向后的图 - -将图分解成强连通分量的算法 -在 Grev 上根据 G 中结点的拓扑排序来 dfsVisit, 即 -```python -compute Grev -initalization -for v in topo-sort(G.V): - if not v.isFind: dfsVisit(Grev,v) -``` -然后得到的DFS 森林(也是递归树森林)中每个树就是一个强连通分量 - - -# 3. 最小生成树 -利用了贪心算法, -```python -Generate-Minimum-spanning-tree(G) - A = [] - while len(A)!=len(G.V)-1: - add a safe edge for A to A - return A -``` - -## 3.1. Kruskal 算法 -总体上, 从最开始 每个结点就是一颗树的森林中(不相交集合, 并查集), 逐渐添加不形成圈的(两个元素不再同一个集合),最小边权的边. -```python -edges=[] -for edge as u,v in sorted(G.E): - if find-set(u) != find-set(v): - edges.append(edge) - union(u,v) -return edges -``` -如果并查集的实现采用了 按秩合并与路径压缩技巧, 则 find 与 union 的时间接近常数 -所以时间复杂度在于排序边, 即 $O(ElgE)$, 而 $E\lt V^2$, 所以 $lgE = O(lgV)$, 时间复杂度为 $O(ElgV)$ - -## 3.2. Prim 算法 -用了 BFS, 类似 Dijkstra 算法 -从根结点开始 BFS, 一直保持成一颗树 -```python -for v in V: - v.minAdjEdge = MAX - v.pre = None -root.minAdjEdge = 0 -que = priority-queue (G.V) # sort by minAdjEdge -while not que.isempty(): - u = que.extractMin() - for v in Adj(u): - if v in que and v.minAdjEdge>w(u,v): - v.pre = u - v.minAdjEdge = w(u,v) -``` -* 建堆 $O(V)$ `//note it's v, not vlgv` -* 主循环中 - * extractMin: $O(VlgV)$ - * in 操作 可以另设标志位, 在常数时间完成, 总共 $O(E)$ - * 设置结点的 minAdjEdge, 需要$O(lgv)$, 循环 E 次,则 总共$O(ElgV)$ - -综上, 时间复杂度为$O(ElgV)$ -如果使用的是 [斐波那契堆](/fib-heap.html), 在 设置 minAdjEdge时 调用 `decrease-key`, 这个操作摊还代价为 $O(1)$, 所以时间复杂度可改进到 $O(E+VlgV)$ - - -# 4. 单源最短路 -求一个结点到其他结点的最短路径, 可以用 Bellman-ford算法, 或者 Dijkstra算法. -定义两个结点u,v间的最短路 -$$ -\delta(u,v) = \begin{cases} -\min(w(path)),\quad u\xrightarrow{path} v\\ -\infty, \quad u\nrightarrow v -\end{cases} -$$ -问题的变体 -* 单目的地最短路问题: 可以将所有边反向转换成求单源最短路问题 -* 单结点对的最短路径 -* 所有结点对最短路路径 - - -## 4.1. 最短路的子路径也是最短路径 -$p=(v_0,v_1,\ldots,v_k)$为从结点$v_0$到$v_k$的一条最短路径, 对于任意$0\le i\le j \le k$, 记$p_{ij}=(v_i,v_{i+1},\ldots,v_j)$为 p 中 $v_i$到$v_j$的子路径, 则 $p_{ij}$为 $v_i$到$v_j$的一条最短路径 - - -## 4.2. 负权重的边 -Dijkstra 算法不能处理负值边, 只能用 Bellman-Ford 算法, -而且如果有负值圈, 则没有最短路, bellman-ford算法也可以检测出来 - -## 4.3. 初始化 -```python -def initialaize(G,s): - for v in G.V: - v.pre = None - v.distance = MAX - s.distance = 0 -``` - -## 4.4. 松弛操作 -```python -def relax(u,v,w): - if v.distance > u.distance + w: - v.distance = u.distance + w: - v.pre = u -``` -性质 -* 三角不等式: $\delta(s,v) \leqslant \delta(s,u) + w(u,v)$ -* 上界: $v.distance \geqslant \delta(s,v)$ -* 收敛: 对于某些结点u,v 如果s->...->u->v是图G中的一条最短路径,并且在对边,进行松弛前任意时间有 $u.distance=\delta(s,u)$则在之后的所有时间有 $v.distance=\delta(s,v)$ -* 路径松弛性质: 如果$p=v_0 v_1 \ldots v_k$是从源结点下v0到结点vk的一条最短路径,并且对p中的边所进行松弛的次序为$(v_0,v_1),(v_1,v_2), \ldots ,(v_{k-1},v_k)$, 则 $v_k.distance = \delta(s,v_k)$ -该性质的成立与任何其他的松弛操作无关,即使这些松弛操作是与对p上的边所进行的松弛操作穿插进行的。 - -证明 -![](https://upload-images.jianshu.io/upload_images/7130568-424a6929bd389825.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -## 4.5. 有向无环图的单源最短路问题 -$\Theta(V+E)$ -```python -def dag-shortest-path(G,s): - initialize(G,s) - for u in topo-sort(G.V): - for v in Adj(v): - relax(u,v,w(u,v)) -``` - -## 4.6. Bellman-Ford 算法 -$O(VE)$ -```python -def bellman-ford(G,s): - initialize(G,s) - for ct in range(|V|-1): # v-1 times - for u,v as edge in E: - relax(u,v,w(u,v)) - for u,v as edge in E: - if v.distance > u.distance + w(u,v): - return False - return True -``` -第一个 for 循环就是进行松弛操作, 最后结果已经存储在 结点的distance 和 pre 属性中了, 第二个 for 循环利用三角不等式检查有不有负值圈. - -下面是证明该算法的正确性![](https://upload-images.jianshu.io/upload_images/7130568-f84e00ac35aadc81.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -## 4.7. Dijkstra 算法 -$O(ElogV)$, 要求不能有负值边 - -Dijkstra算法既类似于广度优先搜索(,也有点类似于计算最小生成树的Prim算法。它与广度优先搜索的类似点在于集合S对应的是广度优先搜索中的黑色结点集合:正如集合S中的结点的最短路径权重已经计算出来一样,在广度优先搜索中,黑色结点的正确的广度优先距离也已经计算出来。Dijkstra算法像Prim算法的地方是,两个算法都使用最小优先队列来寻找给定集合(Dijkstra算法中的S集合与Prim算法中逐步增长的树)之外的“最轻”结点,将该结点加入到集合里,并对位于集合外面的结点的权重进行相应调整。 - -```python -def dijkstra(G,s): - initialize(G,s) - paths=[] - q = priority-queue(G.V) # sort by distance - while not q.empty(): - u = q.extract-min() - paths.append(u) - for v in Adj(u): - relax(u,v,w(u,v)) -``` - - -# 5. 所有结点对的最短路问题 - -## 5.1. 矩阵乘法 -使用动态规划算法, 可以得到最短路径的结构 -设 $l_{ij}^{(m)}$为从结点i 到结点 j 的至多包含 m 条边的任意路径的最小权重,当m = 0, 此时i=j, 则 为0, -可以得到递归定义 - $$ -l_{ij}^{(m)} =\min( l_{ij}^{(m-1)}, \min_{1\leqslant k\leqslant n}( l_{ik}^{(m-1)}+w_{kj})) = \min_{1\leqslant k\leqslant n}( l_{ik}^{(m-1)}+w_{kj})) -$$ -由于对于所有 j, 有 $w_{jj}=0$,所以上式后面的等式成立. - -由于是简单路径, 则包含的边最多为 |V|-1 条, 所以 -$$ -\delta(i,j) = l_{ij}^{(|V|-1)} = l_{ij}^{(|V|)} =l_{ij}^{(|V| + 1)}= ... -$$ -所以可以从自底向上计算, 如下 -输入权值矩阵 $W(w_{ij})), L^{(m-1)}$,输出$ L^{(m)}$, 其中 $L^{(1)} = W$, -```python -def f(L, W): - n = L.rows - L_new = new matrix(row=n ,col = n) - for i in range(n): - for j in range(n): - L_new[i][j] = MAX - for k in range(n): - L_new[i][j] = min(L_new[i][j], L[i][k]+w[k][j]) - return L_new -``` -可以看出该算法与矩阵乘法的关系 -$L^{(m)} = W^m$, -所以可以直接计算乘法, 每次计算一个乘积是 $O(V^3)$, 计算 V 次, 所以总体 $O(V^4)$, 使用矩阵快速幂可以将时间复杂度降低为$O(V^3lgV)$ -```python -def f(W): - L = W - i = 1 - while i -## 5.2. Floyd-Warshall 算法 -同样要求可以存在负权边, 但不能有负值圈. 用动态规划算法: -设 $ d_{ij}^{(k)}$ 为 从 i 到 j 所有中间结点来自集合 ${\{1,2,\ldots,k\}}$ 的一条最短路径的权重. 则有 -$$ -d_{ij}^{(k)} = \begin{cases} -w_{ij},\quad k=0\\ -min(d_{ij}^{(k-1)},d_{ik}^{(k-1)}+d_{kj}^{(k-1)}),\quad k\geqslant 1 -\end{cases} -$$ -而且为了找出路径, 需要记录前驱结点, 定义如下前驱矩阵 $\Pi$, 设 $ \pi_{ij}^{(k)}$ 为 从 i 到 j 所有中间结点来自集合 ${\{1,2,\ldots,k\}}$ 的最短路径上 j 的前驱结点 -则 -$$ -\pi_{ij}^{(0)} = \begin{cases} -nil,\quad i=j \ or \ w_{ij}=\infty \\ -i, \quad i\neq j\ and \ w_{ij}<\infty -\end{cases} -$$ -对 $k\geqslant 1$ -$$ -\pi_{ij}^{(k)} = \begin{cases} -\pi_{ij}^{(k-1)} ,\quad d_{ij}^{(k-1)}\leqslant d_{ik}^{(k-1)}+d_{kj}^{(k-1)}\\ -\pi_{kj}^{(k-1)} ,\quad otherwise -\end{cases} -$$ - -由此得出此算法 -```python -def floyd-warshall(W): - n = len(W) - D= W - initialize pre - for k in range(n): - pre2 = pre.copy() - for i in range(n): - for j in range(n) - if d[i][j] > d[i][k]+d[k][j]: - d[i][j] =d[i][k]+d[k][j] - pre2[i][j] = pre[k][j] - pre = pre2 -return d,pre -``` - -## 5.3. Johnson 算法 -思路是通过重新赋予权重, 将图中负权边转换为正权,然后就可以用 dijkstra 算法(要求是正值边)来计算一个结点到其他所有结点的, 然后对所有结点用dijkstra - -1. 首先构造一个新图 G' - 先将G拷贝到G', 再添加一个新结点 s, 添加 G.V条边, s 到G中顶点的, 权赋值为 0 -2. 用 Bellman-Ford 算法检查是否有负值圈, 如果没有, 同时求出 $\delta(s,v) 记为 h(v)$ -3. 求新的非负值权, w'(u,v) = w(u,v)+h(u)-h(v) -4. 对所有结点在 新的权矩阵w'上 用 Dijkstra 算法 -![image.png](https://upload-images.jianshu.io/upload_images/7130568-6c2146ad64d692f3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - -```python -JOHNSON (G, u) - -s = newNode -G' = G.copy() -G'.addNode(s) -for v in G.V: G'.addArc(s,v,w=0) - -if BELLMAN-FORD(G' , w, s) ==FALSE - error "the input graph contains a negative-weight cycle" - -for v in G'.V: - # computed by the bellman-ford algorithm, delta(s,v) is the shortest distance from s to v - h(v) = delta(s,v) -for edge(u,v) in G'.E: - w' = w(u,v)+h(u)-h(v) -d = matrix(n,n) -for u in G: - dijkstra(G,w',u) # compute delta' for all v in G.V - for v in G.V: - d[u][v] = delta'(u,v) + h(v)-h(u) -return d -``` - -# 6. 最大流 -G 是弱连通严格有向加权图, s为源, t 为汇, 每条边e容量 c(e), 由此定义了网络N(G,s,t,c(e)), -* 流函数 $f(e):E \rightarrow R$ -$$ -\begin{aligned} -(1)\quad & 0\leqslant f(e) \leqslant c(e),\quad e \in E\\ -(2)\quad & \sum_{e\in \alpha(v)} f(e)= \sum_{e\in \beta(v)}f(e),\quad v \in V-\{s,t\} -\end{aligned} -$$ -其中 $\alpha(v)$ 是以 v 为头的边集, $\beta(v)$是以 v 为尾的边集 -* 流量: $F = \sum_{e\in \alpha(t)} f(e)- \sum_{e\in -\beta(t)}f(e),$ -* 截$(S,\overline S)$: $S\subset V,s\in S, t\in \overline S =V-S$ -* 截量$C(S) = \sum_{e\in(S,\overline S)}c(e)$ - -## 6.1. 最大流最小截定理 -<<图论>> 王树禾[^2] -* 对于任一截$(S,\overline S)$, 有 $F = \sum_{e\in (S,\overline S)} f(e)- \sum_{e\in(\overline S,S)}f(e),$ -![prove](https://upload-images.jianshu.io/upload_images/7130568-19bf6cc3c7d6ce06.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) -* $F\leqslant C(S)$ -证明: 由上面定理 - $$F = \sum_{e\in (S,\overline S)} f(e)- \sum_{e\in(\overline S,S)}f(e),$$ -而 $0\leqslant f(e) \leqslant c(e)$, 则 -$$F\leqslant \sum_{e\in (S,\overline S)} f(e) \leqslant \sum_{e\in (S,\overline S)} c(e) = C(S) $$ -* 最大流,最小截: 若$F= C(S) $, 则F'是最大流量, C(S) 是最小截量 - -## 6.2. 多个源,汇 -可以新增一个总的源,一个总的汇, -![](https://upload-images.jianshu.io/upload_images/7130568-3e9e87fdf9655883.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -## 6.3. Ford-Fulkerson 方法 -由于其实现可以有不同的运行时间, 所以称其为方法, 而不是算法. -思路是 循环增加流的值, 在一个关联的"残存网络" 中寻找一条"增广路径", 然后对这些边进行修改流量. 重复直至残存网络上不再存在增高路径为止. -```python -def ford-fulkerson(G,s,t): - initialize flow f to 0 - while exists an augmenting path p in residual network Gf: - augment flow f along p - return f -``` - -### 6.3.1. 残存网络 -![](https://upload-images.jianshu.io/upload_images/7130568-c74a571b9121dbbf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - - -### 6.3.2. 增广路径 -![](https://upload-images.jianshu.io/upload_images/7130568-b9e841cfa4d04b57.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - -### 6.3.3. 割 -![](https://upload-images.jianshu.io/upload_images/7130568-74b065e86eb285b7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - -## 6.4. 基本的 Ford-Fulkerson算法 -```python -def ford-fulkerson(G,s,t): - for edge in G.E: edge.f = 0 - while exists path p:s->t in Gf: - cf(p) = min{cf(u,v):(u,v) is in p} - for edge in p: - if edge in E: - edge.f +=cf(p) - else: reverse_edge.f -=cf(p) -``` - - -## 6.5. TBD - - -# 7. 参考资料 -[^1]: 算法导论 -[^2]: 图论, 王树禾 +--- +title: 图算法 +date: 2018-09-06 19:10 +categories: 数据结构与算法 +tags: [图,算法] +keywords: 图,算法 +mathjax: true +description: "算法导论上常用的图算法, 代码, 原理等" + +--- + + + +- [1. 图](#1-图) + - [1.1. 概念](#11-概念) + - [1.1.1. 性质](#111-性质) + - [1.2. 图的表示](#12-图的表示) + - [1.3. 树](#13-树) +- [2. 图的搜索](#2-图的搜索) + - [2.1. BFS](#21-bfs) + - [2.2. DFS](#22-dfs) + - [2.2.1. DFS 的性质](#221-dfs-的性质) + - [2.3. 拓扑排序](#23-拓扑排序) + - [2.4. 强连通分量](#24-强连通分量) +- [3. 最小生成树](#3-最小生成树) + - [3.1. Kruskal 算法](#31-kruskal-算法) + - [3.2. Prim 算法](#32-prim-算法) +- [4. 单源最短路](#4-单源最短路) + - [4.1. 最短路的子路径也是最短路径](#41-最短路的子路径也是最短路径) + - [4.2. 负权重的边](#42-负权重的边) + - [4.3. 初始化](#43-初始化) + - [4.4. 松弛操作](#44-松弛操作) + - [4.5. 有向无环图的单源最短路问题](#45-有向无环图的单源最短路问题) + - [4.6. Bellman-Ford 算法](#46-bellman-ford-算法) + - [4.7. Dijkstra 算法](#47-dijkstra-算法) +- [5. 所有结点对的最短路问题](#5-所有结点对的最短路问题) + - [5.1. 矩阵乘法](#51-矩阵乘法) + - [5.2. Floyd-Warshall 算法](#52-floyd-warshall-算法) + - [5.3. Johnson 算法](#53-johnson-算法) +- [6. 最大流](#6-最大流) + - [6.1. 最大流最小截定理](#61-最大流最小截定理) + - [6.2. 多个源,汇](#62-多个源汇) + - [6.3. Ford-Fulkerson 方法](#63-ford-fulkerson-方法) + - [6.3.1. 残存网络](#631-残存网络) + - [6.3.2. 增广路径](#632-增广路径) + - [6.3.3. 割](#633-割) + - [6.4. 基本的 Ford-Fulkerson算法](#64-基本的-ford-fulkerson算法) + - [6.5. TBD](#65-tbd) +- [7. 参考资料](#7-参考资料) + + + + +# 1. 图 + +## 1.1. 概念 +* 顶 +* 顶点的度 d +* 边 +* 相邻 +* 重边 +* 环 +* 完全图: 所有顶都相邻 +* 二分图: ![](https://latex.codecogs.com/gif.latex?V(G)&space;=&space;X&space;\cup&space;Y,&space;X\cap&space;Y&space;=&space;\varnothing), X中, Y 中任两顶不相邻 +* 轨道 +* 圈 + + +### 1.1.1. 性质 +* ![](https://latex.codecogs.com/gif.latex?\sum_{v\in&space;V}&space;d(v)&space;=&space;2|E|) +* G是二分图 ![](https://latex.codecogs.com/gif.latex?\Leftrightarrow) G无奇圈 +* 树是无圈连通图 +* 树中, ![](https://latex.codecogs.com/gif.latex?|E|&space;=&space;|V|&space;-1) + + +## 1.2. 图的表示 +* 邻接矩阵 +* 邻接链表 +![](https://upload-images.jianshu.io/upload_images/7130568-57ce6db904992656.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +## 1.3. 树 +无圈连通图, ![](https://latex.codecogs.com/gif.latex?E&space;=&space;V-1), 详细见[树](/tree.html), + + +# 2. 图的搜索 +Introduction to algorithm[^1] + +## 2.1. BFS +```python +for v in V: + v.d = MAX + v.pre = None + v.isFind = False +root. isFind = True +root.d = 0 +que = [root] +while que !=[]: + nd = que.pop(0) + for v in Adj(nd): + if not v.isFind : + v.d = nd.d+1 + v.pre = nd + v.isFind = True + que.append(v) +``` +时间复杂度 ![](https://latex.codecogs.com/gif.latex?O(V+E)) + +## 2.2. DFS +![](https://latex.codecogs.com/gif.latex?\Theta(V+E)) +```python +def dfs(G): + time = 0 + for v in V: + v.pre = None + v.isFind = False + for v in V : # note this, + if not v.isFind: + dfsVisit(v) + def dfsVisit(G,u): + time =time+1 + u.begin = time + u.isFind = True + for v in Adj(u): + if not v.isFind: + v.pre = u + dfsVisit(G,v) + time +=1 + u.end = time +``` +begin, end 分别是结点的发现时间与完成时间 + +### 2.2.1. DFS 的性质 +* 其生成的前驱子图![](https://latex.codecogs.com/gif.latex?G_{pre}) 形成一个由多棵树构成的森林, 这是因为其与 dfsVisit 的递归调用树相对应 +* 括号化结构 +![](https://upload-images.jianshu.io/upload_images/7130568-ba62e68e5b883b6c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) +* 括号化定理: + 考察两个结点的发现时间与结束时间的区间 [u,begin,u.end] 与 [v.begin,v.end] + * 如果两者没有交集, 则两个结点在两个不同的子树上(递归树) + * 如果 u 的区间包含在 v 的区间, 则 u 是v 的后代 + + +## 2.3. 拓扑排序 +利用 DFS, 结点的完成时间的逆序就是拓扑排序 + +同一个图可能有不同的拓扑排序 + +## 2.4. 强连通分量 +在有向图中, 强连通分量中的结点互达 +定义 ![](https://latex.codecogs.com/gif.latex?Grev) 为 ![](https://latex.codecogs.com/gif.latex?G) 中所有边反向后的图 + +将图分解成强连通分量的算法 +在 Grev 上根据 G 中结点的拓扑排序来 dfsVisit, 即 +```python +compute Grev +initalization +for v in topo-sort(G.V): + if not v.isFind: dfsVisit(Grev,v) +``` +然后得到的DFS 森林(也是递归树森林)中每个树就是一个强连通分量 + + +# 3. 最小生成树 +利用了贪心算法, +```python +Generate-Minimum-spanning-tree(G) + A = [] + while len(A)!=len(G.V)-1: + add a safe edge for A to A + return A +``` + +## 3.1. Kruskal 算法 +总体上, 从最开始 每个结点就是一颗树的森林中(不相交集合, 并查集), 逐渐添加不形成圈的(两个元素不再同一个集合),最小边权的边. +```python +edges=[] +for edge as u,v in sorted(G.E): + if find-set(u) != find-set(v): + edges.append(edge) + union(u,v) +return edges +``` +如果并查集的实现采用了 按秩合并与路径压缩技巧, 则 find 与 union 的时间接近常数 +所以时间复杂度在于排序边, 即 ![](https://latex.codecogs.com/gif.latex?O(ElgE)), 而 ![](https://latex.codecogs.com/gif.latex?E\lt&space;V^2), 所以 ![](https://latex.codecogs.com/gif.latex?lgE&space;=&space;O(lgV)), 时间复杂度为 ![](https://latex.codecogs.com/gif.latex?O(ElgV)) + +## 3.2. Prim 算法 +用了 BFS, 类似 Dijkstra 算法 +从根结点开始 BFS, 一直保持成一颗树 +```python +for v in V: + v.minAdjEdge = MAX + v.pre = None +root.minAdjEdge = 0 +que = priority-queue (G.V) # sort by minAdjEdge +while not que.isempty(): + u = que.extractMin() + for v in Adj(u): + if v in que and v.minAdjEdge>w(u,v): + v.pre = u + v.minAdjEdge = w(u,v) +``` +* 建堆 ![](https://latex.codecogs.com/gif.latex?O(V)) `//note it's v, not vlgv` +* 主循环中 + * extractMin: ![](https://latex.codecogs.com/gif.latex?O(VlgV)) + * in 操作 可以另设标志位, 在常数时间完成, 总共 ![](https://latex.codecogs.com/gif.latex?O(E)) + * 设置结点的 minAdjEdge, 需要![](https://latex.codecogs.com/gif.latex?O(lgv)), 循环 E 次,则 总共![](https://latex.codecogs.com/gif.latex?O(ElgV)) + +综上, 时间复杂度为![](https://latex.codecogs.com/gif.latex?O(ElgV)) +如果使用的是 [斐波那契堆](/fib-heap.html), 在 设置 minAdjEdge时 调用 `decrease-key`, 这个操作摊还代价为 ![](https://latex.codecogs.com/gif.latex?O(1)), 所以时间复杂度可改进到 ![](https://latex.codecogs.com/gif.latex?O(E+VlgV)) + + +# 4. 单源最短路 +求一个结点到其他结点的最短路径, 可以用 Bellman-ford算法, 或者 Dijkstra算法. +定义两个结点u,v间的最短路 +![](https://latex.codecogs.com/gif.latex?&space;\delta(u,v)&space;=&space;\begin{cases}&space;\min(w(path)),\quad&space;u\xrightarrow{path}&space;v\\&space;\infty,&space;\quad&space;u&space;rightarrow&space;v&space;\end{cases}&space;) +问题的变体 +* 单目的地最短路问题: 可以将所有边反向转换成求单源最短路问题 +* 单结点对的最短路径 +* 所有结点对最短路路径 + + +## 4.1. 最短路的子路径也是最短路径 +![](https://latex.codecogs.com/gif.latex?p=(v_0,v_1,\ldots,v_k))为从结点![](https://latex.codecogs.com/gif.latex?v_0)到![](https://latex.codecogs.com/gif.latex?v_k)的一条最短路径, 对于任意![](https://latex.codecogs.com/gif.latex?0\le&space;i\le&space;j&space;\le&space;k), 记![](https://latex.codecogs.com/gif.latex?p_{ij}=(v_i,v_{i+1},\ldots,v_j))为 p 中 ![](https://latex.codecogs.com/gif.latex?v_i)到![](https://latex.codecogs.com/gif.latex?v_j)的子路径, 则 ![](https://latex.codecogs.com/gif.latex?p_{ij})为 ![](https://latex.codecogs.com/gif.latex?v_i)到![](https://latex.codecogs.com/gif.latex?v_j)的一条最短路径 + + +## 4.2. 负权重的边 +Dijkstra 算法不能处理负值边, 只能用 Bellman-Ford 算法, +而且如果有负值圈, 则没有最短路, bellman-ford算法也可以检测出来 + +## 4.3. 初始化 +```python +def initialaize(G,s): + for v in G.V: + v.pre = None + v.distance = MAX + s.distance = 0 +``` + +## 4.4. 松弛操作 +```python +def relax(u,v,w): + if v.distance > u.distance + w: + v.distance = u.distance + w: + v.pre = u +``` +性质 +* 三角不等式: ![](https://latex.codecogs.com/gif.latex?\delta(s,v)&space;\leqslant&space;\delta(s,u)&space;+&space;w(u,v)) +* 上界: ![](https://latex.codecogs.com/gif.latex?v.distance&space;\geqslant&space;\delta(s,v)) +* 收敛: 对于某些结点u,v 如果s->...->u->v是图G中的一条最短路径,并且在对边,进行松弛前任意时间有 ![](https://latex.codecogs.com/gif.latex?u.distance=\delta(s,u))则在之后的所有时间有 ![](https://latex.codecogs.com/gif.latex?v.distance=\delta(s,v)) +* 路径松弛性质: 如果![](https://latex.codecogs.com/gif.latex?p=v_0&space;v_1&space;\ldots&space;v_k)是从源结点下v0到结点vk的一条最短路径,并且对p中的边所进行松弛的次序为![](https://latex.codecogs.com/gif.latex?(v_0,v_1),(v_1,v_2),&space;\ldots&space;,(v_{k-1},v_k)), 则 ![](https://latex.codecogs.com/gif.latex?v_k.distance&space;=&space;\delta(s,v_k)) +该性质的成立与任何其他的松弛操作无关,即使这些松弛操作是与对p上的边所进行的松弛操作穿插进行的。 + +证明 +![](https://upload-images.jianshu.io/upload_images/7130568-424a6929bd389825.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +## 4.5. 有向无环图的单源最短路问题 +![](https://latex.codecogs.com/gif.latex?\Theta(V+E)) +```python +def dag-shortest-path(G,s): + initialize(G,s) + for u in topo-sort(G.V): + for v in Adj(v): + relax(u,v,w(u,v)) +``` + +## 4.6. Bellman-Ford 算法 +![](https://latex.codecogs.com/gif.latex?O(VE)) +```python +def bellman-ford(G,s): + initialize(G,s) + for ct in range(|V|-1): # v-1 times + for u,v as edge in E: + relax(u,v,w(u,v)) + for u,v as edge in E: + if v.distance > u.distance + w(u,v): + return False + return True +``` +第一个 for 循环就是进行松弛操作, 最后结果已经存储在 结点的distance 和 pre 属性中了, 第二个 for 循环利用三角不等式检查有不有负值圈. + +下面是证明该算法的正确性![](https://upload-images.jianshu.io/upload_images/7130568-f84e00ac35aadc81.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +## 4.7. Dijkstra 算法 +![](https://latex.codecogs.com/gif.latex?O(ElogV)), 要求不能有负值边 + +Dijkstra算法既类似于广度优先搜索(,也有点类似于计算最小生成树的Prim算法。它与广度优先搜索的类似点在于集合S对应的是广度优先搜索中的黑色结点集合:正如集合S中的结点的最短路径权重已经计算出来一样,在广度优先搜索中,黑色结点的正确的广度优先距离也已经计算出来。Dijkstra算法像Prim算法的地方是,两个算法都使用最小优先队列来寻找给定集合(Dijkstra算法中的S集合与Prim算法中逐步增长的树)之外的“最轻”结点,将该结点加入到集合里,并对位于集合外面的结点的权重进行相应调整。 + +```python +def dijkstra(G,s): + initialize(G,s) + paths=[] + q = priority-queue(G.V) # sort by distance + while not q.empty(): + u = q.extract-min() + paths.append(u) + for v in Adj(u): + relax(u,v,w(u,v)) +``` + + +# 5. 所有结点对的最短路问题 + +## 5.1. 矩阵乘法 +使用动态规划算法, 可以得到最短路径的结构 +设 ![](https://latex.codecogs.com/gif.latex?l_{ij}^{(m)})为从结点i 到结点 j 的至多包含 m 条边的任意路径的最小权重,当m = 0, 此时i=j, 则 为0, +可以得到递归定义 + ![](https://latex.codecogs.com/gif.latex?&space;l_{ij}^{(m)}&space;=\min(&space;l_{ij}^{(m-1)},&space;\min_{1\leqslant&space;k\leqslant&space;n}(&space;l_{ik}^{(m-1)}+w_{kj}))&space;=&space;\min_{1\leqslant&space;k\leqslant&space;n}(&space;l_{ik}^{(m-1)}+w_{kj}))&space;) +由于对于所有 j, 有 ![](https://latex.codecogs.com/gif.latex?w_{jj}=0),所以上式后面的等式成立. + +由于是简单路径, 则包含的边最多为 |V|-1 条, 所以 +![](https://latex.codecogs.com/gif.latex?&space;\delta(i,j)&space;=&space;l_{ij}^{(|V|-1)}&space;=&space;l_{ij}^{(|V|)}&space;=l_{ij}^{(|V|&space;+&space;1)}=&space;...&space;) +所以可以从自底向上计算, 如下 +输入权值矩阵 ![](https://latex.codecogs.com/gif.latex?W(w_{ij})),&space;L^{(m-1)}),输出![](https://latex.codecogs.com/gif.latex?L^{(m)}), 其中 ![](https://latex.codecogs.com/gif.latex?L^{(1)}&space;=&space;W), +```python +def f(L, W): + n = L.rows + L_new = new matrix(row=n ,col = n) + for i in range(n): + for j in range(n): + L_new[i][j] = MAX + for k in range(n): + L_new[i][j] = min(L_new[i][j], L[i][k]+w[k][j]) + return L_new +``` +可以看出该算法与矩阵乘法的关系 +![](https://latex.codecogs.com/gif.latex?L^{(m)}&space;=&space;W^m), +所以可以直接计算乘法, 每次计算一个乘积是 ![](https://latex.codecogs.com/gif.latex?O(V^3)), 计算 V 次, 所以总体 ![](https://latex.codecogs.com/gif.latex?O(V^4)), 使用矩阵快速幂可以将时间复杂度降低为![](https://latex.codecogs.com/gif.latex?O(V^3lgV)) +```python +def f(W): + L = W + i = 1 + while i +## 5.2. Floyd-Warshall 算法 +同样要求可以存在负权边, 但不能有负值圈. 用动态规划算法: +设 ![](https://latex.codecogs.com/gif.latex?d_{ij}^{(k)}) 为 从 i 到 j 所有中间结点来自集合 ![](https://latex.codecogs.com/gif.latex?{\{1,2,\ldots,k\}}) 的一条最短路径的权重. 则有 +![](https://latex.codecogs.com/gif.latex?&space;d_{ij}^{(k)}&space;=&space;\begin{cases}&space;w_{ij},\quad&space;k=0\\&space;min(d_{ij}^{(k-1)},d_{ik}^{(k-1)}+d_{kj}^{(k-1)}),\quad&space;k\geqslant&space;1&space;\end{cases}&space;) +而且为了找出路径, 需要记录前驱结点, 定义如下前驱矩阵 ![](https://latex.codecogs.com/gif.latex?\Pi), 设 ![](https://latex.codecogs.com/gif.latex?\pi_{ij}^{(k)}) 为 从 i 到 j 所有中间结点来自集合 ![](https://latex.codecogs.com/gif.latex?{\{1,2,\ldots,k\}}) 的最短路径上 j 的前驱结点 +则 +![](https://latex.codecogs.com/gif.latex?&space;\pi_{ij}^{(0)}&space;=&space;\begin{cases}&space;nil,\quad&space;i=j&space;\&space;or&space;\&space;w_{ij}=\infty&space;\\&space;i,&space;\quad&space;i&space;eq&space;j\&space;and&space;\&space;w_{ij}<\infty&space;\end{cases}&space;) +对 ![](https://latex.codecogs.com/gif.latex?k\geqslant&space;1) +![](https://latex.codecogs.com/gif.latex?&space;\pi_{ij}^{(k)}&space;=&space;\begin{cases}&space;\pi_{ij}^{(k-1)}&space;,\quad&space;d_{ij}^{(k-1)}\leqslant&space;d_{ik}^{(k-1)}+d_{kj}^{(k-1)}\\&space;\pi_{kj}^{(k-1)}&space;,\quad&space;otherwise&space;\end{cases}&space;) + +由此得出此算法 +```python +def floyd-warshall(W): + n = len(W) + D= W + initialize pre + for k in range(n): + pre2 = pre.copy() + for i in range(n): + for j in range(n) + if d[i][j] > d[i][k]+d[k][j]: + d[i][j] =d[i][k]+d[k][j] + pre2[i][j] = pre[k][j] + pre = pre2 +return d,pre +``` + +## 5.3. Johnson 算法 +思路是通过重新赋予权重, 将图中负权边转换为正权,然后就可以用 dijkstra 算法(要求是正值边)来计算一个结点到其他所有结点的, 然后对所有结点用dijkstra + +1. 首先构造一个新图 G' + 先将G拷贝到G', 再添加一个新结点 s, 添加 G.V条边, s 到G中顶点的, 权赋值为 0 +2. 用 Bellman-Ford 算法检查是否有负值圈, 如果没有, 同时求出 ![](https://latex.codecogs.com/gif.latex?\delta(s,v)&space;Recorded-as&space;h(v)) +3. 求新的非负值权, w'(u,v) = w(u,v)+h(u)-h(v) +4. 对所有结点在 新的权矩阵w'上 用 Dijkstra 算法 +![image.png](https://upload-images.jianshu.io/upload_images/7130568-6c2146ad64d692f3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + +```python +JOHNSON (G, u) + +s = newNode +G' = G.copy() +G'.addNode(s) +for v in G.V: G'.addArc(s,v,w=0) + +if BELLMAN-FORD(G' , w, s) ==FALSE + error "the input graph contains a negative-weight cycle" + +for v in G'.V: + # computed by the bellman-ford algorithm, delta(s,v) is the shortest distance from s to v + h(v) = delta(s,v) +for edge(u,v) in G'.E: + w' = w(u,v)+h(u)-h(v) +d = matrix(n,n) +for u in G: + dijkstra(G,w',u) # compute delta' for all v in G.V + for v in G.V: + d[u][v] = delta'(u,v) + h(v)-h(u) +return d +``` + +# 6. 最大流 +G 是弱连通严格有向加权图, s为源, t 为汇, 每条边e容量 c(e), 由此定义了网络N(G,s,t,c(e)), +* 流函数 ![](https://latex.codecogs.com/gif.latex?f(e):E&space;\rightarrow&space;R) +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;(1)\quad&space;&&space;0\leqslant&space;f(e)&space;\leqslant&space;c(e),\quad&space;e&space;\in&space;E\\&space;(2)\quad&space;&&space;\sum_{e\in&space;\alpha(v)}&space;f(e)=&space;\sum_{e\in&space;\beta(v)}f(e),\quad&space;v&space;\in&space;V-\{s,t\}&space;\end{aligned}&space;) +其中 ![](https://latex.codecogs.com/gif.latex?\alpha(v)) 是以 v 为头的边集, ![](https://latex.codecogs.com/gif.latex?\beta(v))是以 v 为尾的边集 +* 流量: ![](https://latex.codecogs.com/gif.latex?F&space;=&space;\sum_{e\in&space;\alpha(t)}&space;f(e)-&space;\sum_{e\in&space;-\beta(t)}f(e),) +* 截![](https://latex.codecogs.com/gif.latex?(S,\overline&space;S)): ![](https://latex.codecogs.com/gif.latex?S\subset&space;V,s\in&space;S,&space;t\in&space;\overline&space;S&space;=V-S) +* 截量![](https://latex.codecogs.com/gif.latex?C(S)&space;=&space;\sum_{e\in(S,\overline&space;S)}c(e)) + +## 6.1. 最大流最小截定理 +<<图论>> 王树禾[^2] +* 对于任一截![](https://latex.codecogs.com/gif.latex?(S,\overline&space;S)), 有 ![](https://latex.codecogs.com/gif.latex?F&space;=&space;\sum_{e\in&space;(S,\overline&space;S)}&space;f(e)-&space;\sum_{e\in(\overline&space;S,S)}f(e),) +![prove](https://upload-images.jianshu.io/upload_images/7130568-19bf6cc3c7d6ce06.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) +* ![](https://latex.codecogs.com/gif.latex?F\leqslant&space;C(S)) +证明: 由上面定理 + ![](https://latex.codecogs.com/gif.latex?F&space;=&space;\sum_{e\in&space;(S,\overline&space;S)}&space;f(e)-&space;\sum_{e\in(\overline&space;S,S)}f(e),) +而 ![](https://latex.codecogs.com/gif.latex?0\leqslant&space;f(e)&space;\leqslant&space;c(e)), 则 +![](https://latex.codecogs.com/gif.latex?F\leqslant&space;\sum_{e\in&space;(S,\overline&space;S)}&space;f(e)&space;\leqslant&space;\sum_{e\in&space;(S,\overline&space;S)}&space;c(e)&space;=&space;C(S)) +* 最大流,最小截: 若![](https://latex.codecogs.com/gif.latex?F=&space;C(S)), 则F'是最大流量, C(S) 是最小截量 + +## 6.2. 多个源,汇 +可以新增一个总的源,一个总的汇, +![](https://upload-images.jianshu.io/upload_images/7130568-3e9e87fdf9655883.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +## 6.3. Ford-Fulkerson 方法 +由于其实现可以有不同的运行时间, 所以称其为方法, 而不是算法. +思路是 循环增加流的值, 在一个关联的"残存网络" 中寻找一条"增广路径", 然后对这些边进行修改流量. 重复直至残存网络上不再存在增高路径为止. +```python +def ford-fulkerson(G,s,t): + initialize flow f to 0 + while exists an augmenting path p in residual network Gf: + augment flow f along p + return f +``` + +### 6.3.1. 残存网络 +![](https://upload-images.jianshu.io/upload_images/7130568-c74a571b9121dbbf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + + +### 6.3.2. 增广路径 +![](https://upload-images.jianshu.io/upload_images/7130568-b9e841cfa4d04b57.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + +### 6.3.3. 割 +![](https://upload-images.jianshu.io/upload_images/7130568-74b065e86eb285b7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) + +## 6.4. 基本的 Ford-Fulkerson算法 +```python +def ford-fulkerson(G,s,t): + for edge in G.E: edge.f = 0 + while exists path p:s->t in Gf: + cf(p) = min{cf(u,v):(u,v) is in p} + for edge in p: + if edge in E: + edge.f +=cf(p) + else: reverse_edge.f -=cf(p) +``` + + +## 6.5. TBD + + +# 7. 参考资料 +[^1]: 算法导论 +[^2]: 图论, 王树禾 diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/hashTable.md" "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/hashTable.md" index 0e80135..7192d64 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/hashTable.md" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/hashTable.md" @@ -29,7 +29,7 @@ description: "散列表的原理与实现, 包括直接寻址, 链接法, 开放 -哈希表 (hash table) , 可以实现 $O(1)$ 的 read, write, update +哈希表 (hash table) , 可以实现 ![](https://latex.codecogs.com/gif.latex?O(1)) 的 read, write, update 相对应 python 中的 dict, c语言中的 map 其实数组也能实现, 只是数组用来索引的关键字是下标, 是整数. @@ -43,7 +43,7 @@ description: "散列表的原理与实现, 包括直接寻址, 链接法, 开放 # 2. 映射 ## 2.1. 散列函数(hash) -将关键字 k 进行映射, 映射函数 $h$, 映射后的数组地址 $h(k)$. +将关键字 k 进行映射, 映射函数 ![](https://latex.codecogs.com/gif.latex?h), 映射后的数组地址 ![](https://latex.codecogs.com/gif.latex?h(k)). ### 2.1.1. 简单一致散列 @@ -53,14 +53,7 @@ description: "散列表的原理与实现, 包括直接寻址, 链接法, 开放 好的散列函数应 满足简单一致假设 例如 -$$ -\begin{aligned} -&(1) \text{除法散列} \quad h(k) = k \ mod\ m \\ -&(2) \text{乘法散列} \quad h(k) = \lfloor {m(kA \ mod\ 1)\rfloor} \text{,(0< A< 1)}\\ -&\quad\text{任何 A 都适用,最佳的选择与散列的数据特征有关.}\\ -&\quad\text{ Knuth 认为,最理想的是黄金分割数}\frac{\sqrt{5} -1}{2} \approx 0.618 -\end{aligned} -$$ +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;&(1)&space;\text{Division-hash}&space;\quad&space;h(k)&space;=&space;k&space;\&space;mod\&space;m&space;\\&space;&(2)&space;\text{Multiplication-hash}&space;\quad&space;h(k)&space;=&space;\lfloor&space;{m(kA&space;\&space;mod\&space;1)\rfloor}&space;\text{,(0<&space;A<&space;1)}\\&space;&\quad\text{Any-All-Access-Pass&space;A&space;Both-apply,The-best-choice-is-related-to-the-hashed-data-characteristics.}\\&space;&\quad\text{&space;Knuth&space;Holding:,The-most-ideal-is-the-number-of-golden-sections.}\frac{\sqrt{5}&space;-1}{2}&space;\approx&space;0.618&space;\end{aligned}&space;) ### 2.1.2. 碰撞(collision) @@ -78,7 +71,7 @@ $$ ## 2.2. 直接寻址法 -将关键字直接对应到数组地址, 即 $h(k)=k$ +将关键字直接对应到数组地址, 即 ![](https://latex.codecogs.com/gif.latex?h(k)=k) 缺点: 如果关键字值域范围大, 但是数量小, 就会浪费空间, 有可能还不能储存这么大的值域范围. @@ -92,10 +85,10 @@ $$ -记有 m 个链表, n 个元素 $\alpha = \frac{n}{m}$ 为每个链表的期望元素个数(长度) +记有 m 个链表, n 个元素 ![](https://latex.codecogs.com/gif.latex?\alpha&space;=&space;\frac{n}{m}) 为每个链表的期望元素个数(长度) -则查找成功,或者不成功的时间复杂度为 $\Theta(1+\alpha)$ -如果 $n=O(m), namely \quad \alpha=\frac{O(m)}{m}=O(1)$, 则上面的链接法满足 $O(1)$的速度 +则查找成功,或者不成功的时间复杂度为 ![](https://latex.codecogs.com/gif.latex?\Theta(1+\alpha)) +如果 ![](https://latex.codecogs.com/gif.latex?n=O(m),&space;namely&space;\quad&space;\alpha=\frac{O(m)}{m}=O(1)), 则上面的链接法满足 ![](https://latex.codecogs.com/gif.latex?O(1))的速度 @@ -104,41 +97,39 @@ $$ 随机地选择散列函数, 使之独立于要存储的关键字 #### 2.3.1.1. 定义 -设一组散列函数 $H=\{h_1,h_2,\ldots,h_i\}$, 将 关键字域 U 映射到 $\{0,1,\ldots,m-1\}$ , 全域的函数组, 满足 -$$ -for \ k \neq l \ \in U, h(k) = h(l), \text{这样的 h 的个数不超过}\frac{|H|}{m} -$$ -即从 H 中任选一个散列函数, 当关键字不相等时, 发生碰撞的概率不超过 $\frac{1}{m}$ +设一组散列函数 ![](https://latex.codecogs.com/gif.latex?H=\{h_1,h_2,\ldots,h_i\}), 将 关键字域 U 映射到 ![](https://latex.codecogs.com/gif.latex?\{0,1,\ldots,m-1\}) , 全域的函数组, 满足 +![](https://latex.codecogs.com/gif.latex?&space;for&space;\&space;k&space;eq&space;l&space;\&space;\in&space;U,&space;h(k)&space;=&space;h(l),&space;\text{Such&space;h&space;The-number-does-not-exceed}\frac{|H|}{m}&space;) +即从 H 中任选一个散列函数, 当关键字不相等时, 发生碰撞的概率不超过 ![](https://latex.codecogs.com/gif.latex?\frac{1}{m}) #### 2.3.1.2. 性质 -对于 m 个槽位的表, 只需 $\Theta(n)$的期望时间来处理 n 个元素的 insert, search, delete,其中 有$O(m)$个insert 操作 +对于 m 个槽位的表, 只需 ![](https://latex.codecogs.com/gif.latex?\Theta(n))的期望时间来处理 n 个元素的 insert, search, delete,其中 有![](https://latex.codecogs.com/gif.latex?O(m))个insert 操作 #### 2.3.1.3. 实现 -选择足够大的 prime p, 记 $Z_p=\{0,1,\ldots,p-1\}$, $Z_p^{*}=\{1,\ldots,p-1\}$ -令$h_{a,b}(k) = ((ak+b)mod\ p) mod\ m$ -则 $H_{p,m}=\{h_{a,b}|a\in Z_p^{*},b\in Z_p\}$ +选择足够大的 prime p, 记 ![](https://latex.codecogs.com/gif.latex?Z_p=\{0,1,\ldots,p-1\}), ![](https://latex.codecogs.com/gif.latex?Z_p^{*}=\{1,\ldots,p-1\}) +令![](https://latex.codecogs.com/gif.latex?h_{a,b}(k)&space;=&space;((ak+b)mod\&space;p)&space;mod\&space;m) +则 ![](https://latex.codecogs.com/gif.latex?H_{p,m}=\{h_{a,b}|a\in&space;Z_p^{*},b\in&space;Z_p\}) -每一个散列函数 $h\_{a,b}$ 都将 $Z_p$ 映射到 $Z_m$, m 可以是任意的, 不用是一个素数 +每一个散列函数 ![](https://latex.codecogs.com/gif.latex?h\_{a,b}) 都将 ![](https://latex.codecogs.com/gif.latex?Z_p) 映射到 ![](https://latex.codecogs.com/gif.latex?Z_m), m 可以是任意的, 不用是一个素数 ## 2.4. 开放寻址法 所有表项都在散列表中, 没有链表. -且散列表装载因子$\alpha=\frac{n}{m}\leqslant1$ +且散列表装载因子![](https://latex.codecogs.com/gif.latex?\alpha=\frac{n}{m}\leqslant1) 这里散列函数再接受一个参数, 作为探测序号 -逐一试探 $h(k,0),h(k,1),\ldots,h(k,m-1)$,这要有满足的,就插入, 不再计算后面的 hash值 +逐一试探 ![](https://latex.codecogs.com/gif.latex?h(k,0),h(k,1),\ldots,h(k,m-1)),这要有满足的,就插入, 不再计算后面的 hash值 探测序列一般分有三种 -* 线性$\ 0,1,\ldots,m-1$ +* 线性![](https://latex.codecogs.com/gif.latex?\&space;0,1,\ldots,m-1) 存在一次聚集问题 -* 二次$\ 0,1,\ldots,(m-1)^2$ +* 二次![](https://latex.codecogs.com/gif.latex?\&space;0,1,\ldots,(m-1)^2) 存在二次聚集问题 * 双重探查 -$h(k,i) = (h_1(k)+i*h_2(k))mod\ m$ +![](https://latex.codecogs.com/gif.latex?h(k,i)&space;=&space;(h_1(k)+i*h_2(k))mod\&space;m) 为了能查找整个表, 即要为模 m 的完系, 则 h_2(k)要与 m 互质. -如可以取 $h_1(k) = k\ mod \ m,h_2(k) = 1+(k\ mod\ {m-1})$ +如可以取 ![](https://latex.codecogs.com/gif.latex?h_1(k)&space;=&space;k\&space;mod&space;\&space;m,h_2(k)&space;=&space;1+(k\&space;mod\&space;{m-1})) @@ -146,32 +137,24 @@ $h(k,i) = (h_1(k)+i*h_2(k))mod\ m$ ### 2.4.1. 不成功查找的探查数的期望 -对于开放寻址散列表,且 $\alpha<1$,一次不成功的查找,是这样的: 已经装填了 n 个, 总共有m 个,则空槽有 m-n 个. +对于开放寻址散列表,且 ![](https://latex.codecogs.com/gif.latex?\alpha<1),一次不成功的查找,是这样的: 已经装填了 n 个, 总共有m 个,则空槽有 m-n 个. 不成功的探查是这样的: 一直探查到已经装填的元素(但是不是要找的元素), 直到遇到没有装填的空槽. 所以这服从几何分布, 即 -$$ -p(\text{不成功探查})=p(\text{第一次找到空槽})=\frac{m-n}{m} -$$ +![](https://latex.codecogs.com/gif.latex?&space;p(\text{Unsuccessful-exploration})=p(\text{Find-the-empty-slot-for-the-first-time})=\frac{m-n}{m}&space;) 有 - $$ E(\text{探查数})=\frac{1}{p}\leqslant \frac{1}{1-\alpha}$$ + ![](https://latex.codecogs.com/gif.latex?E(\text{Probe-number})=\frac{1}{p}\leqslant&space;\frac{1}{1-\alpha}) ![](https://upload-images.jianshu.io/upload_images/7130568-8d659aa8fe7de1a9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) #### 2.4.1.1. 插入探查数的期望 -所以, 插入一个关键字, 也最多需要 $\frac{1}{1-\alpha}$次, 因为插入过程就是前面都是被占用了的槽, 最后遇到一个空槽.与探查不成功是一样的过程 +所以, 插入一个关键字, 也最多需要 ![](https://latex.codecogs.com/gif.latex?\frac{1}{1-\alpha})次, 因为插入过程就是前面都是被占用了的槽, 最后遇到一个空槽.与探查不成功是一样的过程 #### 2.4.1.2. 成功查找的探查数的期望 -成功查找的探查过程与插入是一样的. 所以查找关键字 k 相当于 插入它, 设为第 i+1 个插入的(前面插入了i个,装载因子$\alpha=\frac{i}{m}$. 那么期望探查数就是 -$$\frac{1}{1-\alpha}=\frac{1}{1-\frac{i}{m}}=\frac{m}{m-i}$$ +成功查找的探查过程与插入是一样的. 所以查找关键字 k 相当于 插入它, 设为第 i+1 个插入的(前面插入了i个,装载因子![](https://latex.codecogs.com/gif.latex?\alpha=\frac{i}{m}). 那么期望探查数就是 +![](https://latex.codecogs.com/gif.latex?\frac{1}{1-\alpha}=\frac{1}{1-\frac{i}{m}}=\frac{m}{m-i}) 则成功查找的期望探查数为 -$$ -\begin{aligned} -\frac{1}{n}\sum_{i=0}^{n-1}\frac{m}{m-i}=\frac{m}{n}\sum_{i=0}^{n-1}\frac{1}{m-i} &= \frac{m}{n}\sum_{i=m-n+1}^{m}\frac{1}{i}\\ -&\leqslant \frac{1}{\alpha} \int_{m-n}^m\frac{1}{x}dx\\ -&=\frac{1}{\alpha}ln\frac{1}{1-\alpha} -\end{aligned} -$$ +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;\frac{1}{n}\sum_{i=0}^{n-1}\frac{m}{m-i}=\frac{m}{n}\sum_{i=0}^{n-1}\frac{1}{m-i}&space;&=&space;\frac{m}{n}\sum_{i=m-n+1}^{m}\frac{1}{i}\\&space;&\leqslant&space;\frac{1}{\alpha}&space;\int_{m-n}^m\frac{1}{x}dx\\&space;&=\frac{1}{\alpha}ln\frac{1}{1-\alpha}&space;\end{aligned}&space;) 代码 diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/number-theory.md" "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/number-theory.md" index fd5d834..f490625 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/number-theory.md" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/number-theory.md" @@ -25,7 +25,7 @@ description: "bezouts-identity, primality_test, miller-rabin, prime-sieve, polla ## 0.1. gcd, co-primes `gcd` is short for `greatest common divisor` -If `a`,`b` are co-primes, we denote as $(a,b)=1, \text{which means } gcd(a,b)=1 $ +If `a`,`b` are co-primes, we denote as ![](https://latex.codecogs.com/gif.latex?(a,b)=1,&space;\text{which&space;means&space;}&space;gcd(a,b)=1) We can use `Euclid algorithm` to calculate `gcd` of two numbers. ```python def gcd(a,b): @@ -87,8 +87,8 @@ def twoDivideFind(x,li): Just like the Fermat and Solovay–Strassen tests, the Miller–Rabin test relies on an equality or set of equalities that hold true for prime values, then checks whether or not they hold for a number that we want to test for primality. First, a [lemma](https://en.wikipedia.org/wiki/Lemma_(mathematics) "Lemma (mathematics)") about square [roots of unity](https://en.wikipedia.org/wiki/Root_of_unity "Root of unity") in the [finite field](https://en.wikipedia.org/wiki/Finite_field "Finite field") **Z**/*p***Z**, where *p* is prime and *p* > 2\. Certainly 1 and −1 always yield 1 when squared modulo *p*; call these [trivial](https://en.wikipedia.org/wiki/Trivial_(mathematics) "Trivial (mathematics)") [square roots](https://en.wikipedia.org/wiki/Square_root "Square root") of 1\. There are no *nontrivial* square roots of 1 modulo *p* (a special case of the result that, in a field, a [polynomial](https://en.wikipedia.org/wiki/Polynomial "Polynomial") has no more zeroes than its degree). To show this, suppose that *x* is a square root of 1 modulo *p*. Then: -$$ x^2\equiv1\ (mod\ p)$$ -$$(x-1)(x+1) \equiv 0\ (mod\ p)$$ +![](https://latex.codecogs.com/gif.latex?x^2\equiv1\&space;(mod\&space;p)) +![](https://latex.codecogs.com/gif.latex?(x-1)(x+1)&space;\equiv&space;0\&space;(mod\&space;p)) @@ -96,22 +96,22 @@ In other words, prime *p* divides the product (*x* − 1)(*x* + 1). By [E Now, let *n* be prime, and odd, with *n* > 2\. It follows that *n* − 1 is even and we can write it as 2*s*·*d*, where *s* and *d* are positive integers and *d* is odd. For each *a* in (**Z**/*n***Z**)*, either -$$a^d\equiv 1\ (mod\ n)$$ +![](https://latex.codecogs.com/gif.latex?a^d\equiv&space;1\&space;(mod\&space;n)) or -$$a^{2^r*d}\equiv -1\ (mod\ n), \text{where } 0\le r*n*−1, we will get either 1 or −1\. If we get −1 then the second equality holds and it is done. If we never get −1, then when we have taken out every power of 2, we are left with the first equality. The Miller–Rabin primality test is based on the [contrapositive](https://en.wikipedia.org/wiki/Contrapositive "Contrapositive") of the above claim. That is, if we can find an *a* such that -$$a^d\not\equiv 1\ (mod\ n)$$ +![](https://latex.codecogs.com/gif.latex?a^d&space;ot\equiv&space;1\&space;(mod\&space;n)) and -$$a^{2^r*d}\not\equiv -1\ (mod\ n), \text{where } 0\le r ## 0.4. Euler function -Euler function, denoted as $\phi(n)$, mapping n as the number of number which is smaller than n and is the co-prime of n. +Euler function, denoted as ![](https://latex.codecogs.com/gif.latex?\phi(n)), mapping n as the number of number which is smaller than n and is the co-prime of n. -e.g.: $\phi(3)=2$ since 1,2 are coprimes of 3 and smaller than 3, $\phi(4)=2$ ,(1,3) +e.g.: ![](https://latex.codecogs.com/gif.latex?\phi(3)=2) since 1,2 are coprimes of 3 and smaller than 3, ![](https://latex.codecogs.com/gif.latex?\phi(4)=2) ,(1,3) Euler function is a kind of productive function and has two properties as follows: -1. $\phi(p^k) = p^k-p^{k-1}$, where p is a prime -2. $\phi(mn) = \phi(m)*\phi(n)$ where $(m,n)=1$ +1. ![](https://latex.codecogs.com/gif.latex?\phi(p^k)&space;=&space;p^k-p^{k-1}), where p is a prime +2. ![](https://latex.codecogs.com/gif.latex?\phi(mn)&space;=&space;\phi(m)*\phi(n)) where ![](https://latex.codecogs.com/gif.latex?(m,n)=1) -Thus, for every narural number *n*, we can evaluate $\phi(n)$ using the following method. +Thus, for every narural number *n*, we can evaluate ![](https://latex.codecogs.com/gif.latex?\phi(n)) using the following method. 1. factorize n: -$$n = \prod _{i=1}^{l} p_i^{k_i}$$, where $p_i$ is a prime and $k_i,l > 0$ . -2. calculate $\phi(n) $ using the two properties. - -$$ -\begin{aligned} -\phi(n) &=\phi( \prod _{i=1}^{l} p_i^{k_i}) \\ - &=\prod _{i=1}^{l} \phi( p_i^{k_i}) \\ - &=\prod _{i=1}^{l} ( p_i^{k_i}-p_i^{ {k_i}-1})\\ - &=\prod _{i=1}^{l}p_i^{k_i} \prod _{i=1}^{l} ( 1-\frac{1}{p_i})\\ - &=n \prod _{i=1}^{l} ( 1-\frac{1}{p_i})\\ -\end{aligned} -$$ - -And , $\sigma(n)$ represents the sum of all factors of n. -e.g. : $\sigma(9) = 1+3+9 = 14$ -$$ -\begin{aligned} -\sigma(n) &= \prod _{i=1}^{l} \sum_{j=0}^{k_i} p_i^j \\ - &=\prod _{i=1}^{l} \frac{p_i^{k_i+1}-1}{p_i-1}\\ -\end{aligned} -$$ - -A `perfect number` _n_ is defined as $\sigma(n) = 2n$ +![](https://latex.codecogs.com/gif.latex?n&space;=&space;\prod&space;_{i=1}^{l}&space;p_i^{k_i}), where ![](https://latex.codecogs.com/gif.latex?p_i) is a prime and ![](https://latex.codecogs.com/gif.latex?k_i,l&space;>&space;0) . +2. calculate ![](https://latex.codecogs.com/gif.latex?\phi(n)) using the two properties. + +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;\phi(n)&space;&=\phi(&space;\prod&space;_{i=1}^{l}&space;p_i^{k_i})&space;\\&space;&=\prod&space;_{i=1}^{l}&space;\phi(&space;p_i^{k_i})&space;\\&space;&=\prod&space;_{i=1}^{l}&space;(&space;p_i^{k_i}-p_i^{&space;{k_i}-1})\\&space;&=\prod&space;_{i=1}^{l}p_i^{k_i}&space;\prod&space;_{i=1}^{l}&space;(&space;1-\frac{1}{p_i})\\&space;&=n&space;\prod&space;_{i=1}^{l}&space;(&space;1-\frac{1}{p_i})\\&space;\end{aligned}&space;) + +And , ![](https://latex.codecogs.com/gif.latex?\sigma(n)) represents the sum of all factors of n. +e.g. : ![](https://latex.codecogs.com/gif.latex?\sigma(9)&space;=&space;1+3+9&space;=&space;14) +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;\sigma(n)&space;&=&space;\prod&space;_{i=1}^{l}&space;\sum_{j=0}^{k_i}&space;p_i^j&space;\\&space;&=\prod&space;_{i=1}^{l}&space;\frac{p_i^{k_i+1}-1}{p_i-1}\\&space;\end{aligned}&space;) + +A `perfect number` _n_ is defined as ![](https://latex.codecogs.com/gif.latex?\sigma(n)&space;=&space;2n) The following is the implementation of this two functions. ```python @@ -280,7 +267,7 @@ def sigma(n): ## 0.5. Modulo equation The following codes can solve a linear, group modulo equation. More details and explanations will be supplied if I am not too busy. -Note that I use `--` to represent $\equiv$ in the python codes. +Note that I use `--` to represent ![](https://latex.codecogs.com/gif.latex?\equiv) in the python codes. ![](https://upload-images.jianshu.io/upload_images/7130568-be31bdaf6b67f883.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/red-black-tree.md" "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/red-black-tree.md" index af7df43..f718870 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/red-black-tree.md" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/red-black-tree.md" @@ -63,24 +63,24 @@ description: "红黑树的原理与实现, 包括插入, 删除, 以及数据结 ## 1.3. 黑高度 -从某个结点 x 到叶结点的黑色结点数,称为此结点的黑高度, 记为 $h_b(x)$ +从某个结点 x 到叶结点的黑色结点数,称为此结点的黑高度, 记为 ![](https://latex.codecogs.com/gif.latex?h_b(x)) 树的黑高度是根的黑高度 ->1. 以 x 为 根的子树至少包含 $2^{h_b(x)}-1$个结点 ->2. 一颗有 n 个内结点的红黑树高度至多为$2lg(n+1)$ +>1. 以 x 为 根的子树至少包含 ![](https://latex.codecogs.com/gif.latex?2^{h_b(x)}-1)个结点 +>2. 一颗有 n 个内结点的红黑树高度至多为![](https://latex.codecogs.com/gif.latex?2lg(n+1)) 可用归纳法证明1 证明 2: 设树高 h -由红黑性质4, 根结点到叶子路径上的黑结点数至少 $\frac{h}{2}$,即 $h_b(root)\geqslant \frac{h}{2}$ +由红黑性质4, 根结点到叶子路径上的黑结点数至少 ![](https://latex.codecogs.com/gif.latex?\frac{h}{2}),即 ![](https://latex.codecogs.com/gif.latex?h_b(root)\geqslant&space;\frac{h}{2}) 再由1, -$$n \geqslant 2^{h_b(x)} -1 \geqslant 2^{\frac{h}{2}} -1$$ +![](https://latex.codecogs.com/gif.latex?n&space;\geqslant&space;2^{h_b(x)}&space;-1&space;\geqslant&space;2^{\frac{h}{2}}&space;-1) -即 $ h\leqslant 2lg(n+1)$ +即 ![](https://latex.codecogs.com/gif.latex?h\leqslant&space;2lg(n+1)) # 2. 旋转 -由于上面证明的红黑树高为 $O(logn)$,红黑树的 insert, delete, search 等操作都是, $O(logn)$. +由于上面证明的红黑树高为 ![](https://latex.codecogs.com/gif.latex?O(logn)),红黑树的 insert, delete, search 等操作都是, ![](https://latex.codecogs.com/gif.latex?O(logn)). 进行了 insert, delete 后可能破坏红黑性质, 可以通过旋转来保持. @@ -345,15 +345,15 @@ w 表示 x 的相抵. w 不能为 nil(因为 x 是双重黑色) # 5. 数据结构的扩张 ## 5.1. 平衡树的扩张 -通过在平衡树(如红黑树上的每个结点 加上 一个数据域 size (表示以此结点为根的子树的结点数.) 可以使`获得第 i 大的数` 的时间复杂度为 $O(logn)$ +通过在平衡树(如红黑树上的每个结点 加上 一个数据域 size (表示以此结点为根的子树的结点数.) 可以使`获得第 i 大的数` 的时间复杂度为 ![](https://latex.codecogs.com/gif.latex?O(logn)) -在 $O(n)$ 时间内建立, python代码如下 +在 ![](https://latex.codecogs.com/gif.latex?O(n)) 时间内建立, python代码如下 ```python def setSize(root): if root is None:return 0 root.size = setSize(root.left) + setSize(root.right)+1 ``` -在$O(logn)$时间查找, +在![](https://latex.codecogs.com/gif.latex?O(logn))时间查找, ```python def find(root,i): r = root.left.size +1 diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/sort.md" "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/sort.md" index 3ae32b7..8748fd6 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/sort.md" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/sort.md" @@ -43,7 +43,7 @@ description: "七大排序算法" * 比较排序 如希尔排序,堆排序, 快速排序, 合并排序等 -可以证明 比较排序的下界 是 $\Omega(nlogn)$ +可以证明 比较排序的下界 是 ![](https://latex.codecogs.com/gif.latex?\Omega(nlogn)) * 非比较排序 @@ -52,7 +52,7 @@ description: "七大排序算法" # 1. 希尔排序(shellSort) -希尔排序是选择排序的改进, 通过在较远的距离进行交换, 可以更快的减少逆序数. 这个距离即增量, 由自己选择一组, 从大到小进行, 而且最后一个增量必须是 1. 要选得到好的性能, 一般选择$2^k-1$ +希尔排序是选择排序的改进, 通过在较远的距离进行交换, 可以更快的减少逆序数. 这个距离即增量, 由自己选择一组, 从大到小进行, 而且最后一个增量必须是 1. 要选得到好的性能, 一般选择![](https://latex.codecogs.com/gif.latex?2^k-1) ```pythonn def shellSort(s,inc = None): if inc is None: inc = [1,3,5,7,11,13,17,19] @@ -67,33 +67,26 @@ def shellSort(s,inc = None): s[cur] = s[j] return s ``` -可以证明 希尔排序时间复杂度可以达到$O(n^{\frac{4}{3}})$ +可以证明 希尔排序时间复杂度可以达到![](https://latex.codecogs.com/gif.latex?O(n^{\frac{4}{3}})) # 2. 堆排序(heapSort) ## 2.1. 建堆 是将一个数组(列表) heapify 的过程. 方法就是对每一个结点, 都自底向上的比较,然后操作,这个过程称为 上浮. 粗略的计算, 每个结点上浮的比较次数的上界是 层数, 即 logn, 则 n 个结点, 总的比较次数为 nlogn -但是可以发现, 不同高度 h 的结点比较的次数不同, 上界实际上应该是 $O(h)$,每层结点数上界 $\lfloor 2^h \rfloor$ +但是可以发现, 不同高度 h 的结点比较的次数不同, 上界实际上应该是 ![](https://latex.codecogs.com/gif.latex?O(h)),每层结点数上界 ![](https://latex.codecogs.com/gif.latex?\lfloor&space;2^h&space;\rfloor) 则 总比较次数为 -$$ -\begin{aligned} -\sum_{h=1}^{\lfloor{log_2 n}\rfloor} O(h)\lceil 2^{h} \rceil & = \sum_{h=0}^{ {log_2 n}-1} O(h\frac{n}{2^h})\\ - & = n*O(\sum_{h=0}^{log_2 n}\frac{h}{2^h}) \\ - & = n*O(1) \\ - & = O(n) -\end{aligned} -$$ +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;\sum_{h=1}^{\lfloor{log_2&space;n}\rfloor}&space;O(h)\lceil&space;2^{h}&space;\rceil&space;&&space;=&space;\sum_{h=0}^{&space;{log_2&space;n}-1}&space;O(h\frac{n}{2^h})\\&space;&&space;=&space;n*O(\sum_{h=0}^{log_2&space;n}\frac{h}{2^h})&space;\\&space;&&space;=&space;n*O(1)&space;\\&space;&&space;=&space;O(n)&space;\end{aligned}&space;) ## 2.2. 访问最元 -最大堆对应最大元,最小堆对于最小元, 可以 $O(1)$ 内实现 +最大堆对应最大元,最小堆对于最小元, 可以 ![](https://latex.codecogs.com/gif.latex?O(1)) 内实现 ## 2.3. 取出最元 最大堆取最大元,最小堆取最小元,由于元素取出了, 要进行调整. 从堆顶开始, 依次和其两个孩子比较, 如果是最大堆, 就将此结点(父亲)的值赋为较大的孩子的值,最小堆反之. 然后对那个孩子进行同样的操作,一直到达堆底,即最下面的一层. 这个过程称为 下滤. 最后将最后一个元素与最下面一层那个元素(与上一层交换的)交换, 再删除最后一个元素. -时间复杂度为 $O(logn)$ +时间复杂度为 ![](https://latex.codecogs.com/gif.latex?O(logn)) ## 2.4. 堆排序 建立堆之后, 一直进行 `取出最元`操作, 即得有序序列 @@ -269,16 +262,16 @@ def quickSort(lst): 快速排序性能取决于划分的对称性(即枢纽元的选择), 以及partition 的实现. 如果每次划分很对称(大概在当前序列的中位数为枢纽元), 则与合并算法一样快, 但是如果不对称,在渐近上就和插入算法一样慢 ### 3.3.1. 最坏情况 -试想,如果每次划分两个区域分别包含 n-1, 1则易知时间复杂度为 $\Theta(n^2)$, 此外, 如果输入序序列已经排好序,且枢纽元没选好, 比如选的端点, 则同样是这样复杂, 而此时插入排序只需 $O(n)$. +试想,如果每次划分两个区域分别包含 n-1, 1则易知时间复杂度为 ![](https://latex.codecogs.com/gif.latex?\Theta(n^2)), 此外, 如果输入序序列已经排好序,且枢纽元没选好, 比如选的端点, 则同样是这样复杂, 而此时插入排序只需 ![](https://latex.codecogs.com/gif.latex?O(n)). ### 3.3.2. 最佳情况 -有 $T(n) = 2T(\frac{n}{2})+\Theta(n)$ -则由主方法为$O(nlogn)$ +有 ![](https://latex.codecogs.com/gif.latex?T(n)&space;=&space;2T(\frac{n}{2})+\Theta(n)) +则由主方法为![](https://latex.codecogs.com/gif.latex?O(nlogn)) ### 3.3.3. 平衡的划分 -如果每次 9:1, $T(n) = T(\frac{9n}{10})+T(\frac{n}{10})+\Theta(n)$ -用递归树求得在渐近上仍然是 $O(nlogn)$ +如果每次 9:1, ![](https://latex.codecogs.com/gif.latex?T(n)&space;=&space;T(\frac{9n}{10})+T(\frac{n}{10})+\Theta(n)) +用递归树求得在渐近上仍然是 ![](https://latex.codecogs.com/gif.latex?O(nlogn)) 所以任何比值 k:1, 都有如上的渐近时间复杂度 然而每次划分是不可能完全相同的 @@ -287,40 +280,27 @@ def quickSort(lst): ## 3.4. 期望运行时间 对于 randomized-quicksort, 即随机选择枢纽元 -设 n 个元素, 从小到大记为 $z_1,z_2,\ldots,z_n$,指示器变量 $X_{ij}$表示 $z_i,z_j$是否进行比较 +设 n 个元素, 从小到大记为 ![](https://latex.codecogs.com/gif.latex?z_1,z_2,\ldots,z_n),指示器变量 ![](https://latex.codecogs.com/gif.latex?X_{ij})表示 ![](https://latex.codecogs.com/gif.latex?z_i,z_j)是否进行比较 即 -$$ -X_{ij} = -\begin{cases} -1,\quad z_i,z_j\text{进行比较}\\ -0,\quad z_i,z_j\text{不进行比较} -\end{cases} -$$ +![](https://latex.codecogs.com/gif.latex?&space;X_{ij}&space;=&space;\begin{cases}&space;1,\quad&space;z_i,z_j\text{Making-Comparisons}\\&space;0,\quad&space;z_i,z_j\text{No-comparison}&space;\end{cases}&space;) 考察比较次数, 可以发现两个元素进行比较, 一定是一个是枢纽元的情况, 两个元素间不可能进行两次比较. -所有总的比较次数不超过,$\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}X_{ij}$ +所有总的比较次数不超过,![](https://latex.codecogs.com/gif.latex?\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}X_{ij}) 求均值 -$$E(\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}X_{ij})=\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}E(X_{ij})=\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}P(z_i,z_j\text{进行比较})$$ +![](https://latex.codecogs.com/gif.latex?E(\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}X_{ij})=\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}E(X_{ij})=\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}P(z_i,z_j\text{Making-Comparisons})) -再分析,$z_i,z_j$ 在$Z_{ij} = \{z_i,z_{i+1},\ldots,z_j\} $中, 如果集合中的非此两元素,$z_k, i< k< j$作为了枢纽元, 则$z_k$将集合划分{z_i,z_{i+1},\ldots,z_{k-1}},{z_{k+1},\ldots,z_j}, 这两个集合中的元素都不会再和对方中的元素进行比较, -所以要使 $z_i,z_j$进行比较, 则两者之一(只能是一个,即互斥)是 $Z_{ij}$上的枢纽元 +再分析,![](https://latex.codecogs.com/gif.latex?z_i,z_j) 在![](https://latex.codecogs.com/gif.latex?Z_{ij}&space;=&space;\{z_i,z_{i+1},\ldots,z_j\})中, 如果集合中的非此两元素,![](https://latex.codecogs.com/gif.latex?z_k,&space;i<&space;k<&space;j)作为了枢纽元, 则![](https://latex.codecogs.com/gif.latex?z_k)将集合划分{z_i,z_{i+1},\ldots,z_{k-1}},{z_{k+1},\ldots,z_j}, 这两个集合中的元素都不会再和对方中的元素进行比较, +所以要使 ![](https://latex.codecogs.com/gif.latex?z_i,z_j)进行比较, 则两者之一(只能是一个,即互斥)是 ![](https://latex.codecogs.com/gif.latex?Z_{ij})上的枢纽元 则 -$$ -\begin{aligned} -P(z_i,z_j\text{进行比较}) & = P(z_i,z_j\text{做为}Z_{ij}\text{上的枢纽元}) \\ - & = P(z_j\text{做为}Z_{ij}\text{上的枢纽元})+P(z_i\text{做为}Z_{ij}\text{上的枢纽元})\\ - & = \frac{1}{j-i+1}+\frac{1}{j-i+1} -\\ & = \frac{2}{j-i+1}\\ -\end{aligned} -$$ +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;P(z_i,z_j\text{Making-Comparisons})&space;&&space;=&space;P(z_i,z_j\text{As}Z_{ij}\text{Hub-element})&space;\\&space;&&space;=&space;P(z_j\text{As}Z_{ij}\text{Hub-element})+P(z_i\text{As}Z_{ij}\text{Hub-element})\\&space;&&space;=&space;\frac{1}{j-i+1}+\frac{1}{j-i+1}&space;\\&space;&&space;=&space;\frac{2}{j-i+1}\\&space;\end{aligned}&space;) 注意第二步是因为两事件互斥才可以直接概率相加 然后就可以将此概率代入求期望比较次数了, -为 $O(nlogn)$ (由于是 O, 放缩一下就行) +为 ![](https://latex.codecogs.com/gif.latex?O(nlogn)) (由于是 O, 放缩一下就行) ## 3.5. 堆栈深度 -考察快速排序的堆栈深度,可以从递归树思考,实际上的堆栈变化过程就是前序访问二叉树, 所以深度为 $O(logn)$ +考察快速排序的堆栈深度,可以从递归树思考,实际上的堆栈变化过程就是前序访问二叉树, 所以深度为 ![](https://latex.codecogs.com/gif.latex?O(logn)) 为了减少深度, 可以进行 尾递归优化, 将函数返回前的递归通过迭代完成 ```python QUICKSORT(A,a,b) @@ -363,7 +343,7 @@ def countSort(lst,mn,mx): 由我们平时的直觉, 我们比较两个数时, 是从最高位比较起, 一位一位比较, 直到不相等时就能判断大小,或者相等(位数比完了). 基数排序有点不一样, 它是从低位比到高位, 这样才能把相同位有相同值的不同数排序. -对于 n 个数, 最高 d 位, 用下面的实现, 可时间复杂度为 $\Theta((n+d)*d)$ +对于 n 个数, 最高 d 位, 用下面的实现, 可时间复杂度为 ![](https://latex.codecogs.com/gif.latex?\Theta((n+d)*d)) ## 5.2. 实现 @@ -417,26 +397,18 @@ if __name__ == '__main__': 设有 n 个元素, 则设立 n 个桶 将各元素通过数值线性映射到桶地址, 类似 hash 链表. -然后在每个桶内, 进行插入排序($O(n_i^2)$) +然后在每个桶内, 进行插入排序(![](https://latex.codecogs.com/gif.latex?O(n_i^2))) 最后合并所有桶. -这里的特点是 n 个桶实现了 $\Theta(n)$的时间复杂度, 但是耗费的空间 为 $\Theta(n)$ +这里的特点是 n 个桶实现了 ![](https://latex.codecogs.com/gif.latex?\Theta(n))的时间复杂度, 但是耗费的空间 为 ![](https://latex.codecogs.com/gif.latex?\Theta(n)) 证明 -* 线性映射部分: $\Theta(n)$ -* 桶合并部分: $\Theta(n)$ -* 桶内插入排序部分: 设每个桶内的元素数为随机变量 $n_i$, 易知 $n_i \sim B(n,\frac{1}{n})$ 记 $p=\frac{1}{n}$ +* 线性映射部分: ![](https://latex.codecogs.com/gif.latex?\Theta(n)) +* 桶合并部分: ![](https://latex.codecogs.com/gif.latex?\Theta(n)) +* 桶内插入排序部分: 设每个桶内的元素数为随机变量 ![](https://latex.codecogs.com/gif.latex?n_i), 易知 ![](https://latex.codecogs.com/gif.latex?n_i&space;\sim&space;B(n,\frac{1}{n})) 记 ![](https://latex.codecogs.com/gif.latex?p=\frac{1}{n}) -$$ -\begin{aligned} -E(\sum_{i=1}^{n}n_i^2) &=\sum_{i=1}^{n}E(n_i^2) \\ -&=\sum_{i=1}^{n}( Var(n_i)+E^2(n_i) ) \\ -&= \sum_{i=1}^{n}( np(1-p)+ (np)^2 )\\ -&= \sum_{i=1}^{n}( 2-\frac{1}{n} )\\ -&= 2n-1 -\end{aligned} -$$ -将以上各部分加起来即得时间复杂度 $\Theta(n)$ +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;E(\sum_{i=1}^{n}n_i^2)&space;&=\sum_{i=1}^{n}E(n_i^2)&space;\\&space;&=\sum_{i=1}^{n}(&space;Var(n_i)+E^2(n_i)&space;)&space;\\&space;&=&space;\sum_{i=1}^{n}(&space;np(1-p)+&space;(np)^2&space;)\\&space;&=&space;\sum_{i=1}^{n}(&space;2-\frac{1}{n}&space;)\\&space;&=&space;2n-1&space;\end{aligned}&space;) +将以上各部分加起来即得时间复杂度 ![](https://latex.codecogs.com/gif.latex?\Theta(n)) @@ -445,11 +417,11 @@ $$ 输入个序列 lst, 以及一个数 i, 输出 lst 中 第 i 小的数,即从小到大排列第 i 解决方法 -* 全部排序, 取第 i 个, $O(nlogn)$ +* 全部排序, 取第 i 个, ![](https://latex.codecogs.com/gif.latex?O(nlogn)) * 长度为 i 的队列(这是得到 lst 中 前 -i 个元素的方法) 仍然 $O(nlogn)$ -* randomized-select(仿造快排) 平均情况$O(n)$,最坏情况同上(快排), $\Theta(n^2)$ +i 个元素的方法) 仍然 ![](https://latex.codecogs.com/gif.latex?O(nlogn)) +* randomized-select(仿造快排) 平均情况![](https://latex.codecogs.com/gif.latex?O(n)),最坏情况同上(快排), ![](https://latex.codecogs.com/gif.latex?\Theta(n^2)) ```python from random import randint diff --git "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/string-matching.md" "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/string-matching.md" index b67ab8b..f97e7d0 100644 --- "a/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/string-matching.md" +++ "b/\347\256\227\346\263\225\345\237\272\347\241\200/notes/mbinary/string-matching.md" @@ -19,143 +19,25 @@ In this article, I will show you some kinds of popular string matching algorithm ## Rabin-Karp We can view a string of k characters (digits) as a length-k decimal number. E.g., the string “31425” corresponds to the decimal number 31,425. - Given a pattern P [1..m], let p denote the corresponding decimal value. -- Given a text T [1..n], let $t_s$ denote the decimal value of the length-m substring T [(s+1)..(s+m)] for s=0,1,…,(n-m). -- let `d` be the radix of num, thus $d = len(set(s))$ -- $t_s$ = p iff T [(s+1)..(s+m)] = P [1..m]. +- Given a text T [1..n], let ![](https://latex.codecogs.com/gif.latex?t_s) denote the decimal value of the length-m substring T [(s+1)..(s+m)] for s=0,1,…,(n-m). +- let `d` be the radix of num, thus ![](https://latex.codecogs.com/gif.latex?d&space;=&space;len(set(s))) +- ![](https://latex.codecogs.com/gif.latex?t_s) = p iff T [(s+1)..(s+m)] = P [1..m]. - p can be computed in O(m) time. p = P[m] + d\*(P[m-1] + d\*(P[m-2]+…)). -- $t_0$ can similarly be computed in O(m) time. -- Other $t_1,\ldots,t_{n-m}$ can be computed in O(n-m) time since $t_{s+1} can be computed from ts in constant time. - -Namely, -$$ +- ![](https://latex.codecogs.com/gif.latex?t_0) can similarly be computed in O(m) time. +- Other ![](https://latex.codecogs.com/gif.latex?t_1,\ldots,t_{n-m}) can be computed in O(n-m) time since ![](https://latex.codecogs.com/gif.latex?t_{s+1}&space;can&space;be&space;computed&space;from&space;ts&space;in&space;constant&space;time.&space;Namely,&space;) t_{s+1} = d*(t_s-d^{m-1} * T[s+1])+T[s+m+1] -$$ -However, it's no need to calculate $t_{s+1}$ directly. We can use modulus operation to reduce the work of caculation. - -We choose a small prime number. Eg 13 for radix( denoted as d) 10. -Generally, $d*q$ should fit within one computer word. - -We firstly caculate $t_0$ mod q. -Then, for every $t_i (i>1)$ -assume -$$ +![](https://latex.codecogs.com/gif.latex?&space;However,&space;it's&space;no&space;need&space;to&space;calculate)t_{s+1}![](https://latex.codecogs.com/gif.latex?directly.&space;We&space;can&space;use&space;modulus&space;operation&space;to&space;reduce&space;the&space;work&space;of&space;caculation.&space;We&space;choose&space;a&space;small&space;prime&space;number.&space;Eg&space;13&space;for&space;radix(&space;denoted&space;as&space;d)&space;10.&space;Generally,)d*q![](https://latex.codecogs.com/gif.latex?should&space;fit&space;within&space;one&space;computer&space;word.&space;We&space;firstly&space;caculate)t_0![](https://latex.codecogs.com/gif.latex?mod&space;q.&space;Then,&space;for&space;every)t_i (i>1)![](https://latex.codecogs.com/gif.latex?&space;assume&space;) t_{i-1} = T[i+m-1] + d*T[i+m-2]+\ldots+d^{m-1}*T[i-1] -$$ -denote $ d' = d^{m-1}\ mod\ q$ -thus, -$$ +![](https://latex.codecogs.com/gif.latex?&space;denote) d' = d^{m-1}\ mod\ q![](https://latex.codecogs.com/gif.latex?&space;thus,&space;) \begin{aligned} t_i &= (t_{i-1} - d^{m-1}*T[i-1]) * d + T[i+m]\\ &\equiv (t_{i-1} - d^{m-1}*T[i-1]) * d + T[i+m] (mod\ q)\\ &\equiv (t_{i-1}- ( d^{m-1} mod \ q) *T[i-1]) * d + T[i+m] (mod\ q)\\ &\equiv (t_{i-1}- d'*T[i-1]) * d + T[i+m] (mod\ q) \end{aligned} -$$ - -So we can compare the modular value of each $t_i$ with p's. -Only if they are the same, then we compare the origin chracters, namely -$$T[i],T[i+1],\ldots,T[i+m-1]$$ -and the pattern characters. -Gernerally, this algorithm's time approximation is O(n+m), and the worst case is O((n-m+1)*m) - -**Problem: this is assuming p and $t_s$ are small numbers. They may be too large to work with easily.** - - -python implementation -```python -#coding: utf-8 -''' mbinary -######################################################################### -# File : rabin_karp.py -# Author: mbinary -# Mail: zhuheqin1@gmail.com -# Blog: https://mbinary.github.io -# Github: https://github.com/mbinary -# Created Time: 2018-12-11 00:01 -# Description: rabin-karp algorithm -######################################################################### -''' - -def isPrime(x): - for i in range(2,int(x**0.5)+1): - if x%i==0:return False - return True -def getPrime(x): - '''return a prime which is bigger than x''' - for i in range(x,2*x): - if isPrime(i):return i -def findAll(s,p): - '''s: string p: pattern''' - dic={} - n,m = len(s),len(p) - d=0 #radix - for c in s: - if c not in dic: - dic[c]=d - d+=1 - sm = 0 - for c in p: - if c not in dic:return [] - sm = sm*d+dic[c] - - ret = [] - cur = 0 - for i in range(m): cur=cur*d + dic[s[i]] - if cur==sm:ret.append(0) - tmp = n-m - q = getPrime(m) - cur = cur%q - sm = sm%q - exp = d**(m-1) % q - for i in range(m,n): - cur = ((cur-dic[s[i-m]]*exp)*d+dic[s[i]]) % q - if cur == sm and p==s[i-m+1:i+1]: - ret.append(i-m+1) - return ret - -def randStr(n=3): - return [randint(ord('a'),ord('z')) for i in range(n)] - -if __name__ =='__main__': - from random import randint - s = randStr(50) - p = randStr(1) - print(s) - print(p) - print(findAll(s,p)) -``` -## FSM -A FSM can be represented as $(Q,q_0,A,S,C)$, where -- Q is the set of all states -- $q_0$ is the start state -- $A\in Q$ is a set of accepting states. -- S is a finite input alphabet. -- C is the set of transition functions: namely $q_j = c(s,q_i)$. - -Given a pattern string S, we can build a FSM for string matching. -Assume S has m chars, and there should be m+1 states. One is for the begin state, and the others are for matching state of each position of S. - -Once we have built the FSM, we can run it on any input string. -## KMP ->Knuth-Morris-Pratt method - -The idea is inspired by FSM. We can avoid computing the transition functions. Instead, we compute a prefix function P in O(m) time, which has only m entries. -> Prefix funtion stores info about how the pattern matches against shifts of itself. - -- String w is a prefix of string x, if x=wy for some string y -- String w is a suffix of string x, if x=yw for some string y -- The k-character prefix of the pattern P [1..m] denoted by Pk. -- Given that pattern prefix P [1..q] matches text characters T [(s+1)..(s+q)], what is the least shift s'> s such that P [1..k] = T [(s'+1)..(s'+k)] where s'+k=s+q? -- At the new shift s', no need to compare the first k characters of P with corresponding characters of T. -Method: For prefix $p_i$, find the longest proper prefix of $p_i$ that is also a suffix of $p_i$. -$$ +![](https://latex.codecogs.com/gif.latex?&space;So&space;we&space;can&space;compare&space;the&space;modular&space;value&space;of&space;each)t_i![](https://latex.codecogs.com/gif.latex?with&space;p's.&space;Only&space;if&space;they&space;are&space;the&space;same,&space;then&space;we&space;compare&space;the&space;origin&space;chracters,&space;namely&space;)T[i],T[i+1],\ldots,T[i+m-1]![](https://latex.codecogs.com/gif.latex?&space;and&space;the&space;pattern&space;characters.&space;Gernerally,&space;this&space;algorithm's&space;time&space;approximation&space;is&space;O(n+m),&space;and&space;the&space;worst&space;case&space;is&space;O((n-m+1)*m)&space;**Problem:&space;this&space;is&space;assuming&space;p&space;and)t_s![](https://latex.codecogs.com/gif.latex?are&space;small&space;numbers.&space;They&space;may&space;be&space;too&space;large&space;to&space;work&space;with&space;easily.**&space;python&space;implementation&space;```python&space;#coding:&space;utf-8&space;'''&space;mbinary&space;#########################################################################&space;#&space;File&space;:&space;rabin_karp.py&space;#&space;Author:&space;mbinary&space;#&space;Mail:&space;zhuheqin1@gmail.com&space;#&space;Blog:&space;https://mbinary.github.io&space;#&space;Github:&space;https://github.com/mbinary&space;#&space;Created&space;Time:&space;2018-12-11&space;00:01&space;#&space;Description:&space;rabin-karp&space;algorithm&space;#########################################################################&space;'''&space;def&space;isPrime(x):&space;for&space;i&space;in&space;range(2,int(x**0.5)+1):&space;if&space;x%i==0:return&space;False&space;return&space;True&space;def&space;getPrime(x):&space;'''return&space;a&space;prime&space;which&space;is&space;bigger&space;than&space;x'''&space;for&space;i&space;in&space;range(x,2*x):&space;if&space;isPrime(i):return&space;i&space;def&space;findAll(s,p):&space;'''s:&space;string&space;p:&space;pattern'''&space;dic={}&space;n,m&space;=&space;len(s),len(p)&space;d=0&space;#radix&space;for&space;c&space;in&space;s:&space;if&space;c&space;not&space;in&space;dic:&space;dic[c]=d&space;d+=1&space;sm&space;=&space;0&space;for&space;c&space;in&space;p:&space;if&space;c&space;not&space;in&space;dic:return&space;[]&space;sm&space;=&space;sm*d+dic[c]&space;ret&space;=&space;[]&space;cur&space;=&space;0&space;for&space;i&space;in&space;range(m):&space;cur=cur*d&space;+&space;dic[s[i]]&space;if&space;cur==sm:ret.append(0)&space;tmp&space;=&space;n-m&space;q&space;=&space;getPrime(m)&space;cur&space;=&space;cur%q&space;sm&space;=&space;sm%q&space;exp&space;=&space;d**(m-1)&space;%&space;q&space;for&space;i&space;in&space;range(m,n):&space;cur&space;=&space;((cur-dic[s[i-m]]*exp)*d+dic[s[i]])&space;%&space;q&space;if&space;cur&space;==&space;sm&space;and&space;p==s[i-m+1:i+1]:&space;ret.append(i-m+1)&space;return&space;ret&space;def&space;randStr(n=3):&space;return&space;[randint(ord('a'),ord('z'))&space;for&space;i&space;in&space;range(n)]&space;if&space;__name__&space;=='__main__':&space;from&space;random&space;import&space;randint&space;s&space;=&space;randStr(50)&space;p&space;=&space;randStr(1)&space;print(s)&space;print(p)&space;print(findAll(s,p))&space;```&space;##&space;FSM&space;A&space;FSM&space;can&space;be&space;represented&space;as)(Q,q_0,A,S,C)![](https://latex.codecogs.com/gif.latex?,&space;where&space;-&space;Q&space;is&space;the&space;set&space;of&space;all&space;states&space;-)q_0![](https://latex.codecogs.com/gif.latex?is&space;the&space;start&space;state&space;-)A\in Q![](https://latex.codecogs.com/gif.latex?is&space;a&space;set&space;of&space;accepting&space;states.&space;-&space;S&space;is&space;a&space;finite&space;input&space;alphabet.&space;-&space;C&space;is&space;the&space;set&space;of&space;transition&space;functions:&space;namely)q_j = c(s,q_i)![](https://latex.codecogs.com/gif.latex?.&space;Given&space;a&space;pattern&space;string&space;S,&space;we&space;can&space;build&space;a&space;FSM&space;for&space;string&space;matching.&space;Assume&space;S&space;has&space;m&space;chars,&space;and&space;there&space;should&space;be&space;m+1&space;states.&space;One&space;is&space;for&space;the&space;begin&space;state,&space;and&space;the&space;others&space;are&space;for&space;matching&space;state&space;of&space;each&space;position&space;of&space;S.&space;Once&space;we&space;have&space;built&space;the&space;FSM,&space;we&space;can&space;run&space;it&space;on&space;any&space;input&space;string.&space;##&space;KMP&space;>Knuth-Morris-Pratt&space;method&space;The&space;idea&space;is&space;inspired&space;by&space;FSM.&space;We&space;can&space;avoid&space;computing&space;the&space;transition&space;functions.&space;Instead,&space;we&space;compute&space;a&space;prefix&space;function&space;P&space;in&space;O(m)&space;time,&space;which&space;has&space;only&space;m&space;entries.&space;>&space;Prefix&space;funtion&space;stores&space;info&space;about&space;how&space;the&space;pattern&space;matches&space;against&space;shifts&space;of&space;itself.&space;-&space;String&space;w&space;is&space;a&space;prefix&space;of&space;string&space;x,&space;if&space;x=wy&space;for&space;some&space;string&space;y&space;-&space;String&space;w&space;is&space;a&space;suffix&space;of&space;string&space;x,&space;if&space;x=yw&space;for&space;some&space;string&space;y&space;-&space;The&space;k-character&space;prefix&space;of&space;the&space;pattern&space;P&space;[1..m]&space;denoted&space;by&space;Pk.&space;-&space;Given&space;that&space;pattern&space;prefix&space;P&space;[1..q]&space;matches&space;text&space;characters&space;T&space;[(s+1)..(s+q)],&space;what&space;is&space;the&space;least&space;shift&space;s'>&space;s&space;such&space;that&space;P&space;[1..k]&space;=&space;T&space;[(s'+1)..(s'+k)]&space;where&space;s'+k=s+q?&space;-&space;At&space;the&space;new&space;shift&space;s',&space;no&space;need&space;to&space;compare&space;the&space;first&space;k&space;characters&space;of&space;P&space;with&space;corresponding&space;characters&space;of&space;T.&space;Method:&space;For&space;prefix)p_i![](https://latex.codecogs.com/gif.latex?,&space;find&space;the&space;longest&space;proper&space;prefix&space;of)p_i![](https://latex.codecogs.com/gif.latex?that&space;is&space;also&space;a&space;suffix&space;of)p_i![](https://latex.codecogs.com/gif.latex?.&space;) pre[q] = max\{k|k ## 2.1. 随机构造的二叉查找树 -下面可以证明,随机构造,即输入序列有 $n!$中, 每种概率相同的情况下, 期望的树高 $h=O(logn)$ +下面可以证明,随机构造,即输入序列有 ![](https://latex.codecogs.com/gif.latex?n!)中, 每种概率相同的情况下, 期望的树高 ![](https://latex.codecogs.com/gif.latex?h=O(logn)) (直接搬运算法导论上面的啦>_<) ![](https://upload-images.jianshu.io/upload_images/7130568-69c57614410f6abd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) @@ -67,7 +67,7 @@ h是树高, 但是由于插入,删除而导致树不平衡, 即可能 $h\geqslan ## 2.2. 平均结点深度 一个较 上面定理 弱的结论: ->一棵随机构造的二叉查找树,n 个结点的平均深度为 $O(logn)$ +>一棵随机构造的二叉查找树,n 个结点的平均深度为 ![](https://latex.codecogs.com/gif.latex?O(logn)) 类似 RANDOMIZED-QUICKSORT 的证明过程, 因为快排 递归的过程就是一个递归 二叉树. 随机选择枢纽元就相当于这里的某个子树的根结点 在所有结点的大小随机排名, 如 i. 然后根结点将剩下的结点划分为左子树(i-1)个结点, 右子树(n-i)个结点. @@ -75,44 +75,29 @@ h是树高, 但是由于插入,删除而导致树不平衡, 即可能 $h\geqslan ![](https://upload-images.jianshu.io/upload_images/7130568-6bf2b5a6d286adca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 2.3. 不同的二叉树数目(Catalan num) -给定$\{1,2,\ldots,n\}$,组成二叉查找树的数目. +给定![](https://latex.codecogs.com/gif.latex?\{1,2,\ldots,n\}),组成二叉查找树的数目. 由上面的证明过程, 可以容易地分析得出, 任选第 i 个数作为根, 由于二叉查找树的性质, 其左子树 应该有 i-1个结点, 右子树有 n-i个结点. -如果记 n 个结点 的二叉查找树的数目为$b_n$ +如果记 n 个结点 的二叉查找树的数目为![](https://latex.codecogs.com/gif.latex?b_n) 则有递推公式 -$$ -b_n=\begin{cases} -1 &n=0 \\ -\sum_{i=1}^{n}b_{i-1}b_{n-i} & n\geqslant 1 -\end{cases} -$$ +![](https://latex.codecogs.com/gif.latex?&space;b_n=\begin{cases}&space;1&space;&n=0&space;\\&space;\sum_{i=1}^{n}b_{i-1}b_{n-i}&space;&&space;n\geqslant&space;1&space;\end{cases}&space;) 然后我们来看`<<算法导论>>`(p162,思考题12-4)上怎么求的吧( •̀ ω •́ )y 设生成函数 -$$B(x)=\sum_{n=0}^{\infty}b_n x^n$$ -下面证明$B(x)=xB(x)^2+1$ -易得$$xB(x)^2=\sum_{i=1}^{\infty}\sum_{n=i}^{\infty}b_{i-1}b_{n-i}x^n$$ -对比$B(x), xB(x)^2+1$的 x 的各次系数,分别是 $b_k,a_{k}$ -当 k=0, $a_k=1=b_k$ +![](https://latex.codecogs.com/gif.latex?B(x)=\sum_{n=0}^{\infty}b_n&space;x^n) +下面证明![](https://latex.codecogs.com/gif.latex?B(x)=xB(x)^2+1) +易得![](https://latex.codecogs.com/gif.latex?xB(x)^2=\sum_{i=1}^{\infty}\sum_{n=i}^{\infty}b_{i-1}b_{n-i}x^n) +对比![](https://latex.codecogs.com/gif.latex?B(x),&space;xB(x)^2+1)的 x 的各次系数,分别是 ![](https://latex.codecogs.com/gif.latex?b_k,a_{k}) +当 k=0, ![](https://latex.codecogs.com/gif.latex?a_k=1=b_k) 当 k>0 -$$a_{k} = \sum_{i=1}^{k}b_{i-1}b_{k-i} = b_k$$ -所以$B(x)=xB(x)^2+1$ +![](https://latex.codecogs.com/gif.latex?a_{k}&space;=&space;\sum_{i=1}^{k}b_{i-1}b_{k-i}&space;=&space;b_k) +所以![](https://latex.codecogs.com/gif.latex?B(x)=xB(x)^2+1) 由此解得 -$$B(x)=\frac{1-\sqrt{1-4x} }{2x}$$ +![](https://latex.codecogs.com/gif.latex?B(x)=\frac{1-\sqrt{1-4x}&space;}{2x}) 在点 x=0 处, 用泰勒公式得 -$$ -\begin{aligned} -\lim_{x\to 0}\sqrt{1-4x}&=1+\sum_{n=1}^{\infty}C_n^{\frac{1}{2}}{(-4)}^nx^n \\ -&=1+\sum_{n=1}^{\infty}\frac{(2n-3)!!{(-4x)}^n}{n!} -\end{aligned} -$$ +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;\lim_{x\to&space;0}\sqrt{1-4x}&=1+\sum_{n=1}^{\infty}C_n^{\frac{1}{2}}{(-4)}^nx^n&space;\\&space;&=1+\sum_{n=1}^{\infty}\frac{(2n-3)!!{(-4x)}^n}{n!}&space;\end{aligned}&space;) 所以对应系数 -$$ -\begin{aligned} -b_n&=\frac{1}{2}\frac{4^{n+1}(2n-1)!!}{2^{n+1}n!} \\ - &=\frac{C_{2n}^{n}}{n+1} -\end{aligned} -$$ +![](https://latex.codecogs.com/gif.latex?&space;\begin{aligned}&space;b_n&=\frac{1}{2}\frac{4^{n+1}(2n-1)!!}{2^{n+1}n!}&space;\\&space;&=\frac{C_{2n}^{n}}{n+1}&space;\end{aligned}&space;) 这个数叫做 `Catalan 数` ## 2.4. 好括号列 @@ -124,28 +109,26 @@ $$ * 若A是好括号列, 则 (A)是好括号列 ->充要条件: 好括号列 $\Longleftrightarrow$ 左右括号数相等, 且从左向右看, 看到的右括号数不超过左括号数 +>充要条件: 好括号列 ![](https://latex.codecogs.com/gif.latex?\Longleftrightarrow) 左右括号数相等, 且从左向右看, 看到的右括号数不超过左括号数 ->定理: 由 n个左括号,n个右括号组成的好括号列个数为$c(n)=\frac{C_{2n}^{n}}{n+1}$ +>定理: 由 n个左括号,n个右括号组成的好括号列个数为![](https://latex.codecogs.com/gif.latex?c(n)=\frac{C_{2n}^{n}}{n+1}) 证明: -由 n左n右组成的括号列有 $\frac{2n}{n!n!}=C_{2n}^{n}$个. - 设括号列$a_1a_2\ldots a_{2n}$为坏括号列, -由充要条件, 存在最小的 j, 使得$a_1a_2\ldots a_{j}$中右括号比左括号多一个, -由于是最小的 j, 所以 $a_j$为右括号, $a_{j+1}$为右括号 -把$a_{j+1}a_{j+2}\ldots a_{2n}$中的左括号变为右括号, 右变左,记为$\bar a_{j+1}\bar a_{j+2}\ldots \bar a_{2n}$ +由 n左n右组成的括号列有 ![](https://latex.codecogs.com/gif.latex?\frac{2n}{n!n!}=C_{2n}^{n})个. + 设括号列![](https://latex.codecogs.com/gif.latex?a_1a_2\ldots&space;a_{2n})为坏括号列, +由充要条件, 存在最小的 j, 使得![](https://latex.codecogs.com/gif.latex?a_1a_2\ldots&space;a_{j})中右括号比左括号多一个, +由于是最小的 j, 所以 ![](https://latex.codecogs.com/gif.latex?a_j)为右括号, ![](https://latex.codecogs.com/gif.latex?a_{j+1})为右括号 +把![](https://latex.codecogs.com/gif.latex?a_{j+1}a_{j+2}\ldots&space;a_{2n})中的左括号变为右括号, 右变左,记为![](https://latex.codecogs.com/gif.latex?\bar&space;a_{j+1}\bar&space;a_{j+2}\ldots&space;\bar&space;a_{2n}) -则括号列$a_1a_2\ldots a_{j}\bar a_{j+1}$为好括号列 -$a_1a_2\ldots a_{j}\bar a_{j+1}\bar a_{j+2}\ldots \bar a_{2n}$可好可坏,且有n-1个右,n+1个左, 共有$\frac{2n}{(n+1)!(n-1)!}=C_{2n}^{n+1}$个. +则括号列![](https://latex.codecogs.com/gif.latex?a_1a_2\ldots&space;a_{j}\bar&space;a_{j+1})为好括号列 +![](https://latex.codecogs.com/gif.latex?a_1a_2\ldots&space;a_{j}\bar&space;a_{j+1}\bar&space;a_{j+2}\ldots&space;\bar&space;a_{2n})可好可坏,且有n-1个右,n+1个左, 共有![](https://latex.codecogs.com/gif.latex?\frac{2n}{(n+1)!(n-1)!}=C_{2n}^{n+1})个. -所以坏括号列$a_1a_2\ldots a_{2n}$ 与括号列 $a_1a_2\ldots a_{j}\bar a_{j+1}\bar a_{j+2}\ldots \bar a_{2n}$, 有$\frac{2n}{(n+1)!(n-1)!}=C_{2n}^{n+1}$个 +所以坏括号列![](https://latex.codecogs.com/gif.latex?a_1a_2\ldots&space;a_{2n}) 与括号列 ![](https://latex.codecogs.com/gif.latex?a_1a_2\ldots&space;a_{j}\bar&space;a_{j+1}\bar&space;a_{j+2}\ldots&space;\bar&space;a_{2n}), 有![](https://latex.codecogs.com/gif.latex?\frac{2n}{(n+1)!(n-1)!}=C_{2n}^{n+1})个 那么好括号列有 -$$ -c(n)=C_{2n}^{n} - C_{2n}^{n+1} =\frac{C_{2n}^{n}}{n+1} -$$ +![](https://latex.codecogs.com/gif.latex?&space;c(n)=C_{2n}^{n}&space;-&space;C_{2n}^{n+1}&space;=\frac{C_{2n}^{n}}{n+1}&space;) >推论: n个字符,进栈出栈(出栈可以在栈不为空的时候随时进行), 则出栈序列有 c(n)种 @@ -184,7 +167,7 @@ Aho-Corasick automation,是在字典树上添加匹配失败边(失配指针), # 5. 平衡二叉树 -上面的二叉查找树不平衡,即经过多次插入,删除后, 其高度变化大, 不能保持$\Theta(n)$的性能 +上面的二叉查找树不平衡,即经过多次插入,删除后, 其高度变化大, 不能保持![](https://latex.codecogs.com/gif.latex?\Theta(n))的性能 而平衡二叉树就能. 平衡二叉树都是经过一些旋转操作, 使左右子树的结点高度相差不大,达到平衡 有如下几种 @@ -199,7 +182,7 @@ Aho-Corasick automation,是在字典树上添加匹配失败边(失配指针), ## 5.2. splayTree 伸展树, 它的特点是每次将访问的结点通过旋转旋转到根结点. -其实它并不平衡. 但是插入,查找,删除操作 的平摊时间是$O(logn)$ +其实它并不平衡. 但是插入,查找,删除操作 的平摊时间是![](https://latex.codecogs.com/gif.latex?O(logn)) 有三种旋转,下面都是将访问过的 x 旋转到 根部 ### 5.2.1. Zig-step @@ -216,7 +199,7 @@ Aho-Corasick automation,是在字典树上添加匹配失败边(失配指针), ## 5.4. treap -[前面提到](#21-随机构造的二叉查找树), 随机构造的二叉查找树高度为 $h=O(logn)$,以及在[算法 general](/alg-genral.html) 中说明了怎样 随机化(shuffle)一个给定的序列. +[前面提到](#21-随机构造的二叉查找树), 随机构造的二叉查找树高度为 ![](https://latex.codecogs.com/gif.latex?h=O(logn)),以及在[算法 general](/alg-genral.html) 中说明了怎样 随机化(shuffle)一个给定的序列. 所以,为了得到一个平衡的二叉排序树,我们可以将给定的序列随机化, 然后再进行构造二叉排序树. diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/README.md" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/README.md" index e1ede79..3b14b66 100644 --- "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/README.md" +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/README.md" @@ -1,4 +1,4 @@ # 课程主页 - [张昱-编译H](http://staff.ustc.edu.cn/~yuzhang/compiler/) -- [李诚-编译](http://staff.ustc.edu.cn/~chengli7/courses/compiler18/) +- [李诚-编译](http://staff.ustc.edu.cn/~chengli7/courses/compiler18/) [2019秋GitLab](http://210.45.114.30/gbxu/notice_board/issues/1) - [郑启龙-编译](http://staff.ustc.edu.cn/~qlzheng/compiler/) diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/README.md" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/README.md" new file mode 100644 index 0000000..5c65724 --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/README.md" @@ -0,0 +1,23 @@ +# 2019秋李诚老师编译原理Labs + +古宜民 17少 (https://github.com/ustcpetergu) + +队友:苏文治,朱凡 + + Labs for "Principles and Techniques of Compilers" course by Cheng Li, USTC 2019. + `lab1_lexical_analyzer`: Lab1, lexical analyzer, using flex + `lab2_syntax_analyzer`: Lab2, syntax analyzer, using bison and lab1, from source code to syntax tree + `lab3-0`: Warmup about LLVM code generation + `lab3-1`: The main CMinus Compiler: syntax tree to LLVM IR + `lab3-2`: Source code reading report for LLVM Pass(dce and adce) + `lab4`: RISC-V machine code generation and execution & LLVM RegAllocFast source code reading + +因为2019秋的Labs很多都是基于七位助教提供的框架补充内容/继续开发,很多Tutorial和Instruction均不是我们原创,并且当时项目目录结构就比较混乱,在我们的开发后更加混乱,想要运行代码有一定难度:所以这里在保持一学期项目完整度的情况下尽可能只放了我们原创的内容,包括主代码文件,工作和讨论记录,以及实验报告。 + +代码文件只能阅读,不具备运行条件。相比之下实验报告参考价值更大一些。每个lab的实验要求在实验报告里有总结。 + +学期后我整理了lab1、lab2、lab3-1的代码(词法分析,语法分析,语法树到IR)成为一整个可以比较方便地运行和继续开发(立了个flag)的repo,在[ustcpetergu/CminusC](https://github.com/ustcpetergu/CminusC)。Bug肯定是有的,但应该不多了(助教的样例测试分数98/100)。 + +该学期的课程主页:http://210.45.114.30/gbxu/notice_board/issues + + diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab1_lexical_analyzer/CMINUS.md" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab1_lexical_analyzer/CMINUS.md" new file mode 100644 index 0000000..c866ac7 --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab1_lexical_analyzer/CMINUS.md" @@ -0,0 +1,74 @@ +# C- +`C MINUS`是C语言的一个子集,该语言的语法在《编译原理与实践》第九章附录中有详细的介绍。 +## Lexical Conventions +1. 关键字 +`else if int return void while` +2. 专用符号 +`+ - * / < <= > >= == != = ; , ( ) [ ] { } /* */` +3. 标识符ID和整数NUM,通过下列正则表达式定义: +`ID=letter letter*` +`NUM=digit digit*` +`letter = a|...|z|A|...|Z` +`digit = 0|...|9` + +4. 注释用`/*...*/`表示,可以超过一行。注释不能嵌套。 +`/*...*/` + +> 思考 +> 1. 识别C-语言Token的DFA设计 +> 2. note that: [, ], 和 [] 是三种不同的tokens。[]用于声明数组类型,[]中间不得有空格。 + +## Syntax +1. program → declaration-list +2. declaration-list → declaration-list declaration | declaration +3. declaration → var-declaration | fun-declaration +4. var-declaration → type-specifier `ID` ; | type-specifier `ID` `[` `NUM` `]`; +5. type-specifier → `int` | `void` +6. fun-declaration → type-specifier `ID` `(`params`)` compound-stmt +7. params → param-list | `void` +8. param-list→ param-list , param | param +9. param → type-specifier `ID` | type-specifier `ID` `[]` +10. compound-stmt → `{` local-declarations statement-list `}` +11. local-declarations → local-declarations var-declaration | empty +12. statement-list → statement-list statement | empty +13. statement → expression-stmt | compound-stmt| selection-stmt +| iteration-stmt | return-stmt +14. expression-stmt → expression ; | ; +15. selection-stmt → `if` `(` expression `)` statement | `if` `(` expression `)` statement `else` statement +16. iteration-stmt → `while` `(` expression `)` statement +17. return-stmt → `return` ; | `return` expression ; +18. expression → var `=` expression | simple-expression +19. var → `ID` | `ID` `[` expression `]` +20. simple-expression → additive-expression relop additive- expression | additive-expression +21. relop → `<=` | `<` | `>` | `>=` | `==` | `!=` +22. additive-expression → additive-expression addop term | term +23. addop → `+` | `-` +24. term → term mulop factor | factor +25. mulop → `*` | `/` +26. factor → `(` expression `)` | var | call | `NUM` +27. call → `ID` `(` args `)` +28. args → arg-list | empty +29. arg-list → arg-list , expression | expression + +> 思考: +> 1. C-语言语法的特点,它的CFG + +# Sample Programs of C- +```c +int gcd (int u, int v) { /* calculate the gcd of u and v */ + if (v == 0) return u; + else return gcd(v, u - u / v * v); /* v,u-u/v*v is equals to u mod v*/ +} +int main() { + int x; int y; int temp; + x = 72; + y = 18; + if (x + +extern int fileno (FILE *__stream) __THROW __wur; + +#ifndef YYTOKENTYPE +#define YYTOKENTYPE +typedef enum cminus_token_type { + ERROR = 258, + ADD = 259, + SUB = 260, + MUL = 261, + DIV = 262, + LT = 263, + LTE = 264, + GT = 265, + GTE = 266, + EQ = 267, + NEQ = 268, + ASSIN = 269, + SEMICOLON = 270, + COMMA = 271, + LPARENTHESE = 272, + RPARENTHESE = 273, + LBRACKET = 274, + RBRACKET = 275, + LBRACE = 276, + RBRACE = 277, + ELSE = 278, + IF = 279, + INT = 280, + RETURN = 281, + VOID = 282, + WHILE = 283, + IDENTIFIER = 284, + NUMBER = 285, + ARRAY = 286, + LETTER = 287, + EOL = 288, + COMMENT = 289, + BLANK = 290 + +} Token; +#endif /* YYTOKENTYPE */ + +const char * strtoken(Token t); + +#endif /* lexical_analyzer.h */ diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab1_lexical_analyzer/lexical_analyzer.l" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab1_lexical_analyzer/lexical_analyzer.l" new file mode 100644 index 0000000..e87e2b5 --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab1_lexical_analyzer/lexical_analyzer.l" @@ -0,0 +1,188 @@ +%option noyywrap +%{ +/*****************声明和选项设置 begin*****************/ +#include +#include + +#include "lab1_lexical_analyzer/lexical_analyzer.h" +#include "common/common.h" +#include "syntax_tree/SyntaxTree.h" + +#ifndef LAB1_ONLY +#include "syntax_analyzer.h" +#endif + +myloc ml; +myloc* pmyloc = &ml; +#define YY_USER_ACTION \ + pmyloc->first_line = pmyloc->last_line; \ + pmyloc->first_column = pmyloc->last_column; \ + for(int i = 0; yytext[i] != '\0'; i++) { \ + if(yytext[i] == '\n') { \ + pmyloc->last_line++; \ + pmyloc->last_column = 1; \ + } \ + else { \ + pmyloc->last_column++; \ + } \ + } +/*****************end*****************/ + +void action(Token t) +{ +#ifndef LAB1_ONLY + // use actual number instead of just NUM identifier + /*if (t == NUMBER) {*/ + /*yylval.node = newSyntaxTreeNode("number:");*/ + /*strncat(yylval.node->name, yytext, 20);*/ + /*strncpy(yylval.node->name, yytext, 30);*/ + /*yylval.node->name = */ + /*}*/ + /*else {*/ + /*}*/ + yylval.node = newSyntaxTreeNode(strtoken(t)); + strncpy(yylval.node->name, yytext, 30); + /*printf("action string for tree: %s\n", yylval.node->name);*/ +#endif +} + +int lab1_only() +{ +#ifndef LAB1_ONLY + return 0; +#else + return 1; +#endif +} + +// Two patterns provided by TA +// identifierPattern [a-zA-Z][a-zA-Z]* + + +%} + +DIGIT [0-9] + /*NUM {DIGIT}+*/ +NUM (0|[1-9]{DIGIT}*) +LETTERS [a-zA-Z] +ID {LETTERS}+ + /*ID [a-zA-Z_][a-zA-Z0-9_]**/ +commentPattern "/*"([^\*]|(\*)*[^\*/])*(\*)*"*/" + +%% + + /****请在此补全所有flex的模式与动作 start******/ + +\n {if(lab1_only()) return EOL;} + /* comments */ + /* \/\*(\/?([^\*\/]|\n)*\*?([^\*\/]|\n)+\/?)**\*\/ {if(lab1_only()) return COMMENT;} */ +{commentPattern} {if(lab1_only()) return COMMENT;} + /* special symbols */ +\+ {action(ADD); return ADD;} +\- {action(SUB); return SUB;} +\* {action(MUL); return MUL;} +\/ {action(DIV); return DIV;} +\< {action(LT); return LT;} +\<= {action(LTE); return LTE;} +\> {action(GT); return GT;} +\>= {action(GTE); return GTE;} +== {action(EQ); return EQ;} +!= {action(NEQ); return NEQ;} += {action(ASSIN); return ASSIN;} +; {action(SEMICOLON); return SEMICOLON;} +, {action(COMMA); return COMMA;} +\( {action(LPARENTHESE); return LPARENTHESE;} +\) {action(RPARENTHESE); return RPARENTHESE;} +\[ {action(LBRACKET); return LBRACKET;} +\] {action(RBRACKET); return RBRACKET;} +\{ {action(LBRACE); return LBRACE;} +\} {action(RBRACE); return RBRACE;} +\[\] {action(ARRAY); return ARRAY;} + /* keywords */ +else {action(ELSE); return ELSE;} +if {action(IF); return IF;} +int {action(INT); return INT;} +return {action(RETURN); return RETURN;} +void {action(VOID); return VOID;} +while {action(WHILE); return WHILE;} + /* identifiers and numbers */ + /*{LETTERS} {action(LETTER); return LETTER;}*/ +{ID} {action(IDENTIFIER); return IDENTIFIER;} + /*{NUM} {yylval.intValue = atoi(yytext); action(NUMBER); return NUMBER;}*/ +{NUM} {action(NUMBER); return NUMBER;} + /* blank, do nothing */ +[ \t] {if(lab1_only()) return BLANK;} +. {action(ERROR); return ERROR;} + + + /**** end******/ +%% + +/// \brief analysize a *.cminus file +/// +/// \param input_file_name +/// \param output_file_name +/// \todo student should fill this function +void analyzer(char* input_file_name, char* output_file_name){ + char input_path[256] = "./testcase/"; + strcat(input_path, input_file_name); + char output_path[256] = "./tokens/"; + strcat(output_path, output_file_name); + // yyin is the input stream pointer + if(!(yyin = fopen(input_path,"r"))){ + printf("[ERR] No input file\n"); + exit(1); + } + // reinitialize position counter + pmyloc->first_line = pmyloc->first_column = pmyloc->last_line = pmyloc->last_column = 1; + printf("[START]: Read from: %s\n", input_file_name); + FILE *fp = fopen(output_path,"w+"); + int token; + // yylex(): entry point of lex, read yyin, return zero on end + while((token = yylex())){ + switch(token){ + case ERROR: + printf("[ERR]: unable to analysize %s at %d line, from %d to %d\n", yytext, + pmyloc->first_line, pmyloc->first_column, pmyloc->last_column); + fprintf(fp, "[ERR]: unable to analysize %s at %d line, from %d to %d\n", yytext, + pmyloc->first_line, pmyloc->first_column, pmyloc->last_column); + break; + case COMMENT: + /*printf("[INFO]: Comment found.\n");*/ + case BLANK: + /*printf("[INFO]: Blank found.\n");*/ + break; + case EOL: + break; + default : + /*fprintf(fp, "%s\t%d\t%d\t%d\t%d\n",yytext, token, lines, pos_start, pos_end);*/ + fprintf(fp, "%s\t%d\t%d\t%d\t%d\n",yytext, token, \ + pmyloc->first_line, pmyloc->first_column, pmyloc->last_column); + } + } + fclose(fp); + printf("[END]: Analysis completed.\n"); +} + + +/// \brief process all *.cminus file +/// +/// note that: use relative path for all i/o operations +/// process all *.cminus files under 'testcase' directory, +/// then create *.tokens files under 'tokens' directory +/// \todo student should fill this function +int lex_main(int argc, char **argv){ + char filename[50][256]; + char output_file_name[256]; + char suffix[] = ".tokens"; + char extension[] = ".cminus"; + int files_count = getAllTestcase(filename); + for(int i = 0; i < files_count; i++){ + // prepare output filename + strcpy(output_file_name, filename[i]); + strcpy(output_file_name + strlen(output_file_name) - strlen(extension), suffix); + analyzer(filename[i], output_file_name); + } + return 0; +} +/**************** end*************/ diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/SyntaxTree.c" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/SyntaxTree.c" new file mode 100644 index 0000000..45931b8 --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/SyntaxTree.c" @@ -0,0 +1,114 @@ +#include +#include + +#include "SyntaxTree.h" + +SyntaxTreeNode * newSyntaxTreeNodeNoName() +{ + return newSyntaxTreeNode(NULL); +} + +SyntaxTreeNode * newSyntaxTreeNode(const char * name) +{ + SyntaxTreeNode * newNode = (SyntaxTreeNode *)malloc(sizeof(SyntaxTreeNode)); + if (name) + strcpy(newNode->name, name); + else + newNode->name[0] = '\0'; + newNode->children_num = 0; + return newNode; +} + +SyntaxTreeNode * newSyntaxTreeNodeFromNum(const int num) +{ + SyntaxTreeNode * newNode = newSyntaxTreeNodeNoName(); + sprintf(newNode->name, "%d", num); + newNode->children_num = 0; + return newNode; +} + +int SyntaxTreeNode_AddChild(SyntaxTreeNode * parent, SyntaxTreeNode * child) +{ + if (!parent || !child) return -1; + parent->children[parent->children_num++] = child; + return parent->children_num; +} + +void deleteSyntaxTreeNodeNoRecur(SyntaxTreeNode * node) +{ + deleteSyntaxTreeNode(node, 0); +} + +void deleteSyntaxTreeNode(SyntaxTreeNode * node, int recursive) +{ + if (!node) return; + + int i; + if (recursive) { + for (i = 0; i < node->children_num; i++) { + deleteSyntaxTreeNode(node->children[i], 1); + } + } + free(node); +} + +SyntaxTree * newSyntaxTree() +{ + return (SyntaxTree *)malloc(sizeof(SyntaxTree)); +} + +void deleteSyntaxTree(SyntaxTree * tree) +{ + if (!tree) return; + + if (tree->root) { + deleteSyntaxTreeNode(tree->root, 1); + } + free(tree); +} + +void printSyntaxTreeNode(FILE * fout, SyntaxTreeNode * node, int level) +{ + // assume fout valid now + + // check if "node" empty pointer + if (!node) return; + + // print myself + int i; + for (i = 0; i < level; i++) { + fprintf(fout, "| "); + } + fprintf(fout, ">--%s %s\n", (node->children_num ? "+" : "*"), node->name); + + for (i = 0; i < node->children_num; i++) { + printSyntaxTreeNode(fout, node->children[i], level + 1); + } +} + +void printSyntaxTreeNodeGraphic(FILE* fout, SyntaxTreeNode* node) +{ + fprintf(fout, "svgling.draw_tree("); + printSyntaxTreeNodeGraphic1(fout, node); + fprintf(fout, ")\n"); +} + +void printSyntaxTreeNodeGraphic1(FILE* fout, SyntaxTreeNode* node) +{ + if (!node) return; + int i; + fprintf(fout, "(\"%s\"", node->name); + for (i = 0; i < node->children_num; i++) { + fprintf(fout, ", "); + printSyntaxTreeNodeGraphic1(fout, node->children[i]); + } + fprintf(fout, ")"); +} + +void printSyntaxTree(FILE * fout, SyntaxTree * tree) +{ + if (!fout) return; + + printSyntaxTreeNode(fout, tree->root, 0); +} + diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/gcdtreeshot.png" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/gcdtreeshot.png" new file mode 100644 index 0000000..cf5c79b Binary files /dev/null and "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/gcdtreeshot.png" differ diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/gcdtreesmall.png" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/gcdtreesmall.png" new file mode 100644 index 0000000..d37b030 Binary files /dev/null and "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/gcdtreesmall.png" differ diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/ifelsetree.png" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/ifelsetree.png" new file mode 100644 index 0000000..f28baa8 Binary files /dev/null and "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/ifelsetree.png" differ diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/lab2_report.md" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/lab2_report.md" new file mode 100644 index 0000000..784b76b --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/doc/lab2_report.md" @@ -0,0 +1,174 @@ +# Lab2 report + +Yimin Gu + +PB17000002 + +File created on 2019.10.9 + +Last modified 2019.10.15 + +## Main ideas & implementation + +The task of lab2 is to generate a syntax tree from C- source file using bison. + +The main process: + +``` +tokens analyzed from file by flex +| +tokens are given to bison +| +bison does conduction by rules, meanwhile building the tree by actions +| +print the tree, and misc. jobs +``` + +As the parser is going to get token stream from result generated by flex, I choose to let flex initialize tree nodes(more precisely, tree leaf tokens), and use bison action rules to generate other nodes and add those leaf tokens to the tree. + +I use union which contains a `SyntaxTree * node` to share data structure between bison and flex. For each valid token found by flex, a node(leaf) is created. For each rule like `A -> B C D` in bison, a node is created for `A`, and `B`, `C` and `D` are added as children of `A`. So after doing all the reduction, a whole syntax tree is generated, with `program` in the first statement containing the tree root. + +## Shift-reduce conflict in if-else statement + +The given syntax about C- contains a shift-reduce conflict (and bison gives a warning): + +selection-stmt → `if` `(` expression `)` statement | `if` `(` expression `)` statement `else` statement + +We don't know whether to shift in `else` or reduce using the first part of the rule. + +To solve this, we can figure out better rules(maybe adding more statements) or give the shift and reduce an priority. Here I used the method discussed on GitLab(by iBug and Ray-Lei) and [stackoverflow](https://stackoverflow.com/questions/12731922/reforming-the-grammar-to-remove-shift-reduce-conflict-in-if-then-else): tell the parser to shift in `else` when the conflict occurs. And `else` will be binded to the closest `if`. + +After this, the conflict is solved and we can see from the syntax tree that the behavior is same as expected. + +Picture: a part of a syntax tree, showing how `if() if() else` is parsed. + +![](./ifelsetree.png) + +## (Lamed) visualization + +To show the procedure of tree-building, the tree should be printed during analysis. I print the tree using the node for the left non-terminal as the tree root. So the tree at the current time is printed, and we can see how the tree grows when more reductions are made. But this is a really lamed solution, because during analysis, the tokens actually form a **forest** instead of a single **tree**, and printing the single tree only shows the newly analyzed fraction of the whole picture. + +And how to visualize the tree? I first tried LaTeX, but later find python to be a better tool. I used a package called `svgling` which can draw trees. I wrote a function to generate a python script and print those trees in the `svgling` format(using a modified function like `printSyntaxTreeNode`). Then run the python script in jupyter, and we can see all those(some of them really big) trees. Like the example `syntree/trees.ipynb` + +The result of the final tree is really good, as is shown below. + +To avoid messing up with existing code(and output), I defined macros TREE_GEN_TEXT and TREE_GEN_GRAPH, only when these macros are defined will the python scripts be generated. + +A shot of the final of the gcd.cminus tree(the original svg picture is more than 6000 pixel in width): + +![](./gcdtreeshot.png) + +First subtree in gcd: + +![](./gcdtreesmall.png) + + +## TODO & further improvement? + +(This is solved by introducing an extra function to judge whether LAB1_ONLY is defined and then choose to return token or not.) + +~~To avoid useless tokens like `COMMENT` or `NEWLINE`, I just remove actions which are related to these tokens in flex because I didn't find a better solution. So parts of the code in lab1 is modified and deleted, though I made backup, this makes the program somewhat less backward compatible.~~ + +Also, I didn't find any better way(after searching on the Internet and consulting students) to write the actions in bison(those to build tree) in an elegant way. You can find that the code in `syntax_analyzer.y` is really in bad condition, codes are repetitious and long thus difficult to maintain. Though recording editor macros and replacing with (complex) regular expression in VIM make the work easier, I still found this process disturbing. + +The visualization is lamed, and better way is needed, though I think further work(maybe even animation) on this won't be easy. + +I feel that my whole project is a little bit messy, but don't know what to do about it :-( + +**An attempted git repo cleanup** + +I misunderstood the instruction in lab1 and put the labs in my homework repository. So choose to rename the repository and remove those homework folders and commits. This turns out to be very hard. I'm not good enough at git to handle these rebase and cherrypick, even modifing an old commit message turns out to be extremely hard for me. + +What I can do is to delete all HW* folders using filter-branch. Now the repo is cleaner but there are still garbage here and there, maybe half a sentence in a commit message or an unexpected merge. + +## Final result & summary + +So the result is good: required parts are done, and at least a visualized tree can be seen. + +Take the `gcd` as an example: + +The syntax tree is as expected. + +``` +>--+ program +| >--+ declaration-list +| | >--+ declaration-list +| | | >--+ declaration +| | | | >--+ fun-declaration +| | | | | >--+ type-specifier +| | | | | | >--* int +| | | | | >--* gcd +| | | | | >--* ( +| | | | | >--+ params +| | | | | | >--+ param-list +| | | | | | | >--+ param-list +| | | | | | | | >--+ param +| | | | | | | | | >--+ type-specifier +| | | | | | | | | | >--* int +| | | | | | | | | >--* u +| | | | | | | >--* , +| | | | | | | >--+ param +| | | | | | | | >--+ type-specifier +| | | | | | | | | >--* int +| | | | | | | | >--* v +| | | | | >--* ) +| | | | | >--+ compound-stmt +| | | | | | >--* { +| | | | | | >--+ local-declarations +| | | | | | | >--* epsilon +| | | | | | >--+ statement-list +| | | | | | | >--+ statement-list +| | | | | | | | >--* epsilon +| | | | | | | >--+ statement +| | | | | | | | >--+ selection-stmt +| | | | | | | | | >--* if +| | | | | | | | | >--* ( +| | | | | | | | | >--+ expression +| | | | | | | | | | >--+ simple-expression +| | | | | | | | | | | >--+ additive-expression +| | | | | | | | | | | | >--+ term +| | | | | | | | | | | | | >--+ factor +| | | | | | | | | | | | | | >--+ var +| | | | | | | | | | | | | | | >--* v +| | | | | | | | | | | >--+ relop +| | | | | | | | | | | | >--* == +| | | | | | | | | | | >--+ additive-expression +| | | | | | | | | | | | >--+ term +| | | | | | | | | | | | | >--+ factor +| | | | | | | | | | | | | | >--* 0 +| | | | | | | | | >--* ) +| | | | | | | | | >--+ statement +| | | | | | | | | | >--+ return-stmt +| | | | | | | | | | | >--* return +| | | | | | | | | | | >--+ expression +| | | | | | | | | | | | >--+ simple-expression +(following output omitted) +``` + +And all the trees generated can be seen in `treegraph/trees.ipynb`. (Seems the trees can not be seen when the ipynb is viewed directly in gitlab, viewing in pycharm or jupyter is fine) + +In this lab I continuously met problems about C header file and variable declaration/definition. Some of these is caused by my unfamiliar with cmake and misunderstanding of TAs' code, and most others is because I'm not good at dealing with these kind of problems. After this, I feel my debugging skill is better. + +Also, I'm more confident when merging git conflicts. + +## Feedback? + +[Deleted] + +# Timing + +~1.5h get familiar with what to do + +~1h learn bison + +~0.5h try to learn cmake + +~0.5h modify the flex parts + +~1.5h write the bison parts(including solving bison problems) + +~1h solving small problems and debugging + +~2h visualization + +~3h code cleanup, and report. \ No newline at end of file diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/syntax_analyzer.y" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/syntax_analyzer.y" new file mode 100644 index 0000000..1324173 --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab2_syntax_analyzer/syntax_analyzer.y" @@ -0,0 +1,252 @@ +%{ +#include +#include +#include + +#include "common/common.h" +#include "syntax_tree/SyntaxTree.h" + +#include "lab1_lexical_analyzer/lexical_analyzer.h" + +// uncomment this to generate tree-generation python files +/*#define TREE_GEN_GRAPH*/ +/*#define TREE_GEN_TEXT*/ + +// external functions from lex +extern int yylex(); +extern int yyparse(); +extern int yyrestart(); +extern FILE * yyin; + +// external variables from lexical_analyzer module +extern myloc* pmyloc; +/*extern int lines;*/ +extern char * yytext; + +// Global syntax tree. +SyntaxTree * gt; + +void yyerror(const char * s); + +void callback(int p, void* ptr) +{ +#ifdef TREE_GEN_TEXT + if (p == 1) { + printSyntaxTreeNode(stdout, (SyntaxTreeNode*)ptr, 0); + } +#endif +#ifdef TREE_GEN_GRAPH + static FILE* fout; + static char* output; + static int counter; + if (p == 1) { + printSyntaxTreeNodeGraphic(fout, (SyntaxTreeNode*)ptr); + /*fprintf(fout, "treefromsyntaxtree.get_svg().saveas(\"%s_%d.svg\")\n", output, ++counter);*/ + } + else if (p == 0) { + printf("[DEBUG TREE] start new file...\n"); + counter = 0; + char outputpathtree[256] = "./treegraph/"; + output = ptr; + strcat(outputpathtree, output); + strcat(outputpathtree, ".py"); + printf("[DEBUG TREE] generate python script %s...\n", outputpathtree); + fout = fopen(outputpathtree, "w"); + fprintf(fout, "#!/usr/bin/env python3\nfrom IPython.core.interactiveshell import InteractiveShell\nInteractiveShell.ast_node_interactivity = \"all\"\nimport svgling\n"); + } + else if (p == -1) { + printf("[DEBUG TREE] done.\n"); + fclose(fout); + } +#endif + return; +} +%} + +%union { + SyntaxTreeNode * node; +} + +%token ERROR ADD SUB MUL DIV LT LTE GT GTE EQ NEQ ASSIN SEMICOLON COMMA LPARENTHESE RPARENTHESE LBRACKET RBRACKET LBRACE RBRACE ELSE IF INT RETURN VOID WHILE ID NUMBER ARRAY LETTER EOL COMMENT BLANK +%nonassoc LOWER_THAN_ELSE +%nonassoc ELSE + +/********** TODO: Your token definition here ***********/ + +/* compulsory starting symbol */ +%start program + +%% +/*************** TODO: Your rules here *****************/ +program : declaration_list {gt->root = newSyntaxTreeNode("program"); SyntaxTreeNode_AddChild(gt->root, $1);callback(1, $$);} + ; +declaration_list : declaration_list declaration {$$ = newSyntaxTreeNode("declaration-list"); SyntaxTreeNode_AddChild($$, $1); SyntaxTreeNode_AddChild($$, $2);callback(1, $$);} + | declaration {$$ = newSyntaxTreeNode("declaration-list"); SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +declaration : var_declaration {$$ = newSyntaxTreeNode("declaration");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | fun_declaration {$$ = newSyntaxTreeNode("declaration");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +var_declaration : type_specifier ID SEMICOLON {$$ = newSyntaxTreeNode("var-declaration"); SyntaxTreeNode_AddChild($$, $1); SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);callback(1, $$);} + | type_specifier ID LBRACKET NUMBER RBRACKET SEMICOLON {$$ = newSyntaxTreeNode("var-declaration"); SyntaxTreeNode_AddChild($$, $1); SyntaxTreeNode_AddChild($$, $2); SyntaxTreeNode_AddChild($$, $3); SyntaxTreeNode_AddChild($$, $4);SyntaxTreeNode_AddChild($$, $5);SyntaxTreeNode_AddChild($$, $6);callback(1, $$);} + ; +type_specifier : INT {$$ = newSyntaxTreeNode("type-specifier"); SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | VOID {$$ = newSyntaxTreeNode("type-specifier"); SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +fun_declaration : type_specifier ID LPARENTHESE params RPARENTHESE compound_stmt {$$ = newSyntaxTreeNode("fun-declaration"); SyntaxTreeNode_AddChild($$, $1); SyntaxTreeNode_AddChild($$, $2); SyntaxTreeNode_AddChild($$, $3); SyntaxTreeNode_AddChild($$, $4); SyntaxTreeNode_AddChild($$, $5); SyntaxTreeNode_AddChild($$, $6);callback(1, $$);} + ; +params : param_list {$$ = newSyntaxTreeNode("params"); SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | VOID {$$ = newSyntaxTreeNode("params"); SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +param_list : param_list COMMA param {$$ = newSyntaxTreeNode("param-list"); SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);callback(1, $$);} + | param {$$ = newSyntaxTreeNode("param-list"); SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +param : type_specifier ID {$$ = newSyntaxTreeNode("param");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);callback(1, $$);} + | type_specifier ID ARRAY {$$ = newSyntaxTreeNode("param");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);callback(1, $$);} + ; +compound_stmt : LBRACE local_declarations statement_list RBRACE {$$ = newSyntaxTreeNode("compound-stmt");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);SyntaxTreeNode_AddChild($$, $4);callback(1, $$);} + ; +local_declarations : local_declarations var_declaration {$$ = newSyntaxTreeNode("local-declarations");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);callback(1, $$);} + | epsilon {$$ = newSyntaxTreeNode("local-declarations");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +statement_list : statement_list statement {$$ = newSyntaxTreeNode("statement-list");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);callback(1, $$);} + | epsilon {$$ = newSyntaxTreeNode("statement-list");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +statement: expression_stmt {$$ = newSyntaxTreeNode("statement");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | compound_stmt {$$ = newSyntaxTreeNode("statement");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | selection_stmt {$$ = newSyntaxTreeNode("statement");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | iteration_stmt {$$ = newSyntaxTreeNode("statementt");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | return_stmt {$$ = newSyntaxTreeNode("statement");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +expression_stmt : expression SEMICOLON {$$ = newSyntaxTreeNode("expression-stmt");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);callback(1, $$);} + | SEMICOLON {$$ = newSyntaxTreeNode("expression-stmt");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +selection_stmt : IF LPARENTHESE expression RPARENTHESE statement %prec LOWER_THAN_ELSE {$$ = newSyntaxTreeNode("selection-stmt");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);SyntaxTreeNode_AddChild($$, $4);SyntaxTreeNode_AddChild($$, $5);callback(1, $$);} + | IF LPARENTHESE expression RPARENTHESE statement ELSE statement {$$ = newSyntaxTreeNode("selection-stmt");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);SyntaxTreeNode_AddChild($$, $4);SyntaxTreeNode_AddChild($$, $5);SyntaxTreeNode_AddChild($$, $6);SyntaxTreeNode_AddChild($$, $7);callback(1, $$);} + ; +iteration_stmt : WHILE LPARENTHESE expression RPARENTHESE statement {$$ = newSyntaxTreeNode("iteration-stmt");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);SyntaxTreeNode_AddChild($$, $4);SyntaxTreeNode_AddChild($$, $5);callback(1, $$);} + ; +return_stmt : RETURN SEMICOLON {$$ = newSyntaxTreeNode("return-stmt");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);callback(1, $$);} + | RETURN expression SEMICOLON {$$ = newSyntaxTreeNode("return-stmt");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);callback(1, $$);} + ; +expression : var ASSIN expression {$$ = newSyntaxTreeNode("expression");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);callback(1, $$);} + | simple_expression {$$ = newSyntaxTreeNode("expression");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +var : ID {$$ = newSyntaxTreeNode("var");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | ID LBRACKET expression RBRACKET {$$ = newSyntaxTreeNode("var");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);SyntaxTreeNode_AddChild($$, $4);callback(1, $$);} + ; +simple_expression : additive_expression relop additive_expression {$$ = newSyntaxTreeNode("simple-expression");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);callback(1, $$);} + | additive_expression {$$ = newSyntaxTreeNode("simple-expression");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +relop : LTE {$$ = newSyntaxTreeNode("relop");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | LT {$$ = newSyntaxTreeNode("relop");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | GT {$$ = newSyntaxTreeNode("relop");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | GTE {$$ = newSyntaxTreeNode("relop");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | EQ {$$ = newSyntaxTreeNode("relop");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | NEQ {$$ = newSyntaxTreeNode("relop");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +additive_expression : additive_expression addop term {$$ = newSyntaxTreeNode("additive-expression");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);callback(1, $$);} + | term {$$ = newSyntaxTreeNode("additive-expression");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +addop : ADD {$$ = newSyntaxTreeNode("addop");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | SUB {$$ = newSyntaxTreeNode("addop");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +term : term mulop factor {$$ = newSyntaxTreeNode("term");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);callback(1, $$);} + | factor {$$ = newSyntaxTreeNode("term");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +mulop : MUL {$$ = newSyntaxTreeNode("mulop");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | DIV {$$ = newSyntaxTreeNode("mulop");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +factor : LPARENTHESE expression RPARENTHESE {$$ = newSyntaxTreeNode("factor");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);callback(1, $$);} + | var {$$ = newSyntaxTreeNode("factor");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | call {$$ = newSyntaxTreeNode("factor");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | NUMBER {$$ = newSyntaxTreeNode("factor");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +call : ID LPARENTHESE args RPARENTHESE {$$ = newSyntaxTreeNode("call");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);SyntaxTreeNode_AddChild($$, $4);callback(1, $$);} + ; +args : arg_list {$$ = newSyntaxTreeNode("args");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + | epsilon {$$ = newSyntaxTreeNode("args");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +arg_list : arg_list COMMA expression {$$ = newSyntaxTreeNode("arg-list");SyntaxTreeNode_AddChild($$, $1);SyntaxTreeNode_AddChild($$, $2);SyntaxTreeNode_AddChild($$, $3);callback(1, $$);} + | expression {$$ = newSyntaxTreeNode("arg-list");SyntaxTreeNode_AddChild($$, $1);callback(1, $$);} + ; +epsilon : {$$ = newSyntaxTreeNode("epsilon");callback(1, $$);} + ; + +%% + +void yyerror(const char * s) +{ + fprintf(stderr, "%s:%d syntax error for %s\n", s, pmyloc->first_line, yytext); +} + +/// \brief Syntax analysis from input file to output file +/// +/// \param input basename of input file +/// \param output basename of output file +void syntax(const char * input, const char * output) +{ + gt = newSyntaxTree(); + + char inputpath[256] = "./testcase/"; + char outputpath[256] = "./syntree/"; + strcat(inputpath, input); + strcat(outputpath, output); + + if (!(yyin = fopen(inputpath, "r"))) { + fprintf(stderr, "[ERR] Open input file %s failed.", inputpath); + exit(1); + } + yyrestart(yyin); + printf("[START]: Syntax analysis start for %s\n", input); + FILE * fp = fopen(outputpath, "w+"); + if (!fp) return; + + // reinitialize position counter + pmyloc->first_line = pmyloc->first_column = pmyloc->last_line = pmyloc->last_column = 1; +#ifdef TREE_GEN_GRAPH + callback(0, output); +#endif + + // yyerror() is invoked when yyparse fail. If you still want to check the return value, it's OK. + // `while (!feof(yyin))` is not needed here. We only analyze once. + // + // If error occurs when parsing, nothing will be printed into output file, but tree data will still + // availiable in stdout or tree file + if ( yyparse() != 0 ) { + printf("[ERR] Error parsing %s. Abort. \n", input); + } + else { + printf("[OUTPUT] Printing tree to output file %s\n", outputpath); + printSyntaxTree(fp, gt); + deleteSyntaxTree(gt); + gt = 0; + printf("[END] Syntax analysis end for %s\n", input); + } + +#ifdef TREE_GEN_GRAPH + callback(-1, NULL); +#endif + fclose(fp); +} + +/// \brief starting function for testing syntax module. +/// +/// Invoked in test_syntax.c +int syntax_main(int argc, char ** argv) +{ +/*#ifdef YYDEBUG*/ + /*extern int yydebug;*/ + /*yydebug = 1;*/ +/*#endif*/ + char filename[50][256]; + char output_file_name[256]; + char suffix[] = ".syntax_tree"; + char extension[] = ".cminus"; + int fn = getAllTestcase(filename); + for (int i = 0; i < fn; i++) { + strcpy(output_file_name, filename[i]); + strcpy(output_file_name + strlen(output_file_name) - strlen(extension), suffix); + syntax(filename[i], output_file_name); + } + return 0; +} diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/assign_generator.cpp" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/assign_generator.cpp" new file mode 100644 index 0000000..396deb3 --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/assign_generator.cpp" @@ -0,0 +1,43 @@ +#include +//#include +//#include +//#include +//#include + + +#include +#include + +#ifdef DEBUG +#define DEBUG_OUTPUT std::cout << __LINE__ << std::endl; +#else +#define DEBUG_OUTPUT +#endif + +using namespace llvm; +#define CONST(num) \ + ConstantInt::get(context, APInt(32, num)) + +int main() +{ + LLVMContext context; + Type *TYPE32 = Type::getInt32Ty(context); + IRBuilder<> builder(context); + auto module = new Module("assign", context); + auto mainFunc = Function::Create( + FunctionType::get(TYPE32, false), + GlobalValue::LinkageTypes::ExternalLinkage, + "main", module); + // entry: + auto bb = BasicBlock::Create(context, "entry", mainFunc); + builder.SetInsertPoint(bb); + // a = 1 + auto aAlloca = builder.CreateAlloca(TYPE32); + builder.CreateStore(CONST(1), aAlloca); + auto aLoad = builder.CreateLoad(aAlloca); + // ret a + builder.CreateRet(aLoad); + module->print(outs(), nullptr); + delete module; + return 0; +} diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/assign_hand.ll" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/assign_hand.ll" new file mode 100644 index 0000000..6ff627e --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/assign_hand.ll" @@ -0,0 +1,18 @@ +; int main(){ +; int a; +; a = 1; +; return a; +; } + +; ModuleID = 'assign' +source_filename = "assign" + +define i32 @main() { +entry: + ; store the number 1 + %0 = alloca i32 + store i32 1, i32* %0 + ; load & prepare for return + %1 = load i32, i32* %0 + ret i32 %1 +} diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/call_generator.cpp" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/call_generator.cpp" new file mode 100644 index 0000000..fcbce55 --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/call_generator.cpp" @@ -0,0 +1,58 @@ +#include + + +#include +#include + +#ifdef DEBUG +#define DEBUG_OUTPUT std::cout << __LINE__ << std::endl; +#else +#define DEBUG_OUTPUT +#endif + +using namespace llvm; +#define CONST(num) \ + ConstantInt::get(context, APInt(32, num)) + +int main() +{ + LLVMContext context; + Type *TYPE32 = Type::getInt32Ty(context); + IRBuilder<> builder(context); + auto module = new Module("call", context); + auto mainFunc = Function::Create( + FunctionType::get(TYPE32, false), + GlobalValue::LinkageTypes::ExternalLinkage, + "main", module); + auto calleeFunc = Function::Create( + FunctionType::get(TYPE32, TYPE32, false), + GlobalValue::LinkageTypes::ExternalLinkage, + "callee", module); + // calleeFunc + auto bb = BasicBlock::Create(context, "entry", calleeFunc); + builder.SetInsertPoint(bb); + auto aAlloca = builder.CreateAlloca(TYPE32); + // the first and only arg + auto arg = calleeFunc->arg_begin(); + builder.CreateStore(arg, aAlloca); + auto aLoad = builder.CreateLoad(aAlloca); + // return 2 * A + auto resultRet = builder.CreateNSWMul(CONST(2), aLoad); + builder.CreateRet(resultRet); + builder.SetInsertPoint(bb); + // mainFunc + // entry: + bb = BasicBlock::Create(context, "entry", mainFunc); + builder.SetInsertPoint(bb); + // prepare 10 (a) + aAlloca = builder.CreateAlloca(TYPE32); + builder.CreateStore(CONST(10), aAlloca); + // call with 10 & ret + aLoad = builder.CreateLoad(aAlloca); + auto call = builder.CreateCall(calleeFunc, aLoad); + builder.CreateRet(call); + builder.ClearInsertionPoint(); + module->print(outs(), nullptr); + delete module; + return 0; +} diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/call_hand.ll" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/call_hand.ll" new file mode 100644 index 0000000..b951544 --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/call_hand.ll" @@ -0,0 +1,32 @@ +; int callee(int a){ +; return 2 * a; +; } +; int main(){ +; return callee(10); +; } + +; ModuleID = 'call_hand' +source_filename = "call_hand" + +define i32 @callee(i32) { +entry: + ; %0 contains the parameter + %1 = alloca i32 + store i32 %0, i32* %1 + %2 = load i32, i32* %1 + ; *2 + %3 = mul nsw i32 %2, 2 + ; return + ret i32 %3 +} + +define i32 @main() { +entry: + ; load 10 + %0 = alloca i32 + store i32 10, i32* %0 + %1 = load i32, i32* %0 + ; call with 10 + %2 = call i32 @callee(i32 %1) + ret i32 %2 +} diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/doc/lab3-0_report.md" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/doc/lab3-0_report.md" new file mode 100644 index 0000000..3c03b32 --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/doc/lab3-0_report.md" @@ -0,0 +1,126 @@ +## lab3-0 Report + +Yimin Gu + +PB17000002 + +### Requirements + +In my understanding, this lab breaks into three main parts: + +- Setup environment: Compile LLVM, setup auto-completion plugins, ... +- Translate C(minus) to LLVM IR by hand. +- Translate by CPP + +### My implementation + +#### Environment setup + +As I've compiled LinuxFromScratch before, I think the compiling process should not be difficult for me. But as I met a problem(described below), the process turns out to be painful, I have to use single thread despite my (relatively) powerful laptop, and the compiling needs more than 3 hours. + +About auto-completion plugins, I use [CoC](https://github.com/neoclide/coc.nvim) for C++ and [TabNine](https://github.com/zxqfl/TabNine) for other code in (N)Vim. It "makes my neovim as smart as VSCode". I also used `rhysd/vim-llvm` for LLVM IR syntax highlighting. + +#### Manual translation + +**assign** + +This is quite simple, only one basic block(`entry`). Just allocate a i32 memory unit save the number 1 to it, load to a register, and return the value in the register. + +``` + %0 = alloca i32 + store i32 1, i32* %0 + %1 = load i32, i32* %0 + ret i32 %1 +``` + +**if** + +The if program has three basic blocks: `entry`, `trueBB` and `falseBB`. The `trueBB` and `fasleBB` just return a certain value, same as the **assign** case. + +And the `entry` block setup two variables, compare them, and do a conditional jump with the `br` command. + +Compare and save the compare result: + +``` + %4 = icmp sgt i32 %2, %3 +``` + +Conditional jump using the result of the compare: + +``` + br i1 %4, label %trueBB, label %falseBB +``` + +**while** + +While is actually the same as **if**, only with some extra conditional jump. + +My solution is: + +``` +while(condition) + something +others +``` + +translates to: + +``` +if(condition) goto trueBB else goto endd +trueBB: + something + if(condition) goto trueBB else goto endd +endd: + others +``` + +There are multiple ways to do this, and later I found that a simpler way is turn **if** to : + +``` +trueBB: + if(!condition) goto endd + something + goto trueBB +endd: + others +``` + +which only need to write `condition` once. + +**call** + +In **call** I need to define another function. And other parts are the same as the main function. And it can be inferred that function arguments are in `%0, %1, ...` + +#### CPP translation + +As I already wrote the manual translation code, turning these code into LLVM code is not difficult. + +The process is: + +New module and function => create basic blocks => set insert point => builder.Createxxx => go on to next insert point => ... => end => print output + +The only difficult points is the **call** program. In TA's code a vector is used as function call argument type and `function->arg_begin(), function->arg_end()` are used to get arguments. But there is only one argument in the call program. So using a simple TYPE32 as argument type is enough and the `function->arg_begin()` will contain the argument. + +By the way, I found that only `` is required, other header files are not needed. + +### Difficulties, solved and unsolved + +Before actual coding, I spent several hour just to make the editor plugin working. Finally I found CoC satisfying, though I still need to manually write a `compile_commands.json` to let the plugin know where are the header files. + +A small problem is the ID of registers in IR must be continuous: you can't use `%2` when `%1` is not in use. This makes coding a little harder: if I want to add a register at the first of the program, many register IDs need to be changed. + +**An unsolved problem** + +I met a problem when compiling LLVM. My configuration is: + +Compiling instructions are the same as TA's LLVM debug. Using 16 threads at beginning, 2 threads at the last stage. Interrupted several times(including force reboot) during compiling. Then the **compiling** succeeded but **installation** failed: I got the error same as [this](https://stackoverflow.com/questions/39887926/llvm-clang-installation-fails): `file INSTALL cannot find "/home/user_dir/src/llvm/build/bin/clang".` + +But I didn't find any solution. This happened **twice**. + +Then I compile with single thread `make install` without `-jN`, and everything works fine, no problem occurred. I don't know what's going on. + +### Summary + +First, I've never compiled such a big and resource hungry program. And the time spent on compiling and setting up editor plugins is nearly as long as time spent on actual coding. So I think next time I should focus on code itself instead of spending infinite amount time on tweaking editors. + +Also, this lab makes me feel more confident when dealing with assembly-like code and low level coding. \ No newline at end of file diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/doc/team.txt" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/doc/team.txt" new file mode 100644 index 0000000..8701059 --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/doc/team.txt" @@ -0,0 +1,3 @@ +PB17000002 古宜民(队长) +PB16001837 朱凡 +PB15081586 苏文治 diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/gcd_ta.ll" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/gcd_ta.ll" new file mode 100644 index 0000000..6724b00 --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\222\214\346\212\200\346\234\257/labs/2019-licheng/lab3-0/gcd_ta.ll" @@ -0,0 +1,60 @@ +; ModuleID = 'gcd' +source_filename = "gcd" + +define i32 @gcd(i32, i32) { +entry: + %2 = alloca i32 + %3 = alloca i32 + %4 = alloca i32 + store i32 %0, i32* %3 + store i32 %1, i32* %4 + %5 = load i32, i32* %4 + %6 = icmp eq i32 %5, 0 + br i1 %6, label %trueBB, label %falseBB + +trueBB: ; preds = %entry + %7 = load i32, i32* %3 + store i32 %7, i32* %2 + br label %14 + +falseBB: ; preds = %entry + %8 = load i32, i32* %3 + %9 = load i32, i32* %4 + %10 = sdiv i32 %8, %9 + %11 = mul nsw i32 %10, %9 + %12 = sub nsw i32 %8, %11 + %13 = call i32 @gcd(i32 %9, i32 %12) + store i32 %13, i32* %2 + br label %14 + +;