diff --git a/.direnv/bin/nix-direnv-reload b/.direnv/bin/nix-direnv-reload new file mode 100755 index 0000000..e382b63 --- /dev/null +++ b/.direnv/bin/nix-direnv-reload @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -e +if [[ ! -d "/Users/airhorns/Code/superflected" ]]; then + echo "Cannot find source directory; Did you move it?" + echo "(Looking for "/Users/airhorns/Code/superflected")" + echo 'Cannot force reload with this script - use "direnv reload" manually and then try again' + exit 1 +fi + +# rebuild the cache forcefully +_nix_direnv_force_reload=1 direnv exec "/Users/airhorns/Code/superflected" true + +# Update the mtime for .envrc. +# This will cause direnv to reload again - but without re-building. +touch "/Users/airhorns/Code/superflected/.envrc" + +# Also update the timestamp of whatever profile_rc we have. +# This makes sure that we know we are up to date. +touch -r "/Users/airhorns/Code/superflected/.envrc" "/Users/airhorns/Code/superflected/.direnv"/*.rc diff --git a/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc new file mode 100644 index 0000000..3720c12 --- /dev/null +++ b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc @@ -0,0 +1,2027 @@ +unset shellHook +PATH=${PATH:-} +nix_saved_PATH="$PATH" +XDG_DATA_DIRS=${XDG_DATA_DIRS:-} +nix_saved_XDG_DATA_DIRS="$XDG_DATA_DIRS" +AR='ar' +export AR +AS='as' +export AS +BASH='/nix/store/sk8z3kdy6iaky6sg972k6fkh3iw2rn3d-bash-5.2p37/bin/bash' +CC='clang' +export CC +CONFIG_SHELL='/nix/store/sk8z3kdy6iaky6sg972k6fkh3iw2rn3d-bash-5.2p37/bin/bash' +export CONFIG_SHELL +CXX='clang++' +export CXX +DEVELOPER_DIR='/nix/store/amdympl4rz7kj93j82cva60v8007n4nv-apple-sdk-11.3' +export DEVELOPER_DIR +HOSTTYPE='aarch64' +HOST_PATH='/nix/store/iwbpxcjz1s816d80sqg0mxg5p8m0dqak-libiconv-107/bin:/nix/store/5g6np23z9q7vwwp1s5pxkgn8f8wrmihh-coreutils-9.5/bin:/nix/store/zxz2b4dlg9zz8dcrwa2my1bpyxpfcchj-findutils-4.10.0/bin:/nix/store/xnm74pr7sl0jvn2q8fcr4jy3vrdgyqrn-diffutils-3.10/bin:/nix/store/9m372k9wy0f9aj54zhvsr65w2p9ndwnj-gnused-4.9/bin:/nix/store/ay0r3wrwbv5rq3mg3vhla045yjr49gka-gnugrep-3.11/bin:/nix/store/5q48fvg6grf5zsk106cm0k0hbfc1dfp2-gawk-5.3.1/bin:/nix/store/41dh2jr0d4ixcbjvkw72hqvrj0kv3mfh-gnutar-1.35/bin:/nix/store/jnnmwj5nsh4y8avg72q23nshq5z74pck-gzip-1.13/bin:/nix/store/5vs5hn675fwynba3didxxyvk8v0ji2bl-bzip2-1.0.8-bin/bin:/nix/store/0gqbh56qwj0cxmvl7dajic9mkbc26ilc-gnumake-4.4.1/bin:/nix/store/sk8z3kdy6iaky6sg972k6fkh3iw2rn3d-bash-5.2p37/bin:/nix/store/i8yd551zdvdx0gg9mxg5ky6znqaflnkd-patch-2.7.6/bin:/nix/store/kv4wl884saw5jjch5kg4zvcrpff6dlh9-xz-5.6.3-bin/bin:/nix/store/92imkakl854dfvqjl1z8jmsxjrg1mh6f-file-5.45/bin' +export HOST_PATH +IFS=' +' +IN_NIX_SHELL='impure' +export IN_NIX_SHELL +LD='ld' +export LD +LD_DYLD_PATH='/usr/lib/dyld' +export LD_DYLD_PATH +LINENO='76' +MACHTYPE='aarch64-apple-darwin24.1.0' +MACOSX_DEPLOYMENT_TARGET='11.0' +export MACOSX_DEPLOYMENT_TARGET +NIX_APPLE_SDK_VERSION='110300' +export NIX_APPLE_SDK_VERSION +NIX_BINTOOLS='/nix/store/jqy6x4li0s729q6q97qmzrqwjfi567bv-cctools-binutils-darwin-wrapper-1010.6' +export NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_apple_darwin='1' +export NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_BUILD_CORES='16' +export NIX_BUILD_CORES +NIX_CC='/nix/store/v39c0h6xv6hvki2k1bsyp5n090q8y2bp-clang-wrapper-16.0.6' +export NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_aarch64_apple_darwin='1' +export NIX_CC_WRAPPER_TARGET_HOST_aarch64_apple_darwin +NIX_CFLAGS_COMPILE=' -frandom-seed=cizdhh1hs3 -isystem /nix/store/pxc3jga6jqr1mdjw1abmxqp95pz69xfq-bash-5.2p37-dev/include -isystem /nix/store/3r50cvcf5d7fahnkx4nkr2nk3h377h4s-nodejs-22.10.0/include -isystem /nix/store/9grahx8677nlgbx3yfiggibw335lkgfr-nodejs-20.18.0/include -isystem /nix/store/0mmz5i705116bfykc7i1r9jxqwyghj2a-libcxx-16.0.6-dev/include -isystem /nix/store/v0flb3xpcrd9br92ffjl3ba3ir40l6vb-compiler-rt-libc-16.0.6-dev/include -isystem /nix/store/gpm8lxlqya85j5pnp8q2q956qflpdxix-libiconv-107-dev/include -isystem /nix/store/nawyskckh9qamyqjypkfrqyy4qz16asb-libresolv-83-dev/include -isystem /nix/store/14nh7h7pjj1zp1rc8i69b7fv0yrvxswk-libsbuf-14.1.0-dev/include -isystem /nix/store/8pnlfb84k70ydv2nx8zacr4xdsy22ff9-cups-headers-2.4.11/include -isystem /nix/store/pxc3jga6jqr1mdjw1abmxqp95pz69xfq-bash-5.2p37-dev/include -isystem /nix/store/3r50cvcf5d7fahnkx4nkr2nk3h377h4s-nodejs-22.10.0/include -isystem /nix/store/9grahx8677nlgbx3yfiggibw335lkgfr-nodejs-20.18.0/include -isystem /nix/store/0mmz5i705116bfykc7i1r9jxqwyghj2a-libcxx-16.0.6-dev/include -isystem /nix/store/v0flb3xpcrd9br92ffjl3ba3ir40l6vb-compiler-rt-libc-16.0.6-dev/include -isystem /nix/store/gpm8lxlqya85j5pnp8q2q956qflpdxix-libiconv-107-dev/include -isystem /nix/store/nawyskckh9qamyqjypkfrqyy4qz16asb-libresolv-83-dev/include -isystem /nix/store/14nh7h7pjj1zp1rc8i69b7fv0yrvxswk-libsbuf-14.1.0-dev/include -isystem /nix/store/8pnlfb84k70ydv2nx8zacr4xdsy22ff9-cups-headers-2.4.11/include' +export NIX_CFLAGS_COMPILE +NIX_DONT_SET_RPATH='1' +export NIX_DONT_SET_RPATH +NIX_DONT_SET_RPATH_FOR_BUILD='1' +export NIX_DONT_SET_RPATH_FOR_BUILD +NIX_DONT_SET_RPATH_FOR_TARGET='1' +export NIX_DONT_SET_RPATH_FOR_TARGET +NIX_ENFORCE_NO_NATIVE='1' +export NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE='bindnow format fortify fortify3 pic relro stackprotector strictoverflow zerocallusedregs' +export NIX_HARDENING_ENABLE +NIX_IGNORE_LD_THROUGH_GCC='1' +export NIX_IGNORE_LD_THROUGH_GCC +NIX_LDFLAGS=' -L/nix/store/88xkgzh5g9xppsg3hdxxxh9q43rnxk6k-libcxx-16.0.6/lib -L/nix/store/8p41jdn2v8fnl36mvzr38f6jb5zy70dc-compiler-rt-libc-16.0.6/lib -L/nix/store/iwbpxcjz1s816d80sqg0mxg5p8m0dqak-libiconv-107/lib -L/nix/store/0w5ch2zpygy12r6r66ijxv926s8rxwis-libresolv-83/lib -L/nix/store/gmp5xwmh0k4iscnna9faiijjqvwrp4ss-libsbuf-14.1.0/lib -L/nix/store/p088zghysh2z6390vrls2qscy0xj1n7w-libutil-72/lib -L/nix/store/88xkgzh5g9xppsg3hdxxxh9q43rnxk6k-libcxx-16.0.6/lib -L/nix/store/8p41jdn2v8fnl36mvzr38f6jb5zy70dc-compiler-rt-libc-16.0.6/lib -L/nix/store/iwbpxcjz1s816d80sqg0mxg5p8m0dqak-libiconv-107/lib -L/nix/store/0w5ch2zpygy12r6r66ijxv926s8rxwis-libresolv-83/lib -L/nix/store/gmp5xwmh0k4iscnna9faiijjqvwrp4ss-libsbuf-14.1.0/lib -L/nix/store/p088zghysh2z6390vrls2qscy0xj1n7w-libutil-72/lib' +export NIX_LDFLAGS +NIX_NO_SELF_RPATH='1' +export NIX_NO_SELF_RPATH +NIX_STORE='/nix/store' +export NIX_STORE +NM='nm' +export NM +NODE_PATH='/nix/store/3r50cvcf5d7fahnkx4nkr2nk3h377h4s-nodejs-22.10.0/lib/node_modules:/nix/store/9grahx8677nlgbx3yfiggibw335lkgfr-nodejs-20.18.0/lib/node_modules' +export NODE_PATH +OBJCOPY='objcopy' +export OBJCOPY +OBJDUMP='objdump' +export OBJDUMP +OLDPWD='' +export OLDPWD +OPTERR='1' +OSTYPE='darwin24.1.0' +PATH='/nix/store/sk8z3kdy6iaky6sg972k6fkh3iw2rn3d-bash-5.2p37/bin:/nix/store/3r50cvcf5d7fahnkx4nkr2nk3h377h4s-nodejs-22.10.0/bin:/nix/store/9grahx8677nlgbx3yfiggibw335lkgfr-nodejs-20.18.0/bin:/nix/store/nsgv74q4a8l76qqd3rzd2n7k16gdqi2p-pnpm-9.14.2/bin:/nix/store/v39c0h6xv6hvki2k1bsyp5n090q8y2bp-clang-wrapper-16.0.6/bin:/nix/store/44hqr4414m3jldixkm4cq47q5pnpy83d-clang-16.0.6/bin:/nix/store/5g6np23z9q7vwwp1s5pxkgn8f8wrmihh-coreutils-9.5/bin:/nix/store/jqy6x4li0s729q6q97qmzrqwjfi567bv-cctools-binutils-darwin-wrapper-1010.6/bin:/nix/store/c02f0lj5xqjaw1c6hg9a9sv1b024mi8q-cctools-binutils-darwin-1010.6/bin:/nix/store/3a99nvsn1jh7h3vklnd8py5jplls9q41-xcbuild-0.1.1-unstable-2019-11-20-xcrun/bin:/nix/store/iwbpxcjz1s816d80sqg0mxg5p8m0dqak-libiconv-107/bin:/nix/store/5g6np23z9q7vwwp1s5pxkgn8f8wrmihh-coreutils-9.5/bin:/nix/store/zxz2b4dlg9zz8dcrwa2my1bpyxpfcchj-findutils-4.10.0/bin:/nix/store/xnm74pr7sl0jvn2q8fcr4jy3vrdgyqrn-diffutils-3.10/bin:/nix/store/9m372k9wy0f9aj54zhvsr65w2p9ndwnj-gnused-4.9/bin:/nix/store/ay0r3wrwbv5rq3mg3vhla045yjr49gka-gnugrep-3.11/bin:/nix/store/5q48fvg6grf5zsk106cm0k0hbfc1dfp2-gawk-5.3.1/bin:/nix/store/41dh2jr0d4ixcbjvkw72hqvrj0kv3mfh-gnutar-1.35/bin:/nix/store/jnnmwj5nsh4y8avg72q23nshq5z74pck-gzip-1.13/bin:/nix/store/5vs5hn675fwynba3didxxyvk8v0ji2bl-bzip2-1.0.8-bin/bin:/nix/store/0gqbh56qwj0cxmvl7dajic9mkbc26ilc-gnumake-4.4.1/bin:/nix/store/sk8z3kdy6iaky6sg972k6fkh3iw2rn3d-bash-5.2p37/bin:/nix/store/i8yd551zdvdx0gg9mxg5ky6znqaflnkd-patch-2.7.6/bin:/nix/store/kv4wl884saw5jjch5kg4zvcrpff6dlh9-xz-5.6.3-bin/bin:/nix/store/92imkakl854dfvqjl1z8jmsxjrg1mh6f-file-5.45/bin' +export PATH +PATH_LOCALE='/nix/store/69c3lcg4m6v6q5q27kwi61n4q2lh3haf-locale-118/share/locale' +export PATH_LOCALE +PS4='+ ' +RANLIB='ranlib' +export RANLIB +SDKROOT='/nix/store/amdympl4rz7kj93j82cva60v8007n4nv-apple-sdk-11.3/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk' +export SDKROOT +SHELL='/nix/store/sk8z3kdy6iaky6sg972k6fkh3iw2rn3d-bash-5.2p37/bin/bash' +export SHELL +SIZE='size' +export SIZE +SOURCE_DATE_EPOCH='315532800' +export SOURCE_DATE_EPOCH +STRINGS='strings' +export STRINGS +STRIP='strip' +export STRIP +VITE_CJS_IGNORE_WARNING='true' +export VITE_CJS_IGNORE_WARNING +XDG_DATA_DIRS='/nix/store/3r50cvcf5d7fahnkx4nkr2nk3h377h4s-nodejs-22.10.0/share:/nix/store/9grahx8677nlgbx3yfiggibw335lkgfr-nodejs-20.18.0/share:/nix/store/nsgv74q4a8l76qqd3rzd2n7k16gdqi2p-pnpm-9.14.2/share' +export XDG_DATA_DIRS +ZERO_AR_DATE='1' +export ZERO_AR_DATE +__darwinAllowLocalNetworking='' +export __darwinAllowLocalNetworking +__impureHostDeps='/bin/sh /usr/lib/libSystem.B.dylib /usr/lib/system/libunc.dylib /dev/zero /dev/random /dev/urandom /bin/sh' +export __impureHostDeps +__propagatedImpureHostDeps='' +export __propagatedImpureHostDeps +__propagatedSandboxProfile='' +export __propagatedSandboxProfile +__sandboxProfile='' +export __sandboxProfile +__structuredAttrs='' +export __structuredAttrs +_substituteStream_has_warned_replace_deprecation='false' +buildInputs='' +export buildInputs +buildPhase='{ echo "------------------------------------------------------------"; + echo " WARNING: the existence of this path is not guaranteed."; + echo " It is an internal implementation detail for pkgs.mkShell."; + echo "------------------------------------------------------------"; + echo; + # Record all build inputs as runtime dependencies + export; +} >> "$out" +' +export buildPhase +builder='/nix/store/sk8z3kdy6iaky6sg972k6fkh3iw2rn3d-bash-5.2p37/bin/bash' +export builder +cmakeFlags='' +export cmakeFlags +configureFlags='' +export configureFlags +defaultBuildInputs='/nix/store/amdympl4rz7kj93j82cva60v8007n4nv-apple-sdk-11.3' +defaultNativeBuildInputs='/nix/store/kl8ay7riidfd02mm65h9nk5qrh0pdb00-update-autotools-gnu-config-scripts-hook /nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh /nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh /nix/store/12lvf0c7xric9cny7slvf9cmhypl1p67-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/aazf105snicrlvyzzbdj85sx4179rpfp-set-source-date-epoch-to-latest.sh /nix/store/gps9qrh99j7g02840wv5x78ykmz30byp-strip.sh /nix/store/v39c0h6xv6hvki2k1bsyp5n090q8y2bp-clang-wrapper-16.0.6' +depsBuildBuild='' +export depsBuildBuild +depsBuildBuildPropagated='' +export depsBuildBuildPropagated +depsBuildTarget='' +export depsBuildTarget +depsBuildTargetPropagated='' +export depsBuildTargetPropagated +depsHostHost='' +export depsHostHost +depsHostHostPropagated='' +export depsHostHostPropagated +depsTargetTarget='' +export depsTargetTarget +depsTargetTargetPropagated='' +export depsTargetTargetPropagated +doCheck='' +export doCheck +doInstallCheck='' +export doInstallCheck +dontAddDisableDepTrack='1' +export dontAddDisableDepTrack +declare -a envBuildBuildHooks=('addNodePath' 'addNodePath' ) +declare -a envBuildHostHooks=('addNodePath' 'addNodePath' ) +declare -a envBuildTargetHooks=('addNodePath' 'addNodePath' ) +declare -a envHostHostHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +declare -a envHostTargetHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +declare -a envTargetTargetHooks=() +declare -a fixupOutputHooks=('if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' ) +initialPath='/nix/store/5g6np23z9q7vwwp1s5pxkgn8f8wrmihh-coreutils-9.5 /nix/store/zxz2b4dlg9zz8dcrwa2my1bpyxpfcchj-findutils-4.10.0 /nix/store/xnm74pr7sl0jvn2q8fcr4jy3vrdgyqrn-diffutils-3.10 /nix/store/9m372k9wy0f9aj54zhvsr65w2p9ndwnj-gnused-4.9 /nix/store/ay0r3wrwbv5rq3mg3vhla045yjr49gka-gnugrep-3.11 /nix/store/5q48fvg6grf5zsk106cm0k0hbfc1dfp2-gawk-5.3.1 /nix/store/41dh2jr0d4ixcbjvkw72hqvrj0kv3mfh-gnutar-1.35 /nix/store/jnnmwj5nsh4y8avg72q23nshq5z74pck-gzip-1.13 /nix/store/5vs5hn675fwynba3didxxyvk8v0ji2bl-bzip2-1.0.8-bin /nix/store/0gqbh56qwj0cxmvl7dajic9mkbc26ilc-gnumake-4.4.1 /nix/store/sk8z3kdy6iaky6sg972k6fkh3iw2rn3d-bash-5.2p37 /nix/store/i8yd551zdvdx0gg9mxg5ky6znqaflnkd-patch-2.7.6 /nix/store/kv4wl884saw5jjch5kg4zvcrpff6dlh9-xz-5.6.3-bin /nix/store/92imkakl854dfvqjl1z8jmsxjrg1mh6f-file-5.45' +mesonFlags='' +export mesonFlags +name='nix-shell-env' +export name +nativeBuildInputs='/nix/store/pxc3jga6jqr1mdjw1abmxqp95pz69xfq-bash-5.2p37-dev /nix/store/3r50cvcf5d7fahnkx4nkr2nk3h377h4s-nodejs-22.10.0 /nix/store/9grahx8677nlgbx3yfiggibw335lkgfr-nodejs-20.18.0 /nix/store/nsgv74q4a8l76qqd3rzd2n7k16gdqi2p-pnpm-9.14.2' +export nativeBuildInputs +out='/Users/airhorns/Code/superflected/outputs/out' +export out +outputBin='out' +outputDev='out' +outputDevdoc='REMOVE' +outputDevman='out' +outputDoc='out' +outputInclude='out' +outputInfo='out' +outputLib='out' +outputMan='out' +outputs='out' +export outputs +patches='' +export patches +phases='buildPhase' +export phases +pkg='/nix/store/amdympl4rz7kj93j82cva60v8007n4nv-apple-sdk-11.3' +declare -a pkgsBuildBuild=() +declare -a pkgsBuildHost=('/nix/store/pxc3jga6jqr1mdjw1abmxqp95pz69xfq-bash-5.2p37-dev' '/nix/store/sk8z3kdy6iaky6sg972k6fkh3iw2rn3d-bash-5.2p37' '/nix/store/3r50cvcf5d7fahnkx4nkr2nk3h377h4s-nodejs-22.10.0' '/nix/store/9grahx8677nlgbx3yfiggibw335lkgfr-nodejs-20.18.0' '/nix/store/nsgv74q4a8l76qqd3rzd2n7k16gdqi2p-pnpm-9.14.2' '/nix/store/kl8ay7riidfd02mm65h9nk5qrh0pdb00-update-autotools-gnu-config-scripts-hook' '/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh' '/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh' '/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh' '/nix/store/12lvf0c7xric9cny7slvf9cmhypl1p67-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/aazf105snicrlvyzzbdj85sx4179rpfp-set-source-date-epoch-to-latest.sh' '/nix/store/gps9qrh99j7g02840wv5x78ykmz30byp-strip.sh' '/nix/store/v39c0h6xv6hvki2k1bsyp5n090q8y2bp-clang-wrapper-16.0.6' '/nix/store/jqy6x4li0s729q6q97qmzrqwjfi567bv-cctools-binutils-darwin-wrapper-1010.6' '/nix/store/3a99nvsn1jh7h3vklnd8py5jplls9q41-xcbuild-0.1.1-unstable-2019-11-20-xcrun' ) +declare -a pkgsBuildTarget=() +declare -a pkgsHostHost=('/nix/store/0mmz5i705116bfykc7i1r9jxqwyghj2a-libcxx-16.0.6-dev' '/nix/store/88xkgzh5g9xppsg3hdxxxh9q43rnxk6k-libcxx-16.0.6' '/nix/store/v0flb3xpcrd9br92ffjl3ba3ir40l6vb-compiler-rt-libc-16.0.6-dev' '/nix/store/8p41jdn2v8fnl36mvzr38f6jb5zy70dc-compiler-rt-libc-16.0.6' ) +declare -a pkgsHostTarget=('/nix/store/amdympl4rz7kj93j82cva60v8007n4nv-apple-sdk-11.3' '/nix/store/gpm8lxlqya85j5pnp8q2q956qflpdxix-libiconv-107-dev' '/nix/store/iwbpxcjz1s816d80sqg0mxg5p8m0dqak-libiconv-107' '/nix/store/nawyskckh9qamyqjypkfrqyy4qz16asb-libresolv-83-dev' '/nix/store/0w5ch2zpygy12r6r66ijxv926s8rxwis-libresolv-83' '/nix/store/14nh7h7pjj1zp1rc8i69b7fv0yrvxswk-libsbuf-14.1.0-dev' '/nix/store/gmp5xwmh0k4iscnna9faiijjqvwrp4ss-libsbuf-14.1.0' '/nix/store/p088zghysh2z6390vrls2qscy0xj1n7w-libutil-72' '/nix/store/8pnlfb84k70ydv2nx8zacr4xdsy22ff9-cups-headers-2.4.11' ) +declare -a pkgsTargetTarget=() +declare -a postFixupHooks=('_makeSymlinksRelativeInAllOutputs' '_multioutPropagateDev' ) +declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' ) +declare -a preConfigureHooks=('_multioutConfig' ) +preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase' +declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' ) +preferLocalBuild='1' +export preferLocalBuild +prefix='/Users/airhorns/Code/superflected/outputs/out' +declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' ) +propagatedBuildInputs='' +export propagatedBuildInputs +declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' ) +propagatedNativeBuildInputs='' +export propagatedNativeBuildInputs +declare -a propagatedTargetDepFiles=('propagated-target-target-deps' ) +shell='/nix/store/sk8z3kdy6iaky6sg972k6fkh3iw2rn3d-bash-5.2p37/bin/bash' +export shell +shellHook='' +export shellHook +stdenv='/nix/store/lnlzcyd5sy2c4x8ys85627sj5mdxmdxq-stdenv-darwin' +export stdenv +strictDeps='' +export strictDeps +stripDebugFlags='-S' +system='aarch64-darwin' +export system +declare -a unpackCmdHooks=('_defaultUnpack' ) +_activatePkgs () +{ + + local hostOffset targetOffset; + local pkg; + for hostOffset in "${allPlatOffsets[@]}"; + do + local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}"; + for targetOffset in "${allPlatOffsets[@]}"; + do + (( hostOffset <= targetOffset )) || continue; + local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + activatePackage "$pkg" "$hostOffset" "$targetOffset"; + done; + done; + done +} +_addRpathPrefix () +{ + + if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then + export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}"; + fi +} +_addToEnv () +{ + + local depHostOffset depTargetOffset; + local pkg; + for depHostOffset in "${allPlatOffsets[@]}"; + do + local hookVar="${pkgHookVarVars[depHostOffset + 1]}"; + local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}"; + for depTargetOffset in "${allPlatOffsets[@]}"; + do + (( depHostOffset <= depTargetOffset )) || continue; + local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]"; + if [[ -z "${strictDeps-}" ]]; then + local visitedPkgs=""; + for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}"; + do + if [[ "$visitedPkgs" = *"$pkg"* ]]; then + continue; + fi; + runHook "${!hookRef}" "$pkg"; + visitedPkgs+=" $pkg"; + done; + else + local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + runHook "${!hookRef}" "$pkg"; + done; + fi; + done; + done +} +_allFlags () +{ + + export system pname name version; + while IFS='' read -r varName; do + nixTalkativeLog "@${varName}@ -> ${!varName}"; + args+=("--subst-var" "$varName"); + done < <(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }') +} +_assignFirst () +{ + + local varName="$1"; + local _var; + local REMOVE=REMOVE; + shift; + for _var in "$@"; + do + if [ -n "${!_var-}" ]; then + eval "${varName}"="${_var}"; + return; + fi; + done; + echo; + echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}."; + echo " The following variables were all unset or empty:"; + echo " $*"; + if [ -z "${out:-}" ]; then + echo ' If you do not want an "out" output in your derivation, make sure to define'; + echo ' the other specific required outputs. This can be achieved by picking one'; + echo " of the above as an output."; + echo ' You do not have to remove "out" if you want to have a different default'; + echo ' output, because the first output is taken as a default.'; + echo; + fi; + return 1 +} +_callImplicitHook () +{ + + local def="$1"; + local hookName="$2"; + if declare -F "$hookName" > /dev/null; then + nixTalkativeLog "calling implicit '$hookName' function hook"; + "$hookName"; + else + if type -p "$hookName" > /dev/null; then + nixTalkativeLog "sourcing implicit '$hookName' script hook"; + source "$hookName"; + else + if [ -n "${!hookName:-}" ]; then + nixTalkativeLog "evaling implicit '$hookName' string hook"; + eval "${!hookName}"; + else + return "$def"; + fi; + fi; + fi +} +_defaultUnpack () +{ + + local fn="$1"; + local destination; + if [ -d "$fn" ]; then + destination="$(stripHash "$fn")"; + if [ -e "$destination" ]; then + echo "Cannot copy $fn to $destination: destination already exists!"; + echo "Did you specify two \"srcs\" with the same \"name\"?"; + return 1; + fi; + cp -pr --reflink=auto -- "$fn" "$destination"; + else + case "$fn" in + *.tar.xz | *.tar.lzma | *.txz) + ( XZ_OPT="--threads=$NIX_BUILD_CORES" xz -d < "$fn"; + true ) | tar xf - --mode=+w --warning=no-timestamp + ;; + *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz) + tar xf "$fn" --mode=+w --warning=no-timestamp + ;; + *) + return 1 + ;; + esac; + fi +} +_doStrip () +{ + + local -ra flags=(dontStripHost dontStripTarget); + local -ra debugDirs=(stripDebugList stripDebugListTarget); + local -ra allDirs=(stripAllList stripAllListTarget); + local -ra stripCmds=(STRIP STRIP_FOR_TARGET); + local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET); + stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin}; + stripDebugListTarget=${stripDebugListTarget[*]:-}; + stripAllList=${stripAllList[*]:-}; + stripAllListTarget=${stripAllListTarget[*]:-}; + local i; + for i in ${!stripCmds[@]}; + do + local -n flag="${flags[$i]}"; + local -n debugDirList="${debugDirs[$i]}"; + local -n allDirList="${allDirs[$i]}"; + local -n stripCmd="${stripCmds[$i]}"; + local -n ranlibCmd="${ranlibCmds[$i]}"; + if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null 1>&2; then + continue; + fi; + stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags[*]:--S -p}"; + stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags[*]:--s -p}"; + done +} +_eval () +{ + + if declare -F "$1" > /dev/null 2>&1; then + "$@"; + else + eval "$1"; + fi +} +_logHook () +{ + + if [[ -z ${NIX_LOG_FD-} ]]; then + return; + fi; + local hookKind="$1"; + local hookExpr="$2"; + shift 2; + if declare -F "$hookExpr" > /dev/null 2>&1; then + nixTalkativeLog "calling '$hookKind' function hook '$hookExpr'" "$@"; + else + if type -p "$hookExpr" > /dev/null; then + nixTalkativeLog "sourcing '$hookKind' script hook '$hookExpr'"; + else + if [[ "$hookExpr" != "_callImplicitHook"* ]]; then + local exprToOutput; + if [[ ${NIX_DEBUG:-0} -ge 5 ]]; then + exprToOutput="$hookExpr"; + else + local hookExprLine; + while IFS= read -r hookExprLine; do + hookExprLine="${hookExprLine#"${hookExprLine%%[![:space:]]*}"}"; + if [[ -n "$hookExprLine" ]]; then + exprToOutput+="$hookExprLine\\n "; + fi; + done <<< "$hookExpr"; + exprToOutput="${exprToOutput%%\\n }"; + fi; + nixTalkativeLog "evaling '$hookKind' string hook '$exprToOutput'"; + fi; + fi; + fi +} +_makeSymlinksRelative () +{ + + local symlinkTarget; + if [ "${dontRewriteSymlinks-}" ] || [ ! -e "$prefix" ]; then + return; + fi; + while IFS= read -r -d '' f; do + symlinkTarget=$(readlink "$f"); + if [[ "$symlinkTarget"/ != "$prefix"/* ]]; then + continue; + fi; + if [ ! -e "$symlinkTarget" ]; then + echo "the symlink $f is broken, it points to $symlinkTarget (which is missing)"; + fi; + echo "rewriting symlink $f to be relative to $prefix"; + ln -snrf "$symlinkTarget" "$f"; + done < <(find $prefix -type l -print0) +} +_makeSymlinksRelativeInAllOutputs () +{ + + local output; + for output in $(getAllOutputNames); + do + prefix="${!output}" _makeSymlinksRelative; + done +} +_moveLib64 () +{ + + if [ "${dontMoveLib64-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then + return; + fi; + echo "moving $prefix/lib64/* to $prefix/lib"; + mkdir -p $prefix/lib; + shopt -s dotglob; + for i in $prefix/lib64/*; + do + mv --no-clobber "$i" $prefix/lib; + done; + shopt -u dotglob; + rmdir $prefix/lib64; + ln -s lib $prefix/lib64 +} +_moveSbin () +{ + + if [ "${dontMoveSbin-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then + return; + fi; + echo "moving $prefix/sbin/* to $prefix/bin"; + mkdir -p $prefix/bin; + shopt -s dotglob; + for i in $prefix/sbin/*; + do + mv "$i" $prefix/bin; + done; + shopt -u dotglob; + rmdir $prefix/sbin; + ln -s bin $prefix/sbin +} +_moveSystemdUserUnits () +{ + + if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then + return; + fi; + if [ ! -e "${prefix:?}/lib/systemd/user" ]; then + return; + fi; + local source="$prefix/lib/systemd/user"; + local target="$prefix/share/systemd/user"; + echo "moving $source/* to $target"; + mkdir -p "$target"; + ( shopt -s dotglob; + for i in "$source"/*; + do + mv "$i" "$target"; + done ); + rmdir "$source"; + ln -s "$target" "$source" +} +_moveToShare () +{ + + if [ -n "$__structuredAttrs" ]; then + if [ -z "${forceShare-}" ]; then + forceShare=(man doc info); + fi; + else + forceShare=(${forceShare:-man doc info}); + fi; + if [[ -z "$out" ]]; then + return; + fi; + for d in "${forceShare[@]}"; + do + if [ -d "$out/$d" ]; then + if [ -d "$out/share/$d" ]; then + echo "both $d/ and share/$d/ exist!"; + else + echo "moving $out/$d to $out/share/$d"; + mkdir -p $out/share; + mv $out/$d $out/share/; + fi; + fi; + done +} +_multioutConfig () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${setOutputFlags-1}" ]; then + return; + fi; + if [ -z "${shareDocName:-}" ]; then + local confScript="${configureScript:-}"; + if [ -z "$confScript" ] && [ -x ./configure ]; then + confScript=./configure; + fi; + if [ -f "$confScript" ]; then + local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")"; + fi; + if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then + shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"; + fi; + fi; + prependToVar configureFlags --bindir="${!outputBin}"/bin --sbindir="${!outputBin}"/sbin --includedir="${!outputInclude}"/include --oldincludedir="${!outputInclude}"/include --mandir="${!outputMan}"/share/man --infodir="${!outputInfo}"/share/info --docdir="${!outputDoc}"/share/doc/"${shareDocName}" --libdir="${!outputLib}"/lib --libexecdir="${!outputLib}"/libexec --localedir="${!outputLib}"/share/locale; + prependToVar installFlags pkgconfigdir="${!outputDev}"/lib/pkgconfig m4datadir="${!outputDev}"/share/aclocal aclocaldir="${!outputDev}"/share/aclocal +} +_multioutDevs () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${moveToDev-1}" ]; then + return; + fi; + moveToOutput include "${!outputInclude}"; + moveToOutput lib/pkgconfig "${!outputDev}"; + moveToOutput share/pkgconfig "${!outputDev}"; + moveToOutput lib/cmake "${!outputDev}"; + moveToOutput share/aclocal "${!outputDev}"; + for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc; + do + echo "Patching '$f' includedir to output ${!outputInclude}"; + sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f"; + done +} +_multioutDocs () +{ + + local REMOVE=REMOVE; + moveToOutput share/info "${!outputInfo}"; + moveToOutput share/doc "${!outputDoc}"; + moveToOutput share/gtk-doc "${!outputDevdoc}"; + moveToOutput share/devhelp/books "${!outputDevdoc}"; + moveToOutput share/man "${!outputMan}"; + moveToOutput share/man/man3 "${!outputDevman}" +} +_multioutPropagateDev () +{ + + if [ "$(getAllOutputNames)" = "out" ]; then + return; + fi; + local outputFirst; + for outputFirst in $(getAllOutputNames); + do + break; + done; + local propagaterOutput="$outputDev"; + if [ -z "$propagaterOutput" ]; then + propagaterOutput="$outputFirst"; + fi; + if [ -z "${propagatedBuildOutputs+1}" ]; then + local po_dirty="$outputBin $outputInclude $outputLib"; + set +o pipefail; + propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `; + set -o pipefail; + fi; + if [ -z "$propagatedBuildOutputs" ]; then + return; + fi; + mkdir -p "${!propagaterOutput}"/nix-support; + for output in $propagatedBuildOutputs; + do + echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs; + done +} +_overrideFirst () +{ + + if [ -z "${!1-}" ]; then + _assignFirst "$@"; + fi +} +_pruneLibtoolFiles () +{ + + if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then + return; + fi; + find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \; +} +_updateSourceDateEpochFromSourceRoot () +{ + + if [ -n "$sourceRoot" ]; then + updateSourceDateEpoch "$sourceRoot"; + fi +} +activatePackage () +{ + + local pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + if [ -f "$pkg" ]; then + nixTalkativeLog "sourcing setup hook '$pkg'"; + source "$pkg"; + fi; + if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then + addToSearchPath _PATH "$pkg/bin"; + fi; + if (( hostOffset <= -1 )); then + addToSearchPath _XDG_DATA_DIRS "$pkg/share"; + fi; + if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then + addToSearchPath _HOST_PATH "$pkg/bin"; + fi; + if [[ -f "$pkg/nix-support/setup-hook" ]]; then + nixTalkativeLog "sourcing setup hook '$pkg/nix-support/setup-hook'"; + source "$pkg/nix-support/setup-hook"; + fi +} +addEnvHooks () +{ + + local depHostOffset="$1"; + shift; + local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]"; + local pkgHookVar; + for pkgHookVar in "${!pkgHookVarsSlice}"; + do + eval "${pkgHookVar}s"'+=("$@")'; + done +} +addNodePath () +{ + + addToSearchPath NODE_PATH "$1/lib/node_modules" +} +addToSearchPath () +{ + + addToSearchPathWithCustomDelimiter ":" "$@" +} +addToSearchPathWithCustomDelimiter () +{ + + local delimiter="$1"; + local varName="$2"; + local dir="$3"; + if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then + export "${varName}=${!varName:+${!varName}${delimiter}}${dir}"; + fi +} +appendToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if type=$(declare -p "$1" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "appendToVar(): ERROR: trying to use appendToVar on an associative array, use variable+=([\"X\"]=\"Y\") instead." 1>&2; + return 1 + ;; + -a*) + useArray=true + ;; + *) + useArray=false + ;; + esac; + fi; + shift; + if $useArray; then + nameref=(${nameref+"${nameref[@]}"} "$@"); + else + nameref="${nameref-} $*"; + fi +} +auditTmpdir () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "checking for references to $TMPDIR/ in $dir..."; + local i; + find "$dir" -type f -print0 | while IFS= read -r -d '' i; do + if [[ "$i" =~ .build-id ]]; then + continue; + fi; + if isELF "$i"; then + if { + printf :; + patchelf --print-rpath "$i" + } | grep -q -F ":$TMPDIR/"; then + echo "RPATH of binary $i contains a forbidden reference to $TMPDIR/"; + exit 1; + fi; + fi; + if isScript "$i"; then + if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then + if grep -q -F "$TMPDIR/" "$i"; then + echo "wrapper script $i contains a forbidden reference to $TMPDIR/"; + exit 1; + fi; + fi; + fi; + done +} +bintoolsWrapper_addLDVars () +{ + + local role_post; + getHostRoleEnvHook; + if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib64"; + fi; + if [[ -d "$1/lib" ]]; then + local -a glob=($1/lib/lib*); + if [ "${#glob[*]}" -gt 0 ]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib"; + fi; + fi +} +buildPhase () +{ + + runHook preBuild; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom buildPhase, doing nothing"; + else + foundMakefile=1; + local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray; + echoCmd 'build flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postBuild +} +ccWrapper_addCVars () +{ + + local role_post; + getHostRoleEnvHook; + if [ -d "$1/include" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include"; + fi; + if [ -d "$1/Library/Frameworks" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks"; + fi +} +checkPhase () +{ + + runHook preCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom checkPhase, doing nothing"; + runHook postCheck; + return; + fi; + if [[ -z "${checkTarget:-}" ]]; then + if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then + checkTarget="check"; + else + if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then + checkTarget="test"; + fi; + fi; + fi; + if [[ -z "${checkTarget:-}" ]]; then + echo "no check/test target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray checkFlags=VERBOSE=y checkFlagsArray checkTarget; + echoCmd 'check flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postCheck +} +compressManPages () +{ + + local dir="$1"; + if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then + return; + fi; + echo "gzipping man pages under $dir/share/man/"; + find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | while IFS= read -r -d '' f; do + if gzip -c -n "$f" > "$f".gz; then + rm "$f"; + else + rm "$f".gz; + fi; + done; + find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do + local target; + target="$(readlink -f "$f")"; + if [ -f "$target".gz ]; then + ln -sf "$target".gz "$f".gz && rm "$f"; + fi; + done +} +concatStringsSep () +{ + + local sep="$1"; + local name="$2"; + local type oldifs; + if type=$(declare -p "$name" 2> /dev/null); then + local -n nameref="$name"; + case "${type#* }" in + -A*) + echo "concatStringsSep(): ERROR: trying to use concatStringsSep on an associative array." 1>&2; + return 1 + ;; + -a*) + local IFS="$sep"; + echo -n "${nameref[*]}" + ;; + *) + echo -n "${nameref// /"${sep}"}" + ;; + esac; + fi +} +concatTo () +{ + + local -; + set -o noglob; + local -n targetref="$1"; + shift; + local arg default name type; + for arg in "$@"; + do + IFS="=" read -r name default <<< "$arg"; + local -n nameref="$name"; + if [[ -z "${nameref[*]}" && -n "$default" ]]; then + targetref+=("$default"); + else + if type=$(declare -p "$name" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "concatTo(): ERROR: trying to use concatTo on an associative array." 1>&2; + return 1 + ;; + -a*) + targetref+=("${nameref[@]}") + ;; + *) + if [[ "$name" = *"Array" ]]; then + nixErrorLog "concatTo(): $name is not declared as array, treating as a singleton. This will become an error in future"; + targetref+=(${nameref+"${nameref[@]}"}); + else + targetref+=(${nameref-}); + fi + ;; + esac; + fi; + fi; + done +} +configurePhase () +{ + + runHook preConfigure; + : "${configureScript=}"; + if [[ -z "$configureScript" && -x ./configure ]]; then + configureScript=./configure; + fi; + if [ -z "${dontFixLibtool:-}" ]; then + export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}"; + local i; + find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do + echo "fixing libtool script $i"; + fixLibtool "$i"; + done; + CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXXXXX); + find . -executable -type f -name configure -exec grep -l 'GNU Libtool is free software; you can redistribute it and/or modify' {} \; -exec touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; -exec sed -i s_/usr/bin/file_file_g {} \; -exec touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;; + rm -f "$CONFIGURE_MTIME_REFERENCE"; + fi; + if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then + prependToVar configureFlags "${prefixKey:---prefix=}$prefix"; + fi; + if [[ -f "$configureScript" ]]; then + if [ -z "${dontAddDisableDepTrack:-}" ]; then + if grep -q dependency-tracking "$configureScript"; then + prependToVar configureFlags --disable-dependency-tracking; + fi; + fi; + if [ -z "${dontDisableStatic:-}" ]; then + if grep -q enable-static "$configureScript"; then + prependToVar configureFlags --disable-static; + fi; + fi; + if [ -z "${dontPatchShebangsInConfigure:-}" ]; then + patchShebangs --build "$configureScript"; + fi; + fi; + if [ -n "$configureScript" ]; then + local -a flagsArray; + concatTo flagsArray configureFlags configureFlagsArray; + echoCmd 'configure flags' "${flagsArray[@]}"; + $configureScript "${flagsArray[@]}"; + unset flagsArray; + else + echo "no configure script, doing nothing"; + fi; + runHook postConfigure +} +consumeEntire () +{ + + if IFS='' read -r -d '' "$1"; then + echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2; + return 1; + fi +} +distPhase () +{ + + runHook preDist; + local flagsArray=(); + concatTo flagsArray distFlags distFlagsArray distTarget=dist; + echo 'dist flags: %q' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + if [ "${dontCopyDist:-0}" != 1 ]; then + mkdir -p "$out/tarballs"; + cp -pvd ${tarballs[*]:-*.tar.gz} "$out/tarballs"; + fi; + runHook postDist +} +dumpVars () +{ + + if [ "${noDumpEnvVars:-0}" != 1 ]; then + { + install -m 0600 /dev/null "$NIX_BUILD_TOP/env-vars" && export 2> /dev/null >| "$NIX_BUILD_TOP/env-vars" + } || true; + fi +} +echoCmd () +{ + + printf "%s:" "$1"; + shift; + printf ' %q' "$@"; + echo +} +exitHandler () +{ + + exitCode="$?"; + set +e; + if [ -n "${showBuildStats:-}" ]; then + read -r -d '' -a buildTimes < <(times); + echo "build times:"; + echo "user time for the shell ${buildTimes[0]}"; + echo "system time for the shell ${buildTimes[1]}"; + echo "user time for all child processes ${buildTimes[2]}"; + echo "system time for all child processes ${buildTimes[3]}"; + fi; + if (( "$exitCode" != 0 )); then + runHook failureHook; + if [ -n "${succeedOnFailure:-}" ]; then + echo "build failed with exit code $exitCode (ignored)"; + mkdir -p "$out/nix-support"; + printf "%s" "$exitCode" > "$out/nix-support/failed"; + exit 0; + fi; + else + runHook exitHook; + fi; + return "$exitCode" +} +findInputs () +{ + + local -r pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + local varVar="${pkgAccumVarVars[hostOffset + 1]}"; + local varRef="$varVar[$((targetOffset - hostOffset))]"; + local var="${!varRef}"; + unset -v varVar varRef; + local varSlice="$var[*]"; + case "${!varSlice-}" in + *" $pkg "*) + return 0 + ;; + esac; + unset -v varSlice; + eval "$var"'+=("$pkg")'; + if ! [ -e "$pkg" ]; then + echo "build input $pkg does not exist" 1>&2; + exit 1; + fi; + function mapOffset () + { + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi + }; + local relHostOffset; + for relHostOffset in "${allPlatOffsets[@]}"; + do + local files="${propagatedDepFilesVars[relHostOffset + 1]}"; + local hostOffsetNext; + mapOffset "$relHostOffset" hostOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + local relTargetOffset; + for relTargetOffset in "${allPlatOffsets[@]}"; + do + (( "$relHostOffset" <= "$relTargetOffset" )) || continue; + local fileRef="${files}[$relTargetOffset - $relHostOffset]"; + local file="${!fileRef}"; + unset -v fileRef; + local targetOffsetNext; + mapOffset "$relTargetOffset" targetOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + [[ -f "$pkg/nix-support/$file" ]] || continue; + local pkgNext; + read -r -d '' pkgNext < "$pkg/nix-support/$file" || true; + for pkgNext in $pkgNext; + do + findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext"; + done; + done; + done +} +fixLibtool () +{ + + local search_path; + for flag in $NIX_LDFLAGS; + do + case $flag in + -L*) + search_path+=" ${flag#-L}" + ;; + esac; + done; + sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'${search_path:-}'^" -e 's^eval sys_lib_.+search_path=.*^^' +} +fixupPhase () +{ + + local output; + for output in $(getAllOutputNames); + do + if [ -e "${!output}" ]; then + chmod -R u+w,u-s,g-s "${!output}"; + fi; + done; + runHook preFixup; + local output; + for output in $(getAllOutputNames); + do + prefix="${!output}" runHook fixupOutput; + done; + recordPropagatedDependencies; + if [ -n "${setupHook:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook"; + fi; + if [ -n "${setupHooks:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + local hook; + for hook in ${setupHooks[@]}; + do + local content; + consumeEntire content < "$hook"; + substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook"; + unset -v content; + done; + unset -v hook; + fi; + if [ -n "${propagatedUserEnvPkgs:-}" ]; then + mkdir -p "${!outputBin}/nix-support"; + printWords $propagatedUserEnvPkgs > "${!outputBin}/nix-support/propagated-user-env-packages"; + fi; + runHook postFixup +} +genericBuild () +{ + + export GZIP_NO_TIMESTAMPS=1; + if [ -f "${buildCommandPath:-}" ]; then + source "$buildCommandPath"; + return; + fi; + if [ -n "${buildCommand:-}" ]; then + eval "$buildCommand"; + return; + fi; + if [ -z "${phases[*]:-}" ]; then + phases="${prePhases[*]:-} unpackPhase patchPhase ${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase ${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase ${preDistPhases[*]:-} distPhase ${postPhases[*]:-}"; + fi; + for curPhase in ${phases[*]}; + do + runPhase "$curPhase"; + done +} +getAllOutputNames () +{ + + if [ -n "$__structuredAttrs" ]; then + echo "${!outputs[*]}"; + else + echo "$outputs"; + fi +} +getHostRole () +{ + + getRole "$hostOffset" +} +getHostRoleEnvHook () +{ + + getRole "$depHostOffset" +} +getRole () +{ + + case $1 in + -1) + role_post='_FOR_BUILD' + ;; + 0) + role_post='' + ;; + 1) + role_post='_FOR_TARGET' + ;; + *) + echo "apple-sdk-11.3: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +getTargetRole () +{ + + getRole "$targetOffset" +} +getTargetRoleEnvHook () +{ + + getRole "$depTargetOffset" +} +getTargetRoleWrapper () +{ + + case $targetOffset in + -1) + export NIX_@wrapperName@_TARGET_BUILD_@suffixSalt@=1 + ;; + 0) + export NIX_@wrapperName@_TARGET_HOST_@suffixSalt@=1 + ;; + 1) + export NIX_@wrapperName@_TARGET_TARGET_@suffixSalt@=1 + ;; + *) + echo "apple-sdk-11.3: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +installCheckPhase () +{ + + runHook preInstallCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom installCheckPhase, doing nothing"; + else + if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} "${installCheckTarget:-installcheck}" > /dev/null 2>&1; then + echo "no installcheck target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray installCheckFlags installCheckFlagsArray installCheckTarget=installcheck; + echoCmd 'installcheck flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + fi; + runHook postInstallCheck +} +installPhase () +{ + + runHook preInstall; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom installPhase, doing nothing"; + runHook postInstall; + return; + else + foundMakefile=1; + fi; + if [ -n "$prefix" ]; then + mkdir -p "$prefix"; + fi; + local flagsArray=(${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray installFlags installFlagsArray installTargets=install; + echoCmd 'install flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + runHook postInstall +} +isELF () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [ "$magic" = 'ELF' ]; then + return 0; + else + return 1; + fi +} +isMachO () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then + return 0; + else + return 1; + fi; + fi; + fi +} +isScript () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 2 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" =~ \#! ]]; then + return 0; + else + return 1; + fi +} +mapOffset () +{ + + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi +} +moveToOutput () +{ + + local patt="$1"; + local dstOut="$2"; + local output; + for output in $(getAllOutputNames); + do + if [ "${!output}" = "$dstOut" ]; then + continue; + fi; + local srcPath; + for srcPath in "${!output}"/$patt; + do + if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then + continue; + fi; + if [ "$dstOut" = REMOVE ]; then + echo "Removing $srcPath"; + rm -r "$srcPath"; + else + local dstPath="$dstOut${srcPath#${!output}}"; + echo "Moving $srcPath to $dstPath"; + if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then + rmdir "$srcPath" --ignore-fail-on-non-empty; + if [ -d "$srcPath" ]; then + mv -t "$dstPath" "$srcPath"/*; + rmdir "$srcPath"; + fi; + else + mkdir -p "$(readlink -m "$dstPath/..")"; + mv "$srcPath" "$dstPath"; + fi; + fi; + local srcParent="$(readlink -m "$srcPath/..")"; + if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2> /dev/null)" ]; then + echo "Removing empty $srcParent/ and (possibly) its parents"; + rmdir -p --ignore-fail-on-non-empty "$srcParent" 2> /dev/null || true; + fi; + done; + done +} +nixChattyLog () +{ + + if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 5 ]]; then + return; + fi; + printf "%s\n" "$*" >&"$NIX_LOG_FD" +} +nixDebugLog () +{ + + if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 6 ]]; then + return; + fi; + printf "%s\n" "$*" >&"$NIX_LOG_FD" +} +nixErrorLog () +{ + + if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 0 ]]; then + return; + fi; + printf "%s\n" "$*" >&"$NIX_LOG_FD" +} +nixInfoLog () +{ + + if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 3 ]]; then + return; + fi; + printf "%s\n" "$*" >&"$NIX_LOG_FD" +} +nixNoticeLog () +{ + + if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 2 ]]; then + return; + fi; + printf "%s\n" "$*" >&"$NIX_LOG_FD" +} +nixTalkativeLog () +{ + + if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 4 ]]; then + return; + fi; + printf "%s\n" "$*" >&"$NIX_LOG_FD" +} +nixVomitLog () +{ + + if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 7 ]]; then + return; + fi; + printf "%s\n" "$*" >&"$NIX_LOG_FD" +} +nixWarnLog () +{ + + if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 1 ]]; then + return; + fi; + printf "%s\n" "$*" >&"$NIX_LOG_FD" +} +patchPhase () +{ + + runHook prePatch; + local -a patchesArray; + concatTo patchesArray patches; + for i in "${patchesArray[@]}"; + do + echo "applying patch $i"; + local uncompress=cat; + case "$i" in + *.gz) + uncompress="gzip -d" + ;; + *.bz2) + uncompress="bzip2 -d" + ;; + *.xz) + uncompress="xz -d" + ;; + *.lzma) + uncompress="lzma -d" + ;; + esac; + local -a flagsArray; + concatTo flagsArray patchFlags=-p1; + $uncompress < "$i" 2>&1 | patch "${flagsArray[@]}"; + done; + runHook postPatch +} +patchShebangs () +{ + + local pathName; + local update; + while [[ $# -gt 0 ]]; do + case "$1" in + --host) + pathName=HOST_PATH; + shift + ;; + --build) + pathName=PATH; + shift + ;; + --update) + update=true; + shift + ;; + --) + shift; + break + ;; + -* | --*) + echo "Unknown option $1 supplied to patchShebangs" 1>&2; + return 1 + ;; + *) + break + ;; + esac; + done; + echo "patching script interpreter paths in $@"; + local f; + local oldPath; + local newPath; + local arg0; + local args; + local oldInterpreterLine; + local newInterpreterLine; + if [[ $# -eq 0 ]]; then + echo "No arguments supplied to patchShebangs" 1>&2; + return 0; + fi; + local f; + while IFS= read -r -d '' f; do + isScript "$f" || continue; + read -r oldInterpreterLine < "$f" || [ "$oldInterpreterLine" ]; + read -r oldPath arg0 args <<< "${oldInterpreterLine:2}"; + if [[ -z "${pathName:-}" ]]; then + if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then + pathName=HOST_PATH; + else + pathName=PATH; + fi; + fi; + if [[ "$oldPath" == *"/bin/env" ]]; then + if [[ $arg0 == "-S" ]]; then + arg0=${args%% *}; + args=${args#* }; + newPath="$(PATH="${!pathName}" type -P "env" || true)"; + args="-S $(PATH="${!pathName}" type -P "$arg0" || true) $args"; + else + if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then + echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2; + exit 1; + else + newPath="$(PATH="${!pathName}" type -P "$arg0" || true)"; + fi; + fi; + else + if [[ -z $oldPath ]]; then + oldPath="/bin/sh"; + fi; + newPath="$(PATH="${!pathName}" type -P "$(basename "$oldPath")" || true)"; + args="$arg0 $args"; + fi; + newInterpreterLine="$newPath $args"; + newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}}; + if [[ -n "$oldPath" && ( "$update" == true || "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ) ]]; then + if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then + echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\""; + escapedInterpreterLine=${newInterpreterLine//\\/\\\\}; + timestamp=$(stat --printf "%y" "$f"); + sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f"; + touch --date "$timestamp" "$f"; + fi; + fi; + done < <(find "$@" -type f -perm -0100 -print0) +} +patchShebangsAuto () +{ + + if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then + if [[ "$output" != out && "$output" = "$outputDev" ]]; then + patchShebangs --build "$prefix"; + else + patchShebangs --host "$prefix"; + fi; + fi +} +prependToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if type=$(declare -p "$1" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "prependToVar(): ERROR: trying to use prependToVar on an associative array." 1>&2; + return 1 + ;; + -a*) + useArray=true + ;; + *) + useArray=false + ;; + esac; + fi; + shift; + if $useArray; then + nameref=("$@" ${nameref+"${nameref[@]}"}); + else + nameref="$* ${nameref-}"; + fi +} +printLines () +{ + + (( "$#" > 0 )) || return 0; + printf '%s\n' "$@" +} +printWords () +{ + + (( "$#" > 0 )) || return 0; + printf '%s ' "$@" +} +recordPropagatedDependencies () +{ + + declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated); + declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}"); + local propagatedInputsIndex; + for propagatedInputsIndex in "${!flatVars[@]}"; + do + local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]"; + local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}"; + [[ -n "${!propagatedInputsSlice}" ]] || continue; + mkdir -p "${!outputDev}/nix-support"; + printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile"; + done +} +runHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook; + for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _logHook "$hookName" "$hook" "$@"; + _eval "$hook" "$@"; + done; + return 0 +} +runOneHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook ret=1; + for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _logHook "$hookName" "$hook" "$@"; + if _eval "$hook" "$@"; then + ret=0; + break; + fi; + done; + return "$ret" +} +runPhase () +{ + + local curPhase="$*"; + if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then + return; + fi; + if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then + return; + fi; + if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then + return; + fi; + if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then + return; + fi; + if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then + return; + fi; + if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then + return; + fi; + showPhaseHeader "$curPhase"; + dumpVars; + local startTime endTime; + startTime=$(date +"%s"); + eval "${!curPhase:-$curPhase}"; + endTime=$(date +"%s"); + showPhaseFooter "$curPhase" "$startTime" "$endTime"; + if [ "$curPhase" = unpackPhase ]; then + [ -n "${sourceRoot:-}" ] && chmod +x -- "${sourceRoot}"; + cd -- "${sourceRoot:-.}"; + fi +} +showPhaseFooter () +{ + + local phase="$1"; + local startTime="$2"; + local endTime="$3"; + local delta=$(( endTime - startTime )); + (( delta < 30 )) && return; + local H=$((delta/3600)); + local M=$((delta%3600/60)); + local S=$((delta%60)); + echo -n "$phase completed in "; + (( H > 0 )) && echo -n "$H hours "; + (( M > 0 )) && echo -n "$M minutes "; + echo "$S seconds" +} +showPhaseHeader () +{ + + local phase="$1"; + echo "Running phase: $phase"; + if [[ -z ${NIX_LOG_FD-} ]]; then + return; + fi; + printf "@nix { \"action\": \"setPhase\", \"phase\": \"%s\" }\n" "$phase" >&"$NIX_LOG_FD" +} +stripDirs () +{ + + local cmd="$1"; + local ranlibCmd="$2"; + local paths="$3"; + local stripFlags="$4"; + local excludeFlags=(); + local pathsNew=; + [ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1; + [ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1; + local pattern; + if [ -n "${stripExclude:-}" ]; then + for pattern in "${stripExclude[@]}"; + do + excludeFlags+=(-a '!' '(' -name "$pattern" -o -wholename "$prefix/$pattern" ')'); + done; + fi; + local p; + for p in ${paths}; + do + if [ -e "$prefix/$p" ]; then + pathsNew="${pathsNew} $prefix/$p"; + fi; + done; + paths=${pathsNew}; + if [ -n "${paths}" ]; then + echo "stripping (with command $cmd and flags $stripFlags) in $paths"; + local striperr; + striperr="$(mktemp --tmpdir="$TMPDIR" 'striperr.XXXXXX')"; + find $paths -type f "${excludeFlags[@]}" -a '!' -path "$prefix/lib/debug/*" -printf '%D-%i,%p\0' | sort -t, -k1,1 -u -z | cut -d, -f2- -z | xargs -r -0 -n1 -P "$NIX_BUILD_CORES" -- $cmd $stripFlags 2> "$striperr" || exit_code=$?; + [[ "$exit_code" = 123 || -z "$exit_code" ]] || ( cat "$striperr" 1>&2 && exit 1 ); + rm "$striperr"; + find $paths -name '*.a' -type f -exec $ranlibCmd '{}' \; 2> /dev/null; + fi +} +stripHash () +{ + + local strippedName casematchOpt=0; + strippedName="$(basename -- "$1")"; + shopt -q nocasematch && casematchOpt=1; + shopt -u nocasematch; + if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then + echo "${strippedName:33}"; + else + echo "$strippedName"; + fi; + if (( casematchOpt )); then + shopt -s nocasematch; + fi +} +substitute () +{ + + local input="$1"; + local output="$2"; + shift 2; + if [ ! -f "$input" ]; then + echo "substitute(): ERROR: file '$input' does not exist" 1>&2; + return 1; + fi; + local content; + consumeEntire content < "$input"; + if [ -e "$output" ]; then + chmod +w "$output"; + fi; + substituteStream content "file '$input'" "$@" > "$output" +} +substituteAll () +{ + + local input="$1"; + local output="$2"; + local -a args=(); + _allFlags; + substitute "$input" "$output" "${args[@]}" +} +substituteAllInPlace () +{ + + local fileName="$1"; + shift; + substituteAll "$fileName" "$fileName" "$@" +} +substituteAllStream () +{ + + local -a args=(); + _allFlags; + substituteStream "$1" "$2" "${args[@]}" +} +substituteInPlace () +{ + + local -a fileNames=(); + for arg in "$@"; + do + if [[ "$arg" = "--"* ]]; then + break; + fi; + fileNames+=("$arg"); + shift; + done; + if ! [[ "${#fileNames[@]}" -gt 0 ]]; then + echo "substituteInPlace called without any files to operate on (files must come before options!)" 1>&2; + return 1; + fi; + for file in "${fileNames[@]}"; + do + substitute "$file" "$file" "$@"; + done +} +substituteStream () +{ + + local var=$1; + local description=$2; + shift 2; + while (( "$#" )); do + local replace_mode="$1"; + case "$1" in + --replace) + if ! "$_substituteStream_has_warned_replace_deprecation"; then + echo "substituteStream() in derivation $name: WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. ($description)" 1>&2; + _substituteStream_has_warned_replace_deprecation=true; + fi; + replace_mode='--replace-warn' + ;& + --replace-quiet | --replace-warn | --replace-fail) + pattern="$2"; + replacement="$3"; + shift 3; + local savedvar; + savedvar="${!var}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + if [ "$pattern" != "$replacement" ]; then + if [ "${!var}" == "$savedvar" ]; then + if [ "$replace_mode" == --replace-warn ]; then + printf "substituteStream() in derivation $name: WARNING: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2; + else + if [ "$replace_mode" == --replace-fail ]; then + printf "substituteStream() in derivation $name: ERROR: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2; + return 1; + fi; + fi; + fi; + fi + ;; + --subst-var) + local varName="$2"; + shift 2; + if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then + echo "substituteStream() in derivation $name: ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2; + return 1; + fi; + if [ -z ${!varName+x} ]; then + echo "substituteStream() in derivation $name: ERROR: variable \$$varName is unset" 1>&2; + return 1; + fi; + pattern="@$varName@"; + replacement="${!varName}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var-by) + pattern="@$2@"; + replacement="$3"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + shift 3 + ;; + *) + echo "substituteStream() in derivation $name: ERROR: Invalid command line argument: $1" 1>&2; + return 1 + ;; + esac; + done; + printf "%s" "${!var}" +} +unpackFile () +{ + + curSrc="$1"; + echo "unpacking source archive $curSrc"; + if ! runOneHook unpackCmd "$curSrc"; then + echo "do not know how to unpack source archive $curSrc"; + exit 1; + fi +} +unpackPhase () +{ + + runHook preUnpack; + if [ -z "${srcs:-}" ]; then + if [ -z "${src:-}" ]; then + echo 'variable $src or $srcs should point to the source'; + exit 1; + fi; + srcs="$src"; + fi; + local -a srcsArray; + concatTo srcsArray srcs; + local dirsBefore=""; + for i in *; + do + if [ -d "$i" ]; then + dirsBefore="$dirsBefore $i "; + fi; + done; + for i in "${srcsArray[@]}"; + do + unpackFile "$i"; + done; + : "${sourceRoot=}"; + if [ -n "${setSourceRoot:-}" ]; then + runOneHook setSourceRoot; + else + if [ -z "$sourceRoot" ]; then + for i in *; + do + if [ -d "$i" ]; then + case $dirsBefore in + *\ $i\ *) + + ;; + *) + if [ -n "$sourceRoot" ]; then + echo "unpacker produced multiple directories"; + exit 1; + fi; + sourceRoot="$i" + ;; + esac; + fi; + done; + fi; + fi; + if [ -z "$sourceRoot" ]; then + echo "unpacker appears to have produced no directories"; + exit 1; + fi; + echo "source root is $sourceRoot"; + if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then + chmod -R u+w -- "$sourceRoot"; + fi; + runHook postUnpack +} +updateAutotoolsGnuConfigScriptsPhase () +{ + + if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then + return; + fi; + for script in config.sub config.guess; + do + for f in $(find . -type f -name "$script"); + do + echo "Updating Autotools / GNU config script to a newer upstream version: $f"; + cp -f "/nix/store/gbpkyskgzchbb6dm6lgd4l87fz89mbp6-gnu-config-2024-01-01/$script" "$f"; + done; + done +} +updateSourceDateEpoch () +{ + + local path="$1"; + [[ $path == -* ]] && path="./$path"; + local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ %p\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1)); + local time="${res[0]//\.[0-9]*/}"; + local newestFile="${res[1]}"; + if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then + echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile"; + export SOURCE_DATE_EPOCH="$time"; + local now="$(date +%s)"; + if [ "$time" -gt $((now - 60)) ]; then + echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic"; + fi; + fi +} +PATH="$PATH${nix_saved_PATH:+:$nix_saved_PATH}" +XDG_DATA_DIRS="$XDG_DATA_DIRS${nix_saved_XDG_DATA_DIRS:+:$nix_saved_XDG_DATA_DIRS}" +export NIX_BUILD_TOP="$(mktemp -d -t nix-shell.XXXXXX)" +export TMP="$NIX_BUILD_TOP" +export TMPDIR="$NIX_BUILD_TOP" +export TEMP="$NIX_BUILD_TOP" +export TEMPDIR="$NIX_BUILD_TOP" +eval "${shellHook:-}" diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..30fdeac --- /dev/null +++ b/.envrc @@ -0,0 +1,7 @@ +if ! has nix_direnv_version || ! nix_direnv_version 3.0.5; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.5/direnvrc" "sha256-RuwIS+QKFj/T9M2TFXScjBsLR6V3A17YVoEW/Q6AZ1w=" +fi + +use flake + +source_env_if_exists .envrc.local diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..2cdd3fe --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,95 @@ +module.exports = { + extends: "@gadgetinc/eslint-config", + parserOptions: { + tsconfigRootDir: __dirname, + project: ["tsconfig.json"], + }, + rules: { + "lodash/import-scope": "off", + "lodash/callback-binding": "off", + "lodash/chain-style": "off", + "lodash/collection-method-value": "off", + "lodash/collection-ordering": "off", + "lodash/collection-return": "off", + "lodash/consistent-compose": "off", + "lodash/identity-shorthand": "off", + "lodash/matches-prop-shorthand": "off", + "lodash/matches-shorthand": "off", + "lodash/no-commit": "off", + "lodash/no-double-unwrap": "off", + "lodash/no-extra-args": "off", + "lodash/no-unbound-this": "off", + "lodash/path-style": "off", + "lodash/prefer-compact": "off", + "lodash/prefer-constant": "off", + "lodash/prefer-filter": "off", + "lodash/prefer-find": "off", + "lodash/prefer-flat-map": "off", + "lodash/prefer-get": "off", + "lodash/prefer-includes": "off", + "lodash/prefer-is-nil": "off", + "lodash/prefer-lodash-chain": "off", + "lodash/prefer-lodash-method": "off", + "lodash/prefer-lodash-typecheck": "off", + "lodash/prefer-map": "off", + "lodash/prefer-matches": "off", + "lodash/prefer-noop": "off", + "lodash/prefer-over-quantifier": "off", + "lodash/prefer-reject": "off", + "lodash/prefer-startswith": "off", + "lodash/prefer-thru": "off", + "lodash/prefer-times": "off", + "lodash/prefer-wrapper-method": "off", + "lodash/prop-shorthand": "off", + "lodash/unwrap": "off", + "@typescript-eslint/no-unsafe-argument": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/ban-types": [ + "error", + { + extendDefaults: true, + types: { + Function: false, + "{}": false, + }, + }, + ], + "jest/no-disabled-tests": "off", + "jest/no-focused-tests": "off", + "jest/no-identical-title": "off", + "jest/prefer-to-have-length": "off", + "jest/valid-expect": "off", + "jest/expect-expect": "off", + "jest/no-alias-methods": "off", + "jest/no-commented-out-tests": "off", + "jest/no-conditional-expect": "off", + "jest/no-deprecated-functions": "off", + "jest/no-done-callback": "off", + "jest/no-duplicate-hooks": "off", + "jest/no-export": "off", + "jest/no-hooks": "off", + "jest/no-if": "off", + "jest/no-interpolation-in-snapshots": "off", + "jest/no-jasmine-globals": "off", + "jest/no-jest-import": "off", + "jest/no-large-snapshots": "off", + "jest/no-mocks-import": "off", + "jest/no-restricted-matchers": "off", + "jest/no-standalone-expect": "off", + "jest/no-test-prefixes": "off", + "jest/no-test-return-statement": "off", + "jest/prefer-called-with": "off", + "jest/prefer-expect-assertions": "off", + "jest/prefer-hooks-on-top": "off", + "jest/prefer-spy-on": "off", + "jest/prefer-strict-equal": "off", + "jest/prefer-to-be": "off", + "jest/prefer-to-contain": "off", + "jest/prefer-todo": "off", + "jest/require-hook": "off", + "jest/require-to-throw-message": "off", + "jest/require-top-level-describe": "off", + "jest/valid-describe-callback": "off", + "jest/valid-title": "off", + }, +}; diff --git a/.github/actions/setup-test-env/action.yml b/.github/actions/setup-test-env/action.yml new file mode 100644 index 0000000..1b1f273 --- /dev/null +++ b/.github/actions/setup-test-env/action.yml @@ -0,0 +1,53 @@ +name: "Setup test environment" +description: "" +inputs: {} +outputs: {} +runs: + using: "composite" + steps: + - uses: cachix/install-nix-action@v18 + with: + install_url: https://releases.nixos.org/nix/nix-2.11.1/install + - run: | + source <(nix print-dev-env --show-trace) + output_file="nix-env.txt" + + # Clear the output file + > $output_file + + # Loop over each variable in the environment + while IFS='=' read -r -d '' name value; do + # Skip if the variable is a function or read-only or non-alphanumeric + [[ "$(declare -p $name)" =~ "declare -[a-z]*r[a-z]* " ]] && continue + [[ ! $name =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]] && continue + + # Check if the variable value contains a newline + if [[ "$value" != *$'\n'* ]]; then + # It doesn't, so write the variable and its value (stripping quotes) to the file + echo "${name}=${value//\"/}" >> $output_file + fi + done < <(env -0) + + # useful for debugging what env is exported + # cat nix-env.txt + shell: bash + - run: cat nix-env.txt >> "$GITHUB_ENV" + shell: bash + + - name: Get pnpm store directory + id: pnpm-cache + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + shell: bash + run: pnpm install diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 0000000..0b4b499 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,14 @@ +name: "Benchmark" +on: + push: + workflow_call: + workflow_dispatch: +jobs: + bench: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.4 + - uses: ./.github/actions/setup-test-env + - name: Run benchmarks + shell: bash + run: pnpm x spec/bench/superflected.bench.ts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..c725b53 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,30 @@ +name: Release +on: + push: + branches: + - main + paths: + - "package.json" + workflow_dispatch: + +jobs: + test: + uses: ./.github/workflows/test.yml + release: + needs: test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: ./.github/actions/setup-test-env + - id: npm-publish + name: Publish to npm + uses: JS-DevTools/npm-publish@v1 + with: + token: ${{ secrets.NPM_TOKEN }} + access: public + - name: Publish release to github + uses: softprops/action-gh-release@v1 + if: ${{ steps.npm-publish.outputs.type != 'none' }} + with: + tag_name: ${{ steps.npm-publish.outputs.version }} + generate_release_notes: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..4ae7fdc --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,31 @@ +name: "Test" +on: + push: + workflow_call: +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.4 + - uses: ./.github/actions/setup-test-env + - name: Test + shell: bash + run: pnpm test + + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.4 + - uses: ./.github/actions/setup-test-env + - name: Lint + shell: bash + run: pnpm lint + + build-js: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.4 + - uses: ./.github/actions/setup-test-env + - name: Build + shell: bash + run: pnpm build diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..74323a2 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1 @@ +"@gadgetinc/prettier-config" diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..b672545 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +node_js: + - "node" + - "12" + - "10" +cache: yarn diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..fd8982a --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (c) 2014-2017 Martin Andert +Copyright (c) 2005-2017 David Heinemeier Hansson +Copyright (c) 2008 The Ruby I18n team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..421460f --- /dev/null +++ b/README.md @@ -0,0 +1,330 @@ +# superflected + +A port of ActiveSupport's inflector to Node.js. Also usable in the browser. Forked from [inflected](https://github.com/martinandert/inflected) and modified to use TypeScript and improve performance. + +## Installation + +Install via npm: + +```bash +% npm install superflected +``` + +Or via pnpm: + +```bash +% pnpm add superflected +``` + +## Usage + +The module exports an object with several utility functions. + +```js +import { pluralize } from "superflected"; + +pluralize("Category"); // => 'Categories' +``` + +Here is the complete API reference: + +### pluralize + +```js +pluralize(word: string, locale?: string): string +``` + +Returns the plural form of the word in the string. + +If passed an optional `locale` parameter, the word will be pluralized using rules defined for that language. By default, this parameter is set to "en". + +```js +pluralize("post"); // => 'posts' +pluralize("octopus"); // => 'octopi' +pluralize("sheep"); // => 'sheep' +pluralize("words"); // => 'words' +pluralize("CamelOctopus"); // => 'CamelOctopi' +pluralize("ley", "es"); // => 'leyes' +``` + +### singularize + +```js +singularize(word: string, locale?: string): string +``` + +The reverse of `pluralize`, returns the singular form of a word in a string. + +If passed an optional `locale` parameter, the word will be singularized using rules defined for that language. By default, this parameter is set to "en". + +```js +singularize("posts"); // => 'post' +singularize("octopi"); // => 'octopus' +singularize("sheep"); // => 'sheep' +singularize("word"); // => 'word' +singularize("CamelOctopi"); // => 'CamelOctopus' +singularize("leyes", "es"); // => 'ley' +``` + +### camelize + +```js +camelize(term: string, uppercaseFirstLetter?: boolean): string +``` + +By default, `camelize` converts strings to UpperCamelCase. If the second argument is set to `false` then `camelize` produces lowerCamelCase. + +```js +camelize("foo_bar"); // => 'FooBar' +camelize("foo_bar", false); // => 'fooBar' +``` + +As a rule of thumb you can think of `camelize` as the inverse of `underscore`, though there are cases where that does not hold: + +```js +camelize(underscore("SSLError")); // => 'SslError' +``` + +### underscore + +```js +underscore(camelCasedWord: string): string +``` + +Makes an underscored, lowercase form from the expression in the string. + +```js +underscore("FooBar"); // => 'foo_bar' +``` + +As a rule of thumb you can think of `underscore` as the inverse of `camelize`, though there are cases where that does not hold: + +```js +camelize(underscore("SSLError")); // => 'SslError' +``` + +### humanize + +```js +humanize(lowerCaseAndUnderscoredWord: string, options?: object): string +``` + +Capitalizes the first word, turns underscores into spaces, and strips a trailing "\_id" if present. + +Like `titleize`, this is meant for creating pretty output. + +The capitalization of the first word can be turned off by setting the `capitalize` option key to `false`. By default, this option is `true`. + +```js +humanize("employee_salary"); // => 'Employee salary' +humanize("author_id"); // => 'Author' +humanize("author_id", { capitalize: false }); // => 'author' +``` + +### titleize + +```js +titleize(sentence: string): string +``` + +Capitalizes all the words and replaces some characters in the string to create a nicer looking title. `titleize` is meant for creating pretty output. + +```js +titleize("man from the boondocks"); // => 'Man From The Boondocks' +titleize("x-men: the last stand"); // => 'X Men: The Last Stand' +titleize("TheManWithoutAPast"); // => 'The Man Without A Past' +titleize("raiders_of_the_lost_ark"); // => 'Raiders Of The Lost Ark' +``` + +### tableize + +```js +tableize(className: string): string +``` + +Create the name of a table like Rails does for models to table names. This method uses the `pluralize` method on the last word in the string. + +```js +tableize("RawScaledScorer"); // => 'raw_scaled_scorers' +tableize("egg_and_ham"); // => 'egg_and_hams' +tableize("fancyCategory"); // => 'fancy_categories' +``` + +### classify + +```js +classify(tableName: string): string +``` + +Create a class name from a plural table name like Rails does for table names to models. + +```js +classify("egg_and_hams"); // => 'EggAndHam' +classify("posts"); // => 'Post' +``` + +Singular names are not handled correctly: + +```js +classify("business"); // => 'Busines' +``` + +### dasherize + +```js +dasherize(underscoredWord: string): string +``` + +Replaces underscores with dashes in the string. + +```js +dasherize("puni_puni"); // => 'puni-puni' +``` + +### foreignKey + +```js +foreignKey(className: string, separateClassNameAndIdWithUnderscore?: boolean): string +``` + +Creates a foreign key name from a class name. `separateClassNameAndIdWithUnderscore` sets whether the method should put "\_" between the name and "id" (default: `true`). + +```js +foreignKey("Message"); // => 'message_id' +foreignKey("Message", false); // => 'messageid' +``` + +### ordinal + +```js +ordinal(number: number): string +``` + +Returns the suffix that should be added to a number to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th. + +```js +ordinal(1); // => 'st' +ordinal(2); // => 'nd' +ordinal(1002); // => 'nd' +ordinal(1003); // => 'rd' +ordinal(-11); // => 'th' +ordinal(-1021); // => 'st' +``` + +### ordinalize + +```js +ordinalize(number: number): string +``` + +Turns a number into an ordinal string used to denote the position in an ordered sequence such as 1st, 2nd, 3rd, 4th. + +```js +ordinalize(1); // => '1st' +ordinalize(2); // => '2nd' +ordinalize(1002); // => '1002nd' +ordinalize(1003); // => '1003rd' +ordinalize(-11); // => '-11th' +ordinalize(-1021); // => '-1021st' +``` + +### inflections + +```js +inflections([string locale]) +``` + +Get the inflections object for a given locale. The result can be modified to add additional inflection rules. + +```js +import { inflections } from "superflected"; +const inflect = inflections('en') +inflect.plural(/^(ox)$/i, '$1$2en'); +inflect.singular /^(ox)en/i, '$1'); + +inflect.irregular('octopus', 'octopi'); + +inflect.uncountable('equipment', 'snow'); +``` + +New rules are added at the top. So in the example above, the irregular rule for octopus will now be the first of the pluralization and singularization rules that is run. This guarantees that your rules run before any of the rules that may already have been loaded. + +### transliterate + +```js +transliterate(sentence: string, options?: object): string +``` + +Replaces non-ASCII characters with an ASCII approximation, or if none exists, a replacement character which defaults to "?". + +```js +transliterate("Ærøskøbing"); // => 'AEroskobing' +``` + +Default approximations are provided for Western/Latin characters, e.g, "ø", "ñ", "é", "ß", etc. + +This method is I18n-aware, so you can set up custom approximations for a locale. This can be useful, for example, to transliterate German's "ü" and "ö" to "ue" and "oe", or to add support for transliterating Russian to ASCII. + +In order to make your custom transliterations available, you must set them using the `approximate` helper function: + +```js +import { transliterations } from "superflected"; +const transliterator = transliterations("de"); +transliterator.approximate("ü", "ue"); +transliterator.approximate("ö", "oe"); +``` + +Now you can have different transliterations for each locale: + +```js +transliterate("Jürgen"); // => 'Jurgen' +transliterate("Jürgen", { locale: "de" }); // => 'Juergen' +``` + +### parameterize + +```js +parameterize(sentence: string, options?: { separator?: string, preserveCase?: boolean }): string +``` + +Replaces special characters in a string so that it may be used as part of a 'pretty' URL. + +```js +parameterize("Donald E. Knuth"); // => 'donald-e-knuth' +parameterize("Donald E. Knuth", { separator: "+" }); // => 'donald+e+knuth' +``` + +There's a `preserveCase` option: + +```js +parameterize("Donald E. Knuth", { preserveCase: true }); // => 'Donald-E-Knuth' +``` + +### constantify + +```js +constantify(words: string): string +``` + +Converts words (camelCased, under_scored, or dasherized) to CONSTANT_CASE. + +```js +constantify("bankAccount"); // => 'BANK_ACCOUNT' +constantify("bank-account"); // => 'BANK_ACCOUNT' +constantify("bank_account"); // => 'BANK_ACCOUNT' +constantify("Bank Account"); // => 'BANK_ACCOUNT' +``` + +## Contributing + +Here's a quick guide: + +1. Fork the repo and `pnpm install`. +2. Run the tests. We only take pull requests with passing tests, and it's great to know that you have a clean slate: `pnpm test`. +3. Add a test for your change. Only refactoring and documentation changes require no new tests. If you are adding functionality or are fixing a bug, we need a test! +4. Make the test pass. +5. Push to your fork and submit a pull request. + +## Licence + +Released under The MIT License. diff --git a/bench-camelize.acronymLower-2024-11-24_12-17-49.cpuprofile b/bench-camelize.acronymLower-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..8df9dad --- /dev/null +++ b/bench-camelize.acronymLower-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,8,20,24,30,32]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":1,"positionTicks":[{"line":136,"ticks":1}]},{"id":8,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":806,"children":[9,12,31],"positionTicks":[{"line":323,"ticks":5},{"line":297,"ticks":33},{"line":292,"ticks":43},{"line":314,"ticks":54},{"line":315,"ticks":145},{"line":327,"ticks":44},{"line":316,"ticks":482}]},{"id":9,"callFrame":{"functionName":"y","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":78,"columnNumber":10},"hitCount":0,"children":[10]},{"id":10,"callFrame":{"functionName":"g","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":48,"columnNumber":13},"hitCount":0,"children":[11]},{"id":11,"callFrame":{"functionName":"L","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":20,"columnNumber":89},"hitCount":1,"positionTicks":[{"line":21,"ticks":1}]},{"id":12,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":806,"children":[13,18],"positionTicks":[{"line":138,"ticks":7},{"line":250,"ticks":34},{"line":530,"ticks":53},{"line":139,"ticks":40},{"line":537,"ticks":15},{"line":302,"ticks":36},{"line":309,"ticks":158},{"line":539,"ticks":20},{"line":308,"ticks":19},{"line":531,"ticks":2},{"line":301,"ticks":184},{"line":311,"ticks":238}]},{"id":13,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2077},"hitCount":190,"children":[14,22],"positionTicks":[{"line":2,"ticks":190}]},{"id":14,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":13394,"children":[15],"positionTicks":[{"line":2,"ticks":13394}]},{"id":15,"callFrame":{"functionName":"","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":1102},"hitCount":1088,"children":[16,17],"positionTicks":[{"line":2,"ticks":1088}]},{"id":16,"callFrame":{"functionName":"inflections","scriptId":"263","url":"file:///Users/airhorns/Code/superflected/src/Inflector.ts","lineNumber":1,"columnNumber":3413},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":17,"callFrame":{"functionName":"capitalize","scriptId":"267","url":"file:///Users/airhorns/Code/superflected/src/capitalize.ts","lineNumber":1,"columnNumber":905},"hitCount":508,"positionTicks":[{"line":2,"ticks":508}]},{"id":22,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":53,"children":[23],"positionTicks":[{"line":2,"ticks":53}]},{"id":23,"callFrame":{"functionName":"camelize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":727},"hitCount":154,"children":[25],"positionTicks":[{"line":2,"ticks":154}]},{"id":25,"callFrame":{"functionName":"get","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":586},"hitCount":310,"children":[26],"positionTicks":[{"line":2,"ticks":310}]},{"id":26,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":815},"hitCount":78,"positionTicks":[{"line":2,"ticks":78}]},{"id":18,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":333,"children":[19,27],"positionTicks":[{"line":250,"ticks":333}]},{"id":19,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":261,"children":[21,28],"positionTicks":[{"line":139,"ticks":261}]},{"id":21,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1593,"positionTicks":[{"line":139,"ticks":1593}]},{"id":28,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":22,"children":[29],"positionTicks":[{"line":537,"ticks":22}]},{"id":29,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":159,"positionTicks":[{"line":530,"ticks":159}]},{"id":27,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":169,"positionTicks":[{"line":663,"ticks":3},{"line":665,"ticks":18},{"line":666,"ticks":26},{"line":662,"ticks":17},{"line":661,"ticks":46},{"line":670,"ticks":11},{"line":669,"ticks":36},{"line":668,"ticks":12}]},{"id":31,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2077},"hitCount":7,"positionTicks":[{"line":2,"ticks":7}]},{"id":20,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":733},{"id":24,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":258},{"id":30,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":20,"positionTicks":[{"line":301,"ticks":20}]},{"id":32,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":1,"children":[33],"positionTicks":[{"line":2,"ticks":1}]},{"id":33,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[34]},{"id":34,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[35]},{"id":35,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[36]},{"id":36,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1,"positionTicks":[{"line":136,"ticks":1}]}],"startTime":293065736126,"endTime":293066377792,"samples":[7,7,11,14,14,14,16,14,8,14,14,13,14,13,14,14,14,17,19,13,14,14,14,14,14,14,14,19,20,14,14,14,17,14,14,15,14,14,14,14,21,21,14,14,14,14,8,14,14,14,21,20,14,14,14,15,14,14,14,12,14,23,14,14,14,14,14,13,14,15,14,12,14,14,14,14,14,14,14,20,14,14,14,14,14,14,24,24,24,24,14,14,14,14,14,14,14,17,8,19,21,15,25,15,14,21,14,14,21,20,12,14,14,15,20,14,14,15,14,8,14,14,14,14,15,14,14,14,13,15,15,14,15,14,14,21,21,18,14,20,17,14,20,15,14,14,14,14,14,14,14,20,21,8,14,14,14,18,14,14,14,20,20,21,14,14,14,14,14,15,14,21,15,14,14,14,14,14,14,14,14,14,14,14,14,14,26,14,12,21,14,14,27,14,14,14,15,14,14,14,27,21,14,15,21,14,8,14,14,14,8,14,14,12,18,14,14,15,15,21,14,14,14,14,14,18,14,14,14,14,14,14,8,14,21,14,14,14,12,19,14,14,14,15,14,14,8,14,14,14,13,14,19,17,15,21,12,18,14,14,14,14,12,18,14,14,21,15,21,14,19,14,20,14,12,12,12,12,20,14,12,14,8,14,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,29,25,14,20,14,17,14,18,14,14,24,24,24,14,14,14,19,27,21,14,20,14,14,17,23,14,14,14,14,14,14,29,14,14,14,14,14,14,19,14,14,12,20,14,14,21,14,14,14,12,15,14,14,14,14,14,14,14,14,25,21,21,21,14,15,14,14,8,20,15,14,14,21,14,21,21,14,17,14,21,14,21,14,14,14,21,14,14,8,21,14,14,14,19,14,14,20,29,21,14,14,12,12,12,14,8,12,19,14,21,14,14,14,19,21,14,14,14,14,14,14,19,14,14,14,14,21,8,14,14,14,14,14,15,15,21,14,14,8,14,15,14,14,21,14,17,19,14,15,14,14,14,14,14,14,21,14,14,14,8,14,21,14,14,14,21,14,15,14,14,15,15,14,26,14,14,15,14,20,14,15,14,14,12,25,25,15,12,18,15,14,15,29,14,21,27,13,21,20,12,14,12,20,14,8,14,17,12,14,14,21,14,14,14,14,14,21,14,12,14,14,14,14,20,14,14,21,14,8,14,14,21,14,14,24,24,14,14,14,14,12,8,14,14,18,14,14,21,14,15,14,14,14,14,14,18,14,14,14,14,15,15,12,14,14,14,20,14,14,14,14,14,14,8,14,25,14,21,12,14,14,14,21,14,13,14,26,12,14,14,14,23,14,14,21,20,20,14,17,14,18,12,12,8,8,14,14,18,14,14,23,14,21,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,23,17,17,14,21,14,14,14,14,12,18,14,20,15,14,15,15,14,12,20,14,14,14,15,21,8,14,27,14,23,15,14,12,14,14,21,14,21,14,14,14,14,8,14,21,8,14,20,14,14,14,14,14,14,14,15,14,14,20,20,17,14,14,14,15,14,15,12,14,14,21,14,17,14,27,14,14,14,14,14,14,14,14,14,14,8,14,14,14,12,14,14,14,14,14,25,21,21,14,19,14,14,14,21,14,14,12,14,14,14,15,14,14,14,14,14,14,14,21,17,26,15,14,12,21,14,14,17,14,14,21,21,14,14,14,14,21,14,14,24,24,24,29,8,12,14,15,14,14,28,14,14,14,14,12,8,14,8,14,14,21,14,26,18,14,20,14,14,14,14,14,15,15,14,15,14,14,14,14,14,12,15,15,14,25,14,14,14,20,14,20,14,14,21,14,14,14,14,14,15,14,14,19,14,21,14,21,14,21,14,14,14,14,29,14,14,17,14,14,14,14,14,15,23,14,14,20,14,14,14,14,14,14,21,14,18,14,15,14,14,20,8,21,25,14,14,14,14,8,21,14,14,18,14,14,21,14,20,14,14,14,21,25,14,29,15,14,19,14,14,12,21,8,12,12,12,12,21,14,14,14,14,12,21,14,14,14,8,12,14,14,14,14,14,14,14,14,20,14,21,14,14,14,14,21,14,26,12,14,14,14,14,14,14,18,14,14,15,14,14,14,8,14,14,18,15,14,14,14,14,14,14,20,14,14,8,20,13,14,14,14,14,15,8,14,14,14,8,14,28,17,14,14,14,14,14,20,14,15,14,14,14,14,14,14,14,14,14,12,14,14,13,14,25,15,24,24,24,14,14,14,14,21,14,15,14,14,15,14,14,14,14,15,17,14,20,14,21,14,29,8,12,14,14,14,18,14,14,14,15,14,14,21,14,14,14,14,14,14,17,27,14,14,14,27,14,20,8,8,14,14,15,14,21,28,25,26,14,20,14,14,14,14,14,14,14,14,14,14,8,14,14,14,17,15,14,15,21,14,14,14,14,14,14,8,14,8,14,17,14,14,14,15,14,21,15,14,14,15,14,14,19,14,29,14,14,14,14,20,12,14,14,15,12,14,14,14,14,14,14,14,14,21,14,14,15,14,25,22,14,18,14,21,14,29,14,26,21,14,12,14,14,8,14,14,14,14,14,14,14,14,14,14,14,20,14,18,14,20,14,14,14,14,14,12,14,23,14,14,14,14,8,14,14,14,15,14,14,14,14,14,14,15,14,14,14,14,14,14,14,14,14,20,21,25,14,17,26,14,14,14,14,12,17,29,14,14,14,14,19,14,25,14,14,14,14,14,20,14,14,8,15,15,14,8,14,17,17,20,24,24,24,24,14,12,14,14,14,14,14,14,14,14,14,14,21,15,14,14,14,29,14,8,14,14,14,14,14,20,14,19,14,8,14,14,14,17,14,14,21,14,14,15,14,14,15,14,14,14,14,14,21,17,20,14,8,21,14,14,14,18,14,29,14,14,15,21,14,21,14,21,14,14,14,15,20,14,14,14,14,8,12,15,14,14,21,14,14,14,14,29,8,14,14,14,14,14,21,14,25,14,21,20,14,14,14,14,14,14,8,12,20,14,8,14,14,14,14,14,14,12,12,12,12,12,12,14,25,21,18,14,29,21,14,14,14,15,21,14,14,14,14,14,14,14,25,14,14,14,21,8,14,14,14,18,14,14,21,14,27,21,20,14,14,14,14,14,26,14,14,14,14,8,14,12,14,14,14,14,21,14,18,19,14,14,25,14,14,21,14,12,21,14,8,12,14,14,14,21,8,21,14,14,14,14,14,14,14,18,14,14,17,14,14,14,14,14,12,17,14,14,18,14,14,27,27,14,14,14,14,15,14,14,14,14,21,14,14,14,14,24,24,24,14,14,14,20,8,15,14,14,14,14,14,14,14,13,15,23,14,15,14,12,20,17,29,14,14,14,14,21,21,14,14,14,14,14,14,14,14,8,14,8,14,12,19,14,21,14,14,14,8,14,14,8,15,17,14,21,14,14,14,14,12,14,8,12,14,23,14,8,23,20,14,14,14,14,14,14,14,14,8,21,17,14,14,14,14,15,12,14,8,14,14,14,14,14,21,14,30,14,14,14,21,14,14,14,14,21,14,14,8,20,14,14,14,14,14,14,17,14,14,14,14,14,14,21,14,14,14,14,14,21,14,8,14,14,14,20,12,14,22,30,14,19,14,25,8,14,14,14,15,14,14,14,14,14,14,14,14,14,14,12,27,14,14,14,14,14,14,14,14,20,15,14,14,22,15,12,14,14,14,13,14,20,25,14,14,14,29,17,14,14,26,14,14,21,14,14,14,15,14,14,14,14,14,14,14,12,14,14,18,14,14,14,14,14,15,14,19,14,14,29,14,14,14,21,21,8,14,14,14,25,15,14,14,24,24,14,25,14,14,14,21,14,15,14,13,14,21,21,14,14,14,14,27,20,8,14,14,14,20,14,15,14,21,14,14,17,14,14,21,15,14,14,19,14,14,14,14,14,14,23,14,14,20,20,12,14,14,12,14,14,14,21,14,14,14,14,14,14,8,14,14,14,21,14,13,14,14,14,14,14,14,14,14,13,14,14,17,8,14,21,14,14,25,17,13,14,14,14,25,14,14,14,14,14,14,14,14,14,8,14,17,20,14,19,8,14,18,14,14,14,14,23,14,8,14,14,15,14,15,14,14,14,14,14,14,14,29,14,14,14,14,14,25,21,14,14,14,27,14,14,14,14,14,27,20,22,14,14,14,14,12,13,14,14,14,21,14,14,14,8,8,20,15,14,14,14,14,14,14,14,14,21,14,14,14,14,12,14,14,21,14,14,19,14,18,21,14,14,20,14,14,14,14,15,15,14,14,15,14,14,14,14,21,14,8,14,14,14,21,14,14,14,14,14,15,14,14,14,14,14,19,14,14,8,14,14,12,24,24,24,14,18,14,14,14,17,14,25,14,15,15,14,14,14,14,14,14,14,20,14,14,14,14,14,14,17,14,14,14,14,17,14,21,14,14,14,14,21,19,12,14,14,14,14,14,21,12,14,14,20,14,14,14,18,14,12,14,14,14,14,14,14,14,18,14,23,14,15,14,14,14,15,14,14,14,19,17,14,14,14,14,20,21,14,14,15,25,23,14,14,21,25,14,14,18,14,12,12,12,12,12,12,14,14,14,14,15,23,14,14,18,14,14,14,14,14,14,14,14,21,14,14,14,8,14,14,14,14,18,14,15,14,20,15,29,14,14,14,8,14,14,14,14,14,27,14,8,15,21,14,14,14,14,14,20,14,14,14,14,14,15,14,14,25,14,15,15,8,14,25,20,14,14,14,14,14,14,14,14,14,14,13,14,14,14,21,14,14,29,8,14,14,14,15,14,15,13,8,14,14,20,25,15,15,14,20,14,12,15,14,17,14,15,14,14,14,14,17,14,20,14,21,14,14,14,21,14,14,14,15,14,23,14,14,14,14,14,14,24,24,14,14,14,14,8,21,19,19,14,14,14,14,21,14,12,14,14,14,23,14,20,14,14,14,14,15,14,15,14,14,19,14,14,14,21,14,14,14,14,14,27,14,8,14,21,14,14,14,14,14,14,14,21,21,14,8,21,14,14,14,14,14,15,14,12,15,14,14,14,20,14,15,12,14,8,14,21,14,21,14,14,15,14,14,14,14,20,17,13,17,14,14,14,14,14,14,14,14,14,14,14,21,14,21,14,14,8,14,14,27,14,14,14,14,14,15,14,14,23,21,14,21,13,20,14,14,21,14,14,14,17,14,14,14,8,14,14,12,14,12,14,14,14,14,14,14,20,18,14,14,14,12,15,20,14,14,21,15,20,14,14,14,20,14,21,14,14,14,25,14,14,14,14,12,14,14,14,14,14,14,12,14,18,14,18,30,15,14,14,14,14,14,14,14,14,25,14,14,14,15,21,15,21,14,14,14,14,14,20,14,14,14,14,15,8,14,14,24,24,24,15,14,14,14,14,14,14,14,14,14,14,14,14,20,14,14,14,14,17,8,14,14,14,14,14,14,21,14,26,21,15,14,14,14,14,14,21,14,18,14,17,14,14,23,14,12,14,14,14,14,21,21,14,14,14,21,14,14,14,14,14,14,26,14,14,14,19,14,14,14,21,8,12,14,14,18,21,15,14,14,17,21,8,14,14,17,14,14,14,14,14,14,14,14,14,12,21,14,14,21,25,12,14,14,14,15,14,14,21,26,14,14,14,14,12,8,20,8,14,8,14,14,14,14,14,25,21,15,14,21,14,15,14,14,8,14,14,14,25,18,14,14,14,20,14,14,14,14,12,14,14,14,14,21,14,14,8,14,14,21,20,14,14,14,14,14,8,18,8,14,14,15,21,14,14,8,14,14,25,14,21,8,14,14,14,14,14,12,14,20,14,14,20,14,8,14,14,14,14,14,14,15,19,12,20,14,14,20,14,14,14,14,21,14,14,21,14,25,25,12,14,12,12,14,14,21,24,24,14,14,14,14,14,14,8,21,14,14,18,14,14,12,14,14,8,14,21,12,14,14,14,14,8,14,14,14,14,26,14,14,14,8,14,14,14,14,14,14,21,14,14,15,15,14,15,15,14,21,12,14,14,14,14,21,14,14,14,21,14,14,14,14,21,14,20,14,8,14,14,14,14,14,8,15,14,14,14,14,15,14,21,14,14,23,21,8,18,14,15,22,14,17,14,8,21,8,14,15,13,14,14,25,14,21,14,14,14,14,8,21,14,21,14,21,14,14,14,20,20,14,23,14,14,14,21,26,14,14,14,14,14,21,12,20,21,14,14,14,14,14,14,21,21,18,14,14,21,20,14,23,14,14,14,14,21,15,14,14,14,21,14,14,14,14,14,12,14,14,14,14,14,14,14,21,14,26,19,14,15,14,14,14,14,14,14,26,20,14,14,14,14,8,15,14,21,14,21,14,15,21,14,14,14,14,14,15,14,14,14,25,14,21,13,14,21,21,15,14,14,14,14,14,15,21,14,14,14,14,24,24,21,14,14,20,14,14,14,14,14,14,12,24,14,12,14,21,14,15,14,14,15,14,14,14,14,14,8,20,14,14,12,14,14,15,14,21,29,14,14,14,14,14,14,14,14,14,14,14,14,8,21,18,15,21,14,20,14,14,20,14,14,14,14,26,14,14,14,14,14,14,15,21,14,20,15,14,29,14,14,12,14,14,14,18,14,14,8,15,14,14,14,14,14,14,14,14,15,14,14,14,14,8,14,21,15,20,13,21,14,14,21,15,14,14,14,14,14,18,14,14,14,14,21,20,14,21,27,14,12,14,14,12,14,14,14,14,14,14,14,14,19,14,14,25,14,14,14,20,21,15,25,17,8,14,14,14,22,21,14,14,14,14,14,18,14,14,14,21,14,14,14,14,14,14,13,21,14,14,12,12,12,12,12,12,12,12,12,14,12,14,21,14,14,14,14,14,18,14,14,14,15,14,21,14,8,14,14,12,21,14,14,14,23,14,20,21,27,12,14,21,14,14,14,14,14,14,14,21,8,14,12,14,14,15,14,14,14,20,24,24,29,14,14,14,8,14,21,14,14,19,14,21,14,14,14,14,21,15,14,14,20,14,14,14,21,8,19,14,14,14,14,13,14,14,14,14,14,18,14,14,17,14,14,14,23,18,14,14,20,14,21,21,14,14,20,28,14,14,14,20,14,13,15,20,14,14,13,21,21,21,25,13,14,8,25,27,23,14,21,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,21,8,14,12,14,14,15,21,14,15,14,14,27,21,14,14,14,8,21,21,14,17,14,14,23,15,14,14,12,14,14,14,14,8,14,19,14,14,17,14,14,14,14,14,15,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,15,14,21,8,14,14,14,14,14,15,26,14,14,14,20,14,14,15,14,14,14,14,14,8,14,14,23,14,14,8,14,17,14,18,21,14,14,21,14,21,14,15,17,8,14,14,14,14,20,14,14,14,14,14,14,27,8,14,14,23,14,14,14,14,14,14,14,22,14,14,14,14,14,14,13,24,24,24,14,14,14,21,27,14,14,14,14,14,14,15,20,14,20,21,14,14,25,14,21,14,14,8,14,17,12,19,21,14,14,14,14,20,14,14,14,14,21,14,14,14,14,14,14,14,15,14,27,14,14,14,23,17,14,14,14,14,14,14,14,14,14,29,29,15,14,14,17,20,14,14,14,14,14,21,21,14,18,14,14,14,24,14,14,23,13,14,14,21,14,21,14,14,8,14,18,21,14,14,25,14,20,14,14,14,14,15,14,15,14,14,14,14,14,14,20,14,14,14,14,14,12,14,17,14,14,14,21,14,14,14,14,14,25,14,14,14,14,14,14,14,8,25,15,20,14,14,14,14,20,15,14,14,14,15,14,20,21,12,14,14,14,14,21,30,14,14,14,14,14,18,14,14,27,8,14,14,8,14,15,14,14,21,14,14,8,14,14,14,14,14,17,14,14,14,14,14,12,20,23,15,27,14,14,17,14,20,14,14,21,21,14,14,14,14,14,17,8,14,14,14,21,21,14,14,14,12,12,20,24,24,14,14,14,14,15,14,14,14,14,14,14,14,20,12,14,12,14,14,14,14,12,15,14,14,12,14,14,21,14,14,12,14,14,14,14,20,14,14,14,14,14,14,21,14,14,14,8,19,14,14,29,14,14,14,14,20,14,21,18,14,14,14,8,8,14,20,21,14,14,14,21,14,17,14,15,14,21,14,14,14,21,17,14,14,14,14,14,15,14,19,14,14,12,14,14,15,14,20,14,19,14,14,14,14,14,14,14,15,20,25,14,14,12,14,14,14,14,15,12,8,14,15,14,25,14,21,14,14,14,14,14,25,23,21,14,12,14,21,21,14,14,21,15,18,15,14,14,14,14,14,14,14,14,20,14,14,14,20,14,14,14,21,14,14,15,14,8,14,14,14,14,14,12,29,14,14,14,14,14,21,29,14,25,14,21,14,14,14,14,14,26,14,14,14,14,8,14,14,14,17,18,14,14,14,14,21,14,21,21,14,14,14,18,14,14,14,14,25,14,14,14,12,14,20,15,15,29,14,17,14,24,24,14,17,14,20,14,14,14,14,14,14,21,14,14,15,14,14,14,14,14,14,8,8,14,14,14,21,14,14,15,21,14,14,12,8,14,14,14,14,14,14,21,25,14,14,14,14,14,14,14,14,14,20,20,21,14,14,25,21,26,27,14,14,21,17,14,23,14,15,21,14,14,14,19,14,17,14,14,14,15,14,14,14,14,18,22,14,14,14,21,13,14,14,14,20,14,19,14,26,14,14,19,14,14,14,12,14,13,15,14,21,22,8,14,14,17,21,14,14,14,14,21,14,20,14,14,14,14,14,14,14,15,14,12,14,14,27,14,15,17,14,14,8,14,14,14,29,14,14,13,14,21,8,14,14,21,14,12,18,14,14,27,23,14,17,14,14,23,14,14,14,13,14,21,14,14,14,20,14,14,15,14,19,14,14,14,14,14,14,14,25,26,14,14,14,25,14,14,15,14,21,14,12,12,14,14,14,14,14,14,14,14,14,25,12,14,14,14,14,14,14,8,14,14,15,21,14,14,14,14,14,25,21,14,14,14,24,24,14,14,14,29,17,14,13,21,14,20,14,14,14,14,14,8,21,21,20,14,14,17,14,14,8,14,14,14,21,14,26,14,13,14,14,14,13,12,14,14,14,14,20,14,14,14,14,21,21,14,14,14,14,21,13,14,14,14,30,14,14,14,14,15,21,14,14,15,19,19,14,14,14,15,21,14,21,14,15,15,14,12,14,14,14,25,17,14,14,14,20,14,21,14,18,14,14,14,25,13,14,27,8,14,8,17,14,14,21,20,14,22,14,21,8,14,14,14,14,14,14,14,14,14,14,14,14,21,14,14,14,14,14,14,20,12,14,12,25,14,21,14,8,14,15,14,14,14,17,14,17,17,14,20,14,14,12,26,19,14,14,21,25,18,14,14,14,14,14,19,14,12,15,14,14,14,14,14,14,14,21,14,14,14,14,14,23,21,14,14,14,14,14,15,19,14,14,14,14,13,14,18,14,27,14,29,14,14,13,21,14,14,14,14,8,14,14,17,13,14,22,29,14,18,14,14,21,15,14,15,12,14,24,24,20,14,14,18,14,14,20,14,14,14,14,14,14,14,14,14,14,14,29,14,14,21,8,14,19,21,14,29,14,14,14,8,14,14,23,14,18,21,8,14,14,13,21,14,14,8,14,21,8,14,14,18,30,14,14,21,20,30,14,14,21,14,21,14,14,14,14,14,14,14,14,14,15,14,14,21,19,14,14,14,14,14,18,21,14,14,14,14,15,14,8,14,14,15,15,17,8,14,15,21,14,12,18,27,14,15,21,8,14,14,14,14,21,14,15,14,14,14,22,29,14,14,15,14,14,23,18,14,14,27,14,27,14,21,14,14,15,14,15,14,14,14,14,17,14,14,13,21,14,14,8,20,14,14,14,14,14,19,14,21,14,14,14,14,14,29,14,17,14,14,21,27,17,14,14,21,14,20,15,14,14,21,21,14,14,14,14,21,14,14,14,14,21,14,21,17,14,14,14,15,14,14,14,21,14,14,14,14,14,20,14,17,21,27,14,14,14,14,17,12,21,24,24,14,14,22,12,8,14,20,14,14,14,14,14,21,14,17,18,14,14,14,14,20,14,14,14,14,14,8,17,14,20,14,20,14,21,8,21,17,14,14,14,14,8,14,14,14,14,14,8,20,20,14,8,14,18,14,14,17,14,14,19,14,21,14,21,14,14,14,15,12,12,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,15,14,21,14,14,15,14,14,14,14,14,14,14,14,20,12,17,14,20,23,14,17,14,8,14,14,12,15,14,21,14,25,14,15,14,14,20,17,8,14,8,14,14,14,14,14,14,21,19,14,14,14,14,14,21,26,15,14,14,14,14,14,14,14,30,14,14,14,12,14,14,14,24,14,14,12,14,14,14,14,14,14,13,14,14,14,14,18,14,20,15,14,14,14,14,14,14,20,14,14,30,14,14,14,14,14,14,21,20,14,18,14,17,21,14,13,14,14,21,18,14,14,15,8,15,14,14,14,25,14,14,14,20,14,14,14,18,20,20,14,14,8,21,14,14,14,12,8,8,14,14,14,14,20,14,8,24,24,17,14,14,21,14,14,14,14,14,14,25,14,14,14,14,20,14,14,19,14,25,14,14,12,17,14,14,14,15,14,14,12,14,14,15,14,14,14,14,14,14,21,14,14,14,14,14,13,14,14,20,21,19,14,14,15,14,14,14,14,14,14,14,12,23,14,14,14,14,15,14,14,20,14,26,20,14,12,21,21,21,14,14,14,14,14,18,14,14,14,20,14,14,14,19,14,14,14,14,14,8,14,21,15,21,14,20,14,15,14,14,14,14,14,15,30,14,14,14,14,20,14,21,14,18,24,14,17,17,14,14,14,14,12,14,14,14,12,14,14,14,14,14,21,15,21,14,14,15,14,21,14,14,21,21,14,14,14,14,14,14,14,14,14,20,14,15,15,13,14,20,14,15,14,25,14,14,14,15,21,14,14,21,17,14,14,14,14,15,14,14,17,17,21,14,14,14,14,21,27,21,14,14,14,14,14,21,19,8,14,14,14,14,14,14,17,12,14,14,14,14,15,25,14,18,14,14,17,14,14,24,24,24,8,27,14,14,8,15,14,14,21,21,14,21,14,14,14,18,14,14,14,14,14,18,20,14,14,14,14,13,14,14,14,14,14,29,14,14,14,14,21,14,14,14,14,14,14,14,14,14,14,29,14,14,8,14,14,14,8,14,14,14,18,18,14,14,25,19,21,14,14,14,15,14,14,12,14,14,14,14,14,14,14,14,14,15,27,14,21,21,15,14,14,12,14,14,14,14,14,13,14,14,14,14,14,14,14,14,21,21,25,20,25,14,17,14,8,21,12,14,14,14,29,14,14,19,14,14,14,8,14,17,21,14,14,8,17,14,14,14,14,14,14,21,14,19,14,8,14,19,17,14,14,14,14,14,14,21,15,21,14,15,14,14,14,14,14,21,14,21,14,14,21,14,14,14,14,19,14,14,21,14,14,14,14,8,22,14,8,15,14,14,14,12,14,14,14,14,14,14,14,14,8,14,19,14,14,12,14,27,20,14,14,14,21,14,14,14,14,14,14,21,15,21,14,14,14,14,14,14,14,14,13,24,24,14,14,22,14,14,8,14,14,21,15,20,14,14,14,14,14,29,14,14,14,25,14,14,14,12,14,14,14,14,14,21,14,21,14,14,14,14,14,14,15,21,18,14,14,14,14,14,25,14,14,14,12,14,14,14,14,14,14,14,21,14,14,14,18,14,15,14,14,12,14,21,14,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,15,12,14,14,14,14,17,14,20,18,14,14,14,21,14,20,15,14,21,14,14,12,15,21,14,14,14,15,14,14,14,20,14,14,15,14,14,14,14,14,21,21,20,20,14,14,14,14,15,14,17,14,14,21,21,14,14,15,14,21,14,14,14,12,21,8,12,14,14,14,28,14,14,21,14,14,14,25,22,14,14,14,18,14,14,14,21,14,14,8,14,14,21,21,14,14,14,14,14,14,14,8,14,14,14,14,14,18,13,15,14,14,14,14,14,13,14,14,17,14,14,14,18,14,14,20,14,14,14,21,24,24,24,25,14,14,14,14,14,17,14,14,14,29,14,14,14,14,14,14,18,8,14,14,14,12,14,14,14,19,14,25,14,14,14,18,14,14,15,14,14,14,14,8,14,21,14,14,21,14,14,17,14,14,21,14,20,14,20,14,14,14,14,14,14,15,8,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,19,14,14,20,14,20,14,14,14,14,20,14,14,14,14,15,20,14,26,14,21,14,14,15,15,14,21,14,14,14,8,14,14,21,14,14,21,8,14,23,14,14,15,14,14,14,14,14,8,15,14,14,14,15,14,14,14,17,14,14,14,14,14,15,14,14,12,14,14,14,14,14,14,14,14,15,18,14,14,14,20,14,14,23,21,15,14,14,12,14,14,14,14,22,21,14,14,15,14,14,14,22,14,20,14,14,21,14,14,14,14,20,14,19,8,14,14,14,20,14,14,14,14,14,14,14,20,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,24,24,24,14,14,19,14,14,14,14,14,14,21,14,15,14,14,14,8,14,14,25,14,14,14,12,15,29,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,14,8,14,14,14,25,17,14,20,14,8,14,14,14,14,15,21,15,20,14,8,14,21,14,14,18,15,15,14,18,14,8,15,15,14,17,14,14,14,17,14,14,14,21,14,19,21,21,14,14,14,14,14,14,20,14,14,21,14,15,14,20,14,14,14,14,20,14,12,14,15,14,14,14,14,14,18,15,14,14,21,14,14,14,14,14,14,8,23,15,14,14,8,14,14,27,21,14,27,20,15,15,14,14,14,25,14,21,15,14,14,14,14,14,25,14,14,8,20,14,14,14,14,14,14,21,14,14,14,14,14,14,14,14,25,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,14,14,15,14,14,14,14,23,20,12,17,12,21,14,14,14,14,14,14,21,14,14,23,14,15,21,21,14,14,15,14,21,20,14,26,14,14,14,19,14,24,24,14,14,14,12,8,15,14,21,14,14,14,15,25,14,8,20,14,14,14,14,21,14,14,14,14,14,14,14,21,14,14,15,14,14,14,14,14,17,14,14,20,25,14,21,20,21,12,14,14,15,14,14,14,14,18,17,15,14,14,14,14,15,14,21,21,14,21,15,14,14,14,14,14,15,14,21,14,8,12,8,14,14,14,14,14,17,27,14,14,18,14,14,21,14,14,14,14,14,14,17,12,14,14,14,15,14,17,14,8,14,14,15,14,14,14,15,14,21,14,14,14,14,8,14,14,14,14,27,14,14,14,14,15,14,14,14,14,14,14,12,14,14,20,14,14,17,21,14,14,14,21,14,8,14,14,14,8,14,14,21,14,14,14,14,14,14,15,18,14,27,14,14,14,21,21,14,14,14,14,14,21,20,14,14,14,14,14,14,14,20,21,14,15,14,14,14,18,14,14,25,21,8,14,17,14,21,8,14,14,14,14,14,19,14,17,14,14,15,14,14,21,14,21,14,24,24,24,14,15,13,14,14,14,14,14,14,14,14,12,14,14,14,18,14,20,14,8,17,21,12,14,14,14,21,14,8,14,17,14,13,15,14,14,29,14,14,14,14,21,17,14,14,14,14,14,14,14,14,12,21,14,14,8,21,23,14,14,27,14,14,14,14,14,14,21,14,14,14,14,14,12,14,14,15,14,14,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,20,14,14,14,14,14,13,20,14,14,14,14,15,12,14,14,14,14,14,14,14,21,14,14,14,21,19,14,20,14,17,15,14,14,14,21,14,8,14,14,20,14,14,19,21,14,14,27,14,8,14,14,14,14,14,14,15,20,14,14,14,21,26,17,14,14,14,15,14,14,14,14,14,14,14,15,14,21,14,14,21,14,14,14,14,21,14,14,14,14,14,15,14,14,14,14,15,14,14,15,17,14,14,14,14,14,21,8,14,14,14,20,21,14,12,14,14,14,23,14,14,21,14,14,14,14,14,14,24,24,21,15,23,14,8,21,14,17,14,14,14,14,14,14,14,14,14,14,14,17,14,20,14,14,14,14,29,14,23,14,14,14,14,14,14,14,14,14,21,14,17,21,15,14,14,15,14,25,14,17,14,15,21,14,14,14,14,14,14,15,14,21,15,14,14,14,14,14,15,14,21,14,14,14,14,14,14,21,26,14,21,17,8,14,14,14,17,14,14,15,14,14,14,20,20,14,14,14,21,18,17,14,14,14,14,14,14,21,8,21,14,14,14,12,14,14,14,14,14,15,14,14,14,14,14,14,14,14,17,21,14,14,14,21,14,14,13,20,19,14,21,13,14,20,14,18,14,14,14,14,14,14,12,14,14,20,14,26,14,14,18,20,14,17,25,14,14,15,14,14,14,14,14,14,14,14,14,19,14,14,14,14,15,21,8,12,25,14,14,12,21,20,14,14,14,14,14,14,14,14,14,14,14,8,20,14,14,21,14,14,14,14,14,14,14,14,14,20,14,21,21,14,21,20,14,14,21,14,14,14,14,8,15,25,14,14,14,24,24,24,21,21,14,14,12,14,14,14,19,20,8,17,14,14,26,8,14,14,14,21,14,8,14,14,14,14,14,14,14,25,20,14,14,14,14,14,8,14,14,14,8,21,14,12,14,17,14,14,21,14,14,14,15,14,14,21,17,14,14,12,17,20,15,20,21,8,21,14,14,14,14,14,8,14,20,15,14,21,27,21,14,14,17,20,14,19,14,8,14,14,14,12,14,14,8,21,14,12,14,14,8,20,14,14,14,14,21,8,21,14,14,14,14,21,14,14,12,8,15,14,14,17,14,21,14,14,14,14,14,14,15,14,14,14,29,14,14,14,14,13,14,14,12,14,13,14,20,21,14,14,14,14,14,26,14,14,14,17,15,19,14,14,14,14,14,14,15,14,14,15,14,14,14,14,14,14,19,17,14,14,20,14,14,14,14,20,21,27,21,14,29,14,14,14,15,14,8,13,14,14,14,13,14,14,14,14,14,20,8,14,14,8,21,14,25,14,22,14,14,14,14,24,24,14,21,12,25,23,14,14,14,14,14,14,14,14,14,14,14,14,15,14,8,14,14,14,12,20,14,15,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,8,14,27,14,20,14,14,14,14,14,21,19,14,12,14,20,8,14,14,21,14,21,14,14,14,21,14,14,14,14,15,15,14,14,18,14,14,21,14,17,14,14,14,15,15,14,14,8,23,14,14,14,14,14,14,14,17,14,14,21,14,14,14,20,14,14,14,14,14,14,12,14,25,8,14,15,14,14,14,14,14,12,14,8,21,14,14,14,14,15,14,14,14,21,14,14,14,21,14,24,14,14,14,21,14,27,14,27,15,14,17,14,14,18,15,14,14,14,14,14,14,14,21,14,17,13,21,14,14,14,14,14,8,14,14,14,14,21,15,14,21,15,14,14,14,14,8,14,14,14,14,19,21,25,14,17,14,14,14,22,14,8,14,14,18,14,14,14,21,15,15,14,21,14,20,14,8,14,21,14,14,14,17,17,25,14,14,14,15,14,14,18,21,14,24,24,24,14,14,15,14,8,14,14,21,12,12,21,14,18,27,14,14,15,12,14,20,14,14,14,14,21,14,14,15,20,14,14,13,14,19,8,21,14,8,14,14,17,12,21,14,17,14,14,14,14,14,14,13,21,8,14,12,14,18,14,26,12,29,8,21,14,14,15,15,14,14,14,14,14,15,14,14,14,21,14,8,20,14,12,20,14,14,14,21,14,13,14,14,14,14,14,20,14,21,14,14,15,14,14,14,14,14,14,20,14,14,17,14,21,19,14,14,14,20,14,15,14,14,14,14,29,14,14,17,14,20,14,15,14,20,14,14,20,12,14,14,12,14,14,14,12,13,12,14,20,25,14,18,14,25,14,14,14,25,14,14,18,14,15,20,21,13,14,14,14,14,14,14,20,12,15,14,8,14,14,24,14,21,14,14,14,15,14,14,14,14,25,14,14,8,14,14,14,21,21,14,14,20,8,14,14,19,14,14,14,14,15,15,14,14,14,20,14,14,14,18,22,12,14,24,24,14,14,14,15,20,14,26,14,18,14,14,14,14,14,14,21,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,27,14,14,14,8,23,19,14,21,23,14,14,14,8,20,14,21,14,14,14,14,15,14,14,17,21,15,18,14,14,27,21,8,19,29,14,14,14,14,14,15,14,17,21,14,14,14,21,14,14,27,14,14,14,15,26,17,14,14,17,12,14,14,27,8,14,14,14,14,21,14,18,19,14,14,14,14,14,14,21,14,14,14,8,15,21,14,14,21,14,29,14,14,14,19,14,23,14,14,14,14,14,14,14,14,14,17,14,26,20,8,14,21,14,14,15,14,14,29,14,12,20,18,12,14,14,14,14,12,14,14,14,14,18,14,14,14,14,15,14,14,14,15,17,25,14,14,21,14,14,17,14,14,14,14,14,14,14,14,14,14,14,21,8,14,14,14,21,14,14,8,14,25,15,14,15,14,21,14,12,14,14,14,14,14,14,15,15,15,14,15,14,14,20,14,21,14,14,14,14,14,14,24,24,24,14,14,14,14,14,14,15,14,14,20,14,14,14,14,14,14,23,14,14,14,14,21,14,14,21,14,20,14,14,14,17,14,21,25,14,14,14,14,15,14,14,15,14,14,21,27,18,14,14,14,14,14,14,14,8,14,15,14,14,21,17,14,14,14,12,8,15,15,14,14,14,14,14,18,14,14,12,25,14,20,17,14,14,14,14,21,17,23,14,14,8,14,17,14,14,14,8,14,12,14,14,14,14,14,14,14,8,14,25,14,8,14,14,20,14,18,14,15,14,19,14,14,14,14,15,21,21,14,27,14,17,21,14,14,14,20,12,19,18,17,15,27,27,21,14,13,14,14,14,17,20,18,14,14,14,17,14,14,14,14,15,14,14,14,18,8,14,14,15,20,14,15,14,14,14,14,8,27,14,27,26,21,20,14,14,14,21,14,14,14,17,12,12,21,27,14,14,14,14,25,14,14,15,14,14,14,14,29,21,14,23,14,14,14,20,15,27,14,14,14,14,15,21,14,14,20,14,14,14,14,14,14,14,14,24,24,24,14,14,12,14,14,14,14,14,14,8,8,19,14,14,14,14,14,14,28,14,21,14,14,21,20,14,14,14,22,13,14,20,19,14,14,14,14,14,18,14,14,8,14,14,14,14,14,21,14,8,14,20,14,17,14,14,14,14,14,14,14,14,14,8,14,14,21,14,12,14,14,14,8,14,14,14,14,14,14,20,14,14,14,20,13,30,14,14,15,21,14,29,17,14,14,14,14,14,17,14,20,18,21,14,14,17,14,8,14,14,12,14,18,14,14,14,14,14,18,21,8,14,14,14,14,14,14,12,15,14,14,15,14,14,21,14,14,15,15,21,21,14,14,21,20,14,14,14,14,14,14,14,14,18,21,14,15,13,21,14,21,14,15,23,14,14,15,15,14,14,14,12,14,14,14,14,29,21,14,14,14,8,20,8,21,14,8,14,17,14,14,8,14,25,14,14,21,14,22,14,21,14,14,14,14,14,21,13,8,21,14,21,14,14,14,25,14,8,14,17,14,8,13,15,14,14,14,14,14,14,14,14,24,24,24,14,15,14,12,14,8,21,14,14,14,22,14,14,14,15,14,19,14,25,14,14,14,14,20,14,21,21,21,17,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,8,14,14,14,14,14,14,14,17,29,14,14,14,14,14,14,14,17,14,28,14,21,26,21,12,14,14,14,14,14,14,29,14,14,13,26,14,14,14,18,20,15,21,20,20,20,21,14,14,14,20,14,19,28,8,14,14,14,14,14,29,15,14,14,14,21,14,14,20,14,17,17,14,14,14,20,14,14,21,15,19,21,14,20,14,19,14,14,14,14,21,20,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,14,8,14,21,14,14,27,15,14,21,14,14,14,19,14,21,17,14,8,14,14,21,14,14,14,14,14,14,14,14,18,14,14,15,14,15,14,21,14,17,14,14,17,14,8,15,15,21,14,14,8,20,14,14,14,14,14,14,14,14,14,27,14,14,14,14,8,14,20,14,17,21,8,21,21,20,12,14,14,24,24,24,14,23,17,19,14,14,20,14,21,14,14,14,8,21,8,20,14,14,8,14,14,19,14,13,14,14,18,14,14,14,14,8,27,14,14,14,18,27,14,27,14,14,14,14,20,14,14,14,14,14,14,14,21,14,21,14,14,14,14,14,18,14,14,14,14,14,23,14,14,14,14,14,14,14,14,14,25,14,25,14,13,14,8,14,14,26,14,8,14,14,21,14,15,21,20,14,12,14,15,14,14,14,14,15,14,12,14,14,21,21,14,14,20,14,14,17,14,14,14,14,14,20,25,14,14,14,14,14,14,14,14,23,14,14,14,14,14,14,15,15,27,14,14,14,14,29,12,18,15,14,14,14,14,14,14,14,15,8,14,14,12,14,14,14,27,12,13,23,14,21,14,14,20,14,21,14,15,14,15,14,21,14,14,14,14,20,14,12,14,14,14,12,20,14,21,14,15,14,14,14,14,14,14,14,14,14,14,14,15,14,17,12,14,15,14,14,14,21,12,14,14,14,14,27,14,14,14,21,12,14,14,24,24,15,14,14,14,18,14,14,14,14,14,14,14,25,14,17,17,14,26,14,15,14,29,8,21,14,14,14,14,14,20,14,20,14,21,14,14,14,14,14,14,20,14,14,14,17,17,14,14,14,20,14,14,14,14,14,15,14,12,14,14,14,14,14,14,14,14,14,14,14,21,14,20,14,14,14,14,14,14,20,12,14,14,14,21,14,14,14,14,14,14,14,21,21,14,18,20,15,14,14,21,14,14,14,15,14,14,14,13,15,14,14,14,14,29,14,12,14,14,14,12,14,14,14,14,14,14,14,14,15,14,14,14,13,14,8,14,14,14,15,14,14,20,18,29,21,14,14,8,14,14,14,14,14,14,29,23,14,14,12,15,15,8,17,20,27,14,14,8,14,14,14,15,15,12,25,14,14,14,14,14,21,21,21,14,12,14,12,15,14,8,12,14,15,13,8,14,14,14,14,14,14,14,15,14,14,14,27,14,15,14,20,14,14,15,14,19,20,15,17,18,19,19,21,14,14,14,20,17,8,18,24,24,14,14,14,14,17,14,14,14,14,14,14,14,17,14,14,14,14,14,8,14,15,14,14,14,14,14,14,15,14,8,8,27,14,14,15,21,14,8,14,14,14,14,25,14,14,17,21,14,14,8,14,14,14,14,21,14,14,14,14,15,14,15,14,17,14,17,20,14,14,25,21,12,14,14,14,21,14,14,17,8,15,14,14,21,14,14,14,14,23,14,21,26,19,8,14,8,20,17,19,14,12,20,17,14,21,15,14,19,14,14,14,14,14,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,29,27,13,14,14,14,14,15,23,14,14,20,21,14,21,19,14,14,12,17,14,14,8,14,14,14,14,14,20,14,14,14,14,15,14,29,18,14,14,14,14,14,29,21,14,14,20,17,14,21,14,27,14,14,21,15,20,14,14,8,14,14,14,14,14,25,14,14,14,14,14,14,14,14,14,14,22,15,21,21,14,21,21,23,15,14,14,14,20,14,14,24,24,24,14,20,14,14,14,14,29,14,21,19,14,21,21,14,14,14,14,14,14,14,14,14,14,14,14,14,25,14,14,15,14,17,15,12,14,15,21,15,14,14,15,14,8,17,14,15,14,20,21,14,27,21,14,14,13,14,12,14,28,15,21,14,14,12,14,27,8,14,8,14,14,21,21,29,21,8,14,12,14,15,14,14,14,14,14,15,14,29,14,27,14,14,15,14,14,15,20,14,14,18,15,14,14,14,15,17,14,14,14,12,14,14,14,14,23,14,14,14,14,14,19,15,14,14,8,14,14,14,14,14,14,14,26,14,14,14,27,20,14,14,14,14,14,14,14,14,13,14,15,14,14,14,14,14,14,12,14,21,26,8,25,14,14,14,14,14,29,21,14,21,14,14,14,14,14,8,15,14,14,14,14,19,14,14,14,14,25,12,23,14,14,14,14,14,14,14,14,14,19,14,19,15,21,14,14,14,13,12,14,14,14,14,14,14,12,14,14,14,14,14,18,14,14,25,20,14,24,24,14,12,20,14,14,20,14,14,22,14,14,21,14,25,14,14,26,14,14,14,14,21,14,15,14,14,12,14,14,14,15,14,14,17,12,14,14,21,14,14,15,14,21,14,25,14,14,25,14,21,14,14,14,14,14,14,14,14,14,20,21,25,14,14,18,14,20,14,12,14,21,25,14,14,14,14,14,14,14,14,14,19,14,12,17,14,14,15,14,14,14,14,14,14,14,18,15,14,14,21,14,14,17,14,14,14,14,14,14,14,14,14,14,14,21,14,14,14,15,12,14,14,17,14,12,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,21,14,14,14,21,14,14,14,14,14,14,14,14,14,20,27,14,13,14,14,14,17,14,14,14,17,14,14,8,14,14,20,20,14,21,14,14,14,14,14,20,13,14,21,14,14,14,14,14,15,21,19,14,21,14,14,14,14,14,14,14,12,14,20,19,14,14,25,8,17,21,8,14,14,14,20,14,12,15,14,14,14,14,14,14,14,12,14,14,24,24,14,15,14,14,21,8,14,18,12,21,14,14,14,21,26,21,14,14,14,14,14,14,14,14,14,14,8,14,14,14,15,14,14,14,14,20,21,14,14,14,21,21,14,8,21,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,14,21,14,14,14,25,27,17,14,14,14,14,14,21,14,14,14,14,14,8,14,19,14,20,14,21,14,14,20,8,21,14,14,14,29,14,14,14,23,19,14,14,14,25,14,14,12,14,27,14,20,14,14,14,13,18,14,14,14,14,8,14,20,29,14,15,21,14,20,8,17,14,14,14,21,14,14,8,14,14,17,14,14,15,14,14,15,14,14,14,12,14,14,14,19,14,12,14,14,14,14,14,14,21,14,21,14,17,15,14,14,25,14,14,14,14,14,14,14,14,12,14,14,14,21,14,20,20,14,15,20,14,14,14,14,21,12,14,14,14,14,21,26,14,18,14,14,14,14,14,13,14,14,25,14,17,14,14,21,14,12,14,14,14,14,24,24,24,14,14,14,14,8,14,21,14,8,14,29,14,14,14,14,14,14,14,14,14,19,20,15,20,14,14,28,21,27,14,14,14,14,14,14,14,14,12,14,25,14,21,14,15,14,14,14,14,15,14,19,14,19,14,25,15,14,14,12,12,14,14,14,14,14,14,15,20,14,21,21,14,12,14,14,14,20,17,12,14,14,21,14,13,21,14,19,12,14,29,14,21,14,21,14,14,14,12,14,14,14,14,14,14,15,14,14,14,14,14,14,14,14,12,14,14,21,14,14,14,14,14,15,21,14,8,8,14,14,14,21,20,14,14,18,14,14,14,14,14,14,29,8,20,20,14,14,14,8,14,8,14,14,14,14,14,14,20,14,14,14,25,14,8,15,15,14,14,21,14,14,14,14,21,17,8,14,14,13,14,21,15,15,14,15,13,21,14,14,14,14,14,14,14,14,14,14,21,14,14,14,14,14,14,14,14,20,17,15,8,25,21,15,17,14,14,14,14,14,20,14,14,20,14,12,14,14,18,14,8,18,27,24,24,15,14,18,14,18,14,21,14,14,20,14,14,17,14,14,14,14,14,14,14,14,14,18,19,14,14,14,14,14,21,20,20,14,14,14,14,14,14,8,17,21,21,17,14,14,14,14,21,14,14,12,14,14,14,15,14,12,27,14,21,14,8,21,14,14,21,14,14,14,14,14,14,14,14,14,20,20,14,14,8,15,14,8,21,14,15,14,14,21,14,17,23,14,14,14,12,21,14,14,14,14,14,14,14,14,23,21,21,14,14,21,14,14,14,14,14,14,20,15,8,21,14,14,14,21,14,14,14,8,14,14,21,14,21,14,14,12,14,14,14,20,14,21,18,14,14,14,15,14,14,14,14,14,8,14,14,8,14,14,14,21,21,20,14,14,14,14,14,14,14,23,14,14,14,14,14,14,14,14,14,22,22,14,15,17,14,15,14,14,14,14,20,14,15,14,14,14,14,14,14,14,21,14,14,21,17,20,21,12,14,14,8,14,17,14,21,14,21,14,14,14,14,14,14,20,14,14,14,14,21,12,20,24,24,14,21,14,14,14,14,14,14,20,20,15,8,14,14,14,12,21,15,21,14,14,12,14,20,14,14,14,21,21,14,20,14,15,25,14,17,18,14,14,14,14,14,14,14,14,14,14,14,14,30,14,14,14,21,19,27,20,14,14,8,17,14,14,15,21,14,14,14,14,15,14,29,14,14,14,14,14,14,14,14,14,21,21,21,14,14,13,20,21,14,14,14,21,14,28,14,14,14,8,20,14,14,25,14,14,14,14,14,14,14,14,14,15,21,14,14,14,14,14,14,14,15,14,14,8,14,14,15,17,14,14,8,14,23,25,14,15,14,14,14,17,14,14,14,8,14,14,14,15,12,14,14,14,18,14,8,14,14,14,20,8,14,14,14,14,14,19,14,14,14,14,14,12,14,14,25,14,14,17,14,14,14,14,14,14,18,18,20,14,14,25,25,14,14,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,12,14,21,14,14,14,14,14,21,14,14,14,14,15,14,14,14,14,14,17,14,14,14,14,14,14,14,19,14,14,14,14,12,14,14,24,24,24,14,17,14,14,20,14,14,12,14,14,14,25,14,14,14,14,15,14,14,19,14,21,14,14,14,21,14,14,15,14,21,14,15,14,14,14,14,14,14,14,8,19,14,8,12,14,12,14,14,27,15,8,22,14,13,14,21,14,14,14,14,25,14,18,14,8,14,14,14,13,14,14,14,14,14,14,14,14,12,14,21,14,21,14,13,20,8,17,17,14,14,18,14,14,14,14,14,14,14,14,14,8,14,15,17,17,14,25,14,13,14,18,14,14,14,14,8,17,20,8,12,14,14,14,14,19,21,8,17,14,15,18,14,21,14,14,21,14,14,21,14,14,14,14,14,14,14,15,21,14,8,21,8,14,15,14,15,14,14,14,15,14,14,14,15,14,14,14,14,20,14,14,14,14,8,14,17,8,14,14,14,14,14,14,14,21,20,14,21,21,20,25,18,14,14,21,14,14,14,14,14,20,26,14,21,14,14,20,14,14,14,8,14,14,14,14,14,14,12,15,14,12,14,20,14,14,14,14,14,26,14,14,24,24,15,27,14,14,14,8,21,14,14,14,14,14,17,14,21,14,14,25,14,14,14,14,17,14,14,14,12,21,21,14,14,15,14,23,14,14,23,14,14,14,14,14,14,14,15,14,14,17,21,14,14,17,20,12,14,19,14,12,14,14,21,27,14,14,14,14,18,14,14,14,21,14,21,21,25,12,14,14,14,14,14,14,14,20,21,28,15,15,14,8,14,14,14,20,14,18,14,21,29,14,14,14,14,21,21,14,12,13,20,14,14,14,21,14,14,15,14,23,14,21,21,14,17,14,15,15,14,15,14,19,14,17,13,14,23,25,14,15,14,14,14,14,14,14,21,14,21,14,12,14,8,14,14,14,14,14,14,14,14,14,14,21,14,14,21,14,14,14,14,21,14,14,14,17,17,14,14,15,14,14,14,15,8,14,14,14,14,25,14,14,14,14,18,14,14,8,14,29,14,12,14,14,14,14,14,14,17,20,13,14,14,18,29,15,15,14,14,14,14,14,8,23,14,14,14,14,14,14,14,14,14,14,25,24,24,24,14,20,18,21,14,14,14,15,14,14,22,14,12,14,14,14,21,14,14,14,21,14,21,14,21,14,14,14,14,14,8,14,14,14,15,8,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,21,14,14,14,14,12,8,14,18,13,8,17,20,14,21,14,14,21,17,13,21,21,8,14,21,25,21,13,14,21,14,14,13,14,14,14,14,14,14,14,21,14,14,14,18,14,14,15,14,15,14,14,21,14,21,17,15,14,14,14,14,21,20,17,14,8,14,21,14,14,14,21,14,15,14,14,14,15,14,12,15,21,14,14,14,19,14,14,14,19,14,14,14,14,21,20,14,14,14,12,8,14,14,14,14,29,14,20,14,14,14,14,14,15,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,21,14,14,20,14,21,14,15,14,14,20,19,14,21,12,14,14,14,20,21,12,19,14,14,14,21,14,14,14,14,29,14,20,14,14,14,14,14,13,14,14,14,14,14,14,21,14,17,14,17,8,24,24,24,14,14,14,14,14,14,14,20,14,14,14,13,15,14,14,15,18,14,14,14,14,21,14,27,14,14,14,21,14,18,14,12,14,14,14,23,14,14,14,12,21,12,14,12,14,14,21,14,14,14,14,14,14,20,14,14,14,14,14,21,14,8,14,17,14,8,14,15,14,14,14,8,8,14,8,8,21,15,18,8,14,14,14,15,14,14,14,18,14,14,14,14,14,14,17,20,21,21,14,14,14,8,14,14,14,14,26,14,14,15,14,21,18,21,14,14,14,17,15,17,14,14,14,17,14,14,14,14,14,30,14,14,14,25,15,14,14,14,12,14,14,14,14,21,15,25,12,14,14,14,14,8,14,8,21,27,14,14,14,15,14,14,14,25,15,15,14,8,14,14,14,14,21,15,14,14,14,14,29,14,21,14,8,14,14,14,14,14,19,15,14,14,14,14,14,14,14,14,14,17,14,25,14,14,21,14,21,14,14,14,12,14,21,14,14,21,8,14,14,14,14,14,15,21,14,15,14,15,17,14,14,21,14,14,24,24,14,14,14,14,14,14,14,18,14,12,14,14,13,14,14,15,14,14,14,17,12,14,14,14,14,14,14,14,14,21,14,8,17,14,17,20,18,14,14,14,14,21,23,14,14,20,14,14,14,14,14,14,14,8,14,14,14,14,22,14,14,14,14,14,21,21,14,8,14,26,14,14,21,14,14,15,14,14,14,17,14,14,15,14,29,14,21,14,14,14,14,12,14,14,14,21,15,21,14,21,21,14,14,14,14,18,14,21,14,15,14,14,21,21,8,14,14,14,14,14,14,14,8,14,15,14,15,14,17,14,14,21,14,14,14,21,14,14,14,14,21,14,14,14,14,14,25,14,14,14,14,14,14,25,14,15,14,14,14,17,19,14,14,14,14,14,14,14,14,27,14,14,14,15,14,21,14,15,21,14,14,14,14,15,12,14,20,14,14,12,12,14,14,14,15,15,14,14,14,12,26,18,14,8,14,14,14,15,14,12,14,14,8,21,14,14,14,14,25,14,14,14,18,21,21,21,8,14,14,14,12,14,14,12,24,24,14,14,14,14,14,14,14,17,14,14,14,14,14,14,26,14,14,14,14,14,14,14,18,18,14,14,8,14,21,14,21,14,14,14,14,14,14,14,14,21,14,14,21,8,14,14,14,12,13,14,8,12,14,14,14,14,8,14,14,12,15,15,20,14,14,14,15,14,21,21,14,14,14,14,14,14,14,14,20,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,12,14,14,14,14,14,21,14,14,21,21,18,21,12,14,14,14,8,14,14,8,14,27,14,14,14,14,14,14,14,12,14,14,14,21,14,14,14,29,14,21,12,14,14,14,14,14,14,14,14,20,25,14,14,14,14,20,14,14,14,14,14,14,14,14,15,25,14,14,14,15,14,14,14,20,18,14,14,14,21,14,14,14,14,14,14,14,14,21,21,15,14,14,21,17,21,13,14,14,15,14,14,14,14,14,14,14,14,14,14,25,21,14,14,14,14,14,14,14,14,14,21,14,14,14,14,14,18,21,19,14,14,14,8,15,14,14,24,24,24,21,14,14,15,14,14,12,12,14,14,14,14,19,8,21,14,14,14,14,25,14,14,19,21,18,14,14,14,18,21,21,14,21,14,12,14,14,14,21,14,14,14,20,18,14,14,14,21,14,14,14,14,14,14,21,21,20,27,22,21,14,14,14,13,25,25,14,15,21,14,14,14,14,18,14,14,26,14,13,14,14,14,14,14,14,12,19,15,14,14,14,14,8,14,14,12,14,21,14,14,21,17,21,8,14,8,21,19,14,14,14,23,14,14,15,14,15,15,21,13,14,21,14,21,21,12,14,14,14,14,12,14,14,14,25,14,14,20,15,22,14,14,8,17,14,14,14,14,14,14,25,14,15,17,15,14,14,14,13,12,14,14,15,21,14,14,19,8,20,14,14,14,14,21,12,14,14,17,14,25,15,8,14,14,21,14,14,14,14,14,14,14,14,19,14,14,21,20,19,8,14,14,19,14,14,19,8,12,14,14,14,18,14,14,14,8,14,14,14,14,14,14,14,20,14,14,14,18,14,14,14,24,24,24,14,12,21,14,14,14,21,19,14,14,14,14,25,14,14,13,14,14,14,26,20,14,14,14,14,14,14,14,23,23,14,14,14,14,15,14,14,14,14,21,21,14,14,14,14,14,14,14,14,15,14,14,14,14,17,21,14,14,14,14,14,14,14,14,21,21,14,14,15,17,21,29,27,29,14,14,14,14,21,14,21,14,14,14,14,21,14,20,14,8,12,14,14,12,14,14,21,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,21,21,12,14,14,15,14,14,14,14,15,14,14,14,14,14,21,14,14,14,14,17,20,21,14,14,14,18,14,21,20,20,14,14,14,14,14,12,14,14,14,14,14,18,14,14,20,18,12,15,14,14,14,12,20,12,14,14,21,14,12,19,14,30,21,15,14,14,14,14,29,20,20,8,14,14,21,14,14,21,15,14,14,14,14,27,14,12,18,21,14,14,21,14,14,14,14,20,14,17,14,8,15,18,14,14,28,21,14,14,14,14,14,12,14,14,14,24,24,20,14,14,14,14,14,14,14,14,17,14,8,14,14,14,14,14,14,17,14,21,14,19,14,8,14,14,14,14,14,14,14,14,14,14,14,14,14,8,15,17,14,21,14,14,14,20,14,20,20,21,14,15,20,21,14,14,19,14,14,14,14,21,14,14,14,14,19,28,14,25,14,15,21,8,14,14,19,14,20,27,14,14,14,27,14,8,14,14,14,14,14,21,14,14,14,21,14,14,15,14,14,26,23,25,21,14,14,15,15,15,15,14,25,14,21,14,14,14,14,14,15,14,14,21,20,21,15,14,14,14,14,14,12,14,14,14,14,14,14,14,23,14,14,21,18,18,14,14,14,14,15,14,21,21,20,14,27,15,21,14,14,19,14,17,14,14,14,14,14,25,14,29,14,12,8,14,14,18,20,14,21,8,14,14,14,21,14,14,14,14,25,21,14,14,14,14,14,21,14,8,14,14,14,14,14,21,14,14,14,17,26,14,14,25,21,14,14,14,14,14,13,19,14,8,14,23,14,14,14,19,15,14,14,21,17,19,14,19,14,15,19,14,14,24,24,14,14,14,14,21,15,14,18,14,14,14,14,14,14,14,14,21,14,14,23,14,21,8,14,20,14,14,14,20,14,21,14,14,14,14,14,14,14,8,17,14,14,14,14,21,14,27,15,21,14,21,14,14,14,14,14,14,14,14,14,14,8,14,14,14,13,14,14,14,20,14,21,14,14,23,21,14,20,14,15,14,12,14,14,14,14,14,15,14,14,14,15,14,20,14,29,14,12,14,14,17,14,8,14,14,17,14,12,25,19,8,14,14,14,21,14,18,25,15,14,14,8,20,14,14,14,14,12,14,27,14,14,14,18,14,17,14,14,14,14,14,14,15,14,21,14,12,18,14,14,14,14,14,14,14,20,14,14,8,14,14,14,20,14,14,21,14,14,14,14,14,8,14,14,14,14,14,14,14,20,14,14,14,14,27,21,14,14,14,17,12,14,27,21,14,15,14,14,14,14,14,15,21,19,14,15,21,14,14,14,21,14,14,29,14,26,14,14,14,14,14,15,14,14,14,12,24,24,12,14,14,8,19,15,21,14,20,14,14,21,14,12,14,14,15,14,12,14,12,14,14,14,14,14,14,15,21,17,18,14,8,14,12,14,26,14,12,14,14,15,14,14,14,17,14,25,14,20,14,20,15,12,14,15,14,14,14,14,14,14,14,19,14,21,14,14,14,8,14,14,14,25,14,8,14,17,14,14,14,21,14,14,14,15,14,14,14,14,14,14,14,8,14,21,14,15,21,8,14,14,14,14,14,14,13,15,21,14,14,12,21,14,14,21,20,14,13,21,14,14,14,20,21,14,14,14,14,8,21,15,14,14,21,17,14,18,14,14,14,14,15,14,8,14,14,13,18,14,15,20,14,14,14,15,14,14,25,15,14,12,14,14,14,21,15,14,15,14,20,14,14,14,20,14,14,15,14,14,21,14,21,14,22,14,12,14,21,19,29,12,21,18,12,14,14,14,14,8,14,15,21,14,15,21,14,21,13,15,21,14,19,21,14,14,21,12,20,25,14,14,8,14,14,14,21,14,14,14,14,24,24,14,29,14,14,14,18,21,14,14,13,14,14,14,21,12,14,14,18,19,14,20,20,25,20,15,14,12,14,14,14,8,12,15,8,14,21,14,19,14,14,14,14,14,14,14,14,14,23,14,14,17,12,14,17,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,21,14,14,23,12,14,15,29,14,14,14,13,12,14,14,8,15,21,14,8,14,8,14,14,14,14,14,21,14,14,14,14,14,13,14,27,14,14,21,13,13,22,22,14,15,14,14,14,14,21,14,14,14,14,8,14,14,8,14,8,14,14,14,14,14,14,14,14,14,14,14,21,14,14,14,14,27,14,20,14,20,21,14,14,21,14,14,25,14,14,14,14,14,14,14,20,15,14,14,14,14,15,14,25,20,14,14,14,14,29,17,14,14,14,14,20,21,14,21,14,15,20,14,20,14,20,14,14,14,21,12,14,14,14,14,14,14,14,21,14,14,14,14,15,15,14,14,21,14,12,12,14,14,14,15,14,14,25,21,14,14,14,15,24,24,15,14,14,14,14,21,14,14,17,18,14,14,14,14,31,14,12,14,15,14,14,28,14,14,14,14,15,21,14,21,21,14,14,21,14,29,14,14,14,8,14,14,14,14,14,14,14,14,14,14,14,14,8,14,12,14,14,19,14,18,14,14,14,14,21,14,14,14,21,12,21,14,21,14,21,14,14,14,14,17,27,14,20,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,25,17,26,21,8,14,14,21,14,12,14,14,12,14,14,14,12,14,12,25,14,8,14,12,14,30,14,14,20,14,18,14,14,14,14,14,15,14,14,14,14,19,25,14,14,8,14,14,14,25,14,14,14,15,14,14,13,14,14,8,15,14,14,27,15,17,14,14,14,8,14,15,14,14,14,14,14,14,14,14,14,15,13,17,14,20,14,8,12,21,17,14,14,14,14,14,14,18,21,14,15,20,14,14,14,14,12,12,14,14,12,14,14,14,14,14,14,14,17,12,14,24,24,24,14,8,14,15,25,14,8,21,14,14,14,14,12,14,27,15,17,14,14,14,14,14,14,25,14,14,14,14,14,14,12,21,20,14,13,14,21,14,14,14,14,14,14,14,14,14,14,14,14,20,20,21,20,21,21,14,12,14,14,14,20,14,14,12,14,14,14,14,12,12,14,14,20,8,14,14,14,21,14,14,8,14,13,14,14,14,14,14,14,14,12,14,14,12,14,23,14,14,14,14,14,8,14,13,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,15,8,15,14,14,14,14,14,14,21,15,14,20,14,14,14,14,14,14,14,14,25,14,17,14,20,14,15,12,14,14,14,23,18,19,14,15,14,17,14,14,14,14,20,15,20,18,14,14,20,14,14,14,21,14,8,14,14,21,21,21,14,14,21,14,14,15,14,14,14,12,14,20,14,20,21,14,21,20,26,14,14,8,20,14,14,14,14,14,14,14,14,21,14,14,14,14,14,14,15,15,8,8,21,14,14,14,14,24,24,25,21,14,8,14,14,14,14,14,14,14,14,15,14,14,14,14,12,21,29,14,14,15,14,15,25,14,14,14,17,23,8,21,14,14,14,14,23,19,29,14,14,17,14,12,21,14,19,21,14,14,14,14,21,12,14,14,8,14,21,14,14,14,14,17,29,14,14,14,25,14,14,21,14,21,8,14,14,25,14,20,14,14,14,15,25,14,20,14,14,14,14,14,21,14,26,14,14,8,14,14,17,12,20,14,14,14,14,21,14,25,14,14,14,15,14,14,14,15,14,14,14,20,14,14,14,19,14,14,17,15,14,14,14,18,8,14,14,13,27,14,18,14,14,14,14,14,15,14,14,14,14,14,14,14,14,14,14,25,14,8,14,14,14,14,14,14,14,21,14,14,15,14,14,17,14,14,14,8,20,8,21,14,12,14,14,14,17,14,14,20,14,14,14,27,14,27,20,14,15,25,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,12,12,14,15,8,14,14,14,8,14,14,14,24,24,29,14,29,14,14,14,21,19,8,14,14,14,14,14,14,25,14,14,14,14,21,14,14,14,19,14,14,14,14,15,14,14,12,14,14,14,14,14,15,23,14,8,12,14,14,14,14,14,25,25,14,20,14,12,21,14,14,14,14,14,8,20,8,14,14,14,14,14,27,14,14,14,30,14,14,15,14,14,14,25,15,14,14,14,14,14,14,14,14,14,14,14,14,14,14,23,14,25,14,17,18,14,14,14,14,21,14,14,14,14,20,14,14,21,14,17,14,14,14,14,14,14,14,21,21,14,12,8,14,14,17,19,14,14,14,14,14,29,14,14,14,14,14,14,21,14,17,14,27,14,14,14,14,14,20,14,14,14,20,25,14,14,14,14,14,14,14,14,14,21,14,14,14,14,14,17,14,14,14,21,20,12,14,21,8,15,21,20,14,14,12,14,14,21,8,8,15,14,14,14,20,14,14,14,14,14,14,21,14,14,21,14,21,14,14,14,14,14,14,14,25,14,14,14,14,14,15,21,18,14,14,24,24,24,12,27,14,14,21,12,14,14,14,12,21,14,15,18,14,14,14,21,21,14,14,14,14,14,14,14,21,14,14,27,26,14,14,12,17,8,14,17,14,14,17,14,14,14,14,29,14,14,14,14,14,14,14,14,14,14,14,17,14,14,8,14,12,15,25,14,14,29,14,15,14,14,14,17,21,15,20,17,21,14,15,21,14,14,15,14,14,14,14,14,14,14,21,14,14,21,14,14,14,25,19,14,8,14,14,17,14,14,8,14,14,14,14,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,14,14,14,25,14,14,14,14,18,14,14,21,14,12,14,14,14,12,12,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,27,14,14,15,17,14,15,14,14,14,14,8,14,18,14,14,20,14,14,14,25,14,14,21,13,14,14,12,29,12,8,23,14,14,14,14,8,20,14,21,14,14,29,14,25,14,14,15,14,14,14,15,14,14,14,12,14,14,14,18,14,14,23,14,14,21,24,24,14,12,14,12,8,14,17,15,12,15,25,14,14,20,14,14,21,12,8,14,14,13,14,14,14,14,12,8,20,14,18,15,14,14,14,14,20,14,21,15,14,14,14,14,8,8,8,14,21,14,14,14,14,14,14,14,19,14,14,21,14,14,25,14,18,29,14,14,14,8,14,23,14,14,14,14,14,14,14,15,14,29,29,14,14,14,14,14,21,14,14,15,14,14,14,13,8,14,14,28,15,14,14,19,14,14,14,14,14,27,14,8,21,25,14,15,14,14,14,14,8,14,14,14,14,14,14,14,12,14,15,14,14,14,15,14,14,14,19,14,14,14,14,15,14,14,8,15,14,14,20,14,14,14,14,20,14,14,17,15,21,14,14,14,15,14,21,14,15,21,14,8,14,14,8,14,21,14,13,14,14,14,13,17,14,14,14,14,20,14,15,14,14,14,14,14,8,14,14,14,8,12,12,21,14,14,12,14,12,14,14,14,14,15,19,20,14,14,14,14,24,24,24,24,14,14,14,14,14,14,14,17,14,14,14,12,21,14,14,21,14,8,14,15,21,15,14,14,14,27,12,14,14,25,14,14,8,12,20,14,14,21,14,14,14,14,14,18,14,14,14,14,14,14,14,20,14,20,21,14,29,20,14,17,13,14,14,15,20,14,14,14,14,15,14,14,14,14,8,14,14,14,14,14,20,12,14,14,21,14,14,14,14,14,14,14,14,14,21,14,15,14,20,8,14,12,20,25,17,14,14,21,14,14,29,14,14,14,14,12,14,14,14,17,14,12,14,14,14,13,14,20,14,14,14,14,21,21,25,12,14,14,14,20,15,17,12,8,14,14,14,14,17,20,14,14,14,15,14,14,13,14,14,15,14,14,14,14,14,15,14,8,17,14,15,14,20,14,14,23,20,14,12,14,14,14,17,14,14,31,14,14,12,23,14,14,14,15,14,14,29,14,15,14,14,14,14,14,14,14,14,14,14,20,14,12,18,14,15,14,14,14,14,14,14,21,13,14,14,14,14,21,24,24,24,27,15,14,14,14,12,17,14,8,14,14,14,14,14,14,14,31,20,14,15,14,21,14,14,8,14,14,14,15,14,14,14,14,21,14,8,14,14,14,15,14,12,14,14,20,14,14,14,14,14,14,8,14,14,20,14,14,8,14,14,14,14,14,21,14,25,14,14,14,14,14,14,14,18,14,14,15,14,14,21,14,21,14,8,14,14,14,14,15,12,13,21,14,12,14,15,14,14,14,17,17,14,14,8,14,14,14,14,14,8,14,14,8,20,8,21,14,17,14,21,14,14,14,14,14,14,18,14,14,19,14,27,27,20,14,14,21,14,20,14,20,14,14,14,14,14,14,21,14,25,14,13,14,14,14,14,14,21,14,19,13,14,14,14,14,14,8,29,14,14,14,14,14,14,14,14,25,21,20,21,14,14,14,14,8,14,20,14,14,14,14,14,14,14,14,25,14,14,29,23,21,14,8,14,21,14,14,21,14,8,15,30,14,14,12,27,14,14,14,14,15,14,14,27,14,14,14,14,14,17,24,24,12,8,14,25,14,23,14,14,20,30,20,14,14,8,14,14,20,14,14,14,14,14,14,21,21,20,8,14,14,15,14,20,29,19,14,14,14,14,14,15,12,14,14,14,17,14,14,14,14,14,14,27,14,14,21,14,14,20,14,8,14,14,31,14,14,14,20,8,14,14,14,14,14,14,15,21,15,21,14,14,14,14,14,15,15,8,14,14,15,14,14,8,14,21,14,14,15,21,14,18,21,14,14,20,14,18,12,12,14,14,14,14,14,15,14,14,14,14,8,29,14,14,14,14,14,21,14,14,14,21,14,14,17,14,25,14,14,13,21,14,20,14,12,21,17,8,14,12,14,14,12,14,19,15,14,14,21,14,14,14,21,29,27,15,14,14,14,14,12,14,14,14,14,14,14,14,14,14,19,14,21,21,15,14,14,14,20,14,14,14,14,17,14,12,14,14,21,14,14,14,12,14,14,14,14,14,14,14,14,14,21,8,20,19,14,14,14,12,14,21,17,20,21,8,12,18,14,21,14,14,14,14,14,18,14,14,14,24,24,14,21,14,14,14,14,14,14,14,14,14,14,14,20,20,19,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,21,17,14,14,14,21,14,14,14,14,23,20,12,14,14,14,14,14,8,14,14,14,14,29,14,14,20,14,8,14,14,25,8,25,14,17,14,21,8,14,14,14,12,14,15,21,8,8,8,14,14,14,14,14,14,14,15,15,18,14,14,13,20,14,14,14,14,14,14,14,15,14,14,14,14,14,14,14,18,14,14,14,14,14,12,14,14,15,20,14,14,14,14,15,20,14,14,14,15,14,20,12,14,14,14,29,14,20,15,14,15,27,14,14,14,14,14,14,14,14,14,14,21,8,14,14,13,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,15,15,17,14,14,19,14,8,14,21,14,14,14,14,14,14,14,8,12,13,21,14,14,14,15,14,14,14,14,23,14,14,15,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,29,14,14,14,8,20,14,14,15,14,14,14,14,21,20,24,24,24,24,24,24,24,14,17,22,20,14,14,12,23,8,14,12,14,14,29,20,14,15,21,15,14,14,14,21,14,30,25,21,21,21,20,14,17,17,14,14,21,21,14,14,14,8,14,14,14,14,14,19,14,25,13,8,21,14,14,14,23,15,14,14,14,14,20,25,8,14,14,21,14,14,12,21,14,14,14,14,14,14,14,31,14,14,14,14,14,14,25,14,14,14,20,14,15,14,14,14,14,15,14,15,14,14,14,14,21,21,14,14,18,8,14,14,21,14,17,14,27,13,13,14,14,21,14,14,14,15,14,14,14,14,8,20,14,14,14,19,14,14,14,14,15,18,14,19,14,14,12,14,15,14,14,8,14,14,27,14,14,14,15,21,14,21,21,20,17,14,15,14,14,14,27,14,14,14,25,13,14,14,14,14,15,14,14,14,14,14,14,14,14,12,14,14,14,14,12,14,14,12,12,14,21,14,14,14,14,14,14,14,14,14,14,21,14,14,8,14,14,14,14,14,14,23,14,15,14,15,14,18,14,12,14,8,14,14,14,8,8,14,12,14,14,14,14,25,14,14,14,14,24,24,24,24,24,24,24,14,14,14,15,14,27,14,14,14,21,14,15,15,14,14,14,14,14,14,21,8,14,14,14,15,14,14,21,15,27,12,12,14,14,14,14,14,14,14,21,25,21,14,14,14,19,14,21,19,14,14,14,14,14,8,14,14,21,31,23,14,14,29,14,14,14,19,14,14,14,21,14,14,14,14,20,14,14,14,14,18,14,14,14,14,14,14,20,8,14,14,18,17,14,14,14,23,21,8,14,14,14,14,14,18,14,14,14,14,14,14,14,14,28,14,14,14,14,14,14,14,14,8,14,14,14,17,14,14,14,14,14,14,14,15,14,15,14,14,14,21,14,21,14,14,14,14,15,14,14,14,14,14,17,14,14,14,14,14,14,22,14,14,14,24,14,20,21,14,14,12,14,14,14,21,14,14,14,14,14,21,14,14,14,14,15,14,15,14,14,14,14,18,14,14,14,14,14,21,14,14,20,8,22,20,14,14,14,14,15,14,14,14,21,8,14,20,14,14,14,14,21,14,14,14,14,14,15,15,14,14,14,14,14,14,21,14,14,21,14,14,14,14,14,14,24,24,24,24,24,14,14,14,14,21,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,20,25,14,20,14,8,14,17,25,14,14,14,14,14,12,14,14,14,14,27,14,15,14,27,14,14,14,15,14,14,14,14,14,20,14,21,14,12,14,12,14,14,14,14,14,15,14,15,14,14,12,14,14,14,14,14,14,14,14,14,14,14,8,18,14,14,14,14,14,14,14,27,21,14,18,17,14,14,15,14,21,21,20,14,14,29,14,14,12,14,21,18,15,14,14,14,14,15,21,14,14,21,14,14,14,14,15,13,14,14,25,14,21,14,14,8,21,14,20,14,14,15,14,8,14,12,14,14,21,23,14,14,14,14,14,14,14,14,15,14,8,14,14,21,12,26,14,14,14,12,14,14,8,14,14,14,14,14,14,14,14,14,19,14,14,23,14,14,14,17,14,21,22,29,14,15,14,14,15,14,14,14,14,8,15,14,21,17,14,14,14,14,20,14,13,21,14,14,18,14,14,14,14,21,17,14,15,14,14,17,21,14,14,15,14,15,14,17,20,14,8,14,20,14,24,24,24,24,24,14,14,14,14,14,14,14,14,14,14,20,20,14,14,14,14,20,14,14,14,14,19,14,14,20,14,14,19,14,14,14,14,14,14,14,14,14,14,14,14,15,14,19,19,8,12,14,14,14,8,18,14,14,15,14,14,14,27,14,14,14,15,20,14,14,14,14,29,14,14,14,14,14,14,14,14,15,14,14,14,14,14,18,14,14,14,12,14,25,14,8,20,14,21,14,21,27,14,14,12,14,14,20,14,21,14,19,14,14,12,14,14,12,14,14,14,21,14,14,14,14,14,14,14,14,14,14,14,18,8,14,14,8,14,14,14,14,18,14,14,14,14,20,14,14,15,8,14,17,21,8,20,14,14,14,14,14,21,19,14,14,14,23,14,19,14,14,14,27,21,23,14,14,14,14,14,14,12,15,18,14,14,14,29,18,14,14,14,29,14,20,19,14,14,14,14,14,17,14,14,14,15,14,14,15,14,21,14,14,20,21,20,15,14,18,21,14,14,14,14,14,21,14,14,14,14,13,14,14,14,14,20,14,14,15,17,14,23,14,14,14,14,18,14,24,24,24,24,14,15,14,14,24,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,20,14,15,14,14,14,14,23,21,14,15,14,14,26,14,14,14,14,14,14,14,14,12,14,14,14,20,17,14,15,21,14,14,14,21,14,21,20,14,14,21,20,14,14,14,12,20,14,14,23,14,14,14,25,14,8,14,14,14,14,14,14,15,20,15,21,21,12,17,14,14,15,20,17,14,14,14,14,19,20,14,19,14,25,14,17,21,14,14,14,14,14,14,14,12,14,14,14,14,14,21,14,14,14,17,14,14,14,12,19,12,14,14,14,21,8,14,14,25,14,8,25,8,15,14,15,29,14,14,8,14,14,14,21,14,12,14,17,14,14,14,21,14,19,14,14,20,15,8,14,12,14,14,14,14,21,14,21,12,14,14,17,14,21,14,12,14,14,8,17,14,14,14,14,14,21,14,14,14,21,14,8,14,14,14,14,23,14,14,14,14,14,14,14,17,14,14,8,19,14,19,8,14,17,15,14,14,14,14,14,14,8,14,12,14,14,14,24,24,24,24,14,29,14,14,14,21,14,14,8,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,14,14,21,14,14,14,14,14,14,25,8,19,14,14,14,14,14,21,14,21,8,14,21,14,14,13,21,13,14,21,14,14,14,14,13,20,14,14,14,8,14,17,14,14,21,14,14,14,21,20,25,14,21,14,14,20,8,14,27,14,17,14,12,14,14,14,21,15,17,14,14,18,21,21,18,14,14,12,14,20,14,15,14,14,17,14,14,14,14,14,14,13,14,20,12,14,12,17,14,14,14,21,14,14,14,14,14,14,14,14,14,21,14,15,14,14,14,14,14,14,14,14,12,14,8,14,13,12,14,14,14,15,14,14,14,14,14,14,14,14,14,15,14,14,14,23,14,18,14,14,14,14,15,14,14,8,14,27,14,14,14,21,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,14,12,14,14,8,14,12,14,14,14,14,14,14,15,14,14,14,14,14,14,14,15,14,21,14,14,14,24,24,24,14,14,14,14,25,14,25,14,14,14,21,14,14,14,14,14,14,14,21,20,19,14,14,18,21,14,14,14,21,14,14,15,14,18,14,14,21,14,8,15,14,14,18,19,14,14,14,29,14,17,14,14,8,14,14,14,14,14,19,12,14,20,14,20,14,20,14,14,14,14,14,15,14,12,14,20,14,8,14,20,15,14,14,14,25,21,14,14,14,14,12,14,14,14,14,19,14,14,20,14,14,14,14,14,14,14,14,8,14,14,14,12,14,14,14,14,17,14,12,14,8,21,14,12,15,8,14,14,8,18,14,14,14,14,14,14,14,21,14,27,14,12,14,14,14,14,28,14,14,14,8,14,14,14,14,14,14,14,15,12,14,14,14,14,25,14,19,14,14,23,14,14,14,25,23,14,20,14,23,21,14,8,12,21,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,17,14,14,21,14,14,14,14,14,14,14,18,14,14,14,14,14,14,12,14,29,14,14,14,14,14,25,14,14,14,14,14,14,14,14,14,14,14,14,20,14,21,20,14,24,24,24,18,14,14,18,20,21,14,14,25,12,14,14,14,8,20,14,14,12,14,21,14,23,14,26,14,8,14,14,14,14,21,14,21,8,14,14,14,14,14,14,14,14,20,25,14,14,14,14,14,14,21,14,14,12,14,8,14,8,14,14,28,21,14,14,23,21,14,15,14,14,14,14,14,14,14,14,27,21,14,15,14,25,14,12,14,21,13,14,14,14,15,14,14,18,14,14,14,14,17,14,14,20,14,14,14,14,14,14,14,17,14,14,14,8,14,23,12,18,14,14,19,14,14,14,18,14,14,17,14,14,14,12,14,14,29,14,12,8,14,15,14,19,14,14,14,14,29,14,21,19,20,14,14,14,8,14,19,17,14,14,17,14,20,14,14,8,14,14,14,14,14,14,14,21,14,21,14,14,15,21,14,14,14,14,14,14,14,14,20,17,14,14,14,14,14,14,14,14,14,8,14,14,14,15,14,18,14,20,14,20,14,14,14,14,14,18,14,14,14,14,14,14,8,14,21,14,14,14,14,18,14,14,14,15,15,14,14,21,14,19,14,17,17,14,12,24,24,24,14,14,14,17,18,14,14,12,14,17,14,20,12,21,14,14,8,14,14,14,25,20,14,14,14,20,18,14,15,15,14,14,14,14,23,14,20,14,14,14,20,14,14,8,14,14,14,14,13,12,14,15,14,14,14,14,14,14,21,14,14,14,21,14,12,14,14,14,14,14,14,20,14,14,14,20,14,29,25,14,15,14,14,14,14,14,14,14,27,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,21,14,14,14,14,20,17,23,14,14,14,14,14,8,14,14,29,14,14,8,14,21,14,12,14,14,14,14,14,21,14,14,14,20,15,14,14,23,14,14,14,14,14,14,14,14,18,14,14,14,14,14,13,15,14,14,14,14,14,14,14,21,14,15,14,17,14,14,20,14,14,14,14,21,14,14,14,14,29,25,14,15,12,14,14,14,14,14,14,14,14,14,25,8,14,14,21,14,14,14,20,19,20,14,14,14,14,14,14,12,14,17,14,14,15,14,18,14,17,21,14,14,17,19,15,14,14,12,14,20,14,17,20,14,14,24,24,24,14,12,14,14,14,14,20,14,13,14,15,14,14,14,14,14,14,18,14,14,14,14,14,15,8,14,14,14,15,21,14,14,14,14,14,21,14,14,12,8,14,13,21,14,14,8,14,21,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,14,14,14,8,14,14,14,14,21,14,21,14,14,14,14,15,25,14,14,23,14,14,21,14,20,14,18,15,14,22,26,21,15,19,14,14,21,14,14,14,14,14,19,14,14,27,21,14,14,17,21,14,14,14,14,14,14,21,18,14,14,14,27,14,12,14,15,20,14,14,14,14,21,17,8,18,14,21,8,14,14,8,14,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,13,14,20,14,14,14,14,14,14,14,14,14,14,14,14,21,14,17,14,14,14,14,14,14,14,14,14,14,15,14,15,14,25,17,14,14,13,14,14,14,14,14,13,14,14,29,14,14,15,14,14,14,14,20,14,14,14,17,14,14,12,8,14,14,21,14,14,14,14,19,14,14,19,8,14,24,24,21,14,14,14,21,14,20,14,8,19,14,21,14,14,8,14,27,20,22,20,17,21,14,14,14,14,25,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,27,14,14,14,14,14,14,14,14,14,12,25,14,21,14,25,14,14,15,12,21,15,14,29,14,14,14,14,14,14,14,14,14,21,14,14,14,14,14,14,13,15,14,14,14,14,14,14,15,14,14,14,18,8,17,14,14,14,14,14,15,14,14,21,14,8,14,14,27,14,14,14,14,17,14,21,17,14,14,8,27,14,14,14,15,14,14,21,14,14,14,14,12,14,14,15,21,14,14,21,12,14,14,21,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,21,14,14,14,14,14,14,21,14,12,14,17,14,14,12,19,15,14,14,18,14,14,14,14,19,14,14,21,14,14,20,8,17,14,18,20,14,14,14,14,12,15,17,14,14,15,14,21,14,21,19,21,14,14,14,14,17,14,15,14,29,14,14,8,14,15,17,20,14,14,21,14,18,14,12,14,8,21,14,14,14,14,14,14,25,17,21,14,24,24,24,24,14,14,14,15,14,14,14,14,14,23,15,14,15,25,14,15,14,14,14,14,14,8,8,14,14,17,21,20,14,14,14,14,14,14,14,14,14,14,15,12,14,14,14,14,14,20,14,14,14,14,14,14,14,14,14,14,14,14,27,14,14,12,14,14,14,14,14,14,29,12,14,14,14,14,14,21,20,14,14,14,12,14,21,14,25,14,21,8,14,14,14,14,14,8,8,27,21,14,14,20,14,17,14,14,20,21,15,20,14,15,14,15,21,14,12,14,14,14,14,14,14,14,13,14,14,14,14,14,14,17,14,14,14,14,15,14,23,21,14,14,14,14,14,14,14,14,17,14,21,14,14,14,14,14,14,17,14,14,27,14,14,14,14,14,14,14,20,14,14,23,14,26,14,14,22,14,14,15,14,14,14,14,14,14,14,8,12,14,14,14,26,14,14,25,14,14,14,15,14,14,14,14,18,8,15,14,14,14,14,13,14,14,15,15,13,14,14,14,25,8,25,14,20,14,14,25,18,13,14,21,21,14,14,14,24,24,14,14,14,14,18,20,18,14,14,21,14,15,14,14,14,14,14,25,14,14,8,14,14,23,18,14,14,15,21,23,14,21,14,14,14,14,14,14,14,23,21,14,14,21,21,14,14,14,14,14,14,14,14,14,22,12,14,13,14,14,29,14,14,14,8,14,17,14,14,14,20,14,14,14,29,14,26,14,14,14,8,14,15,14,14,14,25,14,14,14,14,15,14,8,14,14,14,14,14,23,14,14,14,21,20,14,12,14,22,14,14,14,15,14,14,14,14,14,14,15,12,14,14,14,14,20,20,15,22,14,14,14,14,14,23,14,14,14,14,14,18,14,21,25,21,14,14,14,17,14,14,14,14,14,14,14,14,14,8,14,17,14,8,14,21,14,14,14,15,14,14,17,14,14,21,12,14,15,12,19,14,18,8,14,14,21,14,14,14,8,14,15,14,14,14,8,14,14,18,21,12,14,14,14,14,8,14,21,14,21,21,19,14,14,14,14,21,14,14,21,29,27,23,8,14,21,14,14,14,14,14,14,14,15,15,14,14,14,24,24,24,24,14,12,15,14,14,17,15,25,19,14,21,14,14,14,21,14,14,14,14,14,14,14,18,12,21,18,12,13,14,14,14,21,14,14,14,21,14,14,20,14,25,17,13,15,14,14,14,25,15,14,14,14,20,15,14,14,14,21,14,29,25,14,14,12,12,14,21,15,26,14,12,15,14,22,14,14,14,14,14,14,14,8,14,27,14,8,14,14,14,21,14,21,14,15,14,14,18,14,13,12,12,14,14,14,15,14,14,14,14,14,21,14,14,14,15,13,14,14,14,14,24,14,14,21,8,14,14,12,14,14,15,14,14,14,14,21,14,14,14,14,14,15,14,14,14,14,20,8,14,17,14,14,14,20,14,21,21,14,12,12,21,14,14,18,29,14,14,14,14,14,14,14,14,14,14,17,14,12,15,14,14,8,21,19,8,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,25,14,14,14,14,14,14,14,8,14,14,14,12,14,14,14,14,14,14,14,14,14,21,14,14,14,15,24,24,24,21,14,21,14,14,14,13,20,14,14,14,8,14,14,20,14,14,14,14,14,21,14,14,14,14,14,14,14,14,14,17,12,19,14,14,14,14,18,8,12,19,17,14,8,14,14,14,14,14,14,14,14,14,21,15,14,14,14,14,14,14,14,14,27,14,14,15,12,14,14,23,15,27,14,14,19,25,17,17,14,8,14,18,14,21,14,21,12,14,12,15,14,17,14,14,14,14,14,12,20,14,14,14,14,14,21,14,14,12,14,14,14,14,21,21,14,15,14,29,14,14,14,14,14,14,14,25,15,21,8,18,14,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,14,14,29,14,14,14,14,14,21,8,21,14,14,14,14,14,14,14,15,14,14,8,14,20,12,14,14,14,14,25,15,14,20,14,15,8,14,14,14,14,14,14,14,14,14,12,14,21,14,8,14,14,14,20,14,14,14,14,14,14,14,15,21,14,14,12,14,14,14,14,14,21,14,8,14,14,12,14,14,14,14,14,14,25,14,20,14,20,24,24,24,14,14,14,8,14,21,17,14,14,15,14,14,14,14,15,15,14,14,21,14,21,14,14,15,14,14,14,14,14,14,14,14,14,14,12,14,18,14,14,21,14,14,14,21,15,14,15,8,14,8,15,14,21,15,14,18,21,14,14,12,14,14,14,8,21,21,14,14,20,14,20,18,14,14,12,14,8,14,14,21,14,14,14,17,14,29,14,15,20,14,14,14,14,21,14,14,14,21,14,17,21,14,14,21,14,14,14,8,14,21,19,21,14,14,14,20,14,8,8,21,14,14,14,14,14,8,14,12,25,15,8,14,14,22,20,15,14,14,8,21,14,17,14,14,14,25,14,14,8,14,14,14,14,14,14,14,21,21,15,14,14,14,14,14,14,14,14,14,14,14,14,14,21,15,21,14,18,14,14,14,17,19,14,14,21,17,15,14,14,14,14,14,14,14,14,14,14,21,21,13,14,21,14,14,14,21,14,17,14,14,14,14,14,14,14,14,8,14,21,20,8,21,14,21,19,21,21,20,14,14,18,14,8,14,14,15,15,14,14,14,15,29,14,14,21,14,15,14,21,14,14,14,14,14,20,24,24,24,14,14,28,14,14,14,29,14,8,14,14,14,19,8,14,18,20,14,14,14,14,14,21,18,14,15,14,14,14,21,14,19,14,14,14,14,15,15,14,14,14,14,14,14,14,18,25,14,14,14,14,21,8,14,14,14,15,20,14,8,14,14,20,14,14,14,14,15,14,12,17,14,8,14,14,14,14,14,14,14,14,17,21,14,14,17,14,14,18,12,14,14,14,14,15,12,14,14,14,29,20,14,18,25,14,14,14,8,14,14,14,14,14,18,14,14,14,17,14,14,14,15,8,14,14,14,14,21,14,15,14,14,14,29,14,8,14,12,14,27,14,14,14,14,14,14,14,14,14,14,25,18,14,14,8,14,8,14,21,21,21,8,14,14,14,14,8,12,14,15,15,14,14,14,25,14,14,14,14,14,14,14,14,14,21,14,14,14,14,14,14,23,14,21,17,14,14,14,14,14,15,14,21,14,14,8,14,14,14,27,14,14,14,14,14,12,15,20,14,21,14,14,14,14,15,14,14,24,24,24,14,14,14,19,14,21,21,21,14,21,14,14,14,14,15,12,20,30,14,14,14,15,14,14,14,14,14,18,21,14,14,14,8,19,14,18,14,21,14,14,14,14,21,14,14,14,17,21,14,8,14,8,14,14,14,8,14,21,8,14,17,14,14,17,20,14,21,12,14,14,14,14,14,23,14,14,14,14,14,12,17,15,14,14,15,25,14,18,14,14,14,17,15,14,14,14,14,14,21,12,14,21,14,14,18,14,14,14,15,8,14,14,14,14,26,14,14,21,14,20,14,8,14,14,12,14,14,14,12,21,17,19,20,14,14,25,15,27,14,20,25,20,14,14,18,24,14,21,14,14,21,14,15,14,14,14,12,21,14,14,19,14,15,14,15,14,21,23,15,21,14,14,17,14,14,8,22,21,29,12,20,14,21,14,14,25,19,14,29,14,21,14,14,20,21,14,12,19,24,14,14,14,14,14,14,14,14,14,20,14,14,14,14,21,14,14,14,14,14,17,14,14,14,8,14,21,21,8,14,25,14,14,17,14,14,15,12,14,15,21,14,14,14,12,14,14,14,17,8,14,14,14,21,25,14,17,20,24,24,24,14,21,14,8,14,14,14,14,14,14,19,14,14,21,14,14,14,14,14,14,25,14,22,14,14,14,14,14,25,15,20,18,25,14,21,14,14,14,15,17,14,21,15,15,14,21,14,14,20,14,14,17,12,14,14,14,14,14,14,14,14,8,14,21,14,12,13,14,23,14,14,14,15,14,21,12,8,14,15,14,14,14,14,14,14,14,14,8,14,14,14,14,14,21,14,14,14,14,14,15,12,8,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,25,14,14,8,12,14,14,27,14,13,14,21,12,14,14,14,14,14,14,14,14,14,14,19,14,14,14,14,14,14,14,14,14,14,15,14,14,14,20,13,18,14,14,14,21,14,14,26,14,14,14,14,14,14,14,14,14,25,14,14,14,14,14,14,14,14,14,14,14,14,17,14,8,23,14,14,20,12,14,21,14,8,14,14,15,14,14,21,14,14,21,14,14,18,14,14,14,14,14,14,14,18,23,23,20,14,21,14,14,14,24,24,24,15,14,14,15,14,14,14,14,15,14,15,23,14,14,14,14,25,14,14,14,15,14,14,20,14,14,14,14,29,14,22,12,8,21,14,14,14,14,25,27,14,14,14,14,14,14,12,14,23,14,14,14,21,14,15,14,14,14,14,14,14,14,15,12,14,14,14,14,14,14,14,14,14,14,27,14,14,21,14,14,14,14,14,14,14,14,14,14,21,21,14,14,14,14,14,20,14,21,21,8,25,14,14,15,14,17,14,14,25,14,14,21,14,14,14,17,14,14,8,21,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,23,14,14,21,13,14,21,15,14,21,15,14,14,8,17,12,29,17,29,21,14,8,20,14,8,14,14,14,12,14,21,14,15,14,14,14,14,21,21,14,14,14,8,14,14,14,14,14,14,14,14,14,14,17,15,14,15,14,14,14,14,14,14,25,14,14,14,22,13,14,14,14,21,14,19,8,14,14,14,21,14,14,14,14,18,19,24,24,27,14,14,25,14,14,14,14,14,15,12,14,14,21,14,21,14,17,14,14,14,14,20,14,14,17,8,14,14,29,14,14,14,14,14,18,14,14,14,21,14,14,14,8,14,14,8,14,14,14,14,14,14,14,14,14,14,21,14,14,14,14,14,14,8,15,14,14,14,14,14,14,21,14,14,20,12,14,15,14,15,8,14,14,20,14,18,14,8,14,14,14,14,14,15,14,23,14,14,14,14,18,17,14,14,14,14,14,14,25,15,17,15,14,14,14,12,14,14,14,15,14,14,14,25,14,14,14,8,14,14,14,8,14,25,14,14,14,12,14,14,12,14,18,14,21,14,14,20,14,20,14,14,14,14,21,21,8,14,14,14,14,14,14,15,14,14,14,14,14,21,14,14,14,21,14,14,14,14,21,14,14,8,14,20,21,14,14,8,20,12,15,21,14,14,14,14,14,14,14,14,20,8,14,12,20,15,14,14,17,14,26,14,27,14,12,14,14,14,28,17,21,14,20,21,19,14,14,8,17,12,14,14,24,24,14,19,21,14,15,8,14,21,14,14,14,21,21,21,14,14,12,14,14,14,14,14,14,14,14,21,20,13,17,20,8,14,23,14,14,14,14,14,14,15,8,14,15,14,14,14,14,21,12,14,14,14,14,14,8,14,14,21,21,14,14,14,14,20,14,14,14,28,13,21,14,8,14,8,14,14,14,14,14,14,14,14,14,14,14,14,14,14,21,14,14,14,15,14,14,27,31,17,8,14,17,8,14,14,14,21,21,17,20,15,17,14,14,14,14,14,27,14,14,18,15,14,14,14,22,21,14,14,14,21,20,21,14,14,14,14,25,17,14,21,14,14,14,15,14,14,14,18,15,14,20,14,19,14,14,20,14,12,14,14,14,14,14,14,14,14,21,14,14,19,14,14,20,15,14,14,14,25,14,14,21,14,19,14,8,12,14,14,14,23,21,14,8,8,21,14,14,14,14,14,14,14,12,14,14,14,12,15,21,14,14,14,14,14,21,14,29,21,12,14,14,14,12,14,14,14,14,23,14,14,15,19,14,14,25,14,24,24,24,24,14,14,14,14,21,14,8,14,15,14,14,14,14,14,14,21,14,14,14,26,12,12,14,21,25,14,14,21,21,14,14,14,14,14,14,14,8,14,21,14,14,21,14,14,18,14,21,14,14,8,14,14,14,14,14,14,32,36],"timeDeltas":[47125,125,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,83,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,83,0,0,83,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,83,42,0,41,0,42,42,0,41,42,0,42,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,84,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,334,41,42,83,0,42,0,42,41,42,83,42,0,42,125,0,41,42,42,0,41,42,42,41,42,83,0,42,42,41,84,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,84,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,42,42,83,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,84,83,42,0,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,83,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,83,0,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0]} \ No newline at end of file diff --git a/bench-camelize.acronymUpper-2024-11-24_12-17-49.cpuprofile b/bench-camelize.acronymUpper-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..4ae4a1a --- /dev/null +++ b/bench-camelize.acronymUpper-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,8,9,23,25,29]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0},{"id":8,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":683},{"id":9,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":760,"children":[10,13,28],"positionTicks":[{"line":321,"ticks":1},{"line":323,"ticks":10},{"line":292,"ticks":31},{"line":314,"ticks":88},{"line":315,"ticks":128},{"line":297,"ticks":24},{"line":327,"ticks":38},{"line":316,"ticks":440}]},{"id":10,"callFrame":{"functionName":"y","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":78,"columnNumber":10},"hitCount":0,"children":[11]},{"id":11,"callFrame":{"functionName":"g","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":48,"columnNumber":13},"hitCount":0,"children":[12]},{"id":12,"callFrame":{"functionName":"L","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":20,"columnNumber":89},"hitCount":1,"positionTicks":[{"line":21,"ticks":1}]},{"id":13,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":784,"children":[14,16],"positionTicks":[{"line":137,"ticks":1},{"line":302,"ticks":23},{"line":138,"ticks":3},{"line":537,"ticks":10},{"line":304,"ticks":2},{"line":530,"ticks":63},{"line":139,"ticks":32},{"line":250,"ticks":42},{"line":309,"ticks":209},{"line":539,"ticks":8},{"line":308,"ticks":16},{"line":301,"ticks":185},{"line":531,"ticks":4},{"line":311,"ticks":186}]},{"id":14,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2170},"hitCount":164,"children":[15,21],"positionTicks":[{"line":2,"ticks":164}]},{"id":15,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":12076,"positionTicks":[{"line":2,"ticks":12076}]},{"id":21,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":52,"children":[22],"positionTicks":[{"line":2,"ticks":52}]},{"id":22,"callFrame":{"functionName":"camelize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":727},"hitCount":193,"children":[24],"positionTicks":[{"line":2,"ticks":193}]},{"id":24,"callFrame":{"functionName":"get","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":586},"hitCount":260,"children":[27],"positionTicks":[{"line":2,"ticks":260}]},{"id":27,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":815},"hitCount":54,"positionTicks":[{"line":2,"ticks":54}]},{"id":16,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":329,"children":[17,26],"positionTicks":[{"line":250,"ticks":329}]},{"id":17,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":254,"children":[18,19],"positionTicks":[{"line":139,"ticks":254}]},{"id":18,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1367,"positionTicks":[{"line":139,"ticks":1367}]},{"id":19,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":56,"children":[20],"positionTicks":[{"line":537,"ticks":56}]},{"id":20,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":128,"positionTicks":[{"line":530,"ticks":128}]},{"id":26,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":133,"positionTicks":[{"line":663,"ticks":2},{"line":670,"ticks":8},{"line":662,"ticks":11},{"line":665,"ticks":17},{"line":669,"ticks":30},{"line":668,"ticks":7},{"line":666,"ticks":19},{"line":661,"ticks":39}]},{"id":28,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2170},"hitCount":7,"positionTicks":[{"line":2,"ticks":7}]},{"id":23,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":306},{"id":25,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":19,"positionTicks":[{"line":301,"ticks":19}]},{"id":29,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[30]},{"id":30,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[31]},{"id":31,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[32]},{"id":32,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[33]},{"id":33,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1,"positionTicks":[{"line":136,"ticks":1}]}],"startTime":293066530084,"endTime":293067193959,"samples":[7,8,12,13,9,15,18,18,15,15,15,15,18,20,15,15,15,15,22,21,18,15,15,15,15,15,15,15,15,13,8,15,15,20,13,9,15,15,15,18,15,17,15,15,13,13,13,15,15,15,15,18,15,15,17,15,18,13,20,15,15,15,15,15,15,18,15,23,15,15,15,15,15,8,15,15,15,15,16,15,15,15,15,18,15,13,8,15,15,15,15,15,15,18,18,15,15,15,15,14,15,15,15,15,15,15,15,15,18,15,15,15,16,16,15,15,15,15,15,18,15,15,15,15,15,15,18,15,8,15,15,20,15,18,15,15,15,15,15,15,15,9,15,23,23,23,23,23,15,15,9,8,16,15,15,15,18,15,15,15,15,14,15,15,15,15,16,15,15,13,15,15,15,15,13,15,17,15,15,15,15,15,15,15,15,15,15,8,13,13,15,16,15,22,15,15,17,14,15,24,15,25,15,15,13,9,15,15,15,15,15,26,15,18,15,15,15,8,15,24,24,14,15,15,15,15,16,15,9,15,15,15,15,15,18,15,15,15,16,15,24,15,18,18,15,15,18,15,15,9,15,17,9,15,18,15,16,14,15,15,15,24,15,15,17,13,13,13,15,15,13,15,15,18,15,8,15,16,15,15,13,15,9,8,15,15,15,18,15,15,8,15,15,15,8,15,17,15,15,15,15,15,15,9,15,17,15,15,15,9,13,15,22,15,20,15,15,15,15,15,9,18,20,15,13,15,15,8,18,15,15,18,9,15,15,15,15,15,15,15,15,18,15,15,15,22,15,15,15,15,15,15,15,17,15,15,15,9,17,15,15,15,24,14,15,15,15,15,15,22,15,15,15,15,15,15,13,18,15,15,15,15,9,15,15,15,9,15,9,13,13,15,15,15,15,15,16,15,15,16,15,23,23,23,23,23,15,20,15,15,15,15,15,15,18,15,18,8,15,15,18,16,15,15,15,15,15,15,15,15,15,8,8,15,9,15,15,15,27,15,15,15,9,15,15,15,15,15,24,15,15,15,9,15,15,15,22,16,15,15,15,15,15,20,15,13,15,26,15,15,15,14,15,15,15,15,15,16,15,15,13,9,26,15,8,22,15,15,19,15,15,18,15,15,17,15,22,24,16,15,15,15,15,15,18,15,15,18,9,15,9,15,18,24,15,18,19,15,15,18,15,15,15,9,15,15,15,27,15,15,15,15,15,15,15,15,15,15,15,18,15,9,13,15,15,15,15,18,18,15,8,18,15,15,15,18,15,15,15,14,15,15,13,15,17,18,15,15,13,13,13,15,15,15,8,15,15,15,18,15,15,15,15,15,8,15,15,9,15,15,15,15,16,15,15,26,15,9,9,15,15,15,15,19,15,15,15,15,16,13,15,15,15,15,15,15,13,15,15,26,15,15,15,8,15,15,15,15,15,15,23,23,23,15,15,15,15,15,17,15,15,16,8,9,15,15,15,15,13,15,15,15,15,15,15,15,15,8,15,18,18,15,15,21,24,15,15,18,18,15,15,9,15,14,15,15,18,8,15,15,15,18,15,15,15,15,15,15,15,15,18,15,9,15,15,9,15,14,15,18,9,15,15,24,15,15,15,15,18,15,13,15,15,9,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,26,15,15,18,15,15,15,15,17,15,15,18,15,15,15,15,15,15,15,24,15,15,9,15,18,15,13,24,17,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,8,15,15,9,15,15,8,15,18,15,22,15,15,15,20,15,15,15,15,15,18,15,15,15,15,15,15,18,15,24,15,15,15,15,18,15,24,16,15,15,18,15,15,15,15,15,15,18,15,15,15,13,15,15,15,15,15,26,18,18,13,13,13,15,15,15,20,15,15,15,26,9,15,15,13,15,15,15,15,15,15,15,15,15,23,23,23,15,15,9,8,15,15,15,15,15,18,15,15,13,15,18,26,15,15,15,15,15,9,18,8,20,15,15,15,15,15,14,13,15,15,18,15,18,15,15,15,15,13,15,24,15,15,15,15,8,16,13,18,13,15,15,15,15,15,17,15,15,15,17,16,15,15,15,15,15,18,15,15,15,15,15,15,20,15,15,15,15,15,15,15,15,22,15,15,18,15,15,15,15,15,15,15,15,15,15,15,8,15,15,15,15,15,17,15,15,15,20,15,15,18,18,15,15,15,15,15,15,15,15,15,15,15,22,9,15,24,9,15,15,18,15,16,15,18,15,18,15,15,15,15,15,15,15,15,15,15,15,15,24,15,15,15,15,15,13,27,15,15,18,16,15,13,15,15,15,18,15,15,17,15,8,15,15,15,15,15,14,15,15,15,15,15,15,15,13,18,15,15,9,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,22,15,15,15,18,15,15,18,15,17,15,15,15,24,18,15,15,15,8,15,23,23,23,21,15,15,8,15,15,8,15,16,8,15,15,15,15,24,13,18,15,15,15,18,15,15,8,8,9,15,18,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,8,16,17,15,15,18,15,15,15,15,15,15,15,15,15,9,13,15,24,15,18,18,15,15,15,13,8,15,14,15,15,15,18,15,15,15,15,15,15,9,15,15,15,15,15,15,15,15,8,15,15,15,15,8,24,13,15,15,15,15,15,15,18,15,15,20,18,15,15,15,15,15,15,15,15,9,15,26,15,15,24,15,15,15,15,22,15,8,15,15,15,15,15,15,18,15,15,15,15,22,15,18,13,13,13,16,18,15,15,13,15,15,15,15,15,15,15,13,15,15,15,20,15,8,21,17,15,15,18,18,15,15,27,15,15,15,18,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,9,15,15,8,15,15,15,15,15,9,24,15,15,15,15,15,15,15,15,15,8,15,16,9,15,15,16,15,15,15,23,23,23,15,15,15,15,22,15,15,18,18,15,18,17,15,15,15,15,8,8,15,15,15,15,15,15,15,18,15,15,15,15,18,16,15,15,15,15,15,18,15,15,15,15,15,15,8,15,15,15,15,15,9,15,15,24,15,19,27,15,8,15,16,9,15,15,15,15,15,9,8,16,17,18,15,15,15,15,15,15,15,18,15,15,19,15,9,15,15,15,15,15,21,15,15,16,18,8,24,15,15,15,13,15,15,15,15,15,8,15,15,15,15,26,15,15,15,14,8,13,15,17,15,8,15,20,15,15,15,15,15,15,15,15,15,15,27,18,15,15,15,15,15,15,13,15,15,15,18,15,15,24,15,15,15,15,13,15,16,15,16,15,15,15,15,18,15,9,22,18,9,15,15,15,15,18,15,9,15,9,15,18,15,15,15,15,15,14,15,15,15,15,8,15,15,13,15,15,15,15,13,15,9,15,14,18,15,15,16,15,15,15,15,15,15,15,15,15,15,18,15,27,26,15,18,15,15,15,15,17,15,15,8,23,23,23,15,15,18,15,15,15,15,15,16,14,13,15,15,15,15,22,15,15,18,15,15,15,15,13,15,15,24,15,15,9,15,18,18,15,15,9,15,22,15,15,15,15,15,15,15,15,15,15,15,15,15,15,8,15,15,15,15,15,15,15,15,15,15,15,13,24,20,15,15,18,15,15,15,15,14,15,15,15,15,15,15,15,9,15,17,13,8,18,15,8,15,15,15,9,15,9,15,15,15,15,15,15,15,15,15,8,28,15,15,18,15,15,15,15,15,15,15,15,15,9,15,15,9,15,15,15,15,15,15,15,26,15,15,15,16,9,15,8,15,15,15,18,15,15,15,15,9,24,15,18,15,15,15,15,15,8,15,15,15,15,15,15,8,15,15,8,15,15,15,15,16,15,15,13,15,15,15,15,13,9,15,15,15,15,15,18,18,15,16,15,15,17,15,15,9,15,15,15,24,15,15,15,13,15,15,15,18,15,15,15,15,15,15,18,15,15,15,15,13,15,20,15,15,15,8,18,15,15,18,15,15,13,15,15,23,23,23,15,15,15,15,9,15,15,15,15,15,16,15,18,15,15,15,15,18,15,15,9,27,15,15,15,15,16,18,15,8,18,8,15,15,15,15,15,15,18,15,15,15,15,18,15,20,15,18,15,15,15,15,15,18,24,15,18,15,15,13,15,15,15,15,15,15,13,13,13,13,13,13,15,15,15,22,15,15,18,18,15,13,15,15,13,9,15,15,15,15,16,15,15,15,15,16,15,15,15,15,15,15,8,8,15,15,15,15,8,16,18,15,18,9,20,15,24,15,22,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,20,18,9,18,8,15,15,18,15,9,15,15,15,8,15,15,18,15,8,15,15,18,15,15,9,17,15,18,15,8,15,8,15,14,8,15,15,22,8,15,15,9,15,15,15,8,15,15,15,15,18,13,15,18,15,15,15,17,15,18,8,15,15,18,15,15,15,9,18,15,15,15,15,15,15,18,15,15,15,15,18,24,15,16,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,15,23,23,23,15,15,9,15,26,9,15,15,15,15,15,15,18,13,9,24,15,15,18,15,8,13,15,18,15,17,15,15,18,15,15,15,15,8,15,15,15,27,15,15,15,15,18,15,15,15,8,15,15,15,14,15,22,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,8,15,18,15,15,15,9,15,15,15,15,15,8,15,15,15,15,15,18,15,15,15,15,15,9,8,15,18,15,15,16,15,18,8,15,17,15,15,15,15,15,15,14,15,15,8,14,15,8,15,15,9,15,15,13,20,8,15,13,8,15,18,15,15,18,15,15,15,13,8,15,15,9,9,15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,9,8,8,15,15,15,15,15,15,26,18,15,15,15,15,15,16,18,15,17,15,15,15,9,15,15,15,15,16,17,15,18,8,15,14,16,13,15,26,15,15,24,15,15,8,15,15,15,15,15,15,13,8,15,15,24,24,15,15,15,15,15,15,15,15,8,15,15,15,23,23,23,15,15,18,8,9,15,15,20,15,15,24,15,15,15,15,15,13,17,15,24,15,8,15,15,15,15,24,15,15,15,15,15,18,15,9,15,15,15,24,15,8,15,15,15,15,15,15,15,15,15,15,15,15,15,16,15,8,15,15,15,15,18,15,15,15,15,15,15,15,20,18,16,13,15,16,15,15,15,23,15,15,14,15,15,15,14,18,15,15,15,9,15,15,15,15,16,15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,24,18,9,15,9,15,15,15,15,15,15,15,8,15,18,27,15,15,15,9,16,15,15,24,9,15,15,9,15,9,15,15,15,15,15,15,16,15,15,15,15,15,15,8,15,15,15,15,15,15,15,15,18,13,15,15,15,15,18,15,15,15,15,16,20,15,8,13,15,15,27,26,15,15,15,9,15,18,15,15,15,15,15,15,8,8,15,15,15,15,15,15,15,15,15,15,16,15,9,15,13,15,15,23,23,23,15,15,17,9,17,24,22,8,15,18,18,18,26,15,15,18,15,15,15,24,15,15,15,15,15,15,9,18,15,17,15,15,15,15,15,18,18,15,9,15,8,9,15,13,18,8,15,21,15,15,15,15,15,15,20,15,13,15,15,15,15,15,15,17,15,20,15,15,15,15,9,15,15,15,17,9,15,15,15,8,15,15,15,15,8,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,15,15,15,16,15,15,15,15,15,15,15,15,18,15,15,15,15,15,9,15,26,15,18,15,15,9,16,16,15,15,8,15,15,15,15,15,18,18,22,8,15,15,15,15,15,18,15,19,15,15,18,15,15,15,13,15,15,15,15,15,15,15,15,16,15,16,15,17,18,15,15,15,18,17,15,15,15,8,15,26,15,15,15,15,18,15,15,15,15,15,16,22,18,15,15,15,15,15,15,18,18,8,15,15,15,15,15,13,18,23,15,9,24,18,9,18,16,9,15,15,15,15,15,15,20,15,15,9,23,23,23,15,13,15,15,15,9,15,15,9,15,15,15,15,15,15,15,21,15,15,15,15,15,15,8,15,24,15,9,15,16,15,15,15,15,15,9,15,15,21,15,8,15,13,15,15,24,15,8,15,18,24,15,18,15,15,13,13,13,13,13,13,13,13,13,20,15,13,18,15,28,15,15,15,16,15,15,15,15,16,16,15,15,22,15,26,8,17,15,8,15,15,15,15,15,24,13,15,15,15,15,15,15,15,15,15,13,13,15,15,15,9,15,15,9,15,15,15,15,13,15,19,9,15,15,15,18,9,15,8,9,15,15,15,15,13,15,9,15,18,15,15,15,22,24,15,15,8,9,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,21,15,14,15,14,15,18,13,15,15,15,8,8,15,18,15,13,18,18,15,18,24,15,18,15,15,15,15,15,15,15,15,18,18,8,15,14,15,15,15,15,15,8,15,15,15,18,15,15,15,9,28,15,15,15,15,15,15,15,13,15,15,15,15,16,15,15,15,26,15,15,15,15,8,15,15,15,15,15,18,23,23,23,15,15,15,15,23,14,15,15,15,15,15,15,15,18,8,15,13,15,15,16,15,14,15,15,13,15,8,15,16,15,15,15,15,15,14,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,26,15,18,15,8,9,16,15,15,18,16,18,22,15,15,15,15,18,15,15,22,18,18,15,15,15,15,15,18,15,15,15,24,15,15,18,15,17,15,9,15,15,24,15,24,15,15,15,15,15,9,9,13,15,15,9,15,15,17,8,26,18,15,15,15,15,18,15,17,15,9,15,15,15,15,15,15,15,15,15,15,18,13,18,15,15,15,15,15,15,15,15,15,15,15,18,20,15,13,14,18,15,15,18,15,15,15,9,13,26,18,15,15,15,20,15,18,9,18,15,13,9,8,15,15,24,15,15,15,15,18,15,15,15,18,14,8,15,16,15,15,15,15,15,15,15,8,15,15,14,15,8,9,15,14,21,8,18,15,16,8,15,8,15,13,15,18,8,15,15,18,15,15,18,15,15,15,15,24,15,15,15,9,9,15,23,23,23,18,8,15,15,26,15,15,15,24,8,15,17,15,18,15,15,15,15,18,8,15,15,15,16,15,15,15,15,15,18,9,24,15,18,15,15,15,15,15,15,18,15,15,15,15,15,15,15,18,15,16,15,15,15,15,18,16,15,15,22,15,15,15,17,15,15,15,15,15,15,15,15,15,15,15,15,16,15,15,8,15,8,19,18,13,15,15,15,15,15,15,15,15,18,15,15,15,22,9,24,18,9,18,13,15,16,15,13,15,15,9,15,15,15,15,15,15,15,15,14,9,24,15,15,18,18,15,15,15,15,24,9,15,8,15,9,9,15,15,15,15,8,15,26,15,15,16,15,18,15,15,18,15,20,18,13,15,15,15,23,15,15,15,15,15,15,24,15,13,15,15,15,15,15,15,15,15,15,15,18,15,13,15,15,15,8,15,15,15,15,15,13,15,15,15,15,15,18,15,15,15,15,15,15,8,15,15,15,13,21,15,15,15,9,15,15,24,15,15,15,15,15,15,23,23,23,23,15,15,15,17,14,18,15,15,15,15,15,9,9,15,15,15,15,8,15,15,15,15,15,15,15,18,20,15,15,15,15,26,15,15,16,18,15,15,15,15,15,15,15,15,15,15,15,18,9,15,15,18,15,9,17,9,15,15,15,15,15,24,15,9,15,21,15,15,15,15,8,24,15,15,15,15,15,15,13,16,15,27,15,15,9,18,15,15,15,15,15,15,15,8,18,15,26,18,15,15,21,15,8,15,18,9,20,15,15,15,15,15,15,15,15,18,18,15,24,8,15,15,8,15,15,15,15,8,15,15,17,15,15,15,15,15,15,15,21,15,15,15,17,15,15,16,15,15,15,26,15,15,15,24,9,16,8,15,15,15,9,15,26,15,15,15,15,15,18,24,15,20,15,15,15,24,15,15,15,15,15,9,18,15,17,15,15,15,15,15,16,13,15,26,15,15,15,18,15,15,15,18,15,15,15,15,15,18,15,15,8,15,15,8,15,15,15,18,15,15,13,18,15,15,23,23,23,23,15,18,9,15,15,15,15,15,15,15,15,15,15,15,15,20,15,15,9,15,15,8,8,9,9,15,15,15,15,18,15,15,15,15,15,18,15,15,8,18,15,15,15,22,15,15,15,18,15,15,24,8,15,15,15,18,24,15,15,15,15,15,15,26,15,15,8,15,16,15,17,18,15,18,15,15,16,15,15,15,15,18,15,15,15,15,15,15,15,13,15,15,15,15,26,15,15,15,26,15,15,22,15,14,15,15,15,15,15,15,8,15,15,9,15,15,15,15,15,13,20,15,8,15,15,15,15,15,15,15,15,15,15,9,24,14,15,15,15,15,15,15,20,15,15,15,15,18,15,15,15,15,20,16,13,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,15,18,15,15,15,15,18,15,15,26,15,16,15,24,8,15,15,13,18,18,15,15,15,15,18,14,18,15,15,15,15,15,15,9,13,15,15,15,15,20,15,15,15,18,18,15,15,23,23,23,26,9,15,15,15,15,15,15,15,15,15,15,15,21,15,15,15,9,15,15,15,9,13,13,15,26,15,15,15,15,15,15,15,8,15,13,15,15,15,15,15,15,15,8,15,15,15,15,15,15,15,15,15,15,15,15,15,15,13,15,15,15,15,8,13,15,13,15,18,15,15,15,15,15,15,15,9,15,15,15,15,15,15,13,15,15,13,18,9,13,9,15,8,8,15,8,15,15,18,15,13,15,15,18,15,15,15,24,15,15,16,15,15,15,15,18,15,15,15,15,15,15,15,15,8,18,15,15,15,15,18,24,13,22,15,13,15,15,18,15,15,15,15,15,18,15,18,15,22,15,18,15,15,8,8,15,13,15,18,16,15,15,18,24,15,15,8,15,15,15,18,15,15,8,15,15,15,16,15,15,15,14,15,15,15,15,15,13,15,15,15,15,15,18,15,15,15,18,15,15,15,15,15,9,15,15,15,18,15,15,15,9,15,9,15,15,15,15,15,15,15,15,15,15,15,15,16,23,23,23,15,20,15,15,15,15,8,15,15,15,13,15,15,18,15,18,15,15,15,26,15,15,15,8,15,15,15,15,15,15,15,15,15,15,13,13,13,13,13,13,13,13,13,13,13,22,15,15,17,18,8,15,15,9,15,15,15,15,15,15,15,15,15,15,15,8,15,15,15,15,15,15,15,15,15,20,15,15,13,15,15,15,15,15,15,18,15,15,18,13,9,14,18,15,15,15,13,15,15,8,13,15,18,18,15,15,15,15,15,15,15,18,15,15,15,15,15,16,15,9,9,15,15,15,15,15,15,18,15,9,15,16,15,15,18,15,15,15,15,13,15,15,15,15,13,15,15,15,15,15,15,15,15,15,15,14,9,15,15,15,15,15,15,15,15,9,15,15,16,15,15,22,15,15,9,15,15,15,15,15,15,17,15,15,15,15,15,15,15,15,18,15,15,15,15,24,13,15,8,15,18,15,15,15,15,15,15,15,15,16,15,9,18,15,15,18,15,15,18,15,26,15,15,15,15,15,9,15,16,15,18,15,9,15,16,15,15,15,23,23,23,22,15,15,15,15,15,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,13,15,24,15,15,15,15,15,15,15,15,20,18,15,18,15,21,15,15,15,15,15,15,15,15,18,15,15,15,15,15,8,15,15,18,18,17,15,8,14,15,18,15,15,15,16,18,15,13,13,26,15,15,15,15,8,15,15,15,14,15,8,17,15,15,15,15,15,15,15,18,8,15,15,15,18,15,15,15,15,15,15,15,18,15,15,15,24,15,15,15,15,15,15,15,15,15,15,24,15,15,15,15,15,15,15,15,15,15,15,15,15,8,13,17,14,24,15,15,15,15,13,17,15,15,15,15,15,15,15,15,13,9,18,16,15,15,15,18,15,15,15,22,15,15,15,15,15,8,15,15,15,15,18,15,15,15,9,15,15,15,15,16,9,15,15,15,15,15,15,15,8,15,15,15,15,15,15,9,16,15,8,15,8,15,15,15,16,9,15,15,15,15,18,15,15,13,15,15,15,9,15,15,15,15,15,15,15,15,15,23,23,23,18,18,8,15,15,15,18,15,15,15,15,15,15,15,15,27,15,15,15,15,15,15,15,15,15,15,15,15,15,15,27,15,15,15,18,15,15,15,15,17,8,15,18,15,15,28,13,21,15,18,15,15,15,15,15,15,18,15,15,15,15,15,26,15,15,15,15,15,15,15,15,15,15,18,15,15,13,15,13,15,18,15,15,15,15,17,15,15,15,13,15,15,15,15,15,18,15,15,15,15,15,15,9,18,15,15,15,15,15,15,15,9,15,13,15,18,15,15,18,18,15,15,15,8,15,15,15,15,15,8,15,15,15,15,15,15,13,15,15,24,15,15,15,15,15,15,15,24,15,15,15,24,15,15,9,15,16,9,15,15,15,15,15,17,15,15,15,8,24,15,15,15,15,15,15,15,15,15,15,9,18,15,15,15,8,15,17,15,15,15,15,15,15,22,15,15,18,15,15,15,15,15,15,24,15,17,15,15,13,15,15,15,24,15,15,15,15,15,15,15,17,15,15,15,15,15,18,15,15,8,13,15,23,23,23,23,23,23,15,15,15,15,15,15,18,15,18,18,15,15,15,8,15,15,22,15,15,15,16,15,14,15,15,15,15,15,15,15,26,15,15,15,15,17,15,15,18,15,15,15,15,15,9,9,14,15,15,9,15,24,15,15,15,15,8,9,8,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,24,26,15,15,18,15,15,21,15,15,15,9,9,15,15,15,15,15,15,18,15,15,15,15,15,15,13,15,13,15,15,13,15,17,15,15,15,18,15,15,16,15,15,15,15,15,15,15,15,15,15,15,22,15,15,15,15,8,13,15,15,15,18,9,15,16,15,15,13,15,15,9,18,18,15,8,15,15,15,13,15,15,8,15,18,15,15,15,15,15,22,18,15,15,13,17,8,24,18,24,9,13,15,15,15,15,9,15,15,18,15,15,15,15,22,15,15,18,15,15,15,15,15,15,15,8,15,15,15,9,9,15,17,18,15,15,15,9,18,15,18,18,8,18,15,22,18,15,18,8,15,18,18,8,15,15,15,23,23,23,23,23,23,15,24,15,15,15,15,15,18,15,9,15,8,22,24,15,15,15,15,13,18,18,18,15,9,15,15,18,15,24,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,13,20,15,16,15,15,15,15,20,15,15,15,15,15,8,21,17,15,15,15,15,15,15,15,15,13,15,15,15,15,15,13,15,15,15,15,15,15,16,15,15,18,15,15,15,22,15,15,15,15,15,9,8,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,17,9,15,20,15,15,15,15,15,15,15,15,15,24,15,15,15,18,15,8,18,15,18,15,9,15,15,8,15,15,15,15,15,9,18,15,15,15,15,15,15,15,15,15,15,24,26,15,15,9,15,15,15,15,13,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,15,13,18,15,15,15,15,15,24,15,13,15,19,15,15,15,15,15,9,18,18,13,15,15,15,18,26,15,15,15,15,14,15,18,9,14,15,15,15,15,13,15,15,15,15,23,23,23,23,23,23,23,24,15,18,15,15,15,8,15,15,15,15,15,15,15,18,15,18,15,9,15,18,15,15,15,15,15,15,18,24,15,15,16,15,13,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,13,18,15,15,15,15,15,15,9,15,15,15,13,18,15,13,15,15,13,15,15,15,15,18,15,15,24,15,13,15,15,15,15,15,15,18,18,15,18,15,15,15,15,15,18,15,18,9,15,9,15,15,15,15,18,15,15,13,15,15,15,15,13,15,15,15,15,18,15,15,15,15,15,15,15,8,15,15,15,15,15,18,15,9,15,15,15,24,15,17,15,15,15,18,15,15,15,18,15,16,16,15,15,21,15,15,9,18,15,15,22,15,15,15,18,15,22,15,15,15,15,18,9,8,8,23,15,18,15,15,15,8,15,15,15,15,15,15,18,13,18,15,15,15,15,15,15,15,15,15,15,15,18,15,15,8,15,18,15,15,18,15,14,15,15,9,16,18,18,18,15,16,15,15,15,17,15,15,8,23,23,23,23,15,15,9,15,15,15,18,13,8,15,15,15,15,18,15,8,15,15,15,17,15,15,15,15,15,15,15,8,15,9,15,18,15,8,15,17,15,15,8,14,15,13,16,15,17,15,15,8,15,18,15,15,15,15,15,26,15,15,15,18,15,18,15,15,15,15,15,15,8,15,24,27,15,15,15,15,18,14,24,15,13,15,15,15,15,15,15,15,15,9,15,15,15,15,15,18,15,13,15,15,15,15,18,15,15,15,15,18,15,15,15,15,15,15,15,15,14,15,18,15,17,15,15,15,15,15,27,15,15,15,14,15,8,18,9,9,15,15,15,14,17,15,14,15,15,15,13,13,15,15,9,17,8,15,15,15,24,9,9,15,8,15,26,15,15,15,15,15,18,15,18,15,15,15,18,15,15,15,15,8,15,15,15,15,27,8,15,13,18,8,9,9,15,15,8,15,15,22,16,18,16,15,15,18,18,15,15,15,9,23,23,23,23,23,23,15,13,15,9,15,15,15,15,18,15,22,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,8,15,8,15,26,15,15,15,15,18,18,15,15,15,13,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,18,15,15,15,15,15,16,15,15,8,15,15,24,15,15,15,15,15,18,15,15,15,18,15,15,15,13,15,15,15,15,15,15,15,22,15,16,15,15,15,15,15,15,18,15,15,18,15,8,15,18,15,15,15,15,15,15,15,15,15,18,15,15,15,15,8,15,15,15,8,18,15,15,18,15,15,15,15,18,8,15,9,15,13,15,15,15,13,18,15,22,15,15,15,18,18,15,15,8,15,18,15,15,8,15,15,15,15,15,15,15,8,15,15,16,15,15,18,15,18,18,15,15,15,15,15,13,15,13,15,15,15,15,15,8,13,15,15,15,15,24,15,15,15,13,15,15,15,15,18,18,15,15,15,15,26,15,15,15,15,15,15,9,15,15,15,15,15,15,16,15,15,23,23,23,8,15,15,15,15,15,15,15,20,8,15,15,8,15,15,18,8,8,15,15,8,24,15,18,15,18,15,18,16,9,15,8,18,15,15,15,15,15,15,15,25,15,15,8,13,20,15,15,15,15,13,18,15,8,15,15,15,13,15,20,15,15,15,9,15,15,15,15,15,15,18,15,15,15,18,15,15,18,18,15,15,15,15,15,15,18,15,15,9,15,8,15,16,15,15,22,15,15,15,15,15,15,15,9,22,18,15,15,18,15,15,8,15,15,15,15,15,8,16,15,15,15,15,15,15,15,15,15,15,15,15,15,15,22,26,13,15,15,15,8,15,9,15,15,15,15,15,15,15,17,13,13,13,15,18,15,8,15,18,15,15,15,15,15,15,24,15,18,15,15,15,24,15,18,15,15,15,15,13,15,15,15,17,15,15,16,15,17,9,15,16,15,15,15,15,15,13,18,15,13,14,15,15,15,16,15,15,13,15,15,15,15,15,8,15,15,8,15,15,17,15,15,23,23,23,15,15,15,15,15,15,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15,8,18,15,15,15,15,18,18,8,15,15,15,20,15,17,15,8,13,15,15,15,15,15,8,15,17,15,15,15,15,15,15,13,15,9,15,17,9,15,15,15,13,15,15,15,9,15,15,18,15,15,15,15,22,13,15,15,15,8,15,22,9,15,15,15,15,15,13,15,15,15,15,15,16,15,15,15,15,15,15,15,9,18,15,18,15,15,18,15,15,15,18,15,18,15,15,18,8,15,20,15,15,15,15,15,15,15,15,15,20,15,15,22,15,15,15,15,8,15,15,8,20,15,8,15,18,15,17,15,15,18,15,15,15,9,24,15,15,15,15,18,15,15,15,15,22,15,8,15,15,15,15,15,15,24,9,15,15,15,15,17,15,15,15,15,13,15,15,15,8,27,15,15,15,15,9,15,15,15,15,15,15,15,15,15,15,18,18,9,9,15,8,15,15,9,24,13,22,15,15,15,15,15,15,18,15,15,9,15,15,15,15,15,15,15,23,23,23,23,15,15,18,9,15,15,15,15,15,13,9,15,15,15,15,17,20,15,15,18,18,15,15,15,15,15,15,15,20,15,15,15,16,15,8,15,15,9,8,9,15,16,15,14,15,15,15,15,15,9,15,15,15,15,15,14,18,15,15,15,15,15,15,15,18,15,15,18,15,15,14,15,18,18,15,24,27,15,15,15,15,18,15,13,17,15,15,15,15,15,19,26,15,15,15,17,15,15,18,15,15,15,15,15,15,15,18,9,19,15,15,15,15,8,15,15,15,13,13,15,9,8,15,15,15,15,15,15,15,15,15,15,15,15,15,15,22,15,15,15,15,15,15,21,15,13,18,15,13,13,8,15,15,13,15,15,15,15,15,15,15,15,15,15,15,8,15,15,9,9,13,15,15,15,15,13,15,15,13,15,13,15,21,15,18,15,13,15,15,15,18,15,9,18,15,15,15,17,15,15,15,15,15,15,9,15,9,15,15,26,17,15,9,15,15,13,15,15,15,15,15,15,15,15,15,15,15,15,15,18,18,15,15,15,15,9,15,15,15,15,15,22,15,15,22,15,15,15,15,13,15,15,15,15,13,9,13,15,13,15,15,15,15,15,15,15,15,14,15,15,15,9,17,15,15,15,22,13,15,15,15,14,15,15,15,15,13,15,18,9,15,15,15,13,13,15,15,18,15,17,8,13,15,15,15,15,17,18,8,19,15,15,15,15,15,18,15,13,15,15,15,15,17,15,26,15,15,15,15,15,15,15,15,15,15,15,15,15,18,9,15,18,15,15,16,15,15,15,15,15,15,15,15,15,15,15,8,18,8,15,15,23,23,23,23,16,15,15,15,19,15,8,15,18,15,15,15,15,15,15,9,15,15,18,15,15,15,15,15,26,9,15,15,15,15,15,15,24,9,15,9,13,15,15,13,15,15,16,15,15,15,15,15,15,15,16,17,15,8,15,15,24,15,18,15,15,15,17,9,15,15,18,15,15,15,15,15,18,15,8,15,15,15,15,8,15,15,15,13,13,15,15,18,15,15,15,15,13,18,15,15,15,13,18,15,8,14,15,15,8,15,15,8,15,18,15,18,15,15,15,18,18,15,21,15,18,15,15,15,9,15,15,15,15,15,15,18,15,15,8,15,15,15,17,18,15,15,9,15,13,15,15,8,15,15,18,15,15,15,15,15,15,15,8,15,9,15,15,15,15,18,15,15,15,16,15,15,15,15,15,15,15,15,15,18,18,15,18,15,15,16,15,13,15,15,13,9,15,9,15,15,15,18,15,15,18,15,8,18,18,16,9,16,15,15,15,15,20,15,15,15,15,23,23,23,23,15,15,15,15,26,15,15,15,15,22,15,15,15,15,15,15,18,15,15,16,15,8,15,15,17,15,15,15,9,8,18,15,17,18,15,15,15,15,8,15,15,15,8,15,15,24,15,15,15,15,15,15,15,15,15,15,15,13,15,15,18,15,18,15,24,15,18,15,15,15,15,15,15,15,9,15,17,15,13,15,15,15,15,15,18,14,27,15,15,15,15,8,9,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,13,15,14,15,15,8,15,15,18,15,15,24,15,15,15,15,15,15,18,15,13,15,15,15,15,15,15,18,18,15,16,15,26,15,15,14,8,15,15,15,18,15,15,15,15,24,15,15,15,15,15,8,15,15,15,19,15,24,15,15,15,15,15,15,26,15,15,15,17,24,9,15,15,13,24,8,13,15,15,13,13,15,15,22,15,9,22,15,15,15,15,15,15,15,15,15,17,15,15,15,15,15,15,15,15,15,15,15,15,8,15,15,15,20,15,15,15,15,15,15,20,15,15,9,16,15,23,23,23,23,23,15,16,15,15,15,15,15,15,18,13,15,15,15,15,15,15,13,15,15,15,15,15,15,15,15,15,15,15,15,15,18,18,25,18,15,15,15,15,15,9,20,16,9,13,15,15,15,15,15,8,15,15,15,15,15,15,15,15,15,15,15,15,16,15,17,15,23,15,15,15,15,18,15,9,15,26,15,15,15,15,9,17,15,15,15,15,9,15,15,15,18,15,15,15,15,15,15,13,18,15,15,15,15,15,15,15,15,18,15,22,15,15,15,15,15,15,15,15,15,15,15,15,15,16,15,15,17,15,18,26,18,15,15,15,15,14,15,15,15,13,15,21,17,18,15,15,15,15,15,21,15,15,15,15,15,15,15,15,15,15,15,15,18,8,15,15,15,15,15,15,15,20,13,15,18,18,15,15,20,15,15,15,15,15,15,13,15,9,15,13,8,24,15,15,8,13,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,13,18,15,15,8,15,15,14,15,15,18,8,15,9,15,17,15,15,15,15,15,15,14,18,18,8,8,15,15,15,15,15,15,18,15,15,15,23,23,23,23,23,23,23,9,15,15,15,9,15,15,15,9,15,18,15,15,15,15,15,15,15,15,17,15,15,15,15,15,9,15,15,20,15,15,15,13,15,15,15,15,8,9,15,15,15,15,18,15,15,22,15,15,15,15,15,9,15,15,8,9,15,26,15,9,15,16,15,15,15,15,15,20,15,15,15,15,15,15,8,15,18,15,15,15,15,19,15,15,13,15,13,13,15,15,15,15,8,18,15,15,8,15,13,8,15,15,15,8,15,15,15,15,9,17,20,15,15,15,15,15,15,15,15,15,15,15,15,15,15,19,15,15,15,15,15,15,18,15,17,13,15,15,15,15,9,15,15,20,15,15,15,15,24,15,13,15,15,25,15,15,18,15,24,15,15,9,18,15,18,15,18,15,15,15,15,15,9,15,15,15,15,15,15,15,18,16,18,15,9,15,15,15,15,13,15,18,15,15,15,15,16,15,15,15,15,18,15,18,15,15,9,15,24,15,15,15,15,15,15,15,15,15,8,15,18,8,15,22,15,9,22,15,15,13,15,15,15,15,9,15,15,13,15,15,15,15,15,15,15,16,15,15,15,16,15,15,15,13,15,15,18,18,15,22,16,15,16,15,15,15,15,8,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,9,15,15,17,15,15,15,8,15,13,9,18,15,8,15,17,22,13,23,23,23,23,23,26,15,17,15,15,17,15,16,15,15,15,13,8,15,18,15,15,15,15,15,15,15,24,17,15,15,15,16,21,15,15,8,17,15,15,9,15,15,18,13,13,15,15,15,15,15,8,15,15,9,15,15,8,16,15,9,20,15,15,13,15,15,24,15,15,15,15,15,8,18,15,22,18,18,13,18,15,15,15,15,15,18,15,9,18,15,15,15,15,18,15,15,15,15,15,16,15,15,15,15,15,15,15,15,15,8,15,15,8,15,15,15,13,15,15,15,15,18,15,15,15,13,15,15,18,15,9,15,18,15,15,18,8,16,15,15,15,15,15,13,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,22,18,15,15,18,13,9,15,15,13,15,18,15,18,15,15,13,15,15,15,13,15,15,15,15,15,18,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,24,15,15,15,18,15,15,15,18,15,20,15,15,15,23,23,23,23,23,23,23,23,23,15,13,15,15,15,15,18,9,15,13,15,15,15,9,15,22,15,18,15,18,15,15,15,15,9,15,15,15,15,15,15,19,15,15,13,13,13,15,20,15,15,15,15,15,8,15,15,15,15,15,15,15,15,23,15,15,15,9,15,15,8,17,15,15,15,15,9,15,18,15,20,15,15,16,15,9,15,15,15,13,15,15,13,15,15,15,13,15,13,15,16,18,15,15,15,15,14,15,15,15,17,15,9,15,14,15,15,15,15,15,26,15,15,15,15,17,9,15,24,18,15,14,8,22,15,15,15,15,8,17,18,15,14,15,15,15,15,8,20,15,15,15,15,15,15,9,22,15,15,18,15,15,15,15,15,15,15,15,15,15,17,24,9,15,15,15,15,15,15,15,16,15,15,15,15,16,9,13,15,15,15,15,17,8,15,15,15,8,15,15,15,15,13,15,15,14,13,15,8,15,18,15,15,8,13,18,8,9,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,24,15,15,13,15,14,15,15,18,15,15,15,9,15,18,15,15,9,8,15,15,9,17,18,8,15,18,15,15,15,15,15,15,15,9,15,15,15,15,15,9,15,15,8,15,15,15,15,15,15,15,18,15,15,15,18,18,23,23,23,15,9,15,15,15,15,15,15,22,18,18,15,15,18,15,15,15,15,15,13,15,15,18,17,15,15,15,15,15,15,18,15,15,18,8,15,15,15,15,15,22,15,9,15,15,15,15,15,15,8,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,20,15,15,15,13,15,8,15,15,15,15,15,15,15,15,15,8,15,15,15,15,15,15,8,15,15,9,15,14,15,15,15,15,15,15,16,15,15,9,15,15,15,15,9,15,8,15,15,18,15,15,15,15,18,15,15,18,13,17,15,24,15,18,15,15,15,18,15,15,15,15,18,15,9,9,15,8,14,15,15,15,24,15,15,15,15,15,9,15,15,15,15,18,15,15,9,15,18,15,15,15,15,15,18,15,15,15,15,18,13,18,15,15,15,14,15,15,15,15,15,20,15,15,15,15,15,15,15,13,15,15,15,15,15,15,9,15,9,18,15,15,15,15,15,15,8,15,18,8,26,8,15,13,9,15,15,23,23,23,23,15,20,13,15,18,15,15,15,15,9,14,15,13,15,15,15,15,15,15,20,20,15,15,9,15,13,15,15,15,15,15,15,15,15,15,15,28,15,15,15,16,15,15,20,15,15,19,15,9,15,15,15,16,15,15,15,15,15,15,22,15,15,13,15,16,8,15,15,15,9,15,15,17,15,15,15,15,15,15,15,15,15,15,15,14,13,15,15,15,15,15,15,15,13,15,9,18,15,15,15,18,15,15,15,13,18,15,15,16,18,13,13,15,15,15,18,15,15,15,15,15,13,15,19,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,8,15,15,9,15,24,15,15,15,15,15,15,19,9,15,15,15,15,23,15,15,15,15,15,15,15,8,13,15,15,14,15,15,15,15,18,15,15,15,15,14,15,15,17,15,15,15,15,22,15,15,15,9,18,15,15,13,15,15,15,15,15,15,8,24,15,15,18,16,15,15,15,15,15,13,13,15,15,15,16,15,18,13,15,15,15,15,15,15,16,15,15,9,15,18,15,14,15,15,15,15,18,15,8,22,15,9,15,18,13,18,15,15,15,17,26,19,15,15,15,13,15,8,15,18,15,15,15,15,15,15,15,15,15,15,15,15,9,13,9,15,15,15,15,15,15,15,15,18,15,15,15,18,15,13,15,9,15,15,9,18,15,15,15,15,9,15,15,15,9,15,18,15,15,15,9,15,13,8,15,8,15,15,15,15,15,18,15,15,15,15,15,14,15,15,15,26,15,15,15,15,15,15,15,22,15,9,15,14,14,18,15,15,22,15,15,18,14,15,15,26,15,15,15,15,15,13,19,15,15,15,15,15,16,26,15,15,15,9,15,9,15,15,9,18,15,15,15,15,15,9,15,15,15,18,15,15,15,15,15,15,14,24,15,15,15,23,15,15,15,9,15,15,15,15,18,15,18,15,24,15,8,15,15,22,15,15,15,19,15,15,15,15,15,20,15,15,26,15,15,15,23,22,9,15,8,15,16,15,15,15,15,8,15,13,15,16,18,15,15,15,15,15,15,15,15,18,9,15,18,8,15,15,26,15,18,15,15,15,15,8,15,15,15,15,15,15,13,15,15,22,15,8,13,15,22,25,15,18,24,22,17,9,14,15,15,15,15,15,15,15,15,15,15,15,13,18,15,15,15,15,15,15,13,8,15,9,15,15,15,18,15,15,17,15,15,15,15,15,15,15,15,9,15,21,15,15,15,15,15,15,15,15,24,13,18,15,15,15,15,16,18,15,23,23,15,13,15,8,9,21,15,15,9,15,15,15,15,15,18,15,15,15,15,15,15,15,15,8,15,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,15,17,15,15,15,15,15,15,15,15,15,15,15,15,15,15,26,8,15,15,15,15,15,15,15,15,15,15,15,15,13,15,15,9,18,15,15,15,15,9,9,18,15,15,9,15,15,15,15,15,15,15,15,26,13,26,15,15,15,15,15,26,9,15,13,15,15,15,15,15,15,15,15,15,15,20,15,15,8,26,18,17,15,15,9,15,9,9,18,15,15,15,9,15,13,15,15,13,15,15,15,15,24,19,19,15,15,15,18,9,17,15,15,8,18,15,15,23,23,23,23,23,23,23,23,15,15,15,18,13,15,15,15,15,15,15,19,15,18,15,22,15,8,15,15,15,9,15,15,15,15,9,15,15,24,15,15,15,9,15,15,9,16,15,15,15,15,24,18,15,15,15,19,15,15,15,15,15,8,15,15,15,15,15,8,15,18,15,15,15,9,18,16,14,15,18,15,8,18,15,8,9,15,8,15,15,15,16,16,15,15,18,15,13,15,26,13,15,15,15,15,15,9,15,23,23,15,13,9,13,13,13,13,13,13,13,13,15,15,15,15,15,15,15,13,15,15,18,15,15,9,15,16,15,22,15,18,18,15,15,15,18,15,15,15,9,15,9,15,15,15,18,15,15,15,15,15,15,15,15,15,15,8,15,18,15,15,15,15,8,15,15,15,18,15,15,13,15,15,15,15,16,15,16,15,8,9,15,15,9,15,15,23,23,23,23,23,23,15,15,15,13,15,18,15,15,15,15,15,15,9,28,15,27,22,15,15,15,24,21,25,15,17,9,15,15,15,15,15,15,18,15,15,15,15,18,15,15,13,15,8,13,15,15,15,15,15,8,15,9,15,15,15,15,15,15,15,15,15,9,15,15,9,15,18,15,9,24,15,9,15,18,15,15,15,15,24,15,9,15,18,15,15,15,8,15,15,15,15,15,15,15,15,26,15,18,15,9,13,13,15,8,15,15,15,15,15,16,15,15,15,15,26,15,15,15,15,15,15,15,13,15,8,15,15,15,15,15,13,8,17,9,15,18,15,9,9,15,15,15,15,18,15,15,15,22,18,15,15,15,15,15,15,15,15,15,24,15,18,15,15,15,15,15,15,18,13,15,15,15,15,13,15,15,15,8,15,15,15,15,15,15,15,15,15,15,18,9,18,8,15,18,15,15,15,9,15,9,15,21,15,15,15,15,15,15,14,15,15,15,15,13,15,15,13,15,15,15,16,8,27,15,19,15,15,15,15,15,25,15,15,13,15,15,18,23,23,23,23,15,15,15,15,15,15,15,15,15,9,15,15,18,15,15,15,15,13,9,13,14,15,15,9,8,15,15,15,15,15,15,15,24,15,15,15,15,15,15,13,15,15,15,8,15,15,15,15,15,15,15,15,15,15,13,16,15,15,15,15,14,15,15,15,15,14,15,15,16,15,15,15,15,15,15,24,18,15,15,18,24,9,15,15,15,15,9,13,13,15,16,15,18,15,15,16,15,9,15,16,15,15,15,15,15,15,15,18,15,15,15,18,15,15,15,18,15,15,8,15,15,15,13,15,15,15,15,8,15,16,18,18,15,15,15,15,18,15,15,15,18,8,15,15,15,9,18,15,15,15,15,15,13,18,15,15,9,15,17,15,15,15,15,15,9,8,15,15,16,15,15,15,15,15,15,15,15,13,15,8,15,15,15,15,15,15,9,15,18,18,18,15,18,15,15,15,15,15,15,15,15,15,15,15,18,15,15,14,15,13,15,15,15,13,15,15,15,13,17,15,15,15,23,23,23,13,15,18,15,15,16,15,15,15,15,15,15,26,15,15,15,15,15,15,20,15,15,15,15,15,18,15,15,15,15,15,22,8,20,9,13,8,15,15,25,9,8,15,15,15,25,15,15,18,22,13,16,8,15,15,15,15,15,15,17,8,15,15,15,8,18,15,17,22,15,16,15,18,15,15,15,13,15,15,15,17,15,15,15,15,15,15,15,22,17,15,15,15,8,27,15,18,16,15,15,15,15,15,15,15,15,15,27,15,15,15,15,15,9,15,15,15,15,13,18,17,14,15,15,18,15,15,15,15,18,15,15,15,15,15,15,8,9,18,15,15,15,15,15,17,15,9,24,15,20,15,15,15,15,25,15,9,18,15,15,15,15,15,15,15,13,8,16,15,15,27,26,15,15,15,15,15,8,15,9,22,13,8,15,8,18,15,9,15,15,13,15,15,18,27,8,15,15,15,13,13,15,15,15,15,18,15,15,15,15,15,18,15,15,15,13,15,13,15,15,24,23,23,23,23,15,9,18,15,15,15,18,15,15,15,15,9,15,15,15,9,15,13,15,26,19,15,15,15,14,15,27,15,18,15,24,15,16,13,22,16,15,15,8,15,15,13,15,15,15,15,15,15,20,15,15,15,15,22,18,15,15,15,15,15,14,15,15,15,15,15,15,24,15,15,15,15,14,15,15,15,15,15,15,24,15,15,15,15,15,8,15,26,15,15,15,15,17,18,18,13,15,15,15,15,15,15,15,15,13,15,8,13,15,15,18,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,16,13,15,15,15,8,15,15,15,15,15,15,26,15,15,15,15,13,8,15,15,15,15,15,15,15,15,15,15,15,20,8,15,9,15,15,15,14,15,15,15,15,15,15,13,15,15,15,15,18,15,15,15,18,9,16,18,15,15,15,15,15,15,15,9,15,15,15,15,15,13,8,15,18,15,18,15,18,15,15,15,15,15,18,8,18,15,15,15,15,18,8,15,15,15,14,15,15,13,9,15,15,18,15,15,18,18,15,15,15,15,15,15,15,15,15,15,23,23,23,15,15,8,15,15,13,15,15,15,15,15,15,15,9,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,20,15,17,15,15,8,18,15,17,15,15,13,15,9,15,15,13,15,15,15,13,15,15,22,19,15,13,15,9,17,15,15,13,15,8,20,15,15,15,15,15,16,18,15,15,15,15,8,15,15,15,18,15,15,15,15,15,15,8,15,15,15,15,15,18,15,15,18,15,13,15,15,15,9,15,15,15,15,15,15,15,15,15,15,9,15,15,15,18,15,9,15,13,15,15,15,8,15,18,15,13,21,18,15,15,15,15,9,15,15,15,15,18,15,15,15,15,8,15,17,27,15,15,15,21,15,18,15,15,15,15,15,15,15,15,15,15,15,13,15,15,15,15,15,15,15,15,18,13,15,15,15,15,15,15,15,9,15,13,15,17,15,17,15,15,15,15,15,15,20,15,15,15,15,15,15,23,15,15,18,15,8,15,15,15,8,15,15,15,18,15,15,15,16,15,15,15,15,8,15,23,23,23,18,18,9,18,15,15,13,15,15,15,15,15,15,13,15,15,15,15,15,15,15,24,15,15,18,15,15,15,15,18,15,15,15,15,15,15,16,15,15,15,18,24,15,15,9,15,15,24,15,18,15,15,15,8,18,15,15,15,17,19,15,15,15,18,15,15,15,15,20,15,9,8,15,27,13,15,15,15,8,15,15,18,17,13,15,16,15,15,15,15,15,15,15,13,15,15,15,15,15,15,19,24,15,18,15,15,18,13,16,15,15,15,15,15,15,15,15,15,8,15,15,9,15,15,13,15,15,15,25,15,15,15,13,15,8,9,15,13,15,16,15,15,15,18,15,8,15,15,15,15,15,18,18,15,15,15,15,13,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,8,15,15,26,15,16,24,15,15,18,15,15,15,15,15,15,15,18,15,18,15,8,15,15,15,15,15,9,15,18,15,15,18,9,15,15,15,15,15,15,8,15,15,15,8,15,23,23,23,23,23,15,9,18,15,15,13,15,15,9,15,15,16,15,15,15,15,15,15,18,15,15,15,9,15,15,15,13,15,15,15,14,13,15,15,9,15,15,15,15,15,15,15,20,8,15,18,15,15,15,15,15,13,15,14,15,15,15,15,15,8,15,15,15,15,16,15,15,15,8,15,15,15,9,15,17,13,15,15,13,15,15,15,18,15,15,15,27,15,15,15,17,13,18,8,15,15,8,15,15,15,18,15,15,15,15,15,18,15,15,15,15,15,15,24,13,15,15,18,15,15,15,15,9,18,15,15,15,15,15,15,15,15,15,15,15,15,16,15,15,15,15,15,15,13,15,17,15,15,15,15,15,13,15,15,15,15,18,15,15,15,13,18,15,15,15,15,15,15,13,15,21,15,25,18,13,15,15,15,18,15,18,18,15,15,15,14,15,15,15,13,18,15,15,15,15,8,18,15,15,15,15,15,8,15,15,15,15,13,15,14,18,18,15,23,23,23,15,15,15,15,8,15,18,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,22,15,15,15,15,15,15,15,9,15,15,15,15,15,15,17,15,17,15,15,15,13,15,15,15,15,15,24,15,17,15,15,9,15,15,15,15,15,15,14,15,15,15,8,15,15,15,15,15,8,15,26,15,15,16,15,15,15,15,15,15,15,15,15,15,26,13,15,26,15,15,17,9,9,8,15,15,15,15,15,15,18,13,15,15,15,8,15,15,24,13,18,15,23,23,23,15,15,8,15,15,15,15,15,8,15,15,17,17,18,15,27,15,15,15,15,15,15,15,15,15,15,15,22,15,26,24,15,15,15,15,15,15,15,15,15,15,15,15,15,15,24,8,15,15,24,15,18,17,15,24,15,15,9,15,18,15,24,15,15,15,15,9,15,15,15,15,15,13,15,15,15,15,15,17,24,15,15,22,13,15,15,22,13,18,15,15,15,15,15,15,9,13,15,15,15,15,18,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,8,15,15,15,18,26,15,15,15,15,15,15,22,18,9,13,15,24,15,8,15,15,15,15,15,24,15,15,15,15,15,18,15,15,9,8,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,24,18,13,22,15,16,17,18,15,15,15,15,15,15,15,15,15,15,15,13,15,15,15,15,18,15,15,15,9,15,13,15,9,15,15,15,15,15,15,18,15,18,15,15,21,15,15,15,15,15,15,15,15,17,15,22,17,15,23,23,23,23,23,23,23,23,23,23,23,15,9,15,15,15,9,15,15,22,15,15,15,9,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,13,15,15,15,13,13,13,9,14,15,15,22,14,24,9,16,15,16,15,15,15,15,9,15,18,18,15,18,9,15,15,18,9,15,9,18,15,15,17,15,18,26,15,17,15,18,8,15,15,18,15,15,8,13,15,9,8,15,15,8,15,15,15,9,15,15,15,15,15,15,15,13,15,15,15,8,15,15,15,15,15,15,18,15,15,15,15,15,13,15,15,8,15,9,24,15,8,15,15,15,15,14,15,15,9,18,15,15,15,15,13,15,15,8,15,15,15,15,18,15,15,15,15,15,15,8,15,15,9,9,15,15,13,9,8,15,9,18,15,15,15,15,15,15,18,15,15,15,15,15,18,15,15,18,15,15,15,15,15,15,22,18,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,13,15,15,8,15,15,15,15,18,16,15,15,18,13,8,18,15,15,15,15,15,16,15,18,18,15,15,15,15,15,18,15,15,15,15,8,18,18,15,13,15,15,15,15,15,16,9,13,23,23,23,23,23,23,23,15,15,15,13,15,15,24,15,15,15,15,15,18,20,15,15,15,15,15,15,15,15,15,15,14,15,15,15,18,15,15,15,15,15,15,15,13,15,15,15,15,15,15,15,15,15,8,15,17,15,15,13,15,9,15,26,15,9,15,15,16,15,15,15,13,15,15,24,15,15,15,15,22,26,15,13,15,13,15,17,15,15,15,15,15,15,16,15,15,15,15,15,15,15,15,15,15,17,15,15,15,15,15,18,15,18,18,15,18,18,18,18,15,15,15,18,18,14,8,15,18,15,15,15,15,15,15,18,18,15,15,8,15,21,17,9,15,15,15,19,18,15,15,9,15,19,15,15,15,15,15,15,15,15,13,15,15,15,15,15,18,15,15,13,15,15,15,15,15,9,22,22,16,19,15,15,18,15,15,15,18,14,15,15,15,15,15,13,15,15,13,18,15,9,18,24,15,16,15,28,15,15,8,9,17,15,15,18,15,15,15,17,18,15,8,15,9,18,18,18,18,15,15,16,15,15,15,15,15,15,8,15,15,15,15,9,15,15,15,18,15,15,18,15,18,15,15,8,8,15,15,18,17,13,18,16,9,15,21,18,22,15,24,15,15,15,14,15,15,15,15,22,9,15,15,24,15,9,18,15,15,15,24,14,15,18,15,18,15,15,15,15,15,18,13,15,27,15,15,15,15,15,13,15,15,13,15,18,15,15,15,15,15,15,15,15,15,15,21,13,15,15,8,15,18,8,15,26,18,15,15,14,17,15,23,23,23,23,26,15,15,15,15,9,15,15,9,15,15,15,15,15,27,15,15,15,24,13,18,15,15,22,15,15,15,15,15,18,9,15,15,15,18,18,15,15,8,15,15,15,15,15,15,15,8,9,15,15,15,15,15,15,15,9,15,9,15,15,15,15,15,15,15,18,15,15,15,8,15,15,15,15,9,15,18,15,15,15,15,13,15,18,15,15,15,15,15,15,15,18,18,18,15,15,15,15,13,15,16,15,15,17,15,15,15,13,15,15,15,15,15,16,17,15,18,15,15,15,13,15,9,15,15,15,21,15,15,13,15,15,15,15,15,15,15,9,20,15,15,15,19,15,18,15,9,15,15,15,15,15,15,15,22,15,15,24,14,15,22,15,15,15,26,15,15,15,19,15,18,15,22,13,13,15,15,18,15,15,15,15,15,15,26,15,15,15,15,15,15,22,15,15,15,15,15,15,15,15,15,15,15,15,15,18,15,13,15,15,15,24,18,15,8,15,14,15,15,15,18,22,15,15,24,15,19,15,15,22,15,15,15,15,18,15,15,15,13,15,13,15,9,15,15,15,15,15,15,15,15,8,15,15,15,15,15,15,15,15,15,15,15,8,15,15,15,15,17,15,15,15,13,15,24,16,16,15,15,15,9,15,15,15,15,18,15,20,15,15,15,15,16,15,15,16,15,15,18,15,15,15,15,15,15,15,18,8,15,13,18,16,15,18,15,15,15,15,15,15,8,15,8,13,8,18,15,15,15,15,26,15,15,13,18,15,15,15,15,15,15,15,15,15,23,23,23,23,23,23,23,23,23,9,15,15,15,15,15,15,15,15,15,15,13,15,15,15,8,15,15,18,9,20,19,15,15,15,9,13,15,15,15,15,15,15,15,15,15,15,15,18,9,15,15,9,15,18,15,15,18,15,15,15,15,15,15,15,15,15,15,17,13,15,15,15,15,15,9,21,15,18,22,15,15,15,15,15,15,9,15,15,9,15,15,15,9,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,9,15,15,18,15,15,15,15,18,15,15,15,14,15,15,15,15,15,15,15,15,15,20,15,17,15,15,15,13,15,15,17,15,15,15,15,15,15,15,15,18,9,15,15,18,15,17,18,15,15,15,15,19,15,9,15,15,15,18,15,15,15,19,13,15,15,15,18,15,15,15,9,15,15,15,15,13,15,15,15,15,15,9,15,15,15,15,16,15,18,15,18,15,13,15,15,24,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,20,15,15,16,15,15,15,15,17,15,27,15,15,15,15,15,15,15,15,15,15,15,17,15,15,15,9,15,16,15,15,15,22,18,15,18,15,15,15,15,8,22,8,18,15,15,13,15,13,18,15,15,15,15,15,15,15,15,15,13,15,15,15,9,15,8,15,15,15,15,15,18,15,15,15,8,15,15,18,13,15,19,15,15,13,15,15,23,23,23,23,23,15,15,15,15,18,15,15,22,15,20,15,15,16,16,15,15,15,15,15,15,15,15,24,15,9,15,15,15,15,13,15,15,18,15,15,18,13,15,16,15,13,15,15,15,15,15,15,15,15,24,15,15,18,15,15,15,22,15,21,16,18,15,15,15,18,15,13,15,18,22,15,22,15,18,15,9,8,15,15,15,15,15,13,9,15,15,8,15,18,15,15,9,8,15,9,15,15,15,15,15,15,13,15,15,15,15,15,18,15,18,15,8,15,15,16,9,16,15,15,9,15,15,15,15,17,15,13,13,18,13,15,15,15,15,15,15,15,9,15,15,15,15,15,15,19,15,15,22,15,15,15,15,15,18,9,15,16,15,15,15,15,8,15,15,15,13,15,15,15,15,15,15,15,15,18,15,9,15,15,15,15,15,15,15,18,15,15,15,15,15,21,8,15,15,15,15,15,15,15,15,15,15,15,13,15,9,15,15,16,15,15,15,9,15,15,15,15,15,18,14,15,15,17,15,15,15,15,13,9,15,15,15,15,15,18,15,15,13,15,16,18,15,19,8,15,15,15,8,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,23,23,23,23,23,15,26,15,15,8,15,15,15,15,15,9,13,15,15,15,15,13,15,15,15,15,15,8,15,15,15,15,15,15,13,15,19,15,15,18,15,15,9,15,15,22,15,15,17,15,18,15,15,15,15,15,21,17,15,15,18,15,15,15,15,15,15,15,15,15,15,22,15,15,26,9,15,15,15,15,16,15,15,15,15,15,13,9,15,22,15,15,15,15,15,15,13,16,9,15,15,19,13,9,15,15,15,15,15,15,15,15,15,15,15,15,22,15,15,17,9,15,15,15,15,15,15,15,9,15,15,9,15,15,15,15,15,15,26,18,15,15,15,15,15,15,15,15,15,14,15,15,8,15,15,18,15,8,15,15,14,13,16,9,15,15,15,15,15,15,15,15,15,15,16,9,15,13,15,15,15,15,15,15,15,15,15,15,15,24,27,15,15,15,15,15,15,15,15,15,17,15,18,15,15,15,13,15,9,15,15,18,15,18,13,8,15,21,15,8,15,15,15,22,15,25,18,15,15,15,15,15,18,15,15,8,19,14,15,15,15,15,15,15,15,15,15,15,18,15,8,15,26,18,15,15,15,15,15,18,15,15,24,15,15,13,15,15,15,15,15,15,15,15,13,15,13,26,15,13,13,15,15,15,13,9,15,15,15,15,15,15,15,15,15,22,15,9,15,15,17,15,15,15,26,15,9,18,8,14,8,15,16,15,15,8,15,15,15,15,8,15,15,22,15,15,15,15,15,23,23,23,23,23,23,22,15,15,9,13,8,15,15,15,15,15,15,15,15,15,14,15,15,15,8,20,18,9,15,15,22,24,15,15,15,15,9,15,15,9,15,18,18,15,24,15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,13,13,15,15,15,15,9,15,15,15,15,15,8,15,15,15,14,15,15,15,15,22,15,15,15,9,9,15,15,15,15,15,15,18,15,8,15,13,16,9,15,15,15,15,15,15,19,24,22,15,15,15,15,15,14,15,15,15,15,15,15,15,15,15,18,13,15,15,15,15,15,19,15,15,15,15,15,15,26,15,17,15,15,15,9,15,15,15,15,15,15,15,14,18,8,15,15,15,15,15,15,15,9,15,15,21,15,15,15,8,13,14,17,18,15,15,15,15,15,18,15,15,15,15,18,17,15,15,15,15,15,15,15,15,18,13,15,22,15,15,15,18,17,15,15,18,15,15,14,15,18,9,9,15,15,15,15,15,15,15,15,15,18,9,15,20,15,15,15,20,15,24,15,15,15,15,15,8,13,15,15,15,15,15,9,15,15,18,8,13,15,23,23,23,15,17,8,15,15,15,15,15,15,15,15,15,22,15,15,15,15,15,15,15,15,15,18,15,15,15,15,24,15,15,15,15,15,15,24,15,15,18,15,15,15,9,17,15,9,15,8,15,15,8,15,15,9,15,18,15,13,15,15,15,15,15,9,15,15,15,15,15,15,15,15,15,15,16,15,15,8,15,15,15,15,15,15,15,15,18,18,15,15,15,15,15,15,8,15,15,8,20,15,15,16,15,15,15,16,15,17,15,15,15,15,15,8,15,15,15,18,15,15,18,22,15,15,15,15,15,15,15,24,13,15,15,13,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,22,9,15,8,15,15,15,8,15,15,15,15,15,15,22,13,15,8,18,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,24,15,15,9,8,15,18,9,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,18,15,15,15,15,15,15,23,23,23,23,15,15,18,15,15,15,17,15,15,15,15,9,15,14,9,15,15,15,13,15,18,15,15,15,15,9,15,16,15,18,15,15,13,15,15,15,15,15,19,17,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,22,15,15,16,15,15,9,15,15,15,15,15,15,15,15,15,15,17,15,15,15,15,15,15,15,9,15,9,9,15,15,15,15,13,15,15,15,15,15,15,15,15,13,15,15,15,15,16,15,13,15,15,15,15,15,15,15,15,15,15,15,18,15,15,26,15,8,15,15,15,15,15,15,15,23,19,15,15,15,13,15,13,9,15,15,15,15,9,15,15,15,15,20,15,15,15,15,15,15,16,15,15,15,9,9,15,15,9,13,15,15,15,14,15,15,15,16,15,18,15,15,15,15,22,17,15,17,15,15,15,22,17,15,15,17,22,15,15,9,15,15,13,15,15,9,18,15,15,9,15,15,23,9,15,16,15,15,15,8,15,15,18,15,15,9,15,15,13,15,15,15,16,15,8,15,15,26,15,13,15,15,15,9,18,15,14,15,15,15,15,15,15,25,15,15,8,15,15,18,9,20,15,15,15,17,15,15,26,15,15,18,15,15,15,15,15,15,15,17,9,18,15,15,15,9,15,15,16,15,15,15,8,16,9,15,15,15,18,9,16,18,15,13,15,15,15,15,15,15,18,15,18,15,15,15,20,15,15,15,15,22,15,15,15,15,15,16,15,15,15,13,15,15,14,15,15,15,15,15,9,16,15,15,15,15,15,14,15,15,15,15,9,15,15,8,8,15,15,14,15,15,17,15,15,24,15,15,15,13,9,15,15,13,14,15,15,15,15,20,15,15,15,15,15,23,23,23,23,22,15,15,15,15,15,15,18,15,15,18,9,18,8,15,15,15,15,15,15,15,8,9,15,26,15,15,15,15,15,21,15,8,15,18,15,15,15,15,15,15,15,15,13,15,13,15,15,15,24,15,13,15,15,15,18,18,15,15,9,15,17,15,15,15,15,15,15,15,13,15,9,15,15,15,15,15,15,9,9,15,15,15,9,15,15,15,9,15,15,24,15,15,15,15,9,15,18,18,15,17,15,9,15,20,24,15,15,15,8,15,18,15,15,13,15,15,15,9,15,16,15,15,18,15,15,15,8,15,18,18,15,18,8,15,18,15,15,15,15,15,15,15,22,15,16,15,15,13,15,15,15,15,15,13,15,22,15,15,18,15,18,18,15,13,15,18,15,15,18,13,17,15,15,15,18,15,13,15,15,15,18,15,15,18,15,18,15,18,15,18,15,15,15,24,9,15,15,15,13,18,13,15,15,9,15,15,15,15,15,15,15,15,15,15,18,15,15,18,15,26,18,15,15,18,8,15,24,15,15,15,24,15,15,15,15,15,18,15,13,15,15,15,15,9,15,15,15,8,16,24,24,15,15,17,15,15,13,13,8,15,15,18,18,26,15,15,9,15,9,15,9,15,15,17,15,15,18,15,13,15,23,23,23,15,15,15,15,9,15,16,15,15,15,15,15,15,18,15,15,15,15,15,15,9,15,15,15,15,13,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,9,15,15,15,13,15,15,24,15,18,15,9,15,15,15,15,18,15,15,15,15,15,15,13,15,15,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15,15,9,15,15,26,15,15,15,18,15,15,15,15,15,15,26,15,17,26,18,27,15,14,15,18,15,15,18,15,18,9,15,15,15,15,15,15,15,9,15,26,15,15,13,18,15,15,9,15,13,15,15,15,9,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,8,15,8,8,15,15,8,15,15,15,18,15,15,13,15,15,15,15,15,15,15,15,14,15,16,15,15,15,15,15,9,15,24,15,18,22,15,8,15,15,24,15,13,22,15,15,8,15,13,15,15,17,15,15,15,15,18,9,15,15,15,15,15,15,18,15,18,15,18,8,15,24,15,15,18,15,15,15,18,15,18,15,15,13,15,15,16,15,15,15,18,15,15,15,15,15,8,15,15,15,15,15,13,15,15,9,16,19,15,15,15,14,9,15,23,23,23,23,15,15,15,8,15,15,15,15,15,16,15,15,15,15,13,26,15,15,15,15,15,15,22,15,15,18,15,9,15,15,15,15,15,15,15,15,15,24,13,15,15,15,13,17,15,15,22,15,24,15,15,9,15,15,15,15,15,8,15,9,18,15,18,15,15,20,15,13,15,15,17,15,15,15,15,15,14,8,15,15,15,15,15,13,15,15,24,9,14,18,8,9,15,8,15,15,15,15,15,15,15,15,9,15,15,20,13,15,15,9,8,27,15,16,15,8,15,15,13,15,15,15,15,15,13,15,15,15,15,18,15,18,15,18,15,13,15,15,15,15,15,9,22,15,18,15,15,13,18,15,18,17,14,15,8,15,15,15,15,8,15,15,15,15,13,15,15,15,15,13,15,15,18,15,18,22,15,15,23,17,15,15,8,15,13,15,15,15,15,15,15,15,15,15,15,13,15,9,18,15,15,15,15,15,18,16,15,9,15,9,27,15,15,15,15,15,15,15,18,15,15,15,8,26,15,15,9,8,15,15,15,8,15,15,23,23,23,15,15,15,15,15,13,15,15,13,15,9,8,24,15,8,8,15,22,15,15,15,15,22,25,15,15,9,15,15,18,16,18,15,15,15,9,9,13,15,9,18,15,15,15,15,18,15,15,15,14,18,24,15,24,15,15,15,15,15,15,15,15,9,18,15,15,15,15,15,15,9,15,15,8,8,15,15,15,18,15,15,15,15,15,15,15,15,13,15,15,15,15,15,18,15,17,15,15,15,18,15,15,8,15,15,15,15,17,15,16,15,15,13,15,17,18,22,15,15,8,15,22,9,16,17,13,18,27,15,18,15,15,18,15,15,15,16,15,15,24,15,21,15,15,9,13,15,15,15,15,15,15,15,15,9,15,15,8,15,18,15,15,15,15,13,15,18,16,13,15,15,15,18,18,15,15,9,15,8,13,15,17,16,15,15,16,15,15,15,15,15,15,15,15,15,15,24,15,15,15,9,15,15,15,18,15,15,18,18,15,15,15,15,15,15,15,15,15,15,15,15,23,23,15,15,8,15,15,8,15,18,15,16,15,15,15,15,15,15,24,15,15,15,18,15,9,15,13,15,15,15,15,15,22,15,17,15,15,15,15,15,15,15,27,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,13,15,15,18,15,13,15,15,16,13,15,15,9,15,15,15,8,15,15,15,15,15,15,18,15,15,15,22,18,13,15,16,15,15,15,15,24,15,15,15,18,15,15,18,15,15,15,15,15,15,15,15,15,15,18,15,24,18,15,9,18,15,15,8,15,19,18,15,15,18,15,15,8,15,15,13,15,15,26,15,15,15,15,8,15,17,18,20,18,18,18,15,15,15,15,18,15,15,15,9,18,15,13,15,15,15,15,15,15,15,24,15,15,8,15,15,15,15,15,18,15,15,8,15,15,15,15,18,16,15,15,15,13,16,17,15,8,9,15,15,13,15,15,15,15,20,15,9,15,18,9,15,15,15,22,18,9,15,15,23,23,18,15,18,15,15,15,13,15,15,15,15,15,18,24,15,8,22,15,21,15,15,15,15,13,8,15,15,15,15,24,15,15,15,8,15,15,18,15,15,15,8,15,9,15,9,15,15,13,15,15,15,15,18,15,15,15,15,13,18,15,15,15,13,9,15,15,15,15,15,15,15,15,8,8,15,15,15,15,8,20,22,15,15,15,15,15,15,13,15,15,26,8,15,16,15,18,15,15,16,8,18,18,15,24,8,15,18,15,9,27,18,15,15,13,15,15,9,15,15,15,15,15,15,18,15,15,9,18,15,16,15,18,15,26,15,25,15,15,15,15,24,15,15,15,15,15,15,15,15,15,15,9,15,18,15,15,16,15,15,15,8,15,15,13,8,18,15,15,15,15,13,15,15,15,27,15,15,15,15,15,15,9,15,15,18,15,15,15,15,15,9,18,18,15,8,18,15,15,13,15,15,15,18,15,15,15,15,15,18,15,15,18,15,15,15,15,15,15,23,23,18,15,15,15,15,8,18,15,20,15,15,18,15,15,15,15,15,15,13,15,15,15,15,15,18,15,9,8,15,15,15,15,15,24,15,15,8,13,15,18,15,15,18,15,15,15,26,15,15,15,18,15,15,15,15,15,15,15,15,16,15,15,15,15,15,18,15,15,15,15,15,18,15,13,15,15,15,15,15,15,18,15,9,9,15,15,15,15,15,15,15,15,15,8,15,15,15,8,18,18,15,15,15,9,22,15,15,9,15,15,15,18,18,27,15,15,13,18,9,15,15,15,15,13,15,15,15,15,15,15,8,18,15,9,15,15,9,15,13,15,15,15,15,15,8,15,15,15,15,15,15,15,15,15,15,15,9,15,15,15,15,15,15,15,18,15,15,15,14,24,15,15,15,15,15,27,15,15,15,15,22,13,15,15,13,15,15,15,15,15,15,15,15,18,15,15,13,15,15,16,15,15,15,9,18,13,18,15,15,15,15,25,23,23,15,15,15,15,15,15,15,15,20,26,15,15,15,15,15,15,15,15,9,13,15,15,15,15,15,15,13,15,15,8,15,15,15,15,15,18,15,15,15,20,15,15,15,15,15,15,9,15,15,15,15,15,18,18,15,15,15,8,24,15,15,15,15,15,15,15,18,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,13,8,24,15,9,15,15,14,15,15,15,15,15,15,15,15,18,15,15,18,15,15,15,18,15,15,13,15,18,15,18,9,15,15,18,8,8,27,15,9,15,15,15,15,15,18,15,8,9,15,15,15,15,9,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,13,14,15,15,15,15,15,15,15,15,15,15,15,15,15,8,15,15,15,15,15,15,15,15,15,15,15,15,15,13,15,15,24,15,15,15,16,15,15,21,15,24,9,18,15,15,15,15,15,18,15,15,15,15,15,17,9,15,15,15,15,15,15,15,23,23,23,15,15,15,15,15,15,15,15,13,15,15,9,15,15,18,15,15,15,15,18,15,18,15,8,15,13,15,15,15,15,24,15,15,15,15,15,8,15,17,15,15,15,15,15,26,15,15,18,9,15,15,15,15,15,15,18,15,18,15,9,15,15,15,24,22,15,15,15,15,9,15,18,15,15,15,15,15,15,15,8,20,15,15,15,15,13,18,18,18,15,20,15,15,15,15,15,15,15,16,15,15,18,15,24,15,16,24,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,18,15,15,15,15,15,15,15,15,8,15,15,15,15,9,15,15,15,15,13,15,15,15,15,15,15,15,15,15,16,15,17,15,8,15,15,15,15,15,15,15,15,15,26,15,17,18,15,15,15,24,8,15,22,15,20,18,15,9,15,15,15,15,15,14,18,8,18,15,8,15,13,15,9,15,15,14,18,15,15,15,15,15,18,15,15,15,15,18,15,15,15,9,24,15,23,23,23,23,15,15,18,15,15,15,14,15,15,15,18,24,15,16,15,18,15,15,16,15,15,15,27,15,15,15,18,15,15,15,15,9,26,8,18,15,20,15,15,15,15,15,15,15,15,15,15,15,15,15,18,15,16,15,8,15,24,15,18,15,18,15,27,15,9,15,15,15,15,16,15,15,13,15,15,15,18,15,20,15,15,15,15,15,15,15,15,13,15,15,15,15,16,15,15,15,15,20,15,15,15,15,15,15,15,22,13,15,15,15,18,13,13,15,15,15,15,15,8,15,13,24,13,8,15,15,22,15,18,15,15,15,15,15,15,8,15,15,15,15,9,15,15,15,15,15,21,15,15,19,18,15,15,15,15,15,15,9,15,9,16,18,14,15,14,18,15,15,16,15,8,15,15,15,15,15,15,15,15,15,15,15,15,9,15,18,9,15,15,15,18,9,15,18,18,15,9,15,15,15,16,18,13,15,15,15,15,15,15,15,15,15,24,8,15,15,17,17,15,15,15,15,23,23,13,15,26,15,15,15,15,15,15,8,15,15,18,18,18,15,13,15,15,15,9,15,16,15,15,13,15,20,18,15,15,18,8,15,15,15,8,18,15,15,15,15,9,15,15,9,15,15,15,15,18,16,15,15,15,15,15,15,15,9,14,15,15,15,15,18,15,20,15,9,15,18,15,15,15,15,15,15,14,15,15,15,15,15,26,15,8,27,17,15,15,24,15,15,15,15,15,18,15,15,15,15,18,15,15,15,15,15,15,15,15,15,17,24,18,15,15,15,18,15,15,13,15,15,15,15,15,18,15,15,18,15,15,8,15,18,15,15,15,24,21,15,18,18,15,16,15,15,21,15,15,15,15,15,15,15,13,15,24,15,21,15,15,18,15,15,15,15,26,13,15,15,9,15,15,15,18,8,14,15,15,18,15,15,15,15,18,15,9,15,15,15,9,18,15,15,15,13,15,15,15,15,15,16,15,15,15,15,15,9,13,15,17,15,15,8,8,9,15,15,17,15,15,9,23,23,23,23,23,15,9,15,16,15,8,15,15,15,15,9,9,15,15,9,18,18,18,15,15,15,15,15,15,15,24,15,18,8,18,8,15,18,15,15,9,15,15,8,8,15,18,8,15,15,15,18,8,15,18,15,18,15,15,15,18,15,15,15,17,15,15,15,24,15,15,9,15,15,15,26,15,15,13,17,15,16,15,15,15,15,9,8,15,15,15,15,16,8,15,22,15,15,9,26,15,18,15,15,15,15,15,15,15,15,15,13,15,15,15,15,22,15,9,8,15,15,15,15,25,15,15,8,8,15,15,15,15,15,18,15,15,15,20,15,15,15,15,15,15,15,18,15,15,15,15,15,8,15,15,18,15,15,18,15,8,27,15,15,15,18,15,18,15,15,15,8,16,15,18,16,16,24,13,15,15,15,15,15,15,9,15,15,15,15,8,15,15,15,18,15,15,15,15,14,15,18,17,15,15,15,15,15,15,17,15,8,15,15,23,15,18,15,15,15,15,15,15,15,13,15,15,15,15,15,15,15,15,15,15,15,15,8,15,15,15,15,18,24,9,15,26,15,15,15,17,22,18,15,15,15,15,15,13,15,15,15,15,15,18,15,15,15,15,15,18,15,18,15,15,22,23,23,23,23,23,15,15,15,15,15,14,15,15,15,15,18,15,24,15,15,15,15,15,24,15,18,15,15,15,15,15,8,15,16,15,14,15,15,18,15,18,9,15,15,9,17,15,15,15,15,15,15,15,18,8,27,9,15,20,15,15,15,15,15,15,15,15,16,8,15,15,15,15,8,15,18,15,15,15,15,15,15,15,15,15,15,18,15,15,18,24,15,15,15,15,15,15,13,15,15,15,15,15,15,15,15,15,15,13,15,15,15,15,26,15,15,15,18,15,18,15,18,15,15,15,15,15,9,15,9,18,15,15,15,15,15,15,15,15,9,15,8,15,15,15,18,15,15,15,15,17,8,15,13,15,15,15,9,15,15,15,15,15,15,15,15,15,27,8,18,9,15,15,15,8,17,15,15,15,15,16,9,18,8,18,15,8,15,15,15,15,17,15,15,15,18,15,15,9,15,18,20,15,15,15,15,18,9,15,13,15,13,15,15,26,15,16,15,15,15,24,15,15,15,15,13,15,18,24,23,23,23,8,15,18,15,15,20,15,24,15,15,8,15,13,8,15,15,15,15,13,15,18,9,22,13,15,16,9,15,15,15,15,18,15,15,15,13,15,15,15,15,8,15,15,15,15,15,15,15,8,15,15,13,13,15,15,25,15,15,15,15,15,15,15,15,22,13,19,15,15,15,15,15,15,15,15,15,15,15,22,22,15,14,15,15,15,15,15,15,15,15,15,26,15,16,13,15,8,16,15,16,13,15,15,15,15,17,18,15,13,15,15,13,15,15,15,22,15,15,15,9,16,15,15,13,9,15,9,16,15,15,15,15,15,18,15,15,15,15,15,15,16,15,15,15,15,15,27,15,15,13,15,14,15,15,15,17,15,15,15,15,22,15,15,13,19,15,15,15,15,17,15,15,15,15,15,13,15,15,15,20,15,15,15,15,15,15,15,15,15,22,15,15,15,15,9,22,15,20,15,15,15,15,15,15,8,8,8,15,15,22,15,15,9,22,14,18,18,15,22,18,18,15,24,15,15,15,15,15,27,9,15,18,18,18,15,15,13,27,15,20,16,15,15,15,15,15,15,15,15,15,20,15,15,15,15,9,15,15,15,9,15,18,15,13,15,16,15,15,15,9,15,15,15,15,15,9,15,15,15,16,8,18,15,15,14,15,15,18,15,15,13,15,15,13,15,33],"timeDeltas":[60708,125,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,84,0,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,83,0,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,83,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,209,41,42,42,0,41,42,42,41,0,42,42,83,42,41,42,0,42,41,84,41,42,42,41,42,42,125,41,0,42,42,41,0,42,83,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,83,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,0,83,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,41,42,42,83,42,0,41,42,125,0,0,83,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,84,41,42,42,41,42,0,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,0,0,42,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,84,41,42,42,41,84,0,41,42,83,42,42,83,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,83,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,125,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,125,0,42,42,41,42,42,41,0,42,125,42,41,42,42,41,42,42,41,84,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,84,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,83,42,0,83,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,42,0,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,84,41,0,42,42,41,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,41,42,42,41,84,83,0,208,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,83,0,42,0,41,42,42,41,0,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,83,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,209,41,42,83,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,84,41,0,42,42,41,42,0,42,41,42,42,83,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,83,42,42,125,41,0,42,42,41,125,42,0,42,41,42,0,42,41,84,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,83,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,500,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,125,0,41,42,42,41,42,42,0,41,42,42,0,83,42,83,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,125,42,125,42,250,41,42,83,84,208,0,250,83,84,83,458,42,333,84,41,84,41,42,0,42,41,42,0,42,41,84,0,41,42,42,41,0,167,42,41,42,42,41,42,0,250,42,0,41,42,83,0,42,42,41,0,42,42,41,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,83,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,166,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,458,83,42,0,42,41,42,0,167,0,41,42,42,41,0,42,83,42,125,0,42,83,42,83,417,166,42,42,0,208,42,41,42,42,41,125,42,0,42,41,42,0,42,41,0,42,42,125,83,83,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,83,42,42,0,41,42,0,333,42,42,83,0,42,0,41,42,42,83,208,42,0,42,125,0,41,0,42,42,0,41,42,42,41,0,84,41,42,42,41,42,42,41,42,42,41,292,0,42,208,167,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,83,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,83,42,83,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,83,42,0,41,125,84,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,208,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,84,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,208,42,125,0,42,41,42,42,41,84,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,84,41,42,42,41,42,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,83,0,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,84,83,42,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,42,41,0,42,0,83,42,42,0,83,0,42,41,42,0,42,41,42,42,0,83,0,42,41,42,42,41,0,42,42,41,42,42,41,42,83,0,42,42,41,0,42,83,42,42,0,41,42,42,0,41,42,42,41,0,84,0,41,42,83,0,84,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,83,83,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,83,42,41,42,42,41,42,42,0,41,42,0,42,41,42,42,291,209,83,42,41,42,0,42,41,42,42,41,42,0,42,41,42,83,42,42,41,0,42,83,42,83,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,41,0,84,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,83,42,41,0,42,42,41,42,83,42,42,41,42,42,0,83,0,83,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,83,167,250,125,41,84,83,0,42,41,42,0,83,209,166,42,500,250,750,292,125,166,917,125,958,542,1458,0,42,42,41,0,42,125,292,875,666,750,1375,542,458,334,416,375,542,167,458,0,417,500,416,584,500,83,708,584,83,42,41,84,41,42,83,42,42,41,42,42,41,42,0,42,41,42,42,41,0,42,83,42,42,0,41,42,0,42,41,0,42,42,41,0,125,42,1500,125,250,458,125,625,292,458,84,41,0,42,42,0,41,84,41,42,42,0,41,42,42,0,83,83,42,42,41,84,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,83,42,41,0,42,42,83,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,125,42,42,0,41,42,42,0,41,42,42,0,500,1083,333,1125,42,0,125,125,250,125,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,666,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,1042,125,708,167,208,0,42,208,167,1541,84,833,83,42,42,41,0,42,42,41,42,0,0,42,41,42,42,0,41,42,42,41,0,0,292,375,42,41,0,42,42,41,42,250,250,167,291,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,209,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,208,83,42,42,0,41,42,42,41,84,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,83,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,125,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,83,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,83,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,84,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,167,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,42,41,0,42,42,41,0,84,41,42,83,42,42,41,0,42,42,0,41,42,42,41,42,42,0,83,42,0,83,42,0,41,42,83,42,42,41,42,0,42,41,125,42,42,41,42,125,42,0,83,42,83,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,83,125,292,83,250,917,750,417,833,167,166,167,42,166,167,125,833,0,42,83,125,292,125,500,42,125,41,42,42,41,42,83,42,167,83,83,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,84,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,83,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,83,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,125,0,42,42,41,125,42,42,41,0,42,125,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,83,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,125,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,42,0,83,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,83,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,125,42,0,375,958,42,83,0,42,42,41,42,0,42,41,0,84,0,41,42,83,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,83,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,83,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,83,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,83,0,42,42,41,42,0,42,41,42,42,41,42,0,83,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,125,42,42,41,42,83,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,166,42,0,83,209,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,41,42,42,0,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,125,42,0,167,41,0,42,42,41,0,84,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,83,42,0,42,41,42,0,42,41,42,42,41,42,42,0,83,0,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,83,0,42,42,0,41,42,42,41,42,83,0,42,42,41,42,42,41,0,125,42,167,0,41,42,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,83,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,125,41,84,41,42,0,42,41,42,0,42,41,0,84,41,0,42,42,41,42,42,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,84,41,42,42,41,42,42,0,83,0,42,41,0,125,42,83,42,125,42,41,42,0,42,41,42,0,42,41,42,125,208,42,42,0,41,42,42,291,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,416,84,166,42,83,0,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,83,42,166,84,41,42,42,41,0,42,42,41,42,42,83,0,42,41,0,42,83,0,42,42,0,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,333,375,333,42,208,834,83,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,42,416,0,42,42,41,0,42,42,41,42,0,42,41,125,42,42,375,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,83,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,167,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,83,42,42,41,42,42,0,0,41,42,42,0,41,0,42,42,41,42,0,83,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,83,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,83,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,83,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,83,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,83,84,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,83,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,84,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,0,42,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,84,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,83,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,83,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,84,0,41,42,83,42,42,41,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,83,0,125,0,42,41,84,0,41,42,42,0,41,42,0,42,41,42,42,83,42,0,41,42,42,83,42,0,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,125,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,0,42,42,0,41,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,0,41,42,42,125,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42]} \ No newline at end of file diff --git a/bench-camelize.basic-2024-11-24_12-17-49.cpuprofile b/bench-camelize.basic-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..8a6efb9 --- /dev/null +++ b/bench-camelize.basic-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,8,21,24,32,34]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":2,"positionTicks":[{"line":136,"ticks":2}]},{"id":8,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":692,"children":[9,10,33],"positionTicks":[{"line":297,"ticks":32},{"line":314,"ticks":50},{"line":292,"ticks":37},{"line":315,"ticks":116},{"line":323,"ticks":9},{"line":327,"ticks":49},{"line":316,"ticks":399}]},{"id":9,"callFrame":{"functionName":"y","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":78,"columnNumber":10},"hitCount":1,"positionTicks":[{"line":98,"ticks":1}]},{"id":10,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":850,"children":[11,13],"positionTicks":[{"line":304,"ticks":2},{"line":138,"ticks":4},{"line":537,"ticks":10},{"line":302,"ticks":26},{"line":139,"ticks":38},{"line":530,"ticks":64},{"line":531,"ticks":8},{"line":301,"ticks":198},{"line":250,"ticks":52},{"line":308,"ticks":18},{"line":539,"ticks":23},{"line":309,"ticks":185},{"line":311,"ticks":222}]},{"id":11,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1619},"hitCount":176,"children":[12,16],"positionTicks":[{"line":2,"ticks":176}]},{"id":12,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":11588,"children":[18,20],"positionTicks":[{"line":2,"ticks":11588}]},{"id":18,"callFrame":{"functionName":"","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":1413},"hitCount":1146,"children":[19,23],"positionTicks":[{"line":2,"ticks":1146}]},{"id":19,"callFrame":{"functionName":"get","scriptId":"263","url":"file:///Users/airhorns/Code/superflected/src/Inflector.ts","lineNumber":1,"columnNumber":586},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":23,"callFrame":{"functionName":"capitalize","scriptId":"267","url":"file:///Users/airhorns/Code/superflected/src/capitalize.ts","lineNumber":1,"columnNumber":905},"hitCount":503,"positionTicks":[{"line":2,"ticks":503}]},{"id":20,"callFrame":{"functionName":"","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":1102},"hitCount":1132,"children":[22,25,27],"positionTicks":[{"line":2,"ticks":1132}]},{"id":22,"callFrame":{"functionName":"get","scriptId":"263","url":"file:///Users/airhorns/Code/superflected/src/Inflector.ts","lineNumber":1,"columnNumber":586},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":25,"callFrame":{"functionName":"capitalize","scriptId":"267","url":"file:///Users/airhorns/Code/superflected/src/capitalize.ts","lineNumber":1,"columnNumber":905},"hitCount":481,"positionTicks":[{"line":2,"ticks":481}]},{"id":27,"callFrame":{"functionName":"get","scriptId":"267","url":"file:///Users/airhorns/Code/superflected/src/capitalize.ts","lineNumber":1,"columnNumber":586},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":16,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":55,"children":[17],"positionTicks":[{"line":2,"ticks":55}]},{"id":17,"callFrame":{"functionName":"camelize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":727},"hitCount":194,"children":[26],"positionTicks":[{"line":2,"ticks":194}]},{"id":26,"callFrame":{"functionName":"get","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":586},"hitCount":325,"children":[31],"positionTicks":[{"line":2,"ticks":325}]},{"id":31,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":815},"hitCount":66,"positionTicks":[{"line":2,"ticks":66}]},{"id":13,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":340,"children":[14,28],"positionTicks":[{"line":250,"ticks":340}]},{"id":14,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":236,"children":[15,29],"positionTicks":[{"line":139,"ticks":236}]},{"id":15,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1589,"positionTicks":[{"line":139,"ticks":1589}]},{"id":29,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":24,"children":[30],"positionTicks":[{"line":537,"ticks":24}]},{"id":30,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":149,"positionTicks":[{"line":530,"ticks":149}]},{"id":28,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":148,"positionTicks":[{"line":663,"ticks":2},{"line":668,"ticks":3},{"line":666,"ticks":22},{"line":662,"ticks":12},{"line":670,"ticks":7},{"line":665,"ticks":28},{"line":669,"ticks":34},{"line":661,"ticks":40}]},{"id":33,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1619},"hitCount":8,"positionTicks":[{"line":2,"ticks":8}]},{"id":21,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":725},{"id":24,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":296},{"id":32,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":26,"positionTicks":[{"line":301,"ticks":26}]},{"id":34,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[35]},{"id":35,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[36]},{"id":36,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[37]},{"id":37,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[38]},{"id":38,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":2,"positionTicks":[{"line":136,"ticks":2}]}],"startTime":293061856251,"endTime":293062501876,"samples":[7,7,7,9,12,15,17,19,15,12,12,10,12,20,12,21,12,15,20,12,12,18,12,12,22,12,12,23,21,18,12,12,10,21,12,12,12,12,18,18,13,12,12,12,12,12,12,24,24,24,24,24,12,18,12,8,12,15,13,25,12,15,12,20,8,18,12,12,18,12,26,25,12,15,25,12,12,10,12,12,20,27,12,12,12,11,12,12,12,12,12,12,26,12,18,25,12,20,12,23,15,12,12,15,12,12,12,12,12,18,12,12,26,12,8,15,12,20,12,11,18,12,12,12,12,12,28,12,12,8,18,12,30,16,18,12,12,12,12,12,31,12,12,12,21,11,20,15,12,12,18,20,12,8,12,18,12,12,20,12,12,12,12,23,12,18,15,12,12,15,31,12,26,18,12,18,14,12,12,12,20,12,12,15,12,21,15,12,12,8,12,12,12,12,12,12,20,12,12,12,25,12,25,21,12,20,15,12,12,12,12,15,12,12,21,12,12,20,23,12,12,10,12,15,12,15,12,18,12,12,12,15,12,21,12,8,12,12,12,26,12,21,10,12,12,20,12,12,12,12,12,12,12,12,12,20,12,12,10,26,12,13,23,20,12,12,13,21,18,25,12,10,15,12,10,10,12,13,18,12,21,12,23,15,12,20,10,10,28,26,24,24,24,24,24,12,12,8,12,21,12,12,12,21,12,21,18,10,12,18,12,12,13,12,12,12,23,15,8,12,20,12,12,10,25,15,12,12,12,23,20,20,12,15,15,10,14,26,12,12,15,12,12,30,12,15,15,12,12,12,12,23,12,12,20,12,12,12,12,15,14,12,12,12,12,12,12,12,12,26,12,15,17,12,12,12,10,12,12,12,12,12,12,8,12,12,23,12,12,10,12,18,10,12,12,12,18,12,21,12,12,15,12,12,12,12,12,12,15,12,12,12,12,23,18,12,8,12,10,10,28,12,23,12,12,12,12,18,12,12,12,12,24,23,12,21,12,12,8,12,12,12,25,25,12,23,26,12,12,12,8,13,15,12,15,10,12,12,12,15,18,12,23,12,25,17,12,12,12,20,13,21,18,12,18,12,25,12,12,15,28,12,12,10,12,12,11,15,20,12,8,18,8,12,25,20,12,12,12,12,8,12,20,20,12,12,12,12,25,21,12,20,12,13,12,24,24,8,23,10,12,12,10,17,12,14,10,12,17,13,17,12,12,12,12,21,12,32,12,20,12,12,12,12,12,8,15,20,12,20,23,12,12,12,12,12,12,12,13,12,20,10,12,28,12,12,12,21,12,15,12,12,12,10,16,12,12,8,12,30,30,18,12,12,12,12,12,12,20,12,15,15,16,21,12,12,12,18,15,21,15,12,15,31,18,15,12,12,12,15,12,21,15,15,10,10,12,12,12,12,17,15,18,8,15,11,12,15,12,12,10,12,12,12,12,12,12,12,28,18,12,12,12,12,14,21,21,12,12,12,12,12,12,15,12,20,12,12,12,12,12,12,13,15,23,26,23,12,12,26,12,12,15,25,12,12,12,12,18,10,12,12,12,15,12,12,12,12,12,12,12,12,12,12,8,12,15,12,8,15,12,18,28,12,12,20,26,12,30,20,12,17,20,10,8,31,18,12,8,12,12,13,12,12,26,12,21,21,12,12,12,12,12,18,12,12,10,10,12,12,20,12,12,24,24,24,12,15,12,20,12,20,26,25,12,12,12,21,18,12,12,20,12,12,12,12,20,18,15,18,12,12,25,12,23,12,20,26,12,12,12,12,12,10,25,10,12,12,12,12,12,12,15,23,12,12,10,12,12,12,20,12,15,12,25,25,20,12,15,12,12,8,12,28,12,20,12,8,12,8,12,12,12,12,8,12,12,12,12,14,21,12,12,12,20,14,17,12,15,20,12,12,12,12,25,24,18,28,12,18,12,12,12,12,12,10,12,20,12,18,12,14,12,12,12,10,8,21,12,15,21,12,12,15,12,12,12,15,12,12,10,21,12,23,12,15,13,12,12,12,12,20,12,8,12,12,12,15,20,30,18,12,12,12,12,14,12,31,8,12,10,10,10,10,15,12,20,18,15,12,12,28,18,14,12,21,18,12,12,12,18,12,10,12,12,15,12,18,15,12,12,31,12,12,12,17,10,18,12,15,15,12,8,12,25,12,18,12,12,12,12,12,21,12,21,12,12,13,12,12,12,8,12,12,20,12,24,24,24,12,12,12,15,12,12,12,12,12,18,12,8,21,12,15,12,12,12,15,12,12,14,12,12,13,18,12,12,12,8,15,12,12,8,20,12,21,26,12,8,12,25,15,12,10,12,15,15,12,14,15,20,23,25,12,14,26,12,12,12,25,14,12,25,10,12,12,12,12,20,12,12,12,12,12,12,12,12,30,12,12,21,12,12,12,15,10,12,23,12,21,12,12,18,12,12,20,20,15,12,18,12,21,12,18,23,15,12,12,12,12,12,26,12,12,12,11,12,12,12,10,12,15,12,12,12,12,8,12,12,12,12,18,12,21,12,12,18,12,12,12,12,12,20,12,12,18,23,20,21,8,12,13,12,12,12,18,12,12,12,12,23,18,10,13,12,12,12,15,13,20,12,12,23,12,21,12,12,14,12,26,12,20,12,12,10,12,18,25,12,12,12,12,12,23,12,15,8,12,21,15,15,20,8,20,12,12,12,12,18,12,12,21,12,12,12,8,12,23,12,12,23,12,12,12,23,12,26,24,24,24,12,18,12,10,12,31,12,12,20,12,18,18,20,20,12,18,12,12,12,21,12,12,12,12,12,12,12,12,12,12,12,8,15,28,26,15,12,23,14,12,12,29,12,12,18,12,20,12,12,18,32,12,18,15,12,28,8,12,12,12,18,8,10,12,18,31,30,12,18,12,12,8,12,12,12,12,20,12,18,20,18,12,20,21,12,12,12,12,21,12,20,12,25,18,12,18,12,12,8,12,12,18,12,12,17,12,12,12,12,12,12,15,15,13,12,12,12,12,12,25,12,12,12,25,21,23,10,12,12,12,12,20,25,12,12,15,12,12,12,12,18,12,21,15,12,12,15,12,12,15,12,10,10,10,8,12,12,12,12,26,12,14,12,20,12,12,12,12,23,12,12,18,12,12,21,12,12,12,15,12,15,13,12,12,12,8,25,12,12,28,20,25,10,15,12,12,10,8,18,12,12,15,12,12,20,20,12,12,12,12,20,12,12,12,12,12,15,12,12,12,20,12,12,12,12,15,12,12,15,12,12,12,23,24,24,12,10,18,21,12,12,23,12,30,21,12,20,18,23,12,12,10,12,23,12,12,12,12,8,12,25,12,12,12,31,12,12,12,10,18,15,17,8,12,12,12,12,21,12,12,12,12,20,17,20,10,12,12,8,12,16,12,8,8,12,12,12,12,12,12,25,21,10,12,12,20,12,12,13,15,12,20,12,15,12,25,15,12,12,12,15,18,26,18,26,23,12,20,12,8,28,21,12,15,12,25,23,12,12,12,14,18,20,13,12,12,12,12,12,12,18,20,12,12,23,12,12,20,20,15,23,12,12,20,12,12,15,12,12,12,12,12,20,8,18,15,8,12,10,12,12,18,12,12,12,12,12,15,12,28,23,10,12,26,12,12,12,12,15,12,12,15,20,12,12,12,15,12,10,12,18,12,12,14,12,12,15,12,12,12,15,12,15,8,12,12,20,15,20,12,12,10,12,12,14,10,25,12,12,12,12,12,18,12,17,12,18,12,12,12,12,12,10,12,12,12,10,18,12,11,12,12,12,18,8,12,23,12,12,12,24,24,11,15,14,15,21,18,18,12,12,12,12,23,12,12,30,12,12,12,10,12,12,18,12,12,12,12,12,25,20,8,12,12,12,12,21,20,12,12,12,26,12,12,12,15,18,23,12,12,12,18,12,18,13,12,12,12,12,20,12,25,12,12,10,12,12,12,12,12,12,23,12,12,21,12,18,10,25,18,12,12,10,12,12,12,12,20,23,12,15,12,12,20,12,12,12,12,12,12,12,18,12,8,12,12,12,12,12,12,12,26,12,12,10,23,15,12,12,10,12,12,13,12,11,12,12,12,12,12,12,12,12,23,12,12,12,20,15,12,12,8,12,12,12,12,15,12,12,14,12,20,12,12,12,12,21,18,12,18,12,25,12,18,12,25,17,12,18,12,12,12,12,12,12,12,12,15,12,14,12,12,12,12,23,25,12,12,12,12,15,12,12,20,12,12,12,30,12,12,15,12,23,8,10,12,21,18,12,12,12,12,26,12,12,12,12,12,15,12,12,21,20,15,12,11,25,12,12,25,12,12,12,12,12,12,12,12,21,23,24,24,24,20,12,12,21,12,23,12,15,13,18,12,23,12,12,12,18,30,20,15,12,21,8,15,12,14,8,26,20,12,12,12,12,12,12,11,12,12,12,12,12,28,12,12,15,12,20,21,12,25,12,12,12,25,12,12,18,8,12,26,12,14,18,12,8,20,12,15,18,17,12,12,8,8,12,30,12,12,23,12,13,12,32,13,12,12,18,11,12,12,12,8,15,12,12,12,12,12,10,20,12,8,12,12,20,17,18,20,12,12,12,13,10,21,12,12,12,20,20,10,23,12,12,15,12,18,12,12,12,10,10,10,10,10,10,15,12,12,15,12,25,23,12,12,12,18,15,12,12,12,25,12,18,12,12,12,15,12,12,12,23,20,12,20,8,20,11,12,30,12,32,8,12,12,17,12,12,12,18,21,28,20,15,15,17,13,12,25,12,18,12,18,12,18,10,15,14,10,12,12,12,12,12,12,11,10,12,12,12,13,12,18,10,18,18,12,25,12,12,10,10,25,12,18,12,20,15,12,15,12,12,12,24,24,24,12,12,12,12,12,12,18,12,12,12,12,12,8,12,12,21,12,12,12,12,12,12,12,10,12,13,12,12,12,12,21,26,21,12,20,12,12,18,13,12,12,12,20,12,12,12,12,15,26,30,12,8,8,12,20,20,10,18,12,12,12,12,12,25,12,12,15,12,12,12,15,30,12,12,20,12,25,12,18,21,18,12,25,12,21,12,26,14,8,12,12,12,28,12,12,12,12,13,12,12,18,18,12,12,21,15,30,12,12,12,10,18,12,12,12,21,8,12,21,25,12,18,18,12,12,21,12,12,12,12,12,12,12,12,12,12,17,23,12,12,12,16,18,10,10,10,12,12,18,12,12,20,21,15,15,18,12,15,20,21,12,18,18,18,15,12,12,12,12,12,13,12,12,12,12,12,12,8,12,12,12,12,12,15,12,15,15,13,15,21,12,12,12,15,12,20,26,12,12,21,15,20,12,12,12,20,10,12,20,12,12,12,12,12,25,12,18,18,25,12,12,12,13,12,12,12,18,21,15,12,20,24,24,24,10,17,15,8,18,12,8,12,20,10,20,8,18,12,12,28,23,12,18,10,26,12,12,8,12,21,12,15,18,12,20,12,12,12,15,12,12,12,12,12,15,15,20,12,13,15,12,12,20,8,12,12,12,12,12,28,25,30,12,25,20,12,10,12,20,15,21,12,12,18,12,20,12,12,12,21,14,12,18,15,12,12,15,15,18,23,20,12,13,21,12,10,28,12,12,20,12,12,20,12,12,12,12,20,12,12,18,12,12,12,12,11,12,11,12,12,15,12,12,28,15,15,15,25,12,15,23,8,12,13,12,20,21,8,8,12,14,12,14,21,12,15,12,12,12,12,10,15,12,15,12,13,8,12,18,18,10,12,20,12,10,12,12,12,8,12,12,26,12,12,12,20,26,21,30,12,12,12,18,23,20,21,12,12,12,12,28,12,21,12,18,12,11,17,12,12,8,17,21,26,21,20,12,15,17,12,12,12,12,8,12,12,12,10,15,18,12,12,23,15,12,12,12,15,12,12,8,12,12,15,12,15,12,12,12,12,24,24,20,12,12,18,12,12,12,25,12,12,12,12,12,10,15,12,15,15,12,12,12,12,12,12,15,12,20,10,10,25,12,20,12,12,21,12,10,8,15,12,21,12,12,12,15,12,12,12,12,12,12,21,20,15,12,10,12,15,10,18,15,12,12,12,18,15,12,15,12,12,12,12,12,24,12,21,12,12,12,12,12,12,12,12,12,12,30,12,12,30,12,20,12,20,31,12,12,12,20,12,12,20,15,12,14,12,14,15,12,12,12,12,8,12,12,12,20,12,12,31,12,12,12,26,20,12,12,12,30,23,12,18,18,12,23,12,12,12,12,20,12,25,20,12,12,20,12,21,15,12,12,18,15,12,18,15,12,12,12,11,12,12,23,15,12,23,15,12,21,12,12,18,12,12,12,12,12,16,12,8,12,12,12,12,18,12,21,21,26,28,11,12,12,20,12,12,12,12,8,28,12,12,12,15,18,12,12,12,12,15,12,10,18,10,21,12,12,18,23,12,24,24,12,12,12,23,12,8,12,12,12,12,20,28,23,18,12,15,10,12,12,18,12,12,10,21,12,12,16,12,14,12,21,12,12,12,12,12,12,12,12,12,12,18,12,12,18,12,12,12,12,23,15,12,12,12,12,12,12,12,12,12,13,12,12,14,12,12,21,20,12,15,12,12,12,15,15,23,18,21,12,18,12,21,20,15,12,12,21,12,26,12,12,12,15,12,18,12,18,12,12,12,21,21,18,30,12,12,12,30,15,12,26,15,12,15,18,26,12,8,12,12,18,14,12,12,12,15,12,12,15,20,12,12,15,12,12,25,10,12,12,12,12,12,18,12,15,20,12,15,12,20,10,23,12,25,26,12,12,12,12,21,12,21,12,20,12,12,12,8,15,14,12,12,12,18,15,12,12,12,15,12,20,12,12,12,12,12,12,10,25,12,12,18,12,13,12,12,25,8,12,8,12,12,15,21,12,25,15,12,10,10,10,10,10,10,10,10,12,15,12,12,12,18,12,12,15,12,12,12,12,15,11,12,24,24,12,8,12,20,12,13,21,11,12,12,12,12,13,15,12,12,12,14,12,26,12,12,25,12,12,12,12,18,20,12,21,17,14,12,18,12,12,12,12,8,26,12,12,15,12,26,10,18,12,12,25,12,20,12,15,12,12,12,20,12,20,12,12,12,12,12,8,12,20,13,12,15,21,25,8,12,12,8,12,15,12,12,15,10,20,12,12,12,12,14,12,23,21,12,8,8,12,12,20,12,12,12,8,21,12,10,15,12,12,25,20,12,15,12,15,8,12,12,8,12,10,12,20,12,12,12,12,12,12,13,20,12,12,12,21,12,8,12,12,13,18,12,18,20,18,15,23,12,13,15,12,12,12,12,13,23,12,18,12,12,10,12,10,12,12,12,12,12,10,12,12,12,12,12,25,20,23,12,20,12,12,15,12,12,15,12,12,23,30,12,12,12,15,12,12,10,12,12,12,14,15,12,12,15,12,12,12,12,12,30,12,12,8,11,12,12,18,12,12,10,8,12,12,12,20,12,14,12,12,17,24,24,24,12,12,12,23,12,12,12,12,10,12,12,10,18,12,18,25,12,12,10,12,12,12,15,12,12,20,12,12,15,12,12,12,12,23,12,12,8,20,15,15,25,15,12,20,12,12,12,12,12,23,21,12,25,12,15,15,21,12,25,12,28,12,12,12,15,12,12,15,12,18,18,8,21,12,14,14,25,12,10,12,12,10,21,18,12,12,15,12,12,23,15,12,15,12,12,12,12,12,23,12,11,12,12,12,12,12,12,18,12,10,15,12,12,13,12,18,23,12,12,12,20,12,8,12,20,12,15,12,23,12,18,23,21,10,12,12,8,23,20,25,12,12,12,12,12,12,12,12,12,12,12,12,28,25,18,12,8,12,12,12,15,12,12,12,16,11,12,12,12,12,12,18,15,12,12,12,12,23,18,12,12,15,12,20,12,12,25,12,25,12,12,15,13,12,26,18,12,18,12,12,15,21,12,12,12,12,12,12,12,11,23,12,12,12,26,12,12,12,30,12,13,12,12,12,12,24,20,12,28,24,24,12,12,12,12,12,12,12,12,12,15,20,14,18,21,12,15,12,20,18,13,12,12,12,15,13,12,12,8,15,12,12,13,12,12,12,12,12,20,12,12,12,12,12,14,10,15,12,20,15,12,12,18,20,10,12,12,12,12,12,20,12,21,12,20,12,12,18,10,12,12,25,18,12,18,12,12,12,11,12,12,12,12,8,12,12,13,20,12,15,18,30,21,12,15,12,8,12,12,12,12,10,12,20,10,18,12,12,12,13,13,14,12,15,12,12,25,12,20,20,21,12,12,20,12,25,12,12,12,12,12,12,12,12,23,20,18,18,12,21,15,12,11,12,21,8,30,15,8,15,30,13,8,20,12,12,12,12,23,18,12,12,15,12,12,12,12,12,23,12,21,12,12,15,20,12,12,18,10,12,15,12,12,12,12,12,12,10,14,12,12,12,12,12,13,21,8,10,15,12,15,12,12,15,20,12,12,12,20,26,12,12,8,12,20,12,15,12,24,24,24,12,12,12,12,12,12,12,12,20,12,12,12,12,12,12,12,12,12,12,12,12,12,20,20,12,15,10,20,12,20,18,12,12,18,18,18,12,18,14,12,12,12,18,12,15,20,12,32,12,12,12,12,12,12,12,12,18,23,12,18,12,12,20,12,12,17,30,12,12,12,12,12,12,25,8,12,12,18,12,12,12,15,15,12,12,12,12,12,23,12,21,12,12,20,15,12,18,12,12,20,12,12,24,12,8,26,12,20,12,20,17,21,12,15,12,12,12,12,10,18,12,12,12,12,12,12,12,21,18,12,12,12,20,12,12,12,15,13,25,12,12,12,12,20,15,20,15,10,10,20,12,12,12,12,26,12,18,21,10,12,11,12,18,12,21,10,12,18,12,12,18,8,12,12,20,20,12,25,12,12,12,12,12,12,11,18,20,12,12,15,12,26,18,28,12,18,18,12,12,15,12,12,18,12,12,12,12,8,25,12,21,12,8,20,12,12,12,12,12,25,21,12,12,12,12,12,20,12,24,24,12,12,8,12,12,20,12,12,12,26,12,12,18,21,20,25,12,12,12,16,15,12,18,15,12,10,10,12,12,12,8,12,15,12,12,12,21,12,8,23,12,21,12,12,12,20,12,12,12,12,12,12,23,12,12,10,12,12,28,12,12,12,15,12,12,12,12,18,20,12,12,15,20,15,18,12,12,12,12,28,23,12,23,12,18,25,18,13,21,15,12,28,8,12,12,12,17,12,12,12,15,12,12,12,10,17,12,25,12,8,12,12,12,18,12,12,21,15,12,12,12,12,12,12,15,20,12,25,12,18,12,13,15,12,10,12,12,15,12,15,12,21,12,12,12,12,12,12,12,20,21,20,23,12,12,12,12,12,18,12,12,12,15,12,12,21,12,25,26,12,12,23,12,18,12,12,12,15,10,12,12,15,8,13,12,8,10,12,12,12,12,12,12,12,12,20,12,12,21,30,12,12,12,12,12,25,12,12,12,12,10,18,12,12,8,12,10,12,18,8,12,12,25,12,12,12,18,12,21,24,24,12,21,12,12,25,12,12,12,12,17,8,12,21,12,10,12,12,15,12,12,20,25,21,12,12,12,14,20,20,12,20,12,18,12,17,12,12,20,28,12,23,20,20,21,12,12,21,12,13,15,20,12,12,18,15,12,12,17,12,12,12,15,21,12,12,21,15,12,12,15,21,12,12,8,12,12,13,10,20,20,12,12,12,12,12,18,25,12,28,20,12,12,12,12,15,18,12,12,12,12,12,12,12,18,18,12,12,12,12,12,26,15,26,10,26,12,15,12,12,20,32,12,12,12,13,12,11,12,12,12,15,12,21,12,12,12,18,12,13,15,21,12,12,21,12,10,12,14,13,12,12,12,18,12,12,12,12,18,18,15,8,15,10,23,18,12,20,12,10,12,20,12,12,25,21,25,10,23,12,12,12,15,12,12,30,23,12,20,10,12,20,12,12,12,25,10,15,15,8,8,12,12,26,12,17,23,12,12,18,18,12,12,12,12,12,12,20,12,12,30,12,12,24,24,24,18,12,21,12,10,25,12,12,12,12,26,18,12,12,12,12,12,12,18,12,12,12,21,18,25,10,12,20,12,12,15,12,10,28,12,12,12,12,18,12,12,10,12,12,12,12,15,12,12,18,15,12,12,8,31,20,12,12,30,12,21,12,12,12,13,12,12,26,12,12,12,12,12,28,12,12,25,15,12,12,18,21,12,21,26,12,12,12,12,12,12,12,15,12,12,12,12,28,12,18,26,12,18,12,12,12,12,10,10,10,10,10,10,10,10,10,10,10,10,14,12,15,20,12,12,15,12,12,18,12,23,12,21,25,15,12,12,12,12,12,12,20,12,20,12,13,15,12,12,12,12,12,12,12,15,12,12,12,12,15,12,12,12,21,20,15,12,12,25,12,20,23,12,21,23,12,21,12,12,15,15,14,12,14,21,10,12,23,12,21,21,12,12,12,12,18,25,23,12,21,10,12,15,12,12,12,12,12,12,20,12,12,12,12,12,12,12,12,12,12,20,12,12,12,12,12,25,12,8,25,12,12,12,12,8,15,12,12,15,12,12,24,24,24,15,12,12,12,12,23,12,12,12,23,12,12,12,32,12,15,12,18,12,8,20,20,21,18,12,20,21,18,15,12,12,17,17,12,12,12,31,12,13,18,12,30,15,12,17,20,14,12,12,10,12,12,12,12,12,12,12,26,12,8,12,12,12,31,12,12,25,21,25,25,20,15,12,12,13,15,12,13,12,12,12,12,12,12,18,12,8,12,25,12,12,18,31,12,12,12,31,15,12,8,11,12,12,12,12,20,12,12,12,12,18,15,12,23,25,15,12,20,12,15,12,12,20,21,20,12,12,12,12,12,8,15,12,20,12,15,8,12,21,20,30,12,8,12,10,12,17,8,12,12,12,21,8,8,12,15,12,18,12,12,12,12,12,12,12,12,15,12,12,13,12,12,17,23,12,12,12,12,8,18,10,10,20,12,8,12,12,12,13,12,12,18,12,12,11,20,12,12,12,12,12,12,12,18,21,12,25,12,26,12,12,12,18,30,12,15,12,12,20,12,12,8,15,21,12,18,10,12,8,12,12,25,24,24,12,12,26,10,12,15,20,12,12,26,12,12,8,12,12,12,20,26,12,20,18,12,12,12,12,12,26,13,12,12,12,12,12,12,12,12,12,20,12,12,15,12,12,23,12,8,20,12,12,12,12,12,12,12,12,21,8,12,15,12,8,12,12,12,12,15,18,12,10,12,8,12,12,12,18,12,18,12,8,12,12,12,12,12,12,15,12,11,20,20,31,12,12,12,20,12,12,12,21,13,28,12,8,25,12,12,18,15,15,12,20,25,12,10,12,18,12,12,12,12,20,15,15,12,20,20,12,12,12,12,12,12,12,12,12,12,12,12,12,12,8,12,12,10,15,15,21,12,15,12,18,12,12,12,15,20,12,12,12,12,12,12,12,21,23,12,13,8,12,28,20,12,12,12,21,18,12,12,23,12,20,12,12,12,12,18,18,12,12,12,12,12,18,12,23,13,20,20,12,12,8,15,12,30,12,12,12,12,12,12,12,12,12,15,30,12,12,18,12,18,24,24,8,12,12,12,12,12,12,12,12,12,12,12,12,20,21,12,18,12,12,12,12,12,18,12,18,12,13,12,20,12,12,12,28,15,12,10,12,12,12,12,15,15,23,12,25,20,12,12,12,12,12,12,12,12,12,18,12,10,12,11,12,28,18,32,12,12,23,18,18,12,12,23,15,12,12,18,12,12,12,12,12,26,12,12,12,12,12,18,23,12,23,12,23,12,12,21,12,20,12,12,12,15,18,10,12,20,10,11,26,12,21,12,17,12,12,12,12,12,23,12,12,12,12,12,12,12,23,15,12,15,12,12,12,12,12,12,12,20,18,10,12,12,30,12,12,8,12,11,23,15,12,12,12,12,20,12,20,12,12,12,20,8,23,12,18,12,15,12,12,12,21,10,12,12,26,12,12,10,12,20,12,15,18,16,12,12,12,12,12,25,12,18,21,12,12,12,25,20,12,15,12,12,12,31,12,15,8,12,12,12,12,12,12,15,12,12,15,12,12,20,12,12,15,12,12,12,20,17,28,24,24,24,11,12,15,12,12,10,12,12,18,12,12,12,12,20,18,12,12,12,12,23,12,12,10,12,26,15,12,10,12,12,12,12,12,12,12,12,18,12,12,12,12,12,21,11,12,26,10,26,12,21,12,12,12,13,12,12,12,12,12,12,12,10,25,12,15,21,12,12,12,12,12,15,12,18,15,12,18,12,15,12,12,15,15,16,12,12,12,12,23,12,17,12,28,12,12,12,12,26,12,12,18,13,12,12,12,12,18,12,12,12,12,12,17,12,12,12,12,14,12,18,12,12,12,12,15,23,12,12,8,12,12,12,12,12,12,12,10,12,12,21,25,12,8,23,10,15,12,15,12,12,12,28,15,12,14,12,14,12,12,8,12,12,12,12,12,23,20,12,25,12,12,12,8,23,12,15,18,12,12,12,20,12,12,12,12,12,8,12,12,18,12,15,15,12,23,11,12,12,29,12,12,10,12,10,12,12,12,12,12,12,12,8,12,21,12,12,12,12,14,20,15,12,18,12,12,12,12,12,20,24,24,24,12,15,8,12,12,12,10,20,12,12,8,15,12,12,12,12,12,26,12,12,12,15,12,12,20,12,17,23,20,15,12,12,12,21,15,12,12,15,25,15,12,11,18,10,12,12,8,10,12,10,12,15,20,18,12,15,12,13,12,21,12,12,12,12,12,12,23,21,12,25,12,12,8,12,21,30,12,25,12,17,15,12,12,15,12,12,15,12,21,12,18,12,12,12,15,21,18,12,12,13,18,18,12,12,18,12,12,12,10,12,8,12,12,12,12,12,12,12,12,12,20,12,12,12,20,20,12,12,20,14,8,23,15,23,12,12,12,12,12,20,15,18,12,12,20,12,28,15,12,18,20,12,18,12,12,12,12,12,12,12,15,12,10,12,10,12,25,28,15,15,30,15,13,12,12,12,12,20,12,12,20,12,12,12,12,12,12,12,12,12,12,12,15,12,12,18,12,12,12,21,12,11,15,21,8,18,12,24,12,29,12,12,12,12,12,15,12,15,12,23,15,12,18,12,12,12,12,17,12,30,10,12,12,24,24,26,12,12,12,20,12,21,12,15,16,12,12,12,12,12,13,12,12,12,12,23,15,12,12,15,20,18,20,12,12,20,12,18,12,12,12,25,23,12,12,12,12,15,21,12,12,12,12,12,21,10,15,13,12,26,20,12,12,12,12,13,15,12,26,12,12,23,12,12,14,12,12,12,20,12,30,8,12,12,15,12,23,12,12,12,16,18,18,12,12,31,12,12,15,12,12,12,12,15,10,15,15,12,12,25,21,15,12,10,12,12,12,20,25,20,12,12,23,23,12,12,10,18,13,17,12,26,23,12,12,12,23,15,15,12,13,12,12,8,8,21,8,12,12,12,12,8,12,12,10,12,12,12,12,12,12,15,12,15,12,15,12,12,12,12,12,12,12,21,23,21,12,15,15,12,12,12,12,12,12,12,18,12,12,20,12,17,12,24,15,11,17,8,23,15,12,13,12,12,15,12,21,12,12,20,20,12,12,12,12,12,18,12,13,12,12,21,12,17,12,8,12,15,11,12,12,12,12,10,12,12,25,24,24,12,12,15,15,14,21,15,25,12,12,15,12,12,23,12,12,10,12,12,13,31,12,12,21,12,15,21,20,15,12,12,28,12,12,12,12,12,15,17,12,15,12,30,18,14,12,12,12,17,10,12,12,18,12,12,31,30,18,12,12,25,21,12,12,12,18,17,12,18,15,18,12,18,20,25,12,20,12,12,12,18,12,8,12,12,18,12,12,12,25,20,20,12,12,12,20,12,12,20,8,8,12,18,12,13,15,11,12,12,15,12,12,12,12,12,15,17,12,12,18,12,10,12,26,12,18,12,12,12,12,18,12,12,12,12,11,12,12,15,12,12,15,18,12,12,12,15,12,12,12,15,18,12,12,12,12,12,12,31,21,12,12,12,12,10,12,15,25,17,12,15,8,12,20,12,12,12,12,12,12,20,12,26,18,12,25,8,20,8,23,10,25,20,12,12,18,12,18,17,17,12,12,20,12,12,12,15,12,12,15,12,28,25,17,12,12,15,12,25,10,12,24,24,24,21,18,12,20,12,12,12,12,15,12,21,12,12,12,12,20,12,20,12,12,32,12,12,12,15,12,12,18,12,12,12,15,11,23,25,12,12,12,12,30,12,12,15,18,12,12,12,15,12,20,12,18,12,12,15,12,12,12,12,18,12,12,13,12,30,15,15,12,12,17,12,12,12,18,32,14,18,25,12,12,12,12,18,21,12,20,12,16,12,23,12,15,12,18,12,23,30,18,8,12,12,12,12,12,12,12,26,15,21,20,12,15,12,12,12,12,12,15,12,12,11,28,12,20,15,18,12,12,12,12,26,23,18,12,12,12,12,30,10,12,12,13,12,12,10,14,23,12,12,16,12,20,12,12,12,12,12,12,12,12,15,12,17,12,15,12,12,12,12,18,12,8,12,12,14,12,12,15,12,10,20,12,12,12,12,12,15,12,12,15,20,12,12,12,15,12,12,20,15,15,12,20,18,12,12,18,23,12,12,12,8,12,18,12,21,12,28,18,12,12,12,12,12,12,24,24,12,12,12,25,15,15,12,12,12,12,12,12,12,12,8,12,20,12,13,17,12,10,15,28,12,12,17,21,13,8,18,21,12,12,15,13,12,15,12,8,12,26,12,12,20,12,12,23,21,10,12,25,12,12,10,30,12,12,17,25,25,12,12,10,12,12,20,12,18,12,18,12,12,26,26,12,12,18,26,12,10,12,12,12,13,26,15,12,24,12,12,12,12,14,12,12,12,12,12,15,12,23,18,12,12,25,18,12,12,20,12,12,12,20,12,12,12,18,12,12,8,12,12,18,12,13,15,12,13,20,23,23,12,12,8,26,12,12,12,23,12,17,28,12,25,12,18,12,12,12,12,12,20,12,12,12,12,12,12,18,15,12,30,10,12,12,12,12,10,17,12,12,18,12,12,12,14,8,18,12,15,12,15,12,23,21,26,12,13,12,12,26,12,12,12,12,12,12,12,12,12,12,18,18,15,12,12,12,21,12,12,25,15,12,21,12,12,12,21,12,8,12,8,12,12,18,12,24,24,24,18,12,12,18,20,12,23,20,12,30,14,12,18,20,15,25,18,18,18,20,15,12,26,12,13,12,8,18,12,12,12,12,20,23,12,18,23,12,20,8,25,12,23,20,12,12,12,18,12,20,20,12,17,20,12,21,12,12,12,12,8,12,12,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,21,20,12,21,12,12,21,12,21,12,12,12,12,28,15,8,15,12,12,12,12,20,13,12,12,12,21,25,12,12,12,12,30,10,12,12,13,23,15,12,12,20,18,10,23,12,12,10,21,12,18,12,20,16,11,8,12,12,31,17,14,12,12,18,12,15,12,12,12,12,26,12,12,12,12,23,18,12,21,15,17,14,12,12,21,18,12,30,12,12,12,12,15,13,15,23,12,10,12,12,18,12,12,12,26,12,21,14,21,12,10,12,12,12,12,23,18,12,21,12,18,12,12,21,8,12,12,12,12,12,12,12,18,15,12,26,15,12,8,12,12,26,12,8,21,13,12,18,12,12,12,15,20,12,12,21,12,12,16,21,12,12,15,12,21,24,24,24,12,12,12,14,12,12,8,12,12,30,8,12,26,12,21,12,12,12,13,12,12,32,12,15,12,12,12,12,18,15,12,12,12,12,12,18,12,12,12,8,15,18,12,18,18,12,20,12,12,18,12,12,20,12,20,20,8,15,12,12,15,12,11,12,12,12,12,12,12,12,12,10,12,12,13,12,12,12,12,8,15,12,12,12,12,12,12,8,15,8,12,12,11,17,12,12,12,12,20,10,20,20,23,12,12,12,8,20,12,18,12,12,12,12,20,12,12,12,12,12,12,12,12,18,15,12,17,15,23,12,15,23,25,12,15,18,25,12,13,12,12,15,10,12,20,12,12,12,12,12,12,15,21,12,12,12,15,12,15,18,13,15,15,12,15,12,12,13,28,13,18,12,14,12,20,12,12,18,20,15,15,12,8,20,12,13,12,12,12,12,12,21,12,12,18,15,12,12,12,12,12,23,16,21,21,12,23,12,8,12,12,15,12,12,12,18,21,12,10,21,15,12,20,15,20,12,12,12,12,12,15,17,18,12,12,24,24,24,24,16,12,12,12,12,12,15,12,20,12,15,12,12,21,12,20,20,12,18,12,15,18,18,11,15,15,12,12,15,8,18,12,20,23,12,12,12,12,10,12,12,12,12,12,25,32,12,12,18,12,21,12,11,15,12,12,12,12,12,18,12,15,12,12,21,14,10,20,11,12,12,10,28,12,21,12,13,15,18,12,12,12,21,12,12,15,12,12,15,12,17,12,29,12,12,12,12,12,12,12,12,12,12,12,12,12,11,10,12,28,12,12,12,12,10,12,12,12,18,12,12,12,15,25,12,15,12,12,21,12,12,12,15,12,12,20,12,12,12,12,20,20,12,8,14,12,20,12,12,13,15,12,12,15,15,12,12,12,8,15,25,26,12,12,12,21,12,8,12,12,12,10,12,15,12,12,12,15,12,10,21,8,10,12,12,21,18,12,15,13,12,12,12,26,30,12,12,15,12,12,25,12,12,12,21,10,15,12,12,12,12,12,10,21,8,12,23,12,12,8,24,24,12,14,18,12,15,20,12,12,12,12,12,12,12,18,10,12,12,18,15,28,12,12,23,21,12,18,25,12,12,17,10,12,12,20,23,8,12,26,12,12,26,12,8,12,15,12,13,8,12,12,12,10,8,18,12,12,15,10,12,12,12,12,8,12,10,12,15,12,23,12,15,15,12,32,8,12,18,12,12,12,12,12,12,12,12,12,23,12,21,12,13,12,18,23,10,18,12,15,12,12,10,28,23,12,12,12,30,12,10,12,12,10,12,20,13,12,12,12,25,21,12,12,12,28,12,20,12,12,12,10,18,30,20,12,26,12,12,12,10,26,10,21,25,8,12,21,15,20,26,12,12,18,10,12,12,26,12,12,12,12,12,12,12,13,12,15,12,12,10,26,8,18,12,12,12,12,8,12,21,12,12,12,12,12,12,10,21,23,12,12,12,26,18,15,12,12,15,28,30,12,12,12,12,15,12,20,12,12,12,17,15,15,21,21,15,12,12,18,21,8,12,25,15,12,8,23,12,24,24,12,12,12,12,12,8,12,15,12,15,12,20,12,23,12,12,12,26,25,12,12,14,12,12,21,12,12,12,12,13,12,12,10,12,12,12,18,12,8,12,12,12,15,14,14,12,29,21,17,25,21,12,10,23,13,12,12,12,15,12,12,12,12,12,12,12,12,12,25,25,12,12,12,20,12,12,12,12,12,12,12,26,10,12,12,12,20,12,20,12,13,12,12,21,20,12,15,15,18,10,30,12,12,12,12,12,10,28,18,14,31,21,12,18,12,15,15,12,15,12,10,12,20,21,8,12,18,12,16,12,20,12,10,20,12,12,18,12,23,15,18,20,15,12,12,12,8,12,12,20,12,26,12,12,18,12,15,12,25,12,13,10,23,12,12,20,12,18,12,20,12,18,12,23,18,12,12,12,12,12,13,12,31,12,12,12,12,12,12,12,8,20,12,12,21,12,12,20,13,12,12,15,10,21,12,18,15,12,12,12,12,10,12,12,12,12,15,18,25,24,24,12,21,10,20,12,12,11,15,12,16,8,12,12,12,26,17,28,15,12,12,23,8,12,12,15,12,13,8,12,23,12,8,20,12,12,12,8,20,21,12,12,12,12,12,12,12,12,26,12,12,12,14,8,12,18,12,25,8,12,18,12,15,20,8,12,18,12,12,12,21,23,12,12,12,12,15,25,12,12,12,12,12,12,12,12,12,12,18,12,12,12,12,28,26,12,15,12,25,18,21,12,12,12,12,23,25,12,10,12,17,12,11,12,20,15,12,12,10,12,12,12,12,12,12,12,10,12,18,10,20,12,12,8,12,21,20,18,12,12,12,12,12,12,18,12,12,25,18,12,12,12,12,12,12,15,21,12,12,12,18,12,14,12,13,20,18,12,10,25,12,12,21,12,12,14,12,18,8,12,23,23,12,15,12,12,18,12,12,12,12,12,12,12,18,15,12,26,12,15,12,12,12,17,13,21,15,20,12,12,12,12,8,20,12,12,32,21,12,12,12,12,12,12,12,12,8,15,25,23,18,12,24,24,24,12,12,21,12,12,12,8,23,12,12,12,25,20,10,12,30,12,12,12,12,12,12,12,12,20,15,12,8,26,20,12,12,12,21,12,12,23,11,12,18,18,17,15,18,12,12,11,12,13,15,25,12,12,8,23,8,20,12,8,12,23,12,8,14,12,12,12,21,12,12,15,12,12,18,18,15,12,12,12,12,12,15,28,12,12,12,12,12,10,18,12,21,12,12,12,18,25,12,12,23,21,20,20,18,10,12,17,12,12,18,12,12,12,12,12,18,12,12,14,12,18,10,8,12,12,12,12,8,12,12,12,20,12,12,12,15,12,12,12,12,15,12,8,8,12,12,12,8,12,15,23,12,12,12,12,12,15,23,12,8,12,18,12,12,12,10,15,10,8,12,8,12,17,12,12,20,8,12,12,12,12,18,15,12,12,12,12,12,12,13,12,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,26,12,18,12,12,13,12,13,10,17,12,12,12,12,12,12,12,12,12,12,30,12,12,12,10,24,24,24,23,23,12,20,12,12,12,12,13,15,12,12,12,15,12,15,12,21,15,12,12,30,12,12,12,12,15,14,12,15,12,12,10,15,12,12,15,23,30,12,15,12,8,18,12,20,12,11,12,12,12,12,12,18,12,12,12,15,12,12,12,12,18,12,12,12,21,13,12,12,12,30,8,20,12,12,13,12,12,15,18,12,18,12,12,20,20,20,12,20,20,12,26,15,12,12,12,15,15,12,12,12,12,23,12,21,12,12,12,12,12,20,12,15,12,18,25,18,25,12,25,8,30,18,15,10,25,12,12,12,20,12,12,12,12,12,17,12,12,15,25,12,12,15,11,13,12,30,12,23,12,20,12,12,12,25,12,12,12,26,12,12,15,12,12,8,12,12,12,12,18,12,12,12,15,12,13,12,12,12,12,12,12,26,12,30,12,12,21,10,15,18,21,12,12,20,12,12,12,12,12,12,12,12,12,12,18,15,21,20,12,12,23,20,12,28,12,8,23,14,12,18,25,10,12,21,12,12,10,13,12,24,24,12,12,15,15,12,15,12,14,17,12,12,12,12,12,20,12,12,12,12,12,21,21,8,12,21,12,23,10,23,12,25,12,12,20,12,8,17,23,12,18,18,18,20,12,10,25,12,21,12,12,12,12,12,12,28,12,12,12,12,12,12,18,12,15,25,12,20,12,12,12,12,15,15,20,26,12,12,26,12,12,15,12,20,17,28,12,23,26,15,20,12,25,12,8,12,18,12,15,23,12,12,18,12,12,12,26,18,12,12,12,12,12,12,15,12,10,12,12,15,10,12,12,28,10,12,30,12,12,12,12,28,15,12,15,15,15,12,12,12,12,12,10,15,12,23,12,18,12,21,15,18,20,26,12,14,21,17,12,15,12,23,12,12,13,12,12,26,8,18,12,26,10,20,12,12,12,12,28,12,12,12,12,12,12,12,12,18,12,12,17,20,12,25,23,12,12,11,25,12,12,10,12,20,12,18,12,10,15,23,12,12,10,15,12,31,12,23,12,30,13,26,14,18,12,12,12,12,23,20,20,15,15,12,24,24,24,8,25,12,17,18,12,12,12,11,12,15,12,8,15,12,18,12,12,23,12,12,18,12,18,12,12,20,12,12,30,12,10,12,12,25,13,8,18,12,12,8,15,12,15,12,23,12,12,12,15,10,18,12,10,17,12,12,12,21,12,12,12,12,12,12,21,20,14,12,12,12,20,12,21,15,15,15,20,12,18,12,12,21,12,18,18,12,10,25,25,20,12,12,17,12,13,15,8,12,12,14,12,21,12,12,8,12,12,20,12,12,12,12,12,18,10,12,12,12,12,12,12,12,12,26,12,21,18,12,18,14,12,12,18,15,20,12,12,12,12,18,12,12,12,12,13,12,15,18,12,16,12,12,12,20,12,15,12,20,12,26,26,12,12,12,10,12,21,20,12,12,12,12,23,12,12,12,12,12,15,26,15,15,14,8,12,18,12,25,12,12,12,12,26,12,15,26,12,12,18,20,25,12,12,12,11,20,12,12,12,14,12,20,12,15,12,10,12,12,12,10,12,12,12,12,12,12,12,14,12,12,12,12,15,10,12,24,24,12,12,12,12,12,12,12,15,12,12,15,10,12,10,12,12,12,32,12,12,12,20,12,12,12,12,28,12,8,12,21,12,12,26,12,25,21,12,12,14,12,17,12,23,12,17,12,12,26,21,12,12,12,12,10,12,12,12,12,12,12,12,12,12,20,14,12,26,15,12,12,25,15,12,15,18,12,23,15,12,12,12,12,12,12,12,12,12,12,20,12,12,28,12,15,12,12,20,12,15,12,14,12,17,25,12,10,12,12,8,12,12,15,12,12,12,12,10,12,15,12,10,12,11,12,20,12,15,12,12,8,12,12,12,12,8,12,12,12,20,12,8,12,32,20,15,12,12,12,20,12,15,8,26,10,12,12,12,12,12,12,12,12,12,20,12,15,28,12,18,12,12,14,12,12,12,12,10,23,12,12,12,23,12,15,12,18,13,12,12,12,25,12,12,12,12,12,12,18,12,8,21,12,12,12,20,13,12,12,12,12,12,12,15,20,12,12,12,12,21,12,12,24,24,24,12,12,12,8,18,20,12,18,12,12,12,12,21,11,12,12,12,12,15,18,12,12,12,20,12,12,12,15,12,23,18,18,12,12,12,15,15,12,12,12,12,12,20,12,15,12,12,26,12,12,12,12,12,12,8,26,12,25,12,12,12,12,23,12,12,20,12,15,10,12,12,12,8,12,12,11,12,25,12,21,12,23,23,11,12,8,12,12,12,12,20,20,12,12,12,12,12,12,12,20,21,15,20,11,26,12,12,18,12,26,12,12,15,12,12,12,20,12,12,12,11,15,21,10,12,12,15,15,23,12,12,12,13,18,12,12,20,12,12,12,13,24,12,20,12,15,12,12,20,10,20,23,8,12,12,12,12,21,20,18,12,15,23,20,12,12,12,12,21,12,12,12,20,12,12,23,12,12,20,30,20,12,12,10,8,10,26,15,12,12,12,20,12,10,31,12,12,12,18,12,18,12,12,21,15,21,13,20,25,12,12,12,12,12,21,12,26,12,12,12,20,12,8,12,24,24,24,25,12,12,12,12,12,14,20,20,12,15,12,12,18,12,12,12,12,12,12,12,15,20,18,26,26,12,18,12,15,12,12,10,8,28,12,12,25,12,15,12,12,13,12,12,21,12,13,20,26,12,12,12,12,15,12,12,12,20,12,10,11,12,21,12,12,12,18,12,12,12,12,8,12,12,17,12,21,10,12,8,20,25,14,12,12,18,12,12,14,12,12,12,18,12,15,12,12,12,12,10,10,12,12,30,12,8,14,11,12,15,12,12,12,28,12,12,12,25,12,12,15,12,15,12,12,20,21,12,12,12,20,8,12,18,12,12,12,12,12,12,12,18,12,20,15,15,13,12,15,8,12,12,18,21,12,12,12,25,12,25,21,12,8,12,12,12,10,8,12,21,12,12,12,12,20,15,12,12,12,25,12,12,12,15,12,21,20,12,8,12,12,14,12,15,12,20,12,23,12,8,12,12,18,21,12,21,12,18,13,12,12,12,26,12,30,12,12,12,15,12,12,15,15,16,15,12,20,23,8,10,24,24,24,12,12,12,18,12,10,21,12,25,18,12,12,10,10,23,12,12,12,12,12,14,15,8,20,12,10,12,12,12,10,15,20,20,12,15,15,12,12,15,20,30,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,12,18,18,28,12,15,18,13,28,12,12,12,12,12,21,12,21,12,13,17,18,12,20,12,12,15,15,12,15,12,12,21,12,18,15,12,25,12,12,12,12,23,18,12,12,20,15,12,30,12,12,20,12,12,12,15,12,12,20,12,12,12,12,12,25,12,15,12,12,12,12,28,12,12,12,12,12,12,8,12,12,18,15,12,12,12,12,20,12,15,23,12,12,10,8,13,12,12,31,21,30,25,31,18,12,15,15,12,8,12,12,18,12,12,12,12,26,8,31,10,8,13,10,12,12,25,12,18,12,12,12,12,12,12,18,23,18,12,12,23,12,12,12,18,12,12,12,14,23,8,12,15,12,12,15,15,12,12,20,8,12,12,23,12,12,12,12,12,8,12,12,12,15,12,12,12,12,24,24,14,12,21,12,12,21,12,12,15,20,21,12,12,12,21,11,15,12,29,18,12,12,25,18,12,12,21,12,12,20,15,10,20,12,15,17,12,15,12,12,12,12,25,12,12,12,12,20,14,10,12,12,8,12,10,12,15,12,12,12,12,12,12,8,10,12,12,11,18,12,12,15,8,12,12,12,23,20,15,10,12,21,12,15,12,21,12,12,12,21,20,23,12,12,15,12,12,15,12,10,12,10,12,13,12,12,18,14,12,10,15,28,12,12,12,12,12,12,12,12,12,25,12,12,12,8,12,12,13,12,12,12,25,12,20,12,8,10,18,30,25,25,21,28,12,18,20,21,23,12,12,12,12,10,12,11,20,18,21,10,18,26,12,26,12,16,12,17,25,12,14,23,25,12,10,13,8,20,12,18,12,20,26,12,21,21,20,20,18,12,12,10,12,23,12,12,12,12,18,11,8,12,12,12,12,18,12,12,12,20,15,12,12,12,12,12,20,10,12,21,12,10,12,20,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,12,24,24,24,20,12,25,12,31,12,12,12,15,15,10,12,15,15,12,20,20,12,12,15,12,20,11,12,12,12,12,12,10,18,12,12,12,12,12,12,12,25,12,21,12,13,12,12,12,12,12,8,15,18,12,12,25,12,12,12,12,12,10,12,25,10,12,21,15,12,18,12,12,25,15,12,18,12,31,12,21,21,8,15,12,8,25,12,12,12,12,12,12,12,18,12,12,18,8,20,11,12,26,10,20,10,12,15,12,12,12,17,15,12,12,14,12,12,12,12,12,12,20,12,12,25,8,12,18,26,10,12,12,12,12,18,11,18,12,15,12,14,12,12,12,12,12,15,20,12,12,12,21,20,18,23,10,15,23,12,12,12,12,12,12,12,12,12,10,23,21,8,12,12,12,12,12,12,8,30,15,12,12,21,12,12,20,12,12,12,12,12,12,14,20,12,20,12,12,12,13,12,12,18,12,12,13,15,10,13,17,12,12,12,12,8,12,12,12,12,15,20,14,12,12,18,12,12,24,24,12,8,20,12,12,10,12,10,12,12,12,12,8,12,12,12,12,10,12,12,12,12,12,12,12,12,15,12,20,12,12,12,32,18,12,12,26,12,25,15,12,10,12,15,21,12,8,12,12,12,12,21,12,12,12,12,20,10,12,12,20,12,12,18,12,26,12,21,12,12,12,12,12,12,14,12,21,12,17,18,12,23,21,12,12,12,12,12,23,15,10,12,12,26,21,13,12,12,12,15,15,12,12,12,25,14,12,12,12,28,25,12,12,18,15,12,12,12,12,18,12,8,12,12,10,8,12,12,12,12,10,12,12,10,12,13,15,8,12,26,21,12,12,10,15,18,12,12,12,12,10,12,10,20,12,15,18,23,17,12,15,12,12,12,12,12,12,31,10,12,15,12,8,12,12,12,12,18,14,12,12,10,12,12,15,12,20,12,12,12,12,12,21,28,23,12,15,12,18,12,12,18,28,15,12,8,12,21,21,12,12,12,12,12,18,20,12,12,12,12,12,20,11,12,12,12,12,12,25,12,12,24,24,24,15,12,12,12,26,12,12,23,12,12,15,12,12,12,12,12,12,12,12,21,20,15,12,12,12,20,12,12,12,18,18,23,12,12,12,12,20,12,21,12,20,10,12,8,12,12,12,15,23,12,12,12,12,12,12,21,12,20,15,12,12,15,12,25,10,18,18,12,15,12,10,12,18,12,13,12,12,13,20,12,12,12,20,21,20,12,12,12,12,10,12,21,15,20,12,12,12,12,12,26,10,12,12,12,23,20,12,20,12,12,12,12,12,12,12,20,12,26,12,25,12,12,15,12,12,12,12,12,12,12,12,26,12,12,12,12,18,12,12,12,12,12,20,10,12,12,12,12,25,20,10,21,18,12,12,12,12,12,30,11,12,26,12,23,13,10,12,15,20,12,12,12,12,21,12,12,8,18,12,12,15,25,12,18,12,12,12,18,8,8,12,12,23,12,12,15,12,12,15,12,17,25,14,21,12,12,12,10,8,12,18,12,20,12,12,15,12,12,12,17,14,18,12,12,10,12,12,12,12,12,12,24,24,24,12,12,15,12,12,30,20,17,12,23,18,12,26,12,12,20,15,13,15,12,12,12,12,12,12,12,12,12,21,12,15,20,18,12,12,15,12,13,15,8,12,14,14,15,23,15,25,12,23,12,12,11,12,12,12,12,12,12,12,15,15,10,12,15,15,12,18,12,21,12,12,12,12,12,12,15,12,21,20,21,12,12,15,12,11,12,20,12,12,23,12,12,12,12,30,15,12,26,13,15,12,12,8,18,26,25,15,20,12,15,18,12,12,12,8,31,11,12,20,21,12,12,18,17,15,20,12,21,12,15,12,12,18,12,21,12,12,21,12,18,26,12,12,12,12,12,12,17,25,12,14,12,18,15,12,21,12,12,18,21,21,17,12,23,12,18,12,13,12,25,15,15,15,12,12,23,12,12,18,12,12,12,26,12,18,12,12,25,12,20,21,12,12,15,15,20,20,12,21,14,18,18,21,32,12,12,21,26,15,23,12,12,12,12,28,30,12,15,12,15,12,12,12,12,12,12,12,12,20,12,15,20,18,12,24,24,12,12,14,12,12,10,18,15,12,12,12,12,12,12,23,18,25,12,12,8,20,12,15,10,12,12,24,12,12,21,12,21,23,12,12,12,12,20,10,12,12,10,12,23,12,26,20,25,12,10,12,12,8,23,12,12,20,25,18,12,15,8,21,18,12,12,12,18,31,12,12,12,12,10,18,12,21,8,12,31,12,12,12,12,12,12,13,18,12,12,18,18,21,12,12,12,15,12,12,12,10,12,12,12,12,21,12,21,12,12,12,12,12,12,12,25,17,20,12,8,12,12,12,12,12,18,12,10,12,15,12,14,12,12,12,12,12,12,17,13,12,30,12,11,21,12,12,12,18,15,12,12,12,12,25,28,12,12,12,12,23,15,14,15,18,12,12,12,12,21,12,12,12,12,12,20,23,15,12,12,12,13,12,15,26,18,12,8,8,12,12,23,12,12,12,18,12,12,12,12,12,18,20,15,12,8,12,12,20,15,11,12,12,12,12,12,12,12,20,12,15,12,12,15,12,12,12,29,10,15,15,12,18,12,24,24,12,12,21,25,12,12,12,12,12,18,12,12,15,21,12,14,12,15,12,12,12,12,12,15,12,20,12,12,15,12,12,12,12,12,12,23,15,12,8,12,20,12,12,12,18,12,12,8,12,12,12,20,12,12,8,12,10,15,21,8,12,12,12,12,16,13,21,8,25,12,12,12,12,8,26,25,12,12,12,12,20,17,15,12,32,12,12,12,12,12,21,16,10,15,12,12,12,12,12,25,20,18,12,12,15,12,12,18,12,14,12,12,12,20,12,18,12,12,12,15,18,18,15,23,12,12,12,12,12,23,12,15,12,12,13,18,18,12,12,12,12,31,10,12,18,12,12,13,10,12,12,12,12,21,12,12,23,15,18,12,15,15,21,20,12,12,20,12,12,20,12,10,12,12,26,12,17,12,12,12,8,12,12,20,12,12,21,12,15,12,12,12,18,12,21,8,20,20,12,12,12,12,18,25,12,26,30,12,12,12,12,12,15,12,12,12,12,12,12,12,12,33,23,20,24,24,24,12,12,12,12,12,12,15,12,20,18,12,10,15,15,12,12,12,14,21,12,18,26,12,12,12,12,18,12,25,26,12,13,20,12,24,12,26,15,12,25,12,15,8,12,12,12,12,8,12,8,12,26,12,12,12,12,12,18,12,12,12,12,15,12,12,12,12,28,12,12,12,14,12,23,14,20,12,12,12,15,12,12,12,20,10,12,12,12,12,12,8,8,12,12,12,15,12,20,12,23,20,10,12,12,10,12,12,12,12,12,14,12,10,12,8,15,12,12,12,12,12,13,10,12,12,15,13,12,12,18,12,18,8,14,12,12,15,25,12,12,12,15,15,26,18,15,12,12,12,21,12,23,12,12,12,12,12,12,12,21,11,12,12,20,12,23,12,12,12,12,10,12,25,12,15,18,12,12,12,12,26,21,12,12,12,20,12,12,12,25,12,15,12,12,12,12,12,15,8,12,12,18,18,15,12,23,12,21,28,12,11,12,12,12,20,12,20,18,18,12,12,12,12,12,12,15,24,24,24,28,12,21,33,12,10,16,20,26,25,21,15,12,12,12,18,12,12,21,18,12,25,26,20,14,15,21,12,15,12,8,12,26,25,13,21,12,12,12,12,12,15,20,12,23,12,12,12,30,18,15,18,12,20,23,25,12,15,12,15,12,26,12,12,26,8,12,12,15,12,20,12,12,10,8,12,12,31,12,12,12,31,12,12,31,21,12,10,20,15,12,12,15,12,12,26,12,13,15,12,10,15,12,8,8,15,10,20,18,20,11,26,12,23,12,12,12,15,12,15,23,12,12,15,15,26,12,10,12,12,18,20,18,15,13,12,8,10,15,12,12,12,18,12,20,18,12,12,12,12,20,10,12,12,8,21,15,10,12,25,15,12,15,17,12,12,12,10,23,11,12,8,12,21,12,12,18,15,18,23,12,14,28,12,25,12,23,12,12,10,12,21,12,13,12,20,26,12,20,15,12,12,12,8,12,12,15,12,12,12,15,10,20,12,20,12,12,15,12,23,12,21,12,20,12,12,12,18,24,24,23,12,20,12,12,12,12,12,21,12,23,23,12,12,12,26,18,12,12,12,14,21,12,12,12,12,25,17,18,12,12,18,12,12,12,12,13,12,20,12,15,12,8,12,15,12,20,10,14,12,23,12,12,16,12,12,12,8,12,17,12,15,18,12,12,12,12,26,23,12,15,23,17,30,14,12,12,15,18,18,12,12,10,12,12,11,12,18,12,12,12,26,12,12,12,12,26,10,12,12,12,12,12,12,12,12,23,12,15,12,8,12,17,12,12,21,12,8,12,23,12,18,30,23,10,12,15,12,12,12,12,12,12,15,8,12,14,15,12,12,23,20,12,15,16,12,21,12,12,26,20,12,20,12,11,26,12,12,12,8,12,18,12,12,30,12,12,12,12,12,23,12,10,17,12,12,12,12,12,15,12,15,12,8,23,12,12,12,12,12,12,20,12,12,25,21,12,12,12,12,21,12,29,12,12,12,12,10,12,12,12,20,12,29,13,20,20,13,12,12,15,14,23,12,24,24,18,21,12,12,12,12,12,25,12,12,12,12,20,20,13,12,12,11,12,12,20,12,18,12,12,12,12,15,12,25,12,25,21,12,12,32,12,12,15,20,12,12,10,18,12,12,12,12,12,12,15,12,12,12,12,12,12,12,18,23,23,8,12,12,12,12,12,21,10,12,12,15,12,12,12,12,12,12,12,12,12,12,18,8,12,12,8,8,12,32,12,12,12,20,15,15,23,12,12,12,12,16,13,18,12,10,12,12,11,12,15,12,15,12,12,12,16,10,12,12,12,10,12,20,15,12,10,12,12,15,12,12,12,12,8,11,12,12,21,10,10,18,20,10,12,15,15,12,12,14,28,12,20,12,16,15,23,12,21,12,21,12,15,12,12,12,13,20,12,14,12,12,12,11,12,8,10,12,12,10,12,15,12,8,23,15,23,12,14,21,12,13,28,15,12,12,20,12,12,17,12,12,8,10,12,12,15,12,12,8,10,20,12,12,8,12,18,12,12,12,12,12,12,12,12,18,12,12,8,18,12,12,24,24,25,12,12,12,15,15,15,12,21,12,12,12,14,11,10,12,12,20,15,10,10,21,12,12,20,10,12,12,12,12,12,18,12,12,15,18,16,12,12,18,23,12,21,12,12,31,12,24,25,18,12,21,23,10,21,13,12,12,15,12,12,12,18,12,12,12,8,23,21,15,20,20,12,12,14,25,12,15,12,10,12,12,12,15,28,12,15,14,18,10,12,12,12,20,20,12,12,12,12,12,21,12,15,12,18,20,12,8,12,12,12,12,17,8,12,13,12,20,12,12,15,12,12,18,12,12,12,20,18,8,12,12,26,20,12,18,11,12,12,12,12,12,15,8,12,26,15,12,17,12,18,15,21,12,12,10,12,12,12,12,25,12,23,12,18,12,30,8,12,12,12,12,12,12,12,12,20,18,8,10,12,12,12,12,25,12,12,12,23,21,20,18,12,14,8,12,21,12,12,13,12,10,31,17,21,12,30,10,15,12,12,12,21,12,21,12,12,10,15,12,12,12,24,24,12,12,21,12,23,12,20,15,28,12,12,8,12,12,18,30,12,18,12,12,12,13,12,18,12,10,12,12,18,12,12,12,17,18,12,13,15,12,12,14,15,12,15,12,12,12,12,12,12,15,12,14,23,23,10,18,10,26,12,12,8,8,12,12,12,12,12,23,12,12,12,12,11,11,21,12,12,10,12,12,25,12,12,12,18,8,12,13,12,12,21,12,12,12,12,10,12,12,12,12,13,18,12,12,10,15,12,12,12,12,12,25,12,10,26,12,12,12,14,8,12,20,18,12,25,10,15,12,30,12,12,12,10,12,12,12,10,23,12,12,20,15,15,12,12,12,12,18,12,12,12,21,12,12,21,12,21,12,15,20,18,15,12,12,12,12,21,15,12,25,8,12,12,20,15,10,12,21,12,26,12,12,12,18,12,12,20,12,12,15,14,8,12,21,20,12,12,12,12,8,12,16,15,25,21,18,23,15,12,12,12,12,15,25,15,15,12,12,12,12,12,24,15,12,12,15,12,12,12,24,24,24,24,24,24,12,25,12,12,12,17,12,12,18,12,12,18,10,12,18,23,18,15,12,12,11,17,12,12,12,18,10,12,12,11,12,14,12,20,12,12,15,12,15,12,12,18,12,12,12,26,15,12,12,28,12,30,15,12,15,23,26,18,12,12,12,12,26,10,12,18,23,15,14,12,10,23,12,15,12,23,21,12,12,12,13,12,12,18,20,12,12,10,12,12,10,15,8,12,8,12,13,12,12,12,12,12,12,12,28,12,12,12,12,10,10,12,28,12,15,8,12,12,12,12,12,10,8,12,25,10,12,13,12,12,12,28,15,12,15,12,10,12,15,25,12,15,12,26,12,12,12,12,12,12,12,12,10,20,12,12,23,18,12,12,12,12,12,12,12,12,12,10,15,12,12,12,12,12,12,12,23,12,14,12,18,12,12,25,21,23,12,12,21,21,12,25,12,15,12,28,21,12,12,21,12,23,15,12,8,14,12,12,12,12,15,17,30,12,12,10,25,12,12,15,21,25,12,12,10,12,12,12,20,23,12,12,28,12,18,21,21,20,18,21,12,12,15,20,28,15,20,12,12,12,12,12,12,12,12,8,24,24,24,24,24,24,24,18,12,12,20,12,26,8,12,12,15,13,12,12,20,20,26,12,25,12,25,12,12,12,15,12,10,12,21,12,12,12,20,12,12,21,18,20,12,15,18,13,20,12,20,12,10,12,20,23,25,12,15,12,12,12,25,10,12,12,18,12,15,12,10,25,12,12,12,13,12,12,12,12,15,12,10,12,28,12,12,21,12,15,10,12,15,20,21,18,12,12,12,10,10,13,13,12,12,12,12,12,25,18,12,8,18,14,21,13,15,12,12,21,26,12,8,12,12,18,12,12,20,15,26,12,12,18,21,13,10,12,12,20,12,12,10,17,12,12,12,12,29,12,18,18,12,12,12,12,12,15,12,12,12,18,12,10,15,12,12,12,12,12,12,12,14,23,12,11,12,20,12,12,21,12,8,12,14,12,12,12,18,12,14,12,12,10,23,21,8,33,12,13,12,10,26,12,20,15,12,12,12,28,15,20,12,12,12,25,12,15,11,10,12,25,12,18,12,20,21,10,8,14,12,25,12,15,12,12,12,12,12,18,18,12,12,20,12,13,12,12,12,12,12,15,8,12,10,12,24,24,24,24,24,24,24,24,12,12,12,12,12,10,20,12,12,12,12,21,15,15,12,12,12,18,10,29,12,12,12,12,12,12,12,21,18,13,12,12,15,12,20,23,12,10,25,12,12,12,23,12,11,12,12,12,12,12,18,12,18,12,12,12,15,12,12,12,12,15,12,15,13,14,26,8,12,28,12,12,12,12,12,15,12,15,28,30,12,20,15,21,12,13,12,15,10,17,20,8,12,11,10,10,12,15,12,20,12,12,15,12,12,12,15,12,12,26,25,12,12,12,12,12,15,12,23,12,12,12,12,12,8,29,14,10,12,18,12,12,12,28,12,12,12,12,21,20,13,12,12,12,12,12,33,12,10,12,15,29,12,12,12,12,20,10,12,12,12,12,18,12,20,12,8,12,12,12,12,12,20,12,17,12,12,12,12,18,13,21,17,25,13,12,15,21,12,26,13,14,15,15,23,12,12,12,12,12,20,12,8,30,12,12,12,12,12,18,30,20,12,12,12,12,12,12,15,20,15,12,12,18,26,11,20,8,10,12,26,10,25,12,21,12,12,12,12,15,15,12,12,12,15,12,24,24,24,24,24,24,24,24,12,12,12,12,12,12,18,15,12,12,25,20,25,11,23,10,10,12,13,12,20,10,21,12,12,15,25,20,12,12,23,12,26,12,21,21,12,18,12,21,18,12,12,20,12,8,12,18,12,12,12,23,10,10,12,10,12,15,12,12,12,11,12,12,12,12,12,12,25,12,8,12,12,23,12,12,18,12,12,12,12,12,8,18,12,12,12,12,12,12,18,12,20,12,13,12,12,12,12,12,12,11,12,17,12,13,15,21,12,18,20,12,12,12,20,12,12,12,12,12,12,25,14,12,12,14,20,12,15,18,12,17,25,12,12,14,12,12,12,12,12,12,12,20,8,21,12,12,12,10,18,12,12,12,12,12,12,12,12,8,21,12,12,18,12,20,21,23,12,15,12,12,12,20,12,12,15,12,12,21,15,18,14,25,12,12,12,12,20,25,15,12,15,12,14,12,23,12,12,12,15,12,12,12,12,12,12,12,12,18,17,12,12,17,15,12,12,12,12,12,12,12,23,12,12,15,20,12,21,12,14,26,18,12,12,12,12,12,23,25,12,12,12,12,18,31,12,18,12,12,12,12,12,24,24,24,24,24,24,24,12,12,25,12,10,12,12,12,8,12,12,12,12,8,12,12,12,12,12,12,23,13,12,12,25,23,15,15,12,12,12,25,8,15,20,12,8,13,12,12,12,12,18,11,21,12,12,12,12,12,12,21,12,20,12,12,12,8,26,12,12,8,12,11,12,15,12,12,12,12,12,12,12,15,8,20,28,12,12,8,12,12,12,12,12,14,12,12,12,23,15,30,12,12,10,28,12,17,12,12,30,12,12,12,12,12,12,12,21,18,12,20,12,23,12,12,25,12,12,12,12,18,12,12,20,13,26,12,12,12,12,20,12,15,12,12,15,12,12,12,12,15,12,25,25,12,12,18,10,12,12,12,12,12,10,15,23,12,10,14,12,20,12,21,17,18,21,12,21,25,12,20,12,12,15,12,15,20,21,12,12,12,20,12,12,15,12,10,12,26,15,23,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,8,18,15,12,12,12,12,12,20,12,12,12,12,12,15,23,12,18,20,18,12,12,12,12,12,12,13,12,15,12,12,12,20,15,12,26,8,12,21,12,12,12,24,24,24,24,24,24,24,12,12,12,18,8,11,28,12,12,12,12,29,15,23,8,12,10,12,12,12,18,26,12,10,12,23,12,26,15,18,12,12,12,12,18,13,25,12,12,12,11,25,12,12,12,12,12,13,12,10,12,18,15,12,21,21,12,12,21,20,11,12,12,12,18,21,12,12,12,15,12,12,15,12,18,12,8,12,12,12,12,12,12,12,8,12,20,12,25,15,12,12,12,12,12,15,23,26,12,12,20,12,26,15,18,12,10,12,15,15,12,18,10,21,12,8,12,12,12,10,12,21,12,15,10,12,12,12,12,12,12,23,12,21,25,21,12,30,12,12,12,12,18,10,12,25,13,8,21,12,21,25,12,25,18,12,8,12,8,12,12,12,21,12,12,12,12,10,23,25,18,12,15,25,12,12,8,12,29,12,12,12,12,18,12,15,12,14,12,12,12,12,13,12,8,23,13,12,12,8,12,15,12,8,15,12,15,12,15,23,10,12,12,14,13,20,25,12,11,8,12,12,12,12,21,12,21,15,12,12,12,20,26,12,12,15,12,12,12,21,26,12,12,14,12,15,10,20,20,12,15,24,24,24,24,24,24,26,12,21,12,18,12,20,12,12,25,12,12,15,12,15,12,12,12,18,12,21,12,12,12,23,15,12,18,21,12,12,12,15,12,12,12,12,12,12,12,20,12,12,12,12,12,12,15,21,23,10,12,12,12,8,12,12,12,12,12,12,12,20,12,12,12,12,12,12,20,12,10,12,20,10,10,12,12,18,12,12,16,21,21,15,12,15,13,11,12,12,12,12,12,18,23,8,12,26,12,17,10,12,12,12,12,12,12,28,11,12,12,12,12,20,12,12,12,20,12,18,12,12,12,25,12,12,15,12,15,15,20,21,12,12,18,13,12,18,12,12,12,20,21,12,12,12,18,18,12,21,12,21,12,18,12,24,12,18,12,12,12,21,28,12,18,12,8,18,20,12,15,25,12,28,12,15,12,20,28,12,15,10,12,12,12,12,12,12,12,12,12,12,10,16,12,12,12,15,12,15,13,25,12,20,12,12,12,18,30,18,20,12,12,26,15,25,15,12,12,15,23,12,12,12,20,12,12,12,25,12,12,15,12,20,12,12,15,12,12,12,24,24,24,24,24,12,25,12,12,16,12,12,12,12,8,15,12,12,12,18,12,25,15,21,12,12,12,12,15,8,12,12,12,18,12,12,12,20,12,17,23,12,25,17,18,12,12,12,15,12,12,12,12,20,28,12,12,32,12,12,12,15,26,12,21,12,8,12,21,12,26,12,12,12,12,12,8,12,8,12,12,12,10,20,13,12,10,21,13,12,20,12,17,12,12,21,12,12,13,20,21,18,12,12,18,20,12,12,12,12,21,12,21,10,12,15,21,12,10,12,15,12,12,12,8,12,20,8,14,12,10,12,12,12,12,15,12,12,12,21,12,12,12,18,23,12,25,20,12,15,12,12,12,12,12,12,25,12,12,12,30,18,15,15,15,12,20,12,20,12,10,23,12,12,12,12,20,12,10,12,12,26,12,12,12,8,12,26,15,21,21,12,21,12,12,26,12,12,12,12,10,12,15,12,12,20,12,20,12,20,10,18,15,20,12,12,12,12,8,12,12,12,12,15,15,12,12,12,12,13,30,12,15,12,12,18,12,13,8,18,12,12,18,8,12,10,13,12,24,24,24,12,20,10,12,12,12,12,15,12,12,12,12,12,12,12,15,12,12,18,18,12,12,12,12,12,12,12,12,8,12,12,12,12,10,18,10,18,12,11,26,12,12,12,12,12,20,15,30,12,12,15,30,12,12,12,15,12,15,12,12,12,20,12,12,12,12,10,15,12,20,30,12,12,15,23,10,10,14,12,12,8,15,18,8,13,15,12,12,12,10,12,26,10,23,12,12,12,12,12,8,12,15,11,15,8,12,20,12,12,18,17,12,18,12,14,21,12,23,12,23,10,12,8,12,12,12,10,15,26,17,12,12,12,12,12,12,12,18,12,12,12,25,12,12,21,21,17,12,18,12,12,23,20,12,12,12,12,23,12,10,12,17,12,10,12,12,10,28,25,12,12,12,12,15,12,12,12,12,13,10,8,13,10,26,12,12,8,12,12,12,12,15,12,15,12,12,12,21,12,12,12,12,12,12,18,12,12,12,12,12,12,18,12,12,15,12,30,12,12,12,12,12,12,12,12,28,12,12,25,12,12,12,12,20,12,20,21,12,12,12,12,24,24,24,12,18,14,12,12,12,18,12,12,12,12,12,25,12,8,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,21,20,12,12,12,12,12,12,30,12,15,12,12,20,12,12,12,12,10,12,12,12,12,12,12,12,12,13,20,10,12,12,8,12,28,30,12,28,15,8,12,15,12,12,12,26,12,18,12,26,12,12,12,12,21,21,15,12,13,12,12,14,12,12,15,10,12,10,14,25,15,12,10,10,12,15,21,12,15,21,12,12,12,12,18,20,8,26,12,12,8,20,12,12,12,20,12,12,15,12,12,18,10,8,21,12,12,8,12,12,12,20,25,10,15,15,12,15,12,12,20,25,15,10,15,13,20,10,23,12,13,20,20,15,15,16,15,29,12,26,12,20,15,12,20,12,12,12,12,23,12,10,21,20,12,12,12,12,12,26,12,10,25,12,12,8,11,18,25,12,12,12,12,12,12,12,18,12,12,20,12,12,11,12,12,12,12,18,8,12,13,20,12,8,20,12,18,12,12,26,12,12,12,20,15,12,12,12,12,8,12,12,20,24,24,24,24,24,15,12,12,12,20,12,12,12,12,8,33,11,12,23,16,15,25,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,12,12,12,20,12,12,10,12,12,12,18,12,12,12,25,18,15,10,18,12,18,12,20,12,12,12,12,12,33,21,20,12,12,15,21,15,12,15,12,12,12,12,12,12,12,12,30,12,8,15,14,12,12,12,12,12,8,15,15,20,12,20,23,12,12,12,12,12,12,12,31,12,12,12,20,12,12,12,12,20,12,12,8,15,18,12,12,8,12,21,25,10,12,15,12,17,8,18,20,23,10,21,12,12,21,12,25,8,12,18,12,18,12,21,26,12,15,20,18,12,12,12,12,26,12,18,12,12,12,12,26,18,12,12,12,12,21,13,20,12,12,12,13,12,18,12,12,28,12,12,12,18,18,12,12,15,12,12,12,12,18,8,18,17,12,20,25,25,25,25,12,20,15,12,12,18,12,12,30,15,12,12,13,18,15,12,12,12,12,12,15,12,21,12,12,10,15,12,12,12,12,29,12,12,18,12,12,12,15,17,12,12,11,11,24,24,24,24,24,24,12,12,8,16,10,12,12,17,12,10,12,12,12,12,18,12,12,21,17,12,20,12,12,23,15,12,12,12,23,12,15,12,8,20,15,20,12,12,12,12,18,12,12,20,12,18,12,13,8,18,12,8,12,20,18,12,12,10,20,12,12,15,31,12,12,12,12,12,8,20,12,21,12,12,12,12,20,12,12,12,20,12,12,12,12,12,12,12,12,12,10,15,12,12,12,8,12,20,12,20,12,15,12,12,15,12,8,20,12,12,18,12,18,12,12,18,8,18,15,12,10,18,12,25,10,12,12,8,12,12,12,14,8,12,12,18,12,30,26,13,12,12,13,12,20,21,12,12,12,20,15,12,12,15,12,12,12,14,11,12,12,12,12,20,8,18,15,12,21,12,25,10,20,8,12,12,12,28,12,12,12,21,21,12,12,15,20,20,12,12,12,8,20,12,12,12,10,12,10,26,21,12,10,12,12,13,15,26,12,12,12,10,12,23,23,10,20,12,12,12,12,12,21,12,12,12,12,12,12,8,10,12,11,15,12,24,24,24,24,24,12,12,12,26,12,20,15,15,25,12,12,26,12,12,12,15,12,12,8,12,12,20,12,12,12,13,12,20,12,12,18,12,12,15,23,12,8,13,12,21,20,15,30,12,12,23,20,12,26,10,12,8,12,28,21,12,12,12,12,15,20,12,15,12,12,28,12,10,18,18,12,20,12,12,12,12,12,12,16,12,12,12,12,12,15,12,18,12,25,12,12,20,20,15,18,12,12,12,12,18,12,12,12,12,12,12,25,18,15,12,10,12,12,12,15,12,21,12,15,10,12,12,8,11,12,10,12,12,12,11,8,12,21,13,12,8,15,15,13,12,12,12,20,23,25,12,12,15,15,12,12,12,23,12,12,12,12,12,12,12,12,12,12,12,12,12,18,12,12,12,12,15,12,12,12,12,11,12,12,15,21,12,25,8,20,17,12,20,12,12,12,12,12,12,20,12,12,21,8,30,20,12,15,12,12,20,23,12,12,12,18,12,18,20,15,17,12,12,12,15,24,24,24,18,18,20,12,12,12,12,12,31,12,12,12,18,14,20,12,15,12,12,26,11,20,12,20,15,21,13,12,12,10,18,8,15,12,12,12,18,12,16,12,12,15,20,12,11,8,20,12,12,12,8,12,14,12,12,18,25,26,12,15,12,20,12,18,12,18,15,12,12,12,12,26,26,12,12,20,21,21,13,12,12,12,13,10,20,12,12,15,14,12,12,18,12,12,12,12,20,23,23,12,17,25,18,12,12,12,12,12,8,13,18,12,12,12,12,12,12,13,8,12,12,12,12,12,12,12,26,18,18,10,12,15,12,8,12,12,20,12,12,12,21,12,21,12,12,12,21,12,12,15,13,12,18,12,18,20,23,12,21,12,15,12,12,12,12,12,12,12,20,12,15,15,12,12,12,18,12,23,12,12,12,21,15,20,12,18,12,12,15,12,12,12,25,12,12,12,12,12,10,12,18,12,15,12,12,23,12,21,12,12,15,8,12,12,17,12,12,8,12,8,18,25,20,15,12,17,24,24,24,14,12,12,12,12,12,12,12,16,12,18,18,32,25,12,18,15,8,12,12,21,12,12,12,23,12,25,12,12,8,12,12,12,12,8,12,18,25,12,23,20,12,12,25,12,15,12,23,12,12,15,12,12,18,12,17,12,12,12,8,12,15,12,12,12,20,12,12,25,12,8,12,12,12,15,12,20,8,12,28,12,8,18,20,25,12,12,13,12,12,12,12,12,20,12,18,12,12,12,18,10,12,18,15,25,12,12,26,12,21,8,13,12,12,17,15,12,20,12,12,15,12,23,12,12,12,20,15,12,12,20,12,12,23,12,12,20,12,12,12,12,10,18,12,12,20,20,12,12,26,12,15,12,8,12,12,12,12,23,12,12,12,15,12,18,8,12,13,20,8,20,20,12,12,12,12,12,12,12,12,26,12,12,12,12,12,15,18,12,12,12,20,10,12,23,12,12,14,12,25,18,23,12,20,12,12,18,21,12,12,12,10,12,12,14,20,12,12,13,15,25,29,8,20,12,24,12,30,20,24,24,24,24,24,12,15,18,10,12,12,12,12,10,12,20,12,12,20,12,21,13,20,26,23,10,8,15,12,12,12,13,8,12,15,12,30,12,12,15,15,15,12,12,12,26,25,20,12,12,12,12,12,12,12,12,12,12,8,12,12,28,12,12,12,12,8,12,21,20,12,12,20,20,11,20,23,12,18,18,12,12,15,12,12,17,12,12,25,20,12,25,17,25,12,12,26,10,20,12,12,12,12,12,12,12,12,13,18,12,12,26,12,12,12,17,21,12,10,21,12,15,14,26,12,14,21,12,18,12,23,23,23,12,17,12,10,12,11,12,14,12,17,12,12,25,12,32,12,12,26,15,21,25,26,12,12,20,15,20,12,12,12,12,12,15,20,11,20,15,23,21,18,10,12,29,15,12,21,20,12,12,18,12,20,12,8,30,12,18,25,20,10,30,20,20,12,10,12,12,12,12,12,12,12,12,28,10,20,14,12,18,20,12,18,13,20,8,20,12,12,12,12,18,12,20,12,13,15,12,12,8,12,10,12,12,24,24,24,12,14,18,21,20,15,10,15,18,12,12,8,30,12,15,12,15,12,10,18,12,12,30,25,12,12,12,12,12,30,12,12,12,12,12,12,10,12,12,12,12,12,12,12,25,12,12,12,23,12,26,14,11,20,23,23,12,12,12,12,12,12,18,12,25,25,12,12,12,15,18,23,15,12,12,12,12,12,12,12,26,23,12,14,12,10,23,12,12,12,18,15,20,12,21,20,12,8,15,12,18,17,12,18,12,8,23,15,12,12,8,11,12,12,15,15,12,31,12,12,12,18,12,12,12,13,18,18,12,12,12,28,12,12,21,12,10,16,15,12,12,12,15,18,12,13,12,12,12,20,12,12,12,21,28,12,31,12,10,12,12,8,12,12,12,10,12,23,18,12,12,14,12,12,30,21,12,12,12,21,8,21,23,12,25,12,12,25,12,15,15,12,12,11,12,12,12,14,12,12,12,18,15,12,12,15,12,12,12,12,12,20,12,15,15,20,12,12,18,8,12,15,12,12,20,24,24,24,24,24,10,12,12,28,12,12,15,12,12,20,20,12,25,12,12,12,18,25,15,12,20,12,12,13,13,12,12,12,12,20,10,12,12,12,26,15,20,12,15,12,12,12,8,23,10,10,12,12,31,12,32,12,11,12,20,12,12,12,15,12,12,12,12,12,12,12,10,12,18,12,14,12,12,26,20,12,15,20,12,25,12,12,12,12,12,12,25,12,25,12,15,12,12,14,23,12,18,12,26,14,12,21,12,25,18,15,12,12,12,12,18,12,18,25,12,12,12,15,12,20,12,12,10,12,12,12,12,12,12,8,18,12,13,12,12,15,12,12,26,12,12,12,21,12,23,20,12,12,15,12,12,15,12,21,12,18,12,10,12,12,12,12,15,20,12,12,8,10,12,12,12,12,12,12,12,12,12,10,12,10,12,10,12,12,20,12,12,12,30,15,12,8,25,12,12,12,12,8,12,12,8,23,13,12,12,23,12,12,13,12,17,12,21,12,14,12,12,12,18,12,12,12,14,12,12,24,24,24,24,24,20,12,12,18,12,12,15,12,12,14,12,12,12,25,12,12,14,16,8,12,12,12,25,12,12,17,12,28,31,12,12,12,12,13,12,12,12,12,25,12,12,12,12,11,8,10,12,12,12,15,12,12,12,12,12,15,12,12,12,15,12,23,10,23,15,12,12,20,11,12,12,15,12,13,12,12,12,25,12,15,21,12,10,15,15,11,12,12,12,12,12,12,12,12,12,12,12,12,15,12,12,15,8,12,12,18,12,12,23,12,12,12,12,25,12,12,12,12,15,12,15,12,12,10,12,12,21,15,21,12,12,12,12,18,12,12,12,10,12,12,25,12,12,12,12,13,18,12,21,12,8,18,12,20,18,12,12,10,21,12,30,23,12,30,18,8,12,12,20,21,25,8,12,12,12,25,12,13,12,29,12,12,15,12,23,15,12,12,18,12,8,15,12,21,15,12,20,20,12,12,17,12,15,30,12,12,12,12,12,12,12,10,18,12,12,12,12,8,12,18,8,12,12,12,12,12,11,12,24,24,24,12,12,20,12,12,12,12,12,12,12,12,12,21,12,12,15,12,12,12,12,10,12,10,10,12,25,28,12,12,12,12,12,18,10,12,12,12,12,20,12,12,13,12,12,12,12,12,12,15,12,15,12,10,12,10,12,28,15,12,12,12,15,12,15,26,20,12,12,12,12,12,12,12,12,20,14,17,21,12,12,12,12,25,12,12,12,12,15,12,12,12,12,13,12,23,12,12,12,12,12,21,12,12,12,12,15,12,12,12,10,15,12,8,17,12,15,12,12,20,12,12,20,12,12,18,12,12,12,12,12,18,12,12,12,12,12,15,12,12,12,12,12,15,12,12,12,12,12,8,20,15,12,12,25,28,12,12,12,12,21,12,12,31,12,23,25,13,20,12,20,10,12,12,12,23,21,12,30,12,25,12,12,12,23,15,23,8,12,12,12,12,12,25,12,12,30,15,21,12,30,17,12,12,12,21,12,26,12,12,13,12,18,12,12,20,12,12,12,12,12,21,12,15,14,12,23,20,12,12,12,12,12,24,24,24,12,10,12,12,20,12,29,12,25,12,21,12,12,23,12,13,8,12,18,12,12,12,12,25,21,21,12,12,15,25,26,12,12,12,12,12,12,20,12,12,10,12,12,15,12,18,13,29,12,20,12,21,12,12,12,12,18,13,12,18,12,8,12,12,15,20,15,12,12,12,21,13,26,20,25,15,12,12,12,12,31,20,12,18,12,8,12,12,21,12,18,25,12,25,11,12,12,15,12,20,14,12,25,12,12,12,12,16,12,18,12,12,12,15,12,12,12,15,12,15,23,13,12,26,12,12,20,12,12,15,20,18,15,12,17,12,15,18,12,10,12,21,12,12,12,15,12,12,12,18,12,12,12,12,12,25,18,12,18,20,20,12,30,12,12,12,12,23,12,25,20,12,14,12,15,23,25,18,12,12,12,12,26,21,21,13,12,12,12,15,13,12,12,17,12,18,20,12,12,20,13,12,10,12,17,12,12,18,12,12,12,12,8,18,12,12,13,20,12,12,12,12,12,28,12,12,15,12,23,8,12,21,24,24,24,15,18,12,12,13,12,14,12,12,23,12,15,10,20,15,8,12,30,12,12,12,12,12,12,12,12,15,12,12,12,15,12,8,25,12,20,12,20,12,12,13,26,12,12,25,12,12,12,12,13,12,12,15,20,12,15,15,21,12,8,20,12,25,12,12,18,21,10,23,12,12,12,12,12,12,13,18,18,12,12,10,18,21,25,12,12,17,8,12,10,12,12,21,15,12,12,15,12,12,12,15,12,12,12,17,18,12,12,8,18,23,12,12,12,12,12,12,15,15,10,12,12,25,12,10,12,12,17,12,21,31,20,18,12,8,12,12,12,12,12,20,12,30,23,18,15,12,12,11,12,31,12,12,12,12,12,12,18,12,20,12,12,15,12,18,8,30,20,12,12,18,23,12,12,20,12,12,12,12,10,13,15,12,21,12,10,12,15,12,15,12,15,12,12,12,15,25,23,12,20,12,12,12,12,12,12,12,18,8,12,18,14,12,12,15,12,23,13,15,8,12,12,12,25,18,12,12,12,12,12,31,8,15,12,12,24,24,15,23,12,12,12,12,18,12,17,12,12,21,28,20,12,12,12,30,18,15,15,15,12,18,12,15,12,21,12,17,11,12,23,12,14,8,12,12,12,12,12,12,12,12,15,12,8,26,12,8,15,12,20,12,13,17,12,18,15,12,15,12,8,20,8,21,12,12,12,12,12,12,25,16,8,12,12,12,12,12,17,15,15,20,15,12,12,12,14,12,26,28,12,15,12,12,21,25,12,15,15,12,12,20,12,12,12,12,8,12,12,12,8,12,12,12,12,8,12,12,18,15,12,12,12,12,12,15,18,28,12,28,21,23,12,12,12,12,20,12,12,12,10,12,12,12,12,12,12,15,15,20,25,12,12,12,12,12,25,12,12,12,8,12,12,18,12,12,12,12,12,12,12,12,25,12,8,12,12,12,29,12,12,12,15,12,32,12,12,18,21,12,12,8,18,11,12,33,12,12,12,10,12,12,12,12,12,12,12,12,12,15,12,18,12,18,15,20,12,12,12,12,8,12,12,26,12,12,12,12,12,26,12,12,10,12,12,21,24,24,12,20,12,18,20,12,18,10,15,10,20,10,12,15,12,14,12,26,12,12,30,21,23,15,15,12,12,11,12,10,12,26,12,12,15,12,12,12,12,12,12,12,18,12,12,12,15,12,12,12,12,12,12,12,12,12,12,25,12,12,12,12,20,20,12,12,12,12,12,12,15,12,12,8,15,12,12,12,12,12,12,18,12,15,12,28,11,10,12,12,12,23,12,12,12,12,12,8,18,12,12,23,12,12,15,10,13,12,12,12,12,18,20,10,28,12,21,26,12,25,12,15,12,20,15,18,25,12,15,15,12,8,12,12,15,13,12,12,12,12,15,12,12,23,15,12,15,12,15,15,12,12,12,12,20,15,15,12,12,8,11,12,12,12,12,23,12,12,23,12,20,15,18,12,12,12,15,12,12,20,18,12,18,12,15,20,8,12,17,12,17,18,8,12,20,12,18,12,21,12,12,31,8,12,21,18,8,12,12,12,12,18,12,25,12,8,18,21,31,12,12,12,10,15,12,25,21,12,21,12,14,12,12,24,24,24,10,15,12,10,12,14,12,12,15,10,12,12,12,15,12,12,12,12,12,26,21,12,20,12,12,12,12,12,15,12,13,12,12,12,23,12,12,12,12,15,12,12,12,12,12,8,20,12,18,12,12,12,12,12,28,12,12,12,12,12,15,12,12,21,12,12,12,12,12,20,12,12,12,12,20,8,12,18,14,12,12,11,20,20,21,12,12,12,12,12,23,23,12,15,11,13,12,12,12,12,15,12,12,21,10,12,12,12,12,12,21,12,10,12,12,10,10,12,12,12,15,15,12,12,10,12,8,12,10,12,18,12,12,11,26,23,20,10,12,12,10,20,12,12,12,12,25,16,12,12,25,12,12,12,12,12,12,12,15,12,28,13,12,15,15,12,12,26,31,12,12,12,18,15,12,13,12,12,15,12,12,12,18,16,12,12,12,20,20,12,12,12,17,12,12,12,12,11,13,14,12,12,20,12,30,12,12,15,12,12,12,20,18,11,12,12,15,18,8,12,26,12,20,10,26,12,12,15,15,12,12,26,12,24,24,12,12,15,12,12,12,12,12,14,12,20,12,12,12,12,18,12,12,15,11,12,12,14,12,21,30,10,12,12,12,12,12,12,18,21,18,15,12,8,12,8,15,12,12,12,8,15,12,21,12,15,12,21,12,12,12,20,20,16,12,12,13,12,18,26,8,12,14,25,12,26,15,12,12,12,15,12,10,12,18,12,12,26,20,12,15,12,21,23,12,12,12,12,17,15,12,13,21,26,20,8,23,18,12,12,12,15,12,20,15,13,12,23,25,12,12,20,12,18,12,12,26,25,12,12,25,12,12,20,12,18,12,26,12,20,11,12,12,8,12,12,20,12,28,12,12,21,12,10,15,12,12,15,12,12,18,12,12,25,8,15,12,12,18,12,25,12,12,12,12,21,12,15,21,15,12,11,8,8,12,13,12,12,12,12,12,18,15,25,12,12,12,12,8,12,12,26,10,8,12,12,21,12,26,21,12,15,12,12,12,23,18,20,12,18,11,12,30,10,12,12,12,12,29,11,12,12,12,15,20,12,12,12,24,24,12,12,16,25,31,12,12,12,12,23,23,14,12,20,10,21,15,12,15,12,12,10,25,8,13,21,12,12,21,12,12,12,33,12,12,12,12,20,12,12,26,12,21,12,12,15,12,20,12,12,8,21,8,12,18,8,12,12,26,10,12,12,12,12,25,20,12,12,12,12,12,18,11,15,12,10,26,12,20,20,12,26,18,12,12,23,12,21,15,12,12,12,18,20,12,18,23,20,12,12,12,12,12,21,26,15,26,20,20,12,10,12,10,12,12,12,20,12,12,12,12,12,12,12,21,18,8,18,12,12,12,12,12,21,8,17,23,12,18,15,18,12,20,20,12,12,30,15,12,20,12,12,23,12,12,18,28,30,12,12,12,21,12,12,10,21,20,12,12,12,15,20,12,15,12,12,20,12,18,12,10,12,10,18,12,18,15,20,12,12,31,12,20,12,8,12,12,21,12,12,12,12,21,20,8,12,12,12,12,11,10,12,26,12,18,12,12,23,8,12,12,12,28,20,10,12,12,24,24,24,8,10,12,12,14,14,12,18,12,15,12,12,12,11,12,12,10,12,15,12,8,15,12,11,12,18,10,12,12,12,15,12,12,20,12,8,31,12,25,12,13,12,21,13,12,12,12,12,12,21,20,10,15,12,12,25,12,15,12,12,10,12,20,14,12,20,12,12,12,12,12,10,12,12,12,12,12,12,16,15,15,12,12,12,12,12,10,12,12,12,12,12,12,26,12,12,12,12,21,12,23,12,12,21,12,10,12,12,12,12,12,12,12,15,12,20,15,12,18,23,10,12,12,12,20,12,12,23,12,12,18,12,12,13,12,12,12,10,18,12,10,12,21,12,23,8,13,14,12,20,12,12,20,12,15,12,20,12,12,20,12,15,12,23,12,12,12,12,12,15,13,12,15,12,12,20,12,12,12,12,12,15,12,12,12,28,12,20,25,12,26,12,17,12,12,12,10,12,12,12,12,12,18,18,12,18,12,8,15,12,13,15,25,10,12,8,12,12,12,18,12,18,18,12,24,24,24,20,15,21,12,18,17,13,12,12,18,8,18,12,15,12,18,12,16,15,15,12,12,12,12,12,8,12,12,12,12,14,12,12,12,11,12,11,12,12,18,12,12,12,26,21,12,20,12,12,21,12,12,12,17,12,10,12,10,15,25,12,12,12,12,12,18,23,11,12,10,8,15,12,12,15,20,12,12,12,21,18,8,12,12,15,18,8,12,20,12,12,12,12,12,12,12,12,26,18,15,12,12,12,12,12,10,12,15,18,12,26,12,12,12,12,12,20,20,12,12,8,15,15,18,18,12,15,15,12,20,18,26,20,12,8,20,12,15,18,12,12,12,17,15,12,10,30,12,10,23,20,12,12,12,12,12,20,13,18,12,12,12,21,17,12,20,15,18,12,12,12,20,8,20,12,21,18,30,12,12,12,25,12,12,30,12,12,12,18,15,25,12,17,12,12,15,21,12,12,21,12,23,12,12,12,12,12,21,12,12,12,20,12,12,12,12,12,12,12,12,12,12,12,12,12,20,12,14,12,17,12,12,24,24,24,12,12,12,12,20,20,12,25,8,12,12,21,12,12,12,12,18,18,12,11,10,20,12,12,12,13,18,12,8,12,20,12,25,12,23,21,20,12,10,8,21,18,12,15,23,12,12,28,20,12,15,11,15,18,12,12,25,20,12,13,12,10,10,18,12,12,12,12,10,12,12,12,15,12,12,12,12,12,12,12,10,26,12,12,12,14,21,12,20,12,12,21,23,10,15,20,15,12,12,12,20,18,15,15,12,15,12,12,10,26,12,20,12,18,12,12,15,12,8,10,12,12,12,31,12,12,20,23,12,23,13,12,12,12,12,12,12,12,12,12,21,12,12,15,12,12,21,12,12,15,12,12,12,12,12,12,15,12,12,12,20,12,12,12,12,10,18,21,12,12,20,8,12,20,12,12,12,12,12,23,12,12,23,12,8,12,23,12,12,12,12,12,23,12,25,20,18,12,12,12,31,15,18,15,12,15,25,15,15,12,12,12,15,12,18,13,12,18,20,25,12,12,8,12,12,24,24,24,15,10,12,12,12,15,8,16,12,12,12,12,15,12,12,31,12,12,23,10,12,12,12,18,31,12,18,12,12,12,12,12,12,25,21,11,12,12,12,12,12,12,18,12,12,12,12,11,12,15,18,12,12,12,23,26,12,12,12,12,12,12,15,18,25,15,12,12,20,12,8,18,12,15,20,12,12,25,12,8,12,15,12,24,8,12,8,12,15,20,12,12,12,8,20,12,12,12,23,12,11,12,12,12,25,15,14,12,15,12,20,12,12,18,10,12,25,12,21,20,10,12,12,10,21,12,12,21,12,8,12,12,12,12,12,8,15,18,12,20,17,12,12,12,12,12,20,25,10,23,21,12,26,12,18,18,12,25,25,12,26,15,23,12,12,12,17,12,12,12,15,12,12,14,12,20,12,12,12,12,12,20,12,20,15,12,12,25,12,12,15,12,13,12,12,12,12,12,12,12,12,20,12,12,12,12,10,12,12,20,12,12,12,12,12,12,15,12,11,12,26,12,12,12,12,12,30,12,12,18,12,12,20,12,24,24,12,25,18,18,12,10,18,12,18,17,12,12,8,20,12,12,12,18,12,18,12,12,13,12,20,21,12,12,12,12,12,18,12,12,12,12,12,12,12,15,12,12,20,12,12,20,12,21,12,12,15,15,26,12,12,8,12,12,8,12,12,12,12,20,12,12,8,12,12,15,12,12,17,12,20,20,15,12,12,12,12,14,23,31,12,15,20,10,12,15,12,11,28,12,12,12,12,25,16,12,15,18,23,12,13,15,12,12,15,12,12,15,25,12,12,15,11,15,12,20,20,12,12,12,15,18,12,14,12,20,12,12,15,12,26,8,12,20,15,12,18,12,20,15,18,12,18,12,12,12,12,12,12,12,15,12,21,12,14,12,14,12,12,12,20,20,12,8,15,12,15,12,12,12,12,12,30,12,12,12,23,12,12,12,12,20,13,28,12,8,12,15,12,15,12,12,8,12,12,12,12,18,12,12,25,15,12,12,12,12,12,12,12,18,12,12,15,21,15,12,18,15,12,12,12,30,12,12,11,12,12,21,38,38],"timeDeltas":[51166,84,0,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,83,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,83,292,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,291,42,42,0,41,42,42,0,41,84,125,0,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,84,41,42,42,41,42,0,42,41,42,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,83,167,83,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,84,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,41,84,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,0,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,83,0,42,42,41,42,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,83,42,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,83,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,0,83,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,0,41,42,42,41,0,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,83,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,83,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,42,0,83,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0]} \ No newline at end of file diff --git a/bench-camelize.complex-2024-11-24_12-17-49.cpuprofile b/bench-camelize.complex-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..3cd8161 --- /dev/null +++ b/bench-camelize.complex-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,10,20,25,30,31]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":1,"children":[8],"positionTicks":[{"line":136,"ticks":1}]},{"id":8,"callFrame":{"functionName":"","scriptId":"258","url":"node:inspector","lineNumber":62,"columnNumber":38},"hitCount":0,"children":[9]},{"id":9,"callFrame":{"functionName":"#onMessage","scriptId":"258","url":"node:inspector","lineNumber":80,"columnNumber":12},"hitCount":1,"positionTicks":[{"line":82,"ticks":1}]},{"id":10,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":608,"children":[11,14,29],"positionTicks":[{"line":323,"ticks":3},{"line":292,"ticks":33},{"line":314,"ticks":42},{"line":315,"ticks":114},{"line":297,"ticks":26},{"line":327,"ticks":43},{"line":316,"ticks":347}]},{"id":11,"callFrame":{"functionName":"H","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":254,"columnNumber":54},"hitCount":0,"children":[12]},{"id":12,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1702},"hitCount":0,"children":[13]},{"id":13,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":14,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":630,"children":[15,18],"positionTicks":[{"line":138,"ticks":6},{"line":302,"ticks":20},{"line":537,"ticks":8},{"line":250,"ticks":41},{"line":531,"ticks":4},{"line":301,"ticks":147},{"line":139,"ticks":41},{"line":530,"ticks":55},{"line":311,"ticks":170},{"line":308,"ticks":16},{"line":539,"ticks":11},{"line":309,"ticks":111}]},{"id":15,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":266,"children":[16,23],"positionTicks":[{"line":250,"ticks":266}]},{"id":16,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":203,"children":[17,27],"positionTicks":[{"line":139,"ticks":203}]},{"id":17,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1185,"positionTicks":[{"line":139,"ticks":1185}]},{"id":27,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":18,"children":[28],"positionTicks":[{"line":537,"ticks":18}]},{"id":28,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":114,"positionTicks":[{"line":530,"ticks":114}]},{"id":23,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":99,"positionTicks":[{"line":663,"ticks":1},{"line":665,"ticks":9},{"line":662,"ticks":7},{"line":668,"ticks":6},{"line":670,"ticks":4},{"line":666,"ticks":24},{"line":661,"ticks":32},{"line":669,"ticks":16}]},{"id":18,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1702},"hitCount":165,"children":[19,21],"positionTicks":[{"line":2,"ticks":165}]},{"id":19,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":15663,"positionTicks":[{"line":2,"ticks":15663}]},{"id":21,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":46,"children":[22],"positionTicks":[{"line":2,"ticks":46}]},{"id":22,"callFrame":{"functionName":"camelize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":727},"hitCount":133,"children":[24],"positionTicks":[{"line":2,"ticks":133}]},{"id":24,"callFrame":{"functionName":"get","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":586},"hitCount":252,"children":[26],"positionTicks":[{"line":2,"ticks":252}]},{"id":26,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":815},"hitCount":47,"positionTicks":[{"line":2,"ticks":47}]},{"id":29,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1702},"hitCount":3,"positionTicks":[{"line":2,"ticks":3}]},{"id":20,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":301},{"id":25,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":533},{"id":30,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":14,"positionTicks":[{"line":301,"ticks":14}]},{"id":31,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[32]},{"id":32,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[33]},{"id":33,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[34]},{"id":34,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[35]},{"id":35,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":2,"positionTicks":[{"line":136,"ticks":2}]}],"startTime":293062654501,"endTime":293063305126,"samples":[7,7,9,13,17,19,16,19,19,19,20,20,20,20,20,19,19,19,22,19,19,19,19,19,19,18,19,19,14,19,17,15,19,19,19,19,19,18,19,19,19,19,10,19,19,19,19,19,19,19,19,22,23,16,19,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,19,19,19,19,19,14,17,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,19,19,19,19,19,19,23,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,17,19,19,19,10,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,24,19,19,17,19,19,16,19,15,21,19,19,19,19,18,19,19,15,19,19,19,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,14,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,14,17,19,19,19,19,19,19,19,17,17,25,19,19,17,19,19,19,19,19,24,20,20,20,20,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,10,19,10,17,10,15,19,17,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,17,18,19,19,19,19,25,19,17,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,17,19,14,17,19,19,19,19,19,19,24,14,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,15,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,19,19,19,19,19,14,19,17,19,19,19,19,19,19,19,19,19,17,19,19,10,19,10,19,16,25,19,19,19,19,19,19,17,19,19,25,19,19,19,19,19,19,19,19,19,16,14,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,14,19,19,19,19,19,15,19,19,19,15,19,19,15,19,19,19,10,19,19,19,19,10,19,19,17,20,20,20,19,19,19,19,17,19,19,19,19,14,19,26,19,19,14,14,19,19,19,19,19,19,19,19,19,19,19,25,25,19,19,19,19,19,19,19,15,19,15,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,18,19,19,14,19,19,19,19,19,19,17,19,10,19,25,19,19,19,19,19,10,19,10,19,19,19,19,19,19,19,19,19,17,10,19,19,19,24,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,16,10,19,10,19,19,19,10,19,19,19,19,19,19,19,19,17,19,18,19,26,19,10,17,19,19,19,19,19,19,14,19,19,19,19,17,17,19,19,19,25,19,16,18,19,17,10,19,19,19,19,19,19,19,10,10,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,10,19,19,16,19,15,19,19,19,25,22,19,14,10,19,19,22,21,19,19,19,19,19,22,19,19,19,19,19,19,17,19,14,19,19,19,19,19,19,19,14,25,19,19,17,19,25,19,20,20,19,19,28,19,19,19,19,19,19,19,19,19,19,15,19,14,19,19,19,19,19,14,14,18,19,19,19,17,19,19,25,19,19,19,17,28,24,19,19,25,19,19,19,25,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,15,17,19,19,19,19,17,19,19,18,19,17,19,19,23,19,19,19,19,19,19,15,19,19,19,19,19,19,15,14,28,19,19,19,19,17,19,19,19,19,19,19,16,19,19,19,17,19,19,14,19,19,19,19,19,19,19,19,19,14,17,19,14,19,19,29,14,22,19,17,14,15,19,19,19,10,19,19,19,19,19,19,19,19,19,25,19,17,19,19,19,24,19,19,19,26,19,19,19,19,19,19,14,19,19,19,19,19,19,19,15,14,19,16,19,14,19,19,25,19,19,19,19,19,19,19,14,19,19,16,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,17,20,20,20,20,19,19,19,24,19,19,19,17,19,17,19,16,19,19,19,19,19,19,19,10,10,19,17,15,19,19,19,19,19,19,17,19,17,19,19,19,19,19,26,10,15,19,19,17,19,19,19,19,19,17,19,19,15,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,25,19,19,19,19,19,19,19,19,25,19,19,10,19,19,28,19,19,19,19,19,19,19,19,25,19,19,10,19,19,17,19,14,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,15,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,17,19,18,18,19,19,19,19,17,19,10,19,14,14,14,14,10,19,19,19,19,16,19,19,19,19,10,19,19,19,14,19,19,19,25,15,19,19,19,19,19,25,19,19,19,17,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,19,17,16,19,19,19,14,19,19,17,19,19,19,14,17,19,19,24,19,19,19,19,19,19,17,19,19,14,10,19,22,22,20,20,20,17,19,19,19,19,19,10,19,25,19,19,19,19,19,25,19,19,17,19,19,19,19,19,19,17,19,19,25,19,19,19,19,18,19,19,19,19,19,19,19,19,19,10,19,16,19,19,19,15,19,17,17,19,19,19,19,19,19,17,19,19,19,17,17,19,19,19,19,19,19,19,19,28,19,19,19,16,19,19,21,19,17,19,17,19,19,19,19,19,19,19,19,19,28,19,19,19,19,27,19,10,19,10,19,25,19,19,19,10,19,19,19,17,19,19,15,19,19,19,19,19,19,15,10,19,25,19,19,19,19,19,19,19,19,19,14,10,19,19,19,14,19,19,19,19,22,19,19,19,19,24,19,19,19,19,19,19,19,19,10,19,14,19,19,17,17,19,17,19,17,19,19,19,19,19,25,19,19,19,19,19,19,19,19,25,19,19,19,19,19,17,19,19,19,14,19,19,17,19,25,19,17,22,17,10,19,22,19,19,19,19,19,19,17,19,19,22,19,19,19,19,10,19,19,19,19,19,19,19,19,25,19,19,21,19,19,19,25,20,20,20,24,19,19,19,19,19,25,19,19,24,19,17,19,19,25,25,15,19,17,10,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,10,25,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,19,19,19,17,19,19,19,17,19,17,19,19,17,19,19,19,19,10,22,19,19,19,15,10,19,19,19,19,19,19,19,19,19,10,19,19,14,19,19,10,19,19,19,19,19,19,19,19,19,25,19,19,19,19,25,19,17,19,19,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,10,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,10,19,17,19,19,19,19,19,19,19,17,10,19,19,19,19,19,19,19,19,19,19,10,19,17,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,19,19,16,17,19,19,15,14,19,19,19,19,19,19,19,19,19,17,19,19,17,19,19,14,14,14,14,10,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,19,19,19,19,19,19,19,19,25,19,14,25,14,17,19,17,19,17,14,19,19,19,19,19,19,14,19,19,24,19,22,19,19,19,19,19,17,17,19,19,19,19,19,19,19,19,19,19,14,14,25,19,19,19,19,19,19,19,19,25,19,19,19,10,19,19,19,19,19,19,17,19,19,19,19,19,19,19,10,19,19,19,14,19,19,19,10,19,17,15,26,24,19,28,19,19,19,19,14,10,19,19,19,19,19,19,19,19,19,19,25,19,19,19,19,19,19,25,19,19,19,19,19,22,19,19,19,19,19,24,19,19,19,19,19,28,17,25,19,19,19,19,19,19,19,19,28,19,19,25,19,19,14,19,19,19,19,19,19,19,19,19,25,28,19,19,19,19,10,19,19,19,19,19,25,19,19,17,19,19,19,19,19,19,19,19,24,10,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,14,19,25,19,19,19,19,19,19,19,10,19,19,19,19,19,19,17,19,19,19,19,19,19,19,17,19,19,19,19,19,19,14,19,17,20,20,20,10,19,19,17,28,19,19,16,19,17,19,19,19,19,19,25,25,19,19,19,24,19,19,19,22,19,19,17,17,19,19,19,19,19,25,19,19,28,19,19,19,19,18,19,19,19,19,19,19,17,17,19,17,19,19,19,19,21,18,19,19,10,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,17,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,21,19,19,19,14,19,19,19,19,17,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,17,17,19,19,19,19,19,19,19,19,19,19,19,18,10,19,19,19,19,19,19,19,19,19,25,19,19,19,19,17,19,19,10,19,19,17,19,19,10,19,19,19,22,19,19,19,19,16,10,19,17,19,19,19,19,17,19,10,28,19,19,19,19,19,19,19,19,19,19,25,10,17,19,19,19,19,19,19,14,19,19,19,19,19,19,10,25,19,20,20,19,17,19,10,19,17,19,19,19,19,19,19,19,19,19,19,10,19,10,19,19,24,19,25,19,25,19,19,24,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,19,24,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,15,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,25,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,15,19,19,19,19,19,14,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,17,19,19,19,17,10,19,19,17,19,19,19,19,19,19,17,25,19,19,17,19,19,25,19,19,19,26,19,19,19,25,19,19,17,19,19,19,19,24,10,19,19,19,19,19,14,17,19,19,19,19,19,19,19,19,19,19,19,17,15,19,19,21,19,19,19,19,19,14,19,19,19,19,19,14,19,19,24,19,25,19,25,14,25,19,17,19,19,19,19,19,10,20,20,19,19,19,19,19,19,25,19,19,29,19,19,19,14,18,19,19,19,19,19,19,19,19,14,19,17,19,19,24,19,19,19,19,19,19,19,19,25,19,19,19,14,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,10,19,19,15,18,19,14,14,19,19,19,19,19,19,16,19,17,16,19,17,14,14,14,14,14,14,14,19,19,19,19,19,19,19,19,19,22,19,19,10,25,19,19,19,19,17,19,16,19,19,19,19,19,18,19,14,14,25,23,19,19,19,28,19,19,19,19,19,19,19,14,17,17,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,14,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,22,21,19,17,19,19,20,19,19,19,19,19,25,19,19,19,19,19,19,19,15,19,19,19,19,19,19,16,19,19,19,19,19,19,10,19,19,30,19,19,19,19,19,19,19,19,19,19,20,20,20,19,19,19,18,25,17,19,17,19,16,19,18,19,19,19,19,19,19,24,19,19,17,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,24,19,10,19,19,19,19,19,19,19,19,14,19,22,19,19,17,17,19,19,22,17,19,19,19,19,19,18,10,19,17,19,19,19,19,19,19,19,19,19,24,19,19,19,19,21,19,19,14,19,19,19,19,19,19,17,19,19,19,17,19,19,19,25,14,19,19,19,19,19,25,19,25,19,19,17,19,25,22,19,19,19,19,19,19,19,19,19,19,16,19,19,19,14,19,19,19,19,19,19,19,19,17,19,19,19,19,19,17,19,19,19,17,19,19,19,19,19,19,17,19,19,22,10,19,19,19,19,19,19,19,26,19,18,17,19,19,19,19,19,24,19,19,19,19,19,19,19,25,19,27,19,19,19,19,15,19,19,19,16,19,15,19,19,24,19,19,19,19,17,19,22,19,19,19,24,19,19,20,20,20,19,19,19,19,10,19,15,19,19,17,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,14,19,19,19,19,19,19,19,19,19,19,10,19,25,19,19,19,19,18,19,19,22,19,19,19,19,19,19,19,17,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,17,19,19,15,10,19,19,10,19,19,19,19,19,19,19,10,19,19,19,23,19,19,19,19,19,19,23,19,17,19,16,24,19,19,19,19,10,19,19,19,19,19,19,19,19,23,19,19,19,19,19,19,19,10,10,19,19,19,17,19,19,19,25,19,19,19,24,19,10,19,15,19,19,19,19,25,19,19,19,19,19,19,19,15,19,17,10,19,17,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,10,19,10,19,19,19,19,15,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,20,20,20,25,19,22,19,19,24,28,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,25,19,19,19,17,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,19,24,19,19,19,19,19,19,19,19,19,19,25,19,19,10,17,19,10,19,19,19,18,19,19,19,17,14,19,19,20,19,19,19,24,19,19,19,19,25,16,19,19,17,19,19,19,19,19,15,19,19,19,19,15,19,14,19,19,22,19,19,19,17,25,19,17,19,19,25,16,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,25,19,19,19,19,19,19,19,17,19,17,19,19,19,19,17,17,17,19,19,15,19,15,19,14,14,19,19,17,19,19,22,19,10,19,19,19,19,19,10,10,19,19,14,19,19,16,14,19,19,19,19,10,19,19,19,16,19,10,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,17,19,14,19,19,20,20,20,19,19,25,19,19,19,19,19,19,19,19,17,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,24,19,19,19,19,16,16,19,24,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,24,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,25,19,19,17,19,19,19,22,19,19,19,19,19,19,19,19,19,19,19,19,19,10,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,10,19,24,17,19,19,19,24,19,19,19,25,19,19,19,19,19,19,19,19,17,19,16,19,23,18,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,19,19,25,19,19,19,19,19,19,10,19,19,15,19,17,19,19,10,19,19,19,19,19,19,19,19,24,25,19,19,20,20,25,25,19,19,14,19,19,19,19,24,19,19,25,19,19,17,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,28,19,19,19,19,19,25,19,19,19,19,19,17,19,19,19,19,19,17,19,19,17,10,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,16,16,19,17,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,23,14,19,19,19,19,19,18,19,19,22,14,19,17,17,14,10,15,19,16,19,19,19,19,19,19,19,19,14,19,19,19,19,19,28,19,19,19,15,19,19,17,19,14,19,14,14,14,14,14,14,14,14,19,16,19,17,19,19,19,19,19,19,19,19,24,15,19,19,23,19,19,19,19,19,17,18,19,19,19,16,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,10,19,19,14,19,19,19,22,19,19,19,25,19,14,19,19,19,19,19,19,16,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,22,19,19,19,10,19,25,19,19,19,19,19,19,19,19,20,20,20,19,19,19,19,19,19,19,19,19,19,16,19,19,19,19,19,19,19,19,19,19,10,19,17,10,19,19,19,25,10,19,19,19,19,17,19,23,10,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,15,14,19,19,19,19,25,22,14,19,19,19,19,17,17,19,19,19,19,19,10,19,19,19,19,17,17,19,19,19,19,10,10,17,19,19,19,19,19,19,19,19,17,19,14,19,28,19,19,25,19,19,19,19,19,17,19,19,19,19,19,19,24,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,16,19,17,19,19,19,24,19,19,19,19,24,19,19,19,10,25,19,14,19,19,19,19,19,19,19,19,19,16,19,10,19,19,19,19,19,14,19,28,19,14,19,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,19,25,19,19,19,19,19,19,19,19,19,17,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,19,19,17,14,22,19,19,17,17,19,19,19,19,17,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,17,14,19,19,19,19,17,19,19,19,19,19,19,19,25,19,17,19,19,16,19,19,16,18,19,19,14,19,19,15,24,19,19,19,25,19,17,10,10,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,25,19,19,19,19,19,19,14,10,19,17,19,19,19,19,10,19,16,19,19,10,17,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,19,14,19,19,19,19,19,19,19,17,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,10,19,19,19,20,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,28,19,25,19,19,25,19,19,30,19,19,19,19,17,19,17,25,19,19,19,19,19,19,19,19,18,19,10,19,19,19,19,19,19,19,19,10,19,24,19,19,17,19,19,19,19,19,14,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,19,19,19,19,19,19,10,17,19,19,17,22,19,25,19,19,19,19,17,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,17,19,24,19,19,19,19,17,18,19,19,19,19,19,25,19,22,19,19,19,19,19,19,19,19,19,17,19,19,19,10,19,19,15,19,19,19,25,19,19,19,19,19,17,19,19,19,19,19,19,25,19,19,19,19,19,17,19,19,19,19,19,10,19,19,18,19,19,19,19,19,19,14,19,19,19,19,19,19,19,10,19,17,19,17,19,19,19,19,19,10,19,19,19,14,19,19,19,19,19,23,19,19,19,19,19,19,25,25,19,17,19,19,15,19,19,19,19,19,19,19,19,19,17,19,25,24,17,17,19,19,19,19,19,19,14,14,19,19,17,19,19,19,25,19,23,19,16,17,19,19,24,19,19,19,19,28,19,19,19,19,25,19,19,19,16,19,19,19,19,19,14,19,17,19,25,19,28,19,19,15,19,19,19,19,19,17,19,19,14,19,19,19,19,19,19,19,19,19,20,20,20,20,20,19,19,19,19,19,19,19,19,19,17,19,21,19,19,19,19,16,21,19,19,19,17,19,19,10,19,19,19,19,17,19,19,25,19,17,19,19,25,14,19,19,21,19,19,19,15,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,17,19,19,19,16,19,19,19,19,17,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,24,19,16,14,19,19,19,19,19,19,19,19,19,19,19,25,19,19,25,19,17,19,19,19,19,19,19,19,19,19,19,25,17,19,19,14,19,18,14,19,17,14,19,19,19,19,19,19,19,25,19,26,19,19,23,19,19,19,20,20,20,20,10,19,19,19,19,10,19,19,19,19,16,19,19,19,19,10,19,19,19,17,19,19,27,17,19,10,19,17,19,19,19,19,19,19,19,19,19,19,19,10,21,19,19,17,10,19,19,19,19,19,19,26,19,19,23,17,19,19,19,19,19,19,19,19,28,19,19,15,14,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,17,19,19,19,19,19,10,19,19,19,14,19,19,17,19,19,25,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,17,19,19,19,19,17,19,19,19,19,25,19,19,19,19,19,24,25,19,19,19,19,19,19,16,17,15,15,19,19,14,19,19,17,19,19,19,19,25,19,17,19,19,19,19,19,19,19,19,19,19,19,26,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,25,19,19,17,19,19,19,10,25,19,17,19,10,19,19,17,19,19,19,22,19,17,19,19,10,19,19,19,19,19,19,19,19,20,20,20,20,20,19,19,15,19,19,15,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,28,19,14,19,19,19,14,22,24,19,19,25,19,10,19,19,17,19,18,28,19,19,17,19,19,19,19,19,19,19,19,19,19,17,19,21,19,15,19,19,19,19,25,17,19,19,19,19,21,24,19,17,19,19,19,19,19,19,19,25,19,19,18,18,25,14,19,25,14,19,19,19,19,24,19,19,19,19,19,14,19,19,28,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,21,19,19,19,19,19,15,19,19,19,19,19,19,19,19,19,19,10,10,19,19,19,19,19,19,19,19,19,17,19,19,19,17,16,19,14,14,19,19,19,19,17,15,19,19,19,19,19,10,19,19,18,19,19,19,19,19,21,19,19,19,19,19,19,19,19,19,19,19,19,14,19,10,19,19,19,19,10,14,19,16,19,24,19,19,19,19,19,17,19,19,19,17,19,19,19,19,19,19,19,10,20,20,20,19,19,19,19,19,19,19,10,19,19,14,19,17,17,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,19,19,10,28,19,19,19,19,14,18,14,15,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,28,19,14,19,14,19,19,19,14,19,19,17,19,17,19,24,19,19,19,19,19,19,19,19,19,10,19,19,16,19,19,19,24,19,19,19,19,19,19,10,19,19,16,19,19,19,19,22,19,24,19,18,19,25,19,19,19,19,19,19,19,28,19,19,19,19,19,19,19,19,19,17,19,17,19,17,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,21,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,14,24,19,19,19,14,19,24,19,20,20,20,19,19,25,19,19,26,24,19,22,14,19,19,28,19,19,19,19,19,15,19,19,19,19,22,19,19,19,19,19,19,19,19,19,19,19,15,17,19,14,15,19,19,19,14,19,19,19,17,15,19,10,19,25,19,19,19,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,17,17,19,10,19,19,19,19,19,14,14,14,14,14,14,14,14,14,14,14,14,19,19,21,18,19,19,19,19,19,19,19,19,19,19,19,19,16,17,17,19,19,19,19,19,10,19,19,17,24,19,19,19,19,19,19,19,19,19,16,19,19,19,19,19,19,19,17,19,28,19,19,19,14,19,19,10,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,18,19,19,14,17,25,19,19,19,19,25,19,19,30,19,19,17,19,19,17,19,19,19,17,19,19,19,19,19,19,19,25,19,14,19,17,19,25,19,19,18,17,26,19,19,19,19,15,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,17,24,19,19,19,17,18,19,19,19,20,20,20,24,19,19,20,19,17,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,17,22,17,19,19,19,19,17,19,17,10,19,10,19,19,19,19,19,19,19,19,19,19,19,28,19,14,19,28,19,19,28,19,10,19,19,19,19,19,19,19,15,19,19,19,19,15,19,19,19,19,19,10,19,28,19,19,19,19,19,19,19,19,19,19,14,19,14,10,24,19,19,19,19,10,18,19,24,19,19,19,19,14,19,19,18,19,25,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,17,19,19,19,19,14,19,19,19,14,23,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,24,17,19,22,17,19,19,24,10,19,19,19,19,19,19,25,22,19,19,19,14,19,19,19,19,10,19,19,19,19,19,19,19,19,10,19,19,19,19,17,19,19,19,25,19,19,19,19,19,19,19,23,19,19,19,19,19,10,19,14,19,19,19,19,24,19,19,19,19,19,14,19,19,19,19,19,24,19,19,20,20,20,21,19,19,19,18,14,19,19,19,19,19,14,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,24,23,19,19,19,25,19,19,19,19,19,19,10,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,17,19,19,19,19,28,19,19,19,17,19,19,19,19,10,19,19,19,15,19,18,19,19,19,17,19,19,19,19,19,19,28,19,19,19,14,19,14,10,19,19,19,19,19,19,19,19,14,16,19,19,10,19,19,19,19,19,27,19,19,19,24,19,19,19,19,19,19,19,19,19,24,10,22,19,19,19,19,19,19,19,25,19,19,25,19,14,19,19,19,19,19,19,14,19,19,19,19,15,19,19,19,19,19,19,25,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,15,19,19,19,17,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,17,25,19,19,19,19,20,20,20,19,19,19,18,19,19,19,19,19,17,19,19,19,19,19,19,25,19,22,17,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,25,19,19,17,19,25,19,19,17,19,19,19,19,19,25,22,19,19,19,19,19,19,19,19,19,19,19,10,19,16,19,17,19,19,25,19,23,19,19,19,19,19,24,19,19,19,17,26,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,17,17,19,20,19,19,24,17,19,19,19,19,19,19,14,19,19,19,19,19,17,19,19,19,14,14,19,19,19,16,16,16,19,19,19,19,19,19,26,19,19,18,19,19,17,17,19,10,17,19,19,19,19,19,17,19,19,19,24,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,10,25,19,19,19,19,19,19,17,19,19,19,19,19,19,17,15,19,20,20,20,19,19,19,19,19,19,19,19,17,19,19,19,19,19,14,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,25,19,19,17,19,25,19,19,24,10,19,19,19,25,19,19,19,19,19,19,19,19,17,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,17,19,19,19,19,19,25,19,19,26,19,17,19,19,17,19,19,19,19,17,19,19,19,19,19,19,19,16,19,19,19,19,17,19,19,19,19,10,19,19,19,19,14,25,17,19,19,19,19,23,19,19,19,19,19,19,14,19,10,19,19,19,19,19,19,19,19,19,19,19,19,14,10,17,19,19,19,19,19,19,19,19,14,17,19,17,19,19,19,14,19,19,10,10,19,19,19,19,15,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,17,19,15,19,19,19,19,19,17,19,14,24,19,19,19,15,19,19,19,20,20,20,18,19,19,25,19,19,19,19,19,19,19,25,14,19,19,14,19,19,25,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,16,24,19,19,19,19,19,19,19,19,19,25,22,19,19,10,19,25,19,25,19,19,19,19,17,19,25,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,21,17,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,10,19,17,19,17,19,19,19,19,25,17,15,19,19,19,19,19,19,19,19,28,19,22,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,23,19,19,10,19,19,19,24,19,19,19,19,14,10,19,19,19,19,19,19,19,19,16,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,17,19,19,19,17,17,19,22,19,10,19,19,19,19,19,24,19,19,16,19,19,19,19,19,23,19,19,19,25,17,19,22,24,19,19,25,25,19,19,19,19,19,30,19,19,19,24,19,19,19,17,24,15,19,19,19,19,28,19,19,19,10,17,19,19,20,20,20,19,19,19,19,19,19,19,19,19,19,19,30,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,22,10,19,17,19,17,17,19,26,19,19,19,10,19,19,19,19,15,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,19,19,19,19,19,19,19,19,19,22,19,19,28,19,14,19,19,19,19,10,19,17,19,19,16,17,19,19,19,17,19,10,19,10,19,10,19,19,19,16,17,19,19,19,19,19,19,19,17,19,19,19,18,19,17,14,22,19,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,10,19,19,19,25,19,19,19,15,19,19,22,19,19,19,19,19,19,19,19,19,19,25,19,19,19,19,19,17,19,19,19,19,19,15,19,19,19,19,25,19,19,19,19,17,19,19,25,19,19,15,14,19,15,19,19,19,25,17,19,17,19,19,19,19,25,19,19,20,20,20,19,19,19,19,19,17,18,19,24,19,17,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,28,19,19,19,19,17,10,19,17,19,19,19,17,19,19,19,19,19,24,19,19,25,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,16,16,19,19,19,19,19,19,19,19,19,19,17,10,19,17,19,14,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,23,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,24,17,19,19,19,19,15,19,19,17,19,19,19,19,19,19,19,17,19,19,19,19,17,22,19,19,19,19,19,17,19,17,19,19,19,19,19,14,19,17,19,19,19,19,25,14,18,19,19,19,10,25,19,19,25,19,19,19,19,19,19,19,15,25,19,19,19,19,15,19,19,19,19,19,19,19,19,28,19,19,19,19,19,10,19,19,16,19,19,19,19,19,17,18,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,10,10,19,19,19,19,19,19,19,14,19,19,19,17,19,19,20,20,20,20,20,14,19,19,19,23,19,16,19,19,19,17,19,19,19,19,19,19,19,19,25,19,19,19,25,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,17,19,19,19,19,10,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,26,16,19,19,16,19,16,28,25,19,19,19,19,20,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,17,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,22,25,19,19,19,19,17,19,17,19,19,19,15,10,19,19,19,19,19,19,19,19,23,17,17,19,19,19,19,17,19,17,19,19,14,19,15,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,27,19,19,19,19,19,19,17,19,19,18,19,19,24,19,19,19,19,20,20,20,20,20,19,17,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,10,19,19,19,19,15,19,19,19,24,19,19,19,19,19,19,19,19,10,19,19,19,19,17,19,25,17,19,19,19,19,19,10,17,19,19,19,19,19,19,19,24,19,19,19,19,10,19,17,25,19,15,19,19,19,19,19,19,19,24,19,19,19,19,19,17,19,19,19,19,30,19,19,24,19,19,19,19,19,19,19,19,15,14,24,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,17,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,25,19,19,19,19,24,19,19,19,19,19,17,19,19,19,17,19,19,19,19,17,19,19,19,19,19,19,19,19,23,14,19,19,19,19,19,17,17,19,19,19,19,19,19,19,19,19,19,18,26,19,19,25,10,17,19,19,19,19,19,25,19,19,19,20,20,20,20,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,10,19,19,17,19,16,19,19,19,19,17,19,10,19,19,19,14,19,10,19,19,19,17,17,19,19,19,19,19,17,19,10,14,19,19,15,17,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,25,19,19,19,10,19,19,19,19,19,19,19,10,17,19,19,19,19,19,19,19,19,19,19,10,19,19,10,14,19,28,19,19,19,16,28,14,19,22,19,19,14,19,15,19,19,19,25,19,19,19,28,19,15,19,17,19,14,19,19,19,19,19,19,19,19,24,19,10,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,22,19,19,19,14,19,19,19,19,19,19,17,19,19,17,19,19,19,19,19,19,19,19,19,19,19,10,19,19,14,19,19,10,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,17,19,20,20,20,18,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,23,19,16,19,17,19,19,19,19,19,10,19,19,19,19,19,19,19,10,19,10,19,19,17,19,19,19,19,19,19,17,19,19,17,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,27,19,19,19,17,19,19,19,19,19,17,14,17,19,19,19,19,19,17,19,19,19,19,19,10,22,19,17,19,19,19,19,14,17,25,19,19,26,19,19,19,19,19,17,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,10,19,28,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,23,15,19,19,16,19,19,19,19,19,10,19,19,17,19,19,19,19,25,19,19,19,19,17,22,10,19,19,19,19,19,19,14,19,19,19,19,19,19,23,19,19,19,19,19,19,17,19,19,19,20,20,20,19,19,19,19,19,19,10,19,18,19,19,19,19,19,19,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,19,19,22,19,17,19,22,25,19,19,19,19,19,19,19,19,10,19,10,19,19,17,19,19,25,19,19,19,19,10,19,19,19,19,19,19,19,17,19,19,14,19,19,19,19,14,19,19,19,19,19,15,17,19,15,19,10,17,17,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,10,19,19,19,17,19,19,26,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,16,19,19,19,19,19,25,19,14,10,19,19,19,17,19,10,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,10,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,19,19,19,25,10,19,19,19,19,19,19,19,19,20,20,20,19,19,19,19,19,19,19,19,19,19,19,10,19,19,10,19,19,19,17,19,19,19,25,19,17,20,19,19,23,17,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,19,19,17,19,19,19,19,19,19,10,19,17,19,25,17,19,19,19,21,19,17,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,17,19,10,19,19,19,15,25,19,17,19,19,17,19,19,25,19,17,19,19,19,19,19,25,17,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,19,15,19,19,19,19,19,14,19,19,19,19,19,19,17,17,19,19,19,19,19,19,17,18,19,19,19,19,19,19,19,19,19,19,14,25,19,19,17,19,19,19,17,19,19,19,23,19,19,19,19,19,19,19,19,19,25,17,19,19,19,19,17,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,22,19,18,19,19,19,19,19,19,19,19,19,16,19,19,19,17,15,19,19,17,19,25,19,25,19,17,19,19,19,14,17,19,10,19,19,19,23,19,17,19,19,19,19,19,19,19,19,19,14,24,19,19,19,15,19,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,19,19,19,19,19,19,19,19,19,21,19,17,19,19,19,25,19,19,19,19,19,22,19,19,19,10,25,19,19,14,19,19,25,19,19,16,10,19,28,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,17,28,19,19,19,14,15,19,17,19,14,19,26,19,14,14,19,19,25,15,19,25,19,19,19,19,17,19,17,19,19,19,19,16,19,10,19,19,19,19,17,19,19,19,17,19,19,19,10,19,19,15,19,17,19,19,19,19,10,19,19,19,17,19,19,19,17,19,19,19,19,17,19,19,19,24,19,19,19,19,19,19,14,19,19,19,19,25,19,19,17,19,19,19,19,19,19,19,17,19,19,17,19,28,19,19,19,19,19,17,24,19,14,19,19,19,14,19,19,19,19,10,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,16,19,19,19,19,19,19,19,19,19,19,10,17,19,19,15,19,19,19,19,19,19,20,20,20,19,14,17,19,19,19,19,19,19,19,14,19,10,19,19,19,19,19,14,19,19,19,19,25,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,14,19,19,19,10,16,19,19,19,16,19,19,19,19,14,19,24,19,28,19,19,19,19,19,19,19,24,25,19,25,19,18,19,19,19,19,19,19,19,19,19,22,10,19,17,19,19,19,19,19,19,19,17,19,17,10,19,17,19,23,17,19,25,19,19,19,17,19,17,19,19,14,19,19,19,19,19,17,19,19,19,16,26,17,19,19,19,19,16,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,17,17,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,17,19,19,19,17,19,19,19,19,19,25,19,19,17,19,19,19,19,19,25,19,28,19,19,19,27,19,19,19,19,19,19,19,14,19,19,17,14,19,19,19,19,19,19,24,19,19,19,19,19,19,19,17,14,19,20,20,19,19,19,19,19,19,24,17,28,19,19,19,19,19,19,17,17,17,19,19,19,17,24,19,19,19,22,19,19,22,19,19,19,19,17,19,19,18,16,19,19,17,16,19,19,19,19,19,19,10,17,19,19,19,19,24,19,17,17,19,19,19,17,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,17,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,17,10,19,19,19,19,19,19,19,24,19,19,19,19,10,19,17,19,10,22,19,19,19,19,19,19,19,19,10,19,17,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,28,19,19,19,19,19,19,15,19,19,19,19,17,19,14,14,22,19,19,19,17,19,19,19,25,19,19,14,19,19,19,19,17,17,19,19,17,19,19,19,19,19,19,19,19,19,19,17,17,19,19,19,19,19,19,20,20,20,14,17,19,28,19,19,19,14,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,14,19,19,17,19,19,19,19,19,19,19,19,19,19,19,15,19,17,19,21,10,15,19,19,19,19,19,19,14,17,14,15,19,19,19,19,17,19,23,17,19,19,19,18,17,18,19,17,14,17,19,19,15,19,14,10,19,19,19,19,19,19,19,10,17,19,25,24,19,19,19,19,19,19,19,19,17,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,14,19,19,10,19,19,19,19,19,19,19,24,19,19,19,19,19,19,19,19,19,17,18,14,25,19,19,14,10,19,19,19,24,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,16,19,19,19,15,19,17,19,19,19,19,17,19,19,19,19,19,14,19,14,19,19,19,19,23,19,10,19,19,19,19,24,19,19,24,19,19,19,25,22,16,19,19,19,19,19,19,20,20,19,19,19,18,19,19,19,19,19,19,19,19,19,16,17,19,19,19,19,19,19,19,19,18,19,19,25,17,19,17,19,17,19,19,19,19,19,19,14,10,19,18,19,19,19,19,19,19,19,14,19,19,19,19,24,19,19,25,19,19,19,10,19,19,19,19,17,19,19,19,14,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,14,19,19,19,19,23,19,24,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,25,19,19,19,25,19,17,16,14,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,19,17,19,19,19,19,19,19,19,17,19,17,19,19,19,17,19,19,19,17,19,19,19,19,19,19,19,19,19,24,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,16,19,19,19,19,25,19,19,17,25,19,19,19,19,19,25,19,25,19,19,17,19,19,22,19,19,19,10,20,20,20,19,19,19,17,19,19,19,15,10,19,19,19,19,19,19,19,19,19,16,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,10,19,19,19,23,17,19,19,17,19,19,10,17,17,17,19,19,19,15,19,19,18,19,19,17,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,17,19,19,19,19,19,19,19,15,25,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,16,15,19,19,19,19,19,25,10,19,19,24,19,19,19,19,19,14,19,17,19,19,19,14,17,19,19,19,19,17,19,19,25,19,19,19,19,19,19,10,25,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,16,19,28,19,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,10,19,19,19,19,19,24,10,19,19,19,19,17,17,19,16,17,19,19,10,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,10,19,19,19,19,14,19,19,20,20,19,19,19,14,17,17,19,10,19,19,19,19,19,17,19,19,19,10,19,19,19,19,23,19,19,19,19,19,19,19,19,19,15,19,19,14,19,14,19,19,19,19,19,19,17,19,19,19,17,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,10,19,19,19,19,25,19,19,19,19,24,19,19,15,19,19,17,19,19,19,19,19,19,19,19,19,17,17,10,19,19,19,19,19,18,19,25,19,19,19,19,19,19,19,19,19,19,19,19,17,17,19,19,19,19,19,25,15,19,19,28,19,19,19,19,19,19,19,19,19,19,24,19,17,17,10,19,16,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,16,19,19,19,19,10,17,19,19,22,19,10,19,17,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,23,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,20,20,19,19,25,19,19,10,19,19,19,19,17,19,19,19,24,19,19,19,19,19,23,15,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,16,19,19,19,19,19,10,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,16,19,19,19,19,19,19,17,14,19,19,19,19,19,19,19,25,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,28,19,14,19,25,19,19,19,19,19,19,19,10,19,19,14,19,25,25,17,10,19,19,19,28,17,19,19,17,19,24,23,19,19,19,19,17,19,19,16,18,14,17,17,19,19,19,19,19,19,19,19,19,19,25,19,15,19,19,16,19,19,18,19,19,19,19,19,19,17,19,19,10,19,25,19,25,19,17,19,23,19,16,19,19,19,19,16,19,19,19,19,19,19,19,17,19,19,19,19,10,19,19,19,19,19,16,19,19,19,19,19,19,19,19,19,19,19,17,19,10,20,20,19,19,22,19,19,24,17,19,30,14,19,19,19,19,19,19,19,17,19,19,19,17,19,19,19,17,19,19,16,19,19,19,19,19,19,18,17,19,19,19,10,24,19,19,19,19,17,19,19,19,14,19,19,19,19,19,17,24,19,19,19,19,19,19,19,19,19,19,19,20,17,17,19,19,10,17,19,19,19,19,19,19,19,22,19,19,19,17,19,19,19,19,19,19,17,14,19,19,19,17,24,10,25,19,19,19,19,19,19,19,24,19,19,10,19,19,19,19,19,25,17,19,19,19,19,19,19,19,19,19,25,19,19,19,17,19,19,10,19,19,19,15,19,19,19,19,19,19,19,19,19,19,22,19,19,14,17,19,19,19,18,14,25,22,19,19,19,19,25,19,19,19,20,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,10,19,19,19,19,19,19,17,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,19,19,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,10,19,19,19,16,19,19,19,19,19,16,19,19,19,19,19,19,19,19,17,25,19,19,19,19,19,19,19,19,19,19,18,19,14,19,19,22,26,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,24,19,25,24,19,19,10,19,19,16,19,19,19,19,19,14,22,19,25,19,19,19,19,19,17,19,19,14,19,15,17,24,19,19,25,19,14,19,25,19,19,19,19,19,28,17,19,19,19,17,28,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,16,19,19,28,19,19,19,19,24,15,19,19,19,19,17,17,19,19,19,28,19,15,18,19,19,19,19,19,19,19,10,28,19,19,19,17,19,24,19,19,18,19,17,19,19,19,19,19,19,19,19,14,19,19,19,19,25,19,19,19,19,19,10,20,20,19,19,19,19,19,19,19,19,19,19,19,19,19,17,25,19,19,24,19,19,19,17,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,10,19,19,23,19,14,24,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,16,19,19,18,17,19,19,25,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,25,19,19,19,19,19,26,19,19,19,19,19,19,18,28,19,19,19,19,19,19,19,14,14,10,17,19,19,19,19,19,19,22,19,16,19,19,19,19,24,25,19,19,19,19,19,19,10,14,19,19,17,19,25,19,19,19,19,19,19,19,19,19,19,19,19,17,17,19,19,28,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,25,19,19,19,19,19,19,19,24,19,19,24,19,19,28,17,19,17,24,17,19,25,17,19,17,17,19,10,19,24,19,19,19,22,17,17,19,19,19,20,20,10,19,17,19,19,19,19,19,19,19,19,19,17,19,22,19,19,19,19,19,19,14,19,19,30,19,19,17,19,19,19,17,10,19,19,19,19,19,19,19,19,23,25,25,19,19,14,19,19,19,25,19,19,19,10,17,19,19,19,28,28,19,19,19,17,19,19,19,19,19,19,19,19,19,19,23,19,19,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,19,24,19,19,19,19,19,19,19,25,18,10,19,19,19,19,19,19,19,19,19,19,19,10,19,14,17,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,10,19,25,19,19,21,16,17,17,19,19,28,19,19,19,17,19,19,19,19,19,19,19,19,15,19,19,24,19,18,19,10,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,14,19,14,19,24,19,19,17,17,17,19,19,26,19,19,19,19,19,19,17,19,19,19,19,19,17,19,19,19,19,19,19,17,17,19,25,19,26,23,19,19,19,19,17,19,19,19,23,19,25,19,14,19,19,19,14,20,20,20,20,19,19,19,17,25,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,17,25,28,17,19,19,19,19,22,19,19,19,19,19,19,19,19,24,19,19,19,10,19,19,19,19,17,19,19,14,19,19,24,19,19,25,27,19,19,14,17,19,14,19,16,19,19,19,19,19,19,25,15,19,25,19,19,19,19,18,25,19,19,19,10,19,17,21,19,19,28,19,10,28,19,15,19,19,19,19,19,19,14,19,19,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,10,19,19,16,19,19,19,19,19,17,19,19,19,19,19,19,10,10,19,19,19,19,19,19,19,19,19,24,19,17,19,19,19,15,10,19,17,19,19,19,17,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,17,19,19,19,19,10,19,19,19,19,19,19,23,19,19,19,19,19,19,19,19,19,17,19,19,19,23,19,19,19,19,19,17,19,19,19,19,15,10,19,19,25,19,23,19,19,19,19,19,19,19,19,19,17,19,20,20,20,19,19,19,19,19,14,19,19,19,10,19,17,17,19,18,19,19,19,19,19,15,19,23,17,15,19,19,19,19,17,19,17,19,19,19,19,19,19,19,19,15,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,10,17,21,14,19,19,19,19,19,19,25,19,19,19,14,19,17,19,19,19,19,25,19,19,19,19,19,19,19,19,25,19,19,17,17,19,19,19,24,15,26,19,17,19,19,19,19,19,19,19,10,19,19,22,19,10,16,19,19,19,19,19,14,28,19,19,19,19,14,19,19,17,19,19,15,17,19,25,19,19,23,19,10,19,19,19,19,25,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,17,19,19,19,10,19,19,19,19,19,19,22,19,19,19,19,19,19,19,19,19,10,19,19,22,19,19,19,19,19,19,19,17,19,19,17,19,10,19,19,19,17,10,19,19,19,19,19,19,17,19,19,17,19,19,10,19,19,19,19,24,10,19,19,19,25,19,19,19,19,20,20,23,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,10,19,19,19,19,17,26,19,19,19,19,19,16,19,19,19,19,19,19,18,16,19,14,19,19,19,19,19,19,18,19,19,19,19,19,22,19,19,19,19,10,28,19,10,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,28,19,16,14,19,19,19,14,14,19,19,19,19,19,14,19,19,19,19,19,23,19,19,19,17,19,14,19,19,19,19,19,14,10,19,17,19,19,19,19,17,19,19,19,19,19,19,19,19,24,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,16,25,19,19,19,19,19,25,22,19,19,19,19,19,19,14,19,17,15,19,19,19,19,15,19,25,19,19,24,19,19,14,25,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,25,19,19,19,19,19,19,19,19,19,25,19,17,19,16,19,19,19,14,25,19,21,19,17,19,19,23,19,20,20,20,19,19,19,19,19,19,19,19,26,19,19,10,19,24,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,25,24,17,19,19,19,19,19,19,16,19,19,19,19,19,19,19,15,19,19,19,19,19,19,19,19,19,19,19,19,17,17,19,19,19,19,19,17,24,19,19,19,19,19,19,17,19,19,19,15,19,19,24,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,23,19,19,23,21,19,19,19,10,19,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,19,17,19,19,24,19,19,19,19,19,22,19,19,19,17,17,19,19,21,19,19,19,19,14,19,19,25,19,19,19,19,19,19,19,17,19,19,10,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,14,17,20,17,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,18,19,17,19,14,19,20,20,20,19,19,19,19,19,17,19,19,19,19,19,23,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,14,25,19,17,19,18,19,19,19,19,19,25,19,17,19,19,19,19,19,19,17,24,25,19,19,19,19,19,14,19,19,19,19,17,19,28,19,19,19,19,19,19,19,19,17,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,25,19,19,19,19,17,19,19,19,23,23,19,27,19,19,19,19,19,10,19,19,14,19,19,19,19,19,19,17,19,19,19,15,19,19,19,10,19,19,19,19,10,24,19,21,19,19,19,19,19,19,19,17,19,19,19,28,23,19,19,17,19,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,16,19,19,24,14,19,19,19,15,17,19,19,17,19,19,19,19,19,19,15,19,19,19,19,25,18,17,19,19,17,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,17,19,19,10,19,25,19,19,17,19,19,16,19,19,19,19,19,17,19,19,19,20,20,19,19,10,24,19,19,19,19,17,17,19,19,19,17,19,19,19,19,24,17,17,19,15,14,19,19,17,19,17,19,19,19,14,25,17,19,19,10,19,19,17,19,19,19,19,17,19,19,19,19,25,19,17,19,14,19,19,19,19,19,19,19,19,16,19,10,16,19,19,17,19,19,19,19,17,19,19,19,19,19,15,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,21,19,25,19,19,16,19,19,19,19,19,18,19,16,19,19,15,17,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,19,17,19,19,19,19,23,17,19,17,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,24,19,19,17,19,19,17,17,19,19,14,19,19,23,19,19,17,19,19,19,19,19,19,19,19,19,14,19,19,19,22,17,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,16,19,19,19,14,19,19,19,19,19,19,19,19,19,10,25,19,19,19,17,14,19,19,19,19,19,20,20,19,19,18,19,19,19,19,19,19,19,19,16,10,19,19,19,19,19,19,19,19,19,19,19,10,19,17,19,19,19,19,16,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,25,15,24,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,19,19,19,17,19,10,19,19,19,25,19,19,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,25,19,19,15,19,19,19,24,17,22,19,19,19,19,25,19,19,19,19,17,19,19,17,19,19,19,19,25,19,19,14,19,17,19,19,19,19,19,19,19,19,28,10,19,19,19,19,19,19,26,17,19,19,19,25,19,19,17,19,25,19,19,19,19,19,19,19,10,19,15,19,19,19,19,19,19,26,19,19,17,25,19,19,19,24,17,10,10,17,10,24,19,19,19,17,19,19,19,19,19,19,19,19,14,17,14,19,19,19,19,10,19,14,19,19,19,19,19,19,25,19,19,19,19,19,14,19,19,20,20,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,17,19,19,19,17,19,25,19,19,19,19,19,19,16,19,19,19,19,19,26,19,14,19,17,19,17,21,19,19,19,19,19,17,16,19,24,19,19,19,19,19,18,19,19,19,19,19,19,19,25,19,19,25,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,16,19,19,19,19,19,19,19,19,19,19,14,19,19,10,19,19,19,16,19,19,17,19,17,19,19,19,19,19,25,19,23,19,19,19,14,19,19,19,19,19,19,24,19,10,19,19,10,25,19,18,19,14,19,19,19,19,19,25,19,19,19,17,19,19,19,19,19,19,25,19,19,19,19,17,26,19,17,17,14,19,14,19,19,19,19,10,19,19,10,19,19,19,10,19,14,17,19,19,25,19,19,20,20,19,19,19,19,19,10,19,19,22,19,19,10,17,15,19,19,19,25,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,24,19,10,19,19,19,19,22,19,19,16,19,19,25,19,17,19,19,19,14,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,24,19,19,19,19,19,19,19,14,19,19,10,19,19,19,22,19,19,14,19,19,19,19,19,19,19,19,19,22,19,19,19,19,14,19,10,19,19,19,19,19,19,19,19,18,19,19,19,19,25,19,19,19,17,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,23,19,19,19,19,14,19,19,19,19,19,19,14,19,19,19,19,17,19,23,19,19,25,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,17,19,19,14,19,19,19,19,19,19,20,20,19,23,19,19,19,19,16,19,19,22,19,19,16,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,19,19,19,10,19,17,19,19,19,19,19,19,19,19,19,24,19,19,19,15,19,19,19,23,22,23,10,15,15,19,19,19,19,19,25,19,19,19,19,17,15,19,19,19,19,19,19,25,19,19,19,17,25,19,25,19,19,14,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,19,14,25,19,19,19,14,19,19,19,19,19,19,19,19,19,10,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,10,14,19,19,19,14,19,19,26,28,19,19,19,10,19,16,19,19,15,19,19,19,19,19,19,19,10,19,19,19,19,19,17,19,19,25,19,10,19,19,25,19,17,19,19,28,19,24,19,19,19,16,19,19,25,19,14,19,16,19,23,21,19,17,19,19,19,16,19,14,19,19,19,19,19,19,24,25,19,19,19,10,19,19,19,15,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,20,20,19,19,19,25,19,25,19,19,19,19,19,25,25,19,17,16,25,19,19,19,25,17,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,22,19,19,19,19,19,19,19,24,30,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,30,15,14,19,19,17,14,15,19,19,19,19,19,10,18,19,19,19,19,19,19,19,25,17,19,19,22,19,19,19,19,18,19,17,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,16,17,19,10,19,19,19,19,19,19,19,19,19,24,17,19,24,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,25,19,19,19,23,19,19,15,19,19,19,19,19,19,17,19,19,15,19,19,19,19,19,24,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,23,19,19,19,19,19,19,19,19,19,19,19,19,20,20,19,19,19,19,17,17,24,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,18,19,25,19,19,25,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,16,19,19,10,17,19,22,19,19,19,19,19,19,14,10,19,19,10,19,19,19,17,19,19,25,17,19,19,17,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,10,17,19,14,18,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,30,19,14,19,19,19,19,18,19,19,19,19,19,19,17,19,26,19,19,19,19,19,19,19,25,19,19,10,14,19,19,19,19,19,19,19,10,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,14,19,20,20,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,16,19,21,19,25,19,19,19,19,19,19,19,19,19,17,19,19,17,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,17,10,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,28,19,17,19,19,19,19,19,19,25,19,26,19,19,19,19,19,19,25,19,17,19,19,14,19,19,19,19,18,19,25,19,17,19,19,19,19,19,14,16,19,19,23,14,19,19,16,14,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,15,19,17,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,10,15,19,19,19,19,19,14,19,10,19,16,19,15,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,14,19,19,19,19,19,19,17,18,19,14,19,19,17,19,19,19,19,19,19,18,19,19,16,19,20,20,19,19,21,17,28,19,19,19,25,19,19,19,19,19,19,19,19,10,19,14,19,14,19,19,25,19,19,19,19,19,19,17,25,19,19,19,19,19,19,19,17,16,17,17,19,25,19,19,25,19,19,19,19,25,19,19,19,19,19,19,19,19,19,17,19,24,19,19,19,28,19,18,19,16,17,19,19,19,19,19,17,19,19,19,28,19,19,19,19,19,19,19,25,22,17,19,22,25,19,19,19,19,19,19,19,19,19,19,19,19,19,28,19,19,17,19,19,19,14,15,19,19,19,19,19,19,19,18,17,19,17,19,19,10,19,19,19,19,19,19,24,19,19,19,17,26,19,25,19,17,19,19,19,10,19,19,19,19,19,17,19,19,19,19,14,10,19,25,19,19,19,19,25,17,19,19,19,19,19,19,14,19,19,19,10,19,19,19,19,25,19,14,17,19,19,19,17,19,19,16,14,19,16,25,19,25,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,17,24,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,20,20,19,19,19,19,19,19,24,19,19,19,19,19,19,23,16,19,19,10,19,19,15,25,19,19,19,25,19,19,19,19,19,17,19,19,17,19,19,19,19,19,19,24,19,19,10,19,19,19,19,19,25,10,14,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,15,19,19,19,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,17,19,19,19,19,19,26,19,24,19,19,19,19,19,24,19,19,19,19,19,19,19,19,25,19,10,14,19,19,19,16,25,19,19,19,17,19,17,10,19,19,19,24,19,19,15,19,19,19,19,19,19,19,19,19,19,19,10,19,15,19,19,14,19,19,17,19,27,19,19,19,18,19,19,14,19,10,19,19,16,19,19,17,19,14,19,19,28,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,19,19,19,19,19,19,19,19,19,18,19,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,18,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,28,19,17,19,19,19,19,10,14,19,19,19,19,19,19,19,19,19,17,19,19,19,14,15,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,16,19,19,19,19,19,19,19,17,17,15,19,10,19,19,19,19,19,19,19,19,19,19,14,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,16,25,19,19,19,19,19,19,14,19,19,19,19,19,17,25,19,19,19,19,19,19,19,10,18,19,19,19,10,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,27,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,28,19,19,19,19,25,19,14,19,27,19,19,19,19,17,19,20,20,19,19,19,19,14,19,19,19,10,19,19,19,19,19,19,19,19,17,19,19,17,19,19,19,19,19,10,19,19,19,19,19,19,26,23,19,14,19,19,19,19,19,19,19,19,19,25,19,24,17,19,14,19,19,19,19,17,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,14,19,19,19,10,19,21,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,25,19,19,17,19,19,19,28,19,17,19,19,24,19,18,19,19,15,19,19,17,19,19,19,19,19,19,28,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,10,19,19,19,19,19,19,17,19,10,19,19,19,19,19,19,19,19,19,23,19,19,16,19,19,19,14,19,19,19,10,19,19,19,19,19,19,10,19,18,19,17,19,19,19,19,19,19,19,19,19,28,19,19,19,19,19,17,17,19,19,19,15,19,19,19,19,19,19,29,19,19,19,19,19,19,17,19,19,19,19,19,17,19,20,20,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,23,19,17,19,19,19,19,10,19,19,19,25,25,19,19,19,19,19,19,19,19,19,19,17,19,19,19,14,19,19,19,19,19,19,19,18,19,19,19,19,10,19,19,19,19,19,19,10,19,19,19,19,19,17,10,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,17,19,19,19,19,19,14,14,19,19,19,19,19,25,19,19,19,19,10,19,19,19,10,19,19,24,19,19,19,19,19,19,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,15,22,15,19,17,19,19,19,19,19,19,19,19,19,19,19,19,15,17,19,17,19,19,19,25,19,19,19,19,19,19,19,19,19,19,23,19,23,19,19,19,26,19,19,19,19,19,19,10,24,19,18,19,19,19,19,25,19,10,19,19,19,17,19,19,19,24,19,19,19,19,17,24,17,19,19,19,19,19,19,16,19,19,19,19,19,19,10,17,18,19,19,19,19,19,20,20,25,24,19,17,19,19,22,14,19,19,19,19,19,19,17,10,19,19,19,19,19,19,19,19,19,16,19,19,17,19,17,19,19,19,14,19,19,19,25,24,19,19,17,10,19,19,19,19,19,19,19,19,19,19,19,17,28,18,19,19,19,28,17,19,19,19,19,19,19,19,23,19,19,19,19,19,19,17,17,19,19,19,28,19,19,14,19,19,19,19,19,19,19,19,19,24,19,19,19,19,19,19,22,19,19,19,16,17,19,19,19,19,19,19,19,19,17,19,14,19,19,19,19,19,17,19,19,19,16,19,15,19,19,19,17,19,19,10,19,19,19,23,19,19,19,19,23,19,24,19,19,19,19,17,19,25,19,25,17,14,17,19,19,19,19,19,10,19,19,19,19,19,19,19,16,19,19,19,19,19,14,17,10,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,15,19,19,19,19,10,19,19,19,19,19,17,19,19,17,19,19,19,19,19,19,19,19,17,19,19,19,10,19,19,25,20,20,19,17,19,19,19,14,19,19,19,10,19,19,19,19,19,19,19,18,19,19,14,28,19,19,19,28,25,19,17,19,19,19,19,19,19,19,16,10,14,19,19,19,19,19,19,17,16,17,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,17,21,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,22,19,19,19,17,17,19,19,22,19,19,19,19,19,19,19,19,19,19,19,19,19,19,23,19,19,19,17,19,19,19,19,19,19,15,19,19,14,19,19,19,19,10,19,19,19,19,19,19,19,10,19,19,19,19,19,22,19,19,19,19,19,19,19,19,19,19,14,19,19,16,19,19,19,19,19,19,25,19,10,19,19,19,19,19,19,14,19,19,19,19,24,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,18,19,19,19,19,14,25,19,19,10,10,19,20,15,19,19,19,19,14,17,19,19,19,19,19,19,25,19,20,20,19,17,19,25,19,19,19,19,25,18,15,19,14,19,19,19,19,19,19,19,17,19,19,25,19,19,19,19,19,23,19,19,19,19,10,19,14,17,19,19,19,19,27,16,19,26,19,19,19,19,19,19,19,19,15,25,19,19,19,25,30,19,10,22,19,25,19,25,19,19,19,19,19,19,19,22,14,19,19,19,19,14,19,19,14,19,23,25,19,18,19,19,25,15,19,19,19,19,19,19,19,16,19,19,19,19,19,19,19,19,14,22,19,19,19,19,19,17,19,19,18,19,19,19,19,22,14,19,19,19,19,19,16,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,17,19,19,10,26,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,27,19,14,16,19,14,19,19,19,19,19,19,19,25,19,19,19,18,19,15,19,19,19,25,19,19,10,19,19,19,19,19,19,19,19,17,19,19,17,19,19,19,26,25,16,25,19,25,19,19,19,20,20,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,17,19,19,19,19,19,17,25,19,19,19,19,19,19,19,19,19,14,26,19,19,19,19,19,19,19,25,19,19,19,15,19,19,19,17,19,14,19,19,19,19,19,15,19,19,15,19,25,26,19,17,10,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,10,19,19,19,25,19,19,19,19,15,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,28,19,19,19,19,19,19,19,19,19,19,19,19,24,17,19,19,23,19,18,19,19,19,24,19,19,19,19,19,15,19,19,19,17,19,19,19,19,19,19,19,15,19,25,19,28,19,19,19,17,19,19,19,19,25,15,19,19,17,16,19,24,19,19,21,19,27,19,17,19,19,22,19,14,15,19,19,19,17,16,19,19,19,17,19,19,19,25,19,19,26,19,19,19,17,25,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,20,20,19,19,17,19,17,17,19,10,19,15,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,14,15,24,19,17,19,19,19,19,19,19,19,10,14,19,19,19,19,19,19,15,19,19,17,27,19,15,19,19,16,19,19,19,14,15,19,19,18,19,19,19,17,19,19,19,19,19,19,19,17,19,19,19,25,19,19,17,25,23,19,19,19,19,19,19,19,19,19,19,17,19,19,15,19,19,19,15,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,17,19,19,19,19,19,10,19,19,19,19,14,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,16,19,19,24,19,19,19,19,19,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,19,19,17,19,19,19,14,19,19,19,19,19,19,19,19,24,24,19,19,19,19,19,19,19,19,19,19,25,19,19,19,17,20,20,17,19,19,17,17,19,19,19,19,19,19,16,19,24,19,17,19,19,25,19,19,10,19,19,19,19,19,17,19,17,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,17,22,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,14,19,19,25,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,10,10,19,19,19,19,19,19,19,19,19,19,28,14,10,19,19,17,19,19,19,24,19,19,19,19,22,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,25,19,19,19,19,19,14,19,19,10,14,19,19,17,10,19,19,10,19,19,19,19,19,19,19,19,19,19,19,15,25,19,19,19,19,14,19,22,19,19,19,15,19,19,19,19,17,19,17,19,25,19,25,25,19,19,19,19,19,19,15,19,19,19,10,19,18,19,17,19,19,19,14,19,19,19,19,19,19,25,19,19,20,20,19,19,19,19,10,17,19,23,19,19,28,25,25,17,19,19,19,17,19,19,25,19,19,19,10,17,19,19,17,19,19,19,19,19,19,17,19,19,19,19,19,16,17,19,19,19,25,19,19,25,16,14,16,19,19,19,19,17,19,19,19,14,19,19,19,19,19,25,19,19,19,19,16,19,19,19,19,10,19,19,15,19,19,19,19,19,19,19,19,19,19,19,28,19,19,19,17,19,19,19,19,27,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,14,19,19,19,10,10,19,19,14,19,19,19,19,19,18,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,25,19,10,19,19,19,19,19,10,19,19,17,19,19,17,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,17,19,10,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,17,19,19,17,19,19,19,19,19,19,10,19,10,19,17,19,19,19,19,24,17,19,17,19,19,20,20,25,19,19,19,19,19,19,19,19,14,19,19,19,10,19,19,19,19,19,19,19,19,10,19,19,19,14,19,24,19,19,19,19,19,19,10,22,19,19,19,19,19,19,19,22,19,17,15,19,10,19,19,10,19,19,19,24,19,10,18,19,19,19,19,19,19,25,17,24,16,19,25,19,19,19,19,19,14,19,19,19,19,19,26,19,19,19,19,19,19,23,19,19,19,19,19,10,19,21,17,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,14,17,14,19,19,19,19,19,10,19,19,19,25,19,10,19,14,19,19,19,19,19,19,19,19,19,19,10,17,19,25,10,19,19,19,22,19,18,19,19,19,19,19,25,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,25,19,19,19,10,19,25,19,17,19,19,19,25,19,19,19,28,25,19,19,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,23,17,19,18,19,19,19,25,19,18,19,10,20,20,19,19,19,25,19,19,23,19,19,19,10,25,19,15,19,19,24,19,19,19,19,19,19,19,19,19,19,19,19,17,23,19,19,19,15,17,19,24,19,19,19,22,19,19,19,19,19,19,19,10,19,19,25,19,17,19,19,10,19,19,19,19,19,19,25,19,19,10,19,19,19,19,19,19,14,19,19,19,25,19,19,19,19,19,19,19,19,17,19,17,19,19,19,15,25,19,19,19,25,19,19,19,19,19,19,19,19,19,28,17,17,19,19,19,19,16,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,10,19,19,19,19,19,10,17,23,19,19,19,19,24,19,19,19,19,19,10,19,19,19,10,19,19,19,19,22,19,10,19,19,19,19,19,19,19,19,19,19,27,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,14,19,19,19,15,19,19,19,19,19,19,19,19,25,19,14,19,19,10,19,19,19,16,19,19,19,19,19,19,14,19,20,20,19,19,19,19,19,19,17,19,19,18,19,19,19,19,19,16,19,19,19,28,19,19,19,19,19,19,19,19,19,19,19,19,19,17,25,19,19,19,19,19,19,19,19,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,16,19,19,19,19,17,18,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,16,19,14,19,19,19,17,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,15,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,22,19,19,19,19,19,23,19,19,19,19,19,19,19,15,17,14,19,19,17,19,19,19,19,19,14,19,19,24,19,19,19,28,28,19,19,19,19,19,19,17,17,19,19,19,19,24,19,19,19,10,10,19,19,17,19,19,19,19,23,19,19,19,19,19,19,19,19,19,19,17,19,19,17,17,28,19,14,19,17,19,19,10,19,19,17,17,19,19,19,19,19,19,19,19,14,19,19,19,19,16,19,14,19,19,19,19,19,10,25,19,18,19,19,19,19,19,19,19,19,19,10,19,19,19,19,14,19,22,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,17,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,19,17,25,19,19,19,19,19,19,19,19,19,19,19,19,17,10,19,19,19,19,19,19,19,16,19,17,17,17,19,19,19,19,19,19,15,19,19,19,19,19,19,19,19,15,17,19,20,20,19,19,25,19,19,10,18,19,19,19,17,19,19,19,19,19,19,14,19,19,19,22,19,19,15,19,19,17,28,19,19,19,19,19,19,19,19,19,19,19,22,19,19,17,14,17,19,19,19,14,19,19,19,19,19,19,19,19,30,19,17,17,19,19,19,19,19,19,19,19,19,19,17,10,17,19,21,19,19,10,25,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,24,19,14,19,19,19,25,17,19,19,19,19,24,19,19,22,25,19,19,19,19,17,25,14,19,19,17,19,19,19,19,10,19,19,18,19,19,19,19,19,19,19,19,24,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,19,19,19,19,19,19,19,19,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,19,19,19,20,19,19,19,17,19,19,19,10,19,19,19,19,19,23,17,19,19,19,17,19,24,19,19,30,19,19,19,19,19,19,19,17,25,19,19,19,19,17,19,19,19,19,15,19,19,19,15,19,20,20,19,19,19,14,19,19,19,19,19,19,19,17,19,19,22,19,19,19,19,19,19,19,25,19,19,19,25,17,15,19,17,19,19,19,19,19,19,17,19,19,10,19,24,19,19,19,19,14,14,19,19,19,28,25,19,19,28,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,14,19,19,19,19,19,24,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,14,10,19,19,19,17,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,17,19,19,19,19,19,14,19,17,15,19,19,19,19,18,19,15,19,19,19,19,17,25,19,19,19,14,19,19,24,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,10,19,19,19,19,22,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,17,15,21,19,19,19,19,19,19,17,19,19,19,18,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,23,19,19,17,17,19,19,20,20,16,19,19,19,19,19,21,19,19,19,19,10,19,19,19,17,19,19,19,19,19,19,22,19,19,19,19,19,16,15,19,19,19,19,19,24,18,19,19,19,25,17,19,17,19,25,19,19,19,19,15,19,19,19,19,19,19,17,10,19,19,19,25,25,19,10,19,19,19,19,19,19,14,19,19,19,19,19,19,18,19,19,19,19,19,15,19,19,17,14,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,17,19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,19,24,19,19,10,19,19,21,25,19,19,19,10,18,19,19,17,19,19,10,19,19,19,19,25,19,19,25,19,19,19,19,19,19,22,22,19,19,19,19,19,14,19,19,17,19,19,19,19,17,19,19,19,19,25,19,19,19,19,15,19,19,14,19,19,19,15,19,10,19,19,19,19,24,19,19,19,19,19,19,14,19,19,19,16,19,19,17,19,19,19,25,19,19,19,19,19,19,19,19,19,19,17,20,20,19,19,19,19,19,19,19,19,17,24,19,19,19,19,19,24,19,14,19,25,19,19,19,19,19,19,19,25,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,19,19,19,25,14,19,19,19,19,19,15,19,19,19,19,18,19,19,19,19,19,19,17,19,19,19,19,25,19,19,15,19,19,19,28,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,22,25,19,19,19,19,19,19,19,17,19,16,19,10,19,25,19,19,19,10,16,19,21,19,19,14,19,19,19,19,19,19,19,19,19,19,10,18,24,19,17,19,19,19,19,25,15,10,10,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,24,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,17,19,19,19,19,19,19,25,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,19,20,20,19,19,19,19,10,19,19,19,19,19,17,19,19,10,14,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,17,16,18,19,19,19,19,19,17,19,19,19,19,17,19,19,19,19,19,14,19,19,19,10,14,19,19,19,19,19,19,19,19,19,19,19,18,19,19,10,19,10,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,16,10,19,19,19,19,19,19,28,19,19,19,19,15,19,19,19,19,19,10,19,19,19,19,19,19,19,19,19,24,25,19,19,19,17,19,19,19,19,19,17,25,19,19,19,17,19,19,19,19,17,19,15,19,19,19,19,19,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,28,19,19,19,19,19,19,19,19,19,19,10,19,19,19,19,19,19,19,19,14,19,19,19,19,14,19,19,16,19,19,19,19,19,19,15,19,19,19,25,19,19,19,19,17,14,18,19,19,22,19,17,19,19,19,19,14,19,14,19,20,20,20,10,24,17,19,10,19,24,19,19,19,19,25,10,19,19,19,25,24,19,19,19,19,19,19,19,19,19,19,19,19,19,19,21,19,14,19,19,19,19,19,19,19,24,17,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,25,19,24,10,19,19,25,19,19,19,25,19,19,19,15,19,23,19,25,19,19,19,19,14,10,15,19,19,19,19,19,19,19,19,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,19,17,19,23,19,25,19,19,35,35],"timeDeltas":[71375,83,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,83,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,83,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,83,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,83,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,84,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,84,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,83,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,84,41,42,42,41,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,42,42,41,42,42,41,42,167,250,41,84,41,42,0,42,41,42,83,125,125,42,0,42,83,0,42,41,42,42,83,83,42,125,42,41,84,0,41,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,125,0,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,83,42,42,41,42,0,42,83,0,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,0,42,42,0,41,42,0,83,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,42,0,83,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42]} \ No newline at end of file diff --git a/bench-camelize.lowercaseFirst-2024-11-24_12-17-49.cpuprofile b/bench-camelize.lowercaseFirst-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..c4f3aa8 --- /dev/null +++ b/bench-camelize.lowercaseFirst-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,10,28,30,36,37]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":1,"children":[8],"positionTicks":[{"line":136,"ticks":1}]},{"id":8,"callFrame":{"functionName":"","scriptId":"258","url":"node:inspector","lineNumber":62,"columnNumber":38},"hitCount":0,"children":[9]},{"id":9,"callFrame":{"functionName":"#onMessage","scriptId":"258","url":"node:inspector","lineNumber":80,"columnNumber":12},"hitCount":1,"positionTicks":[{"line":82,"ticks":1}]},{"id":10,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":557,"children":[11,14,15,33],"positionTicks":[{"line":297,"ticks":21},{"line":323,"ticks":5},{"line":314,"ticks":40},{"line":292,"ticks":25},{"line":316,"ticks":333},{"line":327,"ticks":27},{"line":315,"ticks":106}]},{"id":11,"callFrame":{"functionName":"H","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":254,"columnNumber":54},"hitCount":0,"children":[12]},{"id":12,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1976},"hitCount":1,"children":[13],"positionTicks":[{"line":2,"ticks":1}]},{"id":13,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":14,"callFrame":{"functionName":"y","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":78,"columnNumber":10},"hitCount":1,"positionTicks":[{"line":98,"ticks":1}]},{"id":15,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":718,"children":[16,20],"positionTicks":[{"line":138,"ticks":5},{"line":537,"ticks":9},{"line":302,"ticks":18},{"line":530,"ticks":41},{"line":139,"ticks":21},{"line":250,"ticks":26},{"line":311,"ticks":144},{"line":531,"ticks":4},{"line":301,"ticks":157},{"line":309,"ticks":258},{"line":539,"ticks":11},{"line":308,"ticks":24}]},{"id":16,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1976},"hitCount":178,"children":[17,25],"positionTicks":[{"line":2,"ticks":178}]},{"id":17,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":13029,"children":[18,29,31,34],"positionTicks":[{"line":2,"ticks":13029}]},{"id":18,"callFrame":{"functionName":"","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":1413},"hitCount":1715,"children":[19],"positionTicks":[{"line":2,"ticks":1715}]},{"id":19,"callFrame":{"functionName":"capitalize","scriptId":"267","url":"file:///Users/airhorns/Code/superflected/src/capitalize.ts","lineNumber":1,"columnNumber":905},"hitCount":691,"positionTicks":[{"line":2,"ticks":691}]},{"id":29,"callFrame":{"functionName":"inflections","scriptId":"263","url":"file:///Users/airhorns/Code/superflected/src/Inflector.ts","lineNumber":1,"columnNumber":3413},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":31,"callFrame":{"functionName":"RegExp: ^(?:(?=a)b(?=\\b|[A-Z_])|\\w)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":145},{"id":34,"callFrame":{"functionName":"","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":1329},"hitCount":29,"positionTicks":[{"line":2,"ticks":29}]},{"id":25,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":48,"children":[27],"positionTicks":[{"line":2,"ticks":48}]},{"id":27,"callFrame":{"functionName":"camelize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":727},"hitCount":156,"children":[32],"positionTicks":[{"line":2,"ticks":156}]},{"id":32,"callFrame":{"functionName":"get","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":586},"hitCount":245,"children":[35],"positionTicks":[{"line":2,"ticks":245}]},{"id":35,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":815},"hitCount":39,"positionTicks":[{"line":2,"ticks":39}]},{"id":20,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":239,"children":[21,26],"positionTicks":[{"line":250,"ticks":238},{"line":139,"ticks":1}]},{"id":21,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":185,"children":[22,24],"positionTicks":[{"line":139,"ticks":185}]},{"id":22,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":14,"children":[23],"positionTicks":[{"line":537,"ticks":14}]},{"id":23,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":107,"positionTicks":[{"line":530,"ticks":107}]},{"id":24,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1136,"positionTicks":[{"line":139,"ticks":1136}]},{"id":26,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":96,"positionTicks":[{"line":668,"ticks":10},{"line":670,"ticks":10},{"line":662,"ticks":10},{"line":669,"ticks":13},{"line":663,"ticks":2},{"line":665,"ticks":5},{"line":666,"ticks":10},{"line":661,"ticks":36}]},{"id":33,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1976},"hitCount":13,"positionTicks":[{"line":2,"ticks":13}]},{"id":28,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":199},{"id":30,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":585},{"id":36,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":29,"positionTicks":[{"line":301,"ticks":29}]},{"id":37,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[38]},{"id":38,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[39]},{"id":39,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[40]},{"id":40,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":1,"children":[41],"positionTicks":[{"line":136,"ticks":1}]},{"id":41,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1,"positionTicks":[{"line":136,"ticks":1}]}],"startTime":293065012959,"endTime":293065623209,"samples":[7,7,9,12,13,14,17,19,10,23,17,17,15,18,17,17,17,18,17,17,17,17,24,25,17,17,17,17,26,17,17,17,17,18,17,17,18,18,18,17,17,17,17,18,18,18,17,17,17,17,27,24,17,10,17,18,24,17,23,17,17,18,28,28,28,28,28,10,17,17,29,17,17,17,18,30,19,19,17,17,26,17,26,17,17,24,17,30,17,27,17,17,17,17,17,17,24,17,17,24,20,17,18,10,17,24,24,17,31,17,24,17,17,17,17,18,17,17,24,18,30,30,30,30,17,17,17,17,17,31,17,19,17,17,18,17,17,17,24,15,17,17,17,18,17,18,18,17,17,18,17,17,17,18,17,17,10,17,17,17,10,18,17,17,17,15,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,10,17,19,17,17,17,23,17,17,10,32,24,17,17,30,18,18,17,30,17,10,17,17,32,17,17,17,17,18,15,24,17,17,17,18,24,17,17,17,17,26,17,18,18,17,18,17,17,30,17,17,17,18,17,17,17,24,17,17,17,17,18,17,17,27,33,33,18,16,17,17,19,17,17,17,18,30,10,19,17,18,15,19,15,17,17,17,34,17,17,17,17,17,18,17,17,17,18,17,17,17,18,17,17,17,27,17,10,21,17,17,17,17,17,17,17,10,17,17,17,17,18,17,18,17,35,17,17,17,17,17,17,28,28,28,28,17,17,17,17,17,17,19,17,10,17,17,17,17,17,17,17,17,17,24,17,17,24,17,17,18,16,18,30,17,17,31,17,17,17,17,17,30,15,17,17,17,17,17,17,27,20,17,17,17,17,23,17,15,19,23,17,17,17,17,17,18,17,30,17,21,17,17,17,17,17,24,15,15,24,17,17,17,17,18,17,34,17,30,17,17,17,17,17,32,17,20,17,30,17,17,17,17,17,17,15,17,18,24,17,17,24,17,17,17,24,17,17,17,17,24,17,20,30,17,17,17,15,18,17,17,17,17,17,17,17,18,17,17,17,10,17,17,10,24,17,17,17,23,17,18,17,15,17,17,17,17,17,19,17,30,17,15,17,17,17,17,17,17,17,15,17,17,17,10,17,17,17,17,17,17,19,17,15,15,17,27,31,21,17,17,32,18,17,17,19,24,15,17,17,17,17,17,23,19,17,17,17,24,17,16,17,10,17,18,30,18,15,17,17,17,17,17,17,17,17,17,17,30,34,17,17,18,17,17,10,17,18,17,17,18,16,24,24,10,17,24,17,17,26,17,17,17,17,10,18,17,15,15,17,17,32,17,28,28,28,28,30,15,17,20,24,17,17,17,17,26,17,17,24,17,19,18,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,24,18,20,17,17,30,17,17,17,17,17,17,17,15,24,10,18,17,17,18,32,17,17,17,26,17,17,18,17,24,24,23,17,30,17,19,17,17,17,17,24,24,16,24,15,17,18,24,24,17,17,17,17,17,17,17,19,17,17,17,17,17,15,15,17,17,17,17,16,17,17,34,17,18,17,17,17,10,17,17,10,17,18,17,17,17,18,17,17,24,17,15,17,17,25,17,17,17,30,17,17,17,10,18,20,22,24,17,17,17,17,17,26,15,17,17,17,17,17,17,17,10,17,17,17,17,15,17,17,17,18,15,17,17,17,17,17,34,17,17,24,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,18,18,17,17,17,17,17,17,17,17,30,17,17,17,18,17,17,24,17,17,19,10,17,17,18,17,17,17,24,17,17,17,17,17,17,17,17,10,21,17,17,17,24,17,17,17,17,18,17,19,17,18,10,17,17,17,17,17,17,17,17,17,17,18,28,28,17,17,17,17,32,17,17,17,17,15,15,15,25,17,17,24,18,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,32,17,17,10,17,17,17,17,21,18,17,18,18,17,17,17,24,24,17,17,17,17,17,17,17,18,17,17,24,17,24,17,24,17,17,19,18,17,10,17,17,17,17,17,18,17,17,17,17,15,17,17,17,17,17,17,23,35,17,17,17,19,17,18,17,18,17,17,18,24,17,17,17,30,17,18,17,17,17,17,17,17,32,17,18,17,17,17,17,32,19,17,17,17,17,17,17,17,18,17,19,18,18,16,18,17,17,17,17,18,17,17,16,17,19,17,17,30,17,17,17,18,17,17,17,17,24,17,17,10,18,27,24,17,17,19,17,17,17,20,17,17,17,17,17,24,17,17,18,18,22,17,17,17,17,17,17,18,17,24,18,17,18,17,17,31,17,17,10,17,24,19,19,17,17,31,17,17,19,17,21,19,17,17,17,17,17,17,19,19,17,17,18,17,17,17,18,20,17,17,24,19,17,19,24,17,19,15,24,17,17,17,17,17,17,17,28,28,17,17,17,17,19,17,17,17,17,15,18,17,10,15,25,16,17,18,17,21,17,17,32,17,17,17,17,18,18,17,17,17,18,18,17,17,17,17,17,32,17,17,17,17,18,17,17,17,20,17,18,17,17,17,17,17,17,30,23,17,17,17,17,17,23,17,24,17,15,19,17,17,17,18,18,18,18,17,17,10,17,17,19,17,23,17,17,17,17,18,17,17,17,24,20,17,23,17,17,17,18,24,17,17,30,16,17,18,17,15,24,17,17,17,19,17,17,17,30,30,30,10,17,17,17,19,17,18,17,17,24,17,17,25,17,17,17,17,17,17,17,21,30,18,31,18,17,27,24,36,15,15,15,17,17,19,17,24,17,20,18,17,21,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,26,17,10,17,17,17,17,17,17,10,17,17,27,19,19,17,17,17,17,21,17,19,17,17,17,34,17,17,16,24,18,24,17,17,17,17,18,17,17,24,17,18,18,18,17,17,17,10,17,17,17,20,17,24,18,17,17,10,17,18,18,17,17,26,17,17,10,17,17,17,10,17,17,17,18,17,28,28,28,17,17,17,24,17,17,17,18,16,27,17,17,17,30,32,30,17,18,17,32,17,19,17,19,17,17,17,17,17,17,17,10,17,17,26,15,36,18,17,30,17,30,17,17,17,10,17,18,17,17,30,17,10,17,17,17,17,17,17,17,17,17,18,15,17,17,24,17,17,17,17,17,30,17,24,17,17,18,17,17,17,17,24,15,17,10,17,17,17,17,17,17,17,17,19,17,17,17,17,30,10,19,24,24,19,24,15,17,18,17,17,30,24,35,17,15,17,10,17,18,18,17,17,17,17,17,17,17,17,30,17,15,17,20,17,17,17,30,17,19,17,18,17,17,17,10,17,24,17,17,17,17,17,17,17,18,36,30,18,17,17,36,17,24,17,32,19,17,18,30,17,17,20,17,18,17,10,17,17,32,17,17,17,17,17,17,18,17,17,17,17,17,17,15,17,17,17,17,30,16,17,17,31,24,17,18,18,24,18,18,17,18,17,17,32,17,18,31,24,17,19,17,17,17,17,17,17,17,17,17,17,17,19,17,19,17,24,18,17,17,24,17,18,18,17,17,17,17,24,17,17,27,28,28,17,19,15,17,17,20,18,17,17,24,17,17,17,17,18,17,17,24,20,17,17,18,18,32,17,17,17,30,17,17,17,24,18,17,19,18,17,18,17,17,17,17,17,17,17,17,17,17,19,18,24,27,17,18,26,15,17,17,17,10,17,30,17,17,27,17,17,17,17,24,17,17,10,17,17,17,18,19,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,10,18,17,30,17,17,17,17,17,17,17,24,15,17,17,17,21,17,24,17,19,17,17,17,24,17,17,17,10,24,17,18,18,17,17,17,17,24,19,32,17,19,18,18,19,17,17,17,17,10,20,15,18,17,17,17,24,17,17,21,17,17,17,17,17,24,17,17,30,17,17,17,17,15,17,17,17,18,18,17,17,17,17,17,17,15,17,17,35,17,17,17,18,17,24,17,18,17,17,17,17,24,24,17,17,17,17,17,18,17,17,17,24,30,17,17,17,30,17,17,17,24,17,16,17,17,17,17,18,19,18,18,17,10,17,24,17,17,18,18,10,18,17,17,15,17,17,17,17,15,15,15,15,17,24,19,28,28,28,24,17,17,17,17,17,15,17,17,26,17,17,16,17,17,17,18,17,17,17,17,17,17,18,17,18,17,17,17,18,24,32,18,17,17,17,17,17,17,15,17,17,32,32,24,17,21,17,25,17,17,24,17,19,17,18,17,16,19,17,30,16,17,17,17,18,17,17,17,17,17,17,36,17,24,15,17,17,17,17,18,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,18,30,17,17,34,17,17,17,17,18,17,17,17,17,17,17,17,18,17,24,17,18,17,10,30,17,17,30,16,17,19,17,17,17,21,24,17,26,17,18,17,17,17,17,15,17,15,17,18,19,20,17,15,17,17,17,17,17,17,17,17,17,24,17,17,17,18,18,17,24,17,24,17,17,30,17,17,17,17,19,30,23,17,18,17,17,17,24,30,17,17,17,17,17,24,17,17,17,17,30,17,17,18,17,18,17,18,18,17,17,17,17,17,17,17,17,17,27,17,17,17,17,24,19,17,17,24,17,15,17,19,17,17,17,17,17,17,17,18,27,17,31,17,17,18,17,17,17,31,17,18,18,10,28,28,17,17,17,17,17,17,18,15,17,17,17,17,17,20,17,17,17,17,17,19,18,17,17,17,17,18,17,17,18,17,22,17,24,17,18,17,26,17,22,17,21,19,17,17,17,17,17,17,17,17,27,18,17,17,17,17,15,17,10,15,10,18,30,18,17,24,17,17,17,18,17,17,17,17,24,19,19,18,18,17,17,16,18,17,17,17,17,17,17,17,17,24,17,17,17,30,17,32,24,30,17,21,17,18,17,17,17,17,19,17,18,19,17,17,30,30,17,17,17,24,17,18,17,17,10,17,17,17,17,17,17,17,19,19,18,17,17,17,17,17,35,17,18,17,17,17,24,15,17,17,10,15,17,15,10,18,18,17,17,30,17,17,30,17,17,15,17,17,17,15,17,17,17,19,10,17,10,10,17,17,17,17,17,10,27,18,17,17,17,17,18,18,18,17,17,15,17,17,18,23,17,32,10,10,17,10,17,17,18,17,17,17,30,17,10,17,31,17,17,17,17,17,17,17,17,17,17,17,17,17,32,24,16,19,17,17,17,20,15,10,17,20,17,19,17,24,15,31,17,24,17,17,17,17,24,18,28,28,28,30,17,27,17,17,17,15,17,24,17,17,17,17,17,17,30,17,32,17,17,17,17,26,10,17,17,17,17,17,18,17,17,10,10,17,17,17,23,17,17,17,18,17,30,18,24,17,18,17,32,17,17,17,17,17,17,17,17,17,24,17,18,18,16,17,24,17,17,17,30,17,17,17,17,17,17,17,24,17,17,32,24,24,17,17,31,24,10,17,17,17,17,17,24,30,17,30,17,17,17,20,30,17,23,17,17,17,17,17,17,17,18,17,31,30,17,17,17,30,17,19,17,17,18,30,24,17,18,10,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,30,17,17,17,30,17,17,17,30,17,15,17,17,17,17,17,30,17,17,17,10,17,10,17,17,17,17,17,17,17,10,17,15,18,30,17,17,17,17,15,17,17,17,17,17,16,30,17,24,17,17,35,17,17,17,20,25,17,20,18,17,17,17,18,17,17,26,17,18,17,24,21,17,17,30,18,17,18,17,17,17,17,24,17,19,32,17,17,17,17,17,17,17,17,17,31,17,17,24,17,17,17,27,17,17,17,17,17,28,28,28,17,10,17,17,17,17,17,18,18,17,17,17,17,17,15,17,17,17,17,31,19,24,17,18,17,30,17,10,34,17,17,17,18,17,24,19,17,17,17,17,17,17,17,17,31,15,15,17,18,19,15,17,24,15,17,17,17,18,17,17,17,17,17,17,18,17,17,19,17,17,17,18,17,18,17,18,30,17,17,30,17,17,23,17,17,17,24,19,17,10,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,18,17,17,18,17,16,30,17,19,19,17,19,17,17,17,17,17,30,17,19,17,17,24,18,17,17,17,21,24,17,17,15,15,15,15,15,17,10,17,18,18,17,17,24,17,15,30,24,17,17,17,17,17,32,20,17,17,17,17,17,27,17,17,17,20,17,17,15,17,27,24,17,17,17,10,17,17,24,17,17,17,17,17,17,24,18,17,17,17,17,17,16,17,15,17,18,17,17,15,17,17,17,19,30,17,18,17,15,32,17,17,17,17,18,17,30,17,17,17,17,19,19,19,19,17,16,30,17,17,17,17,17,24,24,17,17,17,16,18,17,24,25,32,17,17,17,17,17,17,17,17,17,17,28,28,28,18,19,17,17,31,10,18,17,17,17,17,17,24,19,30,19,30,17,24,17,17,17,18,17,30,17,18,24,17,17,17,17,17,19,17,17,17,17,19,17,18,17,17,17,18,24,17,24,17,17,17,17,30,17,24,18,15,18,17,24,17,17,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,18,20,17,17,17,17,19,17,17,18,17,17,17,18,18,17,17,20,17,17,17,17,17,17,23,17,18,18,17,30,17,23,17,15,17,17,24,17,17,35,15,17,17,17,17,17,17,17,17,10,24,17,16,17,17,31,17,24,17,19,17,10,17,17,17,17,17,17,17,17,17,30,16,17,17,17,10,17,17,17,17,17,34,17,17,24,17,17,19,17,17,17,17,20,27,19,17,17,19,17,18,24,17,10,17,17,16,24,17,17,17,17,17,17,21,15,17,19,17,17,17,10,17,30,24,19,17,17,24,17,17,17,17,18,17,17,17,18,17,17,17,18,17,17,17,24,17,17,18,17,17,17,17,18,16,21,10,21,17,17,17,17,17,19,17,17,17,17,17,17,17,10,17,36,17,17,17,17,17,17,28,28,30,17,17,17,17,17,17,17,17,17,17,17,32,17,15,17,15,20,17,17,17,17,20,17,17,18,30,24,16,17,19,17,19,17,15,17,18,17,17,17,17,17,17,17,24,17,17,27,24,17,24,17,24,18,10,17,17,17,17,17,15,18,17,17,10,17,15,17,17,17,17,17,17,17,17,10,18,30,24,17,17,17,17,17,17,17,17,17,19,17,24,17,17,19,17,17,17,18,17,30,17,17,24,17,17,19,17,17,17,17,24,17,17,30,10,17,17,17,17,17,19,17,24,17,15,17,17,18,17,17,17,17,20,17,17,18,30,17,17,17,17,17,17,18,17,18,17,17,10,24,17,17,17,17,17,24,17,10,18,17,17,17,30,30,17,17,17,17,19,17,24,17,17,17,10,17,17,17,32,17,17,17,17,18,17,17,17,23,17,17,17,17,17,17,30,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,15,17,17,17,18,17,17,17,17,19,17,17,17,17,19,17,17,31,17,23,17,17,17,17,17,17,17,17,31,17,17,17,17,15,17,32,17,17,17,32,17,17,17,28,28,28,18,19,18,17,17,17,17,24,17,17,18,17,17,24,15,17,17,17,17,17,15,17,17,30,24,18,18,18,32,18,18,17,17,30,18,24,24,17,17,17,17,17,10,17,17,17,23,15,17,17,17,17,25,17,17,17,17,17,18,17,17,17,18,23,17,17,17,17,17,17,17,30,17,17,24,24,17,17,19,17,19,17,30,17,17,18,17,17,17,17,17,15,17,17,19,17,17,17,17,24,18,17,24,17,17,15,17,17,24,24,24,17,17,17,17,20,19,17,17,17,20,18,19,17,10,15,17,18,17,17,17,17,17,10,17,18,17,36,17,17,18,17,10,17,17,17,17,17,17,24,24,17,16,15,20,15,17,10,17,17,35,17,17,17,17,17,17,17,16,17,10,17,17,17,17,17,17,17,17,17,17,30,17,10,17,17,15,19,17,17,17,18,17,17,17,19,17,21,21,17,17,10,24,17,21,17,30,17,17,17,17,17,32,17,17,30,31,17,17,17,17,17,17,24,17,17,17,17,18,17,17,30,17,18,17,17,17,17,17,18,17,17,17,17,24,24,17,20,17,24,10,17,17,10,19,17,17,15,21,10,20,17,18,10,17,17,17,24,17,17,17,17,17,17,17,17,17,28,28,17,19,17,19,17,24,17,18,17,17,17,15,27,17,17,17,15,17,30,17,10,17,17,17,17,17,17,19,17,17,17,33,17,17,17,18,17,17,17,17,17,17,17,17,17,24,17,17,17,24,18,17,18,17,19,17,17,24,17,21,17,24,30,15,19,17,17,17,30,17,17,17,17,18,10,17,17,17,18,17,18,17,17,17,17,17,17,17,17,27,19,17,18,17,17,17,18,17,24,18,17,24,17,30,18,24,30,26,17,18,17,17,17,17,17,17,18,30,17,17,30,19,17,17,17,15,17,17,17,17,17,17,17,21,17,17,15,24,27,18,17,20,17,17,17,17,17,17,17,20,17,17,15,24,17,17,17,17,17,17,19,17,17,19,17,17,17,17,17,17,17,30,17,17,17,18,17,17,24,19,17,18,31,17,17,33,17,18,18,17,18,17,17,17,30,30,17,17,17,17,17,17,15,17,24,24,17,17,17,17,31,27,18,18,20,19,17,30,17,17,17,17,17,17,17,17,10,17,17,17,17,32,18,17,10,22,10,17,17,18,17,17,21,17,17,17,17,17,18,17,17,10,24,18,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,30,30,17,19,17,30,30,24,15,17,19,17,28,28,17,17,17,17,19,17,17,17,17,10,17,17,17,17,17,17,15,18,17,17,17,17,17,17,21,17,19,18,17,17,17,18,18,17,17,17,17,18,17,17,17,17,17,17,31,17,17,17,17,17,21,17,17,19,17,17,24,16,17,17,10,17,17,17,17,18,17,17,17,17,17,17,17,18,17,17,17,17,17,17,15,19,17,22,17,17,18,17,17,17,17,17,19,18,17,17,36,24,17,19,17,24,17,17,17,17,17,17,18,17,17,17,17,17,20,17,17,18,34,17,20,17,17,24,21,17,17,17,17,17,17,17,17,16,17,18,17,17,17,17,24,18,18,17,17,18,30,17,15,17,24,17,32,17,17,15,17,18,24,17,17,10,18,27,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,30,19,17,17,15,20,19,17,17,17,17,17,27,17,17,17,30,17,19,17,18,15,17,17,24,17,17,17,19,17,17,10,17,17,17,10,17,25,17,18,15,17,17,15,18,17,17,21,17,15,17,17,17,17,17,17,17,24,17,17,18,17,17,17,10,17,17,17,17,24,17,17,17,17,17,17,15,15,15,15,15,15,15,15,15,17,17,17,17,24,24,15,24,17,17,17,25,20,18,17,17,17,18,17,17,17,17,17,32,17,24,10,17,20,17,28,28,28,17,17,17,18,17,18,17,17,17,17,17,30,17,17,18,10,10,18,17,27,10,17,17,17,17,17,17,17,17,32,17,18,17,21,17,19,17,18,17,17,17,19,17,17,17,17,17,17,17,17,17,30,19,17,17,17,18,24,15,17,31,17,17,17,24,17,17,17,15,31,17,17,19,32,24,17,17,17,17,17,19,18,17,30,17,17,10,17,24,17,20,18,17,17,17,17,17,24,17,18,19,18,17,19,17,17,17,17,17,17,15,17,17,17,17,17,18,15,17,32,30,17,17,17,17,17,17,24,17,17,17,10,17,17,35,17,17,17,30,17,19,15,17,17,17,10,17,32,27,17,17,17,15,20,17,17,23,24,17,10,19,17,17,17,17,17,24,19,17,17,17,18,17,17,17,17,18,17,17,35,17,10,32,17,17,17,17,17,17,17,17,10,17,17,30,30,17,27,24,17,17,19,17,10,24,17,18,17,17,18,17,17,18,17,10,17,17,17,17,20,15,17,17,20,21,17,17,24,17,17,17,17,17,17,17,17,17,30,10,15,24,17,18,20,17,17,24,17,18,17,18,18,24,28,28,28,18,17,17,30,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,18,17,24,17,17,30,17,17,17,17,20,19,17,17,17,17,17,17,21,15,30,17,18,17,17,17,17,17,18,18,24,17,17,17,31,17,17,18,17,17,18,17,17,17,24,30,17,17,17,17,17,27,21,17,17,17,17,20,17,17,17,18,17,18,17,17,17,17,10,17,17,24,24,17,17,18,17,17,17,24,17,17,17,17,18,17,17,18,17,17,10,17,17,17,17,21,17,18,30,24,17,17,17,18,17,17,17,32,17,17,17,17,17,17,10,27,17,17,16,24,17,17,17,17,17,19,17,17,17,17,17,17,17,15,17,18,19,24,17,17,23,17,17,17,17,17,17,17,17,10,17,17,17,18,17,17,10,17,17,17,17,17,17,17,17,16,18,19,24,17,17,17,17,17,17,17,18,18,17,17,17,17,17,19,17,17,30,17,17,17,34,16,17,30,17,17,17,19,16,17,17,17,17,17,23,17,17,23,17,18,17,18,17,17,18,19,18,17,24,17,17,17,17,17,18,19,17,17,17,27,17,24,18,17,24,28,28,28,17,18,17,17,17,17,17,17,15,10,17,17,17,30,17,15,17,24,17,17,17,17,24,24,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,23,17,17,10,17,17,17,17,10,17,17,17,17,18,19,17,17,24,15,17,17,17,17,27,17,17,17,18,17,17,15,17,17,18,18,17,32,24,17,17,17,24,20,18,17,17,17,17,32,17,17,19,17,17,17,18,17,17,17,17,17,20,10,17,17,17,17,17,18,23,17,19,17,18,17,17,17,10,17,17,17,17,17,18,18,16,10,18,24,17,17,15,17,32,17,17,17,17,30,30,24,15,17,17,19,15,17,17,17,17,27,17,17,17,15,19,17,17,18,19,31,17,32,17,17,17,17,17,17,30,17,17,17,17,18,18,16,30,19,18,17,19,17,17,17,19,20,17,17,17,19,17,17,17,17,17,17,17,18,17,17,17,30,18,18,17,17,17,17,17,17,19,18,17,17,10,18,17,20,24,18,23,17,15,17,15,17,24,18,17,18,17,10,17,25,17,17,15,17,17,30,18,17,17,17,17,24,17,18,15,24,17,17,17,17,18,18,17,17,24,17,28,28,21,18,17,17,17,18,30,17,17,17,24,17,17,18,17,24,24,17,17,17,15,24,31,17,19,15,24,24,18,17,17,17,17,19,17,17,24,17,17,17,18,17,17,17,21,17,27,21,17,18,17,18,17,17,17,17,18,17,17,17,18,17,24,18,17,17,36,17,15,36,17,17,21,20,20,17,17,17,24,17,15,17,17,17,17,17,21,17,24,30,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,35,18,17,17,17,19,17,19,17,17,20,15,17,19,17,15,17,17,19,17,17,17,17,17,17,27,17,17,23,17,17,17,19,17,17,17,21,23,17,17,16,22,19,30,26,15,18,17,17,17,17,17,17,24,30,17,17,17,17,17,17,24,17,17,17,16,17,17,17,17,17,17,19,17,19,17,19,17,17,10,17,24,17,17,17,17,30,32,17,30,18,17,18,30,17,17,17,17,17,19,17,19,17,36,17,35,28,17,17,17,17,32,30,17,18,19,17,17,18,17,17,24,17,17,24,17,17,26,32,17,17,15,24,17,18,17,17,17,17,19,24,17,17,15,17,18,18,10,17,30,28,28,28,18,17,19,17,17,17,34,26,19,21,17,20,17,18,17,17,17,24,17,17,17,17,17,17,19,17,17,17,30,10,24,17,25,17,17,17,17,17,17,17,18,17,27,17,17,15,17,17,30,17,17,17,10,17,17,17,18,18,17,17,17,17,10,17,17,24,17,15,17,17,17,17,17,17,17,24,17,30,17,17,17,27,17,17,18,17,21,18,17,17,17,17,19,18,17,24,21,17,17,17,17,17,17,17,17,16,15,17,17,18,18,21,17,17,17,17,17,17,17,17,17,17,19,17,18,17,17,17,17,17,20,17,17,17,24,17,17,19,17,17,17,17,24,32,17,17,21,17,17,18,19,17,17,15,17,17,21,17,17,17,17,17,17,24,17,17,19,17,17,17,18,17,17,30,17,17,17,17,17,17,17,18,17,24,17,18,18,17,15,10,18,17,17,19,17,17,35,17,17,18,17,32,18,17,17,35,17,30,17,17,17,17,24,10,17,17,17,17,17,17,17,17,18,17,17,17,17,30,17,17,17,36,17,24,16,17,17,17,19,17,17,17,17,15,17,23,18,17,17,17,18,17,17,10,17,17,18,17,18,17,18,17,26,17,17,30,17,17,16,17,17,17,28,28,28,17,30,17,18,30,17,10,17,17,17,17,18,10,17,18,17,17,18,32,15,17,26,19,15,18,17,10,17,17,17,17,30,24,17,17,16,17,24,17,24,30,17,17,17,17,18,30,18,30,20,17,17,17,26,18,17,17,17,17,17,17,17,17,17,17,17,19,17,17,18,15,17,17,30,24,17,17,17,17,24,17,18,17,27,17,17,17,17,17,17,10,17,20,23,17,18,17,17,31,16,17,17,24,17,17,17,10,18,17,15,30,10,19,27,10,17,18,10,17,30,17,18,31,17,17,18,17,17,19,18,17,17,17,17,17,18,16,17,17,10,17,17,24,17,19,17,18,17,17,26,17,17,17,18,15,10,17,18,17,17,17,17,17,18,17,30,17,17,17,17,31,17,17,17,30,17,17,17,17,17,24,21,17,19,24,17,15,17,24,24,17,19,17,17,17,17,18,20,17,17,17,17,17,17,10,17,17,18,18,17,26,17,32,17,18,17,30,10,24,17,17,19,24,17,17,17,17,17,24,17,20,17,17,17,17,17,17,17,21,17,17,17,17,17,17,24,16,17,17,17,27,17,17,24,21,17,17,17,18,17,24,28,28,17,17,17,17,17,17,17,17,18,17,18,27,17,17,17,17,30,17,17,17,17,17,17,19,17,17,18,17,17,17,17,16,17,17,17,24,16,32,24,19,17,17,20,15,17,17,17,25,17,17,17,26,18,17,17,18,17,17,17,24,17,17,17,17,17,17,17,17,10,30,18,15,17,17,23,17,15,15,17,17,18,16,18,17,24,17,17,17,16,17,18,18,17,24,17,20,17,17,17,17,18,18,17,18,17,18,18,17,17,30,17,17,18,17,10,17,17,17,17,17,17,18,19,24,17,17,17,19,17,17,17,30,17,19,17,17,17,17,18,17,18,17,27,17,17,30,17,17,20,20,18,18,17,17,17,17,17,27,32,17,17,20,24,17,10,17,17,17,17,17,17,17,17,17,10,17,20,17,30,30,17,17,17,31,17,17,17,17,17,17,17,17,17,17,26,17,15,17,17,17,21,17,18,19,17,17,33,17,19,24,17,31,21,17,18,17,23,19,17,17,17,17,18,17,17,24,17,17,17,17,17,17,17,17,17,17,17,30,17,20,17,18,17,17,17,28,28,17,18,17,17,17,17,18,17,17,15,21,24,23,17,10,17,17,17,15,17,17,17,17,17,17,17,17,17,15,21,17,17,20,17,17,17,16,30,15,17,17,17,17,30,15,17,17,17,17,24,17,17,17,18,17,10,30,24,15,19,17,17,18,17,27,17,17,30,15,17,15,17,17,27,17,17,17,35,15,17,17,30,17,17,17,17,17,17,17,17,24,17,18,17,30,17,17,17,17,18,17,17,24,26,17,25,17,24,24,18,17,15,17,17,17,17,17,17,17,17,24,18,30,17,19,17,17,17,20,17,24,19,15,17,10,17,32,17,17,17,17,24,17,17,17,18,17,17,17,17,17,17,17,18,17,18,17,18,15,15,24,17,17,25,24,18,15,17,17,18,17,18,17,17,15,18,17,18,17,17,18,17,17,24,17,17,16,19,17,17,17,21,17,20,18,17,30,18,17,19,18,10,17,10,24,17,17,17,17,17,17,17,17,32,17,24,17,17,17,17,15,15,15,15,15,15,15,15,15,15,15,20,17,17,17,16,24,17,17,17,17,18,26,20,32,17,18,18,17,17,17,15,17,17,17,17,17,17,17,17,15,17,17,28,28,28,17,17,17,31,24,30,17,17,17,17,17,17,30,17,18,17,17,17,17,15,24,24,17,17,17,17,17,30,19,21,17,17,15,10,17,17,17,17,17,17,17,17,17,24,17,17,17,18,17,17,17,17,17,17,18,17,17,10,17,17,32,17,18,17,17,17,17,17,17,10,17,32,30,17,15,17,24,17,18,17,19,18,17,17,32,18,17,17,34,17,30,17,24,17,21,19,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,24,17,17,17,17,10,10,19,17,18,30,17,24,17,17,10,17,17,32,17,17,17,17,17,17,17,17,17,17,27,10,17,31,17,24,18,30,17,17,19,17,17,15,24,21,15,17,17,18,17,17,17,17,17,17,17,17,17,17,19,17,17,30,17,19,17,17,17,17,18,17,17,17,23,17,17,17,17,17,17,20,24,17,17,17,17,17,17,17,17,17,17,17,17,17,24,30,17,15,17,17,17,17,17,17,17,17,24,17,17,17,17,15,17,17,18,18,17,15,30,17,19,24,17,18,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,24,17,28,28,17,25,15,17,20,17,17,17,17,17,17,17,17,17,24,17,18,17,17,23,17,17,15,15,18,17,17,15,18,17,17,17,17,10,17,17,17,31,18,17,17,17,15,17,24,24,10,17,17,10,17,17,19,17,17,24,30,16,17,17,17,17,19,17,17,24,24,19,17,17,18,17,10,17,17,17,17,17,17,17,17,17,17,17,15,21,18,24,17,17,17,27,17,17,17,17,17,20,17,18,18,17,17,17,17,21,17,17,17,17,17,17,24,18,20,18,17,17,17,18,17,17,17,17,17,15,17,17,17,17,15,17,18,17,17,10,17,18,17,24,17,30,19,17,17,17,24,18,17,17,23,24,17,17,17,19,21,17,17,17,17,19,17,30,17,17,17,17,17,17,15,24,18,15,17,17,16,17,30,17,17,20,18,17,17,30,17,17,17,17,15,17,24,18,17,10,17,19,17,17,17,10,17,15,17,15,24,17,18,18,17,24,17,17,17,30,20,32,18,17,18,17,17,24,17,32,17,17,17,17,17,17,17,17,10,24,17,17,19,17,17,17,21,17,28,28,17,10,17,19,17,30,17,17,15,17,19,32,17,17,10,17,21,18,17,17,17,27,24,17,30,17,24,17,17,19,17,17,17,17,17,17,17,17,18,19,17,17,15,17,17,17,10,17,18,17,15,17,17,30,17,18,17,17,17,17,17,30,17,17,18,17,17,17,10,17,17,15,17,17,17,17,17,17,18,18,17,18,18,17,17,17,17,17,32,24,18,17,17,17,26,17,17,17,24,17,17,16,17,10,15,18,17,16,17,24,18,16,17,32,17,32,17,19,17,17,17,17,17,17,17,17,17,18,17,17,15,20,17,17,17,18,17,15,24,19,17,17,17,17,17,18,17,30,32,24,17,17,17,17,17,17,10,17,17,17,17,17,17,21,17,17,32,17,17,17,21,18,17,17,19,17,18,17,17,24,24,16,17,17,17,17,17,17,15,17,24,17,17,24,17,19,17,17,17,24,19,17,19,32,17,17,17,17,17,17,24,27,32,24,31,17,17,17,31,17,17,18,24,24,17,17,18,17,21,10,17,17,17,17,24,17,17,17,18,17,16,17,17,17,32,17,17,28,28,28,17,17,17,17,17,17,17,17,17,17,19,18,24,17,17,32,17,17,17,17,17,17,17,21,24,17,17,20,17,17,17,30,17,17,17,17,30,19,17,17,17,19,17,17,17,17,17,20,17,16,15,17,17,17,17,30,17,17,17,17,17,20,17,17,17,18,17,17,19,17,17,24,17,17,17,17,15,15,24,17,17,20,17,17,24,17,10,17,17,30,24,17,18,17,18,17,18,24,17,30,17,17,32,17,17,10,17,17,18,15,17,24,17,17,17,17,17,17,18,17,32,21,19,17,17,17,17,17,15,17,17,17,18,18,20,17,17,15,17,21,17,17,17,17,17,24,17,17,32,17,17,17,17,17,17,18,17,17,30,20,17,17,17,17,20,32,10,19,27,17,17,17,17,17,32,17,17,24,20,17,17,24,17,17,17,18,24,17,17,17,17,17,17,17,17,17,17,26,10,30,17,17,18,15,18,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,10,17,17,18,24,32,17,18,17,10,17,17,17,18,17,17,17,17,17,17,17,28,28,17,17,17,17,17,17,24,31,10,18,15,15,17,17,17,17,18,24,17,32,17,17,17,17,17,17,19,17,24,17,17,24,17,17,17,17,17,10,17,17,24,24,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,21,17,17,18,10,17,24,17,17,17,17,17,24,31,18,17,17,17,24,17,17,17,18,18,17,17,19,17,17,17,17,24,17,17,19,16,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,10,30,17,17,17,17,17,17,17,21,18,17,18,20,30,17,17,17,17,17,30,15,17,17,17,17,30,17,24,17,17,17,10,17,17,24,18,17,17,18,17,24,24,17,17,17,19,10,17,17,17,17,17,17,17,17,17,30,18,27,17,17,17,17,17,18,18,17,17,30,20,17,17,18,17,17,19,18,18,17,18,19,17,17,17,17,32,32,17,17,17,17,18,18,17,15,17,20,18,17,24,17,17,26,18,17,10,17,16,17,24,17,17,17,18,17,17,10,19,17,17,18,27,17,17,17,24,10,17,19,18,24,17,17,24,17,17,15,17,17,17,27,18,17,17,17,17,24,32,17,17,17,17,17,24,19,17,28,28,28,18,17,17,17,17,17,17,17,32,17,24,17,17,17,20,17,23,17,17,17,17,17,17,17,17,10,24,17,17,17,18,17,17,17,17,17,31,15,30,17,17,17,17,17,17,17,17,17,17,32,19,17,17,17,20,17,17,17,17,17,17,17,17,17,17,10,18,17,10,10,17,30,17,17,19,17,24,18,17,31,17,32,17,17,18,17,18,17,30,17,17,17,35,17,17,17,17,23,18,24,17,18,18,17,17,24,19,18,17,17,17,17,17,17,17,18,17,17,20,17,15,17,17,17,17,24,24,17,17,17,30,17,17,17,18,17,17,19,17,17,17,19,19,17,15,15,17,30,17,17,30,17,17,17,17,19,17,30,17,15,17,18,24,15,17,17,17,18,17,17,31,17,30,17,17,17,17,17,15,17,23,24,15,20,17,17,17,17,18,17,17,17,17,17,32,24,30,17,17,17,30,24,17,17,17,17,17,17,17,19,17,17,30,17,17,17,18,18,17,31,17,17,17,19,17,17,17,24,17,17,17,17,17,17,17,17,15,17,17,32,18,17,18,17,17,17,17,24,17,32,17,17,17,24,17,17,17,17,30,17,15,17,18,17,17,10,17,17,17,32,17,17,17,17,19,18,18,17,17,28,28,17,18,17,17,30,17,24,17,17,17,17,18,17,17,17,17,17,16,16,18,18,17,17,17,17,15,17,24,17,17,24,17,17,19,17,19,17,20,17,17,17,17,30,20,17,24,17,17,18,18,17,30,17,17,17,24,17,17,17,17,17,17,17,18,17,24,17,21,24,10,17,21,17,10,17,17,17,17,17,17,17,15,17,17,17,24,17,17,17,17,17,18,17,17,17,17,24,17,17,17,17,17,21,17,17,17,17,17,17,17,17,18,17,17,17,17,19,17,18,17,17,18,17,17,17,17,15,17,17,17,18,17,17,17,17,17,17,17,30,30,17,15,17,17,24,23,19,17,17,17,18,18,17,17,32,24,17,17,17,17,21,17,18,17,30,17,30,17,17,17,24,17,17,17,17,10,17,17,17,16,17,24,17,10,17,17,17,24,17,17,17,17,17,17,17,19,17,17,17,17,19,17,19,20,17,17,30,27,17,17,17,17,17,17,17,17,17,30,30,17,18,24,17,24,17,18,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,27,17,17,15,17,18,24,17,17,17,17,28,28,19,17,17,17,17,17,18,10,17,10,18,17,32,17,17,20,17,17,24,17,15,17,17,17,17,17,17,17,20,17,17,32,17,17,19,21,17,17,17,17,30,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,18,17,17,17,17,17,17,20,21,17,18,15,17,17,17,17,18,17,17,17,17,17,17,17,17,17,10,17,17,17,18,15,18,17,17,17,17,27,17,15,17,24,17,17,17,24,17,17,27,17,17,17,31,17,17,24,20,24,17,17,17,17,35,16,19,17,17,24,17,17,17,18,24,26,17,17,20,17,15,17,17,24,17,17,17,17,26,17,24,17,10,20,23,17,17,24,17,17,27,17,23,10,17,23,17,18,17,18,19,17,17,24,10,17,24,24,17,17,19,17,17,17,17,24,17,17,17,17,17,17,17,17,17,32,20,17,21,17,17,17,17,17,17,17,30,17,18,15,17,17,17,17,17,17,17,17,30,17,17,10,17,17,17,19,17,17,17,17,18,24,17,16,17,24,18,17,18,27,17,15,17,17,19,24,17,17,24,28,28,17,17,17,17,17,18,15,17,17,17,18,17,17,33,21,32,17,20,17,18,17,17,27,17,18,17,17,17,24,17,18,17,31,17,20,19,17,17,17,17,18,15,17,17,17,17,30,17,17,17,17,18,16,19,18,17,17,17,15,17,18,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,19,30,17,17,19,18,17,17,18,17,24,17,30,17,18,19,31,17,17,17,15,17,17,19,17,17,20,17,17,17,19,17,17,17,18,17,27,17,17,17,15,16,17,17,18,17,17,18,17,15,17,17,15,17,17,17,17,17,24,17,17,31,17,17,30,17,30,15,18,15,17,17,26,17,17,33,17,10,17,17,17,17,17,17,17,17,19,24,18,15,17,17,17,30,17,18,17,17,17,24,17,17,17,17,24,15,17,30,18,18,17,17,17,17,17,15,16,17,24,17,17,17,15,17,24,17,17,17,17,17,10,17,17,15,30,10,30,19,17,24,17,17,24,17,17,17,24,32,17,15,17,17,17,17,24,17,19,15,17,17,17,28,28,18,17,17,17,17,17,17,17,17,17,18,18,17,17,19,17,17,17,18,17,17,17,17,17,17,17,19,17,17,24,17,17,17,17,17,17,17,17,18,17,18,17,30,17,24,10,17,17,17,17,17,19,17,17,17,17,17,17,17,10,17,17,15,17,31,18,17,17,17,17,17,17,17,18,17,24,24,17,17,17,17,17,17,17,19,19,17,19,17,17,31,17,18,15,17,18,24,17,18,32,17,24,20,17,17,17,17,32,17,30,15,17,27,17,21,17,32,15,17,17,17,17,24,18,17,17,17,17,17,15,17,17,18,18,32,17,17,17,10,24,31,17,17,17,24,17,17,18,17,30,17,17,17,18,17,17,30,17,32,24,17,23,17,17,17,17,17,25,17,17,17,17,17,31,16,30,17,17,17,24,17,24,17,24,17,30,10,17,17,17,17,17,15,17,17,24,20,17,17,17,17,19,24,17,17,17,18,17,17,20,17,19,18,17,15,17,17,18,10,17,17,17,18,24,18,21,17,17,18,17,17,17,17,27,17,24,19,17,10,19,17,17,10,17,17,17,21,24,28,28,18,24,17,17,26,24,18,19,17,17,17,17,30,10,19,17,17,17,17,17,10,18,18,17,26,17,17,17,17,15,17,17,17,17,17,17,17,17,21,17,24,17,17,18,17,18,27,25,17,15,10,17,17,17,19,17,17,17,17,17,17,17,17,17,10,30,24,17,17,17,17,24,15,17,17,17,17,17,18,17,18,24,17,10,17,17,17,17,19,17,17,17,17,19,15,17,17,19,30,17,17,18,18,23,34,17,19,17,17,17,17,17,17,17,24,17,17,17,31,17,24,17,32,17,17,15,27,15,10,15,17,24,17,17,18,17,17,17,17,24,17,17,17,17,17,26,17,17,19,15,17,18,17,17,17,24,17,17,24,17,17,17,21,10,17,18,17,17,15,18,17,17,19,17,15,17,17,30,17,17,32,17,17,17,24,17,15,17,17,17,10,17,17,18,30,17,18,17,17,17,17,17,17,17,18,10,24,17,17,21,17,17,18,17,17,17,17,17,18,20,17,17,17,17,15,15,35,21,17,17,17,18,10,17,17,17,17,26,18,15,17,17,10,17,24,17,17,17,17,17,17,17,17,26,17,17,17,28,28,17,17,17,17,17,17,17,17,17,17,21,17,17,17,18,10,17,17,18,17,17,24,17,17,17,17,30,32,17,16,21,18,30,17,18,17,17,17,17,17,30,17,18,17,18,17,17,18,17,18,18,17,17,19,17,24,18,18,17,17,24,17,17,17,17,17,17,17,18,18,17,18,17,17,17,18,17,17,30,18,17,17,17,17,19,17,17,18,18,17,17,30,21,17,17,19,17,17,24,17,24,30,17,18,17,17,17,24,17,24,17,18,17,30,24,17,18,17,17,17,17,17,24,17,17,24,30,17,24,17,17,18,17,17,17,17,17,24,17,17,19,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,19,17,31,17,16,24,17,17,17,17,19,23,19,17,31,17,25,17,18,17,17,17,17,18,18,17,17,17,17,17,17,17,17,24,17,17,17,18,24,17,18,17,17,17,24,17,17,17,17,17,19,17,17,17,17,17,24,17,18,17,23,18,17,17,17,19,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,17,17,19,17,10,17,17,18,17,17,17,17,18,17,17,17,17,17,17,17,17,17,20,19,17,17,17,17,17,17,21,17,28,28,28,17,20,17,30,17,17,17,17,17,17,17,17,17,17,17,17,17,30,10,17,17,17,17,17,17,17,36,17,15,24,18,17,25,17,17,18,17,17,17,10,17,24,17,17,17,17,15,17,15,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,18,31,17,15,17,27,17,10,17,17,17,17,24,18,17,15,17,17,27,21,17,17,17,18,17,17,30,17,17,17,17,17,18,17,17,18,17,17,15,17,17,17,15,17,17,17,17,17,17,17,19,17,17,17,18,17,17,17,17,17,18,17,17,17,17,23,17,26,17,17,10,17,17,17,17,15,17,32,17,18,17,17,17,17,18,17,18,17,15,17,17,17,17,17,17,17,17,17,17,24,24,17,24,17,18,17,20,17,17,19,32,17,17,17,17,15,18,17,17,17,15,17,17,16,20,17,17,17,17,17,18,17,17,17,17,17,17,17,17,19,32,17,30,17,17,17,18,20,19,18,17,10,23,18,17,32,17,18,17,18,17,17,18,10,17,17,17,17,18,17,17,17,17,17,17,28,28,28,17,24,17,18,17,21,19,17,21,17,16,18,17,15,17,17,17,17,19,17,18,17,17,17,17,10,10,17,17,17,18,17,17,17,17,17,17,18,17,17,17,17,17,17,15,18,17,17,17,17,17,17,17,19,18,17,17,24,17,17,17,17,17,17,17,17,17,32,17,17,17,17,17,23,17,17,20,17,30,17,19,17,19,17,24,17,18,17,17,24,17,17,18,17,10,17,17,17,17,18,17,19,24,17,17,17,17,17,24,18,18,17,17,17,17,17,17,20,17,17,24,17,26,32,16,17,17,19,17,18,18,17,17,17,17,17,24,17,24,17,17,17,17,31,17,17,17,17,17,17,21,17,17,17,17,17,18,31,17,17,17,17,17,17,18,17,17,18,24,18,17,17,19,17,18,17,18,17,15,17,17,17,17,17,15,17,17,17,19,17,30,10,17,17,24,17,17,17,17,32,17,30,17,17,15,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,20,17,18,17,17,17,17,30,17,17,17,17,17,24,18,17,20,17,17,17,17,17,17,17,15,17,17,17,17,17,20,17,19,17,28,28,28,17,17,17,17,18,17,18,16,17,10,18,10,32,15,15,17,17,17,15,15,17,19,20,17,17,17,17,23,17,30,17,17,25,18,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,24,17,15,18,17,17,17,30,17,17,17,17,31,18,23,17,19,17,17,17,17,17,24,20,18,17,17,17,18,17,17,27,17,17,18,17,18,31,23,18,17,17,17,24,24,17,17,17,17,17,24,18,17,17,17,18,17,17,24,17,31,19,17,17,17,17,19,17,17,30,17,17,17,17,24,17,31,17,30,23,17,17,19,16,17,17,17,17,17,17,17,17,18,15,17,17,10,17,17,34,17,17,17,17,24,17,18,19,35,17,17,17,30,17,19,18,19,17,17,36,17,17,10,17,10,31,18,17,17,17,17,17,17,17,17,19,17,17,17,19,18,17,15,17,35,15,18,15,17,17,17,17,17,19,17,17,17,16,27,17,17,17,17,17,15,17,17,17,17,17,17,17,17,10,24,17,17,23,17,17,21,17,24,17,17,17,17,10,17,17,24,30,18,17,10,18,30,17,17,24,17,24,17,17,28,28,28,17,17,17,17,17,24,17,17,24,17,17,17,24,19,17,17,18,17,17,18,15,17,16,18,17,10,20,17,17,24,17,17,17,17,27,18,17,27,24,17,17,18,17,18,17,15,20,17,17,17,17,17,17,17,18,17,10,18,20,17,31,17,17,18,17,17,17,17,17,17,17,17,17,18,17,31,10,17,17,15,17,24,17,17,18,17,30,17,24,10,18,17,30,17,17,17,15,17,17,17,17,17,17,24,18,17,17,23,24,17,17,17,17,24,19,17,17,17,17,17,17,18,18,17,24,17,16,17,17,17,17,17,17,17,27,24,18,17,17,15,17,17,26,24,27,17,24,17,24,17,17,17,17,18,18,17,17,17,19,17,17,17,17,27,17,27,17,17,17,24,17,17,17,19,17,17,17,17,17,17,17,17,24,31,24,21,24,17,17,24,17,17,17,17,17,17,17,17,19,17,17,17,17,18,24,17,17,17,30,17,17,17,15,17,17,18,17,33,23,27,19,17,18,17,18,17,24,18,17,17,15,17,24,17,20,19,18,17,24,17,31,17,17,15,24,17,15,18,19,10,17,15,17,17,24,17,28,28,17,21,17,15,18,15,17,17,18,17,17,17,19,17,19,24,17,15,17,17,17,17,18,17,17,17,10,17,17,17,17,17,17,17,17,10,17,20,28,17,30,17,17,30,15,17,17,19,17,17,19,17,17,17,17,17,30,17,17,17,17,32,15,27,17,17,17,17,21,17,17,17,17,17,17,19,19,17,17,17,15,17,17,19,17,17,17,19,17,17,17,17,24,18,17,21,17,17,17,17,32,17,17,19,17,17,17,24,17,17,10,17,17,17,21,17,17,15,10,17,17,23,17,32,17,17,31,17,20,30,15,24,17,18,17,17,17,30,17,17,30,17,17,17,17,18,16,17,17,17,18,17,15,18,17,17,20,17,17,17,17,17,17,30,17,10,15,17,17,17,17,17,17,17,10,17,17,15,17,18,18,17,32,17,17,17,18,17,18,17,17,18,32,17,19,17,17,10,15,19,17,19,16,17,17,17,24,17,17,17,17,26,20,24,17,17,17,17,15,17,17,17,20,10,15,16,17,17,17,17,18,17,23,17,17,17,17,17,17,10,17,17,17,31,28,28,17,17,18,17,17,17,24,18,17,17,17,17,17,15,17,17,17,17,17,17,20,10,17,30,18,17,17,35,30,17,17,17,17,24,24,17,17,17,17,17,17,18,31,17,17,17,22,30,26,17,10,17,27,23,17,15,17,17,10,15,24,17,17,16,17,17,17,36,17,24,17,17,24,31,17,17,24,17,18,17,27,18,15,17,30,17,17,17,31,17,17,17,18,22,17,21,17,17,17,18,17,26,10,17,17,27,17,17,19,17,17,17,19,17,17,31,18,21,17,18,17,18,17,17,17,17,17,18,17,17,17,17,17,18,10,17,30,17,17,17,17,17,17,24,10,17,17,17,17,17,31,17,17,17,17,17,17,31,17,17,30,17,24,17,17,31,10,17,17,17,18,17,31,17,17,17,10,17,17,19,17,17,15,17,18,17,17,24,18,17,17,17,17,17,17,17,17,18,15,17,10,17,17,17,17,17,20,17,16,17,10,17,17,17,32,32,30,17,17,17,31,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,30,19,17,17,17,17,19,17,24,24,17,28,28,24,17,17,17,17,17,27,17,17,17,17,30,23,17,17,17,18,17,30,19,23,15,17,17,26,21,17,18,17,17,17,20,10,17,17,18,17,17,17,17,17,17,17,17,17,17,18,17,18,18,19,17,17,17,17,17,17,19,17,17,10,24,19,17,17,18,17,18,25,17,30,17,17,17,17,18,17,24,19,31,17,17,17,19,17,17,18,17,17,17,17,30,17,17,23,17,17,17,17,19,19,26,10,15,17,18,17,17,18,17,18,17,17,10,17,17,17,17,17,30,17,10,17,27,18,17,17,17,17,17,17,17,18,17,17,17,17,17,21,17,17,17,30,24,24,17,17,17,17,24,18,18,10,17,15,21,17,18,17,17,18,17,17,17,17,20,17,17,17,18,17,17,19,17,15,17,24,17,17,17,24,17,17,17,17,17,17,21,18,17,18,17,17,18,17,17,17,17,26,17,17,24,24,16,17,18,20,17,17,17,17,30,16,18,17,19,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,32,17,17,17,10,17,17,17,10,17,16,24,17,17,17,24,18,18,36,17,17,17,17,17,17,16,17,17,15,17,17,17,17,17,18,28,28,10,24,17,24,17,17,18,21,17,17,17,17,19,24,15,17,17,17,17,17,17,17,17,17,17,17,17,32,17,17,18,17,17,17,30,18,24,17,24,17,18,17,17,17,17,18,17,18,24,24,17,26,30,19,24,24,20,17,17,17,17,17,17,17,15,17,10,27,17,24,17,17,17,17,26,17,17,10,17,17,19,17,17,17,17,17,17,15,17,17,17,10,17,17,17,15,17,17,17,17,17,17,17,17,17,17,24,17,17,24,17,17,17,17,17,17,17,30,24,17,10,17,17,24,15,17,15,17,17,30,19,17,32,17,17,17,23,17,17,17,17,17,19,17,24,24,19,10,17,17,17,17,10,17,17,17,17,31,17,24,17,18,17,19,18,30,17,17,24,18,17,17,17,17,17,17,18,24,18,15,17,17,10,17,10,17,17,17,17,15,17,19,18,30,24,18,17,17,17,32,18,17,19,17,17,17,17,17,17,24,17,17,17,17,17,24,24,17,19,17,17,17,17,17,17,17,17,17,10,17,17,10,17,24,31,17,18,17,17,17,17,17,18,17,24,17,24,18,17,24,17,17,17,18,28,28,28,17,17,17,17,31,17,24,17,18,18,32,32,18,19,17,17,10,17,18,17,24,23,17,17,30,17,17,18,17,17,17,15,17,17,17,20,17,18,17,17,15,17,17,17,17,23,17,24,17,17,17,17,17,27,18,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,10,18,17,17,17,17,19,10,17,15,17,24,17,17,17,17,27,17,24,10,17,17,32,17,17,17,30,17,17,17,17,30,24,17,17,15,24,23,17,17,10,18,17,17,18,17,17,17,17,30,17,30,27,17,17,17,17,17,17,24,17,17,24,17,17,17,19,17,17,17,17,20,17,32,17,17,17,17,17,17,17,17,18,17,17,18,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,18,31,18,17,24,17,21,24,18,26,17,17,17,17,17,17,17,17,17,24,17,17,19,32,17,16,23,24,19,19,17,27,10,17,17,17,24,27,30,17,17,10,17,17,23,24,15,17,17,17,27,17,20,17,17,17,17,24,10,17,17,17,17,17,19,18,18,17,17,17,17,17,19,27,17,17,17,17,17,18,30,17,28,28,21,18,17,17,17,17,17,17,17,17,17,10,17,30,19,15,32,17,17,32,17,17,17,17,17,17,24,21,17,17,17,17,17,30,26,19,17,17,17,17,18,30,17,17,20,35,18,17,17,18,17,17,17,17,10,17,17,17,17,17,30,17,17,17,17,10,17,18,18,17,24,24,17,17,17,17,17,15,17,18,17,17,17,17,17,17,17,17,18,24,17,17,17,17,30,17,24,17,17,17,17,10,17,32,30,24,17,17,17,17,17,19,17,30,17,17,17,17,17,17,18,21,17,17,17,17,30,17,30,25,17,18,15,18,17,17,17,18,17,17,31,30,17,17,17,17,17,17,17,17,17,24,17,15,10,17,17,17,17,17,31,31,17,17,17,17,17,17,18,17,17,17,30,17,17,17,10,17,18,32,17,17,17,17,17,17,17,17,18,17,17,17,18,17,17,17,18,17,17,17,17,17,10,17,17,17,27,10,17,17,17,21,17,17,17,35,17,15,15,32,17,17,17,17,32,17,17,17,17,17,20,24,31,18,17,17,10,17,17,17,17,24,15,18,17,17,17,17,17,17,17,10,17,33,32,18,28,28,28,17,17,18,17,17,15,17,17,21,17,30,16,17,17,17,17,17,17,19,36,17,17,17,23,17,17,17,30,18,17,17,17,17,17,17,17,17,17,17,15,17,15,17,18,17,15,17,17,18,24,17,27,19,21,20,24,25,18,17,10,17,17,17,10,18,17,17,17,17,30,19,17,24,17,17,17,17,17,18,32,17,17,17,17,15,17,17,24,21,17,18,15,17,17,17,19,17,17,17,17,24,17,17,15,17,24,17,17,18,24,30,17,17,17,26,17,17,17,17,10,15,17,30,15,18,17,17,17,17,17,18,17,34,17,17,21,16,24,17,17,17,32,17,17,17,17,18,17,24,17,17,17,23,17,17,17,18,17,17,17,17,18,17,17,17,16,17,17,17,17,24,17,17,18,17,17,19,18,17,18,32,17,17,17,32,21,18,24,17,17,10,17,17,20,17,26,17,15,32,21,17,10,24,17,17,18,17,18,17,17,17,17,17,18,18,17,17,18,18,17,17,17,18,18,17,17,24,17,17,17,17,17,31,32,17,17,17,17,18,17,17,17,24,18,20,30,17,27,17,17,32,16,17,17,17,10,24,17,17,28,28,17,17,17,17,36,30,17,17,24,18,17,17,18,24,17,17,18,17,17,17,24,17,17,17,17,17,17,18,17,17,17,17,17,10,20,19,17,17,17,17,24,10,17,24,19,17,18,17,32,17,17,24,10,31,17,17,30,15,17,17,17,17,15,30,19,17,17,17,17,17,17,17,19,19,32,17,17,17,16,17,17,17,15,32,17,17,10,17,15,24,17,20,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,16,32,17,17,17,24,17,17,19,17,18,19,25,10,17,17,17,17,30,17,17,17,30,17,17,17,17,17,17,17,30,17,18,30,19,17,17,26,24,24,17,17,17,17,17,17,10,17,17,17,16,19,17,17,24,17,17,17,30,17,17,17,17,15,17,17,17,31,17,17,17,17,17,17,17,17,17,15,17,19,17,17,27,10,17,17,17,17,15,17,17,17,17,35,17,17,17,28,17,17,17,17,17,17,17,17,17,17,17,10,32,17,17,17,10,15,19,17,18,17,30,17,17,17,17,17,17,18,24,17,17,17,24,17,17,17,17,17,30,24,15,30,30,24,17,28,28,28,17,17,17,17,17,17,24,24,17,17,30,17,17,17,17,18,18,17,17,17,17,17,24,17,17,17,30,18,17,17,16,18,17,18,17,17,17,17,17,17,17,17,24,17,34,17,17,17,17,17,17,17,17,17,24,19,17,17,17,17,17,17,17,18,17,17,17,17,18,17,17,17,17,18,15,18,17,17,17,17,17,17,15,17,17,18,17,24,17,17,17,18,17,18,17,17,17,24,17,17,17,17,19,17,20,17,17,17,17,17,30,17,17,17,17,17,17,15,17,24,17,23,17,21,17,17,17,17,21,17,18,17,17,17,17,19,15,24,17,17,17,24,17,17,17,17,19,17,17,31,17,17,17,27,17,17,17,27,17,17,17,18,17,17,17,17,17,17,17,19,17,18,10,15,17,17,17,15,24,17,24,18,17,17,17,25,10,21,30,18,17,17,16,17,17,17,17,24,17,17,17,17,17,15,17,17,18,15,18,17,17,17,18,17,17,17,17,17,18,17,17,18,17,17,17,30,21,17,18,17,17,17,15,17,17,17,15,17,17,16,17,17,30,17,19,17,17,19,17,17,15,17,17,17,17,17,17,32,17,28,28,18,17,17,17,17,17,15,17,17,17,20,27,27,15,17,30,17,17,17,17,17,17,17,17,17,17,17,24,18,18,17,17,24,17,17,17,17,18,17,17,30,17,17,17,24,17,17,17,17,17,32,20,17,17,17,19,17,17,24,24,17,17,17,35,10,17,10,17,17,17,17,17,15,17,17,30,20,17,15,17,15,10,17,32,18,21,17,24,17,10,10,27,17,17,17,18,20,15,17,21,32,17,17,17,21,30,17,17,18,17,17,17,17,17,17,17,18,17,17,17,18,17,17,17,18,17,17,18,17,10,17,17,17,17,17,17,17,18,18,17,17,17,17,17,17,23,17,17,17,17,17,17,17,18,15,17,17,18,22,17,17,25,17,17,19,17,19,34,17,17,17,17,17,17,17,17,16,17,17,16,17,17,17,17,15,17,16,17,17,17,10,17,17,17,17,17,32,17,17,17,17,17,17,18,17,27,24,17,24,17,17,24,18,23,17,18,17,17,17,18,15,24,17,17,15,19,17,32,17,17,19,10,32,17,17,17,19,24,17,18,10,23,24,18,17,17,30,19,17,17,17,17,17,17,26,24,21,17,15,17,18,28,28,28,17,17,18,17,17,17,24,27,18,17,18,17,31,17,18,35,17,17,20,17,17,17,17,10,17,17,19,15,18,20,17,19,17,17,17,17,17,18,17,16,32,17,17,17,18,17,17,31,17,21,17,17,17,17,17,18,17,21,17,17,17,17,26,32,17,30,16,10,17,17,17,17,19,17,17,17,17,17,18,17,17,30,18,18,16,18,18,15,17,17,17,19,17,17,17,17,17,17,19,20,17,17,17,17,30,17,17,17,17,18,18,10,17,17,17,17,17,17,17,17,17,17,17,17,15,27,17,17,17,17,18,17,17,20,17,17,17,24,17,17,18,34,19,18,17,17,19,17,31,24,17,17,17,17,17,17,31,17,17,17,19,17,15,17,18,17,17,10,10,17,18,18,18,17,24,17,24,17,17,17,17,17,18,17,17,18,17,18,17,17,17,30,19,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,18,10,16,17,20,16,18,17,17,24,18,10,19,17,17,17,17,17,17,17,30,24,30,17,18,26,18,17,30,17,17,24,17,17,17,17,24,15,17,17,17,17,17,17,17,27,17,17,28,28,31,17,24,17,17,17,15,15,17,17,17,17,17,17,19,17,17,26,36,17,25,17,17,24,17,17,17,17,24,17,17,34,17,17,17,17,17,17,17,17,17,17,17,30,17,17,16,17,32,17,17,18,18,17,17,17,17,30,17,17,17,17,17,18,24,17,17,17,18,17,17,18,17,17,17,17,24,17,10,30,17,17,17,17,17,17,17,18,17,16,17,17,28,27,16,26,17,10,17,17,18,17,17,17,24,33,17,17,17,17,17,17,17,17,17,17,17,19,17,24,24,17,17,17,24,17,15,17,18,17,15,17,17,17,19,17,20,17,17,17,17,15,24,17,33,17,17,17,17,31,17,17,17,17,17,17,20,17,17,17,17,21,17,10,18,17,17,24,17,17,30,10,17,17,17,18,18,17,17,17,30,17,17,17,24,17,17,17,24,17,30,17,17,17,17,17,17,17,16,17,17,17,17,17,19,17,17,17,17,17,17,17,17,10,17,17,18,17,18,18,17,30,10,18,17,17,18,15,15,17,17,17,18,17,18,17,17,18,15,17,17,21,24,17,24,17,17,17,17,20,17,17,17,17,17,17,17,28,28,18,17,10,17,10,18,17,17,17,30,15,17,17,17,17,17,17,17,19,17,18,30,17,17,17,17,17,17,17,30,17,17,19,16,17,17,18,24,17,10,17,18,17,17,17,17,17,18,17,17,18,17,18,18,24,17,17,24,17,15,17,17,24,17,17,18,17,17,17,30,17,27,17,17,17,17,19,15,17,17,17,17,23,17,17,24,17,17,17,17,17,18,17,17,17,17,17,18,17,17,17,17,17,18,24,17,17,17,24,24,17,17,17,17,17,17,20,18,17,10,10,15,17,17,32,17,17,30,17,15,19,24,19,16,18,17,10,27,17,10,17,17,17,17,17,17,17,17,17,19,17,17,23,17,17,17,17,17,17,17,17,17,17,17,24,18,24,17,17,17,17,24,17,17,19,17,18,17,17,17,17,18,17,17,17,17,17,17,24,17,15,17,24,19,17,17,18,17,18,17,27,17,18,18,17,17,17,18,18,17,17,18,17,27,17,17,17,10,17,17,17,15,15,17,10,24,26,17,17,10,18,17,17,23,17,17,15,17,18,15,17,10,18,24,17,20,28,28,17,17,24,19,19,17,17,17,19,17,17,17,17,17,17,18,18,17,27,19,17,17,17,17,30,10,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,23,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,24,19,18,17,17,17,17,17,17,17,17,17,17,32,17,18,17,17,30,17,19,17,17,18,17,17,32,18,17,17,17,15,18,31,17,30,17,19,18,17,17,17,31,18,18,24,17,18,17,17,17,17,17,17,17,17,19,18,17,16,17,17,27,24,17,18,17,30,10,20,17,17,17,17,32,17,17,15,17,17,17,30,17,17,17,17,18,17,18,17,17,17,17,23,34,17,19,18,30,10,17,17,17,17,17,17,17,17,17,31,17,24,17,24,24,17,17,17,31,30,24,17,17,30,17,24,18,17,17,17,17,18,17,17,17,17,30,17,17,17,17,17,15,17,24,17,17,17,18,17,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,17,17,17,17,17,17,19,17,17,15,17,18,17,10,18,30,17,17,17,30,18,17,19,15,24,17,16,17,17,17,17,17,17,24,17,17,17,28,28,28,17,18,17,17,17,17,17,17,17,17,18,17,24,19,10,17,17,17,17,17,17,18,17,10,19,17,17,18,17,27,19,17,17,17,21,17,17,19,17,17,10,17,19,17,31,17,17,17,10,17,17,17,17,17,17,17,17,17,17,19,17,17,17,18,17,18,24,17,17,17,17,24,18,17,17,17,17,17,17,19,17,15,18,10,17,18,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,26,17,17,17,17,17,17,23,24,17,17,15,17,32,17,18,17,17,18,24,17,18,19,15,17,24,17,17,17,17,17,17,17,24,17,18,20,17,17,17,17,18,30,24,17,17,17,17,24,17,17,26,27,17,17,17,17,17,19,17,17,17,17,10,24,18,17,17,23,24,17,17,17,17,17,17,17,19,17,18,17,30,17,17,30,16,17,15,17,19,24,17,17,17,18,17,17,17,30,17,17,17,19,17,15,18,17,15,17,15,16,17,18,17,19,18,17,17,15,15,17,17,17,17,17,18,20,17,17,17,17,18,17,17,17,17,17,17,32,17,17,17,18,17,30,28,28,28,17,17,20,17,19,17,17,17,17,32,19,18,17,17,21,15,17,17,21,17,18,17,18,17,17,17,20,20,17,17,24,17,17,17,30,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,31,17,17,15,17,17,32,17,17,17,25,17,30,17,17,17,18,17,17,17,24,17,17,17,17,17,17,17,19,17,19,17,18,19,30,17,17,17,32,17,17,17,18,17,30,10,17,17,17,17,17,27,17,17,17,15,17,17,17,17,17,31,17,17,15,17,17,17,17,17,24,24,17,17,17,30,17,17,18,19,17,18,17,15,19,17,17,17,17,17,17,17,30,17,18,17,17,10,17,17,19,17,32,18,17,17,17,18,17,17,17,17,17,17,10,18,17,17,17,15,24,17,17,18,17,17,19,17,17,17,17,17,19,17,18,17,17,18,17,17,17,17,17,18,17,32,17,17,30,17,17,19,17,21,17,17,10,17,24,17,10,15,17,17,24,24,32,17,24,17,17,17,24,17,17,32,17,24,17,18,17,24,17,17,19,17,17,17,17,17,10,17,28,28,24,17,17,24,17,10,17,17,30,30,17,17,17,17,15,17,18,17,17,17,17,17,24,17,17,15,10,17,17,17,17,17,17,17,19,17,17,20,17,17,17,18,17,17,17,17,15,17,10,24,17,18,17,17,17,17,17,18,17,17,17,24,18,17,24,17,17,17,17,17,24,17,17,18,17,17,17,15,18,17,30,18,17,32,17,19,17,17,17,17,31,17,30,17,18,18,17,17,24,17,19,10,24,17,17,30,17,17,17,17,17,17,17,19,17,16,17,19,17,16,17,19,17,17,17,17,17,17,17,17,26,17,17,17,17,30,18,17,17,17,15,24,21,17,17,16,24,18,17,18,17,17,17,17,17,24,17,17,17,17,10,17,24,27,17,17,17,16,17,17,17,17,30,17,20,24,17,17,18,19,27,19,17,19,17,17,17,30,27,18,17,35,18,17,10,17,10,17,17,24,17,30,17,17,17,17,17,17,17,17,17,30,17,15,17,17,24,17,17,17,17,17,17,17,17,17,17,17,15,17,16,17,17,10,17,10,17,16,27,17,18,30,17,17,17,26,15,28,28,19,17,18,17,20,17,17,17,24,18,17,17,24,17,30,17,17,15,20,17,16,17,17,17,17,20,17,17,17,18,17,17,17,17,17,17,18,17,17,17,32,17,19,17,30,17,35,19,15,17,26,17,17,30,17,17,17,17,17,17,15,17,17,17,24,18,17,17,30,27,17,17,24,17,35,18,17,17,17,17,17,17,17,17,17,10,17,17,17,27,15,24,17,18,17,17,30,17,17,31,17,17,15,17,17,17,18,17,17,31,23,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,26,17,10,17,17,18,17,17,24,17,17,17,17,17,24,17,17,17,17,17,30,24,17,15,17,15,17,17,17,16,16,17,17,20,17,17,17,17,30,17,24,19,17,24,17,18,17,17,24,15,19,17,17,30,17,24,17,17,17,17,17,17,19,17,17,17,17,17,17,34,17,17,17,17,18,17,17,19,17,17,17,17,17,17,10,24,17,17,17,17,17,20,17,18,17,15,17,23,17,17,18,17,16,17,17,25,30,17,18,18,18,17,17,17,17,17,17,17,17,24,17,18,17,17,20,17,17,17,17,28,28,17,32,17,26,18,17,17,17,20,17,10,17,19,17,17,15,17,17,17,17,17,17,20,17,17,17,17,15,17,17,17,17,24,17,17,24,17,21,17,17,17,17,17,24,17,17,19,17,17,17,17,17,15,20,32,17,17,10,17,17,17,17,17,17,20,17,17,17,17,17,17,21,36,17,30,17,17,17,17,17,17,17,18,17,30,17,17,10,20,30,17,32,10,17,30,17,15,17,15,17,17,17,19,17,17,17,17,18,17,24,17,17,17,17,17,17,18,10,17,25,17,17,17,17,17,23,18,18,17,17,10,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,19,17,24,17,17,17,17,15,17,17,15,17,17,18,17,17,15,17,21,21,17,17,17,17,17,17,17,15,17,18,17,30,18,18,17,24,17,17,17,35,17,17,18,19,24,17,17,17,17,30,23,17,10,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,18,30,16,17,18,17,17,36,24,17,15,17,17,17,19,17,17,18,24,17,18,15,17,17,31,17,17,18,21,17,36,17,17,30,17,17,17,18,16,17,28,28,28,27,17,17,18,17,17,17,17,17,17,17,10,24,17,17,17,17,17,31,17,17,24,24,24,10,17,17,17,17,17,24,15,17,17,19,17,17,17,31,17,17,17,17,24,17,17,18,17,24,18,17,17,24,17,17,17,17,17,17,17,17,17,26,17,17,17,20,17,17,18,17,17,20,17,17,18,17,17,17,17,17,17,17,17,30,17,17,17,21,17,17,17,17,17,17,24,17,15,17,30,17,18,17,17,17,18,36,17,17,17,17,17,10,24,17,15,17,17,17,30,17,17,17,30,17,17,17,24,17,17,19,18,17,17,18,17,17,21,17,17,17,17,17,17,21,17,17,17,17,17,17,17,17,17,19,18,24,18,17,17,10,17,24,24,17,17,17,17,17,17,18,25,17,17,17,24,17,17,17,18,24,17,17,17,19,17,17,17,17,17,17,19,24,32,17,17,32,34,17,17,17,17,23,17,17,17,16,17,17,20,17,15,17,17,24,17,17,17,24,15,24,17,17,17,17,17,17,17,17,17,21,17,17,17,18,17,17,17,17,25,18,18,17,17,18,24,17,17,15,18,17,17,17,17,18,17,31,17,28,28,24,17,16,17,17,18,17,19,17,19,17,18,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,24,17,17,17,17,17,17,19,17,17,17,17,19,32,36,17,17,19,26,17,18,18,17,17,17,17,18,17,17,17,15,10,17,17,30,17,17,17,19,17,17,10,15,17,30,17,17,24,10,17,17,18,17,17,17,30,17,17,17,30,18,17,17,17,17,15,17,24,17,24,17,17,17,21,15,17,15,17,17,18,15,35,17,32,17,17,17,17,24,17,17,30,17,16,17,17,17,17,17,17,24,19,17,17,16,17,17,17,17,17,17,17,17,18,19,17,17,24,17,17,17,18,15,15,17,17,17,17,17,20,24,17,17,17,17,17,10,17,10,17,15,17,17,17,17,17,15,17,17,18,17,17,17,17,17,30,17,17,17,17,18,19,19,17,17,18,17,17,17,19,24,17,17,17,10,19,18,17,18,17,17,17,17,17,19,18,17,17,17,17,15,17,17,17,10,17,18,21,17,27,18,19,15,17,23,17,30,17,17,17,17,17,17,17,30,17,17,17,17,17,17,18,10,17,28,28,17,17,17,27,17,17,17,17,17,10,17,17,18,17,19,17,17,17,17,19,17,17,17,24,18,17,30,18,15,17,17,17,17,24,17,17,31,18,17,17,17,32,17,24,19,24,17,17,17,31,17,17,18,17,17,17,17,17,17,18,17,18,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,19,10,17,17,24,17,18,17,17,17,26,17,17,17,18,17,17,17,18,17,17,17,17,17,17,17,10,17,19,17,17,17,17,24,17,17,17,24,17,15,17,17,17,20,18,17,18,15,15,18,17,17,17,24,17,15,17,17,17,18,17,17,17,18,17,18,18,17,10,17,17,24,17,17,17,17,10,32,17,17,17,17,32,17,17,32,17,17,17,17,16,17,17,18,17,17,17,17,17,20,17,17,24,15,17,35,17,15,10,17,15,17,17,17,17,17,17,17,17,17,17,17,17,10,21,17,18,24,24,17,17,17,17,17,17,17,17,18,17,19,17,17,24,17,17,17,17,17,18,18,17,17,23,17,17,10,17,24,31,17,16,10,17,17,17,17,17,17,24,17,17,17,30,24,30,17,36,17,30,17,17,10,28,28,17,17,15,17,17,10,17,17,17,18,30,32,17,17,17,17,30,17,17,24,24,17,17,17,15,24,17,17,17,18,17,17,18,16,17,10,17,17,17,18,17,17,17,10,24,21,17,17,20,15,17,17,17,10,17,17,17,17,24,32,17,17,21,17,17,17,16,17,17,17,17,18,17,17,17,17,32,17,17,18,17,15,18,24,17,17,18,23,17,17,17,18,17,17,17,18,17,17,32,17,15,24,17,17,18,19,10,17,17,17,18,17,21,17,17,19,17,17,17,17,17,17,15,17,10,17,17,15,17,17,17,24,17,17,10,17,17,17,17,27,17,17,17,19,21,17,17,19,24,17,30,18,17,17,17,17,17,25,19,24,25,17,17,20,10,17,18,17,17,10,17,17,19,17,21,30,17,17,17,17,24,33,17,17,15,10,17,17,17,18,17,17,31,16,17,31,30,17,17,17,17,17,18,17,17,17,30,20,17,17,20,17,17,17,17,18,17,17,24,17,15,17,17,17,27,27,18,17,17,16,17,17,24,17,17,17,17,36,17,17,18,17,17,32,17,17,17,17,17,24,17,17,17,17,20,17,28,28,17,22,17,18,17,17,17,17,15,18,17,17,17,17,17,26,19,17,17,10,17,18,17,17,17,17,17,17,10,17,17,17,24,17,17,17,18,17,17,17,17,17,17,30,17,17,17,17,17,21,10,17,18,17,17,15,24,17,17,17,30,17,31,24,17,18,32,24,17,17,16,17,17,17,17,17,18,17,18,17,17,17,32,24,17,17,17,17,17,32,18,17,17,17,26,21,17,17,17,18,10,17,17,17,17,17,17,17,23,18,17,17,24,24,17,17,17,17,17,17,18,18,17,24,17,18,17,16,17,17,17,17,17,24,17,17,17,17,17,17,17,17,30,17,17,17,17,17,24,27,24,17,31,17,17,30,19,17,16,17,18,18,17,24,17,17,17,17,17,17,17,17,17,18,17,17,17,17,18,17,17,17,17,17,19,17,17,17,17,17,24,23,17,17,16,17,24,17,17,17,17,17,17,15,10,17,17,17,18,17,17,17,18,30,17,17,25,24,17,26,17,24,10,15,17,17,24,17,17,17,17,17,17,17,17,10,18,17,19,17,17,17,17,17,16,17,17,16,31,17,17,17,17,17,17,17,28,28,28,17,17,17,17,17,17,18,17,19,17,17,24,15,17,17,18,17,24,19,31,17,18,17,17,17,17,18,17,17,17,18,18,18,18,20,17,10,17,17,24,30,16,19,18,32,17,17,19,20,17,20,17,32,21,18,18,17,17,18,17,17,17,17,17,18,15,17,17,17,19,17,17,17,17,17,17,17,17,17,18,17,17,17,10,17,10,32,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,30,31,17,17,17,17,17,17,18,18,17,18,17,17,24,10,17,17,15,17,18,17,17,18,17,17,21,17,17,10,30,17,17,17,18,17,17,17,17,24,15,17,17,17,24,17,17,19,17,17,18,17,17,17,17,17,17,17,18,18,30,17,17,19,17,17,17,17,17,17,17,22,17,17,19,17,18,17,17,17,15,17,17,19,18,30,30,24,17,17,17,17,17,17,17,18,17,17,17,15,17,17,17,17,17,18,17,17,10,18,17,17,18,18,17,30,17,17,17,18,17,18,17,17,17,17,30,30,18,17,17,17,17,10,17,10,17,19,17,32,24,17,17,17,19,17,17,17,18,17,17,17,17,17,17,28,28,24,17,17,17,17,17,17,16,17,17,17,17,18,17,17,17,17,23,17,17,17,17,17,19,24,17,17,30,17,18,32,17,24,18,17,17,17,17,17,17,17,17,24,17,17,17,26,17,17,17,19,17,21,17,17,17,19,17,17,17,17,17,17,15,17,17,18,17,17,16,17,31,24,17,17,17,17,17,17,24,17,21,20,17,18,17,17,31,17,17,17,30,24,17,17,17,17,18,17,17,34,17,17,18,17,17,17,17,32,18,17,17,17,17,17,17,18,18,17,18,17,15,30,10,16,17,17,10,15,19,17,20,17,18,17,17,18,15,17,24,17,15,10,19,17,17,17,24,17,17,24,17,24,10,17,17,17,17,17,17,17,17,17,17,18,17,17,17,18,17,32,17,17,17,10,17,18,17,18,17,17,17,16,24,17,17,18,30,26,18,17,17,17,19,17,17,17,17,17,17,15,30,17,17,18,17,17,19,17,17,18,24,24,17,18,17,17,17,10,24,18,26,17,24,30,17,27,17,18,19,17,17,17,17,24,30,31,32,24,27,18,17,18,18,18,18,17,17,18,17,17,17,17,17,17,28,28,28,17,30,17,17,24,18,17,17,17,30,17,17,18,24,17,10,18,17,17,17,17,18,17,17,19,17,32,17,17,15,10,17,17,17,17,17,17,17,17,17,24,10,17,24,17,17,18,17,17,17,17,17,17,19,17,17,17,17,18,17,17,17,18,17,17,17,17,18,18,19,17,17,17,18,18,15,17,17,24,17,30,17,17,16,17,10,17,24,17,17,17,27,17,30,17,17,17,17,17,17,17,17,17,17,17,19,17,17,24,30,17,30,17,21,10,17,17,17,19,10,17,17,17,17,17,18,17,17,17,18,18,17,24,17,19,30,35,17,17,17,17,17,24,21,36,17,10,17,17,24,17,32,19,18,18,17,17,17,30,18,17,17,10,24,27,17,17,18,17,17,17,17,17,35,17,24,17,17,17,18,24,17,17,26,18,17,17,17,17,17,32,17,17,18,19,18,20,17,10,24,18,17,17,17,17,17,17,17,32,19,28,17,17,24,21,17,10,17,24,17,17,30,10,17,17,17,17,17,35,17,19,33,17,17,17,30,17,17,17,17,18,17,10,17,15,18,17,17,31,17,10,18,17,17,18,32,17,17,28,28,10,17,19,32,18,17,17,17,18,15,15,17,17,15,17,17,17,17,17,17,34,17,17,17,26,17,17,18,17,10,17,17,10,24,18,17,17,19,17,19,17,30,18,17,19,10,17,17,15,17,24,17,17,17,18,17,17,15,19,15,30,17,18,17,17,32,17,17,17,17,17,17,17,15,17,17,17,18,17,17,17,17,17,18,17,19,30,17,17,17,20,17,17,24,17,18,17,18,17,15,17,17,17,20,17,17,17,20,17,17,18,17,17,17,17,19,17,30,17,23,17,17,17,17,30,17,17,15,17,17,17,18,17,17,18,17,24,15,17,17,23,17,17,17,17,17,17,17,17,17,18,18,24,17,17,30,30,17,17,20,17,17,17,17,17,15,17,17,17,24,17,24,17,17,17,19,18,17,10,17,18,17,17,17,17,17,19,17,17,31,17,17,15,17,17,17,24,18,17,30,17,17,18,17,17,18,15,17,27,16,18,18,17,17,17,17,17,15,10,17,18,19,17,17,19,17,17,17,17,17,17,19,17,17,17,17,17,17,15,15,10,17,25,17,17,18,17,17,17,17,17,17,17,17,19,17,17,30,28,28,18,17,32,17,17,17,17,19,17,17,17,10,17,18,21,17,17,17,17,30,17,17,17,17,17,17,17,17,30,17,17,17,17,17,17,17,24,20,17,17,17,17,16,17,17,17,17,17,17,17,18,10,24,17,18,24,24,10,17,17,18,17,30,17,17,17,15,17,17,17,17,17,17,17,17,15,17,24,17,17,17,20,17,17,17,17,17,17,18,17,17,17,24,30,17,17,17,17,17,17,17,20,17,15,18,17,17,24,17,32,17,17,17,17,18,17,18,19,17,15,17,17,17,17,17,17,17,18,18,18,17,17,17,17,30,17,17,24,17,17,18,17,17,17,17,24,24,17,17,17,21,17,17,24,18,18,17,17,18,18,15,18,17,19,17,17,18,17,17,18,24,17,17,17,17,17,17,17,30,24,17,17,17,17,17,17,30,17,17,17,15,17,17,17,17,17,24,18,18,17,24,17,17,17,30,17,17,17,17,17,17,17,17,17,17,17,17,20,24,17,17,17,17,17,17,17,32,17,21,17,17,17,17,18,17,17,17,26,21,32,17,15,17,17,17,24,17,17,27,17,17,17,27,24,17,17,17,17,28,28,28,17,18,17,17,17,17,17,10,17,19,17,17,19,18,18,17,26,17,32,17,17,17,17,17,17,17,18,18,17,30,17,18,17,17,17,18,17,18,17,17,17,17,17,19,17,17,30,17,15,17,17,24,15,24,17,19,18,17,17,21,15,18,18,18,17,17,17,17,10,24,17,17,19,18,30,17,17,17,15,18,17,17,17,21,17,17,17,17,17,17,20,17,17,17,17,24,17,17,17,17,30,17,18,24,15,30,17,18,17,17,17,17,26,17,17,20,17,17,17,17,17,17,17,17,27,17,17,17,17,19,17,17,17,17,17,18,19,19,30,17,17,17,17,17,32,19,17,31,17,18,17,17,32,18,20,17,17,17,17,35,17,24,17,18,20,17,17,17,15,17,24,17,17,17,19,10,17,17,24,17,17,17,10,17,17,17,17,18,32,10,18,17,17,17,18,17,17,17,17,17,17,17,27,17,17,17,17,15,32,17,17,10,24,17,18,17,16,17,17,19,17,17,17,17,17,17,18,30,15,17,17,15,18,17,32,18,17,26,17,31,17,17,17,17,17,17,17,17,17,21,17,17,31,18,17,17,17,17,16,17,17,28,28,17,17,18,17,17,24,10,17,17,17,18,18,17,17,18,18,17,17,32,32,36,17,20,17,17,17,18,17,17,17,24,18,17,17,17,17,17,17,17,18,18,17,17,30,17,17,17,17,17,17,18,24,18,17,26,10,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,24,26,17,17,17,31,30,17,17,24,26,17,36,17,17,24,17,19,21,17,17,10,17,17,15,17,17,17,17,17,17,32,17,18,18,17,17,17,17,17,17,17,17,17,17,30,17,30,18,17,17,15,18,17,17,17,18,17,17,15,17,17,10,17,17,17,18,17,17,17,17,17,17,35,17,17,17,17,18,17,17,19,17,10,17,17,17,30,20,17,15,17,17,17,17,16,17,24,17,17,17,24,24,17,17,15,15,15,17,17,18,17,17,17,17,10,18,17,17,17,20,17,17,23,17,19,17,10,18,17,17,17,17,17,32,17,17,17,17,10,17,17,15,17,17,17,17,17,17,17,24,17,32,17,17,17,17,17,17,18,17,17,17,21,18,25,18,17,23,17,17,18,17,18,17,17,17,17,17,17,17,17,17,18,17,17,28,28,28,17,17,24,17,24,17,24,30,18,30,19,17,30,17,17,17,17,24,15,18,19,17,18,17,18,23,15,17,17,17,17,24,17,17,17,17,17,24,17,10,17,17,10,17,17,17,17,17,17,17,17,17,17,19,17,17,18,17,26,17,17,24,17,17,17,10,17,15,17,17,17,17,17,17,17,18,17,20,17,17,31,17,17,17,17,17,17,17,17,19,24,17,17,24,21,17,17,19,19,19,17,17,17,17,17,17,17,17,16,17,18,17,17,17,17,27,17,24,27,30,17,17,17,17,19,17,17,17,17,24,17,18,17,17,17,15,17,17,17,17,17,17,17,24,17,17,24,17,18,20,21,18,17,17,15,17,18,17,17,17,17,17,17,17,17,17,17,17,18,18,17,24,17,17,17,17,10,20,17,17,17,32,17,17,26,17,17,17,17,30,17,17,30,24,17,30,17,24,24,32,17,16,24,15,17,15,17,24,24,17,17,17,17,24,18,32,17,17,17,15,17,16,17,24,24,17,17,17,10,17,17,30,17,18,17,26,17,17,17,17,21,17,18,17,17,17,17,17,17,32,30,17,17,17,17,17,17,28,28,30,18,17,18,16,17,34,32,17,17,17,17,17,24,17,17,17,17,18,24,24,17,30,19,15,16,17,21,15,15,17,17,27,17,17,17,17,15,17,17,18,17,17,19,17,10,17,32,15,17,17,30,30,15,22,17,20,17,17,17,24,17,17,25,17,17,17,17,17,17,32,24,17,24,17,18,17,17,18,30,17,20,17,17,17,17,17,24,24,17,17,17,18,17,17,17,34,30,17,15,25,17,26,10,17,18,18,17,17,17,17,17,17,17,17,17,17,17,24,10,17,17,17,31,17,18,17,17,19,19,17,17,18,17,24,17,17,25,17,17,17,17,17,19,30,17,17,17,17,17,24,24,19,17,17,17,24,17,17,19,17,17,17,17,24,18,17,17,17,17,17,17,31,24,17,25,17,17,10,17,17,17,24,17,18,17,17,10,17,30,17,10,17,24,17,30,17,18,17,17,25,17,24,17,19,17,15,17,17,24,17,17,17,15,17,17,17,17,18,17,17,17,10,17,17,17,17,17,17,30,17,17,16,17,24,17,17,17,17,18,17,18,30,28,28,28,17,17,17,17,17,30,24,21,15,20,17,17,17,17,18,17,17,17,26,15,17,17,17,17,24,17,17,17,18,17,17,17,18,17,25,17,19,17,21,17,17,15,17,24,17,24,17,17,17,17,21,17,17,17,17,17,17,24,17,15,17,17,17,17,18,19,17,27,18,17,17,17,17,17,17,17,30,17,27,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,18,17,17,17,10,17,17,17,10,17,17,17,17,17,19,17,16,24,17,30,18,17,17,19,30,17,17,31,24,17,17,17,18,17,17,17,18,17,17,18,19,24,18,18,30,17,24,17,18,17,17,17,17,20,23,17,17,19,10,17,17,17,17,17,17,17,19,15,24,17,17,17,19,27,17,17,17,17,15,17,17,17,17,17,24,18,17,17,24,17,24,18,17,15,17,17,17,18,30,17,10,17,19,17,20,18,17,18,19,16,15,18,17,24,17,17,17,17,24,18,17,17,17,18,17,17,17,19,30,17,17,17,17,15,17,17,10,17,17,17,17,18,17,18,18,24,24,17,17,17,17,28,28,28,17,17,17,18,17,18,17,19,31,35,17,19,17,32,17,27,15,17,17,30,17,24,17,17,17,17,17,18,17,22,17,17,17,10,17,17,17,17,17,17,17,27,17,17,17,17,30,17,18,17,17,15,17,17,18,18,17,21,17,17,19,17,24,17,17,17,17,17,35,17,17,17,19,17,18,17,17,17,32,17,17,17,17,10,17,27,17,17,19,17,17,17,17,17,20,17,19,18,15,24,24,17,17,17,17,17,17,17,21,17,17,24,17,30,17,17,17,19,17,30,17,17,18,17,17,24,17,30,15,18,17,17,18,15,17,17,17,17,32,17,17,17,30,17,24,17,17,24,17,10,17,17,19,15,17,17,17,17,17,17,10,17,10,24,17,17,17,30,17,17,17,17,17,19,17,18,17,27,17,17,19,19,17,17,17,10,17,17,17,17,17,30,19,18,30,10,17,30,17,30,17,17,17,26,27,27,17,24,31,19,17,18,17,17,17,24,31,17,17,16,17,17,17,24,17,17,19,24,17,17,17,17,19,18,31,17,17,17,30,18,17,17,24,27,10,17,17,17,17,17,17,18,17,17,28,28,17,17,17,18,19,18,17,17,17,17,17,17,17,24,17,17,17,17,17,15,19,17,17,19,17,17,18,18,32,20,10,17,17,17,17,20,15,27,17,17,24,17,27,17,24,17,17,32,17,16,24,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,19,17,17,32,17,17,17,23,17,17,17,17,17,17,17,25,30,17,17,24,17,17,17,16,30,17,17,17,17,18,18,17,17,17,17,31,18,17,17,17,17,17,17,24,17,17,17,17,17,17,17,18,15,17,18,32,17,18,17,17,16,17,24,34,31,17,17,17,24,17,24,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,24,17,19,17,17,18,17,18,17,17,10,17,17,17,20,24,17,19,30,19,18,10,17,24,17,17,17,17,21,30,17,18,32,17,17,15,17,24,17,17,17,10,18,17,19,18,24,10,24,10,31,20,18,17,17,30,17,19,17,17,17,19,17,17,17,17,17,17,15,19,17,30,15,17,17,17,17,17,15,17,24,17,20,17,17,17,17,17,28,28,17,17,10,17,10,17,18,17,17,17,17,24,15,17,17,17,17,17,17,17,32,32,17,30,17,30,17,18,17,30,18,18,17,17,17,17,17,17,24,26,17,17,34,10,17,17,17,17,17,17,17,15,15,17,17,18,17,18,17,17,17,17,17,17,15,24,17,17,17,17,10,17,17,17,18,17,18,17,17,18,17,17,17,17,17,17,17,17,18,17,17,17,17,17,24,17,17,17,15,17,17,24,17,17,17,17,18,15,16,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,15,25,18,17,17,17,18,17,21,17,19,17,17,24,17,17,17,17,17,17,17,30,17,17,17,17,17,17,24,19,17,17,18,17,17,17,10,17,17,17,17,17,17,17,31,17,19,17,17,23,19,17,15,17,17,17,19,19,17,17,17,17,17,17,15,17,17,17,17,17,17,17,18,17,18,26,17,17,17,17,17,10,17,17,17,17,17,18,17,19,17,18,19,10,24,17,24,17,30,17,18,17,21,27,17,20,17,19,16,17,17,17,17,19,17,17,20,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,28,28,17,17,17,24,17,17,17,17,17,18,17,17,32,17,15,24,17,17,17,15,10,24,17,16,17,17,17,17,17,17,17,17,17,18,17,17,17,24,17,23,17,19,17,24,17,17,17,17,17,18,17,24,17,17,30,17,24,10,17,15,18,17,17,17,17,19,17,24,17,21,17,17,17,17,17,17,17,17,17,17,17,17,17,17,30,17,17,17,17,17,17,17,17,24,17,19,18,10,24,17,17,17,17,17,17,27,17,17,17,10,18,18,17,17,40,41],"timeDeltas":[39042,83,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,83,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,83,42,0,41,0,42,42,0,41,84,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,83,0,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41]} \ No newline at end of file diff --git a/bench-camelize.mixedCase-2024-11-24_12-17-49.cpuprofile b/bench-camelize.mixedCase-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..4202377 --- /dev/null +++ b/bench-camelize.mixedCase-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,10,20,28,30,31]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":1,"children":[8],"positionTicks":[{"line":136,"ticks":1}]},{"id":8,"callFrame":{"functionName":"","scriptId":"258","url":"node:inspector","lineNumber":62,"columnNumber":38},"hitCount":0,"children":[9]},{"id":9,"callFrame":{"functionName":"#onMessage","scriptId":"258","url":"node:inspector","lineNumber":80,"columnNumber":12},"hitCount":1,"positionTicks":[{"line":86,"ticks":1}]},{"id":10,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":904,"children":[11,14,29],"positionTicks":[{"line":323,"ticks":13},{"line":292,"ticks":43},{"line":314,"ticks":73},{"line":315,"ticks":189},{"line":327,"ticks":81},{"line":316,"ticks":468},{"line":297,"ticks":37}]},{"id":11,"callFrame":{"functionName":"y","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":78,"columnNumber":10},"hitCount":0,"children":[12]},{"id":12,"callFrame":{"functionName":"g","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":48,"columnNumber":13},"hitCount":0,"children":[13]},{"id":13,"callFrame":{"functionName":"L","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":20,"columnNumber":89},"hitCount":1,"positionTicks":[{"line":21,"ticks":1}]},{"id":14,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":1021,"children":[15,17],"positionTicks":[{"line":537,"ticks":15},{"line":302,"ticks":25},{"line":308,"ticks":22},{"line":309,"ticks":202},{"line":539,"ticks":24},{"line":304,"ticks":12},{"line":530,"ticks":88},{"line":139,"ticks":43},{"line":250,"ticks":59},{"line":311,"ticks":285},{"line":531,"ticks":8},{"line":301,"ticks":232},{"line":138,"ticks":6}]},{"id":15,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1888},"hitCount":229,"children":[16,23],"positionTicks":[{"line":2,"ticks":229}]},{"id":16,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":14744,"positionTicks":[{"line":2,"ticks":14744}]},{"id":23,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":71,"children":[24],"positionTicks":[{"line":2,"ticks":71}]},{"id":24,"callFrame":{"functionName":"camelize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":727},"hitCount":200,"children":[25],"positionTicks":[{"line":2,"ticks":200}]},{"id":25,"callFrame":{"functionName":"get","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":586},"hitCount":341,"children":[27],"positionTicks":[{"line":2,"ticks":341}]},{"id":27,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":815},"hitCount":117,"positionTicks":[{"line":2,"ticks":117}]},{"id":17,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":375,"children":[18,26],"positionTicks":[{"line":250,"ticks":375}]},{"id":18,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":290,"children":[19,21],"positionTicks":[{"line":139,"ticks":290}]},{"id":19,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1808,"positionTicks":[{"line":139,"ticks":1808}]},{"id":21,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":32,"children":[22],"positionTicks":[{"line":537,"ticks":32}]},{"id":22,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":195,"positionTicks":[{"line":530,"ticks":195}]},{"id":26,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":165,"positionTicks":[{"line":663,"ticks":1},{"line":668,"ticks":9},{"line":665,"ticks":15},{"line":662,"ticks":20},{"line":670,"ticks":10},{"line":669,"ticks":31},{"line":661,"ticks":55},{"line":666,"ticks":24}]},{"id":29,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1888},"hitCount":3,"positionTicks":[{"line":2,"ticks":3}]},{"id":20,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":778},{"id":28,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":286},{"id":30,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":25,"positionTicks":[{"line":301,"ticks":25}]},{"id":31,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[32]},{"id":32,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[33]},{"id":33,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[34]},{"id":34,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[35]},{"id":35,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":2,"positionTicks":[{"line":136,"ticks":2}]}],"startTime":293064155376,"endTime":293064811292,"samples":[7,7,9,13,16,16,16,16,16,16,15,19,16,16,17,16,20,14,16,16,16,16,16,16,20,22,16,19,16,16,16,16,16,10,16,16,16,16,16,16,16,16,16,16,16,16,25,16,16,16,18,14,16,16,16,16,16,16,16,16,20,14,16,19,17,16,16,16,16,20,14,16,10,20,14,16,19,16,16,14,16,14,20,16,16,16,16,16,17,16,16,16,16,10,16,26,17,20,16,16,16,16,16,16,14,16,16,16,16,16,16,16,10,16,14,16,16,25,16,19,19,16,16,16,16,16,16,15,20,16,16,16,22,16,16,18,14,16,16,22,19,16,16,16,16,14,16,16,10,19,16,16,27,19,16,16,16,16,16,19,16,16,16,16,16,16,10,16,19,16,19,28,28,28,28,16,16,16,25,15,16,16,16,16,10,10,16,16,10,16,19,19,16,15,16,16,16,16,29,17,20,16,16,16,16,16,16,16,16,19,16,19,19,22,16,18,16,19,16,16,16,16,16,16,16,16,19,25,16,16,16,16,16,16,16,16,23,16,14,14,14,25,16,16,16,19,19,25,16,20,16,16,14,16,16,16,16,16,16,16,16,24,16,16,16,16,16,16,16,19,16,16,14,14,16,16,16,16,14,16,16,16,16,16,16,16,16,25,18,17,16,16,16,16,16,15,14,16,14,16,16,19,16,16,16,26,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,25,16,10,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,14,16,25,16,16,16,16,17,16,16,16,19,14,16,16,16,16,20,14,14,16,16,19,16,14,19,16,16,17,16,16,16,16,16,16,10,16,16,16,16,16,16,16,17,20,16,16,16,16,16,15,16,27,16,16,16,28,28,28,28,28,19,16,18,16,19,16,21,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,10,14,24,16,16,16,16,16,25,16,16,16,19,16,16,20,17,16,16,16,16,16,16,20,16,16,16,16,16,16,16,14,16,19,16,16,16,15,16,16,16,16,16,14,25,19,16,16,14,10,16,10,16,16,18,16,16,16,20,16,16,16,16,16,16,16,16,16,16,16,16,16,14,16,16,18,16,16,16,14,16,19,16,16,16,16,20,16,19,16,16,16,16,17,16,16,10,16,19,16,16,16,24,16,16,16,16,16,14,16,16,16,22,16,16,16,16,16,22,16,16,16,15,10,16,16,16,16,16,16,14,14,14,16,16,10,16,16,27,16,16,19,16,16,16,27,17,16,16,16,16,10,14,16,16,30,16,16,20,16,10,16,16,16,16,16,16,16,16,16,16,19,16,16,19,16,16,10,16,16,16,16,16,16,16,16,16,20,16,16,16,16,16,16,16,16,19,25,10,14,16,16,16,16,16,16,16,22,16,16,16,19,16,28,28,28,16,16,16,16,16,16,25,16,16,10,16,16,16,16,15,16,16,25,16,16,16,16,16,16,16,16,16,16,18,16,16,20,16,18,20,25,16,16,16,19,20,16,16,16,16,16,14,16,16,16,16,16,10,16,18,16,19,16,14,16,16,20,16,16,16,16,18,16,16,16,16,10,16,16,16,17,19,16,16,14,16,19,25,16,16,16,16,16,17,16,16,16,19,16,14,16,16,16,16,16,19,16,16,16,16,19,19,16,14,16,16,14,14,19,16,16,16,14,16,16,19,16,16,14,25,17,16,16,17,16,16,16,16,20,16,16,16,16,25,20,20,26,16,16,19,14,16,18,14,16,16,16,16,20,16,16,26,16,16,16,16,16,16,16,16,19,16,16,16,16,16,19,20,17,10,16,16,16,22,16,16,16,16,16,10,16,25,16,19,16,16,16,19,14,19,16,16,16,16,16,16,18,19,16,14,14,14,14,16,18,16,16,19,19,19,24,16,26,16,16,16,16,16,16,16,16,10,16,19,19,16,19,16,16,16,16,10,16,16,28,28,28,16,20,20,16,16,23,16,16,16,16,16,14,25,20,16,16,17,16,16,15,19,16,19,16,16,16,19,16,16,16,16,16,16,17,10,16,16,16,16,16,16,16,23,16,16,16,16,16,16,16,16,16,16,16,16,17,18,15,16,14,16,20,19,16,19,16,16,16,19,16,16,16,16,23,16,16,16,16,16,16,16,14,19,16,16,17,16,16,20,10,16,22,10,16,16,16,16,16,16,16,16,16,17,16,16,16,16,14,16,16,16,18,16,16,16,10,16,16,24,16,16,16,16,16,16,16,17,19,10,19,16,16,16,16,16,19,14,20,16,25,16,19,16,16,19,19,24,16,16,19,27,16,10,16,24,16,16,16,18,16,16,15,19,16,16,16,16,20,16,16,19,16,16,14,14,19,16,16,14,16,16,16,19,16,10,25,15,16,16,16,16,16,16,19,16,17,24,10,16,16,16,16,16,16,16,16,16,16,20,16,20,24,16,16,10,16,19,20,16,19,16,28,28,16,10,19,16,17,16,16,16,15,22,16,16,16,19,16,16,16,15,16,16,16,19,16,19,17,16,10,16,16,16,10,16,18,16,16,16,16,16,16,20,16,18,16,14,16,16,19,16,19,16,16,19,16,16,19,16,18,16,19,10,16,16,25,14,16,30,27,16,14,16,16,10,16,19,16,16,19,15,16,16,16,16,16,16,16,16,16,16,16,16,16,22,16,16,16,14,16,19,16,19,16,16,16,19,30,25,16,16,19,21,16,20,16,16,16,17,16,16,16,22,16,16,16,16,16,16,16,16,19,16,16,16,17,10,16,16,16,19,16,16,19,16,10,14,14,14,14,15,16,16,16,10,17,16,16,16,16,19,19,16,16,16,19,16,16,16,10,16,16,25,25,16,16,19,16,16,14,16,16,20,16,16,16,16,16,16,16,16,16,10,16,16,15,16,16,10,16,16,16,16,16,16,16,16,16,19,16,19,16,16,16,16,10,10,16,16,19,28,28,28,16,16,17,16,16,16,16,27,16,16,16,16,24,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,17,16,16,16,16,16,17,16,23,20,16,16,15,16,16,16,16,16,16,16,16,16,16,20,16,16,16,16,16,16,16,16,16,16,16,10,20,16,10,10,16,16,16,16,16,16,10,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,19,16,14,16,16,16,16,16,16,16,10,10,16,16,20,16,19,16,16,16,19,17,19,16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,25,18,16,16,16,16,16,16,16,16,16,16,16,20,19,16,16,16,16,16,19,16,16,26,24,16,19,10,16,16,19,16,14,20,16,16,19,16,19,16,16,16,16,16,16,16,16,16,16,16,16,10,16,16,16,16,16,16,16,16,16,18,16,16,16,28,28,16,16,14,19,16,10,16,16,16,16,10,10,20,10,16,16,24,16,16,15,16,16,10,16,16,16,16,16,16,16,16,16,16,19,25,16,16,16,16,20,16,10,16,16,19,16,20,16,15,16,14,16,16,16,24,16,16,16,16,16,16,16,16,19,18,16,14,14,16,16,16,16,16,16,16,16,16,16,16,16,16,15,20,16,16,16,17,16,17,19,16,16,16,16,16,16,15,20,16,16,16,16,16,16,14,16,16,16,14,19,16,16,14,16,21,16,20,10,16,16,16,19,16,18,19,16,10,16,24,16,16,16,16,16,20,18,16,16,16,16,16,14,20,16,16,18,16,16,20,14,16,16,16,16,16,16,16,16,16,16,22,16,16,16,16,16,17,16,16,16,16,16,16,14,16,16,20,16,16,16,16,16,10,24,16,14,16,20,16,16,16,18,19,16,16,14,27,16,16,16,16,16,16,16,16,16,16,16,16,10,20,19,19,16,20,16,16,16,14,16,16,19,16,28,28,16,16,16,16,16,16,16,16,16,22,16,10,16,19,16,16,16,19,16,16,24,20,16,10,10,16,16,14,10,16,14,16,14,16,16,10,16,19,16,16,19,16,16,16,20,16,16,20,10,16,16,14,10,16,16,16,10,16,25,16,16,16,16,16,16,16,16,16,16,16,16,16,14,16,16,16,16,16,19,19,16,15,16,16,16,19,16,16,24,14,14,14,14,14,14,14,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,19,16,16,16,19,16,10,16,14,16,16,16,19,20,16,16,19,16,16,16,16,16,16,16,16,16,16,10,16,16,16,16,16,16,16,16,16,17,14,14,16,16,16,19,19,16,16,10,10,16,16,16,16,16,16,16,16,10,16,16,16,16,16,14,20,16,16,16,16,16,16,16,16,16,16,16,19,16,15,16,16,16,16,14,19,16,10,16,16,14,19,25,16,16,16,16,16,16,16,10,16,16,16,16,16,10,17,15,14,16,16,16,16,14,16,16,28,28,28,19,14,16,23,26,16,19,16,16,16,16,20,16,16,10,16,20,16,19,16,19,16,16,18,16,14,16,16,10,16,15,16,16,17,16,16,10,16,18,19,16,16,16,16,19,16,16,19,16,19,16,22,20,16,17,16,16,14,16,16,16,16,16,16,14,16,16,16,19,16,16,24,16,10,19,16,17,16,16,16,16,16,16,16,10,16,14,18,16,16,16,16,19,16,16,16,16,16,16,26,16,16,16,16,16,16,16,16,14,16,16,16,22,16,16,16,16,16,16,16,24,16,19,20,26,16,16,16,16,16,16,16,16,16,22,16,10,16,20,16,16,19,16,16,14,16,16,16,16,16,19,16,16,20,26,16,19,16,25,16,16,16,16,16,19,16,16,16,18,10,14,16,16,16,16,16,14,16,15,16,16,16,16,16,16,16,16,16,16,16,10,16,16,16,15,16,16,16,20,16,16,19,16,16,19,16,16,14,25,16,16,16,16,16,16,10,26,16,14,16,14,25,14,28,28,28,16,19,16,16,16,16,16,16,16,16,16,16,16,16,16,20,14,16,16,16,16,14,19,16,16,16,16,10,16,16,16,16,16,16,16,10,16,14,16,16,19,16,10,16,16,16,16,16,15,16,16,16,16,16,16,16,19,16,16,14,16,20,22,16,16,16,16,16,16,16,16,27,16,16,25,16,16,16,15,14,16,16,16,16,16,16,16,14,10,17,16,16,16,16,16,16,16,14,20,16,19,16,14,16,10,27,16,18,20,16,16,16,16,16,22,19,20,22,16,14,10,16,19,16,16,14,16,16,19,16,19,19,16,16,16,20,10,16,16,18,19,19,16,10,16,14,16,16,16,16,16,10,16,16,10,16,16,10,16,16,16,10,16,16,16,20,16,16,20,16,16,16,16,14,16,16,16,10,17,14,16,10,16,16,10,16,16,16,16,16,16,16,20,19,16,16,16,16,16,16,16,16,16,16,16,16,10,16,16,16,16,16,19,16,16,18,16,16,16,16,22,28,28,28,19,10,16,16,16,20,19,25,16,16,10,20,16,16,19,16,20,15,19,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,18,16,16,16,10,16,19,16,19,16,16,16,16,16,15,19,16,19,16,16,19,16,16,16,16,16,16,20,22,16,16,16,16,16,16,25,17,25,10,16,20,16,16,20,16,16,16,16,16,16,16,19,16,19,10,16,14,16,25,16,16,16,16,16,16,16,16,16,15,16,25,16,16,16,18,16,16,16,16,16,16,16,16,18,16,16,16,14,16,16,16,16,16,10,19,16,16,16,16,16,22,19,16,20,16,16,16,16,16,17,16,16,16,16,19,14,16,25,19,16,22,22,25,16,16,19,16,10,16,16,16,16,16,16,16,16,16,16,16,16,27,17,16,21,16,17,16,20,16,16,16,16,16,16,10,19,16,16,16,19,16,10,16,16,16,16,16,16,16,10,16,16,16,16,17,16,16,16,16,16,20,16,16,16,16,15,16,16,16,16,28,28,25,19,16,16,14,25,16,16,16,16,16,16,16,19,16,16,16,20,16,16,16,16,10,16,16,16,16,16,22,16,16,16,18,18,16,16,16,19,16,16,16,10,16,16,16,25,18,19,16,16,10,16,26,16,20,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,10,15,16,16,22,16,19,10,16,16,16,10,20,16,20,16,16,16,16,16,16,20,16,16,16,16,16,16,19,16,16,16,19,16,16,16,16,16,14,14,14,14,14,14,14,14,16,18,16,10,16,16,26,10,10,27,15,16,16,14,19,16,16,16,16,19,16,25,16,14,16,16,19,16,26,16,16,16,16,10,19,16,10,16,20,16,16,10,16,16,16,10,20,16,14,16,16,16,19,16,16,16,16,16,16,16,16,19,16,16,16,15,16,16,16,16,16,16,16,19,20,16,16,16,16,16,16,16,19,16,16,16,18,20,16,16,16,16,20,23,16,16,16,20,10,16,16,14,16,23,16,16,20,16,16,10,16,16,16,16,16,28,28,16,20,16,16,16,16,16,16,25,16,16,16,16,16,18,16,16,16,19,10,20,25,16,20,16,16,15,17,16,16,16,19,16,16,16,16,16,25,16,16,16,16,16,24,16,16,18,16,16,19,16,10,16,16,16,22,16,16,20,28,16,16,19,20,16,14,16,16,14,16,16,25,19,16,16,16,16,16,16,16,16,24,20,16,17,24,14,16,16,16,16,19,14,19,16,19,16,16,16,16,16,16,16,16,10,16,16,16,16,20,16,16,16,16,10,16,20,16,16,16,16,16,16,16,16,19,16,16,25,16,19,16,16,16,16,14,16,16,16,16,16,19,16,16,16,16,16,20,16,16,16,16,16,27,16,20,16,16,16,16,22,16,14,16,16,16,16,16,16,16,20,10,19,16,16,16,16,16,16,16,16,19,16,16,16,16,17,16,16,16,16,16,16,19,16,16,16,16,19,16,16,19,16,10,16,14,10,19,16,10,28,28,16,16,16,16,16,16,16,19,16,16,16,16,16,19,20,25,16,16,16,19,16,16,16,14,16,16,16,16,19,16,16,16,16,16,16,16,18,19,10,16,14,14,22,16,16,16,19,16,10,16,16,16,16,16,16,22,16,19,16,16,16,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,20,16,16,16,16,10,16,10,16,10,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,25,16,16,16,16,19,16,16,14,16,16,16,16,19,16,16,19,16,16,19,16,16,16,16,16,16,16,19,25,18,19,16,16,16,14,16,19,16,19,16,19,16,16,14,14,16,16,16,18,16,16,16,16,16,25,16,16,19,16,16,10,16,10,20,16,16,27,16,15,25,16,16,16,16,19,16,16,16,10,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,14,16,17,16,16,16,16,16,20,27,16,16,16,16,16,19,28,28,16,16,20,16,19,16,16,17,16,16,16,16,16,16,16,16,27,16,19,16,10,16,14,16,16,16,19,16,16,16,10,16,21,19,16,16,10,16,16,17,14,16,16,16,16,16,20,16,16,10,19,16,16,16,16,16,10,19,16,16,16,20,16,16,19,16,18,16,16,16,19,16,18,20,10,16,16,16,16,16,16,16,16,16,16,10,16,16,16,27,16,16,19,14,10,16,10,16,16,16,16,16,10,16,20,16,20,16,16,16,16,16,16,19,16,16,16,16,16,16,16,10,16,16,16,16,16,16,16,16,19,16,14,15,16,16,16,19,16,20,16,16,25,16,16,16,16,16,16,16,16,16,16,16,19,16,16,10,14,16,16,15,17,16,16,26,16,20,16,16,16,16,16,23,16,16,16,16,16,16,17,19,16,16,16,22,16,16,16,16,16,19,16,16,16,10,18,19,16,25,16,16,16,20,19,19,16,16,16,16,16,14,15,16,16,16,16,14,16,25,28,28,25,16,14,14,16,16,16,16,16,16,20,18,16,10,16,19,16,18,16,16,16,16,18,19,14,16,20,16,19,16,16,16,16,16,16,16,16,16,16,16,19,19,16,16,22,16,16,16,16,16,16,16,16,16,27,16,16,16,16,16,16,25,16,14,16,19,16,16,16,16,14,16,16,16,10,16,10,16,16,10,16,16,16,19,16,16,10,16,16,16,16,25,16,14,16,16,16,19,16,16,16,16,16,27,16,16,16,16,16,16,15,16,19,16,16,16,16,16,15,19,16,14,16,22,16,16,16,16,16,16,16,16,16,16,10,16,20,20,16,16,16,16,16,19,16,16,14,16,16,10,15,16,16,16,16,17,19,16,16,16,16,14,16,16,10,10,16,16,16,16,16,16,16,16,20,16,16,16,16,16,16,16,10,16,20,16,16,16,10,16,16,16,20,16,19,16,19,21,16,16,16,16,19,18,16,16,17,16,16,16,26,19,16,16,19,16,16,16,16,16,16,20,28,28,16,16,26,16,16,16,18,16,16,16,16,16,16,16,16,21,16,16,16,16,16,16,16,16,17,16,16,16,16,20,16,16,16,16,16,16,26,16,16,16,19,16,16,16,16,16,16,16,20,10,16,16,16,19,16,19,16,16,10,16,16,16,16,16,16,16,16,18,15,16,16,16,16,25,19,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,18,25,16,16,24,16,16,16,16,16,16,16,16,23,16,20,19,20,22,16,16,10,19,14,16,16,16,25,16,16,27,16,16,16,16,16,19,16,27,16,14,16,16,20,16,16,16,19,20,16,16,16,16,16,16,16,16,16,20,16,16,16,16,16,19,16,16,10,16,16,16,16,26,19,19,20,19,18,24,19,16,16,16,16,19,16,16,10,14,16,16,16,16,10,16,16,16,14,16,16,16,16,16,16,16,16,19,16,16,20,20,16,19,16,19,14,16,22,16,25,16,16,28,28,28,16,19,16,19,14,19,16,19,16,16,16,16,16,20,16,16,16,16,16,20,16,19,19,16,20,16,16,16,16,16,24,19,16,10,23,16,16,16,16,10,16,16,20,16,16,16,24,16,14,20,16,16,16,16,23,20,16,22,16,16,16,16,16,16,19,16,16,16,16,22,16,10,24,16,16,16,16,20,16,16,16,16,10,16,16,16,19,16,16,16,16,16,18,16,16,20,16,27,20,16,16,16,19,16,16,17,16,15,16,16,16,16,16,16,16,16,16,16,17,16,19,16,16,16,24,16,16,16,16,15,16,16,16,17,14,16,14,16,16,16,16,16,16,20,16,16,16,27,16,16,16,10,16,16,16,16,16,16,16,16,16,14,14,14,14,14,14,14,14,14,14,14,14,14,10,16,16,19,16,16,19,24,16,25,16,20,16,16,16,16,24,16,16,16,16,16,16,16,16,16,16,20,16,16,16,19,10,16,16,10,16,24,16,24,10,16,16,16,16,16,16,10,16,19,16,16,20,16,19,16,16,10,19,16,16,16,16,24,16,16,16,16,16,19,16,20,16,16,18,10,17,16,16,16,20,16,16,16,20,16,10,16,16,16,16,14,14,28,28,28,19,16,16,17,25,20,16,19,27,14,20,16,16,16,16,16,16,10,16,16,16,16,16,26,16,16,19,16,16,16,16,16,16,16,16,16,16,17,16,16,18,16,19,16,19,19,16,16,24,16,16,16,16,16,19,16,19,19,14,19,16,16,16,20,16,16,17,16,19,16,16,16,16,16,16,14,16,16,16,17,19,16,16,23,16,16,16,19,16,16,17,20,14,16,16,19,16,18,14,16,16,25,16,16,14,16,16,16,16,14,16,16,16,16,16,16,16,16,16,26,16,22,14,10,15,16,16,16,16,16,16,16,14,18,16,16,16,16,20,15,16,19,16,16,16,14,16,16,17,25,14,16,16,16,19,16,19,16,20,16,16,16,19,20,16,16,20,16,18,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,16,16,16,19,16,14,10,22,16,15,19,16,16,16,16,16,19,20,19,16,16,10,28,28,19,16,16,16,16,19,16,10,16,16,16,16,25,16,16,16,16,16,16,26,16,16,22,16,16,17,16,24,16,16,14,16,16,16,16,14,16,19,16,16,16,16,16,16,16,10,16,16,16,16,16,18,16,19,16,16,16,16,20,16,16,16,16,19,16,16,16,16,22,16,16,10,22,20,16,16,16,16,14,10,16,16,16,20,16,16,16,16,16,16,16,19,16,19,17,16,14,19,22,25,10,16,16,16,16,25,16,16,16,19,16,16,20,17,16,22,19,16,10,16,19,16,18,16,16,16,24,16,16,19,16,16,19,10,16,16,16,16,16,16,16,16,16,16,16,16,16,20,10,16,19,20,14,16,16,16,16,16,16,10,16,16,16,16,16,16,16,17,16,16,16,20,16,16,16,16,16,22,10,16,16,19,16,14,15,10,19,16,19,19,16,16,16,16,24,19,16,16,16,16,16,16,27,20,16,14,21,20,16,16,16,19,16,16,19,16,16,19,19,16,19,16,20,16,28,28,28,19,16,16,16,16,19,16,16,16,10,16,16,16,16,16,16,19,16,16,16,16,16,16,16,25,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,16,16,25,16,16,16,16,16,10,16,16,16,16,16,16,16,16,16,16,16,17,16,16,16,16,16,18,16,19,16,14,18,16,16,16,16,16,16,20,19,14,16,10,16,10,16,20,16,16,22,14,10,16,16,14,16,16,16,10,16,16,16,16,15,19,16,25,16,16,16,16,16,16,16,19,16,15,16,16,16,16,18,17,18,16,16,16,16,26,16,16,20,16,16,16,18,16,16,16,16,16,16,19,19,16,22,16,16,16,14,16,16,16,19,16,16,16,20,16,16,16,15,16,16,16,14,16,16,17,18,16,16,20,16,20,16,16,16,10,16,16,22,23,16,16,16,16,16,16,16,16,16,16,10,16,16,19,16,16,16,19,20,16,16,10,16,14,16,16,16,16,16,16,16,16,25,16,16,16,16,14,16,16,16,20,16,16,16,17,16,27,16,16,16,25,16,10,27,14,16,28,28,16,16,16,14,20,16,16,16,16,16,14,16,16,20,16,10,10,16,14,16,16,19,16,16,16,16,16,16,20,16,23,24,16,16,16,16,16,16,19,16,16,16,16,20,16,16,17,16,18,16,14,16,16,16,18,16,16,16,16,16,25,19,16,19,16,16,19,24,20,16,16,16,25,19,16,16,16,16,16,19,16,16,16,19,14,16,16,16,16,20,16,16,16,16,16,16,26,10,16,16,16,17,16,16,16,16,22,14,24,16,10,16,16,19,22,19,16,16,21,16,19,16,16,16,16,16,16,16,14,16,15,16,16,14,16,24,16,19,16,16,26,25,16,16,26,16,16,16,16,16,19,16,16,16,16,16,16,16,17,10,16,16,16,16,19,19,16,16,16,20,16,16,26,10,16,24,16,16,19,16,14,16,10,16,16,19,16,16,14,16,14,16,16,16,16,16,27,16,27,16,26,16,16,16,19,16,14,16,16,14,24,16,16,14,16,16,16,10,16,16,16,14,10,16,16,16,16,16,16,16,16,19,19,16,16,16,16,16,16,16,16,14,16,28,28,16,16,16,16,16,16,19,19,16,16,16,16,16,16,20,16,16,14,19,16,16,14,20,20,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,20,14,20,16,19,16,16,16,14,16,16,16,26,16,14,16,16,25,16,14,16,20,19,16,16,16,16,16,16,16,18,16,10,16,16,17,16,16,16,16,16,16,16,16,16,26,16,16,16,16,16,20,16,16,16,16,16,16,16,16,16,16,14,19,25,24,16,19,20,16,16,19,16,16,25,16,16,16,16,16,20,16,16,16,16,22,10,10,16,20,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,16,16,19,19,19,16,16,16,16,16,16,16,20,16,16,16,16,16,16,16,16,16,16,16,16,16,20,16,16,16,16,16,16,19,16,16,16,16,16,16,16,16,20,16,16,16,17,10,16,16,16,23,27,24,16,19,19,16,16,16,16,16,16,14,16,22,19,28,28,28,19,25,14,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,15,16,16,16,16,16,16,16,15,16,16,16,19,16,19,16,16,16,16,20,27,17,16,16,19,16,16,16,16,16,18,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,10,16,16,19,16,16,16,19,16,16,16,16,16,16,16,16,19,16,16,16,19,16,19,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,10,16,25,20,16,14,16,15,16,16,16,20,16,16,16,16,16,16,20,16,19,14,19,16,16,14,19,16,16,16,16,16,17,16,10,23,19,14,22,16,16,16,16,18,16,16,19,26,16,25,16,16,16,19,16,16,20,16,19,16,16,16,16,16,16,17,16,20,25,19,14,16,16,10,16,19,15,16,19,10,16,16,14,16,16,16,16,16,16,16,16,19,26,16,16,16,16,16,20,23,16,16,16,10,19,16,16,16,16,16,16,16,10,16,19,28,19,16,16,16,16,16,16,16,16,16,28,28,16,14,16,21,16,16,16,16,17,16,16,16,16,16,19,16,16,16,10,16,10,16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,25,16,15,16,16,16,16,16,20,16,19,14,19,16,25,10,16,16,16,14,22,16,16,16,16,17,16,16,16,16,16,16,16,24,16,20,20,24,16,16,16,16,10,24,16,16,16,16,16,16,16,20,16,16,16,16,19,22,16,16,10,16,24,16,16,16,16,16,16,16,16,16,16,16,16,16,14,16,16,16,19,16,16,16,16,18,16,16,16,16,16,19,19,16,16,10,10,16,16,16,16,16,19,16,16,16,16,19,16,16,15,16,16,16,16,16,19,16,16,16,16,16,16,19,16,16,16,10,16,16,16,16,16,19,16,16,14,17,16,16,16,20,17,15,16,16,16,16,16,16,16,16,17,19,16,16,16,16,16,16,17,19,24,20,16,16,16,19,28,28,16,16,19,16,16,16,26,16,17,26,10,16,25,16,16,14,16,14,16,19,20,16,16,16,16,16,16,16,16,16,19,16,19,16,16,16,16,16,15,25,16,25,16,16,18,16,16,16,16,16,16,16,16,16,14,19,16,14,16,16,16,16,19,16,22,16,16,25,16,16,18,17,16,16,16,16,16,16,10,20,16,18,16,16,16,16,16,16,16,16,16,16,10,16,20,25,16,19,25,16,16,15,16,20,19,19,16,14,16,10,16,19,16,16,16,16,16,19,17,14,16,16,16,16,19,16,16,19,16,19,19,24,16,19,16,19,16,16,16,16,16,16,16,16,16,16,16,16,16,18,16,18,16,16,19,16,19,16,16,16,20,16,16,16,16,16,16,16,10,19,16,16,26,16,14,16,16,19,16,16,16,16,16,16,16,16,16,16,19,15,16,16,16,16,19,16,23,29,16,16,16,16,17,16,24,25,16,16,14,10,16,16,23,16,16,16,16,16,16,16,16,16,24,16,16,16,28,28,28,16,16,16,16,16,16,16,16,16,16,10,27,18,16,16,16,19,16,24,20,16,10,27,16,16,19,16,19,14,16,15,16,10,14,18,16,16,17,16,16,16,16,16,16,19,19,16,16,19,16,16,14,16,16,16,19,16,16,16,16,10,10,16,16,14,16,16,16,16,16,19,19,14,16,16,16,16,10,16,16,16,16,16,16,19,19,23,19,16,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,27,16,19,16,14,20,16,16,10,10,16,15,20,16,17,16,16,16,16,16,16,16,16,16,14,16,10,19,25,14,10,16,19,14,10,19,16,19,16,16,21,16,16,10,15,16,16,27,16,20,10,16,16,16,16,16,25,16,23,16,20,16,16,16,16,16,16,25,16,16,16,16,16,25,16,19,16,16,16,16,16,14,17,19,16,16,19,27,16,10,16,16,16,16,25,16,16,20,18,16,16,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,26,20,16,16,19,14,16,25,16,20,10,16,16,16,10,16,16,16,16,15,16,17,16,16,18,16,16,25,16,16,10,16,14,16,16,16,16,16,16,19,16,16,28,28,28,10,16,16,16,20,18,20,16,16,16,10,16,16,16,16,16,16,16,16,16,16,16,16,16,20,16,16,19,19,16,16,16,16,16,16,16,16,16,16,14,23,16,16,16,14,14,16,16,16,16,16,19,16,16,16,16,16,16,16,19,16,16,16,16,25,16,16,16,19,16,16,10,16,16,15,16,16,16,16,16,16,14,20,16,16,14,16,16,16,16,16,25,16,16,16,16,16,16,16,16,19,16,16,16,19,16,15,16,19,16,16,16,16,16,14,16,19,16,16,19,16,16,10,16,16,16,16,16,16,16,16,16,16,16,16,16,18,20,16,16,14,16,16,16,16,14,24,26,16,10,18,16,16,16,16,16,16,15,16,16,16,16,17,16,10,16,20,10,10,16,16,16,16,16,19,16,16,16,26,16,16,19,16,16,19,20,16,16,16,10,16,16,17,19,19,16,10,16,16,16,16,16,16,16,15,16,16,16,16,16,26,20,16,16,16,16,10,16,16,28,28,20,16,16,16,16,16,16,20,19,16,16,16,24,16,16,17,16,16,16,20,16,14,16,16,16,16,16,16,10,16,16,16,19,16,16,20,16,16,16,16,19,16,16,16,16,16,26,16,19,16,16,16,16,16,16,16,14,16,16,16,10,16,16,16,16,16,16,16,16,16,16,23,10,22,21,16,20,16,16,16,16,16,16,16,20,19,16,16,19,22,19,25,16,16,16,16,19,14,19,16,16,20,19,16,16,16,14,16,16,16,16,16,16,16,16,16,19,14,26,19,16,16,16,14,16,16,16,16,19,18,25,16,14,16,19,16,10,16,16,14,16,16,16,16,14,16,16,16,19,26,16,19,19,19,16,16,16,16,16,19,19,16,16,16,17,16,14,19,16,16,20,16,19,16,18,16,14,16,16,16,16,16,24,26,16,16,16,16,19,16,16,10,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,19,28,28,28,16,16,14,10,25,16,16,16,18,16,16,16,16,16,16,16,16,16,16,17,16,16,16,16,16,16,16,20,24,25,16,16,16,16,16,18,10,16,16,16,16,16,16,16,16,16,16,15,25,16,16,20,16,10,16,10,16,16,16,16,19,16,16,16,10,17,16,16,16,22,14,16,25,16,20,25,16,22,23,16,16,16,16,16,16,16,16,16,16,16,16,18,19,16,20,16,16,16,16,16,16,16,14,16,16,16,15,16,16,16,16,16,16,19,20,16,16,16,16,16,16,16,16,16,19,16,10,16,16,16,10,16,16,16,16,27,10,16,19,16,16,16,19,10,10,16,14,16,16,16,16,19,16,14,16,19,16,16,16,18,16,10,26,20,16,16,20,16,26,16,16,16,20,16,17,16,16,16,16,14,16,16,16,19,16,25,16,16,16,16,14,14,16,16,16,16,16,16,16,19,16,17,16,16,16,16,16,16,16,16,16,15,25,16,14,16,10,16,16,16,28,28,16,14,19,16,21,16,16,16,26,16,10,10,16,16,22,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,15,16,16,16,16,24,16,16,16,25,16,14,16,16,16,16,16,19,16,16,14,19,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,10,16,16,16,16,19,16,16,19,16,16,16,15,16,16,16,19,16,16,16,16,16,14,16,16,16,16,16,19,16,16,16,16,16,16,24,16,16,16,20,18,19,16,16,16,16,20,16,16,16,10,16,16,19,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,20,16,20,16,10,17,10,16,10,16,19,16,16,19,18,14,17,16,16,16,10,16,16,16,19,16,16,16,16,14,19,14,16,16,20,16,26,10,16,22,16,17,19,16,16,16,16,16,16,16,16,16,18,20,16,16,26,19,15,16,14,16,16,16,16,16,16,16,27,16,16,26,22,16,17,16,16,16,16,16,28,28,28,20,16,16,16,19,16,16,16,14,20,19,20,16,16,16,19,16,16,16,16,16,20,16,24,16,16,16,14,16,16,19,16,16,16,16,16,20,14,16,16,16,16,16,20,16,19,20,16,16,16,16,19,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,16,10,16,16,16,16,16,19,16,16,14,16,16,19,16,16,16,16,16,16,16,16,16,19,16,17,19,16,16,16,16,16,19,20,16,16,16,16,16,16,16,16,16,19,16,16,19,19,10,16,16,30,10,17,19,20,15,16,19,10,16,16,16,24,20,16,16,16,16,16,16,16,16,16,10,16,20,16,16,16,16,26,16,19,26,16,14,16,22,25,16,19,16,19,16,16,16,16,16,16,16,16,16,22,16,16,16,15,16,16,20,16,10,16,16,17,10,16,16,17,16,19,19,16,16,16,16,16,19,16,14,20,16,16,16,20,16,19,14,16,16,16,16,16,28,28,16,16,16,16,10,16,18,16,16,16,16,19,16,16,16,16,16,17,16,16,16,10,10,16,19,16,16,16,16,16,10,16,16,19,27,16,16,16,19,25,27,19,19,16,16,18,16,19,16,16,16,20,16,16,16,16,16,16,10,10,19,16,16,10,16,16,16,10,16,16,16,16,19,16,19,16,16,16,16,16,16,16,16,16,22,14,16,16,10,16,16,16,19,16,16,14,16,16,20,16,19,16,14,24,16,16,14,16,20,10,16,19,17,16,16,16,26,23,16,16,16,16,16,16,16,16,28,16,16,16,16,20,16,16,16,16,16,16,16,16,16,16,17,16,20,19,19,16,16,16,16,16,16,16,10,20,14,16,16,16,16,17,16,19,20,16,17,16,16,16,26,16,19,25,20,10,19,16,10,14,25,16,20,16,16,16,16,16,16,17,16,10,16,22,16,16,19,16,17,16,16,19,16,10,16,16,16,16,25,18,27,16,10,14,16,16,16,16,16,28,28,16,16,17,16,16,10,16,27,20,20,17,10,16,16,16,16,16,16,16,16,16,16,16,16,25,16,16,17,16,16,19,16,16,16,16,16,16,16,25,16,16,16,16,17,16,16,16,16,16,16,16,16,17,16,19,16,10,16,16,10,14,26,16,19,16,16,16,16,19,14,16,19,16,16,18,18,16,16,16,16,20,17,16,20,16,19,19,16,16,16,26,16,16,16,20,16,16,16,14,16,30,16,19,16,16,20,16,16,20,16,16,16,16,16,14,20,16,16,25,20,16,16,16,16,16,16,16,16,26,16,16,16,16,16,10,16,10,17,16,16,20,16,25,16,16,16,18,16,16,16,16,10,16,16,16,19,16,16,16,14,19,16,16,16,16,16,16,20,16,16,16,16,17,20,16,16,19,16,17,16,16,16,16,20,18,16,16,16,20,24,16,14,16,16,24,15,16,19,17,16,19,16,16,18,16,16,16,14,16,16,19,28,28,28,28,19,16,16,16,16,16,16,19,20,16,16,10,16,16,16,16,24,19,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,26,16,16,20,16,20,16,16,16,19,10,19,20,24,16,20,16,16,16,23,20,16,16,19,16,18,16,16,16,10,16,16,24,16,16,16,19,19,16,16,16,20,16,16,16,16,19,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,16,14,19,15,19,16,10,17,16,16,16,16,10,19,16,25,25,16,22,14,16,20,16,16,16,16,16,16,16,27,16,16,16,16,16,16,19,19,16,10,28,16,16,16,16,16,16,16,16,19,16,26,16,26,16,16,16,22,16,16,19,16,16,16,16,16,16,16,16,19,19,14,16,16,14,16,20,10,19,16,19,16,16,16,19,16,16,16,16,24,16,16,16,16,27,16,16,16,16,16,16,20,16,16,16,16,16,16,26,28,28,19,16,19,16,27,16,16,19,19,16,16,16,16,16,16,16,16,26,16,10,16,16,10,10,21,25,10,16,16,16,10,16,16,22,16,16,19,16,16,20,16,16,16,16,16,16,16,16,16,16,16,19,19,16,16,16,16,16,16,16,16,27,16,20,16,16,16,24,25,17,16,14,16,16,25,16,10,16,16,25,16,20,16,16,10,16,16,16,14,16,22,16,16,16,19,19,16,16,14,16,16,17,19,19,10,10,16,14,24,19,10,28,16,20,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,14,19,16,16,14,16,14,16,16,16,16,16,10,19,16,10,16,16,16,14,10,16,16,16,16,16,10,24,16,18,16,16,16,16,16,14,16,16,16,16,19,16,16,14,26,16,16,16,16,16,16,16,16,21,19,16,19,16,16,10,16,17,19,19,16,16,14,16,16,16,18,19,16,16,25,16,16,16,17,16,28,28,28,19,19,16,16,16,19,10,16,15,16,16,18,16,19,16,30,16,16,19,10,16,16,16,16,16,16,14,16,16,16,16,16,16,19,16,10,16,16,16,16,16,16,16,19,20,16,16,20,15,16,16,16,16,16,16,26,20,18,16,19,16,16,16,14,16,16,16,16,16,16,10,16,16,16,16,16,16,16,16,16,14,16,16,16,16,24,16,16,26,16,16,16,16,16,16,25,16,16,19,20,16,10,16,16,16,16,16,16,19,14,16,19,16,14,16,19,16,19,16,16,16,20,16,16,16,16,16,14,16,16,16,16,16,10,16,16,16,16,16,14,19,16,25,16,17,27,16,16,19,14,16,16,19,26,16,16,16,14,19,16,16,16,18,16,16,19,16,16,16,16,19,16,16,16,14,16,16,20,16,16,16,16,16,16,16,16,20,16,16,19,16,10,20,16,16,16,16,19,16,16,16,16,14,16,16,10,16,16,16,16,16,16,20,28,28,16,16,14,16,16,26,16,10,16,23,16,10,19,17,20,24,16,16,10,16,16,16,16,16,19,19,20,16,20,17,16,16,16,16,10,16,24,16,16,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,20,25,19,16,16,16,16,16,19,16,16,16,16,16,16,19,19,25,20,16,16,16,16,20,20,16,16,19,16,10,16,22,16,19,16,16,16,15,16,16,16,16,16,16,16,25,16,16,16,16,16,16,16,16,22,20,16,16,20,16,16,16,16,26,16,16,16,16,16,16,16,16,16,22,25,16,23,16,16,16,16,16,16,16,10,16,16,16,16,26,20,16,16,19,16,16,19,16,16,16,16,16,16,16,22,14,16,14,16,16,14,16,16,16,16,16,16,14,16,22,19,16,16,16,16,14,14,16,16,16,16,22,16,10,16,17,16,14,16,16,16,16,16,21,16,19,18,16,16,16,16,17,16,16,16,16,16,18,16,16,16,28,28,16,10,10,16,16,24,16,19,22,16,19,27,10,16,16,16,16,24,16,16,16,17,16,16,16,10,26,16,16,16,16,20,16,16,15,16,27,16,16,16,16,10,24,16,16,19,16,16,20,20,16,16,19,17,16,16,16,16,19,16,19,16,16,15,16,16,19,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,14,16,10,16,16,16,16,25,19,16,16,19,16,16,19,16,20,15,16,16,16,16,16,16,16,16,16,10,16,16,16,16,16,14,16,18,16,16,27,16,16,16,16,16,20,16,16,20,16,14,19,17,16,16,14,16,19,16,16,16,16,26,16,16,16,16,16,16,16,16,24,18,16,16,16,16,20,16,16,16,16,16,16,26,14,19,16,16,19,16,22,16,16,16,16,16,16,22,16,16,16,14,19,16,16,16,25,16,16,24,19,18,18,16,22,16,17,16,16,16,28,28,28,16,16,16,16,16,16,19,10,16,16,10,16,16,16,16,16,17,16,16,20,16,14,16,16,16,16,16,18,16,19,14,16,16,20,16,16,16,16,14,16,16,18,20,16,10,20,16,16,19,16,16,16,19,16,24,16,10,16,16,23,16,10,16,16,16,20,18,16,16,16,16,16,16,16,16,16,16,16,16,16,18,16,16,16,16,19,19,16,16,16,16,16,17,16,16,16,16,16,20,16,16,16,16,16,19,27,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,19,10,17,16,14,17,16,15,16,16,16,16,19,19,16,16,16,16,16,20,10,19,16,16,16,17,16,21,16,16,16,16,16,16,16,16,17,23,16,16,16,16,16,19,16,25,23,14,16,20,16,16,16,14,19,16,16,16,16,19,16,16,20,16,16,20,19,16,16,16,14,20,16,16,16,16,16,10,14,16,16,25,16,18,16,16,28,28,16,16,16,16,16,16,10,19,16,19,16,24,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,16,23,16,16,10,16,16,16,19,16,10,16,16,26,19,16,16,19,19,16,16,16,16,16,16,16,16,16,16,10,16,16,16,18,16,16,16,16,26,16,16,25,16,16,20,14,16,16,16,20,16,16,16,19,16,19,16,19,16,16,22,16,16,16,16,16,20,16,16,16,16,16,20,16,16,10,16,16,16,16,16,17,16,16,16,16,16,16,15,16,23,19,16,16,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,19,16,16,16,17,16,16,28,24,19,16,16,16,10,10,19,16,16,16,16,15,16,16,16,16,10,16,18,16,16,16,16,16,16,16,16,22,16,16,26,19,16,10,16,16,16,20,16,16,10,17,16,10,18,16,16,27,16,25,16,10,16,16,19,14,19,14,16,19,19,19,14,16,16,16,27,10,16,16,16,14,16,17,16,16,16,16,16,20,28,28,28,24,16,16,19,19,16,15,16,19,16,19,19,19,14,14,20,16,16,14,16,16,14,16,16,16,16,16,16,16,20,16,16,16,10,18,16,16,25,20,16,16,14,16,16,19,16,14,16,16,16,10,16,19,16,16,16,16,16,16,16,16,16,10,16,19,16,25,19,16,26,16,16,16,16,16,14,16,16,16,17,16,16,14,16,19,16,19,19,16,16,16,16,18,16,19,20,25,16,16,16,19,16,16,16,20,22,16,16,16,16,16,16,16,16,14,17,14,20,16,16,16,16,16,26,16,16,19,17,20,10,19,14,10,16,16,16,16,20,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,10,16,10,19,16,16,19,16,16,16,16,16,16,16,16,24,16,16,10,10,25,16,16,24,21,16,16,20,18,16,16,16,16,25,16,23,24,16,19,16,16,16,10,16,16,16,16,16,16,16,16,16,16,19,28,28,16,16,16,16,16,16,16,16,16,10,20,19,20,20,14,16,10,16,20,16,16,16,16,16,25,16,16,16,16,16,16,16,16,16,16,20,16,19,10,16,16,15,14,16,16,19,19,16,16,14,10,16,24,16,16,16,19,16,16,16,16,16,16,16,16,17,19,16,16,19,14,19,10,16,20,16,14,16,16,16,16,16,16,16,16,16,16,20,16,16,16,26,16,16,16,16,16,16,10,16,16,16,16,16,16,16,16,16,16,16,16,26,16,16,16,18,16,16,16,16,19,19,16,16,27,16,16,16,16,16,16,19,16,19,15,16,16,16,10,27,16,17,16,14,16,16,14,16,16,16,16,16,19,16,16,16,16,16,19,16,16,16,10,16,16,16,16,16,16,16,16,20,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,16,22,16,20,16,15,18,16,25,16,25,16,20,16,10,16,16,16,19,16,16,17,27,16,16,16,19,16,16,19,16,28,28,28,16,16,19,16,16,14,16,20,19,16,16,16,16,20,16,16,16,16,16,16,14,16,16,16,16,16,16,16,14,19,15,20,20,16,16,20,10,19,16,16,16,19,19,16,16,19,10,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,10,16,16,16,16,16,19,16,18,19,19,16,16,16,22,16,16,16,16,16,10,16,16,16,19,16,16,16,16,16,16,16,16,16,19,16,16,16,16,20,16,10,16,16,16,16,16,16,16,16,16,25,16,16,16,19,16,19,19,27,19,16,26,16,20,20,16,16,16,16,16,15,16,16,16,24,16,16,16,19,14,16,19,16,16,16,16,16,10,18,16,16,27,16,16,16,16,16,16,19,16,16,16,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,16,10,16,16,16,16,16,16,16,16,16,24,17,16,16,16,16,19,16,16,19,16,16,16,16,16,16,16,16,19,16,16,16,20,28,28,28,26,16,16,14,16,19,25,20,16,16,17,16,16,16,22,26,16,16,19,26,24,24,16,16,16,16,16,16,16,16,16,16,16,16,16,16,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,18,16,16,16,16,16,16,20,16,14,16,19,16,10,16,27,16,16,19,16,24,16,16,16,16,16,24,16,16,16,16,16,16,20,16,16,16,24,16,16,18,14,16,16,16,19,16,14,16,16,22,16,16,16,16,16,14,16,16,22,16,16,16,16,16,19,16,19,19,16,16,10,16,10,16,16,16,16,19,16,16,16,16,16,19,16,16,16,16,22,16,27,20,16,10,25,19,16,19,16,16,16,16,16,10,20,16,16,16,10,16,10,20,16,16,16,24,16,22,20,16,17,16,16,10,20,19,16,16,14,27,27,16,16,20,16,16,14,19,16,16,19,16,16,16,16,14,16,16,16,16,16,16,16,19,16,16,16,16,20,16,16,16,28,28,19,16,16,10,16,14,19,16,14,16,16,16,10,16,19,16,16,16,20,16,19,16,16,16,17,16,16,16,16,16,10,15,16,17,16,10,16,17,16,24,16,16,16,16,27,16,16,16,16,15,16,16,16,25,16,16,16,16,17,16,16,16,20,14,16,14,16,16,16,16,16,16,18,19,16,16,16,25,16,16,16,16,16,16,24,22,16,16,16,19,16,16,16,16,16,16,16,16,15,16,19,10,16,16,16,14,16,24,16,16,19,16,19,25,16,16,18,16,16,16,14,25,10,16,16,16,19,16,16,16,19,16,16,16,16,25,10,16,16,16,14,10,16,16,19,14,16,16,16,16,16,16,16,16,16,20,10,14,16,16,14,16,19,16,16,14,16,18,17,16,16,17,16,16,16,16,20,16,16,16,16,16,16,10,16,16,25,16,14,16,16,16,14,19,16,16,16,16,14,16,16,16,16,16,17,17,16,15,16,16,16,16,14,16,16,28,28,16,16,19,16,16,16,16,16,16,16,16,16,16,16,16,14,16,16,16,17,20,25,16,16,16,16,17,16,16,16,19,16,16,16,14,16,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,22,16,16,16,16,16,16,16,16,16,16,14,16,19,16,16,16,16,16,16,16,16,16,16,16,19,17,16,18,16,16,10,16,16,16,16,16,16,16,17,18,16,16,16,16,16,20,16,16,20,26,16,16,16,16,16,16,16,16,19,16,16,19,16,16,16,19,19,19,16,16,16,16,16,18,16,16,16,16,16,16,16,19,16,23,16,16,20,16,16,16,16,16,16,16,16,16,16,16,14,16,16,14,16,19,25,19,18,17,16,16,16,19,16,15,16,16,16,16,16,16,16,14,24,16,17,16,20,20,16,16,16,16,16,16,16,16,16,16,16,14,14,16,22,16,16,19,19,16,16,14,16,16,19,16,16,16,16,16,16,18,16,16,16,20,16,16,14,28,28,28,16,10,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,27,20,24,16,16,16,16,14,16,16,16,16,16,16,16,16,20,19,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,20,19,16,16,16,16,16,16,16,25,16,16,16,16,16,16,10,16,16,16,16,16,16,22,16,16,16,19,10,16,16,16,16,16,16,16,16,16,16,16,26,16,16,20,16,16,16,19,16,16,19,19,16,20,16,16,16,19,16,15,10,16,14,16,16,16,16,15,16,16,16,16,16,24,19,16,10,16,19,16,10,10,16,16,14,18,16,16,14,16,16,16,16,19,19,19,16,19,19,16,10,16,16,16,16,10,16,16,16,16,16,14,16,16,16,16,15,20,16,16,10,19,10,16,16,16,10,16,23,19,16,16,10,16,16,19,16,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,17,10,22,16,16,10,24,10,16,16,22,16,19,16,16,16,28,28,28,16,18,16,16,16,16,19,18,16,16,16,16,16,16,16,16,14,16,16,16,16,16,16,10,16,19,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,20,16,16,25,17,16,16,16,16,16,24,16,16,16,16,16,16,16,19,16,20,22,16,16,16,16,16,20,16,16,16,20,10,16,16,22,16,16,19,16,16,16,23,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,19,16,10,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,20,26,16,26,16,10,16,16,16,22,10,16,16,16,16,16,20,16,16,16,16,26,16,16,22,20,10,16,19,16,16,16,18,16,16,19,16,16,19,16,16,16,16,28,16,16,20,20,16,19,22,14,16,16,10,16,16,16,10,16,14,17,10,14,14,16,10,16,20,16,16,16,19,20,16,16,19,16,16,16,16,17,16,16,28,28,28,16,16,16,16,16,16,18,16,10,16,16,16,16,16,24,16,16,16,19,16,16,15,16,16,16,16,20,16,16,16,10,19,16,16,16,16,16,20,20,16,16,18,16,16,19,16,19,14,14,16,16,20,25,19,16,16,16,16,16,14,24,25,19,16,16,16,16,17,16,19,16,16,16,24,16,16,22,15,16,10,16,16,16,16,16,16,16,22,16,16,16,16,16,16,16,19,22,16,14,16,16,16,16,16,16,16,16,16,16,16,26,16,16,16,16,16,16,16,14,16,10,16,10,16,19,16,16,23,25,16,16,16,16,16,20,17,16,16,22,16,16,16,20,16,20,16,16,16,16,20,16,16,20,14,27,16,16,16,16,16,16,16,20,16,16,16,16,16,16,16,16,16,16,19,14,16,20,16,14,16,14,10,16,16,16,16,20,16,19,16,16,16,16,16,16,16,16,16,16,10,20,16,20,10,24,25,16,16,16,19,20,16,15,16,16,16,19,16,20,19,16,14,24,16,28,28,25,16,25,16,16,16,16,20,16,19,16,16,16,20,25,16,20,25,16,16,18,16,18,16,25,19,16,16,16,16,16,16,17,16,16,16,19,16,14,16,19,16,10,19,25,16,16,16,16,16,16,16,16,19,16,19,16,16,16,16,16,16,16,16,25,25,16,19,16,14,16,16,16,16,16,16,16,16,20,16,24,16,19,16,24,16,19,20,10,16,16,16,16,16,16,16,16,16,19,16,17,16,16,16,19,16,26,14,16,16,16,16,16,16,16,16,16,16,20,16,16,16,19,16,19,16,15,16,17,16,16,16,16,16,16,10,16,16,16,17,10,16,16,20,16,16,16,16,16,19,19,10,16,16,16,16,16,19,17,16,24,16,16,16,24,16,16,16,16,16,25,16,16,16,17,19,19,19,16,16,16,10,16,16,16,19,10,16,16,16,25,16,16,16,16,27,16,16,10,10,14,25,16,16,16,16,16,25,10,19,14,16,16,16,16,27,16,16,19,14,16,19,16,28,28,10,16,10,16,16,24,19,16,17,16,19,16,16,19,16,19,16,16,19,16,16,16,16,16,16,15,16,20,19,16,16,16,16,16,19,16,16,16,16,16,16,15,14,16,16,10,16,19,19,16,25,16,19,15,16,16,16,19,19,16,16,15,16,19,24,16,16,16,16,20,16,26,14,16,19,19,16,16,16,16,16,16,16,16,26,16,16,16,16,16,16,16,16,19,16,16,19,16,16,16,16,10,16,16,19,19,16,16,16,16,16,16,26,16,19,16,16,16,19,18,16,17,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,16,16,16,22,16,16,16,20,14,16,16,16,19,16,14,16,17,20,19,19,20,16,16,16,10,21,16,16,19,16,16,15,16,16,10,16,24,20,20,16,16,16,16,16,16,20,16,14,16,16,16,10,14,10,24,16,16,16,16,16,16,19,16,16,16,16,16,14,19,19,16,19,16,16,19,19,16,28,28,28,20,16,16,16,16,16,17,16,20,16,16,16,16,16,16,16,16,16,20,16,16,16,16,16,16,16,16,16,16,26,16,16,16,16,16,16,16,14,16,15,16,16,16,16,19,16,20,16,16,16,16,17,16,16,16,18,16,19,16,16,16,15,16,16,20,16,16,20,16,16,16,16,16,16,19,16,16,20,16,16,16,10,16,19,16,16,16,16,20,16,16,16,16,16,16,19,16,19,16,16,16,16,19,16,16,16,25,16,16,16,10,16,16,20,16,24,16,16,16,16,16,16,19,16,10,16,19,16,25,16,16,19,18,17,15,16,14,10,16,21,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,16,17,16,16,14,16,20,25,19,16,17,16,16,19,16,16,16,19,14,19,19,16,20,20,16,16,26,16,10,16,10,16,16,10,19,16,16,19,16,16,16,19,16,16,16,19,16,16,16,19,16,17,16,19,16,26,16,16,16,16,20,16,16,28,28,10,16,10,16,16,16,16,16,16,16,16,16,18,16,19,16,16,16,16,10,16,16,16,19,16,16,25,16,16,16,16,16,16,16,16,16,16,14,16,16,16,16,16,16,16,14,20,16,16,16,16,19,16,16,27,19,16,16,16,16,16,16,16,16,14,16,16,16,16,16,16,16,16,10,16,16,16,16,16,16,16,16,19,16,16,19,16,19,16,16,16,19,16,16,16,16,17,18,16,16,16,16,19,16,16,16,16,16,16,25,16,14,10,16,16,16,25,16,16,25,16,16,10,20,19,16,16,16,16,15,16,24,16,14,25,16,16,10,16,16,16,16,16,16,16,16,19,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,14,20,16,16,16,16,16,16,16,16,16,10,19,19,14,16,16,16,19,14,16,16,16,16,14,16,10,16,10,14,16,16,16,16,16,24,16,16,19,16,16,28,28,16,16,10,16,16,16,16,16,16,19,20,16,16,16,16,16,16,16,16,16,16,10,16,16,16,16,10,16,30,16,16,16,27,20,16,15,16,17,16,16,19,16,16,16,16,16,16,16,16,16,26,19,16,16,16,10,16,16,16,14,16,16,14,24,10,16,19,16,16,16,16,16,16,16,16,16,19,16,16,26,16,16,16,16,16,20,19,19,16,15,16,16,16,19,19,16,16,16,16,16,16,16,16,19,16,10,16,16,16,20,20,16,16,16,16,20,16,16,16,19,16,16,16,16,16,26,16,20,16,19,19,14,19,22,16,16,16,16,16,16,19,16,19,16,10,10,16,16,16,16,16,15,19,16,16,14,16,16,16,16,19,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,27,16,16,16,16,16,18,16,16,20,20,16,16,25,16,16,16,20,16,16,16,16,28,28,28,16,16,16,16,16,16,16,17,16,16,16,16,16,17,16,16,16,16,15,16,19,16,19,16,19,16,16,16,19,16,16,16,16,16,10,19,14,16,16,16,14,19,16,16,16,23,25,16,16,16,16,16,16,16,16,16,16,20,16,16,16,14,16,19,14,16,14,23,19,16,10,16,18,16,16,19,16,16,10,19,19,16,16,16,17,16,16,26,16,16,18,16,16,16,22,16,16,16,10,16,19,17,16,16,16,24,20,19,16,16,16,16,16,16,16,14,16,19,19,17,16,16,16,16,16,16,16,16,16,16,16,27,16,16,16,16,15,16,18,16,16,16,16,16,16,20,10,16,16,16,19,15,16,16,26,16,16,16,16,19,16,10,16,16,16,20,16,16,16,16,16,10,16,17,16,16,16,16,16,16,16,16,16,16,16,19,19,16,16,24,16,16,16,16,16,20,16,10,16,20,16,16,16,22,16,16,16,16,19,16,19,16,28,28,14,22,16,19,16,16,19,16,10,16,18,16,16,14,16,16,14,16,16,19,10,16,16,10,14,16,19,16,15,16,16,16,16,19,16,16,20,16,10,16,19,16,25,16,16,27,19,16,16,19,16,16,16,20,19,10,16,16,16,15,26,10,16,16,16,17,20,16,24,17,16,19,16,16,16,16,16,16,16,24,16,16,16,19,24,16,16,19,16,16,23,16,16,16,16,16,22,16,16,16,19,16,16,16,16,25,16,16,16,16,16,10,19,16,16,19,16,16,25,16,16,16,16,16,10,16,16,16,16,16,17,16,18,25,16,16,16,16,16,16,16,16,10,16,14,16,16,16,16,10,16,16,16,16,10,16,16,19,15,16,10,16,17,16,19,10,17,17,10,16,19,14,16,16,16,16,16,16,16,20,10,16,16,19,17,16,16,27,16,16,16,20,19,16,16,10,16,16,16,10,16,16,16,16,19,16,16,16,16,16,28,28,10,16,16,18,16,16,14,16,16,16,19,20,16,16,16,19,16,16,19,16,16,16,16,20,16,16,16,24,16,16,16,20,19,16,20,19,19,16,16,16,14,17,16,16,16,16,16,16,19,16,16,16,19,16,16,15,20,19,16,16,20,19,16,16,16,18,16,16,16,19,18,16,16,16,16,16,25,16,16,16,16,17,14,27,16,16,17,20,16,10,16,14,16,16,16,10,10,14,19,16,19,16,16,16,16,16,16,16,16,16,16,16,16,20,16,16,16,25,17,16,16,19,27,16,16,14,16,14,20,18,16,16,20,16,16,19,16,16,20,16,16,20,19,16,16,16,16,16,28,16,10,10,16,16,16,16,18,14,16,16,16,10,16,16,16,16,16,16,16,10,19,16,16,16,16,16,16,20,16,14,16,16,17,20,19,16,16,19,14,16,21,16,19,20,16,14,16,16,16,16,14,16,16,16,25,16,16,16,16,16,16,16,16,28,28,16,16,16,17,19,16,16,19,16,20,19,16,16,22,16,16,16,16,16,17,16,16,16,16,16,16,16,19,14,16,16,16,10,16,16,16,16,24,17,16,16,16,20,20,16,17,19,19,16,10,16,20,16,17,16,16,16,19,16,16,16,16,16,16,16,15,16,16,16,16,16,19,27,16,16,20,16,16,16,14,16,16,18,16,16,10,16,16,20,14,25,16,16,16,16,16,16,16,16,16,16,16,16,16,16,26,14,19,25,16,19,10,16,16,16,16,16,20,17,16,16,15,16,16,16,16,16,16,16,16,16,17,16,20,15,18,14,16,16,16,16,16,24,10,16,20,16,17,19,18,20,16,16,25,16,16,16,16,16,16,16,19,10,16,16,16,16,16,16,24,19,20,16,16,16,16,16,16,10,16,16,16,16,16,16,20,19,16,16,16,16,16,19,27,15,16,23,16,16,16,10,20,16,16,16,16,15,16,16,16,16,14,25,16,16,28,28,28,16,26,16,16,16,16,16,16,23,16,14,16,16,19,16,14,20,16,16,16,16,16,10,19,16,16,16,16,16,16,19,16,23,14,16,16,16,16,16,25,25,16,16,16,16,16,16,16,16,18,16,16,19,16,16,16,10,16,16,16,16,16,19,16,16,22,10,16,19,10,16,16,16,16,16,18,16,20,16,10,16,16,19,16,16,16,16,20,19,16,16,16,16,16,16,19,16,26,16,16,16,16,26,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,19,16,16,10,16,19,16,16,20,16,16,16,16,17,16,19,20,16,19,16,19,20,16,16,16,19,16,14,16,16,16,19,16,19,16,23,16,16,16,16,16,16,16,17,16,16,16,16,16,16,17,16,26,19,16,16,16,16,16,16,16,16,20,16,16,30,10,16,14,16,20,16,16,16,16,16,16,10,16,16,16,14,25,14,16,10,16,19,16,16,16,16,16,14,23,10,14,26,16,16,28,28,28,16,20,16,16,16,24,17,16,16,16,16,16,10,16,19,16,19,16,18,16,19,19,17,16,14,16,16,16,16,16,22,16,16,16,16,14,16,16,16,16,16,16,16,10,16,16,16,26,14,19,16,16,19,16,16,16,16,18,16,22,20,19,19,16,16,19,16,10,16,16,16,24,16,16,19,10,19,16,16,16,20,19,16,10,16,16,16,16,16,20,19,16,14,16,10,16,16,19,16,19,16,16,16,16,16,16,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,10,16,14,16,16,16,16,19,16,16,16,16,16,16,16,16,16,19,19,16,16,19,19,16,16,16,19,20,16,16,16,14,16,16,20,10,19,16,19,16,16,19,19,16,16,16,16,10,19,16,16,20,16,16,16,10,16,16,16,16,16,16,14,16,16,16,10,24,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,25,16,20,14,16,16,16,14,16,14,16,16,16,16,16,16,26,16,10,28,28,28,28,28,28,16,24,24,16,16,16,16,16,19,16,16,10,16,16,16,16,16,20,16,16,19,19,16,16,10,16,16,17,16,23,16,16,16,16,16,16,16,14,24,16,10,16,16,16,16,16,16,16,16,16,10,16,16,22,16,16,16,18,16,16,20,19,16,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,16,16,10,16,14,20,19,16,16,19,10,16,19,16,16,10,16,19,16,16,19,16,14,14,16,16,20,16,27,16,10,22,25,20,16,24,20,16,19,16,16,16,16,16,25,16,19,16,16,16,16,16,17,20,16,16,16,16,10,16,10,10,16,16,16,16,23,16,16,16,16,16,16,16,19,20,16,16,16,16,16,16,15,16,14,19,16,16,19,16,16,16,16,16,16,16,16,17,16,16,20,16,20,16,16,16,18,16,16,16,19,16,16,16,19,16,16,16,16,16,14,22,16,19,14,16,16,16,16,16,16,10,16,16,16,16,19,15,16,16,16,16,15,16,16,16,21,16,16,17,19,14,16,16,22,22,16,16,20,19,16,19,16,19,20,16,28,28,28,28,28,28,10,16,16,17,14,16,16,16,19,16,20,16,16,30,16,16,16,16,18,16,16,25,14,10,16,16,16,16,16,27,16,16,16,16,18,26,16,14,16,16,16,19,16,16,16,24,16,14,19,24,18,16,10,16,16,18,25,16,16,16,16,16,16,16,16,16,19,16,16,20,16,16,16,16,18,16,16,19,19,19,16,16,16,16,22,16,16,19,16,16,16,16,16,16,15,16,10,20,19,16,16,16,19,16,16,16,16,16,10,19,14,25,16,16,16,16,16,19,19,16,16,16,16,16,19,16,16,26,16,10,16,16,16,16,16,16,18,16,14,15,16,16,20,24,19,20,16,16,16,10,16,16,16,16,18,25,16,20,16,19,19,16,16,16,16,16,19,16,20,16,16,19,16,16,16,16,16,16,14,16,16,16,16,16,16,20,16,16,16,16,16,16,16,16,17,24,26,10,16,14,16,16,19,16,16,14,16,16,16,20,19,16,10,16,16,16,16,16,19,16,16,14,16,16,16,16,19,16,28,28,28,28,28,28,16,16,16,19,10,10,16,16,10,20,14,14,16,27,16,16,16,16,16,16,16,16,16,16,26,16,16,16,16,19,16,16,10,16,23,16,17,16,16,16,10,16,16,10,16,10,16,30,16,16,16,16,16,16,19,16,14,16,16,16,16,16,16,19,18,20,16,19,16,16,16,17,16,16,19,10,19,16,16,16,16,25,16,16,16,16,16,16,16,10,16,16,19,16,16,16,16,16,16,16,16,16,14,19,16,26,16,16,16,16,16,10,16,16,25,16,19,16,20,16,16,16,16,16,16,16,16,16,16,16,18,16,19,16,19,16,16,16,16,16,19,30,16,16,16,16,19,19,16,10,16,14,16,16,16,30,16,16,19,10,16,16,16,16,18,14,10,20,16,16,16,14,16,16,16,10,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,26,16,16,16,16,16,16,16,16,14,16,16,16,16,16,16,14,10,16,28,28,28,16,25,16,16,16,25,10,19,16,23,16,16,16,19,16,16,20,15,16,16,16,16,16,19,16,19,14,16,19,16,14,16,16,24,16,16,10,16,14,16,16,18,10,16,16,16,16,10,16,14,19,16,16,27,16,16,16,16,24,16,20,16,16,16,14,16,16,16,16,16,15,16,16,26,16,16,19,14,16,16,16,16,16,16,19,25,18,16,10,16,16,16,16,16,14,14,16,14,16,16,16,16,16,16,16,16,16,16,14,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,20,25,20,16,16,16,19,16,16,16,16,19,16,16,16,16,16,20,16,14,19,19,16,18,16,16,16,16,20,16,16,18,16,16,16,16,19,16,30,16,27,19,15,16,17,16,19,16,16,16,19,16,14,16,16,16,16,19,16,16,16,16,16,18,16,26,16,14,16,16,25,16,19,16,19,16,16,16,16,16,16,19,16,16,16,16,16,16,19,28,28,28,19,16,16,25,25,16,16,14,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,19,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,10,10,16,16,16,25,18,16,16,16,19,16,16,16,20,16,19,16,16,16,16,16,20,19,18,19,16,16,16,16,25,16,16,16,16,19,16,16,16,16,16,16,16,16,16,20,14,16,16,16,16,16,19,14,19,16,16,17,10,16,16,16,16,16,16,16,16,20,16,16,16,16,16,16,16,19,23,16,16,16,16,14,15,16,26,14,16,16,17,16,16,16,16,19,16,16,16,16,17,16,16,16,16,14,16,16,16,16,19,16,16,16,16,16,16,10,19,16,16,10,16,16,20,14,16,16,16,16,16,16,16,17,19,10,16,16,16,16,16,10,16,16,20,16,16,16,16,16,16,16,10,16,16,16,14,16,16,16,16,16,16,16,16,10,18,16,16,20,28,28,28,16,16,16,19,20,16,16,16,16,16,17,16,10,10,16,16,16,16,16,16,10,26,20,16,25,10,16,17,16,10,16,14,16,16,16,14,16,16,16,16,16,16,19,14,14,16,16,16,19,16,16,19,16,16,16,16,16,14,14,16,16,16,22,16,16,16,17,24,16,16,16,16,16,14,19,16,14,16,16,16,19,16,16,16,16,16,16,20,16,16,16,16,10,10,16,16,14,20,16,16,16,16,16,16,16,16,18,25,16,26,16,16,16,16,16,16,16,16,16,19,19,16,16,19,16,16,16,10,16,15,16,16,10,14,24,16,16,16,16,16,16,16,16,10,19,16,16,16,16,16,16,20,16,30,16,16,16,16,16,25,16,16,16,20,16,16,16,22,14,10,16,20,16,16,16,16,16,19,16,16,24,16,16,14,16,16,16,19,19,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,15,16,16,28,28,28,16,16,16,20,22,16,16,16,17,16,25,16,16,16,16,16,24,16,16,16,14,16,16,16,27,16,16,16,16,16,19,30,16,10,19,24,16,14,16,19,10,10,16,10,16,16,16,16,25,16,16,22,19,25,10,19,16,16,17,17,16,16,16,16,16,16,10,16,16,16,10,16,14,20,17,16,16,16,19,16,16,16,16,16,16,16,20,16,16,17,16,19,19,16,16,16,19,21,16,14,16,16,16,16,16,23,26,16,22,16,16,16,16,25,16,16,14,16,16,23,16,22,16,16,16,16,16,20,14,16,14,16,17,19,16,16,16,16,16,16,16,25,16,16,16,17,16,16,16,14,16,25,16,16,16,14,16,16,16,16,10,20,16,10,16,16,25,16,16,16,16,16,16,16,16,16,16,28,16,16,14,18,15,19,16,16,19,16,16,16,18,16,16,16,16,18,16,19,14,16,16,16,27,16,14,14,20,16,24,16,16,16,16,24,16,16,16,16,18,16,28,28,28,16,16,16,16,19,10,16,16,16,24,16,16,16,16,16,15,19,16,20,16,16,16,16,16,19,16,16,14,24,16,16,19,25,10,16,16,16,17,16,16,16,20,16,16,16,10,16,16,16,16,10,16,17,16,19,16,14,19,16,16,16,14,16,16,16,16,16,20,16,16,16,19,16,14,14,16,14,16,16,16,16,19,16,16,16,16,10,16,16,24,16,16,16,16,16,16,20,16,16,16,18,16,16,16,14,16,10,20,16,19,16,19,16,16,16,16,16,20,16,19,16,16,16,14,25,22,16,16,16,16,16,16,16,25,18,14,16,16,16,16,16,16,16,16,19,16,16,16,23,16,16,16,25,16,16,16,25,16,20,16,19,16,10,19,16,16,17,30,16,16,16,16,10,20,16,16,10,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,16,16,16,23,10,16,10,19,10,16,10,16,10,19,20,27,16,16,20,16,16,20,16,16,16,19,16,16,16,14,20,16,16,16,16,16,16,27,16,16,16,16,28,28,28,28,16,16,16,14,16,16,16,16,19,16,16,25,16,16,14,16,21,16,16,20,16,16,19,16,16,16,16,16,14,16,16,26,16,16,16,16,20,16,16,19,19,16,16,16,16,16,14,19,16,16,16,30,16,16,14,16,16,16,27,16,16,16,16,16,16,16,25,25,20,19,16,16,16,14,10,19,17,19,26,16,16,16,16,26,16,16,16,16,16,16,15,16,16,16,18,16,16,10,14,16,19,16,16,16,16,16,17,16,17,16,16,16,16,16,10,16,20,16,10,19,16,16,16,16,14,16,16,20,16,16,16,16,16,14,25,16,16,16,16,16,16,16,16,25,16,19,16,16,16,16,20,16,16,20,16,10,19,16,16,19,16,16,16,18,17,16,14,20,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,16,20,20,21,16,16,16,16,16,16,16,26,16,16,19,16,20,16,16,16,16,16,16,19,17,15,16,16,16,16,16,19,16,20,16,16,10,16,16,16,16,16,16,15,16,19,16,25,16,28,28,28,28,28,16,16,14,16,16,16,16,16,16,16,17,22,25,16,16,16,16,16,16,16,16,16,19,14,26,16,16,16,19,16,10,19,16,16,14,16,16,16,16,19,16,10,16,16,16,16,16,19,16,16,16,16,18,16,16,16,16,16,16,14,16,16,16,16,25,16,16,16,16,16,14,16,16,17,16,16,16,16,16,20,16,16,16,16,16,16,16,16,10,16,16,16,16,16,16,16,16,19,22,16,19,19,27,25,19,16,16,14,16,16,16,16,16,16,16,16,16,24,16,22,16,19,14,16,16,16,19,16,19,16,16,16,16,16,16,16,19,16,16,16,19,16,16,16,20,16,17,16,16,16,16,16,16,16,16,20,10,16,17,16,19,16,16,17,19,16,25,16,16,20,16,16,16,16,16,16,16,16,16,25,16,16,16,16,18,16,16,16,28,16,10,16,22,16,16,16,16,16,25,16,16,16,14,16,25,16,19,18,16,16,16,16,16,16,19,10,16,19,16,16,16,16,16,19,16,16,20,10,16,16,28,28,28,28,28,28,19,16,10,16,16,16,16,16,16,16,19,14,18,16,19,16,26,16,16,16,16,16,16,16,16,16,16,23,27,25,16,16,16,15,19,17,16,16,16,16,18,16,20,16,16,16,16,16,19,16,24,16,28,14,20,16,16,10,14,16,27,16,16,16,20,19,19,19,16,16,20,16,16,16,16,16,16,16,19,19,19,16,14,23,16,16,16,25,10,14,15,20,16,16,16,14,16,16,19,19,10,16,16,16,16,19,16,16,16,16,16,16,16,14,16,14,16,16,19,14,16,16,16,16,16,16,16,16,16,16,16,16,16,14,10,16,16,16,10,16,16,19,19,16,25,16,19,16,16,16,16,19,16,16,20,25,19,10,16,16,16,19,16,16,14,16,16,16,16,16,16,20,16,16,15,16,10,16,15,16,16,16,16,16,19,16,24,16,16,16,24,16,16,16,16,16,16,16,14,16,14,17,16,19,16,10,16,16,16,10,28,28,28,16,16,19,16,16,16,19,15,16,16,16,16,16,14,16,16,16,16,16,19,16,28,20,16,16,30,20,17,20,22,16,16,16,18,16,19,14,16,16,22,16,20,16,16,16,16,16,16,16,16,16,16,16,19,10,10,16,16,26,16,16,16,16,16,16,16,16,16,19,19,16,19,20,19,14,16,16,10,16,16,19,16,19,16,16,10,16,16,16,16,16,16,16,16,16,16,25,16,30,15,18,16,16,16,16,19,14,16,19,14,27,19,19,16,16,16,16,20,16,10,16,14,16,16,16,16,25,14,16,23,16,16,20,19,10,16,16,16,16,16,16,16,27,19,16,16,16,14,16,16,16,16,10,16,19,16,16,17,16,16,16,16,19,16,16,16,16,20,16,19,17,10,16,16,16,16,16,16,16,16,16,21,16,16,14,16,16,16,16,19,16,14,16,28,16,16,24,16,16,16,14,16,20,16,19,19,20,25,16,16,19,15,10,16,16,17,16,16,16,16,16,19,16,16,17,16,19,16,16,16,26,16,16,17,16,28,28,28,28,28,28,16,16,16,19,16,16,16,16,17,16,16,16,16,16,16,16,16,16,25,16,16,16,16,16,16,16,16,19,16,16,16,16,16,17,14,19,16,16,10,16,14,14,20,14,16,16,16,16,16,16,16,16,16,20,16,16,25,16,16,16,16,10,16,16,20,16,16,16,16,16,16,16,16,19,20,16,16,14,25,22,16,16,18,16,16,16,16,16,16,16,16,16,16,16,16,19,16,26,16,19,19,16,20,16,16,16,16,16,22,16,16,16,16,24,14,16,19,16,16,16,16,16,19,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,19,16,16,10,22,16,16,16,19,16,15,16,16,16,16,16,16,19,16,16,16,27,16,10,16,16,16,16,16,19,19,16,14,16,16,14,25,16,16,16,16,16,16,16,16,16,16,19,16,16,18,16,16,22,16,16,25,16,16,16,16,22,16,16,16,16,10,16,19,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,28,28,28,28,16,10,16,20,16,16,16,16,16,16,16,16,16,16,20,16,16,16,15,16,16,16,15,16,16,16,16,19,10,16,16,18,14,16,16,16,14,25,16,16,16,16,16,16,16,16,16,16,16,10,16,19,16,16,16,16,16,27,27,16,20,16,16,16,16,16,16,14,16,16,16,16,16,18,18,16,16,16,16,16,16,16,16,16,19,16,10,16,16,16,16,16,14,16,16,19,16,16,16,16,25,16,16,16,15,16,16,16,16,20,20,19,16,16,16,16,16,16,16,16,14,14,10,25,16,22,16,20,22,17,16,16,16,18,19,16,16,25,16,19,14,19,16,16,16,16,16,14,16,16,16,19,16,16,16,16,14,17,16,16,16,16,10,16,16,16,14,25,19,16,16,16,16,16,18,16,16,16,16,16,16,16,16,20,16,16,16,17,16,16,16,16,16,16,19,16,16,16,19,16,19,16,14,16,16,16,16,16,16,20,16,22,16,16,16,16,20,16,16,16,19,16,16,17,16,28,28,28,16,16,18,19,18,16,19,16,16,16,16,16,16,16,16,19,16,16,20,16,16,22,23,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,18,17,16,16,16,16,17,16,16,16,16,16,16,16,16,19,16,16,14,16,16,16,16,16,16,16,15,16,16,16,16,19,10,16,16,19,20,16,16,16,16,10,16,16,16,16,19,16,16,10,16,16,16,16,16,16,14,16,16,19,16,16,16,19,16,15,16,19,19,22,16,16,16,16,16,17,16,20,19,16,16,16,26,16,27,16,16,25,16,16,16,16,19,18,10,16,14,16,16,10,16,17,22,25,16,16,16,16,19,14,16,16,19,16,16,10,14,16,16,16,19,19,16,17,18,20,16,24,19,16,19,16,16,19,16,20,28,16,19,16,16,16,16,19,16,16,16,16,16,16,19,16,16,16,19,16,16,10,16,16,16,16,16,16,19,14,16,16,16,16,16,16,24,16,19,10,19,16,16,28,28,28,20,16,16,16,14,16,19,16,19,16,16,19,20,16,19,16,17,14,16,16,16,16,16,16,16,16,22,16,26,20,19,16,16,20,16,20,16,16,16,20,25,16,15,19,16,16,16,16,26,10,16,10,19,18,16,16,16,16,16,16,16,16,17,16,16,16,16,10,16,19,16,19,14,16,16,10,18,16,19,16,17,19,16,16,20,14,14,10,16,24,16,16,16,16,16,16,16,18,16,16,16,19,16,16,16,20,16,17,16,16,16,16,16,16,16,16,16,16,16,24,16,16,16,16,16,16,18,19,10,20,16,16,22,16,16,16,16,18,16,16,16,16,16,17,19,16,21,19,16,16,16,19,14,16,16,16,16,22,16,16,16,16,16,16,16,16,16,22,16,16,16,16,14,14,16,19,16,19,16,16,16,16,16,16,18,16,16,16,14,20,16,19,16,16,16,16,30,16,16,19,16,25,16,16,16,16,16,17,16,16,22,16,16,16,19,19,16,16,16,16,16,28,28,22,16,16,16,16,16,16,16,19,16,16,16,19,16,16,16,16,16,27,16,16,19,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,15,19,16,16,16,19,16,16,16,20,16,16,16,16,20,16,14,10,16,16,16,16,16,16,16,19,16,16,16,10,24,20,18,19,16,16,16,16,16,16,17,19,16,16,25,16,14,16,16,14,16,16,16,16,16,16,14,16,16,16,16,18,27,16,16,10,16,16,27,16,16,16,15,19,16,16,16,16,19,16,16,16,16,16,16,25,16,16,16,16,16,10,16,16,16,16,16,16,16,16,19,16,16,14,16,16,16,16,16,14,14,19,19,10,17,19,16,16,20,10,16,16,19,16,16,16,16,16,18,16,20,16,16,16,16,16,16,16,16,16,16,14,19,16,16,10,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,10,16,14,17,16,16,16,10,10,24,16,19,16,16,16,19,28,28,15,16,16,10,16,10,16,16,14,16,14,16,16,16,16,16,16,10,16,25,19,16,19,19,16,20,16,16,16,14,16,16,22,16,18,16,19,16,16,16,16,16,19,16,16,16,26,20,24,17,24,16,16,19,16,16,16,19,20,16,16,19,18,16,16,19,16,16,20,16,16,16,16,16,16,16,26,16,19,16,16,20,16,16,20,16,16,15,19,19,16,16,19,16,16,16,16,16,16,14,23,10,16,16,14,16,16,10,16,16,17,16,10,16,16,10,16,19,19,27,16,16,10,16,16,16,16,16,19,10,16,16,16,16,16,10,16,16,16,16,16,15,16,16,16,16,14,16,16,16,10,16,16,16,16,16,16,16,17,16,16,16,19,17,16,27,16,16,16,16,16,19,16,16,16,16,25,10,16,16,16,16,16,16,16,17,16,16,16,16,16,18,16,16,16,25,16,16,23,19,15,16,16,15,10,16,19,16,16,16,16,14,16,16,16,16,16,16,16,24,16,22,10,28,28,19,14,22,16,16,19,27,16,16,16,16,16,16,14,16,16,24,16,18,20,14,16,16,16,16,16,16,16,15,16,25,19,15,16,16,16,16,16,16,16,16,16,10,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,20,16,16,16,16,17,10,19,19,20,19,16,16,16,16,16,16,25,19,14,16,16,16,26,16,16,16,16,16,20,19,22,15,16,16,18,16,16,16,14,10,16,20,16,16,16,16,19,16,20,16,16,16,16,16,19,18,16,16,16,16,16,16,16,16,18,16,10,18,16,25,10,16,16,17,25,16,19,16,16,16,25,16,16,10,16,16,16,16,16,19,19,16,16,16,16,16,16,16,16,14,14,25,20,16,16,16,16,16,16,24,16,24,16,16,16,16,16,16,16,16,19,19,16,19,25,16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,14,16,16,16,19,10,10,16,19,19,19,16,16,17,17,20,16,28,28,16,16,16,16,16,16,16,16,26,16,14,25,16,16,19,16,16,16,16,16,16,22,16,10,16,16,10,16,16,25,16,10,16,16,14,20,19,16,16,16,16,16,16,16,16,24,16,16,16,25,16,16,16,16,19,16,16,24,16,16,18,19,16,17,10,16,16,16,17,16,16,16,19,10,15,16,16,16,16,18,16,16,16,16,16,16,19,10,16,19,16,19,16,16,15,19,27,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,20,19,16,26,26,16,16,20,16,16,17,16,10,16,16,14,16,16,16,16,16,14,16,16,16,16,19,15,10,16,16,14,16,16,20,10,16,19,19,16,27,10,16,16,16,27,16,16,14,16,24,16,16,16,25,10,16,10,20,16,14,16,14,20,17,16,16,16,19,16,20,10,16,19,16,16,22,16,16,16,16,16,16,16,19,16,16,16,16,16,19,16,16,16,16,16,16,28,28,16,16,16,16,14,19,16,16,16,16,16,16,16,19,17,16,16,16,14,19,15,14,20,16,16,16,16,16,16,14,19,16,16,14,19,20,16,16,16,16,16,16,16,16,16,26,16,16,14,19,16,16,16,16,16,15,10,16,16,16,16,16,16,16,16,16,16,25,15,16,19,16,16,16,16,16,10,16,16,19,16,16,19,19,14,16,16,14,16,16,16,23,14,10,16,16,16,16,16,16,16,16,16,16,16,16,20,16,24,16,16,10,16,16,16,16,16,16,16,16,16,16,25,16,16,19,16,16,16,16,16,16,14,10,16,16,16,18,16,16,16,16,16,16,16,17,19,16,16,16,16,16,16,15,10,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,20,14,19,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,10,16,16,10,17,24,16,19,16,16,16,28,28,16,16,22,19,16,16,19,18,21,16,19,16,20,16,14,14,16,19,20,16,16,16,16,16,18,16,24,16,16,16,16,19,16,19,16,16,25,16,16,10,16,16,16,16,16,16,16,26,16,16,16,16,10,16,16,16,16,20,16,19,16,16,16,16,16,16,16,16,19,16,25,21,16,16,16,17,19,16,16,20,19,16,16,16,25,16,16,16,16,17,16,16,16,14,16,16,16,16,16,18,16,16,22,17,16,16,16,19,16,16,16,10,16,16,16,14,16,16,16,16,16,10,16,24,16,16,24,16,16,16,16,10,16,16,16,25,16,16,16,16,16,24,15,16,16,16,16,16,19,16,16,16,16,16,20,16,16,15,19,10,19,16,14,25,16,16,16,16,16,16,16,16,19,10,16,20,16,27,16,16,16,16,16,14,19,16,16,16,16,17,16,16,16,16,16,16,16,16,16,16,16,20,19,16,16,16,17,16,16,16,19,16,19,16,16,21,14,19,16,16,10,16,28,28,28,16,16,16,16,16,16,10,16,25,16,16,16,16,16,16,16,10,19,16,19,19,25,16,22,14,16,10,19,16,10,16,14,16,16,16,16,16,16,16,16,16,16,16,17,16,16,16,20,18,16,16,16,22,16,16,19,22,16,16,16,20,16,14,16,16,16,25,16,16,16,14,14,16,16,16,20,19,16,23,10,16,25,16,25,16,19,16,16,16,15,17,20,10,16,16,16,10,16,16,16,16,19,19,16,16,14,16,26,16,16,22,16,16,16,26,16,19,16,16,16,16,16,16,16,16,16,16,16,16,20,16,16,17,16,20,16,25,16,16,16,16,19,20,16,16,16,16,19,20,16,16,16,19,20,16,19,16,26,16,14,16,16,18,16,14,16,16,16,16,19,15,16,16,16,16,19,26,10,18,16,16,23,16,16,16,16,16,16,16,16,14,16,16,16,19,16,16,16,10,19,16,16,16,16,16,16,16,16,16,16,14,25,19,16,16,16,24,16,16,16,16,20,16,16,16,16,28,28,28,16,16,16,16,16,19,16,14,19,16,22,16,16,16,16,16,16,16,14,16,16,19,16,16,16,10,16,17,19,19,16,14,16,16,18,16,14,30,16,16,16,16,16,16,16,16,16,16,16,26,16,16,19,19,16,16,16,16,16,16,16,16,25,16,16,16,16,10,16,17,16,17,19,16,14,16,16,16,16,16,19,16,16,19,10,25,16,19,16,16,16,16,16,16,19,16,16,10,16,16,16,20,16,10,16,16,16,16,14,27,16,16,22,16,10,16,14,16,14,16,16,10,16,16,16,16,16,16,25,19,16,16,19,16,22,10,19,16,18,16,16,16,20,16,14,16,16,16,16,16,16,16,10,16,16,16,17,16,16,16,10,16,19,16,16,16,16,16,16,16,10,16,16,16,16,16,14,16,16,16,16,16,16,16,19,16,16,16,10,25,16,16,14,16,22,16,14,16,22,16,16,16,16,16,16,14,17,16,16,16,22,14,16,16,14,16,22,10,16,16,16,28,28,28,16,17,16,22,16,16,19,14,16,10,16,16,16,19,16,16,16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,24,17,16,16,18,20,10,14,16,16,15,16,20,19,16,16,16,16,22,16,16,16,16,16,16,16,16,16,17,15,20,16,16,16,10,16,15,16,19,14,16,16,16,18,16,16,16,16,16,10,16,16,16,14,16,16,16,19,14,16,20,19,16,17,16,25,19,19,25,16,10,16,17,16,16,16,16,15,19,16,16,16,10,16,16,16,16,10,16,16,16,16,16,10,16,16,16,19,16,16,16,16,16,16,10,14,14,20,14,16,16,23,19,16,16,16,18,14,25,10,16,16,25,10,14,16,16,19,16,16,16,16,16,16,16,16,16,21,19,16,19,16,16,15,19,16,16,16,16,23,18,16,10,14,19,16,16,16,16,16,14,19,20,16,17,16,16,16,16,16,16,16,16,16,18,16,16,16,10,16,16,16,16,16,16,16,24,16,19,16,28,28,16,16,10,16,16,16,16,16,16,15,19,22,16,16,16,16,16,16,10,15,16,16,16,16,16,16,16,25,14,16,16,19,16,16,19,16,16,16,26,14,16,19,16,16,14,16,16,16,16,15,16,16,15,16,19,16,16,16,20,16,16,16,26,16,16,16,16,15,14,25,19,16,16,10,16,22,16,16,16,16,17,19,30,16,16,16,16,16,16,16,10,10,16,16,16,16,16,19,14,16,16,16,16,14,16,24,16,14,16,16,16,16,14,16,16,16,19,16,10,16,16,16,16,16,16,16,16,16,16,26,19,17,16,16,20,17,16,19,16,16,16,16,16,20,25,16,16,16,16,16,10,17,16,16,10,16,19,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,18,19,16,16,16,25,16,16,16,16,27,16,17,16,19,16,16,16,16,17,16,16,19,16,16,17,16,16,16,16,16,14,19,16,16,16,28,28,28,16,16,16,16,16,19,19,16,19,16,27,16,16,16,16,16,16,10,25,16,19,16,16,16,16,16,19,16,16,16,16,16,16,16,16,19,14,19,20,16,16,16,19,16,19,16,10,16,16,16,16,16,19,19,19,16,16,20,16,16,16,16,18,16,14,16,22,17,16,16,16,19,14,19,16,16,16,16,16,16,19,14,16,16,16,16,16,16,16,16,16,14,16,25,16,16,16,16,16,25,16,16,17,16,19,16,14,16,16,14,16,16,10,16,16,14,16,16,16,16,16,16,16,16,20,16,20,16,16,16,16,25,16,14,26,20,10,10,16,16,16,10,16,16,18,16,16,16,16,16,19,16,16,10,16,16,16,14,16,16,16,19,16,14,16,19,16,16,16,16,19,16,16,16,15,16,16,16,16,16,16,19,19,16,22,16,16,16,26,16,16,16,16,18,16,16,24,16,16,19,10,19,16,27,16,22,16,16,16,16,16,16,25,16,16,16,19,19,28,28,28,16,20,16,16,16,16,19,16,16,16,19,16,16,16,16,16,16,16,16,19,16,16,19,23,16,16,16,19,16,16,10,16,16,16,10,16,16,16,24,24,16,24,16,16,16,16,19,10,16,16,20,16,14,19,16,16,16,17,16,16,16,14,20,16,19,16,16,16,16,20,16,16,16,16,16,16,16,16,16,19,19,16,20,16,16,16,15,18,10,16,19,16,16,16,16,19,16,16,21,16,19,16,22,16,16,16,19,16,16,16,16,16,16,16,16,16,16,16,16,17,19,16,16,16,16,16,16,16,24,16,16,14,19,16,10,15,10,16,16,24,16,19,16,16,16,18,16,16,16,16,18,16,16,16,16,16,16,16,16,16,16,18,16,16,16,16,10,16,16,16,16,30,18,16,16,19,16,14,16,16,16,14,16,19,19,25,16,19,14,16,16,16,16,16,16,10,16,14,19,16,24,22,25,10,16,15,16,16,28,28,28,16,20,16,16,16,16,16,16,16,10,16,16,16,16,16,16,16,16,16,22,16,16,16,16,16,10,16,14,16,16,19,16,16,19,15,16,16,16,16,16,16,16,18,28,14,25,16,25,16,20,19,16,16,16,16,16,16,16,15,16,16,20,16,16,16,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,20,16,16,16,15,16,16,16,16,16,16,16,19,16,10,16,16,16,16,16,16,16,16,22,19,16,16,16,27,19,22,16,16,16,16,16,10,19,16,16,16,16,16,16,15,19,16,16,16,16,16,16,16,16,16,22,16,16,16,16,20,16,16,22,10,16,16,16,16,16,19,16,16,16,16,16,20,16,27,16,16,18,17,16,25,19,10,16,14,18,16,16,16,16,16,16,16,19,16,16,19,16,16,17,16,14,16,14,16,16,23,16,16,19,16,16,16,19,16,19,19,16,23,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,28,28,28,22,16,16,16,16,16,20,16,16,19,24,17,19,16,17,19,20,19,19,10,16,16,24,16,16,22,19,16,16,16,16,17,16,17,16,19,16,16,23,25,16,16,16,16,16,15,16,25,16,16,16,16,19,22,19,14,16,16,16,16,16,16,16,16,16,16,10,16,16,16,19,16,16,16,16,26,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,26,19,10,25,16,16,16,16,17,16,16,16,16,16,19,16,19,16,16,16,25,17,16,16,16,16,16,14,25,25,16,16,14,26,19,16,16,16,10,16,16,10,16,19,10,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,16,10,16,16,16,16,16,16,19,16,16,16,16,16,16,19,16,18,16,16,25,16,16,18,16,16,16,16,20,15,14,16,16,16,16,16,16,16,16,16,19,16,16,19,16,16,16,16,16,16,17,16,16,16,16,16,16,16,19,16,16,28,28,28,19,16,19,16,16,16,16,16,16,14,15,16,16,16,16,18,16,16,10,16,19,16,16,16,20,20,16,16,16,16,16,26,16,16,16,16,20,16,16,16,16,27,16,16,16,16,16,30,17,16,16,16,16,16,17,16,19,16,16,16,16,16,16,16,16,16,10,14,16,16,16,16,16,16,16,16,16,16,16,24,17,16,16,16,16,16,20,16,16,16,25,16,19,16,25,10,27,19,16,24,16,16,10,16,10,16,16,16,16,18,16,20,17,16,16,16,16,19,19,16,18,20,16,16,16,10,16,16,16,19,26,16,16,16,16,19,22,16,14,16,16,16,16,16,17,16,16,16,16,10,16,16,16,16,19,20,25,16,16,16,16,25,16,16,18,16,19,16,16,16,16,16,14,22,16,16,16,16,16,19,14,30,16,16,16,10,19,16,16,16,19,16,16,16,16,16,10,19,14,16,16,29,20,16,10,10,16,16,10,16,16,16,19,16,16,10,19,16,16,10,16,16,16,16,16,16,10,28,28,28,28,19,16,16,16,19,16,16,16,10,16,16,19,16,16,16,16,14,16,16,19,16,16,16,14,19,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,25,16,16,16,15,16,16,16,16,16,16,16,16,19,14,10,16,17,19,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,25,16,18,14,16,16,19,16,16,16,16,10,16,19,14,16,17,19,19,16,14,16,16,16,16,16,16,24,16,20,16,16,26,16,16,16,16,16,16,16,16,16,16,16,19,16,14,16,16,16,16,16,19,16,16,16,16,16,16,16,16,17,16,16,16,16,16,16,17,16,14,16,24,10,16,16,16,19,16,16,16,26,16,16,16,16,18,17,16,16,16,14,16,16,16,19,16,16,16,16,16,16,18,10,16,16,16,19,16,16,16,19,16,16,16,15,16,16,16,16,16,14,16,10,16,16,16,16,10,14,19,16,16,16,16,16,16,16,16,16,25,16,16,16,19,16,14,16,16,17,16,19,16,28,28,28,28,16,16,16,18,16,16,16,16,16,16,16,16,16,16,20,16,16,16,24,16,16,15,16,16,10,16,19,19,16,10,16,26,19,16,10,16,16,16,16,16,16,19,14,17,16,16,19,16,18,16,16,18,16,16,16,16,16,16,14,14,16,14,16,16,16,16,16,26,14,16,17,16,14,16,14,16,10,16,18,16,16,16,16,17,16,10,16,16,16,27,16,16,16,16,19,16,25,19,16,16,16,16,20,19,16,16,16,25,22,19,20,27,26,19,17,16,16,16,16,16,10,20,16,15,16,20,16,16,10,16,16,19,16,16,16,16,22,16,14,16,16,16,18,16,19,16,16,16,16,16,16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,19,16,16,20,16,16,16,20,16,16,16,16,19,20,16,19,16,25,16,16,16,16,16,26,16,16,16,19,16,16,15,19,24,16,16,16,16,18,16,16,22,16,14,16,24,14,16,16,10,16,16,16,16,28,28,28,26,20,19,14,16,19,16,27,16,16,20,19,16,16,16,16,18,16,16,16,20,16,15,16,20,16,20,16,19,20,16,16,16,18,19,16,19,19,16,16,16,16,16,16,26,16,16,16,16,16,16,16,16,16,16,19,16,19,16,16,16,16,16,17,10,16,16,16,17,16,16,16,16,16,16,16,16,10,18,16,16,16,16,19,16,16,19,16,16,26,16,16,16,16,16,10,19,16,16,16,16,22,16,16,16,16,16,16,16,16,16,10,16,16,16,14,16,16,16,20,16,16,20,20,19,16,16,16,17,15,16,16,16,16,16,16,16,16,10,16,16,16,16,19,19,14,10,10,16,20,17,16,16,16,19,20,19,16,10,16,16,16,16,18,10,16,10,16,16,16,18,16,16,19,16,16,16,16,16,16,17,14,16,14,20,16,16,16,19,16,14,16,16,16,16,16,10,10,19,14,16,19,16,18,20,16,10,35,35],"timeDeltas":[37125,83,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,83,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,84,0,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,83,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,83,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,83,42,208,0,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,83,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,83,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,84,41,42,42,0,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,83,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,84,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,83,42,0,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,83,0,83,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,84,0,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,83,42,41,42,42,41,42,42,41,0,42,42,0,41,42,42,0,41,84,83,0,792,41,167,83,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,41,42,42,41,42,42,41,0,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,41,42,42,0,83,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,167,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,42,83,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,83,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,41,84,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,83,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,83,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,0]} \ No newline at end of file diff --git a/bench-camelize.multipleUnderscores-2024-11-24_12-17-49.cpuprofile b/bench-camelize.multipleUnderscores-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..506cc69 --- /dev/null +++ b/bench-camelize.multipleUnderscores-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,8,17,19,25,26]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0},{"id":8,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":357,"children":[9,12],"positionTicks":[{"line":297,"ticks":9},{"line":323,"ticks":10},{"line":316,"ticks":175},{"line":327,"ticks":32},{"line":315,"ticks":65},{"line":292,"ticks":21},{"line":314,"ticks":45}]},{"id":9,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":394,"children":[10,13],"positionTicks":[{"line":138,"ticks":2},{"line":139,"ticks":10},{"line":539,"ticks":1},{"line":308,"ticks":5},{"line":537,"ticks":4},{"line":302,"ticks":14},{"line":530,"ticks":30},{"line":250,"ticks":37},{"line":301,"ticks":74},{"line":311,"ticks":91},{"line":309,"ticks":126}]},{"id":10,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2270},"hitCount":123,"children":[11,20],"positionTicks":[{"line":2,"ticks":123}]},{"id":11,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":11538,"positionTicks":[{"line":2,"ticks":11538}]},{"id":20,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":33,"children":[21],"positionTicks":[{"line":2,"ticks":33}]},{"id":21,"callFrame":{"functionName":"camelize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":727},"hitCount":103,"children":[22],"positionTicks":[{"line":2,"ticks":103}]},{"id":22,"callFrame":{"functionName":"get","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":586},"hitCount":118,"children":[24],"positionTicks":[{"line":2,"ticks":118}]},{"id":24,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":815},"hitCount":18,"positionTicks":[{"line":2,"ticks":18}]},{"id":13,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":114,"children":[14,23],"positionTicks":[{"line":250,"ticks":114}]},{"id":14,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":119,"children":[15,18],"positionTicks":[{"line":139,"ticks":119}]},{"id":15,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":33,"children":[16],"positionTicks":[{"line":537,"ticks":33}]},{"id":16,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":66,"positionTicks":[{"line":530,"ticks":66}]},{"id":18,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":593,"positionTicks":[{"line":139,"ticks":593}]},{"id":23,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":62,"positionTicks":[{"line":668,"ticks":1},{"line":665,"ticks":5},{"line":662,"ticks":9},{"line":669,"ticks":15},{"line":670,"ticks":5},{"line":666,"ticks":13},{"line":661,"ticks":14}]},{"id":12,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2270},"hitCount":2,"positionTicks":[{"line":2,"ticks":2}]},{"id":17,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":302},{"id":19,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":237},{"id":25,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":8,"positionTicks":[{"line":301,"ticks":8}]},{"id":26,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[27]},{"id":27,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[28]},{"id":28,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[29]},{"id":29,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":1,"positionTicks":[{"line":136,"ticks":1}]}],"startTime":293067360167,"endTime":293068003667,"samples":[7,11,11,11,11,11,11,12,11,11,11,16,11,11,11,11,8,11,11,11,11,11,10,11,11,11,11,11,14,17,11,11,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,14,13,11,11,11,18,11,11,11,11,11,11,11,11,14,11,11,18,11,11,11,11,17,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,18,18,11,11,11,11,11,11,11,11,8,11,11,11,11,11,8,11,11,11,18,11,11,11,11,11,11,21,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,9,11,18,11,11,11,11,9,11,11,11,11,11,11,11,11,9,11,10,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,10,11,9,11,11,9,11,11,11,11,18,11,11,16,11,11,14,11,11,11,18,11,11,18,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,11,17,11,11,11,11,11,10,11,11,13,11,11,11,11,11,10,8,11,8,11,9,11,11,11,11,11,11,19,11,9,11,13,21,11,11,11,9,11,11,11,11,11,11,18,11,9,11,11,11,8,11,23,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,23,11,18,11,11,11,11,11,11,11,11,11,11,18,11,9,11,11,18,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,13,11,11,19,11,8,11,11,11,21,11,11,11,11,8,9,11,11,11,18,11,11,11,24,8,11,11,11,19,11,11,11,11,11,11,9,9,11,11,11,11,11,11,11,8,18,11,11,11,11,18,11,18,21,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,9,11,11,11,11,18,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,21,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,19,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,13,9,11,11,11,11,11,8,11,11,11,11,11,18,11,11,11,11,11,11,19,18,11,11,11,19,8,11,18,11,25,11,20,14,11,21,11,11,11,11,11,11,11,11,18,11,11,8,8,11,11,11,11,11,11,11,11,9,11,11,19,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,19,9,11,11,18,11,11,11,11,8,11,11,9,11,15,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,17,11,14,11,11,19,11,11,11,22,18,11,18,11,11,21,11,11,11,11,11,11,11,11,11,19,11,8,11,22,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,14,11,11,11,11,8,11,11,11,9,11,11,11,11,11,11,11,11,11,18,11,9,17,17,11,11,21,11,11,11,11,18,11,11,11,11,18,11,11,10,11,11,11,11,11,11,11,11,11,19,20,11,11,14,9,9,11,11,11,11,18,9,11,11,11,11,9,11,11,11,9,9,11,11,17,17,17,8,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,9,22,11,19,11,11,11,18,11,14,21,21,11,11,11,11,11,11,11,11,11,8,11,18,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,18,18,11,11,11,14,11,11,13,11,11,11,11,10,9,11,11,11,11,11,11,11,11,11,22,11,11,11,11,8,11,11,18,11,9,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,8,11,11,11,11,11,18,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,8,11,10,11,11,11,11,11,11,11,11,11,11,11,11,15,9,13,11,11,22,17,17,17,17,17,17,17,17,17,17,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,18,11,11,11,11,11,19,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,19,11,9,8,11,11,18,11,11,16,11,11,11,11,11,8,11,18,11,8,14,8,11,11,11,11,11,11,18,14,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,18,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,10,11,9,11,18,11,11,11,11,11,11,11,11,11,11,11,11,23,10,11,11,11,11,11,11,18,11,11,9,11,11,11,11,11,14,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,21,11,11,13,18,11,11,11,11,11,11,11,11,11,11,17,17,17,17,11,11,11,8,11,18,11,8,11,18,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,18,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,13,11,19,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,18,11,11,11,11,11,10,21,11,11,11,11,11,11,11,11,11,18,11,11,13,11,11,11,11,11,11,11,11,19,11,9,11,11,11,11,18,11,11,11,11,11,11,11,8,11,11,18,23,11,21,11,11,11,11,11,19,11,11,11,19,11,11,11,11,18,11,11,10,11,19,11,11,9,11,11,11,11,11,11,11,11,8,11,11,11,11,18,18,11,8,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,16,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,13,13,11,11,18,11,18,9,9,9,9,11,18,11,20,11,11,11,11,11,11,11,11,19,18,8,8,17,17,17,17,17,17,11,11,11,11,19,11,11,19,11,18,11,18,11,11,11,8,11,11,11,11,11,11,11,11,11,11,9,14,11,11,11,11,11,11,11,11,22,11,9,11,19,11,11,11,11,11,11,11,18,11,11,22,11,11,11,13,11,11,18,11,11,11,11,18,11,11,11,11,18,11,11,11,11,16,11,11,11,18,8,19,11,11,11,11,11,11,11,10,11,11,11,19,11,18,11,8,11,11,14,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,18,11,9,11,11,11,11,11,13,11,9,11,11,11,11,11,11,11,11,11,11,11,11,19,21,11,11,11,11,11,11,11,11,11,23,18,11,11,11,8,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,18,18,11,11,11,11,11,19,8,11,11,11,11,11,11,11,11,11,11,18,11,11,11,8,11,11,21,11,8,18,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,11,11,11,11,11,11,11,11,11,11,11,9,11,18,11,11,11,11,19,19,11,11,11,11,11,11,11,11,21,11,8,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,17,17,17,17,17,17,17,11,11,21,11,11,11,11,19,11,10,11,11,11,11,11,11,11,11,11,14,11,11,19,11,11,21,11,14,11,11,11,18,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,10,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,9,11,11,11,11,11,11,11,14,8,11,11,11,11,8,21,11,11,11,16,11,11,11,11,11,11,11,22,11,9,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,21,11,18,11,11,11,11,11,11,11,11,11,8,11,13,11,11,19,11,11,11,11,11,11,11,11,20,11,11,11,11,19,11,11,11,11,11,11,11,11,18,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,8,19,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,24,11,11,11,11,11,11,11,11,11,11,11,13,11,8,11,11,18,11,11,11,11,11,11,11,11,11,11,11,9,11,11,17,17,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,22,14,18,11,11,18,11,11,11,21,18,11,11,11,11,19,11,13,11,11,11,22,11,11,11,11,18,11,11,11,11,11,11,9,11,18,11,19,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,19,11,11,11,11,11,11,11,19,22,11,11,11,11,11,8,11,11,11,11,11,11,11,19,11,11,11,11,11,11,18,11,11,11,11,11,9,11,11,18,22,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,15,11,11,11,11,11,8,11,10,11,11,11,11,11,11,9,11,11,11,10,11,11,15,11,11,11,11,9,11,11,11,22,11,11,22,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,11,11,11,11,11,11,11,21,11,11,11,11,11,21,11,11,11,11,11,11,11,9,11,11,11,18,11,18,22,11,8,11,23,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,9,11,11,18,11,11,11,11,11,11,11,11,9,11,11,23,23,11,18,11,11,21,11,14,11,9,11,18,8,8,11,11,18,11,8,11,11,15,11,22,11,11,14,11,11,11,20,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,8,16,11,11,11,9,11,11,11,11,11,11,11,18,23,11,11,11,18,11,21,18,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,18,11,19,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,10,11,8,11,11,11,11,11,11,18,8,11,11,11,11,19,11,8,11,19,11,11,11,11,11,11,11,11,11,11,18,11,8,18,14,11,11,11,9,9,9,9,9,9,11,9,11,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,8,11,11,11,9,11,11,11,11,11,11,8,11,19,11,11,11,11,18,21,19,11,11,11,11,11,11,11,11,11,11,22,11,11,11,21,11,11,11,11,17,17,17,17,17,17,17,17,11,11,11,11,11,11,11,18,11,11,11,14,8,11,11,11,11,11,11,11,11,23,14,11,11,11,11,11,11,11,11,14,11,11,11,11,18,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,18,11,11,11,10,11,11,11,11,11,20,11,11,11,11,11,11,11,11,11,11,11,16,11,11,19,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,18,18,11,11,11,11,11,11,11,19,11,11,11,11,11,18,11,11,18,11,9,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,18,11,11,11,11,9,11,21,11,11,19,11,11,10,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,11,11,18,11,11,8,18,11,11,11,11,11,11,11,11,9,11,8,21,11,11,18,20,11,11,11,11,11,16,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,18,9,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,18,11,11,21,11,11,11,18,11,11,11,11,11,19,11,19,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,24,11,11,11,11,11,18,11,11,11,19,11,11,11,11,11,11,11,11,11,11,10,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,19,11,11,11,11,11,11,11,18,11,11,18,11,10,11,11,11,18,11,11,11,11,11,11,11,11,9,11,11,18,11,11,11,14,11,11,11,19,21,10,11,11,18,11,11,11,19,11,11,18,11,13,11,11,11,11,11,11,11,16,19,11,11,11,11,11,22,11,11,11,11,11,11,15,11,11,11,11,11,11,11,13,11,11,11,9,11,8,8,11,11,11,10,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,17,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,15,11,11,11,11,11,9,11,10,11,11,11,11,11,11,11,11,11,11,11,18,9,21,15,11,11,11,11,17,11,11,11,11,11,11,11,19,11,11,11,21,11,11,11,11,11,11,9,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,16,11,11,11,9,11,11,9,11,11,13,22,9,11,11,11,11,18,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,23,11,11,11,16,11,21,11,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,18,11,11,18,11,11,11,11,11,11,11,23,11,11,23,16,11,11,11,11,11,18,11,11,11,11,11,11,11,11,19,11,18,11,11,11,8,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,19,11,11,11,9,11,11,11,11,11,11,22,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,21,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,11,9,14,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,18,11,11,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,9,11,11,11,15,11,9,11,8,11,11,11,11,11,11,11,11,11,16,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,9,19,11,11,13,11,18,11,11,11,11,11,23,11,11,22,11,15,11,15,11,11,11,11,11,11,11,11,11,11,22,11,9,18,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,10,11,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,22,11,11,11,11,11,11,21,11,18,11,11,11,8,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,8,11,11,11,18,11,11,11,11,18,11,11,11,9,11,18,11,11,11,11,11,11,11,11,11,13,9,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,15,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,10,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,11,11,24,11,9,11,11,9,11,11,17,17,17,17,11,11,11,8,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,22,11,11,9,11,11,11,11,11,11,10,11,11,11,11,11,11,18,18,11,10,11,11,11,11,11,11,11,18,11,9,11,11,11,25,11,11,11,11,11,11,14,21,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,16,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,14,11,11,9,11,11,11,11,11,8,11,11,8,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,13,11,11,18,16,11,11,21,11,18,22,11,11,14,11,11,9,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,8,11,11,11,11,18,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,10,11,11,18,11,11,11,11,11,11,9,11,11,10,11,11,10,11,11,11,11,11,11,11,8,11,17,17,17,17,17,9,11,11,11,9,11,11,11,18,11,11,10,11,11,11,9,23,11,11,11,11,11,11,11,18,11,11,9,11,11,11,11,11,11,11,9,11,8,11,24,21,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,21,11,11,11,9,11,11,11,11,11,11,8,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,18,11,11,11,11,11,11,18,11,11,19,11,11,11,11,11,11,11,11,11,19,11,11,11,14,11,11,11,11,11,9,11,20,18,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,18,11,11,11,11,11,18,11,8,11,11,13,19,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,9,20,11,11,11,11,11,9,9,9,9,9,9,9,9,9,9,11,11,11,11,19,11,11,19,11,11,11,11,11,11,11,11,18,11,11,11,11,11,19,10,11,11,11,11,19,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,16,11,8,11,17,17,17,17,11,11,11,16,11,11,11,11,11,11,11,18,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,14,11,11,13,11,11,11,11,18,11,11,11,13,11,11,11,9,11,11,11,16,11,11,9,11,11,11,11,11,11,9,11,9,18,11,10,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,19,11,18,11,11,11,9,11,11,11,11,13,11,18,14,11,11,18,11,11,11,11,11,11,11,11,11,11,13,18,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,11,11,10,11,11,10,18,10,11,11,11,11,11,11,17,11,9,11,11,11,11,13,18,11,11,11,11,11,21,11,11,11,9,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,18,11,11,11,11,11,11,18,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,10,11,11,11,21,11,11,11,11,21,11,11,11,11,11,11,11,11,11,13,11,18,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,18,11,8,18,11,11,8,11,11,11,11,11,11,11,11,11,11,8,11,11,18,11,11,17,17,17,17,17,17,17,17,17,11,11,11,11,11,11,11,11,22,11,10,11,11,11,11,19,11,11,11,11,8,19,11,9,11,11,11,11,11,11,11,20,18,11,11,18,9,11,11,11,11,11,11,11,11,11,11,11,11,13,11,11,18,11,11,11,11,11,11,11,11,11,11,11,8,8,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,18,11,11,18,11,16,11,11,11,11,11,18,11,10,11,11,11,14,10,11,11,11,11,11,11,18,11,10,10,9,9,19,11,11,11,8,11,18,11,11,11,11,11,11,11,11,11,11,11,8,11,21,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,21,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,18,11,11,19,11,11,13,11,11,11,11,11,11,11,14,11,11,11,11,11,11,24,10,17,17,17,17,17,17,17,17,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,19,11,11,10,11,18,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,9,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,21,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,13,11,11,11,11,11,11,11,11,11,11,11,11,21,18,11,11,11,11,11,11,11,9,11,11,11,11,11,18,11,11,11,8,11,11,18,9,11,18,8,11,8,9,25,11,11,11,11,11,11,18,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,21,11,8,18,11,11,18,13,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,19,11,11,18,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,15,18,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,18,11,18,11,11,11,11,11,11,11,11,19,11,11,11,18,11,11,8,11,11,11,11,17,17,17,17,17,11,11,11,18,11,11,11,11,11,11,18,11,11,11,20,11,20,11,11,11,11,11,11,11,11,9,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,16,14,11,11,11,14,11,11,11,11,11,11,11,11,8,11,11,18,11,9,11,13,11,11,14,18,18,11,11,18,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,9,9,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,18,11,11,11,19,11,11,14,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,9,11,11,11,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,8,11,14,11,9,15,11,11,13,11,11,8,11,11,11,11,11,10,11,11,11,11,11,19,19,11,11,11,17,17,17,17,17,17,17,17,17,19,11,11,11,16,11,11,11,11,17,16,11,9,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,18,11,11,11,9,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,18,11,11,18,9,11,18,11,11,11,16,11,11,11,11,11,11,19,11,11,11,11,11,16,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,8,18,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,13,11,11,14,11,11,11,11,9,11,14,11,11,8,18,11,11,11,11,11,11,11,11,18,11,11,19,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,8,11,11,11,9,11,11,11,11,11,18,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,13,11,22,11,11,9,11,11,11,11,8,11,11,14,9,11,11,11,11,11,11,11,11,11,13,11,17,17,17,17,17,17,17,17,17,17,8,11,11,11,11,11,11,11,11,11,11,20,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,16,11,11,11,11,11,11,11,11,11,11,11,11,18,19,11,22,18,11,11,8,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,13,11,11,9,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,19,11,11,11,11,11,9,11,11,11,11,12,11,11,11,9,11,11,11,11,11,18,11,11,11,11,11,11,11,11,14,11,11,18,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,16,11,11,11,18,14,11,11,11,11,20,14,8,11,11,18,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,19,11,11,11,11,11,11,11,13,11,11,11,11,18,11,11,11,11,19,11,18,11,11,18,8,11,11,11,11,11,11,11,11,9,11,11,11,11,11,18,11,11,11,11,11,8,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,18,11,11,11,11,11,11,11,11,11,16,11,11,11,11,9,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,25,11,11,11,11,11,10,11,11,11,11,18,11,13,18,11,8,11,11,11,11,11,11,11,11,11,11,11,8,22,16,11,11,11,11,11,21,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,14,11,11,19,11,10,11,11,11,11,11,11,11,11,9,8,11,11,8,11,17,17,17,17,17,17,17,17,17,17,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,13,11,11,11,11,15,11,11,11,11,11,8,19,9,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,9,19,11,8,11,11,9,11,11,13,18,8,11,11,22,13,11,11,11,11,11,11,14,11,11,11,10,11,10,11,9,13,11,11,11,11,11,11,11,11,11,21,18,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,23,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,16,11,8,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,14,11,11,11,10,11,11,11,11,11,11,11,11,13,8,11,11,11,11,11,19,10,11,9,22,19,11,18,11,11,11,18,11,22,11,11,11,8,11,19,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,25,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,8,11,10,11,8,11,11,11,11,11,11,23,18,11,8,11,11,11,11,11,11,11,11,11,11,11,11,19,11,18,21,11,11,11,11,11,11,11,8,11,9,14,11,11,9,11,9,11,11,11,11,19,11,11,11,11,11,11,11,17,17,17,17,11,11,11,11,8,14,11,11,11,11,11,22,11,11,11,11,11,19,11,11,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,9,11,11,11,11,11,8,11,11,11,11,11,16,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,24,11,11,11,11,11,22,11,11,11,8,11,11,13,11,18,11,11,11,9,11,18,11,11,11,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,9,11,11,11,11,18,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,21,14,11,11,11,11,21,11,11,11,11,11,11,16,18,11,11,11,11,11,11,18,11,18,19,10,11,11,11,11,11,11,11,11,19,13,11,11,11,11,19,11,11,11,11,11,11,11,11,8,11,11,18,11,11,22,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,17,17,17,17,17,17,17,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,15,11,18,11,11,11,8,11,11,11,9,11,11,11,11,11,11,9,11,11,22,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,18,8,11,11,11,19,11,18,11,11,18,11,18,11,11,11,11,11,11,23,8,11,11,11,11,11,11,11,11,11,11,8,18,18,19,11,11,11,8,11,11,8,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,8,11,11,14,11,11,11,18,11,13,18,13,18,14,21,11,23,19,11,11,11,11,11,11,11,11,22,11,19,11,9,8,11,11,19,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,9,9,9,9,9,9,9,9,9,9,9,9,9,9,11,11,11,11,9,11,11,11,11,14,9,11,11,14,9,11,11,11,11,11,11,11,18,18,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,8,11,11,11,22,11,11,11,13,11,11,11,18,23,11,18,11,11,18,11,11,11,11,11,11,11,9,11,11,18,13,11,11,11,11,11,22,11,11,11,18,11,11,11,11,18,11,18,11,18,11,11,11,11,11,11,8,11,11,11,18,11,11,11,11,11,11,11,11,11,22,11,11,11,17,17,17,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,19,11,23,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,22,11,11,11,18,11,18,11,11,10,11,11,11,11,11,11,11,11,11,11,11,18,11,11,19,11,11,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,10,11,11,11,11,11,18,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,22,11,11,11,11,18,9,11,11,11,11,20,19,11,11,11,11,10,11,11,11,11,11,8,11,11,11,11,11,11,11,11,18,21,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,9,21,11,11,16,11,11,11,11,11,11,11,11,11,11,11,11,11,23,11,11,9,11,18,11,11,11,16,11,11,11,11,11,11,11,11,11,11,16,11,17,17,17,17,17,8,11,18,23,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,16,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,13,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,22,11,11,11,11,11,11,8,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,16,11,11,18,11,11,11,11,8,11,19,11,11,11,11,11,11,11,23,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,23,9,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,9,11,11,11,10,11,11,11,11,11,11,11,9,14,11,11,11,11,21,19,11,11,11,11,11,11,20,11,11,11,11,11,11,18,11,16,16,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,17,17,17,17,17,11,11,18,8,11,11,11,11,11,11,18,11,11,11,11,22,11,11,11,11,11,11,11,11,18,11,18,11,11,11,18,11,11,11,18,11,11,11,11,11,11,11,10,11,11,18,11,13,11,21,8,11,19,11,11,11,18,11,11,11,11,11,11,11,11,11,11,8,8,11,11,11,11,18,11,11,11,11,11,11,24,11,9,8,11,11,11,11,11,17,18,13,11,11,11,11,8,11,11,18,8,11,11,19,11,11,11,11,11,9,11,11,8,11,11,9,11,11,11,11,14,10,11,11,11,11,11,11,11,18,11,20,11,11,11,19,11,11,11,11,8,17,11,20,11,11,15,17,11,18,11,8,11,11,11,11,9,11,11,11,11,11,14,11,16,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,8,11,10,11,11,11,11,9,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,23,8,11,11,11,11,11,11,11,8,11,11,11,9,11,18,11,11,11,18,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,24,11,11,11,11,11,9,11,11,11,11,18,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,23,11,11,11,8,11,11,11,11,11,11,11,11,9,19,11,23,21,11,11,11,11,11,23,11,9,11,11,11,11,11,14,11,11,11,11,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,11,11,11,11,11,11,11,9,14,11,11,11,11,23,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,15,8,11,11,11,11,11,11,11,11,11,11,11,11,21,11,23,19,11,11,11,11,11,9,11,11,11,8,11,11,11,11,9,11,11,22,11,10,11,11,11,22,11,11,13,11,11,11,11,11,11,18,13,23,11,11,11,11,11,23,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,18,11,11,11,11,11,11,11,11,11,11,13,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,18,11,11,10,11,11,11,11,18,11,11,11,11,11,11,11,23,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,22,11,11,10,11,11,8,11,22,14,11,11,17,17,17,17,17,17,8,8,11,18,11,11,11,11,18,11,9,11,11,11,11,11,18,11,22,11,11,24,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,14,11,18,11,11,14,11,11,11,11,11,11,11,18,11,11,11,14,11,23,9,11,11,8,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,19,11,11,11,11,10,11,11,18,11,24,9,11,11,10,8,11,9,11,11,11,18,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,9,9,11,11,9,11,11,11,11,11,11,11,11,11,11,11,14,18,17,11,11,9,11,11,11,11,11,11,11,11,11,8,18,11,11,19,11,11,19,11,11,11,20,11,11,11,11,11,11,11,11,11,11,11,19,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,10,11,14,19,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,23,11,11,11,11,11,11,11,11,11,18,14,11,11,11,17,17,17,17,17,17,19,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,18,11,8,11,11,11,11,18,11,11,22,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,9,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,8,11,11,11,11,14,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,21,9,11,11,11,11,8,11,11,11,11,11,11,18,11,11,11,11,11,11,19,11,11,18,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,24,11,11,11,17,17,17,11,11,11,11,11,11,11,11,19,22,11,11,8,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,18,11,11,11,22,18,11,11,11,9,11,11,13,11,11,21,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,18,11,11,11,11,23,11,9,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,21,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,8,11,11,11,18,11,11,11,14,11,11,11,11,11,11,11,11,9,11,11,11,11,9,11,11,11,11,11,11,11,11,9,11,15,11,11,11,18,8,11,11,11,19,11,11,11,8,11,11,11,11,11,11,11,10,11,11,11,18,11,11,11,11,11,11,11,11,8,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,11,11,18,11,8,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,18,11,11,11,15,11,11,8,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,9,11,11,11,11,22,11,11,11,11,11,11,11,11,11,18,11,11,11,18,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,15,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,10,11,11,11,11,11,11,8,20,11,11,11,11,11,11,11,11,24,18,11,11,11,11,11,11,11,11,11,11,11,8,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,22,13,23,8,11,11,11,8,11,11,11,11,11,11,11,11,11,9,11,13,11,11,8,22,11,11,11,19,11,11,11,11,10,11,9,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,21,11,9,11,11,11,11,11,11,11,8,11,8,11,11,11,8,11,9,11,11,11,11,11,11,11,11,11,11,11,8,11,9,11,11,14,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,22,8,11,11,11,11,19,11,14,11,11,11,11,19,11,11,11,11,11,21,11,11,18,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,11,11,11,8,8,11,11,11,11,11,11,11,11,11,14,20,11,11,11,11,11,11,11,11,11,11,14,11,11,8,11,11,11,11,22,11,11,19,11,8,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,14,8,11,11,11,11,11,9,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,14,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,19,11,18,11,13,11,11,11,11,11,11,11,11,11,11,11,22,23,11,11,22,11,11,17,17,17,17,11,19,11,11,11,11,18,11,11,11,18,11,11,11,11,11,11,11,18,11,11,9,11,11,19,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,9,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,8,11,11,11,11,11,9,21,11,11,11,11,18,11,11,11,11,11,11,11,19,11,11,11,22,18,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,9,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,22,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,24,9,8,11,11,11,11,11,23,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,21,11,11,11,11,11,11,19,11,16,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,18,9,21,11,11,11,11,11,11,11,11,11,11,9,11,11,21,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,19,11,11,21,11,11,11,11,11,11,11,18,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,23,11,11,11,11,11,11,11,23,19,8,11,19,11,11,11,11,11,8,11,11,11,24,11,18,9,11,11,11,11,11,11,11,11,11,11,11,8,18,11,11,11,11,11,11,11,25,11,9,11,11,11,11,11,11,19,11,21,11,11,11,11,8,13,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,22,11,8,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,20,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,23,20,11,11,11,11,18,11,11,11,11,11,22,11,11,8,11,11,11,11,11,18,11,11,11,11,11,11,18,17,17,17,9,11,11,20,11,11,11,9,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,19,11,11,17,10,11,11,11,11,11,11,11,14,11,11,11,11,11,11,8,11,8,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,8,11,16,11,11,11,11,11,18,11,9,11,11,11,11,11,11,11,11,11,11,11,16,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,13,21,11,11,19,18,11,11,11,8,11,11,11,11,11,11,11,11,11,14,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,13,11,11,19,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,9,21,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,21,11,11,11,11,11,11,11,11,11,11,13,11,11,19,23,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,17,17,17,17,17,11,11,11,11,11,11,11,11,11,19,11,18,11,11,23,11,11,9,11,11,11,11,11,11,11,11,11,11,22,8,11,11,11,11,18,11,11,11,14,19,11,11,11,9,18,11,18,8,11,11,11,11,18,11,11,22,11,11,22,11,19,11,11,17,11,11,11,11,11,11,11,21,11,11,11,14,16,11,11,11,11,11,11,11,11,11,11,15,11,11,11,11,11,11,9,11,11,15,11,8,11,11,11,11,18,11,8,14,8,9,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,20,22,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,18,11,11,11,18,11,11,11,11,11,8,11,11,11,18,11,20,21,11,22,11,13,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,9,11,23,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,21,11,11,11,22,11,8,11,11,11,11,17,17,17,17,17,17,17,17,17,17,11,11,11,19,11,11,11,11,18,11,18,11,18,11,11,11,11,11,11,11,11,11,11,11,21,18,8,11,11,21,11,18,11,18,11,11,11,11,11,13,11,11,19,11,11,11,18,11,11,11,9,11,18,11,11,11,11,8,11,11,11,11,8,8,11,11,11,11,11,11,11,11,14,11,11,8,19,11,18,11,11,11,11,18,11,23,11,22,8,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,16,11,11,11,11,11,11,11,8,11,11,18,11,11,11,11,11,11,11,8,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,22,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,18,21,11,11,11,11,11,11,11,11,11,11,11,18,11,19,11,11,11,11,11,11,11,11,11,18,18,11,11,11,11,11,18,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,18,11,11,11,11,13,11,11,18,9,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,17,17,17,11,11,11,11,11,11,18,19,11,11,11,11,22,11,11,11,11,8,11,8,11,11,11,11,14,11,11,11,11,11,14,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,18,9,13,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,13,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,22,11,11,13,11,21,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,18,11,13,11,11,22,11,11,18,11,11,11,9,18,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,18,11,9,11,20,11,11,11,18,11,11,11,19,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,14,11,16,11,11,8,21,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,15,11,11,11,11,18,9,17,17,17,17,17,11,11,11,11,11,11,11,15,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,15,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,23,14,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,15,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,9,11,16,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,18,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,15,11,11,11,11,9,22,11,11,11,11,11,11,11,11,18,11,18,11,11,8,18,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,18,11,8,11,18,11,11,18,11,14,11,16,11,11,8,11,11,11,11,11,11,11,11,11,9,22,18,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,19,11,11,11,9,11,13,11,11,11,8,11,11,9,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,18,11,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,18,11,11,11,11,11,11,23,11,11,11,11,11,11,11,18,11,13,11,11,11,11,11,11,11,11,11,17,17,17,11,11,11,19,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,21,11,9,11,11,11,11,11,11,11,11,11,11,11,11,18,11,9,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,16,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,19,19,18,16,11,11,11,11,11,18,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,8,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,18,11,11,11,11,11,11,11,11,11,11,19,11,11,8,11,11,11,11,11,18,11,11,11,11,11,18,11,11,18,8,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,25,11,11,11,11,11,18,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,18,17,17,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,18,11,11,11,11,8,11,11,11,11,11,11,11,18,11,11,11,11,19,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,10,11,19,11,18,11,11,9,11,22,8,10,11,11,11,13,11,18,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,24,11,11,11,11,11,11,11,11,11,11,11,18,9,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,18,11,11,9,11,11,8,10,11,11,14,11,11,11,11,11,11,11,11,11,17,17,17,17,17,11,11,11,8,11,8,11,9,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,8,11,11,11,11,11,21,11,9,11,11,19,11,11,9,8,11,11,11,8,11,21,11,18,13,11,11,11,11,11,11,11,16,11,11,11,11,11,11,11,11,11,11,11,11,18,8,11,8,11,11,11,11,19,18,11,11,8,9,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,9,11,11,11,11,18,10,11,18,8,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,11,11,8,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,18,19,11,11,11,21,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,25,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,14,11,11,11,11,11,11,11,11,11,11,20,11,11,11,11,11,11,11,8,8,19,11,18,11,11,11,11,11,19,11,11,11,18,11,11,13,11,18,17,17,19,11,11,19,11,11,11,11,11,13,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,11,11,11,11,9,10,11,11,11,11,11,11,11,8,9,11,11,11,11,11,11,11,11,11,11,18,11,8,11,11,11,11,11,19,8,11,22,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,18,18,14,19,11,11,11,11,11,11,11,11,11,11,18,11,8,18,11,11,11,11,11,11,11,11,17,17,17,17,11,16,11,11,11,11,20,11,11,11,11,11,10,11,11,18,11,11,11,11,8,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,9,23,11,22,11,16,11,11,11,11,22,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,9,11,11,11,11,18,8,11,18,11,11,8,11,18,11,11,11,9,11,11,11,11,11,11,11,21,23,11,19,20,11,10,11,11,11,11,11,21,11,11,11,11,11,11,11,16,19,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,23,11,11,11,8,11,11,18,11,11,11,11,18,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,10,11,11,11,9,11,11,11,11,11,11,18,9,11,11,11,9,11,11,11,11,13,18,11,11,11,11,8,11,9,14,11,11,11,11,11,11,11,11,11,11,18,11,10,11,11,11,11,11,11,21,11,17,17,17,17,18,18,11,11,11,11,11,11,11,11,11,11,11,11,9,10,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,21,18,11,11,11,11,10,11,11,11,18,11,19,11,11,18,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,20,11,11,11,11,11,11,11,11,18,19,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,22,11,11,18,13,9,11,18,11,22,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,8,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,22,11,11,11,19,11,11,11,8,11,11,13,11,11,11,11,11,11,11,9,11,11,11,18,18,11,11,11,17,17,17,17,17,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,19,11,11,11,9,11,11,11,11,11,11,11,9,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,21,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,8,11,11,11,19,11,8,11,17,11,11,11,11,11,9,11,8,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,8,11,18,11,9,11,11,11,11,11,11,11,8,18,11,9,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,10,19,11,11,11,21,11,11,11,11,11,11,11,11,11,11,11,11,11,16,11,11,11,17,14,11,11,11,11,10,11,11,11,11,11,17,17,17,17,17,17,17,17,17,17,17,18,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,22,11,11,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,11,11,19,11,11,9,11,11,11,11,9,11,11,11,11,11,8,24,19,11,22,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,18,11,11,13,9,11,11,11,11,11,11,11,13,15,11,14,11,11,18,11,23,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,9,11,10,11,11,11,11,11,11,9,11,21,11,11,11,11,11,8,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,21,11,11,11,11,17,11,11,11,11,11,11,11,11,11,18,11,18,11,9,11,11,11,11,18,11,11,11,8,11,11,11,18,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,11,11,11,11,11,11,11,11,11,11,10,11,15,8,11,11,11,11,11,18,11,21,10,11,11,11,11,11,18,11,11,11,18,11,11,11,11,18,19,11,11,11,11,18,11,18,11,14,11,11,11,11,11,11,11,11,17,17,17,17,17,18,8,11,11,11,18,11,11,22,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,18,11,11,8,18,11,11,11,11,18,11,11,11,11,9,11,19,11,11,11,11,11,11,19,11,11,11,11,11,11,11,18,18,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,17,11,11,16,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,23,11,11,11,11,11,11,8,9,11,11,11,11,19,11,11,11,13,11,21,11,11,17,18,11,11,15,11,19,11,11,11,11,11,11,11,11,11,11,11,19,16,11,11,11,18,11,11,11,16,11,9,11,18,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,21,11,11,11,11,11,11,11,9,9,10,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,22,11,11,11,11,11,21,23,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,13,22,11,11,11,11,8,19,11,20,11,15,11,11,11,19,11,11,16,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,8,11,9,19,11,11,11,11,10,11,11,11,11,11,21,11,11,11,11,11,17,17,17,17,17,17,17,11,11,11,16,11,11,23,11,11,11,8,11,11,23,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,9,11,11,23,11,11,11,11,11,11,11,11,11,11,11,11,16,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,16,8,9,11,8,11,9,11,9,11,11,21,11,11,11,11,18,11,11,11,11,16,8,18,23,11,11,11,11,11,11,18,11,11,11,11,11,11,18,11,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,21,11,11,11,11,11,11,13,11,11,11,11,11,11,9,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,8,11,11,16,11,21,11,11,11,11,11,24,13,18,18,11,11,11,11,11,11,11,11,11,20,11,11,11,11,11,11,11,11,19,11,11,11,11,11,11,8,11,9,11,11,11,11,23,8,18,8,11,19,11,11,11,11,9,11,11,11,13,11,18,11,11,11,11,11,11,11,11,11,9,8,11,16,11,19,11,11,23,11,11,11,11,11,23,11,11,14,18,11,11,11,21,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,15,18,11,11,11,11,11,11,11,17,17,17,17,17,11,11,16,11,9,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,11,11,11,18,11,11,11,11,11,11,11,11,8,11,11,11,29],"timeDeltas":[84125,2417,2917,1458,375,375,208,84,166,334,208,42,41,42,42,41,42,125,83,0,42,83,0,84,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,250,750,625,417,250,750,291,334,916,584,125,666,1084,83,83,42,167,83,292,541,1834,83,750,83,459,208,667,625,125,208,1042,541,42,208,667,167,416,42,42,41,42,125,42,41,42,42,83,42,0,41,42,42,41,42,0,42,125,41,250,42,42,583,417,541,84,41,42,42,41,42,0,42,41,0,84,500,41,84,1333,625,875,0,42,83,0,42,0,83,83,42,42,41,42,0,83,0,42,42,0,41,42,42,83,83,42,42,41,0,42,250,208,42,42,41,84,83,42,41,42,0,42,41,84,41,84,125,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,125,2667,208,208,125,42,42,2166,84,41,42,0,42,41,250,125,42,333,167,42,291,250,167,708,459,41,1334,83,42,41,42,42,0,41,42,0,42,83,83,42,0,42,41,42,0,42,41,42,0,42,41,84,0,41,42,42,41,42,0,42,41,42,0,42,83,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,83,167,83,42,42,41,42,42,41,42,42,41,42,42,41,42,42,41,0,42,42,0,41,42,42,0,41,125,42,0,42,41,42,42,41,0,42,42,41,42,42,0,83,0,42,41,42,42,0,0,41,42,42,41,0,125,84,41,42,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,84,0,83,83,42,0,42,41,42,42,83,42,41,42,0,42,41,0,42,42,41,42,42,41,42,42,41,42,42,41,42,83,0,42,83,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,84,41,42,0,42,41,42,42,41,42,0,42,41,42,42,41,0,0,42,42,41,42,83,84,83,42,41,0,42,83,42,83,42,42,250,41,250,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,83,42,42,0,41,42,42,125,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,84,0,41,125,42,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,83,42,42,0,41,42,42,41,42,0,83,42,42,41,0,42,42,41,0,42,42,41,42,42,41,459,125,500,291,125,250,250,334,83,83,42,125,42,83,417,208,83,84,125,41,42,42,41,42,0,42,41,42,0,42,41,42,42,83,42,41,42,0,42,41,0,459,166,42,125,42,208,125,708,42,125,125,542,41,292,42,375,41,459,625,291,1792,2167,458,250,42,0,41,125,1000,167,83,834,83,1083,250,875,3084,2541,542,250,42,41,42,0,0,42,791,0,292,208,84,41,42,125,83,0,42,42,41,42,42,83,42,41,42,42,41,42,125,0,42,41,0,42,292,291,3500,42,0,83,209,41,292,42,375,83,0,42,83,292,41,209,375,791,750,500,375,792,0,83,84,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,42,42,0,41,42,42,0,0,41,42,42,0,41,42,42,0,41,42,42,41,84,0,83,0,42,41,0,84,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,167,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,0,42,42,41,0,84,41,42,0,42,41,0,42,0,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,333,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,83,375,292,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,125,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,83,0,42,41,0,42,42,41,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,125,42,42,83,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,83,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,83,42,41,292,83,125,42,0,42,41,42,42,0,41,42,42,41,0,84,41,42,42,41,42,0,42,41,42,0,42,41,334,166,250,167,0,125,42,41,334,166,42,42,125,333,125,83,125,42,500,83,459,41,42,125,0,42,41,42,42,41,0,42,42,41,0,42,42,83,42,41,125,42,125,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,83,83,0,42,42,41,42,0,500,0,458,250,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,41,84,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,42,0,83,0,42,41,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,167,42,41,42,42,41,0,42,42,41,42,0,42,41,459,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,250,41,42,0,42,83,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,0,84,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,83,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,42,42,0,41,84,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,84,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,84,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,0,0,42,42,41,42,0,42,41,42,42,41,125,0,42,42,41,42,42,41,42,42,0,41,42,125,83,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,84,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,83,42,83,42,42,125,41,42,42,41,42,0,167,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,83,0,42,42,0,41,42,42,0,41,42,42,0,41,125,42,42,41,42,167,41,125,84,83,42,83,250,125,42,83,42,41,250,42,42,41,0,42,42,0,83,167,291,42,42,41,42,0,42,41,42,83,42,0,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,83,42,0,83,42,41,42,42,41,42,42,41,42,83,42,42,41,84,0,41,42,83,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,125,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,0,125,125,250,250,291,84,83,42,41,42,0,83,875,0,42,125,0,42,41,42,42,41,0,84,41,42,42,41,42,42,0,41,42,167,41,42,42,0,83,0,42,41,42,42,41,42,42,0,41,42,0,42,41,42,42,0,83,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,84,0,41,42,0,42,41,42,0,83,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,84,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,83,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,83,42,83,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,83,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,83,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,0,42,41,42,0,42,41,42,42,0,41,42,83,42,42,125,41,0,42,0,125,0,167,208,42,41,42,250,42,41,42,0,42,0,41,42,83,42,0,42,41,0,42,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,83,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,84,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,83,42,0,42,41,42,42,0,41,42,42,83,42,0,41,42,42,0,41,42,83,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,84,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,84,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,458,84,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,209,83,0,42,41,42,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,125,42,41,0,42,83,42,42,41,42,0,42,83,42,0,41,42,42,0,83,0,42,41,42,42,41,0,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,0,42,42,41,42,42,41,0,42,42,83,42,83,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,208,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,83,84,333,42,208,167,458,0,42,41,42,167,41,42,42,41,42,42,41,42,42,41,42,42,41,0,42,42,41,42,42,41,84,41,42,42,0,41,42,42,208,42,41,42,0,42,208,42,125,250,41,42,42,41,42,0,42,41,42,42,41,42,42,41,42,42,41,42,0,208,0,42,42,41,42,42,0,41,42,208,84,41,209,41,42,42,41,42,83,0,42,42,41,42,83,0,42,42,166,0,84,41,125,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,41,42,42,0,41,42,42,41,125,42,0,42,41,84,41,42,42,0,41,42,42,41,0,84,41,0,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,42,41,42,42,83,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,83,83,0,42,42,41,42,83,125,0,42,167,41,42,42,125,41,125,42,42,41,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,83,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,84,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,83,42,41,84,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,83,0,42,41,84,41,42,42,0,41,42,42,0,83,42,0,41,42,42,0,41,42,42,0,0,41,42,0,83,0,42,42,0,41,42,42,41,0,42,42,41,42,0,83,0,42,125,42,41,0,42,42,0,125,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,0,83,42,42,0,41,42,42,41,42,0,42,1125,0,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,125,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,0,83,0,42,41,42,42,83,42,0,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,1000,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,42,0,125,0,41,42,167,41,42,42,41,42,42,41,0,42,42,166,84,0,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,42,41,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,41,42,42,41,42,42,41,42,42,41,0,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,83,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,83,0,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,83,0,83,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,83,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,167,42,41,42,42,83,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,0,41,42,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,167,83,0,0,84,41,0,42,42,0,41,417,42,83,42,41,0,42,208,42,167,83,167,375,41,167,375,83,84,291,84,41,0,42,83,42,125,167,83,167,41,84,0,41,42,125,83,125,84,125,125,0,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,125,42,166,125,0,42,42,0,41,42,0,42,41,42,83,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,83,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,83,0,42,42,41,0,42,125,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,333,42,0,41,42,42,41,0,42,42,41,84,83,0,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,0,83,0,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,83,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,83,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,84,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,84,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,125,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,166,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,83,83,167,42,83,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,83,0,42,0,208,292,42,291,84,333,208,125,84,208,292,458,0,125,417,41,42,42,41,42,42,0,41,125,125,42,42,0,41,42,42,41,42,42,208,42,41,0,42,42,41,84,166,84,41,0,84,125,83,42,83,42,41,42,42,41,0,42,42,83,42,41,0,42,42,41,0,84,41,0,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,84,41,42,0,83,0,42,42,41,42,0,83,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,83,42,0,41,42,42,41,0,42,42,41,334,166,42,42,41,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,209,125,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,83,0,42,41,42,0,42,41,42,42,0,41,42,42,0,83,42,41,42,42,0,83,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,42,0,125,42,83,83,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,83,0,42,0,83,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,83,42,125,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,42,0,0,42,41,42,42,41,0,84,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,42,0,42,125,208,83,42,42,41,125,42,458,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41]} \ No newline at end of file diff --git a/bench-camelize.withNumbers-2024-11-24_12-17-49.cpuprofile b/bench-camelize.withNumbers-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..21e6255 --- /dev/null +++ b/bench-camelize.withNumbers-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,10,23,25,28,32]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":3,"children":[8],"positionTicks":[{"line":136,"ticks":3}]},{"id":8,"callFrame":{"functionName":"","scriptId":"258","url":"node:inspector","lineNumber":62,"columnNumber":38},"hitCount":0,"children":[9]},{"id":9,"callFrame":{"functionName":"#onMessage","scriptId":"258","url":"node:inspector","lineNumber":80,"columnNumber":12},"hitCount":1,"positionTicks":[{"line":82,"ticks":1}]},{"id":10,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":466,"children":[11,12,15,29],"positionTicks":[{"line":323,"ticks":7},{"line":314,"ticks":50},{"line":292,"ticks":21},{"line":297,"ticks":8},{"line":315,"ticks":88},{"line":327,"ticks":37},{"line":316,"ticks":255}]},{"id":11,"callFrame":{"functionName":"it","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":254,"columnNumber":21},"hitCount":1,"positionTicks":[{"line":255,"ticks":1}]},{"id":12,"callFrame":{"functionName":"H","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":254,"columnNumber":54},"hitCount":0,"children":[13]},{"id":13,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2365},"hitCount":0,"children":[14]},{"id":14,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":15,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":568,"children":[16,20],"positionTicks":[{"line":137,"ticks":2},{"line":308,"ticks":9},{"line":138,"ticks":7},{"line":537,"ticks":4},{"line":302,"ticks":17},{"line":304,"ticks":1},{"line":530,"ticks":39},{"line":139,"ticks":20},{"line":539,"ticks":4},{"line":309,"ticks":161},{"line":311,"ticks":171},{"line":301,"ticks":96},{"line":250,"ticks":37}]},{"id":16,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2365},"hitCount":145,"children":[17,18],"positionTicks":[{"line":2,"ticks":145}]},{"id":17,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":12294,"positionTicks":[{"line":2,"ticks":12294}]},{"id":18,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":48,"children":[19],"positionTicks":[{"line":2,"ticks":48}]},{"id":19,"callFrame":{"functionName":"camelize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":727},"hitCount":147,"children":[24],"positionTicks":[{"line":2,"ticks":147}]},{"id":24,"callFrame":{"functionName":"get","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":586},"hitCount":207,"children":[27],"positionTicks":[{"line":2,"ticks":207}]},{"id":27,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":815},"hitCount":32,"positionTicks":[{"line":2,"ticks":32}]},{"id":20,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":215,"children":[21,26],"positionTicks":[{"line":250,"ticks":215}]},{"id":21,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":177,"children":[22,30],"positionTicks":[{"line":139,"ticks":177}]},{"id":22,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":877,"positionTicks":[{"line":139,"ticks":877}]},{"id":30,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":31,"children":[31],"positionTicks":[{"line":537,"ticks":31}]},{"id":31,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":116,"positionTicks":[{"line":530,"ticks":116}]},{"id":26,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":89,"positionTicks":[{"line":668,"ticks":3},{"line":662,"ticks":5},{"line":670,"ticks":4},{"line":665,"ticks":14},{"line":669,"ticks":22},{"line":666,"ticks":17},{"line":661,"ticks":24}]},{"id":29,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2365},"hitCount":10,"positionTicks":[{"line":2,"ticks":10}]},{"id":23,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":374},{"id":25,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":302},{"id":28,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":12,"positionTicks":[{"line":301,"ticks":12}]},{"id":32,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[33]},{"id":33,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[34]},{"id":34,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[35]},{"id":35,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[36]},{"id":36,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":2,"positionTicks":[{"line":136,"ticks":2}]}],"startTime":293068086917,"endTime":293068746417,"samples":[7,7,7,7,9,11,14,15,17,17,17,17,17,17,16,17,17,15,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,22,17,17,23,17,17,17,17,22,17,10,22,17,17,23,17,17,17,17,17,17,17,17,17,17,10,17,18,17,17,17,17,17,17,17,17,17,15,17,23,17,17,17,17,17,17,16,17,10,17,17,17,17,17,22,20,17,15,17,17,17,19,17,17,17,17,17,17,17,24,10,17,17,21,17,17,17,10,17,17,17,17,17,17,17,17,21,23,17,15,17,17,17,17,17,20,17,17,17,24,22,17,17,15,17,19,17,22,17,24,17,17,17,17,17,22,22,17,22,17,17,22,17,17,20,17,17,17,23,17,17,17,17,10,23,22,22,17,20,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,22,17,17,17,10,17,17,17,17,17,17,17,17,24,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,10,17,17,15,25,25,25,25,25,25,17,22,17,17,17,17,17,23,17,17,17,17,22,17,17,17,17,17,17,15,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,20,17,17,17,17,22,17,26,17,27,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,23,17,17,17,24,17,17,17,17,17,17,22,17,17,17,17,17,17,21,17,17,19,17,17,17,17,17,17,15,17,17,17,22,17,17,17,17,17,17,21,17,17,17,24,24,17,17,17,17,17,17,22,10,17,22,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,23,17,15,17,17,15,15,17,17,17,17,17,17,17,17,17,17,17,17,22,22,21,17,17,17,24,17,17,24,10,17,17,17,22,17,17,17,17,17,23,17,17,17,17,19,17,17,23,17,17,17,17,22,22,17,17,17,22,17,17,23,17,22,17,17,17,17,20,17,16,17,17,22,17,17,17,17,17,15,17,17,17,10,17,17,17,22,20,17,21,17,17,17,17,17,22,25,25,25,17,17,17,22,22,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,28,17,17,22,17,17,17,17,15,17,17,17,17,23,17,17,22,15,22,10,10,17,17,17,17,17,22,23,10,21,17,17,17,17,17,17,22,17,17,17,17,15,15,22,17,17,17,17,17,16,10,16,17,24,17,19,17,17,17,17,17,17,17,17,21,17,19,17,17,17,17,15,17,17,22,17,20,17,10,17,17,23,17,17,17,17,17,10,17,10,17,20,17,17,22,17,17,17,17,17,17,22,19,23,21,17,22,17,10,17,17,27,17,22,17,17,17,17,17,17,22,17,23,17,17,10,17,17,22,17,17,17,17,17,22,17,17,17,15,17,17,17,15,23,17,17,22,17,23,17,17,17,17,17,17,17,10,17,17,17,17,17,22,17,17,17,10,17,17,17,17,17,17,22,17,17,17,17,17,23,17,19,17,17,17,17,17,23,17,17,26,17,17,17,22,17,17,17,15,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,15,25,25,25,25,19,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,20,17,17,17,17,17,17,17,22,17,10,17,17,17,17,17,17,17,22,17,17,17,17,17,17,22,17,17,17,23,17,17,10,17,17,17,17,17,17,17,17,17,17,15,15,15,26,22,17,17,17,17,17,17,17,22,17,21,17,17,17,10,17,16,23,19,17,17,17,17,23,17,15,22,17,17,17,17,16,17,21,17,22,17,17,17,17,17,17,17,22,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,22,24,17,17,17,17,17,17,15,21,17,17,10,15,22,27,17,17,17,17,17,17,22,17,17,22,17,21,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,25,17,23,22,22,17,17,17,17,26,20,17,17,17,17,17,22,23,17,17,17,17,18,22,17,17,15,17,17,17,17,22,17,20,15,17,17,25,25,25,17,17,17,17,17,15,17,22,17,15,19,17,17,23,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,10,17,17,17,17,20,17,17,17,17,17,17,17,17,10,17,17,22,10,17,17,17,22,23,17,17,17,17,21,17,17,17,17,22,17,17,20,17,17,17,17,17,17,17,17,10,10,17,17,17,17,10,17,23,10,17,17,19,29,17,17,22,17,17,17,24,17,24,17,21,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,24,10,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,15,15,17,17,17,17,16,17,17,17,17,17,10,17,10,17,17,17,17,17,17,17,10,17,17,17,17,17,17,26,17,17,17,17,17,17,17,17,22,22,17,17,22,17,17,17,17,17,30,17,17,17,16,17,17,17,25,25,25,25,17,23,17,17,17,17,16,17,30,15,17,17,17,17,17,15,22,22,17,15,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,24,17,17,31,17,22,24,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,22,17,20,17,20,15,17,17,17,10,17,20,22,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,17,17,22,20,24,17,17,22,17,17,17,17,15,17,17,17,17,17,17,17,15,17,17,17,15,21,17,17,17,17,17,17,17,17,17,15,22,17,23,17,17,17,17,17,10,17,17,17,23,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,21,17,17,17,17,17,19,10,17,22,17,10,10,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,31,17,17,22,17,17,17,17,17,17,17,17,17,17,17,25,25,25,17,17,17,17,17,19,17,17,22,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,31,17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,22,31,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,26,17,17,20,21,17,17,17,22,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,23,22,17,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,16,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,22,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,19,17,17,17,17,20,17,17,22,17,22,17,17,17,17,17,17,17,17,17,23,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,15,22,22,10,15,15,15,15,17,17,17,17,16,17,17,25,25,25,25,17,17,17,10,17,17,17,17,17,22,17,17,21,17,17,17,17,17,24,17,17,17,17,22,17,17,17,17,17,17,15,19,17,19,17,17,22,10,17,17,17,22,31,17,22,17,16,10,17,17,21,17,17,17,17,17,17,17,17,17,17,22,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,19,17,27,17,17,17,17,17,17,17,15,22,17,20,17,17,17,22,17,17,17,21,22,17,17,17,17,17,17,17,17,26,17,22,17,22,17,17,17,17,17,17,17,17,17,17,17,28,17,15,22,17,17,17,15,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,22,18,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,23,17,17,17,17,17,31,22,17,17,17,17,17,17,17,17,22,17,17,31,17,17,17,17,17,17,17,17,17,15,17,17,17,23,25,25,25,25,17,17,17,17,22,22,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,26,17,10,17,17,22,17,17,17,17,17,17,23,17,17,17,17,17,16,24,17,17,17,17,17,17,21,17,17,17,17,17,17,23,17,17,23,17,15,19,31,17,16,23,17,17,17,22,17,15,17,17,17,17,17,17,17,17,24,17,17,17,17,17,17,10,17,23,17,15,17,17,17,22,10,17,17,20,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,15,17,15,17,17,17,17,17,17,26,17,22,22,17,17,17,17,24,17,18,17,17,17,22,17,17,17,17,17,17,17,17,28,17,17,17,17,17,17,21,15,22,17,17,17,17,23,17,23,17,17,17,17,17,17,17,17,17,10,17,24,17,17,19,17,22,17,17,17,17,23,20,19,17,17,17,22,17,17,17,17,17,17,17,17,25,25,25,25,25,17,17,30,10,17,17,17,17,17,17,17,17,17,17,17,17,20,17,10,17,17,31,17,17,17,10,17,17,17,17,17,17,17,10,17,17,17,17,17,22,21,17,21,17,17,17,17,17,17,17,17,17,17,17,17,17,26,24,15,17,17,17,18,17,23,17,17,17,17,17,17,17,17,17,16,17,17,17,17,17,17,17,15,17,17,22,17,31,10,17,23,23,22,22,17,17,22,17,17,17,17,17,17,22,17,20,10,17,17,17,17,23,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,27,22,17,17,17,10,21,17,17,25,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,22,17,24,17,17,17,17,17,17,10,17,17,10,17,15,17,17,17,17,17,17,17,23,17,31,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,22,17,17,23,17,19,24,17,17,17,24,17,17,17,19,17,17,17,17,15,17,17,17,17,17,22,17,17,17,17,17,23,17,18,17,17,17,17,17,17,17,17,17,22,22,17,17,17,17,23,15,23,22,29,17,26,17,17,16,17,17,17,17,17,17,17,17,17,10,17,16,17,17,20,10,17,17,24,23,17,25,25,25,17,17,17,17,10,17,17,17,17,17,24,17,17,17,17,10,17,22,17,17,15,22,17,17,17,17,17,17,22,17,17,17,17,17,10,20,17,10,17,17,17,17,17,17,17,15,21,15,17,17,10,22,22,17,17,17,17,17,17,17,17,19,17,17,17,17,17,31,17,15,15,15,15,15,15,15,15,15,15,15,17,17,17,17,17,17,17,17,22,17,17,17,15,17,17,17,17,17,17,15,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,10,17,17,10,17,17,22,17,17,17,17,17,20,17,17,17,17,10,17,17,17,17,17,17,10,15,17,22,21,17,17,26,17,17,17,17,17,23,24,20,17,17,17,23,17,17,17,17,17,17,17,17,16,17,17,21,17,17,17,17,17,17,17,17,17,22,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,19,17,22,17,17,17,17,15,17,17,17,17,17,18,17,15,17,17,17,17,17,17,17,16,25,17,17,17,22,17,17,17,17,15,17,17,17,17,17,17,22,17,17,24,17,17,10,31,17,17,17,17,17,22,10,17,17,17,17,21,22,17,17,17,17,17,17,17,17,17,17,17,17,17,25,25,25,25,25,25,17,17,23,17,15,17,22,17,17,17,15,23,27,24,23,17,17,20,17,17,17,17,17,17,17,22,17,17,17,21,17,17,17,17,22,22,17,30,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,22,17,17,17,17,17,17,17,17,20,17,17,17,23,17,17,31,17,17,22,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,10,21,17,17,17,10,22,17,17,17,17,10,17,24,17,23,24,17,17,17,17,15,26,17,17,17,17,17,17,22,17,10,17,17,17,22,17,17,22,17,16,17,23,17,17,22,23,17,22,17,17,17,15,17,17,24,17,20,23,17,17,20,17,10,17,17,17,17,17,17,17,17,17,17,22,17,17,15,17,17,17,22,17,17,17,24,22,17,17,17,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,17,17,22,17,22,19,17,17,17,17,17,17,17,17,17,21,17,17,28,17,10,22,17,17,17,17,17,17,17,17,25,25,25,25,25,25,17,17,30,15,10,17,19,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,20,26,20,17,17,16,17,17,17,10,17,17,17,17,24,17,17,17,17,17,22,17,17,17,17,17,17,22,17,17,17,23,24,17,17,17,17,17,17,17,17,17,22,22,17,17,10,17,17,17,17,17,17,17,17,17,17,10,30,17,16,17,17,17,22,17,17,17,17,17,15,15,15,17,22,31,20,17,17,17,22,10,17,17,17,17,17,17,17,26,17,17,31,10,17,17,17,17,20,17,17,31,15,17,21,31,17,17,17,17,25,10,17,17,17,17,17,15,22,17,17,17,17,17,17,17,17,10,17,17,17,17,17,24,23,17,17,17,17,15,17,17,17,17,16,23,22,17,17,17,17,17,17,17,22,17,22,15,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,10,17,17,15,17,17,17,22,21,20,17,19,17,17,17,17,21,15,22,31,17,17,17,17,17,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,17,17,17,17,17,17,17,21,17,17,24,17,17,17,22,17,17,23,17,17,17,17,10,17,17,17,17,19,17,17,17,17,20,17,19,17,23,17,20,17,17,17,17,17,17,17,17,16,23,19,17,17,10,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,31,15,17,17,17,17,17,17,17,17,20,10,22,23,31,17,23,20,22,17,17,15,17,17,17,17,17,19,17,17,17,24,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,31,23,17,22,17,17,10,17,17,17,31,17,22,17,23,17,17,17,17,17,17,17,17,17,17,17,23,17,17,22,17,17,17,23,17,17,17,17,22,17,17,17,17,17,15,17,17,17,17,30,21,17,17,17,10,17,10,17,22,17,22,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,15,17,15,17,17,17,17,17,19,17,17,31,17,17,17,17,17,15,17,17,17,17,17,24,22,17,17,17,17,17,17,17,17,17,17,17,26,17,26,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,26,19,17,17,17,17,22,17,17,30,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,10,17,24,17,17,17,17,17,17,17,25,25,25,25,25,25,25,17,16,30,17,17,23,17,17,17,17,17,17,17,17,17,17,21,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,31,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,22,17,17,17,22,17,17,22,17,22,17,17,17,17,17,17,17,15,17,17,17,17,22,23,22,17,17,17,17,22,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,15,17,22,17,17,17,17,16,20,23,17,17,17,17,17,17,17,22,10,17,17,17,17,17,17,17,17,19,22,17,17,17,17,17,17,17,17,22,22,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,15,16,17,17,17,15,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,23,17,17,17,17,17,17,17,17,17,15,17,17,17,17,19,17,17,17,17,10,17,17,18,15,16,23,17,23,15,17,17,17,17,17,17,17,17,20,23,17,17,10,17,17,20,17,17,23,17,17,22,17,25,25,25,25,17,17,10,17,17,17,10,17,17,17,22,17,17,17,17,17,17,23,21,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,22,17,17,19,17,17,17,17,19,17,17,26,17,17,17,17,17,17,15,17,17,21,17,17,17,10,17,15,15,15,15,15,15,15,15,15,17,17,17,17,17,17,21,21,17,16,17,17,17,26,22,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,22,17,17,17,17,15,17,24,17,10,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,22,17,22,17,17,17,17,17,18,17,24,23,17,17,17,17,17,17,17,17,21,17,17,23,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,22,17,17,17,16,17,22,17,17,27,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,26,17,10,17,17,23,20,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,24,17,25,25,25,25,25,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,15,17,17,17,17,22,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,20,17,17,17,17,17,17,17,22,17,17,23,17,23,17,17,17,16,17,17,17,17,17,17,17,22,17,17,17,17,26,17,10,17,17,15,17,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,21,17,17,17,16,17,17,23,17,22,17,17,17,17,17,17,17,26,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,15,17,17,17,17,17,17,15,17,17,22,22,17,17,23,17,17,17,24,17,17,17,17,17,17,17,15,17,17,17,17,17,15,23,17,15,17,17,17,23,17,17,17,22,23,22,17,17,17,17,10,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,25,25,25,25,25,17,17,17,17,17,17,15,16,26,19,17,17,24,17,16,17,17,15,17,15,24,15,17,17,16,15,17,17,17,17,17,17,17,17,17,17,17,17,20,15,17,17,22,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,16,17,17,17,17,17,17,20,17,17,22,15,17,17,24,27,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,15,15,17,17,16,17,23,16,17,17,17,17,17,17,17,15,17,22,17,17,17,17,15,17,17,17,17,21,17,17,17,22,17,17,17,22,17,17,21,20,22,22,17,23,17,17,17,17,17,17,22,17,23,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,21,17,10,17,17,17,17,17,17,17,17,17,15,26,17,17,17,22,17,17,17,17,22,10,17,17,17,17,22,15,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,21,17,16,17,17,17,17,17,17,17,17,17,16,17,17,23,17,15,17,20,17,17,17,17,17,17,22,17,25,25,25,25,25,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,31,17,17,17,22,22,16,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,31,17,23,17,17,15,17,17,17,17,17,17,23,17,10,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,22,17,17,17,17,17,20,17,17,17,17,22,17,17,17,17,17,10,22,17,17,17,17,17,17,19,17,22,17,17,17,17,17,15,17,17,17,17,17,17,27,17,17,17,22,17,17,17,17,17,17,22,17,17,31,17,15,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,22,17,10,17,17,17,15,17,17,17,17,17,19,17,21,20,17,17,15,17,22,22,22,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,31,17,24,17,17,23,25,25,25,25,25,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,20,17,17,17,17,17,17,17,17,29,17,17,17,17,22,17,16,17,17,17,22,17,17,17,17,17,15,17,17,17,17,17,23,17,17,17,17,24,17,17,17,17,17,26,22,21,17,17,17,17,17,17,24,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,10,17,17,17,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,22,17,24,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,22,17,17,17,17,17,17,22,17,20,17,17,17,17,17,17,22,22,17,17,17,22,10,17,20,17,17,22,22,18,17,17,22,17,17,17,17,17,17,22,19,17,17,23,17,17,17,17,17,17,22,17,17,19,21,15,17,17,17,17,17,17,17,17,17,17,17,17,23,17,27,17,17,17,17,17,17,17,27,17,10,17,21,17,17,17,17,17,17,10,17,17,26,17,17,22,17,17,21,22,10,17,10,25,25,25,25,25,25,25,25,10,22,17,17,17,17,17,17,17,17,10,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,26,17,20,17,17,17,17,25,31,17,20,17,17,17,17,17,17,17,17,22,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,10,17,17,17,17,17,24,17,17,17,17,17,17,17,17,10,17,17,10,15,17,17,17,17,17,17,17,27,17,23,26,15,24,17,17,17,21,17,17,17,17,17,17,17,17,15,22,17,17,21,17,17,17,15,17,17,17,15,17,17,17,17,17,22,17,17,17,17,22,17,17,17,22,17,17,17,17,17,17,17,17,17,17,15,17,17,22,22,17,22,17,17,17,22,17,17,17,17,22,17,22,17,17,31,17,23,17,17,22,17,17,22,17,17,17,17,17,17,20,22,20,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,23,17,23,22,17,17,17,17,17,23,17,10,17,17,17,17,17,20,17,27,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,15,17,17,22,17,17,17,20,17,17,17,17,17,17,17,15,17,17,17,23,17,17,17,17,17,17,17,17,17,17,25,25,25,25,17,17,17,22,17,17,17,17,17,24,17,17,17,17,17,17,17,17,22,10,17,17,22,17,15,17,21,17,17,17,20,17,17,23,17,17,17,17,17,17,23,31,17,17,17,10,17,17,17,17,17,17,17,17,17,27,17,17,17,17,17,17,17,17,17,17,25,17,10,17,17,22,17,23,17,17,17,17,17,17,22,22,17,15,17,17,22,17,10,17,17,17,17,22,22,15,17,17,20,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,19,22,17,17,17,17,17,31,17,22,17,17,17,17,17,17,17,17,10,23,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,15,17,23,17,17,17,17,17,17,17,17,17,17,17,17,21,17,17,17,17,23,17,17,17,22,17,18,23,17,17,17,17,17,17,17,19,22,17,17,17,17,26,17,17,23,17,17,17,17,17,17,23,10,17,17,17,17,17,17,10,17,17,17,21,22,17,17,17,17,17,17,17,17,17,10,10,17,17,17,17,17,17,17,17,17,17,22,17,17,17,20,17,17,17,17,17,17,17,25,25,25,24,22,10,17,17,15,17,31,20,16,17,17,17,17,22,17,17,23,17,23,17,17,17,17,17,17,24,31,17,17,17,23,17,22,22,17,17,17,20,17,17,17,17,24,17,17,17,17,17,17,17,31,17,15,19,17,22,23,17,17,17,17,17,19,22,26,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,10,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,15,25,17,17,17,17,17,17,20,23,17,17,10,17,24,17,17,17,17,17,17,17,27,17,17,17,17,24,17,10,22,10,17,17,17,15,17,17,17,17,17,31,17,17,17,17,17,20,17,10,17,17,17,17,17,17,17,17,17,20,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,22,17,17,17,15,15,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,22,17,15,17,17,17,17,17,17,17,17,24,17,15,10,17,27,24,17,17,17,17,17,10,17,17,17,15,15,15,15,15,15,15,15,15,15,17,17,15,17,17,17,17,22,17,23,17,17,16,17,17,22,24,17,17,17,15,22,22,17,22,17,22,17,17,22,10,10,17,17,17,17,22,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,22,22,17,20,17,17,17,21,17,17,17,10,25,25,25,25,25,17,26,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,23,17,15,17,17,17,17,17,17,17,17,15,17,23,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,20,17,25,17,17,17,17,17,10,17,17,17,23,30,17,10,23,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,22,17,17,17,17,17,23,17,22,17,16,17,17,17,17,17,17,23,31,17,17,10,22,22,17,17,17,23,10,17,17,15,17,17,17,17,17,17,17,17,17,17,15,10,22,17,21,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,16,17,17,24,17,20,17,17,17,24,17,17,17,17,17,17,17,17,17,17,23,18,17,17,22,15,17,22,17,17,17,23,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,22,17,17,17,17,17,22,16,17,17,17,17,17,17,17,17,15,17,22,17,17,17,22,17,17,10,21,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,22,17,22,17,17,17,17,17,17,17,22,17,24,17,17,17,17,15,17,17,17,15,17,22,24,17,17,17,17,10,17,17,16,10,17,17,16,17,17,17,17,23,10,10,17,17,17,17,15,17,21,17,17,17,15,17,17,10,17,17,17,25,25,25,25,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,10,17,20,17,22,17,17,17,19,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,27,17,17,17,10,22,24,17,17,17,17,17,15,23,17,17,17,17,17,17,23,17,22,17,17,17,17,18,17,17,17,23,17,17,17,22,17,26,17,17,17,17,22,17,17,17,21,21,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,20,22,17,15,17,17,10,17,17,22,17,17,17,17,17,17,17,21,15,20,17,21,17,17,17,16,17,17,17,17,21,17,17,17,17,17,22,22,10,10,17,10,17,17,17,17,17,17,17,17,17,17,22,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,17,22,17,17,17,17,17,17,17,17,16,17,17,17,15,17,17,23,10,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,22,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,31,17,17,17,17,17,17,25,25,25,25,22,17,10,17,17,17,15,17,16,24,17,17,17,17,15,17,17,17,17,17,17,10,17,17,17,15,17,17,10,17,17,23,17,20,22,22,17,17,15,17,17,17,17,22,15,17,18,17,17,17,17,24,17,15,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,10,22,17,17,17,17,29,17,17,17,22,22,23,17,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,24,17,18,17,23,17,17,17,17,17,24,17,20,17,21,17,17,17,25,17,17,17,17,17,17,15,21,17,17,17,17,17,10,17,17,18,17,17,17,17,17,17,31,17,30,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,23,17,17,17,17,19,17,17,31,21,17,17,17,17,17,17,10,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,17,24,22,22,22,17,15,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,22,20,17,17,19,17,17,17,17,17,31,17,17,25,25,25,17,17,17,17,17,17,17,17,17,17,17,17,17,22,16,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,10,23,17,15,17,17,17,17,17,15,21,17,17,15,19,17,17,17,17,17,17,17,17,17,17,17,17,17,10,22,24,17,17,23,22,17,22,15,17,23,20,17,17,17,17,17,17,17,17,17,17,27,17,17,17,15,17,17,22,17,17,17,22,17,17,17,17,20,17,17,17,22,17,17,29,17,24,17,17,27,17,17,17,17,17,17,17,17,17,22,17,17,10,17,17,17,17,17,10,17,20,17,16,22,17,22,17,17,17,17,17,17,23,17,19,17,17,19,17,22,19,17,16,17,17,17,17,22,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,22,17,17,17,17,17,17,17,20,10,17,17,17,17,17,17,17,17,17,17,17,22,25,25,25,25,17,22,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,17,17,31,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,10,27,17,17,17,17,17,17,17,17,20,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,15,17,17,23,17,24,15,17,17,10,17,17,17,17,15,17,17,17,17,17,17,17,17,17,24,19,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,15,17,17,17,17,22,17,17,17,26,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,23,17,17,17,17,17,15,17,30,17,17,17,17,17,15,17,17,15,17,17,22,17,17,17,15,17,17,17,17,10,17,17,17,31,17,17,17,17,17,17,15,22,17,21,20,17,17,17,23,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,25,25,22,17,10,21,17,17,19,17,26,17,23,26,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,31,17,17,17,17,17,17,17,17,17,17,23,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,10,22,17,26,17,17,17,17,17,17,17,17,22,17,17,17,17,21,17,17,17,17,17,17,17,22,17,10,17,10,17,17,17,22,17,17,22,21,17,17,17,15,17,17,17,17,22,17,10,17,31,17,10,17,17,23,17,17,17,17,20,17,17,17,17,17,17,16,17,17,25,25,16,31,17,17,25,17,17,17,17,17,17,17,17,23,17,10,17,17,17,15,17,17,16,17,17,22,15,17,24,17,10,16,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,23,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,27,17,22,17,17,10,17,17,17,17,17,17,22,17,17,17,17,17,17,19,15,17,17,17,17,17,17,17,17,16,17,26,17,17,17,17,17,17,17,17,17,17,22,17,17,17,24,17,17,17,10,24,17,21,17,17,17,31,17,17,17,17,22,17,17,17,23,31,17,17,17,22,17,15,15,17,17,17,17,17,17,17,17,17,17,17,16,17,16,20,17,22,10,17,17,17,17,17,17,18,17,17,17,17,17,17,17,25,25,25,25,25,25,25,25,25,17,17,17,17,17,17,17,17,17,17,10,17,22,17,17,17,17,17,17,17,21,17,17,17,22,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,10,17,22,17,17,17,17,17,10,15,17,17,17,17,17,17,17,17,10,17,17,10,17,22,17,17,17,17,17,20,17,17,10,17,17,17,17,17,17,17,21,17,17,17,17,17,17,17,17,17,19,17,17,17,20,17,22,17,17,17,17,17,10,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,10,17,17,17,17,31,17,17,17,20,17,18,17,17,17,17,17,17,17,17,17,17,17,17,22,22,23,17,17,17,17,21,17,17,17,17,17,16,10,24,17,17,17,17,17,17,10,17,17,31,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,23,22,17,17,17,17,17,23,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,10,25,25,25,25,25,25,31,17,17,17,17,17,22,17,17,17,10,17,17,17,17,23,17,22,17,24,17,17,17,17,17,17,24,17,17,17,10,17,10,17,17,17,22,17,17,17,10,21,17,16,17,17,17,22,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,22,22,22,22,17,22,17,17,17,17,17,17,17,17,22,17,21,22,17,17,17,15,17,17,22,17,17,17,17,17,17,23,20,17,17,17,17,17,17,17,17,22,17,23,17,31,17,17,18,17,17,10,17,17,26,22,17,17,17,10,17,23,17,17,22,15,17,17,17,17,17,17,17,17,17,17,17,31,17,17,22,17,17,17,17,17,17,17,22,24,17,17,23,17,17,17,17,15,17,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,22,18,17,17,17,22,17,22,17,17,17,17,17,17,17,17,17,21,17,17,17,17,20,22,17,17,24,17,17,17,24,15,17,17,17,17,17,17,17,15,17,22,25,25,25,25,24,17,17,17,17,17,19,17,17,17,17,23,17,17,17,17,17,10,24,17,17,17,17,22,17,17,17,22,17,17,17,17,17,17,23,17,15,23,17,17,17,17,17,17,10,17,17,22,22,17,17,17,17,17,17,17,22,23,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,28,22,17,17,22,26,17,17,17,15,17,17,17,17,17,17,17,17,17,17,16,17,17,19,17,17,17,15,22,17,17,18,17,20,17,16,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,20,20,17,24,17,17,17,23,23,17,17,17,17,17,17,22,15,17,17,17,17,22,17,17,21,17,17,22,17,17,17,24,17,17,22,17,17,23,22,21,17,17,17,17,17,17,17,17,17,20,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,22,22,16,17,17,17,22,22,17,20,17,17,17,17,17,17,17,17,20,17,17,17,22,17,22,17,17,25,25,25,17,17,17,17,17,17,17,30,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,17,21,17,22,17,17,17,17,17,26,17,17,30,28,17,16,17,17,23,15,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,31,29,17,17,22,17,17,17,24,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,17,17,17,17,18,17,22,17,10,17,17,17,17,17,17,17,18,18,17,17,17,17,17,22,17,17,17,17,10,23,22,19,10,17,26,17,20,24,23,17,15,17,17,17,17,22,21,17,17,16,17,26,17,17,17,24,23,17,17,22,17,17,17,22,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,22,17,17,17,17,17,23,22,17,17,22,17,17,15,17,22,17,24,17,21,17,17,17,17,17,17,17,17,21,17,17,22,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,17,17,15,17,17,19,22,17,17,17,17,17,17,22,10,17,17,26,17,17,17,17,24,17,17,17,23,17,17,17,31,17,17,17,17,17,25,25,25,25,25,17,23,17,17,22,22,17,23,17,17,17,17,17,17,23,17,17,17,17,17,17,17,22,17,17,24,17,17,17,15,17,17,31,17,23,22,17,10,21,17,17,20,17,19,21,17,17,16,17,17,17,17,23,17,17,15,15,17,17,17,10,17,30,17,17,15,17,17,17,17,17,17,17,15,15,17,17,17,22,17,17,17,17,16,17,17,17,17,17,17,17,24,10,17,17,17,21,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,19,17,17,21,17,17,17,31,17,17,17,17,22,20,23,17,17,15,22,17,17,17,23,10,17,20,17,17,10,17,17,22,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,26,17,10,10,17,17,17,17,17,22,17,15,17,17,10,17,17,21,31,23,17,17,17,17,24,17,22,17,30,17,17,17,26,17,17,17,17,16,22,17,17,17,10,19,10,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,10,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,10,17,17,17,24,23,17,17,17,15,23,31,17,17,17,22,15,17,17,17,17,17,17,17,23,17,17,17,17,17,20,26,17,17,17,31,17,19,17,17,17,17,17,17,23,17,17,17,17,17,17,17,15,17,17,17,17,17,17,25,25,25,25,25,25,25,25,17,17,10,17,17,17,17,10,17,22,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,23,17,17,17,17,15,17,17,17,17,17,17,17,17,22,17,22,24,17,17,23,17,17,17,17,15,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,24,17,17,22,17,10,17,22,17,17,17,17,17,17,19,17,17,10,22,22,17,17,22,17,17,17,17,17,17,15,17,17,17,17,17,17,19,17,16,17,17,17,17,22,17,17,17,17,17,21,17,17,21,16,15,17,17,17,17,17,10,17,17,17,17,17,17,10,17,17,17,15,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,20,31,17,17,23,17,17,17,22,17,17,17,17,17,22,23,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,10,17,17,17,10,17,17,17,17,16,17,10,17,17,17,10,26,17,17,24,17,17,17,26,17,17,17,17,17,17,17,17,22,17,10,31,17,17,31,17,17,17,17,17,17,17,17,17,17,17,21,24,17,26,17,17,22,10,17,10,17,10,17,17,17,17,18,17,17,10,17,15,17,17,17,17,26,22,17,17,17,17,19,17,23,17,20,17,17,22,17,17,17,17,31,17,17,17,25,25,25,25,25,25,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,23,17,17,17,22,17,17,17,26,22,17,17,17,17,23,17,17,17,17,17,17,17,22,17,17,17,17,17,17,20,17,17,17,17,17,17,17,23,17,17,17,21,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,19,17,17,15,17,17,17,17,21,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,31,21,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,15,31,23,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,22,10,17,16,17,17,26,17,17,17,22,17,17,17,17,24,17,17,17,17,17,16,17,17,17,17,17,17,23,17,17,15,17,20,17,15,20,17,24,17,23,17,23,16,17,17,17,17,22,17,17,17,17,17,17,17,17,17,25,25,25,25,17,23,10,17,17,17,22,17,17,17,22,22,10,17,17,17,17,15,17,17,17,17,15,17,22,17,17,10,17,17,17,17,17,17,15,17,17,17,23,17,17,17,10,17,17,17,17,22,26,17,19,17,17,17,17,17,17,10,17,17,17,17,22,17,17,17,17,17,17,17,17,10,15,17,17,17,17,17,17,17,20,17,22,17,17,17,26,17,15,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,21,17,17,16,15,22,17,17,17,17,17,17,17,22,22,17,17,17,17,17,17,17,17,17,17,17,22,22,17,17,20,17,19,17,23,17,17,17,21,17,17,17,17,17,17,17,23,17,23,17,17,17,17,17,21,10,17,17,17,17,17,17,17,17,19,17,17,17,17,20,22,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,21,17,22,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,25,25,25,25,17,17,17,17,19,15,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,10,22,17,17,17,22,19,10,17,17,17,17,17,17,22,17,17,15,17,22,22,24,17,17,17,17,17,17,20,17,16,23,17,17,17,10,17,17,17,17,17,17,23,17,17,17,17,20,17,17,17,26,10,17,17,17,17,17,17,17,17,17,22,17,17,17,22,17,17,17,17,17,17,28,17,17,17,17,17,17,31,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,26,17,17,17,17,21,17,17,17,17,17,17,17,17,15,31,17,17,24,10,17,17,20,17,10,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,16,16,17,17,10,17,17,17,17,17,17,17,17,22,17,17,17,17,17,10,17,17,17,17,17,20,17,17,10,17,17,17,27,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,25,25,25,25,17,17,17,17,17,17,17,17,17,17,29,27,17,17,17,19,17,17,17,17,17,17,10,17,17,17,17,17,17,17,22,20,17,17,31,17,17,17,17,17,22,24,17,17,17,17,17,17,10,20,22,17,17,17,17,17,17,17,17,22,26,17,17,17,17,17,17,21,15,22,17,17,17,17,17,17,17,17,20,17,17,22,17,15,17,17,20,17,17,17,20,17,23,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,10,17,15,17,17,22,17,17,22,17,17,17,15,17,17,17,23,17,18,17,17,19,17,17,17,26,17,17,17,17,17,17,17,15,17,17,17,17,17,17,31,22,17,17,23,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,22,17,17,17,17,31,19,17,17,17,17,23,17,22,17,25,25,25,25,25,17,18,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,27,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,10,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,17,17,17,17,17,15,17,22,17,17,17,17,17,26,17,22,17,17,17,17,17,17,15,17,17,17,17,16,22,17,17,20,17,17,18,17,17,20,17,15,17,17,17,17,17,10,24,17,17,17,22,17,17,22,17,17,22,17,17,19,17,15,20,17,17,17,22,22,23,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,23,17,15,17,17,22,15,17,17,17,17,15,17,17,17,17,17,17,20,17,17,17,17,17,17,22,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,21,23,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,30,17,20,17,23,17,17,17,17,17,22,23,17,17,17,17,17,17,17,17,22,17,17,22,17,17,17,17,16,17,17,17,17,17,17,10,17,10,17,17,17,17,17,17,10,22,22,17,17,22,17,16,17,17,17,17,17,17,22,17,17,17,22,17,17,17,17,17,17,30,17,17,17,24,17,17,17,17,22,17,17,17,17,21,23,22,25,25,25,25,25,17,17,22,17,17,17,17,17,17,17,22,17,22,17,17,17,17,17,17,17,16,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,21,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,26,17,17,17,17,15,17,20,17,17,17,21,17,17,17,17,17,16,17,17,17,17,17,17,10,17,17,29,17,17,17,21,17,17,17,17,17,17,10,17,17,22,17,24,17,17,17,17,17,17,17,17,17,17,17,24,17,17,22,22,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,23,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,10,17,17,17,17,17,31,27,17,27,17,17,17,22,17,17,17,17,17,17,17,17,17,17,22,22,17,17,17,17,20,17,17,17,10,30,17,17,17,17,17,17,25,22,17,17,17,17,22,17,17,17,15,17,17,10,17,17,17,17,17,17,17,22,17,17,17,22,17,17,17,17,17,17,10,17,17,25,25,25,25,25,17,26,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,16,22,17,23,17,17,22,16,21,17,17,17,24,17,17,17,15,17,17,17,17,15,17,17,17,20,17,17,22,23,17,17,17,17,17,17,24,17,17,31,15,17,17,17,17,17,17,17,17,31,17,17,17,20,17,22,17,17,16,17,17,17,17,22,17,17,17,17,17,17,22,17,17,23,17,17,17,17,17,17,17,23,17,17,17,17,17,27,17,17,20,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,16,20,17,22,17,17,17,17,17,23,17,10,17,15,17,20,17,17,17,17,17,17,17,23,17,17,17,21,17,20,17,17,10,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,26,17,17,17,17,17,10,17,17,22,17,17,17,17,23,17,17,31,17,17,17,17,17,17,17,17,17,17,17,17,10,17,22,17,17,17,17,16,17,21,17,17,17,17,17,17,22,10,17,17,17,17,17,15,17,17,17,22,24,17,17,17,17,17,17,17,17,17,10,17,25,25,25,25,17,17,17,17,31,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,10,15,31,17,22,17,17,17,22,17,20,17,17,17,17,17,21,17,24,10,23,17,17,17,24,17,22,22,15,20,17,18,17,17,17,17,17,22,17,17,17,24,17,17,17,17,15,17,17,17,17,17,20,17,17,22,17,17,10,17,17,17,19,17,17,20,15,17,17,17,17,17,17,24,31,22,23,17,17,17,17,17,15,22,17,17,17,17,17,17,17,15,17,17,17,17,17,15,17,17,17,17,10,22,17,17,17,16,17,30,10,17,17,17,17,19,17,17,22,17,15,17,17,17,17,23,17,17,17,17,22,17,17,17,17,17,17,17,17,22,31,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,25,25,25,25,25,17,17,17,15,17,17,23,17,17,17,17,17,15,17,15,17,20,17,17,10,17,17,17,20,16,17,17,17,17,10,10,17,24,17,17,17,17,17,16,20,23,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,22,15,17,17,17,17,15,17,17,17,15,17,17,17,17,17,17,17,15,17,19,17,16,17,17,17,15,17,17,10,17,17,22,31,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,22,17,16,10,16,17,21,17,17,19,17,17,17,17,17,17,17,10,17,17,17,17,17,17,15,17,17,17,17,10,17,10,17,21,17,17,17,19,17,17,23,17,17,25,17,17,17,15,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,21,17,20,17,24,17,17,17,17,17,21,17,17,17,17,17,17,17,15,17,17,17,17,23,17,22,17,17,17,17,17,17,22,22,17,17,17,15,17,15,17,22,17,15,17,17,24,10,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,30,17,17,31,17,22,17,17,17,17,15,16,17,17,17,17,17,17,17,17,17,17,19,23,17,20,17,17,17,17,17,17,17,22,17,17,22,17,17,23,17,17,15,15,17,17,17,17,17,23,17,17,17,17,22,17,22,17,17,17,17,17,17,17,20,22,17,17,17,20,17,15,17,17,17,17,17,17,17,17,19,26,17,10,17,15,24,17,26,17,17,17,17,17,15,17,17,17,17,17,23,17,23,17,17,17,17,22,17,17,17,17,17,17,17,15,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,25,25,25,24,17,17,17,17,17,17,10,17,17,23,17,21,17,17,17,17,17,17,15,17,17,26,17,22,17,17,17,17,10,17,17,17,17,17,17,17,21,17,17,17,17,15,17,15,17,17,17,17,17,17,17,17,17,17,22,21,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,22,17,22,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,17,17,22,17,17,17,22,17,15,17,17,15,17,17,17,22,17,15,21,17,17,17,17,17,17,23,24,22,17,17,22,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,24,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,29,17,17,23,29,17,15,22,17,17,17,17,17,17,17,17,17,17,17,17,19,23,17,24,22,17,17,17,19,17,17,20,17,17,15,17,17,17,17,23,17,17,17,23,17,17,17,17,17,21,22,10,17,17,17,17,17,10,17,17,17,25,25,25,25,17,15,17,15,17,17,17,17,17,17,17,17,10,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,10,10,15,17,17,17,17,17,17,17,22,17,23,17,17,17,17,17,20,17,17,17,17,17,17,17,20,17,17,15,17,17,17,23,24,17,17,17,17,22,23,17,17,17,22,17,17,17,17,17,17,17,17,17,22,22,17,17,17,17,17,23,17,17,17,17,17,22,17,17,23,17,17,20,23,17,10,15,22,17,17,17,10,17,17,17,17,17,17,17,17,22,17,17,15,17,17,22,17,17,17,15,10,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,22,17,17,23,22,17,17,18,10,17,17,17,17,17,17,17,17,17,15,17,17,17,22,17,17,30,23,20,17,17,17,22,17,17,17,17,20,17,17,17,17,17,17,15,17,17,17,15,17,17,17,17,17,21,17,17,17,17,15,15,24,17,17,17,19,17,17,17,17,17,17,22,17,17,17,17,17,23,17,17,17,17,17,25,25,25,25,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,22,17,17,17,17,17,17,17,17,17,22,17,17,17,21,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,15,10,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,22,17,22,17,15,17,17,24,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,10,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,15,23,17,17,17,17,17,17,23,17,17,17,17,22,17,17,17,17,17,17,17,22,17,17,10,17,17,24,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,15,17,22,17,26,17,17,17,17,19,17,17,17,15,10,17,17,17,17,22,17,19,17,17,17,17,17,17,17,17,22,24,17,17,22,25,25,25,25,25,15,17,17,17,17,17,17,17,17,23,17,22,10,17,23,31,17,22,23,17,15,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,22,17,31,17,18,17,17,17,17,17,17,17,17,23,17,10,17,15,17,10,17,10,17,17,17,10,23,17,17,17,17,17,17,17,15,17,10,30,17,17,17,19,30,17,17,21,17,17,17,17,17,17,22,17,15,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,17,17,22,17,17,17,15,17,17,19,17,22,17,17,17,17,17,17,17,17,17,17,17,17,22,19,17,17,22,17,17,17,23,17,17,17,17,24,23,15,17,17,17,17,17,17,17,17,17,15,17,17,17,17,19,17,17,17,19,17,15,23,17,17,17,17,17,16,17,17,15,17,15,17,20,17,17,17,17,10,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,22,17,18,17,19,17,24,17,17,17,17,17,17,17,22,17,10,17,17,16,17,17,10,31,17,17,17,24,17,23,17,17,17,23,17,17,17,17,22,17,17,17,17,10,17,17,17,17,10,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,31,15,10,17,17,17,17,15,17,22,17,17,17,17,17,24,17,23,23,10,17,27,17,25,25,25,25,17,17,17,17,17,17,17,21,17,17,23,17,17,17,17,17,17,17,22,17,17,17,23,17,17,17,17,17,22,17,17,22,17,17,23,17,17,17,17,24,23,17,20,17,17,17,17,17,17,17,17,17,17,23,17,24,17,17,24,17,17,17,17,17,23,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,16,17,15,19,17,17,17,17,10,17,17,17,16,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,26,17,17,17,23,17,17,17,17,17,17,31,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,24,17,19,17,17,17,27,17,19,17,15,17,17,17,17,17,17,17,17,23,17,17,17,17,22,17,17,17,17,17,17,17,17,19,17,23,17,15,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,20,17,17,21,17,17,17,17,31,17,17,17,17,17,17,17,17,25,25,25,25,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,24,17,17,17,10,17,17,20,17,22,17,17,17,17,17,17,19,17,17,10,17,17,17,17,17,17,17,17,26,17,17,17,17,22,28,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,17,17,24,17,10,17,17,17,17,17,17,17,17,17,22,17,19,17,17,17,17,17,17,17,17,17,17,15,17,17,17,22,23,17,17,22,23,17,20,17,17,17,20,17,31,17,17,17,17,17,23,17,17,16,17,17,16,17,20,17,17,17,17,17,17,17,22,17,24,17,17,20,10,17,17,17,17,23,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,31,22,17,17,17,17,17,17,17,17,17,17,22,17,17,25,17,17,28,17,17,31,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,15,17,25,25,25,25,25,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,15,17,17,17,17,17,17,17,22,22,22,17,17,17,17,10,20,17,17,17,17,17,17,10,17,10,17,17,17,20,17,17,22,17,22,17,22,17,17,22,17,17,17,17,31,17,17,17,17,17,17,20,17,17,17,17,17,22,17,17,17,17,17,17,17,17,10,15,17,17,16,17,17,17,10,17,27,18,22,17,15,17,31,17,31,17,16,17,17,24,17,17,17,17,17,17,17,15,15,17,17,22,17,17,17,17,15,17,17,17,17,17,16,26,22,17,17,22,17,17,17,17,15,17,17,17,17,22,17,17,23,22,17,17,26,17,17,17,17,17,17,24,17,23,17,15,20,22,19,17,17,20,24,15,10,17,17,17,17,17,17,22,10,15,17,17,17,17,17,22,22,10,17,17,23,17,15,17,17,17,17,17,17,17,17,22,17,24,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,10,25,25,25,17,23,17,17,17,17,17,22,15,10,17,17,17,17,17,22,17,17,17,17,17,17,20,17,17,23,17,17,17,17,17,15,17,17,17,17,22,17,17,17,17,17,17,17,17,15,15,17,17,17,17,17,17,10,17,17,17,17,30,17,17,17,17,22,22,17,17,23,17,17,17,17,17,17,17,17,17,30,17,22,17,17,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,17,22,17,22,17,15,17,17,17,15,17,17,17,17,17,17,23,24,17,17,10,31,17,24,17,17,24,17,17,17,17,17,22,17,17,17,17,10,17,17,17,20,22,22,17,17,10,17,17,17,17,17,17,17,17,17,17,17,24,17,10,23,22,17,15,20,10,17,16,17,23,17,17,17,17,17,15,17,17,17,17,10,17,17,22,17,17,17,17,28,16,17,17,17,17,17,17,17,15,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,17,17,17,17,17,17,26,15,17,17,17,17,17,17,17,24,25,25,25,25,25,10,17,17,17,17,17,17,17,16,17,17,17,17,17,17,17,20,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,10,15,17,17,17,20,17,17,10,10,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,26,17,17,17,17,17,17,21,22,17,17,17,17,17,23,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,24,17,15,17,17,17,17,17,17,17,17,22,17,22,17,17,17,17,17,17,17,24,17,17,16,17,17,17,17,17,24,17,17,24,17,17,17,17,21,24,17,17,17,15,17,10,17,17,17,17,17,17,23,26,17,17,31,17,17,17,15,17,10,17,17,17,17,17,26,30,17,17,17,23,17,17,17,17,17,17,17,19,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,16,17,17,17,10,24,17,17,17,17,20,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,21,22,17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,17,17,15,17,17,25,25,25,25,25,10,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,22,17,22,23,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,10,17,17,17,22,17,28,17,17,17,17,17,22,17,17,23,17,17,17,17,17,17,17,17,23,17,17,17,22,17,17,10,16,22,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,21,17,17,17,17,17,17,17,17,17,17,19,17,17,17,20,17,17,17,17,10,17,17,17,17,17,10,17,30,17,17,17,17,17,17,17,17,17,22,20,17,15,17,17,21,17,17,17,17,17,17,17,17,17,17,17,17,16,10,15,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,21,17,23,17,17,17,17,17,21,17,17,17,10,17,22,17,17,17,17,17,17,17,17,10,24,23,17,17,17,17,17,17,18,10,17,17,22,17,17,17,17,17,17,17,22,17,17,17,17,17,22,17,23,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,31,17,23,17,17,17,17,10,17,17,17,17,15,17,17,17,17,19,17,17,17,17,17,22,17,17,17,15,17,17,17,17,17,17,15,19,17,15,17,10,17,20,17,10,17,17,17,10,17,17,21,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,16,22,23,17,17,17,10,25,25,25,25,25,17,15,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,22,17,26,17,17,17,22,17,17,17,26,17,17,17,17,19,22,17,17,15,17,24,17,17,18,17,17,17,17,17,17,17,10,17,17,17,17,17,22,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,15,17,17,10,17,17,15,17,22,17,22,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,20,17,17,17,17,22,17,17,17,17,17,20,17,17,17,15,17,17,17,17,15,17,17,17,17,17,17,22,17,17,17,17,17,17,30,17,17,17,17,17,23,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,10,17,20,17,15,17,21,17,17,17,27,17,17,19,17,17,17,21,17,17,25,25,25,25,25,25,25,24,17,21,31,17,17,15,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,15,17,10,17,19,22,17,17,17,26,17,19,17,17,17,17,17,17,22,15,31,10,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,20,17,17,22,21,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,26,10,17,17,17,17,26,17,17,17,10,17,19,17,20,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,17,15,21,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,15,17,17,19,17,20,17,17,10,17,17,17,10,17,17,17,21,17,16,17,17,23,17,17,21,22,17,17,17,17,15,20,26,17,17,17,19,17,17,17,17,17,17,17,17,17,16,17,17,17,17,22,17,31,17,17,17,17,17,17,17,17,16,17,17,17,17,17,15,17,15,17,17,17,17,17,17,17,17,23,31,17,17,17,17,17,10,17,17,19,17,24,17,17,17,17,21,17,15,17,17,17,15,17,22,17,24,17,22,17,17,17,17,17,17,17,17,17,17,22,17,17,21,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,21,17,17,17,17,17,17,17,17,17,17,21,10,17,17,17,22,15,17,17,17,17,17,24,17,17,17,17,17,10,17,17,17,17,22,17,23,17,17,17,10,15,17,19,17,22,17,23,17,17,17,17,17,22,17,17,17,17,17,17,25,25,25,25,17,17,17,17,17,17,17,17,17,16,17,18,17,17,17,15,15,17,17,17,10,17,17,22,17,10,17,17,17,17,17,17,17,31,17,31,17,17,22,17,17,21,17,17,15,17,17,17,10,17,17,17,17,22,17,17,17,17,17,21,17,21,15,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,23,17,31,17,17,17,17,17,21,22,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,21,17,17,17,22,17,17,17,17,17,17,22,17,26,22,17,31,17,31,17,17,17,17,17,16,17,17,17,17,17,17,17,17,17,22,17,17,17,10,17,17,23,17,20,17,15,17,22,17,17,17,18,17,17,16,17,22,17,17,17,17,17,17,17,17,17,17,17,23,17,17,24,17,22,17,17,17,17,17,17,17,10,17,17,17,23,22,17,17,17,23,17,17,10,17,17,17,17,17,17,17,17,17,10,17,17,17,17,15,17,15,17,17,17,17,17,17,17,17,10,17,17,15,17,17,17,17,17,17,17,30,17,17,22,17,31,17,17,17,17,22,17,23,17,17,17,17,17,17,17,21,15,22,17,23,17,17,17,17,15,17,15,17,17,17,17,17,17,17,23,17,17,17,17,15,20,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,26,26,17,17,17,17,10,17,17,17,17,17,17,17,15,17,17,17,17,17,21,17,15,17,17,15,17,17,10,17,17,17,17,22,17,17,22,17,17,17,17,17,17,17,15,17,15,17,17,17,17,17,23,17,17,17,17,17,17,17,15,17,31,17,26,17,22,17,17,17,10,17,17,20,17,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,31,17,21,10,17,17,17,17,17,17,17,17,17,17,17,17,16,22,18,15,17,25,25,25,25,25,20,17,17,17,17,17,17,17,10,17,17,22,17,21,17,17,17,17,17,17,17,22,17,31,21,17,15,17,17,17,17,23,22,17,17,17,17,17,26,17,17,17,23,10,10,17,22,17,17,17,27,22,19,22,17,15,17,17,17,17,17,17,15,31,17,15,22,17,17,16,10,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,15,17,10,22,17,22,17,22,20,17,17,17,25,17,17,17,17,24,17,22,17,17,17,17,17,17,17,24,17,17,19,17,23,17,17,17,31,17,17,17,15,17,17,17,22,15,17,17,17,23,10,26,17,17,17,17,17,15,17,17,17,17,17,20,21,17,17,17,15,17,17,17,16,17,17,17,17,22,10,22,17,17,22,17,17,17,21,23,17,17,17,17,17,17,17,22,22,17,17,17,17,17,17,17,21,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,26,17,17,17,17,17,31,17,17,16,17,16,22,16,22,17,23,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,21,17,17,17,17,17,17,15,17,22,17,17,17,17,10,17,17,22,17,17,23,17,17,19,17,10,17,17,23,17,10,22,22,10,22,17,17,22,17,21,25,25,25,25,17,17,17,22,17,17,15,24,17,23,17,17,26,23,22,20,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,20,17,17,17,17,22,17,17,22,22,17,17,17,17,17,24,16,17,16,17,17,17,17,22,17,23,17,10,22,22,17,22,17,17,17,17,22,17,17,17,17,22,17,17,17,17,15,17,17,17,17,20,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,22,17,18,17,17,17,17,17,17,17,17,31,17,16,24,10,15,17,22,17,20,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,15,17,17,15,17,17,17,31,15,17,17,17,17,17,20,17,17,22,22,22,22,17,17,17,10,17,17,17,17,17,17,21,17,17,16,23,21,22,17,17,17,17,17,15,22,17,17,17,17,17,17,10,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,15,17,17,17,17,10,22,17,23,17,17,15,17,20,23,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,18,17,17,17,17,15,25,25,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,15,17,17,17,17,17,17,23,17,17,17,31,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,28,17,17,17,17,20,17,17,15,17,30,17,17,17,17,22,10,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,20,17,19,17,17,10,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,15,17,22,17,22,17,17,17,15,15,22,17,17,22,17,10,17,17,17,17,23,17,17,17,17,17,17,21,17,17,17,17,17,17,17,10,36,36],"timeDeltas":[86875,84,41,0,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,125,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,208,125,125,167,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,84,41,42,42,0,41,84,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,84,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,83,0,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,83,0,42,41,42,42,83,42,0,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,0,83,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,83,0,0,42,41,42,0,42,41,42,42,0,41,84,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,83,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,83,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,83,0,42,42,0,41,42,42,0,83,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,83,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,83,42,83,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,83,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,83,0,42,42,41,0,42,42,41,0,42,42,41,0,84,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,83,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,83,0,42,0,41,42,42,41,42,42,83,42,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,83,42,167,83,583,42,42,250,41,125,42,0,83,0,42,42,0,41,42,83,42,167,0,41,42,0,42,83,42,83,42,41,42,125,83,417,125,42,41,42,0,42,41,125,84,41,42,42,41,0,84,83,0,83,84,333,333,42,125,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,83,42,42,541,292,125,0,83,42,0,42,41,42,42,0,41,42,42,41,0,250,167,125,42,41,42,42,41,250,42,333,42,42,41,250,42,42,0,41,417,42,0,41,42,42,41,42,42,41,84,0,41,42,0,42,41,84,41,42,42,291,125,125,125,375,834,583,292,291,42,0,42,41,0,42,208,42,42,41,584,0,333,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,42,0,83,125,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,42,42,41,42,42,0,83,83,125,125,0,84,41,209,41,42,125,0,125,83,84,166,84,41,42,83,42,125,83,209,41,42,42,41,42,125,250,292,41,42,83,42,42,83,42,41,42,0,42,41,42,42,0,41,42,42,41,42,83,0,42,42,0,41,42,42,41,167,42,41,125,42,83,42,42,125,41,0,84,41,84,0,291,750,459,41,42,42,375,83,208,42,42,125,83,83,42,42,41,42,42,41,42,83,42,83,84,250,83,125,42,83,0,83,42,83,84,125,250,375,41,667,42,41,167,42,41,209,0,125,41,42,42,0,41,42,42,125,41,42,42,41,42,42,41,0,84,0,41,42,42,41,0,42,42,0,41,42,42,41,0,125,84,41,84,250,41,42,42,125,41,42,42,83,42,83,42,41,125,125,84,41,42,83,84,166,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,41,125,84,41,84,125,41,42,167,0,41,42,0,42,41,42,0,42,41,42,0,83,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,84,41,0,42,42,41,84,83,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,83,0,83,84,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,0,42,83,0,42,42,41,42,42,41,0,42,83,0,42,42,41,0,42,42,41,0,42,42,41,0,84,0,83,708,292,333,125,84,83,0,125,42,0,208,83,42,42,0,41,42,42,41,0,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,208,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,84,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,84,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,83,42,0,41,42,0,83,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,83,42,42,83,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,83,0,42,41,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,84,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,0,83,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,0,41,42,42,41,0,42,42,41,42,0,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,417,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,166,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,375,208,42,42,41,542,375,292,125,41,42,0,42,41,42,0,42,83,42,0,41,42,42,83,83,125,209,41,209,41,500,42,42,291,42,625,833,209,0,583,625,125,917,1375,1041,334,375,416,250,750,42,417,333,208,500,250,250,209,1666,334,833,125,375,458,209,708,0,333,1167,167,291,42,208,0,42,83,0,125,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,125,125,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,917,458,167,125,41,42,42,41,334,41,42,83,459,41,42,42,41,42,83,375,84,125,0,41,42,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,83,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,167,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,83,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,0,42,41,42,0,42,41,42,42,41,42,42,41,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,83,0,42,41,42,0,42,41,0,42,42,41,0,42,83,42,83,42,42,41,42,0,42,41,0,42,42,41,84,41,42,208,42,83,42,42,0,83,42,41,42,42,41,0,42,42,41,42,42,0,41,0,42,42,41,42,42,41,0,42,42,41,42,125,0,83,125,0,42,42,41,0,84,41,42,42,41,42,42,0,41,42,0,42,41,42,42,41,0,84,0,41,42,208,42,83,42,42,41,42,42,125,0,41,84,41,0,42,42,41,84,125,83,42,83,42,41,0,125,250,42,42,83,42,41,42,42,83,0,42,41,42,42,41,42,42,0,41,42,42,0,0,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,0,84,83,42,41,0,84,41,42,42,41,167,42,41,42,42,41,42,42,41,0,125,84,41,42,42,0,41,42,42,41,334,83,42,41,42,42,41,42,83,417,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,42,41,84,0,41,42,83,42,42,83,83,84,0,41,125,42,42,0,41,42,42,41,42,0,42,41,0,42,83,42,0,83,167,42,166,84,0,125,41,42,83,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,125,41,167,125,42,41,42,42,41,42,42,125,41,84,83,42,83,83,42,83,42,42,41,42,42,0,83,0,42,0,41,42,0,42,250,41,84,41,42,42,41,84,41,42,42,41,42,0,42,41,42,0,42,125,0,41,42,0,42,41,42,0,42,166,334,125,83,42,41,42,42,41,84,41,42,0,42,41,42,42,41,42,42,41,42,83,42,0,42,83,42,41,42,42,41,42,42,41,42,42,41,42,0,83,0,125,42,42,0,41,42,83,42,42,41,42,42,83,0,42,41,42,42,41,42,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,41,42,42,41,0,42,83,42,0,167,125,0,83,42,0,41,0,42,42,41,125,0,42,42,41,42,42,0,41,42,0,42,41,42,42,41,42,83,42,42,41,84,0,41,42,42,41,42,83,42,42,41,42,42,83,42,41,42,42,41,42,42,83,42,41,84,41,42,0,42,41,42,125,42,0,41,42,42,0,125,0,41,42,0,42,83,125,83,209,83,208,42,500,83,167,83,84,41,292,42,125,41,167,125,83,42,42,0,41,42,0,83,42,42,41,84,41,42,83,42,42,41,42,83,42,83,84,41,42,83,42,42,0,41,42,42,0,41,42,42,41,0,0,42,42,41,42,42,41,0,42,0,42,41,84,41,42,42,41,0,42,42,41,42,83,84,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,83,167,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,292,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,83,83,42,0,42,41,42,42,41,0,84,41,0,42,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,83,125,167,83,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,83,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,209,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,83,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,83,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,0,83,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,208,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,83,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,84,0,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,292,83,42,42,41,125,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,83,42,41,42,42,41,42,42,41,0,42,42,41,42,42,0,83,0,42,41,84,0,41,42,42,0,41,42,42,41,0,84,83,125,83,42,42,41,0,42,42,0,83,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,84,83,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,83,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,83,42,0,42,41,42,0,42,41,42,0,42,41,167,83,42,83,0,292,0,83,0,209,125,41,0,42,42,83,42,166,84,41,42,42,83,83,42,42,41,0,42,42,41,42,0,83,84,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,500,0,41,42,42,41,0,125,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,84,0,41,42,0,42,41,42,42,0,83,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,83,0,84,0,41,42,42,0,41,42,42,41,0,84,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,83,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,83,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,83,0,83,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,84,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,83,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,83,0,42,42,0,41,42,42,41,0,42,42,41,42,0]} \ No newline at end of file diff --git a/bench-camelize.withSlash-2024-11-24_12-17-49.cpuprofile b/bench-camelize.withSlash-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..4df033b --- /dev/null +++ b/bench-camelize.withSlash-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,10,25,28,31,32]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[8]},{"id":8,"callFrame":{"functionName":"","scriptId":"258","url":"node:inspector","lineNumber":62,"columnNumber":38},"hitCount":0,"children":[9]},{"id":9,"callFrame":{"functionName":"#onMessage","scriptId":"258","url":"node:inspector","lineNumber":80,"columnNumber":12},"hitCount":2,"positionTicks":[{"line":85,"ticks":1},{"line":82,"ticks":1}]},{"id":10,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":545,"children":[11,14,15,30],"positionTicks":[{"line":321,"ticks":2},{"line":323,"ticks":6},{"line":292,"ticks":37},{"line":314,"ticks":38},{"line":315,"ticks":84},{"line":297,"ticks":18},{"line":327,"ticks":48},{"line":316,"ticks":312}]},{"id":11,"callFrame":{"functionName":"H","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":254,"columnNumber":54},"hitCount":0,"children":[12]},{"id":12,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1794},"hitCount":0,"children":[13]},{"id":13,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":14,"callFrame":{"functionName":"y","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":78,"columnNumber":10},"hitCount":1,"positionTicks":[{"line":98,"ticks":1}]},{"id":15,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":627,"children":[16,18],"positionTicks":[{"line":537,"ticks":13},{"line":138,"ticks":2},{"line":302,"ticks":11},{"line":539,"ticks":17},{"line":309,"ticks":123},{"line":530,"ticks":46},{"line":139,"ticks":30},{"line":250,"ticks":43},{"line":301,"ticks":139},{"line":531,"ticks":1},{"line":311,"ticks":184},{"line":308,"ticks":18}]},{"id":16,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1794},"hitCount":148,"children":[17,21],"positionTicks":[{"line":2,"ticks":148}]},{"id":17,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":983},"hitCount":15495,"positionTicks":[{"line":2,"ticks":15495}]},{"id":21,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":53,"children":[22],"positionTicks":[{"line":2,"ticks":53}]},{"id":22,"callFrame":{"functionName":"camelize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":727},"hitCount":156,"children":[23],"positionTicks":[{"line":2,"ticks":156}]},{"id":23,"callFrame":{"functionName":"get","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":586},"hitCount":227,"children":[24],"positionTicks":[{"line":2,"ticks":227}]},{"id":24,"callFrame":{"functionName":"camelize","scriptId":"266","url":"file:///Users/airhorns/Code/superflected/src/camelize.ts","lineNumber":1,"columnNumber":815},"hitCount":48,"positionTicks":[{"line":2,"ticks":48}]},{"id":18,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":257,"children":[19,29],"positionTicks":[{"line":250,"ticks":257}]},{"id":19,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":208,"children":[20,26],"positionTicks":[{"line":139,"ticks":208}]},{"id":20,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1156,"positionTicks":[{"line":139,"ticks":1156}]},{"id":26,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":25,"children":[27],"positionTicks":[{"line":537,"ticks":25}]},{"id":27,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":126,"positionTicks":[{"line":530,"ticks":126}]},{"id":29,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":103,"positionTicks":[{"line":663,"ticks":1},{"line":669,"ticks":22},{"line":661,"ticks":23},{"line":666,"ticks":19},{"line":662,"ticks":8},{"line":668,"ticks":6},{"line":670,"ticks":6},{"line":665,"ticks":18}]},{"id":30,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1794},"hitCount":9,"positionTicks":[{"line":2,"ticks":9}]},{"id":25,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":564},{"id":28,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":277},{"id":31,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":24,"positionTicks":[{"line":301,"ticks":24}]},{"id":32,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[33]},{"id":33,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[34]},{"id":34,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[35]},{"id":35,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":1,"children":[36],"positionTicks":[{"line":136,"ticks":1}]},{"id":36,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1,"positionTicks":[{"line":136,"ticks":1}]}],"startTime":293063428876,"endTime":293064034126,"samples":[7,9,9,13,14,16,17,17,17,17,17,17,17,19,17,10,17,17,17,17,18,17,17,17,17,17,17,20,17,17,17,23,17,17,20,17,17,17,17,17,17,24,17,18,17,20,17,17,17,17,17,17,17,19,17,17,17,17,20,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,15,17,10,17,17,17,20,17,17,17,17,25,17,17,17,17,17,17,20,17,17,20,17,10,17,17,20,17,17,17,17,17,17,27,17,17,20,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,28,28,28,28,28,28,17,20,17,17,17,10,17,17,17,17,17,17,17,20,17,17,20,17,17,17,17,17,17,17,10,25,17,17,19,17,17,17,17,17,17,17,17,17,10,10,17,17,17,23,15,17,17,23,17,25,17,17,15,17,17,17,17,29,17,20,17,17,27,17,17,17,17,17,17,17,17,17,20,25,17,17,17,17,22,17,18,17,17,17,17,17,17,17,10,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,21,17,25,17,17,17,18,17,17,17,17,17,17,20,17,17,17,17,15,17,17,17,17,17,17,17,20,17,17,17,17,23,20,17,17,17,17,17,17,23,19,17,17,19,20,17,17,17,18,18,17,17,17,17,17,17,17,17,17,17,15,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,22,15,17,17,17,25,22,17,17,17,15,15,15,17,17,17,17,15,18,17,17,10,10,17,17,17,17,18,17,17,17,24,17,23,17,20,17,16,28,28,28,28,28,17,17,17,20,17,20,17,20,23,17,17,17,17,18,17,17,17,17,17,21,17,25,17,20,17,20,17,17,17,17,29,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,18,17,17,17,17,20,17,17,24,29,17,25,17,15,17,17,17,17,20,17,17,20,17,17,17,17,17,17,17,17,17,20,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,10,17,10,17,15,17,17,27,17,17,17,17,17,17,17,17,17,17,17,27,17,17,17,17,19,17,17,17,17,17,17,17,15,15,15,15,17,17,17,17,20,17,17,17,17,29,17,17,17,23,17,17,17,17,25,10,17,17,20,17,17,25,17,17,17,23,17,22,17,17,17,18,17,17,19,17,17,17,20,17,17,17,20,17,25,17,10,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,10,17,20,25,17,17,17,18,17,17,17,17,17,17,20,17,17,17,18,20,25,17,17,17,17,16,17,17,17,17,17,10,28,28,28,28,28,17,17,17,17,17,17,17,17,25,17,17,17,20,17,17,20,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,27,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,20,17,17,20,18,17,19,17,17,10,17,17,28,16,29,17,17,17,17,17,17,17,16,17,17,20,20,17,17,19,17,19,15,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,20,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,16,20,17,17,17,17,17,10,17,17,17,15,17,17,17,17,17,17,17,17,17,17,15,15,15,17,17,17,17,17,17,17,15,17,20,17,17,29,17,17,17,17,21,10,17,17,17,15,17,17,17,17,17,17,17,17,20,17,17,17,17,18,17,20,17,25,17,17,17,17,17,17,17,17,17,17,17,19,17,18,17,25,23,17,17,17,17,17,17,17,19,20,17,17,17,22,17,17,15,17,17,20,17,17,17,17,17,20,17,15,17,10,17,17,17,19,17,17,17,17,17,17,17,15,23,17,17,28,28,28,28,28,28,28,28,28,17,17,17,17,17,17,17,17,17,17,20,17,16,23,17,17,17,17,17,17,17,17,17,20,17,28,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,20,17,10,17,17,17,20,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,15,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,25,17,17,20,19,17,23,17,25,17,24,20,17,17,17,17,17,17,17,17,17,17,25,17,17,20,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,23,17,17,17,17,17,25,17,17,17,17,17,15,19,22,17,16,17,17,17,15,17,17,17,17,17,17,10,17,20,17,17,17,17,17,20,16,17,17,17,17,17,19,17,17,17,17,17,17,17,15,17,17,15,17,17,17,17,17,17,17,17,17,17,17,10,17,18,17,17,20,17,17,17,20,17,17,17,15,17,25,17,20,29,17,17,17,17,17,17,17,17,17,15,10,17,17,10,17,17,17,25,17,17,17,17,17,25,17,17,17,17,17,23,17,17,10,20,17,17,17,17,10,10,17,25,29,17,17,17,17,17,17,17,17,17,17,25,25,17,20,17,28,28,28,28,28,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,10,17,17,17,22,15,15,15,15,17,17,20,20,17,17,17,17,17,17,17,20,25,17,17,15,17,25,17,17,17,17,17,17,17,17,17,17,17,20,17,17,20,17,17,25,25,17,15,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,20,17,17,27,17,17,17,29,17,17,17,17,17,17,17,17,20,17,17,27,17,17,17,17,17,20,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,20,25,17,17,25,17,17,17,17,17,17,17,21,17,17,24,27,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,20,17,17,17,23,17,20,17,25,17,27,17,17,16,17,17,17,23,20,17,20,23,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,25,17,17,17,17,17,25,10,17,17,17,17,17,20,17,17,18,25,28,28,28,28,28,17,17,17,17,17,17,17,20,17,17,17,17,17,10,17,17,17,17,17,17,15,17,17,18,15,17,17,17,17,17,17,17,19,17,17,17,17,17,20,17,17,25,17,15,17,17,17,17,17,17,17,17,17,17,20,17,17,17,20,17,17,17,17,17,17,15,17,17,17,17,18,17,17,27,10,17,20,10,10,17,17,17,10,17,17,17,17,17,23,20,10,17,17,17,20,17,17,17,17,26,27,17,17,10,15,17,10,17,18,25,25,17,17,17,17,17,10,17,17,27,17,17,17,17,17,17,17,20,17,17,24,17,17,17,17,17,17,20,17,17,10,17,17,17,17,18,17,17,17,20,17,17,17,17,17,17,17,10,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,10,25,17,17,17,17,17,20,17,17,17,15,17,17,18,17,17,20,24,17,25,19,26,17,17,17,17,17,25,17,16,17,17,17,25,17,26,19,17,17,16,17,18,17,17,17,17,27,22,17,17,23,17,17,17,17,17,17,20,20,17,17,17,17,17,17,17,17,17,17,17,28,28,28,28,20,17,20,17,17,17,17,17,17,17,17,17,27,17,17,21,17,17,10,17,17,17,17,17,17,17,20,27,17,17,17,17,17,17,10,20,17,17,17,20,27,20,19,17,25,17,18,17,17,17,19,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,15,17,17,17,17,17,23,17,17,17,17,29,17,17,15,17,17,17,17,17,25,20,17,17,17,17,10,17,20,17,17,17,17,18,17,17,17,17,17,15,15,15,15,15,17,17,17,25,20,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,15,17,17,17,17,17,20,24,17,18,24,25,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,25,23,17,17,17,16,25,17,30,17,17,10,17,31,17,17,17,17,22,17,17,17,17,17,17,17,25,17,15,17,17,15,17,17,29,17,20,17,10,23,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,10,17,19,28,28,28,28,17,17,17,17,23,17,25,17,17,18,17,17,17,17,20,17,17,17,17,27,17,17,10,17,17,17,20,17,15,17,17,17,17,19,17,17,17,25,17,17,17,17,17,10,17,17,17,20,17,17,17,17,17,17,17,17,25,17,17,20,17,17,17,17,17,17,16,15,25,23,17,17,20,17,17,25,20,17,17,17,17,17,17,17,20,17,17,10,17,15,23,20,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,15,17,19,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,19,17,17,20,17,17,17,17,28,17,17,20,17,17,25,20,17,17,17,17,17,17,17,17,17,17,20,17,18,17,17,17,17,17,17,23,17,17,17,17,17,17,20,17,25,17,19,16,17,17,17,17,25,17,17,28,28,28,28,17,17,17,20,17,27,17,17,17,17,18,17,17,17,17,17,15,17,17,17,17,23,17,17,17,17,17,17,17,15,22,17,25,27,17,17,17,19,17,17,16,17,17,25,17,17,17,17,17,17,25,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,22,17,17,17,17,25,20,17,25,17,17,17,27,25,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,19,20,17,17,17,17,20,18,25,17,17,17,18,17,17,17,17,17,17,17,25,17,17,10,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,25,20,17,17,17,17,17,17,10,17,17,17,17,17,17,17,20,17,19,20,17,22,31,17,17,17,16,17,17,17,25,17,17,17,15,17,27,17,20,17,17,20,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,29,17,17,17,17,17,24,17,17,18,17,17,17,18,17,17,17,17,17,17,17,17,15,19,15,17,17,20,17,17,17,17,17,17,17,18,17,17,17,17,15,17,17,19,17,28,28,28,28,17,17,17,17,17,17,17,18,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,25,17,17,18,17,20,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,19,17,17,23,17,19,17,17,20,17,17,17,17,27,17,17,17,17,17,16,17,20,15,17,17,17,17,17,17,20,17,17,17,17,20,20,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,20,23,17,27,17,15,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,25,16,23,23,25,17,17,17,17,25,17,17,17,17,19,17,17,17,23,17,17,17,17,10,25,17,17,28,17,17,23,17,17,17,17,25,15,17,17,17,22,17,17,17,17,17,17,25,17,23,19,17,17,17,17,17,10,10,17,17,17,17,17,17,17,17,17,17,17,18,20,17,17,17,17,10,15,25,10,17,18,17,17,15,20,21,17,17,17,23,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,28,28,28,17,17,15,15,15,15,15,15,15,17,17,17,17,17,17,16,17,17,20,17,17,20,17,17,17,31,17,20,17,17,17,17,17,17,17,10,20,17,17,15,18,17,17,17,20,17,16,17,17,20,15,17,15,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,20,17,17,17,20,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,20,17,17,20,17,17,17,17,18,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,10,17,17,17,17,19,17,17,20,17,17,17,17,20,20,17,17,17,20,17,17,19,17,17,25,17,17,17,17,17,23,17,17,17,20,17,29,17,25,17,15,17,19,17,17,10,17,17,17,17,17,17,17,20,25,17,17,17,17,29,17,17,17,19,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,28,28,28,28,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,20,17,17,17,17,17,15,17,17,17,21,17,17,17,17,17,18,17,17,22,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,31,17,17,17,17,21,17,17,17,17,17,17,26,20,17,17,17,17,19,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,20,17,17,17,10,20,17,17,23,17,17,17,17,17,17,10,25,20,15,17,17,17,20,17,17,17,17,17,20,20,17,17,17,17,17,22,17,17,20,17,17,17,17,17,17,17,17,17,17,10,20,22,17,17,17,19,17,17,17,29,17,20,17,17,17,17,10,17,17,17,17,20,15,10,17,17,17,17,17,17,19,17,17,29,17,17,17,17,17,17,17,17,17,15,20,17,17,17,17,15,17,20,17,17,20,17,17,17,17,25,17,17,17,17,17,17,20,17,17,17,29,17,22,17,15,17,17,17,17,17,17,17,17,25,17,17,17,17,18,17,17,28,28,28,17,17,17,17,17,17,17,17,20,17,17,17,17,20,17,17,10,17,17,17,19,17,17,17,17,17,17,20,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,15,27,17,17,17,25,17,17,25,17,17,17,19,10,17,17,18,17,16,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,27,17,17,17,17,17,17,17,15,24,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,22,17,29,17,17,17,17,17,17,17,17,10,25,10,17,17,17,17,17,17,25,25,17,17,16,17,17,17,17,17,17,17,17,25,17,17,17,15,17,17,17,17,17,17,17,29,17,17,17,10,17,17,25,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,20,17,17,17,23,17,17,17,17,17,10,17,17,17,17,17,17,17,22,17,24,17,15,17,17,17,17,17,17,15,20,17,17,17,17,28,28,28,28,17,17,17,20,17,17,20,25,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,18,17,17,15,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,23,17,17,17,17,17,17,17,17,17,17,17,10,17,10,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,20,17,17,17,22,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,20,17,17,17,17,25,17,17,17,17,17,17,17,17,17,20,17,17,17,25,23,17,17,17,17,17,17,10,20,17,17,20,17,17,17,20,17,17,17,17,17,25,17,17,17,17,20,17,20,20,17,17,17,17,17,17,17,17,25,17,17,17,17,18,19,17,17,17,10,15,17,17,20,20,20,17,24,17,17,17,17,25,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,10,25,17,23,17,17,17,17,17,17,28,28,28,22,17,17,20,17,17,17,20,17,20,17,17,17,20,17,17,17,17,17,17,22,17,20,20,27,17,17,17,17,20,17,17,17,15,17,25,17,17,17,17,15,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,22,19,17,31,10,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,18,17,17,17,17,10,17,22,17,25,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,10,17,17,17,17,17,17,20,17,20,20,17,17,17,17,17,20,17,17,17,17,17,17,17,27,17,17,17,15,15,17,31,17,17,17,17,17,17,17,17,25,25,20,17,17,17,17,17,25,15,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,10,17,20,17,17,17,31,17,17,17,17,17,20,17,15,20,17,17,17,17,17,17,17,16,17,17,26,10,17,17,17,17,17,17,17,17,17,17,17,17,17,28,28,28,20,17,17,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,20,17,17,17,10,17,17,17,17,17,17,23,17,17,17,17,17,17,25,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,20,15,15,15,15,15,15,15,15,29,17,17,25,17,10,10,17,31,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,22,17,17,17,17,17,10,17,17,17,18,17,19,17,17,17,17,17,17,17,19,17,22,17,17,17,20,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,15,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,18,10,17,17,17,20,17,17,17,17,17,17,17,17,20,20,17,17,16,17,17,17,17,31,17,17,16,17,17,17,17,17,17,25,17,17,10,19,17,17,17,17,17,17,17,17,10,17,25,17,17,17,10,17,17,17,17,17,17,17,17,18,17,20,17,18,17,10,17,17,23,17,17,17,17,28,28,28,17,17,17,17,20,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,10,20,20,17,17,17,17,18,17,17,17,17,17,17,17,17,20,18,17,15,25,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,10,29,17,17,18,17,17,22,17,17,17,20,10,15,17,10,20,17,17,15,17,17,17,17,17,20,17,17,17,18,17,25,17,17,17,17,17,16,17,17,17,20,17,17,17,15,15,23,17,17,17,17,17,17,18,17,17,25,17,17,17,17,15,17,17,17,15,17,17,25,17,20,17,17,17,10,17,17,17,20,17,17,17,17,17,20,15,17,10,17,20,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,20,17,17,17,20,17,25,17,17,17,25,17,17,19,17,20,17,20,17,17,17,17,17,17,25,17,17,23,17,17,20,17,17,10,17,25,17,17,17,17,15,17,17,17,17,17,17,17,10,17,20,22,17,20,17,19,28,28,15,17,17,25,17,17,17,17,25,25,17,17,17,17,17,17,17,23,17,10,17,17,17,25,17,17,17,17,17,17,17,22,17,15,17,17,17,17,17,17,17,17,17,17,29,17,18,17,10,17,17,17,10,17,20,17,17,17,17,17,17,17,17,20,18,17,17,25,17,17,17,17,25,15,17,17,17,17,17,17,18,15,17,17,15,17,17,17,17,20,17,17,17,17,17,17,17,17,15,10,17,17,17,17,31,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,20,17,17,17,15,20,20,17,17,17,23,17,17,17,17,17,17,17,17,17,20,20,20,17,29,17,17,17,17,17,20,17,17,17,17,18,17,29,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,20,17,17,17,17,17,17,17,25,17,17,10,17,17,17,17,17,18,10,17,17,17,17,17,15,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,10,17,17,17,17,10,17,17,17,17,28,28,28,17,17,23,16,17,17,17,17,17,18,20,17,20,17,17,26,20,17,17,17,10,17,10,17,17,17,17,16,17,17,17,17,17,17,17,17,20,17,25,10,19,17,17,17,17,17,17,17,25,17,20,17,25,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,10,17,17,17,17,17,17,22,17,17,17,17,15,17,17,20,17,17,17,17,17,10,17,17,17,17,27,17,17,25,20,17,15,25,17,17,17,17,20,17,17,17,17,17,17,17,17,17,20,17,17,17,10,17,10,17,22,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,19,17,17,17,17,17,17,17,20,20,17,20,17,20,17,10,17,17,17,15,20,17,17,26,28,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,29,17,17,17,17,17,20,17,17,17,10,17,17,17,17,17,17,18,17,16,17,22,28,28,28,15,15,17,17,17,17,17,17,17,17,25,17,17,17,17,17,27,17,17,17,20,20,25,17,17,17,17,17,23,17,17,17,17,17,17,17,15,17,17,21,17,15,17,17,17,17,17,17,17,23,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,10,17,17,17,18,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,10,17,17,29,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,15,17,17,17,17,17,17,20,17,10,17,17,19,17,17,17,17,17,10,28,20,17,17,17,17,17,17,17,22,17,17,17,10,17,17,17,17,17,17,17,17,17,20,17,16,17,17,17,17,17,17,20,17,19,10,20,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,28,28,17,17,17,17,17,17,17,17,29,17,16,17,17,17,17,17,17,17,20,17,17,17,25,17,15,17,17,18,17,17,17,17,17,15,17,26,17,20,17,23,16,17,17,17,17,17,17,17,17,17,15,17,17,17,18,17,17,17,17,17,20,23,10,17,17,17,25,10,17,22,17,20,17,20,17,17,17,17,17,20,17,17,17,17,17,17,17,19,17,19,17,20,17,17,19,17,20,20,17,17,22,17,17,17,17,17,17,25,17,17,20,17,17,17,10,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,28,17,20,17,20,17,23,17,17,17,10,17,17,17,17,17,17,17,17,10,17,17,17,29,20,17,17,17,15,17,17,10,20,17,17,17,17,17,20,17,17,17,18,17,15,25,17,17,23,17,20,17,17,17,17,17,17,20,17,17,17,17,25,10,17,17,17,17,17,30,17,25,17,17,17,17,22,17,17,17,17,17,17,17,18,25,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,23,17,15,17,17,17,28,28,28,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,27,17,17,17,17,17,20,10,17,17,17,17,17,17,17,17,17,25,17,17,25,17,17,17,20,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,22,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,18,17,17,17,17,10,17,17,17,20,17,17,17,17,17,21,17,17,15,17,17,17,17,23,17,17,17,17,17,17,15,17,17,17,17,17,17,17,20,17,17,17,17,10,17,29,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,20,17,15,17,17,18,17,20,17,17,17,22,17,17,17,17,17,17,17,17,25,17,17,17,17,25,17,17,17,17,25,17,15,16,20,17,17,17,17,17,17,17,17,17,17,10,17,16,17,17,25,17,17,17,28,28,28,17,17,17,20,17,16,17,17,17,17,17,17,17,17,23,17,17,17,17,22,17,17,17,10,17,17,17,17,17,30,17,17,17,17,27,20,10,17,17,17,17,17,17,21,15,17,18,17,17,17,20,17,17,17,17,17,17,17,25,19,17,17,17,17,17,18,17,17,19,17,17,17,25,17,17,17,17,17,20,17,18,21,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,20,17,17,15,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,20,17,17,17,17,17,17,20,23,17,17,17,17,20,17,19,17,17,17,20,17,18,17,17,16,17,17,17,10,17,17,19,17,19,17,17,17,17,27,17,17,20,17,17,17,17,25,17,20,17,17,17,17,17,20,20,17,17,17,17,17,17,17,25,17,25,17,19,19,17,25,17,17,17,17,17,17,22,20,17,17,17,22,22,17,17,17,17,17,17,17,17,17,17,17,28,28,28,28,17,25,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,10,17,17,17,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,17,19,17,15,17,17,20,15,20,17,17,18,10,17,17,25,17,20,10,17,25,17,15,17,17,15,17,17,27,17,28,22,10,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,15,17,17,20,10,17,17,17,17,17,17,17,17,15,17,17,10,17,17,17,29,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,15,27,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,15,17,17,17,10,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,19,17,17,20,17,17,22,17,17,20,17,31,17,17,22,20,17,17,20,17,19,17,17,20,17,17,17,17,16,20,17,17,17,17,17,20,17,23,17,17,29,22,17,17,17,25,17,17,17,17,17,23,17,20,17,20,17,18,17,17,17,17,23,17,25,17,17,17,17,17,17,17,17,17,28,28,28,28,10,17,17,17,10,17,17,17,17,17,17,17,17,22,17,17,17,17,10,17,17,17,20,18,17,17,17,17,17,17,25,17,18,15,17,17,17,17,15,17,17,17,17,17,17,17,17,25,17,17,17,25,17,17,17,17,17,17,17,17,17,18,21,17,17,17,17,20,17,17,15,17,24,17,10,15,17,17,17,17,17,17,15,17,17,17,17,17,17,20,17,20,23,17,17,18,16,17,17,20,17,17,17,22,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,20,17,17,17,20,17,10,17,17,17,25,17,27,17,17,17,15,17,17,22,17,17,17,17,17,17,17,18,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,18,17,17,20,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,20,17,17,17,17,25,17,17,17,22,17,17,17,17,17,17,17,21,17,17,22,17,17,17,27,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,10,17,17,17,17,20,17,17,17,17,17,17,28,28,28,28,28,17,29,17,18,17,21,17,17,27,17,17,17,17,17,19,17,17,17,17,17,17,17,17,26,17,25,10,17,17,19,17,17,17,17,17,17,17,17,17,17,17,20,23,17,17,17,17,17,17,17,17,17,17,17,17,17,25,10,19,20,17,17,17,17,17,17,17,17,29,17,17,17,17,17,17,17,17,17,15,17,10,17,17,17,19,23,15,17,17,27,15,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,10,17,17,17,17,17,17,10,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,16,17,17,17,17,17,15,22,17,17,17,17,17,17,10,17,17,17,27,17,17,17,17,17,17,27,17,17,10,17,17,17,17,25,17,17,17,20,10,27,17,17,17,17,20,17,17,17,17,17,17,15,20,17,17,17,21,17,17,17,17,20,17,17,17,17,17,17,17,10,17,17,17,17,17,17,24,17,17,17,17,10,17,20,17,20,17,17,17,17,17,17,17,17,17,17,17,17,27,17,17,17,17,17,17,17,28,28,28,17,17,25,17,20,20,20,17,17,17,17,17,17,17,17,17,17,17,20,20,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,16,17,15,17,17,17,17,17,17,17,17,17,17,19,17,17,15,17,17,20,17,17,17,15,15,10,17,17,17,17,17,17,17,17,17,10,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,29,17,17,17,17,17,17,17,17,10,18,10,17,17,17,17,17,21,17,17,17,17,10,25,17,17,17,17,17,17,17,17,17,17,20,17,17,17,15,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,15,17,17,17,17,29,17,17,17,17,17,17,17,17,25,10,17,17,10,25,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,25,17,19,17,17,17,17,17,17,17,17,18,17,17,17,20,17,17,17,17,17,27,17,17,17,17,28,28,28,17,17,17,18,17,10,17,17,17,17,10,17,17,20,17,18,17,17,17,17,17,17,17,17,17,17,15,15,17,18,17,17,17,17,17,17,17,17,15,17,17,19,17,17,25,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,10,17,17,17,10,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,25,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,15,18,23,20,17,19,17,17,17,17,17,17,17,17,20,17,17,17,20,17,20,17,17,17,10,17,17,17,17,17,19,17,20,17,17,10,17,17,17,17,17,17,17,15,17,17,17,17,10,17,17,17,17,17,20,24,17,17,25,10,17,17,29,25,23,17,17,20,17,19,17,17,17,16,17,17,20,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,19,17,17,17,17,15,17,17,17,17,17,17,17,25,17,17,17,20,28,28,28,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,19,25,17,17,20,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,20,17,17,17,17,17,17,17,20,17,25,17,17,17,17,17,17,17,17,17,20,20,17,17,17,17,17,17,17,17,17,20,17,17,17,17,20,18,20,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,18,21,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,20,17,17,25,20,17,17,20,16,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,21,20,17,17,17,25,20,17,17,27,17,17,17,17,20,17,18,17,29,17,17,17,17,17,17,17,18,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,20,28,28,28,17,17,17,17,17,23,17,18,20,17,17,17,17,17,17,17,15,15,17,17,17,17,17,17,17,17,15,17,17,17,20,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,20,17,10,17,17,25,17,17,17,17,17,18,17,25,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,24,17,17,17,17,23,17,20,17,17,17,17,20,17,17,17,17,17,17,18,17,16,17,17,17,15,25,17,20,20,17,17,18,17,17,17,17,17,17,17,17,17,15,17,20,17,29,17,17,20,17,17,25,17,17,17,17,23,17,17,20,17,10,17,17,20,17,17,10,17,17,17,25,17,15,17,17,17,17,17,25,17,17,17,17,23,29,10,16,17,17,17,17,17,17,17,29,17,19,15,15,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,10,28,28,28,28,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,20,17,17,25,17,17,17,17,25,17,18,25,17,17,20,10,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,10,20,17,17,17,17,17,17,25,10,17,17,17,17,17,17,17,17,17,17,17,17,10,20,17,17,17,15,17,20,17,17,17,17,17,17,27,17,20,17,17,17,25,17,17,15,17,17,20,17,25,25,17,17,17,17,17,10,17,17,17,10,17,17,17,17,17,18,17,17,17,20,17,17,15,25,17,17,17,25,17,17,17,17,17,17,16,17,17,17,17,10,17,17,17,17,17,17,17,25,17,20,17,17,15,17,17,17,17,17,20,17,17,17,17,17,20,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,10,17,17,17,17,17,17,17,26,17,17,17,17,17,20,21,17,17,17,17,17,20,17,17,17,20,16,17,17,17,15,17,17,20,17,17,17,17,18,17,20,17,17,28,28,28,28,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,18,17,17,10,17,17,17,17,17,17,17,17,25,17,17,16,17,17,17,17,25,20,17,17,15,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,25,20,17,17,17,17,22,10,17,17,17,17,17,17,17,17,15,22,17,17,17,20,17,17,17,17,17,26,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,23,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,25,17,17,27,17,17,17,17,10,10,20,23,17,15,17,15,17,17,17,17,17,20,20,17,17,29,17,17,17,17,20,17,17,17,25,17,25,17,27,17,20,17,17,17,17,15,17,17,17,17,20,20,17,17,19,17,17,17,17,17,20,17,25,17,17,17,20,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,22,17,17,17,28,28,28,28,17,17,17,17,17,17,17,17,20,17,17,20,17,17,17,20,17,17,17,17,17,17,17,17,20,17,20,17,17,20,17,17,17,20,17,16,17,23,17,17,17,17,17,17,17,17,25,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,16,17,17,17,17,17,17,17,17,17,20,17,17,25,17,15,17,23,17,17,15,17,17,17,17,10,17,17,17,17,17,17,23,15,25,17,17,17,25,15,17,17,17,17,17,17,17,17,27,17,20,17,17,17,17,15,17,17,25,17,17,19,17,17,17,17,17,17,31,17,17,17,20,19,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,20,17,17,17,20,17,25,17,17,17,17,17,10,17,17,10,17,17,17,17,17,17,17,17,17,15,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,15,17,15,17,10,17,17,10,17,17,17,26,17,17,17,17,17,10,17,17,17,17,18,20,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,20,17,15,17,28,28,28,28,28,17,17,17,17,17,17,17,17,17,18,17,23,17,17,22,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,20,15,17,10,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,23,17,17,31,17,17,17,17,17,17,17,17,25,18,17,25,17,15,17,17,17,17,20,17,17,23,17,17,17,22,17,17,17,27,17,17,17,17,17,17,17,18,17,17,17,21,17,17,17,17,17,17,17,18,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,20,17,17,20,20,17,24,17,20,17,17,10,17,17,17,17,17,17,17,17,20,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,15,10,17,17,17,17,17,17,17,17,17,17,17,17,23,25,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,10,10,17,25,17,17,17,17,28,28,28,17,17,17,17,17,20,10,15,17,17,17,17,15,17,20,17,17,17,17,17,17,17,20,17,17,17,20,17,17,17,17,17,17,17,25,17,17,17,23,17,17,15,15,17,29,22,17,17,10,17,17,17,17,17,17,17,17,17,17,17,25,17,20,15,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,23,18,17,17,10,18,31,20,25,15,25,25,17,17,20,10,17,17,17,17,17,15,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,19,17,17,22,17,17,17,17,17,20,17,17,17,25,17,17,17,15,18,10,20,17,17,17,17,17,27,17,17,25,17,10,17,20,17,10,17,17,25,17,17,17,17,17,17,17,17,17,20,17,23,17,19,17,17,17,25,17,17,22,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,27,17,15,17,17,17,25,17,10,17,17,17,17,17,17,17,29,17,17,17,17,17,17,17,17,17,17,22,17,17,16,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,17,17,17,17,17,25,20,17,25,17,17,17,17,28,28,28,17,10,17,25,17,18,17,17,17,17,23,17,17,17,17,17,22,20,17,17,17,17,17,17,17,17,17,17,17,17,17,27,17,17,25,17,17,15,17,17,25,15,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,25,23,17,17,20,17,17,17,17,17,17,17,17,17,17,17,22,17,18,17,20,15,17,17,17,17,24,17,25,17,17,24,17,17,17,17,15,17,15,17,18,17,17,17,17,18,17,17,15,17,17,17,20,17,20,17,17,17,17,17,10,17,17,17,25,17,17,22,17,17,17,17,17,17,17,10,25,17,18,17,17,17,17,17,17,17,17,17,20,17,23,17,17,10,16,17,19,17,17,17,17,17,17,17,17,17,17,18,17,21,21,17,22,17,20,17,17,17,20,10,17,17,21,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,20,25,17,18,17,17,10,17,17,29,17,17,17,17,17,25,17,17,25,17,15,10,17,17,20,17,17,17,17,17,17,17,17,28,28,28,17,17,17,20,17,21,25,17,17,17,20,17,17,17,20,17,17,20,17,20,17,17,17,17,17,17,17,27,17,17,17,15,17,15,17,17,24,17,17,17,17,17,20,17,25,20,17,17,17,17,17,20,20,16,17,17,17,17,17,20,17,17,17,17,17,17,23,20,17,18,25,17,17,17,17,17,17,20,17,17,29,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,10,17,17,17,17,23,17,17,17,27,17,17,17,17,17,10,17,17,17,17,20,17,17,17,17,17,17,18,10,17,15,17,17,18,17,17,17,17,17,20,17,19,25,20,15,21,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,23,17,16,25,17,21,17,17,17,17,17,24,17,17,17,20,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,25,20,17,17,17,17,22,17,17,17,17,25,17,17,17,25,17,17,17,25,25,17,17,17,17,18,17,28,28,22,17,15,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,10,20,17,20,17,17,17,17,17,25,17,17,17,20,17,24,17,17,17,17,17,23,17,17,17,17,17,17,17,20,17,20,20,20,17,17,17,20,17,17,17,17,10,17,17,17,18,17,17,17,17,17,17,17,27,30,17,20,17,17,17,20,18,17,17,17,17,17,19,17,17,17,17,17,20,26,17,17,17,17,17,20,17,17,23,17,21,17,17,17,20,20,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,20,17,17,17,17,15,17,17,17,15,17,22,17,10,17,17,17,17,16,17,20,17,18,17,20,17,17,17,17,17,17,17,17,17,25,17,10,17,17,17,17,15,17,17,29,17,17,10,17,18,25,17,17,23,17,15,20,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,22,17,17,17,17,17,15,17,28,28,28,17,17,17,17,17,27,17,17,17,17,17,17,25,17,10,17,17,17,17,17,17,20,19,24,17,17,17,17,15,17,10,17,17,20,10,17,17,17,17,15,17,20,20,17,17,17,17,17,17,17,17,17,17,15,19,18,17,17,17,20,17,15,17,17,10,17,17,17,17,17,17,25,17,17,17,17,17,17,28,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,20,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,25,17,17,17,17,16,18,17,17,17,16,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,29,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,20,20,17,18,17,19,17,17,17,17,17,17,17,17,17,18,20,25,17,17,17,15,17,17,17,17,17,17,17,17,17,20,17,17,17,20,17,17,17,17,23,15,17,17,28,28,17,17,17,17,24,17,17,17,17,17,25,17,17,17,17,17,17,17,17,20,17,17,29,17,17,17,17,17,17,17,17,17,17,17,20,20,17,17,17,17,17,25,20,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,10,17,20,17,18,17,17,17,17,17,19,17,23,17,17,10,17,17,17,17,23,17,17,17,23,17,17,15,17,17,17,17,20,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,10,17,17,17,17,17,17,17,17,15,17,17,27,17,17,20,17,17,24,17,10,17,17,17,10,17,17,17,20,17,17,17,20,17,17,17,17,17,17,17,17,17,17,15,17,19,17,17,10,17,17,15,17,20,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,19,20,17,25,17,17,17,20,25,17,18,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,25,17,17,17,20,17,17,17,17,17,15,10,17,22,31,25,17,17,17,28,28,17,17,17,17,17,17,17,17,17,20,17,17,23,17,25,17,17,17,17,17,17,17,17,17,17,15,17,29,17,17,17,17,20,17,17,19,17,17,17,17,29,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,27,19,17,17,17,17,17,19,21,17,17,17,17,17,17,10,17,17,17,17,15,17,17,17,17,17,17,17,27,17,17,17,17,16,17,17,17,17,20,17,22,17,17,17,18,17,17,17,17,17,18,17,17,20,17,17,17,17,15,17,17,25,17,17,20,17,17,17,17,17,17,17,17,17,17,20,18,17,15,17,17,17,17,20,17,17,20,20,17,17,17,17,18,17,17,10,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,18,17,27,17,17,17,27,17,17,10,17,17,17,17,17,20,17,17,17,17,16,17,17,17,25,17,17,17,20,17,17,17,17,17,24,17,17,24,15,17,17,17,17,20,20,15,17,17,17,17,17,17,20,20,17,17,20,17,17,17,17,17,16,17,17,17,17,15,17,17,17,17,17,17,20,28,28,17,17,17,17,15,17,17,15,17,17,17,17,17,20,17,17,17,17,10,17,17,27,29,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,20,17,17,17,17,17,17,17,10,17,17,20,17,17,17,19,17,17,17,17,17,17,17,20,25,17,17,17,17,10,17,25,17,17,17,15,17,17,25,17,20,17,17,17,20,17,17,17,17,17,17,17,15,17,18,10,17,22,20,17,17,15,17,27,20,17,17,17,17,17,17,23,20,17,17,20,17,10,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,29,20,17,17,17,17,19,17,17,17,10,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,24,20,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,18,10,17,15,17,17,17,17,17,17,17,17,17,17,15,25,17,17,17,17,17,20,25,17,17,17,23,17,17,17,18,17,17,17,17,17,17,17,17,31,17,17,17,20,20,28,28,28,17,20,17,17,17,17,17,20,17,17,17,19,17,17,17,18,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,23,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,18,18,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,20,17,17,23,17,17,29,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,20,17,17,17,10,21,17,17,17,17,15,20,20,17,17,17,17,10,30,17,17,17,17,17,17,17,17,17,17,17,25,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,20,10,17,17,17,17,17,19,15,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,25,17,10,17,17,15,17,22,17,18,25,17,17,17,17,17,17,18,17,17,17,17,10,17,17,17,17,17,17,17,23,25,17,22,17,17,21,17,23,20,17,17,10,19,10,17,17,17,28,28,28,17,17,10,17,17,23,17,17,17,17,25,17,17,20,17,20,17,17,17,17,17,17,17,17,25,27,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,20,17,20,17,17,17,17,15,23,15,23,15,22,17,17,17,22,24,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,27,25,17,22,16,17,17,17,17,17,17,15,17,22,17,17,17,17,25,17,17,17,16,17,17,10,17,17,17,17,17,17,20,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,28,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,27,17,17,20,17,17,17,17,20,10,10,20,17,17,17,17,17,17,15,27,17,25,17,27,17,17,17,17,17,17,31,17,25,20,17,17,20,17,17,17,26,17,17,17,17,17,17,17,17,29,17,17,17,31,17,17,17,17,17,17,25,17,19,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,25,17,17,20,17,17,17,17,23,17,17,20,17,17,17,28,28,17,25,17,17,20,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,10,10,17,20,20,17,17,10,17,17,20,17,17,15,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,20,17,17,17,17,17,17,17,20,17,17,26,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,27,17,17,10,17,25,17,17,17,17,17,17,17,20,17,10,17,17,17,10,17,17,17,19,17,17,20,17,17,17,17,16,17,25,17,26,17,17,16,17,17,17,17,17,17,17,17,20,17,22,15,17,29,17,17,17,17,17,17,17,22,17,17,17,17,17,17,23,17,17,20,17,17,10,17,17,17,17,20,17,17,20,17,17,17,15,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,15,17,17,10,17,20,20,17,20,10,17,20,17,17,17,17,25,17,17,17,17,17,17,19,17,17,17,22,17,17,17,17,21,17,17,17,17,17,17,17,17,17,17,18,17,10,17,20,17,23,17,20,17,22,17,28,28,28,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,16,17,17,15,17,20,17,17,17,17,17,17,17,25,25,17,17,17,17,16,25,17,17,17,17,17,17,17,17,10,16,17,17,17,17,17,17,17,26,17,17,17,10,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,25,17,25,17,17,29,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,25,17,23,17,29,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,10,17,17,17,29,17,17,17,17,17,17,17,17,17,17,17,15,17,24,17,17,17,17,10,18,17,15,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,16,15,17,17,17,17,17,17,17,17,15,16,17,17,17,22,17,17,17,17,17,17,17,17,23,20,28,28,28,28,28,17,17,17,17,17,17,17,22,17,17,17,25,17,17,17,17,17,18,17,17,23,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,23,17,17,17,17,17,17,17,17,17,25,23,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,27,20,17,15,17,17,17,17,17,17,17,17,15,17,17,10,17,17,17,17,17,17,17,17,17,17,17,27,22,17,17,27,17,25,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,15,17,17,17,17,17,17,17,22,17,19,17,17,17,20,17,17,17,20,17,17,17,17,22,17,17,17,17,17,17,17,25,15,10,17,23,17,17,17,17,17,20,17,19,17,17,17,17,17,17,17,17,20,17,17,20,17,17,17,17,17,17,17,17,25,22,20,17,17,17,17,25,17,17,20,17,17,17,17,17,17,17,17,17,17,17,10,17,17,20,17,18,17,20,17,28,28,28,28,10,17,20,17,17,20,17,17,17,17,17,17,17,20,25,17,25,17,17,17,17,17,17,25,17,17,17,17,27,17,10,20,15,17,17,17,17,17,20,17,20,17,17,17,17,17,17,16,17,17,17,20,17,25,17,17,17,17,17,17,17,20,18,20,25,22,17,17,17,17,17,23,29,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,25,17,17,20,27,17,17,17,17,17,17,17,17,17,10,16,17,10,17,17,16,17,17,17,17,17,10,25,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,18,17,21,29,17,17,15,17,17,17,17,17,17,17,17,17,17,17,10,17,17,21,17,17,17,15,18,29,17,17,17,25,17,17,20,17,17,17,17,22,15,17,25,22,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,28,18,15,17,17,16,17,17,17,17,17,17,17,17,15,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,10,17,17,20,20,29,17,17,17,17,17,28,28,28,28,28,17,17,17,20,17,27,17,17,17,17,17,17,17,10,17,17,17,17,17,17,20,17,17,17,17,17,17,17,16,17,17,17,17,17,17,17,10,17,15,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,20,17,25,17,17,17,17,17,25,17,17,17,17,18,17,17,17,17,17,17,17,17,10,27,18,17,17,15,17,17,15,17,17,17,17,17,17,17,17,17,17,17,20,20,17,15,17,17,17,17,17,17,23,17,10,19,17,17,17,17,17,17,17,17,17,17,10,29,17,17,19,17,17,17,17,17,27,17,17,20,20,17,17,20,10,17,17,17,17,22,17,17,17,17,17,17,17,17,25,17,29,27,17,20,15,17,17,25,17,17,17,17,10,17,17,17,17,17,20,17,17,17,20,15,10,15,17,19,25,17,17,17,10,20,17,17,17,17,17,17,17,25,17,17,17,10,20,17,10,17,20,17,17,17,17,17,17,20,17,17,17,17,17,17,17,23,17,17,10,17,17,25,17,17,20,17,17,17,17,17,17,10,28,28,28,17,17,15,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,16,17,17,19,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,24,23,17,17,17,17,17,10,17,20,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,25,29,10,17,17,17,17,17,17,20,17,25,17,17,17,17,17,17,20,17,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,31,17,17,21,17,17,17,17,17,17,17,17,17,19,17,15,17,17,17,16,18,17,20,17,17,20,17,17,17,20,20,17,17,17,17,17,17,17,20,17,17,17,20,17,17,15,17,17,17,17,17,17,19,17,20,17,17,17,17,17,17,17,17,20,17,17,17,10,17,20,17,17,15,19,10,17,17,20,17,17,15,17,20,16,17,17,17,17,17,17,17,17,15,17,17,20,17,20,17,17,17,17,29,22,17,17,17,17,23,17,17,17,17,17,17,10,17,17,17,28,28,28,17,15,17,15,17,17,17,20,17,17,17,17,17,17,16,20,27,17,17,15,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,27,17,17,17,17,17,10,20,17,17,20,21,17,17,17,17,17,17,17,17,17,17,17,27,17,20,17,25,27,17,23,17,17,17,15,17,17,17,17,10,17,17,17,17,17,17,17,17,19,17,17,17,25,17,17,18,17,17,17,20,17,17,17,17,25,17,17,17,17,17,17,10,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,27,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,10,17,17,17,17,19,17,17,17,19,17,17,18,15,17,17,17,17,17,17,17,17,17,17,10,25,17,17,17,17,17,20,21,17,17,17,10,17,17,17,15,17,28,28,28,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,27,20,16,17,17,17,17,20,17,22,17,17,17,17,17,17,17,17,17,17,17,17,18,15,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,15,21,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,15,15,18,25,17,20,17,17,17,17,19,17,25,17,17,21,10,25,17,17,17,17,17,15,17,15,17,17,25,17,17,17,17,17,17,15,17,20,17,17,17,17,17,17,17,17,17,17,17,28,17,17,17,10,17,17,17,17,25,17,17,17,17,17,17,17,20,20,17,17,17,17,17,17,17,17,20,20,10,17,17,17,17,17,17,17,18,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,15,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,20,17,17,17,20,17,20,17,17,17,17,17,18,20,17,17,10,17,17,20,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,28,28,28,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,15,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,20,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,27,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,25,17,17,17,17,20,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,20,17,17,20,17,17,17,16,17,17,17,20,15,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,29,17,17,25,17,17,17,17,15,17,17,25,17,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,10,25,17,23,20,15,17,21,29,17,17,17,17,17,17,17,27,20,17,17,17,17,17,17,17,17,29,20,20,17,20,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,15,17,17,17,18,17,17,19,17,17,17,17,17,20,17,20,17,28,28,28,17,20,17,17,17,17,17,17,10,17,17,17,20,17,17,17,17,17,17,17,17,17,17,20,17,23,25,17,17,17,17,17,17,20,10,17,17,17,17,17,17,17,10,17,20,21,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,10,17,20,17,15,29,17,17,17,17,17,25,18,17,17,18,17,17,29,17,17,24,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,10,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,25,17,17,17,17,15,17,17,17,17,17,17,17,17,29,19,17,17,17,23,17,17,17,17,17,17,17,18,17,25,17,17,17,17,17,22,17,17,17,31,17,15,17,17,17,17,20,17,17,17,15,25,17,17,17,17,17,20,17,17,28,28,28,17,15,16,17,17,17,17,17,17,17,17,17,17,17,23,17,23,17,17,17,17,25,17,15,17,17,17,20,20,17,17,25,17,17,18,17,17,17,17,20,17,17,20,17,17,17,17,17,17,17,25,17,17,19,17,17,17,17,10,16,17,23,20,17,17,15,17,17,17,17,25,17,15,17,17,17,17,20,17,17,17,17,20,17,17,17,17,17,17,15,20,17,17,15,17,17,17,19,17,20,17,17,17,17,17,17,17,17,17,17,17,17,23,17,10,17,17,15,20,17,17,17,17,21,17,17,25,18,17,17,17,17,17,17,25,17,17,17,17,17,17,17,22,17,17,17,17,17,23,17,17,20,17,17,17,17,10,17,17,16,17,17,17,17,17,17,17,17,25,23,17,17,17,17,17,17,17,17,17,17,17,17,27,17,17,29,29,17,17,17,17,20,17,17,17,20,17,17,25,24,17,17,17,17,17,17,27,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,25,17,17,20,17,17,17,17,17,19,17,17,17,17,16,17,20,17,17,17,28,28,28,17,17,17,17,25,17,17,17,17,17,17,17,17,20,17,17,17,17,27,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,20,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,29,17,17,17,17,17,20,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,27,17,17,18,17,17,17,17,10,25,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,20,17,17,17,17,17,19,17,17,17,17,17,17,17,17,25,20,20,15,17,17,17,20,17,15,17,17,17,10,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,10,17,10,17,17,17,17,17,10,17,17,10,17,17,17,22,17,17,17,17,17,17,23,17,25,17,17,10,17,17,17,20,18,20,10,17,17,25,17,17,17,17,17,17,20,17,17,17,17,17,17,28,28,17,17,20,17,17,17,17,17,17,17,20,17,17,17,17,17,15,17,17,17,17,17,17,17,22,17,17,20,17,17,17,17,17,17,10,17,22,17,17,17,15,17,17,17,17,17,17,17,17,25,17,17,18,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,19,17,17,17,17,17,20,17,17,10,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,10,17,16,17,17,17,17,17,17,20,17,17,17,25,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,10,17,23,17,17,17,17,17,17,17,17,17,17,17,15,17,10,17,17,17,23,17,15,17,17,17,17,17,17,10,17,17,16,17,17,17,17,17,17,17,10,17,10,17,17,17,17,17,21,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,15,17,17,17,17,18,17,17,17,17,27,17,17,20,17,17,17,23,17,17,28,28,28,15,17,17,17,17,17,17,25,17,17,17,15,17,17,17,17,17,17,17,17,20,17,17,17,17,20,17,20,17,20,15,17,17,17,17,17,20,19,17,17,17,17,17,17,17,10,17,17,20,17,25,17,17,17,10,17,17,17,17,18,17,17,17,17,17,17,17,17,25,17,17,27,10,17,20,20,17,15,17,17,17,20,17,17,17,17,17,20,10,16,17,20,10,17,20,17,17,17,17,17,17,20,17,17,17,17,17,17,10,17,17,20,17,17,20,17,17,17,17,17,15,17,15,27,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,26,17,18,17,17,17,17,17,17,17,15,17,24,17,17,17,17,17,22,17,17,17,16,17,18,17,19,17,17,17,17,17,17,15,17,17,30,17,15,17,17,17,17,17,17,17,17,17,17,17,23,17,27,17,25,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,25,17,17,29,17,17,17,20,17,17,20,17,17,17,19,17,17,17,17,17,15,16,17,17,17,17,17,17,17,16,17,17,17,10,20,17,17,17,17,20,17,17,28,28,17,17,17,17,17,10,23,17,17,17,15,17,17,17,17,17,17,17,15,17,17,17,17,15,17,25,17,17,22,17,17,17,17,23,17,17,17,23,25,17,17,17,17,17,17,17,17,17,10,17,17,17,17,18,17,17,17,27,17,17,17,17,10,23,17,17,17,18,17,17,15,17,17,23,17,23,17,17,17,23,17,17,17,17,17,17,20,17,10,17,17,17,15,17,17,15,25,17,17,10,20,17,17,22,17,17,17,17,17,17,25,10,17,20,17,17,17,17,17,17,17,17,25,17,25,17,17,17,17,17,10,17,17,17,17,17,20,17,17,22,17,17,17,17,17,17,17,17,20,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,22,17,20,25,17,17,17,17,17,25,25,17,17,17,18,17,24,17,17,17,10,17,16,17,17,17,17,17,20,17,17,20,10,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,23,20,17,17,17,17,17,17,10,17,20,17,17,25,17,17,17,10,29,28,28,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,15,17,10,15,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,10,17,17,17,17,17,20,17,17,17,17,17,17,17,19,17,10,25,25,17,17,17,17,15,17,20,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,29,17,17,17,17,20,20,17,17,17,17,17,15,17,17,10,17,17,10,17,17,17,17,27,17,20,17,23,17,17,17,20,15,17,10,25,17,17,17,17,17,15,17,17,17,20,18,17,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,20,18,17,17,17,17,20,17,20,17,10,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,19,17,17,23,17,23,17,17,17,17,17,17,20,17,17,10,17,17,17,17,10,17,17,17,17,17,17,17,17,19,25,17,17,17,17,17,18,17,17,15,28,28,28,17,17,19,17,17,15,17,17,17,17,17,17,17,17,17,15,17,17,17,17,29,17,17,17,17,17,20,17,17,17,10,17,17,17,17,23,17,17,17,17,10,20,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,27,17,15,17,15,17,20,10,17,29,23,17,17,17,17,17,17,17,17,17,15,20,17,17,17,17,15,17,17,23,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,29,17,15,17,17,17,17,17,17,17,17,17,17,17,20,17,17,23,17,16,17,17,27,17,17,17,17,17,17,17,17,20,17,17,25,10,17,17,17,17,17,20,17,17,10,17,17,23,17,17,10,10,17,17,17,20,17,20,15,17,17,17,17,17,17,20,17,15,10,20,17,17,20,17,17,23,17,17,17,17,17,17,17,17,17,17,17,25,17,17,25,17,17,17,17,17,17,17,23,17,17,17,22,17,17,25,17,17,17,17,10,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,25,15,20,28,28,28,17,18,17,17,17,20,17,17,17,17,17,20,17,17,17,17,23,17,17,17,17,17,19,17,17,17,17,17,20,17,17,15,17,17,17,17,20,17,17,17,17,17,16,17,29,25,17,17,17,17,22,17,17,23,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,26,17,25,17,17,18,10,17,17,15,25,17,17,20,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,22,17,17,25,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,18,15,17,18,17,17,25,17,17,17,17,17,17,17,17,17,17,20,17,17,18,17,17,17,31,17,15,17,17,10,17,17,17,17,17,17,17,17,18,17,23,17,17,10,17,17,22,17,17,20,17,17,20,17,17,17,17,17,17,17,17,17,17,17,20,25,17,17,16,10,17,17,17,20,17,23,17,17,17,17,17,17,20,25,17,17,17,17,17,17,17,17,29,20,17,28,28,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,16,17,17,17,20,17,17,17,19,17,17,17,17,17,17,17,17,17,15,17,17,17,17,20,17,17,17,17,23,20,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,25,17,15,17,17,17,20,20,17,17,17,17,17,17,17,17,17,17,17,22,17,23,20,17,17,17,17,17,17,15,17,10,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,25,17,17,17,17,17,22,17,17,17,17,17,17,17,17,15,17,17,17,17,20,20,17,17,23,17,17,17,17,17,17,17,25,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,25,17,20,17,17,20,17,17,25,17,17,17,17,17,10,19,17,17,17,15,17,19,15,17,25,17,17,17,17,17,17,17,18,17,17,22,17,17,17,17,17,10,17,17,17,17,17,17,17,17,23,17,17,17,18,20,17,22,22,20,15,17,17,17,17,17,17,17,17,17,18,17,17,28,28,28,17,17,25,17,17,10,17,17,20,17,17,17,17,20,20,17,15,20,17,17,17,17,17,26,17,17,15,17,17,17,17,17,17,17,24,17,17,20,17,17,17,17,17,17,17,17,24,17,17,17,23,17,17,15,17,17,10,17,17,17,17,17,17,17,20,17,17,17,27,17,20,17,17,20,17,17,17,17,17,17,17,17,20,20,17,17,27,17,22,17,17,17,17,20,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,20,17,20,17,17,17,17,17,17,25,17,17,17,17,20,20,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,20,23,17,15,17,17,20,17,17,17,25,17,17,17,17,17,17,27,17,17,17,20,17,10,19,17,17,17,20,10,17,17,17,10,18,17,15,20,20,17,17,10,17,20,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,25,17,17,20,17,17,17,17,20,18,20,17,17,17,17,17,17,17,17,17,17,17,17,28,28,28,17,17,17,15,17,18,17,17,17,17,17,17,17,17,17,25,20,17,17,20,10,17,17,19,20,17,17,17,25,17,17,17,17,17,17,22,16,20,17,17,17,18,17,15,17,24,17,17,19,17,17,17,17,17,10,19,16,17,22,17,17,18,17,20,17,17,10,17,17,17,17,17,17,17,17,17,17,17,27,17,20,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,10,20,17,17,17,17,20,25,17,17,19,20,25,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,29,17,17,17,17,17,31,20,17,17,17,25,20,17,17,17,20,17,17,31,17,17,17,17,17,17,22,17,17,17,17,17,17,20,17,17,17,17,17,30,17,17,15,17,17,15,17,17,20,19,17,17,17,17,10,17,17,17,17,17,25,17,17,16,17,26,20,25,17,17,17,20,17,17,10,17,22,17,17,17,17,23,24,17,17,17,10,17,17,17,10,17,25,17,17,17,17,17,17,17,17,20,17,17,28,28,28,28,17,15,17,17,17,17,25,17,17,17,17,17,17,17,17,17,25,17,17,17,15,17,17,17,17,17,17,17,17,17,25,17,17,17,19,17,17,17,20,17,20,17,20,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,15,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,25,17,10,25,16,17,17,17,17,17,17,18,17,17,17,17,20,17,20,27,17,10,17,22,20,17,17,17,17,16,17,23,17,10,17,17,17,17,17,17,15,17,17,17,17,17,10,15,20,27,17,17,17,25,17,17,17,17,17,17,17,20,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,19,17,20,17,17,15,19,17,17,17,17,15,17,17,17,24,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,15,17,17,20,17,17,17,17,17,17,17,17,17,17,17,20,17,15,17,17,17,25,17,17,17,29,10,17,17,17,17,10,17,15,17,17,28,28,28,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,17,20,20,17,17,20,17,15,17,17,17,17,20,17,17,20,18,17,25,17,15,20,17,18,17,25,17,17,17,17,17,17,17,17,17,17,18,17,17,17,20,17,17,17,17,24,20,17,17,25,17,17,17,17,17,17,17,17,17,16,17,17,17,17,17,20,17,17,17,17,17,17,15,17,17,25,20,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,16,17,17,17,17,25,15,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,18,17,17,17,17,19,17,17,17,20,15,29,24,17,26,17,18,17,17,29,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,28,28,17,17,17,17,20,25,17,17,17,17,17,17,17,20,17,17,20,20,17,17,17,17,17,17,17,17,20,17,10,17,17,17,17,17,17,17,10,17,20,17,17,17,17,17,17,19,17,17,17,17,17,17,23,17,17,17,17,20,19,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,10,20,17,17,17,17,17,17,20,17,17,23,22,17,17,17,19,29,17,17,17,17,17,17,17,17,17,17,20,29,17,17,17,20,17,17,17,17,20,17,17,17,17,17,17,17,16,17,17,17,17,29,17,17,17,17,17,17,27,17,17,17,17,17,17,17,27,17,17,26,17,17,20,17,17,25,17,17,17,21,17,17,20,20,17,17,19,17,10,17,15,20,15,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,17,20,17,17,10,22,17,17,17,17,10,17,17,17,17,17,17,17,17,17,27,17,17,17,17,17,17,20,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,28,28,28,15,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,25,17,20,17,17,17,17,17,17,17,17,20,17,17,17,20,17,17,20,17,17,20,10,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,20,17,17,10,17,17,17,17,17,17,17,17,23,17,17,17,17,17,27,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,17,17,23,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,10,17,17,15,17,17,17,17,17,17,17,17,10,17,25,23,25,17,17,17,17,17,17,22,17,17,17,25,17,17,17,17,25,15,20,17,17,17,24,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,20,22,17,17,17,17,20,17,23,17,18,15,17,17,17,17,17,25,17,17,17,17,17,17,17,17,24,17,17,17,20,17,17,28,28,28,17,17,17,17,15,17,17,17,25,18,17,17,17,17,17,17,17,17,17,23,17,15,25,17,17,10,17,17,25,17,10,17,17,17,17,17,17,17,17,17,17,19,22,17,17,17,10,17,17,27,17,20,18,17,23,17,17,17,17,17,17,18,17,17,17,17,17,25,19,17,18,17,17,18,17,17,17,17,17,17,17,17,20,18,17,27,17,17,17,17,20,17,17,17,17,17,25,17,17,17,25,17,10,15,17,17,20,15,17,17,17,17,20,17,15,17,17,27,17,17,17,17,23,17,17,17,17,17,10,17,17,17,17,25,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,20,17,17,17,17,22,17,17,17,17,17,17,17,15,17,17,20,19,25,17,17,17,20,17,17,17,20,17,17,15,15,17,19,17,17,17,17,17,17,17,17,17,20,17,17,20,17,17,17,17,17,17,17,17,17,15,27,27,25,21,17,17,17,17,17,17,17,17,17,17,18,15,20,28,28,28,17,17,15,10,17,17,17,17,20,17,25,17,17,17,17,17,17,17,17,17,16,17,17,17,17,20,17,17,25,17,17,20,16,20,17,17,17,17,17,17,17,18,17,20,17,17,17,17,17,17,10,17,20,17,17,17,17,17,17,17,17,17,25,20,17,17,17,17,17,17,17,17,17,17,18,17,17,15,17,17,17,17,17,17,25,17,17,17,23,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,10,17,21,22,17,17,17,17,17,20,17,19,20,17,20,17,19,17,25,17,22,17,17,17,17,10,17,17,23,15,19,17,17,17,20,17,17,17,15,17,17,17,17,20,17,17,10,17,17,17,17,17,10,17,17,20,15,17,17,17,25,17,16,10,17,17,17,18,17,15,17,17,17,17,17,17,17,17,15,16,20,17,17,17,18,20,17,17,15,17,17,17,17,17,17,17,17,17,29,17,17,17,17,15,17,25,17,20,17,17,25,15,17,17,17,17,17,17,15,20,17,17,17,18,20,17,16,17,20,17,17,17,25,28,28,20,17,17,10,17,17,18,17,10,17,17,17,17,17,17,20,17,17,17,17,25,17,17,16,17,17,17,15,17,17,17,17,17,17,17,17,17,10,17,17,17,17,30,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,25,17,10,16,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,25,17,17,17,17,15,17,17,17,27,17,17,17,22,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,15,17,20,17,22,17,17,17,17,17,17,17,17,20,17,20,17,22,17,17,17,17,17,17,20,17,17,17,20,17,17,20,15,19,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,25,17,17,20,15,17,17,17,17,20,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,29,17,17,17,25,17,17,17,18,17,17,17,17,17,17,20,17,17,17,15,17,17,20,17,28,28,28,20,17,17,17,17,17,17,17,17,17,16,17,17,20,17,20,20,21,17,17,17,27,20,17,17,17,19,17,17,17,17,20,17,17,17,17,19,17,19,20,17,17,17,17,17,17,17,17,17,29,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,10,17,17,17,17,17,17,17,22,17,17,23,17,17,17,17,15,17,17,17,17,17,20,17,17,17,17,17,15,17,15,19,17,17,17,17,20,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,20,16,17,17,17,17,17,17,25,20,17,21,17,17,17,17,17,17,17,17,15,17,16,17,25,17,17,17,17,10,15,17,17,17,17,17,17,17,17,17,17,17,27,17,20,17,31,17,17,20,17,17,17,17,17,17,17,17,17,17,17,28,28,28,17,17,17,17,17,17,17,28,17,30,17,17,17,17,17,22,20,17,17,17,17,17,17,17,17,17,23,17,25,21,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,23,17,17,16,17,17,17,17,17,17,17,10,17,17,28,17,17,17,16,17,17,20,17,17,17,17,17,16,25,17,25,17,17,17,17,17,20,27,10,17,17,17,17,17,20,17,17,17,27,17,16,20,17,23,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,23,17,17,17,22,17,29,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,17,19,17,17,17,17,17,17,17,17,17,10,20,17,17,17,17,17,17,17,17,17,17,10,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,10,20,17,17,17,17,17,17,18,17,17,27,15,17,17,17,17,15,20,17,17,17,17,17,17,23,17,17,25,17,23,17,17,17,17,17,20,16,17,10,17,17,19,17,17,17,17,17,15,20,17,17,15,17,17,17,17,17,28,28,28,17,17,17,10,17,17,10,20,20,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,23,17,17,17,23,27,29,17,17,17,17,17,17,17,17,17,26,17,17,17,17,17,20,10,15,17,17,19,17,20,18,17,17,17,17,17,17,17,17,17,17,15,17,23,17,15,20,17,17,17,19,17,17,17,10,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,15,25,20,25,17,17,17,17,17,20,17,17,20,17,17,17,27,20,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,20,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,22,17,17,17,17,17,10,23,18,17,16,17,17,17,17,17,20,17,29,17,17,17,20,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,28,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,18,28,28,28,17,17,17,15,15,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,17,17,17,17,29,17,17,17,20,17,10,20,17,17,17,17,20,17,17,20,17,10,16,17,17,17,17,17,20,17,17,17,17,17,17,19,17,17,17,29,17,17,17,17,17,17,17,29,17,17,15,17,17,17,18,17,20,17,17,17,17,20,17,17,25,17,17,20,17,17,20,23,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,23,17,17,17,17,25,17,16,17,17,25,17,18,17,20,17,17,23,17,17,17,17,17,20,20,17,17,17,17,17,10,17,10,17,17,17,17,18,17,17,17,25,17,17,17,17,20,17,18,17,17,17,17,17,17,17,20,17,17,17,10,20,20,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,18,17,17,17,17,20,20,17,17,17,17,17,17,17,17,25,25,17,17,20,17,17,17,17,17,17,19,20,17,17,28,28,17,17,17,17,17,10,17,15,17,17,17,17,17,17,17,10,21,17,17,19,20,17,17,17,17,17,17,22,17,20,25,22,17,17,17,17,17,20,16,17,17,22,17,17,17,20,17,17,17,19,17,17,20,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,20,17,17,17,17,18,17,29,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,10,17,17,17,17,25,17,25,17,17,29,17,17,20,17,17,17,15,17,17,17,17,17,17,17,17,27,20,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,16,17,20,17,17,17,17,17,17,17,22,18,17,17,27,25,15,17,25,17,25,25,17,17,20,17,17,17,17,17,17,19,21,17,25,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,15,19,17,16,17,17,17,10,25,17,17,28,28,17,17,17,17,17,17,15,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,17,20,17,17,20,17,17,17,17,17,20,17,17,17,17,17,17,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,15,20,19,17,17,17,17,17,17,17,15,17,17,17,17,17,20,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,15,17,17,17,16,17,17,17,17,17,27,20,17,17,17,17,18,17,17,17,17,26,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,17,17,21,17,17,17,10,17,17,17,17,17,17,20,17,17,17,17,17,17,17,15,17,17,17,15,17,17,17,15,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,10,17,17,17,17,16,17,20,17,25,17,17,17,17,17,17,17,17,17,21,17,23,17,17,17,17,17,17,17,16,17,17,17,17,17,20,17,17,17,17,17,28,28,17,10,17,20,17,17,17,17,17,22,17,18,17,17,17,17,25,17,17,17,17,17,17,17,17,23,17,17,17,25,17,17,17,18,17,17,17,17,17,17,17,23,23,17,17,17,17,17,17,19,17,17,29,10,17,15,17,17,17,17,17,10,17,27,17,20,17,17,17,10,17,17,17,17,10,17,17,17,15,23,17,16,17,17,18,17,17,19,17,17,17,17,17,17,17,17,17,23,17,17,17,17,15,20,25,17,17,17,17,17,17,17,17,17,17,17,17,25,17,20,20,20,17,15,17,23,17,17,17,17,20,17,17,20,17,17,17,17,17,20,20,17,15,18,20,17,17,17,17,17,17,17,16,17,17,20,17,17,17,17,20,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,20,17,20,17,17,25,17,17,20,17,17,17,17,15,17,17,17,17,17,18,17,17,20,17,28,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,19,17,17,18,17,17,29,10,28,28,23,23,17,17,17,17,17,17,23,17,17,17,17,20,17,15,17,17,17,17,19,25,17,22,25,10,17,17,17,23,23,15,23,25,17,17,25,17,17,17,25,20,17,17,17,17,20,17,17,17,20,17,17,17,17,17,17,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,25,20,17,17,10,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,10,17,17,15,17,10,23,16,17,17,17,17,17,17,17,27,17,23,17,25,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,10,17,17,17,17,17,17,17,25,20,17,17,17,17,20,17,17,17,17,17,17,20,10,17,20,35,36],"timeDeltas":[31708,125,0,42,41,42,42,41,42,0,42,0,0,41,0,84,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,84,0,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,0,42,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,83,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,0,41,0,42,42,41,42,0,0,42,41,0,42,42,41,0,84,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,42,41,0,0,42,42,41,0,84,0,41,0,42,42,41,42,0,42,41,84,41,42,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,83,0,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,84,0,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,83,0,42,0,41,42,0,42,41,42,42,41,42,83,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,83,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,83,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,84,0,41,0,42,42,0,41,42,0,83,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,84,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,83,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,84,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,83,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,84,0,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,42,41,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,83,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,125,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42]} \ No newline at end of file diff --git a/bench-humanize-2024-11-24_12-17-49.cpuprofile b/bench-humanize-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..4a56cde --- /dev/null +++ b/bench-humanize-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,10,11,23,25,28]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":1,"children":[3],"positionTicks":[{"line":337,"ticks":1}]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[8]},{"id":8,"callFrame":{"functionName":"","scriptId":"258","url":"node:inspector","lineNumber":62,"columnNumber":38},"hitCount":0,"children":[9]},{"id":9,"callFrame":{"functionName":"#onMessage","scriptId":"258","url":"node:inspector","lineNumber":80,"columnNumber":12},"hitCount":1,"positionTicks":[{"line":82,"ticks":1}]},{"id":10,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":311},{"id":11,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":348,"children":[12,27],"positionTicks":[{"line":297,"ticks":3},{"line":327,"ticks":17},{"line":316,"ticks":180},{"line":312,"ticks":1},{"line":323,"ticks":11},{"line":315,"ticks":80},{"line":314,"ticks":38},{"line":292,"ticks":18}]},{"id":12,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":482,"children":[13,15],"positionTicks":[{"line":304,"ticks":1},{"line":137,"ticks":1},{"line":537,"ticks":9},{"line":138,"ticks":4},{"line":309,"ticks":150},{"line":539,"ticks":1},{"line":308,"ticks":11},{"line":530,"ticks":31},{"line":139,"ticks":19},{"line":250,"ticks":37},{"line":302,"ticks":11},{"line":531,"ticks":2},{"line":301,"ticks":79},{"line":311,"ticks":126}]},{"id":13,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2521},"hitCount":201,"children":[14,21],"positionTicks":[{"line":2,"ticks":201}]},{"id":14,"callFrame":{"functionName":"humanize","scriptId":"269","url":"file:///Users/airhorns/Code/superflected/src/humanize.ts","lineNumber":1,"columnNumber":937},"hitCount":9825,"children":[18,22],"positionTicks":[{"line":2,"ticks":9825}]},{"id":18,"callFrame":{"functionName":"","scriptId":"269","url":"file:///Users/airhorns/Code/superflected/src/humanize.ts","lineNumber":1,"columnNumber":1518},"hitCount":1325,"positionTicks":[{"line":2,"ticks":1325}]},{"id":22,"callFrame":{"functionName":"","scriptId":"269","url":"file:///Users/airhorns/Code/superflected/src/humanize.ts","lineNumber":1,"columnNumber":1665},"hitCount":272,"positionTicks":[{"line":2,"ticks":272}]},{"id":21,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":7,"children":[26],"positionTicks":[{"line":2,"ticks":7}]},{"id":26,"callFrame":{"functionName":"humanize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":979},"hitCount":8,"positionTicks":[{"line":2,"ticks":8}]},{"id":15,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":173,"children":[16,24],"positionTicks":[{"line":250,"ticks":173}]},{"id":16,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":144,"children":[17,19],"positionTicks":[{"line":139,"ticks":144}]},{"id":17,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1001,"positionTicks":[{"line":139,"ticks":1001}]},{"id":19,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":36,"children":[20],"positionTicks":[{"line":537,"ticks":36}]},{"id":20,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":87,"positionTicks":[{"line":530,"ticks":87}]},{"id":24,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":70,"positionTicks":[{"line":668,"ticks":3},{"line":662,"ticks":4},{"line":670,"ticks":5},{"line":665,"ticks":10},{"line":666,"ticks":15},{"line":661,"ticks":20},{"line":669,"ticks":13}]},{"id":27,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2521},"hitCount":3,"positionTicks":[{"line":2,"ticks":3}]},{"id":23,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":301},{"id":25,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":18,"positionTicks":[{"line":301,"ticks":18}]},{"id":28,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[29]},{"id":29,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[30]},{"id":30,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[31]},{"id":31,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[32]},{"id":32,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1,"positionTicks":[{"line":136,"ticks":1}]}],"startTime":293069773501,"endTime":293070452626,"samples":[7,9,10,2,11,14,17,14,14,18,14,17,20,18,14,14,14,14,18,14,14,21,14,14,14,14,22,13,13,14,14,23,23,23,23,23,23,23,14,18,18,14,14,14,14,18,14,14,13,14,14,14,14,14,14,14,14,14,17,14,22,14,14,14,14,18,11,14,14,14,18,14,14,18,17,20,18,14,14,14,23,14,14,22,14,14,14,17,14,14,14,18,14,14,11,17,18,17,14,18,23,14,24,18,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,14,18,14,17,14,18,14,12,14,14,14,14,14,18,14,14,23,14,14,14,17,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,24,14,14,15,14,14,14,14,17,22,14,14,14,14,14,14,12,14,14,14,14,12,14,11,14,14,14,14,14,14,12,14,18,14,14,14,14,14,20,18,14,14,14,14,18,18,14,14,11,14,15,14,14,14,14,20,14,14,11,14,14,12,18,14,12,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,22,13,14,14,14,14,14,12,23,14,14,14,18,22,12,18,14,12,14,14,14,14,14,14,14,14,14,14,14,18,13,14,14,16,18,22,14,14,17,14,14,14,14,11,14,12,24,14,14,14,14,18,14,14,14,14,20,14,14,14,14,11,14,17,14,18,14,14,14,13,14,14,14,17,14,14,17,14,17,14,14,12,14,14,14,14,12,14,14,23,14,14,18,18,18,14,15,22,14,18,14,14,14,17,14,16,14,14,14,14,14,14,12,18,14,12,14,11,22,24,18,14,14,14,18,18,14,14,14,14,16,12,14,14,14,24,14,14,14,15,14,14,11,14,18,14,14,14,14,10,10,10,10,10,10,10,10,10,18,14,14,14,14,14,14,14,14,14,24,14,11,17,14,22,14,14,14,14,14,18,14,14,14,14,11,14,14,18,14,14,11,14,14,21,14,17,22,22,18,14,14,14,14,18,14,14,14,14,18,11,14,14,14,14,14,18,18,18,14,14,14,14,14,23,14,14,11,14,14,14,18,14,14,14,14,11,14,18,14,18,14,18,14,18,17,14,14,14,24,14,14,14,10,18,15,18,14,11,14,17,14,14,14,14,14,17,17,14,12,14,14,14,14,22,14,14,18,14,18,14,14,14,14,14,13,14,14,18,20,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,17,12,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,14,14,18,14,14,14,14,11,18,14,14,14,23,14,13,18,14,14,14,10,14,14,14,19,17,14,16,16,12,18,14,17,14,14,14,14,17,14,14,14,17,14,11,17,14,14,14,14,18,18,14,14,14,17,14,18,18,14,14,22,14,14,14,14,14,20,14,12,22,17,14,18,14,14,17,14,14,14,18,12,12,14,14,14,14,14,14,14,14,14,14,19,18,16,14,14,14,14,14,14,14,11,14,14,14,14,14,14,11,14,14,14,14,14,18,11,14,14,14,14,24,14,18,14,12,18,14,18,14,24,14,14,18,14,14,14,14,11,14,17,14,14,14,18,14,14,14,14,18,14,14,14,14,14,14,14,14,14,14,14,14,18,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,11,18,14,17,14,18,17,10,10,14,14,12,14,14,14,14,25,14,14,14,22,14,14,11,18,19,18,12,14,14,14,14,14,14,14,22,14,14,14,14,20,14,17,14,14,18,14,16,14,14,14,14,14,14,14,14,14,14,14,18,22,14,14,15,24,13,14,14,13,14,14,14,14,14,17,14,14,13,14,14,14,14,18,14,14,14,18,14,14,14,14,22,14,14,12,13,11,14,14,14,14,17,14,14,14,14,18,14,14,14,14,14,14,14,14,12,14,18,17,17,12,18,14,14,14,14,14,14,14,14,14,17,14,14,14,12,14,12,14,14,14,14,18,18,18,14,14,12,14,22,18,14,18,14,18,14,14,14,10,10,10,10,10,10,14,14,14,14,14,14,14,17,17,14,14,14,14,17,10,14,14,14,13,14,14,14,14,14,14,14,17,14,14,17,14,14,14,14,14,14,17,12,14,18,14,14,26,18,14,14,12,18,14,14,14,14,11,14,22,18,14,14,22,14,14,14,22,15,14,14,14,18,14,14,14,16,14,14,14,14,14,14,14,23,14,14,14,14,18,18,14,14,14,18,14,14,14,17,14,14,13,18,14,17,14,14,14,17,14,17,14,14,14,14,14,14,14,14,14,14,14,15,14,14,14,14,12,14,12,18,14,12,14,14,14,14,14,14,18,17,18,14,14,18,14,18,14,14,19,14,14,14,14,12,18,14,14,14,17,14,22,12,22,14,14,16,14,14,18,14,14,14,14,14,14,12,18,14,14,14,14,22,14,22,14,14,11,14,13,14,14,14,11,14,14,14,14,13,14,14,14,14,14,14,14,23,17,14,14,14,22,14,18,14,14,14,14,14,14,14,14,14,18,14,14,14,14,14,18,14,15,14,14,14,14,16,14,14,14,14,13,14,14,14,14,14,17,17,14,18,17,14,18,14,14,18,14,14,14,14,14,14,18,14,14,14,14,18,14,14,16,16,23,14,18,14,14,14,14,14,14,14,14,18,17,14,14,14,14,15,17,14,22,14,11,14,13,18,14,14,23,12,14,16,14,14,14,15,14,14,18,14,17,14,14,14,14,14,14,14,14,18,14,14,23,14,14,14,14,14,14,18,14,15,22,23,14,14,18,14,14,14,14,14,12,14,23,14,14,14,16,14,10,10,10,10,10,10,14,14,18,14,14,18,14,16,14,14,14,14,14,14,14,22,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,17,14,14,14,17,14,14,14,14,23,14,20,14,18,14,14,14,14,18,23,14,14,14,14,12,18,14,18,17,14,14,14,14,13,14,14,14,14,14,14,14,14,18,14,18,14,11,14,14,18,14,17,14,14,14,14,22,14,14,23,14,17,14,14,14,14,13,14,23,14,14,14,14,14,17,17,14,14,14,14,17,14,14,13,14,17,16,15,18,18,14,14,14,14,14,14,14,14,14,14,17,14,14,17,14,12,12,12,14,14,17,14,14,14,16,14,18,14,14,17,14,14,14,14,23,14,14,11,14,14,15,18,17,14,14,19,14,14,14,14,14,11,22,17,14,14,14,11,12,17,14,14,14,14,14,16,23,14,18,13,14,18,17,14,14,22,14,18,14,14,17,14,14,11,11,22,14,14,14,14,19,14,14,14,14,18,14,12,14,14,14,14,14,14,14,14,23,14,12,18,14,14,14,18,14,18,18,14,13,14,12,14,18,17,14,14,14,12,13,20,14,14,14,17,13,16,11,14,24,18,14,14,14,14,14,14,14,14,10,10,10,10,10,10,10,10,10,17,14,14,14,14,15,14,14,14,11,14,14,14,14,17,14,14,18,14,17,14,12,14,14,14,14,14,14,14,18,14,14,14,14,14,14,13,14,14,18,14,14,13,18,14,12,14,14,17,14,14,14,14,14,14,23,15,14,14,14,15,14,14,14,17,14,14,14,14,14,12,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,11,14,14,14,14,14,14,14,14,14,12,14,14,14,14,13,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,14,14,14,14,14,23,23,14,14,15,14,14,22,11,14,14,14,14,14,14,13,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,18,14,11,14,14,23,14,12,14,14,14,14,14,14,19,18,11,14,14,14,11,14,14,18,18,14,14,12,14,14,14,14,14,14,14,22,14,14,14,13,14,14,14,14,14,11,14,14,14,18,14,18,14,14,14,17,24,14,14,18,14,14,14,12,14,14,14,14,14,14,14,23,14,14,14,14,14,17,14,14,16,14,14,18,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,18,24,14,14,14,11,14,14,23,14,14,11,14,17,13,14,14,14,18,22,14,14,14,14,14,14,15,14,14,17,14,14,17,14,14,14,14,14,14,14,14,14,14,18,18,27,14,14,14,14,14,18,17,14,14,14,13,10,10,14,13,14,14,14,14,14,14,14,14,14,14,11,18,14,14,14,14,14,14,18,18,14,14,14,14,18,14,13,14,14,18,16,14,14,14,14,12,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,18,23,14,17,14,18,14,14,14,14,14,14,18,14,14,22,14,14,12,14,14,14,21,17,14,14,14,14,18,12,14,14,18,14,17,14,18,14,17,17,17,14,14,18,14,17,14,14,14,14,14,14,14,14,14,17,23,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,13,14,14,14,14,14,22,14,14,14,14,14,14,17,23,14,14,14,18,14,14,14,14,22,12,14,23,18,14,14,14,14,14,12,14,23,14,14,14,14,14,14,17,14,14,12,12,14,14,14,23,17,14,17,14,23,17,14,14,22,14,14,14,16,14,16,14,14,18,14,14,18,14,18,14,22,14,14,23,13,14,15,14,11,14,14,14,14,17,14,14,13,14,14,13,14,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,22,11,14,17,14,14,14,14,14,14,17,19,14,24,11,14,23,14,14,12,23,14,14,14,14,14,14,17,14,18,23,22,14,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,14,14,17,14,18,14,12,17,14,18,17,14,14,14,18,14,14,10,10,10,10,10,10,10,10,14,18,13,14,18,22,14,15,14,18,11,14,14,11,18,14,14,14,14,14,23,11,22,14,14,12,14,15,14,14,14,14,18,14,23,14,14,14,14,18,14,14,14,14,14,18,14,14,14,18,14,14,14,14,14,14,20,14,14,14,14,17,14,14,14,14,14,17,23,14,14,23,14,18,14,14,14,12,14,14,14,14,17,19,14,14,14,22,18,14,18,14,14,14,20,14,14,14,13,23,12,14,18,14,14,14,12,12,12,12,14,14,14,14,14,14,17,14,18,14,14,14,14,10,14,14,14,14,14,15,14,14,17,14,14,14,14,15,14,14,14,17,14,17,14,12,14,14,14,14,14,18,14,14,14,14,22,11,14,14,14,18,14,20,22,13,14,12,18,14,14,14,14,14,23,14,14,14,14,14,14,14,14,14,14,22,14,14,14,23,14,22,17,14,14,18,14,17,14,24,14,14,14,18,11,12,14,14,17,18,22,14,24,14,14,14,18,16,14,14,14,17,14,14,14,14,18,14,17,18,14,14,14,14,12,14,12,22,18,14,17,14,14,14,14,14,14,14,17,14,14,11,14,18,14,14,14,13,14,14,14,14,14,14,14,14,14,14,12,24,14,14,14,14,11,18,14,14,14,14,14,23,23,14,10,10,10,10,10,14,14,14,14,14,14,11,12,17,17,14,14,11,14,14,14,14,14,11,14,14,17,17,17,14,14,14,14,17,14,14,14,17,18,14,14,12,14,14,14,14,12,14,14,14,14,14,14,14,14,17,14,18,12,14,14,18,14,14,12,14,14,14,14,14,18,14,16,15,14,17,14,17,14,14,14,13,17,14,14,14,14,14,14,14,14,18,12,17,13,18,14,14,14,14,14,12,16,14,13,17,17,14,14,17,24,22,17,20,14,17,14,14,14,14,14,17,17,16,14,12,18,14,23,13,14,14,14,14,14,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,22,11,14,14,14,14,14,14,15,14,17,14,18,14,17,14,14,17,14,14,14,14,14,17,17,14,15,17,14,14,14,17,14,14,14,14,14,18,17,14,11,14,14,17,18,18,14,14,14,17,18,14,22,14,14,14,18,16,14,24,17,14,14,14,14,14,17,14,17,15,14,14,14,14,14,14,17,14,13,22,18,14,14,18,20,17,14,18,14,14,14,17,14,14,12,17,14,14,20,11,14,17,14,10,10,10,10,14,17,17,18,14,14,18,14,14,22,23,13,14,22,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,17,14,18,14,14,14,14,17,14,14,13,14,14,14,11,14,13,14,14,14,14,17,14,13,14,12,14,18,14,14,14,14,17,14,22,23,17,14,20,12,14,14,17,14,17,14,18,14,18,19,14,14,14,17,18,14,14,14,14,17,14,14,14,14,14,14,14,22,11,14,14,14,14,14,17,14,14,14,14,19,14,14,14,14,12,23,12,14,14,18,14,14,14,17,14,11,22,14,14,14,14,17,17,13,17,14,14,14,18,14,14,18,14,23,22,14,14,14,14,14,18,17,14,14,12,14,23,14,14,17,14,14,22,18,18,14,17,17,25,11,14,17,18,18,14,14,14,14,22,14,17,17,15,12,17,14,17,14,14,17,14,14,14,14,17,14,14,14,14,14,14,14,15,23,14,14,14,14,23,14,14,14,18,14,18,14,14,22,14,14,14,14,14,17,14,14,15,14,14,14,11,14,10,10,10,10,17,14,14,12,16,14,14,14,14,14,14,14,14,14,14,15,14,18,18,14,14,14,18,14,14,13,23,17,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,13,14,14,14,18,14,14,12,16,14,14,14,14,14,12,14,14,14,16,14,18,14,22,14,20,14,14,14,23,14,14,14,14,17,14,14,14,18,14,14,14,14,14,14,14,14,14,14,14,18,14,22,18,18,14,14,18,14,14,14,15,14,14,22,18,18,14,14,14,14,17,14,14,14,14,14,11,14,14,14,18,14,14,14,14,14,14,14,14,22,14,14,14,14,17,14,14,14,14,14,14,18,14,14,14,23,14,14,17,18,18,14,14,14,11,14,14,14,14,18,14,14,14,14,14,17,17,14,17,17,14,18,17,18,16,14,18,14,18,14,16,14,14,16,14,14,12,14,14,14,17,14,17,14,18,14,18,14,23,14,14,14,14,18,14,18,14,24,14,14,12,20,14,14,14,10,10,10,10,14,14,14,18,22,14,17,14,15,14,11,14,14,17,14,17,23,14,14,14,23,17,14,14,11,14,14,14,11,14,14,18,13,14,14,12,11,14,14,14,14,14,14,11,14,14,22,14,14,14,14,15,17,14,14,14,14,14,14,14,14,14,14,14,14,14,23,14,14,14,14,15,14,10,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,17,15,14,14,18,14,15,17,14,18,18,14,12,12,12,12,12,12,14,14,11,14,18,13,12,18,14,14,14,14,14,14,14,14,15,14,11,11,16,14,14,14,14,14,14,15,14,14,12,14,14,17,18,18,14,14,14,14,14,14,14,14,14,12,14,14,14,22,14,14,22,14,14,14,18,14,14,14,14,14,14,24,14,14,14,17,14,14,14,14,14,18,18,14,14,22,23,16,14,14,14,14,14,14,14,14,18,14,17,14,14,10,14,14,14,14,18,18,18,14,11,11,13,17,14,14,17,14,14,18,18,14,14,22,14,14,17,14,14,12,14,14,14,23,14,14,14,14,22,14,14,14,14,14,12,14,17,23,14,18,14,14,14,22,17,14,14,14,14,12,14,12,10,10,10,10,10,23,18,11,14,14,14,18,14,14,14,12,15,14,14,18,14,14,14,14,11,14,12,18,14,14,22,14,14,20,11,14,11,14,18,14,14,14,18,14,14,14,12,18,14,14,14,14,12,14,14,14,18,18,14,14,14,14,14,14,14,14,14,13,14,18,14,17,12,14,14,23,14,14,14,14,14,14,14,17,14,17,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,11,14,18,14,23,14,14,14,14,14,14,14,14,17,22,18,14,14,13,18,17,17,18,17,14,14,14,17,14,14,14,14,14,14,14,18,14,18,18,18,14,14,24,13,14,14,14,14,18,14,14,18,25,14,14,14,14,17,14,14,14,14,14,14,14,18,14,22,14,14,17,14,23,14,14,17,14,14,14,14,14,14,15,17,14,12,17,18,14,14,18,14,14,14,14,14,14,14,12,14,14,14,18,25,14,13,14,14,22,14,15,18,14,14,14,14,14,14,14,14,14,14,14,12,23,14,14,20,14,14,14,14,14,14,17,14,14,14,18,12,14,14,14,18,14,12,14,14,14,14,14,14,14,14,14,14,14,11,15,14,14,14,14,14,14,14,14,18,18,18,14,14,12,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,12,14,17,14,14,14,14,14,14,20,14,14,14,14,14,14,14,14,17,14,14,14,14,18,14,14,14,19,14,14,14,14,14,14,14,10,10,10,10,10,10,10,10,10,10,14,14,14,12,13,18,18,14,14,14,23,14,14,14,14,14,14,14,24,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,18,14,14,14,14,14,14,22,22,24,14,14,20,14,19,14,18,14,14,17,18,14,14,14,14,12,22,13,12,14,14,13,14,14,14,24,14,12,14,14,14,14,14,14,17,14,14,17,14,17,17,23,14,14,17,18,17,17,14,18,14,18,14,14,14,17,14,14,17,14,12,12,14,18,14,15,14,17,14,14,14,14,23,14,14,18,14,17,14,17,14,14,17,14,14,14,18,14,14,17,17,22,14,14,14,14,14,14,17,14,17,14,14,14,14,14,17,14,14,14,14,18,17,14,18,14,14,14,14,17,12,18,14,11,14,14,14,14,14,14,14,11,14,14,14,18,18,14,17,14,12,12,12,14,17,12,13,14,14,22,18,14,18,14,14,14,14,11,14,23,18,13,17,14,14,14,17,14,14,14,18,14,14,14,17,17,14,14,17,14,14,14,14,18,14,14,14,24,14,14,18,14,14,15,14,18,14,14,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,18,14,14,14,14,14,14,18,14,18,14,14,14,14,14,14,14,12,14,14,14,14,14,17,14,14,14,18,14,20,10,10,10,10,10,14,14,14,12,14,14,12,14,14,14,14,11,14,14,14,14,14,13,17,23,23,17,14,14,23,14,14,17,14,14,14,18,18,14,14,14,18,14,18,14,17,14,14,14,14,14,14,17,18,14,18,14,14,14,17,17,18,14,14,17,14,22,16,12,18,18,15,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,18,14,15,17,14,11,18,14,14,14,12,11,14,14,14,19,18,14,14,14,18,17,14,14,14,14,14,14,14,14,14,23,23,14,14,17,14,14,14,17,14,18,14,14,14,14,14,14,14,12,14,17,14,14,14,14,15,17,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,15,18,23,11,24,23,12,14,11,14,14,22,14,14,14,12,26,15,11,14,14,14,17,14,14,14,14,14,14,14,23,14,14,14,14,14,14,14,14,17,17,11,14,14,14,14,14,14,14,18,18,14,18,18,22,13,19,18,14,18,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,18,14,14,14,14,14,11,14,15,14,14,14,14,14,14,14,14,14,14,23,22,14,14,14,14,14,20,14,14,14,19,14,13,14,12,14,14,22,13,14,14,14,17,12,14,14,14,12,18,15,14,14,14,22,14,18,14,12,18,14,14,14,14,14,18,14,14,14,18,14,18,14,12,14,14,18,17,18,14,14,14,14,14,24,10,10,10,10,10,10,10,10,10,14,14,14,14,12,14,11,23,14,14,22,14,11,14,14,14,23,17,14,14,14,18,14,14,14,14,14,15,12,14,17,14,14,14,13,14,14,14,14,14,14,14,14,20,11,14,14,14,14,14,14,14,14,14,14,14,18,14,18,14,14,17,14,14,22,14,19,14,14,14,14,14,14,14,14,14,14,22,20,14,14,14,17,18,14,14,14,17,14,14,14,14,20,14,14,14,14,14,11,14,14,14,14,14,14,10,14,12,14,14,14,14,14,14,19,14,14,14,14,14,14,14,20,14,14,14,14,15,14,14,15,18,10,10,10,10,10,10,10,10,10,10,10,10,10,10,14,11,14,14,14,14,14,17,14,14,14,14,14,14,17,14,14,18,12,14,14,14,18,14,14,14,20,17,14,14,14,14,14,14,18,14,14,14,14,14,14,12,14,14,22,14,24,14,14,14,11,14,14,14,14,14,14,14,14,11,18,14,14,14,14,14,14,14,14,18,14,14,14,17,14,14,17,19,14,14,14,12,14,14,14,18,14,17,14,14,14,14,14,14,14,14,14,14,18,14,18,14,14,14,18,14,14,18,18,14,14,11,14,14,14,14,14,14,14,14,21,14,14,18,18,12,14,14,14,14,18,14,14,14,12,14,14,12,14,14,19,18,14,14,14,14,14,19,11,12,14,14,14,14,11,14,14,14,14,14,12,14,17,14,18,24,12,14,22,14,11,12,14,14,14,22,24,17,17,14,14,14,14,14,14,14,18,15,17,14,14,11,18,14,14,14,14,17,20,14,14,14,14,14,14,14,18,14,10,10,10,10,10,10,10,10,10,10,10,10,10,10,14,14,14,14,14,14,14,17,14,17,14,14,14,14,18,17,14,18,14,18,17,14,14,14,14,13,13,14,14,14,14,14,11,14,14,14,14,18,14,14,15,11,14,14,22,14,14,14,14,14,14,14,14,14,14,17,14,18,14,14,22,14,14,14,14,14,14,14,14,14,17,14,14,18,18,14,14,14,17,14,14,14,14,14,14,11,18,14,14,14,14,18,14,14,14,14,14,22,14,14,14,14,14,14,14,14,11,14,14,14,15,24,12,14,14,14,14,14,15,14,18,22,14,14,17,12,14,14,14,14,14,14,14,14,14,14,18,14,14,14,12,14,14,14,14,14,14,14,23,14,14,14,19,14,13,14,14,18,14,22,11,18,13,20,14,16,14,14,14,14,14,17,13,12,14,14,18,13,18,14,14,16,14,14,12,11,23,18,14,14,14,14,14,14,14,14,15,14,14,14,14,14,14,18,17,14,19,14,10,18,14,14,18,14,14,17,14,14,18,14,14,14,17,14,14,14,18,22,14,18,14,14,14,14,14,12,23,12,12,12,12,12,12,12,12,14,14,14,14,14,14,16,14,14,14,17,14,14,13,14,18,14,14,18,14,14,14,14,14,14,14,14,18,14,18,18,14,20,15,14,14,14,14,14,14,14,14,18,14,18,14,14,14,13,18,14,17,14,14,14,17,18,17,17,14,18,17,23,13,14,14,14,14,11,14,14,14,18,14,14,14,18,11,14,14,14,14,14,14,14,18,22,23,18,14,14,18,23,18,14,14,14,14,14,14,14,18,18,14,14,14,14,14,17,14,14,18,18,14,17,14,22,18,11,10,10,10,10,10,10,10,10,14,14,14,14,14,14,11,14,23,14,13,14,23,11,14,23,14,17,14,14,23,14,15,14,14,11,14,14,14,17,14,13,17,16,18,17,14,18,11,14,14,14,14,14,14,14,14,14,14,14,18,14,12,14,14,14,14,18,12,13,14,14,14,14,14,14,14,14,18,12,14,11,23,18,14,18,14,18,14,14,14,14,19,14,13,14,14,14,14,14,14,14,18,14,14,14,14,11,14,14,14,14,14,14,14,14,12,17,17,14,14,17,16,14,14,22,17,17,18,14,11,14,14,14,14,14,14,16,14,14,14,14,14,15,14,14,14,14,15,14,10,23,18,17,17,14,17,15,14,14,14,11,13,14,14,14,14,17,14,17,23,14,14,24,14,14,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,18,14,14,11,23,14,14,14,14,14,14,14,14,14,20,11,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,13,14,17,14,14,17,15,17,14,17,14,17,14,14,24,18,14,14,14,14,18,14,14,14,14,14,14,17,10,10,10,10,10,10,10,10,23,14,14,13,14,14,14,14,14,18,11,14,20,20,14,18,14,14,14,18,14,14,14,23,14,18,23,18,14,14,14,14,14,14,18,12,14,14,14,14,14,14,20,14,18,22,14,14,14,14,14,14,14,14,14,17,14,14,14,18,13,14,18,17,23,14,14,17,18,14,22,17,14,18,17,14,13,17,14,14,14,14,18,15,16,14,14,22,22,17,14,13,14,14,14,17,17,14,14,14,14,14,14,14,14,14,22,14,14,14,14,18,18,14,17,18,14,14,14,18,14,14,14,18,14,14,14,23,14,14,14,14,14,14,14,17,14,15,14,17,14,22,14,14,14,14,14,14,14,14,14,22,18,14,12,14,18,20,14,14,14,14,14,14,12,14,12,14,14,14,14,14,20,14,14,14,14,14,14,14,14,14,14,14,17,22,14,14,14,12,14,14,16,14,14,14,14,22,14,22,14,14,14,14,14,14,19,11,14,18,14,14,12,17,14,14,20,14,14,18,14,17,16,14,14,23,20,14,14,14,14,15,14,14,18,14,14,19,14,14,18,14,14,11,18,14,14,18,14,18,14,14,14,23,18,14,14,14,18,14,14,14,14,18,12,14,14,14,14,14,17,14,13,14,18,18,14,14,14,14,10,10,10,10,10,10,14,14,14,14,14,23,23,14,14,14,18,14,18,14,22,14,14,14,14,14,14,12,23,14,18,14,14,14,14,14,14,23,17,14,18,14,14,14,14,23,14,18,14,14,13,14,14,18,17,14,14,23,14,14,14,14,11,14,14,14,14,15,14,14,14,14,14,14,13,14,14,22,14,14,14,20,14,14,14,14,14,14,14,18,14,14,14,14,18,14,14,14,14,13,14,14,14,14,14,16,14,17,14,17,14,14,10,14,17,14,14,14,14,12,14,18,14,14,18,17,14,17,14,14,18,17,17,11,14,14,14,15,23,17,22,18,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,18,14,14,12,14,14,14,23,18,14,14,14,11,17,18,18,12,14,15,14,17,23,17,13,15,14,14,14,14,14,11,14,14,14,14,14,14,14,14,18,18,14,14,14,12,18,14,14,16,14,14,14,14,14,14,14,14,14,18,14,14,11,14,18,14,14,14,14,14,24,14,14,14,22,14,14,14,14,14,14,14,14,14,14,14,14,23,14,14,14,18,14,10,14,14,14,22,17,18,11,14,14,18,14,14,14,14,14,14,14,14,13,14,14,18,14,17,14,18,14,14,18,15,14,14,16,14,14,14,14,14,15,18,11,14,14,14,14,23,14,23,14,14,16,14,14,14,14,14,12,14,18,14,14,18,13,23,14,14,22,14,14,12,14,14,14,14,14,14,14,14,16,14,14,10,10,10,10,10,14,14,18,14,14,12,17,14,14,23,14,11,14,14,12,14,23,14,14,14,18,12,14,14,14,14,14,14,14,14,14,11,14,17,14,17,14,14,14,18,14,17,14,14,14,14,14,23,13,14,18,18,14,22,14,14,12,14,12,14,14,14,14,14,14,14,18,18,14,14,14,14,14,14,14,14,12,14,14,14,14,14,18,14,14,14,13,18,14,14,14,14,14,14,14,14,11,20,14,17,14,14,17,14,14,14,14,18,14,12,14,14,14,23,18,14,14,14,14,17,14,14,18,18,14,14,14,18,14,14,14,14,14,14,22,14,14,14,17,14,14,14,14,18,14,22,14,14,14,14,14,14,14,18,14,14,14,14,14,18,14,14,14,14,14,18,14,12,14,14,14,14,14,18,11,14,11,14,14,22,14,14,14,14,14,14,14,14,14,16,14,14,14,20,11,14,14,14,14,14,14,14,14,18,14,14,12,14,16,11,17,17,17,17,17,17,14,14,14,14,14,14,14,11,18,14,14,14,14,14,14,17,14,14,23,14,11,14,14,14,14,14,14,22,17,14,14,14,14,14,14,13,14,14,14,14,18,14,14,14,14,18,15,10,10,10,10,10,10,10,10,14,14,14,14,17,14,14,14,14,14,14,14,14,17,14,14,17,17,14,17,14,17,17,11,11,17,17,14,14,14,14,14,14,14,11,23,14,23,14,14,14,17,14,18,14,14,14,14,14,14,14,23,17,14,14,14,18,18,12,14,14,14,17,14,14,17,14,14,14,14,17,17,14,14,12,14,14,14,13,14,14,14,14,18,14,14,14,17,14,14,14,14,17,14,14,14,12,14,17,18,14,14,14,18,14,17,16,14,11,14,14,12,14,16,14,17,14,22,18,14,14,14,14,17,18,14,20,14,14,14,14,14,18,18,14,14,23,12,14,14,14,14,11,15,14,14,14,18,26,20,14,14,14,14,14,12,14,17,14,14,14,14,11,19,14,14,14,14,12,12,14,14,14,20,14,14,12,14,14,14,14,18,14,14,18,18,14,14,18,14,18,14,14,14,14,18,11,14,13,18,14,14,18,14,12,14,14,14,14,14,12,14,14,13,14,14,14,14,18,14,14,14,12,14,13,14,18,14,13,14,14,14,14,14,14,14,14,14,23,14,14,14,14,14,14,14,14,14,14,14,14,14,18,13,14,14,14,12,14,17,14,14,14,14,14,17,14,15,14,14,14,14,14,22,18,11,14,14,14,14,14,14,18,18,14,14,18,14,14,14,18,14,14,14,14,14,14,14,14,13,11,14,14,14,14,13,12,14,14,14,14,18,22,14,14,14,14,14,14,14,14,14,14,23,18,10,10,10,10,10,16,14,14,14,14,18,14,14,14,14,14,14,14,14,14,14,14,22,14,13,14,14,14,18,14,14,14,14,14,17,18,18,14,23,14,14,14,24,14,17,13,14,18,14,14,14,17,25,18,14,13,12,17,14,18,14,16,14,17,18,14,14,14,17,14,14,14,17,14,23,14,14,14,22,14,18,14,14,14,18,14,14,25,14,17,14,14,14,14,14,14,18,14,14,14,14,14,22,14,14,14,11,14,14,17,14,18,14,14,16,18,14,16,14,14,14,14,14,14,14,18,17,11,18,17,14,18,14,12,12,17,14,17,14,14,14,14,14,14,22,16,14,14,13,14,14,14,14,18,18,14,14,14,14,14,14,13,14,17,14,14,14,14,14,14,14,16,17,17,14,14,18,14,17,14,18,16,14,14,14,14,14,14,14,14,14,25,17,14,14,14,14,14,14,20,14,18,17,14,14,14,14,18,18,15,14,14,14,17,14,14,16,18,14,14,14,14,14,14,14,15,14,18,14,19,14,18,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,10,10,10,10,10,14,22,14,14,23,14,18,14,14,12,14,14,14,17,18,16,12,14,14,14,14,14,18,14,14,18,14,14,22,14,14,17,14,14,14,22,14,22,20,22,14,18,14,14,14,14,14,17,17,14,14,14,12,14,17,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,23,18,14,11,18,18,22,18,14,14,14,14,14,14,14,14,14,23,14,14,14,18,14,12,15,14,14,14,14,14,14,18,13,14,14,14,14,14,14,11,14,14,14,14,14,11,14,12,18,18,14,14,14,14,14,14,14,14,14,11,23,17,17,18,14,13,14,14,14,17,14,14,22,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,23,14,22,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,23,14,14,18,14,14,14,17,17,14,14,14,11,14,16,14,23,14,14,18,20,17,14,14,14,14,22,14,24,17,14,14,22,15,18,14,14,18,14,18,14,18,14,14,14,14,14,14,14,14,14,18,18,10,10,10,10,10,17,14,14,24,14,10,14,14,18,14,14,14,17,14,14,14,14,14,18,14,14,14,14,14,14,17,14,14,14,14,14,14,14,18,17,14,14,18,23,14,14,14,17,18,14,14,25,14,22,14,12,17,17,14,14,14,14,22,12,14,14,18,14,18,15,14,14,14,18,14,14,14,14,14,14,14,14,23,14,14,14,22,14,14,14,14,14,23,14,14,11,14,14,14,14,14,14,18,22,15,14,12,14,14,18,14,17,14,22,14,14,14,23,14,14,18,14,14,14,14,14,14,11,17,14,14,14,14,18,14,14,14,14,14,18,15,14,14,14,14,14,14,18,14,14,14,14,15,14,14,14,18,14,14,14,14,14,14,14,14,14,14,14,24,17,14,16,14,14,14,14,18,23,17,14,14,14,14,14,14,14,18,14,17,14,14,14,14,15,14,23,14,14,14,14,14,14,14,14,14,14,14,11,18,18,14,14,18,14,17,14,17,14,16,14,14,14,14,14,17,14,14,17,17,18,17,17,14,14,18,17,14,14,18,13,18,14,14,22,17,24,10,10,10,10,18,14,14,14,18,14,14,18,14,14,14,18,14,14,14,15,14,14,14,14,14,14,12,14,18,14,14,14,14,14,14,11,14,18,14,14,14,20,14,14,14,14,14,14,14,14,14,17,14,18,17,12,14,18,17,14,22,17,14,14,17,14,14,18,18,14,14,22,14,14,18,14,18,14,14,14,14,12,14,14,14,17,14,14,14,14,18,17,14,14,14,18,14,18,11,14,23,14,14,14,14,14,14,14,14,14,14,17,23,14,17,18,14,14,20,14,14,14,12,18,18,14,14,14,14,14,18,14,14,12,18,18,14,14,14,14,14,12,14,14,14,14,14,18,12,14,14,14,14,14,20,14,18,14,18,11,14,18,12,14,14,14,14,14,14,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,22,17,14,17,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,18,14,14,14,18,14,14,14,21,14,14,18,14,14,14,18,14,14,14,17,14,14,14,23,23,18,14,18,14,14,18,24,14,14,14,14,14,23,14,17,17,17,14,17,14,14,14,14,17,10,10,10,10,10,14,14,17,11,14,14,14,14,16,16,12,14,14,18,14,18,18,17,17,24,17,14,14,14,17,14,14,14,14,14,18,17,17,14,14,17,14,11,16,18,14,12,14,20,17,23,14,14,14,14,23,14,14,18,14,14,14,17,14,14,14,14,17,14,14,17,11,14,14,22,14,14,14,14,14,14,15,14,16,14,23,14,14,14,14,14,14,17,14,14,24,14,14,14,17,14,14,17,14,14,14,18,14,14,14,14,23,14,14,12,14,22,14,14,14,14,14,14,14,14,18,18,14,12,14,23,14,13,14,14,14,14,18,14,14,14,14,14,22,14,14,14,14,14,14,18,14,17,14,14,13,14,18,14,17,17,17,14,14,12,14,17,14,14,14,14,14,14,14,17,17,23,17,16,14,14,14,17,14,14,14,18,18,18,18,14,17,12,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,18,14,14,14,20,14,14,14,14,15,14,11,23,14,10,14,14,14,14,14,14,17,14,14,17,14,14,14,14,14,14,14,14,14,14,14,18,10,10,10,10,16,18,14,14,14,17,14,18,14,14,14,14,14,17,17,14,12,13,14,11,11,14,14,17,14,14,14,14,17,14,14,14,17,18,14,14,14,12,14,14,14,14,14,17,14,14,17,14,18,14,14,11,14,14,14,14,14,14,14,17,14,14,14,14,14,11,14,14,22,20,14,14,14,11,14,14,11,14,14,14,14,14,18,14,18,18,14,17,17,14,14,14,14,22,14,14,14,14,14,14,14,14,14,14,14,14,14,20,14,14,14,18,14,13,14,18,14,14,14,14,14,14,18,14,17,14,14,14,14,14,14,14,14,20,14,14,14,18,14,14,14,12,14,14,14,14,14,16,22,14,14,14,14,18,14,14,14,14,11,14,14,14,24,14,14,18,14,12,14,14,14,17,17,18,17,14,22,17,14,17,17,14,14,18,14,14,14,14,14,14,14,14,14,23,14,18,18,14,18,14,17,14,20,14,23,25,14,14,18,17,14,17,14,17,14,18,14,14,14,14,14,14,11,22,14,22,14,14,14,18,14,14,14,14,14,18,14,14,14,14,14,14,14,14,18,18,18,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,13,11,14,12,14,14,18,18,14,14,14,14,14,14,17,14,18,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,14,12,14,14,17,14,14,18,14,14,14,14,14,13,14,18,18,24,14,14,14,14,14,14,14,14,14,10,10,10,10,18,14,17,14,18,14,14,13,14,14,14,17,14,14,14,14,17,14,14,22,14,14,14,15,14,14,14,14,14,18,14,22,14,14,14,14,14,14,18,14,11,14,14,16,14,17,11,13,14,14,14,18,14,14,14,18,14,14,14,14,14,14,14,23,14,12,14,22,14,14,14,11,12,14,14,14,14,14,14,15,14,14,14,14,11,14,23,14,14,14,14,14,18,14,14,18,12,14,14,14,14,16,15,18,14,14,14,14,14,14,14,14,23,14,22,14,14,14,14,14,18,23,18,14,18,14,14,11,14,14,14,14,17,18,14,14,15,18,14,14,14,14,14,18,15,14,14,14,14,17,14,14,14,14,14,14,14,14,14,18,16,14,14,14,14,14,14,14,12,14,14,23,14,14,14,13,14,14,14,14,14,14,12,14,11,14,14,14,18,14,13,14,18,14,14,14,14,18,14,14,17,14,17,14,14,23,14,14,14,14,14,11,14,14,10,23,14,14,14,14,14,14,14,14,14,17,14,18,14,18,14,14,14,11,25,14,14,14,14,12,14,14,22,23,14,16,14,14,22,17,18,14,14,16,14,14,14,14,14,14,14,14,14,14,22,12,18,14,14,13,14,14,14,14,14,10,10,10,10,10,10,23,14,14,14,14,14,14,14,12,13,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,18,14,14,13,14,15,14,14,14,14,14,14,14,14,14,14,17,11,18,17,14,15,14,14,14,13,14,14,14,17,14,17,14,14,14,14,14,24,14,17,14,14,24,14,14,18,14,14,14,14,14,15,18,14,23,14,14,14,16,14,14,14,14,18,18,14,14,14,14,22,14,14,18,14,23,22,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,18,17,17,14,13,14,14,17,14,11,14,14,22,20,14,14,14,14,14,14,14,15,14,22,14,14,14,14,14,14,14,14,17,14,12,14,18,23,14,14,14,14,11,14,14,14,14,14,14,14,18,14,18,14,14,14,14,14,14,12,14,14,23,14,14,16,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,24,14,20,14,14,14,14,14,14,18,14,14,17,14,14,18,14,14,14,14,14,14,18,17,14,22,17,14,18,14,14,17,17,14,14,14,15,14,14,14,20,14,14,14,14,14,14,14,14,10,10,10,10,10,11,14,20,23,17,14,14,17,14,14,14,14,18,17,14,14,14,14,14,12,14,14,23,12,18,17,14,14,14,14,12,14,14,12,18,14,12,14,14,14,14,14,19,14,14,25,14,14,14,14,22,14,23,14,14,14,14,17,18,12,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,12,18,14,18,14,14,14,14,14,14,18,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,23,18,17,14,14,14,18,14,14,14,14,11,17,14,17,14,17,14,14,23,14,14,14,14,14,14,14,14,14,12,17,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,12,14,14,14,14,14,14,10,14,14,13,14,14,14,18,14,14,14,14,14,18,14,14,14,16,18,14,22,14,14,14,14,11,14,14,16,14,14,23,14,23,14,14,17,14,14,19,14,14,14,17,14,14,16,14,14,14,18,22,22,14,14,23,14,13,18,13,23,14,14,14,14,14,18,22,14,14,14,14,14,16,22,14,18,14,10,10,10,10,14,14,14,14,17,17,14,18,14,17,14,18,18,23,14,14,13,12,14,12,18,14,14,14,13,14,14,14,14,18,12,17,14,14,14,14,18,14,23,14,18,14,14,14,16,17,22,14,14,14,14,18,14,14,14,14,12,17,14,12,14,14,18,20,22,14,14,14,14,14,23,16,14,14,17,14,14,14,17,14,14,14,14,14,14,14,18,14,14,14,18,17,14,14,14,17,14,14,14,17,11,14,17,14,12,14,14,14,11,18,14,14,14,14,11,14,14,14,14,18,14,12,14,14,11,14,14,14,14,14,17,17,14,14,14,14,18,14,14,14,14,14,11,14,14,23,17,14,12,14,22,14,14,14,14,14,14,14,14,23,14,17,14,18,14,14,14,14,17,11,14,14,17,17,14,13,14,18,14,14,14,18,18,11,14,14,14,14,14,14,14,14,17,17,17,14,14,14,14,14,14,18,14,18,14,14,14,18,14,14,14,14,14,14,11,14,14,14,14,17,14,20,17,16,14,14,14,18,14,14,15,14,10,10,10,23,18,14,14,14,14,14,23,22,23,14,14,23,14,14,14,18,14,18,14,14,12,14,14,18,24,14,14,13,14,14,14,14,17,14,14,14,14,18,14,14,14,18,14,14,18,14,14,14,14,22,14,18,18,14,14,14,14,14,12,14,14,14,15,17,14,18,14,22,14,14,14,14,20,14,14,14,14,11,14,14,14,14,14,22,14,11,14,14,14,14,14,18,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,23,18,14,14,14,14,14,17,14,14,14,14,14,14,18,17,14,14,14,12,14,18,18,14,17,14,14,17,14,14,14,17,14,14,14,14,14,17,14,14,14,22,14,17,14,14,14,13,14,14,14,14,11,17,23,14,12,23,25,14,14,14,14,17,18,17,14,14,14,14,17,14,14,17,14,14,17,14,17,14,14,15,14,14,14,23,14,14,17,14,12,14,18,22,14,14,17,14,18,14,18,14,17,14,14,14,14,14,14,16,14,14,23,14,14,14,18,14,14,14,14,18,14,17,14,14,17,14,14,14,14,14,14,14,18,14,14,14,14,14,17,14,14,10,10,10,10,13,14,23,14,14,14,14,14,17,14,14,14,23,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,14,17,14,14,14,14,14,14,14,18,14,14,16,16,11,14,22,18,14,14,14,14,18,14,17,14,14,14,13,14,14,14,14,14,18,14,17,14,22,14,14,14,14,14,14,18,14,14,14,14,14,14,17,14,14,14,14,14,14,14,17,14,14,18,17,14,17,14,14,17,14,11,14,14,18,13,18,14,18,14,17,14,14,14,14,14,14,14,18,14,14,14,11,15,18,14,14,14,17,14,18,14,22,14,16,18,18,14,14,17,14,18,14,14,18,14,14,22,14,18,14,12,14,18,14,18,11,14,18,14,18,14,18,18,14,12,14,14,10,18,14,14,14,23,22,14,14,14,14,17,14,14,14,14,23,14,14,14,18,18,18,12,18,14,14,14,14,24,14,14,18,14,14,14,14,18,14,14,18,18,13,14,14,14,14,17,17,18,14,22,16,14,20,14,14,14,18,22,14,17,18,14,18,16,14,14,14,14,14,22,14,18,17,14,12,14,14,14,14,14,17,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,16,14,14,18,16,17,14,18,14,23,15,14,14,17,10,10,10,10,22,17,17,14,14,14,14,14,18,14,14,14,14,14,14,24,14,14,14,14,17,14,13,22,14,14,14,18,14,14,18,11,14,14,14,14,14,14,18,16,18,14,12,18,17,17,14,17,18,11,18,17,11,18,14,14,14,17,22,13,14,17,14,14,10,14,22,18,14,17,14,14,14,14,14,18,14,14,18,14,14,14,14,14,14,14,14,14,14,18,17,12,16,14,18,14,17,18,14,22,14,14,17,14,12,18,17,18,18,14,23,14,18,14,18,14,14,14,14,14,17,14,14,14,14,17,14,14,14,20,14,14,14,14,14,14,13,14,14,17,18,14,17,14,17,12,14,23,17,18,14,14,14,18,14,11,14,14,14,18,18,18,14,14,14,14,22,14,14,17,17,23,12,17,14,14,14,14,17,14,14,14,14,14,12,14,14,14,14,14,18,14,14,14,14,14,14,18,14,14,23,11,12,14,14,14,18,18,18,14,14,12,20,14,14,14,14,14,14,14,14,17,14,14,12,23,24,14,14,14,14,14,14,14,14,14,14,14,14,12,13,14,14,14,14,14,18,14,18,22,14,20,14,18,23,14,12,14,11,14,14,14,14,14,11,14,14,18,14,14,14,14,11,14,18,14,14,14,14,14,14,14,14,13,14,11,11,14,14,14,22,14,14,14,18,14,14,14,18,14,10,10,10,10,10,10,14,11,18,14,11,14,14,20,14,18,14,17,14,14,14,14,18,14,14,14,14,14,11,14,14,14,14,18,14,14,14,18,23,14,14,14,14,14,14,14,14,14,14,24,18,14,14,14,22,14,14,14,12,13,12,14,14,14,17,18,14,12,14,14,14,14,14,17,14,17,14,16,18,14,14,14,14,17,16,14,15,22,14,18,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,15,14,18,14,14,18,14,14,15,12,14,14,14,14,14,14,18,17,14,14,11,14,14,18,14,14,14,14,14,18,14,18,16,14,14,14,15,14,14,14,14,14,14,14,14,17,14,14,17,14,12,17,14,14,14,14,14,14,14,23,22,14,17,18,14,14,14,17,14,14,17,14,14,14,14,14,17,14,14,14,14,14,14,14,23,14,14,18,14,18,18,14,16,14,14,14,23,12,14,14,14,14,14,14,14,14,14,18,14,14,18,14,14,14,14,14,14,14,18,14,12,14,16,18,14,14,14,14,14,14,18,14,17,12,17,14,10,10,10,10,10,14,14,14,12,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,17,16,18,18,14,24,23,14,14,17,18,14,14,14,14,14,23,18,18,14,14,17,23,14,14,14,17,14,14,17,14,14,14,18,14,14,14,14,14,11,14,14,22,14,14,14,15,14,14,14,22,14,14,14,14,14,14,17,14,12,14,14,17,14,14,14,12,14,14,22,12,14,14,14,18,22,14,14,14,14,14,17,14,14,14,14,14,14,17,24,18,17,17,14,14,14,14,14,14,17,14,18,17,18,14,14,14,17,14,14,14,14,14,14,14,14,18,14,12,14,14,14,14,14,14,10,14,14,18,14,14,18,17,14,23,16,17,16,12,14,17,14,17,18,20,14,14,14,14,14,14,14,14,14,17,14,14,14,12,12,14,14,14,14,15,14,15,14,16,14,14,14,14,14,23,18,14,18,14,14,14,14,17,12,14,11,14,12,10,10,10,10,14,18,11,14,25,14,14,14,14,14,14,14,14,17,14,14,14,14,14,18,14,14,14,14,14,15,14,14,14,14,14,14,18,14,14,14,20,14,17,14,14,14,14,14,14,17,17,14,14,14,18,12,14,14,12,14,14,17,12,11,14,14,14,17,14,14,18,16,14,15,11,14,14,12,14,14,14,14,14,14,14,14,25,14,18,17,14,17,14,18,12,14,24,14,14,14,17,17,14,17,14,14,14,14,14,14,14,14,14,18,14,17,14,18,11,14,14,14,14,14,14,14,14,14,14,14,16,22,14,14,21,14,14,22,14,18,14,14,18,11,14,12,14,14,18,14,14,14,14,23,14,14,14,14,14,17,14,14,17,14,14,17,14,18,14,18,13,14,14,14,14,14,18,14,18,17,14,18,11,25,14,17,18,14,14,14,14,14,14,14,17,14,14,14,14,17,14,14,14,14,14,14,14,17,18,15,14,17,14,14,14,14,17,10,10,10,14,23,14,14,14,12,14,16,14,12,14,14,14,14,22,18,14,14,14,14,14,14,14,14,14,14,14,11,14,18,23,14,23,14,11,12,14,14,14,18,14,18,14,14,23,14,12,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,12,18,14,14,17,17,14,11,14,14,14,14,17,14,11,14,14,17,17,18,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,16,14,14,14,14,14,14,14,14,14,18,16,18,12,12,14,11,14,12,14,18,14,14,18,14,14,17,17,14,14,18,14,17,14,18,17,15,17,17,14,18,14,14,14,14,14,17,18,14,14,14,14,17,18,14,14,14,14,14,14,14,23,14,14,14,14,14,14,14,14,14,17,14,14,15,14,14,14,17,17,11,14,23,14,14,14,12,14,14,14,14,14,14,14,18,14,14,14,14,14,14,11,14,14,14,14,14,14,14,17,10,10,10,10,10,14,14,14,14,14,14,18,12,14,17,23,14,14,15,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,18,14,17,16,22,18,18,14,26,14,18,14,14,18,18,14,14,14,14,14,18,23,23,14,14,14,14,18,14,14,14,14,14,18,14,23,14,14,14,14,24,14,14,17,22,23,14,14,14,12,14,11,14,14,14,14,12,14,14,15,14,22,14,14,11,14,14,10,14,14,14,14,14,14,14,14,18,14,14,14,22,14,18,14,14,17,14,22,14,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,12,14,14,14,23,14,18,17,18,14,23,17,14,14,14,14,14,14,14,14,14,14,14,26,14,14,18,14,14,14,14,14,14,18,14,14,18,15,14,18,14,14,18,14,14,14,11,14,18,17,23,14,23,17,14,14,14,14,17,14,18,14,14,14,14,18,14,14,14,14,14,14,14,18,17,14,22,14,14,18,14,14,14,18,14,15,14,14,14,14,14,14,14,14,14,17,12,14,17,14,14,12,18,12,17,14,14,14,12,14,17,14,18,14,14,17,14,18,14,14,14,14,17,14,14,17,14,14,10,10,10,10,10,10,14,14,18,18,14,14,18,14,14,14,14,14,14,18,14,18,14,18,14,14,14,14,16,14,18,14,14,14,14,15,14,14,14,14,14,14,18,14,14,14,18,14,14,15,14,14,14,14,18,14,17,14,18,14,14,14,14,14,17,14,14,14,18,14,14,23,14,14,14,14,14,14,14,13,14,14,14,14,14,14,23,18,24,14,14,14,14,18,14,14,14,14,14,14,14,14,12,14,14,14,14,18,14,14,15,14,14,14,14,14,14,14,14,18,14,14,14,14,23,15,22,14,14,14,14,14,23,14,14,15,14,14,17,11,14,18,14,14,14,14,14,14,14,14,14,14,12,14,14,18,14,14,14,14,14,14,14,17,17,14,14,14,14,14,14,14,11,12,14,14,14,17,14,14,23,14,14,13,14,14,14,14,14,18,14,17,18,14,18,14,17,14,13,14,14,14,14,14,14,17,14,14,14,18,26,17,22,14,14,11,14,14,14,14,14,14,14,18,14,18,14,14,14,14,14,14,14,14,14,14,14,15,14,11,10,10,10,10,10,10,14,14,14,14,18,14,13,14,14,14,14,14,14,14,14,22,14,14,22,14,14,14,14,14,16,14,14,24,14,14,14,14,14,27,14,14,14,18,14,18,14,14,14,14,18,14,14,27,14,14,15,14,14,24,14,14,14,14,14,18,14,14,14,14,14,14,20,14,14,14,14,14,14,14,14,14,14,14,18,17,14,18,14,11,14,14,14,14,14,18,14,14,14,14,18,14,18,14,14,14,13,14,12,14,14,14,14,14,14,17,14,14,14,14,17,14,14,14,14,14,14,14,14,14,17,14,14,14,17,14,14,14,17,14,14,14,17,18,14,22,14,23,14,14,14,14,14,14,23,17,14,14,14,14,14,14,14,17,14,14,14,23,14,14,14,14,12,14,14,14,17,18,14,14,17,23,14,14,18,14,14,14,15,23,13,15,18,20,14,14,18,14,14,18,17,14,14,11,14,14,18,12,14,18,14,12,14,14,18,17,14,14,14,14,14,14,14,14,14,14,18,14,14,14,18,14,14,14,14,18,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,14,14,14,25,14,14,14,18,17,14,16,14,14,14,17,14,14,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,22,18,14,14,18,14,11,14,14,14,14,14,14,14,14,14,14,15,18,14,14,14,15,18,14,14,14,18,14,14,11,14,14,23,14,14,14,17,17,17,14,14,14,14,17,14,12,14,10,10,10,10,10,14,14,14,18,14,14,14,11,13,12,11,23,14,18,14,14,13,14,14,18,14,14,14,14,14,17,14,18,14,14,14,14,14,14,14,15,14,14,14,11,14,14,14,11,14,14,24,14,14,14,14,11,14,14,14,19,14,14,11,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,22,18,12,14,14,14,11,14,14,22,14,14,17,14,14,18,18,18,14,11,18,14,12,12,14,14,12,14,14,14,14,14,18,14,14,17,12,22,14,18,14,18,14,14,14,14,16,14,17,14,14,22,11,14,23,14,17,17,14,12,14,23,14,14,15,14,12,14,14,14,14,14,14,14,16,14,14,18,14,14,14,18,14,14,14,14,11,14,14,14,14,14,14,12,14,14,14,18,17,14,11,14,17,14,14,14,14,14,14,11,14,17,14,14,14,14,14,22,14,14,14,14,14,14,18,14,14,14,11,14,17,14,14,18,14,15,14,22,14,18,14,14,14,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,12,14,14,14,14,18,11,18,12,14,14,14,14,14,14,17,22,14,14,12,22,14,14,14,14,14,11,16,14,14,14,14,14,14,14,14,14,14,14,26,14,14,14,14,14,14,14,14,16,14,14,14,14,14,14,14,14,18,14,14,14,14,14,16,14,18,14,14,14,15,14,14,14,14,14,14,14,14,14,14,14,10,14,14,14,14,14,14,14,14,14,14,23,14,18,14,19,12,14,14,14,14,14,14,14,14,15,14,12,14,14,18,24,14,14,14,14,14,14,12,14,18,14,22,14,14,14,14,14,22,18,14,14,14,14,14,14,14,14,14,14,18,22,14,14,16,14,14,12,14,14,14,14,14,11,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,18,14,14,22,14,20,14,14,18,14,14,14,11,14,18,14,18,14,14,14,12,14,14,14,11,14,14,18,14,14,14,14,14,14,14,18,18,14,14,14,14,14,15,14,14,15,14,14,14,14,17,14,14,14,14,18,14,24,14,14,14,14,14,14,14,14,18,14,14,11,14,14,14,14,14,14,18,14,14,14,14,13,14,14,18,18,14,15,11,14,17,18,11,14,17,14,18,14,14,14,14,17,14,14,14,17,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,26,14,14,14,12,17,12,14,14,14,14,17,17,18,14,17,17,18,14,14,18,17,14,14,23,14,14,14,14,14,20,17,14,17,14,18,14,14,23,14,14,18,14,14,13,14,14,14,14,13,14,14,14,11,17,21,17,17,14,14,16,14,14,14,14,18,14,11,17,10,14,14,14,18,11,17,14,14,14,14,14,14,11,10,10,10,10,10,14,14,18,14,14,18,14,14,14,11,14,14,14,14,14,18,11,14,11,17,17,14,14,14,14,14,14,14,14,14,18,22,14,14,17,14,17,14,18,18,14,24,14,14,14,14,14,14,14,18,18,14,14,13,13,14,14,14,14,14,14,14,22,14,14,14,14,14,14,14,14,18,14,14,17,14,14,14,14,14,18,14,12,14,14,11,14,14,17,17,17,14,14,18,14,11,18,17,14,17,14,14,18,14,14,11,14,14,14,14,22,14,14,18,23,14,14,14,14,14,14,14,22,14,14,14,14,22,14,14,17,17,13,14,14,14,14,18,17,14,18,14,14,16,14,23,14,14,18,14,14,14,17,17,17,14,14,14,13,14,14,14,14,14,18,19,14,14,14,18,14,14,14,14,14,14,14,15,12,14,16,14,23,17,14,15,18,11,17,14,14,14,14,12,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,12,14,17,22,18,15,14,12,14,14,14,18,18,22,14,14,14,14,11,14,14,14,17,14,16,17,17,17,18,14,17,17,23,14,12,17,17,14,18,17,14,14,14,14,14,14,22,14,14,10,10,10,10,10,10,10,10,14,14,14,14,14,14,14,14,14,14,18,14,14,14,14,14,18,14,14,18,17,16,14,14,17,14,14,13,14,18,14,14,17,14,14,17,14,14,18,14,14,17,23,14,23,14,18,23,14,17,14,12,14,14,14,14,18,23,18,12,14,18,14,14,14,14,14,14,14,14,20,14,14,14,14,22,14,14,14,18,14,14,14,14,20,11,14,14,14,14,14,14,14,14,14,14,14,14,14,19,14,14,14,15,14,13,12,14,12,14,22,14,14,14,14,14,14,14,12,18,15,14,14,18,14,18,14,18,14,14,17,14,12,18,12,13,14,14,14,11,14,14,12,14,14,14,14,14,14,18,18,14,14,14,14,14,14,14,18,12,18,14,14,12,14,14,11,14,14,14,14,14,11,18,14,14,23,14,17,16,12,14,14,14,14,14,14,14,14,14,18,14,14,14,14,14,14,11,14,24,14,14,14,14,14,14,14,14,18,14,14,14,14,14,14,18,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,22,14,14,18,14,18,14,14,14,14,17,17,14,14,14,18,13,14,14,14,14,14,14,17,14,17,14,14,14,23,14,18,14,17,14,18,14,14,14,12,23,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,12,18,14,14,14,17,14,14,14,14,13,14,14,14,14,17,13,23,14,14,14,14,23,14,14,14,14,14,14,14,23,11,14,14,14,14,14,12,14,10,10,10,10,14,14,14,14,14,14,14,14,14,17,14,14,18,14,14,14,14,14,14,14,12,18,14,14,24,14,14,14,15,14,18,22,18,14,17,14,18,14,14,18,12,14,22,14,14,22,18,14,17,22,14,12,14,14,23,18,14,14,14,14,14,14,14,18,14,17,14,12,14,23,17,14,17,17,14,14,14,17,14,17,14,14,14,18,18,14,14,14,23,14,13,14,14,14,14,11,14,14,18,18,17,14,14,14,14,22,14,14,14,14,24,14,14,14,14,14,14,22,18,10,17,14,18,13,14,12,14,14,14,13,12,14,13,14,14,17,15,13,17,17,14,14,14,17,14,17,17,12,14,17,16,14,14,15,18,14,14,17,14,14,15,12,18,14,23,14,14,14,17,17,14,12,14,14,14,14,13,18,15,14,17,14,11,13,14,18,14,18,14,14,14,14,14,14,24,17,14,11,14,16,17,14,14,14,14,14,18,14,14,23,25,17,14,14,23,14,14,14,16,14,14,14,14,14,14,18,14,14,14,14,14,14,24,14,14,18,14,10,10,10,10,14,14,14,17,14,11,18,20,14,14,14,14,14,14,14,14,18,14,13,18,14,18,12,23,14,23,18,14,14,14,14,16,11,14,13,22,14,17,14,11,14,14,14,14,12,14,14,23,18,11,14,18,14,11,14,14,14,14,14,11,24,14,14,14,14,14,14,14,14,14,14,18,14,23,14,14,14,18,14,14,14,14,13,14,14,14,14,14,14,14,14,18,18,18,14,14,14,14,12,14,18,18,14,14,14,12,14,13,17,14,14,14,14,14,14,14,18,14,14,14,18,13,14,18,14,14,14,14,14,14,14,18,14,18,14,14,14,14,14,18,14,14,14,14,14,14,14,14,14,14,14,14,14,22,14,16,14,14,14,14,14,14,14,14,14,17,23,14,20,14,14,18,14,14,20,14,14,17,18,14,14,14,14,14,14,14,18,18,14,14,14,14,14,18,14,16,14,14,14,14,12,14,11,14,18,14,17,14,18,14,14,14,14,14,12,14,17,17,13,14,13,14,17,18,18,17,14,14,14,14,17,11,14,11,14,14,14,14,14,14,14,14,14,14,14,14,13,12,14,14,14,14,14,14,18,14,23,14,14,14,14,14,14,14,14,17,14,12,14,14,14,14,14,14,18,18,23,14,14,14,14,14,14,10,10,10,10,22,18,14,14,14,14,18,12,16,14,14,13,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,12,14,15,14,19,14,14,12,18,17,14,14,14,14,14,18,14,14,14,18,19,14,14,14,12,14,14,14,14,23,14,23,14,14,14,11,14,14,14,18,11,12,14,14,14,14,18,14,14,17,14,14,14,14,18,14,18,14,23,14,18,17,17,18,14,17,17,14,14,18,22,14,17,14,14,14,14,17,14,15,17,12,14,14,14,14,18,22,14,14,23,14,17,14,14,17,14,14,14,14,14,15,18,14,14,14,14,14,14,17,14,18,14,14,17,14,18,25,14,14,14,14,23,14,18,23,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,23,14,14,14,14,14,14,12,14,14,12,14,14,12,14,11,17,14,17,12,14,14,11,17,18,14,18,11,18,18,15,14,17,14,14,17,17,11,14,17,14,14,14,17,16,14,14,14,14,14,14,14,16,17,14,15,14,17,18,14,14,14,14,14,17,18,14,17,14,14,14,17,14,17,14,17,14,15,18,14,14,14,14,14,14,22,14,14,14,17,17,14,17,14,14,18,10,10,10,14,14,14,14,12,14,14,14,18,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,18,14,14,16,14,17,14,14,14,23,15,14,11,18,14,14,14,14,14,14,14,14,14,14,14,14,14,16,14,14,14,14,14,14,14,18,15,14,15,17,14,22,14,22,14,14,14,14,17,14,14,14,14,15,14,17,14,14,14,18,17,14,18,14,14,14,18,14,14,13,14,14,14,18,14,20,15,17,14,14,14,14,18,14,14,14,14,18,14,12,14,18,14,18,14,11,14,14,18,17,14,14,23,18,14,14,11,14,11,14,14,11,14,14,14,18,14,22,14,14,14,20,14,17,14,18,17,14,14,17,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,23,11,14,22,14,14,14,11,14,14,14,23,14,14,14,17,18,14,14,18,17,18,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,12,14,14,14,13,14,14,14,18,14,14,14,17,12,14,14,14,14,14,18,18,14,11,14,14,10,10,10,10,12,14,14,13,14,14,14,23,14,14,18,14,14,14,17,17,11,14,14,17,23,14,14,14,14,14,14,11,14,14,18,14,18,11,16,14,17,17,17,18,14,14,14,14,14,14,23,14,14,17,14,14,14,14,14,14,14,14,14,13,14,14,14,18,14,14,17,14,18,14,14,14,14,14,14,12,14,17,14,14,14,14,14,12,18,14,14,17,14,14,17,14,14,17,14,12,14,14,18,14,17,14,14,11,14,17,12,14,14,14,14,17,14,17,14,14,14,12,14,17,14,18,14,14,17,14,13,14,14,15,14,15,14,14,14,14,14,14,17,12,15,11,18,11,14,14,14,14,14,14,14,14,14,11,17,14,14,14,14,14,14,14,23,14,14,14,14,14,14,14,11,18,14,14,14,14,14,14,14,11,12,14,14,18,14,14,14,12,14,12,14,14,14,14,13,14,14,14,14,14,14,14,23,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,10,10,10,14,17,18,14,18,14,14,17,14,22,17,14,11,14,14,14,14,14,14,14,17,14,14,17,14,14,17,18,14,14,14,14,17,14,14,17,14,14,18,14,14,18,11,14,11,14,17,14,14,18,17,14,12,17,18,14,23,18,14,14,14,11,14,14,16,14,14,12,14,12,11,14,14,12,14,14,14,14,18,18,14,14,14,14,14,14,14,17,14,14,14,14,14,14,12,23,14,14,23,14,12,14,14,14,18,17,14,14,11,20,14,14,17,14,14,18,14,18,17,18,14,17,18,17,18,14,18,17,14,14,12,22,14,14,14,15,22,17,14,15,14,14,14,14,18,14,14,14,14,14,14,18,14,15,20,14,14,12,14,14,14,12,14,14,20,14,14,18,14,14,14,17,14,14,11,18,14,14,14,14,17,14,14,16,18,14,14,14,17,14,14,17,14,14,14,17,14,11,14,14,14,17,18,14,17,14,17,14,18,16,14,14,18,18,14,14,14,14,12,14,14,10,10,10,10,17,14,11,17,14,12,14,14,14,14,14,17,14,17,32],"timeDeltas":[114416,125,84,41,42,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,84,41,42,42,41,0,84,41,125,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,83,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,42,42,41,84,0,41,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,208,167,42,41,42,0,42,41,42,42,41,42,0,42,41,0,42,125,42,41,42,83,167,42,291,250,84,416,84,0,41,42,42,41,334,0,250,125,41,42,292,458,83,167,42,41,42,42,41,84,0,41,42,83,42,42,83,0,42,83,42,41,42,42,41,0,42,42,41,42,42,41,292,42,208,83,0,42,125,292,83,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,167,333,250,83,84,83,42,41,42,42,0,83,42,0,41,42,42,41,0,125,42,42,41,42,42,0,41,42,0,42,41,42,42,41,84,416,42,125,208,250,125,750,167,125,42,83,125,125,208,42,0,42,41,42,0,83,0,42,0,42,41,42,42,41,42,0,83,42,42,208,125,375,83,500,1084,83,1000,42,541,209,41,84,83,292,1916,0,42,42,83,0,42,41,375,42,0,0,42,41,42,42,41,0,42,42,41,0,42,42,41,709,208,42,83,83,125,667,1208,292,208,84,375,458,375,42,0,83,42,166,709,1416,500,84,41,167,42,41,125,667,500,208,459,291,292,83,375,625,125,375,459,83,83,209,0,166,167,167,208,1083,334,250,125,125,41,42,0,208,0,125,42,83,84,41,42,125,83,167,42,41,42,42,41,42,167,250,41,42,0,42,41,0,42,125,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,83,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,41,42,792,375,291,84,1125,583,125,125,208,0,1042,1667,0,83,0,42,41,42,42,41,42,42,41,125,84,41,84,41,42,0,42,41,42,42,0,41,84,0,41,42,42,0,41,42,42,41,42,0,42,83,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,83,0,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,208,42,125,83,42,416,84,625,291,334,125,41,292,42,125,83,250,167,41,42,42,83,250,167,125,291,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,84,0,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,83,42,41,0,42,42,0,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,125,41,42,42,0,41,42,42,0,41,42,42,83,42,41,42,83,84,83,125,125,42,83,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,42,0,83,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,125,0,42,41,42,42,41,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,42,0,42,83,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,250,41,42,0,42,41,42,0,208,167,167,208,167,83,42,0,125,83,250,42,291,42,333,84,41,0,42,333,42,0,375,83,84,500,250,208,42,41,84,41,42,0,42,41,42,83,42,42,41,42,542,0,41,0,84,41,0,42,42,41,42,0,42,41,42,0,42,83,42,83,125,125,83,42,42,41,84,41,42,42,0,41,167,83,42,42,41,0,42,42,125,41,42,42,250,0,83,42,41,250,209,83,83,292,42,41,42,208,84,41,0,42,42,41,42,42,0,41,209,291,84,41,42,0,42,41,84,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,84,0,41,42,42,0,125,125,41,0,42,125,0,83,0,42,42,41,42,42,41,84,41,334,41,125,84,208,42,41,84,41,42,42,83,42,0,41,42,42,166,84,166,0,42,42,41,42,0,42,41,42,42,41,0,84,41,42,42,41,0,84,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,42,42,41,42,0,42,83,208,42,42,41,42,42,0,83,42,0,41,42,42,41,0,42,42,0,41,42,42,41,42,42,83,125,0,83,0,42,42,41,84,41,42,0,42,41,42,42,0,0,41,42,0,42,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,83,42,41,42,42,41,42,42,41,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,41,42,0,42,125,125,41,42,42,41,42,42,0,41,42,42,41,250,125,0,42,42,41,125,0,42,42,41,42,42,41,84,83,0,42,41,42,42,41,0,42,42,41,42,0,83,0,42,0,42,41,42,42,41,167,125,125,167,208,208,834,583,208,250,42,0,125,42,0,41,209,41,42,42,41,42,125,83,42,83,125,84,83,125,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,83,125,125,42,125,0,125,0,41,42,83,42,42,41,84,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,83,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,83,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,417,208,375,0,167,42,41,0,42,42,41,42,292,41,42,42,41,125,42,42,41,0,42,42,41,0,42,42,41,125,42,42,0,41,42,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,83,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,84,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,83,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,42,41,42,42,41,42,0,83,0,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,83,0,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,0,42,41,42,0,42,83,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,0,84,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,0,42,42,41,42,0,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,41,84,0,41,42,0,42,41,167,83,42,375,917,2166,1375,2584,41,2500,3292,542,1708,0,83,1209,41,792,667,666,1417,583,542,0,83,0,500,84,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,83,84,83,0,42,41,42,0,42,125,83,125,42,0,41,42,42,0,41,84,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,84,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,125,0,0,42,41,42,83,792,83,1167,458,667,417,0,0,41,42,42,41,42,83,667,1083,625,42,42,83,42,0,41,42,42,83,83,125,42,42,0,41,42,0,42,41,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,83,42,0,42,41,125,42,167,41,84,83,83,0,42,42,41,417,375,42,0,250,250,41,42,292,41,42,83,167,83,625,84,250,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,42,41,42,167,125,125,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,125,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,0,41,84,41,42,42,41,0,42,42,166,0,42,42,41,84,41,42,375,42,0,41,42,42,41,0,42,42,125,208,42,41,42,42,41,42,542,0,41,42,42,0,41,42,42,0,41,84,83,0,42,41,42,42,0,41,42,83,42,0,83,0,42,42,41,42,42,0,83,0,42,41,42,42,41,42,42,41,0,84,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,83,84,0,41,42,0,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,0,42,42,0,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,83,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,125,0,41,42,0,42,41,42,42,41,42,0,83,0,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,84,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,250,0,84,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,84,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,83,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,125,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,84,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,83,0,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,84,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,125,167,125,0,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,83,83,42,0,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,83,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,0,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,0,83,0,42,42,0,41,42,42,41,42,42,0,41,42,0,83,0,42,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,83,0,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,83,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,0,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,84,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,0,83,0,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,42,41,42,0,42,41,42,0,42,41,84,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,84,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,84,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,125,83,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,125,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,83,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,84,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,83,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,83,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,0,42,42,83,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,83,42,42,41,0,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,83,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,42,42,41,0,42,42,0,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,125,84,166,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,83,0,42,41,0,42,42,41,0,42,42,41,42,0,83,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,83,125,42,41,0,42,42,41,125,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,83,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,84,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41]} \ No newline at end of file diff --git a/bench-parameterize-2024-11-24_12-17-49.cpuprofile b/bench-parameterize-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..f6e9cf8 --- /dev/null +++ b/bench-parameterize-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,8,9,13,28,31]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0},{"id":8,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":555},{"id":9,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":976,"children":[10,14,30],"positionTicks":[{"line":321,"ticks":2},{"line":297,"ticks":39},{"line":323,"ticks":9},{"line":316,"ticks":537},{"line":327,"ticks":96},{"line":314,"ticks":63},{"line":292,"ticks":55},{"line":315,"ticks":175}]},{"id":10,"callFrame":{"functionName":"H","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":254,"columnNumber":54},"hitCount":0,"children":[11]},{"id":11,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2672},"hitCount":0,"children":[12]},{"id":12,"callFrame":{"functionName":"parameterize","scriptId":"277","url":"file:///Users/airhorns/Code/superflected/src/parameterize.ts","lineNumber":1,"columnNumber":971},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":14,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":1972,"children":[15,17],"positionTicks":[{"line":138,"ticks":3},{"line":139,"ticks":46},{"line":530,"ticks":87},{"line":537,"ticks":15},{"line":250,"ticks":42},{"line":302,"ticks":39},{"line":309,"ticks":1140},{"line":539,"ticks":24},{"line":308,"ticks":34},{"line":311,"ticks":286},{"line":531,"ticks":1},{"line":301,"ticks":255}]},{"id":15,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2672},"hitCount":575,"children":[16,27],"positionTicks":[{"line":2,"ticks":575}]},{"id":16,"callFrame":{"functionName":"parameterize","scriptId":"277","url":"file:///Users/airhorns/Code/superflected/src/parameterize.ts","lineNumber":1,"columnNumber":971},"hitCount":9896,"children":[20,22,24],"positionTicks":[{"line":2,"ticks":9896}]},{"id":20,"callFrame":{"functionName":"transliterate","scriptId":"278","url":"file:///Users/airhorns/Code/superflected/src/Transliterator.ts","lineNumber":1,"columnNumber":5037},"hitCount":0,"children":[21]},{"id":21,"callFrame":{"functionName":"transliterate","scriptId":"278","url":"file:///Users/airhorns/Code/superflected/src/Transliterator.ts","lineNumber":1,"columnNumber":4600},"hitCount":2757,"positionTicks":[{"line":2,"ticks":2757}]},{"id":22,"callFrame":{"functionName":"RegExp: ^-|-$","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":442},{"id":24,"callFrame":{"functionName":"RegExp: -{2,}","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":290},{"id":27,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":21,"children":[29],"positionTicks":[{"line":2,"ticks":21}]},{"id":29,"callFrame":{"functionName":"parameterize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":1145},"hitCount":21,"positionTicks":[{"line":2,"ticks":21}]},{"id":17,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":441,"children":[18,23],"positionTicks":[{"line":250,"ticks":441}]},{"id":18,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":337,"children":[19,25],"positionTicks":[{"line":139,"ticks":337}]},{"id":19,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1911,"positionTicks":[{"line":139,"ticks":1911}]},{"id":25,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":51,"children":[26],"positionTicks":[{"line":537,"ticks":51}]},{"id":26,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":193,"positionTicks":[{"line":530,"ticks":193}]},{"id":23,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":200,"positionTicks":[{"line":670,"ticks":9},{"line":661,"ticks":59},{"line":666,"ticks":36},{"line":665,"ticks":26},{"line":668,"ticks":13},{"line":669,"ticks":36},{"line":662,"ticks":21}]},{"id":30,"callFrame":{"functionName":"get","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":102,"columnNumber":11},"hitCount":1,"positionTicks":[{"line":103,"ticks":1}]},{"id":13,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":837},{"id":28,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":46,"positionTicks":[{"line":301,"ticks":46}]},{"id":31,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[32]},{"id":32,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[33]},{"id":33,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[34]},{"id":34,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[35]},{"id":35,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1,"positionTicks":[{"line":136,"ticks":1}]}],"startTime":293071229417,"endTime":293071982334,"samples":[7,8,12,13,16,16,19,9,21,16,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,19,16,21,22,16,16,19,21,16,16,21,16,14,21,21,21,19,16,19,19,16,21,14,16,13,16,16,16,21,21,18,16,19,19,19,16,19,16,16,16,16,21,19,16,16,16,16,21,19,19,23,19,24,19,21,19,21,16,16,16,16,13,19,14,22,19,15,19,16,16,19,19,15,21,16,16,16,17,16,16,19,16,16,14,9,19,16,19,16,19,24,16,16,19,21,18,19,19,21,16,14,16,23,13,16,21,16,19,16,21,22,21,18,16,14,15,16,17,16,16,21,9,16,16,16,21,16,16,16,21,19,16,21,9,15,19,16,16,13,19,21,19,19,19,16,23,19,19,16,14,14,21,19,26,16,16,16,16,15,21,19,22,19,16,16,18,16,14,16,14,19,16,14,19,16,19,19,19,23,16,21,22,16,19,16,19,14,16,16,17,19,19,24,16,14,19,19,16,21,16,8,8,8,8,8,8,8,22,22,19,15,17,16,16,27,14,16,14,17,24,16,13,16,9,15,16,16,28,19,19,14,16,22,19,19,16,16,16,14,19,15,16,22,16,14,18,21,14,21,16,16,16,19,21,19,21,9,16,21,17,16,22,25,21,21,16,16,16,18,16,14,16,16,24,21,16,16,14,9,16,16,16,21,16,21,16,14,16,16,14,16,15,24,21,16,16,16,16,15,19,15,16,16,13,14,16,21,21,16,16,17,16,16,16,16,19,19,16,22,19,16,16,22,16,19,13,16,14,21,16,16,16,16,16,16,19,16,16,21,16,14,9,15,15,25,22,16,15,16,14,9,16,19,16,21,16,16,16,16,16,16,16,16,15,21,16,16,14,15,16,8,14,9,26,16,14,16,9,16,21,16,16,21,16,16,14,18,16,16,21,9,21,16,15,16,14,16,9,16,21,16,16,16,13,16,9,16,19,16,16,21,9,14,13,16,18,16,14,9,14,14,16,16,13,16,21,21,9,16,14,16,16,9,16,14,21,16,14,17,16,18,13,16,22,16,14,17,21,9,21,18,16,16,21,16,16,16,13,16,16,21,9,26,21,16,16,16,16,16,17,16,16,9,25,16,21,25,16,19,16,13,16,16,16,13,21,16,15,19,16,21,17,21,19,14,16,16,21,14,16,16,13,28,8,8,8,8,8,16,16,19,14,13,17,17,14,17,21,16,16,16,16,16,9,16,14,16,14,16,19,16,16,14,14,15,18,16,26,22,21,16,18,16,16,26,19,16,16,16,21,13,9,18,13,16,16,21,16,19,18,16,15,21,16,14,14,16,15,22,16,13,26,16,21,19,16,9,16,14,16,19,16,9,16,14,21,14,17,15,9,16,16,16,9,13,16,21,16,22,16,22,19,29,16,26,16,22,16,16,14,16,16,23,15,14,16,16,16,16,21,16,16,16,21,14,16,21,15,21,17,21,16,23,9,16,21,17,15,21,19,19,16,16,14,24,16,16,9,16,19,21,13,9,16,16,9,9,16,16,16,16,16,16,19,16,16,16,21,14,16,19,14,16,21,16,21,21,16,24,24,21,13,16,18,16,17,16,16,16,16,9,16,16,16,16,9,25,13,16,18,16,16,9,18,21,16,16,16,13,16,13,16,16,16,9,14,16,16,14,17,16,16,25,16,17,16,24,13,9,16,21,22,19,21,14,21,25,16,14,16,16,19,16,25,21,19,21,16,14,16,26,19,22,21,16,16,8,16,19,14,19,16,16,9,16,24,16,16,16,14,19,23,21,14,19,16,14,16,16,21,21,16,16,14,16,13,16,16,16,16,25,9,16,16,24,9,16,29,16,19,19,17,16,16,16,8,8,8,8,8,8,8,16,19,16,16,16,9,16,16,21,16,14,16,19,16,26,16,16,19,16,19,9,16,16,16,16,22,16,19,13,21,15,16,14,14,24,14,14,14,14,14,21,21,16,16,14,16,21,15,16,14,16,16,14,16,23,16,16,16,19,16,16,14,21,13,16,14,16,18,19,16,13,13,13,21,16,16,16,13,13,13,16,16,21,21,16,14,21,16,19,14,16,16,9,16,23,16,14,16,19,21,16,13,16,16,16,16,24,21,23,19,21,16,13,18,23,16,16,16,16,19,16,16,16,21,16,16,9,21,16,16,16,26,16,16,16,14,16,16,19,19,16,16,16,16,14,21,21,16,19,21,14,16,16,21,19,17,19,19,21,18,21,16,19,19,16,16,14,21,19,16,16,19,13,19,16,14,16,19,14,16,17,13,16,16,16,19,19,16,16,14,17,21,21,16,19,16,19,19,21,19,16,19,16,19,16,19,16,16,19,21,21,17,19,9,16,14,13,16,16,14,16,14,13,16,14,21,19,21,16,8,8,8,8,16,16,16,14,16,16,19,19,17,16,16,16,24,16,16,16,13,19,16,16,16,16,15,15,16,16,16,25,16,13,13,16,21,16,22,21,16,16,15,16,21,13,16,24,16,16,9,22,14,19,16,16,18,21,16,16,9,25,9,16,14,17,16,16,16,21,16,14,15,18,14,17,16,17,16,16,21,19,16,16,25,16,16,14,19,16,16,16,19,19,16,16,19,16,19,28,14,22,16,9,13,9,16,22,16,21,16,16,16,16,21,16,16,21,19,16,19,16,16,17,16,27,16,21,16,19,23,16,19,13,21,9,19,16,16,21,16,15,16,19,19,15,21,14,15,19,19,16,16,16,14,14,14,14,16,21,16,21,16,18,18,21,16,16,28,16,9,16,16,14,14,16,19,21,17,16,16,14,14,16,19,22,16,16,16,21,21,21,16,19,26,16,14,16,14,19,16,23,28,16,14,14,14,14,16,21,16,16,15,16,14,21,19,17,16,16,9,21,16,16,16,21,19,14,14,16,16,16,16,16,21,19,16,21,13,16,9,19,19,21,16,16,16,22,16,21,21,16,21,16,13,16,19,21,21,16,16,8,8,8,8,16,16,16,19,14,16,16,18,16,19,13,16,19,16,19,16,16,16,21,16,16,16,16,19,14,14,9,16,9,21,16,16,16,16,16,16,21,21,9,16,14,16,24,16,21,16,21,19,16,16,16,16,14,16,16,16,16,16,16,16,14,19,26,13,17,18,17,19,16,19,16,16,16,19,26,9,18,16,16,16,16,19,14,16,16,19,16,25,16,16,16,16,9,16,16,17,26,18,21,14,18,16,9,21,16,16,16,21,15,14,16,16,17,15,16,15,16,16,16,21,26,14,15,16,16,21,19,9,14,16,16,16,16,16,13,16,21,16,16,9,16,14,19,21,21,16,16,16,15,16,16,16,9,18,16,16,14,14,16,13,16,19,16,13,16,16,14,14,21,16,16,19,14,19,22,16,21,21,19,19,16,13,16,16,19,16,26,16,15,16,26,22,19,16,19,21,15,21,16,16,14,13,16,21,16,21,16,16,21,14,14,16,16,18,9,16,16,16,15,24,22,14,21,25,14,16,16,16,21,16,16,21,16,16,26,15,16,14,16,16,16,19,14,14,16,16,16,9,22,21,13,21,16,19,19,16,14,21,14,16,16,21,17,16,16,16,14,16,16,14,21,16,19,16,26,14,19,16,16,16,16,16,17,13,21,16,17,16,14,22,14,9,16,16,25,16,16,14,16,13,14,9,14,13,14,19,16,16,8,16,16,16,16,16,26,16,8,8,8,8,8,19,19,14,16,16,14,21,16,16,19,16,21,14,14,16,14,16,16,16,13,19,16,16,16,24,16,16,21,16,21,16,16,16,16,14,16,19,16,19,9,15,16,21,16,21,16,16,16,16,16,16,21,16,18,16,26,16,14,17,15,16,21,9,17,21,9,22,16,16,14,21,14,13,16,16,21,9,16,19,16,16,21,16,21,16,14,21,22,16,16,16,16,13,18,14,19,16,16,16,16,16,16,16,14,13,9,15,22,16,16,16,16,16,22,13,16,19,21,16,19,13,9,14,24,16,22,21,14,21,16,13,16,13,21,14,19,21,19,21,21,13,15,21,16,19,14,17,21,18,16,17,19,16,16,24,16,17,21,16,21,19,16,21,16,18,13,16,19,15,14,16,16,16,16,15,13,26,19,16,14,21,16,14,16,16,21,16,16,16,14,16,28,16,9,16,16,21,16,22,16,13,19,21,24,16,16,16,16,16,21,16,21,22,21,16,15,16,16,16,21,16,13,16,21,16,16,16,16,16,16,14,16,16,16,16,23,8,8,8,8,8,21,16,21,19,19,16,18,19,14,19,16,16,16,14,16,19,16,16,16,21,16,13,21,14,16,14,14,14,14,14,14,14,19,16,21,16,14,16,16,15,16,16,9,14,21,16,21,16,17,16,22,14,16,19,14,14,19,14,16,21,19,16,16,26,19,18,21,16,16,15,22,19,19,16,14,19,16,22,16,13,14,16,16,22,19,16,19,16,16,15,16,18,16,21,16,15,19,17,13,28,16,16,9,14,21,16,18,16,16,19,13,16,9,19,21,16,16,19,16,15,16,16,14,16,16,9,16,9,16,9,26,16,16,14,22,19,16,16,16,19,18,14,16,14,21,18,23,16,16,16,16,24,21,16,14,21,16,16,16,16,21,9,9,16,23,16,16,19,16,16,16,23,16,16,16,15,19,21,16,16,21,16,21,14,16,21,15,16,16,16,16,15,14,16,16,21,14,18,16,16,21,14,16,16,26,16,16,13,16,19,19,16,22,9,16,16,19,19,16,21,16,17,19,16,16,16,16,15,16,19,21,16,19,16,16,16,9,8,8,8,8,18,16,16,16,19,19,16,9,16,19,17,16,19,16,16,18,14,16,16,21,16,16,24,21,16,19,16,21,14,16,16,21,16,14,16,16,21,16,19,21,19,13,14,16,14,16,16,9,22,16,19,21,21,16,16,14,13,16,14,16,16,16,21,21,17,16,21,16,14,16,17,16,16,16,14,19,16,16,9,16,16,16,16,16,9,16,16,16,16,16,14,15,16,16,19,16,21,16,16,16,21,16,14,15,14,16,15,16,16,13,21,17,28,16,9,16,17,13,19,16,16,16,16,15,19,16,16,16,21,16,16,16,14,16,16,16,15,17,9,21,14,16,14,16,21,16,15,9,19,13,16,16,16,9,16,9,16,16,16,21,16,14,14,21,21,21,16,16,16,9,16,16,16,21,21,16,14,16,16,19,19,16,18,21,16,16,16,26,13,21,14,13,15,9,16,9,16,14,16,24,16,19,16,14,16,21,9,19,21,21,21,21,21,16,14,16,16,21,16,17,16,17,16,16,22,14,21,21,16,16,8,8,8,8,24,21,16,16,16,9,16,13,21,16,16,22,16,16,13,16,19,22,16,16,16,16,16,16,16,17,14,16,16,16,14,21,14,17,16,16,16,16,26,14,14,14,16,16,16,16,14,16,19,16,23,16,16,16,14,16,14,16,16,19,16,16,16,16,8,19,16,9,19,16,14,16,27,16,21,16,16,16,21,14,18,19,16,16,16,16,23,21,21,19,16,24,19,16,21,14,16,16,19,19,15,19,9,16,9,13,21,23,16,14,16,16,16,13,8,13,16,21,14,14,9,16,14,27,16,21,21,16,16,14,22,19,16,16,16,16,16,21,16,16,16,18,21,21,9,16,21,16,15,24,21,14,14,16,16,16,9,21,16,16,16,21,9,16,16,21,21,16,23,19,16,16,21,16,16,9,21,21,16,13,18,14,14,16,16,16,16,21,14,16,16,16,14,16,13,16,16,16,16,16,16,16,16,15,16,16,21,14,9,9,21,16,26,14,16,16,16,13,9,16,16,15,15,16,21,9,14,15,21,16,16,14,8,8,8,8,8,19,15,14,16,16,14,21,16,15,19,21,15,13,16,9,16,16,18,23,16,16,9,15,16,16,16,16,16,16,24,16,21,14,16,21,16,21,16,21,24,16,17,13,14,16,21,14,16,13,16,24,16,21,15,22,21,24,16,13,18,21,13,21,21,21,16,21,16,16,16,21,21,16,16,21,23,16,16,13,9,13,24,14,16,25,29,16,16,16,16,21,14,22,9,19,16,16,16,21,16,19,21,19,16,16,18,16,19,15,17,16,16,18,23,16,16,26,19,16,15,16,9,13,9,19,16,16,16,21,21,16,16,16,16,16,21,21,16,16,9,16,15,16,16,19,14,14,14,14,14,14,14,14,14,21,14,16,16,16,21,16,21,15,21,9,16,16,16,21,16,16,19,22,16,21,23,9,17,19,14,16,25,16,16,14,16,16,19,17,21,16,18,16,16,16,21,21,21,14,15,16,14,16,16,16,16,16,13,19,16,16,16,16,21,19,16,19,16,14,24,16,16,16,16,21,14,16,21,8,8,8,8,8,21,16,15,16,14,16,16,21,14,16,16,16,16,16,19,21,16,14,16,23,19,16,21,16,21,19,21,16,21,16,13,9,15,22,16,14,19,23,24,24,21,16,19,16,16,21,16,16,16,16,16,19,16,16,16,19,16,16,14,16,16,21,16,23,19,24,16,16,16,16,16,14,17,16,16,16,9,16,9,16,21,16,21,16,16,16,9,16,16,9,16,15,16,19,16,9,21,16,22,14,16,21,15,16,13,16,19,15,16,14,16,21,16,24,16,16,14,16,16,14,16,16,16,19,14,16,16,14,16,16,16,9,16,9,19,16,19,19,16,16,16,16,16,21,16,16,13,16,14,15,14,14,18,24,9,16,16,16,16,16,14,16,16,15,14,16,16,16,16,9,16,16,15,13,16,21,16,19,21,16,16,16,16,14,16,21,16,21,16,16,14,18,16,14,21,16,16,21,21,17,16,16,16,16,23,21,19,16,16,21,19,16,16,16,16,16,16,16,22,19,21,19,21,8,8,8,8,8,8,16,14,19,16,16,16,16,21,21,16,16,16,8,16,16,21,16,16,19,16,18,16,14,14,18,19,14,16,16,14,16,21,16,21,21,16,15,16,9,14,16,21,16,18,16,22,14,14,9,18,16,16,9,22,13,16,23,13,16,16,19,21,16,24,16,16,19,19,16,16,16,14,16,21,21,16,16,16,9,9,9,16,19,16,19,16,14,17,16,9,24,16,21,21,17,16,21,16,13,14,16,16,21,16,16,16,16,16,16,16,27,19,16,19,19,16,19,26,9,16,16,14,25,24,9,14,16,21,14,21,13,16,16,16,13,16,21,16,16,9,16,26,13,16,21,16,16,19,21,16,16,14,16,16,16,16,13,19,29,16,16,13,16,14,13,16,21,19,21,16,13,14,19,14,18,21,14,21,21,13,22,17,13,16,21,22,19,21,13,16,18,16,16,16,16,16,16,16,14,26,23,9,16,21,16,19,9,16,16,16,16,16,18,16,16,16,16,9,21,8,8,8,8,15,9,18,16,16,16,13,16,21,19,16,14,16,16,19,16,16,16,21,16,16,16,14,9,16,16,15,21,21,19,16,21,16,16,16,21,22,16,17,16,16,21,16,21,19,14,19,15,16,16,15,16,19,16,21,15,26,22,19,14,16,22,16,21,14,16,16,13,16,27,21,16,24,16,16,18,16,16,15,16,21,16,24,16,16,13,24,16,16,19,9,14,16,16,21,21,19,21,17,16,23,17,21,16,16,14,13,9,14,16,16,18,9,16,13,16,16,22,22,16,19,24,14,16,16,16,16,16,16,16,14,19,23,16,16,15,21,19,9,23,16,8,14,16,14,21,14,19,16,19,16,15,17,16,24,17,14,14,24,16,13,16,16,17,16,15,16,16,16,16,9,16,22,16,13,16,14,16,17,16,16,19,16,21,17,16,21,22,9,16,16,19,9,16,14,16,13,21,19,14,19,14,16,16,16,17,16,16,23,18,16,16,16,16,16,14,16,16,14,16,16,19,21,8,8,8,8,16,16,16,14,16,18,21,19,21,16,16,16,19,19,16,16,17,21,18,16,21,16,24,16,21,24,16,19,16,24,22,16,16,21,16,16,9,16,21,16,22,16,21,16,21,16,21,16,16,16,22,16,14,21,16,18,16,16,16,16,21,14,14,16,21,16,16,16,9,16,21,13,14,16,9,19,16,13,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,19,19,28,17,17,16,19,14,16,21,21,16,14,16,14,19,15,16,16,14,21,26,24,21,16,23,16,19,16,22,16,16,21,16,16,16,14,21,16,16,19,16,15,14,16,13,16,14,13,23,16,9,16,16,16,16,16,16,16,19,13,22,16,16,21,22,17,16,9,19,16,16,9,16,14,19,23,16,16,21,17,21,16,13,19,16,16,16,16,21,16,16,16,16,19,16,16,16,18,16,19,21,16,13,16,16,16,21,16,21,19,16,16,19,22,17,16,16,19,16,16,21,14,15,16,17,16,16,16,21,21,9,8,8,8,8,16,16,16,16,16,16,9,16,22,14,16,16,19,14,18,16,15,19,16,21,14,19,16,15,16,16,19,21,16,17,16,16,21,17,23,16,22,16,17,13,13,16,21,19,16,16,15,16,13,16,21,16,25,16,16,16,9,16,16,16,19,16,16,16,16,16,16,16,16,13,13,16,17,16,13,16,14,24,19,16,16,14,9,9,17,22,16,16,16,22,16,16,16,16,21,16,16,14,16,14,16,16,16,19,14,16,16,16,16,15,19,16,19,16,16,14,19,19,21,16,16,16,16,16,14,19,21,14,16,21,16,21,21,16,13,16,16,14,16,16,19,16,16,16,21,16,16,17,16,15,17,18,21,21,16,16,16,18,16,23,16,21,9,16,16,16,15,16,22,21,21,24,16,16,21,16,16,19,13,19,15,16,16,16,21,16,16,21,21,9,16,16,16,17,16,21,21,16,21,19,15,21,18,21,16,9,19,18,16,16,21,16,21,19,16,14,21,16,22,16,16,16,15,16,19,16,18,21,8,8,8,17,14,14,14,14,14,14,14,14,14,14,14,14,14,16,16,16,16,16,17,21,21,16,19,14,18,16,14,16,16,16,16,16,16,16,15,13,21,15,16,15,16,9,16,16,16,14,13,16,16,21,17,21,16,18,14,16,13,16,14,21,16,16,22,21,16,16,16,14,17,16,13,16,16,16,16,16,21,16,16,16,16,26,19,16,21,17,9,21,13,16,16,14,21,19,16,19,21,21,16,16,14,21,17,15,21,15,16,16,9,16,16,14,16,14,16,21,16,14,16,16,13,19,17,16,19,16,21,9,26,16,16,16,16,17,21,16,16,16,19,16,14,21,14,16,21,21,16,16,16,21,23,21,24,16,14,9,16,21,16,16,16,16,16,14,16,13,16,23,19,24,16,16,22,21,14,19,21,15,13,21,9,16,9,24,16,14,19,19,16,16,16,21,9,16,21,9,16,13,16,19,16,16,16,16,16,16,15,19,21,16,16,19,22,13,16,18,16,16,23,23,19,16,16,14,13,16,21,19,21,8,8,8,8,8,14,17,16,16,14,16,16,16,24,16,16,14,13,16,14,16,18,16,16,21,16,21,16,18,15,16,26,15,9,16,13,13,16,16,16,26,16,16,16,16,14,26,16,16,14,14,19,16,14,16,16,24,16,16,18,9,15,19,15,16,16,16,22,22,21,21,16,16,16,19,16,9,16,16,9,16,16,16,21,14,16,21,16,19,16,16,19,16,16,16,16,26,21,16,17,16,15,14,18,16,24,16,16,21,21,21,18,16,21,21,16,16,16,21,14,22,16,19,16,16,16,21,19,16,9,16,18,9,22,19,16,21,16,14,16,21,16,16,16,14,23,21,19,16,21,9,13,16,16,16,16,16,9,13,13,15,16,21,9,16,16,21,16,16,16,16,13,14,16,16,19,17,22,28,21,16,19,22,16,24,19,16,16,21,21,13,21,16,21,16,19,16,18,16,21,16,13,19,16,16,16,16,16,13,26,19,18,16,16,16,19,16,16,16,16,16,15,21,15,9,16,16,16,14,19,21,16,16,8,8,8,8,21,15,21,9,21,16,14,16,19,21,16,14,16,16,16,9,16,13,21,16,16,19,16,19,16,14,16,16,19,19,21,23,18,16,16,14,14,21,19,19,22,9,26,16,16,21,16,19,16,15,21,14,16,16,21,16,14,16,21,21,21,16,19,21,17,15,16,14,9,16,21,16,13,24,16,16,14,28,14,21,15,13,16,16,14,16,9,16,16,19,16,19,23,16,16,13,16,16,21,16,24,28,16,21,26,13,16,16,21,16,15,16,9,16,24,18,16,21,17,23,13,21,16,16,16,21,9,21,16,16,19,9,16,21,16,16,16,9,19,22,25,16,16,16,18,16,16,16,16,17,16,16,13,16,21,15,16,9,18,14,21,13,16,14,16,16,16,16,16,16,21,16,14,16,16,15,9,19,16,18,16,21,24,16,16,16,15,16,14,19,14,16,19,16,19,16,19,13,14,14,16,16,21,16,21,16,16,16,19,16,21,16,24,16,21,13,16,16,16,19,19,16,16,16,21,16,8,8,8,8,17,21,21,16,23,14,19,18,19,19,16,16,16,26,13,15,16,24,16,16,16,19,16,16,16,16,19,18,16,16,19,9,16,19,16,16,21,14,16,16,16,16,13,16,19,14,16,16,16,16,13,21,16,16,15,14,16,19,16,18,13,21,16,14,19,23,16,21,21,16,24,16,21,19,23,16,16,14,16,21,17,16,21,14,16,16,16,24,24,15,16,16,16,9,16,16,16,16,18,14,13,16,21,23,16,16,16,21,16,14,14,15,17,16,16,16,9,19,21,14,16,16,23,16,14,21,16,16,17,21,16,13,19,21,15,16,14,13,16,14,16,14,15,16,19,16,19,19,16,21,21,19,13,19,9,16,16,9,16,22,22,14,14,21,21,16,13,21,17,23,16,14,16,17,16,16,16,16,16,13,15,16,22,16,19,16,24,21,21,17,9,16,16,16,16,19,13,16,16,16,16,16,14,19,16,16,21,19,13,15,19,16,16,9,16,14,21,8,8,8,8,21,16,16,16,24,16,16,16,16,16,21,19,14,9,21,16,16,21,16,13,14,14,16,13,19,21,16,16,14,16,17,21,16,16,16,19,13,21,22,21,16,16,16,16,16,16,16,16,16,16,16,16,9,21,16,19,16,16,16,16,16,16,16,9,16,14,16,16,16,16,16,14,16,21,16,16,16,16,16,16,16,16,14,16,14,16,16,16,16,16,16,29,9,21,21,13,18,16,19,16,16,21,16,16,9,16,23,24,21,9,16,16,21,16,21,14,16,16,16,21,13,16,14,16,16,16,16,13,14,16,19,19,16,16,26,16,16,19,16,22,16,16,16,21,14,14,19,21,9,24,21,16,9,16,17,9,21,16,16,16,21,16,21,14,16,19,16,19,19,16,16,14,16,19,13,22,16,16,16,21,16,21,16,13,16,16,24,14,16,21,23,16,16,16,16,17,19,16,14,16,13,16,15,19,14,15,16,26,21,21,16,19,19,13,16,16,22,19,16,21,16,16,16,24,16,16,16,16,9,8,8,8,8,8,21,9,16,21,21,9,16,21,16,22,16,23,16,16,9,18,14,16,21,9,9,9,13,16,21,16,13,16,16,21,16,21,16,16,16,14,21,16,16,16,16,16,16,15,14,9,16,9,19,16,21,16,16,21,16,16,16,16,13,16,16,9,16,16,16,16,14,15,9,16,16,19,16,14,15,13,14,18,21,16,16,14,16,9,14,16,21,16,16,16,16,16,21,14,13,16,14,16,16,16,16,14,16,16,14,16,14,23,16,16,14,21,16,16,9,9,16,24,24,16,21,9,16,16,16,24,15,16,15,13,21,16,16,16,14,19,16,16,9,21,16,14,16,14,9,22,16,16,14,16,16,14,16,16,13,19,16,19,16,21,21,29,16,19,19,21,17,21,14,16,18,16,16,19,13,16,19,16,16,19,16,13,16,16,16,14,19,16,13,24,14,26,16,17,24,16,14,14,16,16,16,26,23,16,16,16,16,21,16,16,16,16,16,19,19,13,19,14,9,21,19,8,8,8,8,8,16,21,21,14,23,16,14,16,21,16,16,21,16,14,19,28,21,21,9,21,16,19,21,16,16,21,13,9,16,16,19,16,9,19,16,16,19,26,16,16,21,16,19,16,16,16,21,22,16,16,16,13,21,16,17,24,21,18,14,16,16,18,22,16,24,16,24,16,19,16,9,17,9,9,15,14,16,16,21,16,15,16,16,16,16,21,21,21,21,16,17,14,14,21,14,16,16,16,16,21,16,21,14,19,9,13,24,21,19,16,14,13,13,17,16,17,23,16,9,16,18,16,9,21,13,21,23,26,16,19,9,16,16,19,19,21,16,16,21,16,16,19,17,14,9,14,16,19,21,16,16,9,14,16,21,16,16,16,16,16,21,16,16,16,19,21,29,16,16,24,21,16,16,16,16,14,16,14,16,16,16,16,16,16,16,21,16,16,16,22,16,9,21,13,16,19,9,16,16,16,16,16,21,16,16,9,23,16,14,19,16,21,16,9,16,13,14,21,16,16,16,21,16,16,13,9,8,8,8,8,16,16,16,16,16,16,19,16,16,19,16,16,16,19,16,22,14,13,14,19,19,16,16,16,19,21,21,16,19,15,17,16,22,18,16,9,21,21,19,16,13,21,16,13,19,16,14,19,16,16,16,16,21,16,13,14,16,21,16,15,18,19,15,21,16,9,16,16,16,16,16,16,16,24,14,21,16,16,21,16,16,16,16,19,19,17,14,19,21,21,21,13,22,19,16,15,21,19,19,14,15,15,14,16,16,21,14,21,16,16,16,16,21,16,16,13,16,14,15,19,13,16,14,16,16,16,16,21,13,22,16,21,19,16,15,16,19,16,14,17,16,16,24,16,16,16,16,16,23,21,14,21,21,16,16,16,13,21,23,16,16,16,16,13,21,21,22,16,9,16,21,19,16,16,16,21,16,21,16,15,18,16,16,16,9,16,19,9,14,14,16,16,9,16,15,16,16,15,15,16,16,16,16,16,19,14,16,14,16,16,19,16,9,21,17,14,19,16,16,21,16,21,15,14,16,22,9,9,16,21,8,8,8,8,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,22,9,16,16,21,16,21,9,16,16,16,14,16,16,14,13,16,21,13,21,16,16,21,14,16,19,16,21,16,16,16,16,16,19,21,16,16,16,21,15,16,9,17,16,16,16,15,16,21,14,9,16,16,18,16,16,19,16,19,16,19,16,19,24,24,19,17,14,16,21,16,14,16,16,16,15,19,9,16,16,16,16,16,16,21,21,19,16,14,16,16,16,19,16,21,16,16,29,16,16,14,15,21,16,14,16,16,16,26,16,14,16,16,15,16,16,21,16,21,21,16,16,9,19,16,21,13,16,16,16,16,16,16,22,21,16,21,16,13,16,16,16,15,16,21,21,23,16,21,21,28,16,16,16,16,9,16,16,16,21,21,16,16,19,16,16,16,9,16,13,13,15,19,21,16,21,16,17,16,21,19,16,16,14,16,16,16,16,14,9,16,16,21,16,14,16,19,21,23,16,16,16,16,15,16,16,21,21,16,9,13,21,18,14,19,16,8,8,8,8,16,16,14,21,19,16,16,16,16,21,16,15,21,24,15,13,21,16,15,19,16,14,16,24,16,19,14,19,13,18,19,16,16,16,16,16,16,17,16,16,21,16,14,22,14,23,14,16,19,16,21,16,16,16,16,21,16,16,21,16,16,16,16,9,15,21,21,16,13,16,21,19,16,16,21,16,16,18,16,21,16,16,16,16,16,16,14,21,21,16,15,14,14,14,16,19,16,19,16,21,22,16,16,16,16,16,19,16,21,21,16,16,16,16,13,21,14,16,21,16,16,16,9,16,24,9,14,16,16,21,19,22,14,16,16,14,16,16,16,21,16,16,21,21,9,19,21,21,16,22,16,16,21,16,21,13,18,16,16,16,15,19,22,16,13,9,19,19,13,14,21,15,21,19,16,16,16,16,19,16,19,9,16,19,16,16,16,21,16,16,16,21,23,16,18,16,16,19,22,16,16,17,16,21,13,9,9,21,16,17,13,21,17,16,14,16,16,15,8,8,8,8,13,16,14,14,19,16,21,16,16,16,24,19,14,15,16,16,16,16,9,16,21,15,16,18,16,14,16,16,16,22,16,14,14,16,16,21,14,16,16,16,9,16,17,14,16,16,21,14,14,9,14,19,21,19,16,16,13,16,26,15,16,16,16,14,21,16,16,16,14,16,9,21,16,16,16,14,16,18,21,16,16,17,16,19,13,16,18,22,16,19,15,21,19,19,16,19,16,16,16,19,14,16,16,16,16,19,9,21,15,28,24,16,16,16,16,9,16,16,13,16,16,19,18,19,21,16,16,16,16,19,16,14,21,16,19,16,19,16,16,16,16,19,16,24,18,14,13,18,16,16,21,14,16,16,9,22,16,22,21,21,16,9,13,15,16,14,22,16,22,9,14,16,16,16,16,16,21,14,16,19,16,9,14,16,16,16,16,16,16,22,16,13,21,22,15,21,25,19,16,21,26,19,16,16,14,16,19,14,21,16,13,16,16,16,16,16,16,21,13,8,8,8,8,18,16,21,16,28,9,16,21,18,21,16,16,14,21,21,21,16,16,16,19,9,21,19,21,16,16,22,21,19,16,9,16,14,16,16,21,16,21,22,9,16,16,9,16,25,16,19,21,19,14,16,14,26,17,21,21,19,16,14,16,21,21,19,16,21,16,16,23,14,16,17,21,16,16,17,16,29,14,19,16,17,13,17,18,16,16,18,16,16,16,16,19,21,21,16,16,16,15,16,21,9,9,16,16,16,16,16,16,16,16,14,16,22,19,14,16,9,22,19,14,16,16,14,16,16,17,21,16,9,16,14,17,16,19,16,16,19,9,16,21,16,16,16,21,21,16,16,15,16,15,21,9,14,16,17,22,16,15,19,16,21,16,16,21,16,19,14,16,16,16,16,19,13,21,21,16,19,16,21,16,19,21,16,15,16,19,16,16,16,16,16,16,16,16,21,16,16,14,16,21,19,21,21,9,16,9,22,19,16,9,19,19,16,16,16,22,21,16,8,8,8,8,21,18,16,9,28,16,16,16,19,16,16,16,19,16,14,17,16,17,16,19,21,22,14,21,21,21,16,16,16,21,21,13,14,28,9,16,16,21,16,19,18,16,16,16,19,9,16,16,16,16,16,16,16,14,9,16,16,16,26,21,16,13,16,16,16,13,16,21,16,16,16,21,21,21,16,13,16,13,19,16,16,18,19,14,16,16,16,13,19,14,16,21,16,21,16,17,16,16,14,19,14,16,16,9,16,16,16,16,19,21,16,14,16,21,16,16,13,17,16,16,16,21,16,21,14,13,16,22,16,16,16,16,16,9,16,18,9,18,16,16,16,16,19,21,16,16,17,17,19,16,19,16,16,16,21,16,14,16,19,16,9,24,16,16,19,16,16,16,16,16,14,14,22,22,16,16,16,16,16,16,16,16,22,21,21,16,16,16,16,14,16,16,26,16,14,16,16,16,16,16,13,16,16,16,16,21,16,28,16,16,19,22,16,19,19,16,19,22,18,19,21,21,16,8,8,8,8,21,9,21,17,16,16,16,19,21,14,19,16,14,19,9,16,14,16,14,21,16,16,21,16,16,21,14,16,16,16,16,24,16,16,17,16,21,17,16,14,14,21,16,16,21,21,13,9,21,21,16,16,16,21,16,16,19,16,21,16,16,16,16,16,16,21,21,26,21,21,16,16,16,21,16,15,21,13,9,21,16,17,16,21,16,16,16,16,16,24,16,16,16,14,26,16,21,14,15,16,19,16,16,19,16,22,14,16,16,14,16,16,14,16,16,16,19,16,16,18,14,21,13,15,14,9,16,16,16,14,21,16,21,16,19,16,14,16,24,16,16,16,21,16,15,15,15,16,19,16,17,21,13,16,16,16,16,28,9,16,18,17,16,13,16,16,16,19,16,16,16,15,16,16,18,21,17,16,21,16,14,14,16,16,16,16,16,19,16,16,16,18,21,9,14,25,22,13,16,16,16,14,19,14,16,21,16,16,9,14,16,16,16,16,16,21,16,16,8,8,8,8,16,16,19,26,19,21,16,15,15,16,16,21,16,16,14,22,16,16,21,16,19,19,16,16,21,14,16,14,21,14,14,16,14,21,21,16,19,21,21,14,21,9,21,16,16,14,19,16,19,16,16,9,16,14,16,21,21,16,13,16,23,16,9,14,16,21,19,16,16,16,21,14,24,15,16,21,16,16,21,24,21,16,21,19,16,16,16,21,14,16,21,13,16,16,16,16,22,21,21,16,21,19,18,16,15,16,16,16,16,16,16,16,21,16,21,21,14,9,16,16,16,9,21,9,19,19,16,24,16,14,21,16,16,9,21,9,16,16,21,23,14,21,13,21,9,13,9,16,16,16,16,14,16,9,9,16,9,16,16,14,9,19,14,14,16,16,21,13,16,15,14,16,21,16,15,16,19,16,21,18,17,9,16,16,14,16,16,16,13,16,21,21,14,16,16,16,16,16,17,22,16,14,21,16,16,16,13,17,22,9,16,21,21,16,14,14,16,16,18,16,16,16,16,16,16,8,8,8,9,16,14,16,15,16,19,16,21,19,13,16,9,16,16,19,16,15,16,21,21,16,16,16,14,9,16,16,13,28,9,16,21,16,16,21,21,16,22,16,9,9,19,16,16,16,19,19,14,16,16,15,15,9,9,19,16,16,16,16,16,16,21,21,9,16,16,21,15,16,16,16,21,16,16,13,19,16,9,16,21,16,16,17,16,16,16,16,16,16,16,26,16,9,21,19,21,16,16,21,16,16,21,21,21,16,25,14,15,9,17,16,22,13,21,16,16,13,21,16,13,21,16,21,21,24,16,16,13,16,21,18,16,16,16,21,19,16,16,16,9,16,15,17,21,21,21,22,19,16,15,16,16,13,21,9,16,16,14,9,14,21,16,16,14,14,26,19,19,16,13,16,14,16,16,16,8,23,16,16,23,22,21,14,13,14,19,16,21,19,16,16,16,13,21,16,13,21,16,13,13,19,16,15,17,16,21,13,16,16,21,16,21,16,16,16,16,21,14,16,21,14,19,14,16,16,8,8,8,8,16,19,19,16,15,13,21,19,16,19,19,19,16,16,16,14,16,16,17,19,16,16,16,28,19,26,13,16,16,16,16,16,21,16,16,16,19,16,16,21,16,14,27,14,16,21,16,16,14,21,21,14,16,16,16,16,16,16,16,16,13,9,23,21,19,16,16,16,16,14,9,16,21,16,16,19,16,16,14,16,9,14,16,16,24,17,13,13,9,9,16,9,16,19,26,19,19,16,19,16,8,16,16,19,16,16,19,16,16,19,16,16,14,13,21,16,14,16,9,16,16,14,14,16,16,16,9,16,14,16,13,15,14,16,14,16,16,16,16,16,16,16,16,16,21,16,18,16,16,21,13,14,16,16,16,19,19,16,16,21,16,19,16,16,16,19,21,16,14,16,21,21,21,9,16,16,16,16,15,22,21,22,22,21,16,16,16,9,16,9,16,19,16,16,16,21,14,17,16,16,15,16,14,16,14,9,16,18,16,14,16,16,21,16,16,16,8,8,8,14,14,19,16,16,16,21,16,16,9,16,16,14,19,13,15,16,21,14,16,16,16,14,22,16,13,21,16,9,22,16,21,21,16,21,9,16,9,9,16,16,21,16,14,16,16,16,16,21,21,16,16,21,14,15,16,21,21,13,19,26,21,17,19,21,14,16,26,16,16,16,16,9,15,16,22,16,22,16,21,16,21,21,16,16,21,16,19,21,16,9,16,9,23,25,16,16,21,21,16,26,16,9,16,16,16,21,19,19,19,9,16,16,9,16,16,16,19,16,15,9,16,16,16,16,21,16,16,16,16,16,14,16,19,9,16,14,16,16,16,19,16,14,16,16,16,16,16,14,21,14,16,16,16,16,19,16,15,21,14,16,16,21,16,16,19,16,16,16,14,16,14,16,21,16,16,21,16,16,18,16,15,16,16,21,21,19,16,24,16,16,21,16,13,19,16,14,16,13,21,16,13,16,16,16,21,21,22,16,21,13,14,16,21,13,16,9,14,8,8,8,8,23,9,16,16,21,16,16,16,14,16,16,26,16,16,9,19,15,16,16,16,16,16,19,13,16,19,16,14,21,28,16,21,16,16,15,13,19,16,19,14,16,16,17,19,16,19,21,9,17,21,16,16,13,16,16,16,16,21,14,16,17,16,14,17,16,21,16,21,19,16,21,22,16,16,9,21,16,9,16,16,19,13,9,21,16,21,21,21,16,16,15,16,15,16,16,13,16,14,16,16,16,16,16,19,16,16,16,14,16,16,16,18,19,9,16,16,9,23,16,16,13,16,16,16,16,13,17,16,9,23,17,16,14,16,14,14,13,16,21,14,14,16,17,17,19,16,16,16,16,22,17,16,24,15,16,21,21,14,16,16,16,16,21,16,19,16,16,16,19,21,13,13,16,22,24,16,17,21,21,16,21,21,16,16,16,13,16,16,9,16,9,16,21,19,15,21,14,16,16,17,13,16,14,16,16,16,16,21,16,16,15,22,16,14,16,19,16,22,16,16,16,9,18,21,16,8,8,8,14,16,9,19,19,14,16,13,18,18,19,23,16,16,14,16,22,16,21,16,16,13,22,16,23,14,14,21,16,13,16,16,16,15,19,15,16,15,16,16,16,16,16,16,17,16,14,19,16,21,16,21,21,16,16,9,16,16,16,14,13,21,21,16,19,18,19,16,16,16,16,9,16,14,16,16,16,16,14,21,9,14,13,16,16,16,13,21,19,16,16,14,16,9,19,16,16,16,16,16,16,13,15,16,16,16,19,21,16,21,16,13,14,21,16,16,16,14,19,21,14,25,16,19,16,16,23,16,16,16,21,19,16,19,21,18,9,16,16,16,16,16,16,17,21,14,16,16,24,21,19,14,22,21,14,22,21,9,19,16,16,16,22,16,16,16,14,16,16,16,19,16,24,16,14,21,16,21,16,16,16,22,16,21,21,16,9,18,16,21,16,21,17,9,16,16,24,16,16,16,16,14,16,16,16,16,21,16,16,17,21,14,8,8,8,8,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,21,16,16,16,22,16,16,16,21,16,21,16,16,19,21,13,21,16,16,13,18,16,22,19,21,16,26,16,13,14,16,16,16,19,13,22,16,19,16,19,16,13,14,21,19,16,14,9,21,15,21,14,16,19,14,22,14,22,16,16,21,21,16,16,24,16,16,23,16,16,16,16,14,16,19,16,16,21,16,16,16,24,17,13,14,14,14,16,25,21,16,16,16,16,21,16,21,13,16,9,14,16,16,16,19,16,14,13,19,14,21,22,19,21,16,21,21,16,16,16,16,13,9,14,17,9,21,16,21,16,16,16,16,19,16,21,22,21,16,16,21,16,18,19,14,16,16,19,16,16,21,16,17,13,16,9,16,19,21,9,16,21,21,16,14,16,15,16,16,19,16,21,18,16,16,16,16,16,21,13,16,14,16,16,9,21,21,16,16,15,16,19,19,16,16,19,15,16,19,21,21,16,16,16,22,14,17,16,9,15,15,15,21,16,16,21,16,14,13,9,17,16,17,16,18,8,8,8,8,13,16,14,22,16,21,16,23,19,16,16,21,21,16,13,16,19,9,18,21,14,16,17,16,21,16,9,19,22,16,16,16,21,9,19,19,16,16,21,9,16,16,16,21,16,16,19,16,19,15,16,13,21,16,15,19,21,21,16,17,18,16,24,16,15,16,14,19,19,16,22,15,22,16,16,18,16,16,16,16,21,16,19,21,19,16,13,14,16,16,16,17,14,16,16,19,16,16,16,16,16,16,16,19,16,17,16,16,21,16,16,9,16,21,16,13,14,16,24,17,16,22,14,15,16,19,9,13,13,22,16,16,16,16,19,16,16,15,19,16,16,16,16,21,18,17,16,19,19,9,17,19,19,16,9,14,16,19,16,26,16,16,14,16,16,16,22,21,19,14,21,26,15,21,16,16,16,16,14,16,16,22,21,16,16,16,14,21,14,16,24,14,21,19,19,21,9,16,16,9,23,17,16,21,16,16,16,14,16,16,21,16,14,15,19,24,21,19,16,22,22,9,16,19,16,8,8,8,8,16,21,16,16,19,19,21,19,16,16,19,16,16,16,16,16,19,21,19,16,21,9,13,19,16,16,16,16,14,19,23,16,21,19,16,16,16,19,19,15,16,9,21,14,16,14,16,16,16,16,16,21,16,21,21,14,18,24,16,21,16,22,14,16,16,16,16,16,14,16,16,19,16,16,16,22,16,16,21,16,19,13,16,21,16,16,19,16,19,16,16,16,17,16,16,19,25,16,16,21,14,16,16,16,19,13,16,16,21,13,16,16,25,24,21,16,16,16,15,16,16,13,16,9,16,14,14,16,16,19,16,21,16,16,16,14,19,16,16,18,13,13,19,16,14,16,9,14,14,16,16,21,16,24,21,16,16,16,21,21,21,16,21,14,16,16,19,23,14,22,16,21,16,17,24,21,16,16,22,16,16,14,21,21,16,16,19,16,16,16,22,16,16,16,22,13,13,16,18,26,19,9,13,19,16,24,21,19,16,16,21,16,16,14,16,16,16,16,16,16,16,14,14,19,16,8,8,8,14,16,16,16,16,16,16,16,16,16,16,9,16,21,16,16,16,21,16,16,16,16,14,21,16,21,29,16,9,19,16,15,19,16,21,16,16,16,22,16,16,26,16,19,19,21,15,16,16,19,19,16,16,14,21,16,14,14,16,19,19,18,16,21,16,16,16,16,16,16,22,21,14,19,13,16,16,16,16,9,21,16,13,14,16,9,16,22,24,19,19,9,14,21,9,9,16,23,17,28,16,9,16,13,16,21,16,19,21,14,16,16,21,9,16,16,16,16,13,21,16,14,16,9,14,16,16,14,16,19,18,16,16,16,16,21,16,9,9,9,16,16,19,17,21,9,19,21,24,13,21,16,19,16,16,16,16,16,22,16,14,16,21,16,23,18,21,18,21,24,17,19,26,16,16,14,16,9,16,16,13,21,14,16,14,21,14,16,21,21,16,19,19,19,15,16,21,19,16,16,16,16,14,22,17,16,21,16,19,16,21,16,16,21,16,14,8,8,8,16,16,15,16,18,21,9,16,9,16,21,13,15,16,19,16,16,21,21,16,21,21,16,16,16,16,16,25,16,21,13,16,14,9,16,16,21,16,18,16,13,21,14,16,19,21,16,16,19,9,19,19,16,9,16,16,16,17,21,21,19,16,24,19,14,16,16,16,21,21,19,21,21,19,21,16,14,16,16,16,16,16,16,16,16,16,16,16,21,16,16,13,9,16,16,19,14,16,16,16,16,22,26,9,9,14,16,16,22,16,14,21,16,23,16,21,14,14,16,14,16,16,16,16,19,23,17,16,16,16,9,15,9,21,17,16,16,21,9,19,21,21,16,16,14,16,16,16,16,9,21,16,21,16,16,16,17,13,16,14,22,16,17,16,16,16,16,16,25,16,9,16,16,16,19,16,16,14,16,16,16,16,13,16,19,16,16,16,18,14,16,26,19,19,14,16,14,16,16,16,16,24,22,18,9,16,9,19,16,21,16,16,16,22,16,16,8,8,8,21,19,16,16,16,21,16,16,19,16,16,14,16,13,18,16,16,9,14,21,14,16,14,21,23,16,16,19,13,15,16,16,16,16,21,15,9,13,16,14,16,25,16,16,14,16,16,19,21,9,16,16,16,16,21,16,19,21,24,14,16,9,16,16,16,16,16,14,16,16,16,16,16,16,23,16,19,16,13,19,16,9,16,16,16,16,16,16,16,21,16,19,16,16,16,16,16,16,21,16,14,15,9,16,13,19,21,16,16,13,21,16,13,16,16,9,16,19,21,19,21,17,14,16,19,16,16,16,16,16,14,16,16,9,16,16,21,9,15,16,16,16,16,15,16,21,14,17,21,16,16,21,16,16,13,22,21,16,16,26,16,13,16,14,16,21,16,16,19,16,22,21,21,21,24,16,16,16,22,21,19,16,16,17,14,16,19,16,16,16,16,24,16,16,16,21,9,19,9,16,19,16,21,16,19,16,9,16,16,21,16,14,16,21,22,19,16,19,21,8,8,8,21,16,21,16,21,16,16,16,16,13,13,16,16,16,16,19,19,16,16,22,21,19,16,23,16,16,16,16,13,16,16,16,16,29,16,19,16,16,16,16,16,16,16,16,16,16,14,21,23,19,16,16,14,16,16,13,18,27,26,26,16,16,16,16,21,16,16,16,14,15,16,14,16,16,16,16,21,16,16,16,16,28,16,13,19,21,13,16,13,16,9,22,21,16,19,17,19,16,16,15,16,24,16,16,24,16,21,9,14,16,16,14,21,16,16,16,16,16,16,15,14,9,21,16,19,23,16,16,21,16,16,16,16,16,13,16,16,16,9,16,16,13,14,14,14,21,22,16,16,16,16,22,19,16,9,16,16,16,16,19,16,21,9,16,16,16,16,21,19,26,26,21,16,14,16,21,21,21,19,9,21,16,19,16,15,9,16,14,28,13,16,9,16,14,16,21,16,15,19,16,21,9,18,14,19,16,16,13,16,13,16,19,19,21,21,16,16,13,16,24,21,16,23,16,16,16,8,8,8,9,21,16,16,16,21,16,16,19,14,8,13,16,23,16,19,16,16,16,21,16,16,19,16,21,13,21,17,19,16,16,19,14,16,16,16,17,19,19,16,16,16,16,16,21,9,9,16,19,16,21,21,16,19,16,14,15,16,16,16,16,16,22,23,16,22,16,16,17,9,19,21,16,16,16,16,16,16,16,21,16,16,14,14,14,24,16,19,16,15,17,16,16,14,16,21,16,16,21,19,21,16,16,19,16,22,16,15,16,16,21,13,16,17,15,19,17,16,16,16,14,16,14,14,9,16,25,16,16,14,19,22,14,21,14,16,24,19,16,14,9,16,16,19,21,21,16,16,16,16,14,21,16,16,14,16,13,19,19,16,9,14,21,9,21,16,16,16,16,9,13,16,19,13,16,21,18,16,16,16,16,19,14,17,16,9,14,16,16,16,16,24,16,16,13,9,16,13,19,9,17,16,16,21,16,16,16,9,9,19,16,16,16,16,16,9,14,16,16,13,14,8,8,8,8,17,16,16,16,16,9,16,16,22,16,16,16,21,21,15,21,16,9,16,26,16,16,16,9,9,22,16,16,16,16,16,16,14,14,23,16,21,16,14,22,16,14,17,21,21,16,19,16,14,24,15,16,16,16,16,21,16,16,16,16,17,16,16,15,13,14,19,17,16,16,16,16,23,19,16,16,16,21,16,16,17,13,9,16,16,16,17,21,21,25,21,16,21,16,16,16,15,16,14,17,19,16,19,16,24,16,21,16,16,19,18,16,16,19,16,16,16,21,13,21,16,21,16,16,21,19,13,13,17,19,16,16,16,26,13,18,19,16,16,16,16,16,19,16,16,16,16,21,21,17,21,16,15,19,14,13,9,15,16,18,19,16,16,21,18,16,16,16,13,22,16,9,19,14,14,16,21,21,14,16,21,16,15,16,21,21,14,17,21,16,16,25,16,16,16,9,16,21,16,18,16,16,14,21,16,16,19,16,21,16,16,16,13,16,14,13,21,16,16,16,16,9,16,13,19,13,16,15,16,16,8,8,8,8,8,9,16,14,16,21,16,16,9,16,16,16,16,19,18,14,19,16,19,16,16,16,16,21,19,16,16,16,16,19,21,16,16,14,16,14,16,19,16,14,16,23,19,16,16,26,9,16,21,16,16,16,21,9,14,16,21,22,21,16,16,21,21,14,19,16,16,21,17,19,9,14,16,19,24,9,16,21,21,21,19,13,16,18,16,14,15,16,16,19,16,21,21,19,16,9,19,21,19,9,14,16,16,16,9,19,19,16,16,16,21,16,16,15,21,16,16,14,19,14,22,21,14,16,13,16,21,16,9,19,23,9,16,17,16,16,16,21,16,14,16,16,16,16,26,21,16,14,16,16,16,28,21,16,19,16,19,19,15,13,17,22,9,19,17,14,16,16,19,16,16,16,16,21,16,19,16,14,21,19,16,16,16,19,19,19,17,13,19,22,16,16,19,19,19,16,19,16,21,13,16,16,14,16,26,13,16,21,16,13,21,22,21,16,16,16,16,21,16,16,16,16,17,16,16,21,16,16,16,23,16,16,8,8,8,8,16,14,19,16,19,16,9,16,16,14,21,16,16,9,19,16,16,16,22,16,24,16,23,16,16,19,14,17,19,16,21,21,18,14,15,16,16,16,21,14,16,16,16,18,16,13,16,16,21,14,9,18,16,15,22,19,16,16,16,14,21,21,19,16,16,16,14,16,16,16,16,19,21,16,16,21,16,16,14,19,14,21,24,16,16,16,16,14,16,21,22,23,16,16,9,21,19,21,19,16,27,17,16,16,19,16,16,24,16,24,16,24,16,18,19,16,16,9,14,16,26,9,9,16,23,9,16,16,16,19,16,14,21,16,18,18,16,16,16,16,16,14,21,15,16,16,16,16,13,9,16,16,16,22,14,9,13,21,16,14,16,19,16,14,16,14,19,22,16,9,13,19,16,16,14,14,16,21,17,21,9,21,16,19,14,18,21,16,16,16,24,16,19,21,19,16,16,26,16,16,17,21,16,16,19,21,13,16,16,16,16,16,16,16,22,16,16,21,14,16,22,21,14,16,16,16,14,8,8,8,8,8,21,16,21,13,16,16,21,16,25,16,16,16,16,21,14,16,16,16,21,16,16,15,18,16,16,13,16,16,14,21,9,21,16,16,13,16,22,26,16,9,16,9,16,13,19,21,24,19,16,16,16,16,16,17,21,19,16,16,16,13,16,17,19,19,23,19,19,9,16,16,16,21,16,16,24,21,14,16,16,16,29,16,13,16,21,16,23,19,16,16,15,13,9,21,16,21,15,9,16,21,21,16,13,16,21,22,15,16,21,14,16,16,14,9,9,19,21,21,16,22,14,19,14,16,16,14,16,16,13,18,13,21,14,21,16,16,22,21,21,15,21,21,16,19,16,14,16,21,17,14,16,14,16,16,16,22,19,14,19,19,18,16,16,13,16,16,16,14,16,14,15,21,16,16,16,16,19,16,16,16,16,14,19,9,16,14,23,21,9,16,16,13,16,9,16,16,16,16,21,16,18,16,16,16,16,16,14,26,19,16,16,21,13,17,9,17,16,16,19,19,24,19,25,9,14,9,16,15,8,8,8,8,21,16,21,16,16,24,14,16,14,16,15,21,16,16,19,14,14,19,19,21,19,21,21,16,16,19,16,16,16,21,16,14,23,14,21,16,16,14,16,16,19,16,13,21,19,15,16,14,21,16,21,16,14,19,16,16,16,19,22,16,14,14,16,9,14,16,13,19,16,19,15,16,16,16,16,16,16,21,21,14,16,14,16,16,13,16,14,14,21,14,16,16,19,16,16,14,9,21,13,16,16,16,16,21,16,15,16,16,16,16,17,21,16,26,16,14,16,22,16,13,19,16,17,16,16,22,14,16,16,16,16,16,16,16,26,21,17,21,21,16,16,21,15,16,16,28,24,13,16,16,16,16,15,22,16,16,9,21,19,15,16,16,16,16,17,16,19,16,16,21,16,16,16,16,9,17,14,16,21,13,16,22,21,24,16,14,21,21,16,16,14,16,16,16,16,16,16,21,16,16,19,16,17,22,16,15,16,16,16,14,16,21,16,9,16,21,16,16,16,16,16,16,16,16,21,16,9,8,8,8,22,16,16,16,16,16,14,16,9,22,21,26,16,17,14,14,16,21,16,16,16,16,16,21,14,9,16,16,16,21,9,16,19,16,21,16,14,16,16,21,16,16,16,16,15,19,15,16,16,13,21,16,16,16,21,19,19,19,16,16,21,16,16,15,14,14,16,17,19,16,15,23,21,18,16,19,16,16,21,16,13,16,14,19,21,24,16,16,19,16,21,14,21,16,14,16,16,19,14,13,17,16,15,21,18,16,16,16,19,16,21,16,14,17,14,16,16,21,21,19,21,14,21,16,16,14,16,16,22,16,13,16,9,17,21,18,22,16,14,21,16,16,16,14,21,19,14,21,16,16,13,19,14,16,16,17,16,14,16,14,21,16,16,16,19,21,14,16,21,16,16,21,21,21,16,21,14,21,14,16,21,16,16,14,13,21,13,13,16,19,19,22,26,21,16,16,16,16,21,16,16,19,16,16,16,19,16,19,19,16,16,13,16,19,16,16,8,8,8,16,9,14,19,16,16,16,15,21,16,16,16,16,16,19,19,14,19,14,19,22,16,9,16,16,16,16,18,14,21,21,16,19,16,14,16,16,14,13,24,13,21,16,16,16,19,16,16,16,19,16,16,15,16,19,15,26,9,14,13,21,21,16,9,14,26,19,19,16,16,24,16,16,16,15,16,17,16,16,16,13,16,16,16,16,16,16,9,16,16,21,16,14,16,16,9,14,16,19,17,14,16,16,16,16,16,16,19,16,19,19,15,16,16,16,16,21,16,16,16,16,21,17,16,14,16,9,16,16,16,19,16,16,15,21,16,19,16,8,16,21,16,16,16,16,21,9,17,16,16,16,15,21,16,16,16,16,16,16,16,22,21,21,19,22,24,15,14,16,16,21,16,16,16,14,15,21,16,16,13,15,16,19,21,16,13,22,19,16,14,16,16,22,16,9,17,26,16,16,16,16,21,16,21,16,14,16,16,14,14,19,14,16,14,8,8,8,16,19,16,24,16,18,19,16,16,17,16,21,16,14,21,21,9,16,19,16,16,16,14,16,16,16,16,21,16,16,19,19,14,16,21,13,21,16,16,16,16,25,21,24,16,16,16,14,16,16,14,16,14,25,15,16,16,15,15,19,21,16,29,21,16,16,16,16,21,19,15,9,16,16,16,16,14,15,14,16,21,19,19,21,19,14,16,16,21,21,15,16,16,16,21,19,9,21,16,9,16,21,16,9,9,16,16,13,24,17,26,16,16,13,16,16,14,14,16,16,16,21,16,24,19,16,16,18,9,9,16,16,14,16,21,16,16,16,16,16,16,21,16,16,16,16,16,21,19,16,8,8,8,8,8,8,13,16,16,21,9,16,19,9,16,13,15,16,16,16,21,23,17,9,16,16,23,18,16,21,14,9,14,16,18,16,16,16,19,21,22,9,13,21,16,21,16,9,24,9,14,19,18,14,21,16,14,16,16,16,14,15,16,14,8,16,21,19,16,18,14,16,21,16,9,16,16,16,16,19,21,16,16,16,15,16,16,15,16,16,13,16,19,16,21,21,21,16,16,19,9,21,15,15,14,9,19,14,16,16,16,16,21,16,21,15,16,9,9,16,19,21,16,19,19,23,16,9,15,16,16,21,9,21,16,13,16,21,16,16,14,17,19,14,16,21,21,16,16,16,19,16,16,14,9,16,19,14,16,16,13,14,9,14,16,16,19,9,16,16,14,23,16,16,19,16,16,16,16,16,13,16,27,16,21,17,16,13,14,9,21,23,13,16,16,22,18,17,14,16,16,16,24,19,23,16,16,21,19,9,21,16,19,16,23,9,16,16,16,13,16,16,16,14,14,16,16,14,16,26,17,8,8,8,8,16,19,19,9,17,16,16,16,14,18,18,17,17,16,13,14,24,16,18,14,16,21,14,22,14,16,21,19,16,15,17,16,16,14,18,16,23,16,16,16,16,16,14,14,21,16,16,16,16,16,16,13,9,21,21,15,17,16,16,16,21,16,14,16,16,21,14,16,21,14,16,16,16,19,16,19,16,21,16,19,19,16,15,16,16,14,16,9,16,21,18,13,21,17,16,16,21,16,14,21,9,24,16,16,14,15,21,16,21,22,16,16,21,16,25,9,21,16,9,21,16,13,16,16,19,16,16,16,21,22,16,14,16,16,21,15,14,16,21,22,14,19,14,15,16,14,9,21,16,22,21,13,16,16,16,16,16,16,16,16,16,16,14,19,21,14,19,21,16,21,13,16,21,19,16,24,16,17,16,26,22,16,21,21,21,14,16,16,21,14,21,16,26,14,19,15,14,21,16,16,16,16,16,16,16,16,19,16,24,13,24,21,21,14,13,24,24,16,19,16,16,26,16,16,23,8,8,8,8,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,21,16,16,16,19,16,9,16,16,15,16,16,16,16,16,14,16,16,21,16,19,16,21,16,16,19,16,17,16,16,13,21,16,16,22,28,16,9,19,14,14,16,14,19,9,16,16,14,19,19,21,24,17,19,16,21,16,21,16,21,13,16,19,19,14,14,16,16,16,21,16,16,19,19,13,14,19,14,15,16,16,14,16,19,16,16,16,15,22,14,17,16,14,13,16,19,9,19,16,14,22,16,16,16,21,16,16,21,21,16,16,16,23,16,16,19,16,16,21,16,16,21,16,16,16,16,16,16,23,16,16,21,16,19,16,16,19,18,19,16,16,21,21,21,14,19,16,16,26,16,21,16,17,21,16,15,16,9,16,19,13,16,21,16,13,21,21,16,22,16,16,16,26,14,22,26,21,16,16,16,9,21,9,23,16,14,19,15,22,16,13,16,16,16,16,16,16,16,21,16,16,16,16,9,16,9,9,16,14,14,25,14,21,16,13,16,16,16,16,22,16,21,16,16,21,8,8,8,8,8,16,16,16,16,16,16,21,16,14,16,13,9,22,16,16,9,13,13,16,21,22,13,16,15,16,16,16,16,24,22,22,21,21,16,24,19,16,15,21,16,16,16,16,16,16,16,18,19,19,13,22,16,26,16,21,19,16,16,21,16,16,14,21,16,18,16,17,15,16,16,16,16,16,21,21,16,21,16,16,16,21,16,16,16,9,17,16,19,16,19,17,16,16,16,13,13,16,14,21,22,21,16,16,16,16,16,9,16,16,18,21,16,16,19,16,16,16,16,21,16,19,21,9,16,16,14,16,14,9,19,21,21,22,19,16,16,19,16,16,16,16,19,16,27,16,16,16,13,16,16,16,16,9,23,16,16,16,16,25,16,16,16,16,16,21,16,16,18,21,16,16,17,16,16,19,16,22,14,16,19,14,16,16,16,21,16,16,16,14,16,14,16,19,16,13,16,19,9,13,16,23,16,16,18,21,16,16,19,14,16,16,19,16,21,9,19,16,16,9,16,21,15,19,16,16,16,16,8,8,8,8,16,16,16,16,9,16,21,16,16,16,16,14,19,16,16,16,16,21,15,22,19,19,21,16,16,23,14,16,21,19,16,19,16,14,13,14,14,16,16,16,16,16,14,14,16,16,22,21,16,22,21,16,15,16,16,21,22,16,16,17,15,21,22,21,9,16,16,21,16,16,15,16,16,16,21,9,17,16,16,9,26,16,16,14,19,16,19,19,16,16,21,19,13,16,16,16,19,18,21,24,13,16,16,16,16,21,16,19,16,16,21,13,16,18,21,16,16,16,13,16,16,16,18,16,19,21,14,16,13,16,21,14,23,21,9,21,19,19,16,16,16,16,16,14,16,16,19,19,21,21,19,16,21,13,16,13,22,21,16,16,16,14,14,16,16,19,16,23,16,14,22,16,9,22,16,15,16,15,16,21,21,14,16,16,19,9,16,9,13,22,16,16,14,16,16,14,16,16,9,19,16,21,16,16,17,21,16,16,16,21,16,16,21,17,16,21,23,16,16,16,21,13,16,16,13,13,8,8,8,14,21,24,21,17,16,14,23,13,16,15,16,26,24,21,16,13,15,27,14,16,9,13,19,21,21,17,19,17,19,16,14,16,16,16,13,21,21,16,16,16,19,26,9,14,16,14,19,16,21,9,15,22,14,13,19,19,8,16,14,19,16,22,16,14,16,9,18,16,16,16,16,24,22,16,21,16,16,16,19,22,16,24,16,16,16,14,15,15,19,16,16,16,19,19,21,16,13,16,19,16,19,19,16,16,9,16,18,14,19,16,16,19,19,16,16,16,21,16,9,16,16,16,19,14,21,16,21,16,16,19,16,21,21,14,21,16,16,16,16,16,16,26,16,16,26,16,13,16,19,13,16,14,16,16,16,16,21,9,14,16,16,9,19,24,21,16,24,16,16,9,16,18,21,9,19,16,16,16,16,16,16,16,14,16,13,19,16,14,15,16,16,13,16,16,9,16,17,16,16,18,16,16,17,16,26,16,26,14,9,22,14,13,16,8,8,8,16,14,19,16,21,19,19,16,16,16,16,16,16,16,14,14,16,13,21,16,16,16,16,24,21,19,16,16,16,16,15,16,14,21,21,24,13,19,21,21,16,16,18,21,14,14,19,21,9,16,16,17,14,19,19,14,24,16,16,16,16,16,16,21,16,16,9,9,21,16,16,16,19,21,22,15,21,13,19,23,21,19,17,21,16,9,21,16,16,16,16,13,16,16,16,27,14,16,16,13,9,17,14,16,16,16,16,16,15,21,16,16,16,14,15,16,21,16,19,9,19,9,22,14,16,9,15,21,19,16,16,15,16,21,21,21,16,16,21,16,14,16,16,19,16,16,14,21,16,16,19,16,14,16,16,25,14,16,14,14,9,16,16,16,9,16,26,22,16,16,16,16,16,16,16,16,16,16,16,17,16,16,13,16,21,16,16,18,16,16,16,16,16,14,14,13,16,16,21,16,21,16,16,21,22,13,14,16,19,16,14,17,21,19,14,26,16,16,18,19,8,8,8,14,14,21,16,19,19,16,13,16,19,16,21,9,19,16,9,16,16,19,14,13,19,19,26,24,24,16,15,21,15,22,16,16,19,17,16,13,16,19,16,13,13,13,16,16,16,16,22,21,14,14,14,21,17,16,16,9,16,16,16,14,14,14,16,16,14,19,16,14,16,9,26,15,19,19,16,19,16,19,21,16,9,21,13,16,9,16,16,16,16,19,16,16,14,14,13,21,14,19,16,22,16,16,16,14,19,19,14,21,16,16,9,19,16,16,19,21,16,13,16,14,16,16,21,14,16,16,14,16,16,16,19,16,17,13,14,16,19,14,9,19,19,19,16,13,14,16,21,16,18,16,16,16,16,16,19,21,16,14,16,16,16,16,16,16,16,16,16,16,19,16,16,21,16,16,16,16,14,16,16,16,16,16,16,19,16,19,13,19,22,14,21,14,16,16,19,13,21,14,16,17,21,9,18,16,18,19,19,14,16,14,16,17,16,13,16,8,19,21,16,8,8,8,9,16,13,13,16,16,16,9,16,16,13,21,16,23,16,16,21,16,16,16,24,16,16,16,17,16,19,21,16,16,21,16,9,14,16,16,19,14,13,9,19,16,9,16,21,19,26,16,16,16,16,17,16,14,16,21,16,21,21,21,21,16,16,14,16,16,15,16,16,16,13,16,16,16,9,16,9,21,14,14,19,16,16,16,16,22,16,16,16,19,16,16,16,21,17,16,9,21,15,19,16,16,16,21,16,16,16,16,18,9,16,21,14,16,19,16,16,16,16,14,16,21,21,16,19,21,21,16,13,13,19,16,16,21,16,16,19,19,16,16,16,13,21,16,13,19,14,16,16,16,16,16,16,21,9,16,16,21,16,16,19,19,16,14,16,13,16,14,13,16,16,25,16,16,13,24,19,16,16,16,16,14,21,21,21,16,21,16,16,16,16,16,13,16,16,26,16,16,13,16,19,16,21,21,16,19,16,21,16,16,13,21,16,14,16,14,21,16,16,21,9,21,8,8,8,16,24,19,21,14,14,14,16,15,21,16,19,17,16,16,16,16,26,16,16,16,26,16,13,19,13,16,16,16,16,16,9,16,16,16,21,21,17,16,16,16,19,16,22,19,14,16,16,15,21,13,16,22,16,16,14,13,16,13,16,14,22,16,15,21,22,16,14,21,14,17,9,16,22,16,16,13,16,21,16,16,16,16,21,16,16,21,16,16,21,23,21,16,16,16,19,16,16,24,16,16,16,16,16,19,16,21,16,21,22,19,29,21,14,16,16,21,16,17,16,16,16,16,16,16,16,19,15,16,13,15,28,16,17,15,16,16,16,16,21,16,16,19,21,17,15,13,15,16,16,16,21,16,16,16,21,21,14,16,21,15,24,14,16,16,14,16,16,19,16,13,16,16,19,21,16,13,16,21,21,16,16,13,15,16,21,16,16,16,16,9,9,16,19,16,24,21,16,16,16,16,16,16,21,16,9,13,16,13,19,16,13,14,17,16,16,16,16,19,21,9,16,19,16,8,8,8,8,17,19,21,16,19,13,21,16,16,16,14,16,16,9,16,19,15,16,16,18,19,21,19,13,16,18,15,19,19,16,16,21,9,21,21,16,14,17,16,16,16,28,16,16,14,13,14,21,21,16,16,16,15,21,15,14,21,13,19,16,16,21,16,16,21,23,16,14,22,13,26,16,16,14,14,19,22,9,18,17,16,9,21,17,13,14,24,16,14,13,13,13,16,16,16,15,16,16,19,16,19,14,9,19,16,21,16,19,14,14,19,14,16,16,13,21,21,13,15,16,16,16,14,18,17,14,21,17,16,21,21,21,24,21,16,16,24,17,16,16,16,9,19,21,16,16,16,16,21,29,16,14,22,15,16,14,13,16,9,16,28,13,16,19,16,16,26,16,14,19,16,21,21,14,9,16,19,16,16,19,16,26,21,16,16,21,21,14,16,16,19,15,16,19,21,16,21,16,21,16,16,16,14,16,16,16,19,21,21,16,21,16,16,14,19,14,16,21,21,16,16,19,21,16,8,8,8,8,19,19,15,16,16,9,14,16,15,16,16,16,16,21,26,16,14,16,19,16,14,16,19,16,16,16,13,18,16,16,16,14,19,16,14,9,19,14,14,21,16,22,16,16,16,16,25,13,16,23,21,14,18,16,21,16,16,16,16,16,14,16,19,21,16,16,14,16,16,16,16,22,21,21,16,24,9,21,9,16,14,19,14,16,16,16,16,21,21,19,16,21,14,16,19,16,21,16,14,16,16,16,16,16,14,9,16,16,16,22,16,16,15,14,16,16,19,14,16,9,16,16,24,9,21,16,19,16,14,22,16,21,16,16,16,16,16,16,19,16,16,21,16,16,16,16,27,24,13,13,13,16,15,15,16,16,16,16,17,16,24,16,14,24,28,16,16,19,16,16,14,17,15,21,21,16,16,16,16,19,21,13,16,16,16,14,24,16,16,14,19,9,16,21,16,16,16,9,16,26,16,18,22,14,18,22,9,16,19,19,19,16,16,16,14,13,9,18,16,16,17,17,19,19,15,16,8,8,8,16,16,14,16,16,24,15,16,14,16,16,13,16,9,16,16,13,21,16,16,21,16,16,9,14,21,16,21,16,21,16,16,21,26,16,9,16,21,13,24,16,21,24,16,16,21,16,14,16,14,16,16,16,21,16,9,16,21,14,16,14,19,16,16,14,16,16,16,16,21,16,19,16,22,16,21,16,16,17,19,16,9,22,14,13,9,16,19,16,19,16,16,19,16,18,16,16,21,16,16,16,16,16,19,16,21,14,14,16,16,16,19,19,16,14,16,16,16,16,16,21,13,21,13,21,16,16,13,16,16,14,23,18,19,21,16,14,19,14,21,13,14,16,16,16,16,22,16,21,26,19,16,16,21,16,21,16,21,16,16,16,16,13,26,16,19,16,16,16,16,21,16,16,21,16,14,16,14,21,16,16,21,18,16,21,17,16,14,16,9,26,19,16,17,16,16,14,14,16,15,21,21,16,9,16,16,13,21,13,16,19,16,19,21,9,16,16,16,16,15,16,16,9,15,23,8,8,8,13,16,16,13,14,19,16,16,25,14,16,21,16,19,14,21,21,16,21,16,22,21,21,16,16,16,19,21,13,16,21,9,16,16,15,21,21,28,19,21,16,16,16,16,13,16,16,16,16,16,13,21,18,19,19,16,16,16,16,16,16,16,21,19,16,18,19,13,9,16,16,22,14,15,9,21,14,16,16,21,16,16,16,16,16,16,13,16,16,16,23,26,17,19,21,21,19,16,16,21,16,16,21,27,16,15,16,21,21,16,15,16,22,16,14,16,14,16,16,19,16,21,21,26,16,16,21,16,16,16,21,16,16,13,16,16,21,16,16,16,16,14,16,19,21,16,14,16,19,14,16,15,24,14,16,14,16,19,14,9,19,13,16,19,16,16,16,14,19,16,21,16,18,16,21,22,16,9,23,23,16,18,16,19,19,16,16,16,15,16,19,16,16,21,21,16,14,16,21,16,21,21,16,16,16,21,16,21,16,16,16,16,16,16,14,16,15,19,16,16,19,16,19,15,19,14,9,26,16,8,8,8,16,16,9,16,9,16,9,14,16,16,19,16,22,16,16,18,26,16,16,13,16,16,21,23,16,16,16,9,16,16,16,19,16,14,16,16,16,21,21,16,16,13,16,21,16,16,15,14,16,9,21,16,23,17,16,16,16,21,16,16,18,16,21,16,14,15,23,17,9,16,16,21,21,24,16,23,14,16,14,14,15,21,9,16,14,21,14,19,16,19,14,9,16,16,16,16,16,16,16,16,21,16,13,21,13,14,19,16,16,16,26,23,9,21,14,21,16,14,19,16,16,16,16,16,18,29,19,13,13,16,16,16,9,18,24,26,19,21,16,15,16,16,16,21,16,15,24,13,15,16,24,16,9,21,15,21,13,16,16,19,15,21,16,16,14,16,22,16,16,21,16,16,16,19,15,16,16,16,19,14,16,16,16,16,16,22,13,19,17,13,9,21,14,16,16,16,22,19,9,14,16,16,19,16,21,16,14,29,13,26,16,16,16,9,16,21,22,16,19,16,16,21,16,16,16,16,8,8,8,8,16,16,14,21,16,16,19,16,14,16,9,16,16,16,13,9,16,16,13,16,16,16,15,16,22,16,9,16,16,14,21,16,21,13,16,16,21,16,16,16,16,16,16,16,16,24,21,16,17,19,16,16,16,16,9,21,16,21,16,19,23,13,16,14,14,19,19,21,16,21,16,21,16,16,26,13,21,9,16,16,16,16,13,16,21,14,16,21,16,21,16,16,16,17,21,16,17,19,16,16,9,16,21,23,9,16,19,16,16,16,16,16,21,16,16,21,16,16,15,16,21,21,19,16,16,19,21,16,16,16,16,14,17,19,14,16,14,13,16,16,9,16,21,9,9,9,21,19,16,16,16,16,19,16,16,19,16,22,16,16,21,16,9,13,9,16,16,14,16,16,16,21,14,16,16,15,16,14,16,19,13,16,9,16,18,23,16,19,16,14,16,16,16,16,16,16,16,16,16,13,16,14,19,9,19,19,21,16,16,15,21,14,16,21,19,14,14,13,8,16,16,21,23,21,16,16,8,8,8,9,19,14,14,19,9,19,9,16,22,13,16,14,16,16,19,16,19,18,16,15,16,21,16,14,21,14,26,16,18,14,21,21,21,13,15,16,16,15,16,22,14,22,13,16,13,16,19,16,16,16,16,16,16,16,21,14,14,16,18,16,16,16,16,16,16,16,16,16,26,16,16,16,23,14,16,16,16,21,14,21,16,21,16,21,16,16,14,22,21,14,19,16,13,19,9,16,16,13,16,26,16,21,16,16,19,16,16,24,16,23,19,16,16,16,16,23,16,16,9,26,13,13,18,16,13,16,16,21,9,16,19,16,16,21,19,14,19,24,19,16,21,21,22,19,16,16,16,16,21,21,16,16,14,9,16,13,18,16,16,16,16,13,21,21,21,14,16,16,18,16,14,16,16,21,16,16,24,16,16,17,15,22,9,9,21,24,16,22,14,21,18,21,13,21,26,16,16,16,19,16,21,9,19,16,16,16,13,16,19,16,13,14,16,26,14,16,16,16,21,16,14,14,21,16,16,16,8,8,8,21,21,16,16,19,16,14,16,16,13,16,19,19,9,16,16,16,19,14,16,22,14,16,19,21,16,16,16,19,21,16,21,21,15,24,16,16,16,16,16,16,19,16,16,9,18,14,16,21,16,16,16,16,15,16,16,16,16,19,16,14,19,19,16,22,13,21,14,22,14,19,14,16,21,16,21,23,16,16,16,16,16,19,16,9,17,16,16,16,26,16,14,14,14,16,9,16,16,15,16,16,19,16,16,16,16,17,16,19,15,21,16,19,21,16,16,19,16,16,16,21,16,21,14,16,9,21,16,9,26,19,16,16,16,19,21,16,19,21,16,14,19,21,16,21,16,19,21,21,13,16,14,16,16,19,23,19,14,13,16,16,21,23,14,16,16,16,14,16,19,16,16,16,18,24,14,13,14,21,24,16,16,21,16,16,18,9,14,14,16,14,19,21,14,14,16,21,16,17,21,16,19,23,19,13,16,16,9,18,21,21,16,15,16,16,14,28,19,16,16,17,16,19,16,21,21,21,14,8,8,8,19,16,16,16,13,14,16,19,9,16,16,19,9,21,18,16,21,21,16,14,21,16,16,16,16,21,16,16,15,18,14,16,19,21,16,16,21,16,21,16,21,16,16,16,21,16,22,16,16,16,16,19,14,14,16,22,19,21,15,21,9,16,13,16,16,13,16,14,19,13,16,16,18,21,16,16,16,16,16,13,16,15,19,19,16,16,17,15,16,27,9,9,23,16,16,19,9,13,16,16,19,16,23,16,14,21,16,17,16,16,16,16,19,16,16,16,19,21,16,24,19,14,16,16,21,16,24,16,16,19,16,16,16,16,16,22,19,17,19,19,22,16,16,19,19,18,16,16,19,16,16,28,13,14,16,16,13,16,15,16,16,19,16,16,14,21,15,16,19,16,15,16,16,21,21,16,14,21,21,16,13,21,19,18,19,26,16,16,16,16,16,16,26,14,16,9,16,16,16,21,16,15,16,16,22,19,14,14,21,21,16,16,16,16,9,16,15,8,8,8,16,16,21,14,15,13,19,19,13,16,16,19,16,19,26,16,16,16,14,19,19,17,16,14,16,16,16,18,16,17,21,14,19,16,16,16,16,19,16,22,16,16,14,19,19,14,21,16,16,16,18,19,19,16,17,16,16,13,16,25,19,16,9,16,21,19,16,16,19,16,16,16,21,17,21,19,14,18,16,21,21,16,16,21,19,21,16,16,16,9,16,16,16,24,16,19,22,19,16,16,21,19,16,18,28,16,16,19,14,13,16,19,16,21,16,16,16,16,13,13,16,14,24,19,23,13,21,15,21,19,21,21,16,15,16,16,16,14,16,21,9,13,13,16,16,18,21,21,16,9,22,16,19,16,9,14,16,16,13,21,14,9,17,22,16,16,16,16,24,16,16,13,16,13,14,19,16,16,16,16,16,16,14,16,18,19,19,16,19,16,16,15,21,16,14,21,16,16,13,13,16,13,16,13,21,19,14,16,16,19,16,16,19,19,16,22,9,14,16,16,17,9,21,16,16,8,8,8,21,16,16,19,16,16,14,21,16,26,16,16,16,16,21,16,16,15,16,13,14,16,16,16,16,28,15,16,22,21,19,24,21,21,21,14,16,16,21,16,16,16,21,16,16,16,16,16,16,16,16,16,16,14,16,16,19,24,16,13,9,16,16,16,14,16,16,16,17,16,14,16,19,17,16,16,16,9,16,21,16,24,16,16,16,16,16,16,15,16,14,16,21,16,16,21,16,16,16,16,19,17,15,16,9,16,16,21,22,16,16,22,21,21,14,9,19,16,19,15,16,16,15,16,16,14,22,16,16,13,14,9,21,16,16,16,9,13,16,9,21,16,21,19,21,16,16,21,19,13,19,16,21,16,13,21,14,19,18,16,16,16,16,16,21,9,16,22,16,14,21,16,16,21,16,17,19,16,21,16,16,16,16,16,21,16,16,16,19,16,16,16,17,16,18,9,16,14,16,9,16,24,16,19,16,16,16,16,16,14,21,16,16,16,24,16,16,16,17,22,16,16,16,16,19,8,8,8,21,13,16,21,18,17,16,16,16,16,21,14,16,16,16,14,13,13,16,16,21,16,15,16,18,16,15,16,17,16,16,9,15,22,27,16,19,21,16,21,14,16,9,16,14,16,21,16,16,21,22,16,16,16,23,21,19,16,21,14,19,19,21,22,9,9,21,21,23,14,16,16,24,16,21,16,16,16,13,18,21,22,15,16,16,21,21,16,19,16,21,16,16,21,16,13,16,14,21,21,13,16,19,19,14,13,21,21,16,15,17,16,21,16,17,21,19,16,21,16,13,9,16,16,16,14,21,16,14,16,16,16,9,16,16,16,9,19,19,19,16,16,19,17,16,16,16,9,16,21,16,19,16,19,16,16,16,16,16,21,19,17,21,16,24,16,16,16,16,16,16,16,21,16,16,19,14,22,21,21,16,21,16,16,16,21,21,9,21,16,16,9,16,16,16,16,26,21,16,16,16,9,16,14,16,15,16,19,21,16,16,21,21,16,14,21,18,14,23,29,21,22,14,19,16,8,8,8,21,21,14,15,16,16,26,16,14,16,13,21,16,21,13,19,16,16,16,16,26,19,16,9,16,24,21,16,21,16,14,16,14,22,14,14,17,14,16,21,16,16,18,21,16,16,19,16,13,21,16,21,19,16,16,16,16,16,16,15,16,14,24,23,13,16,16,16,14,16,16,16,15,16,9,16,16,16,14,14,16,21,14,17,18,16,21,19,22,19,14,21,15,21,24,16,16,14,16,18,16,16,16,16,21,21,19,14,16,21,16,19,16,19,16,13,16,21,16,9,22,16,16,16,14,17,16,16,16,16,16,21,19,26,21,16,14,16,13,21,16,17,14,21,21,21,16,21,16,19,16,15,9,13,21,19,19,19,14,16,16,16,16,16,21,16,21,16,14,25,19,16,16,16,16,14,16,16,16,21,16,16,21,16,21,16,21,21,19,16,15,16,16,16,13,9,16,13,16,19,16,16,19,21,22,21,16,16,17,16,14,21,19,16,9,16,16,16,26,22,17,22,16,14,14,16,16,14,16,21,16,8,8,8,8,16,13,21,14,16,13,14,16,16,16,17,16,16,21,21,15,14,16,15,22,21,21,16,16,16,14,21,16,14,16,16,14,21,17,21,16,16,21,21,21,13,15,14,16,24,16,9,16,13,8,16,19,16,19,16,13,16,16,16,21,16,16,16,14,19,21,16,16,16,16,16,21,16,14,16,14,17,21,17,14,16,16,22,22,19,14,16,16,19,16,16,16,16,22,16,24,14,9,24,21,16,16,16,23,26,14,9,16,16,16,13,16,19,16,21,16,21,22,23,16,14,9,16,13,21,19,21,16,21,9,14,19,26,21,16,14,16,19,18,16,16,16,16,16,16,9,16,19,21,16,16,16,17,16,16,16,16,16,15,16,15,16,21,18,19,19,8,24,16,16,16,14,16,21,16,16,16,16,18,14,24,16,16,16,19,22,14,19,16,16,23,16,19,9,19,21,15,16,24,19,22,21,21,16,18,16,16,16,16,16,16,21,21,23,15,16,16,21,13,16,16,16,16,15,19,16,14,16,21,14,14,18,8,8,8,8,17,16,14,16,16,19,16,16,21,16,16,16,19,16,18,9,16,16,16,16,16,16,16,16,16,15,16,15,21,16,16,21,16,17,21,15,16,21,14,16,16,16,16,16,16,16,16,16,16,16,16,17,16,14,16,16,13,16,16,16,16,18,14,19,21,16,14,9,16,16,21,16,16,16,16,19,16,19,21,16,17,16,21,16,9,16,16,16,9,23,16,19,21,16,19,21,14,9,21,15,16,16,21,23,21,16,15,14,21,18,21,22,19,19,9,14,16,15,16,21,16,19,16,16,16,14,16,16,16,16,16,16,19,16,15,19,19,16,19,16,15,16,16,16,14,16,21,21,16,22,13,9,16,16,22,19,15,9,19,14,16,19,19,16,16,13,22,16,21,16,16,17,16,16,16,14,16,16,16,14,13,19,16,21,16,16,15,19,9,14,15,16,9,17,21,14,21,21,16,16,16,16,14,21,16,19,21,24,24,21,21,16,9,16,21,17,21,14,13,16,14,16,16,16,21,16,16,8,8,8,8,17,21,17,16,14,16,16,19,16,16,21,16,16,16,16,16,14,21,16,19,16,16,19,19,14,16,9,16,16,16,21,16,14,26,21,16,19,21,14,16,18,16,16,21,15,13,16,21,21,16,16,16,16,9,17,21,19,17,14,19,15,21,17,16,16,16,16,16,14,16,16,16,17,14,13,19,26,16,21,16,16,14,21,16,14,24,9,19,21,21,19,9,14,21,16,21,21,16,16,16,22,21,16,16,9,16,16,14,16,16,17,9,16,16,9,21,21,16,21,9,14,16,16,16,16,16,16,16,16,26,13,14,16,16,16,13,16,16,21,14,9,16,28,19,21,21,19,16,16,19,16,17,16,28,16,16,21,16,16,16,21,16,26,17,16,21,16,19,19,16,19,22,17,19,16,16,16,19,16,16,16,21,9,16,16,16,21,21,19,16,19,16,22,16,16,19,16,16,16,23,16,18,13,17,9,19,16,21,9,14,16,19,16,16,21,16,16,9,23,23,23,16,13,16,16,9,16,16,15,21,14,16,21,8,8,8,8,14,26,16,16,19,16,14,16,15,19,19,16,16,9,21,18,19,16,16,19,26,21,18,16,22,14,16,16,16,16,21,16,14,14,9,16,13,16,19,16,16,16,15,14,16,16,16,19,16,26,16,19,16,16,16,16,15,16,13,9,19,16,9,19,16,13,16,16,9,16,24,14,16,16,21,16,16,16,14,17,21,16,15,14,16,21,16,21,16,16,15,16,14,16,19,14,16,16,13,16,16,19,19,21,16,16,19,16,16,16,16,15,16,16,21,16,21,16,21,16,16,16,16,9,19,9,16,16,16,16,19,15,21,24,16,21,16,16,16,16,16,16,16,16,21,21,16,16,16,16,19,14,16,14,16,16,16,21,16,15,16,21,15,16,16,17,16,21,21,21,24,21,16,16,16,14,16,16,16,16,16,15,16,22,9,15,16,16,16,16,16,28,19,16,19,16,16,16,16,16,19,13,16,16,13,21,19,16,16,16,16,13,21,16,16,28,21,21,16,16,13,9,16,16,21,9,16,16,16,16,16,14,16,17,8,8,8,21,14,21,16,16,16,14,14,21,16,16,14,16,16,21,24,14,14,18,9,21,19,14,16,16,19,16,16,17,13,9,19,22,15,14,21,21,19,16,15,15,9,21,16,16,9,16,19,16,19,19,16,24,16,22,16,16,19,24,16,26,16,14,16,16,16,21,16,16,16,19,14,14,16,16,19,16,16,16,23,16,16,19,16,16,9,16,9,16,21,16,16,9,16,16,16,14,9,19,16,16,16,16,16,14,16,14,21,14,16,15,19,22,19,14,21,16,14,16,19,14,21,16,19,27,16,16,21,16,13,15,21,15,16,13,22,16,14,19,16,14,16,19,16,16,18,16,16,21,16,19,17,9,16,19,16,16,16,16,9,16,16,17,21,24,14,16,16,16,21,21,16,16,14,21,9,16,16,17,19,16,16,16,15,21,19,14,16,16,16,24,16,14,19,16,16,16,16,16,16,21,21,19,16,19,16,9,9,19,16,16,14,19,16,14,16,19,16,14,14,16,21,17,23,19,19,18,19,16,16,16,19,21,14,16,8,8,8,8,21,16,16,17,16,15,9,18,19,16,16,16,19,13,21,23,18,16,21,13,13,16,16,16,9,16,16,16,9,16,16,16,19,21,16,16,21,16,16,19,19,21,9,13,16,17,9,14,19,19,9,19,16,14,21,16,16,14,14,26,16,16,26,15,9,9,16,16,16,21,16,16,14,13,16,21,16,9,16,16,16,21,16,14,19,16,16,16,16,16,21,16,19,21,16,16,16,9,14,9,19,15,19,16,16,21,19,21,13,21,16,18,19,16,16,16,13,19,14,16,16,16,13,14,21,16,17,14,16,19,16,17,18,15,26,19,19,16,19,16,16,16,14,13,21,23,16,16,14,16,21,16,21,13,16,16,16,16,19,16,14,21,16,13,21,16,21,16,21,16,16,16,16,16,16,22,14,16,16,16,26,16,15,16,21,16,13,16,16,16,14,16,21,19,22,16,16,19,16,21,16,21,14,21,13,18,21,9,14,16,16,16,16,16,14,13,16,14,16,16,16,16,16,14,16,16,15,16,14,19,16,14,9,21,8,8,8,8,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,13,14,16,9,21,16,16,14,16,14,29,19,19,16,22,16,16,16,16,16,22,16,16,16,21,16,21,19,16,29,16,21,19,19,19,13,19,16,19,19,19,21,16,9,15,21,21,21,16,16,16,21,16,16,16,24,16,19,16,21,16,16,16,21,16,16,16,14,13,16,16,16,19,14,21,21,22,21,16,16,21,21,16,14,15,16,9,16,9,16,15,16,19,21,14,9,17,16,16,22,18,21,22,21,16,16,16,16,21,14,16,21,16,18,24,16,9,16,16,14,16,14,14,22,16,26,16,16,16,16,16,17,24,16,16,16,17,21,14,16,16,16,9,16,23,9,14,21,14,16,16,21,16,14,14,16,9,16,16,16,15,16,27,16,16,16,21,16,16,16,21,16,16,23,16,21,13,28,21,9,21,9,17,16,21,19,25,16,16,23,16,16,19,19,22,16,16,16,21,18,16,16,16,19,16,13,16,19,16,15,13,16,21,16,16,22,16,16,16,16,19,16,16,21,16,16,16,8,8,8,8,8,8,16,16,16,16,16,17,16,13,15,16,13,16,16,16,16,16,16,21,16,8,8,21,16,9,14,16,16,13,16,14,8,16,21,9,16,16,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,13,16,16,16,14,21,16,21,16,16,16,14,9,22,16,16,21,16,16,16,21,21,16,21,16,16,16,16,17,16,14,21,21,19,16,21,16,9,16,16,21,9,15,16,24,16,16,16,16,19,16,16,16,16,13,9,17,21,21,19,19,21,26,21,16,16,14,16,16,21,16,16,15,16,17,14,24,24,15,17,16,16,21,16,21,16,14,25,19,14,9,14,16,21,16,18,14,21,16,13,14,19,19,21,16,16,9,14,15,15,21,16,21,16,16,16,16,22,16,16,21,21,14,13,16,22,9,15,21,18,21,16,19,19,16,16,9,21,16,24,18,17,13,21,13,22,16,16,21,15,16,16,21,16,9,16,16,16,16,9,16,14,14,16,14,16,21,19,9,19,21,21,16,16,16,16,16,14,19,19,21,16,14,14,16,13,21,16,21,22,21,16,14,21,16,19,16,14,14,13,13,22,16,21,18,16,16,21,16,16,14,18,21,15,16,21,16,14,17,22,19,19,8,8,8,8,8,14,16,13,16,16,16,14,16,16,14,16,16,21,16,16,16,16,16,15,16,9,21,16,16,16,14,21,24,26,9,19,16,9,9,13,16,21,16,26,9,19,22,14,17,16,13,16,9,18,16,16,16,16,16,21,16,15,16,16,22,14,9,16,16,16,14,21,15,24,21,16,16,16,19,9,17,9,22,9,16,16,17,16,16,16,18,14,19,21,16,15,16,16,21,21,15,19,16,21,9,16,9,14,17,16,16,21,17,16,16,17,16,16,13,21,16,21,24,16,16,19,22,19,15,19,17,19,9,16,19,13,16,15,16,16,9,14,16,16,21,16,21,9,16,16,21,16,21,18,13,16,16,16,14,16,16,19,16,17,21,16,18,9,16,16,19,21,21,16,13,15,14,19,16,16,16,24,16,16,22,16,15,21,16,21,16,14,16,16,19,14,16,16,21,14,16,16,21,16,16,16,16,16,16,19,16,16,16,9,14,16,16,21,8,8,8,16,16,23,16,26,16,16,16,13,21,14,19,14,16,9,21,22,16,19,21,18,9,14,14,16,21,16,21,16,21,13,21,9,16,21,16,16,16,21,21,14,16,19,21,21,21,19,22,9,16,21,16,16,16,16,21,21,21,19,16,14,18,16,16,16,16,16,16,14,15,16,16,13,16,24,16,14,16,18,16,16,16,19,14,16,14,16,16,21,16,14,15,14,16,16,13,15,19,16,21,16,18,13,21,16,22,21,19,16,16,16,16,14,14,16,21,9,13,16,14,19,16,19,16,9,16,16,26,16,21,21,16,16,16,16,16,16,16,14,16,21,14,18,16,16,15,16,21,16,26,16,19,16,21,21,26,16,16,16,15,9,18,16,21,16,14,16,18,16,16,28,16,15,9,16,19,16,16,16,23,19,14,19,29,16,13,16,16,16,16,19,9,16,16,16,16,16,16,22,19,14,21,19,14,14,19,21,13,19,22,16,21,16,16,15,8,8,16,21,14,16,15,16,16,16,16,19,16,21,21,19,14,16,16,16,16,19,21,16,16,16,22,21,16,19,9,16,18,19,19,19,16,14,13,17,21,21,16,19,16,16,16,21,16,16,21,14,16,16,19,16,16,16,16,26,16,21,16,19,16,21,16,16,14,16,21,16,16,16,16,18,21,16,18,17,16,21,16,16,16,16,9,14,19,19,16,16,23,21,14,16,21,16,14,16,16,16,13,23,16,19,16,16,16,26,16,21,16,16,21,16,24,9,26,13,16,14,16,16,19,21,16,24,14,16,16,16,16,16,13,17,16,21,13,17,16,16,16,16,16,24,16,16,16,13,19,15,16,16,19,16,16,16,22,21,24,16,9,16,16,16,16,16,21,19,16,21,9,13,19,21,19,16,24,14,22,19,19,16,9,14,17,22,16,16,16,15,24,16,16,16,21,14,22,19,16,21,14,9,21,16,16,16,24,16,21,19,19,22,19,14,21,16,16,16,14,21,16,8,8,16,16,19,16,16,16,19,16,14,16,21,15,22,14,16,16,16,19,21,9,16,19,16,13,16,24,16,16,16,9,16,9,16,21,14,9,16,16,16,21,21,21,19,16,15,16,16,21,21,16,19,16,23,21,16,21,16,19,21,14,16,21,16,13,16,16,16,14,16,16,14,26,16,21,16,16,16,14,9,19,19,21,19,16,9,16,21,18,16,19,16,16,21,16,16,16,21,16,16,16,19,21,9,16,21,21,16,24,18,17,21,18,16,21,14,21,14,16,14,9,14,14,16,21,9,23,17,21,14,13,19,14,21,16,16,16,22,16,16,15,19,16,21,16,19,16,21,16,16,16,13,21,21,16,17,22,16,16,21,16,16,21,16,14,14,16,19,18,16,16,23,16,19,16,21,16,16,18,21,16,9,16,14,19,16,23,16,13,9,16,21,16,16,16,14,16,21,16,19,16,16,22,23,13,21,21,21,16,14,21,16,14,13,13,9,16,14,14,22,19,16,8,16,13,17,14,21,16,16,9,16,16,9,15,21,21,22,21,19,14,21,19,14,21,16,16,16,16,16,16,16,16,9,22,15,16,16,19,16,16,18,21,19,21,21,21,16,16,16,16,13,16,16,16,14,14,16,14,16,21,16,14,16,17,18,21,16,16,21,21,16,13,16,21,14,21,16,23,14,16,24,21,16,19,16,19,9,16,15,19,16,21,15,16,14,9,16,16,16,14,14,16,15,16,14,16,16,16,16,16,16,19,16,21,16,16,16,22,16,21,16,14,19,16,16,16,16,16,16,18,21,19,16,14,16,16,16,16,24,17,16,18,14,19,14,16,16,16,16,22,14,9,16,15,17,18,16,16,14,9,24,16,19,26,16,16,14,16,14,16,21,16,17,21,19,18,16,13,16,16,16,9,14,16,22,16,16,14,19,9,26,21,9,16,22,16,14,16,21,16,23,16,21,16,16,16,16,13,14,9,14,16,16,15,16,16,16,14,14,13,19,16,22,14,21,16,13,9,16,16,19,8,8,16,16,15,16,16,16,16,14,9,16,16,13,16,19,15,16,14,15,21,16,19,13,16,16,16,14,16,19,16,19,21,21,16,21,13,24,16,21,16,16,13,16,21,15,15,19,16,16,16,16,16,16,16,21,18,18,23,19,14,21,22,16,16,16,21,16,19,16,9,14,16,14,16,24,16,16,19,19,21,16,16,15,16,14,16,16,14,21,16,19,16,21,21,16,14,16,19,19,16,21,19,16,14,16,16,14,21,21,16,13,16,16,19,21,16,21,21,16,16,9,19,16,21,23,19,16,24,16,16,16,14,16,16,16,21,16,16,16,16,21,22,21,16,16,16,13,16,21,13,16,15,16,16,13,16,19,16,26,16,16,16,16,9,15,21,16,26,14,16,16,16,16,14,14,16,16,16,16,16,14,19,21,13,16,21,16,16,16,14,21,16,9,16,22,14,16,16,16,21,21,16,19,16,9,19,14,16,16,21,13,24,16,21,16,16,9,16,19,19,16,21,16,8,8,16,15,26,15,16,22,13,9,16,16,21,14,16,21,16,16,24,21,16,16,14,16,21,24,14,16,19,13,21,24,21,16,16,14,19,16,16,16,9,21,9,21,19,16,16,16,16,16,16,16,21,21,16,16,14,16,21,16,16,14,16,16,13,21,16,26,19,16,16,18,16,16,19,17,19,16,14,16,16,16,14,14,16,14,13,9,14,23,19,19,16,16,24,16,14,9,13,24,16,21,16,16,16,16,16,16,21,14,24,19,25,16,9,16,16,14,14,16,19,16,21,16,21,16,16,16,16,16,16,21,16,15,21,16,16,18,19,13,15,16,19,16,19,14,13,19,21,16,16,16,19,16,21,16,13,19,14,16,16,15,16,16,16,16,16,16,16,22,21,16,9,21,16,16,19,16,17,16,16,21,16,9,21,16,16,22,24,16,21,15,21,23,14,15,14,16,16,16,16,16,28,15,16,22,16,19,24,21,21,16,16,16,16,16,16,16,16,26,16,14,21,14,27,16,16,21,8,8,15,22,19,19,21,16,16,9,16,19,16,16,16,13,19,19,16,16,21,16,16,16,26,16,24,23,16,13,14,16,13,16,17,14,16,14,16,16,21,16,16,14,16,16,13,24,16,23,21,9,19,16,21,21,16,16,21,21,21,16,21,14,15,16,21,14,16,28,21,19,21,24,14,16,21,16,18,14,21,16,16,16,16,21,16,16,21,14,16,21,16,16,21,16,16,16,16,16,16,15,16,16,19,16,16,14,19,16,21,16,19,21,14,21,16,16,9,21,19,21,16,19,16,16,16,22,21,16,9,21,16,16,14,16,16,14,16,16,16,9,16,16,21,16,16,21,16,16,21,13,16,19,16,9,16,16,16,21,16,16,16,16,14,13,16,19,14,14,16,16,15,9,14,24,14,16,16,16,23,21,16,16,14,21,16,9,16,16,24,21,18,21,16,16,14,19,16,16,16,16,19,16,21,14,19,9,15,13,21,16,16,22,21,16,16,16,26,16,16,8,8,8,16,13,9,16,19,16,14,21,16,16,24,13,9,17,18,9,9,16,16,13,16,19,16,16,16,14,16,21,16,16,16,19,14,14,19,15,13,21,16,16,22,15,9,26,16,21,16,16,16,16,16,16,16,16,16,21,16,16,19,21,19,14,19,14,16,19,16,16,13,9,19,16,16,21,16,23,16,19,16,14,16,27,16,16,16,16,16,16,21,9,14,16,16,18,19,17,16,16,14,16,26,21,19,16,14,16,19,21,14,9,16,16,16,16,16,22,16,16,16,16,16,16,9,16,13,16,18,19,9,16,14,13,21,19,16,16,16,26,16,16,16,16,21,19,14,16,9,9,9,16,19,13,19,14,16,17,9,9,19,14,21,16,16,16,24,16,19,21,21,16,16,16,21,21,19,19,19,16,21,16,14,14,19,16,16,16,16,16,16,16,13,26,16,13,16,9,15,19,16,16,16,14,9,16,16,16,21,16,21,16,13,15,24,21,16,13,16,21,16,16,17,13,30,35],"timeDeltas":[127584,125,0,41,42,42,41,42,0,42,41,42,42,0,41,709,83,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,84,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,83,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,125,42,375,458,42,167,83,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,83,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,83,0,42,41,42,0,42,41,42,0,42,83,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,166,250,42,83,42,83,42,0,42,41,42,125,42,83,83,167,167,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,83,167,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,83,42,41,42,0,417,41,84,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,83,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,84,41,0,42,42,41,42,42,0,41,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,42,41,0,42,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,83,83,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,83,42,0,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,83,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,1500,42,83,542,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,83,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,83,0,42,41,0,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,250,0,42,83,83,0,42,42,41,42,42,83,125,42,0,83,0,42,41,42,42,83,83,167,0,42,83,42,41,0,42,42,83,83,42,125,0,42,41,42,42,41,0,42,42,83,0,83,0,42,42,41,42,83,84,0,41,42,42,0,41,42,0,42,41,0,42,83,84,0,41,42,0,42,41,0,42,42,41,42,42,83,83,167,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42]} \ No newline at end of file diff --git a/bench-pluralize-2024-11-24_12-17-49.cpuprofile b/bench-pluralize-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..c9707af --- /dev/null +++ b/bench-pluralize-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,8,18,19,23,26]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0},{"id":8,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":601,"children":[9,11],"positionTicks":[{"line":323,"ticks":6},{"line":292,"ticks":38},{"line":314,"ticks":25},{"line":315,"ticks":90},{"line":316,"ticks":351},{"line":327,"ticks":72},{"line":297,"ticks":19}]},{"id":9,"callFrame":{"functionName":"y","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":78,"columnNumber":10},"hitCount":0,"children":[10]},{"id":10,"callFrame":{"functionName":"g","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":48,"columnNumber":13},"hitCount":1,"positionTicks":[{"line":50,"ticks":1}]},{"id":11,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":1074,"children":[12,15],"positionTicks":[{"line":537,"ticks":4},{"line":530,"ticks":60},{"line":139,"ticks":19},{"line":304,"ticks":3},{"line":309,"ticks":514},{"line":539,"ticks":18},{"line":308,"ticks":22},{"line":302,"ticks":25},{"line":250,"ticks":32},{"line":301,"ticks":187},{"line":531,"ticks":8},{"line":311,"ticks":182}]},{"id":12,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1464},"hitCount":1329,"children":[13,24],"positionTicks":[{"line":2,"ticks":1329}]},{"id":13,"callFrame":{"functionName":"pluralize","scriptId":"261","url":"file:///Users/airhorns/Code/superflected/src/pluralize.ts","lineNumber":1,"columnNumber":1001},"hitCount":18,"children":[14],"positionTicks":[{"line":2,"ticks":18}]},{"id":14,"callFrame":{"functionName":"applyInflections","scriptId":"262","url":"file:///Users/airhorns/Code/superflected/src/applyInflections.ts","lineNumber":1,"columnNumber":985},"hitCount":14510,"positionTicks":[{"line":2,"ticks":14510}]},{"id":24,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":21,"children":[25],"positionTicks":[{"line":2,"ticks":21}]},{"id":25,"callFrame":{"functionName":"pluralize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":1192},"hitCount":9,"positionTicks":[{"line":2,"ticks":9}]},{"id":15,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":238,"children":[16,21],"positionTicks":[{"line":250,"ticks":238}]},{"id":16,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":185,"children":[17,20],"positionTicks":[{"line":139,"ticks":185}]},{"id":17,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1235,"positionTicks":[{"line":139,"ticks":1235}]},{"id":20,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":32,"children":[22],"positionTicks":[{"line":537,"ticks":32}]},{"id":22,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":120,"positionTicks":[{"line":530,"ticks":120}]},{"id":21,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":98,"positionTicks":[{"line":668,"ticks":2},{"line":670,"ticks":5},{"line":662,"ticks":7},{"line":665,"ticks":18},{"line":669,"ticks":27},{"line":666,"ticks":11},{"line":661,"ticks":28}]},{"id":18,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":682},{"id":19,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":259},{"id":23,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":14,"positionTicks":[{"line":301,"ticks":13},{"line":302,"ticks":1}]},{"id":26,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[27]},{"id":27,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[28]},{"id":28,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":1,"children":[29],"positionTicks":[{"line":2,"ticks":1}]},{"id":29,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[30]},{"id":30,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1,"positionTicks":[{"line":136,"ticks":1}]}],"startTime":293060375667,"endTime":293060967584,"samples":[7,10,13,14,13,14,14,14,13,17,14,17,18,8,14,14,13,14,14,19,14,14,14,14,13,19,14,14,14,14,14,13,14,13,8,14,14,13,14,13,13,14,19,14,14,14,14,17,14,19,14,14,14,17,17,17,17,11,14,14,14,14,14,14,14,14,14,13,14,14,20,14,14,14,14,14,14,8,13,14,14,14,13,16,14,14,13,14,8,14,14,14,13,14,12,14,14,13,14,8,21,13,14,17,14,14,13,12,16,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,21,21,21,21,21,21,21,21,21,14,14,14,17,14,18,14,14,17,14,11,14,14,14,14,14,12,14,14,14,14,14,8,14,14,14,11,14,14,11,8,8,18,14,14,11,12,14,11,8,14,17,14,14,17,14,21,14,14,14,20,14,14,14,19,14,14,14,14,14,14,14,14,19,11,8,14,14,15,11,14,17,14,12,14,11,14,8,14,14,14,14,12,14,8,14,14,15,14,11,18,14,14,15,18,14,14,14,14,14,11,14,14,14,12,8,14,8,19,14,19,14,12,14,19,19,19,19,19,19,8,14,12,11,14,12,16,14,14,14,12,14,14,14,8,12,14,12,14,14,14,11,14,14,16,15,14,14,14,14,11,14,14,19,14,14,14,14,12,8,14,8,14,12,14,14,17,17,14,14,18,14,14,14,12,14,22,19,14,14,14,14,14,14,11,14,8,14,14,14,17,14,11,14,12,14,14,8,14,14,14,14,14,14,14,14,14,14,14,11,17,8,14,14,19,12,14,15,14,14,14,11,11,19,14,14,14,14,19,14,12,14,21,19,23,14,14,18,14,14,14,19,14,18,14,14,19,14,14,17,14,14,14,14,14,14,14,14,14,14,14,19,14,14,14,14,19,12,23,11,11,14,14,19,11,11,18,17,14,14,14,8,14,8,14,16,14,14,17,14,17,14,14,12,14,20,19,8,8,14,12,14,14,17,14,12,14,14,17,14,14,14,14,14,11,14,14,11,11,14,14,14,14,14,12,14,18,14,14,14,14,11,17,14,18,8,14,14,14,16,14,14,14,17,14,14,11,14,14,14,17,14,8,19,14,14,14,11,14,14,14,14,14,17,14,14,14,14,17,17,14,14,8,14,11,16,14,11,14,14,11,14,14,14,14,14,19,14,14,12,14,14,14,12,11,14,8,14,14,14,14,14,8,14,14,14,14,14,8,12,8,14,14,14,14,14,14,8,14,14,14,14,14,14,14,17,14,14,14,19,15,11,12,14,14,14,11,14,17,14,14,19,14,14,14,14,14,18,14,14,18,12,19,11,14,14,14,12,14,14,14,11,11,11,14,14,19,16,14,14,14,14,14,11,14,14,18,11,8,14,14,14,14,19,14,17,14,14,14,14,12,14,17,11,17,14,14,19,14,12,14,14,14,14,14,12,15,14,14,17,14,8,14,14,11,17,14,14,14,18,14,14,14,14,8,8,11,14,15,8,14,19,14,14,8,14,14,14,14,14,19,14,12,14,14,14,12,18,14,12,11,14,14,14,19,19,19,19,19,19,12,14,14,14,8,14,17,18,14,19,8,11,17,14,17,8,14,8,14,14,12,14,14,8,14,22,19,12,14,14,14,17,14,14,18,14,8,11,14,14,14,19,14,12,14,18,14,14,14,14,14,14,8,14,14,14,19,14,8,14,14,12,14,14,11,17,14,14,18,14,14,14,14,14,14,14,14,14,12,14,14,14,14,11,14,14,14,14,14,14,14,19,14,14,17,17,14,17,14,14,14,14,14,14,15,14,16,20,14,12,12,14,14,14,17,14,14,14,14,14,17,14,14,17,14,8,8,14,17,14,14,14,14,14,11,14,21,14,14,14,19,14,14,14,14,8,12,20,14,14,14,18,19,14,14,14,8,14,14,8,14,14,14,14,11,14,19,14,11,14,17,14,14,14,14,14,14,12,14,14,18,14,12,14,17,14,14,11,11,11,11,14,14,14,14,14,14,8,14,14,8,14,19,11,17,14,14,8,14,14,14,14,15,14,14,14,14,14,17,19,14,14,14,14,14,17,14,14,14,17,17,19,14,8,14,14,14,14,14,15,14,14,17,14,14,14,14,19,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,12,14,14,8,14,14,14,14,17,12,17,14,14,14,12,14,14,14,14,14,12,16,14,14,14,14,21,14,11,14,19,14,14,14,14,19,14,14,14,14,18,14,14,14,14,14,14,24,19,14,14,19,14,14,14,14,14,11,14,18,14,14,14,17,14,20,14,14,14,12,14,19,14,14,14,14,17,11,12,14,14,17,14,14,17,14,14,14,14,15,11,19,14,18,14,17,14,12,14,14,14,19,14,14,14,14,17,14,14,14,11,14,14,14,14,14,14,14,14,17,14,8,14,14,14,14,14,14,12,14,14,19,14,12,12,20,20,14,14,8,11,14,14,14,14,19,8,14,14,14,14,12,14,14,11,18,14,19,12,8,14,14,12,8,14,14,14,14,14,14,12,14,14,19,19,19,19,19,21,14,14,14,14,8,14,14,14,14,14,14,19,14,14,14,14,14,14,14,17,14,14,17,14,18,14,11,14,12,11,14,8,14,8,14,14,14,14,17,14,14,14,14,15,14,14,14,14,11,14,14,14,14,14,14,18,14,14,14,14,14,14,14,22,17,14,14,14,12,8,14,14,19,14,14,14,14,14,14,17,14,12,19,17,11,14,12,19,11,15,14,14,12,14,14,17,14,19,18,14,14,11,14,14,14,14,14,14,14,14,14,14,12,14,14,14,17,14,14,14,14,8,14,16,19,14,14,14,12,19,11,14,14,14,14,14,14,14,14,14,14,18,14,14,14,14,11,22,14,11,14,14,14,14,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,17,14,14,11,17,14,14,14,14,17,11,11,11,14,14,14,14,14,12,14,14,14,14,14,11,12,17,14,14,17,14,14,15,11,14,14,11,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,16,18,14,14,14,8,14,14,14,14,17,12,14,15,14,14,14,14,14,14,14,14,14,17,17,14,14,14,14,14,14,14,14,17,14,14,14,16,14,14,14,8,8,11,14,14,12,8,14,14,14,17,14,14,14,14,14,14,14,15,14,14,14,18,12,17,8,17,14,14,14,14,12,12,14,14,8,14,14,12,14,14,14,14,14,14,14,17,14,14,14,17,14,18,14,14,14,14,14,14,14,14,17,8,11,14,14,14,14,14,14,14,18,14,12,17,14,14,8,12,15,14,14,12,14,14,14,16,17,14,14,17,12,17,14,14,14,14,11,14,14,14,14,14,18,14,14,14,14,18,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,12,14,8,8,17,14,18,14,11,14,18,14,11,14,11,14,14,14,11,14,14,14,14,14,21,14,11,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,17,14,14,14,17,14,14,14,18,14,14,12,14,14,11,14,14,14,14,14,14,22,14,14,14,14,14,18,16,14,17,14,22,8,14,14,14,14,14,14,14,12,14,12,14,14,12,14,14,14,14,14,12,12,14,21,17,14,11,14,14,14,14,14,14,14,14,21,14,8,14,14,18,12,14,14,8,14,14,17,14,14,14,14,14,14,14,14,14,12,12,14,14,14,14,14,14,19,19,19,19,14,14,14,14,18,14,14,14,14,8,11,11,12,14,14,8,17,14,14,14,14,14,14,14,12,14,17,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,17,14,14,12,14,17,12,14,14,14,11,22,14,14,14,12,14,14,14,11,17,14,17,14,11,14,14,14,14,14,14,14,14,11,14,14,14,14,14,17,11,14,14,8,14,17,8,14,14,14,14,14,18,14,12,14,14,14,14,14,14,14,17,14,14,14,17,14,14,14,14,14,12,14,14,14,12,14,8,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,21,14,14,14,11,14,15,14,8,14,14,12,17,17,14,14,14,11,14,12,14,14,14,14,14,14,14,11,12,14,8,14,14,14,11,11,11,11,11,14,14,12,14,15,14,14,14,8,18,14,14,14,17,17,14,14,12,8,11,14,14,14,17,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,17,11,18,12,11,14,14,14,12,14,14,12,14,17,14,18,17,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,17,14,14,14,14,14,14,18,12,11,14,14,14,16,14,14,14,14,14,14,8,14,14,17,14,12,14,14,12,14,11,14,15,12,14,14,14,14,14,17,14,14,14,22,8,17,20,18,14,14,14,12,8,14,14,17,18,14,14,11,14,14,14,8,14,14,15,14,12,22,14,14,18,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,11,14,14,14,14,14,11,14,16,14,14,14,8,14,17,17,14,11,14,14,14,14,18,14,14,12,14,14,14,14,8,18,14,18,14,14,14,14,14,14,14,14,19,19,14,14,14,14,14,15,14,11,14,14,14,12,14,12,12,14,11,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,20,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,16,17,12,14,14,14,14,14,14,14,14,14,12,17,14,12,14,14,14,12,14,14,14,14,14,14,8,14,14,12,15,14,14,12,14,14,17,14,11,14,18,14,14,14,14,14,14,14,11,14,14,14,14,12,14,18,14,14,14,8,14,14,8,17,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,11,14,14,14,14,14,11,14,14,14,8,17,14,14,17,16,14,14,14,14,18,14,18,14,14,12,17,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,8,15,14,18,12,14,14,12,14,14,14,14,14,14,14,17,19,14,11,11,14,14,11,12,14,11,14,14,18,14,14,14,14,12,8,17,12,14,22,14,14,14,14,12,14,14,14,17,14,14,14,14,14,17,12,14,12,11,14,17,14,14,17,14,14,14,14,11,14,14,14,14,14,14,14,18,14,14,18,14,14,12,14,12,15,14,14,14,12,14,14,14,14,14,14,14,14,14,12,14,11,12,14,14,14,8,14,14,14,14,14,12,14,14,12,12,14,14,17,8,14,14,14,14,12,14,14,17,14,14,14,14,18,14,14,14,14,14,14,14,15,14,14,14,14,17,17,14,14,14,14,14,14,12,14,14,14,14,14,18,12,14,14,14,12,14,14,14,14,14,14,21,19,19,19,14,14,12,17,14,14,14,14,17,11,14,18,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,12,14,14,14,12,14,8,17,11,18,14,14,14,14,14,14,17,14,14,11,15,14,14,14,14,16,14,14,14,14,14,17,11,18,12,14,14,14,14,14,14,14,14,14,14,12,12,14,14,14,14,14,14,14,14,14,14,11,14,14,14,12,14,17,14,14,14,14,14,8,18,14,14,12,14,14,14,14,14,11,14,17,14,14,17,14,14,18,14,8,14,14,14,14,14,14,14,14,14,17,14,14,14,14,17,14,14,14,14,17,14,14,14,11,14,14,14,17,14,14,14,14,14,14,14,14,14,14,11,14,14,17,8,14,17,14,12,12,14,11,14,14,14,17,14,14,14,11,11,8,14,17,14,14,14,14,14,14,18,14,8,14,14,12,14,14,14,14,14,14,14,14,14,12,14,14,17,14,8,14,14,14,14,14,14,14,14,18,17,14,14,11,14,11,11,11,11,11,18,12,14,14,14,17,14,15,14,18,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,21,14,14,14,14,14,14,14,14,18,14,12,14,12,12,12,12,12,12,8,17,14,17,14,14,17,14,18,14,14,14,14,14,14,12,14,8,14,14,14,14,8,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,12,14,14,14,14,14,14,14,14,12,8,14,8,14,14,16,14,14,14,14,14,12,14,14,17,14,14,14,14,8,18,14,17,14,14,18,17,14,18,14,20,14,14,14,14,14,14,14,14,14,14,14,17,14,14,8,14,14,14,14,14,14,14,19,19,19,14,14,12,17,14,14,14,14,14,14,11,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,8,14,14,12,14,14,14,14,14,14,14,12,14,14,14,14,14,14,12,14,14,14,14,17,18,14,17,17,14,14,14,14,14,14,24,14,14,14,17,14,18,14,14,14,11,14,14,14,14,18,15,12,14,12,14,18,14,14,14,14,14,18,14,14,14,14,14,14,12,14,14,12,14,14,14,14,14,14,14,17,14,14,17,14,14,22,14,14,14,14,14,14,17,14,18,14,11,17,14,14,14,21,12,14,14,14,17,14,8,14,14,14,14,14,14,12,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,17,14,17,14,14,12,14,14,11,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,17,14,14,14,14,17,12,14,14,17,14,14,14,8,14,14,17,11,14,14,14,14,14,11,14,14,14,14,14,16,11,14,12,14,12,14,11,14,14,16,14,17,14,14,11,14,14,14,18,14,8,14,12,14,14,14,14,14,14,14,14,14,14,14,14,12,14,15,14,14,14,11,14,14,16,14,14,14,14,14,14,17,8,14,14,17,17,8,14,14,14,14,12,14,17,18,14,14,14,14,17,14,14,17,14,14,14,15,12,14,14,8,14,14,14,14,24,14,14,14,14,14,14,12,14,14,22,14,17,14,14,17,14,12,14,14,14,11,17,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,17,14,18,14,14,14,11,12,14,18,15,12,14,14,14,12,14,14,8,17,19,19,14,14,14,14,14,11,14,14,14,11,11,14,8,14,14,8,14,14,8,14,14,14,14,17,14,14,14,14,18,14,14,14,14,14,14,17,14,14,14,18,14,14,12,18,14,11,14,11,14,14,14,11,17,12,14,18,14,14,14,12,14,14,14,14,14,14,12,8,14,18,12,14,8,14,14,14,14,14,14,14,11,14,14,14,14,18,14,17,18,14,14,14,14,14,14,14,14,14,14,18,11,14,14,14,14,14,14,14,14,8,14,14,14,17,14,14,14,17,14,14,17,14,14,14,14,14,14,14,14,17,14,11,14,14,8,14,14,14,14,18,14,14,14,14,14,14,14,8,8,14,14,14,14,14,22,16,14,8,14,14,8,14,14,11,14,14,14,20,12,17,14,14,14,14,8,14,14,14,14,14,14,14,14,14,12,14,18,14,14,14,14,14,14,14,14,12,11,14,14,14,14,14,17,12,14,14,17,8,14,14,14,14,14,14,14,14,14,17,14,14,14,14,12,14,14,14,14,18,14,17,18,17,12,14,14,14,14,14,18,14,14,12,14,14,11,14,18,14,14,14,18,14,14,14,14,14,14,14,14,14,12,14,14,14,14,12,14,18,21,14,14,14,14,14,14,14,14,14,14,14,14,14,12,11,14,14,12,14,14,16,14,14,14,14,14,14,17,21,8,14,14,14,11,11,14,14,14,14,11,12,14,14,14,8,14,14,14,14,22,14,14,14,14,14,14,14,14,14,18,12,14,14,14,12,12,18,14,14,14,17,11,14,24,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,14,12,14,14,14,17,14,14,11,14,12,11,14,14,17,14,14,14,14,14,14,14,19,19,19,14,8,14,14,14,14,14,14,14,12,12,14,14,14,14,14,14,14,14,17,14,14,14,14,14,11,14,11,14,14,17,15,14,12,14,12,14,14,8,14,14,14,18,14,12,8,17,14,17,14,14,14,14,12,17,14,14,11,14,14,14,14,14,14,14,14,14,17,12,17,11,14,14,14,8,14,14,14,14,14,14,14,18,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,18,14,14,14,14,14,18,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,8,14,14,14,14,21,14,16,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,8,14,14,8,14,12,14,14,14,14,11,14,14,14,14,14,14,14,17,14,8,8,14,14,18,14,14,11,14,14,14,12,14,14,14,14,14,14,14,18,14,17,14,14,14,14,14,14,14,18,14,14,12,11,15,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,18,14,14,18,14,14,14,14,14,14,8,14,14,14,17,17,8,14,14,14,14,14,12,11,15,22,14,14,12,12,12,14,14,11,14,14,17,14,14,18,14,14,16,14,14,17,14,17,14,14,14,14,11,14,14,12,17,14,8,14,14,14,14,12,14,14,14,14,14,14,14,11,14,11,11,11,11,11,11,11,11,14,14,15,11,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,8,14,15,14,14,14,14,14,14,22,14,21,14,14,16,14,14,17,14,14,14,14,14,14,14,17,14,14,14,19,19,14,14,14,14,14,14,14,14,17,8,14,14,14,11,8,14,14,12,14,17,14,14,14,14,11,14,12,14,14,14,14,14,14,14,14,14,24,14,14,17,14,14,14,14,14,14,21,14,14,14,14,14,22,14,14,14,14,12,11,14,14,14,14,18,14,11,14,22,12,18,14,14,14,14,14,14,11,14,12,11,14,14,14,14,14,14,14,17,14,14,14,12,14,17,14,12,11,12,14,12,14,11,12,14,14,14,14,14,14,17,14,14,14,14,12,14,14,14,11,17,14,14,16,14,14,17,14,14,14,12,14,12,14,14,14,14,14,14,14,14,18,14,12,14,14,14,14,14,14,17,12,14,14,14,14,14,14,14,14,14,14,14,12,12,12,14,14,22,14,14,14,14,14,12,14,14,14,17,14,14,17,14,14,14,14,11,12,14,14,12,14,16,14,14,14,14,12,14,14,11,12,14,14,14,11,17,12,11,14,14,14,14,14,8,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,18,14,12,14,14,14,17,14,8,12,14,14,15,14,11,14,14,17,14,14,14,14,14,14,14,14,16,14,14,14,11,14,11,21,14,17,11,14,14,14,8,12,14,14,14,16,11,14,14,14,14,14,11,14,11,14,14,14,14,14,14,14,14,14,14,15,14,14,14,14,14,14,14,12,14,14,14,14,22,14,14,14,14,22,14,12,14,14,18,14,14,14,14,18,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,17,12,14,14,14,14,14,14,14,14,14,18,11,12,17,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,11,11,14,14,14,11,14,14,14,14,14,18,14,14,14,19,19,19,14,18,18,14,18,14,8,17,14,14,14,17,14,14,14,14,14,18,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,12,14,18,14,14,14,8,22,17,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,17,11,14,14,14,14,14,12,14,14,14,14,12,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,21,14,14,8,16,14,12,14,14,14,14,14,14,14,14,17,14,14,14,14,14,8,14,14,14,17,11,14,14,14,14,17,12,14,14,14,14,17,14,14,14,8,16,14,14,14,14,17,18,14,14,14,14,14,16,14,14,14,8,14,14,11,14,14,14,14,11,14,11,12,14,8,17,12,14,17,14,14,14,14,14,14,14,12,22,14,12,14,14,17,14,22,14,14,14,14,14,11,14,14,18,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,17,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,21,12,14,14,14,14,17,8,14,11,8,14,14,14,12,8,14,18,17,14,12,14,17,14,14,14,14,14,14,17,12,14,17,18,14,14,14,17,14,11,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,12,18,15,14,11,12,14,12,18,17,14,12,14,14,12,17,14,14,12,14,14,14,14,17,14,8,14,15,14,14,14,14,14,17,14,14,14,14,14,14,18,14,14,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,19,19,17,14,11,14,17,14,14,18,14,18,14,14,14,12,14,14,15,14,14,14,14,14,14,18,16,14,14,14,12,14,16,15,14,14,14,14,14,14,16,14,17,14,14,14,14,14,14,14,12,15,17,14,14,14,14,14,18,14,21,14,18,12,14,14,14,14,14,17,14,14,12,11,14,14,18,14,14,14,14,8,14,14,14,14,15,12,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,14,14,14,14,14,18,14,11,14,14,14,14,8,14,12,14,14,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,12,14,18,14,17,12,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,14,14,14,15,14,14,14,17,14,14,14,14,8,14,14,18,14,11,14,14,17,14,14,14,14,14,14,11,14,14,14,12,12,14,14,17,17,14,14,14,14,14,14,14,14,14,14,8,12,12,14,12,14,14,22,14,14,14,14,14,17,21,12,14,14,14,14,16,11,18,14,11,14,12,14,14,18,14,17,12,14,14,14,14,14,14,14,8,14,17,14,11,14,14,21,11,14,14,8,15,12,14,14,14,18,14,14,14,14,14,14,14,11,14,14,14,14,12,14,14,14,11,14,11,11,23,14,14,14,14,14,11,14,14,14,14,12,14,18,14,14,14,14,14,14,14,14,14,14,8,17,14,14,14,14,14,14,14,11,14,17,14,14,14,14,11,14,14,11,14,14,14,14,14,14,11,17,11,14,14,12,14,14,14,14,11,8,14,14,14,14,11,8,14,14,11,14,14,14,14,14,11,14,14,14,14,19,19,19,14,14,14,14,12,14,14,14,14,14,8,14,14,14,14,14,14,14,14,14,14,14,12,14,14,17,14,14,14,14,14,8,14,14,14,14,12,14,14,15,12,14,14,14,14,14,14,12,14,11,17,14,14,12,14,14,18,11,14,14,14,12,14,14,14,14,14,12,12,14,14,14,14,14,14,14,14,14,17,8,12,14,14,14,17,16,14,14,14,14,14,14,14,14,14,16,14,14,11,14,14,12,14,14,14,14,14,14,11,14,14,14,11,14,14,14,14,14,14,14,14,14,14,17,14,14,14,23,14,14,14,14,14,14,14,14,12,14,14,14,12,14,14,11,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,11,14,14,11,8,18,14,14,14,14,14,14,17,14,14,16,17,14,14,12,14,14,14,18,14,14,14,14,14,8,8,14,14,11,21,14,18,8,14,21,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,8,14,8,14,12,14,14,14,14,14,17,14,18,8,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,8,17,14,14,14,14,14,14,8,14,14,17,11,12,14,14,14,14,14,12,14,12,14,14,16,14,11,14,12,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,21,14,14,14,15,14,14,11,14,14,14,8,14,8,11,14,14,14,14,14,17,14,16,14,12,14,14,14,14,18,14,14,14,12,14,14,14,17,12,14,12,14,11,17,14,14,8,14,14,14,14,14,14,12,14,15,14,14,14,17,14,16,14,14,14,14,14,21,12,17,14,12,14,14,14,14,12,8,14,14,11,14,14,17,19,19,14,14,12,14,22,21,14,8,14,14,14,18,14,8,14,12,14,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,11,14,12,14,14,21,11,15,14,14,14,14,14,14,17,14,12,12,16,14,14,8,14,14,15,14,14,14,12,14,14,14,14,14,12,17,14,15,12,14,14,14,17,17,14,14,14,14,12,11,14,16,14,14,14,17,14,14,14,14,14,14,14,18,14,18,14,14,14,14,14,16,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,14,14,14,24,12,14,17,14,14,14,14,17,14,15,14,14,11,14,14,12,14,14,14,14,14,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,17,14,14,14,14,17,18,14,14,14,14,18,14,14,12,16,14,14,17,22,14,14,12,11,12,14,14,11,14,14,14,14,14,11,14,14,14,14,23,14,14,14,14,14,14,14,12,18,14,14,14,14,8,14,15,14,14,14,14,18,14,14,14,14,17,14,14,14,14,14,14,12,14,14,14,17,14,17,14,14,14,14,11,14,8,18,14,17,18,14,18,14,14,14,11,11,11,11,11,11,11,11,11,11,11,11,14,14,22,14,14,14,12,14,14,14,14,17,14,14,14,14,18,14,14,14,14,14,12,14,17,12,14,11,11,14,14,14,14,12,18,14,14,14,14,14,14,11,14,14,17,14,14,14,14,14,14,14,14,14,14,14,15,12,14,14,14,14,14,11,14,14,14,14,14,14,11,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,18,8,14,14,14,14,14,21,14,14,14,14,14,12,14,14,14,14,14,14,11,18,14,14,17,14,14,14,14,14,14,17,14,16,14,14,8,14,22,19,19,19,14,18,14,17,14,14,14,8,14,14,14,12,17,14,14,14,11,14,14,14,14,16,14,14,14,18,14,12,14,14,14,14,14,14,11,14,14,14,11,14,17,14,8,14,14,12,14,14,14,14,14,14,12,14,14,11,17,14,14,14,14,18,14,11,14,14,11,14,14,14,14,14,23,12,14,14,16,14,14,14,14,14,14,14,12,14,11,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,12,17,12,15,23,14,14,14,14,14,21,14,14,11,14,14,17,14,16,14,14,12,14,14,11,14,14,17,14,14,12,11,14,11,14,14,14,14,14,17,14,14,11,17,14,14,14,14,14,14,14,14,12,14,14,14,14,15,14,11,14,14,12,14,14,14,15,14,14,14,14,14,14,18,18,14,14,14,14,14,14,8,14,14,8,16,14,11,14,14,14,14,14,14,14,14,14,14,14,14,8,16,12,14,14,14,8,17,14,14,17,12,14,14,14,14,14,14,11,14,14,17,14,11,14,14,14,14,14,14,12,14,14,14,14,14,18,14,17,14,14,14,8,14,14,14,14,14,14,14,14,14,14,18,17,14,17,14,23,12,14,14,12,14,14,14,14,18,14,14,12,14,14,14,14,14,14,11,14,18,14,14,11,12,14,16,8,14,14,14,14,12,12,14,14,12,18,14,14,14,11,14,18,11,14,14,16,14,14,14,14,16,14,12,14,14,14,14,14,14,14,14,14,12,14,14,17,14,14,14,14,14,14,15,17,17,14,14,17,14,18,14,14,22,14,11,14,11,12,14,21,14,17,17,14,14,17,17,23,14,14,14,14,14,18,14,17,14,14,14,14,17,14,11,14,14,14,14,12,14,19,19,14,14,11,14,14,12,11,14,14,15,21,18,14,14,18,14,14,14,14,18,14,15,11,14,14,14,11,14,12,14,14,14,14,14,11,14,14,8,14,14,14,17,14,18,14,14,17,11,14,14,16,14,12,12,12,14,14,14,14,14,14,14,14,14,17,14,14,14,14,8,11,14,14,14,14,14,17,17,14,14,14,14,14,14,12,14,18,14,14,17,14,14,14,14,14,14,14,14,14,14,14,18,17,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,15,14,14,14,15,17,17,12,14,14,14,14,14,14,16,14,14,14,14,14,12,12,14,14,18,14,14,14,12,14,14,14,14,18,14,14,14,15,14,14,14,14,14,14,17,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,12,14,14,14,17,8,14,16,14,14,14,14,14,14,14,17,14,14,14,14,14,14,17,18,12,14,12,14,14,14,14,14,14,14,14,14,18,11,14,14,14,14,14,18,14,14,14,14,14,14,17,14,14,14,14,14,12,14,14,14,8,14,14,11,17,11,14,14,12,17,14,14,14,12,8,14,14,14,14,14,14,12,14,14,14,14,14,14,14,18,17,17,14,14,11,14,14,14,18,14,14,12,14,14,14,17,14,14,14,14,15,14,14,14,14,14,14,17,14,11,11,14,14,14,14,14,14,17,14,14,14,14,14,14,14,12,14,17,12,14,12,14,14,14,14,14,18,14,14,12,14,14,12,14,17,17,11,14,14,14,14,14,14,19,14,14,14,14,18,14,17,14,14,14,14,11,14,14,14,14,12,14,14,14,14,14,14,12,14,14,14,14,14,14,14,8,15,14,14,12,14,14,14,14,14,14,19,19,14,14,18,12,14,17,14,14,14,14,18,14,14,11,12,14,14,17,14,14,12,14,14,14,14,17,14,14,14,14,18,14,18,14,18,14,14,14,17,14,14,11,14,14,18,14,14,17,14,14,8,14,14,14,17,14,14,14,14,14,18,14,14,14,14,14,14,14,11,14,14,8,14,14,17,14,14,21,14,14,14,8,22,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,17,14,14,14,12,18,17,17,14,14,14,17,14,14,14,14,12,14,14,14,14,14,14,12,14,14,14,14,12,14,14,12,14,14,14,14,14,14,14,8,14,11,14,14,14,14,20,14,14,14,17,12,8,14,14,14,14,14,16,17,14,14,17,14,14,14,14,14,14,12,14,14,14,14,14,14,8,14,17,12,14,12,14,16,16,14,12,14,14,17,14,14,14,14,14,8,14,8,14,14,14,12,14,14,8,14,14,17,15,14,14,17,12,14,12,14,11,14,11,16,14,14,16,14,14,14,17,18,11,18,14,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,16,14,15,14,14,14,14,14,8,14,14,8,14,14,14,12,14,14,14,17,14,14,14,14,8,14,14,14,14,14,14,18,14,14,14,14,12,14,14,14,14,14,8,22,14,16,14,17,14,14,15,14,14,18,14,14,22,14,14,14,14,14,12,14,14,14,17,14,14,11,14,8,14,14,14,12,14,12,12,14,14,14,14,12,14,14,14,14,17,14,15,11,17,14,14,12,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,19,19,19,14,14,14,16,14,17,11,17,14,14,14,14,17,14,14,15,14,14,14,14,15,14,8,14,14,14,14,14,14,8,14,14,14,14,14,14,14,11,14,14,14,14,14,14,11,17,12,14,14,14,14,22,16,14,18,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,18,14,14,14,18,14,12,14,14,14,14,14,15,17,14,14,17,14,18,14,14,12,14,14,14,14,11,8,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,17,14,14,14,14,14,21,17,14,14,14,14,14,14,8,14,14,14,14,14,17,14,14,14,11,14,17,12,17,14,14,14,14,14,14,14,14,14,16,14,14,14,14,11,14,14,16,14,14,14,14,22,18,17,14,14,14,14,14,8,14,14,14,12,14,14,12,11,15,17,14,14,21,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,15,14,14,14,11,17,12,14,17,11,14,15,14,14,14,14,18,14,14,14,18,14,14,14,14,14,14,11,11,14,14,14,14,14,12,14,14,14,8,12,14,16,14,17,14,14,14,14,14,14,14,14,17,14,14,14,14,12,14,14,14,14,18,14,17,14,14,14,14,14,14,14,14,14,8,14,22,12,14,14,14,14,14,14,12,14,14,11,17,14,12,11,14,12,14,14,14,15,14,14,14,14,14,14,14,17,14,14,14,16,14,14,14,14,17,18,14,14,14,17,12,8,18,14,14,24,14,14,14,14,14,14,14,14,18,12,14,14,14,14,14,14,12,14,14,14,17,14,15,14,12,14,14,14,14,12,14,14,11,14,14,14,14,19,19,14,14,14,14,14,14,14,14,14,14,11,14,14,14,11,12,18,8,14,14,16,11,11,12,14,15,14,12,8,8,14,17,14,16,14,16,12,8,14,14,17,14,14,8,14,14,14,14,14,14,14,14,12,14,14,14,14,24,14,14,14,18,14,14,14,14,14,17,14,14,14,14,14,14,14,8,12,22,14,11,12,18,14,14,14,18,17,14,12,18,14,14,8,8,14,17,12,12,14,14,14,14,14,14,14,14,14,14,14,12,8,14,14,8,14,14,14,14,17,14,14,11,14,14,14,14,14,14,14,17,14,14,17,14,14,12,14,14,22,14,14,14,14,14,18,14,11,17,14,14,8,14,14,14,11,14,14,11,14,14,14,14,14,14,14,14,21,14,17,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,12,14,17,14,8,14,14,14,14,14,14,14,8,14,14,11,14,14,14,14,14,8,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,17,14,14,15,14,14,14,14,14,14,14,14,14,12,14,11,14,17,8,14,12,22,11,14,14,14,12,14,14,16,14,14,14,14,14,14,14,14,14,12,18,14,14,14,25,14,14,14,18,22,11,14,14,14,22,14,14,14,17,14,14,14,14,14,14,14,14,14,8,14,14,15,14,8,14,15,14,18,11,11,14,14,14,14,14,11,8,14,12,22,14,14,14,14,14,12,12,11,14,14,14,14,12,14,14,12,14,14,14,14,14,17,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,17,14,14,14,16,14,14,14,11,14,14,14,12,14,14,14,14,19,19,14,14,14,14,14,14,14,12,14,11,14,14,8,14,14,12,14,12,14,17,17,14,18,17,14,14,11,14,14,12,14,14,12,14,14,11,17,14,14,14,14,14,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,18,8,14,14,14,14,18,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,18,12,12,14,12,14,17,18,11,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,12,12,14,11,8,14,14,12,14,14,14,17,14,18,14,14,14,14,14,11,14,14,14,14,12,14,14,14,14,14,22,14,25,14,14,14,14,14,17,14,18,14,18,14,14,14,11,11,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,14,14,15,14,14,14,17,12,14,14,14,12,14,14,14,17,18,22,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,14,14,14,14,12,14,14,8,14,14,11,8,14,14,14,11,14,14,14,14,14,14,8,8,14,14,14,16,8,14,18,14,8,14,14,17,14,14,14,18,14,14,14,14,14,17,14,14,14,14,14,14,14,14,18,14,14,14,18,14,14,15,8,14,14,14,14,14,17,14,12,14,14,14,14,14,14,8,14,14,14,14,17,14,17,14,14,14,14,14,14,14,14,14,14,14,14,17,14,17,8,14,14,12,14,14,14,14,12,14,14,14,14,14,12,14,11,22,11,12,17,14,14,14,14,14,14,11,14,14,14,14,12,14,14,14,14,14,14,12,14,14,14,14,14,14,11,14,14,14,17,11,14,14,14,14,12,14,14,14,12,12,14,14,14,14,14,14,22,17,12,14,14,14,14,14,19,19,14,14,14,14,14,14,18,14,8,14,14,14,14,14,11,12,14,17,14,14,14,11,14,14,14,12,14,14,14,14,14,12,17,14,12,17,14,14,14,14,14,14,14,14,12,14,14,14,14,20,18,17,14,14,14,14,14,14,14,8,14,11,14,14,14,14,16,14,14,14,12,14,14,18,12,14,14,14,14,18,14,14,12,14,11,14,14,14,14,14,14,17,14,14,14,14,12,14,14,14,14,14,14,17,14,12,14,14,14,14,22,18,14,14,16,14,12,11,14,14,14,14,14,14,14,8,14,14,14,14,11,14,14,14,11,14,14,17,11,17,14,12,14,11,14,14,14,14,14,14,14,14,14,14,14,11,14,11,14,14,12,14,14,14,14,14,14,12,14,14,14,14,14,14,11,14,14,11,14,14,14,14,14,14,14,14,14,17,14,14,14,14,17,15,14,12,14,14,12,14,14,14,14,14,14,14,14,14,24,14,11,18,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,12,14,17,14,14,14,14,17,14,14,14,14,14,15,14,14,14,18,17,14,14,14,17,14,8,11,8,8,18,8,14,14,14,14,14,8,14,14,14,11,14,14,17,14,14,14,14,8,14,16,16,14,14,14,12,14,14,14,14,14,14,18,14,11,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,21,11,14,14,14,14,14,14,12,14,14,14,14,14,21,14,14,18,17,14,12,14,14,14,14,14,14,14,17,14,14,14,22,14,14,14,17,17,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,14,14,21,14,17,14,17,14,16,14,18,14,14,14,14,14,14,14,12,14,14,8,17,15,17,12,17,14,14,14,14,12,19,19,19,14,14,14,14,20,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,12,11,14,11,14,14,14,14,14,16,17,14,14,12,11,14,14,14,14,8,14,14,12,11,14,14,18,14,14,14,16,17,14,14,12,14,14,14,14,14,14,11,14,14,14,14,14,12,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,17,14,12,14,14,14,11,14,14,16,12,15,14,11,17,14,14,14,14,14,14,14,17,14,14,18,12,14,11,14,14,8,14,14,14,14,14,17,8,12,14,14,14,14,14,11,14,14,11,14,15,14,14,14,14,14,17,14,14,14,8,14,14,11,14,14,14,11,14,14,14,14,14,14,18,17,8,17,14,14,14,14,14,14,14,14,14,14,21,14,17,14,14,14,14,14,14,14,17,14,14,17,14,14,12,14,14,14,11,12,14,17,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,15,17,14,12,14,17,14,14,12,14,14,14,14,14,14,14,14,11,14,11,14,14,14,14,14,14,14,11,14,14,14,14,12,14,14,14,14,14,18,14,17,14,14,12,17,8,14,14,12,14,15,14,14,14,21,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,11,14,11,14,14,11,14,17,14,14,14,18,14,14,14,14,14,17,14,14,14,17,14,14,14,12,12,12,14,14,14,17,14,14,14,14,14,14,12,14,14,17,14,14,14,14,14,14,14,12,8,14,14,14,14,14,14,14,14,14,14,14,14,16,14,14,14,12,12,14,14,14,14,14,14,14,14,17,11,19,19,14,14,14,22,14,8,17,8,17,14,14,14,12,11,14,12,14,14,14,14,14,14,14,14,14,14,14,14,17,14,11,14,14,14,14,14,14,14,14,14,14,17,8,17,14,12,14,14,14,14,14,14,14,17,14,14,8,14,14,14,14,14,14,14,17,14,18,14,14,11,11,14,14,15,12,12,17,14,12,11,12,14,14,14,8,14,18,14,17,14,14,14,14,14,14,14,14,14,14,14,14,17,14,11,14,14,14,14,14,14,11,14,14,22,14,14,14,14,14,14,11,14,14,14,14,15,8,14,17,14,14,14,14,16,17,8,14,14,14,14,14,14,20,14,14,14,14,14,14,14,12,14,14,14,14,14,14,11,8,14,14,14,18,17,14,14,14,14,14,14,21,11,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,15,14,11,14,11,14,17,14,8,14,14,14,11,14,11,14,14,17,17,14,14,14,12,14,14,14,24,14,14,17,17,14,12,8,17,8,12,14,18,14,14,11,14,14,14,12,14,14,14,14,14,14,14,17,14,14,14,14,17,14,14,14,11,11,14,14,14,17,14,16,14,12,14,12,12,18,12,14,14,14,17,17,14,14,14,14,14,14,14,14,14,12,14,12,14,17,16,15,14,17,14,14,17,14,11,14,14,14,14,17,14,22,17,14,14,14,16,14,14,14,14,11,14,14,16,12,14,12,8,17,14,14,14,14,14,11,17,14,17,18,14,14,14,14,14,14,14,18,14,8,14,14,12,14,14,18,14,14,14,14,14,14,12,17,18,14,14,14,14,14,14,18,14,14,11,17,14,14,14,14,12,14,14,14,12,14,14,14,14,14,17,12,17,14,14,8,14,15,14,19,19,14,18,14,14,14,14,17,14,18,17,14,18,14,14,14,12,14,14,11,14,14,17,14,14,14,14,16,18,14,12,14,14,14,18,14,14,14,14,17,14,14,14,14,18,14,14,14,12,11,18,17,14,14,14,14,14,14,14,14,14,12,14,14,14,17,14,14,14,14,15,14,11,14,14,18,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,12,14,14,14,14,14,14,15,14,14,12,14,14,14,14,14,14,17,14,14,14,14,14,14,18,14,14,14,14,14,17,14,8,15,18,14,17,14,11,14,14,12,12,8,17,14,14,14,14,8,14,18,14,8,14,14,8,17,14,17,14,14,18,14,18,14,14,14,16,12,22,14,14,14,12,17,14,14,12,12,14,14,14,14,14,11,14,14,14,14,14,14,14,14,17,14,14,17,12,14,14,14,14,14,14,8,14,14,17,11,14,14,12,14,14,11,14,11,14,12,12,14,12,14,14,17,14,14,14,14,14,14,18,12,14,12,12,14,18,14,14,21,8,14,14,14,14,14,18,14,14,14,14,14,14,15,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,22,14,14,17,14,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,12,16,14,14,14,14,14,18,14,14,14,12,14,14,11,18,17,18,21,14,14,14,14,11,14,14,14,17,14,14,14,14,14,14,8,14,14,14,14,14,12,14,14,14,14,17,12,18,14,14,12,18,14,14,17,14,11,16,14,14,14,14,14,12,14,14,16,14,19,19,14,14,14,14,14,14,14,11,14,14,14,14,14,14,18,18,14,15,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,17,14,14,11,14,14,14,14,16,14,14,14,14,14,17,14,11,18,14,14,14,14,14,12,14,22,14,14,17,14,14,14,14,14,14,12,12,15,14,14,14,14,14,14,14,14,14,14,12,12,11,14,14,14,18,20,14,14,11,18,14,14,14,14,14,8,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,14,14,11,14,14,18,14,14,8,14,8,14,14,14,14,14,14,14,14,14,14,17,11,14,14,14,14,14,14,14,14,11,12,12,14,17,14,11,14,17,12,14,14,14,14,14,14,8,11,14,12,14,14,12,8,14,14,14,12,23,12,14,14,14,14,14,17,14,14,14,12,14,14,14,14,14,14,14,14,14,12,14,8,14,8,12,14,14,14,14,14,14,11,17,14,14,14,24,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,11,17,18,14,14,14,14,14,14,14,14,14,17,14,11,14,14,18,14,14,14,14,14,14,14,14,14,11,12,14,14,16,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,8,14,14,14,14,14,14,14,14,18,17,14,14,14,17,14,14,14,14,14,14,17,17,14,14,14,14,14,11,14,14,14,14,14,14,14,12,14,14,14,14,14,14,8,14,14,12,14,14,14,14,18,17,14,14,14,14,11,12,14,14,14,14,14,11,14,14,14,14,14,17,18,14,18,14,12,14,11,14,22,14,14,14,14,14,17,14,19,19,14,14,12,14,14,14,14,17,14,14,14,11,14,14,14,14,17,15,14,17,14,14,14,18,12,14,8,14,14,14,14,14,8,14,14,14,14,14,17,14,17,17,14,14,14,12,8,14,14,14,14,8,14,15,14,14,14,14,11,14,14,17,17,14,14,14,14,14,14,14,14,14,16,12,14,14,14,14,14,14,14,14,14,11,14,14,14,18,14,11,14,14,14,14,14,12,14,14,14,14,14,8,14,14,14,14,14,17,14,14,14,14,14,14,14,18,12,14,17,14,14,14,14,14,14,14,14,14,17,15,8,17,12,17,16,14,12,21,14,14,14,14,14,14,14,14,14,14,14,11,14,14,12,12,14,14,18,14,12,14,8,14,14,18,14,14,14,14,14,11,14,14,11,14,17,14,14,14,14,24,12,14,14,14,14,14,14,12,14,17,14,14,14,14,14,14,14,14,11,18,11,14,14,14,17,14,14,14,14,14,14,15,14,14,17,14,14,14,14,12,14,14,17,8,14,14,18,14,12,14,14,14,14,14,8,14,14,14,14,14,12,14,14,14,14,14,14,14,17,11,14,14,14,14,11,8,14,14,8,18,14,14,14,14,14,14,14,11,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,21,12,17,14,14,14,17,14,14,12,14,12,14,14,14,11,14,12,14,14,14,14,12,11,17,14,14,14,14,12,14,14,14,14,14,17,14,14,14,14,14,21,14,14,14,14,14,11,12,14,14,14,14,14,14,17,14,14,14,14,14,14,12,14,14,14,14,17,14,14,14,14,8,14,17,14,14,16,14,18,14,12,14,14,14,14,14,14,8,15,14,14,12,14,19,19,14,14,14,14,14,14,12,17,14,14,14,17,14,15,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,17,14,14,14,8,14,14,11,14,8,14,14,14,18,12,14,11,17,14,14,8,14,14,14,14,14,14,14,14,14,14,15,14,14,14,12,14,11,12,12,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,12,18,14,14,14,14,14,21,14,14,14,14,17,14,14,14,14,12,14,14,12,14,15,14,14,14,16,14,17,14,11,14,14,8,16,18,14,14,14,21,14,14,14,14,14,14,14,14,14,12,14,15,14,11,14,14,14,17,14,15,14,14,17,11,14,14,14,14,14,14,12,14,14,14,12,12,14,17,18,14,14,14,14,11,14,14,12,14,14,14,12,14,14,14,8,12,14,14,14,14,14,14,14,14,14,18,8,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,17,14,14,14,14,14,14,24,14,17,14,18,8,18,14,12,14,12,12,8,14,16,14,12,14,14,14,14,14,14,14,14,18,14,14,14,14,11,14,14,14,14,14,14,22,11,12,12,14,14,12,14,17,12,19,17,14,14,17,14,14,14,14,14,14,11,14,14,14,14,11,11,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,16,14,14,14,14,14,14,14,14,14,17,17,14,11,14,14,11,14,18,14,14,14,14,14,14,14,14,14,14,14,17,14,14,19,19,14,11,14,14,14,14,14,8,17,22,14,14,17,14,14,14,14,14,14,14,14,14,8,18,14,17,16,14,14,14,14,14,17,14,14,14,18,11,14,17,14,14,12,12,12,14,8,14,14,14,12,14,14,14,17,18,18,14,22,14,14,14,14,14,14,14,14,14,14,8,14,11,14,14,18,14,18,14,21,14,14,14,14,14,14,14,14,14,14,14,14,12,14,12,11,14,14,14,18,14,14,17,15,18,12,11,14,18,8,14,14,14,14,14,14,12,14,14,22,14,14,14,14,14,14,14,14,14,14,14,14,25,14,14,14,14,17,14,14,14,14,11,14,14,14,15,14,14,14,8,14,14,12,14,14,14,17,14,14,14,14,18,14,14,14,14,14,12,14,14,12,12,14,14,14,18,17,18,14,14,14,14,14,12,14,11,14,14,17,14,14,14,14,14,11,14,14,14,16,14,14,14,14,14,14,14,14,14,14,14,14,17,12,14,14,14,14,14,18,12,12,14,14,14,14,14,17,14,14,14,14,8,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,17,14,11,12,14,18,14,14,14,14,14,14,11,14,14,17,11,14,14,12,12,14,14,14,14,14,14,14,8,14,14,14,8,14,14,14,17,14,14,8,14,14,14,14,14,14,14,14,12,12,14,11,14,11,14,14,14,14,14,14,14,14,14,12,8,11,14,14,15,14,14,14,17,17,14,15,14,14,14,14,8,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,14,14,14,12,14,14,14,14,14,12,14,16,14,14,17,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,12,14,12,14,14,14,19,19,14,14,14,14,14,14,14,14,18,14,14,14,17,18,14,14,14,14,14,14,14,14,17,17,14,14,14,14,22,18,11,14,14,14,14,14,14,14,14,14,11,8,11,14,14,12,14,15,14,14,15,14,14,14,14,14,14,17,14,14,14,14,14,18,14,12,17,15,12,12,14,18,17,14,12,14,14,14,14,14,14,14,14,14,14,22,14,14,14,18,17,12,14,16,16,14,12,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,18,14,14,8,14,14,17,16,14,14,14,14,14,17,14,14,16,14,18,14,14,18,12,18,17,17,14,12,14,12,14,14,11,14,14,14,14,14,16,18,14,14,12,14,14,14,14,18,14,14,14,14,14,14,14,14,17,14,14,14,14,22,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,8,14,14,11,14,14,14,14,14,14,14,14,12,14,14,14,8,14,14,18,14,14,14,14,14,11,14,14,14,14,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,17,14,14,14,12,14,14,14,14,17,12,14,14,14,14,14,14,14,14,17,14,17,14,8,12,17,14,14,14,14,14,14,14,14,14,17,18,14,14,18,8,14,14,14,14,14,14,14,8,14,18,11,25,14,12,14,14,14,18,14,14,14,14,17,14,14,14,14,17,14,12,17,14,14,14,14,11,14,14,14,14,14,14,14,14,17,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,22,12,14,11,14,17,14,17,12,12,18,14,14,14,12,11,18,14,14,21,18,14,14,17,19,19,14,14,14,18,12,14,14,14,11,11,11,11,16,14,14,14,8,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,11,8,17,14,17,14,14,16,14,14,14,15,14,14,17,14,14,17,15,14,17,14,14,14,14,14,14,14,18,14,12,14,14,14,11,20,14,12,14,14,14,14,11,14,14,14,14,14,14,11,14,18,14,17,14,14,12,18,17,14,11,8,14,8,8,11,18,14,18,18,14,17,14,14,15,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,11,14,17,14,14,14,14,17,14,17,14,12,14,14,14,11,14,14,14,12,17,14,14,18,14,14,14,14,12,11,11,15,14,14,14,11,14,14,14,14,14,14,8,14,14,14,14,14,17,16,17,14,14,14,12,14,14,14,14,14,12,14,11,17,17,14,11,14,12,14,14,14,14,11,14,15,14,18,12,14,14,14,11,8,16,14,11,14,14,14,14,14,15,14,11,12,16,12,14,14,12,12,11,18,14,14,14,14,14,14,14,14,14,14,17,18,11,17,14,14,8,14,14,14,14,14,14,14,14,14,17,14,14,14,14,11,14,14,23,18,16,14,14,14,14,14,17,14,14,14,14,14,12,14,14,14,8,8,14,14,14,14,14,14,14,14,14,14,14,22,14,14,14,17,14,14,14,14,14,23,14,18,18,8,14,11,11,14,14,8,14,18,18,14,22,14,14,14,12,20,14,12,14,12,14,11,16,14,14,11,14,11,14,14,14,14,12,15,14,14,14,8,8,14,14,14,8,14,14,14,8,14,14,14,14,14,14,17,14,14,14,14,14,18,14,22,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,17,19,19,19,17,14,14,14,11,8,18,14,14,18,12,14,14,14,17,14,14,11,14,14,14,14,14,14,14,14,17,14,15,14,14,14,17,14,11,14,14,14,14,14,14,18,16,12,12,14,12,14,14,14,14,14,14,14,14,12,14,14,17,18,14,14,23,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,17,14,12,14,14,14,14,14,14,14,14,17,14,14,14,17,14,14,14,14,14,12,14,11,12,14,14,14,14,14,12,14,14,18,15,17,14,14,12,14,14,14,14,14,14,14,14,14,14,22,12,14,14,14,14,14,14,14,14,14,14,16,14,14,12,14,11,17,11,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,12,14,14,18,14,14,14,14,14,14,14,14,14,15,18,14,14,14,15,14,14,14,14,14,14,14,14,14,14,14,14,14,8,11,14,14,8,14,17,18,14,17,12,14,14,14,17,15,15,14,14,14,14,14,14,11,14,14,14,12,14,14,14,14,14,12,14,15,14,14,11,14,14,14,11,14,14,14,14,17,14,14,12,14,14,14,12,14,18,14,18,14,14,17,14,15,17,14,14,12,14,14,14,17,14,14,14,14,18,11,14,22,12,14,14,14,14,17,8,14,14,11,17,14,12,14,14,14,12,18,16,14,14,14,14,14,14,14,14,14,14,14,14,17,8,17,14,14,14,14,14,8,12,14,12,14,17,14,14,14,14,14,14,12,14,14,11,14,14,14,14,14,17,14,18,14,14,17,14,14,14,14,14,14,11,11,14,14,14,20,14,14,14,14,14,22,14,14,14,14,14,14,19,19,19,14,14,14,17,14,12,14,14,17,14,14,14,14,14,14,14,14,8,14,14,14,14,14,11,14,14,18,14,14,14,14,14,18,14,11,14,17,17,14,18,14,14,14,14,14,14,14,14,14,14,15,18,14,14,14,14,14,14,14,14,14,14,14,16,14,11,14,14,8,14,14,14,14,14,14,14,14,17,14,15,14,14,17,14,14,12,14,14,17,14,14,14,14,17,8,14,14,14,18,8,14,14,14,14,14,14,14,18,14,14,14,14,11,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,15,17,14,14,8,14,14,14,14,14,12,14,11,14,14,12,14,14,14,14,14,14,12,14,14,14,14,17,14,18,14,11,14,12,14,14,14,14,17,14,8,14,14,14,14,14,17,14,12,14,14,14,14,14,18,14,15,14,14,14,14,17,14,11,11,14,14,14,18,14,14,18,14,14,14,14,14,18,14,15,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,22,17,14,14,14,11,14,12,14,12,11,14,14,14,14,8,14,14,14,17,14,14,17,18,14,14,14,14,14,14,14,14,17,18,14,14,12,14,14,14,14,11,12,14,14,14,14,14,18,14,14,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,14,22,14,11,14,14,14,17,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,14,12,12,14,20,14,17,14,14,14,14,11,14,14,11,14,14,14,14,11,12,14,14,14,14,14,18,14,14,11,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,19,19,19,12,14,14,14,14,14,14,14,14,14,14,14,14,11,14,11,12,12,14,14,14,14,8,17,14,17,14,14,14,17,14,17,14,14,14,17,15,14,14,14,14,14,14,14,14,12,14,14,24,14,18,12,8,16,18,8,14,14,14,12,14,14,14,14,14,14,14,17,14,8,11,14,14,14,14,14,14,14,14,14,12,17,21,14,14,14,14,14,14,14,14,14,14,14,15,14,14,17,18,14,14,14,14,14,14,14,17,12,14,18,14,11,14,14,14,17,12,14,14,14,14,15,8,22,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,11,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,12,14,14,14,11,12,14,8,14,14,14,14,14,14,14,18,14,17,14,14,14,21,14,14,14,11,14,14,14,17,14,14,18,11,14,12,14,14,14,14,14,14,14,12,14,12,18,14,14,14,14,14,14,14,14,11,14,14,11,14,22,14,14,11,14,14,14,14,14,14,14,14,14,11,14,14,14,14,12,14,18,11,14,14,17,14,14,14,14,14,14,14,14,14,12,14,14,18,14,12,14,14,14,12,14,18,14,14,14,14,14,12,14,14,14,14,11,17,14,14,14,14,14,17,14,14,18,14,14,14,14,14,15,14,17,14,14,14,18,8,14,12,17,11,14,14,14,14,12,14,16,17,14,14,14,12,14,17,14,14,14,14,14,14,14,17,14,12,14,17,14,14,17,11,14,14,14,21,17,14,14,18,14,14,14,12,14,12,14,14,14,14,14,14,14,18,14,14,14,17,11,14,14,17,12,14,14,8,14,14,14,14,14,14,17,14,12,14,14,14,19,19,14,11,14,14,8,14,14,14,16,17,11,14,14,12,12,14,14,14,14,14,14,14,8,17,14,14,14,8,8,14,17,14,14,14,12,14,14,14,14,14,14,14,8,12,14,18,14,11,14,12,14,14,14,20,11,14,14,14,14,14,14,14,14,14,11,14,17,14,14,12,14,14,14,14,17,8,14,14,14,14,14,14,14,14,14,14,14,17,14,12,12,14,11,12,14,14,11,14,12,11,14,14,14,14,17,14,14,12,14,8,15,8,14,14,17,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,14,8,14,12,14,14,12,11,14,12,14,14,14,11,14,22,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,12,14,14,14,14,14,12,14,14,12,14,14,12,14,14,14,14,14,14,12,14,17,11,12,14,14,17,14,21,14,14,14,14,18,14,14,14,14,18,14,14,14,15,14,18,15,17,14,14,14,14,14,16,14,14,11,14,14,14,11,14,11,14,14,14,14,14,18,14,8,14,14,14,14,12,18,14,14,14,11,18,14,14,14,14,14,14,14,12,14,14,8,11,14,17,18,14,14,14,11,14,12,12,14,14,17,14,14,11,12,14,8,14,14,14,14,14,11,18,14,14,12,14,22,14,14,14,14,14,14,18,14,17,17,14,18,12,14,14,14,17,18,14,12,14,14,14,17,14,14,14,12,14,14,14,14,14,14,14,8,12,17,14,17,12,8,12,14,14,14,14,14,14,14,14,14,12,12,12,14,14,12,14,14,14,14,14,14,17,14,11,14,14,12,14,14,11,14,14,14,14,14,14,14,14,14,18,14,14,17,14,14,14,14,12,14,14,14,14,12,14,14,19,19,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,12,14,14,14,17,14,24,14,14,12,14,11,14,14,14,14,14,14,14,14,14,14,14,17,18,18,17,17,11,14,12,14,14,17,14,17,14,18,11,14,14,14,14,17,14,14,14,14,11,12,14,12,14,17,14,14,14,17,14,12,14,14,14,14,14,12,14,14,14,14,14,14,14,14,17,14,14,14,11,14,14,12,17,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,17,14,8,14,14,14,14,14,14,17,17,11,14,14,14,14,15,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,12,17,8,14,14,14,14,18,14,14,17,14,17,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,12,14,14,14,14,16,14,17,18,14,14,14,14,14,14,21,17,14,14,14,14,14,14,8,17,15,17,14,14,17,14,17,14,14,14,14,14,14,8,14,14,14,14,17,11,14,14,14,14,14,14,14,14,12,14,18,14,17,11,15,14,14,14,11,18,14,11,8,14,14,14,14,14,8,14,14,14,21,12,14,14,14,14,14,14,14,14,14,14,14,14,18,15,14,18,12,12,14,14,11,14,14,15,14,14,22,14,14,12,17,14,14,15,12,14,14,14,14,14,14,14,14,14,14,14,14,14,18,12,14,12,14,17,14,14,17,14,14,14,14,14,14,14,14,12,14,14,14,14,18,14,8,11,14,14,12,14,14,12,14,14,17,15,11,14,18,14,14,14,14,14,14,8,14,14,18,12,11,14,14,14,14,14,14,11,15,19,19,19,14,17,14,14,11,14,18,14,21,14,14,14,14,14,14,14,14,11,11,14,12,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,11,14,14,14,8,17,14,14,12,11,18,14,14,14,14,14,14,14,22,14,14,14,14,12,14,14,14,14,14,14,17,14,12,17,12,14,14,12,12,14,14,14,14,14,12,14,14,14,8,14,14,14,14,14,18,11,11,12,14,8,14,17,14,14,14,14,24,14,14,14,14,14,12,14,14,14,21,14,14,14,12,14,14,14,14,14,14,14,14,11,11,14,14,14,14,17,14,14,14,14,14,17,14,14,14,14,14,14,14,12,14,14,14,14,17,14,12,14,14,14,14,11,11,14,14,12,15,14,14,14,18,14,14,14,17,11,14,14,14,14,14,14,12,18,11,17,17,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,8,17,14,14,14,14,14,14,14,18,12,14,14,14,14,14,14,17,17,11,14,14,15,14,14,17,12,14,11,18,14,11,18,8,14,14,14,14,14,14,11,14,22,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,14,14,14,14,14,14,14,14,14,14,17,14,11,11,14,14,14,14,14,14,14,14,14,14,14,14,15,14,8,14,14,14,14,14,14,14,14,17,12,12,14,14,14,14,14,14,11,14,14,12,14,14,11,14,14,14,14,14,14,17,14,14,14,14,14,11,14,17,14,18,18,8,19,19,14,14,14,14,14,14,14,14,14,12,16,14,12,12,14,14,17,14,14,8,14,14,14,14,18,11,14,14,14,11,14,14,14,15,14,14,15,11,14,12,14,11,14,12,14,14,14,14,8,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,8,14,14,14,14,14,14,14,14,14,14,11,17,14,14,14,14,14,14,14,14,14,14,12,14,8,14,14,14,14,14,14,12,14,14,14,18,14,17,14,14,14,12,14,12,14,14,12,14,14,11,14,18,14,14,17,14,14,14,14,14,8,14,14,14,14,17,17,12,14,11,14,14,14,14,17,14,14,14,14,14,12,14,14,14,14,11,14,12,14,14,12,14,12,14,14,14,14,14,17,14,18,14,14,14,16,14,14,14,14,14,14,11,14,14,14,12,11,14,14,14,14,11,14,14,14,14,16,14,14,14,11,14,14,14,14,14,14,18,14,14,14,14,14,14,12,14,14,14,14,12,14,11,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,14,14,12,14,21,18,14,14,14,14,14,14,18,14,14,12,14,14,14,14,11,12,14,12,14,8,14,14,14,14,14,14,14,14,14,14,14,14,8,17,11,14,14,14,14,14,12,14,12,14,14,14,14,14,11,14,14,14,14,14,17,14,14,14,17,14,14,14,17,14,14,14,14,20,14,14,14,14,14,14,14,12,14,14,14,14,14,21,14,14,14,14,18,12,14,11,12,14,14,14,14,14,14,18,14,14,14,8,18,14,14,17,17,16,22,17,12,11,14,14,14,14,8,14,14,14,17,14,14,14,14,14,14,14,14,18,14,14,19,19,14,14,14,17,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,16,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,8,14,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,14,14,15,14,12,15,14,12,14,11,14,17,16,18,14,17,18,14,14,14,14,11,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,17,17,11,14,14,14,14,12,14,18,17,15,12,14,14,14,14,14,14,14,14,22,21,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,17,14,14,17,15,11,14,14,18,14,14,18,14,14,14,12,17,14,18,14,16,18,14,14,14,14,11,14,14,14,14,14,14,14,11,14,18,14,14,14,14,14,14,14,14,14,14,12,14,17,14,14,14,14,22,14,14,18,14,14,14,14,18,14,14,14,14,14,14,14,8,14,14,14,14,14,14,14,14,12,14,14,14,14,18,14,14,11,8,18,12,14,14,14,14,11,14,12,14,14,14,14,14,14,17,14,14,12,14,14,14,14,11,14,14,14,14,14,8,17,14,14,12,14,14,12,8,14,14,18,12,14,14,14,14,14,14,12,14,14,14,16,14,14,14,17,14,14,14,14,14,14,14,11,11,22,14,14,18,14,18,18,14,14,14,18,14,14,17,18,14,14,14,14,14,14,14,14,18,14,14,14,14,12,14,14,14,14,14,12,14,14,14,14,14,18,8,14,14,18,14,14,18,14,14,14,12,14,14,14,14,14,11,14,14,14,14,14,14,14,11,18,14,14,14,12,14,8,11,11,14,14,14,14,14,14,14,14,11,19,19,15,14,14,12,17,12,22,11,12,14,8,14,14,17,14,12,14,14,8,14,17,12,14,18,14,14,14,14,14,12,14,11,20,14,11,18,14,14,14,14,12,14,12,14,14,14,14,18,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,8,11,18,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,14,11,14,14,14,11,14,8,11,14,14,8,14,14,18,14,17,14,14,12,14,14,14,18,14,14,14,14,14,17,14,12,14,14,14,12,14,14,15,14,15,14,14,14,14,14,12,17,16,14,14,14,14,14,14,17,14,18,11,14,14,17,14,14,14,14,14,14,11,14,12,14,14,14,14,14,14,14,14,14,8,17,14,14,14,14,22,12,11,14,14,21,17,17,14,14,22,14,14,14,14,12,14,14,11,14,14,11,14,12,15,16,11,14,14,18,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,12,12,14,14,14,11,14,14,12,14,17,14,12,11,14,18,14,14,14,14,12,14,11,14,14,20,17,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,14,14,14,17,14,14,17,14,14,12,14,14,14,14,8,14,14,14,14,17,17,14,14,17,16,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,12,8,14,14,11,11,14,17,14,11,11,14,14,14,14,11,14,14,14,12,14,14,14,17,14,18,12,8,14,14,15,14,14,14,12,14,14,14,14,14,12,14,14,14,14,17,14,14,14,14,19,19,14,14,14,14,14,14,14,14,11,14,14,17,14,18,14,12,14,14,8,12,14,14,14,11,14,14,17,14,11,14,14,14,14,17,14,14,14,14,12,14,12,14,14,12,14,14,14,14,14,14,14,14,11,12,14,14,14,14,17,14,14,14,14,14,14,14,14,14,8,14,14,14,17,14,16,17,14,14,14,8,14,14,14,14,17,12,18,14,14,14,14,14,14,14,12,14,14,17,11,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,14,14,14,21,14,18,14,14,14,11,11,14,17,14,17,14,14,14,14,11,11,14,17,14,14,12,14,14,14,11,14,14,14,14,14,14,14,14,14,14,12,14,14,14,11,14,14,15,14,14,12,14,14,17,14,8,14,14,14,12,14,14,15,12,8,14,14,8,14,14,20,14,15,12,11,17,22,14,12,17,12,14,14,14,14,14,14,12,14,14,14,14,17,14,14,8,14,14,14,14,14,14,14,14,8,17,12,14,18,14,14,14,14,14,12,11,14,14,14,14,19,14,18,14,14,14,18,12,14,14,14,14,14,14,15,14,14,14,14,14,12,14,14,11,17,14,17,11,14,14,14,14,18,17,14,14,14,14,8,18,14,11,14,12,11,14,14,14,14,14,14,14,14,17,14,14,16,17,11,22,21,14,14,14,14,18,14,14,14,14,18,14,14,12,8,17,14,12,14,14,14,14,14,14,11,18,14,14,14,14,14,22,12,14,8,14,14,14,14,14,14,14,17,14,18,14,14,14,14,14,14,14,14,14,14,14,14,17,8,14,17,8,8,14,17,14,18,11,12,14,14,11,14,12,14,17,14,15,14,12,17,14,8,14,14,14,19,19,14,14,14,17,14,14,14,14,14,12,14,14,14,14,14,14,14,17,12,14,14,14,14,14,14,14,14,21,14,14,12,14,14,17,14,18,14,14,14,14,14,14,14,18,14,11,14,14,12,14,14,14,14,14,22,14,14,14,14,14,14,17,18,14,12,18,14,11,14,14,14,14,14,14,12,14,14,14,14,14,18,8,14,14,14,14,14,14,14,12,14,12,14,14,14,11,11,14,14,18,17,8,14,14,14,14,14,14,14,17,14,12,14,12,12,14,14,14,14,14,14,14,12,14,14,14,14,12,18,14,12,14,14,14,14,14,14,11,14,14,14,14,11,11,14,14,14,14,14,14,14,14,14,8,14,12,14,14,14,14,14,14,17,11,14,12,14,14,12,25,15,14,14,14,11,14,14,14,14,14,14,11,14,12,14,17,14,21,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,22,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,17,17,17,17,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,14,18,14,14,12,14,14,14,14,14,14,14,14,14,14,14,15,11,14,14,14,12,14,14,14,17,14,14,14,18,20,11,17,14,11,12,14,14,14,14,14,14,14,14,15,14,14,14,17,21,14,17,14,14,11,14,8,14,14,14,14,14,14,17,16,14,14,14,14,14,14,14,12,14,14,14,14,14,18,17,14,14,14,14,11,14,11,14,14,14,20,14,12,14,14,14,17,14,14,14,16,14,14,14,8,14,12,14,15,14,11,16,14,14,14,14,14,8,12,17,14,14,8,14,14,17,14,14,14,14,14,14,8,14,14,14,19,19,17,18,14,14,14,14,14,14,14,14,14,18,14,11,14,14,8,14,14,14,14,14,14,17,14,14,14,18,14,14,14,14,14,8,14,14,14,14,14,12,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,17,12,14,14,14,14,17,14,14,15,8,14,14,8,14,14,12,12,12,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,18,14,14,14,18,14,18,14,12,14,14,12,14,14,14,22,14,14,14,14,12,14,17,14,14,17,14,22,14,14,14,14,14,14,14,14,11,14,12,22,12,14,12,14,14,14,14,14,14,12,14,14,14,12,14,14,11,14,18,14,14,8,14,11,14,14,14,11,14,12,14,11,14,14,18,14,14,14,14,14,21,22,14,14,12,14,14,14,17,14,8,12,14,14,14,14,14,14,14,14,11,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,14,14,24,14,14,14,14,14,14,14,14,16,14,14,17,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,17,17,14,14,12,14,14,14,14,14,14,14,17,22,12,14,14,14,14,14,14,14,14,14,14,15,14,11,14,11,14,14,14,12,14,14,17,17,14,14,14,21,11,14,14,17,14,14,14,8,14,14,14,14,14,14,17,14,14,14,14,14,18,12,14,14,14,22,14,17,14,14,14,12,14,11,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,18,14,14,11,14,14,14,17,17,14,14,14,14,14,14,14,14,17,14,14,14,18,14,11,14,11,17,18,14,14,17,14,14,14,14,17,14,14,17,14,14,12,14,12,14,14,14,14,14,19,19,14,14,14,14,14,14,14,15,14,14,8,14,14,14,14,14,14,14,16,14,11,14,17,15,25,14,14,14,11,14,14,14,14,12,14,11,18,14,14,14,14,11,17,14,17,17,14,14,11,14,16,14,14,12,14,14,17,14,14,14,14,14,14,14,14,14,12,17,14,14,14,14,14,14,14,14,12,14,11,21,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,11,14,18,14,11,12,14,22,14,22,14,14,14,14,14,14,12,21,8,14,14,12,12,14,14,8,14,14,17,18,14,14,14,17,14,18,12,14,14,14,14,14,14,14,12,14,14,14,8,18,14,14,14,14,18,14,12,14,17,14,14,14,14,14,14,14,14,11,12,14,11,14,12,14,14,17,14,14,14,14,14,14,14,14,12,15,11,17,14,12,14,14,14,17,14,14,14,14,17,14,14,14,11,14,14,14,18,12,14,14,14,14,14,14,11,14,14,14,17,14,18,12,14,14,18,14,14,14,14,14,17,12,8,14,14,14,14,14,14,14,14,18,14,14,14,14,14,14,12,17,8,14,14,14,11,14,14,14,12,14,14,14,12,14,14,14,11,18,14,11,14,14,14,14,14,17,8,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,12,14,14,14,17,14,14,16,11,14,14,14,14,14,14,12,12,12,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,12,14,17,18,14,14,17,20,8,14,17,14,14,18,16,14,14,17,14,14,14,14,14,12,15,14,14,8,14,14,8,17,14,14,14,14,14,14,14,14,14,14,14,19,14,14,14,14,17,11,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,22,14,18,14,11,14,14,12,17,12,14,14,14,14,14,14,8,17,14,17,14,20,17,14,14,14,12,14,12,14,14,17,14,8,14,11,14,14,14,14,14,14,12,14,18,14,14,14,22,14,14,8,8,14,14,14,14,14,14,15,11,14,14,14,14,14,11,22,14,14,14,14,14,17,14,14,14,14,14,14,17,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,12,15,14,17,14,14,14,14,18,18,14,14,14,14,21,14,14,18,14,14,14,14,8,14,14,14,14,14,14,14,14,8,14,17,14,14,14,17,12,14,14,14,14,14,14,14,14,8,17,14,14,17,14,14,14,11,14,14,8,14,14,17,14,11,14,15,14,14,12,14,14,14,14,16,14,14,14,14,14,14,12,14,14,14,14,14,17,14,22,18,11,14,14,11,12,14,14,18,18,14,8,14,14,11,14,12,14,14,14,11,8,8,12,17,14,14,14,14,14,14,14,12,8,17,17,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,12,14,14,14,18,14,14,14,14,14,12,18,17,14,14,14,12,16,12,14,14,14,17,12,14,14,14,14,12,11,14,14,14,14,14,8,17,14,17,17,14,14,14,14,14,8,12,14,14,14,8,14,11,14,14,14,14,12,14,14,12,14,14,14,14,14,22,14,14,14,8,14,14,17,14,18,14,14,14,21,14,14,12,11,14,14,14,14,14,14,14,14,14,8,14,14,14,14,17,14,15,14,15,14,14,14,14,14,14,14,14,18,14,14,11,14,14,12,14,14,14,14,14,12,14,14,18,14,19,19,19,14,14,17,15,17,18,14,14,14,14,14,14,14,14,11,14,8,14,14,18,14,14,14,14,14,14,11,14,14,18,17,14,14,18,14,12,12,21,14,14,14,14,12,14,14,8,14,14,14,14,17,14,11,14,14,14,14,14,14,14,14,14,12,12,14,14,17,14,11,14,14,12,14,8,14,14,17,14,14,14,18,14,8,14,14,14,12,14,14,8,14,17,14,14,12,14,14,14,14,21,14,14,17,14,14,14,14,14,14,14,14,15,12,14,12,14,14,14,14,14,14,14,12,14,14,12,17,14,14,17,14,14,12,18,14,12,14,14,17,12,14,17,14,14,14,12,14,12,18,14,14,11,14,14,14,14,21,14,11,14,12,14,14,14,12,14,14,14,14,14,14,18,14,14,11,8,11,17,14,14,14,14,12,14,17,18,14,16,12,11,14,11,14,12,17,14,14,14,12,14,14,14,14,14,14,25,14,12,14,14,11,14,14,14,14,14,17,14,14,12,14,17,14,14,8,14,14,14,14,12,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,18,14,14,14,12,12,14,14,8,14,8,14,14,14,14,14,14,14,14,14,14,14,14,12,11,14,14,18,14,8,18,14,16,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,14,17,18,12,17,14,14,14,14,14,18,14,14,14,14,16,14,14,14,15,18,24,14,15,17,14,14,14,11,14,14,14,17,14,14,14,14,14,18,14,14,14,11,14,17,14,14,14,14,14,14,11,14,14,14,18,14,12,14,14,14,14,14,14,17,14,14,15,11,14,14,14,12,17,14,14,14,14,14,17,14,14,8,14,14,14,14,16,14,14,14,14,14,12,14,14,19,19,14,14,14,18,18,16,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,11,17,14,14,18,14,12,14,14,14,12,11,17,14,14,12,11,14,14,14,17,17,14,14,14,14,12,14,12,14,14,14,14,11,14,14,14,24,14,14,17,14,8,14,14,14,14,11,14,14,14,12,14,17,14,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,11,17,14,18,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,14,14,14,12,14,12,14,14,11,14,14,14,14,14,18,14,14,14,14,14,14,14,14,14,8,14,17,17,14,14,14,14,14,11,14,14,14,14,14,14,14,11,14,21,12,8,14,14,12,14,12,14,14,11,15,14,12,15,17,14,17,12,17,15,14,17,14,14,14,14,14,14,14,14,14,11,18,14,17,12,8,17,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,11,14,14,14,14,17,14,14,14,8,14,14,14,14,14,12,14,14,17,14,14,14,14,11,14,11,17,11,14,14,14,14,14,8,14,14,14,8,11,18,14,14,11,14,17,14,14,14,14,14,18,18,18,14,17,14,14,17,18,18,14,14,14,14,8,14,14,14,17,14,14,14,18,17,17,24,17,14,11,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,17,12,14,18,14,14,14,14,17,14,11,14,14,17,14,14,14,14,14,11,11,11,11,14,14,14,12,8,14,14,14,14,17,14,14,14,14,14,14,14,18,14,14,18,14,12,14,12,17,14,16,14,14,14,14,12,14,11,14,14,8,14,17,8,14,14,14,14,12,11,14,14,17,12,14,14,8,14,14,8,14,14,12,14,17,17,18,12,14,14,14,14,14,19,19,14,14,14,11,14,14,14,14,14,12,14,14,14,11,14,14,11,14,14,17,14,14,14,14,14,17,14,8,14,11,14,14,17,14,14,14,12,11,14,14,14,15,21,14,14,14,17,14,14,14,14,14,25,14,14,11,14,14,17,11,14,8,14,14,11,14,14,14,14,8,12,14,14,14,14,14,14,14,14,14,14,14,11,14,14,11,14,14,14,14,12,14,14,15,14,14,14,17,14,14,14,14,12,14,14,18,14,14,14,14,14,18,14,14,14,14,14,14,14,14,12,18,17,14,14,14,14,14,14,14,14,18,22,14,8,14,14,17,14,14,14,14,14,14,14,12,14,18,14,14,14,14,14,8,14,14,11,11,14,17,14,14,14,14,14,14,16,14,14,14,14,14,14,14,14,14,14,15,17,14,14,12,14,14,14,12,14,8,14,11,12,18,17,14,14,12,14,14,14,14,14,14,12,16,14,14,17,17,14,14,14,14,12,14,14,12,14,14,17,14,8,11,14,14,14,14,14,14,14,14,14,14,12,14,14,17,14,14,14,14,14,14,16,17,25,12,14,14,12,18,14,14,14,15,14,14,14,14,18,14,14,8,14,14,14,14,14,14,18,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,11,11,14,17,22,14,14,14,14,14,14,14,11,14,11,11,14,14,14,14,14,14,14,17,16,17,14,14,17,14,14,14,14,11,14,14,14,14,14,14,14,14,14,8,12,14,14,14,14,8,14,17,14,12,14,14,11,14,22,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,18,14,12,14,17,15,14,14,14,8,11,14,14,14,19,19,14,14,12,14,14,14,14,14,14,8,22,17,22,14,14,14,14,14,14,14,14,17,14,14,14,14,14,12,14,20,22,14,14,14,17,14,14,14,14,12,14,14,12,14,17,14,14,14,14,14,14,14,22,14,14,16,14,14,14,17,14,14,14,14,12,14,11,15,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,8,8,12,17,14,14,14,14,14,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,14,14,11,12,14,14,14,14,14,14,14,14,8,17,14,14,14,8,14,11,14,17,14,14,11,14,14,14,17,12,14,14,14,12,14,14,17,14,14,14,14,16,14,11,14,22,14,14,14,14,12,14,14,14,17,14,17,17,14,14,14,14,14,14,17,15,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,11,11,8,14,14,14,14,14,14,14,14,14,11,14,14,12,8,14,14,12,14,14,17,14,14,18,14,17,14,14,14,14,14,18,14,14,17,14,14,17,14,8,17,14,17,18,18,14,14,14,14,14,14,15,14,14,14,14,8,14,18,14,14,14,14,18,14,14,14,14,14,14,14,14,14,11,14,18,12,15,14,17,14,11,14,17,14,14,14,14,14,14,14,11,14,11,14,14,14,14,14,14,14,16,14,12,14,14,14,14,14,14,14,14,14,17,14,16,17,14,17,14,14,14,17,14,14,14,14,14,14,14,8,14,12,14,14,14,14,11,17,14,14,18,14,11,12,14,14,14,14,14,14,14,14,14,14,14,14,8,14,14,14,14,14,17,14,14,14,8,14,14,14,14,14,14,14,12,14,14,14,18,14,14,8,18,14,14,14,8,14,14,14,14,14,14,14,19,19,14,12,14,14,14,12,14,14,14,14,14,12,12,17,14,14,11,14,14,14,14,14,14,14,14,14,14,14,12,14,17,14,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,14,17,8,14,14,14,14,14,14,14,14,18,11,14,14,14,21,14,14,17,14,14,14,14,14,14,8,12,14,14,14,14,15,21,14,11,16,17,14,14,14,15,17,14,14,14,14,14,14,14,14,14,14,14,14,12,14,12,14,14,14,14,14,14,14,17,14,18,14,18,11,14,14,8,14,14,14,14,14,18,14,14,14,8,14,14,14,21,14,14,14,14,14,14,14,14,14,14,8,14,14,14,11,14,14,14,14,14,12,14,17,14,14,18,14,14,14,14,15,14,14,14,14,14,11,14,8,15,17,14,14,12,14,14,14,14,17,14,14,14,14,14,14,14,14,14,14,11,14,14,14,11,18,14,14,8,14,17,17,14,14,14,14,14,14,18,11,12,14,14,12,14,14,14,14,14,14,14,14,14,18,12,14,14,14,14,14,17,14,11,12,14,14,12,14,14,14,8,8,14,14,14,14,14,14,18,17,12,18,14,14,14,14,14,14,14,17,14,14,14,14,14,14,24,12,14,14,14,14,12,14,14,18,14,14,11,14,14,14,14,18,14,14,12,14,14,14,14,14,8,12,14,14,14,14,14,14,12,14,14,14,14,14,17,15,12,11,14,17,14,17,14,12,18,14,14,17,12,14,14,14,14,14,22,14,14,14,15,12,12,14,11,14,14,14,8,14,14,14,14,14,14,14,14,14,14,14,8,11,14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,11,14,14,12,14,8,11,14,14,19,19,14,22,14,14,18,11,14,17,14,14,11,14,18,14,14,14,18,14,14,14,17,14,14,14,14,14,14,11,14,18,12,14,14,14,14,14,14,14,22,14,14,14,17,14,14,14,14,14,14,14,17,14,15,14,8,14,14,11,14,14,18,14,12,14,14,14,16,11,14,14,14,14,14,14,18,14,14,14,14,14,22,14,14,14,14,14,14,14,14,12,14,11,14,18,11,14,14,14,14,14,14,17,14,14,14,14,11,17,14,14,14,14,17,21,14,17,11,14,11,14,14,14,14,18,14,14,14,14,12,14,14,14,14,12,14,17,14,14,11,14,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,17,8,14,14,8,14,14,14,14,12,14,12,14,14,12,14,12,8,14,14,14,21,14,14,14,14,15,14,14,14,14,14,14,14,15,14,14,8,14,15,14,14,14,12,14,14,14,14,12,15,14,14,14,12,12,14,12,14,12,17,8,14,14,18,11,14,17,14,14,14,14,14,14,14,14,14,18,18,14,14,17,17,16,11,17,14,14,14,14,14,14,14,14,14,14,14,18,14,14,14,14,14,15,15,14,14,8,12,17,14,14,12,14,18,14,16,14,14,14,14,11,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,15,14,15,14,14,14,14,14,14,14,8,17,14,11,14,14,14,12,17,14,14,14,14,14,14,12,14,14,14,14,12,14,14,14,14,14,11,14,14,14,14,14,18,14,14,16,14,14,14,14,14,18,14,17,14,14,8,14,14,14,14,14,14,17,14,14,14,12,8,14,14,14,14,22,14,11,19,19,22,12,14,8,14,16,14,12,14,14,14,14,18,17,14,11,14,14,14,17,18,14,14,14,16,14,8,14,11,14,14,14,14,14,14,17,14,14,11,14,12,14,17,14,14,8,14,8,14,14,14,14,14,14,14,14,14,14,12,18,14,14,14,18,14,14,14,14,14,14,14,14,14,14,14,14,17,14,14,14,8,12,14,14,14,14,14,14,14,14,8,17,14,14,12,14,18,17,18,12,14,14,12,14,14,14,12,14,14,14,14,14,14,14,15,14,14,14,14,14,14,17,14,14,14,14,14,17,14,14,12,14,14,11,17,14,14,18,22,14,14,17,14,17,14,12,14,14,14,14,17,14,11,14,14,14,14,14,17,12,14,8,14,14,12,14,14,14,14,11,14,14,14,14,14,14,18,14,14,14,14,14,12,14,11,14,14,12,17,21,14,18,14,14,14,18,14,14,14,18,11,11,14,14,14,12,14,14,12,14,14,11,14,14,14,14,15,14,14,18,14,8,14,17,17,14,14,14,11,14,14,18,17,14,14,11,14,14,14,14,11,14,14,11,14,17,14,14,14,14,14,14,14,14,11,14,12,14,14,14,14,14,14,18,21,14,14,14,14,14,17,14,14,14,14,14,14,15,11,12,11,14,14,14,11,14,8,14,14,14,14,14,14,14,14,17,14,14,14,14,12,11,14,14,14,14,14,14,14,14,17,14,12,17,14,14,14,14,14,14,8,14,14,14,14,11,21,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,16,14,14,14,15,12,14,12,18,17,11,14,14,17,14,23,14,14,14,14,14,14,18,14,18,14,12,14,14,18,14,14,14,11,14,14,14,14,18,14,8,14,14,19,19,14,14,14,14,14,14,11,14,14,12,14,8,14,14,14,12,14,14,12,12,14,14,15,14,14,17,14,17,14,15,14,17,14,14,14,17,14,14,18,14,18,14,18,14,14,12,14,8,14,14,14,14,14,14,15,17,14,14,18,14,14,14,16,14,14,11,14,14,14,14,14,14,14,8,11,22,14,17,14,14,14,14,14,14,14,14,14,17,14,14,14,18,14,17,14,12,18,17,20,14,14,8,14,14,14,14,14,18,14,12,14,12,15,14,11,14,14,14,11,14,14,14,14,14,17,14,14,17,14,18,14,14,14,14,14,14,14,14,14,8,14,14,14,14,17,14,14,14,14,14,14,14,14,14,17,11,14,18,8,14,14,14,14,14,22,12,14,14,12,14,14,14,14,14,15,14,14,14,14,12,14,14,18,14,14,14,28,30],"timeDeltas":[12917,83,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,125,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,84,41,42,0,42,41,42,0,0,83,0,42,42,41,42,42,0,41,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,84,0,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,83,0,167,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42]} \ No newline at end of file diff --git a/bench-singularize-2024-11-24_12-17-49.cpuprofile b/bench-singularize-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..33e8176 --- /dev/null +++ b/bench-singularize-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,8,25,27,28,30]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0},{"id":8,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":595,"children":[9,13,14],"positionTicks":[{"line":292,"ticks":35},{"line":314,"ticks":41},{"line":323,"ticks":18},{"line":297,"ticks":20},{"line":315,"ticks":111},{"line":327,"ticks":49},{"line":316,"ticks":321}]},{"id":9,"callFrame":{"functionName":"H","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":254,"columnNumber":54},"hitCount":0,"children":[10]},{"id":10,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1540},"hitCount":0,"children":[11]},{"id":11,"callFrame":{"functionName":"singularize","scriptId":"265","url":"file:///Users/airhorns/Code/superflected/src/singularize.ts","lineNumber":1,"columnNumber":1013},"hitCount":0,"children":[12]},{"id":12,"callFrame":{"functionName":"applyInflections","scriptId":"262","url":"file:///Users/airhorns/Code/superflected/src/applyInflections.ts","lineNumber":1,"columnNumber":985},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":13,"callFrame":{"functionName":"y","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":78,"columnNumber":10},"hitCount":1,"positionTicks":[{"line":98,"ticks":1}]},{"id":14,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":1052,"children":[15,18],"positionTicks":[{"line":304,"ticks":4},{"line":138,"ticks":7},{"line":537,"ticks":6},{"line":139,"ticks":32},{"line":530,"ticks":58},{"line":250,"ticks":33},{"line":302,"ticks":12},{"line":531,"ticks":2},{"line":301,"ticks":175},{"line":311,"ticks":197},{"line":309,"ticks":500},{"line":539,"ticks":8},{"line":308,"ticks":18}]},{"id":15,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":1540},"hitCount":1368,"children":[16,26],"positionTicks":[{"line":2,"ticks":1368}]},{"id":16,"callFrame":{"functionName":"singularize","scriptId":"265","url":"file:///Users/airhorns/Code/superflected/src/singularize.ts","lineNumber":1,"columnNumber":1013},"hitCount":1,"children":[17,21],"positionTicks":[{"line":2,"ticks":1}]},{"id":17,"callFrame":{"functionName":"applyInflections","scriptId":"262","url":"file:///Users/airhorns/Code/superflected/src/applyInflections.ts","lineNumber":1,"columnNumber":985},"hitCount":14535,"positionTicks":[{"line":2,"ticks":14535}]},{"id":21,"callFrame":{"functionName":"inflections","scriptId":"263","url":"file:///Users/airhorns/Code/superflected/src/Inflector.ts","lineNumber":1,"columnNumber":3413},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":26,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":18,"children":[29],"positionTicks":[{"line":2,"ticks":18}]},{"id":29,"callFrame":{"functionName":"singularize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":1352},"hitCount":11,"positionTicks":[{"line":2,"ticks":11}]},{"id":18,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":285,"children":[19,22],"positionTicks":[{"line":250,"ticks":285}]},{"id":19,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":239,"children":[20,23],"positionTicks":[{"line":139,"ticks":239}]},{"id":20,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":1372,"positionTicks":[{"line":139,"ticks":1372}]},{"id":23,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":21,"children":[24],"positionTicks":[{"line":537,"ticks":21}]},{"id":24,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":110,"positionTicks":[{"line":530,"ticks":110}]},{"id":22,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":119,"positionTicks":[{"line":663,"ticks":1},{"line":668,"ticks":2},{"line":662,"ticks":12},{"line":669,"ticks":25},{"line":665,"ticks":15},{"line":670,"ticks":7},{"line":666,"ticks":19},{"line":661,"ticks":38}]},{"id":25,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":761},{"id":27,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":132},{"id":28,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":19,"positionTicks":[{"line":301,"ticks":19}]},{"id":30,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4978},"hitCount":0,"children":[31]},{"id":31,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[32]},{"id":32,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[33]},{"id":33,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[34]},{"id":34,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":2,"positionTicks":[{"line":136,"ticks":2}]}],"startTime":293061108542,"endTime":293061723417,"samples":[7,12,13,17,20,17,17,18,15,17,17,16,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,21,17,17,17,17,17,17,17,17,8,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,14,17,8,17,20,22,14,14,17,15,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,8,17,14,17,17,17,17,17,17,24,18,18,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,17,17,17,17,20,14,17,17,15,17,17,17,25,15,20,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,15,17,25,17,15,17,17,17,17,15,17,18,17,17,17,17,17,17,17,18,17,17,17,25,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,20,17,17,15,17,17,15,17,17,17,17,17,17,17,14,26,19,17,17,20,20,14,15,17,17,17,17,17,20,17,17,17,15,15,15,17,17,17,20,25,14,17,8,17,17,17,17,17,17,15,17,17,24,15,17,17,25,25,17,17,15,17,17,20,17,17,14,17,27,27,27,27,17,14,17,15,20,17,17,17,17,14,17,15,14,20,17,17,17,17,17,17,15,17,17,17,17,15,17,17,17,17,15,17,17,17,17,17,20,17,17,17,17,17,17,17,8,17,17,17,24,17,17,17,17,8,26,14,18,15,14,14,14,17,17,17,17,17,17,17,15,17,15,18,17,17,25,17,17,17,17,17,14,20,17,17,17,17,18,17,17,15,17,17,17,20,17,8,15,17,17,17,17,17,8,20,17,17,19,17,20,17,15,17,17,17,17,17,25,14,17,17,17,20,17,25,17,17,17,17,15,17,14,17,17,14,20,17,17,17,20,17,17,17,17,17,17,17,17,17,17,20,20,17,17,17,15,17,17,17,14,17,19,15,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,8,17,17,17,20,17,14,17,17,14,17,14,17,17,17,19,20,17,15,17,20,14,17,17,17,17,17,17,20,17,14,14,14,17,17,17,15,17,17,15,17,17,17,17,17,17,17,17,15,17,17,17,8,17,14,20,17,8,15,17,17,18,17,20,17,14,17,17,17,17,17,17,17,17,19,17,17,17,17,15,15,17,17,17,17,17,17,17,17,17,20,17,15,17,17,15,17,17,17,17,17,17,14,17,15,17,17,17,18,20,17,8,17,17,17,17,17,17,17,17,17,25,17,17,17,14,17,8,15,17,17,17,17,17,24,17,15,17,17,17,17,20,17,17,14,17,17,17,14,8,17,17,17,17,17,17,17,25,20,25,25,17,17,17,15,17,17,17,20,17,17,17,20,15,17,17,17,17,17,17,27,27,27,27,27,27,17,17,17,17,17,17,17,17,17,17,17,17,15,15,17,17,17,14,19,17,17,15,17,17,17,17,17,15,17,17,17,15,17,8,17,17,25,17,17,20,17,14,18,17,17,17,17,17,20,25,17,22,17,17,17,17,17,17,17,15,15,17,17,17,17,17,17,17,15,15,17,17,15,17,23,17,17,17,14,14,14,17,17,17,17,17,14,17,17,17,17,17,17,17,17,17,25,17,17,17,20,17,17,17,17,17,17,15,17,25,17,17,17,17,8,25,20,17,17,20,8,14,14,17,18,17,17,17,17,17,17,17,25,17,17,17,17,18,17,17,17,17,15,17,20,17,20,17,17,17,17,17,17,19,15,15,15,17,17,17,17,15,17,17,17,17,17,15,20,17,17,17,17,17,17,17,24,17,17,17,15,15,17,17,17,17,17,17,17,17,15,17,17,17,17,17,15,14,17,15,15,15,17,17,17,20,19,17,17,17,8,17,17,17,19,17,18,17,25,17,17,17,17,8,25,17,17,17,17,17,17,15,17,17,14,17,17,17,8,15,17,17,15,8,17,20,14,17,17,17,8,17,8,17,14,22,17,17,17,17,17,17,17,17,17,17,20,17,15,17,17,17,17,17,17,17,17,17,14,17,22,17,17,19,17,15,17,14,17,17,17,24,17,17,17,17,17,17,20,17,20,17,20,17,17,17,17,17,17,17,14,17,17,17,17,20,17,8,17,15,17,17,19,17,17,17,17,17,17,25,17,17,15,17,25,17,20,17,17,17,25,8,17,17,17,17,25,17,17,17,17,17,17,17,17,25,17,17,17,20,17,17,15,17,15,17,17,14,17,27,27,27,17,17,17,17,17,17,17,17,17,17,17,20,24,15,17,17,17,17,8,17,15,17,17,8,17,17,14,17,20,17,17,17,17,17,17,17,8,17,17,17,20,17,17,17,17,17,17,17,14,17,17,17,20,17,18,17,14,14,14,17,20,17,17,15,17,17,17,17,17,20,17,17,17,17,20,18,17,17,17,14,25,17,17,17,17,17,17,17,17,20,15,17,17,17,17,17,17,17,17,17,20,17,17,14,15,17,20,17,8,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,14,17,15,17,17,14,17,17,17,17,17,17,17,17,25,25,15,17,8,17,17,17,14,17,17,17,17,17,17,18,17,17,17,17,17,14,24,17,20,17,17,17,17,15,14,17,17,17,20,17,17,17,15,17,17,17,17,17,25,17,15,17,17,17,17,17,17,17,17,17,25,8,17,17,20,17,17,20,25,17,17,17,17,17,17,17,17,17,25,17,25,17,17,17,15,19,17,15,17,17,20,15,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,20,20,20,17,17,15,17,17,17,17,14,20,19,15,17,15,17,19,17,17,17,25,17,17,17,17,20,18,17,19,17,17,8,17,17,17,20,17,20,17,17,25,17,15,20,20,14,17,17,17,17,17,17,17,20,17,17,17,25,17,20,8,17,20,17,20,17,17,25,15,17,15,17,17,14,17,17,20,17,17,17,17,20,17,17,17,17,17,17,15,20,17,24,17,17,17,17,17,17,14,17,17,14,17,17,20,17,14,23,17,17,17,20,17,14,19,8,17,17,25,20,25,25,20,17,19,27,27,27,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,14,17,15,17,15,17,8,25,17,17,15,20,25,15,17,14,17,15,17,17,25,17,17,17,17,17,17,17,17,17,15,17,19,8,17,25,17,17,15,19,15,17,15,17,17,20,17,17,20,20,22,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,18,17,20,17,17,24,20,17,17,20,8,17,17,17,17,17,17,15,14,17,17,17,14,17,15,25,17,17,17,17,17,17,20,17,17,25,17,8,8,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,14,20,25,15,17,22,17,17,17,17,14,17,17,17,17,17,17,24,17,17,17,20,8,17,17,17,15,14,17,17,15,17,17,17,8,20,17,17,17,17,17,15,17,17,25,17,17,15,17,20,17,17,17,17,17,17,17,17,17,17,17,17,14,14,14,14,14,17,17,17,19,17,17,17,17,15,14,17,26,17,17,17,17,17,17,17,25,15,17,17,17,17,17,17,17,17,20,17,17,17,20,15,20,17,17,20,14,17,17,17,14,17,17,17,17,17,17,14,17,17,17,17,20,17,17,17,17,17,15,17,19,17,17,17,14,20,17,25,17,15,14,17,17,17,25,17,17,17,17,17,8,17,17,17,17,17,14,17,17,17,15,17,17,17,17,15,17,8,17,17,17,20,17,17,17,15,18,17,17,17,17,17,15,17,17,17,17,14,14,17,17,19,17,25,17,17,17,18,17,17,17,17,25,17,17,17,17,17,17,25,17,15,17,17,17,17,17,17,8,17,17,20,17,20,17,17,17,15,17,25,15,25,17,14,17,25,17,17,17,20,17,25,15,27,27,17,17,20,17,17,17,17,17,17,26,17,17,8,17,17,15,17,19,17,17,20,17,17,15,17,17,17,17,17,20,17,15,25,17,17,17,17,17,17,22,15,17,17,14,15,17,17,17,17,17,17,17,17,17,14,17,17,17,15,15,17,17,17,20,17,8,17,17,17,17,19,17,14,17,17,20,17,8,25,17,17,20,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,14,15,17,17,17,17,17,18,14,17,25,17,19,17,17,17,20,17,17,17,17,14,17,17,17,17,17,18,17,20,17,8,15,17,17,17,17,17,17,14,25,17,8,17,17,17,17,17,19,17,17,8,18,17,14,20,17,23,17,17,15,8,17,17,17,25,17,14,17,17,17,17,17,17,14,15,17,17,17,17,17,17,17,17,17,17,17,17,17,8,17,14,15,17,17,17,17,17,17,20,17,17,17,17,15,17,25,19,20,17,17,17,17,25,17,17,17,17,20,17,14,15,17,17,15,17,8,17,17,17,17,17,17,17,17,14,17,17,17,17,14,17,17,14,17,17,28,19,17,17,25,17,20,18,17,14,17,17,17,17,17,17,17,14,17,17,17,20,17,19,17,20,17,17,17,17,17,14,15,17,15,17,22,15,17,19,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,18,15,18,15,17,17,17,20,20,17,15,20,17,14,17,14,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,20,20,15,17,17,17,17,17,15,17,17,20,20,18,17,17,17,18,17,15,18,17,17,17,14,17,17,17,14,17,17,17,17,17,17,14,17,27,27,27,17,17,8,20,17,17,20,20,17,17,17,17,17,20,15,17,15,17,17,23,17,17,17,17,17,17,14,17,17,17,17,17,17,17,14,17,17,14,17,17,17,19,14,17,17,17,17,17,14,17,25,14,17,15,17,17,17,17,20,17,20,17,14,17,17,17,14,20,17,14,17,20,17,17,20,17,17,17,14,20,17,14,25,25,20,14,25,14,17,17,17,17,17,17,17,8,17,17,17,8,14,17,18,17,17,20,15,17,17,17,17,17,17,20,20,17,17,20,25,17,17,17,17,17,20,17,17,17,17,17,17,17,17,20,17,14,25,17,15,17,17,28,14,17,17,17,17,17,17,17,17,17,17,25,17,14,17,17,17,17,8,17,17,15,17,14,25,17,25,17,17,17,17,17,17,14,8,17,14,17,17,17,17,25,15,17,25,15,17,17,17,17,17,8,17,25,17,17,25,17,17,20,17,14,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,14,17,17,17,17,17,8,17,17,25,17,15,24,17,17,17,22,25,17,17,14,17,15,17,14,17,17,17,17,17,17,17,17,14,14,14,14,14,14,8,17,17,17,17,25,17,17,17,17,17,17,17,14,17,17,17,15,17,17,20,15,17,17,17,15,17,17,17,17,17,25,17,17,17,17,8,8,17,17,17,17,25,20,17,17,17,17,17,17,27,17,17,17,17,15,17,14,17,20,17,17,17,25,19,17,18,17,17,17,17,17,17,14,17,17,24,17,8,17,17,17,15,25,14,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,8,17,17,17,17,15,20,17,20,17,17,20,17,17,17,17,15,20,20,17,17,27,27,22,17,17,17,8,17,15,25,17,17,24,17,17,17,17,17,17,17,17,8,17,17,15,20,17,17,17,14,17,17,17,19,17,17,17,17,20,15,17,17,17,17,17,17,15,17,17,17,14,17,17,20,17,17,15,17,17,17,17,17,17,8,17,17,17,17,20,17,20,15,17,14,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,15,20,17,17,14,17,17,14,17,17,17,17,19,17,17,17,17,17,17,25,20,17,17,15,17,17,15,25,17,17,17,17,17,20,17,17,17,17,8,17,17,17,15,20,17,17,17,20,17,17,17,20,20,17,17,17,17,15,17,17,8,8,15,17,17,17,17,15,17,18,20,8,17,25,17,17,17,17,14,20,17,17,17,25,8,17,24,17,17,17,17,17,17,17,14,17,17,25,17,25,17,20,17,17,23,17,20,17,17,17,17,17,17,8,20,17,17,17,17,17,17,25,17,25,17,20,17,17,14,17,20,17,17,17,17,15,25,17,24,17,25,15,17,20,17,17,17,17,17,20,17,14,17,17,17,17,15,17,17,25,17,17,17,17,17,17,17,14,8,17,14,17,17,25,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,19,15,14,17,17,25,20,17,17,17,17,20,17,17,14,17,17,17,17,17,17,17,20,17,20,17,17,17,17,17,25,17,17,17,17,17,17,25,17,17,17,15,17,17,17,17,17,17,17,17,25,25,17,20,17,17,17,17,17,17,17,17,17,17,20,20,17,20,14,17,17,17,17,17,15,15,17,17,17,17,8,25,14,17,17,20,17,17,17,8,8,27,27,17,17,25,20,20,17,15,17,17,25,17,20,17,17,15,8,17,17,17,14,17,17,17,20,14,17,17,17,17,17,17,25,17,14,20,17,17,17,17,19,17,17,17,17,14,18,17,14,20,18,17,15,17,17,17,17,17,17,17,17,15,8,17,25,17,17,17,19,18,17,17,17,24,15,17,17,20,17,20,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,20,15,17,17,17,17,17,25,20,17,17,17,17,17,17,17,24,17,17,17,17,17,20,17,17,17,17,17,17,22,17,20,25,17,17,19,14,15,8,17,17,8,17,20,17,15,17,17,17,17,17,17,17,17,15,17,20,17,17,20,17,17,17,17,17,15,17,17,8,14,17,15,20,17,17,17,17,17,14,15,17,17,17,17,17,20,17,17,17,17,17,15,17,25,17,17,15,20,17,18,20,8,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,8,14,17,17,17,17,14,17,17,17,17,17,20,17,18,17,25,25,17,25,17,8,17,17,17,14,20,20,17,17,17,17,8,17,17,17,17,17,17,17,25,17,17,17,14,14,25,17,14,17,17,17,15,19,17,20,17,17,17,8,17,17,14,17,17,20,14,17,17,15,17,17,17,17,17,17,20,17,25,17,14,17,17,17,20,20,18,17,17,17,17,17,24,17,17,17,15,17,15,8,17,20,17,17,17,15,17,15,20,17,17,17,17,20,17,17,17,17,17,8,17,15,17,17,17,14,17,17,17,14,17,15,8,17,17,17,17,19,17,17,17,20,17,15,14,25,17,17,17,17,17,17,17,17,17,17,25,14,27,27,25,17,17,17,17,17,17,20,17,17,17,17,17,17,15,17,17,17,17,17,8,17,17,17,19,17,17,17,17,17,15,20,17,17,17,17,17,20,17,17,20,17,17,17,17,17,15,17,17,25,17,17,17,8,17,17,17,20,17,17,17,17,17,8,20,17,17,20,17,20,20,17,15,17,17,17,25,17,17,25,19,25,17,17,20,17,17,17,17,15,17,17,15,17,17,14,17,17,17,17,17,17,17,15,17,20,8,17,17,25,17,14,17,17,17,17,17,17,17,17,17,17,17,17,17,14,17,17,17,17,17,17,25,17,15,17,17,17,17,17,17,14,17,17,25,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,20,17,20,14,17,17,14,17,17,17,17,17,8,17,17,17,17,20,17,8,8,17,17,17,20,20,25,15,15,17,17,17,17,20,17,17,14,17,17,17,17,17,17,17,22,28,17,17,17,17,17,17,17,17,17,19,17,20,17,14,15,19,17,17,14,17,17,17,17,20,17,8,17,17,17,17,14,17,17,17,17,17,17,17,17,17,14,20,17,17,17,17,17,25,17,17,17,20,17,15,20,17,20,15,17,17,17,8,17,20,17,17,17,17,17,25,17,17,14,17,19,17,17,17,17,8,17,17,17,17,17,17,15,17,17,17,17,17,17,20,15,15,17,17,8,17,17,17,17,17,17,17,17,17,17,14,17,17,17,14,17,17,17,15,17,14,14,14,14,14,14,14,14,14,17,17,17,17,25,17,8,17,17,17,17,17,17,17,14,17,17,8,17,17,20,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,19,8,17,20,17,17,27,27,17,17,17,17,15,17,17,17,17,17,17,17,14,25,14,15,20,17,15,17,17,20,8,17,17,17,17,17,17,17,17,14,17,17,14,17,17,19,20,15,17,17,19,25,17,17,17,17,17,17,14,17,17,17,17,17,20,17,20,17,25,17,20,17,8,15,17,17,20,17,19,17,17,17,17,17,15,25,17,17,22,17,20,17,17,17,17,15,19,20,17,25,17,20,20,17,17,17,17,17,17,17,14,17,17,17,17,17,17,17,14,17,17,17,17,17,17,24,17,17,14,17,17,15,17,17,17,17,20,17,20,25,18,17,17,17,15,17,15,15,20,17,17,15,17,14,17,17,17,17,17,17,15,17,17,15,17,17,17,17,17,14,17,20,15,17,17,20,17,17,15,8,17,17,17,17,17,17,17,15,14,20,17,17,17,17,17,17,17,14,14,15,17,20,15,17,17,20,17,17,17,25,17,14,17,17,17,20,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,20,17,17,17,17,19,17,20,17,17,17,17,15,17,20,17,8,20,15,15,20,17,17,17,17,17,17,17,17,17,25,20,14,17,17,20,17,17,17,17,17,24,8,17,17,17,14,14,17,15,17,17,17,17,17,8,17,17,17,17,20,25,17,20,17,17,17,17,17,17,8,15,19,25,17,17,17,17,17,17,17,15,17,17,17,17,17,17,15,17,20,14,25,17,17,25,17,17,14,19,17,17,14,15,17,22,17,19,17,15,17,17,17,17,17,17,17,8,17,17,17,25,14,17,8,17,17,17,17,20,17,17,17,17,8,8,17,17,17,14,8,17,17,17,15,17,14,17,17,17,27,27,17,17,15,17,20,17,17,25,17,14,17,17,20,17,18,17,17,17,17,17,20,8,14,17,17,17,17,17,17,17,17,14,17,14,17,8,17,17,25,17,17,24,17,17,18,19,17,17,15,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,14,17,25,20,17,17,17,17,17,17,15,17,17,20,17,17,17,17,17,17,17,17,17,17,22,17,20,17,15,17,25,17,17,17,17,25,17,14,8,20,17,25,22,25,17,17,20,17,15,17,8,17,17,15,17,17,8,14,17,17,17,17,17,17,15,17,14,17,20,17,17,17,17,17,20,15,18,15,20,15,20,17,20,17,17,18,17,25,17,14,17,17,24,17,8,17,17,17,17,17,17,15,17,14,17,17,17,17,15,17,17,17,17,22,15,8,19,17,17,14,17,17,17,19,20,20,15,14,17,17,17,17,17,17,17,17,17,17,17,17,25,18,20,17,17,20,17,17,17,17,17,17,17,20,17,20,17,17,17,17,17,8,15,17,15,17,17,8,17,15,17,19,17,17,17,17,17,17,25,17,17,17,17,20,20,15,17,14,17,17,17,20,17,17,25,14,19,17,20,25,17,17,17,20,17,17,20,17,25,17,17,15,17,17,20,17,17,17,24,17,15,17,17,17,17,25,14,17,15,15,17,17,17,25,14,14,25,17,25,20,17,25,17,17,15,17,17,17,17,20,17,17,17,22,19,17,17,14,17,17,15,20,17,17,17,15,17,18,17,14,17,17,17,20,17,14,17,20,17,17,17,17,17,24,17,25,17,17,17,26,17,17,17,17,17,8,8,17,17,17,17,17,25,17,25,20,17,20,20,17,17,17,17,17,17,17,17,17,17,27,27,17,17,17,20,15,17,17,17,17,25,15,17,17,17,17,17,19,25,17,17,15,17,8,17,17,17,17,17,20,14,17,17,17,17,17,17,17,17,17,14,17,15,8,8,14,17,19,24,17,17,15,17,22,22,15,17,17,17,17,17,15,17,17,17,17,20,18,17,17,17,20,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,25,17,17,17,15,17,17,17,14,17,17,17,17,17,25,17,17,17,17,20,17,17,20,25,25,15,17,17,17,17,17,17,17,17,8,17,17,15,17,18,14,17,14,17,17,8,17,17,17,17,17,17,17,14,17,17,17,17,25,17,17,22,17,22,17,17,14,17,17,17,17,20,17,17,17,17,17,17,19,17,15,19,17,17,17,17,8,17,17,17,17,20,25,17,19,25,8,15,25,20,17,14,17,17,17,17,17,17,20,20,17,17,20,17,17,17,17,23,17,17,17,17,17,17,17,20,17,17,17,17,17,15,25,14,17,17,22,17,17,17,24,18,25,17,17,17,15,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,20,17,17,17,17,17,17,17,17,20,17,17,17,17,17,20,17,17,17,17,17,19,17,20,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,15,17,17,17,17,20,17,17,17,17,17,17,17,15,17,17,25,8,17,17,25,17,17,17,17,17,18,14,17,18,20,17,14,17,17,17,25,17,25,20,17,19,17,17,17,17,25,17,17,17,17,17,17,17,20,20,17,17,17,8,25,14,17,17,20,17,17,17,17,17,24,17,17,17,17,14,17,8,17,27,27,17,19,17,17,17,17,20,17,17,17,17,17,17,15,17,17,17,25,17,17,17,17,17,17,17,20,17,17,17,15,17,17,17,17,17,14,17,17,17,17,17,17,17,15,17,17,17,20,25,17,8,18,17,20,17,17,17,17,17,15,17,17,8,17,25,17,17,17,17,17,17,17,17,14,17,17,14,17,14,17,17,14,15,20,17,17,17,17,17,17,17,17,17,17,8,17,17,18,17,15,17,17,17,17,17,20,17,20,17,14,14,17,17,17,17,20,8,17,17,17,17,17,17,17,17,17,8,8,17,17,17,18,17,17,17,17,8,17,20,17,17,17,17,22,15,17,17,15,17,8,17,17,17,25,17,17,17,14,17,17,17,17,17,17,20,20,15,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,25,17,17,14,14,17,17,17,17,18,17,17,17,17,15,17,17,17,17,17,17,22,17,17,17,17,14,18,15,17,14,17,17,17,17,22,17,14,17,17,17,17,17,15,17,20,15,17,17,17,17,14,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,14,25,17,24,8,15,17,22,17,17,17,17,17,17,8,17,17,25,17,17,17,17,15,18,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,20,17,17,17,15,15,17,17,20,17,24,17,17,17,15,17,19,17,17,17,17,17,17,17,17,8,17,14,25,14,17,17,25,17,17,17,17,17,15,17,19,17,17,20,17,17,25,17,17,17,17,17,17,17,17,17,17,18,14,17,17,17,17,17,17,20,17,17,17,17,8,17,25,17,17,27,27,17,20,24,19,17,17,17,17,17,17,17,17,17,17,25,20,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,15,17,20,17,17,17,25,15,17,17,17,18,17,17,17,14,17,17,17,17,17,17,17,8,18,17,19,17,20,14,17,24,17,18,15,17,17,20,17,17,17,17,8,20,17,17,14,17,17,8,17,17,17,17,17,20,25,17,25,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,14,17,17,20,17,25,15,17,17,19,17,17,17,15,17,25,14,17,17,20,17,25,17,17,17,17,20,17,20,17,17,17,20,17,20,17,17,14,17,17,17,17,17,20,17,17,17,17,17,17,14,17,17,17,17,15,17,17,17,17,20,17,17,8,17,8,25,20,17,17,28,17,17,17,17,17,8,17,17,20,17,17,15,17,17,17,25,17,20,17,14,25,14,17,17,17,17,17,17,20,17,14,17,17,17,17,17,14,14,14,14,14,14,14,14,14,14,15,20,17,17,17,17,25,17,17,17,17,17,17,17,17,14,17,17,17,17,17,17,17,17,15,20,17,15,20,15,17,17,14,17,17,17,17,17,17,17,8,17,17,8,17,17,17,20,14,17,25,17,17,14,14,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,8,17,25,17,17,15,14,15,17,17,15,17,17,17,17,17,17,14,17,17,20,17,17,17,24,17,17,17,14,25,14,17,14,17,17,17,17,17,20,17,17,17,17,15,17,17,18,17,17,17,17,25,17,17,17,17,14,17,17,17,17,17,15,14,17,17,17,25,17,17,15,25,17,17,17,17,17,17,15,17,8,17,17,27,27,27,17,17,17,14,17,17,17,17,17,17,18,8,17,18,25,17,17,20,17,17,17,17,17,17,17,15,17,17,25,17,20,17,17,17,17,17,14,17,23,15,17,17,17,17,17,25,17,20,17,17,17,17,15,17,17,17,17,15,17,17,17,20,15,17,25,17,17,14,17,17,17,25,17,17,17,8,20,17,15,17,14,17,17,17,17,14,17,17,15,17,17,17,17,17,17,17,17,19,14,17,14,17,17,17,17,17,17,17,20,17,17,17,14,17,15,25,17,17,17,14,17,17,17,17,20,22,18,25,17,17,17,17,15,17,17,17,18,17,17,17,17,20,17,17,17,8,17,17,15,17,17,17,17,17,8,17,17,17,17,14,14,15,20,17,17,17,17,17,17,17,14,20,20,8,17,17,17,17,14,17,17,17,17,17,17,17,25,17,17,17,18,20,17,20,14,15,17,20,17,17,17,14,17,15,17,17,25,15,17,20,17,17,17,17,25,17,17,17,17,17,8,8,17,17,17,17,17,17,8,17,17,17,17,14,14,20,17,17,17,17,17,17,17,17,17,17,15,15,17,17,17,17,17,17,17,17,19,17,15,15,17,14,8,14,17,15,15,17,17,17,17,17,17,17,17,14,17,17,17,17,17,24,20,17,20,18,15,17,17,17,22,17,17,17,15,17,17,18,17,17,15,20,17,17,15,17,17,17,14,17,17,15,17,17,17,15,17,17,22,17,17,17,17,17,20,17,17,17,17,14,17,20,15,17,17,17,17,20,25,17,17,17,14,15,8,17,18,17,8,17,15,17,17,17,17,17,17,17,29,17,25,27,27,17,17,17,17,17,17,15,24,17,20,17,17,17,17,17,17,17,17,15,17,15,17,14,17,8,17,17,17,17,17,17,18,14,17,20,17,17,17,17,17,15,17,15,8,17,20,17,17,8,20,15,17,17,17,15,28,17,17,17,17,17,8,17,17,15,20,17,19,17,17,17,18,20,17,19,17,18,17,17,17,24,17,15,25,17,17,17,17,17,8,17,17,8,17,14,17,20,14,14,17,14,14,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,18,17,17,17,17,14,17,17,17,17,17,17,17,17,17,14,17,20,17,17,17,17,17,17,15,15,17,17,14,17,17,17,17,17,17,17,17,15,14,17,17,17,20,17,17,17,17,17,20,15,26,15,17,17,25,24,17,17,17,17,17,17,17,17,15,20,17,17,17,17,17,17,17,17,17,25,15,14,17,17,17,17,17,17,17,17,17,17,17,17,17,14,17,17,18,17,17,17,20,8,17,17,17,25,17,17,17,15,17,8,17,17,19,17,15,8,17,17,17,8,17,17,20,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,20,17,15,22,17,17,8,20,17,20,18,17,17,15,17,17,17,17,17,20,17,17,20,17,17,17,17,17,17,15,17,17,25,17,17,17,17,17,17,20,17,25,19,17,17,20,17,15,17,17,20,15,20,17,22,20,17,8,17,17,25,17,25,17,20,17,17,17,17,18,17,17,17,22,17,17,17,17,17,17,20,27,27,17,14,17,17,17,17,17,17,20,17,17,20,17,25,17,17,8,17,17,20,17,17,17,17,17,17,17,17,17,14,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,20,17,20,17,17,20,17,17,17,20,25,17,17,14,17,20,17,20,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,20,17,17,25,17,14,17,20,14,20,17,18,17,17,14,17,17,14,17,17,17,17,17,8,17,15,17,17,17,19,17,17,17,15,25,17,17,17,17,17,8,17,17,15,25,17,17,17,25,22,17,17,17,17,17,8,17,17,17,17,17,17,17,17,8,17,20,17,17,19,17,14,22,22,17,17,14,20,17,14,14,17,17,17,17,14,17,15,20,17,15,25,14,17,17,14,15,17,17,25,17,17,17,17,17,17,17,17,17,17,17,8,17,17,17,15,15,8,15,22,17,17,17,20,25,17,15,17,17,17,17,17,17,17,17,17,17,25,20,14,15,17,20,17,20,17,17,17,17,15,17,17,17,17,17,20,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,14,17,17,8,17,17,17,17,14,20,17,17,20,17,17,22,17,17,17,14,17,24,20,17,17,15,8,25,17,17,17,8,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,8,17,17,17,17,17,17,17,8,15,17,15,14,15,17,17,25,17,17,17,17,17,17,17,17,25,25,17,20,17,17,17,17,20,17,15,17,15,17,20,17,17,17,17,17,17,17,17,17,17,20,17,8,17,17,17,17,17,17,17,25,27,27,17,17,17,17,17,17,17,17,17,17,17,17,25,17,15,17,25,14,8,17,17,17,15,17,17,17,14,14,25,17,17,17,17,15,17,19,14,17,17,15,17,17,17,8,17,17,17,17,17,18,17,15,8,17,20,17,17,17,14,17,8,17,8,17,17,17,17,17,8,17,17,17,15,17,15,24,8,8,17,17,17,17,17,17,17,17,19,17,15,20,17,17,17,17,17,17,24,17,17,17,17,17,17,20,17,17,20,20,17,17,17,20,17,17,17,17,14,17,17,20,17,17,17,17,17,15,8,17,17,17,17,17,20,8,17,17,17,25,20,17,15,17,15,17,17,17,20,17,17,17,25,17,17,14,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,15,17,15,17,17,17,17,20,17,17,17,15,17,17,8,17,17,17,17,20,17,17,20,17,17,17,20,17,25,17,14,17,17,14,17,17,17,8,19,17,20,17,17,17,15,17,17,17,17,17,25,17,15,17,20,17,17,17,25,17,17,17,17,17,15,14,19,17,17,20,17,17,8,17,17,18,17,15,17,17,17,17,17,17,8,17,17,17,17,17,17,17,14,17,20,20,17,17,17,15,17,20,17,17,25,17,17,17,17,17,17,14,17,17,17,17,17,17,17,17,20,17,17,17,17,17,20,17,17,15,17,20,20,17,17,17,17,15,17,17,17,20,17,17,17,19,17,25,25,17,17,17,17,17,17,17,17,17,20,17,17,20,15,17,17,17,17,17,15,8,17,17,17,17,17,17,20,14,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,15,17,14,17,17,17,15,15,17,17,17,17,17,17,27,27,20,17,14,17,17,20,17,8,17,17,17,17,17,17,17,14,17,15,17,20,20,17,17,25,17,17,17,17,25,8,17,17,17,25,22,25,17,17,17,25,17,17,20,15,17,17,17,17,17,17,14,8,17,25,17,17,17,17,17,17,17,17,17,17,17,8,17,17,17,17,17,17,17,17,17,15,17,17,17,17,20,17,17,17,17,17,17,20,19,17,17,17,17,20,17,17,15,15,17,17,17,14,17,15,17,17,17,17,17,20,17,17,17,17,18,17,17,17,15,17,17,17,17,17,17,17,20,14,17,17,17,17,17,17,17,17,14,17,17,17,17,20,17,17,17,17,15,17,14,15,19,17,17,17,17,15,17,17,17,17,19,14,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,19,17,17,17,17,17,17,17,17,25,25,17,17,17,20,17,17,8,17,20,17,17,20,24,17,17,18,25,15,17,17,20,17,17,17,17,17,17,17,17,17,17,20,17,17,17,25,17,20,18,19,17,14,17,17,17,15,17,18,17,17,18,25,17,17,17,17,8,17,17,17,14,14,17,17,14,20,17,15,14,17,17,17,17,17,17,17,17,25,17,17,17,17,17,20,17,17,17,17,25,20,15,17,15,17,17,17,17,17,17,17,20,15,17,17,17,17,17,20,20,20,17,17,14,17,17,8,20,17,17,17,17,8,15,17,20,17,17,17,17,17,17,14,17,20,17,17,17,17,20,17,17,17,17,17,17,17,17,17,20,17,17,17,17,24,14,17,17,17,17,15,20,14,17,17,8,17,17,17,17,15,27,27,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,25,17,8,17,17,17,17,17,17,20,8,17,17,20,17,17,17,20,20,17,17,17,17,17,17,17,25,17,25,14,17,17,20,17,14,17,17,17,17,17,20,17,17,17,17,26,17,25,8,25,19,17,17,17,17,17,17,17,17,15,20,17,14,17,17,14,17,17,17,17,8,17,17,17,20,17,17,17,17,17,17,17,8,17,17,17,18,15,17,15,15,17,17,17,17,17,17,15,17,17,17,17,17,20,17,17,15,17,15,17,17,17,17,17,14,17,17,20,25,17,17,17,17,17,17,20,17,17,20,25,17,17,17,17,17,17,14,14,17,17,17,17,17,17,17,17,17,18,17,15,8,17,17,17,14,15,17,17,17,17,15,14,17,14,17,17,14,17,17,17,17,17,17,14,17,17,15,20,17,17,17,17,17,14,8,17,15,17,17,17,17,20,17,15,17,17,17,17,17,17,17,17,15,17,17,17,8,17,17,15,25,25,17,19,17,17,25,17,15,17,17,20,17,17,17,17,17,17,17,17,25,15,17,17,17,20,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,19,17,17,17,17,17,15,17,17,17,17,17,15,17,17,17,18,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,29,17,17,17,17,14,17,17,17,20,17,17,25,17,17,17,8,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,14,25,17,17,17,17,24,17,17,27,27,15,17,17,17,17,17,17,17,17,17,25,24,25,17,17,17,17,17,17,20,17,17,17,17,20,17,17,17,20,20,15,17,19,15,17,17,17,17,17,15,17,20,14,8,17,17,17,17,17,17,17,24,17,15,8,17,17,17,17,17,20,17,17,17,17,17,17,17,17,20,17,17,17,17,8,20,25,17,14,24,17,17,17,25,17,17,17,15,17,20,17,17,19,18,17,20,17,15,17,17,15,17,17,17,17,20,17,17,8,17,17,17,17,19,17,17,17,17,17,20,17,20,17,17,26,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,15,17,17,18,17,15,15,14,17,17,17,19,17,17,25,17,14,17,17,20,17,17,17,17,17,15,17,17,14,17,17,25,19,17,17,17,17,8,17,20,14,17,25,17,17,17,15,20,17,17,17,17,17,17,20,15,17,17,17,17,17,17,17,17,17,17,25,17,15,17,17,17,17,17,17,17,17,22,17,17,17,17,17,14,17,25,8,14,17,17,17,17,17,20,17,17,17,20,17,17,17,20,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,20,17,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,17,17,17,17,17,17,15,17,17,17,25,17,17,25,17,14,25,17,17,20,20,17,14,17,17,17,25,17,17,17,17,14,17,17,17,14,17,17,17,17,20,17,17,17,17,17,15,17,20,20,17,17,15,17,17,17,17,17,17,8,17,20,17,17,17,17,17,17,17,17,25,17,17,24,17,17,17,17,17,17,17,17,17,25,20,17,17,17,20,17,17,17,17,17,17,17,17,17,14,17,20,17,17,17,17,17,17,27,27,27,17,17,17,17,15,17,17,17,17,17,17,17,15,17,17,17,17,15,17,17,17,17,17,17,15,25,17,25,17,17,17,17,17,17,20,17,15,17,20,17,17,17,17,17,17,15,17,17,17,17,14,20,14,17,8,17,20,14,17,20,17,18,17,17,17,17,15,17,17,24,17,17,15,17,17,15,17,17,17,17,20,17,17,15,25,25,17,17,20,17,17,20,17,20,14,19,17,18,17,17,17,20,17,17,20,17,17,14,17,17,15,17,17,17,17,17,18,20,17,24,17,14,17,18,17,17,17,19,17,17,17,17,17,17,17,17,14,17,8,17,17,20,17,17,20,17,17,17,17,17,26,17,17,17,17,17,17,17,17,17,17,22,17,17,17,17,17,17,15,19,17,15,17,17,17,22,17,17,15,8,17,17,15,19,17,17,17,19,17,17,20,17,17,14,20,15,17,17,8,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,8,14,17,17,19,17,17,17,15,17,17,17,17,17,14,17,20,17,20,17,17,20,17,17,17,17,17,14,22,17,20,17,17,17,17,17,17,17,25,17,17,22,17,19,20,17,20,17,17,17,17,17,17,25,17,17,17,17,17,8,17,17,17,17,15,20,17,17,19,17,17,17,17,17,17,25,17,17,25,17,17,25,17,14,17,25,17,15,17,20,17,17,20,17,14,15,8,17,15,17,17,17,15,17,17,15,20,15,8,17,17,17,8,17,17,14,15,17,17,20,15,14,25,17,17,17,17,17,17,17,17,17,15,17,15,17,17,17,17,17,17,17,17,17,20,17,20,15,17,17,17,14,17,20,15,17,17,17,17,17,14,17,17,17,20,17,17,20,17,15,17,17,17,17,25,27,27,17,17,14,17,18,17,25,17,17,17,25,15,20,22,17,20,17,17,17,17,17,15,17,17,17,17,17,17,17,14,17,15,15,17,17,17,14,20,17,17,17,17,20,17,17,25,15,17,17,19,17,17,20,17,17,17,17,17,17,17,25,17,17,17,17,18,17,17,17,17,17,20,17,14,17,17,17,8,17,17,17,17,8,20,17,25,17,17,17,17,17,25,17,17,17,17,20,17,17,17,17,17,25,17,17,17,15,17,17,15,17,17,17,17,17,14,17,17,17,17,17,17,17,17,17,17,8,17,20,17,17,24,14,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,8,20,8,15,17,17,17,17,17,17,17,17,17,22,8,25,17,17,17,17,14,17,20,17,8,17,17,17,15,17,17,29,17,17,17,14,17,17,17,17,17,15,17,25,17,17,17,20,17,17,17,15,20,15,18,8,14,17,18,8,15,15,15,17,20,17,20,17,15,17,17,17,17,14,17,17,14,17,17,17,17,17,20,17,17,17,18,17,17,20,17,17,17,17,17,17,17,17,17,14,20,17,20,20,15,17,17,20,17,17,17,17,20,19,17,17,17,17,17,20,20,17,25,17,17,23,17,17,14,17,17,15,17,17,17,17,17,17,17,17,17,20,17,17,17,17,20,25,17,17,15,19,17,17,17,17,17,17,20,17,17,17,17,20,15,17,17,8,17,17,17,17,17,14,17,20,8,17,17,17,17,17,17,15,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,18,17,17,17,20,17,15,15,15,17,15,17,17,17,17,17,17,17,20,20,17,20,17,17,17,17,17,17,17,17,17,17,17,27,27,17,17,15,17,17,17,17,20,17,20,17,17,17,17,17,25,17,17,14,17,15,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,25,17,17,25,17,17,17,17,17,19,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,25,17,17,17,17,17,19,17,22,8,17,17,14,17,14,20,14,17,17,20,17,15,25,17,17,17,17,17,17,15,24,17,17,17,17,8,17,20,17,17,17,17,17,26,17,20,17,17,17,17,17,14,19,17,14,17,25,17,17,17,17,24,17,18,17,20,17,17,17,17,17,17,17,17,14,17,15,17,25,20,17,17,17,17,20,15,17,17,17,17,17,17,24,17,17,17,17,18,17,14,19,18,17,14,8,17,17,17,20,17,17,17,14,17,17,20,25,17,17,17,17,25,29,8,14,17,17,17,25,14,17,17,17,14,20,15,17,17,8,17,17,25,17,8,17,25,17,25,17,17,17,23,17,17,14,17,17,17,17,20,20,17,17,15,17,25,17,17,17,17,17,14,8,17,17,17,19,17,17,17,17,17,15,8,17,17,17,17,17,17,17,17,14,17,19,17,17,17,19,17,17,17,17,17,22,8,17,15,20,17,15,17,25,17,17,17,17,8,20,17,17,17,17,17,17,17,8,15,17,20,17,17,17,17,17,24,17,25,17,17,17,15,17,17,17,17,17,17,17,17,17,15,25,15,17,17,17,17,17,17,17,17,14,17,17,17,17,17,14,17,17,17,17,17,17,20,15,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,25,17,14,17,17,17,14,15,15,20,17,15,17,17,17,15,17,17,17,19,17,17,17,27,27,17,17,17,17,14,8,17,17,17,17,17,20,25,15,20,17,20,17,17,17,17,15,17,17,17,17,15,14,17,17,17,17,15,17,17,17,17,17,17,17,25,17,17,14,17,17,20,22,17,17,17,17,17,14,20,14,17,17,17,14,14,17,17,17,17,17,17,17,14,17,18,17,17,15,17,8,17,14,20,17,17,17,17,17,17,14,17,20,15,17,8,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,14,17,20,17,17,17,17,17,17,20,17,17,17,15,19,17,17,17,25,17,20,17,17,17,18,17,17,17,25,14,17,17,14,17,17,17,17,22,17,15,17,17,14,17,17,17,17,14,17,15,17,17,17,18,14,8,17,17,17,8,17,17,8,17,17,17,17,15,20,17,14,17,17,14,17,17,17,17,17,17,14,25,17,15,20,20,17,17,15,17,17,17,25,17,17,17,17,17,17,25,17,17,17,17,17,15,20,17,17,25,14,20,17,17,20,17,17,17,17,17,17,17,17,14,17,20,15,17,8,17,17,17,17,17,25,17,17,17,17,17,17,17,17,20,14,17,17,14,17,8,17,20,17,14,17,17,15,17,20,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,8,14,17,17,17,17,17,17,17,17,17,17,17,14,14,17,14,20,17,17,8,17,17,17,20,24,17,17,17,17,19,17,17,8,17,17,8,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,14,17,20,17,17,17,17,27,27,15,14,20,17,20,17,17,17,17,17,20,17,15,17,17,17,17,20,17,15,17,17,17,17,17,17,24,17,15,17,17,15,17,8,17,15,17,17,20,25,17,20,17,17,20,20,20,19,17,17,17,17,17,17,17,17,15,15,17,17,17,17,17,14,17,17,17,19,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,18,17,20,17,17,17,17,17,17,17,17,14,17,17,17,17,20,17,20,17,17,15,17,17,25,17,17,19,17,8,17,17,17,29,15,14,17,17,17,17,17,17,15,14,14,17,25,17,17,17,17,17,22,17,17,17,25,17,14,17,8,15,17,15,17,17,17,17,17,17,17,17,17,17,17,20,17,14,17,17,17,17,17,20,15,17,17,8,17,25,17,17,8,25,17,17,20,17,20,15,17,17,20,20,17,17,17,20,24,8,17,17,17,14,17,18,17,17,17,25,17,17,8,17,17,17,8,17,20,17,8,14,17,20,14,17,25,18,17,17,17,14,17,17,20,15,17,17,17,14,25,17,25,17,17,17,17,17,17,14,17,17,17,17,18,15,17,20,20,17,17,17,17,17,20,8,17,17,17,17,17,15,17,17,17,17,20,17,17,17,17,8,17,8,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,15,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,20,8,20,14,15,17,17,17,17,17,17,20,17,17,22,20,20,17,17,17,17,17,25,17,17,17,15,17,17,17,17,17,14,17,15,14,17,17,20,17,17,17,17,20,27,27,17,20,17,18,15,14,17,17,17,8,17,15,17,17,20,17,17,17,17,18,17,17,20,17,17,20,17,17,25,17,17,8,17,17,17,14,17,19,17,15,17,17,17,17,20,17,17,17,17,8,17,14,17,17,17,24,15,17,20,18,18,17,17,17,15,17,17,20,25,17,17,17,15,14,17,17,8,17,17,17,17,17,17,8,18,17,17,18,17,17,17,17,24,17,17,17,17,17,8,15,15,17,17,17,17,17,17,17,17,23,20,17,15,17,17,17,17,17,17,20,25,17,17,17,17,24,17,17,15,17,17,17,17,17,20,8,8,17,20,17,17,14,17,17,17,17,17,25,17,17,17,17,17,17,17,15,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,14,19,17,17,20,20,17,15,20,17,17,17,17,17,17,17,20,15,8,17,17,17,17,15,20,15,14,17,17,20,17,17,20,17,15,17,17,17,17,17,14,17,15,17,17,17,17,17,17,20,18,17,17,17,19,17,17,17,17,17,17,18,22,15,17,17,17,17,17,22,15,17,17,17,17,17,15,17,17,17,17,17,14,17,17,17,25,17,15,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,18,17,17,15,17,17,17,17,19,20,15,17,20,17,17,17,8,17,17,17,17,17,15,17,17,17,17,17,8,17,17,8,17,17,20,17,17,17,17,15,17,17,15,17,17,17,17,17,17,15,20,17,17,17,17,17,17,17,19,18,17,17,17,17,17,15,17,15,20,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,27,27,17,18,25,15,17,17,17,17,17,25,8,17,15,15,17,17,25,17,17,17,20,17,17,17,25,17,17,17,17,17,15,14,19,15,17,17,20,17,17,17,17,17,22,17,17,17,15,14,17,8,17,17,17,25,17,15,17,17,18,14,17,17,17,17,17,15,17,17,15,8,17,17,17,17,17,15,17,17,17,17,17,24,15,17,17,22,17,17,17,17,15,17,17,17,17,17,15,17,17,14,17,15,17,17,17,14,17,17,17,20,17,14,17,17,17,17,17,17,17,17,17,15,20,17,17,17,17,17,17,23,17,17,17,17,24,17,17,17,17,20,8,15,17,25,17,14,17,15,17,17,20,18,15,17,20,17,15,17,17,17,17,17,17,17,15,17,17,25,17,8,19,17,17,17,17,17,15,17,17,20,17,17,15,17,15,17,17,17,14,23,17,15,17,17,17,17,17,15,17,17,17,17,8,17,17,17,18,15,17,17,23,15,17,17,17,17,17,17,8,17,17,17,17,17,17,20,17,17,15,17,17,17,17,15,17,14,17,14,17,17,15,18,17,17,20,17,17,15,17,17,17,17,17,15,17,17,17,28,17,17,22,17,17,17,17,25,17,8,18,17,17,17,17,17,17,20,17,17,14,17,25,17,17,17,17,17,15,14,20,17,17,17,17,20,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,20,18,17,17,17,17,17,14,17,17,17,17,14,17,17,15,14,17,17,17,17,20,17,17,17,15,17,17,17,17,17,17,20,17,17,8,17,17,15,15,20,15,17,19,17,17,18,17,19,17,17,17,20,20,17,17,17,17,17,14,27,27,27,18,17,17,15,20,14,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,22,17,17,15,20,20,17,17,18,17,17,8,17,17,17,14,17,18,20,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,22,17,14,17,17,17,17,17,17,20,17,14,17,17,8,14,17,15,14,19,17,14,17,15,17,17,17,17,17,17,17,17,17,15,15,17,17,17,17,17,17,8,17,14,17,17,17,17,17,25,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,14,17,15,15,17,17,18,17,17,8,17,17,17,17,18,20,17,17,20,19,17,17,17,17,14,17,17,17,14,18,15,17,14,17,17,17,17,17,17,17,17,17,17,17,22,17,17,24,8,17,19,17,8,17,17,17,17,17,25,17,22,17,17,17,17,17,15,20,17,17,17,8,17,14,17,17,17,17,17,20,15,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,14,17,17,8,17,17,17,17,17,17,17,20,17,17,17,17,17,14,17,17,17,15,17,18,17,14,17,22,20,17,17,17,17,15,22,17,17,8,17,17,17,17,17,20,19,17,18,17,17,17,20,17,8,17,17,8,22,17,17,15,15,17,17,17,17,25,20,17,17,17,15,17,17,17,17,17,17,14,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,14,24,17,17,17,15,28,17,17,17,14,15,17,27,8,17,17,17,17,24,14,15,17,17,17,25,17,20,14,17,8,17,17,17,17,17,17,17,17,17,17,18,17,25,17,17,17,17,17,20,17,17,17,17,25,17,8,17,17,17,17,27,27,18,17,17,18,20,17,20,17,20,17,17,17,17,17,15,17,17,17,20,17,14,17,17,14,25,17,17,17,17,17,17,17,17,17,17,17,17,15,20,17,17,17,17,17,17,17,15,17,17,25,17,17,17,17,17,17,17,14,14,17,17,17,17,17,17,14,17,17,17,17,20,18,8,19,17,17,8,17,25,14,17,17,14,17,17,17,15,17,17,25,14,17,17,14,20,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,20,17,17,19,8,8,19,15,17,17,25,17,17,8,17,15,25,17,17,14,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,20,17,17,14,15,17,17,17,17,14,17,18,25,17,18,17,17,25,20,25,17,17,17,17,17,17,17,17,17,17,17,15,17,17,14,14,17,15,17,17,17,17,17,17,17,17,20,17,17,17,20,17,17,18,17,20,17,17,17,17,8,24,17,8,17,17,8,17,17,17,14,17,17,17,17,17,25,17,17,18,17,17,17,22,17,17,17,15,14,17,15,17,17,20,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,20,18,14,17,17,17,14,25,14,17,15,18,17,17,17,17,19,17,17,17,17,17,20,17,17,17,20,17,25,17,17,20,17,17,15,17,17,17,20,17,15,17,17,20,15,17,20,17,17,20,17,17,17,17,25,17,17,17,17,17,17,17,15,17,20,17,17,17,17,17,17,24,17,17,17,17,8,17,17,18,17,15,19,17,14,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,27,27,15,17,17,17,25,17,17,15,17,17,25,8,17,17,17,17,17,15,17,17,17,17,15,20,17,17,20,17,18,17,17,17,17,8,17,17,17,17,20,17,17,17,17,17,17,17,17,17,8,8,17,14,19,17,17,25,17,14,18,17,17,17,25,8,17,17,17,17,17,17,14,17,17,19,17,17,17,17,17,17,17,17,17,17,18,17,17,14,17,17,17,17,14,8,17,17,17,17,20,25,17,27,17,17,20,17,17,17,17,17,17,17,17,20,15,17,17,17,19,20,17,17,17,17,17,17,15,14,14,17,17,17,17,15,17,25,17,17,17,17,17,17,15,17,17,20,17,17,17,17,17,17,20,17,24,17,20,17,17,17,17,17,14,17,17,17,17,17,17,24,15,17,17,17,17,17,17,17,17,17,17,17,15,25,17,17,17,17,17,17,17,17,18,17,17,17,15,15,17,17,17,20,17,17,17,17,17,17,17,20,17,18,17,14,17,14,17,17,17,15,17,17,17,8,17,17,14,17,17,25,20,17,17,17,14,19,20,15,17,17,20,17,8,17,17,17,17,17,15,17,20,17,17,17,17,15,14,8,17,17,15,17,17,17,17,14,17,20,17,15,25,17,17,17,18,17,17,20,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,19,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,14,17,17,25,17,17,17,15,17,15,17,17,8,17,20,15,17,17,17,17,17,15,17,17,17,17,25,17,17,20,14,17,17,17,17,17,17,17,17,20,15,17,17,15,15,17,17,17,17,17,17,17,27,27,27,17,14,17,20,18,17,18,20,17,17,17,17,17,17,17,17,17,15,20,17,25,18,25,25,14,17,15,17,17,17,15,17,17,17,17,17,15,15,17,17,17,17,17,17,17,20,17,17,17,20,17,15,17,15,17,17,17,8,17,14,17,17,15,17,20,17,17,17,17,14,15,17,25,17,17,25,17,20,17,15,17,17,17,17,17,19,17,17,15,17,17,17,17,17,17,25,17,17,15,15,20,8,14,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,15,25,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,20,17,15,17,15,20,17,15,17,8,17,17,17,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,25,20,20,15,17,17,8,17,15,17,17,22,15,17,17,17,17,17,17,17,17,17,17,25,17,17,14,15,17,17,17,17,20,25,20,17,15,17,15,17,14,15,14,15,24,20,17,24,20,17,20,14,17,17,17,17,17,17,17,14,17,17,17,17,17,25,17,14,25,17,17,15,17,17,25,17,22,17,17,18,25,17,17,17,17,17,25,17,17,17,17,17,17,17,15,17,25,17,17,17,17,17,17,17,17,8,17,17,17,17,17,17,17,17,17,8,17,17,17,17,17,20,15,17,17,17,15,17,17,17,20,8,14,14,15,20,17,17,14,17,17,29,17,17,22,17,17,17,17,20,17,17,17,17,20,17,17,17,14,17,15,17,17,17,17,15,17,25,17,17,17,17,17,17,17,17,14,17,20,17,17,17,17,17,14,17,17,17,8,17,20,17,15,17,17,20,20,17,17,17,17,20,17,17,17,17,15,17,17,17,17,17,8,17,17,17,17,17,17,17,19,17,17,17,15,17,20,27,27,27,17,20,17,17,17,17,17,15,17,17,17,17,17,17,17,22,17,17,17,15,17,17,17,17,17,17,15,17,17,17,17,17,17,19,25,20,17,17,8,17,17,25,17,17,24,17,17,15,15,17,25,17,17,17,17,15,8,17,14,17,17,17,17,25,17,17,25,19,17,20,20,17,17,17,25,17,17,15,17,17,17,17,17,17,17,8,15,17,29,17,15,15,24,17,15,20,17,8,20,17,17,17,15,25,25,17,17,24,17,15,17,14,17,17,15,17,17,17,17,17,17,17,20,20,17,17,17,22,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,20,15,17,17,17,8,15,17,17,17,17,17,17,17,17,17,17,17,15,18,17,20,20,17,20,17,17,17,20,17,17,17,17,17,15,17,25,17,25,26,20,15,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,19,20,17,17,17,17,14,25,17,17,17,17,17,17,17,15,18,18,17,17,17,17,17,17,17,17,17,15,17,17,17,14,17,17,17,17,17,20,17,17,17,20,17,15,14,17,14,17,17,17,8,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,22,25,17,17,17,17,17,17,25,17,14,20,17,17,17,17,17,17,14,20,20,17,17,17,27,20,17,17,15,17,17,15,17,17,17,17,14,17,8,14,17,17,17,15,17,17,15,25,24,17,17,17,20,17,17,20,15,17,17,17,17,17,17,17,8,17,19,17,17,18,17,17,17,17,17,17,18,15,17,20,17,17,17,17,17,17,17,17,17,17,17,17,20,17,8,17,17,17,17,27,27,14,17,17,17,17,17,17,17,17,20,17,8,17,17,17,17,17,25,15,17,14,17,17,17,17,17,17,17,25,20,17,17,17,17,14,17,17,17,20,17,20,17,17,17,17,17,19,14,17,17,17,17,17,17,14,20,18,17,17,17,17,17,18,17,17,17,20,17,17,17,15,25,17,17,17,17,20,14,17,17,17,17,17,15,15,17,24,17,17,15,15,18,17,17,17,17,17,17,17,17,17,15,20,17,17,17,25,17,17,25,17,14,17,17,20,17,17,20,17,17,26,17,20,15,17,17,17,14,15,17,17,17,25,17,15,17,22,17,17,17,20,17,17,17,19,15,17,17,17,17,17,25,14,17,17,17,15,17,17,17,17,17,25,17,17,17,17,17,14,17,20,17,17,17,8,17,17,17,15,14,15,14,20,17,17,17,17,17,17,17,26,17,25,17,17,17,15,17,15,17,17,17,8,17,20,20,17,20,17,17,17,17,17,17,17,25,15,17,17,17,25,15,17,17,17,17,17,17,17,20,17,25,17,17,17,17,20,15,17,17,17,25,17,20,17,14,8,17,15,19,17,17,17,15,17,17,28,17,15,17,17,17,17,17,17,15,17,17,19,17,17,20,14,25,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,15,17,20,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,19,25,17,17,17,17,17,17,17,19,17,20,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,8,17,17,17,17,20,17,15,17,17,17,17,15,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,27,27,17,17,17,20,17,8,17,17,17,17,17,17,17,14,20,17,17,17,25,20,17,20,17,17,17,22,17,17,20,15,20,8,14,17,17,17,17,17,17,17,17,17,17,15,8,18,17,17,17,25,17,15,17,19,17,17,17,17,20,25,17,14,17,8,17,17,17,17,17,17,17,17,17,25,14,17,14,17,14,17,22,20,17,17,17,20,17,17,17,17,8,15,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,20,17,25,15,19,17,17,17,17,17,17,15,15,14,17,17,17,17,15,17,17,18,25,17,20,17,17,25,17,17,15,14,20,17,17,25,20,15,17,17,15,17,14,17,17,17,17,20,17,17,15,17,17,17,25,8,24,8,20,17,17,17,14,19,17,20,17,29,17,25,8,17,17,17,17,17,17,14,17,17,17,17,17,20,17,17,17,20,25,17,17,17,17,14,17,17,15,15,17,17,17,20,17,17,15,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,14,17,17,17,17,15,17,17,17,17,22,17,17,29,17,8,17,17,17,22,17,17,17,17,15,17,17,17,17,17,17,17,17,15,17,14,25,15,17,20,17,20,17,17,17,17,17,17,17,17,17,17,17,17,14,17,18,25,25,17,17,17,20,17,17,17,17,8,17,17,17,17,19,17,17,17,15,22,17,17,17,22,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,18,20,25,20,17,17,17,15,15,17,23,17,17,17,17,17,8,17,17,20,20,15,17,17,17,20,17,17,17,17,18,17,17,15,17,17,17,17,17,27,27,20,17,15,25,17,20,17,17,20,17,25,17,17,17,17,25,17,22,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,20,17,17,25,17,17,17,17,15,17,20,17,15,17,17,14,25,17,15,17,17,15,17,17,17,17,14,17,17,17,20,17,19,17,20,17,17,20,14,17,17,25,8,17,17,17,17,17,17,17,17,17,25,20,17,17,15,20,17,20,17,15,17,17,17,17,17,15,14,17,17,17,17,17,17,17,8,17,17,17,17,17,15,17,17,17,17,22,17,17,17,17,15,15,17,20,17,20,20,17,25,17,17,22,17,15,17,17,15,17,14,18,17,17,17,17,17,14,17,17,22,17,17,17,17,17,17,17,17,17,17,17,14,25,17,17,17,17,17,17,17,17,20,17,14,19,17,19,19,19,17,15,20,14,17,17,8,17,17,17,20,14,17,15,17,17,17,17,17,17,22,17,17,17,17,17,15,17,17,8,14,25,18,22,17,14,20,17,17,15,20,17,17,17,14,17,20,17,17,17,15,17,25,17,17,20,17,20,25,17,14,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,15,14,17,17,17,8,17,17,17,25,17,17,17,17,15,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,15,17,25,17,15,22,20,15,17,17,14,17,17,17,17,17,17,17,8,18,17,17,14,26,17,15,17,17,20,17,17,15,17,17,14,14,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,8,18,20,17,17,17,17,15,17,17,17,14,17,17,17,8,17,17,20,17,17,17,17,27,27,17,25,17,17,17,15,17,17,17,17,17,15,25,17,22,17,17,17,17,17,17,15,15,18,17,15,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,25,17,17,17,15,17,18,17,17,17,20,17,17,25,14,14,17,17,17,17,17,17,17,20,17,20,17,17,17,8,14,17,17,17,17,15,17,17,17,17,17,17,17,14,17,17,17,17,17,17,14,17,17,25,17,8,17,17,14,25,17,20,17,14,17,20,17,17,17,15,17,17,14,17,25,25,17,17,17,17,17,17,15,17,17,17,17,17,15,17,17,17,15,25,17,17,17,15,17,15,17,25,15,17,15,17,17,17,17,17,17,17,17,17,17,18,17,15,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,25,17,17,17,24,17,17,17,17,8,17,17,24,17,8,17,17,17,17,17,17,17,17,8,20,15,17,17,18,17,20,17,20,15,17,17,14,17,17,17,17,17,17,17,17,17,17,19,17,17,17,25,17,15,15,17,17,15,17,25,17,17,15,17,17,25,17,15,17,15,17,25,17,17,17,17,20,17,15,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,8,17,20,17,17,17,17,14,17,17,17,20,25,17,17,17,17,17,15,15,17,17,17,17,17,25,17,17,17,17,17,20,17,14,17,17,17,14,17,17,17,14,17,17,25,15,17,17,17,17,17,17,17,15,17,17,17,17,14,17,17,17,17,17,15,17,14,17,17,17,17,27,27,27,17,15,17,14,17,17,17,17,25,17,26,17,17,17,22,25,17,17,17,17,17,17,17,17,17,17,18,8,25,25,20,17,25,17,25,18,17,17,15,14,17,17,17,17,20,17,25,15,25,17,17,8,8,17,17,17,14,20,17,17,17,28,17,17,17,26,24,25,20,8,17,17,17,17,17,17,17,17,17,17,20,20,25,17,17,17,17,14,17,17,17,8,17,15,20,20,17,15,17,17,17,17,17,17,14,17,17,17,17,17,17,17,14,17,17,17,17,17,17,20,17,17,15,17,17,17,17,17,17,17,17,8,18,17,17,17,17,17,15,17,17,17,15,15,15,17,15,17,17,17,25,17,17,17,17,17,24,17,17,17,8,17,14,17,17,17,15,17,17,17,17,14,17,17,17,17,17,28,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,19,17,25,14,8,20,17,20,17,17,17,17,20,15,15,17,17,14,17,17,8,17,8,17,25,17,17,15,17,17,17,20,8,17,8,17,17,17,17,17,17,20,17,17,17,17,17,20,19,17,17,17,22,14,17,17,20,17,17,17,17,28,20,17,18,17,17,17,17,17,14,15,17,20,17,17,17,17,15,18,17,17,15,17,17,17,17,17,25,14,17,17,17,17,17,20,17,17,17,17,17,15,17,17,17,15,17,17,17,17,17,17,17,17,17,15,15,15,17,17,17,17,17,17,19,17,15,8,17,17,15,17,17,17,17,25,14,17,17,18,15,17,17,18,15,17,17,17,15,17,17,17,17,17,17,17,17,17,17,14,15,17,17,15,15,17,17,17,17,17,15,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,14,17,20,17,17,17,17,17,20,15,17,18,17,17,17,17,20,27,27,17,17,17,17,17,17,17,17,17,17,17,23,15,17,17,15,15,19,17,17,17,22,17,19,17,20,18,17,20,17,14,15,17,17,17,17,17,20,17,25,15,17,25,17,17,17,20,14,17,17,17,17,19,17,17,17,17,17,17,17,17,20,18,8,17,17,17,17,17,25,17,17,15,17,17,17,17,17,20,17,17,15,17,20,17,17,14,17,20,17,17,17,17,17,15,17,17,17,17,17,20,17,25,17,17,18,17,17,17,17,17,17,17,25,17,17,17,8,8,17,17,17,25,17,17,17,17,20,17,17,14,17,8,18,8,17,17,17,17,25,17,17,17,17,15,14,17,18,19,8,20,15,17,17,17,15,15,15,17,15,17,17,17,17,17,25,14,17,17,17,17,17,17,14,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,25,25,14,17,17,8,17,17,20,15,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,15,17,15,17,17,17,15,20,15,17,20,19,17,17,17,17,8,8,17,17,20,17,17,17,15,17,17,17,17,17,17,25,20,17,17,17,17,17,20,14,17,17,17,23,25,17,17,17,17,22,17,20,17,14,17,17,17,17,17,17,17,20,15,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,15,17,17,15,17,20,17,17,8,17,17,25,24,17,17,17,17,17,17,17,17,25,17,17,14,17,15,17,17,17,17,8,17,17,17,17,8,17,17,17,17,17,17,17,25,20,17,25,17,17,17,17,17,17,8,17,14,17,17,17,17,8,17,17,17,27,27,15,20,17,17,25,17,14,25,15,14,17,17,17,14,15,17,17,15,17,17,20,17,17,17,15,17,17,15,17,17,17,17,17,17,18,17,27,17,17,8,25,17,25,15,14,17,8,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,8,17,20,17,17,20,17,17,17,17,17,17,17,20,20,17,17,17,17,17,14,17,20,17,17,8,20,17,14,17,17,25,17,17,15,20,14,15,14,17,17,17,17,17,18,17,17,17,17,17,8,14,20,17,19,17,17,25,17,8,20,17,17,20,15,20,17,17,17,8,17,17,20,17,17,22,17,17,17,17,17,20,17,17,17,17,14,20,17,17,17,15,17,8,17,17,17,8,17,20,17,17,15,17,15,18,26,17,20,17,17,17,22,20,17,17,17,25,15,17,25,15,17,17,17,17,17,18,8,20,17,17,17,17,17,17,14,14,17,17,17,17,17,17,17,17,17,17,17,22,14,8,17,17,8,17,15,17,17,17,17,8,17,17,17,17,17,17,15,17,17,17,17,25,14,17,25,24,17,20,17,17,17,17,17,20,17,15,15,17,17,15,17,17,17,17,17,15,17,8,20,20,17,17,17,17,15,17,19,17,14,17,25,17,17,8,17,17,20,20,17,17,17,17,17,8,8,17,25,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,15,17,14,17,17,17,17,27,17,20,14,14,17,17,14,17,8,17,17,17,17,17,17,17,15,17,17,17,17,17,25,15,25,17,20,15,19,17,17,17,17,17,17,17,17,17,17,17,19,17,25,14,17,15,17,17,17,17,17,20,17,19,8,17,15,17,17,17,17,17,17,17,17,15,17,17,17,17,17,27,27,20,17,17,17,17,17,17,17,20,17,17,17,17,18,17,24,17,17,17,17,14,8,15,17,25,8,17,17,25,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,25,17,15,15,17,18,17,17,17,15,17,17,17,17,14,17,17,17,17,17,17,15,17,17,17,15,17,17,17,25,17,17,17,17,17,17,17,19,17,17,20,17,17,17,17,17,17,17,8,17,17,17,17,17,17,15,17,20,17,17,17,8,14,17,25,17,17,17,14,17,17,15,17,17,17,17,17,17,14,17,17,17,17,18,17,17,17,20,17,17,17,17,17,17,17,17,19,17,17,17,17,15,17,17,25,14,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,20,17,17,17,15,17,22,15,14,17,17,17,14,17,17,17,18,17,15,20,20,17,17,14,17,8,17,17,17,25,14,20,17,20,17,17,17,25,25,17,17,17,17,17,17,20,17,17,17,14,17,17,17,17,17,14,17,17,17,14,17,17,17,17,17,17,20,17,25,17,17,17,17,17,17,17,17,17,15,14,17,17,17,20,17,17,15,17,17,17,17,15,17,17,17,17,17,17,15,17,17,17,17,25,15,20,14,8,17,17,17,17,8,14,14,17,25,17,17,17,17,15,17,17,25,22,17,17,17,14,17,17,17,14,15,17,17,17,17,8,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,14,17,17,17,17,17,8,17,15,17,15,17,25,17,25,20,15,14,17,17,17,17,19,17,15,17,17,17,17,17,17,17,17,17,15,18,20,17,17,17,17,17,17,17,25,27,27,17,17,17,17,18,14,17,17,17,17,14,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,15,20,20,20,17,17,20,17,15,17,17,15,17,17,15,20,17,17,17,20,17,17,17,17,17,17,17,17,24,17,17,17,17,17,15,17,17,8,17,17,17,17,17,20,25,17,19,17,17,17,17,22,17,20,14,17,17,18,17,8,20,17,17,15,14,20,17,14,17,17,17,25,17,20,17,17,25,20,17,20,14,14,17,20,14,17,17,17,17,17,17,20,17,17,17,17,17,17,22,17,17,25,20,17,20,17,17,17,17,17,15,20,20,17,15,20,17,20,17,17,15,17,17,17,17,17,17,14,14,17,17,17,17,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,17,8,14,17,17,17,17,17,17,17,17,17,14,15,15,17,17,17,17,20,8,17,17,17,17,17,17,15,17,17,18,20,20,17,17,17,14,14,17,19,17,17,17,17,17,17,17,14,17,20,17,17,15,17,17,17,17,17,17,17,8,17,25,17,17,17,17,17,17,17,17,19,17,17,17,14,17,17,15,17,8,24,8,17,17,15,25,14,17,17,17,17,17,17,17,15,14,25,8,17,17,17,17,17,17,17,20,17,17,17,8,17,15,8,20,17,14,17,17,17,20,17,14,17,14,17,17,17,17,17,17,17,20,17,17,20,17,17,17,17,20,17,17,17,17,17,17,17,17,17,25,14,17,17,25,20,17,17,17,14,17,17,17,17,17,18,17,17,20,14,17,14,25,20,17,15,17,17,17,17,17,25,17,17,17,14,14,15,17,15,17,17,8,17,17,17,8,24,17,8,19,20,17,25,17,17,17,25,20,17,17,20,27,27,17,17,17,17,17,17,17,17,17,15,25,15,17,17,17,15,17,15,14,17,20,17,17,14,29,17,17,17,17,17,17,17,22,14,17,17,17,8,17,17,17,20,17,17,17,17,17,15,17,8,17,17,17,17,25,17,17,17,17,17,17,17,17,17,17,17,8,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,20,17,17,17,17,17,17,17,15,17,17,17,17,24,17,19,17,18,17,17,17,17,17,17,8,17,17,15,17,17,14,17,25,17,17,17,17,15,18,17,8,17,17,17,15,17,17,17,17,17,17,17,17,15,17,17,17,14,17,25,15,15,17,17,17,17,17,17,25,17,17,8,20,15,17,17,18,17,25,17,17,17,17,14,17,17,17,17,17,15,25,17,17,17,17,14,25,25,17,17,17,25,17,17,14,25,17,14,15,17,17,20,17,17,14,17,17,17,15,17,17,17,17,17,15,17,14,14,17,17,15,17,17,17,17,17,17,17,14,17,17,17,8,8,8,17,17,17,17,25,17,17,17,17,17,17,17,17,20,25,17,17,17,17,17,17,17,17,25,17,18,17,17,17,17,17,17,17,17,17,17,17,17,14,17,17,17,17,17,8,8,15,15,17,17,17,17,17,17,17,17,17,17,17,17,14,17,17,20,17,17,14,17,17,17,18,17,18,17,17,18,17,17,20,17,17,17,17,17,17,17,19,17,17,17,17,8,15,17,17,17,17,17,17,14,15,17,17,17,17,17,17,17,17,17,17,17,15,17,20,17,20,25,17,14,17,25,17,17,17,17,17,22,17,17,17,15,18,25,17,20,17,25,17,17,17,15,17,17,25,17,24,20,17,17,17,17,17,27,27,17,17,17,17,8,17,25,17,17,19,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,24,14,17,17,17,17,20,15,17,17,17,20,17,15,20,17,15,17,17,20,17,17,17,14,17,17,17,17,17,25,20,17,17,17,17,17,20,17,17,17,17,17,17,20,20,17,15,17,14,17,17,17,15,17,17,17,17,28,17,17,17,15,17,8,14,17,17,17,17,17,20,17,17,17,15,14,17,20,17,17,17,17,17,17,17,20,14,17,17,17,17,17,25,17,17,17,17,17,17,20,17,17,17,20,17,14,17,17,20,17,17,8,17,17,19,17,17,20,15,17,8,22,17,17,17,15,17,25,17,17,17,17,17,17,17,20,17,17,8,17,25,25,14,17,17,17,15,17,15,20,20,17,17,17,25,17,17,17,17,25,17,17,19,17,17,17,17,17,17,17,17,17,15,24,23,15,17,17,8,17,17,17,17,20,17,17,15,17,17,17,20,14,17,17,17,17,17,17,17,17,17,17,17,17,17,17,14,25,17,17,17,17,25,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,25,17,17,17,17,17,17,14,17,17,17,20,15,17,8,17,17,17,17,17,17,17,14,17,17,17,25,17,17,17,14,15,8,17,17,20,23,17,17,17,17,17,17,20,14,14,17,17,17,18,17,17,17,20,25,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,15,18,17,17,17,15,17,17,17,17,17,17,14,17,25,17,17,14,25,17,15,18,17,8,17,17,17,17,17,27,27,17,17,17,17,17,15,19,25,17,8,17,17,17,17,25,17,17,20,17,17,17,18,14,17,15,18,17,14,15,17,17,14,19,17,20,17,17,17,17,17,20,17,17,17,17,17,17,17,17,8,17,17,15,19,17,17,17,17,20,17,17,8,17,25,17,17,17,8,17,17,17,17,8,17,15,17,17,20,17,17,22,17,17,17,17,17,17,22,20,17,17,17,17,17,20,25,17,17,17,17,14,15,15,17,15,17,20,17,17,17,14,17,17,17,14,25,8,15,17,17,22,15,17,17,14,17,17,17,17,17,17,15,17,17,17,17,17,17,22,17,8,15,17,17,20,17,17,25,15,17,17,17,17,17,15,17,17,14,26,17,15,17,17,17,8,17,17,20,14,24,20,17,17,15,17,17,17,20,25,17,17,17,14,17,17,17,20,17,17,17,17,17,17,15,17,19,15,17,17,17,17,17,17,17,17,28,17,15,18,17,17,17,17,17,17,17,20,17,17,17,17,15,17,17,17,20,17,17,20,20,17,17,20,17,17,17,20,17,17,17,20,14,17,17,8,17,15,17,18,17,17,17,19,17,17,14,20,17,8,17,17,17,17,17,8,17,20,17,17,20,17,8,17,17,17,17,15,17,17,17,17,17,17,17,17,15,17,17,17,17,17,24,24,17,17,25,17,17,14,17,17,17,25,17,17,17,25,18,17,15,17,17,17,17,17,17,20,17,17,17,17,17,8,20,15,15,17,17,20,17,18,17,17,17,17,17,20,17,17,14,17,17,17,17,8,17,17,17,17,17,15,17,17,17,15,17,14,17,17,25,19,17,17,17,17,17,17,17,14,17,20,17,27,27,8,17,17,17,17,17,17,24,25,17,15,14,17,17,17,15,17,14,8,17,17,14,17,17,18,20,17,17,8,17,25,17,17,17,17,17,17,17,17,17,17,17,17,19,17,17,17,17,17,22,8,17,15,18,17,17,15,17,17,17,17,14,15,15,17,18,17,17,17,14,17,17,17,17,17,8,17,17,17,14,17,17,17,17,17,17,17,15,17,17,17,17,17,17,14,17,22,17,17,8,17,17,17,17,25,17,17,17,25,17,20,17,17,17,17,17,17,17,25,17,17,17,17,17,17,20,17,17,17,17,25,17,20,17,20,17,20,8,17,17,17,17,15,17,8,17,17,17,17,25,17,25,14,17,17,18,17,17,17,17,17,17,14,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,8,8,17,17,14,17,15,14,8,17,17,17,17,17,17,17,17,17,17,17,17,25,17,25,17,17,17,17,17,17,17,17,17,8,17,14,17,17,17,17,17,17,17,25,20,17,14,17,25,15,17,17,17,17,17,17,17,17,17,17,17,15,20,20,8,18,17,20,17,14,17,17,17,14,17,17,17,19,17,25,17,17,17,17,20,17,15,17,17,17,25,19,15,17,25,17,18,17,17,8,17,14,17,17,20,17,17,25,17,17,17,20,17,19,17,17,25,8,15,17,17,17,14,17,17,17,28,17,20,17,15,17,20,17,17,17,17,8,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,20,17,25,17,17,17,17,17,17,17,17,17,14,17,17,22,17,15,17,17,15,17,17,17,17,20,15,20,17,15,17,17,20,15,17,17,17,17,17,17,17,17,17,20,17,17,25,17,20,17,17,17,17,27,27,17,17,15,17,15,17,17,14,17,15,17,20,17,17,17,25,17,15,17,19,17,17,20,17,17,17,17,17,20,17,17,17,17,17,17,17,20,17,15,8,17,17,17,17,17,17,17,17,17,15,17,17,25,17,17,22,17,17,17,17,17,17,17,17,15,15,17,17,22,17,17,17,17,17,15,17,20,17,17,17,14,17,17,25,17,17,17,17,17,17,17,17,14,17,24,8,17,20,19,14,17,25,17,17,17,17,17,15,17,17,20,14,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,17,17,25,14,17,20,17,17,17,17,17,14,15,17,20,17,14,25,15,19,17,20,17,17,17,17,17,15,17,17,17,17,25,17,17,17,17,17,17,17,17,20,8,17,17,17,17,20,17,25,17,17,17,17,17,17,8,15,17,17,17,17,17,17,14,17,14,20,18,17,17,17,15,17,14,17,17,17,17,25,17,17,17,17,17,17,17,15,17,17,17,17,17,19,17,17,8,15,17,17,17,17,17,17,17,17,25,18,25,14,8,17,17,17,15,17,17,17,17,25,8,17,17,24,17,17,17,17,17,22,17,17,17,17,18,17,17,17,17,17,17,20,20,17,17,17,17,17,22,17,22,17,17,17,17,17,17,17,17,15,17,17,17,17,25,17,17,17,17,17,14,14,8,17,17,17,15,20,17,17,17,17,17,17,17,17,17,17,17,17,14,14,14,17,20,20,15,17,15,17,20,17,17,17,17,17,17,17,25,17,17,17,17,17,17,14,17,15,17,17,17,17,17,15,17,17,8,17,17,17,8,17,17,8,15,17,17,20,17,17,17,20,20,17,17,17,15,15,17,17,17,20,17,17,15,25,17,17,27,27,17,17,19,17,17,8,19,17,25,25,17,15,17,17,28,17,17,17,17,17,17,15,17,17,17,17,15,17,17,17,18,20,17,17,17,17,20,15,17,8,25,20,14,18,17,17,20,17,17,8,17,17,17,17,17,17,17,17,17,17,17,14,17,17,17,17,15,17,18,17,22,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,20,17,17,17,25,17,17,17,17,17,17,8,17,25,17,17,17,20,17,20,17,20,17,17,17,17,17,24,17,18,17,20,17,17,20,17,17,17,17,25,8,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,15,14,17,17,20,17,17,14,15,17,17,17,25,17,17,14,17,24,17,15,19,17,17,20,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,25,17,15,17,8,17,17,15,17,17,25,17,17,15,17,25,18,17,14,17,17,25,17,17,17,17,15,25,17,17,17,17,17,17,20,17,25,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,8,17,17,17,14,17,25,17,17,17,17,17,20,14,14,15,17,17,17,17,17,17,17,17,20,19,17,19,17,19,25,15,17,15,17,17,17,15,20,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,25,17,17,20,15,8,17,8,15,17,17,20,17,17,17,15,17,18,28,17,17,25,17,20,17,17,14,8,17,17,18,17,17,15,17,17,17,8,17,17,17,17,17,14,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,18,17,17,17,17,22,17,8,17,17,14,17,17,17,17,17,15,17,17,17,17,15,17,17,15,17,17,17,20,17,17,17,17,17,17,17,15,14,14,20,17,17,27,27,27,17,20,17,17,15,20,17,17,17,17,17,17,15,19,17,17,17,17,20,17,17,8,17,17,20,17,8,15,17,17,17,15,17,25,17,17,17,17,17,20,17,17,17,17,20,17,17,17,17,15,17,15,17,15,17,17,17,17,17,17,17,14,17,15,17,17,17,17,17,17,17,15,20,17,20,17,17,17,17,17,17,17,14,17,17,14,17,8,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,14,17,17,18,25,17,17,17,17,17,17,19,17,17,17,15,17,17,17,17,17,17,20,17,17,17,17,17,15,17,17,17,20,17,17,17,17,14,14,17,17,17,17,17,17,20,20,17,17,17,20,17,17,17,17,17,15,8,17,17,14,25,15,17,17,17,15,17,17,17,17,17,25,17,17,14,17,19,14,17,20,17,17,17,17,17,15,17,20,8,17,17,17,17,17,17,17,20,17,17,17,17,17,17,25,17,17,17,17,17,25,14,8,17,17,15,17,17,20,17,17,17,17,17,17,17,17,17,14,17,17,17,17,17,17,17,20,20,17,17,24,17,17,17,18,17,17,15,17,20,20,17,17,19,8,17,17,17,17,17,17,25,15,17,15,14,17,17,17,17,17,17,17,25,17,17,17,17,17,15,17,17,17,20,17,19,17,17,17,17,17,20,17,14,17,14,17,17,17,17,17,17,20,17,17,17,20,15,17,22,17,14,17,17,25,8,14,17,17,20,17,17,17,17,17,17,17,15,17,17,20,8,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,18,17,17,22,8,17,15,17,17,17,17,17,17,15,15,17,17,25,17,17,17,17,19,17,17,17,17,17,20,20,17,17,17,20,17,15,17,27,27,17,17,17,20,17,17,20,17,18,17,17,17,17,17,17,17,20,17,17,14,17,17,20,17,17,17,15,17,17,25,14,25,17,17,17,17,17,15,24,17,14,17,17,17,14,17,14,17,17,14,17,17,20,17,14,17,14,17,17,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,20,17,18,17,20,20,17,17,14,17,15,17,18,17,15,17,20,17,17,17,17,17,17,18,17,15,8,15,8,17,17,17,17,17,17,17,17,17,17,17,17,8,17,17,17,17,20,17,17,20,17,17,17,17,17,14,17,17,17,20,17,17,17,17,17,17,20,15,17,17,17,20,17,15,17,17,17,14,17,17,20,17,17,17,17,17,17,17,17,14,17,17,14,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,18,25,14,17,19,15,17,20,17,17,15,17,17,20,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,15,17,17,17,17,17,17,20,17,19,17,29,17,19,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,14,19,17,17,17,14,14,17,17,17,17,15,17,17,25,25,17,17,17,17,15,17,17,25,17,19,20,17,17,15,17,17,17,8,17,17,17,20,20,18,17,17,17,17,17,18,17,14,17,17,17,17,17,15,17,8,17,17,17,17,8,17,17,20,17,20,14,17,20,15,14,17,17,17,17,18,17,17,17,22,17,17,17,17,17,17,15,17,17,17,17,17,17,25,8,17,17,17,17,17,17,17,20,17,17,25,17,27,27,17,17,17,17,17,17,17,17,25,15,17,25,17,15,15,17,15,17,17,17,17,20,17,17,8,8,17,17,17,15,17,17,20,8,17,20,17,17,17,17,17,14,17,17,17,17,17,20,15,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,25,15,15,17,17,17,15,17,17,17,14,17,17,8,14,18,17,17,17,17,17,15,25,17,17,17,17,17,17,17,17,17,17,17,14,17,17,14,17,17,14,17,17,15,24,17,17,17,15,17,17,17,8,25,14,17,24,17,17,17,17,17,17,17,15,18,17,14,17,8,17,17,20,17,20,17,17,17,17,17,17,17,17,17,15,15,8,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,17,15,17,20,17,17,17,17,17,17,17,17,14,25,25,17,17,17,25,17,17,17,17,17,14,17,20,17,18,17,17,17,17,17,17,17,17,17,17,17,14,17,25,17,17,17,20,20,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,8,17,25,17,17,17,14,24,17,17,17,18,17,17,17,17,17,17,25,20,17,17,17,17,17,17,24,17,15,17,17,17,15,8,18,17,17,15,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,17,25,18,17,17,17,20,17,17,17,17,17,25,20,20,17,8,17,17,17,17,20,17,19,17,14,17,17,8,8,17,17,17,17,8,17,17,17,17,20,15,17,15,8,14,17,17,17,17,14,17,17,15,17,17,17,25,17,17,17,17,17,17,17,17,17,17,15,17,17,17,8,17,20,17,17,17,17,17,17,15,17,27,27,27,17,17,17,15,25,17,20,14,20,17,14,17,20,17,17,17,17,14,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,19,17,20,23,17,17,17,15,17,17,17,17,8,25,14,17,17,20,14,17,14,8,15,15,17,17,17,15,17,20,17,17,25,17,17,17,17,17,17,17,15,17,17,17,17,14,8,15,17,17,20,20,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,17,17,14,17,15,17,20,17,17,17,17,17,17,17,17,17,17,14,17,20,20,17,17,17,17,17,17,25,17,17,17,17,17,15,17,17,17,17,17,17,8,17,15,15,17,17,17,17,17,17,17,17,17,17,17,8,17,17,17,17,17,14,15,17,17,17,17,15,17,25,8,17,17,17,17,17,8,17,17,17,17,17,17,17,25,17,17,17,17,17,17,17,17,15,17,17,17,15,17,17,17,17,17,17,17,15,20,17,17,8,15,17,17,17,17,17,17,17,17,17,20,20,17,17,17,17,25,17,17,17,17,18,17,15,14,25,17,14,17,17,25,17,17,17,17,17,17,20,15,20,15,17,17,17,14,17,17,17,17,17,17,17,17,17,17,25,20,15,20,17,17,17,15,17,17,17,17,17,17,15,17,20,8,17,19,20,17,17,17,17,17,17,17,8,17,17,17,15,17,17,17,20,17,17,15,17,17,17,15,17,17,20,15,17,8,17,17,15,17,17,15,15,17,17,17,17,17,17,17,14,17,17,17,20,15,20,17,17,17,17,17,17,17,15,17,17,17,14,17,17,17,17,17,20,25,17,17,15,17,17,17,17,23,18,14,20,17,20,17,17,17,28,22,17,17,17,17,17,15,27,27,17,17,17,17,17,17,17,17,25,17,15,17,17,25,17,17,19,25,27,17,15,20,17,17,17,20,17,17,8,17,17,17,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,17,17,19,17,15,17,17,17,17,17,17,17,14,17,17,17,28,17,17,17,14,17,17,15,17,17,14,17,17,15,17,17,17,17,17,17,17,22,15,15,17,15,17,17,17,17,17,17,20,17,17,20,17,17,17,17,20,17,17,15,17,14,17,17,15,23,17,15,8,15,17,20,17,17,8,17,19,17,17,17,17,17,15,14,18,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,17,17,8,17,17,25,17,17,17,17,17,25,17,17,17,20,17,17,17,17,17,20,17,17,17,17,17,17,17,17,17,24,17,8,17,17,17,17,20,17,17,14,17,25,17,17,17,17,19,17,18,17,25,17,17,17,17,17,17,17,14,17,17,28,20,17,17,20,17,17,17,17,17,20,17,17,17,17,17,17,24,17,17,20,17,17,8,24,17,17,17,17,17,17,14,17,17,17,17,20,17,17,17,17,15,17,20,17,15,17,17,17,17,17,8,15,17,17,17,17,15,15,17,17,17,17,25,15,17,17,17,17,17,17,17,17,20,17,20,15,17,25,14,17,17,17,17,17,17,17,17,17,17,17,17,15,15,20,17,17,17,17,17,17,17,15,17,17,17,17,8,17,17,17,8,25,20,17,17,14,17,14,17,17,17,14,17,17,17,17,17,17,17,17,20,20,17,25,17,17,20,17,8,17,17,17,17,15,25,17,17,17,17,17,20,8,17,17,17,17,8,17,17,17,17,17,17,17,17,19,17,17,17,17,17,17,17,20,27,27,17,17,17,25,17,17,17,25,20,17,17,17,17,17,17,17,14,17,17,17,14,17,17,18,15,17,17,17,8,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,17,17,8,17,15,17,14,17,25,17,17,17,14,17,8,25,17,17,17,17,15,17,17,17,17,17,17,17,17,17,17,17,17,15,17,17,17,17,8,17,25,17,17,17,20,17,20,15,17,17,34,34],"timeDeltas":[29084,125,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,83,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,83,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,84,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,83,0,42,0,41,42,0,42,41,0,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,84,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,83,42,41,0,42,42,41,0,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,0]} \ No newline at end of file diff --git a/bench-titleize-2024-11-24_12-17-49.cpuprofile b/bench-titleize-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..04f461c --- /dev/null +++ b/bench-titleize-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,10,23,24,27]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[8]},{"id":8,"callFrame":{"functionName":"","scriptId":"258","url":"node:inspector","lineNumber":62,"columnNumber":38},"hitCount":0,"children":[9]},{"id":9,"callFrame":{"functionName":"#onMessage","scriptId":"258","url":"node:inspector","lineNumber":80,"columnNumber":12},"hitCount":1,"positionTicks":[{"line":86,"ticks":1}]},{"id":10,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":168,"children":[11,15,16,33],"positionTicks":[{"line":323,"ticks":5},{"line":297,"ticks":2},{"line":292,"ticks":6},{"line":314,"ticks":18},{"line":315,"ticks":22},{"line":316,"ticks":101},{"line":327,"ticks":14}]},{"id":11,"callFrame":{"functionName":"H","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":254,"columnNumber":54},"hitCount":0,"children":[12]},{"id":12,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2596},"hitCount":0,"children":[13]},{"id":13,"callFrame":{"functionName":"titleize","scriptId":"270","url":"file:///Users/airhorns/Code/superflected/src/titleize.ts","lineNumber":1,"columnNumber":981},"hitCount":0,"children":[14]},{"id":14,"callFrame":{"functionName":"humanize","scriptId":"269","url":"file:///Users/airhorns/Code/superflected/src/humanize.ts","lineNumber":1,"columnNumber":937},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":15,"callFrame":{"functionName":"y","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":78,"columnNumber":10},"hitCount":1,"positionTicks":[{"line":98,"ticks":1}]},{"id":16,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":290,"children":[17,22],"positionTicks":[{"line":137,"ticks":1},{"line":138,"ticks":1},{"line":309,"ticks":158},{"line":539,"ticks":1},{"line":308,"ticks":1},{"line":250,"ticks":9},{"line":302,"ticks":8},{"line":139,"ticks":9},{"line":530,"ticks":7},{"line":301,"ticks":45},{"line":531,"ticks":2},{"line":311,"ticks":48}]},{"id":17,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2596},"hitCount":148,"children":[18,30],"positionTicks":[{"line":2,"ticks":148}]},{"id":18,"callFrame":{"functionName":"titleize","scriptId":"270","url":"file:///Users/airhorns/Code/superflected/src/titleize.ts","lineNumber":1,"columnNumber":981},"hitCount":2486,"children":[19,20,21],"positionTicks":[{"line":2,"ticks":2486}]},{"id":19,"callFrame":{"functionName":"humanize","scriptId":"269","url":"file:///Users/airhorns/Code/superflected/src/humanize.ts","lineNumber":1,"columnNumber":937},"hitCount":6615,"positionTicks":[{"line":2,"ticks":6615}]},{"id":20,"callFrame":{"functionName":"","scriptId":"270","url":"file:///Users/airhorns/Code/superflected/src/titleize.ts","lineNumber":1,"columnNumber":1101},"hitCount":562,"positionTicks":[{"line":2,"ticks":562}]},{"id":21,"callFrame":{"functionName":"underscore","scriptId":"268","url":"file:///Users/airhorns/Code/superflected/src/underscore.ts","lineNumber":1,"columnNumber":949},"hitCount":3469,"positionTicks":[{"line":2,"ticks":3469}]},{"id":30,"callFrame":{"functionName":"get","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":508},"hitCount":4,"children":[31],"positionTicks":[{"line":2,"ticks":4}]},{"id":31,"callFrame":{"functionName":"titleize","scriptId":"260","url":"file:///Users/airhorns/Code/superflected/src/index.ts","lineNumber":1,"columnNumber":1434},"hitCount":5,"positionTicks":[{"line":2,"ticks":5}]},{"id":22,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":70,"children":[25,32],"positionTicks":[{"line":250,"ticks":70}]},{"id":25,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":54,"children":[26,28],"positionTicks":[{"line":139,"ticks":54}]},{"id":26,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":343,"positionTicks":[{"line":139,"ticks":343}]},{"id":28,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":36,"children":[29],"positionTicks":[{"line":537,"ticks":36}]},{"id":29,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":43,"positionTicks":[{"line":530,"ticks":43}]},{"id":32,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":30,"positionTicks":[{"line":669,"ticks":6},{"line":663,"ticks":2},{"line":665,"ticks":4},{"line":666,"ticks":7},{"line":661,"ticks":11}]},{"id":33,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2596},"hitCount":4,"positionTicks":[{"line":2,"ticks":4}]},{"id":23,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":3,"positionTicks":[{"line":301,"ticks":3}]},{"id":24,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":208},{"id":27,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":148}],"startTime":293070542376,"endTime":293071184251,"samples":[7,9,14,15,19,19,20,18,19,21,21,19,16,18,21,19,19,19,19,21,19,19,18,22,18,19,21,21,19,19,19,22,21,16,21,19,19,19,18,18,19,19,19,21,19,16,18,21,19,18,19,21,19,19,19,21,21,19,19,19,19,21,19,21,18,19,21,21,19,18,18,21,19,19,19,19,19,23,18,19,21,19,24,19,18,21,21,21,19,21,18,20,20,20,20,20,18,21,18,19,20,21,18,18,18,26,19,21,19,19,18,19,26,16,21,19,21,19,18,19,21,19,21,19,21,19,19,21,21,18,21,19,21,21,19,19,19,21,18,21,19,19,21,19,19,19,19,19,21,18,19,19,19,21,16,20,19,21,19,21,19,19,21,27,19,19,19,19,19,21,18,19,18,21,26,20,19,19,19,18,19,19,19,21,19,19,19,19,21,21,26,16,19,18,18,16,26,17,21,18,17,18,19,19,21,21,19,18,19,18,19,19,19,16,19,19,19,18,22,21,26,17,21,19,21,18,18,21,19,19,21,18,19,19,21,24,24,24,24,24,24,24,24,19,21,21,18,18,25,21,26,21,18,21,21,21,21,21,21,21,21,19,21,19,29,21,19,21,16,21,19,21,21,31,20,19,18,18,26,21,19,19,19,18,26,21,19,19,18,20,19,21,19,19,19,19,18,21,21,19,19,19,20,23,21,19,18,19,21,19,19,19,18,26,21,19,18,19,21,21,21,19,19,19,18,19,19,19,18,19,19,19,18,19,19,19,26,21,21,21,19,19,18,21,19,19,19,22,19,18,21,19,18,18,21,19,19,19,16,19,21,19,26,32,19,21,19,19,26,16,19,19,21,21,21,19,19,19,18,21,19,17,19,19,19,21,19,19,18,21,21,19,19,18,27,19,18,19,20,21,18,21,19,19,19,18,19,18,26,19,18,19,17,19,21,18,21,18,19,18,19,21,18,20,21,19,20,21,21,19,26,19,26,19,26,19,19,18,19,22,19,19,10,19,19,18,19,20,19,19,18,19,19,21,19,21,19,19,19,19,25,19,19,21,20,19,19,21,19,19,19,20,19,19,21,16,21,19,26,27,18,19,19,21,19,19,19,19,18,19,19,21,20,18,19,19,19,21,19,21,18,19,19,19,21,21,19,19,21,18,19,21,21,21,20,19,19,19,21,21,18,19,19,19,19,19,21,26,21,19,19,19,19,19,21,26,21,21,20,19,19,19,19,19,21,26,18,21,19,18,21,19,21,21,19,19,24,24,24,24,18,19,26,19,21,16,19,19,19,21,18,19,18,21,21,19,19,21,18,19,19,16,19,19,21,21,18,21,21,19,19,19,21,18,18,21,21,19,19,19,19,19,18,18,21,18,18,17,19,19,18,21,21,19,27,19,19,19,19,21,21,19,19,18,18,19,18,21,21,21,19,21,21,19,19,19,18,18,21,21,21,19,19,19,19,19,21,19,19,19,19,21,18,19,18,18,18,18,20,31,19,18,26,21,19,19,19,19,19,18,26,21,19,19,19,20,19,18,21,19,21,21,21,19,20,19,18,21,21,17,19,19,18,20,21,19,19,19,20,16,19,19,18,22,21,19,19,19,19,18,19,18,21,19,19,19,19,19,19,18,18,21,21,21,19,19,19,19,19,19,18,18,21,17,21,21,19,19,19,21,19,19,20,21,19,19,19,19,18,18,21,19,19,19,18,21,21,19,19,19,19,19,20,21,21,21,21,19,19,19,19,19,19,19,19,20,19,21,21,21,21,19,19,20,21,18,20,18,16,21,19,19,18,10,21,19,19,18,27,19,21,21,19,21,16,19,19,19,19,19,19,19,18,21,21,21,16,19,19,19,18,21,19,20,10,21,19,19,18,19,18,18,20,21,19,19,18,18,21,19,19,18,18,18,21,29,18,21,21,19,21,19,19,19,19,19,18,10,21,19,19,18,21,21,21,19,19,19,19,19,19,18,10,19,21,19,19,20,18,19,18,27,19,21,19,19,19,19,19,19,19,18,21,18,16,19,19,19,18,10,21,21,19,19,28,21,19,19,21,19,19,19,19,10,17,19,19,19,19,19,20,19,18,19,21,17,19,18,19,20,21,19,18,21,18,19,27,19,21,21,18,18,17,21,27,19,19,18,18,21,19,19,23,16,19,18,26,19,21,19,18,16,19,18,21,21,21,21,21,21,21,19,19,19,19,29,21,21,19,19,18,21,21,21,19,19,19,19,20,21,21,19,19,18,27,21,19,19,18,27,19,18,18,21,22,19,21,19,19,19,19,19,19,18,18,17,18,19,19,19,19,19,21,19,21,19,27,19,19,19,19,19,19,18,20,24,21,21,25,19,19,19,19,19,18,21,18,21,21,21,21,21,18,21,19,19,19,29,19,21,21,21,19,21,19,19,19,19,18,19,21,21,21,18,19,21,17,21,21,18,21,21,21,18,19,19,21,18,19,19,19,21,21,19,19,18,21,19,19,20,19,21,21,18,19,21,19,16,21,20,21,21,19,27,18,19,19,17,21,18,19,19,21,18,19,19,18,19,18,18,20,19,19,18,21,18,21,18,19,21,18,19,19,21,19,20,21,18,22,19,19,21,21,19,19,20,25,19,19,16,18,19,19,19,21,20,19,19,21,18,19,19,21,21,19,19,18,19,18,19,17,20,24,24,24,24,24,20,19,19,18,19,26,19,19,20,19,21,21,21,19,18,21,19,19,17,19,26,19,18,26,19,21,21,19,18,19,21,19,19,19,10,21,19,19,19,19,20,21,19,18,19,19,21,18,19,21,19,29,20,18,18,18,19,19,19,19,19,19,19,21,22,20,19,19,19,19,19,21,21,21,21,21,21,21,20,18,18,19,19,18,19,21,19,16,17,21,21,21,21,21,27,25,21,19,19,21,21,21,21,26,26,20,18,19,18,18,21,21,19,18,20,18,28,19,19,19,19,21,18,16,19,19,19,20,18,19,21,19,20,19,16,19,18,19,18,21,19,26,19,21,19,18,21,21,19,19,21,19,19,21,19,19,10,19,21,19,19,19,19,18,16,21,21,19,18,19,19,19,21,18,18,19,18,19,20,19,21,19,19,20,17,21,19,18,21,18,21,19,21,19,18,19,20,19,21,18,21,19,29,16,21,19,21,18,19,18,19,18,21,19,10,19,19,19,21,19,18,21,18,20,19,21,19,21,18,19,21,21,20,19,21,10,21,19,19,21,19,18,10,10,20,21,19,19,21,20,19,21,26,21,19,19,18,21,29,21,20,21,18,19,21,19,19,18,19,26,18,19,19,19,16,18,19,19,19,19,19,19,19,29,21,19,18,19,21,19,18,20,18,19,19,19,18,19,18,21,21,31,21,18,20,19,19,18,18,18,19,10,21,18,19,19,21,18,21,18,21,16,21,21,18,21,19,19,19,19,19,21,19,19,18,19,19,18,27,19,19,19,18,21,10,19,19,19,19,21,19,18,26,16,21,19,22,26,16,21,21,20,20,18,19,19,16,18,19,19,21,19,21,19,19,21,19,19,19,19,19,19,18,21,21,19,22,26,18,10,19,18,19,19,19,19,18,19,19,21,21,19,19,19,19,19,19,10,18,18,19,18,19,18,21,19,19,21,18,21,21,16,19,19,18,19,16,21,21,19,21,18,19,18,19,19,16,18,19,22,18,21,19,18,19,18,19,19,21,19,19,18,20,19,18,19,19,19,19,19,18,21,24,24,24,24,24,24,24,24,24,24,19,19,19,19,19,21,18,21,19,18,18,19,19,19,18,18,21,18,26,26,21,26,26,19,26,19,19,20,21,18,21,19,21,19,18,21,21,16,19,19,19,19,19,19,21,21,18,19,21,19,19,21,18,19,18,21,19,19,27,19,27,19,18,19,21,19,20,19,21,19,18,19,20,21,18,19,20,16,19,21,18,19,26,19,26,19,19,21,19,32,19,21,26,19,18,10,18,19,21,19,21,19,18,19,18,21,21,21,19,18,19,18,31,21,18,21,18,19,18,21,19,18,21,19,18,19,19,18,21,19,21,19,21,21,19,10,19,19,18,21,19,18,21,19,18,19,18,21,18,21,19,21,19,18,19,18,20,19,19,21,19,18,21,19,21,19,19,18,21,19,21,18,21,10,19,18,19,16,21,19,16,20,19,19,21,27,19,21,19,21,26,19,21,19,21,20,20,20,19,19,19,21,19,21,18,18,19,21,21,19,21,18,17,19,19,18,21,18,22,20,21,20,17,18,20,19,21,18,27,18,19,18,19,19,18,16,19,19,21,19,18,19,19,19,19,19,19,19,19,19,21,21,21,21,21,20,18,18,19,19,21,21,21,21,19,16,18,19,18,19,19,18,20,21,18,18,16,21,21,19,19,19,19,18,16,16,16,19,18,20,29,21,19,19,18,18,18,21,21,19,19,18,19,18,18,10,18,19,21,18,18,19,21,19,27,19,19,18,18,21,18,19,19,26,19,18,19,16,18,19,21,19,19,21,27,19,18,19,19,19,21,21,19,19,21,17,19,21,19,19,19,21,26,18,16,21,21,19,19,21,21,18,19,26,22,19,19,21,21,19,27,18,24,24,24,24,21,21,18,19,19,20,19,19,19,21,19,27,18,19,21,21,19,19,19,19,21,19,19,19,21,20,26,18,18,19,21,29,18,19,19,21,18,10,26,19,19,19,19,21,21,26,26,19,19,19,18,21,10,18,19,21,18,18,19,18,19,18,18,19,19,21,21,18,25,26,21,19,19,19,19,19,21,21,20,19,19,19,19,21,21,18,19,19,19,18,18,19,19,19,21,19,19,19,17,18,19,19,19,21,20,19,19,19,19,19,16,18,21,21,21,21,19,21,21,33,18,18,18,19,19,24,21,26,18,20,20,20,20,29,20,10,21,18,19,19,18,20,10,21,27,21,19,18,19,21,19,21,18,21,18,19,21,18,19,19,21,21,10,19,17,21,20,19,19,19,19,19,19,21,21,27,21,21,22,20,18,19,21,18,20,20,18,18,19,19,19,19,16,19,19,19,21,21,21,21,21,21,21,19,19,21,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,21,18,19,21,18,19,19,21,21,18,19,19,26,18,19,21,20,19,21,21,18,19,19,19,21,21,21,19,18,19,19,19,27,19,21,26,18,19,19,21,20,21,21,21,21,19,19,21,26,18,19,19,26,18,16,21,20,19,19,26,19,18,18,19,19,19,20,18,19,21,26,18,19,21,19,19,19,21,19,19,19,19,21,21,19,21,21,19,18,18,18,19,19,19,21,21,21,21,18,21,18,18,18,18,18,19,19,18,20,19,19,19,19,20,20,19,19,19,19,19,19,19,18,19,26,20,19,26,21,26,19,19,19,19,19,19,19,19,19,21,19,19,19,19,19,19,18,19,21,20,27,21,19,19,21,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,21,21,21,21,20,18,19,18,19,19,19,19,19,21,16,18,20,20,18,24,24,24,19,21,16,18,21,20,19,19,19,18,19,18,26,19,19,19,19,19,19,19,19,19,17,19,19,19,21,21,26,18,18,26,21,21,18,18,19,19,19,19,19,19,19,19,19,21,21,21,19,19,19,19,19,17,21,21,21,21,16,21,19,19,19,19,19,19,19,19,21,18,19,18,19,18,19,19,19,19,19,19,21,19,20,19,19,18,21,21,21,21,19,19,19,19,19,18,21,21,19,19,19,19,19,19,18,18,19,19,19,19,19,17,18,21,19,19,19,19,21,19,21,22,19,19,19,19,21,21,19,19,19,19,18,18,18,18,18,21,21,18,18,19,18,18,21,19,19,19,19,19,19,19,19,19,19,19,19,21,21,19,19,19,19,18,18,21,21,21,19,19,19,19,18,18,19,21,21,21,21,19,19,21,21,19,19,19,19,17,18,19,19,19,19,19,19,21,26,21,19,19,18,20,21,20,18,16,21,19,19,19,19,19,18,18,21,21,21,19,21,18,18,20,18,21,10,21,21,21,17,19,19,16,19,19,19,32,19,19,18,19,19,25,18,19,19,19,19,21,21,21,21,19,19,18,17,21,10,18,18,21,21,21,19,19,19,19,19,19,19,18,19,19,19,19,19,19,19,19,19,20,19,25,18,21,19,19,21,21,21,19,19,19,19,18,19,19,19,21,19,18,18,18,21,19,19,19,19,19,19,19,19,19,24,24,24,21,18,19,21,18,21,21,19,18,19,16,16,19,19,19,19,21,21,19,21,21,21,21,18,18,10,21,27,19,18,20,21,19,21,21,19,18,21,18,19,21,18,21,21,19,21,18,19,19,19,21,18,19,19,19,21,19,19,19,19,19,18,19,19,19,19,19,19,19,18,19,19,19,18,18,18,20,18,26,21,19,19,19,19,19,19,18,18,19,18,26,18,19,18,21,18,21,19,21,21,17,19,19,19,20,18,20,21,22,21,21,21,19,19,18,18,19,19,18,20,21,26,26,21,21,21,21,21,19,21,19,19,10,18,21,18,21,16,19,19,19,19,18,26,21,19,19,26,21,27,21,21,21,19,19,18,19,21,19,19,27,20,19,19,26,21,19,21,10,21,19,19,18,21,21,19,19,21,17,19,18,21,19,18,21,19,19,18,21,19,19,19,21,21,21,21,19,20,21,21,21,19,19,21,19,18,18,19,19,24,19,18,19,18,21,19,19,21,19,17,19,22,19,19,19,22,16,19,18,19,21,19,19,19,17,19,19,16,21,18,18,21,19,19,18,21,19,19,18,27,21,19,19,18,21,26,21,21,27,19,19,19,19,21,26,19,19,19,18,27,21,19,21,19,18,26,21,21,16,19,19,19,18,22,21,19,18,26,17,21,19,18,20,21,21,19,21,19,18,21,21,19,19,19,18,18,18,21,19,16,24,24,24,24,18,19,20,18,19,19,19,19,18,18,18,21,27,17,19,19,19,20,21,21,19,19,20,17,19,19,19,19,19,20,26,19,19,21,18,21,21,19,19,26,26,19,19,18,21,16,18,19,19,18,21,19,19,26,19,18,21,19,18,19,19,21,19,19,19,18,21,10,19,18,21,19,18,21,19,21,21,19,18,19,17,19,19,26,19,18,18,19,18,18,19,20,19,18,21,19,21,18,18,21,19,18,19,18,21,21,19,18,21,21,16,19,20,21,16,19,19,19,19,19,19,21,19,18,21,19,18,19,19,18,21,19,20,21,19,19,21,19,19,18,21,21,21,19,18,21,19,19,18,26,21,19,25,19,18,30,19,19,19,19,18,21,21,19,19,18,21,19,18,26,27,18,18,21,21,19,19,19,18,18,21,19,18,18,21,21,19,19,20,21,21,19,19,25,19,19,21,21,21,21,21,18,19,26,19,19,19,18,21,21,19,19,19,19,19,18,21,19,19,18,10,19,18,19,19,19,21,19,19,18,21,19,19,19,21,18,21,18,21,19,21,18,21,19,19,19,18,21,27,19,16,21,19,19,18,18,21,19,19,18,21,18,20,17,19,19,19,19,18,21,19,19,19,19,21,21,19,19,20,19,18,21,21,19,21,19,19,20,19,19,18,21,19,18,19,19,18,19,20,21,19,19,21,18,21,24,24,24,21,19,19,19,19,21,19,18,19,19,19,19,19,19,18,19,16,20,28,19,21,19,19,18,21,16,19,26,21,21,18,19,22,21,21,19,18,21,18,21,19,18,19,18,19,32,19,21,19,21,19,19,26,18,21,19,21,18,19,19,21,10,19,19,21,19,16,21,21,18,19,18,18,18,19,20,19,19,19,17,19,17,19,21,21,21,21,19,21,21,21,21,21,18,18,21,21,21,21,10,18,19,19,18,19,19,19,19,21,19,19,18,19,19,21,18,10,20,19,19,21,19,21,21,21,18,21,10,21,18,18,19,18,18,21,18,18,20,10,18,29,21,19,19,21,19,18,19,19,18,21,21,19,19,16,19,18,19,19,19,19,19,19,19,19,19,19,19,19,18,18,10,10,21,19,19,19,19,19,18,20,26,18,18,18,18,16,10,21,19,19,19,19,18,21,19,19,19,18,21,21,21,19,19,18,18,18,19,20,18,19,19,19,18,21,19,20,20,21,19,19,18,19,19,18,26,19,21,19,19,18,19,21,18,19,21,18,19,21,19,21,26,19,19,21,19,21,18,18,19,19,21,21,19,17,19,18,21,19,21,21,21,27,26,19,18,18,19,18,19,18,21,19,16,16,20,18,21,29,21,21,19,16,19,18,18,19,19,19,18,18,18,20,19,19,19,18,19,18,18,19,19,19,19,19,21,19,21,18,19,19,19,21,18,19,19,21,18,19,21,20,18,18,24,24,24,24,24,24,27,21,19,21,21,18,18,18,19,19,21,18,19,18,18,21,18,18,19,10,22,19,19,21,20,27,21,21,27,19,21,19,21,21,21,19,19,18,18,18,21,19,18,20,24,18,21,21,21,19,19,18,18,21,18,19,18,18,27,20,18,26,21,19,20,21,18,19,18,18,21,21,21,19,18,21,21,19,18,18,20,20,19,21,19,21,19,21,19,19,19,10,19,19,21,20,19,19,21,19,18,24,21,21,18,19,19,16,26,26,18,18,18,18,19,19,21,21,21,19,19,19,19,19,19,19,19,19,19,19,19,19,19,21,19,19,19,19,19,19,18,20,18,16,21,19,19,19,19,18,25,21,19,18,21,19,19,18,19,22,21,26,21,21,21,21,21,19,19,18,18,21,19,19,18,26,16,16,16,16,21,21,19,26,26,21,19,19,19,19,19,18,21,20,10,18,19,19,19,10,26,21,21,19,18,18,21,19,19,19,18,21,21,19,19,18,18,21,19,19,19,26,21,19,20,21,19,19,20,21,21,19,26,21,19,19,19,18,19,21,21,19,18,21,21,19,19,19,19,18,21,21,21,21,19,19,18,18,21,21,21,19,19,20,21,21,19,26,19,19,19,18,21,18,18,21,19,21,21,19,21,19,19,26,21,18,19,21,19,18,19,21,21,21,19,18,18,21,19,20,21,19,16,21,19,18,21,21,18,10,19,19,21,18,27,19,18,20,21,19,18,19,19,10,21,19,26,16,19,21,19,19,18,21,18,19,18,17,19,18,21,21,19,21,21,32,19,16,18,26,19,19,18,26,19,19,19,21,21,19,19,18,19,19,26,24,24,24,24,24,24,19,19,21,16,18,19,19,19,19,21,18,18,18,18,19,21,19,21,21,20,19,21,21,21,22,20,18,16,22,10,28,10,16,27,21,18,18,18,19,19,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,24,19,19,19,19,21,18,20,18,21,19,21,19,19,19,21,21,21,21,21,18,18,20,21,21,28,18,18,18,19,18,18,32,18,26,21,21,21,19,21,17,21,19,21,19,19,19,19,21,19,19,19,19,19,18,19,19,19,19,21,21,21,21,21,21,21,19,18,21,19,20,19,21,19,21,19,21,18,19,21,18,19,20,19,18,19,21,19,19,21,19,21,28,19,19,21,18,19,19,21,10,19,19,21,18,18,19,19,21,28,19,19,20,18,18,19,19,19,19,19,21,18,19,19,10,19,19,21,21,21,19,19,19,19,21,18,19,19,16,21,21,29,19,19,19,19,21,27,19,21,22,19,19,19,19,21,16,18,18,18,19,19,19,21,18,19,19,19,19,21,21,25,16,16,20,19,19,16,21,21,18,18,18,18,19,19,21,27,19,16,19,21,21,29,18,20,18,17,19,19,19,19,19,21,21,16,19,19,19,19,19,21,21,21,10,10,29,20,18,19,21,21,21,16,18,19,19,19,21,16,10,20,18,19,19,19,19,21,21,21,18,19,19,19,19,21,21,21,28,18,18,25,21,16,21,18,18,18,19,19,21,19,19,21,19,21,28,26,19,19,19,19,19,19,21,19,21,21,21,18,19,19,18,19,19,21,19,21,19,18,21,19,21,20,19,19,21,19,19,19,21,19,19,19,19,19,19,19,19,18,18,20,18,18,20,21,20,18,19,19,19,18,18,18,21,21,16,21,18,29,26,21,19,19,20,21,19,19,19,19,19,21,26,16,18,21,19,21,20,21,19,21,21,21,19,19,19,19,19,19,18,21,19,19,19,19,18,18,21,19,19,19,18,19,19,19,18,19,19,19,21,21,18,16,21,25,21,19,21,21,21,17,19,19,19,19,21,19,21,19,21,19,19,19,19,19,24,21,19,19,18,19,19,19,19,19,19,18,19,18,26,21,21,19,19,19,18,25,21,21,19,19,21,19,21,10,21,21,21,21,21,21,19,18,18,18,18,19,21,19,19,18,19,19,19,19,19,21,21,21,19,17,19,19,21,21,19,21,19,19,19,21,19,20,21,19,19,21,19,21,19,17,19,21,21,18,19,21,20,21,19,19,19,18,19,19,18,19,19,19,19,19,19,21,21,19,19,19,21,21,19,19,21,21,21,18,20,19,19,19,19,19,19,21,27,22,21,21,18,19,21,19,19,21,19,19,18,18,19,19,21,19,19,19,19,21,19,19,19,19,21,21,19,21,17,26,19,19,21,21,21,21,21,21,21,21,27,21,18,19,19,19,19,21,19,19,19,19,19,18,19,19,19,19,19,19,19,18,18,18,19,24,24,24,24,24,19,19,19,21,25,21,21,21,21,21,21,17,18,19,19,19,19,19,21,21,26,21,21,10,25,18,20,20,19,19,21,21,21,21,20,18,20,19,18,19,19,19,19,21,18,19,19,19,19,19,19,19,19,19,19,21,18,18,20,19,18,19,21,21,21,21,21,21,33,21,21,21,21,10,21,25,19,19,19,19,19,19,19,19,21,19,18,19,19,19,18,19,18,19,21,21,21,29,19,16,26,19,19,21,21,21,19,19,19,19,21,21,19,19,21,19,19,19,19,19,19,21,19,18,19,19,19,19,21,10,25,21,21,21,10,18,19,19,19,19,21,21,28,19,19,19,19,19,19,19,21,21,18,18,21,20,21,32,19,19,16,21,21,21,21,21,18,19,19,19,19,19,19,19,19,19,21,21,16,21,21,21,21,21,21,19,19,19,19,19,19,19,19,19,19,19,19,19,19,21,21,21,21,28,19,20,19,19,19,19,19,19,18,10,21,21,19,21,21,19,19,19,18,19,19,18,21,21,18,18,21,19,19,18,21,18,25,19,19,18,21,21,19,10,26,19,19,19,19,19,19,18,18,18,21,19,19,19,19,19,19,19,19,19,19,19,19,21,19,21,19,19,21,21,21,21,19,19,19,21,19,19,21,21,19,19,19,20,18,18,18,18,18,18,19,18,16,21,27,21,18,18,21,18,18,19,19,18,18,27,21,21,16,21,17,21,21,21,21,21,21,20,20,20,20,18,18,25,21,19,21,19,21,21,19,19,19,19,19,19,19,21,21,21,19,21,21,17,19,21,19,10,20,19,18,18,10,20,19,18,20,26,21,27,18,18,19,19,19,19,18,18,20,18,20,18,21,21,20,20,21,19,19,19,16,21,19,21,19,18,21,18,21,21,19,19,19,19,19,19,18,19,16,19,21,19,21,19,22,19,21,19,21,19,21,19,21,18,18,19,21,19,19,18,21,19,21,19,21,19,19,21,26,19,21,18,19,19,21,18,19,21,20,26,21,21,19,18,19,19,10,21,19,19,18,19,21,26,19,21,18,19,19,26,19,27,19,21,20,19,21,19,21,19,21,18,19,19,21,19,19,21,18,19,21,21,19,16,21,19,17,18,19,16,18,21,21,18,19,17,19,19,18,19,21,21,21,19,19,21,21,18,27,21,20,21,19,19,19,18,19,16,19,19,19,27,19,19,19,18,19,21,19,21,19,26,18,21,18,19,19,21,19,21,19,19,19,21,18,19,21,19,19,21,19,19,19,19,27,19,19,19,21,24,24,24,24,24,24,16,19,21,19,19,30,18,19,21,18,19,21,19,19,19,18,19,21,19,19,21,19,19,21,19,19,19,21,19,19,21,18,18,18,19,21,18,18,19,19,19,21,19,21,18,19,19,19,21,20,19,19,21,21,21,18,19,19,19,19,21,18,19,19,19,21,19,19,21,19,19,21,18,18,19,19,19,19,19,18,19,19,21,18,18,19,19,18,20,19,19,19,19,21,21,21,20,18,18,19,19,19,19,19,21,18,19,21,21,18,18,19,19,21,19,21,19,22,19,19,18,19,21,21,19,19,21,18,19,19,19,21,19,21,19,19,21,18,27,19,17,18,18,21,21,32,18,18,21,18,19,19,19,20,21,19,19,18,19,21,19,19,21,18,19,19,20,19,19,19,19,19,19,19,19,19,19,21,19,21,18,16,18,19,26,18,21,26,19,18,19,19,19,19,19,21,21,21,19,18,19,21,21,21,21,18,19,19,19,17,19,21,21,21,17,19,19,19,19,21,20,18,21,19,21,16,21,19,18,19,19,21,21,21,18,20,18,19,19,20,21,19,19,19,19,18,19,21,18,19,21,20,19,26,18,19,19,19,26,19,10,21,20,19,21,19,26,20,19,19,18,21,19,21,18,19,21,19,19,19,19,19,18,20,19,21,16,19,25,19,18,21,19,19,19,19,19,19,19,18,21,21,21,21,19,18,21,21,18,19,19,18,21,26,19,19,19,19,26,19,18,19,19,19,19,18,21,21,19,19,21,19,19,16,19,18,21,21,19,18,21,19,19,19,18,21,19,19,18,18,19,19,18,21,21,19,18,21,19,19,19,18,18,19,18,21,19,19,21,19,18,21,19,18,21,19,19,21,19,19,26,21,19,18,19,19,18,21,21,19,19,19,21,26,27,18,19,19,21,26,18,19,19,21,19,18,19,19,21,19,19,21,21,20,21,26,21,21,19,19,21,21,26,26,26,24,24,24,24,24,21,19,18,18,19,19,19,19,19,16,21,21,27,21,21,21,18,20,26,21,18,20,19,18,19,19,19,19,19,19,21,19,19,21,18,17,19,19,18,21,18,19,21,18,19,18,19,21,21,26,18,26,18,21,19,19,17,19,19,19,19,18,19,21,27,21,16,22,26,21,18,19,21,19,19,21,21,19,21,19,19,19,19,16,19,16,19,19,18,26,21,18,26,21,19,19,19,19,19,19,19,19,19,19,19,19,21,19,19,19,19,18,18,19,19,21,19,18,20,19,21,19,19,18,18,21,16,19,19,19,19,19,21,19,19,19,19,19,21,19,21,19,17,18,18,19,21,21,19,21,21,19,21,21,21,21,21,16,19,27,21,21,22,18,18,18,19,19,19,19,21,19,21,21,18,19,19,19,19,16,21,27,26,19,21,21,18,19,19,19,21,25,21,19,19,21,21,21,26,21,19,18,19,19,19,19,19,19,19,19,21,18,19,18,21,26,19,17,18,19,19,21,18,18,18,18,21,21,21,21,21,19,19,19,19,19,21,18,18,21,21,21,18,21,21,18,19,26,26,19,18,19,18,19,19,19,19,19,19,18,18,19,19,19,19,19,18,19,18,18,18,18,18,18,19,19,27,24,18,19,19,19,25,21,21,19,19,19,19,18,26,21,19,19,18,18,21,19,19,19,18,21,25,19,21,18,19,26,19,18,18,19,18,18,18,19,19,19,19,19,19,18,18,18,21,18,19,19,19,19,19,19,19,18,19,19,24,24,24,24,21,18,19,19,19,19,19,19,19,21,18,18,18,19,19,21,21,19,19,21,18,19,19,19,19,19,19,19,19,19,19,18,16,21,19,21,19,19,19,19,19,19,18,26,19,17,21,21,19,18,26,19,19,19,18,19,19,18,18,19,19,26,19,19,21,19,19,21,21,19,19,20,21,19,21,19,18,25,21,19,19,18,18,21,19,19,18,18,18,21,19,21,21,21,21,19,18,19,19,18,21,19,19,19,18,10,18,21,16,19,19,18,21,19,19,18,20,21,21,19,18,21,21,21,21,18,18,19,19,19,19,19,19,19,19,17,21,16,16,16,16,21,18,18,19,21,21,21,26,18,18,27,18,18,19,19,16,21,17,19,19,21,21,17,26,18,19,18,21,18,19,19,21,21,19,28,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,27,21,19,19,19,19,18,20,21,18,21,18,18,20,18,16,19,19,18,18,21,21,21,21,27,21,19,19,19,21,19,19,19,19,21,19,19,21,19,21,18,19,18,21,26,20,19,18,18,21,25,21,18,21,21,21,19,18,19,19,19,19,21,19,19,19,18,21,21,26,21,19,19,19,18,18,21,21,19,16,19,18,19,21,20,18,18,21,20,21,17,19,19,18,21,21,21,19,19,19,19,19,18,18,20,19,18,18,21,26,10,21,19,19,19,19,19,19,19,18,21,16,24,24,24,24,19,18,18,21,18,10,21,19,19,19,19,19,19,19,19,19,19,18,18,19,18,17,19,26,26,19,21,19,19,18,19,19,19,19,19,19,19,20,19,19,19,18,18,20,26,18,18,21,21,19,19,18,19,19,19,19,18,21,22,21,21,19,19,21,19,19,18,19,19,19,19,19,19,19,19,19,21,19,18,18,21,19,18,21,16,26,19,21,21,21,26,21,19,19,18,18,21,19,19,19,19,18,26,19,18,18,20,21,19,19,19,19,18,18,21,19,21,18,27,21,19,21,19,20,21,19,19,18,21,21,20,32,19,19,18,18,18,19,19,19,19,18,21,21,19,18,18,19,19,18,21,19,18,21,19,18,21,19,18,21,21,19,26,19,21,18,26,19,19,18,18,18,26,26,26,21,21,21,26,21,21,18,18,18,18,21,21,21,19,21,26,21,19,19,18,18,21,19,19,18,18,19,21,21,19,17,18,22,19,10,18,19,18,21,20,19,19,19,19,19,19,19,19,19,19,21,20,19,19,19,19,19,19,19,19,19,19,19,21,20,19,19,19,19,19,19,21,19,19,21,10,26,27,21,10,21,18,18,18,17,19,19,18,18,18,18,18,18,18,18,20,19,19,18,19,21,21,21,21,21,18,18,19,19,19,18,18,10,21,21,18,19,19,21,18,18,19,21,21,21,21,18,18,18,19,19,19,20,18,20,19,19,19,19,19,10,26,18,18,18,20,20,26,20,21,19,18,18,26,21,26,21,17,19,19,19,19,21,26,21,19,19,19,18,18,21,20,18,21,21,19,19,19,19,18,19,21,21,19,19,19,19,26,21,19,19,18,18,21,21,19,18,18,21,19,19,19,21,26,18,19,18,19,19,18,19,19,18,21,19,18,16,19,18,21,24,24,24,24,19,19,21,21,21,19,19,32,18,20,21,19,16,19,19,18,21,19,18,20,21,19,18,19,21,21,16,19,19,19,18,26,21,21,19,19,19,19,19,21,19,21,18,19,19,21,19,26,19,16,18,26,21,21,21,19,18,21,21,19,18,21,19,18,19,21,19,18,21,21,19,18,21,21,19,19,16,19,19,21,21,32,21,19,21,19,19,19,19,19,19,19,19,21,21,19,19,21,21,26,16,21,19,18,20,20,19,19,19,19,18,19,19,19,19,19,19,19,19,20,19,18,18,26,19,31,21,18,19,19,18,19,18,18,18,26,18,21,21,17,21,21,19,19,25,19,19,21,19,18,19,21,21,19,19,18,21,19,19,19,16,21,19,18,21,19,19,21,21,19,29,19,19,19,18,21,18,21,19,19,19,21,19,18,18,21,21,19,18,18,21,19,19,19,19,19,19,20,19,19,18,26,21,19,20,19,19,18,19,19,19,21,21,26,18,18,18,18,19,17,19,21,21,21,21,19,20,21,21,19,19,19,18,21,19,18,16,19,19,18,21,21,19,19,10,18,19,21,17,19,19,18,18,20,21,19,19,18,21,21,19,18,21,18,21,19,19,19,18,21,21,21,19,27,18,18,21,20,19,19,19,18,21,19,19,18,10,21,19,19,19,18,21,19,19,19,26,21,19,19,18,19,19,24,24,24,24,24,24,10,19,19,19,19,21,26,21,18,28,18,18,29,21,21,19,21,17,21,21,19,19,18,26,20,18,19,19,19,19,19,18,20,21,21,21,19,19,19,18,19,21,21,21,19,19,19,26,21,21,19,19,10,26,18,21,18,18,19,18,18,19,21,10,19,19,19,19,19,18,20,26,21,21,27,21,19,19,19,19,19,19,19,19,16,19,19,19,19,19,21,18,20,26,21,21,19,19,16,18,19,19,18,19,19,19,21,16,19,19,27,21,18,19,18,26,20,21,27,21,21,18,21,19,19,19,19,19,18,27,21,21,19,21,19,19,19,18,21,21,20,21,18,21,21,20,21,21,19,19,18,18,18,18,21,21,21,19,19,19,19,18,19,21,19,18,19,21,18,19,20,18,25,19,19,21,16,21,21,21,18,18,26,21,21,21,18,18,18,18,18,18,21,21,17,19,19,18,18,20,21,21,21,19,19,19,19,16,21,21,19,21,21,21,21,19,21,21,21,21,21,19,19,19,17,18,19,19,21,21,18,10,10,16,17,21,18,21,26,19,21,18,19,19,18,18,18,18,26,19,19,19,21,19,19,19,19,19,19,19,19,19,19,19,19,21,19,21,21,21,21,18,18,21,16,20,18,20,21,21,19,19,19,19,18,18,18,28,18,21,19,18,18,18,16,20,18,19,18,20,21,21,18,28,21,21,21,21,19,19,18,20,18,18,19,19,19,19,21,26,19,17,21,21,19,21,19,19,18,21,18,19,21,18,21,19,19,21,24,19,19,18,21,21,19,18,18,21,21,19,19,18,21,21,19,19,18,21,21,20,19,21,21,19,21,19,19,18,21,19,18,27,19,19,19,19,21,21,19,19,18,21,19,19,19,18,19,19,19,18,21,19,18,18,21,19,19,18,21,19,19,21,19,19,19,18,21,19,18,21,19,18,21,19,19,21,19,19,21,21,21,21,18,19,16,21,26,19,19,19,21,19,19,18,19,21,21,19,19,21,18,19,19,19,18,19,19,21,21,19,19,21,21,19,18,19,16,19,18,19,19,21,21,19,19,21,18,17,19,21,17,19,19,18,19,21,19,19,10,19,19,21,19,19,20,19,19,19,21,19,17,21,19,19,18,19,19,19,21,10,19,19,18,19,21,16,18,19,21,18,19,19,21,24,24,24,24,19,19,21,19,21,19,19,18,19,19,21,19,19,21,18,21,19,21,18,19,19,19,19,21,21,20,21,19,20,21,21,21,19,18,18,21,19,19,19,19,18,16,21,19,19,18,21,21,19,19,18,21,21,19,18,21,21,21,19,19,21,21,19,19,18,21,21,19,21,19,19,26,19,19,18,18,20,18,19,19,19,19,19,19,19,21,21,19,19,19,19,19,19,19,18,20,26,18,16,21,21,21,19,19,19,19,19,19,19,19,19,19,19,18,17,21,29,18,19,20,18,21,17,21,21,21,19,21,17,20,19,18,21,21,21,21,32,18,19,19,21,21,21,21,19,21,19,17,20,18,19,18,18,21,21,21,19,21,19,21,19,19,19,19,19,19,19,18,18,19,18,18,16,18,10,21,21,21,19,19,19,19,19,19,19,19,19,18,18,20,26,20,20,18,18,21,21,21,19,19,19,19,21,19,19,19,19,18,18,20,19,26,19,19,21,18,19,21,21,18,21,19,21,26,10,26,18,10,21,19,18,19,17,19,18,21,18,18,19,19,19,21,26,21,21,26,21,18,26,18,18,18,18,19,19,19,21,21,18,19,21,19,21,19,25,19,19,21,18,19,21,19,21,18,19,26,18,19,21,19,20,19,21,18,19,19,19,18,20,19,21,19,16,19,21,19,21,27,18,19,18,19,21,19,17,18,19,10,19,21,19,26,19,21,19,27,18,21,18,21,16,19,21,21,21,19,18,21,19,18,21,21,19,18,19,19,19,26,19,18,21,19,21,19,18,21,19,19,27,19,18,17,19,21,19,19,21,19,21,18,19,21,18,19,19,18,19,21,18,19,19,19,27,19,18,18,19,27,19,20,19,18,19,19,19,19,19,19,19,18,18,26,21,20,21,21,19,19,18,17,19,20,18,18,18,19,19,18,19,19,19,19,19,19,19,18,18,18,20,18,18,16,26,19,18,24,24,24,18,19,19,19,19,19,19,21,19,19,19,19,19,19,18,18,19,18,18,21,18,27,21,19,18,19,19,18,16,27,21,16,19,19,18,20,18,21,19,19,19,19,18,26,21,21,21,21,19,19,20,18,16,19,19,19,19,18,18,21,27,19,19,19,20,21,19,19,26,19,19,19,19,19,19,19,17,18,19,18,22,22,21,21,26,21,21,19,19,18,18,22,21,19,19,19,18,18,18,21,19,18,21,10,21,19,19,19,19,18,18,26,21,19,21,21,21,16,21,21,17,19,19,19,19,19,18,21,19,18,18,19,18,21,19,19,21,19,19,19,21,20,18,21,19,19,19,19,19,16,21,19,19,19,18,21,16,21,19,20,21,18,21,21,21,19,19,19,21,18,21,21,22,21,18,18,18,10,21,19,19,19,19,18,20,21,21,20,26,19,19,19,18,19,19,21,19,27,21,16,20,21,21,26,21,19,19,18,21,19,19,18,18,26,21,19,19,21,21,21,19,18,19,19,19,19,19,18,21,19,19,19,18,20,20,20,10,21,21,18,20,18,26,21,19,19,19,19,19,19,19,19,18,18,21,26,26,19,21,19,19,19,19,19,18,20,18,20,16,21,19,16,19,19,19,18,19,18,27,21,19,19,19,18,21,17,20,21,21,19,21,21,18,29,21,19,19,26,19,19,19,18,21,21,21,21,25,21,19,18,21,19,18,20,24,24,24,19,18,10,21,18,21,17,21,19,19,18,19,21,19,19,20,21,21,20,19,19,19,21,21,19,19,19,18,21,21,19,19,19,19,18,16,19,19,18,26,19,19,26,26,21,19,20,20,21,18,19,19,26,19,19,18,21,19,19,18,18,19,19,19,19,18,19,19,19,21,21,19,18,18,21,19,19,18,21,19,21,19,19,19,21,19,19,26,19,19,19,19,19,18,21,19,25,21,19,19,19,19,26,21,32,21,21,19,19,19,21,21,26,22,18,19,18,19,19,19,19,19,19,21,21,27,21,21,19,19,19,19,18,19,20,18,19,21,19,19,19,19,19,19,19,19,18,18,18,20,27,21,19,19,19,19,19,19,19,18,20,21,19,19,19,19,19,19,19,19,19,19,18,20,19,18,18,26,21,18,19,19,19,18,19,18,27,21,21,16,21,19,19,19,21,19,21,21,32,20,16,21,21,21,19,19,21,21,16,19,19,19,19,19,19,19,18,18,18,21,21,21,21,19,19,19,18,18,20,20,27,21,18,20,21,19,19,19,19,19,19,20,28,21,16,19,19,19,19,18,18,18,18,10,21,21,19,19,19,19,19,18,18,19,19,19,19,19,18,18,19,18,26,21,21,21,19,19,19,19,19,19,18,20,20,21,21,21,21,21,21,21,20,18,20,18,19,19,19,19,19,19,19,21,26,21,21,26,18,29,21,19,21,19,21,19,19,19,19,19,19,19,19,19,19,18,18,19,30,21,18,18,19,19,19,18,18,22,21,21,21,16,19,19,19,19,19,19,18,18,18,18,18,21,19,19,16,19,19,18,18,26,21,19,19,19,18,20,18,19,19,19,19,18,21,19,19,19,19,18,10,21,27,21,21,19,19,18,18,26,21,21,19,19,18,20,19,19,19,18,20,21,21,19,19,18,18,21,17,19,19,18,21,18,19,19,19,18,21,21,19,18,21,20,21,19,19,19,19,19,18,21,19,19,18,21,19,19,19,19,18,21,21,21,19,19,18,18,21,19,18,21,21,19,19,19,18,21,19,19,18,18,21,19,18,21,21,21,19,19,21,21,21,19,19,19,19,27,19,19,26,19,19,19,19,19,19,18,21,21,19,19,19,19,18,18,24,24,24,21,21,18,19,19,19,18,21,18,19,19,19,21,19,19,19,18,27,19,19,19,18,16,19,21,21,19,18,18,21,21,19,19,19,18,20,19,21,21,19,21,19,19,20,18,19,21,18,19,27,18,19,19,21,19,19,21,18,19,16,18,18,21,19,21,20,18,21,19,19,18,19,19,22,18,19,19,21,20,18,19,19,27,18,19,21,20,18,19,19,19,21,21,19,19,21,21,20,19,21,19,19,21,18,19,19,19,21,21,19,19,21,21,27,21,19,21,21,18,19,19,19,21,18,18,19,19,21,18,19,19,19,21,21,18,19,19,21,18,19,19,19,17,21,26,18,21,18,19,19,19,27,18,19,19,18,18,19,19,21,18,19,26,18,19,19,19,19,16,18,21,18,19,21,20,19,19,29,19,19,19,21,18,18,19,19,19,21,18,19,19,21,26,16,18,19,19,19,19,19,19,21,19,19,21,22,16,18,19,19,19,19,18,21,27,18,19,19,19,19,19,21,19,16,19,19,19,19,19,19,20,21,18,18,19,19,19,19,19,19,21,19,26,26,20,19,19,21,19,17,19,19,19,19,17,17,19,19,16,19,19,21,21,21,18,19,27,21,19,19,19,21,21,27,10,20,18,21,21,19,18,19,21,19,21,21,19,21,18,18,18,18,19,20,19,18,18,18,21,16,19,18,19,26,19,19,21,27,19,19,21,19,19,19,19,21,21,10,21,21,21,21,18,19,21,26,19,19,21,19,19,19,18,21,21,19,19,16,18,18,19,18,19,20,27,21,26,21,19,19,19,19,18,18,21,21,19,18,21,19,19,21,21,19,19,18,19,19,21,21,19,19,26,19,24,24,24,24,24,21,19,21,18,18,16,16,16,16,16,16,19,19,19,19,20,19,26,21,21,26,19,19,21,19,19,21,21,19,18,18,20,16,21,21,21,19,19,19,19,18,18,25,21,21,18,21,19,19,18,21,16,19,19,19,18,27,19,19,19,19,19,18,20,21,21,19,21,19,19,19,18,27,21,19,19,19,20,10,21,19,19,19,18,17,18,19,19,18,18,20,18,21,21,19,19,19,19,18,16,21,19,19,19,19,20,19,19,18,19,21,21,20,19,19,18,32,21,21,19,19,19,19,18,20,21,21,19,21,18,21,21,18,19,19,19,18,18,21,21,22,21,19,19,19,18,18,19,19,19,21,27,18,19,19,19,19,19,19,19,19,21,18,19,21,21,21,18,18,26,21,21,19,19,19,19,19,21,18,18,18,10,22,18,21,19,21,19,18,25,21,19,19,21,18,21,19,19,19,18,20,16,19,19,19,18,10,21,21,19,19,19,19,19,18,21,19,21,19,19,19,19,18,21,16,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,21,21,19,19,19,19,19,19,19,18,17,21,21,16,19,19,20,21,20,18,21,19,19,19,19,18,29,19,19,21,19,21,20,18,19,19,18,18,19,19,16,21,21,26,16,21,26,18,18,20,19,18,21,19,21,21,19,19,33,21,19,21,19,19,18,19,18,20,26,21,21,19,19,19,21,19,19,19,19,19,18,21,26,19,19,19,19,19,18,19,20,21,19,21,18,18,18,20,20,21,19,21,21,21,21,21,19,19,19,19,20,19,19,19,20,19,19,19,19,18,21,10,20,19,19,19,19,21,25,20,19,19,19,21,21,18,18,19,19,19,22,21,19,19,19,19,21,18,19,19,20,19,19,18,19,19,18,21,19,21,18,18,18,18,19,19,19,19,21,19,19,21,20,19,19,18,18,18,19,18,19,19,18,19,19,19,21,21,18,18,21,18,21,18,18,28,26,18,19,19,18,19,19,19,19,19,20,19,19,21,19,21,21,19,19,18,18,10,21,10,20,18,21,19,21,19,18,21,18,21,19,25,19,21,21,19,21,18,19,10,19,21,21,16,21,19,19,19,19,19,19,19,18,19,16,19,18,18,21,20,19,18,21,21,21,29,17,19,18,21,21,16,19,19,19,18,19,19,19,19,19,19,19,19,19,18,28,21,19,19,21,21,20,18,19,21,19,18,19,18,21,21,19,19,21,19,21,21,19,19,19,18,18,18,19,21,21,19,19,26,21,19,19,18,21,20,16,19,19,19,21,19,19,21,19,19,19,20,19,19,18,19,19,19,21,21,19,18,19,20,18,20,18,18,10,19,18,18,19,19,21,21,19,18,21,16,19,19,21,21,19,19,20,19,19,19,26,19,19,19,18,21,19,18,19,21,21,19,19,19,21,21,19,21,19,19,21,21,21,19,19,19,19,21,19,18,18,27,27,21,18,21,19,19,20,21,21,19,21,21,21,19,19,21,19,19,19,19,19,19,18,24,24,24,24,19,19,18,19,19,19,20,18,18,22,19,19,19,19,21,18,19,19,19,29,16,19,19,21,21,19,19,19,19,19,21,21,27,18,27,21,19,19,21,19,19,19,19,19,19,19,21,21,19,18,18,27,21,18,19,18,32,21,20,18,18,20,18,18,18,19,19,19,19,19,21,21,20,19,19,19,19,19,21,16,25,20,26,27,21,28,22,18,18,19,21,24,21,20,10,19,18,19,19,21,21,18,21,19,21,19,18,20,20,19,19,19,19,19,19,19,21,19,18,18,20,20,28,21,17,21,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,21,21,21,21,21,21,18,20,18,19,19,19,19,19,21,19,21,19,19,19,19,19,19,19,19,19,21,18,18,19,10,19,18,21,19,18,19,18,21,18,22,19,32,19,16,19,21,19,21,19,19,18,18,21,18,21,19,21,18,18,21,19,21,19,27,19,18,21,18,19,26,19,21,19,18,21,18,21,16,19,19,27,19,26,27,19,19,21,19,21,18,21,19,19,22,19,21,18,21,19,19,20,19,19,21,19,21,19,19,21,19,21,10,18,21,19,21,19,19,19,21,18,19,18,19,21,18,19,21,19,18,19,21,19,19,19,19,21,18,19,21,21,21,19,21,19,21,21,19,21,19,21,19,21,19,21,21,18,19,19,18,21,21,21,18,19,16,18,21,21,19,19,19,19,19,19,18,19,21,19,18,21,19,21,21,19,19,21,19,16,21,18,19,19,19,19,21,21,19,19,19,18,20,10,21,21,16,21,21,19,19,19,19,19,19,19,19,19,18,19,18,18,18,19,19,18,18,18,18,16,16,10,19,19,19,19,19,19,26,24,18,21,18,18,19,19,18,19,19,20,18,19,19,27,19,21,21,21,19,19,16,21,21,19,21,26,21,21,18,18,19,19,21,21,18,21,19,19,19,19,19,18,21,18,19,20,21,19,21,18,19,19,18,19,16,19,21,19,18,19,19,21,18,19,19,29,20,18,19,21,28,19,19,16,18,19,19,19,21,20,19,21,10,18,19,21,18,18,16,21,28,18,19,21,25,18,16,19,20,19,16,18,21,18,19,21,18,19,19,21,21,19,19,19,21,21,18,18,19,21,18,21,19,19,19,18,19,27,19,19,19,21,10,18,18,18,18,18,18,18,18,18,19,18,21,21,21,18,18,20,20,18,18,18,18,18,10,19,19,19,19,19,19,19,19,19,19,21,19,16,19,19,19,19,21,21,18,19,19,18,18,19,18,19,19,19,18,24,24,24,24,24,24,19,18,26,21,19,18,18,19,19,21,18,26,19,21,21,18,19,19,19,19,19,19,19,20,18,18,18,27,19,19,21,19,21,19,10,19,19,18,19,19,19,19,19,19,19,18,18,19,19,18,19,21,21,18,19,19,21,19,19,19,20,21,21,19,19,19,19,21,19,19,19,19,19,16,21,21,21,18,18,19,19,19,27,19,21,19,19,18,21,19,20,18,21,21,18,21,19,18,21,19,18,10,20,21,21,19,18,19,19,22,19,19,19,19,18,19,18,28,19,21,19,19,19,19,19,19,21,19,18,19,19,21,10,19,21,19,20,18,20,21,19,18,19,21,19,19,19,21,21,18,19,21,19,19,18,19,21,19,18,19,19,18,18,21,19,21,19,19,19,19,19,19,18,18,21,18,18,18,21,18,19,20,21,21,19,19,16,19,21,19,18,19,26,19,19,27,21,19,19,18,21,18,26,19,20,19,20,19,18,21,18,20,19,18,26,21,21,18,19,18,21,19,21,19,18,21,18,19,26,24,21,21,21,19,21,22,21,21,18,21,19,21,19,20,19,18,19,19,19,21,19,19,18,19,21,21,21,19,19,18,21,18,19,19,21,19,19,21,19,19,18,21,27,18,18,19,21,19,18,19,19,19,18,19,19,19,18,21,21,19,19,18,20,18,20,18,19,19,19,19,21,21,18,20,18,20,18,18,19,19,19,19,19,18,19,19,18,24,19,19,21,20,20,18,10,21,21,18,21,21,21,21,19,19,18,19,19,19,18,19,19,19,22,27,21,19,18,18,26,28,33,21,21,19,19,19,19,17,19,21,19,21,19,19,19,19,21,21,19,21,21,26,21,10,19,18,19,19,19,21,20,19,19,19,19,19,21,19,19,19,19,21,21,21,21,21,21,18,19,19,19,19,20,21,19,19,19,19,19,19,19,19,19,18,28,21,10,10,19,19,19,21,19,19,21,19,19,19,19,22,21,19,19,19,18,18,21,21,21,19,19,19,19,19,19,18,18,26,19,21,21,19,19,19,19,19,19,20,18,22,19,21,21,21,19,19,32,21,19,19,19,19,19,21,19,19,19,19,19,19,19,19,16,19,19,19,19,19,17,21,19,19,19,21,21,21,16,19,19,19,20,21,19,19,19,19,19,20,18,18,26,21,19,21,19,19,26,18,19,19,19,21,21,20,19,19,20,26,21,19,19,19,19,18,19,19,19,19,10,21,20,18,19,21,20,21,18,19,19,19,19,19,19,19,19,19,24,24,24,24,24,24,24,24,19,18,19,19,19,19,19,21,21,21,21,19,21,19,19,19,21,21,19,19,18,19,19,19,21,19,26,21,19,19,19,19,18,21,21,19,19,19,19,18,28,21,21,18,19,18,28,21,19,19,19,18,20,26,21,19,19,19,19,18,32,29,21,21,19,19,19,19,19,19,19,21,19,19,18,26,21,21,19,19,19,19,19,19,18,17,19,18,20,21,19,21,19,19,19,19,19,18,18,19,19,21,21,19,19,19,17,21,21,21,18,21,21,21,21,10,19,19,19,19,19,19,19,19,19,19,19,21,21,21,21,21,19,16,19,10,19,19,19,19,19,19,19,18,26,21,16,21,19,19,19,19,18,29,21,21,19,19,21,21,19,19,17,18,16,21,19,19,19,19,18,16,21,19,19,19,19,19,18,21,21,19,19,18,20,25,19,19,21,21,21,19,19,19,21,26,18,19,21,18,19,17,19,19,19,19,19,21,20,18,18,21,19,19,19,19,19,21,21,19,21,21,19,19,19,19,20,10,19,19,19,19,19,21,21,21,18,18,19,19,19,19,21,21,21,19,18,19,19,21,19,17,21,21,21,21,16,18,21,21,20,18,18,26,10,21,18,21,19,19,19,19,19,19,19,18,18,21,26,21,19,19,19,19,18,18,20,21,19,19,18,20,26,22,19,19,19,19,19,18,26,21,18,21,19,21,21,19,19,19,18,21,19,21,26,19,19,19,21,19,19,19,19,19,19,19,18,26,21,19,19,19,16,21,19,19,19,19,19,27,21,21,19,19,19,18,19,10,21,19,18,18,19,21,21,19,20,19,19,18,21,21,21,21,21,21,21,21,19,19,19,19,26,18,21,21,19,19,19,19,19,19,18,21,21,21,19,18,21,16,18,18,16,19,19,18,18,19,19,18,18,21,19,19,19,19,21,21,19,19,16,19,19,18,21,21,18,21,18,21,21,21,19,19,18,21,19,18,26,21,19,20,19,19,19,18,26,26,19,19,32,18,19,19,20,19,19,18,19,19,19,19,21,20,19,21,21,18,18,19,19,21,26,21,18,28,18,18,18,18,17,18,18,19,19,18,20,20,24,24,24,24,24,24,24,24,24,24,24,19,21,21,21,19,20,21,21,27,21,19,21,18,19,19,21,10,19,21,18,19,19,19,18,19,21,22,21,19,19,21,18,21,19,19,19,19,18,19,21,26,21,21,21,21,21,18,18,19,21,21,21,21,19,19,19,19,18,18,19,19,20,18,19,21,19,21,19,21,19,19,19,20,18,19,21,18,18,18,20,19,21,21,19,32,20,19,21,21,21,21,18,18,19,19,18,21,18,18,19,19,20,19,19,18,19,21,19,21,21,21,19,19,18,19,19,10,19,21,18,21,19,19,27,19,21,19,19,19,19,19,18,19,19,18,19,19,20,19,21,21,19,21,19,20,18,20,16,19,21,21,24,18,19,19,18,18,21,18,19,19,19,18,18,19,18,17,18,27,21,19,16,18,19,21,21,19,21,21,18,18,19,19,18,27,19,16,19,19,18,10,20,19,21,21,19,19,21,19,24,19,19,26,19,19,19,18,19,19,16,19,21,18,19,21,21,19,19,19,21,19,21,21,19,20,19,19,19,19,21,20,21,21,21,16,16,19,21,25,19,20,19,19,21,18,21,21,21,19,18,10,10,19,19,21,19,18,19,21,21,21,19,19,18,21,21,20,19,21,18,19,21,19,19,21,19,21,16,21,19,21,18,18,19,19,19,19,18,17,18,19,26,21,19,19,18,19,16,21,19,21,20,18,18,19,19,18,19,18,21,21,21,21,19,19,18,21,21,19,19,19,21,19,18,21,18,21,16,19,18,19,21,16,21,18,19,21,21,18,21,19,18,21,19,26,19,21,18,18,21,19,19,19,19,19,18,19,19,18,19,19,19,19,19,16,19,19,19,19,19,21,18,18,18,20,19,18,21,19,21,21,21,27,19,19,20,18,19,21,20,21,21,21,19,18,19,19,26,19,19,19,26,21,19,18,19,19,18,21,18,19,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,19,21,21,21,19,19,18,19,18,19,19,21,19,21,19,21,19,21,19,18,19,19,19,21,19,18,19,19,21,19,10,19,19,16,19,19,19,18,19,18,21,19,21,19,20,19,16,19,19,19,21,21,19,19,19,21,19,16,20,18,18,21,19,19,18,19,18,21,21,18,19,21,29,21,19,18,19,18,18,19,17,18,19,19,10,19,21,19,21,19,19,19,19,19,19,18,19,19,21,22,18,19,19,20,19,19,19,21,18,19,19,16,21,21,26,21,22,19,19,21,19,18,21,19,21,19,19,20,22,19,19,19,21,18,19,18,19,21,18,19,19,21,20,19,21,18,19,21,18,19,19,21,21,20,20,19,18,19,18,21,19,21,19,19,19,19,18,18,18,19,21,16,18,26,21,18,19,18,21,21,21,18,19,19,18,18,17,19,21,19,16,19,19,19,19,18,19,19,21,19,19,21,21,27,19,19,18,19,19,19,21,19,20,10,21,18,21,19,27,18,19,19,19,21,18,19,18,21,18,21,20,21,18,19,18,18,19,19,21,19,21,19,19,18,21,19,18,19,18,21,19,16,21,18,19,27,19,21,19,18,19,21,19,21,20,19,19,19,21,18,19,19,21,21,19,19,25,18,19,21,19,19,21,19,19,21,18,19,21,22,26,18,20,19,19,25,18,19,16,18,19,19,21,19,21,19,21,16,17,19,19,19,19,27,19,18,21,19,19,21,21,26,18,26,21,18,18,19,21,27,18,21,21,21,21,19,19,19,19,21,19,19,19,19,21,18,19,19,21,18,19,24,24,24,24,24,24,24,24,24,24,19,21,18,18,21,19,19,19,19,18,21,21,19,19,21,19,19,19,19,18,18,21,19,21,21,19,19,19,17,21,19,19,18,22,21,19,20,19,19,19,21,16,19,19,19,16,18,18,19,19,19,19,19,18,19,16,21,18,19,20,19,21,20,21,19,21,19,21,25,19,21,20,26,19,21,19,19,19,21,21,18,19,21,19,26,19,21,18,19,19,21,18,19,19,20,19,21,18,21,19,19,21,19,19,19,21,21,21,21,18,19,19,19,19,19,26,18,19,19,21,19,19,27,21,18,19,19,21,18,19,19,21,18,19,19,21,18,19,19,17,26,18,10,18,19,19,19,21,26,18,19,21,21,20,19,18,20,21,18,19,19,20,19,19,21,17,18,19,19,19,17,21,21,21,21,20,21,19,19,19,21,21,21,18,19,21,21,19,19,19,21,21,18,19,19,18,19,19,19,19,19,19,19,21,20,19,19,19,21,17,19,19,19,19,19,19,19,19,19,19,19,18,19,18,18,19,19,16,19,19,18,19,19,19,19,19,19,21,19,21,18,19,21,21,21,18,21,18,18,18,20,19,19,19,21,19,17,18,21,19,21,18,19,21,21,19,19,21,19,28,18,21,27,19,21,18,19,21,19,20,19,16,18,19,19,26,21,16,19,19,21,19,19,21,19,18,19,19,16,21,25,19,18,20,21,25,19,19,18,20,19,19,18,19,19,19,21,19,19,19,19,19,19,19,19,20,26,19,19,19,19,19,21,21,19,21,19,20,20,19,18,21,19,19,21,19,19,19,19,19,19,19,18,18,18,19,19,19,19,19,19,19,19,17,19,19,19,19,19,21,19,21,21,19,19,18,19,19,19,19,21,19,19,19,18,18,18,18,19,18,21,19,18,19,19,26,19,18,18,19,18,18,19,19,10,19,20,19,21,19,21,20,19,19,27,19,19,18,10,27,18,19,19,19,21,26,21,21,19,18,19,19,19,19,18,19,18,18,21,19,19,18,18,19,19,10,19,19,19,18,19,19,25,21,19,19,19,20,16,19,20,21,21,19,19,19,19,18,21,19,19,19,18,21,21,19,18,20,21,19,19,19,18,22,18,21,19,19,18,20,21,19,19,18,21,19,19,19,19,19,18,16,21,19,19,18,16,22,21,19,19,18,27,19,19,21,19,19,21,19,25,26,19,19,21,19,19,18,18,19,19,19,19,19,19,19,21,16,28,26,19,18,19,19,19,19,19,19,21,21,21,20,18,10,21,20,19,20,21,18,21,28,16,18,18,26,20,18,18,18,18,18,18,19,21,21,21,21,19,19,21,19,21,21,19,19,21,19,19,19,19,26,21,20,18,19,19,19,19,19,21,19,21,19,19,19,18,18,21,19,19,21,19,19,18,21,19,19,32,21,21,19,19,20,21,21,19,21,19,19,19,19,19,18,19,21,21,21,16,19,19,19,21,18,19,21,18,19,19,21,21,20,19,19,19,18,26,19,18,18,18,18,19,21,21,32,19,10,21,19,18,19,19,19,18,19,18,21,19,21,20,19,19,18,16,21,18,19,19,19,19,21,10,18,19,21,19,21,21,25,19,19,19,19,21,18,19,19,19,19,19,21,21,21,21,20,19,18,19,19,19,20,21,19,24,24,24,24,24,24,24,24,24,24,24,21,19,18,18,18,19,21,18,18,19,19,19,20,18,16,21,20,20,18,18,20,18,19,18,18,22,29,21,21,19,19,19,19,19,21,19,18,21,24,24,17,20,19,17,21,18,19,19,19,19,10,10,26,18,19,21,19,21,21,19,21,19,21,19,19,18,19,19,19,18,21,21,19,21,21,20,19,28,18,21,19,19,19,19,16,19,18,18,19,19,19,21,21,19,21,21,20,19,19,21,21,28,21,19,21,19,19,19,19,19,19,19,19,19,19,21,21,16,21,18,18,18,18,18,18,18,18,20,20,32,25,21,21,21,19,21,19,19,19,18,21,19,18,21,21,19,19,19,19,19,19,24,21,21,21,19,19,19,21,19,19,21,21,19,19,17,21,16,19,19,18,19,19,18,19,19,19,17,21,21,26,21,21,19,19,19,21,21,26,21,19,19,21,21,19,19,19,19,19,19,17,21,18,19,21,18,32,20,19,24,19,19,18,20,16,21,19,19,19,19,19,18,20,10,29,21,21,19,19,19,19,19,19,19,18,17,19,21,19,19,17,16,19,21,19,19,20,21,21,21,21,19,19,19,18,21,21,19,19,18,19,18,17,21,19,19,19,19,19,19,18,20,10,19,18,20,21,21,19,21,16,19,19,20,21,21,21,21,19,19,19,19,18,21,21,19,19,19,21,21,19,19,19,19,18,29,20,20,21,19,18,19,19,21,19,21,19,20,19,18,20,21,19,26,19,21,19,21,19,21,19,17,18,19,19,21,19,21,10,20,19,19,21,19,19,19,19,20,19,21,21,19,19,19,19,19,19,19,19,10,21,21,21,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,21,19,21,26,21,20,18,10,19,19,19,19,18,25,21,19,19,19,19,19,18,21,21,21,19,19,19,19,19,19,19,19,20,18,16,19,21,19,19,21,19,19,19,19,19,19,19,19,19,19,18,20,10,18,19,18,20,22,18,21,21,21,21,21,19,19,19,19,19,19,19,19,19,18,18,20,26,21,19,16,21,19,19,19,18,19,18,10,21,21,21,21,21,21,21,19,17,19,19,21,19,19,19,19,18,27,21,26,21,19,19,17,19,19,18,18,26,21,21,21,21,10,20,19,26,18,10,16,21,20,19,20,18,18,18,18,18,18,19,19,18,26,20,18,32,18,21,17,18,27,21,21,21,21,30,21,19,19,21,19,19,19,19,19,19,19,18,18,18,21,28,21,18,19,20,19,19,19,19,18,19,19,17,18,18,20,18,19,19,19,19,19,19,19,20,18,29,21,21,19,18,22,21,21,19,19,19,19,19,19,19,19,21,10,22,19,21,10,18,18,21,21,18,21,17,19,19,19,20,18,19,18,19,21,19,19,10,19,21,19,19,19,19,19,18,17,19,19,19,19,21,21,19,19,19,18,18,21,21,21,19,18,19,18,21,21,19,19,27,21,19,19,18,19,19,21,19,17,19,18,21,19,19,19,21,19,19,19,18,21,21,21,19,18,21,21,19,19,20,10,19,19,19,18,21,21,19,18,19,19,19,10,19,19,19,25,19,19,18,18,26,19,19,19,20,19,21,26,21,21,21,19,19,18,21,19,19,18,19,19,18,21,21,17,19,18,21,16,18,19,19,19,19,21,21,19,18,21,20,21,19,18,21,24,24,24,24,24,21,19,19,19,18,21,18,18,19,18,27,21,21,32,26,19,18,21,21,21,21,19,19,21,19,17,19,21,17,19,19,19,19,19,19,19,20,19,19,20,19,19,18,32,18,18,18,20,19,19,21,19,19,19,19,19,18,19,19,19,19,19,21,19,19,20,19,21,27,19,19,18,19,19,21,21,18,21,21,21,21,18,21,19,21,21,19,19,19,21,19,21,18,18,21,19,19,19,19,19,19,18,19,18,19,18,18,20,19,19,19,18,18,19,21,21,19,19,19,19,19,19,19,19,18,18,18,20,10,19,18,19,19,19,10,19,26,26,19,19,19,16,21,21,21,10,18,19,21,19,19,18,21,18,19,18,19,19,21,21,20,19,19,19,19,19,20,19,17,21,29,10,19,19,19,19,19,19,19,19,19,19,19,19,21,21,19,19,17,21,18,29,18,18,18,20,18,18,18,18,18,21,19,19,19,21,19,19,19,21,19,19,21,19,19,19,19,19,21,19,19,19,19,18,21,19,21,19,21,20,19,16,19,27,19,19,21,21,19,19,19,16,19,18,27,19,28,19,29,21,19,21,21,19,19,19,21,19,20,21,18,19,21,19,27,18,19,21,19,19,19,21,10,21,20,19,19,19,18,19,19,19,19,19,19,21,26,19,18,19,19,19,21,21,19,21,19,19,21,21,21,19,19,18,10,26,19,19,21,21,19,19,19,18,16,18,18,19,32,18,21,18,10,19,21,19,19,19,18,21,21,19,21,18,20,21,22,18,21,21,21,18,21,21,20,19,19,10,19,21,10,19,10,18,19,21,19,19,18,19,21,21,29,26,26,19,19,21,19,21,21,17,21,21,20,19,18,21,19,19,26,21,21,19,19,19,19,19,18,21,27,19,21,18,19,18,19,19,21,19,21,18,21,19,19,19,19,21,24,16,18,19,21,18,21,19,21,16,18,19,25,19,19,19,19,19,19,27,21,19,19,19,19,21,18,18,19,19,19,19,19,19,21,22,26,29,28,21,29,21,19,21,19,19,19,19,19,21,18,18,18,19,19,19,21,18,19,19,19,19,21,21,21,21,21,16,20,27,18,20,18,18,19,19,21,20,21,19,19,19,19,19,19,19,19,19,17,19,19,19,19,19,19,19,19,18,18,10,21,19,19,19,19,19,19,19,18,18,18,19,19,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,20,19,19,19,19,18,19,19,18,19,20,19,21,19,21,19,19,21,18,19,16,19,21,20,19,19,21,18,19,19,18,19,16,21,18,19,19,19,20,18,19,19,21,19,19,19,19,19,19,19,18,21,21,21,19,19,19,18,10,18,21,19,19,19,17,19,18,18,29,21,19,19,19,19,18,21,18,18,18,19,18,21,19,19,19,18,25,17,21,19,19,19,18,18,19,21,26,21,21,19,21,18,17,19,19,16,19,21,19,19,19,19,21,19,19,20,19,18,19,19,19,18,21,21,21,24,24,24,24,24,24,18,18,19,19,19,19,19,19,19,21,16,19,18,19,19,19,19,19,19,19,19,20,20,18,18,19,27,21,21,18,21,19,18,18,21,19,21,19,22,19,19,19,18,19,19,19,18,22,18,26,21,19,19,18,29,21,16,27,19,19,19,19,19,20,18,21,27,18,19,18,19,19,19,21,19,19,19,19,21,27,21,19,21,19,19,19,19,19,19,20,18,18,32,18,16,21,19,19,19,19,19,19,19,20,26,21,19,19,17,19,18,18,21,20,19,19,19,19,21,26,18,18,20,18,19,18,21,19,21,19,10,21,26,18,18,21,26,20,21,21,19,19,19,19,27,19,19,18,19,21,21,10,20,19,19,18,18,19,21,21,21,21,19,21,20,21,21,21,18,18,19,19,18,19,21,19,21,19,19,20,18,18,19,21,25,18,19,21,16,20,19,24,24,19,20],"timeDeltas":[116333,125,42,0,41,42,0,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,0,250,42,41,42,42,41,42,42,83,0,83,0,42,42,41,42,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,42,41,42,42,41,42,42,41,42,42,41,0,84,41,42,42,41,42,42,41,42,42,41,42,125,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,84,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,84,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,166,0,84,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,125,84,41,42,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,83,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,83,0,42,41,42,42,83,42,0,41,125,42,42,0,41,125,0,42,42,41,42,42,41,0,42,42,41,42,42,83,42,41,42,42,41,42,0,0,42,41,42,42,41,42,0,42,41,42,42,41,42,42,0,83,0,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,0,41,42,42,41,0,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,84,0,41,42,42,83,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,84,41,42,208,42,42,41,84,41,42,0,42,83,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,83,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,83,42,83,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,84,41,42,0,0,42,41,42,42,0,41,42,42,0,41,84,0,41,42,0,83,0,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,292,333,42,83,42,41,42,83,0,42,83,0,125,167,83,0,84,291,0,42,83,125,42,42,41,42,208,42,42,83,0,83,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,334,166,42,42,41,84,83,42,0,83,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,83,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,83,84,416,542,417,41,209,83,83,42,167,208,42,83,83,42,42,166,84,83,0,42,41,42,42,41,84,0,83,42,41,42,42,0,83,83,42,0,42,41,42,0,42,83,42,208,83,42,42,125,41,42,42,41,42,42,41,42,42,41,0,42,42,41,42,42,41,42,42,41,42,0,42,0,41,42,0,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,41,42,42,41,0,84,0,41,42,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,125,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,83,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,83,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,84,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,83,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,1291,0,84,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,83,42,0,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,83,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,84,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,83,0,42,42,41,0,42,42,41,0,42,42,41,84,41,42,42,83,0,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,83,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,0,42,42,41,84,0,41,42,42,41,0,84,0,41,84,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,83,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,84,0,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,83,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,0,42,41,0,42,42,41,42,0,42,0,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,84,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,125,0,42,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,83,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,83,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,83,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,125,84,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,42,83,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,333,542,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,83,125,42,41,42,42,41,0,42,42,41,0,42,125,83,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,125,42,41,0,42,42,0,83,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,0,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,625,42,0,42,41,42,42,41,0,42,42,41,0,42,83,0,42,42,41,42,0,125,42,83,0,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,83,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,83,83,0,42,42,41,84,41,0,42,42,41,42,83,42,42,41,0,42,42,0,41,84,41,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,125,41,0,42,42,41,0,42,42,83,42,41,42,0,83,1167,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,83,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,83,0,83,42,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,84,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,125,84,83,0,83,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,83,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,125,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,83,0,42,83,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,83,42,41,84,41,84,41,84,41,0,42,42,41,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,83,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,83,42,0,41,42,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,0,83,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,84,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,83,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,83,0,42,42,0,41,42,42,0,83,0,42,41,0,42,42,41,0,84,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,84,41,42,0,42,41,42,42,41,42,42,0,41,42,83,42,0,42,41,42,42,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,41,84,41,84,41,167,0,83,84,83,167,208,42,41,42,0,42,41,42,42,0,41,42,42,166,42,42,41,42,0,42,41,42,42,41,292,83,84,0,41,42,42,41,42,0,42,83,0,42,41,42,42,41,42,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,0,42,42,41,42,42,0,41,42,42,41,42,42,41,42,83,42,42,83,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,83,83,42,42,41,0,42,42,41,42,42,41,42,83,84,41,42,42,0,41,42,83,0,42,42,41,42,42,0,83,0,83,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,83,0,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,83,0,42,41,42,42,41,42,42,83,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,0,41,42,42,41,42,42,41,0,42,42,41,42,42,41,42,0,42,41,42,42,41,42,333,84,83,42,41,42,125,83,84,83,42,83,83,0,42,83,42,42,166,84,125,333,292,41,125,167,42,125,83,42,41,42,42,41,42,0,42,41,42,42,41,42,42,0,0,83,42,41,0,42,42,41,42,42,0,41,42,42,41,42,42,0,0,41,42,42,41,84,41,42,0,42,41,42,42,41,42,42,41,42,42,0,41,42,42,41,42,42,83,42,41,0,42,42,41,84,83,125,125,83,84,0,83,0,42,83,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,41,0,84,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,83,0,42,41,42,42,41,125,42,42,41,42,0,42,41,42,83,167,208,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,0,125,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,84,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,41,42,42,0,41,125,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,84,41,0,167,0,1167,458,125,83,42,125,0,42,41,42,0,42,41,42,42,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,83,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,84,0,41,42,83,42,42,41,42,42,41,84,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,83,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,84,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,83,0,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,84,41,0,42,42,41,42,0,83,0,42,42,41,42,42,0,41,42,42,41,0,84,41,42,42,0,41,42,42,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,84,0,41,42,42,41,42,0,42,83,0,42,41,42,167,0,41,42,42,0,41,42,208,125,42,42,0,83,42,0,41,42,42,41,84,41,84,83,42,41,42,0,42,83,42,41,0,42,42,41,42,42,0,41,42,42,83,42,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,42,42,0,41,0,42,42,41,0,42,42,41,42,42,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,84,41,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,83,0,84,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,83,0,208,42,42,166,42,83,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,41,42,42,41,0,42,42,125,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,83,84,0,125,83,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,125,0,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,167,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,83,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,83,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,0,83,42,42,0,41,42,42,41,0,42,42,41,42,0,42,83,42,0,83,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,0,0,42,42,41,42,0,42,41,42,0,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,41,42,0,42,83,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,42,0,42,83,42,41,0,42,42,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,250,42,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,84,41,0,84,41,0,42,42,41,42,0,42,41,42,0,42,41,42,42,41,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,41,42,0,83,42,42,0,41,42,42,0,41,42,42,41,0,42,333,0,42,42,416,0,42,42,41,42,42,41,0,42,42,41,42,42,41,84,0,41,42,42,0,41,42,42,83,42,0,41,42,42,41,42,42,0,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,42,41,0,84,0,41,42,42,0,0,41,84,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,42,0,42,41,42,42,41,0,42,42,41,0,42,83,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,83,42,41,0,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,0,42,42,41,0,42,42,0,41,42,42,41,42,42,0,41,42,42,0,41,42,0,42,41,42,0,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,42,41,0,42,42,0,41,42,42,0,41,42,42,0,83,0,42,41,42,0,42,41,42,0,42,41,42,42,0,41,42,42,41,42,0,42,41,42,0,42,41,42,0,42,41,84,41,42,42,41,42,0,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,42,0,41,42,42,41,0,42,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,0,42,42,41,0,42,42,41,42,0,42,41,42,42,0,41,42,42,0,41,42,42,0,41,42,42,41,42,0,42,41,42,42,0,41,42,83,0,125,42,42,0,41,42,42,41,42,42,0,41,42,42,41,42,42,41,42,0,42,83,0,42,41,42,0,42,166,84,41,42,42,0,41,42,42,0,41,42,42,41,42,42,125,0,41,42,42,0,41,42,42,0,83,42,166,42,42,0,83,42,0,208,42,1208,83,1917,7542,583,42,291,1584,416,334,208,292,291,209,0,125,41,84,41,167,83,42,0,42,416,334,291,125,84,0,41,42,83,459,0,83,375,42,41,84,41,42,42,41,209,83,83,84,125,583,750,625,125,833,292,250,42,375,291,459,1875,250]} \ No newline at end of file diff --git a/bench-underscore-2024-11-24_12-17-49.cpuprofile b/bench-underscore-2024-11-24_12-17-49.cpuprofile new file mode 100644 index 0000000..ba78cdb --- /dev/null +++ b/bench-underscore-2024-11-24_12-17-49.cpuprofile @@ -0,0 +1 @@ +{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,10,17,19]},{"id":2,"callFrame":{"functionName":"run","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":331,"columnNumber":11},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":4871},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1806},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"","scriptId":"192","url":"file:///Users/airhorns/Code/superflected/spec/benchmark.ts","lineNumber":1,"columnNumber":1835},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"post","scriptId":"258","url":"node:inspector","lineNumber":111,"columnNumber":6},"hitCount":0,"children":[8]},{"id":8,"callFrame":{"functionName":"","scriptId":"258","url":"node:inspector","lineNumber":62,"columnNumber":38},"hitCount":0,"children":[9]},{"id":9,"callFrame":{"functionName":"#onMessage","scriptId":"258","url":"node:inspector","lineNumber":80,"columnNumber":12},"hitCount":1,"positionTicks":[{"line":86,"ticks":1}]},{"id":10,"callFrame":{"functionName":"loop","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":291,"columnNumber":12},"hitCount":18,"children":[11,14,26],"positionTicks":[{"line":315,"ticks":1},{"line":327,"ticks":2},{"line":292,"ticks":2},{"line":314,"ticks":2},{"line":316,"ticks":11}]},{"id":11,"callFrame":{"functionName":"H","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":254,"columnNumber":54},"hitCount":0,"children":[12]},{"id":12,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2446},"hitCount":0,"children":[13]},{"id":13,"callFrame":{"functionName":"underscore","scriptId":"268","url":"file:///Users/airhorns/Code/superflected/src/underscore.ts","lineNumber":1,"columnNumber":949},"hitCount":2,"positionTicks":[{"line":2,"ticks":2}]},{"id":14,"callFrame":{"functionName":"a","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":300,"columnNumber":31},"hitCount":13,"children":[15,18],"positionTicks":[{"line":250,"ticks":1},{"line":311,"ticks":3},{"line":539,"ticks":1},{"line":309,"ticks":8}]},{"id":15,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2446},"hitCount":4,"children":[16],"positionTicks":[{"line":2,"ticks":4}]},{"id":16,"callFrame":{"functionName":"underscore","scriptId":"268","url":"file:///Users/airhorns/Code/superflected/src/underscore.ts","lineNumber":1,"columnNumber":949},"hitCount":234,"children":[22],"positionTicks":[{"line":2,"ticks":234}]},{"id":22,"callFrame":{"functionName":"RegExp: (?:([A-Za-z\\d])|^)((?=a)b)(?=\\b|[^a-z])","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":17},{"id":18,"callFrame":{"functionName":"A","scriptId":"236","url":"file:///Users/airhorns/Code/superflected/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.cjs","lineNumber":249,"columnNumber":76},"hitCount":8,"children":[20,25],"positionTicks":[{"line":250,"ticks":8}]},{"id":20,"callFrame":{"functionName":"now","scriptId":"232","url":"node:internal/perf/performance","lineNumber":136,"columnNumber":5},"hitCount":2,"children":[21,23],"positionTicks":[{"line":139,"ticks":2}]},{"id":21,"callFrame":{"functionName":"wrappedFn","scriptId":"7","url":"node:internal/errors","lineNumber":534,"columnNumber":20},"hitCount":1,"children":[24],"positionTicks":[{"line":537,"ticks":1}]},{"id":24,"callFrame":{"functionName":"","scriptId":"12","url":"node:internal/validators","lineNumber":528,"columnNumber":46},"hitCount":3,"positionTicks":[{"line":530,"ticks":3}]},{"id":23,"callFrame":{"functionName":"now","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":8,"positionTicks":[{"line":139,"ticks":8}]},{"id":25,"callFrame":{"functionName":"get","scriptId":"13","url":"node:internal/util","lineNumber":660,"columnNumber":16},"hitCount":4,"positionTicks":[{"line":670,"ticks":2},{"line":666,"ticks":1},{"line":661,"ticks":1}]},{"id":26,"callFrame":{"functionName":"","scriptId":"190","url":"file:///Users/airhorns/Code/superflected/spec/bench/superflected.bench.ts","lineNumber":1,"columnNumber":2446},"hitCount":1,"positionTicks":[{"line":2,"ticks":1}]},{"id":17,"callFrame":{"functionName":"(garbage collector)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":22},{"id":19,"callFrame":{"functionName":"(program)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":4}],"startTime":293068873626,"endTime":293069693292,"samples":[7,9,13,13,14,16,16,16,16,16,16,16,16,17,16,16,16,16,16,16,16,16,18,16,16,16,19,16,16,16,10,14,16,16,16,16,14,16,16,17,16,16,16,16,20,21,16,16,16,17,17,17,17,17,10,16,10,16,22,16,23,16,16,16,16,16,10,14,16,16,16,22,16,16,16,16,16,14,18,22,16,16,17,17,17,17,17,17,17,16,16,16,16,16,24,16,16,16,16,19,16,16,16,16,14,22,14,22,16,16,16,22,16,16,16,16,16,16,10,16,16,16,16,16,14,16,16,16,16,15,16,16,16,16,16,16,16,22,16,16,10,16,20,16,16,10,10,16,16,16,17,16,23,16,16,23,22,16,16,16,16,16,23,16,15,25,22,22,16,16,22,17,17,23,16,10,16,10,16,16,16,16,16,19,16,16,16,16,16,16,16,10,16,16,25,16,16,16,16,16,16,16,16,16,14,19,16,16,16,16,24,14,16,18,16,16,16,16,16,16,18,16,16,10,16,16,22,16,16,23,24,16,16,17,16,22,16,16,16,16,10,25,26,16,16,16,10,16,16,15,16,16,16,16,16,16,16,16,16,16,16,17,16,16,22,16,16,16,16,16,18,16,16,16,15,10,16,16,16,16,16,22,16,23,22,22,18,16,16,25,16,16,16,16,18,16,16,16,14,16,16,16,16,16,16,16,16,10,16,16,16,18,16,16,14,16,10,16,16,17,16,16,16,23,14,16,16,16,16,16,16,16,16,16,16,16,16,10,16,17,17,16,16],"timeDeltas":[232833,4833,42,167,250,2791,292,333,500,250,42,42,458,1417,375,666,1709,2250,958,22417,916,7875,167,542,541,667,292,375,1750,458,83,42,208,167,167,500,1250,125,2750,10166,7084,458,2333,0,43459,8375,458,42,1916,16750,42,0,42,41,42,42,41,42,42,250,41,42,42,6333,708,1167,13958,8167,3333,1959,0,750,833,0,583,84,125,0,666,500,250,9292,167,41,2625,42,917,541,3334,791,2417,42,0,41,42,42,0,41,42,0,42,41,42,0,958,8042,125,1000,2583,875,1209,2708,208,417,3542,1750,7208,42,750,1041,42,3167,4833,0,625,2042,2416,3500,6542,3208,3834,4916,1917,0,5167,41,959,291,4500,9250,8959,416,2000,167,833,750,1084,125,750,1041,834,958,208,18125,16375,500,42,42,41,125,84,291,834,916,250,459,916,1167,2250,625,542,208,833,375,1709,291,584,166,375,84,1666,10667,1458,209,9208,42,291,584,1541,709,83,292,41,250,625,84,333,83,42,500,42,41,0,42,42,41,42,0,42,41,42,0,42,41,0,42,42,41,0,42,667,166,334,83,42,83,500,1375,333,584,1625,3750,875,1791,125,584,3333,1625,1125,1167,41,1292,10208,1000,1084,11458,167,2416,9667,11417,1333,1833,375,667,375,31000,42,1375,1625,0,1333,3333,1750,3584,41,3584,750,291,1000,667,250,625,333,625,42,417,333,3208,417,1000,125,8458,5084,625,41,42,42,0,83,0,125,125,42,0,41,42,83,84,291,250,584,333,208,42,42,41,42,42,0,125,166,42,42,41,42,42,833,500,333,1250,167,1250,500,1750,917,1291,292,875,2458,750,1875,125,250,292,208,4417,4542,1208,1542,1208,3250,4708,3667]} \ No newline at end of file diff --git a/dist/spec/ahoCorasick.spec.d.ts b/dist/spec/ahoCorasick.spec.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist/spec/ahoCorasick.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/spec/ahoCorasick.spec.js b/dist/spec/ahoCorasick.spec.js new file mode 100644 index 0000000..7c7ba7e --- /dev/null +++ b/dist/spec/ahoCorasick.spec.js @@ -0,0 +1,166 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const vitest_1 = require("vitest"); +const ahoCorasick_1 = require("../src/ahoCorasick"); +(0, vitest_1.describe)("Aho corasick search", () => { + (0, vitest_1.it)("should find single keyword 'hero'", () => { + const aho = new ahoCorasick_1.AhoCorasick(["hero", "heroic"]); + const result = aho.search("hero"); + (0, vitest_1.expect)(result).toEqual([[3, "hero"]]); + }); + (0, vitest_1.it)("should find multiple hero-related keywords", () => { + const aho = new ahoCorasick_1.AhoCorasick(["hero", "heroic", "heroism"]); + const result = aho.search("the hero performed a heroic act of heroism"); + (0, vitest_1.expect)(result).toEqual([ + [7, "hero"], + [26, "heroic"], + [41, "heroism"], + ]); + }); + (0, vitest_1.it)("should find numbered keywords", () => { + const aho = new ahoCorasick_1.AhoCorasick(["keyword1", "keyword2", "etc"]); + const result = aho.search("should find keyword1 at position 19 and keyword2 at position 30."); + (0, vitest_1.expect)(result).toEqual([ + [19, "keyword1"], + [47, "keyword2"], + ]); + }); + (0, vitest_1.it)("should find pronouns", () => { + const aho = new ahoCorasick_1.AhoCorasick(["he", "she", "his", "hers"]); + const result = aho.search("she was expecting his visit"); + (0, vitest_1.expect)(result).toEqual([ + [2, "she"], + [20, "his"], + ]); + }); + (0, vitest_1.it)("should handle special characters", () => { + const aho = new ahoCorasick_1.AhoCorasick(["àéçp?ẃ", "éâà"]); + const result = aho.search("éâàqwfwéâéeqfwéâàqef àéçp?ẃ wqqryht cp?"); + (0, vitest_1.expect)(result).toEqual([[26, "àéçp?ẃ"]]); + }); + (0, vitest_1.it)("should handle escape characters", () => { + const aho = new ahoCorasick_1.AhoCorasick(["**", "666", "his", "n", "\\", "\n"]); + const result = aho.search("\n & 666 ==! \n"); + (0, vitest_1.expect)(result).toEqual([ + [0, "\n"], + [6, "666"], + [12, "\n"], + ]); + }); + (0, vitest_1.it)("should handle cyrillic characters", () => { + const aho = new ahoCorasick_1.AhoCorasick(["Федеральной", "ной", "idea"]); + const result = aho.search("! Федеральной I have no idea what this means."); + (0, vitest_1.expect)(result).toEqual([ + [12, "Федеральной"], + [27, "idea"], + ]); + }); + (0, vitest_1.it)("should handle emojis and special symbols", () => { + const aho = new ahoCorasick_1.AhoCorasick(["bla", "😁", "😀", "°□°", "w", "┻━┻"]); + const result = aho.search("- (╯°□°)╯︵ ┻━┻ "); + (0, vitest_1.expect)(result).toEqual([ + [7, "°□°"], + [14, "┻━┻"], + ]); + }); + (0, vitest_1.it)("should handle adjacent matches", () => { + const aho = new ahoCorasick_1.AhoCorasick(["abc", "def"]); + const result = aho.search("abcdef should match both abc and def"); + (0, vitest_1.expect)(result).toEqual([ + [2, "abc"], + [5, "def"], + [27, "abc"], + [35, "def"], + ]); + }); + (0, vitest_1.it)("should not match multiple adjacent matches that don't end with a word boundary", () => { + const aho = new ahoCorasick_1.AhoCorasick(["abc", "xyz"]); + const result = aho.search("abcxyzG"); + (0, vitest_1.expect)(result).toEqual([]); + }); + (0, vitest_1.it)("should handle multiple adjacent matches", () => { + const aho = new ahoCorasick_1.AhoCorasick(["abc", "xyz"]); + const result = aho.search("abcxyzabcxyzxyz"); + (0, vitest_1.expect)(result).toEqual([ + [2, "abc"], + [5, "xyz"], + [8, "abc"], + [11, "xyz"], + [14, "xyz"], + ]); + }); + (0, vitest_1.it)("should not match multiple adjacent matches that don't end with a word boundary", () => { + const aho = new ahoCorasick_1.AhoCorasick(["abc", "xyz"]); + const result = aho.search("abcxyzabcxyzxyzG"); + (0, vitest_1.expect)(result).toEqual([]); + }); + (0, vitest_1.it)("should not match multiple adjacent matches that end with a partial second match", () => { + const aho = new ahoCorasick_1.AhoCorasick(["abc", "xyz"]); + const result = aho.search("abcxyzabcxyza"); + (0, vitest_1.expect)(result).toEqual([]); + }); + (0, vitest_1.it)("should handle substring matches", () => { + const aho = new ahoCorasick_1.AhoCorasick(["cat", "catch"]); + const result = aho.search("catch the cat and catch"); + (0, vitest_1.expect)(result).toEqual([ + [4, "catch"], + [12, "cat"], + [22, "catch"], + ]); + }); + (0, vitest_1.describe)("prefix search", () => { + (0, vitest_1.it)("should find exact prefix match", () => { + const aho = new ahoCorasick_1.AhoCorasick(["hero", "heroic"]); + const result = aho.search("hero", undefined, true); + (0, vitest_1.expect)(result).toEqual([[3, "hero"]]); + }); + (0, vitest_1.it)("should not match non-prefix occurrences", () => { + const aho = new ahoCorasick_1.AhoCorasick(["hero", "heroic"]); + const result = aho.search("the heroic", undefined, true); + (0, vitest_1.expect)(result).toEqual([]); + }); + (0, vitest_1.it)("should match longer prefix", () => { + const aho = new ahoCorasick_1.AhoCorasick(["hero", "heroic", "heroism"]); + const result = aho.search("heroic acts of heroism", undefined, true); + (0, vitest_1.expect)(result).toEqual([[5, "heroic"]]); + }); + (0, vitest_1.it)("should match pronoun prefixes", () => { + const aho = new ahoCorasick_1.AhoCorasick(["he", "she", "his", "hers"]); + const result = aho.search("she was here", undefined, true); + (0, vitest_1.expect)(result).toEqual([[2, "she"]]); + }); + (0, vitest_1.it)("should handle special character prefixes", () => { + const aho = new ahoCorasick_1.AhoCorasick(["éâà", "éâàbc"]); + const result = aho.search("éâàbc test", undefined, true); + (0, vitest_1.expect)(result).toEqual([[4, "éâàbc"]]); + }); + (0, vitest_1.it)("should handle nested domain extensions", () => { + const aho = new ahoCorasick_1.AhoCorasick([".com", ".com.au"]); + const result = aho.search(".com.au test", undefined, true); + (0, vitest_1.expect)(result).toEqual([[6, ".com.au"]]); + }); + (0, vitest_1.it)("should handle overlapping prefix matches", () => { + const aho = new ahoCorasick_1.AhoCorasick(["abc", "def"]); + const result = aho.search("abcdef abc", undefined, true); + (0, vitest_1.expect)(result).toEqual([ + [2, "abc"], + [5, "def"], + ]); + }); + (0, vitest_1.it)("should not match prefixes that aren't terminated by a word boundary", () => { + const aho = new ahoCorasick_1.AhoCorasick(["abc", "def"]); + const result = aho.search("abczzz", undefined, true); + (0, vitest_1.expect)(result).toEqual([]); + }); + (0, vitest_1.it)("should not match prefixes that aren't terminated by a word boundary and a partial second match", () => { + const aho = new ahoCorasick_1.AhoCorasick(["abc", "def"]); + const result = aho.search("abcde", undefined, true); + (0, vitest_1.expect)(result).toEqual([]); + }); + (0, vitest_1.it)("should handle substring prefix matches", () => { + const aho = new ahoCorasick_1.AhoCorasick(["cat", "catch"]); + const result = aho.search("catch", undefined, true); + (0, vitest_1.expect)(result).toEqual([[4, "catch"]]); + }); + }); +}); diff --git a/dist/spec/are-the-types-wrong.spec.d.ts b/dist/spec/are-the-types-wrong.spec.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist/spec/are-the-types-wrong.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/spec/are-the-types-wrong.spec.js b/dist/spec/are-the-types-wrong.spec.js new file mode 100644 index 0000000..c867c83 --- /dev/null +++ b/dist/spec/are-the-types-wrong.spec.js @@ -0,0 +1,13 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const execa_1 = __importDefault(require("execa")); +const path_1 = __importDefault(require("path")); +const vitest_1 = require("vitest"); +(0, vitest_1.describe)("package.json types exports", () => { + (0, vitest_1.it)("should have the correct types exports", async () => { + await (0, execa_1.default)("pnpm", ["exec", "attw", "--pack", "."], { cwd: path_1.default.resolve(__dirname, "..") }); + }, 10000); +}); diff --git a/dist/spec/bench/superflected.bench.d.ts b/dist/spec/bench/superflected.bench.d.ts new file mode 100644 index 0000000..f14c0b1 --- /dev/null +++ b/dist/spec/bench/superflected.bench.d.ts @@ -0,0 +1,4 @@ +declare const _default: { + fn: import("../benchmark").BenchmarkGenerator; +} | undefined; +export default _default; diff --git a/dist/spec/bench/superflected.bench.js b/dist/spec/bench/superflected.bench.js new file mode 100644 index 0000000..ba9c2c8 --- /dev/null +++ b/dist/spec/bench/superflected.bench.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const benchmark_1 = require("../benchmark"); +const src_1 = require("../../src"); +exports.default = (0, benchmark_1.benchmarker)(async (suite) => { + suite + .add("pluralize", function () { + (0, src_1.pluralize)("category"); + }) + .add("singularize", function () { + (0, src_1.singularize)("octopi"); + }) + .add("camelize.basic", function () { + (0, src_1.camelize)("employee_salary"); + }) + .add("camelize.complex", function () { + (0, src_1.camelize)("api_responses_url"); + }) + .add("camelize.withSlash", function () { + (0, src_1.camelize)("nested/api_response"); + }) + .add("camelize.mixedCase", function () { + (0, src_1.camelize)("API_ResponseFormat"); + }) + .add("camelize.lowercaseFirst", function () { + (0, src_1.camelize)("api_responses_url", false); + }) + .add("camelize.multipleUnderscores", function () { + (0, src_1.camelize)("complex_api_response_format"); + }) + .add("camelize.withNumbers", function () { + (0, src_1.camelize)("api2_response_3d"); + }) + .add("underscore", function () { + (0, src_1.underscore)("bankAccount"); + }) + .add("humanize", function () { + (0, src_1.humanize)("employee_salary"); + }) + .add("titleize", function () { + (0, src_1.titleize)("man from the boondocks"); + }) + .add("parameterize", function () { + (0, src_1.parameterize)("donald-e-knuth"); + }); + return suite; +}); diff --git a/dist/spec/benchmark.d.ts b/dist/spec/benchmark.d.ts new file mode 100644 index 0000000..bcefebc --- /dev/null +++ b/dist/spec/benchmark.d.ts @@ -0,0 +1,42 @@ +import { Bench, type Options } from "tinybench"; +import { Session } from "inspector"; +export declare const newInspectorSession: () => { + session: Session; + post: (method: string, params?: Record) => any; +}; +export type BenchmarkGenerator = ((suite: Bench) => Bench | Promise) & { + options?: Options; +}; +/** + * Set up a new benchmark in our library of benchmarks + * If this file is executed directly, it will run the benchmark + * Otherwise, it will export the benchmark for use in other files + * + * @example + * export default benchmarker((suite) => { + * return suite.add("My Benchmark", async () => { + * // ... + * }); + * }); + **/ +export declare const benchmarker: (fn: BenchmarkGenerator, options?: Options) => { + fn: BenchmarkGenerator; +} | undefined; +/** Wrap a plain old async function in the weird deferred management code benchmark.js requires */ +export declare const asyncBench: (fn: () => Promise) => { + defer: boolean; + fn: (deferred: any) => Promise; +}; +/** Boot up a benchmark suite for registering new cases on */ +export declare const createSuite: (options?: Options) => Bench; +export declare const benchTable: (bench: Bench) => { + "Task Name": string; + "ops/sec": string; + "Average Time (ms)": string | number; + "p99 Time (ms)": string | number; + Margin: string; + Samples: string | number; +}[]; +export declare const registerBenchProfiler: (suite: Bench) => Promise; +export declare const registerBenchHeapProfiler: (suite: Bench) => Promise; +export declare const registerGcStats: (suite: Bench) => void; diff --git a/dist/spec/benchmark.js b/dist/spec/benchmark.js new file mode 100644 index 0000000..8c77a69 --- /dev/null +++ b/dist/spec/benchmark.js @@ -0,0 +1,217 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.registerGcStats = exports.registerBenchHeapProfiler = exports.registerBenchProfiler = exports.benchTable = exports.createSuite = exports.asyncBench = exports.benchmarker = exports.newInspectorSession = void 0; +const fs_extra_1 = require("fs-extra"); +const perf_hooks_1 = require("perf_hooks"); +const tinybench_1 = require("tinybench"); +const yargs_1 = __importDefault(require("yargs")); +const helpers_1 = require("yargs/helpers"); +const inspector_1 = require("inspector"); +const lodash_1 = require("lodash"); +const newInspectorSession = () => { + const session = new inspector_1.Session(); + const post = (method, params) => new Promise((resolve, reject) => { + session.post(method, params, (err, result) => { + if (err) { + reject(err); + } + else { + resolve(result); + } + }); + }); + session.connect(); + return { session, post }; +}; +exports.newInspectorSession = newInspectorSession; +/** + * Set up a new benchmark in our library of benchmarks + * If this file is executed directly, it will run the benchmark + * Otherwise, it will export the benchmark for use in other files + * + * @example + * export default benchmarker((suite) => { + * return suite.add("My Benchmark", async () => { + * // ... + * }); + * }); + **/ +const benchmarker = (fn, options) => { + fn.options = options; + const err = new NiceStackError(); + const callerFile = err.stack[2].getFileName(); + if (require.main?.filename === callerFile) { + void runBenchmark(fn); + } + else { + return { fn }; + } +}; +exports.benchmarker = benchmarker; +/** Wrap a plain old async function in the weird deferred management code benchmark.js requires */ +const asyncBench = (fn) => { + return { + defer: true, + fn: async (deferred) => { + await fn(); + deferred.resolve(); + }, + }; +}; +exports.asyncBench = asyncBench; +/** Boot up a benchmark suite for registering new cases on */ +const createSuite = (options = { iterations: 100 }) => { + const suite = new tinybench_1.Bench(options); + suite.addEventListener("error", (event) => { + console.error("benchmark error", { ...event, error: event.error ?? event.task?.result?.error }); + }); + return suite; +}; +exports.createSuite = createSuite; +/** Run one benchmark function in isolation */ +const runBenchmark = async (fn) => { + const args = await (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv)) + .option("profile", { + alias: "p", + default: false, + describe: "profile each benchmarked case as it runs, writing a CPU profile to disk for each", + type: "boolean", + }) + .option("heap-profile", { + alias: "h", + default: false, + describe: "heap profile each benchmarked case as it runs, writing a .heapprofile file to disk for each", + type: "boolean", + }).argv; + let suite = (0, exports.createSuite)(fn.options); + if (args.profile) { + await (0, exports.registerBenchProfiler)(suite); + } + if (args["heap-profile"]) { + await (0, exports.registerBenchHeapProfiler)(suite); + } + if (args["gc-stats"]) { + (0, exports.registerGcStats)(suite); + } + suite = await fn(suite); + console.log("running benchmark"); + await suite.warmup(); + await suite.run(); + console.table((0, exports.benchTable)(suite)); +}; +class NiceStackError extends Error { + constructor() { + super(); + const oldStackTrace = Error.prepareStackTrace; + try { + Error.prepareStackTrace = (err, structuredStackTrace) => structuredStackTrace; + Error.captureStackTrace(this); + // eslint-disable-next-line @typescript-eslint/no-unused-expressions + this.stack; // Invoke the getter for `stack`. + } + finally { + Error.prepareStackTrace = oldStackTrace; + } + } +} +const benchTable = (bench) => { + return (0, lodash_1.compact)(bench.tasks.map(({ name: t, result: e }) => { + if (!e) + return null; + return { + "Task Name": t, + "ops/sec": e.error ? "NaN" : parseInt(e.hz.toString(), 10).toLocaleString(), + "Average Time (ms)": e.error ? "NaN" : e.mean, + "p99 Time (ms)": e.error ? "NaN" : e.p99, + Margin: e.error ? "NaN" : `\xB1${e.rme.toFixed(2)}%`, + Samples: e.error ? "NaN" : e.samples.length, + }; + })); +}; +exports.benchTable = benchTable; +const formatDateForFile = () => { + const now = new Date(); + return `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}_${String(now.getHours()).padStart(2, "0")}-${String(now.getMinutes()).padStart(2, "0")}-${String(now.getSeconds()).padStart(2, "0")}`; +}; +const registerBenchProfiler = async (suite) => { + const key = formatDateForFile(); + const { post } = (0, exports.newInspectorSession)(); + await post("Profiler.enable"); + await post("Profiler.setSamplingInterval", { interval: 20 }); + console.log("profiling enabled", { filenameKey: key }); + suite.addEventListener("add", (event) => { + const oldBeforeAll = event.task.opts.beforeAll; + const oldAfterAll = event.task.opts.afterAll; + event.task.opts = { + ...event.task.opts, + beforeAll: async function () { + await post("Profiler.start"); + await oldBeforeAll?.call(this); + }, + afterAll: async function () { + await oldAfterAll?.call(this); + const { profile } = (await post("Profiler.stop")); + await (0, fs_extra_1.writeFile)(`./bench-${event.task.name}-${key}.cpuprofile`, JSON.stringify(profile)); + }, + }; + }); +}; +exports.registerBenchProfiler = registerBenchProfiler; +const registerBenchHeapProfiler = async (suite) => { + const key = formatDateForFile(); + const { post } = (0, exports.newInspectorSession)(); + await post("HeapProfiler.enable"); + console.log("heap profiling enabled", { filenameKey: key }); + suite.addEventListener("add", (event) => { + const oldBeforeAll = event.task.opts.beforeAll; + const oldAfterAll = event.task.opts.afterAll; + event.task.opts = { + ...event.task.opts, + beforeAll: async function () { + await post("HeapProfiler.startSampling", { samplingInterval: 4096 }); + await oldBeforeAll?.call(this); + }, + afterAll: async function () { + await oldAfterAll?.call(this); + const { profile } = (await post("HeapProfiler.stopSampling")); + await (0, fs_extra_1.writeFile)(`./bench-${event.task.name}-${key}.heapprofile`, JSON.stringify(profile)); + }, + }; + }); +}; +exports.registerBenchHeapProfiler = registerBenchHeapProfiler; +const registerGcStats = (suite) => { + let totalGcCount = 0; + let totalGcPause = 0; + // Create a performance observer + const obs = new perf_hooks_1.PerformanceObserver((list) => { + const entry = list.getEntries()[0]; + totalGcCount += 1; + totalGcPause += entry.duration; + }); + console.log("gcstats enabled"); + suite.addEventListener("add", (event) => { + const oldBeforeEach = event.task.opts.beforeEach; + const oldAfterEach = event.task.opts.afterEach; + const oldAfterAll = event.task.opts.afterAll; + event.task.opts = { + ...event.task.opts, + beforeEach: async function () { + obs.observe({ entryTypes: ["gc"] }); + await oldBeforeEach?.call(this); + }, + afterEach: async function () { + obs.disconnect(); + await oldAfterEach?.call(this); + }, + afterAll: async function () { + console.log({ totalGcCount, totalGcPauseMs: totalGcPause / 1e6 }, "gcstats"); + await oldAfterAll?.call(this); + }, + }; + }); +}; +exports.registerGcStats = registerGcStats; diff --git a/dist/spec/cases.d.ts b/dist/spec/cases.d.ts new file mode 100644 index 0000000..1bc76d8 --- /dev/null +++ b/dist/spec/cases.d.ts @@ -0,0 +1,286 @@ +declare const _default: { + SingularToPlural: { + search: string; + switch: string; + fix: string; + box: string; + process: string; + address: string; + case: string; + stack: string; + wish: string; + fish: string; + jeans: string; + "funky jeans": string; + "my money": string; + category: string; + query: string; + ability: string; + agency: string; + movie: string; + archive: string; + index: string; + wife: string; + safe: string; + half: string; + move: string; + salesperson: string; + person: string; + spokesman: string; + man: string; + woman: string; + basis: string; + diagnosis: string; + diagnosis_a: string; + datum: string; + medium: string; + stadium: string; + analysis: string; + my_analysis: string; + node_child: string; + child: string; + experience: string; + day: string; + comment: string; + foobar: string; + newsletter: string; + old_news: string; + news: string; + series: string; + miniseries: string; + species: string; + quiz: string; + perspective: string; + ox: string; + photo: string; + buffalo: string; + tomato: string; + dwarf: string; + elf: string; + information: string; + equipment: string; + bus: string; + status: string; + status_code: string; + mouse: string; + louse: string; + house: string; + octopus: string; + virus: string; + alias: string; + portfolio: string; + vertex: string; + matrix: string; + matrix_fu: string; + axis: string; + taxi: string; + testis: string; + crisis: string; + rice: string; + shoe: string; + horse: string; + prize: string; + edge: string; + database: string; + "|ice": string; + "|ouse": string; + slice: string; + police: string; + }; + CamelToUnderscore: { + Product: string; + SpecialGuest: string; + ApplicationController: string; + Area51Controller: string; + }; + UnderscoreToLowerCamel: { + product: string; + special_guest: string; + application_controller: string; + area51_controller: string; + }; + CamelToUnderscoreWithoutReverse: { + HTMLTidy: string; + HTMLTidyGenerator: string; + FreeBSD: string; + HTML: string; + }; + ClassNameToForeignKeyWithUnderscore: { + Person: string; + BillingAccount: string; + }; + ClassNameToForeignKeyWithoutUnderscore: { + Person: string; + BillingAccount: string; + }; + ClassNameToTableName: { + PrimarySpokesman: string; + NodeChild: string; + }; + StringToParameterized: { + "Donald E. Knuth": string; + "Random text with *(bad)* characters": string; + Allow_Under_Scores: string; + "Trailing bad characters!@#": string; + "!@#Leading bad characters": string; + "Squeeze separators": string; + "Test with + sign": string; + "Test with malformed utf8 \u00A9": string; + }; + StringToParameterizeWithNoSeparator: { + "Donald E. Knuth": string; + "With-some-dashes": string; + "Random text with *(bad)* characters": string; + "Trailing bad characters!@#": string; + "!@#Leading bad characters": string; + "Squeeze separators": string; + "Test with + sign": string; + "Test with malformed utf8 \u00A9": string; + }; + StringToParameterizeWithPreserveCase: { + "Donald E. Knuth": string; + "Random text with *(bad)* Characters": string; + Allow_Under_Scores: string; + "Trailing BAD characters!@#": string; + "!@#leading bad Characters": string; + "squeeze Separators": string; + "Test with + Sign": string; + "Test with malformed UTF8 \u00A9": string; + }; + StringToParameterizeWithUnderscore: { + "Donald E. Knuth": string; + "Random text with *(bad)* characters": string; + "With-some-dashes": string; + Retain_underscore: string; + "Trailing bad characters!@#": string; + "!@#Leading bad characters": string; + "Squeeze separators": string; + "Test with + sign": string; + "Test with malformed utf8 \u00A9": string; + }; + StringToParameterizedAndNormalized: { + Malmö: string; + Garçons: string; + OpsÙ: string; + Ærøskøbing: string; + Aßlar: string; + "Japanese: \u65E5\u672C\u8A9E": string; + }; + UnderscoreToHuman: { + employee_salary: string; + employee_id: string; + underground: string; + }; + UnderscoreToHumanWithoutCapitalize: { + employee_salary: string; + employee_id: string; + underground: string; + }; + MixtureToTitleCase: { + active_record: string; + ActiveRecord: string; + "action web service": string; + "Action Web Service": string; + "Action web service": string; + actionwebservice: string; + Actionwebservice: string; + "david's code": string; + "David's code": string; + "david's Code": string; + "sgt. pepper's": string; + "i've just seen a face": string; + "maybe you'll be there": string; + "\u00BFpor qu\u00E9?": string; + "Fred\u2019s": string; + "Fred`s": string; + }; + OrdinalNumbers: { + "-1": string; + "-2": string; + "-3": string; + "-4": string; + "-5": string; + "-6": string; + "-7": string; + "-8": string; + "-9": string; + "-10": string; + "-11": string; + "-12": string; + "-13": string; + "-14": string; + "-20": string; + "-21": string; + "-22": string; + "-23": string; + "-24": string; + "-100": string; + "-101": string; + "-102": string; + "-103": string; + "-104": string; + "-110": string; + "-111": string; + "-112": string; + "-113": string; + "-1000": string; + "-1001": string; + "0": string; + "1": string; + "2": string; + "3": string; + "4": string; + "5": string; + "6": string; + "7": string; + "8": string; + "9": string; + "10": string; + "11": string; + "12": string; + "13": string; + "14": string; + "20": string; + "21": string; + "22": string; + "23": string; + "24": string; + "100": string; + "101": string; + "102": string; + "103": string; + "104": string; + "110": string; + "111": string; + "112": string; + "113": string; + "1000": string; + "1001": string; + }; + UnderscoresToDashes: { + street: string; + street_address: string; + person_street_address: string; + }; + Irregularities: { + person: string; + man: string; + child: string; + sex: string; + move: string; + cow: string; + zombie: string; + genus: string; + }; + WordsToConstantCase: { + Conciliation: string; + conciliation: string; + bankAccount: string; + BankAccount: string; + "bank-account": string; + bank_account: string; + "Bank Account": string; + "Multiple Bank Account": string; + }; +}; +export default _default; diff --git a/dist/spec/cases.js b/dist/spec/cases.js new file mode 100644 index 0000000..914b897 --- /dev/null +++ b/dist/spec/cases.js @@ -0,0 +1,288 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = { + SingularToPlural: { + search: "searches", + switch: "switches", + fix: "fixes", + box: "boxes", + process: "processes", + address: "addresses", + case: "cases", + stack: "stacks", + wish: "wishes", + fish: "fish", + jeans: "jeans", + "funky jeans": "funky jeans", + "my money": "my money", + category: "categories", + query: "queries", + ability: "abilities", + agency: "agencies", + movie: "movies", + archive: "archives", + index: "indices", + wife: "wives", + safe: "saves", + half: "halves", + move: "moves", + salesperson: "salespeople", + person: "people", + spokesman: "spokesmen", + man: "men", + woman: "women", + basis: "bases", + diagnosis: "diagnoses", + diagnosis_a: "diagnosis_as", + datum: "data", + medium: "media", + stadium: "stadia", + analysis: "analyses", + my_analysis: "my_analyses", + node_child: "node_children", + child: "children", + experience: "experiences", + day: "days", + comment: "comments", + foobar: "foobars", + newsletter: "newsletters", + old_news: "old_news", + news: "news", + series: "series", + miniseries: "miniseries", + species: "species", + quiz: "quizzes", + perspective: "perspectives", + ox: "oxen", + photo: "photos", + buffalo: "buffaloes", + tomato: "tomatoes", + dwarf: "dwarves", + elf: "elves", + information: "information", + equipment: "equipment", + bus: "buses", + status: "statuses", + status_code: "status_codes", + mouse: "mice", + louse: "lice", + house: "houses", + octopus: "octopi", + virus: "viri", + alias: "aliases", + portfolio: "portfolios", + vertex: "vertices", + matrix: "matrices", + matrix_fu: "matrix_fus", + axis: "axes", + taxi: "taxis", // prevents regression + testis: "testes", + crisis: "crises", + rice: "rice", + shoe: "shoes", + horse: "horses", + prize: "prizes", + edge: "edges", + database: "databases", + // regression tests against improper inflection regexes + "|ice": "|ices", + "|ouse": "|ouses", + slice: "slices", + police: "police" + }, + CamelToUnderscore: { + Product: "product", + SpecialGuest: "special_guest", + ApplicationController: "application_controller", + Area51Controller: "area51_controller" + }, + UnderscoreToLowerCamel: { + product: "product", + special_guest: "specialGuest", + application_controller: "applicationController", + area51_controller: "area51Controller" + }, + CamelToUnderscoreWithoutReverse: { + HTMLTidy: "html_tidy", + HTMLTidyGenerator: "html_tidy_generator", + FreeBSD: "free_bsd", + HTML: "html" + }, + ClassNameToForeignKeyWithUnderscore: { + Person: "person_id", + BillingAccount: "billing_account_id" + }, + ClassNameToForeignKeyWithoutUnderscore: { + Person: "personid", + BillingAccount: "billing_accountid" + }, + ClassNameToTableName: { + PrimarySpokesman: "primary_spokesmen", + NodeChild: "node_children" + }, + StringToParameterized: { + "Donald E. Knuth": "donald-e-knuth", + "Random text with *(bad)* characters": "random-text-with-bad-characters", + Allow_Under_Scores: "allow_under_scores", + "Trailing bad characters!@#": "trailing-bad-characters", + "!@#Leading bad characters": "leading-bad-characters", + "Squeeze separators": "squeeze-separators", + "Test with + sign": "test-with-sign", + "Test with malformed utf8 \xa9": "test-with-malformed-utf8" + }, + StringToParameterizeWithNoSeparator: { + "Donald E. Knuth": "donaldeknuth", + "With-some-dashes": "with-some-dashes", + "Random text with *(bad)* characters": "randomtextwithbadcharacters", + "Trailing bad characters!@#": "trailingbadcharacters", + "!@#Leading bad characters": "leadingbadcharacters", + "Squeeze separators": "squeezeseparators", + "Test with + sign": "testwithsign", + "Test with malformed utf8 \xa9": "testwithmalformedutf8" + }, + StringToParameterizeWithPreserveCase: { + "Donald E. Knuth": "Donald-E-Knuth", + "Random text with *(bad)* Characters": "Random-text-with-bad-Characters", + Allow_Under_Scores: "Allow_Under_Scores", + "Trailing BAD characters!@#": "Trailing-BAD-characters", + "!@#leading bad Characters": "leading-bad-Characters", + "squeeze Separators": "squeeze-Separators", + "Test with + Sign": "Test-with-Sign", + "Test with malformed UTF8 \xa9": "Test-with-malformed-UTF8" + }, + StringToParameterizeWithUnderscore: { + "Donald E. Knuth": "donald_e_knuth", + "Random text with *(bad)* characters": "random_text_with_bad_characters", + "With-some-dashes": "with-some-dashes", + Retain_underscore: "retain_underscore", + "Trailing bad characters!@#": "trailing_bad_characters", + "!@#Leading bad characters": "leading_bad_characters", + "Squeeze separators": "squeeze_separators", + "Test with + sign": "test_with_sign", + "Test with malformed utf8 \xa9": "test_with_malformed_utf8" + }, + StringToParameterizedAndNormalized: { + Malmö: "malmo", + Garçons: "garcons", + OpsÙ: "opsu", + Ærøskøbing: "aeroskobing", + Aßlar: "asslar", + "Japanese: 日本語": "japanese" + }, + UnderscoreToHuman: { + employee_salary: "Employee salary", + employee_id: "Employee", + underground: "Underground" + }, + UnderscoreToHumanWithoutCapitalize: { + employee_salary: "employee salary", + employee_id: "employee", + underground: "underground" + }, + MixtureToTitleCase: { + active_record: "Active Record", + ActiveRecord: "Active Record", + "action web service": "Action Web Service", + "Action Web Service": "Action Web Service", + "Action web service": "Action Web Service", + actionwebservice: "Actionwebservice", + Actionwebservice: "Actionwebservice", + "david's code": "David's Code", + "David's code": "David's Code", + "david's Code": "David's Code", + "sgt. pepper's": "Sgt. Pepper's", + "i've just seen a face": "I've Just Seen A Face", + "maybe you'll be there": "Maybe You'll Be There", + "¿por qué?": "¿Por Qué?", + "Fred’s": "Fred’s", + "Fred`s": "Fred`s" + }, + OrdinalNumbers: { + "-1": "-1st", + "-2": "-2nd", + "-3": "-3rd", + "-4": "-4th", + "-5": "-5th", + "-6": "-6th", + "-7": "-7th", + "-8": "-8th", + "-9": "-9th", + "-10": "-10th", + "-11": "-11th", + "-12": "-12th", + "-13": "-13th", + "-14": "-14th", + "-20": "-20th", + "-21": "-21st", + "-22": "-22nd", + "-23": "-23rd", + "-24": "-24th", + "-100": "-100th", + "-101": "-101st", + "-102": "-102nd", + "-103": "-103rd", + "-104": "-104th", + "-110": "-110th", + "-111": "-111th", + "-112": "-112th", + "-113": "-113th", + "-1000": "-1000th", + "-1001": "-1001st", + "0": "0th", + "1": "1st", + "2": "2nd", + "3": "3rd", + "4": "4th", + "5": "5th", + "6": "6th", + "7": "7th", + "8": "8th", + "9": "9th", + "10": "10th", + "11": "11th", + "12": "12th", + "13": "13th", + "14": "14th", + "20": "20th", + "21": "21st", + "22": "22nd", + "23": "23rd", + "24": "24th", + "100": "100th", + "101": "101st", + "102": "102nd", + "103": "103rd", + "104": "104th", + "110": "110th", + "111": "111th", + "112": "112th", + "113": "113th", + "1000": "1000th", + "1001": "1001st" + }, + UnderscoresToDashes: { + street: "street", + street_address: "street-address", + person_street_address: "person-street-address" + }, + Irregularities: { + person: "people", + man: "men", + child: "children", + sex: "sexes", + move: "moves", + cow: "kine", + zombie: "zombies", + genus: "genera" + }, + WordsToConstantCase: { + Conciliation: "CONCILIATION", + conciliation: "CONCILIATION", + bankAccount: "BANK_ACCOUNT", + BankAccount: "BANK_ACCOUNT", + "bank-account": "BANK_ACCOUNT", + bank_account: "BANK_ACCOUNT", + "Bank Account": "BANK_ACCOUNT", + "Multiple Bank Account": "MULTIPLE_BANK_ACCOUNT" + } +}; diff --git a/dist/spec/superflected.spec.d.ts b/dist/spec/superflected.spec.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist/spec/superflected.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/spec/superflected.spec.js b/dist/spec/superflected.spec.js new file mode 100644 index 0000000..bb35c24 --- /dev/null +++ b/dist/spec/superflected.spec.js @@ -0,0 +1,359 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const vitest_1 = require("vitest"); +const src_1 = require("../src"); +const inflect = (0, src_1.inflections)(); +const cases_1 = __importDefault(require("./cases")); +(0, vitest_1.describe)("Inflector", () => { + (0, vitest_1.it)("properly pluralizes plurals", () => { + (0, vitest_1.expect)((0, src_1.pluralize)("plurals")).toBe("plurals"); + (0, vitest_1.expect)((0, src_1.pluralize)("Plurals")).toBe("Plurals"); + }); + (0, vitest_1.it)("properly pluralizes empty string", () => { + (0, vitest_1.expect)((0, src_1.pluralize)("")).toBe(""); + }); + (0, vitest_1.it)("properly capitalizes strings", () => { + (0, vitest_1.expect)((0, src_1.capitalize)("foo")).toBe("Foo"); + (0, vitest_1.expect)((0, src_1.capitalize)("FOO")).toBe("FOO"); + (0, vitest_1.expect)((0, src_1.capitalize)("foo bar")).toBe("Foo bar"); + (0, vitest_1.expect)((0, src_1.capitalize)("")).toBe(""); + (0, vitest_1.expect)((0, src_1.capitalize)(null)).toBe(""); + (0, vitest_1.expect)((0, src_1.capitalize)(undefined)).toBe(""); + }); + for (const word of inflect.uncountables) { + (0, vitest_1.it)("respects the uncountability of " + word, () => { + (0, vitest_1.expect)((0, src_1.singularize)(word)).toBe(word); + (0, vitest_1.expect)((0, src_1.pluralize)(word)).toBe(word); + (0, vitest_1.expect)((0, src_1.singularize)(word)).toBe((0, src_1.pluralize)(word)); + }); + } + (0, vitest_1.it)("checks uncountable word is not greedy", () => { + const uncountableWord = "ors"; + const countableWord = "sponsor"; + inflect.uncountables.push(uncountableWord); + (0, vitest_1.expect)((0, src_1.singularize)(uncountableWord)).toBe(uncountableWord); + (0, vitest_1.expect)((0, src_1.pluralize)(uncountableWord)).toBe(uncountableWord); + (0, vitest_1.expect)((0, src_1.singularize)(uncountableWord)).toBe((0, src_1.pluralize)(uncountableWord)); + (0, vitest_1.expect)((0, src_1.singularize)(countableWord)).toBe("sponsor"); + (0, vitest_1.expect)((0, src_1.pluralize)(countableWord)).toBe("sponsors"); + (0, vitest_1.expect)((0, src_1.singularize)((0, src_1.pluralize)(countableWord))).toBe("sponsor"); + }); + for (const [singular, plural] of Object.entries(cases_1.default.SingularToPlural)) { + (0, vitest_1.it)("properly pluralizes " + singular, () => { + (0, vitest_1.expect)((0, src_1.pluralize)(singular)).toBe(plural); + (0, vitest_1.expect)((0, src_1.pluralize)((0, src_1.capitalize)(singular))).toBe((0, src_1.capitalize)(plural)); + }); + (0, vitest_1.it)("properly pluralizes " + plural, () => { + (0, vitest_1.expect)((0, src_1.pluralize)(plural)).toBe(plural); + (0, vitest_1.expect)((0, src_1.pluralize)((0, src_1.capitalize)(plural))).toBe((0, src_1.capitalize)(plural)); + }); + (0, vitest_1.it)("properly singularizes " + plural, () => { + (0, vitest_1.expect)((0, src_1.singularize)(plural)).toBe(singular); + (0, vitest_1.expect)((0, src_1.singularize)((0, src_1.capitalize)(plural))).toBe((0, src_1.capitalize)(singular)); + }); + (0, vitest_1.it)("properly singularizes " + singular, () => { + (0, vitest_1.expect)((0, src_1.singularize)(singular)).toBe(singular); + (0, vitest_1.expect)((0, src_1.singularize)((0, src_1.capitalize)(singular))).toBe((0, src_1.capitalize)(singular)); + }); + } + (0, vitest_1.it)("allows overwriting defined inflectors", () => { + (0, vitest_1.expect)((0, src_1.singularize)("series")).toBe("series"); + inflect.singular("series", "serie"); + (0, vitest_1.expect)((0, src_1.singularize)("series")).toBe("serie"); + }); + for (const [mixture, titleized] of Object.entries(cases_1.default.MixtureToTitleCase)) { + (0, vitest_1.it)("properly titleizes " + mixture, () => { + (0, vitest_1.expect)((0, src_1.titleize)(mixture)).toBe(titleized); + }); + } + for (const [camel, underscore] of Object.entries(cases_1.default.CamelToUnderscore)) { + (0, vitest_1.it)("properly camelizes " + underscore, () => { + (0, vitest_1.expect)((0, src_1.camelize)(underscore)).toBe(camel); + }); + } + (0, vitest_1.it)("properly camelizes with lower downcases the first letter", () => { + (0, vitest_1.expect)((0, src_1.camelize)("Capital", false)).toBe("capital"); + }); + (0, vitest_1.it)("properly camelizes with underscores", () => { + (0, vitest_1.expect)((0, src_1.camelize)("Camel_Case")).toBe("CamelCase"); + }); + (0, vitest_1.it)("properly handles acronyms", () => { + inflect.acronym("API"); + inflect.acronym("HTML"); + inflect.acronym("HTTP"); + inflect.acronym("RESTful"); + inflect.acronym("W3C"); + inflect.acronym("PhD"); + inflect.acronym("RoR"); + inflect.acronym("SSL"); + // camelize underscore humanize titleize + const items = [ + ["API", "api", "API", "API"], + ["APIController", "api_controller", "API controller", "API Controller"], + ["Nokogiri/HTML", "nokogiri/html", "Nokogiri/HTML", "Nokogiri/HTML"], + ["HTTPAPI", "http_api", "HTTP API", "HTTP API"], + ["HTTP/Get", "http/get", "HTTP/get", "HTTP/Get"], + ["SSLError", "ssl_error", "SSL error", "SSL Error"], + ["RESTful", "restful", "RESTful", "RESTful"], + ["RESTfulController", "restful_controller", "RESTful controller", "RESTful Controller"], + ["IHeartW3C", "i_heart_w3c", "I heart W3C", "I Heart W3C"], + ["PhDRequired", "phd_required", "PhD required", "PhD Required"], + ["IRoRU", "i_ror_u", "I RoR u", "I RoR U"], + ["RESTfulHTTPAPI", "restful_http_api", "RESTful HTTP API", "RESTful HTTP API"], + // misdirection + ["Capistrano", "capistrano", "Capistrano", "Capistrano"], + ["CapiController", "capi_controller", "Capi controller", "Capi Controller"], + ["HttpsApis", "https_apis", "Https apis", "Https Apis"], + ["Html5", "html5", "Html5", "Html5"], + ["Restfully", "restfully", "Restfully", "Restfully"], + ["RoRails", "ro_rails", "Ro rails", "Ro Rails"], + ]; + for (const [camel, under, human, title] of items) { + (0, vitest_1.expect)((0, src_1.camelize)(under)).toBe(camel); + (0, vitest_1.expect)((0, src_1.camelize)(camel)).toBe(camel); + (0, vitest_1.expect)((0, src_1.underscore)(under)).toBe(under); + (0, vitest_1.expect)((0, src_1.underscore)(camel)).toBe(under); + (0, vitest_1.expect)((0, src_1.titleize)(under)).toBe(title); + (0, vitest_1.expect)((0, src_1.titleize)(camel)).toBe(title); + (0, vitest_1.expect)((0, src_1.humanize)(under)).toBe(human); + } + }); + (0, vitest_1.it)("allows overwriting acronyms", () => { + inflect.acronym("API"); + inflect.acronym("LegacyApi"); + (0, vitest_1.expect)((0, src_1.camelize)("legacyapi")).toBe("LegacyApi"); + (0, vitest_1.expect)((0, src_1.camelize)("legacy_api")).toBe("LegacyAPI"); + (0, vitest_1.expect)((0, src_1.camelize)("some_legacyapi")).toBe("SomeLegacyApi"); + (0, vitest_1.expect)((0, src_1.camelize)("nonlegacyapi")).toBe("Nonlegacyapi"); + }); + (0, vitest_1.it)("properly handles lower camelized acronyms", () => { + inflect.acronym("API"); + inflect.acronym("HTML"); + (0, vitest_1.expect)((0, src_1.camelize)("html_api", false)).toBe("htmlAPI"); + (0, vitest_1.expect)((0, src_1.camelize)("htmlAPI", false)).toBe("htmlAPI"); + (0, vitest_1.expect)((0, src_1.camelize)("HTMLAPI", false)).toBe("htmlAPI"); + }); + (0, vitest_1.it)("properly handles lower camelized acronyms", () => { + inflect.acronym("API"); + inflect.acronym("JSON"); + inflect.acronym("HTML"); + (0, vitest_1.expect)((0, src_1.underscore)("JSONHTMLAPI")).toBe("json_html_api"); + }); + (0, vitest_1.it)("properly underscores", () => { + for (const [camel, underscored] of Object.entries(cases_1.default.CamelToUnderscore)) { + (0, vitest_1.expect)((0, src_1.underscore)(camel)).toBe(underscored); + } + for (const [camel, underscored] of Object.entries(cases_1.default.CamelToUnderscoreWithoutReverse)) { + (0, vitest_1.expect)((0, src_1.underscore)(camel)).toBe(underscored); + } + }); + (0, vitest_1.it)("properly adds a foreign key suffix", () => { + for (const [klass, foreignKeyized] of Object.entries(cases_1.default.ClassNameToForeignKeyWithUnderscore)) { + (0, vitest_1.expect)((0, src_1.foreignKey)(klass)).toBe(foreignKeyized); + } + for (const [klass, foreignKeyized] of Object.entries(cases_1.default.ClassNameToForeignKeyWithoutUnderscore)) { + (0, vitest_1.expect)((0, src_1.foreignKey)(klass, false)).toBe(foreignKeyized); + } + }); + (0, vitest_1.it)("properly tableizes class names", () => { + for (const [className, tableName] of Object.entries(cases_1.default.ClassNameToTableName)) { + (0, vitest_1.expect)((0, src_1.tableize)(className)).toBe(tableName); + } + }); + (0, vitest_1.it)("properly classifies table names", () => { + for (const [className, tableName] of Object.entries(cases_1.default.ClassNameToTableName)) { + (0, vitest_1.expect)((0, src_1.classify)(tableName)).toBe(className); + (0, vitest_1.expect)((0, src_1.classify)("table_prefix." + tableName)).toBe(className); + } + }); + (0, vitest_1.it)("properly classifies with leading schema name", () => { + (0, vitest_1.expect)((0, src_1.classify)("schema.foo_bar")).toBe("FooBar"); + }); + (0, vitest_1.it)("properly humanizes underscored strings", () => { + for (const [underscore, human] of Object.entries(cases_1.default.UnderscoreToHuman)) { + (0, vitest_1.expect)((0, src_1.humanize)(underscore)).toBe(human); + } + }); + (0, vitest_1.it)("properly humanizes underscored strings without capitalize", () => { + for (const [underscore, human] of Object.entries(cases_1.default.UnderscoreToHumanWithoutCapitalize)) { + (0, vitest_1.expect)((0, src_1.humanize)(underscore, { capitalize: false })).toBe(human); + } + }); + (0, vitest_1.it)("properly humanizes by rule", () => { + inflect.human(/_cnt$/i, "_count"); + inflect.human(/^prefx_/i, ""); + (0, vitest_1.expect)((0, src_1.humanize)("jargon_cnt")).toBe("Jargon count"); + (0, vitest_1.expect)((0, src_1.humanize)("prefx_request")).toBe("Request"); + }); + (0, vitest_1.it)("properly humanizes by string", () => { + inflect.human("col_rpted_bugs", "Reported bugs"); + (0, vitest_1.expect)((0, src_1.humanize)("col_rpted_bugs")).toBe("Reported bugs"); + (0, vitest_1.expect)((0, src_1.humanize)("COL_rpted_bugs")).toBe("Col rpted bugs"); + }); + (0, vitest_1.it)("properly generates ordinal suffixes", () => { + for (const [number, ordinalized] of Object.entries(cases_1.default.OrdinalNumbers)) { + (0, vitest_1.expect)(ordinalized).toBe(number + (0, src_1.ordinal)(number)); + } + }); + (0, vitest_1.it)("properly ordinalizes numbers", () => { + for (const [number, ordinalized] of Object.entries(cases_1.default.OrdinalNumbers)) { + (0, vitest_1.expect)((0, src_1.ordinalize)(number)).toBe(ordinalized); + } + }); + (0, vitest_1.it)("properly dasherizes underscored strings", () => { + for (const [underscored, dasherized] of Object.entries(cases_1.default.UnderscoresToDashes)) { + (0, vitest_1.expect)((0, src_1.dasherize)(underscored)).toBe(dasherized); + } + }); + (0, vitest_1.it)("properly underscores as reverse of dasherize", () => { + for (const [underscored, _dasherized] of Object.entries(cases_1.default.UnderscoresToDashes)) { + (0, vitest_1.expect)((0, src_1.underscore)((0, src_1.dasherize)(underscored))).toBe(underscored); + } + }); + (0, vitest_1.it)("properly underscores to lower camel", () => { + for (const [underscored, lowerCamel] of Object.entries(cases_1.default.UnderscoreToLowerCamel)) { + (0, vitest_1.expect)((0, src_1.camelize)(underscored, false)).toBe(lowerCamel); + } + }); + (0, vitest_1.it)("respects the inflector locale", () => { + (0, src_1.setInflections)("es", function (inflect) { + inflect.plural(/$/, "s"); + inflect.plural(/z$/i, "ces"); + inflect.singular(/s$/, ""); + inflect.singular(/es$/, ""); + inflect.irregular("el", "los"); + }); + (0, vitest_1.expect)((0, src_1.pluralize)("hijo", "es")).toBe("hijos"); + (0, vitest_1.expect)((0, src_1.pluralize)("luz", "es")).toBe("luces"); + (0, vitest_1.expect)((0, src_1.pluralize)("luz")).toBe("luzs"); + (0, vitest_1.expect)((0, src_1.singularize)("sociedades", "es")).toBe("sociedad"); + (0, vitest_1.expect)((0, src_1.singularize)("sociedades")).toBe("sociedade"); + (0, vitest_1.expect)((0, src_1.pluralize)("el", "es")).toBe("los"); + (0, vitest_1.expect)((0, src_1.pluralize)("el")).toBe("els"); + (0, src_1.setInflections)("es", function (inflect) { + inflect.clear(); + }); + (0, vitest_1.expect)((0, src_1.inflections)("es").plurals.length).toBe(0); + (0, vitest_1.expect)((0, src_1.inflections)("es").singulars.length).toBe(0); + (0, vitest_1.expect)((0, src_1.inflections)().plurals.length).not.toBe(0); + (0, vitest_1.expect)((0, src_1.inflections)().singulars.length).not.toBe(0); + }); + (0, vitest_1.describe)("pluralization", () => { + for (const [singular, plural] of Object.entries(cases_1.default.Irregularities)) { + (0, vitest_1.it)("respects the irregularity between " + singular + " and " + plural, () => { + (0, src_1.setInflections)("en", function (inflect) { + inflect.irregular(singular, plural); + }); + (0, vitest_1.expect)((0, src_1.singularize)(plural)).toBe(singular); + (0, vitest_1.expect)((0, src_1.pluralize)(singular)).toBe(plural); + }); + } + for (const [singular, plural] of Object.entries(cases_1.default.Irregularities)) { + (0, vitest_1.it)("makes sure that pluralize of irregularity " + plural + " is the same", () => { + (0, src_1.setInflections)("en", function (inflect) { + inflect.irregular(singular, plural); + }); + (0, vitest_1.expect)((0, src_1.pluralize)(plural)).toBe(plural); + }); + } + for (const [singular, plural] of Object.entries(cases_1.default.Irregularities)) { + (0, vitest_1.it)("makes sure that singularize of irregularity " + singular + " is the same", () => { + (0, src_1.setInflections)("en", function (inflect) { + inflect.irregular(singular, plural); + }); + (0, vitest_1.expect)((0, src_1.singularize)(singular)).toBe(singular); + }); + } + }); + for (const scope of ["plurals", "singulars", "uncountables", "humans"]) { + (0, vitest_1.it)("properly clears " + scope + " inflection scope", () => { + (0, src_1.setInflections)("en", function (inflect) { + inflect.clear(scope); + }); + (0, vitest_1.expect)((0, src_1.inflections)("en")[scope].length).toBe(0); + }); + } + (0, vitest_1.it)("properly clears all reflection scopes", () => { + (0, src_1.setInflections)("en", function (inflect) { + // ensure any data is present + inflect.plural(/(quiz)$/i, "$1zes"); + inflect.singular(/(database)s$/i, "$1"); + inflect.uncountable("series"); + inflect.human("col_rpted_bugs", "Reported bugs"); + inflect.clear("all"); + (0, vitest_1.expect)(inflect.plurals.length).toBe(0); + (0, vitest_1.expect)(inflect.singulars.length).toBe(0); + (0, vitest_1.expect)(inflect.uncountables.length).toBe(0); + (0, vitest_1.expect)(inflect.humans.length).toBe(0); + }); + }); + (0, vitest_1.it)("properly clears with default", () => { + (0, src_1.setInflections)("es", function (inflect) { + // ensure any data is present + inflect.plural(/(quiz)$/i, "$1zes"); + inflect.singular(/(database)s$/i, "$1"); + inflect.uncountable("series"); + inflect.human("col_rpted_bugs", "Reported bugs"); + inflect.clear(); + (0, vitest_1.expect)(inflect.plurals.length).toBe(0); + (0, vitest_1.expect)(inflect.singulars.length).toBe(0); + (0, vitest_1.expect)(inflect.uncountables.length).toBe(0); + (0, vitest_1.expect)(inflect.humans.length).toBe(0); + }); + }); + (0, vitest_1.it)("properly parameterizes", () => { + for (const [someString, parameterizedString] of Object.entries(cases_1.default.StringToParameterized)) { + (0, vitest_1.expect)((0, src_1.parameterize)(someString)).toBe(parameterizedString); + } + }); + (0, vitest_1.it)("properly parameterizes and normalizes", () => { + for (const [someString, parameterizedString] of Object.entries(cases_1.default.StringToParameterizedAndNormalized)) { + (0, vitest_1.expect)((0, src_1.parameterize)(someString)).toBe(parameterizedString); + } + }); + (0, vitest_1.it)("properly parameterizes with custom separator", () => { + for (const [someString, parameterizedString] of Object.entries(cases_1.default.StringToParameterizeWithUnderscore)) { + (0, vitest_1.expect)((0, src_1.parameterize)(someString, { separator: "_" })).toBe(parameterizedString); + } + }); + (0, vitest_1.it)("properly parameterizes with no separator", () => { + for (const [someString, parameterizedString] of Object.entries(cases_1.default.StringToParameterizeWithNoSeparator)) { + (0, vitest_1.expect)((0, src_1.parameterize)(someString, { separator: null })).toBe(parameterizedString); + (0, vitest_1.expect)((0, src_1.parameterize)(someString, { separator: "" })).toBe(parameterizedString); + } + }); + (0, vitest_1.it)("properly parameterizes with preserve-case option", () => { + for (const [someString, parameterizedString] of Object.entries(cases_1.default.StringToParameterizeWithPreserveCase)) { + (0, vitest_1.expect)((0, src_1.parameterize)(someString, { preserveCase: true })).toBe(parameterizedString); + } + }); + (0, vitest_1.it)("properly parameterizes with multi character separator", () => { + for (const [someString, parameterizedString] of Object.entries(cases_1.default.StringToParameterized)) { + (0, vitest_1.expect)((0, src_1.parameterize)(someString, { separator: "__sep__" })).toBe(parameterizedString.replace(/-/g, "__sep__")); + } + }); + (0, vitest_1.it)("allows overwriting transliterate approximations", () => { + (0, vitest_1.expect)((0, src_1.parameterize)("Jürgen")).toBe("jurgen"); + (0, src_1.setTransliterations)("en", (transliterate) => { + transliterate.approximate("ü", "ue"); + }); + (0, vitest_1.expect)((0, src_1.parameterize)("Jürgen")).toBe("juergen"); + }); + (0, vitest_1.it)("allows overwriting transliterate approximations for a specific locale", () => { + (0, vitest_1.expect)((0, src_1.parameterize)("Mädchen")).toBe("madchen"); + (0, vitest_1.expect)((0, src_1.parameterize)("Mädchen", { locale: "de" })).toBe("madchen"); + (0, src_1.setTransliterations)("de", (transliterate) => { + transliterate.approximate("ä", "ae"); + }); + (0, vitest_1.expect)((0, src_1.parameterize)("Mädchen")).toBe("madchen"); + (0, vitest_1.expect)((0, src_1.parameterize)("Mädchen", { locale: "de" })).toBe("maedchen"); + }); + (0, vitest_1.it)("properly converts words to constant case", () => { + for (const [words, constantCase] of Object.entries(cases_1.default.WordsToConstantCase)) { + (0, vitest_1.expect)((0, src_1.constantify)(words)).toBe(constantCase); + } + }); +}); diff --git a/dist/src/Inflector.d.ts b/dist/src/Inflector.d.ts new file mode 100644 index 0000000..e627d87 --- /dev/null +++ b/dist/src/Inflector.d.ts @@ -0,0 +1,20 @@ +import { AhoCorasick } from "./ahoCorasick"; +/** Stores all the special cases for how words can be inflected */ +export declare class Inflector { + plurals: [RegExp | string, string][]; + singulars: [RegExp | string, string][]; + uncountables: string[]; + humans: [RegExp | string, string][]; + lowerToAcronyms: Record; + casedAcronymMatcher: AhoCorasick | null; + lowerAcronymMatcher: AhoCorasick | null; + acronym(word: string): void; + plural(rule: RegExp | string, replacement: string): void; + singular(rule: RegExp | string, replacement: string): void; + irregular(singular: string, plural: string): void; + uncountable(...words: string[]): void; + human(rule: RegExp | string, replacement: string): void; + clear(scope?: "all" | "plurals" | "singulars" | "uncountables" | "humans" | "acronyms"): void; +} +export declare function inflections(locale?: string): Inflector; +export declare function setInflections(locale: string, fn: (inflector: Inflector) => void): void; diff --git a/dist/src/Inflector.js b/dist/src/Inflector.js new file mode 100644 index 0000000..e09b57c --- /dev/null +++ b/dist/src/Inflector.js @@ -0,0 +1,114 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Inflector = void 0; +exports.inflections = inflections; +exports.setInflections = setInflections; +const ahoCorasick_1 = require("./ahoCorasick"); +const defaults_1 = require("./defaults"); +function icPart(str) { + return str + .split("") + .map((c) => `(?:${c.toUpperCase()}|${c.toLowerCase()})`) + .join(""); +} +function remove(arr, elem) { + for (let i = arr.length - 1; i >= 0; i--) { + if (arr[i] === elem) { + arr.splice(i, 1); + } + } +} +/** Stores all the special cases for how words can be inflected */ +class Inflector { + constructor() { + this.plurals = []; + this.singulars = []; + this.uncountables = []; + this.humans = []; + this.lowerToAcronyms = {}; + this.casedAcronymMatcher = null; + this.lowerAcronymMatcher = null; + } + acronym(word) { + this.lowerToAcronyms[word.toLowerCase()] = word; + this.lowerAcronymMatcher = new ahoCorasick_1.AhoCorasick(Object.keys(this.lowerToAcronyms)); + this.casedAcronymMatcher = new ahoCorasick_1.AhoCorasick(Object.values(this.lowerToAcronyms)); + } + plural(rule, replacement) { + if (typeof rule === "string") { + remove(this.uncountables, rule); + } + remove(this.uncountables, replacement); + this.plurals.unshift([rule, replacement]); + } + singular(rule, replacement) { + if (typeof rule === "string") { + remove(this.uncountables, rule); + } + remove(this.uncountables, replacement); + this.singulars.unshift([rule, replacement]); + } + irregular(singular, plural) { + remove(this.uncountables, singular); + remove(this.uncountables, plural); + const s0 = singular[0]; + const sRest = singular.substr(1); + const p0 = plural[0]; + const pRest = plural.substr(1); + if (s0.toUpperCase() === p0.toUpperCase()) { + this.plural(new RegExp("(" + s0 + ")" + sRest + "$", "i"), "$1" + pRest); + this.plural(new RegExp("(" + p0 + ")" + pRest + "$", "i"), "$1" + pRest); + this.singular(new RegExp("(" + s0 + ")" + sRest + "$", "i"), "$1" + sRest); + this.singular(new RegExp("(" + p0 + ")" + pRest + "$", "i"), "$1" + sRest); + } + else { + const sRestIC = icPart(sRest); + const pRestIC = icPart(pRest); + this.plural(new RegExp(s0.toUpperCase() + sRestIC + "$"), p0.toUpperCase() + pRest); + this.plural(new RegExp(s0.toLowerCase() + sRestIC + "$"), p0.toLowerCase() + pRest); + this.plural(new RegExp(p0.toUpperCase() + pRestIC + "$"), p0.toUpperCase() + pRest); + this.plural(new RegExp(p0.toLowerCase() + pRestIC + "$"), p0.toLowerCase() + pRest); + this.singular(new RegExp(s0.toUpperCase() + sRestIC + "$"), s0.toUpperCase() + sRest); + this.singular(new RegExp(s0.toLowerCase() + sRestIC + "$"), s0.toLowerCase() + sRest); + this.singular(new RegExp(p0.toUpperCase() + pRestIC + "$"), s0.toUpperCase() + sRest); + this.singular(new RegExp(p0.toLowerCase() + pRestIC + "$"), s0.toLowerCase() + sRest); + } + } + uncountable(...words) { + this.uncountables = this.uncountables.concat(words); + } + human(rule, replacement) { + this.humans.unshift([rule, replacement]); + } + clear(scope = "all") { + if (scope === "all") { + this.plurals = []; + this.singulars = []; + this.uncountables = []; + this.humans = []; + this.lowerToAcronyms = {}; + this.casedAcronymMatcher = null; + this.lowerAcronymMatcher = null; + } + else if (scope === "acronyms") { + this.lowerToAcronyms = {}; + this.casedAcronymMatcher = null; + this.lowerAcronymMatcher = null; + } + else { + this[scope] = []; + } + } +} +exports.Inflector = Inflector; +const instances = {}; +function inflections(locale = "en") { + instances[locale] ?? (instances[locale] = new Inflector()); + return instances[locale]; +} +function setInflections(locale, fn) { + fn(inflections(locale)); +} +for (const locale in defaults_1.defaults) { + setInflections(locale, defaults_1.defaults[locale]); +} diff --git a/dist/src/Transliterator.d.ts b/dist/src/Transliterator.d.ts new file mode 100644 index 0000000..1a36aae --- /dev/null +++ b/dist/src/Transliterator.d.ts @@ -0,0 +1,12 @@ +export declare class Transliterator { + approximations: Record; + constructor(); + approximate(char: string, replacement: string): void; + transliterate(string: string, replacement: string): string; +} +export declare function transliterations(locale?: string): Transliterator; +export declare function setTransliterations(locale: string, fn: (transliterator: Transliterator) => void): void; +export declare function transliterate(string: string, options?: { + locale?: string; + replacement?: string; +}): string; diff --git a/dist/src/Transliterator.js b/dist/src/Transliterator.js new file mode 100644 index 0000000..d1a313b --- /dev/null +++ b/dist/src/Transliterator.js @@ -0,0 +1,77 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Transliterator = void 0; +exports.transliterations = transliterations; +exports.setTransliterations = setTransliterations; +exports.transliterate = transliterate; +/* eslint-disable no-control-regex */ +// prettier-ignore +const DEFAULT_APPROXIMATIONS = { + 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', + 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', + 'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', + 'Õ': 'O', 'Ö': 'O', '×': 'x', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', + 'Ü': 'U', 'Ý': 'Y', 'Þ': 'Th', 'ß': 'ss', 'à': 'a', 'á': 'a', 'â': 'a', + 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', + 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', + 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ø': 'o', + 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y', + 'Ā': 'A', 'ā': 'a', 'Ă': 'A', 'ă': 'a', 'Ą': 'A', 'ą': 'a', 'Ć': 'C', + 'ć': 'c', 'Ĉ': 'C', 'ĉ': 'c', 'Ċ': 'C', 'ċ': 'c', 'Č': 'C', 'č': 'c', + 'Ď': 'D', 'ď': 'd', 'Đ': 'D', 'đ': 'd', 'Ē': 'E', 'ē': 'e', 'Ĕ': 'E', + 'ĕ': 'e', 'Ė': 'E', 'ė': 'e', 'Ę': 'E', 'ę': 'e', 'Ě': 'E', 'ě': 'e', + 'Ĝ': 'G', 'ĝ': 'g', 'Ğ': 'G', 'ğ': 'g', 'Ġ': 'G', 'ġ': 'g', 'Ģ': 'G', + 'ģ': 'g', 'Ĥ': 'H', 'ĥ': 'h', 'Ħ': 'H', 'ħ': 'h', 'Ĩ': 'I', 'ĩ': 'i', + 'Ī': 'I', 'ī': 'i', 'Ĭ': 'I', 'ĭ': 'i', 'Į': 'I', 'į': 'i', 'İ': 'I', + 'ı': 'i', 'IJ': 'IJ', 'ij': 'ij', 'Ĵ': 'J', 'ĵ': 'j', 'Ķ': 'K', 'ķ': 'k', + 'ĸ': 'k', 'Ĺ': 'L', 'ĺ': 'l', 'Ļ': 'L', 'ļ': 'l', 'Ľ': 'L', 'ľ': 'l', + 'Ŀ': 'L', 'ŀ': 'l', 'Ł': 'L', 'ł': 'l', 'Ń': 'N', 'ń': 'n', 'Ņ': 'N', + 'ņ': 'n', 'Ň': 'N', 'ň': 'n', 'ʼn': '\'n', 'Ŋ': 'NG', 'ŋ': 'ng', + 'Ō': 'O', 'ō': 'o', 'Ŏ': 'O', 'ŏ': 'o', 'Ő': 'O', 'ő': 'o', 'Œ': 'OE', + 'œ': 'oe', 'Ŕ': 'R', 'ŕ': 'r', 'Ŗ': 'R', 'ŗ': 'r', 'Ř': 'R', 'ř': 'r', + 'Ś': 'S', 'ś': 's', 'Ŝ': 'S', 'ŝ': 's', 'Ş': 'S', 'ş': 's', 'Š': 'S', + 'š': 's', 'Ţ': 'T', 'ţ': 't', 'Ť': 'T', 'ť': 't', 'Ŧ': 'T', 'ŧ': 't', + 'Ũ': 'U', 'ũ': 'u', 'Ū': 'U', 'ū': 'u', 'Ŭ': 'U', 'ŭ': 'u', 'Ů': 'U', + 'ů': 'u', 'Ű': 'U', 'ű': 'u', 'Ų': 'U', 'ų': 'u', 'Ŵ': 'W', 'ŵ': 'w', + 'Ŷ': 'Y', 'ŷ': 'y', 'Ÿ': 'Y', 'Ź': 'Z', 'ź': 'z', 'Ż': 'Z', 'ż': 'z', + 'Ž': 'Z', 'ž': 'z', + 'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'E', + 'Ж': 'ZH', 'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M', + 'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', + 'Ф': 'F', 'Х': 'KH', 'Ц': 'C', 'Ч': 'CH', 'Ш': 'SH', 'Щ': 'SHCH', + 'Ъ': '', 'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'YU', 'Я': 'YA', + 'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'e', + 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', + 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', + 'ф': 'f', 'х': 'kh', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'shch', + 'ъ': '', 'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya' +}; +const DEFAULT_REPLACEMENT_CHAR = "?"; +class Transliterator { + constructor() { + this.approximations = {}; + for (const [source, replacement] of Object.entries(DEFAULT_APPROXIMATIONS)) { + this.approximate(source, replacement); + } + } + approximate(char, replacement) { + this.approximations[char] = replacement; + } + transliterate(string, replacement) { + return string.replace(/[^\u0000-\u007f]/g, c => this.approximations[c] || replacement || DEFAULT_REPLACEMENT_CHAR); + } +} +exports.Transliterator = Transliterator; +const instances = {}; +function transliterations(locale = "en") { + instances[locale] ?? (instances[locale] = new Transliterator()); + return instances[locale]; +} +function setTransliterations(locale, fn) { + fn(transliterations(locale)); +} +function transliterate(string, options = {}) { + const locale = options.locale || "en"; + const replacement = options.replacement || "?"; + return transliterations(locale).transliterate(string, replacement); +} diff --git a/dist/src/ahoCorasick.d.ts b/dist/src/ahoCorasick.d.ts new file mode 100644 index 0000000..3975c4c --- /dev/null +++ b/dist/src/ahoCorasick.d.ts @@ -0,0 +1,13 @@ +/** + * aho-corasick fast string subsearching algorithm implementation + * taken from https://github.com/sonofmagic/modern-ahocorasick/blob/26c881a43f5da1029b31bba86be5fa1d78df58c9/src/index.ts and modified for our uses to check for word boundaries or subsequent matches for searches + */ +export declare class AhoCorasick { + gotoFn: Record>; + output: Record; + failure: Record; + constructor(keywords: string[]); + search(str: string, testWordBoundary?: typeof isWordBoundary, prefix?: boolean): [number, string][]; +} +declare function isWordBoundary(char: string): boolean; +export {}; diff --git a/dist/src/ahoCorasick.js b/dist/src/ahoCorasick.js new file mode 100644 index 0000000..f8fa806 --- /dev/null +++ b/dist/src/ahoCorasick.js @@ -0,0 +1,138 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AhoCorasick = void 0; +/** + * aho-corasick fast string subsearching algorithm implementation + * taken from https://github.com/sonofmagic/modern-ahocorasick/blob/26c881a43f5da1029b31bba86be5fa1d78df58c9/src/index.ts and modified for our uses to check for word boundaries or subsequent matches for searches + */ +class AhoCorasick { + constructor(keywords) { + var _a, _b; + this.gotoFn = { + // 0 is the root state + 0: {}, + // 1 is the word or string boundary state where we can start matching against the keywords + 1: {}, + }; + this.output = {}; + this.failure = { + 1: 0, + }; + let stateCounter = 1; + for (const word of keywords) { + let curr = 1; + for (const char of word) { + if (this.gotoFn[curr] && char in this.gotoFn[curr]) { + curr = this.gotoFn[curr][char]; + } + else { + stateCounter++; + this.gotoFn[stateCounter] = {}; + this.gotoFn[curr][char] = stateCounter; + curr = stateCounter; + } + } + this.output[curr] = word; + // output states can fall back to the word boundary state as they just finished a match + this.failure[curr] = 1; + } + const stateQueue = []; + // f(s) = 0 for all states of depth 1 (the ones from which the word boundary state can transition to) + for (const [_startState, destinationState] of Object.entries(this.gotoFn[1])) { + (_a = this.failure)[destinationState] ?? (_a[destinationState] = 0); + stateQueue.push(destinationState); + } + while (stateQueue.length > 0) { + const stateNumber = stateQueue.shift(); + if (stateNumber !== undefined) { + for (const [fromState, toState] of Object.entries(this.gotoFn[stateNumber])) { + stateQueue.push(toState); + // set state = f(r) + let cursor = this.failure[stateNumber]; + while (cursor > 0 && !(fromState in this.gotoFn[cursor])) { + cursor = this.failure[cursor]; + } + if (fromState in this.gotoFn[cursor]) { + const fs = this.gotoFn[cursor][fromState]; + this.failure[toState] = fs; + this.output[toState] = + this.output[fs] && this.output[fs].length > this.output[toState].length ? this.output[fs] : this.output[toState]; + } + else { + (_b = this.failure)[toState] ?? (_b[toState] = 0); + } + } + } + // for each symbol a such that g(r, a) = s + } + } + search(str, testWordBoundary = isWordBoundary, prefix = false) { + let state = 1; + let matchStack = []; + let matchStackPos = 0; + const results = []; + for (let i = 0; i < str.length; i++) { + const char = str[i]; + // if we don't have a transition for the current character, move to the next state based on the failure function links + while (state > 1 && !(char in this.gotoFn[state])) { + state = this.failure[state]; + } + const isWordBoundary = testWordBoundary(char); + // if we don't have a goto state after following failure links, we should go back to the base state. which base state depends on if we're at a word boundary or not + let canProcessState = char in this.gotoFn[state]; + if (!canProcessState) { + if (isWordBoundary) { + state = 1; + } + else { + state = 0; + } + } + if (state == 1 && isWordBoundary) { + // if we are at a word boundary and the match stack has entries, we should add them to the results + if (matchStack.length > 0 && matchStackPos === i - 1) { + results.push(...matchStack); + } + matchStack = []; + matchStackPos = 0; + // now that we're in the word boundary state, see if we can actually process this character + canProcessState = char in this.gotoFn[state]; + } + if (!canProcessState) { + if (prefix) { + break; + } + else { + continue; + } + } + state = this.gotoFn[state][char]; + const outputValue = this.output[state]; + if (outputValue) { + const start = i - outputValue.length + 1; + const prevMatch = matchStack[matchStack.length - 1]; + if (prevMatch && prevMatch[0] >= start) { + // if this match is a longer match than the previous one, we should replace it + matchStack[matchStack.length - 1] = [i, outputValue]; + } + else { + // otherwise, add it to the match stack + matchStack.push([i, outputValue]); + } + matchStackPos = i; + } + } + if (matchStack.length > 0 && matchStackPos === str.length - 1) { + results.push(...matchStack); + } + return results; + } +} +exports.AhoCorasick = AhoCorasick; +function isWordBoundary(char) { + const charCode = char.charCodeAt(0); + const isBasicLatinLetterOrDigit = (charCode >= 65 && charCode <= 90) || // A-Z + (charCode >= 97 && charCode <= 122) || // a-z + (charCode >= 48 && charCode <= 57); // 0-9 + return !isBasicLatinLetterOrDigit; +} diff --git a/dist/src/applyInflections.d.ts b/dist/src/applyInflections.d.ts new file mode 100644 index 0000000..1510efc --- /dev/null +++ b/dist/src/applyInflections.d.ts @@ -0,0 +1 @@ +export declare function applyInflections(word: string, rules: [RegExp | string, string][]): string; diff --git a/dist/src/applyInflections.js b/dist/src/applyInflections.js new file mode 100644 index 0000000..c6cde7a --- /dev/null +++ b/dist/src/applyInflections.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.applyInflections = applyInflections; +const Inflector_1 = require("./Inflector"); +function applyInflections(word, rules) { + let result = word; + const inflector = (0, Inflector_1.inflections)(); + if (result.length === 0) { + return result; + } + const match = result.toLowerCase().match(/\b\w+$/); + if (match && inflector.uncountables.indexOf(match[0]) > -1) { + return result; + } + else { + for (const rule of rules) { + const [regex, replacement] = rule; + if (result.match(regex)) { + result = result.replace(regex, replacement); + break; + } + } + return result; + } +} diff --git a/dist/src/cache.d.ts b/dist/src/cache.d.ts new file mode 100644 index 0000000..985f701 --- /dev/null +++ b/dist/src/cache.d.ts @@ -0,0 +1,5 @@ +/** Wrap a given function in a cache that is off by default */ +export declare const cacheable: any>(fn: T, getCacheKey?: (...args: Parameters) => string) => T & { + cache: Map>; + populate: (...args: Parameters) => void; +}; diff --git a/dist/src/cache.js b/dist/src/cache.js new file mode 100644 index 0000000..70acebf --- /dev/null +++ b/dist/src/cache.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cacheable = void 0; +/** Wrap a given function in a cache that is off by default */ +const cacheable = (fn, getCacheKey = ((str) => str)) => { + const cache = new Map(); + const cachedFn = Object.assign(function (...args) { + return cache.get(getCacheKey(...args)) ?? fn.call(this, ...args); + }, { + cache, + populate: (...args) => { + cache.set(getCacheKey(...args), fn(...args)); + }, + }); + return cachedFn; +}; +exports.cacheable = cacheable; diff --git a/dist/src/camelize.d.ts b/dist/src/camelize.d.ts new file mode 100644 index 0000000..237036f --- /dev/null +++ b/dist/src/camelize.d.ts @@ -0,0 +1,4 @@ +export declare const camelize: ((term: string, uppercaseFirstLetter?: any) => string) & { + cache: Map; + populate: (term: string, uppercaseFirstLetter?: any) => void; +}; diff --git a/dist/src/camelize.js b/dist/src/camelize.js new file mode 100644 index 0000000..a27a33b --- /dev/null +++ b/dist/src/camelize.js @@ -0,0 +1,48 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.camelize = void 0; +const Inflector_1 = require("./Inflector"); +const cache_1 = require("./cache"); +const capitalize_1 = require("./capitalize"); +const separators = /(?:_|(\/))([a-z\d]*)/gi; +exports.camelize = (0, cache_1.cacheable)((term, uppercaseFirstLetter = true) => { + const inflector = (0, Inflector_1.inflections)(); + let result = term; + if (uppercaseFirstLetter) { + const startAcronym = findLongestStartAcronym(inflector.lowerAcronymMatcher, term); + if (startAcronym) { + result = inflector.lowerToAcronyms[startAcronym] + result.slice(startAcronym.length); + } + else { + result = term.charAt(0).toUpperCase() + term.slice(1); + } + } + else { + const startAcronym = findLongestStartAcronym(inflector.casedAcronymMatcher, term); + if (startAcronym) { + result = startAcronym.toLowerCase() + result.slice(startAcronym.length); + } + else { + result = term.charAt(0).toLowerCase() + term.slice(1); + } + } + result = result.replace(separators, (_match, separator, word) => { + word = inflector.lowerToAcronyms[word] ?? (0, capitalize_1.capitalize)(word); + if (separator) { + return separator + word; + } + else { + return word; + } + }); + return result; +}, (term, uppercaseFirstLetter) => `${term}-${uppercaseFirstLetter}`); +const findLongestStartAcronym = (matcher, word) => { + if (!matcher) + return null; + const results = matcher.search(word, undefined, true); + if (results.length > 0) { + return results[0][1]; + } + return null; +}; diff --git a/dist/src/capitalize.d.ts b/dist/src/capitalize.d.ts new file mode 100644 index 0000000..1b5f60b --- /dev/null +++ b/dist/src/capitalize.d.ts @@ -0,0 +1 @@ +export declare function capitalize(str: string | null | undefined): string; diff --git a/dist/src/capitalize.js b/dist/src/capitalize.js new file mode 100644 index 0000000..b2251fe --- /dev/null +++ b/dist/src/capitalize.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.capitalize = capitalize; +function capitalize(str) { + if (str === null || str === undefined) { + return ""; + } + return str.charAt(0).toUpperCase() + str.slice(1); +} diff --git a/dist/src/classify.d.ts b/dist/src/classify.d.ts new file mode 100644 index 0000000..dc703ad --- /dev/null +++ b/dist/src/classify.d.ts @@ -0,0 +1,4 @@ +export declare const classify: ((tableName: string) => string) & { + cache: Map; + populate: (tableName: string) => void; +}; diff --git a/dist/src/classify.js b/dist/src/classify.js new file mode 100644 index 0000000..ec8c408 --- /dev/null +++ b/dist/src/classify.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.classify = void 0; +const cache_1 = require("./cache"); +const camelize_1 = require("./camelize"); +const singularize_1 = require("./singularize"); +exports.classify = (0, cache_1.cacheable)((tableName) => (0, camelize_1.camelize)((0, singularize_1.singularize)(tableName.replace(/.*\./g, "")))); diff --git a/dist/src/constantify.d.ts b/dist/src/constantify.d.ts new file mode 100644 index 0000000..ba11071 --- /dev/null +++ b/dist/src/constantify.d.ts @@ -0,0 +1,4 @@ +export declare const constantify: ((word: string) => string) & { + cache: Map; + populate: (word: string) => void; +}; diff --git a/dist/src/constantify.js b/dist/src/constantify.js new file mode 100644 index 0000000..1641bbc --- /dev/null +++ b/dist/src/constantify.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.constantify = void 0; +const cache_1 = require("./cache"); +const underscore_1 = require("./underscore"); +exports.constantify = (0, cache_1.cacheable)((word) => { + return (0, underscore_1.underscore)(word).toUpperCase().replace(/\s+/g, "_"); +}); diff --git a/dist/src/dasherize.d.ts b/dist/src/dasherize.d.ts new file mode 100644 index 0000000..6adb848 --- /dev/null +++ b/dist/src/dasherize.d.ts @@ -0,0 +1 @@ +export declare function dasherize(underscoredWord: string): string; diff --git a/dist/src/dasherize.js b/dist/src/dasherize.js new file mode 100644 index 0000000..e28cda0 --- /dev/null +++ b/dist/src/dasherize.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.dasherize = dasherize; +function dasherize(underscoredWord) { + return underscoredWord.replace(/_/g, "-"); +} diff --git a/dist/src/defaults.d.ts b/dist/src/defaults.d.ts new file mode 100644 index 0000000..cf6e03c --- /dev/null +++ b/dist/src/defaults.d.ts @@ -0,0 +1,2 @@ +import type { Inflector } from "./Inflector"; +export declare const defaults: Record void>; diff --git a/dist/src/defaults.js b/dist/src/defaults.js new file mode 100644 index 0000000..3f940d2 --- /dev/null +++ b/dist/src/defaults.js @@ -0,0 +1,63 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaults = void 0; +function en(inflector) { + inflector.plural(/$/, "s"); + inflector.plural(/s$/i, "s"); + inflector.plural(/^(ax|test)is$/i, "$1es"); + inflector.plural(/(octop|vir)us$/i, "$1i"); + inflector.plural(/(octop|vir)i$/i, "$1i"); + inflector.plural(/(alias|status)$/i, "$1es"); + inflector.plural(/(bu)s$/i, "$1ses"); + inflector.plural(/(buffal|tomat)o$/i, "$1oes"); + inflector.plural(/([ti])um$/i, "$1a"); + inflector.plural(/([ti])a$/i, "$1a"); + inflector.plural(/sis$/i, "ses"); + inflector.plural(/(?:([^f])fe|([lr])f)$/i, "$1$2ves"); + inflector.plural(/(hive)$/i, "$1s"); + inflector.plural(/([^aeiouy]|qu)y$/i, "$1ies"); + inflector.plural(/(x|ch|ss|sh)$/i, "$1es"); + inflector.plural(/(matr|vert|ind)(?:ix|ex)$/i, "$1ices"); + inflector.plural(/^(m|l)ouse$/i, "$1ice"); + inflector.plural(/^(m|l)ice$/i, "$1ice"); + inflector.plural(/^(ox)$/i, "$1en"); + inflector.plural(/^(oxen)$/i, "$1"); + inflector.plural(/(quiz)$/i, "$1zes"); + inflector.singular(/s$/i, ""); + inflector.singular(/(ss)$/i, "$1"); + inflector.singular(/(n)ews$/i, "$1ews"); + inflector.singular(/([ti])a$/i, "$1um"); + inflector.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)(sis|ses)$/i, "$1sis"); + inflector.singular(/(^analy)(sis|ses)$/i, "$1sis"); + inflector.singular(/([^f])ves$/i, "$1fe"); + inflector.singular(/(hive)s$/i, "$1"); + inflector.singular(/(tive)s$/i, "$1"); + inflector.singular(/([lr])ves$/i, "$1f"); + inflector.singular(/([^aeiouy]|qu)ies$/i, "$1y"); + inflector.singular(/(s)eries$/i, "$1eries"); + inflector.singular(/(m)ovies$/i, "$1ovie"); + inflector.singular(/(x|ch|ss|sh)es$/i, "$1"); + inflector.singular(/^(m|l)ice$/i, "$1ouse"); + inflector.singular(/(bus)(es)?$/i, "$1"); + inflector.singular(/(o)es$/i, "$1"); + inflector.singular(/(shoe)s$/i, "$1"); + inflector.singular(/(cris|test)(is|es)$/i, "$1is"); + inflector.singular(/^(a)x[ie]s$/i, "$1xis"); + inflector.singular(/(octop|vir)(us|i)$/i, "$1us"); + inflector.singular(/(alias|status)(es)?$/i, "$1"); + inflector.singular(/^(ox)en/i, "$1"); + inflector.singular(/(vert|ind)ices$/i, "$1ex"); + inflector.singular(/(matr)ices$/i, "$1ix"); + inflector.singular(/(quiz)zes$/i, "$1"); + inflector.singular(/(database)s$/i, "$1"); + inflector.irregular("person", "people"); + inflector.irregular("man", "men"); + inflector.irregular("child", "children"); + inflector.irregular("sex", "sexes"); + inflector.irregular("move", "moves"); + inflector.irregular("zombie", "zombies"); + inflector.uncountable("equipment", "information", "rice", "money", "species", "series", "fish", "sheep", "jeans", "police"); +} +exports.defaults = { + en, +}; diff --git a/dist/src/foreignKey.d.ts b/dist/src/foreignKey.d.ts new file mode 100644 index 0000000..4f3c9cc --- /dev/null +++ b/dist/src/foreignKey.d.ts @@ -0,0 +1 @@ +export declare function foreignKey(className: string, separateWithUnderscore?: boolean): string; diff --git a/dist/src/foreignKey.js b/dist/src/foreignKey.js new file mode 100644 index 0000000..59bcd61 --- /dev/null +++ b/dist/src/foreignKey.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.foreignKey = foreignKey; +const underscore_1 = require("./underscore"); +function foreignKey(className, separateWithUnderscore = true) { + return `${(0, underscore_1.underscore)(className)}${separateWithUnderscore ? "_id" : "id"}`; +} diff --git a/dist/src/humanize.d.ts b/dist/src/humanize.d.ts new file mode 100644 index 0000000..a9517cb --- /dev/null +++ b/dist/src/humanize.d.ts @@ -0,0 +1,8 @@ +export declare const humanize: ((lowerCaseAndUnderscoredWord: string, options?: { + capitalize?: boolean; +}) => string) & { + cache: Map; + populate: (lowerCaseAndUnderscoredWord: string, options?: { + capitalize?: boolean; + } | undefined) => void; +}; diff --git a/dist/src/humanize.js b/dist/src/humanize.js new file mode 100644 index 0000000..f82ef34 --- /dev/null +++ b/dist/src/humanize.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.humanize = void 0; +const Inflector_1 = require("./Inflector"); +const cache_1 = require("./cache"); +exports.humanize = (0, cache_1.cacheable)((lowerCaseAndUnderscoredWord, options) => { + let result = "" + lowerCaseAndUnderscoredWord; + const inflector = (0, Inflector_1.inflections)(); + const humans = inflector.humans; + let human, rule, replacement; + options = options || {}; + if (options.capitalize === null || options.capitalize === undefined) { + options.capitalize = true; + } + for (let i = 0, ii = humans.length; i < ii; i++) { + human = humans[i]; + rule = human[0]; + replacement = human[1]; + if (rule instanceof RegExp ? rule.test(result) : result.indexOf(rule) > -1) { + result = result.replace(rule, replacement); + break; + } + } + result = result.replace(/_id$/, ""); + result = result.replace(/_/g, " "); + result = result.replace(/([a-z\d]*)/gi, function (match) { + return inflector.lowerToAcronyms[match] || match.toLowerCase(); + }); + if (options.capitalize) { + result = result.replace(/^\w/, function (match) { + return match.toUpperCase(); + }); + } + return result; +}, (lowerCaseAndUnderscoredWord, options) => `${lowerCaseAndUnderscoredWord}-${options?.capitalize}`); diff --git a/dist/src/index.d.ts b/dist/src/index.d.ts new file mode 100644 index 0000000..7281cf3 --- /dev/null +++ b/dist/src/index.d.ts @@ -0,0 +1,17 @@ +export { pluralize } from "./pluralize"; +export { singularize } from "./singularize"; +export { camelize } from "./camelize"; +export { underscore } from "./underscore"; +export { humanize } from "./humanize"; +export { titleize } from "./titleize"; +export { tableize } from "./tableize"; +export { classify } from "./classify"; +export { dasherize } from "./dasherize"; +export { foreignKey } from "./foreignKey"; +export { ordinal } from "./ordinal"; +export { ordinalize } from "./ordinalize"; +export { parameterize } from "./parameterize"; +export { capitalize } from "./capitalize"; +export { inflections, setInflections } from "./Inflector"; +export { transliterations, setTransliterations, transliterate } from "./Transliterator"; +export { constantify } from "./constantify"; diff --git a/dist/src/index.js b/dist/src/index.js new file mode 100644 index 0000000..04aff38 --- /dev/null +++ b/dist/src/index.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.constantify = exports.transliterate = exports.setTransliterations = exports.transliterations = exports.setInflections = exports.inflections = exports.capitalize = exports.parameterize = exports.ordinalize = exports.ordinal = exports.foreignKey = exports.dasherize = exports.classify = exports.tableize = exports.titleize = exports.humanize = exports.underscore = exports.camelize = exports.singularize = exports.pluralize = void 0; +var pluralize_1 = require("./pluralize"); +Object.defineProperty(exports, "pluralize", { enumerable: true, get: function () { return pluralize_1.pluralize; } }); +var singularize_1 = require("./singularize"); +Object.defineProperty(exports, "singularize", { enumerable: true, get: function () { return singularize_1.singularize; } }); +var camelize_1 = require("./camelize"); +Object.defineProperty(exports, "camelize", { enumerable: true, get: function () { return camelize_1.camelize; } }); +var underscore_1 = require("./underscore"); +Object.defineProperty(exports, "underscore", { enumerable: true, get: function () { return underscore_1.underscore; } }); +var humanize_1 = require("./humanize"); +Object.defineProperty(exports, "humanize", { enumerable: true, get: function () { return humanize_1.humanize; } }); +var titleize_1 = require("./titleize"); +Object.defineProperty(exports, "titleize", { enumerable: true, get: function () { return titleize_1.titleize; } }); +var tableize_1 = require("./tableize"); +Object.defineProperty(exports, "tableize", { enumerable: true, get: function () { return tableize_1.tableize; } }); +var classify_1 = require("./classify"); +Object.defineProperty(exports, "classify", { enumerable: true, get: function () { return classify_1.classify; } }); +var dasherize_1 = require("./dasherize"); +Object.defineProperty(exports, "dasherize", { enumerable: true, get: function () { return dasherize_1.dasherize; } }); +var foreignKey_1 = require("./foreignKey"); +Object.defineProperty(exports, "foreignKey", { enumerable: true, get: function () { return foreignKey_1.foreignKey; } }); +var ordinal_1 = require("./ordinal"); +Object.defineProperty(exports, "ordinal", { enumerable: true, get: function () { return ordinal_1.ordinal; } }); +var ordinalize_1 = require("./ordinalize"); +Object.defineProperty(exports, "ordinalize", { enumerable: true, get: function () { return ordinalize_1.ordinalize; } }); +var parameterize_1 = require("./parameterize"); +Object.defineProperty(exports, "parameterize", { enumerable: true, get: function () { return parameterize_1.parameterize; } }); +var capitalize_1 = require("./capitalize"); +Object.defineProperty(exports, "capitalize", { enumerable: true, get: function () { return capitalize_1.capitalize; } }); +var Inflector_1 = require("./Inflector"); +Object.defineProperty(exports, "inflections", { enumerable: true, get: function () { return Inflector_1.inflections; } }); +Object.defineProperty(exports, "setInflections", { enumerable: true, get: function () { return Inflector_1.setInflections; } }); +var Transliterator_1 = require("./Transliterator"); +Object.defineProperty(exports, "transliterations", { enumerable: true, get: function () { return Transliterator_1.transliterations; } }); +Object.defineProperty(exports, "setTransliterations", { enumerable: true, get: function () { return Transliterator_1.setTransliterations; } }); +Object.defineProperty(exports, "transliterate", { enumerable: true, get: function () { return Transliterator_1.transliterate; } }); +var constantify_1 = require("./constantify"); +Object.defineProperty(exports, "constantify", { enumerable: true, get: function () { return constantify_1.constantify; } }); diff --git a/dist/src/ordinal.d.ts b/dist/src/ordinal.d.ts new file mode 100644 index 0000000..2754c66 --- /dev/null +++ b/dist/src/ordinal.d.ts @@ -0,0 +1 @@ +export declare function ordinal(number: string | number): "th" | "st" | "nd" | "rd"; diff --git a/dist/src/ordinal.js b/dist/src/ordinal.js new file mode 100644 index 0000000..399abf7 --- /dev/null +++ b/dist/src/ordinal.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ordinal = ordinal; +function ordinal(number) { + const absNumber = Math.abs(Number(number)); + const mod100 = absNumber % 100; + if (mod100 === 11 || mod100 === 12 || mod100 === 13) { + return "th"; + } + else { + switch (absNumber % 10) { + case 1: + return "st"; + case 2: + return "nd"; + case 3: + return "rd"; + default: + return "th"; + } + } +} diff --git a/dist/src/ordinalize.d.ts b/dist/src/ordinalize.d.ts new file mode 100644 index 0000000..c805de8 --- /dev/null +++ b/dist/src/ordinalize.d.ts @@ -0,0 +1 @@ +export declare function ordinalize(number: string | number): string; diff --git a/dist/src/ordinalize.js b/dist/src/ordinalize.js new file mode 100644 index 0000000..efbf556 --- /dev/null +++ b/dist/src/ordinalize.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ordinalize = ordinalize; +const ordinal_1 = require("./ordinal"); +function ordinalize(number) { + return `${number}${(0, ordinal_1.ordinal)(number)}`; +} diff --git a/dist/src/parameterize.d.ts b/dist/src/parameterize.d.ts new file mode 100644 index 0000000..ff767c2 --- /dev/null +++ b/dist/src/parameterize.d.ts @@ -0,0 +1,12 @@ +export declare const parameterize: ((string: string, options?: { + locale?: string; + separator?: string | null; + preserveCase?: boolean; +}) => string) & { + cache: Map; + populate: (string: string, options?: { + locale?: string; + separator?: string | null; + preserveCase?: boolean; + } | undefined) => void; +}; diff --git a/dist/src/parameterize.js b/dist/src/parameterize.js new file mode 100644 index 0000000..5f53b25 --- /dev/null +++ b/dist/src/parameterize.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parameterize = void 0; +const cache_1 = require("./cache"); +const Transliterator_1 = require("./Transliterator"); +exports.parameterize = (0, cache_1.cacheable)((string, options = {}) => { + if (options.separator === undefined) { + options.separator = "-"; + } + if (options.separator === null) { + options.separator = ""; + } + // replace accented chars with their ascii equivalents + let result = (0, Transliterator_1.transliterate)(string, { locale: options.locale }); + result = result.replace(/[^a-z0-9\-_]+/gi, options.separator); + if (options.separator.length) { + const separatorRegex = new RegExp(options.separator); + // no more than one of the separator in a row + result = result.replace(new RegExp(separatorRegex.source + "{2,}"), options.separator); + // remove leading/trailing separator + result = result.replace(new RegExp("^" + separatorRegex.source + "|" + separatorRegex.source + "$", "i"), ""); + } + if (options.preserveCase) { + return result; + } + return result.toLowerCase(); +}, (string, options) => `${string}-${options?.locale}-${options?.separator}-${options?.preserveCase}`); diff --git a/dist/src/pluralize.d.ts b/dist/src/pluralize.d.ts new file mode 100644 index 0000000..7dc6d70 --- /dev/null +++ b/dist/src/pluralize.d.ts @@ -0,0 +1,4 @@ +export declare const pluralize: ((word: string, locale?: any) => string) & { + cache: Map; + populate: (word: string, locale?: any) => void; +}; diff --git a/dist/src/pluralize.js b/dist/src/pluralize.js new file mode 100644 index 0000000..7e10021 --- /dev/null +++ b/dist/src/pluralize.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.pluralize = void 0; +const applyInflections_1 = require("./applyInflections"); +const cache_1 = require("./cache"); +const Inflector_1 = require("./Inflector"); +exports.pluralize = (0, cache_1.cacheable)((word, locale = "en") => (0, applyInflections_1.applyInflections)(word, (0, Inflector_1.inflections)(locale).plurals), (word, locale) => `${word}-${locale}`); diff --git a/dist/src/singularize.d.ts b/dist/src/singularize.d.ts new file mode 100644 index 0000000..7f822a6 --- /dev/null +++ b/dist/src/singularize.d.ts @@ -0,0 +1,4 @@ +export declare const singularize: ((word: string, locale?: any) => string) & { + cache: Map; + populate: (word: string, locale?: any) => void; +}; diff --git a/dist/src/singularize.js b/dist/src/singularize.js new file mode 100644 index 0000000..fee5fe6 --- /dev/null +++ b/dist/src/singularize.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.singularize = void 0; +const applyInflections_1 = require("./applyInflections"); +const cache_1 = require("./cache"); +const Inflector_1 = require("./Inflector"); +exports.singularize = (0, cache_1.cacheable)((word, locale = "en") => (0, applyInflections_1.applyInflections)(word, (0, Inflector_1.inflections)(locale).singulars), (word, locale) => `${word}-${locale}`); diff --git a/dist/src/tableize.d.ts b/dist/src/tableize.d.ts new file mode 100644 index 0000000..1c4603f --- /dev/null +++ b/dist/src/tableize.d.ts @@ -0,0 +1 @@ +export declare function tableize(className: string): string; diff --git a/dist/src/tableize.js b/dist/src/tableize.js new file mode 100644 index 0000000..807b3a4 --- /dev/null +++ b/dist/src/tableize.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.tableize = tableize; +const pluralize_1 = require("./pluralize"); +const underscore_1 = require("./underscore"); +function tableize(className) { + return (0, pluralize_1.pluralize)((0, underscore_1.underscore)(className)); +} diff --git a/dist/src/titleize.d.ts b/dist/src/titleize.d.ts new file mode 100644 index 0000000..878c15a --- /dev/null +++ b/dist/src/titleize.d.ts @@ -0,0 +1 @@ +export declare function titleize(word: string): string; diff --git a/dist/src/titleize.js b/dist/src/titleize.js new file mode 100644 index 0000000..80bf94e --- /dev/null +++ b/dist/src/titleize.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.titleize = titleize; +const humanize_1 = require("./humanize"); +const underscore_1 = require("./underscore"); +function titleize(word) { + return (0, humanize_1.humanize)((0, underscore_1.underscore)(word)).replace(/(^|[\s¿/]+)([a-z])/g, function (match, boundary, letter, idx, string) { + return match.replace(letter, letter.toUpperCase()); + }); +} diff --git a/dist/src/underscore.d.ts b/dist/src/underscore.d.ts new file mode 100644 index 0000000..307c633 --- /dev/null +++ b/dist/src/underscore.d.ts @@ -0,0 +1,4 @@ +export declare const underscore: ((camelCasedWord: string) => string) & { + cache: Map; + populate: (camelCasedWord: string) => void; +}; diff --git a/dist/src/underscore.js b/dist/src/underscore.js new file mode 100644 index 0000000..6148878 --- /dev/null +++ b/dist/src/underscore.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.underscore = void 0; +const cache_1 = require("./cache"); +const Inflector_1 = require("./Inflector"); +const letterOrDigit = /[A-Za-z\d]/; +const wordBoundaryOrNonLetter = /\b|[^a-z]/; +const boundaryMatcher = /([A-Z\d]+)([A-Z][a-z])|([a-z\d])([A-Z])|(-)/g; +exports.underscore = (0, cache_1.cacheable)((camelCasedWord) => { + let result = camelCasedWord; + const acronymMatches = (0, Inflector_1.inflections)().casedAcronymMatcher?.search(camelCasedWord, isWordBoundary); + if (acronymMatches) { + acronymMatches.forEach(([pos, match], index) => { + if (index > 0) { + pos = pos + index - 1; + } + const beforeCharacter = result[pos - match.length]; + const afterCharacter = result[pos + 1]; + if ((pos == match.length - 1 || letterOrDigit.test(beforeCharacter)) && wordBoundaryOrNonLetter.test(afterCharacter)) { + if (pos > match.length - 1) { + result = `${result.slice(0, pos - match.length + 1)}_${match.toLowerCase()}${result.slice(pos + 1)}`; + } + else { + result = `${match.toLowerCase()}${result.slice(pos + 1)}`; + } + } + }); + } + return result + .replace(boundaryMatcher, (_match, p1, p2, p3, p4, p5) => { + if (p1) + return `${p1}_${p2}`; + if (p5) + return `_`; + return `${p3}_${p4}`; + }) + .toLowerCase(); +}); +function isWordBoundary(char) { + const charCode = char.charCodeAt(0); + const isLowercaseLetter = charCode >= 97 && charCode <= 122; // a-z + return !isLowercaseLetter; +} diff --git a/dist/vite.config.d.ts b/dist/vite.config.d.ts new file mode 100644 index 0000000..340562a --- /dev/null +++ b/dist/vite.config.d.ts @@ -0,0 +1,2 @@ +declare const _default: import("vite").UserConfig; +export default _default; diff --git a/dist/vite.config.js b/dist/vite.config.js new file mode 100644 index 0000000..7895649 --- /dev/null +++ b/dist/vite.config.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const config_1 = require("vitest/config"); +exports.default = (0, config_1.defineConfig)({ + test: { + include: ["spec/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"] + } +}); diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..7f23e15 --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1732238832, + "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..ffc2353 --- /dev/null +++ b/flake.nix @@ -0,0 +1,37 @@ +{ + description = "mobx-quick-tree development environment"; + + inputs = { + flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + }; + + outputs = { self, flake-utils, nixpkgs }: + (flake-utils.lib.eachSystem [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-darwin" + ] + (system: nixpkgs.lib.fix (flake: + let + pkgs = nixpkgs.legacyPackages.${system}; + in + rec { + + packages = + rec { + bash = pkgs.bash; + nodejs = pkgs.nodejs_22; + pnpm = pkgs.nodejs_22.pkgs.pnpm; + npm = pkgs.nodejs_22.pkgs.npm; + }; + + devShell = pkgs.mkShell { + packages = builtins.attrValues packages; + env = { + VITE_CJS_IGNORE_WARNING = "true"; + }; + }; + } + ))); +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..cdb44f4 --- /dev/null +++ b/package.json @@ -0,0 +1,60 @@ +{ + "name": "superflected", + "version": "0.1.0", + "description": "A port of ActiveSupport's inflector to Node.js", + "main": "dist/src/index.js", + "repository": "gadget-inc/superflected", + "author": "Martin Andert", + "license": "MIT", + "keywords": [ + "inflector", + "inflection", + "pluralize", + "singularize", + "camelize", + "titleize", + "tableize", + "humanize", + "capitalize", + "constantify", + "dasherize", + "ordinalize", + "parameterize", + "transliterate", + "activesupport" + ], + "scripts": { + "typecheck": "tsc --noEmit", + "test": "vitest", + "lint": "pnpm run lint:prettier && pnpm run lint:eslint", + "lint:prettier": "prettier --check \"{spec,src}/**/*.{js,ts}\"", + "lint:eslint": "eslint --quiet --ext ts,tsx spec src", + "lint:fix": "prettier --write --check \"{spec,src}/**/*.{js,ts}\"; eslint --ext ts --fix spec src", + "build": "rm -rf dist && tsc", + "watch": "rm -rf dist && tsc --watch --preserveWatchOutput", + "prepublishOnly": "pnpm run build", + "prerelease": "gitpkg publish", + "clean": "rm -rf *.0x *-v8.log", + "x": "tsx" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.0", + "@gadgetinc/eslint-config": "^0.6.1", + "@gadgetinc/prettier-config": "^0.4.0", + "@types/fs-extra": "^11.0.4", + "@types/lodash": "^4.17.13", + "@types/node": "^22.9.3", + "@types/yargs": "^17.0.33", + "eslint": "^8.52.0", + "execa": "^5.1.1", + "fs-extra": "^11.2.0", + "lodash": "^4.17.21", + "prettier": "^2.8.1", + "tinybench": "^2.6.0", + "tsx": "^4.19.2", + "typescript": "^5.7.2", + "vitest": "^2.1.5", + "yargs": "^17.7.2" + }, + "packageManager": "pnpm@9.11.0+sha512.0a203ffaed5a3f63242cd064c8fb5892366c103e328079318f78062f24ea8c9d50bc6a47aa3567cabefd824d170e78fa2745ed1f16b132e16436146b7688f19b" +} diff --git a/spec/ahoCorasick.spec.ts b/spec/ahoCorasick.spec.ts new file mode 100644 index 0000000..3f5a7a2 --- /dev/null +++ b/spec/ahoCorasick.spec.ts @@ -0,0 +1,188 @@ +import { describe, expect, it } from "vitest"; +import { AhoCorasick } from "../src/ahoCorasick"; + +describe("Aho corasick search", () => { + it("should find single keyword 'hero'", () => { + const aho = new AhoCorasick(["hero", "heroic"]); + const result = aho.search("hero"); + expect(result).toEqual([[3, "hero"]]); + }); + + it("should find multiple hero-related keywords", () => { + const aho = new AhoCorasick(["hero", "heroic", "heroism"]); + const result = aho.search("the hero performed a heroic act of heroism"); + expect(result).toEqual([ + [7, "hero"], + [26, "heroic"], + [41, "heroism"], + ]); + }); + + it("should find numbered keywords", () => { + const aho = new AhoCorasick(["keyword1", "keyword2", "etc"]); + const result = aho.search("should find keyword1 at position 19 and keyword2 at position 30."); + expect(result).toEqual([ + [19, "keyword1"], + [47, "keyword2"], + ]); + }); + + it("should find pronouns", () => { + const aho = new AhoCorasick(["he", "she", "his", "hers"]); + const result = aho.search("she was expecting his visit"); + expect(result).toEqual([ + [2, "she"], + [20, "his"], + ]); + }); + + it("should handle special characters", () => { + const aho = new AhoCorasick(["àéçp?ẃ", "éâà"]); + const result = aho.search("éâàqwfwéâéeqfwéâàqef àéçp?ẃ wqqryht cp?"); + expect(result).toEqual([[26, "àéçp?ẃ"]]); + }); + + it("should handle escape characters", () => { + const aho = new AhoCorasick(["**", "666", "his", "n", "\\", "\n"]); + const result = aho.search("\n & 666 ==! \n"); + expect(result).toEqual([ + [0, "\n"], + [6, "666"], + [12, "\n"], + ]); + }); + + it("should handle cyrillic characters", () => { + const aho = new AhoCorasick(["Федеральной", "ной", "idea"]); + const result = aho.search("! Федеральной I have no idea what this means."); + expect(result).toEqual([ + [12, "Федеральной"], + [27, "idea"], + ]); + }); + + it("should handle emojis and special symbols", () => { + const aho = new AhoCorasick(["bla", "😁", "😀", "°□°", "w", "┻━┻"]); + const result = aho.search("- (╯°□°)╯︵ ┻━┻ "); + expect(result).toEqual([ + [7, "°□°"], + [14, "┻━┻"], + ]); + }); + + it("should handle adjacent matches", () => { + const aho = new AhoCorasick(["abc", "def"]); + const result = aho.search("abcdef should match both abc and def"); + expect(result).toEqual([ + [2, "abc"], + [5, "def"], + [27, "abc"], + [35, "def"], + ]); + }); + + it("should not match multiple adjacent matches that don't end with a word boundary", () => { + const aho = new AhoCorasick(["abc", "xyz"]); + const result = aho.search("abcxyzG"); + expect(result).toEqual([]); + }); + + it("should handle multiple adjacent matches", () => { + const aho = new AhoCorasick(["abc", "xyz"]); + const result = aho.search("abcxyzabcxyzxyz"); + expect(result).toEqual([ + [2, "abc"], + [5, "xyz"], + [8, "abc"], + [11, "xyz"], + [14, "xyz"], + ]); + }); + + it("should not match multiple adjacent matches that don't end with a word boundary", () => { + const aho = new AhoCorasick(["abc", "xyz"]); + const result = aho.search("abcxyzabcxyzxyzG"); + expect(result).toEqual([]); + }); + + it("should not match multiple adjacent matches that end with a partial second match", () => { + const aho = new AhoCorasick(["abc", "xyz"]); + const result = aho.search("abcxyzabcxyza"); + expect(result).toEqual([]); + }); + + it("should handle substring matches", () => { + const aho = new AhoCorasick(["cat", "catch"]); + const result = aho.search("catch the cat and catch"); + expect(result).toEqual([ + [4, "catch"], + [12, "cat"], + [22, "catch"], + ]); + }); + + describe("prefix search", () => { + it("should find exact prefix match", () => { + const aho = new AhoCorasick(["hero", "heroic"]); + const result = aho.search("hero", undefined, true); + expect(result).toEqual([[3, "hero"]]); + }); + + it("should not match non-prefix occurrences", () => { + const aho = new AhoCorasick(["hero", "heroic"]); + const result = aho.search("the heroic", undefined, true); + expect(result).toEqual([]); + }); + + it("should match longer prefix", () => { + const aho = new AhoCorasick(["hero", "heroic", "heroism"]); + const result = aho.search("heroic acts of heroism", undefined, true); + expect(result).toEqual([[5, "heroic"]]); + }); + + it("should match pronoun prefixes", () => { + const aho = new AhoCorasick(["he", "she", "his", "hers"]); + const result = aho.search("she was here", undefined, true); + expect(result).toEqual([[2, "she"]]); + }); + + it("should handle special character prefixes", () => { + const aho = new AhoCorasick(["éâà", "éâàbc"]); + const result = aho.search("éâàbc test", undefined, true); + expect(result).toEqual([[4, "éâàbc"]]); + }); + + it("should handle nested domain extensions", () => { + const aho = new AhoCorasick([".com", ".com.au"]); + const result = aho.search(".com.au test", undefined, true); + expect(result).toEqual([[6, ".com.au"]]); + }); + + it("should handle overlapping prefix matches", () => { + const aho = new AhoCorasick(["abc", "def"]); + const result = aho.search("abcdef abc", undefined, true); + expect(result).toEqual([ + [2, "abc"], + [5, "def"], + ]); + }); + + it("should not match prefixes that aren't terminated by a word boundary", () => { + const aho = new AhoCorasick(["abc", "def"]); + const result = aho.search("abczzz", undefined, true); + expect(result).toEqual([]); + }); + + it("should not match prefixes that aren't terminated by a word boundary and a partial second match", () => { + const aho = new AhoCorasick(["abc", "def"]); + const result = aho.search("abcde", undefined, true); + expect(result).toEqual([]); + }); + + it("should handle substring prefix matches", () => { + const aho = new AhoCorasick(["cat", "catch"]); + const result = aho.search("catch", undefined, true); + expect(result).toEqual([[4, "catch"]]); + }); + }); +}); diff --git a/spec/are-the-types-wrong.spec.ts b/spec/are-the-types-wrong.spec.ts new file mode 100644 index 0000000..4988a6f --- /dev/null +++ b/spec/are-the-types-wrong.spec.ts @@ -0,0 +1,9 @@ +import execa from "execa"; +import path from "path"; +import { describe, it } from "vitest"; + +describe("package.json types exports", () => { + it("should have the correct types exports", async () => { + await execa("pnpm", ["exec", "attw", "--pack", "."], { cwd: path.resolve(__dirname, "..") }); + }, 10000); +}); diff --git a/spec/bench/superflected.bench.ts b/spec/bench/superflected.bench.ts new file mode 100644 index 0000000..0b78591 --- /dev/null +++ b/spec/bench/superflected.bench.ts @@ -0,0 +1,47 @@ +import { benchmarker } from "../benchmark"; +import { pluralize, singularize, camelize, underscore, humanize, titleize, parameterize } from "../../src"; + +export default benchmarker(async (suite) => { + suite + .add("pluralize", function () { + pluralize("category"); + }) + .add("singularize", function () { + singularize("octopi"); + }) + .add("camelize.basic", function () { + camelize("employee_salary"); + }) + .add("camelize.complex", function () { + camelize("api_responses_url"); + }) + .add("camelize.withSlash", function () { + camelize("nested/api_response"); + }) + .add("camelize.mixedCase", function () { + camelize("API_ResponseFormat"); + }) + .add("camelize.lowercaseFirst", function () { + camelize("api_responses_url", false); + }) + .add("camelize.multipleUnderscores", function () { + camelize("complex_api_response_format"); + }) + .add("camelize.withNumbers", function () { + camelize("api2_response_3d"); + }) + .add("underscore", function () { + underscore("bankAccount"); + }) + .add("humanize", function () { + humanize("employee_salary"); + }) + .add("titleize", function () { + titleize("man from the boondocks"); + }) + .add("parameterize", function () { + parameterize("donald-e-knuth"); + }); + + return suite; +}); diff --git a/spec/benchmark.ts b/spec/benchmark.ts new file mode 100644 index 0000000..e0ee9e4 --- /dev/null +++ b/spec/benchmark.ts @@ -0,0 +1,245 @@ +import { writeFile } from "fs-extra"; +import type { HeapProfiler, Profiler } from "node:inspector"; +import { PerformanceObserver } from "perf_hooks"; +import { Bench, type Options } from "tinybench"; +import yargs from "yargs"; +import { hideBin } from "yargs/helpers"; +import { Session } from "inspector"; +import { compact } from "lodash"; + +export const newInspectorSession = () => { + const session = new Session(); + const post = (method: string, params?: Record): any => + new Promise((resolve, reject) => { + session.post(method, params, (err: Error | null, result: any) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }); + }); + + session.connect(); + return { session, post }; +}; + +export type BenchmarkGenerator = ((suite: Bench) => Bench | Promise) & { options?: Options }; + +/** + * Set up a new benchmark in our library of benchmarks + * If this file is executed directly, it will run the benchmark + * Otherwise, it will export the benchmark for use in other files + * + * @example + * export default benchmarker((suite) => { + * return suite.add("My Benchmark", async () => { + * // ... + * }); + * }); + **/ +export const benchmarker = (fn: BenchmarkGenerator, options?: Options) => { + fn.options = options; + + const err = new NiceStackError(); + const callerFile = (err.stack as unknown as NodeJS.CallSite[])[2].getFileName(); + + if (require.main?.filename === callerFile) { + void runBenchmark(fn); + } else { + return { fn }; + } +}; + +/** Wrap a plain old async function in the weird deferred management code benchmark.js requires */ +export const asyncBench = (fn: () => Promise) => { + return { + defer: true, + fn: async (deferred: any) => { + await fn(); + deferred.resolve(); + }, + }; +}; + +/** Boot up a benchmark suite for registering new cases on */ +export const createSuite = (options: Options = { iterations: 100 }) => { + const suite = new Bench(options); + + suite.addEventListener("error", (event: any) => { + console.error("benchmark error", { ...event, error: event.error ?? event.task?.result?.error }); + }); + + return suite; +}; + +/** Run one benchmark function in isolation */ +const runBenchmark = async (fn: BenchmarkGenerator) => { + const args = await yargs(hideBin(process.argv)) + .option("profile", { + alias: "p", + default: false, + describe: "profile each benchmarked case as it runs, writing a CPU profile to disk for each", + type: "boolean", + }) + .option("heap-profile", { + alias: "h", + default: false, + describe: "heap profile each benchmarked case as it runs, writing a .heapprofile file to disk for each", + type: "boolean", + }).argv; + + let suite = createSuite(fn.options); + + if (args.profile) { + await registerBenchProfiler(suite); + } + + if (args["heap-profile"]) { + await registerBenchHeapProfiler(suite); + } + + if (args["gc-stats"]) { + registerGcStats(suite); + } + + suite = await fn(suite); + + console.log("running benchmark"); + + await suite.warmup(); + await suite.run(); + + console.table(benchTable(suite)); +}; + +class NiceStackError extends Error { + constructor() { + super(); + const oldStackTrace = Error.prepareStackTrace; + try { + Error.prepareStackTrace = (err, structuredStackTrace) => structuredStackTrace; + + Error.captureStackTrace(this); + + // eslint-disable-next-line @typescript-eslint/no-unused-expressions + this.stack; // Invoke the getter for `stack`. + } finally { + Error.prepareStackTrace = oldStackTrace; + } + } +} + +export const benchTable = (bench: Bench) => { + return compact( + bench.tasks.map(({ name: t, result: e }) => { + if (!e) return null; + return { + "Task Name": t, + "ops/sec": e.error ? "NaN" : parseInt(e.hz.toString(), 10).toLocaleString(), + "Average Time (ms)": e.error ? "NaN" : e.mean, + "p99 Time (ms)": e.error ? "NaN" : e.p99, + Margin: e.error ? "NaN" : `\xB1${e.rme.toFixed(2)}%`, + Samples: e.error ? "NaN" : e.samples.length, + }; + }) + ); +}; + +const formatDateForFile = () => { + const now = new Date(); + return `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}_${String( + now.getHours() + ).padStart(2, "0")}-${String(now.getMinutes()).padStart(2, "0")}-${String(now.getSeconds()).padStart(2, "0")}`; +}; + +export const registerBenchProfiler = async (suite: Bench) => { + const key = formatDateForFile(); + + const { post } = newInspectorSession(); + await post("Profiler.enable"); + await post("Profiler.setSamplingInterval", { interval: 20 }); + + console.log("profiling enabled", { filenameKey: key }); + + suite.addEventListener("add", (event) => { + const oldBeforeAll = event.task.opts.beforeAll; + const oldAfterAll = event.task.opts.afterAll; + + event.task.opts = { + ...event.task.opts, + beforeAll: async function () { + await post("Profiler.start"); + await oldBeforeAll?.call(this); + }, + afterAll: async function () { + await oldAfterAll?.call(this); + const { profile } = (await post("Profiler.stop")) as Profiler.StopReturnType; + await writeFile(`./bench-${event.task.name}-${key}.cpuprofile`, JSON.stringify(profile)); + }, + }; + }); +}; + +export const registerBenchHeapProfiler = async (suite: Bench) => { + const key = formatDateForFile(); + + const { post } = newInspectorSession(); + await post("HeapProfiler.enable"); + + console.log("heap profiling enabled", { filenameKey: key }); + + suite.addEventListener("add", (event) => { + const oldBeforeAll = event.task.opts.beforeAll; + const oldAfterAll = event.task.opts.afterAll; + + event.task.opts = { + ...event.task.opts, + beforeAll: async function () { + await post("HeapProfiler.startSampling", { samplingInterval: 4096 }); + await oldBeforeAll?.call(this); + }, + afterAll: async function () { + await oldAfterAll?.call(this); + const { profile } = (await post("HeapProfiler.stopSampling")) as HeapProfiler.StopSamplingReturnType; + await writeFile(`./bench-${event.task.name}-${key}.heapprofile`, JSON.stringify(profile)); + }, + }; + }); +}; + +export const registerGcStats = (suite: Bench) => { + let totalGcCount = 0; + let totalGcPause = 0; + + // Create a performance observer + const obs = new PerformanceObserver((list) => { + const entry = list.getEntries()[0]; + totalGcCount += 1; + totalGcPause += entry.duration; + }); + + console.log("gcstats enabled"); + + suite.addEventListener("add", (event) => { + const oldBeforeEach = event.task.opts.beforeEach; + const oldAfterEach = event.task.opts.afterEach; + const oldAfterAll = event.task.opts.afterAll; + + event.task.opts = { + ...event.task.opts, + beforeEach: async function () { + obs.observe({ entryTypes: ["gc"] }); + await oldBeforeEach?.call(this); + }, + afterEach: async function () { + obs.disconnect(); + await oldAfterEach?.call(this); + }, + afterAll: async function () { + console.log({ totalGcCount, totalGcPauseMs: totalGcPause / 1e6 }, "gcstats"); + await oldAfterAll?.call(this); + }, + }; + }); +}; diff --git a/spec/cases.ts b/spec/cases.ts new file mode 100644 index 0000000..64d0444 --- /dev/null +++ b/spec/cases.ts @@ -0,0 +1,328 @@ +export default { + SingularToPlural: { + search: "searches", + switch: "switches", + fix: "fixes", + box: "boxes", + process: "processes", + address: "addresses", + case: "cases", + stack: "stacks", + wish: "wishes", + fish: "fish", + jeans: "jeans", + "funky jeans": "funky jeans", + "my money": "my money", + + category: "categories", + query: "queries", + ability: "abilities", + agency: "agencies", + movie: "movies", + + archive: "archives", + + index: "indices", + + wife: "wives", + safe: "saves", + half: "halves", + + move: "moves", + + salesperson: "salespeople", + person: "people", + + spokesman: "spokesmen", + man: "men", + woman: "women", + + basis: "bases", + diagnosis: "diagnoses", + diagnosis_a: "diagnosis_as", + + datum: "data", + medium: "media", + stadium: "stadia", + analysis: "analyses", + my_analysis: "my_analyses", + + node_child: "node_children", + child: "children", + + experience: "experiences", + day: "days", + + comment: "comments", + foobar: "foobars", + newsletter: "newsletters", + + old_news: "old_news", + news: "news", + + series: "series", + miniseries: "miniseries", + species: "species", + + quiz: "quizzes", + + perspective: "perspectives", + + ox: "oxen", + photo: "photos", + buffalo: "buffaloes", + tomato: "tomatoes", + dwarf: "dwarves", + elf: "elves", + information: "information", + equipment: "equipment", + bus: "buses", + status: "statuses", + status_code: "status_codes", + mouse: "mice", + + louse: "lice", + house: "houses", + octopus: "octopi", + virus: "viri", + alias: "aliases", + portfolio: "portfolios", + + vertex: "vertices", + matrix: "matrices", + matrix_fu: "matrix_fus", + + axis: "axes", + taxi: "taxis", // prevents regression + testis: "testes", + crisis: "crises", + + rice: "rice", + shoe: "shoes", + + horse: "horses", + prize: "prizes", + edge: "edges", + + database: "databases", + + // regression tests against improper inflection regexes + "|ice": "|ices", + "|ouse": "|ouses", + slice: "slices", + police: "police" + }, + + CamelToUnderscore: { + Product: "product", + SpecialGuest: "special_guest", + ApplicationController: "application_controller", + Area51Controller: "area51_controller" + }, + + UnderscoreToLowerCamel: { + product: "product", + special_guest: "specialGuest", + application_controller: "applicationController", + area51_controller: "area51Controller" + }, + + CamelToUnderscoreWithoutReverse: { + HTMLTidy: "html_tidy", + HTMLTidyGenerator: "html_tidy_generator", + FreeBSD: "free_bsd", + HTML: "html" + }, + + ClassNameToForeignKeyWithUnderscore: { + Person: "person_id", + BillingAccount: "billing_account_id" + }, + + ClassNameToForeignKeyWithoutUnderscore: { + Person: "personid", + BillingAccount: "billing_accountid" + }, + + ClassNameToTableName: { + PrimarySpokesman: "primary_spokesmen", + NodeChild: "node_children" + }, + + StringToParameterized: { + "Donald E. Knuth": "donald-e-knuth", + "Random text with *(bad)* characters": "random-text-with-bad-characters", + Allow_Under_Scores: "allow_under_scores", + "Trailing bad characters!@#": "trailing-bad-characters", + "!@#Leading bad characters": "leading-bad-characters", + "Squeeze separators": "squeeze-separators", + "Test with + sign": "test-with-sign", + "Test with malformed utf8 \xa9": "test-with-malformed-utf8" + }, + + StringToParameterizeWithNoSeparator: { + "Donald E. Knuth": "donaldeknuth", + "With-some-dashes": "with-some-dashes", + "Random text with *(bad)* characters": "randomtextwithbadcharacters", + "Trailing bad characters!@#": "trailingbadcharacters", + "!@#Leading bad characters": "leadingbadcharacters", + "Squeeze separators": "squeezeseparators", + "Test with + sign": "testwithsign", + "Test with malformed utf8 \xa9": "testwithmalformedutf8" + }, + + StringToParameterizeWithPreserveCase: { + "Donald E. Knuth": "Donald-E-Knuth", + "Random text with *(bad)* Characters": "Random-text-with-bad-Characters", + Allow_Under_Scores: "Allow_Under_Scores", + "Trailing BAD characters!@#": "Trailing-BAD-characters", + "!@#leading bad Characters": "leading-bad-Characters", + "squeeze Separators": "squeeze-Separators", + "Test with + Sign": "Test-with-Sign", + "Test with malformed UTF8 \xa9": "Test-with-malformed-UTF8" + }, + + StringToParameterizeWithUnderscore: { + "Donald E. Knuth": "donald_e_knuth", + "Random text with *(bad)* characters": "random_text_with_bad_characters", + "With-some-dashes": "with-some-dashes", + Retain_underscore: "retain_underscore", + "Trailing bad characters!@#": "trailing_bad_characters", + "!@#Leading bad characters": "leading_bad_characters", + "Squeeze separators": "squeeze_separators", + "Test with + sign": "test_with_sign", + "Test with malformed utf8 \xa9": "test_with_malformed_utf8" + }, + + StringToParameterizedAndNormalized: { + Malmö: "malmo", + Garçons: "garcons", + OpsÙ: "opsu", + Ærøskøbing: "aeroskobing", + Aßlar: "asslar", + "Japanese: 日本語": "japanese" + }, + + UnderscoreToHuman: { + employee_salary: "Employee salary", + employee_id: "Employee", + underground: "Underground" + }, + + UnderscoreToHumanWithoutCapitalize: { + employee_salary: "employee salary", + employee_id: "employee", + underground: "underground" + }, + + MixtureToTitleCase: { + active_record: "Active Record", + ActiveRecord: "Active Record", + "action web service": "Action Web Service", + "Action Web Service": "Action Web Service", + "Action web service": "Action Web Service", + actionwebservice: "Actionwebservice", + Actionwebservice: "Actionwebservice", + "david's code": "David's Code", + "David's code": "David's Code", + "david's Code": "David's Code", + "sgt. pepper's": "Sgt. Pepper's", + "i've just seen a face": "I've Just Seen A Face", + "maybe you'll be there": "Maybe You'll Be There", + "¿por qué?": "¿Por Qué?", + "Fred’s": "Fred’s", + "Fred`s": "Fred`s" + }, + + OrdinalNumbers: { + "-1": "-1st", + "-2": "-2nd", + "-3": "-3rd", + "-4": "-4th", + "-5": "-5th", + "-6": "-6th", + "-7": "-7th", + "-8": "-8th", + "-9": "-9th", + "-10": "-10th", + "-11": "-11th", + "-12": "-12th", + "-13": "-13th", + "-14": "-14th", + "-20": "-20th", + "-21": "-21st", + "-22": "-22nd", + "-23": "-23rd", + "-24": "-24th", + "-100": "-100th", + "-101": "-101st", + "-102": "-102nd", + "-103": "-103rd", + "-104": "-104th", + "-110": "-110th", + "-111": "-111th", + "-112": "-112th", + "-113": "-113th", + "-1000": "-1000th", + "-1001": "-1001st", + "0": "0th", + "1": "1st", + "2": "2nd", + "3": "3rd", + "4": "4th", + "5": "5th", + "6": "6th", + "7": "7th", + "8": "8th", + "9": "9th", + "10": "10th", + "11": "11th", + "12": "12th", + "13": "13th", + "14": "14th", + "20": "20th", + "21": "21st", + "22": "22nd", + "23": "23rd", + "24": "24th", + "100": "100th", + "101": "101st", + "102": "102nd", + "103": "103rd", + "104": "104th", + "110": "110th", + "111": "111th", + "112": "112th", + "113": "113th", + "1000": "1000th", + "1001": "1001st" + }, + + UnderscoresToDashes: { + street: "street", + street_address: "street-address", + person_street_address: "person-street-address" + }, + + Irregularities: { + person: "people", + man: "men", + child: "children", + sex: "sexes", + move: "moves", + cow: "kine", + zombie: "zombies", + genus: "genera" + }, + + WordsToConstantCase: { + Conciliation: "CONCILIATION", + conciliation: "CONCILIATION", + bankAccount: "BANK_ACCOUNT", + BankAccount: "BANK_ACCOUNT", + "bank-account": "BANK_ACCOUNT", + bank_account: "BANK_ACCOUNT", + "Bank Account": "BANK_ACCOUNT", + "Multiple Bank Account": "MULTIPLE_BANK_ACCOUNT" + } +}; diff --git a/spec/superflected.spec.ts b/spec/superflected.spec.ts new file mode 100644 index 0000000..16d6695 --- /dev/null +++ b/spec/superflected.spec.ts @@ -0,0 +1,452 @@ +import { describe, it, expect } from "vitest"; +import { + pluralize, + singularize, + capitalize, + titleize, + camelize, + inflections, + humanize, + underscore, + classify, + tableize, + setInflections, + foreignKey, + ordinal, + ordinalize, + dasherize, + parameterize, + constantify, + setTransliterations, +} from "../src"; +const inflect = inflections(); +import TestCases from "./cases"; + +describe("Inflector", () => { + it("properly pluralizes plurals", () => { + expect(pluralize("plurals")).toBe("plurals"); + expect(pluralize("Plurals")).toBe("Plurals"); + }); + + it("properly pluralizes empty string", () => { + expect(pluralize("")).toBe(""); + }); + + it("properly capitalizes strings", () => { + expect(capitalize("foo")).toBe("Foo"); + expect(capitalize("FOO")).toBe("FOO"); + expect(capitalize("foo bar")).toBe("Foo bar"); + expect(capitalize("")).toBe(""); + expect(capitalize(null)).toBe(""); + expect(capitalize(undefined)).toBe(""); + }); + + for (const word of inflect.uncountables) { + it("respects the uncountability of " + word, () => { + expect(singularize(word)).toBe(word); + expect(pluralize(word)).toBe(word); + expect(singularize(word)).toBe(pluralize(word)); + }); + } + + it("checks uncountable word is not greedy", () => { + const uncountableWord = "ors"; + const countableWord = "sponsor"; + + inflect.uncountables.push(uncountableWord); + + expect(singularize(uncountableWord)).toBe(uncountableWord); + expect(pluralize(uncountableWord)).toBe(uncountableWord); + expect(singularize(uncountableWord)).toBe(pluralize(uncountableWord)); + + expect(singularize(countableWord)).toBe("sponsor"); + expect(pluralize(countableWord)).toBe("sponsors"); + expect(singularize(pluralize(countableWord))).toBe("sponsor"); + }); + + for (const [singular, plural] of Object.entries(TestCases.SingularToPlural)) { + it("properly pluralizes " + singular, () => { + expect(pluralize(singular)).toBe(plural); + expect(pluralize(capitalize(singular))).toBe(capitalize(plural)); + }); + + it("properly pluralizes " + plural, () => { + expect(pluralize(plural)).toBe(plural); + expect(pluralize(capitalize(plural))).toBe(capitalize(plural)); + }); + + it("properly singularizes " + plural, () => { + expect(singularize(plural)).toBe(singular); + expect(singularize(capitalize(plural))).toBe(capitalize(singular)); + }); + + it("properly singularizes " + singular, () => { + expect(singularize(singular)).toBe(singular); + expect(singularize(capitalize(singular))).toBe(capitalize(singular)); + }); + } + + it("allows overwriting defined inflectors", () => { + expect(singularize("series")).toBe("series"); + inflect.singular("series", "serie"); + expect(singularize("series")).toBe("serie"); + }); + + for (const [mixture, titleized] of Object.entries(TestCases.MixtureToTitleCase)) { + it("properly titleizes " + mixture, () => { + expect(titleize(mixture)).toBe(titleized); + }); + } + + for (const [camel, underscore] of Object.entries(TestCases.CamelToUnderscore)) { + it("properly camelizes " + underscore, () => { + expect(camelize(underscore)).toBe(camel); + }); + } + + it("properly camelizes with lower downcases the first letter", () => { + expect(camelize("Capital", false)).toBe("capital"); + }); + + it("properly camelizes with underscores", () => { + expect(camelize("Camel_Case")).toBe("CamelCase"); + }); + + it("properly handles acronyms", () => { + inflect.acronym("API"); + inflect.acronym("HTML"); + inflect.acronym("HTTP"); + inflect.acronym("RESTful"); + inflect.acronym("W3C"); + inflect.acronym("PhD"); + inflect.acronym("RoR"); + inflect.acronym("SSL"); + + // camelize underscore humanize titleize + const items = [ + ["API", "api", "API", "API"], + ["APIController", "api_controller", "API controller", "API Controller"], + ["Nokogiri/HTML", "nokogiri/html", "Nokogiri/HTML", "Nokogiri/HTML"], + ["HTTPAPI", "http_api", "HTTP API", "HTTP API"], + ["HTTP/Get", "http/get", "HTTP/get", "HTTP/Get"], + ["SSLError", "ssl_error", "SSL error", "SSL Error"], + ["RESTful", "restful", "RESTful", "RESTful"], + ["RESTfulController", "restful_controller", "RESTful controller", "RESTful Controller"], + ["IHeartW3C", "i_heart_w3c", "I heart W3C", "I Heart W3C"], + ["PhDRequired", "phd_required", "PhD required", "PhD Required"], + ["IRoRU", "i_ror_u", "I RoR u", "I RoR U"], + ["RESTfulHTTPAPI", "restful_http_api", "RESTful HTTP API", "RESTful HTTP API"], + + // misdirection + ["Capistrano", "capistrano", "Capistrano", "Capistrano"], + ["CapiController", "capi_controller", "Capi controller", "Capi Controller"], + ["HttpsApis", "https_apis", "Https apis", "Https Apis"], + ["Html5", "html5", "Html5", "Html5"], + ["Restfully", "restfully", "Restfully", "Restfully"], + ["RoRails", "ro_rails", "Ro rails", "Ro Rails"], + ]; + + for (const [camel, under, human, title] of items) { + expect(camelize(under)).toBe(camel); + expect(camelize(camel)).toBe(camel); + expect(underscore(under)).toBe(under); + expect(underscore(camel)).toBe(under); + expect(titleize(under)).toBe(title); + expect(titleize(camel)).toBe(title); + expect(humanize(under)).toBe(human); + } + }); + + it("allows overwriting acronyms", () => { + inflect.acronym("API"); + inflect.acronym("LegacyApi"); + + expect(camelize("legacyapi")).toBe("LegacyApi"); + expect(camelize("legacy_api")).toBe("LegacyAPI"); + expect(camelize("some_legacyapi")).toBe("SomeLegacyApi"); + expect(camelize("nonlegacyapi")).toBe("Nonlegacyapi"); + }); + + it("properly handles lower camelized acronyms", () => { + inflect.acronym("API"); + inflect.acronym("HTML"); + + expect(camelize("html_api", false)).toBe("htmlAPI"); + expect(camelize("htmlAPI", false)).toBe("htmlAPI"); + expect(camelize("HTMLAPI", false)).toBe("htmlAPI"); + }); + + it("properly handles lower camelized acronyms", () => { + inflect.acronym("API"); + inflect.acronym("JSON"); + inflect.acronym("HTML"); + + expect(underscore("JSONHTMLAPI")).toBe("json_html_api"); + }); + + it("properly underscores", () => { + for (const [camel, underscored] of Object.entries(TestCases.CamelToUnderscore)) { + expect(underscore(camel)).toBe(underscored); + } + + for (const [camel, underscored] of Object.entries(TestCases.CamelToUnderscoreWithoutReverse)) { + expect(underscore(camel)).toBe(underscored); + } + }); + + it("properly adds a foreign key suffix", () => { + for (const [klass, foreignKeyized] of Object.entries(TestCases.ClassNameToForeignKeyWithUnderscore)) { + expect(foreignKey(klass)).toBe(foreignKeyized); + } + + for (const [klass, foreignKeyized] of Object.entries(TestCases.ClassNameToForeignKeyWithoutUnderscore)) { + expect(foreignKey(klass, false)).toBe(foreignKeyized); + } + }); + + it("properly tableizes class names", () => { + for (const [className, tableName] of Object.entries(TestCases.ClassNameToTableName)) { + expect(tableize(className)).toBe(tableName); + } + }); + + it("properly classifies table names", () => { + for (const [className, tableName] of Object.entries(TestCases.ClassNameToTableName)) { + expect(classify(tableName)).toBe(className); + expect(classify("table_prefix." + tableName)).toBe(className); + } + }); + + it("properly classifies with leading schema name", () => { + expect(classify("schema.foo_bar")).toBe("FooBar"); + }); + + it("properly humanizes underscored strings", () => { + for (const [underscore, human] of Object.entries(TestCases.UnderscoreToHuman)) { + expect(humanize(underscore)).toBe(human); + } + }); + + it("properly humanizes underscored strings without capitalize", () => { + for (const [underscore, human] of Object.entries(TestCases.UnderscoreToHumanWithoutCapitalize)) { + expect(humanize(underscore, { capitalize: false })).toBe(human); + } + }); + + it("properly humanizes by rule", () => { + inflect.human(/_cnt$/i, "_count"); + inflect.human(/^prefx_/i, ""); + + expect(humanize("jargon_cnt")).toBe("Jargon count"); + expect(humanize("prefx_request")).toBe("Request"); + }); + + it("properly humanizes by string", () => { + inflect.human("col_rpted_bugs", "Reported bugs"); + + expect(humanize("col_rpted_bugs")).toBe("Reported bugs"); + expect(humanize("COL_rpted_bugs")).toBe("Col rpted bugs"); + }); + + it("properly generates ordinal suffixes", () => { + for (const [number, ordinalized] of Object.entries(TestCases.OrdinalNumbers)) { + expect(ordinalized).toBe(number + ordinal(number)); + } + }); + + it("properly ordinalizes numbers", () => { + for (const [number, ordinalized] of Object.entries(TestCases.OrdinalNumbers)) { + expect(ordinalize(number)).toBe(ordinalized); + } + }); + + it("properly dasherizes underscored strings", () => { + for (const [underscored, dasherized] of Object.entries(TestCases.UnderscoresToDashes)) { + expect(dasherize(underscored)).toBe(dasherized); + } + }); + + it("properly underscores as reverse of dasherize", () => { + for (const [underscored, _dasherized] of Object.entries(TestCases.UnderscoresToDashes)) { + expect(underscore(dasherize(underscored))).toBe(underscored); + } + }); + + it("properly underscores to lower camel", () => { + for (const [underscored, lowerCamel] of Object.entries(TestCases.UnderscoreToLowerCamel)) { + expect(camelize(underscored, false)).toBe(lowerCamel); + } + }); + + it("respects the inflector locale", () => { + setInflections("es", function (inflect) { + inflect.plural(/$/, "s"); + inflect.plural(/z$/i, "ces"); + + inflect.singular(/s$/, ""); + inflect.singular(/es$/, ""); + + inflect.irregular("el", "los"); + }); + + expect(pluralize("hijo", "es")).toBe("hijos"); + expect(pluralize("luz", "es")).toBe("luces"); + expect(pluralize("luz")).toBe("luzs"); + + expect(singularize("sociedades", "es")).toBe("sociedad"); + expect(singularize("sociedades")).toBe("sociedade"); + + expect(pluralize("el", "es")).toBe("los"); + expect(pluralize("el")).toBe("els"); + + setInflections("es", function (inflect) { + inflect.clear(); + }); + + expect(inflections("es").plurals.length).toBe(0); + expect(inflections("es").singulars.length).toBe(0); + expect(inflections().plurals.length).not.toBe(0); + expect(inflections().singulars.length).not.toBe(0); + }); + + describe("pluralization", () => { + for (const [singular, plural] of Object.entries(TestCases.Irregularities)) { + it("respects the irregularity between " + singular + " and " + plural, () => { + setInflections("en", function (inflect) { + inflect.irregular(singular, plural); + }); + + expect(singularize(plural)).toBe(singular); + expect(pluralize(singular)).toBe(plural); + }); + } + + for (const [singular, plural] of Object.entries(TestCases.Irregularities)) { + it("makes sure that pluralize of irregularity " + plural + " is the same", () => { + setInflections("en", function (inflect) { + inflect.irregular(singular, plural); + }); + + expect(pluralize(plural)).toBe(plural); + }); + } + + for (const [singular, plural] of Object.entries(TestCases.Irregularities)) { + it("makes sure that singularize of irregularity " + singular + " is the same", () => { + setInflections("en", function (inflect) { + inflect.irregular(singular, plural); + }); + + expect(singularize(singular)).toBe(singular); + }); + } + }); + + for (const scope of ["plurals", "singulars", "uncountables", "humans"] as const) { + it("properly clears " + scope + " inflection scope", () => { + setInflections("en", function (inflect) { + inflect.clear(scope); + }); + expect(inflections("en")[scope].length).toBe(0); + }); + } + + it("properly clears all reflection scopes", () => { + setInflections("en", function (inflect) { + // ensure any data is present + inflect.plural(/(quiz)$/i, "$1zes"); + inflect.singular(/(database)s$/i, "$1"); + inflect.uncountable("series"); + inflect.human("col_rpted_bugs", "Reported bugs"); + + inflect.clear("all"); + + expect(inflect.plurals.length).toBe(0); + expect(inflect.singulars.length).toBe(0); + expect(inflect.uncountables.length).toBe(0); + expect(inflect.humans.length).toBe(0); + }); + }); + + it("properly clears with default", () => { + setInflections("es", function (inflect) { + // ensure any data is present + inflect.plural(/(quiz)$/i, "$1zes"); + inflect.singular(/(database)s$/i, "$1"); + inflect.uncountable("series"); + inflect.human("col_rpted_bugs", "Reported bugs"); + + inflect.clear(); + + expect(inflect.plurals.length).toBe(0); + expect(inflect.singulars.length).toBe(0); + expect(inflect.uncountables.length).toBe(0); + expect(inflect.humans.length).toBe(0); + }); + }); + + it("properly parameterizes", () => { + for (const [someString, parameterizedString] of Object.entries(TestCases.StringToParameterized)) { + expect(parameterize(someString)).toBe(parameterizedString); + } + }); + + it("properly parameterizes and normalizes", () => { + for (const [someString, parameterizedString] of Object.entries(TestCases.StringToParameterizedAndNormalized)) { + expect(parameterize(someString)).toBe(parameterizedString); + } + }); + + it("properly parameterizes with custom separator", () => { + for (const [someString, parameterizedString] of Object.entries(TestCases.StringToParameterizeWithUnderscore)) { + expect(parameterize(someString, { separator: "_" })).toBe(parameterizedString); + } + }); + + it("properly parameterizes with no separator", () => { + for (const [someString, parameterizedString] of Object.entries(TestCases.StringToParameterizeWithNoSeparator)) { + expect(parameterize(someString, { separator: null })).toBe(parameterizedString); + expect(parameterize(someString, { separator: "" })).toBe(parameterizedString); + } + }); + + it("properly parameterizes with preserve-case option", () => { + for (const [someString, parameterizedString] of Object.entries(TestCases.StringToParameterizeWithPreserveCase)) { + expect(parameterize(someString, { preserveCase: true })).toBe(parameterizedString); + } + }); + + it("properly parameterizes with multi character separator", () => { + for (const [someString, parameterizedString] of Object.entries(TestCases.StringToParameterized)) { + expect(parameterize(someString, { separator: "__sep__" })).toBe(parameterizedString.replace(/-/g, "__sep__")); + } + }); + + it("allows overwriting transliterate approximations", () => { + expect(parameterize("Jürgen")).toBe("jurgen"); + + setTransliterations("en", (transliterate) => { + transliterate.approximate("ü", "ue"); + }); + + expect(parameterize("Jürgen")).toBe("juergen"); + }); + + it("allows overwriting transliterate approximations for a specific locale", () => { + expect(parameterize("Mädchen")).toBe("madchen"); + expect(parameterize("Mädchen", { locale: "de" })).toBe("madchen"); + + setTransliterations("de", (transliterate) => { + transliterate.approximate("ä", "ae"); + }); + + expect(parameterize("Mädchen")).toBe("madchen"); + expect(parameterize("Mädchen", { locale: "de" })).toBe("maedchen"); + }); + + it("properly converts words to constant case", () => { + for (const [words, constantCase] of Object.entries(TestCases.WordsToConstantCase)) { + expect(constantify(words)).toBe(constantCase); + } + }); +}); diff --git a/src/Inflector.ts b/src/Inflector.ts new file mode 100644 index 0000000..8bc617d --- /dev/null +++ b/src/Inflector.ts @@ -0,0 +1,124 @@ +import { AhoCorasick } from "./ahoCorasick"; +import { defaults } from "./defaults"; +function icPart(str: string) { + return str + .split("") + .map((c) => `(?:${c.toUpperCase()}|${c.toLowerCase()})`) + .join(""); +} + +function remove(arr: T[], elem: T) { + for (let i = arr.length - 1; i >= 0; i--) { + if (arr[i] === elem) { + arr.splice(i, 1); + } + } +} + +/** Stores all the special cases for how words can be inflected */ +export class Inflector { + plurals: [RegExp | string, string][] = []; + singulars: [RegExp | string, string][] = []; + uncountables: string[] = []; + humans: [RegExp | string, string][] = []; + lowerToAcronyms: Record = {}; + casedAcronymMatcher: AhoCorasick | null = null; + lowerAcronymMatcher: AhoCorasick | null = null; + + acronym(word: string) { + this.lowerToAcronyms[word.toLowerCase()] = word; + this.lowerAcronymMatcher = new AhoCorasick(Object.keys(this.lowerToAcronyms)); + this.casedAcronymMatcher = new AhoCorasick(Object.values(this.lowerToAcronyms)); + } + + plural(rule: RegExp | string, replacement: string) { + if (typeof rule === "string") { + remove(this.uncountables, rule); + } + + remove(this.uncountables, replacement); + this.plurals.unshift([rule, replacement]); + } + + singular(rule: RegExp | string, replacement: string) { + if (typeof rule === "string") { + remove(this.uncountables, rule); + } + + remove(this.uncountables, replacement); + this.singulars.unshift([rule, replacement]); + } + + irregular(singular: string, plural: string) { + remove(this.uncountables, singular); + remove(this.uncountables, plural); + + const s0 = singular[0]; + const sRest = singular.substr(1); + + const p0 = plural[0]; + const pRest = plural.substr(1); + + if (s0.toUpperCase() === p0.toUpperCase()) { + this.plural(new RegExp("(" + s0 + ")" + sRest + "$", "i"), "$1" + pRest); + this.plural(new RegExp("(" + p0 + ")" + pRest + "$", "i"), "$1" + pRest); + + this.singular(new RegExp("(" + s0 + ")" + sRest + "$", "i"), "$1" + sRest); + this.singular(new RegExp("(" + p0 + ")" + pRest + "$", "i"), "$1" + sRest); + } else { + const sRestIC = icPart(sRest); + const pRestIC = icPart(pRest); + + this.plural(new RegExp(s0.toUpperCase() + sRestIC + "$"), p0.toUpperCase() + pRest); + this.plural(new RegExp(s0.toLowerCase() + sRestIC + "$"), p0.toLowerCase() + pRest); + this.plural(new RegExp(p0.toUpperCase() + pRestIC + "$"), p0.toUpperCase() + pRest); + this.plural(new RegExp(p0.toLowerCase() + pRestIC + "$"), p0.toLowerCase() + pRest); + + this.singular(new RegExp(s0.toUpperCase() + sRestIC + "$"), s0.toUpperCase() + sRest); + this.singular(new RegExp(s0.toLowerCase() + sRestIC + "$"), s0.toLowerCase() + sRest); + this.singular(new RegExp(p0.toUpperCase() + pRestIC + "$"), s0.toUpperCase() + sRest); + this.singular(new RegExp(p0.toLowerCase() + pRestIC + "$"), s0.toLowerCase() + sRest); + } + } + + uncountable(...words: string[]) { + this.uncountables = this.uncountables.concat(words); + } + + human(rule: RegExp | string, replacement: string) { + this.humans.unshift([rule, replacement]); + } + + clear(scope: "all" | "plurals" | "singulars" | "uncountables" | "humans" | "acronyms" = "all") { + if (scope === "all") { + this.plurals = []; + this.singulars = []; + this.uncountables = []; + this.humans = []; + this.lowerToAcronyms = {}; + this.casedAcronymMatcher = null; + this.lowerAcronymMatcher = null; + } else if (scope === "acronyms") { + this.lowerToAcronyms = {}; + this.casedAcronymMatcher = null; + this.lowerAcronymMatcher = null; + } else { + this[scope] = []; + } + } +} + +const instances: Record = {}; + +export function inflections(locale = "en") { + instances[locale] ??= new Inflector(); + return instances[locale]; +} + +export function setInflections(locale: string, fn: (inflector: Inflector) => void) { + fn(inflections(locale)); +} + +for (const locale in defaults) { + setInflections(locale, defaults[locale]); +} diff --git a/src/Transliterator.ts b/src/Transliterator.ts new file mode 100644 index 0000000..cb5927f --- /dev/null +++ b/src/Transliterator.ts @@ -0,0 +1,80 @@ +/* eslint-disable no-control-regex */ +// prettier-ignore +const DEFAULT_APPROXIMATIONS = { + 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', + 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', + 'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', + 'Õ': 'O', 'Ö': 'O', '×': 'x', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', + 'Ü': 'U', 'Ý': 'Y', 'Þ': 'Th', 'ß': 'ss', 'à': 'a', 'á': 'a', 'â': 'a', + 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', + 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', + 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ø': 'o', + 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y', + 'Ā': 'A', 'ā': 'a', 'Ă': 'A', 'ă': 'a', 'Ą': 'A', 'ą': 'a', 'Ć': 'C', + 'ć': 'c', 'Ĉ': 'C', 'ĉ': 'c', 'Ċ': 'C', 'ċ': 'c', 'Č': 'C', 'č': 'c', + 'Ď': 'D', 'ď': 'd', 'Đ': 'D', 'đ': 'd', 'Ē': 'E', 'ē': 'e', 'Ĕ': 'E', + 'ĕ': 'e', 'Ė': 'E', 'ė': 'e', 'Ę': 'E', 'ę': 'e', 'Ě': 'E', 'ě': 'e', + 'Ĝ': 'G', 'ĝ': 'g', 'Ğ': 'G', 'ğ': 'g', 'Ġ': 'G', 'ġ': 'g', 'Ģ': 'G', + 'ģ': 'g', 'Ĥ': 'H', 'ĥ': 'h', 'Ħ': 'H', 'ħ': 'h', 'Ĩ': 'I', 'ĩ': 'i', + 'Ī': 'I', 'ī': 'i', 'Ĭ': 'I', 'ĭ': 'i', 'Į': 'I', 'į': 'i', 'İ': 'I', + 'ı': 'i', 'IJ': 'IJ', 'ij': 'ij', 'Ĵ': 'J', 'ĵ': 'j', 'Ķ': 'K', 'ķ': 'k', + 'ĸ': 'k', 'Ĺ': 'L', 'ĺ': 'l', 'Ļ': 'L', 'ļ': 'l', 'Ľ': 'L', 'ľ': 'l', + 'Ŀ': 'L', 'ŀ': 'l', 'Ł': 'L', 'ł': 'l', 'Ń': 'N', 'ń': 'n', 'Ņ': 'N', + 'ņ': 'n', 'Ň': 'N', 'ň': 'n', 'ʼn': '\'n', 'Ŋ': 'NG', 'ŋ': 'ng', + 'Ō': 'O', 'ō': 'o', 'Ŏ': 'O', 'ŏ': 'o', 'Ő': 'O', 'ő': 'o', 'Œ': 'OE', + 'œ': 'oe', 'Ŕ': 'R', 'ŕ': 'r', 'Ŗ': 'R', 'ŗ': 'r', 'Ř': 'R', 'ř': 'r', + 'Ś': 'S', 'ś': 's', 'Ŝ': 'S', 'ŝ': 's', 'Ş': 'S', 'ş': 's', 'Š': 'S', + 'š': 's', 'Ţ': 'T', 'ţ': 't', 'Ť': 'T', 'ť': 't', 'Ŧ': 'T', 'ŧ': 't', + 'Ũ': 'U', 'ũ': 'u', 'Ū': 'U', 'ū': 'u', 'Ŭ': 'U', 'ŭ': 'u', 'Ů': 'U', + 'ů': 'u', 'Ű': 'U', 'ű': 'u', 'Ų': 'U', 'ų': 'u', 'Ŵ': 'W', 'ŵ': 'w', + 'Ŷ': 'Y', 'ŷ': 'y', 'Ÿ': 'Y', 'Ź': 'Z', 'ź': 'z', 'Ż': 'Z', 'ż': 'z', + 'Ž': 'Z', 'ž': 'z', + 'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'E', + 'Ж': 'ZH', 'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M', + 'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', + 'Ф': 'F', 'Х': 'KH', 'Ц': 'C', 'Ч': 'CH', 'Ш': 'SH', 'Щ': 'SHCH', + 'Ъ': '', 'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'YU', 'Я': 'YA', + 'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'e', + 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', + 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', + 'ф': 'f', 'х': 'kh', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'shch', + 'ъ': '', 'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya' +}; + +const DEFAULT_REPLACEMENT_CHAR = "?"; + +export class Transliterator { + approximations: Record = {}; + + constructor() { + for (const [source, replacement] of Object.entries(DEFAULT_APPROXIMATIONS)) { + this.approximate(source, replacement); + } + } + + approximate(char: string, replacement: string) { + this.approximations[char] = replacement; + } + + transliterate(string: string, replacement: string) { + return string.replace(/[^\u0000-\u007f]/g, c => this.approximations[c] || replacement || DEFAULT_REPLACEMENT_CHAR); + } +} + +const instances: Record = {}; + +export function transliterations(locale = "en") { + instances[locale] ??= new Transliterator(); + return instances[locale]; +} + +export function setTransliterations(locale: string, fn: (transliterator: Transliterator) => void) { + fn(transliterations(locale)); +} + +export function transliterate(string: string, options: { locale?: string; replacement?: string } = {}) { + const locale = options.locale || "en"; + const replacement = options.replacement || "?"; + + return transliterations(locale).transliterate(string, replacement); +} diff --git a/src/ahoCorasick.ts b/src/ahoCorasick.ts new file mode 100644 index 0000000..75a0b42 --- /dev/null +++ b/src/ahoCorasick.ts @@ -0,0 +1,153 @@ +/** + * aho-corasick fast string subsearching algorithm implementation + * taken from https://github.com/sonofmagic/modern-ahocorasick/blob/26c881a43f5da1029b31bba86be5fa1d78df58c9/src/index.ts and modified for our uses to check for word boundaries or subsequent matches for searches + */ +export class AhoCorasick { + gotoFn: Record>; + output: Record; + failure: Record; + constructor(keywords: string[]) { + this.gotoFn = { + // 0 is the root state + 0: {}, + // 1 is the word or string boundary state where we can start matching against the keywords + 1: {}, + }; + this.output = {}; + this.failure = { + 1: 0, + }; + + let stateCounter = 1; + for (const word of keywords) { + let curr = 1; + for (const char of word) { + if (this.gotoFn[curr] && char in this.gotoFn[curr]) { + curr = this.gotoFn[curr][char]; + } else { + stateCounter++; + this.gotoFn[stateCounter] = {}; + this.gotoFn[curr][char] = stateCounter; + curr = stateCounter; + } + } + + this.output[curr] = word; + // output states can fall back to the word boundary state as they just finished a match + this.failure[curr] = 1; + } + + const stateQueue: number[] = []; + + // f(s) = 0 for all states of depth 1 (the ones from which the word boundary state can transition to) + for (const [_startState, destinationState] of Object.entries(this.gotoFn[1])) { + this.failure[destinationState] ??= 0; + stateQueue.push(destinationState); + } + + while (stateQueue.length > 0) { + const stateNumber = stateQueue.shift(); + if (stateNumber !== undefined) { + for (const [fromState, toState] of Object.entries(this.gotoFn[stateNumber])) { + stateQueue.push(toState); + + // set state = f(r) + let cursor = this.failure[stateNumber]; + while (cursor > 0 && !(fromState in this.gotoFn[cursor])) { + cursor = this.failure[cursor]; + } + + if (fromState in this.gotoFn[cursor]) { + const fs = this.gotoFn[cursor][fromState]; + this.failure[toState] = fs; + this.output[toState] = + this.output[fs] && this.output[fs].length > this.output[toState].length ? this.output[fs] : this.output[toState]; + } else { + this.failure[toState] ??= 0; + } + } + } + // for each symbol a such that g(r, a) = s + } + } + + search(str: string, testWordBoundary = isWordBoundary, prefix = false) { + let state = 1; + let matchStack: [number, string][] = []; + let matchStackPos = 0; + const results: [number, string][] = []; + + for (let i = 0; i < str.length; i++) { + const char = str[i]; + + // if we don't have a transition for the current character, move to the next state based on the failure function links + while (state > 1 && !(char in this.gotoFn[state])) { + state = this.failure[state]; + } + + const isWordBoundary = testWordBoundary(char); + + // if we don't have a goto state after following failure links, we should go back to the base state. which base state depends on if we're at a word boundary or not + let canProcessState = char in this.gotoFn[state]; + if (!canProcessState) { + if (isWordBoundary) { + state = 1; + } else { + state = 0; + } + } + + if (state == 1 && isWordBoundary) { + // if we are at a word boundary and the match stack has entries, we should add them to the results + if (matchStack.length > 0 && matchStackPos === i - 1) { + results.push(...matchStack); + } + matchStack = []; + matchStackPos = 0; + + // now that we're in the word boundary state, see if we can actually process this character + canProcessState = char in this.gotoFn[state]; + } + + if (!canProcessState) { + if (prefix) { + break; + } else { + continue; + } + } + + state = this.gotoFn[state][char]; + + const outputValue = this.output[state]; + if (outputValue) { + const start = i - outputValue.length + 1; + const prevMatch = matchStack[matchStack.length - 1]; + if (prevMatch && prevMatch[0] >= start) { + // if this match is a longer match than the previous one, we should replace it + matchStack[matchStack.length - 1] = [i, outputValue]; + } else { + // otherwise, add it to the match stack + matchStack.push([i, outputValue]); + } + matchStackPos = i; + } + } + + if (matchStack.length > 0 && matchStackPos === str.length - 1) { + results.push(...matchStack); + } + + return results; + } +} + +function isWordBoundary(char: string): boolean { + const charCode = char.charCodeAt(0); + const isBasicLatinLetterOrDigit = + (charCode >= 65 && charCode <= 90) || // A-Z + (charCode >= 97 && charCode <= 122) || // a-z + (charCode >= 48 && charCode <= 57); // 0-9 + + return !isBasicLatinLetterOrDigit; +} diff --git a/src/applyInflections.ts b/src/applyInflections.ts new file mode 100644 index 0000000..bb2bb18 --- /dev/null +++ b/src/applyInflections.ts @@ -0,0 +1,27 @@ +import { inflections } from "./Inflector"; + +export function applyInflections(word: string, rules: [RegExp | string, string][]) { + let result = word; + const inflector = inflections(); + + if (result.length === 0) { + return result; + } + + const match = result.toLowerCase().match(/\b\w+$/); + + if (match && inflector.uncountables.indexOf(match[0]) > -1) { + return result; + } else { + for (const rule of rules) { + const [regex, replacement] = rule; + + if (result.match(regex)) { + result = result.replace(regex, replacement); + break; + } + } + + return result; + } +} diff --git a/src/cache.ts b/src/cache.ts new file mode 100644 index 0000000..580538e --- /dev/null +++ b/src/cache.ts @@ -0,0 +1,21 @@ +/** Wrap a given function in a cache that is off by default */ +export const cacheable = any>( + fn: T, + getCacheKey: (...args: Parameters) => string = ((str: string) => str) as unknown as (...args: Parameters) => string +) => { + const cache = new Map>(); + + const cachedFn = Object.assign( + function (this: unknown, ...args: Parameters): ReturnType { + return cache.get(getCacheKey(...args)) ?? fn.call(this, ...args); + }, + { + cache, + populate: (...args: Parameters) => { + cache.set(getCacheKey(...args), fn(...args)); + }, + } + ); + + return cachedFn as T & { cache: Map>; populate: (...args: Parameters) => void }; +}; diff --git a/src/camelize.ts b/src/camelize.ts new file mode 100644 index 0000000..a487fb9 --- /dev/null +++ b/src/camelize.ts @@ -0,0 +1,52 @@ +import { inflections } from "./Inflector"; +import type { AhoCorasick } from "./ahoCorasick"; +import { cacheable } from "./cache"; +import { capitalize } from "./capitalize"; + +const separators = /(?:_|(\/))([a-z\d]*)/gi; + +export const camelize = cacheable( + (term: string, uppercaseFirstLetter = true) => { + const inflector = inflections(); + + let result: string = term; + + if (uppercaseFirstLetter) { + const startAcronym = findLongestStartAcronym(inflector.lowerAcronymMatcher, term); + if (startAcronym) { + result = inflector.lowerToAcronyms[startAcronym] + result.slice(startAcronym.length); + } else { + result = term.charAt(0).toUpperCase() + term.slice(1); + } + } else { + const startAcronym = findLongestStartAcronym(inflector.casedAcronymMatcher, term); + if (startAcronym) { + result = startAcronym.toLowerCase() + result.slice(startAcronym.length); + } else { + result = term.charAt(0).toLowerCase() + term.slice(1); + } + } + + result = result.replace(separators, (_match, separator, word) => { + word = inflector.lowerToAcronyms[word] ?? capitalize(word); + if (separator) { + return separator + word; + } else { + return word; + } + }); + + return result; + }, + (term, uppercaseFirstLetter) => `${term}-${uppercaseFirstLetter}` +); + +const findLongestStartAcronym = (matcher: AhoCorasick | null, word: string) => { + if (!matcher) return null; + + const results = matcher.search(word, undefined, true); + if (results.length > 0) { + return results[0][1]; + } + return null; +}; diff --git a/src/capitalize.ts b/src/capitalize.ts new file mode 100644 index 0000000..6aa721e --- /dev/null +++ b/src/capitalize.ts @@ -0,0 +1,6 @@ +export function capitalize(str: string | null | undefined) { + if (str === null || str === undefined) { + return ""; + } + return str.charAt(0).toUpperCase() + str.slice(1); +} diff --git a/src/classify.ts b/src/classify.ts new file mode 100644 index 0000000..80a0730 --- /dev/null +++ b/src/classify.ts @@ -0,0 +1,5 @@ +import { cacheable } from "./cache"; +import { camelize } from "./camelize"; +import { singularize } from "./singularize"; + +export const classify = cacheable((tableName: string) => camelize(singularize(tableName.replace(/.*\./g, "")))); diff --git a/src/constantify.ts b/src/constantify.ts new file mode 100644 index 0000000..79cbbed --- /dev/null +++ b/src/constantify.ts @@ -0,0 +1,6 @@ +import { cacheable } from "./cache"; +import { underscore } from "./underscore"; + +export const constantify = cacheable((word: string) => { + return underscore(word).toUpperCase().replace(/\s+/g, "_"); +}); diff --git a/src/dasherize.ts b/src/dasherize.ts new file mode 100644 index 0000000..8573d70 --- /dev/null +++ b/src/dasherize.ts @@ -0,0 +1,3 @@ +export function dasherize(underscoredWord: string) { + return underscoredWord.replace(/_/g, "-"); +} diff --git a/src/defaults.ts b/src/defaults.ts new file mode 100644 index 0000000..7b11594 --- /dev/null +++ b/src/defaults.ts @@ -0,0 +1,66 @@ +import type { Inflector } from "./Inflector"; + +function en(inflector: Inflector) { + inflector.plural(/$/, "s"); + inflector.plural(/s$/i, "s"); + inflector.plural(/^(ax|test)is$/i, "$1es"); + inflector.plural(/(octop|vir)us$/i, "$1i"); + inflector.plural(/(octop|vir)i$/i, "$1i"); + inflector.plural(/(alias|status)$/i, "$1es"); + inflector.plural(/(bu)s$/i, "$1ses"); + inflector.plural(/(buffal|tomat)o$/i, "$1oes"); + inflector.plural(/([ti])um$/i, "$1a"); + inflector.plural(/([ti])a$/i, "$1a"); + inflector.plural(/sis$/i, "ses"); + inflector.plural(/(?:([^f])fe|([lr])f)$/i, "$1$2ves"); + inflector.plural(/(hive)$/i, "$1s"); + inflector.plural(/([^aeiouy]|qu)y$/i, "$1ies"); + inflector.plural(/(x|ch|ss|sh)$/i, "$1es"); + inflector.plural(/(matr|vert|ind)(?:ix|ex)$/i, "$1ices"); + inflector.plural(/^(m|l)ouse$/i, "$1ice"); + inflector.plural(/^(m|l)ice$/i, "$1ice"); + inflector.plural(/^(ox)$/i, "$1en"); + inflector.plural(/^(oxen)$/i, "$1"); + inflector.plural(/(quiz)$/i, "$1zes"); + + inflector.singular(/s$/i, ""); + inflector.singular(/(ss)$/i, "$1"); + inflector.singular(/(n)ews$/i, "$1ews"); + inflector.singular(/([ti])a$/i, "$1um"); + inflector.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)(sis|ses)$/i, "$1sis"); + inflector.singular(/(^analy)(sis|ses)$/i, "$1sis"); + inflector.singular(/([^f])ves$/i, "$1fe"); + inflector.singular(/(hive)s$/i, "$1"); + inflector.singular(/(tive)s$/i, "$1"); + inflector.singular(/([lr])ves$/i, "$1f"); + inflector.singular(/([^aeiouy]|qu)ies$/i, "$1y"); + inflector.singular(/(s)eries$/i, "$1eries"); + inflector.singular(/(m)ovies$/i, "$1ovie"); + inflector.singular(/(x|ch|ss|sh)es$/i, "$1"); + inflector.singular(/^(m|l)ice$/i, "$1ouse"); + inflector.singular(/(bus)(es)?$/i, "$1"); + inflector.singular(/(o)es$/i, "$1"); + inflector.singular(/(shoe)s$/i, "$1"); + inflector.singular(/(cris|test)(is|es)$/i, "$1is"); + inflector.singular(/^(a)x[ie]s$/i, "$1xis"); + inflector.singular(/(octop|vir)(us|i)$/i, "$1us"); + inflector.singular(/(alias|status)(es)?$/i, "$1"); + inflector.singular(/^(ox)en/i, "$1"); + inflector.singular(/(vert|ind)ices$/i, "$1ex"); + inflector.singular(/(matr)ices$/i, "$1ix"); + inflector.singular(/(quiz)zes$/i, "$1"); + inflector.singular(/(database)s$/i, "$1"); + + inflector.irregular("person", "people"); + inflector.irregular("man", "men"); + inflector.irregular("child", "children"); + inflector.irregular("sex", "sexes"); + inflector.irregular("move", "moves"); + inflector.irregular("zombie", "zombies"); + + inflector.uncountable("equipment", "information", "rice", "money", "species", "series", "fish", "sheep", "jeans", "police"); +} + +export const defaults: Record void> = { + en, +}; diff --git a/src/foreignKey.ts b/src/foreignKey.ts new file mode 100644 index 0000000..c565d56 --- /dev/null +++ b/src/foreignKey.ts @@ -0,0 +1,5 @@ +import { underscore } from "./underscore"; + +export function foreignKey(className: string, separateWithUnderscore = true) { + return `${underscore(className)}${separateWithUnderscore ? "_id" : "id"}`; +} diff --git a/src/humanize.ts b/src/humanize.ts new file mode 100644 index 0000000..1ebd066 --- /dev/null +++ b/src/humanize.ts @@ -0,0 +1,43 @@ +import { inflections } from "./Inflector"; +import { cacheable } from "./cache"; +export const humanize = cacheable( + (lowerCaseAndUnderscoredWord: string, options?: { capitalize?: boolean }) => { + let result = "" + lowerCaseAndUnderscoredWord; + const inflector = inflections(); + const humans = inflector.humans; + let human, rule, replacement; + + options = options || {}; + + if (options.capitalize === null || options.capitalize === undefined) { + options.capitalize = true; + } + + for (let i = 0, ii = humans.length; i < ii; i++) { + human = humans[i]; + rule = human[0]; + replacement = human[1]; + + if (rule instanceof RegExp ? rule.test(result) : result.indexOf(rule) > -1) { + result = result.replace(rule, replacement); + break; + } + } + + result = result.replace(/_id$/, ""); + result = result.replace(/_/g, " "); + + result = result.replace(/([a-z\d]*)/gi, function (match) { + return inflector.lowerToAcronyms[match] || match.toLowerCase(); + }); + + if (options.capitalize) { + result = result.replace(/^\w/, function (match) { + return match.toUpperCase(); + }); + } + + return result; + }, + (lowerCaseAndUnderscoredWord, options) => `${lowerCaseAndUnderscoredWord}-${options?.capitalize}` +); diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..7281cf3 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,17 @@ +export { pluralize } from "./pluralize"; +export { singularize } from "./singularize"; +export { camelize } from "./camelize"; +export { underscore } from "./underscore"; +export { humanize } from "./humanize"; +export { titleize } from "./titleize"; +export { tableize } from "./tableize"; +export { classify } from "./classify"; +export { dasherize } from "./dasherize"; +export { foreignKey } from "./foreignKey"; +export { ordinal } from "./ordinal"; +export { ordinalize } from "./ordinalize"; +export { parameterize } from "./parameterize"; +export { capitalize } from "./capitalize"; +export { inflections, setInflections } from "./Inflector"; +export { transliterations, setTransliterations, transliterate } from "./Transliterator"; +export { constantify } from "./constantify"; diff --git a/src/ordinal.ts b/src/ordinal.ts new file mode 100644 index 0000000..4e1b6c1 --- /dev/null +++ b/src/ordinal.ts @@ -0,0 +1,19 @@ +export function ordinal(number: string | number) { + const absNumber = Math.abs(Number(number)); + const mod100 = absNumber % 100; + + if (mod100 === 11 || mod100 === 12 || mod100 === 13) { + return "th"; + } else { + switch (absNumber % 10) { + case 1: + return "st"; + case 2: + return "nd"; + case 3: + return "rd"; + default: + return "th"; + } + } +} diff --git a/src/ordinalize.ts b/src/ordinalize.ts new file mode 100644 index 0000000..441adf6 --- /dev/null +++ b/src/ordinalize.ts @@ -0,0 +1,5 @@ +import { ordinal } from "./ordinal"; + +export function ordinalize(number: string | number) { + return `${number}${ordinal(number)}`; +} diff --git a/src/parameterize.ts b/src/parameterize.ts new file mode 100644 index 0000000..b0c52d1 --- /dev/null +++ b/src/parameterize.ts @@ -0,0 +1,36 @@ +import { cacheable } from "./cache"; +import { transliterate } from "./Transliterator"; + +export const parameterize = cacheable( + (string: string, options: { locale?: string; separator?: string | null; preserveCase?: boolean } = {}) => { + if (options.separator === undefined) { + options.separator = "-"; + } + + if (options.separator === null) { + options.separator = ""; + } + + // replace accented chars with their ascii equivalents + let result = transliterate(string, { locale: options.locale }); + + result = result.replace(/[^a-z0-9\-_]+/gi, options.separator); + + if (options.separator.length) { + const separatorRegex = new RegExp(options.separator); + + // no more than one of the separator in a row + result = result.replace(new RegExp(separatorRegex.source + "{2,}"), options.separator); + + // remove leading/trailing separator + result = result.replace(new RegExp("^" + separatorRegex.source + "|" + separatorRegex.source + "$", "i"), ""); + } + + if (options.preserveCase) { + return result; + } + + return result.toLowerCase(); + }, + (string, options) => `${string}-${options?.locale}-${options?.separator}-${options?.preserveCase}` +); diff --git a/src/pluralize.ts b/src/pluralize.ts new file mode 100644 index 0000000..f96d3ae --- /dev/null +++ b/src/pluralize.ts @@ -0,0 +1,8 @@ +import { applyInflections } from "./applyInflections"; +import { cacheable } from "./cache"; +import { inflections } from "./Inflector"; + +export const pluralize = cacheable( + (word: string, locale = "en") => applyInflections(word, inflections(locale).plurals), + (word, locale) => `${word}-${locale}` +); diff --git a/src/singularize.ts b/src/singularize.ts new file mode 100644 index 0000000..ae36380 --- /dev/null +++ b/src/singularize.ts @@ -0,0 +1,8 @@ +import { applyInflections } from "./applyInflections"; +import { cacheable } from "./cache"; +import { inflections } from "./Inflector"; + +export const singularize = cacheable( + (word: string, locale = "en") => applyInflections(word, inflections(locale).singulars), + (word, locale) => `${word}-${locale}` +); diff --git a/src/tableize.ts b/src/tableize.ts new file mode 100644 index 0000000..7941cbe --- /dev/null +++ b/src/tableize.ts @@ -0,0 +1,6 @@ +import { pluralize } from "./pluralize"; +import { underscore } from "./underscore"; + +export function tableize(className: string) { + return pluralize(underscore(className)); +} diff --git a/src/titleize.ts b/src/titleize.ts new file mode 100644 index 0000000..dd8e36e --- /dev/null +++ b/src/titleize.ts @@ -0,0 +1,8 @@ +import { humanize } from "./humanize"; +import { underscore } from "./underscore"; + +export function titleize(word: string) { + return humanize(underscore(word)).replace(/(^|[\s¿/]+)([a-z])/g, function(match, boundary, letter, idx, string) { + return match.replace(letter, letter.toUpperCase()); + }); +} diff --git a/src/underscore.ts b/src/underscore.ts new file mode 100644 index 0000000..2d96a28 --- /dev/null +++ b/src/underscore.ts @@ -0,0 +1,43 @@ +import { cacheable } from "./cache"; +import { inflections } from "./Inflector"; + +const letterOrDigit = /[A-Za-z\d]/; +const wordBoundaryOrNonLetter = /\b|[^a-z]/; +const boundaryMatcher = /([A-Z\d]+)([A-Z][a-z])|([a-z\d])([A-Z])|(-)/g; + +export const underscore = cacheable((camelCasedWord: string) => { + let result = camelCasedWord; + const acronymMatches = inflections().casedAcronymMatcher?.search(camelCasedWord, isWordBoundary); + if (acronymMatches) { + acronymMatches.forEach(([pos, match], index) => { + if (index > 0) { + pos = pos + index - 1; + } + const beforeCharacter = result[pos - match.length]; + const afterCharacter = result[pos + 1]; + + if ((pos == match.length - 1 || letterOrDigit.test(beforeCharacter)) && wordBoundaryOrNonLetter.test(afterCharacter)) { + if (pos > match.length - 1) { + result = `${result.slice(0, pos - match.length + 1)}_${match.toLowerCase()}${result.slice(pos + 1)}`; + } else { + result = `${match.toLowerCase()}${result.slice(pos + 1)}`; + } + } + }); + } + + return result + .replace(boundaryMatcher, (_match, p1, p2, p3, p4, p5) => { + if (p1) return `${p1}_${p2}`; + if (p5) return `_`; + return `${p3}_${p4}`; + }) + .toLowerCase(); +}); + +function isWordBoundary(char: string): boolean { + const charCode = char.charCodeAt(0); + const isLowercaseLetter = charCode >= 97 && charCode <= 122; // a-z + + return !isLowercaseLetter; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..40f07f9 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "lib": ["es2020", "DOM"], + "baseUrl": "./", + "moduleResolution": "node", + "module": "commonjs", + "target": "es2020", + "types": ["vitest", "node"], + "outDir": "./dist", + "strict": true, + "declaration": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "esModuleInterop": true, + "skipLibCheck": true + } +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..13dffb9 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + include: ["spec/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"] + } +});