mirror of
https://github.com/Richard-Sti/csiborgtools.git
synced 2024-10-19 00:15:06 +02:00
b710b8e89c
Richard Stiskalek
b710b8e89c
Add new ICs (#59)
* edit IC paths * Remove import * Edit path * Change naming * Add __main__ * Script to match everything * Edit docs * Remove test statement * Move import * Update nb
3.0 MiB
3.0 MiB
In [1]:
import sys
import numpy as np
import h5py
import matplotlib.pyplot as plt
from numba import jit
import numpy
sys.path.append("../")
import csiborgtools
%matplotlib widget
%load_ext autoreload
%autoreload 2
In [58]:
paths = csiborgtools.read.CSiBORGPaths(**csiborgtools.paths_glamdring)
nsim0 = 7468
nsimx = 7588
nsnap0 = max(paths.get_snapshots(nsim0))
nsnapx = max(paths.get_snapshots(nsimx))
overlapper = csiborgtools.match.ParticleOverlap()
partreader = csiborgtools.read.ParticleReader(paths)
In [67]:
clumpmap0 = csiborgtools.read.read_h5(paths.particles_path(nsim0))["clumpmap"]
parts0 = csiborgtools.read.read_h5(paths.initmatch_path(nsim0, "particles"))["particles"]
clid2map0 = {clid: i for i, clid in enumerate(clumpmap0[:, 0])}
# # clumpmapx = csiborgtools.read.read_h5(paths.particles_path(nsimx))["clumpmap"]
# # partsx = csiborgtools.read.read_h5(paths.initmatch_path(nsimx, "particles"))["particles"]
# # clid2mapx = {clid: i for i, clid in enumerate(clumpmapx[:, 0])}
cat0 = csiborgtools.read.HaloCatalogue(nsim0, paths, load_initial=True, minmass=None, with_lagpatch=True, load_clumps_cat=True)
catx = csiborgtools.read.HaloCatalogue(nsimx, paths, load_initial=True, minmass=None, with_lagpatch=True, load_clumps_cat=True)
In [95]:
paths.get_ics()
Out[95]:
array([7444, 7468, 7492, 7516, 7540, 7564, 7588, 7612, 7636, 7660, 7684, 7708, 7732, 7756, 7780, 7804, 7828, 7852, 7876, 7900, 7924, 7948, 7972, 7996, 8020, 8044, 8068, 8092, 8116, 8140, 8164, 8188, 8212, 8236, 8260, 8284, 8308, 8332, 8356, 8380, 8404, 8428, 8452, 8476, 8500, 8524, 8548, 8572, 8596, 8620, 8644, 8668, 8692, 8716, 8740, 8764, 8788, 8812, 8836, 8860, 8884, 8908, 8932, 8956, 8980, 9004, 9028, 9052, 9076, 9100, 9124, 9148, 9172, 9196, 9220, 9244, 9268, 9292, 9316, 9340, 9364, 9388, 9412, 9436, 9460, 9484, 9508, 9532, 9556, 9580, 9604, 9628, 9652, 9676, 9700, 9724, 9748, 9772, 9796, 9820, 9844])
In [68]:
pair = csiborgtools.read.PairOverlap(cat0, catx, paths)
In [76]:
x = pair.dist(in_initial=True, norm_kind="sum_patch")
y = pair.overlap(False)
x = np.concatenate(x)
y = np.concatenate(y)
In [80]:
from scipy.special import comb
from itertools import combinations
In [81]:
ics = paths.get_ics()
In [88]:
import random
combs = list(combinations(ics, 2))
random.shuffle(combs)
In [91]:
random.Random(32).shuffle(combs)
In [92]:
combs
Out[92]:
[(8236, 9676), (7756, 7924), (7684, 9796), (7996, 9244), (8380, 8476), (8596, 8956), (9220, 9268), (8572, 9604), (7588, 9028), (7636, 7732), (7588, 8884), (7636, 8980), (7564, 9460), (8092, 9292), (7900, 8548), (7804, 9508), (8500, 9004), (8212, 9148), (7516, 8548), (7684, 8140), (8476, 8908), (8308, 8452), (7756, 8188), (8620, 9772), (8932, 9388), (8692, 9028), (7732, 9028), (8476, 8716), (7924, 8188), (9388, 9700), (8620, 9364), (9148, 9412), (7540, 8860), (8500, 9244), (8548, 9508), (7972, 8596), (8356, 8524), (7684, 8764), (7588, 8524), (8044, 8188), (7924, 9364), (7492, 8716), (8332, 8404), (7804, 8260), (8044, 8524), (7804, 8812), (8692, 8812), (8332, 8956), (9100, 9316), (7684, 9844), (7852, 8932), (7468, 9316), (7900, 9196), (7780, 8188), (8284, 8428), (8500, 9028), (7732, 9004), (8980, 9556), (7444, 7876), (9028, 9340), (8476, 8788), (9508, 9796), (9292, 9820), (7828, 8740), (7876, 9556), (7468, 9220), (8404, 8668), (7924, 8596), (8524, 9196), (7948, 9364), (8740, 8788), (8308, 8956), (9364, 9772), (7492, 9364), (7876, 9388), (7804, 8212), (9052, 9220), (7468, 9628), (8236, 8308), (8548, 9028), (7564, 7756), (8884, 9652), (9460, 9532), (7444, 9772), (8860, 8908), (7924, 9196), (7636, 8164), (7468, 8404), (7516, 8836), (8212, 8980), (8356, 9004), (9004, 9340), (8428, 8956), (8404, 9700), (8140, 8716), (7708, 8788), (7660, 8260), (8836, 9196), (7876, 9748), (7684, 8740), (8500, 8884), (7924, 8092), (9652, 9772), (8548, 9124), (7948, 8764), (7516, 8164), (7708, 9364), (7540, 7828), (8404, 9004), (7612, 9004), (8836, 9796), (8428, 8500), (8644, 9580), (8020, 8812), (8644, 8884), (7852, 9628), (9340, 9652), (7588, 9484), (7900, 8668), (7516, 9700), (8212, 8500), (8308, 9724), (7468, 8020), (7516, 7900), (7828, 8788), (8524, 9412), (7684, 7972), (9148, 9748), (7708, 9412), (7732, 9580), (7924, 8428), (9388, 9844), (8068, 8908), (8140, 9052), (7564, 9652), (7468, 9124), (7660, 9796), (8260, 9532), (7564, 8476), (7492, 8932), (8932, 9124), (8212, 8236), (8596, 9100), (8860, 9604), (8956, 9676), (8308, 9172), (8380, 8500), (7900, 7996), (8692, 9388), (7996, 8740), (8524, 9148), (7444, 8692), (8596, 9412), (8020, 8860), (7900, 9340), (8044, 9364), (7780, 8212), (7612, 9196), (8692, 9796), (8596, 8692), (7732, 9436), (8668, 9724), (8212, 8956), (8404, 9628), (9532, 9820), (8764, 9004), (8188, 8332), (7924, 8692), (7756, 9676), (7756, 9316), (8452, 9748), (8476, 9004), (7732, 9484), (8452, 9844), (8260, 8284), (8044, 9748), (7564, 8620), (8260, 8836), (8740, 9556), (8452, 9292), (8140, 8380), (8500, 8572), (7516, 8572), (8236, 9628), (8332, 9196), (8644, 9364), (8428, 9196), (8812, 9172), (8836, 9076), (7828, 8404), (8092, 8788), (8644, 9388), (8308, 9244), (8188, 9268), (8284, 8764), (8500, 9388), (7564, 8812), (7588, 8644), (8212, 8764), (7732, 8044), (7588, 7828), (7852, 9436), (8668, 9388), (7828, 8164), (8044, 9316), (8116, 8956), (8284, 8692), (8884, 9100), (7468, 9820), (8596, 8860), (9316, 9772), (9004, 9172), (8212, 9364), (7828, 9724), (8500, 9124), (8716, 9364), (7900, 8020), (8404, 9772), (7468, 8692), (7876, 9148), (9076, 9844), (8596, 9340), (8548, 8956), (9148, 9268), (8116, 9700), (8092, 9532), (7948, 8980), (7564, 8716), (8308, 9508), (8524, 9796), (8020, 9460), (7564, 9796), (8740, 9028), (9412, 9460), (7492, 9652), (7468, 8884), (9196, 9844), (7732, 9172), (9028, 9412), (7756, 9196), (8332, 9796), (8548, 9484), (8404, 8956), (8836, 9220), (8356, 9076), (8308, 9196), (8884, 9244), (9580, 9676), (7876, 7972), (7564, 9820), (9076, 9700), (7804, 9196), (7876, 8572), (8788, 9388), (8188, 8236), (7540, 8284), (7612, 8692), (8500, 8908), (8428, 9172), (7948, 8500), (7660, 8236), (7828, 9796), (7852, 8020), (8260, 9724), (8020, 9172), (9340, 9700), (7444, 8644), (7900, 8236), (8164, 8788), (8620, 9004), (7564, 8308), (7996, 8428), (8236, 9700), (8188, 8308), (7660, 9052), (9100, 9292), (7444, 8884), (7828, 8260), (8404, 9268), (7972, 9076), (7444, 8212), (8524, 9364), (8308, 8668), (8500, 8812), (7996, 8788), (8020, 8140), (8764, 9412), (9244, 9436), (8908, 9724), (8212, 9532), (8692, 8956), (8212, 9268), (7924, 8044), (7612, 8092), (8956, 9004), (8788, 9436), (9004, 9484), (8020, 9244), (8812, 9508), (8116, 8236), (9268, 9388), (8668, 9460), (8212, 8836), (8908, 9508), (7636, 8260), (8692, 8788), (9148, 9844), (7588, 9844), (9076, 9436), (7900, 8524), (7516, 9244), (8332, 8884), (7708, 8116), (7972, 9652), (7804, 7924), (7660, 9364), (8092, 9484), (8380, 9700), (8356, 8860), (8596, 8908), (7972, 8812), (7804, 8236), (8236, 9340), (7756, 9148), (8068, 9676), (8788, 9292), (7972, 9220), (8044, 9580), (9604, 9628), (8716, 9604), (8404, 8476), (8668, 9676), (8308, 8980), (7828, 8188), (8500, 8980), (7732, 7804), (8356, 8908), (8884, 8932), (7636, 9604), (8188, 8788), (8020, 9004), (8812, 9412), (7564, 9772), (7996, 9844), (8572, 9004), (8572, 9340), (7972, 8764), (8548, 9340), (7852, 9340), (8332, 8788), (8164, 9460), (8596, 8620), (8212, 9292), (7564, 8212), (8092, 9436), (7612, 7804), (7660, 9148), (8356, 9052), (9100, 9148), (8596, 8932), (7732, 8236), (7900, 9364), (7708, 7972), (7636, 8404), (9316, 9340), (8692, 9604), (8764, 9196), (9460, 9508), (7588, 8764), (8260, 9652), (7444, 7612), (8332, 9676), (7684, 8308), (8524, 9220), (8188, 9700), (7996, 8980), (8284, 9580), (8140, 9508), (8572, 8836), (7924, 9748), (8884, 9748), (9148, 9772), (8116, 8140), (8308, 9028), (8980, 9052), (8116, 8788), (8164, 8836), (8620, 9796), (7828, 8908), (8908, 9172), (8572, 8692), (7684, 8260), (8764, 9436), (8092, 9724), (8404, 9748), (7636, 8476), (9412, 9652), (8404, 8860), (8812, 9292), (8548, 8932), (9388, 9628), (7780, 8788), (8140, 9148), (7588, 9268), (7924, 9340), (9268, 9412), (8236, 9772), (7780, 8548), (7444, 9580), (7564, 8836), (7636, 9292), (7660, 9196), (7564, 9076), (8716, 9532), (7540, 8644), (8476, 9772), (7708, 9100), (8884, 9268), (9148, 9508), (8644, 9076), (8836, 8860), (7564, 8140), (8644, 9244), (7852, 8620), (7876, 8212), (7444, 8812), (8524, 8836), (7492, 8644), (8164, 9076), (8020, 9436), (8692, 9172), (8116, 9076), (8572, 8716), (8116, 8668), (7684, 8116), (9532, 9748), (8764, 9340), (8692, 9244), (8572, 9148), (8500, 9556), (8500, 9532), (7588, 9244), (7492, 7852), (8356, 8788), (9148, 9700), (7660, 9460), (7780, 8428), (8380, 9052), (7588, 8812), (7780, 8980), (8452, 9628), (8644, 8860), (8188, 9412), (9244, 9556), (7996, 8068), (7756, 9412), (7804, 8524), (7828, 7852), (8788, 9628), (8884, 9556), (7516, 9268), (9100, 9820), (9220, 9340), (7660, 9604), (8188, 8980), (7468, 7804), (9292, 9580), (7732, 9076), (8620, 9052), (7444, 8452), (8068, 8884), (8332, 9700), (9076, 9652), (8332, 9172), (7756, 9388), (8284, 9820), (9556, 9772), (7972, 8044), (7852, 9244), (7852, 9316), (7612, 9172), (8332, 9052), (7588, 8692), (9340, 9388), (8116, 9124), (8572, 9700), (8668, 8788), (8236, 8452), (8092, 8428), (8020, 9556), (7468, 7828), (7564, 7684), (8380, 9004), (8212, 9340), (7780, 9028), (7780, 9700), (8404, 8980), (7684, 8620), (7684, 8524), (7876, 9196), (8236, 9532), (7684, 9364), (8260, 8908), (7948, 9028), (8908, 8980), (7516, 8428), (8212, 9676), (7876, 9796), (8140, 9076), (8020, 9268), (7516, 8812), (7468, 8260), (7948, 9748), (8740, 8908), (7444, 7468), (8692, 9436), (8308, 8428), (8404, 9340), (8188, 8884), (7636, 8092), (8404, 9292), (8116, 8164), (7540, 7996), (9460, 9820), (9220, 9244), (8740, 8932), (8716, 9076), (8596, 9484), (8692, 9076), (8116, 8596), (7660, 8620), (8308, 8860), (9124, 9724), (8332, 9532), (7852, 9196), (8932, 9004), (7732, 9316), (8140, 9220), (7804, 9700), (8092, 9124), (7636, 9700), (8020, 9748), (7924, 9652), (7972, 8452), (7588, 9820), (8020, 8284), (7900, 8836), (8020, 8908), (7924, 9172), (8428, 8644), (7516, 8860), (7756, 9364), (7780, 9340), (8716, 8860), (8836, 9028), (7948, 8236), (7900, 9820), (7636, 9724), (7612, 9268), (9388, 9748), (7708, 9004), (8500, 8764), (7516, 8236), (8140, 8332), (7756, 9556), (7852, 9076), (8596, 9172), (8740, 8884), (8572, 9100), (8044, 8668), (7780, 8380), (7804, 9148), (8548, 9220), (8548, 9004), (8860, 9796), (7444, 8620), (8716, 9052), (7924, 9628), (8140, 9724), (7444, 8020), (8476, 8548), (7564, 8788), (7516, 7972), (7948, 9844), (8044, 9532), (8452, 9148), (7564, 7588), (8092, 8404), (8956, 9580), (9340, 9748), (7996, 9508), (7540, 8716), (7732, 9796), (7444, 8764), (8092, 8980), (8476, 8860), (7996, 8596), (8932, 9724), (8836, 9748), (8908, 9244), (7732, 9292), (8404, 9316), (7972, 9196), (7636, 8284), (8764, 8812), (7468, 8644), (7996, 8452), (7660, 7852), (8044, 9676), (8212, 9436), (7540, 8500), (9172, 9580), (8956, 9172), (8980, 9460), (7516, 7924), (8164, 8452), (8308, 8500), (8452, 8788), (8356, 9820), (7564, 8980), (9004, 9604), (7684, 7876), (8572, 8884), (7876, 9292), (8692, 9700), (7804, 8164), (8236, 9460), (7876, 9244), (7876, 8260), (8716, 8764), (8452, 8620), (9628, 9700), (7948, 9220), (7900, 8260), (8668, 8956), (7708, 8932), (7660, 8980), (8596, 9292), (8836, 9508), (7540, 7564), (7948, 8332), (8116, 8476), (7540, 9196), (9412, 9436), (8908, 9844), (7492, 8188), (8380, 8956), (9052, 9292), (7924, 8212), (9244, 9772), (8212, 9748), (7588, 9460), (8572, 9580), (7564, 9748), (7564, 9580), (9052, 9148), (8236, 9580), (7588, 9412), (9292, 9844), (7612, 8380), (9076, 9580), (8044, 9628), (8692, 9484), (8356, 9484), (9124, 9652), (7540, 8620), (7444, 8572), (7756, 8092), (8260, 9460), (8284, 9172), (7852, 8476), (8284, 8548), (8428, 8476), (9244, 9844), (8116, 9772), (7540, 8044), (8356, 8404), (8116, 9052), (7540, 8236), (8020, 8572), (8476, 9820), (7684, 7852), (7828, 9436), (7612, 7828), (8812, 9436), (7564, 9052), (8404, 9388), (8980, 9412), (9028, 9220), (8476, 9460), (7804, 8692), (8308, 9388), (8572, 9484), (8668, 8692), (7468, 8716), (8044, 8356), (8356, 9604), (7900, 7924), (8164, 9316), (8356, 9676), (9484, 9844), (7780, 7828), (8788, 8884), (9172, 9532), (7804, 9532), (8188, 8692), (8236, 9004), (8620, 8884), (8092, 9172), (8092, 8236), (7492, 9268), (9196, 9508), (8044, 8572), (8428, 9124), (8380, 9292), (7660, 9484), (7540, 8476), (7660, 8908), (7564, 7996), (7972, 9628), (7756, 9748), (7948, 9100), (7516, 8932), (9436, 9676), (7516, 9436), (7804, 8764), (7636, 8932), (7972, 9580), (8020, 9076), (7708, 8212), (8188, 8668), (8428, 9820), (7708, 9340), (8452, 9436), (8236, 9364), (7636, 9220), (8068, 9484), (7588, 9364), (8188, 8404), (9244, 9508), (7924, 9052), (7780, 8956), (7612, 8332), (7780, 9844), (8620, 9196), (8044, 9436), (8092, 8836), (8404, 8596), (8716, 8812), (8956, 9556), (8788, 9340), (8788, 8812), (7636, 8860), (7492, 9484), (7564, 9604), (8836, 9772), (7540, 9748), (7780, 8500), (7468, 8668), (7444, 8932), (7588, 8452), (8236, 9220), (8860, 8980), (7756, 9220), (7996, 9364), (8524, 9484), (9004, 9292), (7516, 8524), (8476, 8572), (8116, 9844), (7828, 8140), (9148, 9388), (7948, 7972), (9244, 9748), (8308, 9748), (7996, 8908), (8092, 9220), (7876, 9676), (7612, 9220), (8572, 8596), (8524, 8812), (7516, 9844), (8476, 9028), (8116, 9412), (8212, 9412), (7852, 9412), (8164, 8260), (7660, 8548), (8548, 9052), (7540, 9388), (8452, 9004), (8092, 8212), (7972, 8380), (7708, 8284), (9076, 9556), (9052, 9844), (7996, 8284), (7780, 7804), (8092, 9772), (7804, 8356), (8836, 9316), (8164, 9412), (8956, 9316), (8764, 9172), (8044, 8692), (9004, 9028), (7660, 7756), (7780, 9364), (7756, 9052), (8236, 9484), (8284, 9676), (8932, 9148), (8260, 8596), (8236, 8956), (8404, 9820), (7732, 9388), (8836, 8956), (8644, 9700), (7804, 8092), (7684, 8548), (8788, 8860), (8332, 9316), (9124, 9820), (8932, 9076), (8956, 9220), (7588, 8116), (8788, 9244), (9340, 9556), (7540, 9076), (8188, 9652), (7564, 8092), (9148, 9676), (8404, 8620), (7468, 9388), (7756, 8212), (8452, 8764), (7780, 8716), (7636, 9388), (7684, 8644), (7516, 8188), (7516, 7588), (8812, 8884), (7516, 8644), (9028, 9292), (7900, 8716), (9508, 9748), (7780, 9100), (8908, 9052), (7492, 8668), (8188, 9292), (8140, 9628), (9244, 9604), (8716, 9028), (8452, 9052), (7684, 8332), (8428, 9844), (9172, 9676), (8308, 8788), (8116, 9100), (7636, 9532), (8908, 9268), (7780, 9628), (7516, 8908), (9532, 9676), (8716, 8836), (8692, 8932), (8356, 8836), (8308, 9772), (8572, 8956), (7468, 9580), (8428, 9004), (8044, 8596), (8260, 8428), (8452, 9700), (8356, 9316), (7564, 9388), (7732, 8932), (8860, 9388), (8452, 8716), (8164, 8212), (8188, 9628), (7804, 8332), (7588, 8380), (7564, 9148), (8380, 9580), (8380, 8692), (7492, 8860), (8524, 9604), (8260, 9292), (7780, 7924), (8260, 9148), (8380, 9220), (7972, 8236), (8476, 9652), (7852, 8596), (7540, 7852), (7564, 8548), (8140, 9388), (8356, 8548), (9148, 9196), (8860, 9820), (8140, 8188), (8788, 9412), (8092, 8356), (7828, 9844), (8644, 9748), (7876, 9220), (8380, 9724), (7636, 7804), (7852, 8236), (8428, 9676), (7564, 8932), (8860, 9772), (7900, 9796), (9148, 9796), (9076, 9484), (8308, 8884), (8380, 8932), (7900, 8284), (8644, 9028), (8332, 8908), (7708, 8164), (7684, 8812), (7444, 9436), (7780, 8620), (7900, 8428), (8764, 8980), (9196, 9700), (9316, 9484), (7588, 9604), (7996, 9628), (8092, 8308), (7468, 8164), (8644, 9556), (8620, 8980), (8068, 8332), (9052, 9652), (7708, 8380), (8908, 9124), (7948, 8644), (7900, 9748), (8332, 9652), (9052, 9244), (9172, 9484), (7612, 9100), (7660, 8932), (8188, 8740), (8836, 9052), (7948, 9484), (7468, 8332), (7612, 8548), (8380, 9316), (7924, 8548), (7972, 9460), (7564, 9292), (8164, 8620), (8812, 9460), (8836, 9292), (8140, 8908), (8644, 9124), (7828, 9412), (7444, 7948), (7516, 9508), (7588, 8932), (8164, 8356), (8788, 9508), (8116, 8644), (8332, 9844), (7588, 7876), (9556, 9748), (7612, 9244), (7564, 7948), (7492, 9388), (9172, 9556), (7516, 9580), (8092, 8500), (8404, 8764), (8044, 9508), (8356, 9748), (7492, 8236), (8644, 9340), (7660, 8404), (7804, 9436), (7636, 8524), (8212, 8380), (8404, 9676), (9556, 9628), (8908, 9412), (8524, 9076), (8596, 8764), (7516, 9796), (7540, 8932), (7540, 9820), (7948, 8164), (7468, 9652), (7564, 7780), (7780, 9484), (8332, 9220), (7540, 9508), (7900, 9028), ...]
In [ ]:
In [77]:
plt.figure()
plt.scatter(x, y, s=0.1)
plt.show()
Figure
In [ ]:
In [53]:
for i in list(clid2map0.keys())[50000:]:
print(i)
k = clid2map0[i]
X = csiborgtools.read.load_parent_particles(k, parts0, clumpmap0, clid2map0, cat0.clumps_cat)
if X is not None:
break
X
5029841 5029842 5029843 5029844 5029849 5029851 5029852 5029855 5029857 5029859 5029860 5029861 5029864 5029866 5029869 5029871 5029873 5029874 5029876 5029878 5029879 5029880 5029884 5029897 5029899 5029900 5029905 5029906 5029909 5029910 5029913 5029914 5029918 5029919 5029920 5029922 5029924 5029925 5029928 5029930 5029931 5029933 5029936 5029941 5029943 5029946 5029950 5029952 5029956 5029958 5029959 5029961 5029967 5029968 5029969 5029970 5029974 5029975 5029976 5029978 5029982 5029988 5029990 5029992 5029999 5030000 5030001 5030002 5030003 5030005 5030006 5030012 5030013 5030015 5030016 5030018 5030022 5030025 5030026 5030029 5030030 5030031 5030032 5030033 5030036 5030040 5030043 5030046 5030047 5030051 5030052 5030056 5030057 5030058 5030060 5030064 5030066 5030067 5030071 5030072 5030074 5030075 5030078 5030079 5030080 5030081 5030086 5030087 5030089 5030091 5030092 5030095 5030096 5030113 5030119 5030122 5030126 5030127 5030128 5030138 5030144 5030147 5030156 5030158 5030162 5030171 5030183 5030184 5030187 5030188 5030189 5030191 5030195 5030203 5030206 5030211 5030218 5030221 5030230 5030232 5030247 5030260 5030273 5030295 5030301 5030351 5030374 5030394 5030410 5030467 5030540 5032241 5032279 5032324 5032333 5032344 5032347 5032374 5032381 5032395 5032399 5032405 5032410 5032411 5032424 5032425 5032440 5032454 5032460 5032462 5032464 5032481 5032490 5032509 5032536 5032539 5032568 5032606 5032646 5032680 5032692 5032700 5032715 5032729 5032736 5032744 5032745 5032746 5032756 5032773 5032791 5032792 5032817 5032825 5032829 5032851 5032852 5032879 5032889 5032895 5032899 5032930 5032963 5032968 5032977 5032985 5033003 5033015 5033016 5033029 5033045 5033047 5033049 5033065 5033104 5033115 5033118 5033135 5033184 5033191 5033201 5033225 5033235 5033260 5033273 5033274 5033289 5033299 5033312 5033317 5033352 5033358 5033403 5033423 5033479 5033490 5033500 5033529 5033558 5033563 5033566 5033602 5033688 5033692 5033715 5033729 5033734 5033735 5033748 5033754 5033768 5033791 5033804 5033828 5033842 5033859 5033875 5033876 5033877 5033881 5033902 5033928 5033987 5033993 5033994 5033995 5034073 5034074 5034078 5034079 5034099 5034127 5034131 5034143 5034156 5034217 5034275 5034277 5034303 5034307 5034323 5034325 5034392 5034400 5034404 5034414 5034416 5034431 5034439 5034470 5034494 5034513 5034520 5034526 5034531 5034551 5034580 5034601 5034654 5034659 5034696 5034701 5034720 5034742 5034772 5034777 5034806 5034813 5034822 5034825 5034828 5034853 5034869 5034900 5034902 5034912 5034955 5034962 5034974 5034991 5034999 5035017 5035020 5035061 5035099 5035105 5035123 5035190 5035219 5035295 5035364 5035379 5035412 5035459 5035480 5035517 5035532 5035628 5035690 5035715 5035812 5035831 5035873 5035892 5036097 5036507 5040706 5040971 5041087 5041184 5041214 5041220 5041797 5041988 5042282 5042343 5042352 5042905 5043266 5043361 5043671 5043787 5043830 5043855 5044197 5044333 5044543 5045386 5045681 5049572 5050601 5057241 5068265 5068595 5079055 5104089 5104090 5104093 5104094 5104096 5104101 5104104 5104106 5104107 5104111 5104113 5104115 5104118 5104119 5104120 5104125 5104130 5104132 5104133 5104138 5104140 5104143 5104145 5104146 5104148 5104149 5104152 5104156 5104157 5104158 5104160 5104162 5104163 5104166 5104168 5104170 5104171 5104174 5104180 5104181 5104182 5104183 5104189 5104192 5104193 5104196 5104199 5104202 5104208 5104210 5104213 5104216 5104218 5104222 5104224 5104226 5104233 5104251 5104254 5104263 5104280 5104281 5104283 5104311 5104473 5104531 5104696 5104697 5104701 5104708 5104718 5104731 5104735 5104737 5104755 5104762 5104775 5104778 5104782 5104787 5104788 5104803 5104849 5104850 5104851 5104853 5104854 5104859 5104868 5104870 5104873 5104875 5104879 5104887 5104895 5104898 5104899 5104904 5104905 5104912 5104915 5104919 5104920 5104926 5104927 5104932 5104936 5104939 5104945 5104955 5104958 5104959 5104961 5104971 5104973 5104982 5104985 5104987 5104998 5105016 5105019 5105021 5105022 5105026 5105027 5105037 5105046 5105055 5105081 5105084 5105086 5105087 5105091 5105094 5105098 5105114 5105122 5105123 5105124 5105126 5105134 5105140 5105143 5105147 5105149 5105152 5105154 5105156 5105161 5105164 5105169 5105174 5105178 5105180 5105188 5105190 5105193 5105194 5105195 5105196 5105213 5105215 5105229 5105231 5105237 5105244 5105249 5105251 5105255 5105261 5105271 5105276 5105277 5105278 5105279 5105285 5105288 5105289 5105293 5105316 5105318 5105325 5105329 5105331 5105337 5105347 5105357 5105361 5105371 5105384 5105385 5105395 5105398 5105407 5105420 5105424 5105425 5105428 5105433 5105438 5105441 5105451 5105456 5105459 5105463 5105471 5105473 5105483 5105485 5105488 5105489 5105492 5105510 5105537 5105539 5105540 5105541 5105553 5105576 5105592 5105599 5105605 5105607 5105609 5105625 5105637 5105639 5105644 5105648 5105677 5105679 5105697 5105699 5105715 5105718 5105719 5105722 5105727 5105731 5105738 5105740 5105741 5105757 5105761 5105763 5105764 5105835 5105846 5105857 5105858 5105862 5105895 5105919 5105920 5105922 5105937 5105942 5105944 5105954 5106005 5106031 5106032 5106038 5106046 5106052 5106126 5106162 5106166 5106196 5106268 5106304 5106329 5106468 5108166 5108394 5108598 5108649 5108670 5108774 5108828 5108845 5108859 5108861 5108890 5108969 5109006 5109007 5109027 5109041 5109054 5109057 5109070 5109072 5109116 5109118 5109166 5109181 5109193 5109218 5109224 5109273 5109334 5109342 5109366 5109424 5109443 5109444 5109454 5109457 5109507 5109522 5109555 5109578 5109622 5109629 5109646 5109654 5109686 5109690 5109700 5109716 5109726 5109734 5109735 5109754 5109843 5109849 5109901 5109905 5109912 5109916 5109949 5109970 5109971 5110022 5110026 5110048 5110052 5110074 5110089 5110157 5110171 5110175 5110214 5110224 5110295 5110331 5110362 5110392 5110397 5110432 5110437 5110470 5110474 5110488 5110514 5110515 5110521 5110526 5110535 5110617 5110688 5110698 5110713 5110741 5110802 5110814 5110821 5110883 5110911 5110956 5110997 5111042 5111050 5111109 5111112 5111172 5111202 5111231 5111233 5111242 5111313 5111322 5111337 5111377 5111391 5111423 5111444 5111493 5111502 5111529 5111569 5111641 5111643 5111654 5111674 5111688 5111692 5111762 5111857 5111870 5111891 5112023 5112078 5112110 5112204 5112208 5112228 5112280 5112315 5112316 5112343 5112351 5112429 5112461 5112493 5112505 5112520 5112689 5112695 5112711 5112787 5112790 5112796 5112797 5112819 5112830 5112841 5112861 5112866 5112884 5112903 5112988 5113017 5113084 5113101 5113201 5113205 5113243 5113298 5113335 5113516 5113529 5113552 5113570 5113606 5113613 5113673 5113849 5113900 5114050 5114065 5114126 5114216 5114217 5114268 5114300 5114674 5114687 5114713 5114790 5114863 5114877 5114892 5114921 5115123 5115381 5115680 5116142 5116243 5116461 5117037 5117060 5117104 5117255 5118180 5118624 5118681 5118901 5120549 5120837 5121138 5121523 5121526 5121994 5122597 5122662 5122741 5122888 5123257 5123933 5124109 5124150 5124278 5125059 5125092 5125312 5125547 5126054 5126131 5126459 5126592 5127482 5127655 5127932 5127960 5128051 5128232 5128307 5128340 5128699 5128712 5128726 5128927 5129120 5129187 5129236 5129280 5129694 5129754 5129821 5129972 5130275 5130486 5130581 5131046 5131406 5131669 5131703 5131901 5132213 5132461 5132683 5132937 5132992 5133106 5133728 5133815 5134061 5134136 5134195 5134426 5134511 5134581 5135484 5135536 5135550 5135608 5135778 5135798 5136061 5136952 5137171 5137407 5137497 5137929 5137993 5138069 5138357 5138891 5139085 5139621 5139683 5139749 5139994 5140124 5140149 5140177 5140473 5140952 5141220 5141346 5141532 5141677 5142404 5142455 5142653 5142744 5142939 5143466 5144202 5144249 5144631 5147102 5147207 5147559 5147650 5148967 5149007 5149234 5149503 5150725 5151013 5151725 5152203 5152378 5152397 5153936 5154079 5154093 5154152 5154442 5155546 5155868 5156604 5156846 5156925 5157059 5157236 5157435 5157590 5157834 5158362 5158704 5158798 5159039 5159308 5159738 5159839 5160108 5160121 5160918 5160951 5162217 5162383 5162511 5162982 5163458 5164142 5164153 5164408 5164484 5164641 5164802 5164847 5164866 5165968 5166894 5167004 5167202 5167337 5167506 5167960 5168148 5168277 5168336 5168579 5168815 5169332 5169559 5169935 5170166 5170566 5170857 5171277 5171624 5171969 5172155 5172228 5172388 5172548 5173276 5173843 5174267 5174472 5174593 5174624 5191765 5191766 5191767 5191770 5191772 5191773 5191774 5191776 5191777 5191779 5191781 5191782 5191783 5191784 5191785 5191786 5191787 5191788 5191790 5191792 5191793 5191794 5191795 5191797 5191799 5191800 5191801 5191802 5191807 5191808 5191810 5191814 5191815 5191817 5191818 5191819 5191821 5191826 5191839 5191843 5191861 5191886 5191905 5191931 5191936 5191962 5191966 5191970 5191973 5191974 5191975 5191979 5191980 5191989 5191992 5191995 5191996 5192000 5192001 5192004 5192005 5192010 5192012 5192015 5192016 5192021 5192027 5192029 5192032 5192038 5192039 5192040 5192042 5192043 5192044 5192049 5192053 5192054 5192058 5192059 5192066 5192067 5192069 5192074 5192076 5192080 5192082 5192085 5192086 5192087 5192089 5192092 5192094 5192104 5192105 5192107 5192108 5192109 5192111 5192113 5192115 5192116 5192119 5192120 5192123 5192125 5192127 5192128 5192135 5192136 5192137 5192139 5192140 5192141 5192142 5192145 5192148 5192149 5192158 5192159 5192162 5192164 5192165 5192168 5192172 5192173 5192178 5192179 5192182 5192185 5192186 5192189 5192191 5192192 5192195 5192196 5192198 5192203 5192204 5192208 5192211 5192214 5192222 5192225 5192227 5192228 5192229 5192230 5192233 5192234 5192238 5192239 5192240 5192241 5192242 5192246 5192248 5192249 5192252 5192253 5192254 5192256 5192258 5192260 5192272 5192273 5192274 5192275 5192278 5192279 5192280 5192283 5192291 5192292 5192295 5192296 5192300 5192301 5192304 5192311 5192312 5192318 5192319 5192321 5192324 5192327 5192328 5192329 5192330 5192333 5192334 5192338 5192339 5192342 5192343 5192345 5192352 5192355 5192360 5192361 5192364 5192368 5192369 5192370 5192371 5192372 5192374 5192377 5192382 5192383 5192385 5192386 5192387 5192388 5192389 5192398 5192401 5192402 5192405 5192406 5192407 5192408 5192409 5192415 5192417 5192421 5192422 5192424 5192432 5192433 5192434 5192435 5192436 5192437 5192438 5192439 5192441 5192443 5192445 5192446 5192448 5192452 5192453 5192454 5192460 5192462 5192463 5192467 5192468 5192470 5192471 5192473 5192474 5192478 5192479 5192482 5192486 5192496 5192497 5192501 5192503 5192508 5192509 5192510 5192513 5192527 5192528 5192529 5192531 5192534 5192536 5192537 5192538 5192541 5192546 5192548 5192549 5192553 5192555 5192558 5192559 5192563 5192565 5192568 5192569 5192575 5192579 5192590 5192591 5192598 5192604 5192610 5192623 5192626 5192629 5192638 5192658 5192660 5192671 5192678 5192685 5192687 5192688 5192691 5192700 5192764 5192782 5192807 5192846 5192887 5192969 5193048 5193134 5193145 5193178 5193477 5193731 5193763 5193799 5193800 5193897 5193915 5193927 5193945 5193954 5193958 5193977 5194003 5194038 5194048 5194061 5194068 5194075 5194086 5194117 5194142 5194165 5194168 5194189 5194207 5194223 5194235 5194236 5194243 5194279 5194303 5194307 5194309 5194318 5194348 5194357 5194366 5194373 5194382 5194389 5194398 5194404 5194405 5194406 5194437 5194446 5194456 5194496 5194531 5194540 5194542 5194556 5194557 5194572 5194574 5194579 5194582 5194586 5194608 5194619 5194634 5194635 5194648 5194656 5194668 5194678 5194688 5194692 5194693 5194705 5194718 5194743 5194760 5194764 5194765 5194772 5194780 5194785 5194792 5194823 5194826 5194833 5194852 5194853 5194859 5194863 5194915 5194922 5194923 5194943 5194947 5194959 5194963 5194974 5194986 5194991 5194993 5195001 5195030 5195062 5195073 5195082 5195097 5195113 5195116 5195135 5195141 5195153 5195155 5195157 5195161 5195201 5195204 5195219 5195231 5195241 5195255 5195263 5195267 5195298 5195323 5195331 5195337 5195353 5195357 5195363 5195373 5195386 5195400 5195417 5195445 5195464 5195465 5195476 5195491 5195495 5195501 5195504 5195529 5195539 5195540 5195556 5195557 5195562 5195583 5195584 5195608 5195631 5195680 5195690 5195709 5195710 5195712 5195779 5195825 5195826 5195833 5195838 5195841 5195846 5195851 5195876 5195880 5195925 5195942 5195954 5195963 5195977 5196005 5196010 5196034 5196065 5196076 5196080 5196084 5196112 5196121 5196124 5196131 5196150 5196163 5196165 5196169 5196180 5196187 5196202 5196207 5196219 5196227 5196257 5196261 5196273 5196275 5196285 5196334 5196339 5196355 5196372 5196382 5196408 5196409 5196439 5196479 5196486 5196496 5196519 5196548 5196563 5196575 5196588 5196608 5196609 5196628 5196636 5196640 5196646 5196708 5196726 5196744 5196748 5196755 5196774 5196803 5196852 5196874 5196933 5196952 5196953 5197030 5197099 5197102 5197169 5197179 5197180 5197195 5197251 5197257 5197272 5197280 5197335 5197427 5197442 5197619 5197663 5197678 5197786 5197813 5197857 5197956 5198014 5198138 5198139 5198163 5198204 5198212 5198266 5198633 5198642 5199012 5199024 5199141 5199447 5199635 5199750 5201079 5201322 5201344 5201601 5201774 5201783 5201931 5201962 5201975 5202067 5202108 5202339 5202473 5202478 5202500 5202608 5202685 5202809 5202824 5203035 5203184 5203365 5203399 5203404 5203480 5203530 5203543 5203577 5203597 5203704 5203742 5203845 5203909 5204114 5204156 5204173 5204307 5204545 5204931 5205100 5205197 5205842 5205877 5206090 5206125 5206214 5206321 5206542 5206565 5206772 5207226 5207569 5207787 5208062 5208105 5208637 5208737 5208979 5209050 5209373 5209390 5209657 5210382 5210400 5210544 5210756 5210822 5210944 5211088 5211184 5211315 5211621 5211662 5211908 5212041 5212410 5212730 5212741 5212821 5213006 5213106 5213350 5213481 5213560 5213702 5213769 5213873 5213893 5213935 5214039 5214316 5214321 5214589 5214655 5214927 5215095 5215309 5215317 5215505 5215564 5215597 5215874 5216045 5216148 5216167 5216541 5216651 5216763 5216882 5217082 5217390 5217401 5217438 5217501 5217515 5217628 5217725 5217776 5217789 5217980 5218366 5218676 5218853 5219127 5219258 5219357 5219411 5219490 5219850 5219883 5220155 5220234 5220243 5220289 5220357 5220358 5220796 5220948 5220960 5221053 5221209 5221246 5221248 5221306 5222119 5222147 5222192 5222308 5222382 5222464 5222496 5222685 5222762 5222803 5222844 5223467 5223634 5224164 5224197 5224326 5224478 5224512 5224763 5224816 5224897 5225225 5225302 5225525 5225640 5225663 5225693 5225706 5225731 5225885 5225907 5226067 5226110 5226190 5226301 5226309 5226616 5226726 5226793 5226833 5227395 5227401 5227796 5227909 5227994 5228116 5228277 5228726 5228989 5229203 5229553 5229558 5229869 5230219 5230271 5230295 5230317 5230948 5230973 5231174 5231209 5231586 5231644 5231786 5231823 5231988 5232001 5232097 5232247 5232291 5232307 5232556 5232597 5232621 5232652 5233309 5233401 5233565 5233870 5233873 5233945 5234036 5234072 5234092 5234140 5234324 5234379 5234979 5235029 5235237 5235349 5235369 5235611 5235702 5235721 5235898 5236345 5236555 5236743 5237199 5237743 5238244 5238301 5238995 5239034 5239056 5239357 5239636 5239746 5239960 5240232 5240827 5240976 5241194 5241866 5241954 5242005 5242085 5242402 5242428 5242780 5242843 5258188 5258196 5258197 5258198 5258199 5258201 5258202 5258204 5258205 5258206 5258207 5258208 5258209 5258210 5258211 5258212 5258216 5258220 5258221 5258223 5258224 5258226 5258227 5258228 5258231 5258233 5258236 5258237 5258239 5258240 5258244 5258248 5258251 5258255 5258256 5258257 5258258 5258265 5258267 5258268 5258269 5258286 5258287 5258290 5258292 5258293 5258296 5258302 5258314 5258324 5258331 5258350 5258366 5258382 5258418 5258655 5258670 5258684 5258695 5258710 5258712 5258713 5258724 5258731 5258734 5258739 5258742 5258746 5258755 5258758 5258763 5258764 5258772 5258773 5258774 5258781 5258786 5258797 5258810 5258813 5258814 5258816 5258825 5258827 5258832 5258834 5258835 5258837 5258843 5258845 5258848 5258851 5258858 5258863 5258868 5258869 5258874 5258875 5258876 5258880 5258886 5258891 5258893 5258894 5258897 5258898 5258901 5258904 5258910 5258911 5258917 5258918 5258923 5258927 5258929 5258940 5258941 5258945 5258948 5258953 5258959 5258960 5258963 5258971 5258976 5258980 5258983 5258984 5258986 5258989 5258990 5258993 5258994 5258997 5259000 5259006 5259008 5259009 5259010 5259015 5259020 5259023 5259025 5259031 5259033 5259039 5259041 5259043 5259049 5259053 5259058 5259059 5259062 5259063 5259065 5259066 5259069 5259070 5259071 5259073 5259074 5259079 5259080 5259085 5259087 5259088 5259091 5259096 5259104 5259106 5259108 5259110 5259112 5259122 5259126 5259129 5259134 5259137 5259140 5259145 5259146 5259149 5259153 5259155 5259156 5259157 5259159 5259165 5259167 5259168 5259169 5259172 5259174 5259175 5259176 5259177 5259180 5259181 5259183 5259188 5259189 5259191 5259194 5259196 5259199 5259203 5259205 5259207 5259213 5259214 5259215 5259218 5259220 5259231 5259232 5259236 5259239 5259242 5259244 5259246 5259257 5259258 5259259 5259263 5259272 5259274 5259277 5259281 5259283 5259284 5259294 5259297 5259300 5259301 5259304 5259307 5259325 5259337 5259340 5259342 5259350 5259359 5259372 5259375 5259393 5259397 5259399 5259410 5259417 5259432 5259433 5259467 5259468 5259489 5259516 5259530 5259594 5259597 5259691 5259700 5259799 5259813 5259893 5259983 5261534 5261704 5261787 5261829 5261832 5261834 5261878 5261976 5261978 5261981 5261984 5262002 5262014 5262017 5262035 5262091 5262110 5262133 5262139 5262161 5262195 5262207 5262267 5262277 5262292 5262304 5262307 5262332 5262334 5262346 5262349 5262361 5262375 5262385 5262440 5262460 5262463 5262476 5262517 5262527 5262534 5262565 5262584 5262598 5262611 5262614 5262628 5262641 5262643 5262652 5262661 5262672 5262679 5262699 5262740 5262806 5262809 5262810 5262830 5262837 5262859 5262875 5262895 5262918 5262923 5262924 5262949 5262972 5262990 5262993 5262997 5263023 5263024 5263044 5263048 5263052 5263059 5263086 5263116 5263138 5263141 5263163 5263173 5263186 5263190 5263211 5263224 5263243 5263249 5263292 5263313 5263320 5263325 5263336 5263367 5263371 5263393 5263429 5263440 5263450 5263452 5263462 5263466 5263473 5263474 5263495 5263512 5263515 5263522 5263528 5263531 5263547 5263553 5263567 5263576 5263577 5263579 5263588 5263591 5263596 5263598 5263602 5263605 5263638 5263652 5263656 5263668 5263671 5263689 5263697 5263708 5263710 5263754 5263762 5263771 5263799 5263802 5263818 5263827 5263843 5263861 5263865 5263883 5263887 5263892 5263909 5263913 5263963 5263964 5263967 5263973 5263991 5263996 5264001 5264013 5264014 5264020 5264042 5264053 5264070 5264084 5264089 5264115 5264122 5264124 5264157 5264179 5264192 5264220 5264246 5264274 5264279 5264287 5264291 5264294 5264297 5264304 5264311 5264313 5264322 5264346 5264360 5264372 5264389 5264395 5264406 5264427 5264459 5264464 5264466 5264471 5264478 5264480 5264489 5264495 5264563 5264630 5264633 5264671 5264680 5264687 5264691 5264723 5264741 5264772 5264791 5264843 5264859 5264863 5264873 5264878 5264882 5265008 5265010 5265054 5265055 5265127 5265156 5265202 5265225 5265296 5265307 5265363 5265378 5265458 5265564 5265619 5265644 5265796 5265878 5265890 5265896 5265946 5266188 5266296 5270773 5270944 5271028 5271512 5271579 5271790 5271818 5272118 5272385 5272492 5272857 5273174 5273239 5273564 5273580 5273581 5273624 5273776 5274135 5274333 5274675 5274746 5274936 5275090 5275286 5275498 5275642 5275677 5275706 5276270 5276451 5276730 5276901 5276963 5279121 5279551 5279659 5279909 5280153 5281746 5298598 5306416 5335127 5335128 5335129 5335130 5335132 5335133 5335134 5335135 5335136 5335137 5335138 5335139 5335140 5335141 5335142 5335145 5335148 5335149 5335152 5335153 5335154 5335156 5335157 5335159 5335161 5335162 5335164 5335166 5335168 5335169 5335175 5335176 5335177 5335180 5335186 5335194 5335344 5335349 5335350 5335353 5335359 5335365 5335366 5335367 5335370 5335371 5335372 5335376 5335377 5335380 5335381 5335383 5335388 5335390 5335391 5335394 5335395 5335396 5335397 5335399 5335403 5335406 5335409 5335412 5335413 5335415 5335417 5335418 5335419 5335422 5335424 5335428 5335429 5335430 5335432 5335433 5335434 5335435 5335437 5335440 5335443 5335444 5335445 5335449 5335450 5335451 5335452 5335457 5335458 5335459 5335460 5335461 5335462 5335463 5335464 5335469 5335474 5335477 5335478 5335479 5335481 5335484 5335485 5335486 5335487 5335488 5335489 5335490 5335491 5335492 5335494 5335496 5335497 5335498 5335502 5335503 5335505 5335506 5335507 5335508 5335510 5335511 5335512 5335516 5335517 5335519 5335520 5335521 5335522 5335523 5335527 5335528 5335529 5335530 5335532 5335534 5335535 5335536 5335538 5335539 5335540 5335541 5335543 5335546 5335548 5335549 5335550 5335552 5335553 5335554 5335555 5335556 5335558 5335559 5335560 5335562 5335566 5335567 5335569 5335570 5335571 5335575 5335577 5335579 5335580 5335587 5335588 5335590 5335591 5335592 5335595 5335596 5335598 5335599 5335600 5335601 5335602 5335603 5335604 5335606 5335607 5335608 5335609 5335610 5335611 5335613 5335615 5335616 5335617 5335618 5335619 5335620 5335621 5335624 5335627 5335628 5335629 5335630 5335634 5335636 5335637 5335639 5335641 5335644 5335645 5335647 5335648 5335650 5335652 5335653 5335655 5335656 5335657 5335658 5335662 5335663 5335664 5335665 5335666 5335668 5335669 5335670 5335671 5335672 5335673 5335674 5335676 5335677 5335680 5335684 5335690 5335693 5335695 5335696 5335701 5335702 5335703 5335704 5335705 5335708 5335710 5335714 5335715 5335717 5335718 5335720 5335728 5335729 5335731 5335732 5335736 5335737 5335738 5335743 5335744 5335748 5335750 5335753 5335755 5335757 5335758 5335759 5335760 5335763 5335764 5335768 5335772 5335776 5335780 5335786 5335789 5335791 5335793 5335796 5335797 5335799 5335806 5335807 5335820 5335822 5335841 5335843 5335851 5335857 5335862 5335864 5335868 5335899 5335902 5335916 5335921 5335931 5335949 5336028 5337168 5337179 5337197 5337216 5337222 5337231 5337248 5337252 5337280 5337282 5337284 5337288 5337295 5337300 5337307 5337309 5337311 5337327 5337334 5337336 5337338 5337345 5337354 5337363 5337364 5337389 5337397 5337409 5337418 5337432 5337433 5337438 5337440 5337466 5337467 5337475 5337483 5337484 5337489 5337492 5337494 5337496 5337498 5337521 5337532 5337534 5337537 5337549 5337557 5337569 5337584 5337585 5337598 5337612 5337614 5337620 5337637 5337644 5337650 5337657 5337665 5337669 5337670 5337694 5337699 5337703 5337727 5337746 5337757 5337759 5337777 5337782 5337792 5337809 5337810 5337817 5337819 5337836 5337843 5337876 5337878 5337898 5337905 5337930 5337956 5337963 5337965 5337966 5337972 5337981 5338003 5338007 5338011 5338029 5338031 5338032 5338045 5338051 5338063 5338071 5338078 5338080 5338092 5338093 5338113 5338116 5338129 5338134 5338135 5338155 5338166 5338167 5338168 5338173 5338181 5338188 5338196 5338217 5338236 5338256 5338265 5338272 5338299 5338304 5338310 5338328 5338329 5338339 5338353 5338360 5338373 5338381 5338391 5338418 5338430 5338436 5338443 5338444 5338459 5338465 5338480 5338494 5338527 5338530 5338531 5338539 5338551 5338552 5338559 5338560 5338575 5338582 5338603 5338607 5338617 5338618 5338620 5338643 5338663 5338667 5338668 5338672 5338706 5338722 5338745 5338764 5338767 5338786 5338806 5338820 5338826 5338840 5338841 5338843 5338854 5338866 5338870 5338877 5338879 5338887 5338896 5338901 5338906 5338908 5338917 5338921 5338928 5338931 5338933 5338943 5338958 5338963 5338975 5338976 5338999 5339006 5339012 5339019 5339022 5339023 5339041 5339045 5339046 5339052 5339067 5339074 5339080 5339088 5339097 5339099 5339109 5339128 5339130 5339131 5339138 5339139 5339142 5339161 5339166 5339182 5339190 5339202 5339208 5339226 5339227 5339228 5339230 5339236 5339246 5339254 5339261 5339263 5339265 5339269 5339271 5339279 5339281 5339305 5339311 5339318 5339339 5339348 5339349 5339357 5339371 5339378 5339380 5339382 5339383 5339401 5339403 5339406 5339423 5339431 5339437 5339444 5339450 5339464 5339480 5339484 5339507 5339508 5339509 5339516 5339536 5339540 5339545 5339587 5339597 5339620 5339623 5339665 5339715 5339748 5339753 5339760 5339789 5339792 5339800 5339802 5339821 5339839 5339847 5339871 5339889 5339891 5339904 5339926 5339927 5339962 5339976 5340007 5340035 5340037 5340053 5340056 5340076 5340078 5340085 5340117 5340144 5340152 5340556 5340734 5344233 5344260 5344276 5344415 5344611 5344636 5344722 5344748 5344761 5344899 5344968 5344996 5345152 5345322 5345381 5345395 5345520 5345573 5345688 5345898 5346032 5346201 5346406 5346537 5346827 5346919 5347947 5349198 5349345 5349911 5351744 5351886 5352592 5354492 5356564 5366976 5370654 5399204 5399205 5399206 5399207 5399208 5399209 5399210 5399214 5399217 5399218 5399220 5399221 5399222 5399224 5399228 5399230 5399231 5399232 5399233 5399238 5399242 5399246 5399247 5399252 5399255 5399256 5399257 5399259 5399262 5399271 5399272 5399276 5399279 5399280 5399474 5399484 5399486 5399491 5399492 5399495 5399504 5399510 5399511 5399514 5399520 5399522 5399523 5399527 5399529 5399531 5399534 5399538 5399541 5399542 5399543 5399545 5399550 5399552 5399553 5399554 5399556 5399557 5399558 5399560 5399562 5399567 5399568 5399572 5399581 5399582 5399586 5399590 5399591 5399593 5399595 5399596 5399597 5399598 5399599 5399600 5399602 5399605 5399608 5399610 5399613 5399615 5399616 5399618 5399622 5399623 5399625 5399629 5399630 5399631 5399632 5399633 5399637 5399638 5399639 5399641 5399642 5399643 5399644 5399647 5399648 5399650 5399651 5399655 5399657 5399659 5399660 5399662 5399665 5399666 5399667 5399668 5399669 5399670 5399676 5399678 5399681 5399682 5399685 5399689 5399690 5399691 5399692 5399693 5399697 5399698 5399699 5399701 5399703 5399704 5399705 5399706 5399708 5399709 5399711 5399712 5399714 5399718 5399720 5399721 5399722 5399725 5399727 5399728 5399729 5399730 5399731 5399732 5399733 5399734 5399735 5399738 5399739 5399741 5399745 5399746 5399747 5399748 5399749 5399750 5399751 5399752 5399753 5399757 5399759 5399761 5399765 5399767 5399768 5399769 5399770 5399771 5399772 5399775 5399776 5399777 5399778 5399784 5399785 5399787 5399788 5399789 5399790 5399791 5399793 5399794 5399795 5399797 5399798 5399801 5399802 5399805 5399807 5399811 5399814 5399815 5399817 5399819 5399820 5399821 5399822 5399823 5399828 5399829 5399831 5399833 5399835 5399838 5399840 5399841 5399842 5399844 5399845 5399847 5399848 5399851 5399856 5399858 5399861 5399862 5399863 5399869 5399870 5399874 5399875 5399876 5399877 5399880 5399882 5399885 5399886 5399890 5399894 5399896 5399898 5399900 5399901 5399902 5399903 5399904 5399905 5399907 5399908 5399910 5399920 5399923 5399924 5399928 5399929 5399931 5399932 5399933 5399934 5399942 5399944 5399948 5399949 5399955 5399957 5399961 5399965 5399967 5399973 5399978 5399982 5399983 5399984 5399991 5399992 5399994 5399999 5400000 5400003 5400005 5400018 5400033 5400041 5400049 5400059 5400069 5400077 5400101 5400180 5401427 5401429 5401454 5401461 5401464 5401500 5401506 5401511 5401522 5401538 5401564 5401574 5401598 5401599 5401604 5401621 5401623 5401626 5401629 5401646 5401659 5401669 5401670 5401676 5401686 5401687 5401715 5401730 5401748 5401756 5401792 5401802 5401808 5401811 5401818 5401822 5401832 5401833 5401836 5401845 5401848 5401851 5401858 5401861 5401863 5401869 5401874 5401895 5401912 5401917 5401943 5401945 5401947 5401951 5401954 5401971 5401972 5401974 5401980 5401993 5402002 5402007 5402009 5402011 5402016 5402021 5402027 5402038 5402046 5402061 5402101 5402111 5402112 5402121 5402129 5402133 5402134 5402136 5402137 5402144 5402182 5402202 5402207 5402217 5402221 5402224 5402237 5402239 5402242 5402246 5402260 5402262 5402273 5402280 5402284 5402285 5402302 5402312 5402314 5402323 5402344 5402350 5402364 5402366 5402367 5402378 5402383 5402386 5402387 5402391 5402395 5402399 5402414 5402423 5402429 5402433 5402436 5402444 5402452 5402464 5402475 5402483 5402486 5402490 5402516 5402522 5402557 5402569 5402574 5402585 5402596 5402609 5402612 5402615 5402624 5402642 5402647 5402653 5402657 5402658 5402685 5402689 5402698 5402702 5402713 5402714 5402719 5402728 5402733 5402738 5402755 5402756 5402759 5402763 5402773 5402774 5402782 5402807 5402818 5402827 5402832 5402837 5402838 5402839 5402845 5402864 5402874 5402888 5402892 5402920 5402932 5402939 5402940 5402943 5402953 5402955 5402963 5402966 5402972 5402995 5403003 5403008 5403009 5403016 5403022 5403025 5403032 5403043 5403055 5403071 5403081 5403089 5403092 5403108 5403122 5403126 5403132 5403137 5403143 5403150 5403151 5403153 5403161 5403180 5403182 5403187 5403205 5403206 5403207 5403225 5403231 5403245 5403255 5403257 5403264 5403267 5403270 5403291 5403295 5403300 5403307 5403308 5403320 5403336 5403343 5403345 5403346 5403350 5403360 5403378 5403383 5403391 5403401 5403403 5403411 5403412 5403419 5403425 5403427 5403428 5403442 5403458 5403468 5403477 5403484 5403488 5403503 5403514 5403515 5403516 5403533 5403537 5403550 5403561 5403568 5403575 5403576 5403578 5403580 5403600 5403611 5403628 5403640 5403641 5403646 5403656 5403664 5403669 5403680 5403689 5403693 5403700 5403701 5403711 5403714 5403751 5403762 5403765 5403778 5403800 5403803 5403822 5403830 5403851 5403860 5403912 5403931 5403933 5403937 5403950 5403978 5403985 5404060 5404108 5404121 5404171 5404180 5404203 5404208 5404222 5404268 5404332 5404377 5404388 5404419 5404426 5404428 5404463 5404519 5404520 5404575 5404664 5404724 5408549 5408717 5409082 5409181 5409206 5409570 5409600 5409624 5409873 5409909 5409928 5409933 5410099 5410255 5410537 5410816 5410858 5410915 5410999 5411210 5411344 5411628 5411786 5411819 5411995 5412283 5412294 5412299 5412531 5412574 5412582 5412625 5412868 5413128 5413279 5413316 5413428 5413645 5414511 5415170 5415253 5416430 5416519 5417907 5417926 5419066 5419190 5420524 5421440 5464344 5464345 5464346 5464347 5464348 5464349 5464350 5464352 5464353 5464354 5464355 5464356 5464357 5464358 5464359 5464361 5464363 5464364 5464365 5464366 5464371 5464372 5464374 5464382 5464383 5464387 5464389 5464391 5464393 5464396 5464397 5464404 5464436 5464536 5464554 5464588 5464591 5464593 5464599 5464605 5464609 5464612 5464614 5464618 5464620 5464622 5464625 5464627 5464630 5464631 5464635 5464636 5464645 5464650 5464652 5464653 5464656 5464663 5464664 5464672 5464674 5464678 5464679 5464686 5464687 5464688 5464690 5464692 5464694 5464700 5464703 5464704 5464706 5464707 5464709 5464711 5464713 5464715 5464716 5464720 5464724 5464726 5464727 5464729 5464730 5464731 5464732 5464733 5464735 5464736 5464737 5464739 5464740 5464741 5464744 5464745 5464750 5464751 5464752 5464754 5464759 5464760 5464762 5464763 5464764 5464765 5464768 5464769 5464772 5464773 5464774 5464779 5464782 5464789 5464790 5464791 5464796 5464800 5464807 5464808 5464809 5464810 5464813 5464815 5464816 5464817 5464821 5464823 5464825 5464827 5464828 5464829 5464830 5464832 5464835 5464836 5464837 5464838 5464839 5464840 5464843 5464845 5464846 5464847 5464850 5464851 5464852 5464853 5464856 5464859 5464860 5464864 5464870 5464871 5464872 5464873 5464874 5464876 5464878 5464879 5464880 5464884 5464888 5464889 5464890 5464894 5464898 5464899 5464900 5464902 5464904 5464905 5464908 5464909 5464910 5464912 5464915 5464918 5464922 5464923 5464924 5464925 5464926 5464928 5464933 5464938 5464941 5464943 5464947 5464949 5464954 5464959 5464961 5464963 5464966 5464968 5464972 5464973 5464975 5464977 5464979 5464980 5464983 5464988 5464990 5464991 5464993 5464994 5465001 5465002 5465003 5465007 5465008 5465009 5465014 5465016 5465018 5465019 5465020 5465023 5465025 5465029 5465035 5465038 5465042 5465046 5465047 5465050 5465052 5465056 5465058 5465059 5465063 5465066 5465068 5465070 5465071 5465073 5465074 5465076 5465078 5465082 5465089 5465096 5465100 5465101 5465102 5465107 5465108 5465110 5465112 5465115 5465120 5465131 5465137 5465142 5465152 5465159 5465163 5465169 5465174 5465178 5465179 5465182 5465204 5465206 5465209 5465214 5465229 5465235 5465269 5465273 5465459 5465776 5466444 5466516 5466550 5466565 5466581 5466596 5466611 5466621 5466622 5466626 5466651 5466654 5466672 5466686 5466687 5466690 5466708 5466715 5466747 5466748 5466754 5466755 5466761 5466764 5466765 5466780 5466788 5466799 5466808 5466810 5466827 5466836 5466837 5466850 5466856 5466859 5466876 5466881 5466886 5466887 5466903 5466905 5466924 5466932 5466934 5466942 5466976 5466986 5467013 5467014 5467031 5467042 5467052 5467054 5467057 5467077 5467080 5467099 5467115 5467153 5467155 5467166 5467180 5467184 5467202 5467226 5467228 5467231 5467260 5467262 5467274 5467287 5467295 5467298 5467347 5467349 5467353 5467364 5467383 5467396 5467406 5467423 5467447 5467450 5467459 5467463 5467472 5467476 5467490 5467525 5467528 5467532 5467533 5467538 5467541 5467546 5467551 5467557 5467567 5467579 5467588 5467592 5467595 5467598 5467619 5467627 5467630 5467635 5467637 5467644 5467659 5467666 5467672 5467683 5467693 5467709 5467713 5467714 5467725 5467731 5467740 5467749 5467765 5467770 5467775 5467777 5467795 5467799 5467802 5467803 5467804 5467833 5467841 5467849 5467856 5467875 5467880 5467882 5467898 5467912 5467922 5467924 5467934 5467935 5467941 5467952 5467956 5467963 5467968 5467969 5467979 5467987 5467997 5468031 5468038 5468041 5468048 5468051 5468054 5468066 5468093 5468100 5468118 5468125 5468129 5468133 5468140 5468157 5468167 5468174 5468175 5468179 5468185 5468191 5468204 5468207 5468216 5468245 5468282 5468298 5468304 5468307 5468332 5468336 5468355 5468366 5468369 5468372 5468380 5468381 5468385 5468407 5468415 5468426 5468429 5468443 5468462 5468464 5468468 5468472 5468477 5468485 5468488 5468489 5468491 5468506 5468512 5468514 5468525 5468555 5468567 5468570 5468589 5468592 5468616 5468624 5468661 5468668 5468679 5468680 5468689 5468695 5468700 5468705 5468734 5468740 5468785 5468794 5468802 5468854 5468862 5468867 5468882 5468887 5468890 5468892 5468909 5468911 5468914 5468915 5468925 5468932 5468934 5468950 5468953 5468956 5468966 5469007 5469011 5469018 5469020 5469095 5469142 5469149 5469158 5469162 5469174 5469208 5469260 5469304 5469325 5469336 5469377 5469388 5469401 5469445 5469447 5469467 5469475 5469476 5469494 5469498 5469500 5469503 5469518 5469528 5469533 5469538 5469571 5469654 5469747 5469760 5469800 5469812 5469814 5469867 5470021 5470151 5470159 5470243 5470282 5470546 5470547 5470720 5471033 5471038 5471236 5471472 5471618 5472163 5472331 5472434 5473004 5473435 5473665 5473908 5473923 5474005 5474233 5474234 5474332 5474366 5474562 5474594 5474646 5474660 5474668 5474681 5474758 5474764 5474839 5474921 5475248 5475439 5475613 5475618 5475793 5475880 5475908 5476095 5476462 5476927 5477033 5477107 5477115 5477282 5477340 5477354 5477702 5478073 5478089 5478196 5478209 5478321 5478905 5479021 5479045 5479187 5479269 5479277 5479506 5479529 5479551 5479651 5479811 5479908 5480223 5480619 5481519 5481605 5481802 5482413 5483146 5483401 5483673 5484193 5484342 5484386 5484587 5485317 5485319 5485494 5485738 5485949 5486245 5486448 5486766 5486810 5487072 5487248 5487387 5487621 5487915 5487931 5487958 5488159 5488433 5488619 5488796 5488962 5489247 5489538 5489600 5490351 5490367 5491034 5491117 5491428 5492166 5492179 5492201 5492493 5493386 5493488 5494272 5494409 5494845 5494947 5495648 5496274 5496600 5496615 5496623 5496766 5497114 5497763 5497978 5498053 5498147 5498455 5498456 5498551 5499305 5499562 5499563 5499999 5500064 5500075 5500500 5500533 5500737 5500893 5500923 5501047 5501115 5501391 5501685 5501713 5501742 5501789 5502350 5503491 5503672 5503897 5504216 5504423 5504817 5505292 5505308 5505676 5506297 5506727 5506802 5506895 5507010 5507140 5507192 5507517 5507556 5507586 5507757 5507831 5507892 5508033 5508077 5508530 5508641 5508730 5509372 5510191 5510548 5511049 5511092 5511099 5511157 5511570 5511791 5511799 5511891 5512276 5512361 5512751 5512760 5512931 5513014 5513528 5513642 5528457 5528460 5528462 5528463 5528464 5528466 5528468 5528469 5528470 5528471 5528472 5528474 5528475 5528476 5528477 5528478 5528479 5528480 5528481 5528482 5528484 5528485 5528487 5528488 5528492 5528493 5528496 5528505 5528507 5528510 5528514 5528519 5528583 5528618 5528620 5528622 5528624 5528632 5528633 5528634 5528637 5528638 5528641 5528642 5528645 5528648 5528649 5528652 5528653 5528654 5528655 5528656 5528657 5528659 5528662 5528664 5528665 5528670 5528673 5528674 5528675 5528676 5528681 5528682 5528683 5528684 5528686 5528687 5528690 5528694 5528696 5528697 5528699 5528703 5528705 5528708 5528710 5528712 5528713 5528714 5528715 5528718 5528723 5528724 5528725 5528726 5528727 5528728 5528729 5528730 5528731 5528732 5528733 5528734 5528735 5528738 5528739 5528740 5528741 5528742 5528743 5528744 5528745 5528746 5528750 5528752 5528755 5528757 5528758 5528763 5528765 5528766 5528767 5528771 5528772 5528773 5528774 5528775 5528776 5528778 5528780 5528782 5528785 5528786 5528787 5528788 5528790 5528792 5528793 5528794 5528795 5528796 5528797 5528798 5528799 5528800 5528801 5528803 5528804 5528805 5528806 5528808 5528809 5528811 5528812 5528814 5528815 5528817 5528818 5528820 5528821 5528823 5528826 5528833 5528834 5528835 5528838 5528842 5528843 5528844 5528845 5528846 5528848 5528849 5528853 5528854 5528855 5528856 5528857 5528859 5528861 5528862 5528863 5528865 5528866 5528869 5528874 5528877 5528878 5528879 5528880 5528881 5528886 5528887 5528889 5528891 5528893 5528894 5528895 5528896 5528897 5528899 5528902 5528903 5528904 5528905 5528908 5528909 5528910 5528911 5528915 5528917 5528918 5528919 5528921 5528922 5528926 5528927 5528928 5528932 5528933 5528937 5528938 5528939 5528941 5528942 5528943 5528944 5528945 5528946 5528947 5528948 5528949 5528950 5528951 5528952 5528953 5528955 5528956 5528957 5528958 5528960 5528961 5528963 5528964 5528965 5528967 5528968 5528969 5528970 5528971 5528972 5528973 5528974 5528975 5528978 5528979 5528984 5528986 5528987 5528989 5528990 5528991 5528993 5528994 5528998 5528999 5529000 5529004 5529006 5529007 5529014 5529015 5529016 5529026 5529033 5529040 5529041 5529042 5529046 5529050 5529052 5529055 5529063 5529071 5529073 5529075 5529076 5529080 5529082 5529090 5529099 5529118 5529122 5529128 5529134 5529165 5529170 5529491 5529583 5529748 5529782 5529952 5529966 5530047 5530052 5530118 5530134 5530185 5530195 5530197 5530202 5530227 5530233 5530235 5530276 5530278 5530295 5530299 5530301 5530308 5530313 5530316 5530325 5530354 5530355 5530363 5530372 5530386 5530389 5530393 5530398 5530412 5530415 5530417 5530420 5530421 5530426 5530429 5530431 5530432 5530448 5530452 5530457 5530458 5530463 5530465 5530467 5530478 5530482 5530484 5530490 5530493 5530496 5530523 5530525 5530529 5530544 5530546 5530549 5530552 5530562 5530565 5530581 5530596 5530603 5530608 5530614 5530617 5530641 5530645 5530649 5530653 5530657 5530665 5530668 5530670 5530678 5530689 5530690 5530701 5530705 5530718 5530729 5530744 5530751 5530769 5530786 5530788 5530789 5530791 5530806 5530808 5530832 5530859 5530862 5530876 5530877 5530878 5530880 5530888 5530889 5530906 5530913 5530914 5530924 5530944 5530958 5530959 5530960 5530963 5530981 5530987 5530992 5530996 5531005 5531010 5531018 5531020 5531029 5531035 5531036 5531047 5531072 5531074 5531102 5531104 5531119 5531125 5531134 5531137 5531141 5531142 5531144 5531147 5531154 5531157 5531165 5531166 5531182 5531187 5531198 5531208 5531215 5531218 5531222 5531224 5531225 5531231 5531237 5531263 5531284 5531296 5531302 5531305 5531306 5531321 5531329 5531332 5531347 5531355 5531360 5531377 5531385 5531393 5531394 5531396 5531411 5531416 5531422 5531424 5531427 5531435 5531438 5531443 5531447 5531463 5531467 5531476 5531486 5531494 5531495 5531527 5531532 5531542 5531561 5531565 5531576 5531593 5531595 5531599 5531604 5531608 5531611 5531637 5531638 5531664 5531666 5531671 5531673 5531680 5531691 5531698 5531699 5531712 5531719 5531723 5531746 5531754 5531762 5531763 5531764 5531767 5531784 5531787 5531788 5531789 5531791 5531793 5531794 5531796 5531797 5531805 5531816 5531818 5531843 5531844 5531849 5531887 5531890 5531905 5531906 5531954 5531959 5531981 5531983 5531988 5531996 5532000 5532001 5532012 5532019 5532042 5532044 5532050 5532051 5532053 5532059 5532066 5532076 5532085 5532087 5532100 5532103 5532117 5532123 5532135 5532139 5532151 5532153 5532213 5532247 5532275 5532296 5532304 5532314 5532356 5532376 5532379 5532400 5532410 5532424 5532450 5532455 5532456 5532462 5532466 5532470 5532473 5532481 5532489 5532507 5532517 5532565 5532579 5532581 5532586 5532587 5532607 5532613 5532619 5532624 5532627 5532647 5532661 5532678 5532689 5532698 5532702 5532711 5532744 5532748 5532758 5532791 5532797 5532824 5532825 5532826 5532844 5532858 5532869 5532905 5532949 5532978 5533061 5533143 5533155 5533178 5533182 5533208 5533387 5533390 5533520 5533863 5536551 5536679 5536773 5536867 5537131 5537134 5537171 5537286 5537301 5537322 5537373 5537401 5537504 5537580 5537681 5537759 5537860 5537945 5537968 5538007 5538044 5538109 5538114 5538240 5538394 5538633 5538765 5538779 5538807 5538841 5538865 5538939 5538944 5539216 5539348 5539851 5540004 5540528 5540554 5540601 5540649 5541349 5541441 5541526 5542404 5542762 5542954 5542966 5543091 5543096 5544071 5544200 5544236 5544267 5545162 5545265 5545604 5546146 5546893 5547260 5547635 5547655 5547662 5548641 5549126 5549356 5549768 5550010 5550357 5551340 5551800 5554758 5556075 5558309 5558897 5558910 5559353 5559930 5560103 5561292 5561884 5562106 5563503 5563710 5563772 5564701 5565742 5566083 5567614 5568024 5568259 5568420 5568827 5569292 5570130 5570660 5572014 5575871 5575902 5591868 5591869 5591870 5591871 5591872 5591874 5591875 5591876 5591877 5591878 5591879 5591880 5591882 5591883 5591884 5591885 5591886 5591887 5591893 5591897 5591901 5591996 5592000 5592003 5592006 5592014 5592018 5592025 5592026 5592031 5592033 5592035 5592038 5592039 5592040 5592047 5592049 5592050 5592051 5592053 5592054 5592055 5592057 5592060 5592062 5592064 5592068 5592069 5592074 5592075 5592077 5592078 5592080 5592081 5592083 5592086 5592088 5592091 5592092 5592094 5592096 5592097 5592098 5592099 5592101 5592102 5592103 5592104 5592107 5592110 5592111 5592113 5592114 5592115 5592116 5592117 5592119 5592120 5592121 5592123 5592124 5592127 5592128 5592129 5592130 5592131 5592133 5592134 5592135 5592136 5592137 5592138 5592139 5592140 5592141 5592142 5592144 5592145 5592146 5592147 5592149 5592150 5592151 5592152 5592154 5592155 5592156 5592158 5592159 5592160 5592161 5592162 5592163 5592164 5592165 5592166 5592167 5592168 5592171 5592173 5592175 5592178 5592179 5592180 5592181 5592182 5592183 5592184 5592185 5592186 5592188 5592190 5592191 5592192 5592193 5592195 5592196 5592197 5592199 5592200 5592201 5592202 5592203 5592204 5592205 5592206 5592207 5592209 5592210 5592211 5592213 5592214 5592216 5592218 5592219 5592221 5592224 5592225 5592227 5592229 5592231 5592233 5592234 5592235 5592236 5592238 5592240 5592241 5592242 5592244 5592245 5592246 5592247 5592249 5592250 5592251 5592252 5592253 5592255 5592256 5592260 5592261 5592262 5592263 5592264 5592265 5592267 5592268 5592270 5592271 5592272 5592274 5592275 5592276 5592279 5592280 5592281 5592284 5592287 5592290 5592291 5592293 5592295 5592298 5592301 5592302 5592304 5592305 5592306 5592307 5592311 5592312 5592313 5592316 5592320 5592321 5592322 5592323 5592325 5592326 5592328 5592329 5592330 5592333 5592339 5592341 5592342 5592344 5592347 5592348 5592350 5592351 5592352 5592355 5592356 5592360 5592361 5592365 5592367 5592372 5592374 5592404 5592423 5592507 5592511 5593125 5593131 5593132 5593180 5593190 5593196 5593231 5593238 5593255 5593258 5593263 5593268 5593272 5593273 5593274 5593277 5593281 5593289 5593296 5593300 5593303 5593317 5593319 5593327 5593330 5593337 5593352 5593353 5593354 5593359 5593362 5593363 5593366 5593374 5593377 5593382 5593389 5593396 5593406 5593408 5593413 5593417 5593420 5593423 5593426 5593430 5593434 5593438 5593447 5593454 5593463 5593470 5593474 5593483 5593501 5593512 5593513 5593519 5593521 5593523 5593525 5593526 5593528 5593534 5593535 5593536 5593543 5593545 5593551 5593554 5593556 5593557 5593562 5593564 5593567 5593569 5593574 5593596 5593602 5593606 5593607 5593609 5593611 5593613 5593617 5593621 5593622 5593626 5593627 5593635 5593639 5593643 5593655 5593658 5593663 5593671 5593682 5593691 5593694 5593696 5593700 5593705 5593708 5593709 5593710 5593711 5593718 5593731 5593737 5593741 5593745 5593746 5593756 5593759 5593764 5593765 5593772 5593775 5593780 5593788 5593791 5593793 5593796 5593797 5593819 5593824 5593837 5593845 5593847 5593849 5593851 5593852 5593854 5593860 5593869 5593874 5593884 5593888 5593908 5593910 5593916 5593919 5593923 5593924 5593927 5593928 5593937 5593940 5593943 5593951 5593955 5593956 5593965 5593967 5593975 5593981 5593987 5593988 5593992 5594007 5594010 5594014 5594015 5594017 5594019 5594020 5594024 5594030 5594040 5594052 5594053 5594054 5594055 5594068 5594070 5594074 5594076 5594079 5594083 5594087 5594096 5594097 5594105 5594109 5594113 5594128 5594129 5594134 5594139 5594143 5594149 5594153 5594156 5594159 5594164 5594173 5594178 5594179 5594180 5594189 5594190 5594195 5594196 5594201 5594207 5594209 5594210 5594211 5594226 5594230 5594234 5594236 5594237 5594239 5594242 5594243 5594246 5594252 5594255 5594257 5594259 5594282 5594296 5594311 5594327 5594337 5594340 5594349 5594370 5594375 5594376 5594381 5594386 5594393 5594394 5594396 5594397 5594401 5594405 5594409 5594414 5594420 5594423 5594426 5594430 5594433 5594445 5594457 5594463 5594468 5594471 5594474 5594479 5594481 5594483 5594485 5594490 5594493 5594502 5594504 5594512 5594515 5594516 5594520 5594529 5594533 5594557 5594568 5594574 5594586 5594593 5594594 5594595 5594600 5594602 5594626 5594630 5594646 5594653 5594662 5594672 5594673 5594691 5594703 5594715 5594718 5594720 5594721 5594723 5594724 5594731 5594744 5594747 5594748 5594755 5594765 5594781 5594802 5594803 5594807 5594824 5594826 5594832 5594841 5594842 5594843 5594846 5594852 5594860 5594862 5594871 5594881 5594893 5594898 5594903 5594905 5594913 5594925 5594937 5594939 5594944 5594948 5594963 5594967 5594987 5594991 5595000 5595009 5595011 5595025 5595034 5595039 5595050 5595051 5595052 5595066 5595068 5595069 5595078 5595085 5595095 5595107 5595108 5595113 5595130 5595136 5595145 5595146 5595151 5595155 5595161 5595169 5595188 5595193 5595206 5595208 5595209 5595221 5595230 5595267 5595284 5595290 5595297 5595307 5595309 5595319 5595391 5595411 5595420 5595442 5595523 5595530 5595649 5595658 5595663 5595762 5598364 5598441 5598519 5598716 5598786 5598803 5598951 5598956 5598995 5599054 5599097 5599120 5599166 5599210 5599324 5599455 5599737 5599770 5599773 5599969 5600246 5600405 5600667 5600695 5600934 5601093 5601166 5601183 5601565 5601764 5601840 5601931 5602249 5602683 5602847 5603082 5603106 5603185 5604592 5605270 5606234 5608697 5609788 5615313 5645511 5645512 5645513 5645514 5645515 5645516 5645517 5645518 5645520 5645521 5645522 5645523 5645524 5645525 5645526 5645527 5645528 5645529 5645530 5645531 5645532 5645533 5645534 5645542 5645544 5645546 5645548 5645549 5645551 5645556 5645557 5645559 5645562 5645647 5645658 5645673 5645677 5645689 5645697 5645698 5645705 5645706 5645709 5645713 5645714 5645717 5645718 5645721 5645722 5645723 5645724 5645728 5645729 5645737 5645739 5645744 5645748 5645750 5645751 5645752 5645757 5645758 5645759 5645760 5645761 5645762 5645765 5645768 5645775 5645776 5645778 5645780 5645785 5645786 5645788 5645789 5645791 5645793 5645795 5645797 5645799 5645800 5645802 5645806 5645808 5645809 5645810 5645811 5645812 5645814 5645815 5645816 5645818 5645820 5645822 5645823 5645824 5645825 5645827 5645828 5645831 5645834 5645838 5645839 5645842 5645845 5645849 5645851 5645853 5645854 5645855 5645856 5645859 5645860 5645862 5645865 5645867 5645868 5645869 5645874 5645875 5645876 5645877 5645878 5645879 5645880 5645881 5645883 5645885 5645886 5645888 5645890 5645891 5645893 5645894 5645895 5645898 5645900 5645902 5645903 5645904 5645909 5645910 5645913 5645917 5645919 5645923 5645927 5645930 5645932 5645933 5645935 5645936 5645937 5645939 5645941 5645942 5645946 5645949 5645950 5645951 5645953 5645954 5645955 5645957 5645959 5645960 5645966 5645967 5645968 5645969 5645970 5645971 5645973 5645974 5645975 5645976 5645977 5645978 5645983 5645985 5645987 5645988 5645990 5645991 5645992 5645995 5645998 5646000 5646007 5646008 5646009 5646010 5646011 5646014 5646016 5646019 5646021 5646022 5646023 5646025 5646026 5646028 5646032 5646033 5646035 5646036 5646038 5646039 5646043 5646045 5646046 5646047 5646048 5646049 5646052 5646056 5646058 5646061 5646062 5646063 5646064 5646065 5646070 5646075 5646078 5646085 5646087 5646092 5646093 5646094 5646100 5646103 5646104 5646105 5646109 5646111 5646114 5646115 5646117 5646119 5646128 5646129 5646134 5646135 5646136 5646137 5646138 5646139 5646143 5646146 5646157 5646158 5646160 5646161 5646163 5646164 5646165 5646169 5646176 5646179 5646195 5646202 5646206 5646209 5646210 5646214 5646284 5646293 5646323 5646363 5646384 5646555 5646556 5646783 5646793 5646805 5646831 5646874 5646931 5646939 5647133 5647158 5647161 5647295 5647302 5647303 5647314 5647322 5647339 5647354 5647375 5647383 5647401 5647403 5647420 5647426 5647438 5647445 5647448 5647451 5647452 5647472 5647486 5647489 5647491 5647508 5647512 5647516 5647521 5647554 5647560 5647579 5647590 5647626 5647648 5647650 5647656 5647661 5647676 5647678 5647685 5647694 5647702 5647708 5647711 5647719 5647726 5647730 5647736 5647751 5647754 5647780 5647790 5647796 5647806 5647812 5647814 5647822 5647843 5647849 5647854 5647877 5647891 5647894 5647908 5647924 5647928 5647945 5647951 5647953 5647964 5647980 5647988 5648004 5648019 5648020 5648021 5648025 5648041 5648049 5648053 5648061 5648062 5648069 5648081 5648088 5648093 5648106 5648111 5648132 5648134 5648143 5648151 5648162 5648163 5648166 5648184 5648187 5648191 5648194 5648200 5648201 5648239 5648242 5648243 5648246 5648255 5648258 5648261 5648277 5648291 5648301 5648306 5648307 5648318 5648321 5648331 5648336 5648354 5648363 5648366 5648376 5648395 5648402 5648445 5648451 5648452 5648459 5648467 5648483 5648491 5648505 5648515 5648525 5648529 5648533 5648557 5648570 5648573 5648598 5648600 5648604 5648611 5648624 5648627 5648631 5648638 5648639 5648650 5648651 5648665 5648669 5648672 5648674 5648684 5648728 5648740 5648745 5648748 5648757 5648763 5648773 5648786 5648787 5648792 5648798 5648808 5648826 5648851 5648856 5648865 5648866 5648869 5648878 5648895 5648906 5648911 5648920 5648943 5648950 5648954 5648962 5648966 5648974 5648989 5648991 5648995 5648996 5648999 5649004 5649007 5649021 5649023 5649029 5649036 5649073 5649076 5649079 5649081 5649089 5649104 5649111 5649115 5649126 5649132 5649138 5649148 5649155 5649159 5649160 5649164 5649166 5649172 5649188 5649191 5649210 5649216 5649233 5649239 5649247 5649254 5649271 5649304 5649326 5649327 5649336 5649342 5649364 5649399 5649401 5649404 5649413 5649428 5649450 5649473 5649480 5649483 5649488 5649517 5649518 5649527 5649542 5649547 5649551 5649568 5649576 5649589 5649600 5649612 5649647 5649700 5649706 5649717 5649735 5649739 5649751 5649773 5649786 5649790 5649826 5649831 5649842 5649846 5649884 5649888 5649898 5649904 5649911 5649918 5649922 5649950 5649961 5649972 5650017 5650034 5650035 5650046 5650052 5650058 5650068 5650093 5650101 5650110 5650115 5650264 5650288 5650324 5650347 5650382 5650461 5650471 5650488 5650526 5650527 5650542 5650600 5650652 5650660 5650791 5650798 5650857 5650897 5650934 5651053 5651070 5651234 5651664 5651668 5651893 5651934 5652273 5653297 5653607 5653633 5653895 5654048 5654158 5654169 5654183 5654275 5654317 5654339 5654356 5654439 5654569 5654609 5654618 5654645 5654659 5654681 5654713 5654775 5654823 5655074 5655112 5655331 5655616 5655778 5656117 5656281 5656375 5656521 5656898 5657184 5657249 5657403 5657586 5657695 5657900 5658031 5658066 5658077 5658233 5658458 5658503 5658752 5658805 5658820 5659411 5659446 5659588 5659771 5659813 5660013 5660156 5660575 5660739 5660773 5660813 5662098 5662141 5662146 5662950 5662966 5663055 5663067 5663265 5663583 5663939 5664172 5664221 5664338 5664415 5664613 5664680 5664791 5664920 5665060 5665243 5665282 5665459 5665623 5665689 5665720 5666250 5666361 5666659 5666781 5666824 5666910 5667008 5667103 5667303 5667361 5667770 5667821 5667980 5668225 5668240 5668320 5668458 5668698 5668743 5668842 5668936 5668985 5669127 5669183 5669278 5670476 5670668 5671016 5671029 5671330 5671361 5671535 5671901 5672445 5672794 5672858 5673232 5673934 5674471 5674763 5674910 5675761 5675830 5675887 5675935 5676723 5676977 5677507 5677846 5677883 5677992 5678764 5679003 5679374 5679476 5680109 5680491 5680598 5680605 5680618 5681421 5681447 5681888 5682345 5682520 5682713 5682859 5682932 5683221 5683299 5683561 5683563 5684777 5685231 5685650 5685672 5685826 5686126 5686335 5688285 5688335 5689059 5689431 5689491 5690094 5690192 5690281 5690366 5690556 5690614 5704483 5704484 5704487 5704488 5704489 5704490 5704491 5704492 5704493 5704494 5704495 5704496 5704499 5704500 5704501 5704503 5704505 5704506 5704507 5704509 5704511 5704512 5704514 5704515 5704516 5704521 5704523 5704526 5704527 5704537 5704538 5704539 5704541 5704542 5704545 5704692 5704700 5704705 5704715 5704716 5704722 5704724 5704725 5704731 5704734 5704736 5704740 5704741 5704742 5704743 5704745 5704746 5704747 5704749 5704750 5704755 5704758 5704759 5704763 5704767 5704768 5704770 5704773 5704774 5704776 5704777 5704778 5704780 5704784 5704786 5704792 5704793 5704794 5704797 5704798 5704799 5704802 5704803 5704807 5704810 5704811 5704817 5704818 5704819 5704820 5704821 5704823 5704824 5704829 5704830 5704831 5704835 5704836 5704837 5704838 5704839 5704849 5704850 5704851 5704852 5704855 5704858 5704859 5704860 5704861 5704863 5704864 5704867 5704869 5704871 5704872 5704874 5704875 5704876 5704877 5704880 5704886 5704891 5704893 5704894 5704898 5704899 5704901 5704902 5704907 5704908 5704909 5704910 5704912 5704913 5704916 5704918 5704919 5704920 5704922 5704926 5704927 5704929 5704931 5704932 5704933 5704936 5704943 5704944 5704946 5704947 5704952 5704953 5704956 5704960 5704961 5704962 5704964 5704969 5704971 5704972 5704978 5704979 5704981 5704984 5704986 5704988 5704991 5704992 5704993 5704995 5704996 5704997 5705000 5705001 5705002 5705005 5705008 5705010 5705011 5705012 5705013 5705015 5705018 5705022 5705024 5705025 5705026 5705027 5705028 5705034 5705035 5705036 5705038 5705039 5705041 5705042 5705044 5705046 5705047 5705048 5705049 5705056 5705061 5705063 5705064 5705065 5705066 5705067 5705068 5705069 5705071 5705073 5705075 5705079 5705080 5705084 5705085 5705087 5705089 5705090 5705091 5705097 5705098 5705101 5705102 5705103 5705112 5705114 5705115 5705122 5705126 5705127 5705128 5705131 5705132 5705136 5705138 5705143 5705144 5705145 5705146 5705147 5705149 5705152 5705157 5705158 5705164 5705168 5705172 5705178 5705179 5705180 5705188 5705193 5705194 5705197 5705198 5705201 5705206 5705212 5705214 5705218 5705221 5705227 5705244 5705247 5705249 5705255 5705256 5705264 5705270 5705272 5705274 5705360 5705812 5705890 5706288 5706298 5706307 5706344 5706360 5706374 5706389 5706406 5706416 5706427 5706442 5706448 5706465 5706470 5706474 5706478 5706479 5706481 5706489 5706507 5706520 5706536 5706545 5706548 5706549 5706551 5706552 5706562 5706575 5706577 5706587 5706588 5706590 5706591 5706603 5706605 5706611 5706622 5706625 5706626 5706631 5706645 5706670 5706715 5706717 5706723 5706728 5706739 5706766 5706768 5706769 5706771 5706776 5706780 5706797 5706801 5706804 5706807 5706820 5706830 5706838 5706841 5706851 5706864 5706865 5706876 5706882 5706889 5706894 5706897 5706909 5706919 5706938 5706942 5706964 5706971 5706975 5706978 5706991 5706994 5707003 5707007 5707015 5707029 5707030 5707045 5707052 5707064 5707081 5707086 5707088 5707098 5707103 5707105 5707111 5707117 5707125 5707130 5707131 5707132 5707140 5707145 5707155 5707156 5707160 5707186 5707189 5707195 5707203 5707222 5707235 5707246 5707254 5707258 5707259 5707261 5707282 5707283 5707291 5707301 5707309 5707316 5707329 5707330 5707339 5707343 5707351 5707353 5707354 5707360 5707368 5707396 5707405 5707421 5707424 5707425 5707445 5707457 5707459 5707467 5707468 5707488 5707494 5707496 5707515 5707536 5707553 5707555 5707556 5707562 5707576 5707579 5707584 5707593 5707595 5707598 5707600 5707618 5707624 5707629 5707632 5707635 5707638 5707645 5707653 5707656 5707664 5707669 5707675 5707676 5707694 5707712 5707725 5707732 5707750 5707752 5707779 5707814 5707821 5707847 5707853 5707857 5707863 5707894 5707907 5707930 5707939 5707941 5707950 5707962 5707964 5707966 5707974 5707975 5707977 5707999 5708009 5708028 5708031 5708032 5708045 5708048 5708054 5708058 5708059 5708070 5708075 5708077 5708085 5708089 5708090 5708095 5708102 5708106 5708134 5708140 5708150 5708153 5708180 5708202 5708203 5708238 5708247 5708252 5708266 5708281 5708302 5708348 5708359 5708362 5708374 5708410 5708492 5708497 5708503 5708512 5708524 5708536 5708537 5708547 5708548 5708576 5708584 5708591 5708614 5708618 5708622 5708640 5708651 5708656 5708658 5708674 5708675 5708676 5708677 5708703 5708710 5708720 5708737 5708751 5708765 5708768 5708778 5708808 5708829 5708845 5708892 5708915 5708934 5708939 5708945 5708950 5708970 5708972 5709008 5709028 5709060 5709085 5709098 5709127 5709128 5709147 5709159 5709184 5709194 5709200 5709227 5709236 5709247 5709297 5709305 5709319 5709329 5709340 5709341 5709355 5709357 5709362 5709400 5709419 5709422 5709443 5709471 5709512 5709555 5709568 5709622 5709676 5709736 5710027 5710110 5712019 5712223 5712878 5713079 5713235 5713333 5713467 5713619 5713655 5713692 5713728 5713750 5713845 5713914 5714114 5714369 5714408 5714792 5715331 5715904 5716942 5717273 5717426 5717650 5717740 5718188 5718403 5720002 5720432 5720821 5721069 5721222 5723904 5724357 5724970 5725882 5726634 5727643 5727695 5738968 5739895 5747862 5748708 5750705 5766557 5766558 5766559 5766561 5766562 5766563 5766564 5766565 5766566 5766567 5766569 5766571 5766572 5766573 5766574 5766576 5766578 5766582 5766583 5766584 5766585 5766586 5766587 5766588 5766591 5766593 5766594 5766596 5766598 5766603 5766606 5766608 5766610 5766613 5766614 5766622 5766624 5766627 5766642 5766649 5766806 5766814 5766817 5766825 5766826 5766827 5766829 5766831 5766834 5766835 5766839 5766842 5766843 5766844 5766845 5766847 5766849 5766852 5766853 5766855 5766858 5766861 5766862 5766867 5766870 5766873 5766876 5766878 5766879 5766880 5766881 5766884 5766885 5766886 5766889 5766893 5766897 5766898 5766900 5766904 5766910 5766911 5766912 5766915 5766916 5766922 5766925 5766926 5766928 5766929 5766930 5766931 5766935 5766939 5766940 5766942 5766943 5766944 5766951 5766956 5766957 5766958 5766959 5766964 5766965 5766966 5766967 5766973 5766974 5766977 5766979 5766982 5766984 5766987 5766990 5766991 5766992 5766993 5766994 5766996 5766997 5767000 5767002 5767003 5767005 5767010 5767013 5767015 5767017 5767019 5767020 5767021 5767022 5767023 5767025 5767026 5767027 5767030 5767031 5767032 5767033 5767034 5767035 5767036 5767040 5767041 5767046 5767048 5767049 5767050 5767054 5767056 5767060 5767061 5767062 5767064 5767065 5767066 5767071 5767072 5767073 5767075 5767077 5767078 5767080 5767081 5767083 5767086 5767088 5767089 5767091 5767092 5767094 5767096 5767097 5767099 5767100 5767102 5767105 5767106 5767107 5767108 5767111 5767112 5767114 5767115 5767117 5767118 5767119 5767121 5767122 5767125 5767126 5767127 5767129 5767130 5767131 5767132 5767133 5767137 5767142 5767143 5767145 5767147 5767150 5767152 5767155 5767159 5767160 5767165 5767167 5767169 5767170 5767171 5767175 5767181 5767183 5767185 5767186 5767188 5767190 5767193 5767195 5767196 5767198 5767200 5767203 5767204 5767206 5767207 5767210 5767211 5767214 5767215 5767217 5767220 5767221 5767223 5767224 5767225 5767227 5767228 5767231 5767232 5767233 5767234 5767239 5767240 5767241 5767243 5767244 5767245 5767249 5767256 5767260 5767261 5767265 5767273 5767275 5767276 5767286 5767287 5767290 5767293 5767298 5767300 5767308 5767309 5767314 5767320 5767328 5767340 5767345 5767349 5767351 5767361 5767371 5767375 5767388 5767407 5767408 5767428 5767441 5767453 5767462 5767464 5767465 5767479 5768654 5768660 5768665 5768676 5768727 5768812 5768888 5768892 5768894 5768907 5768916 5768920 5768930 5768936 5768943 5768973 5768977 5768987 5768989 5769020 5769030 5769039 5769042 5769047 5769055 5769067 5769072 5769084 5769101 5769108 5769121 5769126 5769140 5769145 5769148 5769161 5769165 5769220 5769221 5769222 5769241 5769244 5769257 5769258 5769264 5769271 5769277 5769285 5769291 5769303 5769315 5769321 5769327 5769342 5769343 5769344 5769347 5769353 5769355 5769359 5769406 5769414 5769421 5769461 5769470 5769471 5769480 5769481 5769487 5769493 5769494 5769504 5769507 5769510 5769511 5769528 5769531 5769542 5769563 5769573 5769600 5769621 5769630 5769644 5769645 5769646 5769659 5769661 5769665 5769667 5769683 5769686 5769689 5769702 5769708 5769709 5769726 5769729 5769732 5769738 5769764 5769784 5769798 5769804 5769807 5769808 5769810 5769817 5769819 5769820 5769832 5769862 5769870 5769877 5769882 5769888 5769914 5769934 5769943 5769977 5769993 5769996 5770000 5770020 5770022 5770024 5770026 5770031 5770039 5770070 5770087 5770090 5770110 5770113 5770122 5770134 5770136 5770142 5770147 5770153 5770159 5770161 5770169 5770201 5770224 5770243 5770266 5770269 5770274 5770275 5770286 5770293 5770303 5770310 5770315 5770316 5770321 5770323 5770341 5770367 5770381 5770384 5770386 5770395 5770403 5770424 5770466 5770471 5770485 5770488 5770494 5770509 5770525 5770526 5770538 5770541 5770551 5770567 5770583 5770595 5770601 5770611 5770616 5770644 5770650 5770671 5770672 5770675 5770689 5770694 5770699 5770704 5770746 5770761 5770770 5770773 5770776 5770786 5770793 5770794 5770808 5770813 5770844 5770845 5770881 5770884 5770911 5770947 5770952 5770954 5770970 5770999 5771000 5771001 5771003 5771008 5771010 5771018 5771054 5771058 5771085 5771095 5771116 5771123 5771135 5771139 5771145 5771160 5771161 5771194 5771201 5771212 5771220 5771226 5771253 5771307 5771337 5771339 5771361 5771422 5771423 5771426 5771428 5771448 5771459 5771473 5771477 5771480 5771491 5771495 5771501 5771507 5771640 5771643 5771661 5771682 5771702 5771785 5771807 5771808 5771826 5771827 5771828 5771873 5771882 5771919 5771958 5771970 5771989 5772098 5772157 5772214 5772256 5772293 5772308 5772373 5772607 5772649 5776291 5776414 5776488 5776577 5777247 5777276 5777483 5777555 5777656 5777745 5777752 5777953 5778416 5778675 5778931 5779086 5779096 5779200 5779655 5780199 5780737 5780998 5781757 5782055 5782108 5782515 5784691 5785058 5785736 5798505 5837725 5837726 5837727 5837729 5837731 5837733 5837734 5837735 5837736 5837738 5837739 5837740 5837742 5837743 5837744 5837746 5837748 5837755 5837756 5837757 5837760 5837765 5837766 5837767 5837769 5837773 5837774 5837775 5837776 5837777 5837781 5837782 5837787 5837788 5837791 5837792 5837798 5837805 5837807 5837815 5837831 5837834 5837866 5837867 5838108 5838140 5838144 5838148 5838155 5838159 5838169 5838176 5838180 5838184 5838187 5838193 5838198 5838201 5838203 5838214 5838221 5838222 5838223 5838228 5838233 5838234 5838235 5838236 5838246 5838249 5838252 5838255 5838257 5838259 5838261 5838264 5838266 5838268 5838269 5838273 5838275 5838281 5838286 5838288 5838289 5838290 5838291 5838293 5838298 5838303 5838304 5838305 5838309 5838312 5838313 5838320 5838321 5838323 5838326 5838329 5838335 5838342 5838343 5838346 5838347 5838348 5838350 5838352 5838358 5838360 5838362 5838363 5838364 5838365 5838369 5838373 5838374 5838377 5838379 5838383 5838384 5838393 5838400 5838404 5838414 5838415 5838418 5838419 5838422 5838423 5838426 5838428 5838430 5838431 5838433 5838434 5838436 5838437 5838438 5838443 5838445 5838447 5838448 5838449 5838451 5838454 5838456 5838457 5838460 5838463 5838464 5838465 5838470 5838473 5838474 5838477 5838482 5838483 5838484 5838485 5838486 5838490 5838493 5838494 5838499 5838500 5838510 5838512 5838513 5838514 5838516 5838517 5838518 5838525 5838528 5838530 5838531 5838532 5838533 5838534 5838537 5838538 5838541 5838545 5838546 5838554 5838562 5838564 5838565 5838568 5838569 5838573 5838574 5838575 5838576 5838585 5838587 5838588 5838590 5838592 5838596 5838597 5838598 5838599 5838600 5838604 5838607 5838609 5838611 5838612 5838617 5838622 5838629 5838631 5838633 5838634 5838636 5838637 5838638 5838639 5838641 5838643 5838649 5838654 5838656
Out[53]:
array([[4.3213072e-01, 3.3612296e-01, 4.9542564e-01, 1.1641532e-10], [4.2634511e-01, 3.3506793e-01, 4.9537191e-01, 1.1641532e-10], [4.2104098e-01, 3.3217159e-01, 4.9831006e-01, 1.1641532e-10], ..., [4.3010166e-01, 3.2942852e-01, 4.9635866e-01, 1.1641532e-10], [4.2487869e-01, 3.3458143e-01, 4.9207175e-01, 1.1641532e-10], [4.2629939e-01, 3.2695419e-01, 4.9106851e-01, 1.1641532e-10]], dtype=float32)
In [54]:
plt.figure()
plt.scatter(X[:, 0], X[:, 1], s=1)
plt.show()
Figure
In [ ]:
In [5]:
parts = csiborgtools.read.read_h5(paths.particles_path(nsim0))["particles"]
In [6]:
box = csiborgtools.read.BoxUnits(nsnap0, nsim0, paths)
field = csiborgtools.field.DensityField(box, "CIC")
In [7]:
rho = np.load(paths.density_field_path("PCS", 7444, False))
rho_rsp = np.load(paths.density_field_path("PCS", 7444, True))
In [14]:
plt.figure()
plt.imshow(np.sum(rho, axis=1))
plt.show()
Figure
In [13]:
plt.figure()
plt.imshow(np.sum(rho_rsp, axis=1))
plt.show()
Figure
In [ ]:
In [25]:
np.abs(x - 1).max()
Out[25]:
0.0018435717
In [ ]:
In [94]:
k0 = clumpmap0[clid2map0[0], 2] + 1
# parts.shape[0]
In [96]:
parts.shape[0] - k0
Out[96]:
182510395
In [44]:
clumps_cat = csiborgtools.read.ClumpsCatalogue(nsim0, paths, load_fitted=True, minmass=None, maxdist=155 / 0.705)
In [119]:
cat = csiborgtools.read.HaloCatalogue(nsim0, paths, minmass=None)
In [124]:
cat['ID']
Out[124]:
array([ 1, 3, 5, ..., 21809643, 21810694, 21818034], dtype=int32)
In [114]:
len(cat)
Out[114]:
153575
In [118]:
numpy.isnan(cat["lagpatch"]).sum()
Out[118]:
1355
In [ ]:
In [88]:
cat['x0']
Out[88]:
array([-42.401093 , -32.8627 , -45.08371 , ..., 9.587616 , 5.0563965, 12.45813 ], dtype=float32)
In [ ]:
In [46]:
len(clumps_cat)
Out[46]:
265246
In [50]:
m = numpy.isfinite(clumps_cat["lambda200c"])
plt.figure()
plt.hist(np.log10(clumps_cat["lambda200c"][m]), bins="auto")
plt.show()
Figure
In [ ]:
In [ ]:
In [5]:
clumps_cat["index"][:10]
Out[5]:
array([ 1, 2, 3, 5, 6, 7, 9, 11, 12, 13], dtype=int32)
In [6]:
X = csiborgtools.read.load_parent_particles(3, parts, clumpmap0, clid2map0, clumps_cat)
In [29]:
clump = csiborgtools.fits.Clump(X, clumps_cat[2], box)
clumps_cat[2]["index"]
Out[29]:
3
In [37]:
clump.spherical_overdensity_mass(200)
Out[37]:
(0.0008713664483347365, 1.8111896e-06)
In [26]:
def f(mass):
return numpy.cumsum(mass)
@jit(nopython=True)
def g(mass):
return numpy.cumsum(mass)
x = clump['M']
In [25]:
%timeit f(x)
73.4 µs ± 401 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
In [28]:
%timeit g(x)
31.8 µs ± 385 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
In [ ]:
In [19]:
%timeit clump.spherical_overdensity_mass(200)
3.79 ms ± 47.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [14]:
plt.figure()
plt.plot(rs, y)
plt.yscale("log")
plt.xscale("log")
plt.show()
Figure
In [16]:
%timeit clump.r()
224 µs ± 4.17 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
In [87]:
x, y, z = clump['x'], clump['y'], clump['z']
x0, y0, z0 = clumps_cat[3]['x'], clumps_cat[3]['y'], clumps_cat[3]['z']
In [93]:
%timeit ((x - x0)**2 + (y - y0)**2 + (z - z0)**2)**0.5
145 µs ± 539 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
In [92]:
%timeit clump.r()
242 µs ± 6.44 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
In [267]:
delta_bckg *= 2
In [260]:
%timeit delta1, delta2, cellmins, nonzero = overlapper.make_deltas(pos, pos2, mass, mass)
# __ = overlapper.make_deltas(pos, pos2, mass, mass)
1.23 ms ± 6.98 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
In [271]:
%timeit overlapper(pos, pos2, mass, mass, delta_bckg)
1.75 ms ± 11.8 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
In [259]:
fig, axs = plt.subplots(ncols=2, figsize=(10, 5))
axs[0].imshow(np.sum(delta1, axis=0))
axs[1].imshow(np.sum(delta2, axis=0))
fig.tight_layout()
Figure
In [93]:
delta = overlapper.make_bckg_delta(pos, mass / mass)
In [282]:
from functools import cache
from functools import lru_cache
In [283]:
from time import sleep
@lru_cache(maxsize=1024)
def f(x):
sleep(0.5)
return x * x
In [286]:
%timeit f(2)
79 ns ± 0.372 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)
In [77]:
clumpmap0[:]
Out[77]:
array([[ 0, 0, 277961071], [ 1, 277961072, 277980356], [ 2, 277980357, 277985437], ..., [ 21836472, 460470781, 460470782], [ 21836487, 460470783, 460471462], [ 21836785, 460471463, 460471466]], dtype=int32)
In [72]:
dens = overlapper.make_delta(pos, mass, subbox=True)
In [75]:
Figure
In [ ]:
In [ ]:
In [55]:
x.shape, x0.shape
Out[55]:
((134842, 7), (134842, 4))
In [56]:
plt.figure()
# plt.scatter(x[:, 0], x[:, 1], s=0.1)
plt.scatter(x0[:, 0], x0[:, 1], s=0.1)
plt.show()
Figure
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [11]:
unique_clump_ids = numpy.unique(clump_ids)
In [22]:
unique_clump_ids[:100]
Out[22]:
array([ 0, 1, 2, 3, 5, 6, 7, 9, 11, 12, 13, 14, 15, 17, 19, 21, 22, 23, 29, 32, 34, 39, 43, 134, 137, 138, 139, 149, 151, 156, 157, 158, 159, 161, 163, 165, 167, 168, 169, 172, 173, 175, 178, 179, 181, 183, 186, 187, 188, 189, 191, 193, 194, 196, 197, 198, 204, 207, 209, 211, 212, 213, 214, 215, 216, 217, 218, 221, 223, 225, 227, 228, 231, 232, 237, 238, 240, 243, 245, 247, 248, 249, 252, 257, 258, 259, 260, 262, 263, 264, 267, 268, 269, 270, 272, 273, 274, 275, 276, 278], dtype=int32)
In [26]:
%timeit numpy.nan == numpy.nan
131 ns ± 0.529 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)
In [27]:
%timeit numpy.isnan(numpy.nan)
791 ns ± 5.14 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)
In [29]:
test = {"asd": 1}
with h5py.File("test.hp", 'w') as f:
f.create_dataset("test", data=test)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[29], line 3 1 test = {"asd": 1} 2 with h5py.File("test.hp", 'w') as f: ----> 3 f.create_dataset("test", data=test) File ~/csiborgtools/venv_csiborg/lib/python3.9/site-packages/h5py/_hl/group.py:183, in Group.create_dataset(self, name, shape, dtype, data, **kwds) 180 parent_path, name = name.rsplit(b'/', 1) 181 group = self.require_group(parent_path) --> 183 dsid = dataset.make_new_dset(group, shape, dtype, data, name, **kwds) 184 dset = dataset.Dataset(dsid) 185 return dset File ~/csiborgtools/venv_csiborg/lib/python3.9/site-packages/h5py/_hl/dataset.py:88, in make_new_dset(parent, shape, dtype, data, name, chunks, compression, shuffle, fletcher32, maxshape, compression_opts, fillvalue, scaleoffset, track_times, external, track_order, dcpl, dapl, efile_prefix, virtual_prefix, allow_unknown_filter, rdcc_nslots, rdcc_nbytes, rdcc_w0) 86 else: 87 dtype = numpy.dtype(dtype) ---> 88 tid = h5t.py_create(dtype, logical=1) 90 # Legacy 91 if any((compression, shuffle, fletcher32, maxshape, scaleoffset)) and chunks is False: File h5py/h5t.pyx:1664, in h5py.h5t.py_create() File h5py/h5t.pyx:1688, in h5py.h5t.py_create() File h5py/h5t.pyx:1748, in h5py.h5t.py_create() TypeError: Object dtype dtype('O') has no native HDF5 equivalent
In [ ]:
f
In [23]:
k0, kf = minmax_clump(259, clump_ids)
kf - k0 + 1
Out[23]:
2360
In [24]:
clump_ids[k0:kf+1]
Out[24]:
array([259, 259, 259, ..., 259, 259, 259], dtype=int32)
In [ ]:
In [3]:
import numpy
nsim = nsim0
nsnap = nsnap0
part0 = h5py.File(paths.initmatch_path(nsim, "particles"), 'r')['particles']
cmap = h5py.File(paths.particles_path(nsim, "clumpmap"), 'r')
partf = h5py.File(paths.particles_path(nsim), 'r')["particles"]
In [8]:
part0[cmap[str(558655)], :]
In [5]:
cat = csiborgtools.read.ClumpsCatalogue(nsim, paths, rawdata=True)
In [44]:
from tqdm import tqdm
y = np.zeros((10000, 2), dtype=np.int32)
for i, hid in tqdm(enumerate(cat["index"][cat.ismain][:10000])):
n = np.sum(cat["parent"] == hid)
y[i, :] = hid, n
10000it [00:51, 193.86it/s]
In [8]:
cat["index"][cat["parent"] == 558655]
Out[8]:
array([558655, 558659, 558673, 558675, 558677, 558692, 558705, 558717, 558724, 558726, 558739, 558746, 558857, 559232, 559256, 559292, 559325, 559343, 559349, 559384, 559388, 559406, 559415, 559453, 559467, 559473, 559492, 559496, 559541, 559544, 559548, 559570, 559571, 559604, 559612, 559637, 559643, 559648, 559655, 559724, 559735, 559779, 559780, 559792, 559802, 559804, 559817, 559910, 559918, 559926, 559960, 559977, 559982, 559997, 560012, 560031, 560122, 560213, 560325, 560375, 560426, 560517, 560798, 562156, 563235, 563254, 563586, 563651, 563671, 563892, 564050, 564068, 564138, 564153, 564358, 564525, 564734, 564745, 564779, 564831, 565008, 565180, 565272, 565276, 565521, 565620, 565701, 565891, 566046, 566604, 566705, 567047, 567336, 567720, 568897, 569232, 569376, 569773, 573130, 575459, 575880, 576414, 579319, 579445, 579722, 579770, 580117, 580388, 580441, 580507, 580518, 581594, 581767, 582047, 582713, 583256, 586403, 587027, 587239, 588764, 593803, 595742, 596219, 599285, 600189, 603135, 605484], dtype=int32)
In [45]:
y[np.argmax(y[:, 1]), :]
Out[45]:
array([558655, 127], dtype=int32)
In [8]:
keys = list(cmap.keys())
In [11]:
csiborgtools.fits.load_parent_particles(558655, part0, cmap, cat)
# Xf = csiborgtools.fits.load_parent_particles(378, partf, cmap, cat)
[558655 558659 558673 558675 558677 558692 558705 558717 558724 558726 558739 558746 558857 559232 559256 559292 559325 559343 559349 559384 559388 559406 559415 559453 559467 559473 559492 559496 559541 559544 559548 559570 559571 559604 559612 559637 559643 559648 559655 559724 559735 559779 559780 559792 559802 559804 559817 559910 559918 559926 559960 559977 559982 559997 560012 560031 560122 560213 560325 560375 560426 560517 560798 562156 563235 563254 563586 563651 563671 563892 564050 564068 564138 564153 564358 564525 564734 564745 564779 564831 565008 565180 565272 565276 565521 565620 565701 565891 566046 566604 566705 567047 567336 567720 568897 569232 569376 569773 573130 575459 575880 576414 579319 579445 579722 579770 580117 580388 580441 580507 580518 581594 581767 582047 582713 583256 586403 587027 587239 588764 593803 595742 596219 599285 600189 603135 605484]
0%| | 0/127 [00:00<?, ?it/s]
In [6]:
plt.figure()
plt.scatter(X[:, 0], X[:, 1], s=0.1)
# plt.scatter(Xf[:, 0], Xf[:, 1], s=0.1)
plt.show()
Figure
In [ ]:
In [3]:
pid_final = np.load("pid_final.npy")
pid_init = np.load("pid_initial.npy")
In [4]:
pid_order = np.argsort(pid_final).astype(np.int32)
pid_order_2 = np.argsort(pid_order).astype(np.int32)
In [6]:
# Sort them
pid_init = pid_init[np.argsort(pid_init)]
In [11]:
np.alltrue(pid_init[pid_order_2] == pid_final)
Out[11]:
True
In [10]:
Out[10]:
array([ 6, 7, 8, ..., 429538984, 456581538, 456482476], dtype=int32)
In [ ]:
In [ ]:
In [ ]:
In [25]:
pid_final[pid_order][pid_order_2]
Out[25]:
array([ 6, 7, 8, ..., 429538984, 456581538, 456482476], dtype=int32)
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [18]:
part0['ID']
Out[18]:
array([ 1, 2, 3, ..., 460357796, 460357797, 460357798], dtype=int32)
In [ ]:
In [ ]:
In [8]:
indx1 = numpy.argsort(part0['ID'])
indx2 = numpy.argsort(pid)
indx1_inv = numpy.argsort(indx1)
part0 = part0[indx2][indx1_inv]
# pid = pid[indx2]
In [9]:
part0
Out[9]:
array([(0.6463347 , 0.5915494 , 0.3729033 , 1.1641532e-10, 285313656), (0.22073722, 0.49019635, 0.9627326 , 5.9604645e-08, 58672855), (0.7210556 , 0.18949312, 0.37298316, 5.9604645e-08, 459417395), ..., (0.46851808, 0.2966002 , 0.44987014, 1.1641532e-10, 2684309), (0.7481397 , 0.02954267, 0.8927611 , 5.9604645e-08, 402473389), (0.9159686 , 0.8301242 , 0.67392564, 5.9604645e-08, 287235917)], dtype=[('x', '<f4'), ('y', '<f4'), ('z', '<f4'), ('M', '<f4'), ('ID', '<i4')])
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [10]:
pid
Out[10]:
array([ 6, 7, 8, ..., 429538984, 456581538, 456482476], dtype=int32)
In [6]:
pid
Out[6]:
array([ 1, 2, 3, ..., 460471465, 460471466, 460471467], dtype=int32)
In [9]:
cat = csiborgtools.read.ClumpsCatalogue(nsim, paths, load_fitted=False, rawdata=True)
parent_ids = cat["index"][cat.ismain]
parent_ids[:50]
Out[9]:
array([ 1, 2, 3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 19, 21, 22, 23, 29, 32, 34, 39, 134, 137, 138, 139, 149, 151, 156, 157, 158, 159, 161, 163, 167, 168, 169, 172, 173, 175, 178, 181, 186, 188, 189, 191, 196, 197, 198, 204, 209, 211], dtype=int32)
In [54]:
i = cat["index"][np.argsort(cat["mass_cl"])[::-3][213]]
i
Out[54]:
11031538
In [55]:
# clid = 10170336
# clid = 10170336 + 12
clid = i
mmain_indxs = cat["index"][cat["parent"] == clid]
# mask = clump_ids == clid
# print(mask.sum())
print(mmain_indxs)
print([numpy.sum(clump_ids == j) for j in mmain_indxs])
[11031538 11032027 11033906 11034471 11034477 11034692 11035306 11049411 11057461 11058959] [24440, 256, 133, 0, 0, 0, 113, 0, 0, 0]
In [56]:
mask = numpy.isin(clump_ids, mmain_indxs)
mask.sum()
Out[56]:
24942
In [57]:
# coords = part0[mask, :]
plt.figure()
plt.scatter(part0['x'][mask], part0['y'][mask], s=1)
plt.show()
Figure
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [193]:
particles0 = h5py.File(paths.initmatch_path(nsim0, "particles"), 'r')['particles']
particlesx = h5py.File(paths.initmatch_path(nsimx, "particles") , 'r')['particles']
In [4]:
# delta_bckg = overlapper.make_bckg_delta(particles0, verbose=True)
# delta_bckg = overlapper.make_bckg_delta(particlesx, delta=delta_bckg, verbose=True)
# np.save("./bckg_{}_{}.npy".format(nsim0, nsimx), delta_bckg)
# delta_bckg = np.load("./bckg_{}_{}.npy".format(nsim0, nsimx))
In [194]:
map0 = h5py.File(paths.initmatch_path(nsim0, "halomap"), 'r')
mapx = h5py.File(paths.initmatch_path(nsimx, "halomap"), 'r')
In [174]:
keys = np.array(sorted([int(x) for x in mapx.keys()]))
In [175]:
paths = csiborgtools.read.CSiBORGPaths(**csiborgtools.paths_glamdring)
halocat = csiborgtools.read.HaloCatalogue(nsimx, paths, rawdata=True)
clumpcat = csiborgtools.read.ClumpsCatalogue(nsimx, paths, rawdata=True)
In [176]:
clid = 2
np.sum(clumpcat["parent"] == clid)
# mmain_indxs = clumpcat["index"][clumpcat["parent"] == clid]
# mmain_indxs
# mmain_mask = numpy.isin(clump_ids, mmain_indxs, assume_unique=True)
Out[176]:
10
In [195]:
fs = list(map0.keys())
In [196]:
from tqdm import tqdm
tot = 0
for f in tqdm(fs):
tot += map0[f].shape[0]
print(tot)
100%|██████████| 173643/173643 [01:29<00:00, 1947.49it/s]
362439022
In [197]:
particles0
Out[197]:
<HDF5 dataset "particles": shape (182510395, 4), type "<f4">
In [198]:
tot / 182510395
Out[198]:
1.9858541317605498
In [172]:
particlesx
Out[172]:
<HDF5 dataset "particles": shape (182036133, 4), type "<f4">
In [177]:
i = 10170336
k = np.where(cat["ID"] == i)[0][0]
k
Out[177]:
86031
In [178]:
# i = np.random.choice(keys[keys<100000])
# # i = 10040155 #+ 11
print(i)
# i = 32
mask = map0[str(i)]
mask
10170336
Out[178]:
<HDF5 dataset "10170336": shape (2085,), type "<i8">
In [183]:
halo = particlesx[mask, :]
In [184]:
np.sum(halo[:, 3]) / 1.1641532e-10
Out[184]:
2085.000032720428
In [186]:
plt.figure()
plt.scatter(halo[:, 0], halo[:, 1], s=2)
# plt.scatter(cat['x'][k], cat['y'][k], s=10, c='r')
plt.xlabel(r"x")
plt.ylabel(r"y")
plt.show()
Figure
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [21]:
plt.figure()
plt.imshow(np.log10(np.sum(delta_bckg, axis=0)))
plt.show()
/tmp/ipykernel_7442/2249068321.py:2: RuntimeWarning: divide by zero encountered in log10 plt.imshow(np.log10(np.sum(delta_bckg, axis=0)))
Figure
In [2]:
f = h5py.File("../data/particles_7444.h5", "r")
In [8]:
f["particles"][0, :]
Out[8]:
array([ 4.42346358e-01, 7.09757663e-03, 4.64053304e-01, -1.96926287e-03, -2.67177823e-03, -6.45721859e-04, 1.16415322e-10])
In [ ]: