提交 6b7ceb8a 编写于 作者: F frankwhzhang

add gru4rec

上级 14139f8f
"""
imikolov's simple dataset.
This module will download dataset from
http://www.fit.vutbr.cz/~imikolov/rnnlm/ and parse training set and test set
into paddle reader creators.
"""
from __future__ import print_function
import paddle.dataset.common
import collections
import tarfile
import six
__all__ = ['train', 'test', 'build_dict', 'convert']
class DataType(object):
SEQ = 2
def word_count(f, word_freq=None):
if word_freq is None:
word_freq = collections.defaultdict(int)
for l in f:
for w in l.strip().split():
word_freq[w] += 1
return word_freq
def build_dict(min_word_freq=50,train_filename="",test_filename=""):
"""
Build a word dictionary from the corpus, Keys of the dictionary are words,
and values are zero-based IDs of these words.
"""
with open(train_filename) as trainf:
with open(test_filename) as testf:
word_freq = word_count(testf, word_count(trainf))
if '<unk>' in word_freq:
# remove <unk> for now, since we will set it as last index
del word_freq['<unk>']
word_freq = [
x for x in six.iteritems(word_freq) if x[1] > min_word_freq
]
word_freq_sorted = sorted(word_freq, key=lambda x: (-x[1], x[0]))
words, _ = list(zip(*word_freq_sorted))
word_idx = dict(list(zip(words, six.moves.range(len(words)))))
return word_idx
def reader_creator(filename, word_idx, n, data_type):
def reader():
with open(filename) as f:
for l in f:
if DataType.SEQ == data_type:
l = l.strip().split()
l = [word_idx.get(w) for w in l]
src_seq = l[:len(l)-1]
trg_seq = l[1:]
if n > 0 and len(src_seq) > n: continue
yield src_seq, trg_seq
else:
assert False, 'error data type'
return reader
def train(filename,word_idx, n, data_type=DataType.SEQ):
return reader_creator(filename, word_idx, n,
data_type)
def test(filename,word_idx, n, data_type=DataType.SEQ):
return reader_creator(filename, word_idx, n,
data_type)
import sys
import time
import math
import unittest
import contextlib
import numpy as np
import six
import paddle.fluid as fluid
import paddle
import utils
def infer(test_reader, use_cuda, model_path):
""" inference function """
place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
exe = fluid.Executor(place)
with fluid.scope_guard(fluid.core.Scope()):
infer_program, feed_target_names, fetch_vars = fluid.io.load_inference_model(
model_path, exe)
accum_num_recall=0.0
accum_num_sum=0.0
t0 = time.time()
step_id=0
for data in test_reader():
step_id+=1
src_wordseq = utils.to_lodtensor([dat[0] for dat in data], place)
label_data=[dat[1] for dat in data]
dst_wordseq = utils.to_lodtensor(label_data, place)
para = exe.run(
infer_program,
feed={"src_wordseq": src_wordseq,
"dst_wordseq": dst_wordseq},
fetch_list=fetch_vars,
return_numpy=False)
acc_=para[1]._get_float_element(0)
data_length=len(np.concatenate(label_data, axis=0).astype("int64"))
accum_num_sum+=(data_length)
accum_num_recall+=(data_length*acc_)
if step_id % 100 == 0:
print("step:%d " % (step_id), accum_num_recall/accum_num_sum)
t1 = time.time()
print("model:%s recall@20:%.3f time_cost(s):%.2f" %
(model_path, accum_num_recall/accum_num_sum, t1 - t0))
if __name__ == "__main__":
if len(sys.argv) != 4:
print("Usage: %s model_dir start_epoch last_epoch(inclusive)")
exit(0)
model_dir = sys.argv[1]
try:
start_index = int(sys.argv[2])
last_index = int(sys.argv[3])
except:
iprint("Usage: %s model_dir start_ipoch last_epoch(inclusive)")
exit(-1)
train_file = "small_train.txt";
test_file = "small_test.txt"
vocab, train_reader, test_reader = utils.prepare_data(train_file, test_file,
batch_size=5, buffer_size=1000, word_freq_threshold=0)
for epoch in xrange(start_index, last_index + 1):
epoch_path = model_dir + "/epoch_" + str(epoch)
infer(test_reader=test_reader, use_cuda=True, model_path=epoch_path)
214586805 214509260
214857547 214857268 214857260
214859848 214857787
214687963 214531502 214687963
214696532 214859034 214858850
214857570 214857810 214857568 214857787 214857182
214857562 214857570 214857562 214857568
214859132 214545928 214859132 214551913
214858843 214859859 214858912 214858691 214859900
214561888 214561888
214688430 214688435 214688430
214536302 214531376 214531659 214531440 214531466 214513382 214550996
214854930 214854930
214858856 214690775 214859306
214859872 214858912 214858689
214859310 214859338 214859338 214859942 214859293 214859889 214859338 214859889 214859075 214859338 214859338 214859889
214574906 214574906
214859342 214859342 214858777 214851155 214851152 214572433
214537127 214857257
214857570 214857570 214857568 214857562 214857015
214854352 214854352 214854354
214738466 214855010 214857605 214856552 214574906 214857765 214849299
214858365 214859900 214859126 214858689 214859126 214859126 214857759 214858850 214859895 214859300
214857260 214561481 214848995 214849052 214865212
214857596 214819412 214819412
214849342 214849342
214859902 214854845 214854845 214854825
214859306 214859126 214859126
214644962 214644960 214644958
214696432 214696434
214708372 214508287 214684093
214857015 214857015 214858847 214690130
214858787 214859855
214858847 214696532 214859304 214854845
214586805 214586805
214857568 214857570
214696532 214858850 214859034 214569238 214568120 214854165 214684785 214854262 214567327
214602729 214857568 214857596
214859122 214858687 214859122 214859872
214555607 214836225 214836225 214836223
214849299 214829724 214855010 214829801 214574906 214586722 214684307 214857570
214859872 214695525
214845947 214586722 214829801
214829312 214546123
214849055 214849052
214509260 214587932 214596435 214644960 214696432 214696434 214545928 214857030 214636329 214832604 214574906
214586805 214586805
214587932 214587932
214857568 214857549 214854894
214836819 214836819 214595855 214595855
214858787 214858787
214854860 214857701
214848750 214643908
214858847 214859872 214859038 214859855 214690130
214847780 214696817 214717305
214509260 214509260
214853122 214853122 214853122 214853323
214858847 214858631 214858691
214859859 214819807 214853072 214853072 214819730
214820450 214705115 214586805
214858787 214859036
214829842 214864967
214846033 214850949
214587932 214586805 214509260 214696432 214855110 214545928
214858856 214859081 214859306 214858854
214690839 214690839 214711277 214839607 214582942 214582942
214857030 214832604
214857570 214855046 214859870 214577475 214858687 214656380
214854845 214854845 214854684 214859893 214854845 214854778
214850630 214848159 214848159 214848159 214848159 214848159 214848159 214848159
214856248 214856248
214858365 214858905 214858905
214712274 214855046
214845947 214845947 214831946 214717511 214846014 214854729
214561462 214561462 214561481 214561481
214836819 214853250
214858854 214859915 214859306 214854300
214857660 214857787 214539307 214855010 214855046 214849299 214856981 214849055
214855046 214854877 214568102 214539523 214579762 214539347 214641127 214600995 214833733 214600995 214684633 214645121 214658040 214712276 214857660 214687895 214854313 214857517
214845962 214853165 214846119
214854146 214859034
214819412 214819412 214819412 214819412
214849747 214578350 214561991
214854341 214854341
214644855 214644857 214531153
214644960 214862167
214640490 214600918 214600922
214854710 214857759 214859306
214858843 214859297 214858631 214859117 214858689 214858912 214859902 214690127
214586805 214586805
214859306 214859306 214859126
214859034 214696532 214858850 214859126 214859859 214859034 214859859 214858850
214857782 214849048 214857787
214854148 214857787 214854877
214858631 214858631 214690127 214859034 214858850 214859117 214858631 214859300 214858843 214859859 214859859
214646036 214646036
214858847 214858631 214690127 214859297
214861603 214700002 214700000 214835117 214700000 214857830 214700000 214712235 214700000 214700002 214510700 214835713 214712235 214853321
214854855 214854815 214854815
214857185 214854637 214829765 214848384 214829765 214856546 214848596 214835167 214563335 214553837 214536185 214855982 214845515 214550844 214712006
214718160 214516142 214848596 214848384 214849314 214829765 214561475 214718160 214718160 214718160 214854924 214856546 214558258 214856546 214718160 214717888 214846125 214580351 214516147 214846125
214857260 214857268
214855046 214849299 214856552 214857182
214858689 214690727 214859117 214858631 214858365 214858856
214854774 214854774
214840762 214840762 214844195 214586983 214840762 214840762 214586983 214842347 214842345 214842350 214842347 214844195 214844184
214587952 214587952 214644960 214840740 214840740
214857549 214849052 214857549 214857568
214586805 214509260
214509013 214509013 214509013 214509013
214648252 214854872
214700885 214531550 214531550 214711965 214711965
214748289 214839950 214848995
214819472 214819472
214857257 214857257
214857260 214857260 214857268 214857268 214857268
214855046 214855010 214855010
214829724 214849299 214586722 214849299 214850280
214854774 214854774
214857260 214857268
214636329 214636329
214859919 214859872 214859900 214690127 214690127 214858631 214859117 214858843 214859859 214858914 214858689
214857787 214539307
214859122 214688677 214696434
214853128 214536187 214853165
214696434 214644962 214855110 214586805 214696434
214858847 214690127 214859117 214859872 214859897 214859126 214577505 214858843
214857257 214857562 214857568 214857570 214857562
214695326 214696337 214696337
214849052 214849052
214587932 214586805
214857568 214857549 214857549 214857810 214857570 214848995
214509260 214586810
214829765 214829765
214532038 214840382
214680371 214712235
214859034 214859034 214858850 214859895 214859300 214857757 214859919 214858854 214690727 214858856 214690775 214859126 214540301 214540299 214859092 214690727 214690775 214858854 214858691
214858856 214859919 214858854 214859915 214858854 214859081 214859306 214857050 214859036
214572433 214854872
214857787 214539307
214857570 214854894 214857570
214859876 214854845 214854845 214854778 214819772
214864498 214858680
214712244 214712244
214858687 214859942 214859122 214859889 214858687 214859889 214859092 214859122 214859122 214859036 214857050 214858693 214859942 214859889 214859124 214857759 214859897 214858785 214859940 214859940 214859094 214858847 214859038 214858794
214858843 214858843
214851281 214859310 214859126
214516738 214639299 214518555
214857260 214644639
214859126 214859895 214859300
214854915 214854915
214853250 214551913 214691531 214855198
214857547 214857268
214857257 214857260 214857182 214571413 214684205 214857182
214851326 214852978 214853094
214859915 214859915 214859855
214859242 214835126 214835126 214835126 214835126 214835126
214861603 214704182 214853355 214646653
214853437 214697912 214697917 214849605 214849652 214774674 214829034 214651419 214838075 214827069
214858631 214859117 214858689 214858843 214858691 214858847
214853102 214854804
214690775 214690727 214858854 214857757 214859915 214858847 214858856 214858854 214568111 214690775
214859306 214858856 214690775 214858856
214859859 214859859 214859859 214858631 214858847 214858631 214858631 214858631 214858631 214859859 214859859
214690127 214858631 214859117 214858631 214577503 214859859 214859859 214859859
214575377 214854722
214858856 214690775 214690727 214857757 214859915 214859306 214858914 214859034 214696532 214859034 214858850 214859300 214859300 214859300 214858691 214859034 214858691 214858903 214859126 214859859 214858912 214859306 214858633 214859081 214859908 214859876 214858779 214858790 214857005 214857005 214859090 214859090 214859882 214858687 214859075 214858363 214858691 214858363 214858691 214858363 214858779 214859908
214710159 214850291
214850945 214853135
214553426 214854962 214859092 214859122
214857172 214865117
214853100 214854782
214859034 214859300 214858689 214859126
214586805 214586810
214858856 214690775 214857757 214696532 214859034 214858903
214748289 214865212
214821386 214857182
214586805 214531153 214644857 214644855 214835392
214859895 214859126 214859919 214859915 214858794 214859872 214859870 214859293 214861455 214861455 214861455 214859895 214859915 214859870 214857557
214859872 214859900 214859293 214859293
214643036 214848324 214848324 214643060 214643036
214858687 214859872 214858785 214690730 214690727 214859094 214690775 214859306
214857570 214857570 214859870 214859870 214858787 214858787
214644962 214644960
214829820 214510057
214690730 214858631 214859094 214858847 214690130 214859094 214568124 214851097 214690127 214859117 214568117
214696434 214696432 214696432 214696432
214859859 214859859 214859859 214858914
214858847 214858631 214690127 214859859 214858914 214858912 214585676 214859293
214854894 214854894
214580462 214712242 214819811
214859306 214859034
214857570 214857570
214857757 214587952
214858847 214859094 214858794 214859872 214858691 214858843 214858689 214859859
214859240 214859240 214676606 214859139
214857605 214712274 214857605 214712274
214587932 214587932
214838615 214696627
214712235 214862317 214700000
214712235 214700000
214857260 214857260 214857568
214854733 214697306 214857172 214857757 214859915 214854733 214857757 214859915 214858365
214859117 214859117 214854358 214853726 214853726 214690775 214853848
214854894 214665277
214688115 214845395 214857596 214572230
214832604 214832604
214858365 214857587 214858852
214704180 214704180 214704180
214849052 214849048
214560622 214857268
214853250 214535649
214535649 214853250
214853090 214853090
214858903 214858903
214691531 214691531
214857562 214857562 214857774 214857562 214857562 214857562
214586805 214586805
214748289 214858333
214849055 214849048
214857570 214839950 214858854 214690727 214859919
214858794 214858631 214690127 214858631 214858843 214858794
214587932 214509260
214587932 214586805
214857547 214857260 214865212
214567327 214859915 214586805
214644159 214853402
214859872 214858691 214858912 214858689 214859859 214858790
214587952 214644962 214587952 214644962
214851122 214854538 214714779 214717247 214853713 214854731 214820345
214606387 214606387 214859240
214853090 214853090
214586805 214840740 214509842 214534693 214840740 214853139 214853282 214853139 214853139 214534693
214857757 214857759 214859895 214859126
214602322 214711822
214586805 214586722 214705115
214858856 214859306
214858856 214859034 214859126 214859859
214560510 214560510
214586805 214586805
214853072 214859872 214857759 214858847 214859908 214859876
214859859 214858914 214859859
214561462 214561462
214857568 214854877 214859908 214859293
214853422 214829882
214857015 214859872 214859306 214859126 214858689 214859126 214858905
214859034 214858850 214859855
214708271 214859859
214854845 214854845
214859859 214859859
214859859 214859859
214859857 214859857 214858365 214858365 214858856 214858856
214853754 214853754
214748295 214748295 214748304 214748304 214748291
214829822 214540575 214853304 214686056
214864967 214864967
214572433 214849299 214690734 214854810
214586805 214586805 214509260
214857759 214828970
214859139 214859139
214838128 214582935
214864847 214864845
214859846 214859846
214857568 214857568 214857562 214857570 214854877
214858850 214858850 214858850
214859034 214859034 214858850
214854915 214571246
214857568 214848995 214859908 214858790 214857005
214857182 214856552
214820383 214820383 214820227
214705991 214705991
214857570 214857562
214858779 214859075 214858687 214858687 214859870 214854920 214858363 214859090 214859942 214859338
214857695 214857695 214861464
214857260 214857568 214857268 214857260
214686879 214686879
214844347 214844347 214844347 214851290 214677615 214849312 214844347 214832747 214844347 214829366 214832747 214844347 214829366 214844347
214857568 214857570
214690775 214858856 214858856
214858631 214859859 214858691 214819412 214819412
214858856 214858854 214690727 214858854 214859859 214858691 214690775 214858854 214690727 214858854 214819412
214819412 214857587 214857268 214857260 214561481 214849055
214853094 214853707
214820450 214857787
214857268 214849052 214853891 214857660 214855046 214829724 214712276 214857596 214819412 214858333 214690734
214712276 214857182 214849299 214857579 214850280
214855198 214691531 214855198
214700000 214700000 214680371 214680371 214700000 214700000 214680371 214680371 214680371
214854637 214854637
214819730 214819807 214819730
214596435 214587932 214587932 214587932 214587932 214587932
214859859 214858914 214858843 214858691 214858631 214859117 214859306 214858365 214857172 214855057 214859859 214858633
214854330 214854583 214687685
214858856 214690775
214859038 214858785 214859855 214859855 214858794 214576468 214859876 214859908 214859882 214858779 214857562
214859859 214858843
214690130 214858847 214690130 214858856 214690775 214859872 214854701 214857776 214857830
214820201 214859859 214858914 214859859 214858856 214858856 214690775
214656240 214714715 214854804
214710159 214849048 214710159
214617015 214617015
214853090 214851326
214853072 214565557 214510460 214857540
214714715 214714715 214847780 214705723 214675925 214510460
214859306 214859872 214854510 214859876 214859908 214859876 214859122 214859092 214859036 214859120
214854894 214853887 214855095
214846727 214846727
214856880 214857399 214658004
214708271 214690130 214708271 214690130
214587952 214836819 214595855
214837417 214837417
214859117 214859297 214858912 214858787
214858689 214851077 214851077 214851077 214854174 214744775 214744775 214753515 214714755 214854733 214851013 214853732 214853724 214854731 214839311 214854845 214859904 214854825 214550996 214551000 214550998 214542326 214586687 214829278 214708631 214859904 214854825 214851077 214760606 214858905
214859872 214858843 214858912 214859126 214858689 214854778 214854845 214859904 214854703 214859893
214858843 214858912
214854791 214857568 214857568 214856231
214858687 214859882 214859942 214858363 214857005 214690130 214859855 214859038 214859124 214858785 214859085 214859940 214859940 214858794 214859870 214859090 214857759 214854920 214854920 214858687 214859124
214854733 214859300 214859034 214859895
214687895 214687895
214850865 214850874
214857547 214857268 214857260 214713401
214691531 214691531
214848596 214561775 214574906 214855012 214857765
214853122 214853122
214644962 214644960 214587952
214853102 214854782 214853102
214857557 214849055 214848995 214819412 214648603
214836819 214595855 214596435
214857260 214855046
214678196 214744265 214678196
214859876 214859338 214688677
214857596 214857575
214859859 214859859 214859859 214859859 214859859
214851099 214836330
214859139 214859139 214850947
214586805 214586805
214859122 214858687
214864843 214820450
214690727 214859915 214690775 214851163 214856908 214859859 214858914 214859895 214853992 214858856 214696532 214859126 214859297 214859300 214858856 214690727
214849736 214850364 214849136
214859081 214859081
214696736 214858787 214859870
214857257 214857257
214537151 214651571 214677545 214643672 214849532
214561462 214561462
214858847 214859038 214859855 214859872 214858794 214857568 214857570
214857210 214532955
214646651 214567078
214859919 214859895 214859876 214859908 214859870 214859882
214854894 214857596 214849052 214857596 214857596 214854894 214854894 214854894 214853102 214849376 214853090 214853094 214853094 214852980 214853090 214859919 214583670 214853996 214849466 214851735
214854110 214854110 214849554 214849550
214859306 214858689 214858631 214859855
214849361 214853437
214853072 214839200 214850724 214696627
214857570 214857268 214857774 214856550 214857570 214857262 214857257
214848324 214848746
214849299 214746386
214586805 214509260 214586805 214509260 214509260
214550409 214515823 214550398 214550409 214515823 214550409 214515823 214550398 214574141
214857568 214854877
214850945 214846014 214850945
214854332 214848159
214832604 214852155 214708303 214864880 214850942 214850942 214850942 214846012 214829882 214853422 214829102 214849747 214852292
214857568 214857570 214857260 214857568 214572907 214574726 214561500 214854808
214859895 214859870 214858787 214859870 214859900 214859855 214859857 214858787 214859900
214858847 214858794 214859872 214858687 214859870
214858689 214859908
214517445 214517445
214834925 214851152 214851152 214851155
214858912 214684942 214716746 214853865 214820396 214851236 214849320 214853242
214510689 214835713 214835120
214829887 214859297 214858856 214858365 214859306 214859855 214685049 214858912 214858794 214859855 214848605 214859300 214820769 214854146 214859857 214859857 214690775 214858854 214854510 214851077 214858792 214857005 214854510 214858903 214858365 214855982 214854637 214856546 214853715 214858914 214859859 214859300 214859297 214716746 214849320 214853865 214820396 214851236 214859859 214859306 214859300 214859126
214858903 214859859 214858691 214858691 214858903 214857549
214746457 214687959 214687959
214638474 214638474
214858914 214858914 214858914 214858914
214857568 214862167 214853887 214857596
214844070 214843528 214843460 214843528 214844070
214849440 214853199 214709722 214701086
214690127 214859117 214858689 214859117 214690127
214628923 214676486 214676486 214853657 214676486
214858363 214859882 214859908 214859092 214859870 214858363 214859942
214628923 214676486 214853657 214676486 214544355 214544550 214695667 214544550 214676486 214628923 214851609 214628923
214512675 214512680 214859062
214857570 214857568 214857570
214819577 214854579 214848658 214854527
214857260 214640012 214586805 214703904 214857575
214859242 214586805 214587932 214835000 214704182 214857830 214839950 214819807 214572433 214836819 214836819 214704182 214858854 214859081 214851032 214859139 214859139 214857757 214851032 214858365 214851032 214859297 214704180 214696432 214696432 214572433 214677465 214858852 214687895 214714715 214854780 214743367 214854230 214853327 214856981 214835117 214859240 214859242 214859240 214859242 214650508 214864432 214859872
214859126 214696532 214859034
214829724 214849299 214856552 214855010 214850280 214572433 214858852 214571246 214855020 214854915
214849052 214854877 214854960 214858333 214571246 214571246 214554510 214708305 214554510 214708305
214717777 214834914 214834914 214834914
214857562 214857570
214829807 214691531 214853887 214644962 214644960
214858914 214859859 214859081 214859081 214690727
214859094 214690730 214858854 214858847
214858847 214690130 214859094 214859872 214858847 214690127 214859117
214587932 214586805
214851281 214656240
214748289 214748289 214819412 214858852
214850743 214718169
214690775 214858856 214859081
214849052 214849052
214668759 214677875
214849295 214570517 214854508
214676480 214577709 214854774 214580462 214819730 214853072 214849132
214690730 214858854 214859919
214691531 214696432
214571246 214854872 214571246 214571246
214854894 214857570 214857787 214854825 214857787
214510820 214672948 214836800 214702809 214702811
214857549 214857568
214644962 214644958
214858854 214859893 214690727
214857268 214857549
214587932 214644962
214691531 214691338 214838390 214840779 214840779 214691349 214840779 214843376 214840918 214714880 214691396 214840811 214691357 214691471 214691342
214853657 214853657
214586805 214509260 214586810 214509260
214696532 214858914 214859859
214859859 214859859 214858914
214587932 214535649 214853887
214853085 214851326 214853090
214858850 214696532 214859034
214829844 214829844 214846340 214844053 214832413 214832417 214853707 214716110 214753515 214588830 214716080 214716073 214716073 214691190 214556942 214554283 214839971 214554283 214857810 214576693
214850949 214556212 214538201 214530922
214857260 214857549
214859900 214859895 214859895 214856550 214851585 214851577 214557009 214846333
214858854 214858856 214859081 214858847 214858847 214690127 214858631 214859117 214858631 214858631 214690127 214859297 214854845 214568124 214567215
214859300 214581637 214857442 214857446 214858365 214859034 214858850 214859300 214859297 214829842
214551930 214774678
214602240 214602225
214509260 214587932
214858691 214854825
214859859 214859300 214858777
214858687 214859870
214546027 214545879 214545883 214545851 214853218 214545851
214851845 214857787
214851135 214858687 214859075 214854819 214854298 214820345 214853730 214854352
214853754 214577709 214853754
214855046 214854913 214857182 214849299 214820450 214705115 214857605 214712274 214574906 214829801 214857765
214859915 214859085 214859124 214850940 214744779 214853113 214854300 214861498
214854707 214854707
214849052 214854710 214835126
214857268 214738466 214856552 214855018 214858856 214859122 214857172 214691475
214691246 214691246
214644960 214644962
214858631 214858905 214859902
214705012 214705012
214685797 214546100 214685797 214546100
214859908 214859870 214854778
214857262 214857260
214857765 214857579 214857182
214858785 214858790 214859094 214859908 214858363 214858854 214859034
214644960 214644960
214854731 214857262 214857557 214857557
214857568 214857570 214857587
214832387 214832387
214857050 214857005 214858693 214854962
214859126 214859126
214849055 214849055
214849136 214849136
214857568 214854540 214854731 214854540
214858856 214859094 214858854 214859857 214690727 214859940
214560480 214645104
214851714 214644159
214848995 214848995
214857260 214857260
214857757 214859034 214859126 214696532
214859117 214859117
214857810 214853887
214640012 214640012
214859859 214858914 214858691 214858843 214858903 214859895 214858850 214859034 214859300 214690127 214859306 214859034 214858850 214859034 214858850 214859895 214859300 214858691 214858903 214859859 214858843 214858912 214859126 214858914 214858689 214859897 214859034
214854894 214857596 214857596 214819412 214849299 214857596 214859908 214859889 214858363 214858687 214859075 214851129 214859906 214854825 214857187 214848658
214568102 214577535 214853072 214854922 214848847 214510460 214716673 214676480
214540035 214854774
214849299 214857596
214854707 214854707 214854707 214854707
214857568 214858847 214859094 214859094 214859094 214858847 214690130 214859094 214690730 214858794 214690127 214859117 214858850 214858843 214859075 214854845
214837430 214545879
214587932 214509260 214586810
214857757 214859126 214859872 214858689
214852978 214853094 214853077 214852980
214857187 214856550 214856698
214532955 214532957 214532955 214639483 214639509 214717867 214748327 214716945 214854626 214829102 214829102 214849747 214853100 214835000 214835000 214857830 214676570
214849052 214857549 214855018 214859872
214859859 214865212
214857260 214738466
214859859 214859859
214859859 214859242 214853094 214859094 214859855 214859038 214859038 214859124 214857568 214857568 214554973
214849055 214849055
214712274 214509787
214859876 214858693
214859117 214859900
214859081 214857757 214857759 214859870 214859036 214859122
214586805 214586805 214586810
214854785 214854785
214848986 214686864 214848986
214858847 214690130
214857549 214857549
214859876 214858693 214858779 214858790 214858792 214854845 214854731
214849052 214849048
214857253 214849055 214849048
214854845 214859848 214717305
214854877 214572433 214854877
214854915 214849048 214849048
214858687 214858790 214859908
214857787 214857660 214854877 214539307
214850405 214856908 214851165 214851748
214856981 214855046 214849299 214738466 214855046
214846391 214846391 214556840 214687475 214857268 214857268 214858792
214839120 214839120
214858914 214858847
214854264 214854264 214567329 214859855
214849055 214567329 214854264 214854845 214854778 214858847 214859855 214690727 214859872 214859094 214854354
214857759 214859919 214857759 214857570 214857268
214849052 214854960 214857765 214856981 214854915
214691531 214855198 214853887
214572433 214774676 214574777
214859915 214859081 214859085 214859081
214509260 214587932 214644962
214836819 214596446 214596446
214859942 214859889 214859310
214859094 214690727 214858854 214690730 214857757 214859081 214859075 214859092 214854962
214854860 214854860
214857570 214857570
214857253 214857253
214826668 214554510 214554510 214554510 214554510 214554510 214554510
214854774 214695523 214705659 214711614 214819779 214571276 214571276 214571276
214854877 214712274 214574906 214571246 214858333 214571246 214854810
214710159 214839950 214854710 214820450 214705115
214554358 214717003 214717003 214717003
214851120 214676480 214688589 214510445
214859094 214690730 214859908 214859075
214638478 214638482
214858689 214858689
214859094 214858631
214857568 214854894 214857260
214853887 214858850
214857268 214857568
214702895 214839911 214702895
214857695 214854924 214857776 214856700 214849344
214857260 214849048 214853122 214854877 214855012 214854877
214851120 214853122 214845502 214864432 214676535 214845504 214836506 214845506 214530729 214845502 214845504 214864432 214856552
214821390 214821390
214857765 214850280 214856981 214857268
214854264 214567329 214567329 214854264 214854268 214854268
214700992 214839341 214774682 214717061
214858914 214859872 214859306 214859876 214865117 214865120
214859908 214858687 214859876 214854920
214857570 214857562
214850280 214855018 214703904
214857568 214858856 214858847 214859126 214858903 214696532 214858365
214853282 214859132
214856550 214857187 214857187 214857568
214857182 214850280
214859306 214696532
214857549 214857549 214857257 214857260 214857568
214857549 214857260 214561462 214648252 214857568
214853195 214859880 214859915 214851748
214530575 214602356
214717003 214565666 214565666 214857257 214857257 214853698 214853698 214853735
214857568 214857568
214855198 214855198 214853887 214691250
214857757 214859915 214854920
214849052 214640012
214836819 214836819
214859859 214858689 214858843 214858847 214854845
214644962 214696434 214696434
214851155 214853327 214854583
214857570 214854894
214718265 214844218
214857568 214857570 214857568 214857568 214857568 214857570 214697844
214851845 214856552
214857255 214857257
214853094 214853094 214853094
214859859 214859859
214859126 214858794 214859872
214857570 214859857 214858365 214859908
214850730 214850730 214850730
214858847 214858785 214858365
214857549 214857260 214857268 214857182 214855010
214849048 214849048
214829807 214545928 214551913 214855198 214853887 214691531 214691531 214842437 214691531
214857570 214857568
214578268 214858852
214859919 214859915 214859306
214854877 214552172 214854877
214701787 214851032 214835713 214851032
214854332 214854332 214859897 214859919 214859876
214567331 214848283 214567331 214567331 214567331
214669895 214846382
214712274 214712274
214859342 214859342 214859342 214859342 214859342 214859342
214857570 214856552 214853072
214857568 214857568 214857568
214849299 214857596 214854915
214852987 214852987 214850332
214580360 214580360
214859038 214859081 214858365 214859081 214859872 214858631 214859117 214859900 214858843 214859297 214858689 214858912
214858850 214568120
214854845 214859902 214854845 214717273 214530718
214829312 214546123
214596435 214596435 214595855 214596435 214595855
214546022 214546025 214546022 214686071 214546025 214546022 214686067 214546018
214674705 214674705
214833789 214855012 214658252 214539279 214668795 214550855 214668795 214821386 214828905 214711267 214711267 214711267
214850422 214716579 214702877 214851071 214851759 214857583 214534359 214547186 214711267 214711267 214539403 214833789 214658252 214657811 214640861 214684449 214586876
214858852 214690734 214855018 214819412 214857596
214857549 214857568 214857260 214821815
214587932 214848596
214859872 214690130 214854920
214857570 214857570
214712274 214857182 214855046
214717288 214717288 214843372 214843372
214842352 214842347 214586927
214857568 214857568
214819412 214857575
214857774 214856550 214857187 214855982 214855057 214857774 214851099 214836330 214853730 214853730 214570871 214570877
214859859 214859859
214696434 214587952 214836819
214836819 214595855 214644962 214644960 214587952 214596435
214509260 214696432 214857575 214571246
214691531 214864670 214844070
214859122 214857776
214854313 214857587
214829724 214858852
214690130 214858856 214857757 214858794 214858687 214859908 214859906
214849299 214855046 214849299 214584797 214576839 214708235 214706150
214853338 214853338 214853338
214857575 214648603
214586805 214586805
214855048 214857185 214856702 214857695 214856700 214854637 214851129 214855982 214857776
214857570 214857568 214857268 214857260
214853096 214853096
214857549 214857570
214828882 214713954 214696177 214676342 214714342 214713872 214713999 214714014 214714014 214714014 214714014
214645005 214586722 214856552 214648603
214853120 214853120
214853102 214836932 214854731
214687959 214697432 214656382 214696826
214859460 214559651 214859458 214859460
214829840 214586722 214857575
214859094 214690730
214853184 214857262
214846404 214846404
214516138 214854804 214714715
214644960 214644962 214596435 214836819 214596435 214596446 214596435 214596446
214580276 214829034
214857765 214572230 214857765 214857765
214851242 214848990
214696532 214859126
214571900 214836729 214571900 214571932 214571900 214714740 214571904 214571904 214836842
214849132 214849132
214857015 214859857
214849052 214849052
214712274 214857605 214712274 214712274 214857605
214859306 214859126 214854920 214858687 214859075 214859092 214859908 214859882
214692868 214857568 214857260 214712274 214857605 214712274 214854915
214829807 214551913
214586805 214586810
214858856 214690775 214859306
214561481 214561481
214829724 214849299
214859872 214859908 214854920 214857172 214865120
214849286 214849342 214743352 214853122 214859075 214858687 214859310 214859889
214858903 214858689 214859034 214858631
214850702 214854497 214857562 214857262
214516708 214516708 214516708
214856829 214856831
214587932 214509260 214509260 214586805 214509260 214845077 214708256 214835250
214690730 214859094 214690730 214858794 214858794 214859872 214859117 214858691 214858843 214858689
214859117 214858843 214858691 214858691 214858689
214690727 214690775 214858854
214858856 214690775 214859915 214859034 214696532 214859882
214691531 214842437 214855198 214853887
214857570 214857570 214857568
214509260 214586810
214858847 214859872 214858631 214690127 214859117 214859900 214858691 214858912 214858689 214859859 214858914 214858847 214859094
214705018 214705018
214829724 214855010
214855018 214859876
214850735 214857765
214586805 214586805
214857257 214857257
214855198 214853887 214862167
214859034 214858912 214858914 214859085 214859126
214836819 214596435 214596446 214587952 214644962 214644958 214587932
214853081 214849048
214859094 214859094 214858854 214690727 214690775 214690727
214690734 214858333 214854810 214858687
214851155 214691475
214855010 214855010 214820450 214857182 214857660 214857787 214857660
214539534 214539534 214569230 214569230 214539534 214569230 214569230
214853420 214846033 214584092 214846033 214829880 214829878 214853420 214695253 214846033 214717511 214831946 214850945 214846029 214850947 214854785 214640353 214551892 214551885
214663935 214851714
214857549 214857549 214857568 214857260
214857015 214857549 214857253
214857759 214859872 214854920 214859908 214859876
214586805 214586805 214829807 214696434
214690775 214858790 214858687 214859075 214859122 214859857 214858633 214858365 214859034 214857757 214859034 214858691 214858903 214859859 214858914 214690775 214690775
214587932 214587932 214595855 214596435 214595855 214836819 214696434 214836819 214829807 214586810 214586805
214705370 214845917 214716667
214554675 214854268 214853994 214851750
214861498 214861498 214819742 214858777 214859304 214864680 214859848 214854701 214861498
214857568 214857570 214857260 214857568 214857268 214857570
214696532 214858850
214840082 214707817 214644157 214851714 214849003 214849003 214849003 214851714
214857587 214856981 214705115 214858852
214859342 214853720 214559848 214838792 214533729 214838805 214838812 214680485 214709595 214838822 214839605 214838822 214587058 214602315 214856670 214717837 214856805 214531513 214602752 214531513 214602752
214587952 214836819 214857414
214857570 214857568 214857562 214857570 214837873 214542345 214652422
214853094 214691295 214843931 214691295 214851249 214691248 214840871 214691246 214840871
214857268 214857570 214857260 214857268
214857570 214857562 214857268
214854825 214854825
214849048 214849299 214856981 214857765 214572433 214820450 214705115
214821315 214612708 214844441 214533022
214850578 214850578
214859126 214859126 214858365 214859306 214859859 214859126 214859126 214858790
214685049 214716714
214851555 214851553 214540035
214846312 214859122
214559008 214690794 214613743 214584920 214539084 214857437 214827011 214836512
214856552 214705494
214644960 214644958 214644960 214835000
214859293 214652422
214853891 214851845
214858631 214858843 214858691
214857570 214857268 214857570 214857268
214858852 214858852
214858680 214821371 214554793
214703904 214556563 214553426 214556563
214717612 214856482
214857800 214574147 214574147
214859117 214690127 214858631 214858691 214858912 214858905 214857005 214859889
214690130 214690730 214857759 214859855
214858854 214858854 214858856 214690775 214857757 214859857 214859919 214859915 214859085 214859081 214858850 214696532 214859126 214859090 214859908 214577503 214859306 214859297 214859895 214572448 214695553 214686547 214854358 214532351 214690781 214854778 214856555 214834886 214856567
214854860 214854860 214854860
214859872 214858689
214859094 214859306
214857257 214857549 214857568 214857568 214849052
214853887 214691250
214857182 214857587
214858856 214858856 214858905
214587932 214587952 214644960 214853887 214832604
214509260 214509260 214509260
214857570 214857568 214854894
214857257 214857257 214859038 214859038
214859139 214700000 214680371 214857830 214639700 214639708 214639815
214858850 214858850 214859306 214858856 214858854 214858850 214859859 214859126 214859034 214684942
214851097 214859126 214859126 214854358 214858689 214859126
214855003 214853754
214690734 214703904
214857257 214857570 214710159
214857257 214854894
214509260 214574606 214574604 214574606 214574606
214844184 214844188 214844186 214844190 214844195 214639370 214842350
214859902 214854701 214859904 214858777 214854701
214857568 214857782
214859859 214859859 214858631 214859117
214857579 214857596 214857596 214648603
214850287 214854853 214853454 214711682 214676364 214709630 214696545 214711903 214820306 214849747 214829102 214561991 214854853 214854853
214858847 214690730 214859094 214690730 214690727 214858631 214858631 214858631 214858631 214859300 214859297 214858691 214859126 214859872 214857005 214857005 214857005 214690730 214859306 214859117 214690727 214858631 214858691 214858691 214859306 214859872 214859126 214858843 214858847 214859094 214690730 214690730 214858854 214690727 214859094 214690130 214859859
214859034 214858847 214859094 214858794 214858850 214858691 214858903 214859859 214577505 214573310 214687905
214857570 214857568
214691475 214857268
214857260 214857547 214703904
214586805 214586805 214586810 214587932
214857568 214857570 214854877
214857596 214857596 214857596 214857596
214717888 214718220
214857257 214857262
214857257 214857260 214690130 214859900 214859876 214857005 214858792 214857260 214857268
214849048 214849048 214791707
214531565 214531567
214690775 214859034 214859034 214858850 214859034 214859895 214858903 214858850 214858850 214858850 214696532 214858691 214859300 214858691 214859126
214854845 214859902
214550383 214581898 214581817 214515834 214581817 214574124 214515834 214515834 214574124 214574124 214581815 214515883 214515830 214515883 214515834 214857797
214644960 214595855 214596435 214836819
214836819 214836819 214595855 214596435 214644960 214644960
214595855 214595855 214836819 214836819 214596435 214596435 214644960 214644960
214858856 214858856 214690727 214858854 214859915 214859306 214858850 214859126 214858689 214859300 214859117 214859117 214696532 214858856 214858856 214858856
214858856 214859306 214859117 214858689 214859859 214859859 214854176 214853210 214859300 214851748 214567333 214854262
214703904 214703904 214571246
214820450 214855046
214854778 214819772
214832366 214832364
214858854 214859857 214858850 214858914
214858847 214848337
214690127 214858631 214858689 214859297 214859117
214716673 214716673
214846402 214712681 214712822 214712820 214712822 214712681 214832422 214712681 214832394
214857549 214857568
214854962 214858787 214857172
214836819 214836819
214577477 214577477
214535649 214602729 214865212
214857570 214857568 214857568
214854780 214859304 214854845 214854780 214854780 214859304 214854845 214859304 214854845 214854845 214859304 214854780
214744779 214854577 214690796 214857759 214690796 214854577 214854577 214859302 214717562 214748336
214705115 214856552
214849048 214849055 214849048 214849055
214853072 214578011
214572433 214572433
214857260 214857549
214853852 214859297 214850855 214854148 214564387
214859870 214854920 214859882 214858363 214851129 214851129
214688630 214845947 214688610
214857030 214696432 214696432 214587952 214696432 214857039
214820345 214854540 214853730 214848658 214848658
214858847 214859872 214858847 214859094 214858687 214859122 214859092 214859122 214854962
214859126 214859300
214586906 214857568 214857570 214857562 214857268 214575369 214640353
214857562 214857570 214857257
214696432 214857030
214858854 214858854
214836819 214696434
214857570 214858847 214859094 214690730 214859872
214854705 214854705
214712274 214712274 214712274 214848159 214686069 214709604 214712036 214855012 214582380 214606963 214606777 214848941 214554714 214850775 214848941 214848941 214712274 214846865 214848039 214846865 214855012 214855012
214709702 214709702 214677830
214510445 214510445
214857570 214857570 214857568 214857570 214854894 214857268 214857260 214857568
214859036 214851281
214690130 214690730 214859872 214859034 214858850 214859034 214859895 214859117 214858689 214858914
214516012 214516012 214516012 214575146 214575146
214857257 214828882 214858847 214690130 214859094 214690730 214859872 214859306 214858794 214859075 214854842 214854720 214853081 214690839 214859126 214858689 214859306 214684785 214854358 214686547 214695525 214567333 214854510 214853135 214854165 214853242 214857015 214677401 214859921 214849455 214709690 214709645 214716255 214846404
214858847 214859094 214858689 214859859 214859038 214858785 214859940 214859897 214859908
214829807 214829807
214859034 214858850 214859126
214849052 214849052 214572433 214854877 214829724
214696644 214700992
214853072 214580462
214586805 214586810
214836819 214586805
214819412 214819412 214858852 214858852
214691471 214691471
214857257 214857257
214690730 214690730 214690730 214859094 214859117 214858631
214857782 214857782 214857782
214857268 214857260 214857268
214858847 214859872 214858794 214858689 214859872
214859034 214858850 214858850 214859300 214858850 214859859 214858903 214859034 214859034 214696532 214859034 214696532 214696532
214696432 214696432
214688098 214854960
214690130 214859117 214690127 214696532 214859126 214858689 214858912 214858912 214858850 214858912 214858912
214684730 214853102 214854785 214864880
214855785 214855820
214859859 214858689 214858912 214858691 214859900 214859297
214587932 214509260 214586722
214857812 214865120
214577385 214647553
214847876 214853222
214858856 214859075 214859908 214858856
214586805 214586805 214586805
214858365 214859940 214859897 214858847 214858856 214857759 214858687 214857172 214858363 214717305
214849052 214856552
214857570 214857568
214853092 214853092
214859038 214858785 214859872 214859306 214859117
214834931 214856520
214714912 214714910 214852198 214714907 214852220 214852230 214852222 214848236
214850280 214574906
214857255 214748289 214856981 214572433 214857765
214838261 214857564
214587932 214853771
214645003 214677922
214567329 214854264
214857701 214690734
214853497 214717498 214717498 214854347 214854347 214748257 214836947 214857260 214857260
214858856 214859908 214854920 214859075
214856576 214687907 214856574
214853122 214853122 214853122
214858905 214858905
214835120 214696425 214862317
214847150 214844392 214855010 214844392 214855010 214844392 214846262 214855010 214855010 214738466 214855010 214574906 214572230 214857575 214846378
214690775 214858856 214857757 214859940 214859897 214859085 214858854 214858633 214859919 214859306 214847034
214856700 214856550 214856702 214857187
214819412 214849299 214829724
214857257 214857257 214857549 214857257
214857562 214854845
214587952 214587932
214857549 214857570
214716982 214716982 214854570 214854622
214858856 214690775 214857757 214858365 214696532 214859034 214858903 214859034
214858905 214858905 214851155 214851155 214851155
214854701 214854701
214845407 214845407 214845407 214845407
214859870 214859908
214854913 214712274 214857765
214859034 214858850 214859895 214859126 214858903 214858689
214858779 214859942
214572433 214572433 214572433 214572433 214857570 214857568
214857812 214857812
214856552 214586805 214855010 214857575 214819412 214853887 214855095 214853887
214859094 214859075 214859908 214690730 214859038 214859855 214859872 214858794 214857587
214669817 214669884
214857570 214857568
214854313 214839339 214774676 214827020 214819747 214570547 214746386 214569729 214854296 214854215 214854311 214717063 214849295 214717427 214709634
214857810 214857557 214857557
214848995 214857549 214857257 214865212
214858856 214858850 214858687
214849055 214857262
214858854 214690727 214858854 214859306
214857555 214857810
214576468 214576468
214694752 214694257 214694720
214509260 214650508 214853122 214676480 214851845 214645005 214577535 214587193 214865120
214849048 214849048 214849048 214857547 214854810
214644960 214586805
214574906 214746457 214846978
214849327 214828970
214854845 214760595 214844782 214760535 214760617
214540020 214855170 214510453 214819815 214819723 214540020
214853102 214859857 214859919 214859306
214858856 214857757 214859857 214857757 214859857 214859915 214859915 214859306 214859126 214859908 214857005 214859304 214859878 214859846 214865117 214832398 214716069 214849393 214857257 214857557 214857570 214857568 214857810 214855012 214854853 214853147 214711040
214854920 214854920 214854962 214854920 214711952 214748257 214854347 214711952 214851077 214861464 214674427 214854920 214857562 214857570 214857568 214854920 214854920
214854920 214857570 214848596 214854920 214748257 214854920
214668791 214829662 214829662 214819412 214703904 214690770
214844396 214849734 214846415
214703904 214577302
214717721 214717625 214853360
214849052 214645005 214645005 214851845 214851845 214853891 214851845
214857562 214859306
214690730 214690730 214859094 214859117 214858689 214859872 214859075
214836320 214836320 214836320 214836320
214544782 214848107
214714586 214714586 214714586
214551913 214557268 214551913 214850400 214551930
214859870 214858790
214853263 214853263 214851129 214851281 214856936 214586591 214536311 214646192 214646188 214856932
214559077 214859117 214859117
214857268 214857260
214849052 214690775 214859859 214696532 214858691 214696532 214859859 214859117
214854778 214854778
214828970 214839911 214839911 214853072 214687742 214833782 214834914
214753650 214753650
214854913 214849299 214820450 214705115 214712274 214829801 214854877 214850280 214850280 214850280
214854877 214709687
214857596 214690734 214854920 214859342 214696432
214859857 214859306
214849052 214849052 214859293 214859293
214859900 214690775 214859915 214859919 214859124 214859085 214858633 214858785 214858847 214690727 214859094 214859855 214859857 214859306 214859872 214858365 214859038 214859038
214858689 214857005
214595855 214596435 214644962 214644960
214858631 214858631 214690127 214690127 214859872
214819777 214826904 214836885 214846367 214561775 214554707 214857547 214826711
214854894 214849052
214854148 214853094 214853096
214568117 214859094 214858847
214541660 214849170 214858710 214848808 214709685 214848851 214848851
214690775 214859306 214858850 214859126 214858687 214854845 214854825 214856660
214657457 214684545
214857549 214857568 214857549 214690730 214859094 214690730
214853705 214853705
214859859 214851165 214858914 214859859 214690775 214858856 214859306
214857787 214854960 214855046 214556563 214553426 214865212 214855012
214848845 214849012
214857759 214854920
214517443 214848650 214517445 214602480 214517443
214858856 214690775 214858365 214858792
214820450 214819412 214819412 214857596 214857596 214556563 214556563
214700000 214744258
214565623 214557234
214857204 214835000
214859919 214859919 214857172 214857570 214846475 214845590 214853347 214850709 214853135 214854152 214859917 214850709 214854579 214819577 214857262 214859915 214859919 214859919 214850709 214859917 214859917 214854534 214854534 214642779 214509125 214864498
214854915 214857701
214508287 214508287
214705991 214705991
214580360 214580360
214859904 214854825
214857568 214854894
214690130 214858631 214858689 214858689 214858689 214858689 214859117 214858631
214643036 214509013 214643942
214854311 214836827
214856807 214856807 214687907 214856576 214687907
214712102 214695238 214695238 214695238
214858689 214858631 214859117
214820345 214854731
214848755 214560534 214643036 214697330 214697364
214859859 214858689 214859859
214859094 214690730 214859094 214690730 214859094 214858854 214690727 214690775 214859306 214858850 214696532 214696532 214858850 214859034 214859859 214859895 214859859 214859126 214859895 214859300 214859300 214690127 214859126 214858912 214858912 214690127 214690127 214859859 214858689 214859300 214690775 214696532 214858912 214858365 214696532 214858691
214858787 214859891 214851281
214835000 214853100
214859038 214859081
214857570 214854894 214857260 214857268 214849048 214853122
214587932 214701787 214587932
214707817 214826820
214857570 214857570 214857568 214857568 214857570 214857570
214859092 214820450
214836819 214595855 214836819 214596446 214836819
214855046 214829724 214857587
214676480 214676480
214864680 214709649 214829878 214846033 214695225 214695225 214850282 214567417
214832126 214859117
214849052 214829724 214849299
214587932 214509260 214587932
214849052 214829724 214857596
214550627 214550627
214536502 214536500 214536506 214577561
214662742 214662742 214825110 214757390 214757407 214551617
214716935 214774687 214832672
214836765 214706482
214701242 214826623
214826835 214826715
214838855 214838855
214576500 214576500 214576500
214821275 214821275 214821371 214821371 214821371 214717089 214563337 214706462 214717436 214743335 214826837 214819762
214717867 214717867
214836761 214684513 214836761
214577732 214587013 214577732
214826897 214820441
214684093 214684093 214684093
214561790 214561790 214611457 214611457
214577732 214577732
214838503 214838503 214838503 214838503 214838503 214548744
214718203 214718203 214718203 214718203
214837485 214837485 214837485 214837487 214837487 214821315 214586711 214821305 214821307 214844357 214821341 214821309 214551617 214551617 214612920 214837487
214613743 214613743 214539110 214539110
214827028 214827017 214537796 214840762 214707930 214707930 214585652 214536197 214536195 214646169
214579288 214714790 214676070 214601407
214532036 214700432
214836789 214836789 214710804
214537967 214537967
214718246 214826835
214835257 214835265
214834865 214571188 214571188 214571188 214820225 214820225 214820225 214820225 214820225 214820225 214820225 214820225 214706441 214706441 214706441 214706441
214652878 214716737 214652878
214684721 214680356
214551594 214586970
214826769 214537967
214819745 214819745
214691587 214587915
214821277 214821277 214821277 214821277 214821277
214716932 214716932 214716932 214716932 214716932 214716932
214712235 214581489 214602605
214820441 214826897 214826702 214684513 214838100 214544357 214551626 214691484
214545935 214819438 214839907 214835917 214836210
214698491 214523692
214695307 214695305 214538317 214677448
214819468 214716977 214716977 214716977 214716977 214716939
214544355 214601212 214601212 214601212
214716982 214716984
214844248 214844248
214515834 214515830
214717318 214717318
214832557 214559660 214559660 214819520 214586540
214587797 214835775 214844109
214714794 214601407 214826619 214746427 214821300 214717562 214826927 214748334 214826908 214800262
214709645 214709645 214709645 214709645 214709645
214532072 214532070
214827022 214840419
214716984 214832657
214662975 214537779 214840762
214821277 214821277 214821277
214748300 214748293
214826955 214826606 214687642
214832559 214832559 214832559 214821017 214821017 214572234 214826715 214826715
214509135 214536853 214509133 214509135 214509135 214509135 214717877 214826615 214716982
214819472 214687685
214821285 214821285 214826801 214826801
214826705 214826705
214668590 214826872
214652220 214840483 214840483 214717286 214558807 214821300 214826908 214826908 214826908 214554637 214819430 214819430 214826837 214826837 214820392 214820392 214586694 214819376 214553844 214601229 214555500 214695127 214819760 214717850 214718385 214743369 214743369
214648475 214648340 214648438 214648455 214712936 214712887 214696149 214717097 214534352 214534352 214717097
214560099 214560099 214560099 214832750 214560099
214685621 214684093 214546097 214685623
214819685 214839907 214839905 214811752
214717007 214717003 214716928
214820842 214819490
214555869 214537185
214840599 214835735
214838100 214706216
214829737 214821315
214748293 214748293
214712272 214820450
214821380 214821380
214826799 214827005 214718390 214718396 214826627
214841060 214841060
214687768 214706445
214811752 214811754
214594678 214594680 214594680
214821369 214821369 214697771 214697512 214697413 214697409 214652409 214537127 214537127 214820237 214820237 214709645 214699213 214820237 214820237 214820237 214709645 214537127
214554358 214716950
214821275 214829741
214829741 214820842 214821279 214703790
214716954 214838366
214821022 214820814
214684721 214821369 214826833 214819472
214821315 214821305
214826702 214821275
214717847 214819719 214748336
214536440 214536437
214512416 214512416
214839313 214839313 214839313
214826705 214826705
214510044 214510044 214510044 214582387 214537535 214584812 214537535 214584810
214600989 214704180
214705693 214696824 214705682 214696817 214705691 214705693 214711710 214705691 214705691 214687539 214705687 214744796 214681648 214717307 214577750 214650382 214744796 214696817 214705682 214711710
214821013 214821013 214572182 214572182
214840762 214586983
214820441 214826623
214594633 214594592 214601010 214601010 214601015 214594592 214594592
214821275 214827032
214843370 214843370 214843370
214595893 214595889
214841060 214841060 214840378 214826955 214821275 214829285
214826623 214826615
214819719 214791688 214819472
214826810 214826810
214821377 214820201
214587650 214535617 214535595 214587650
214573312 214573312 214829257 214834987
214826810 214840419 214840419 214560187 214716984
214585397 214585397
214821339 214844357
214821020 214819547 214819547 214821024 214718160 214829282
214551626 214821279
214821022 214718169 214821024 214601233 214545500 214545455 214545440 214545455
214820252 214582502 214836802 214672963
214821020 214829282
214684093 214684093 214684093
214681104 214511092
214706432 214708305 214587013
214554358 214678916
214837378 214828850 214828850
214820942 214684093
214839313 214840001
214828867 214743497 214821392
214674568 214645316 214536860 214639177 214820261
214589518 214576665
214709645 214820225
214709792 214717046
214532623 214557206 214826897 214826801 214576500
214697690 214646349 214646250
214685795 214630042
214553735 214677969 214553735 214586874 214587937 214586874 214589600
214840762 214575088 214550259
214839373 214836765 214838100
214717007 214716928
214613865 214613865 214613870
214716935 214716932 214716932
214532070 214821285 214711333 214691604
214565623 214557236
214820387 214827035
214535621 214535621
214552243 214552464
214820231 214820231
214826837 214819430
214826900 214826900 214664919 214826900
214820456 214820456
214827020 214821272
214821367 214584808 214836761 214826893 214839849
214835561 214835561
214774685 214774685 214839997 214839313 214774685
214826874 214826874 214821399 214826874
214819552 214820938 214821380
214826803 214826803 214826803
214829282 214829282
214687685 214556840 214601042 214691484
214821397 214821397 214821397 214821397
214821022 214819550 214826627
214669730 214836281
214821300 214690110 214753515
214821277 214821277
214540035 214577711 214708239 214517880 214577711 214578007 214819725 214819815
214601462 214746386
214708404 214708406 214725500 214839660 214833714 214714817
214821290 214821290 214585395 214826700 214826700 214826801 214691366 214821377 214567410 214643657 214826608 214684513 214829312 214685795 214829312 214821298
214821024 214587384 214718203 214832557
214827022 214836341
214652422 214567410 214567404
214820192 214844297 214699301
214717007 214717005 214717005
214833802 214843382 214843385 214843387 214842420 214843477 214843955 214843950 214843494 214844310 214696802 214840599
214833802 214820842
214839313 214839313 214839995
214716928 214717003
214586711 214684160
214539039 214539084
214631008 214839995 214839313
214829285 214826702
214820938 214821037
214826803 214821285 214826803 214820383 214826801
214695345 214701302 214701287 214695386 214696352
214820842 214840378 214705100
214743341 214743341 214743341 214837820 214837764 214837762 214709685 214839257 214716341 214685152 214685152 214544945 214544936
214744779 214743341 214744779 214820456
214819385 214819378 214710090 214820938 214821022
214540035 214819798
214819811 214517880
214839870 214839866 214705787
214561991 214561991 214820938
214745317 214745317
214556270 214821339 214554384 214694139
214586722 214826897 214681091
214601233 214716932 214716930 214716932
214820385 214820385
214836958 214537826 214836958 214536577 214836958 214836958 214580790 214580790 214579749 214537856 214512152 214836960 214836960 214612760
214819410 214700752
214821275 214833800
214706102 214800272
214820402 214820400
214607143 214640394 214607143 214640394 214607143
214832557 214717888
214839311 214820387 214819472 214819740
214842446 214691602 214842446 214842446 214691600 214691597 214842446 214842442 214691604
214819490 214828987 214684845 214826912
214826998 214826998 214748334 214826934
214821277 214821290 214821307
214508942 214716982 214716984 214509013 214842290 214840762 214842287 214820441
214561475 214532147 214539532 214511375
214692791 214697990 214611283
214684513 214684513
214840541 214587508 214551581
214826955 214826623 214827000 214811739 214650626 214650626 214827005 214834865 214577518
214826816 214826705 214826816 214826705 214826816
214839313 214602774
214820182 214820192 214820182 214820225 214820237
214510044 214582387 214510044
214594637 214684513 214602821 214594637
214826705 214826816
214826801 214836761 214820255
214602268 214602268 214602268
214574777 214700992 214700990
214826617 214826715
214826900 214842577
214576500 214839313 214820195 214709634 214699301
214826955 214826955
214545935 214820231
214600625 214600625 214600625
214821020 214821024
214716935 214716932 214582950
214676387 214676387
214684513 214839373 214684513 214684513
214717888 214838503 214685784 214684513
214826705 214826705 214820383 214826803 214826803 214821285 214821285 214821285 214821285
214510854 214510854 214672963 214510854 214702811 214510854 214537455 214510854
214696434 214696434 214696434
214582942 214582942
214508942 214753659
214717007 214838368 214716937
214826912 214826912 214834865 214834865
214820218 214547600
214718169 214821024
214594678 214594680
214702740 214601441 214545967
214640477 214640477
214640477 214640477
214821020 214820842 214826897 214535621 214821285 214821373 214821022
214630042 214819502
214512656 214512658 214512658 214694332
214829737 214829737 214829737 214829737 214821309
214712237 214704180
214709792 214709792
214640237 214640237
214638480 214551570 214638480
214709312 214664895 214587296 214664895
214835760 214587785 214840599 214835760 214835585 214833802 214833800 214832730 214587800 214833802 214833802 214538030 214584939
214838456 214508942
214702702 214702704
214706460 214706432 214821028 214821028 214539262 214821030
214820240 214820240
214684513 214691267 214691332
214827062 214827062
214717528 214717528 214594605
214716947 214717010 214716975 214646308
214601233 214601233 214833800 214833802
214585100 214584808 214584808 214584808 214510738
214748336 214748336 214819719
214584920 214613743 214587384 214832557 214821017 214821017 214553936
214821013 214829282
214551285 214551287 214551285
214826801 214826700 214840378
214552498 214552625 214552625
214534852 214534852
214833800 214833800
214748336 214819721 214601233 214819385 214819378
214840378 214537037
214684513 214684513
214535705 214535705
214820383 214820383 214841640 214691390
214839313 214839313
214602315 214554785 214698592 214698590 214698455 214698592
214753515 214743369 214819721 214743495 214577450 214711657 214826872 214601233 214717890
214691347 214691452
214839812 214835422 214632367 214536367 214717003
214546719 214678365
214821290 214821290
214839373 214539262
214748285 214820218
214717007 214717007 214716945 214554358 214717003
214838977 214696434
214594680 214594680
214718160 214684513
214539262 214820842
214537775 214556840 214687685
214572182 214821013 214587384
214840412 214826212 214753693 214827015 214587028 214826619 214743335 214844357 214821307 214821341 214612721 214842450
214826955 214716971
214638480 214638480 214551594 214551594
214600933 214600933 214835259 214835259
214746427 214640017 214600989 214743515 214600989
214589278 214589257 214718276 214587005 214591374 214819571 214586595
214706441 214706441
214638480 214638480
214821307 214821309 214821339
214551911 214564687
214819781 214585644 214585644 214650609 214684498 214553540 214553540 214572538 214553540 214553540 214842412 214844030 214843993 214844030 214843492 214843492 214843492 214691537 214691332
214826801 214651670 214744265
214509084 214509084
214839795 214523700 214839791 214708018 214517450 214714927 214712750 214712752 214840526
214718203 214718203 214842352 214586983 214842347
214748291 214748304
214691484 214691396 214691321 214691426 214840822
214835120 214835120
214820345 214820385 214710090 214708370
214596502 214596326 214596502 214596502
214826810 214839373
214738445 214738445
214826810 214691426
214821371 214821022 214821017 214832559
214833782 214687742 214709807 214717757 214833782 214709807 214717730 214709807 214709807 214709807
214546475 214546475
214577518 214601407
214748342 214584939 214748342 214748342 214748347 214748347 214748342
214821022 214718169 214821022 214718169 214821015
214748336 214826625
214839313 214839313
214826619 214821300 214826955
214826705 214826816 214826705 214821290 214705757
214509795 214539330
214820441 214594590
214687642 214748285
214835647 214835645
214829282 214821386 214708044
214555142 214555140
214684843 214743335 214819762 214819762 214819760
214829282 214819547 214819547 214587384 214819552 214819552
214821339 214551626
214820814 214746339 214539262
214744775 214769006 214842450
214821367 214584808 214718197
214552560 214552502
214545980 214545962
214839373 214684513
214826810 214826623 214684841 214827007
214826955 214820182 214820192 214820225 214709685 214829737
214826955 214826623 214664919 214826625 214826799 214826891 214676580 214691390 214537037 214819745
214718169 214821022
214840412 214706124
214838364 214838364
214820385 214819526
214832653 214832655 214832657 214832657 214717003 214717005 214716984 214717867
214821015 214819547
214708044 214648254 214832557 214648254 214832557 214648254 214648254
214717410 214717410
214837490 214837485
214716930 214716982 214717003
214835760 214839815 214587742
214684093 214684093 214684093 214684093
214839902 214820252 214644317
214832557 214832559 214832559 214832557 214821020 214718169 214821022 214819552 214718203 214821017 214833802 214821030
214581489 214602605 214680371 214581489 214680371
214532072 214826801 214826627 214826715 214826627 214684513 214826627 214684513 214712126
214835120 214839313
214509084 214539845 214509084 214509084 214639211 214645835 214538002 214538002
214587384 214832557
214827052 214543545
214717498 214821024 214567005 214567005
214716924 214717614
214833800 214833802
214826810 214826705 214835940
214839313 214827000 214826621 214826621 214826617 214826617 214821300 214821300 214826998 214826908 214826908 214821300 214827002 214753515 214826932 214826932 214662742 214698420 214574672 214554765 214690845 214716110 214819719 214819719 214717286 214819762 214819762 214819760 214819760 214826837 214826837 214826872 214826872 214826872 214826872 214826876 214826876 214837442 214821341 214753507 214748300 214548744 214548744 214537850 214717003 214691396 214670070 214832653 214716984 214832657 214840378 214668298 214639903 214629459 214629165 214629292 214629135 214629122 214629120 214629120 214629328 214629324 214544904 214544904 214676570 214676570 214676516 214696423 214696423 214668275 214639702 214676570 214676570 214629120 214629122 214629260 214629260 214629264 214629264 214629292 214629324 214629324 214638977 214638977 214819719 214835120 214629120 214744779 214744779 214744779 214820458 214820458 214744779 214826872 214826872
214820415 214820415
214586469 214696897 214712130
214576946 214576946
214826810 214820441 214829285 214820842
214718220 214821022 214826810 214821275 214821022
214820274 214820231 214584939
214551624 214586561
214512416 214587545
214554510 214821028 214832559 214832557
214691428 214691428 214691428 214691390 214691293 214836761
214645835 214509084 214645835
214832657 214717003 214554358 214717003 214717005 214717005 214717003 214832657 214717003 214717007 214717003 214716984 214717003 214582502 214672963 214582502 214587898
214821819 214827015 214760897 214601407 214577518 214746427 214826955
214820938 214556210
214551626 214551626
214684513 214716928 214832653 214716984
214682135 214683298 214683300 214826705 214587167
214714927 214523606 214714927 214517450 214714929 214518555 214639297 214639299 214516794
214821275 214826627 214826893 214826612
214819412 214716982
214827020 214827020 214821272 214821272 214827020 214821272 214821272 214827020 214827020
214706460 214821030 214706460 214701684 214701495
214540035 214517880
214826803 214826803 214821277 214821277 214821285 214826801
214535102 214819528 214819528
214829312 214774685 214837391 214828867 214700968 214700966 214678215 214652882
214567410 214567410
214819526 214819547
214826606 214826606 214837020 214837003 214837014 214714597 214596105
214547595 214539148 214678509 214644339
214708372 214708372 214596647 214843464 214843464 214694334 214694334 214629060 214840899 214842459 214840901 214646709 214840899 214708372 214840944 214691550 214691550 214694402 214711903 214694334 214694334 214572688 214572729 214753588 214753588 214596647 214583190 214596647 214837558 214716088 214820237 214820225 214820225
214711078 214711082
214535621 214821313
214708367 214820201 214829737 214709685 214536502
214672963 214672845 214672946 214821290 214672946
214826897 214826897 214833800 214833800 214833800 214833800
214839313 214839997 214839997 214839995
214826906 214819535
214561500 214561502
214532072 214826897
214717003 214717007 214676364 214676332 214676362
214573001 214573001
214691349 214691349 214691471 214691242
214712107 214711541
214819419 214580814
214587740 214587740 214587740 214587740 214536864 214664694 214821388 214612901 214536864
214826623 214826623 214826623 214826623
214748295 214748291
214826619 214826932 214826932
214641967 214718372
214557043 214648387 214648389
214744530 214744530
214821290 214821292
214821277 214821277
214840901 214842440 214835120
214839313 214839997 214839313 214840001 214839995
214834991 214827020
214579288 214668590 214826617 214677697 214680369 214821011 214534798 214716080 214832557 214746382 214745317 214745315 214651430 214586694 214832559 214572234 214572182
214748336 214819721 214748336 214717247 214819385
214819472 214839311 214839311 214534907 214584920 214583190 214826747
214556563 214821277 214556563
214821373 214821377 214821380
214820441 214737337
214832557 214832557 214832557 214832559 214832559 214832557 214832557 214821024 214821024 214821022 214821022
214582415 214582408 214582408 214582415 214582415
214601197 214840762
214826623 214826623
214837404 214837404 214837404
214677883 214827020 214821272
214601810 214536907 214601810 214601810 214601812 214613893 214508852 214826780 214826780 214601810
214753507 214753507 214753507 214753507 214753507 214753507 214753507
214533026 214533022
214821390 214718203 214821015 214821022 214821015 214718203 214718203
214829312 214829312 214613743
214684372 214613915 214684372 214684372 214684372
214833800 214843667 214838456
214705792 214839313
214839373 214839373
214821017 214820454 214684513 214840378 214829737 214820240 214709685 214820182 214761890 214669781 214832552 214716748
214840378 214557410
214827007 214826925 214827000 214716710 214716707 214716710 214563133 214563133 214827005 214827007 214834865 214827000 214827000 214826925 214827007 214826925 214706441 214821309 214821309 214821339 214821309 214821309
214637025 214636355
214835447 214835447
214827022 214827022
214612695 214612695 214672963 214717003
214684841 214684841
214700610 214644960
214820413 214826702 214839313 214821285 214821290 214826816 214585395
214579730 214509013
214537867 214738447 214579730 214509013 214596645 214509013 214596645
214684513 214684513
214672946 214821290 214672946 214510802 214510044 214672946 214510802 214672946
214684093 214708372 214708372 214708372 214684093
214821024 214664919
214800264 214706150
214582502 214836806 214840449
214821030 214821298 214630042
214821277 214839373 214839373
214826705 214826835 214711087 214638973 214819745 214716986 214716932
214584939 214584939
214644650 214650617 214664820 214644650 214650617
214821022 214821022
214821024 214819427 214668249 214819427 214668249 214668249 214668249 214718160 214718160 214821397
214827020 214706216
214821290 214585395 214826705
214716984 214832657 214716982 214716984
214791688 214819385 214748336 214744779
214743335 214748334 214753515
214509135 214832557 214718160
214744528 214744528 214717742
214532072 214532070
214710090 214710090
214684513 214839373 214684513
214819562 214819562
214819550 214718169 214821022 214821017 214821024 214819552 214572234 214819550
214839311 214843541 214843526
214840425 214600567
214587913 214586842 214587911
214835000 214532955 214532945
214826705 214826934
214826700 214826801
214820842 214821305
214821300 214551626
214652460 214652460 214564687 214564687 214557497 214557497
214832552 214743339 214832552
214820413 214536440
214711661 214711682
214717412 214717412 214701309 214701309 214718158 214572463 214748257 214748257
214509135 214509135
214587384 214561475
214579288 214826615
214819640 214819640
214820814 214820814
214683712 214683712 214701605 214701605 214682921
214651567 214651571
214603138 214827007 214601233 214714755 214690110
214743339 214569707
214684730 214684730
214839999 214829310
214829282 214819547
214586983 214840762
214820261 214820261 214820261
214821272 214821272 214821272 214821272 214821272 214827030 214820842 214820842 214709634 214833800 214833800
214585397 214839313 214843665 214585397
214842461 214691430 214840944 214826833 214691484 214840318
214826705 214821024
214716932 214581427 214639149 214718117 214690845 214711952 214714732 214716932 214716930 214716935 214716930 214716932 214716930 214716930 214716932 214716930 214544327 214838833 214838833 214710294 214554510 214516033 214712270 214516033 214677440 214516031 214709597 214712017
214579730 214579730
214551917 214551917 214551913 214551917 214551917 214551917 214551917 214551917 214551917 214551917 214551917 214551917
214551917 214551917 214551917
214643045 214643045 214546102 214829312 214684115 214839997 214746386 214546121
214820441 214839995
214551917 214551917
214832559 214819550 214819550 214821020 214587384
214821377 214821377
214717007 214716928 214832655 214716984 214832657 214832657 214717007 214832657 214832657
214545836 214545825
214841060 214841060
214826810 214839373 214600535 214839866 214600532 214596388 214596386
214685795 214577567 214640893 214640893 214587898
214580377 214580377
214585397 214553936
214833802 214587785
214837490 214837487 214837490 214838831 214821341 214586711 214640017
214835578 214536392 214833800 214833800
214826801 214826702
214826803 214532072 214820383
214539845 214539842 214539845 214539845 214587643
214835120 214821277
214839313 214839995 214839999 214840001 214839997 214839313
214532070 214820415 214820255
214820842 214706441
214684115 214833800 214833802 214587650 214535617 214535589
214838100 214691267 214833802 214833800 214836761
214601672 214601670
214687867 214586720 214539527
214827030 214827030 214711205
214826803 214820383
214828697 214828865 214587163 214701307 214644731 214687899 214644731 214696824 214696824 214644731
214826606 214554350 214828697 214828697 214828697 214828697
214718220 214819547 214718220
214826705 214826705 214826816 214826810 214532070
214532072 214839313 214839313 214839995 214839995 214839999 214839999 214839313 214636517 214565512 214565512
214821390 214819552 214712272
214664919 214664919
214642625 214642625 214643893 214746365 214829741
214718385 214601233 214819378 214819380
214717007 214717007
214820441 214820441
214602605 214712235
214708305 214839313 214839995 214839313 214586795
214586711 214687642 214586711 214586711
214839313 214839313 214717241 214717241 214717241
214821277 214821277
214832655 214832657 214716932
214644956 214532036
214685784 214840573 214532072 214685784 214840573 214532072 214685784 214840573 214532072
214639903 214629165
214694330 214694330
214717331 214826810 214839373 214546102 214829312 214821272
214535621 214820259
214718216 214712107
214820456 214699213 214706441
214711297 214589632 214589634 214589627 214589632 214826750
214716982 214717003 214717003
214695073 214695071 214695073 214695069 214717406 214695069 214717406 214695069
214523690 214692821 214508244 214508244 214508244 214526000 214526000 214507387
214839313 214839313 214839313
214587013 214832557 214717888 214832559
214712323 214552080 214552080 214552117 214552125
214718203 214821390
214821392 214820454 214820812 214708044
214819430 214819430 214819430 214819430 214717522 214609325 214609325 214826912 214684845
214826608 214826608 214826801 214826801
214718216 214748285 214718216 214718216 214748285 214718216 214826810
214839313 214839313 214582391
214820190 214820190 214820190 214820190 214820190 214820190 214820190 214820190 214820186 214711087 214711082 214711082 214711087 214711087 214711318 214684734 214820190 214820186 214820186 214820186 214820190 214820190 214820190 214711087 214819406 214718396 214684730 214684730 214820190 214684730 214820190 214711087 214711078 214711078 214684730 214711078 214711087 214711408 214820190 214684730 214718398
214753505 214753505
214744530 214744530
214748345 214748342 214748345 214553745 214553743
214591427 214821279 214829737
214702852 214699884
214533020 214821339 214821339
214539845 214744530 214744530 214744530 214744530 214744530 214744530 214744530 214744530 214744530 214744530
214676400 214546991 214551667 214579462 214552492
214587384 214551665 214551667 214546991 214603145 214514640 214514640 214579464 214552535 214579464
214826810 214833800 214826801
214821277 214821277
214748336 214748336
214716990 214716990
214821305 214821341
214552080 214552117
214533553 214819378 214819378 214839311 214839311 214839311
214826801 214826801
214826810 214716935 214716930
214839851 214839808 214844132 214838460
214826955 214826955 214826623 214826623 214826955 214826955 214826955 214819406 214711087
214826955 214826955 214826623 214826623 214826627 214826955
214826623 214826955
214677399 214677403 214639841 214668285 214544925
214561475 214567005 214558258 214581793 214581915
214574145 214574145
214744530 214601201 214538747
214821377 214821380 214820814 214838366
214821037 214704292
214717867 214717003
214838100 214838100
214537417 214672835
214545928 214545928
214840599 214839695
214685795 214709634
214821367 214832672 214821367 214821367
214585670 214585670 214585670 214585670
214561477 214821037 214711661 214567404 214567410
214821022 214821022
214829737 214829737
214530502 214530502 214695167
214640415 214640415
214698465 214698465 214698465 214698465
214826891 214826955
214687685 214840412 214826212 214642016
214546121 214546102
214826715 214718255
214827032 214827032 214717003 214717003 214716984 214832657
214594652 214537993 214594652
214820392 214832559
214550383 214581815
214827020 214821272
214601197 214601197
214820415 214686086 214645179 214546121 214702787 214702787
214573108 214573108
214587384 214718203
214829312 214829312
214821388 214821388
214638480 214551594
214820252 214717312 214820252
214821275 214746386 214601462 214746386 214601462 214587028 214717331
214829737 214829737
214826816 214826816 214826608 214826608 214821277 214821290 214821290 214826801 214691426 214664919 214664919 214687685 214536502 214826747 214712107 214838503
214601233 214612730
214839313 214839313 214839313 214839313
214819427 214821024
214820814 214658867
214832653 214840762
214667912 214584920 214826747
214826803 214826803 214826803 214691390 214691293 214539193 214821388 214821388 214539193 214826722 214538820 214589606 214538820 214538820
214697925 214697925 214697925 214697925
214711682 214544492
214546031 214546031
214819775 214819775
214746395 214832559
214820233 214820227 214584907
214839313 214839313 214839313
214532072 214532072 214532070
214717095 214717095
214826803 214821285 214826897 214826801
214601040 214601040 214601040 214601042
214702907 214718158 214701309
214832655 214832655 214716984 214717007
214645618 214574777
214532070 214684385 214552089
214716971 214716941
214716930 214716930 214716930 214716935 214832653 214832655 214832653 214832653
214748336 214821377
214718220 214821017
214709685 214709685 214820240 214820240 214706441 214706441
214748265 214549346 214553578 214553578 214549346 214708035 214708035 214821309 214821309 214551617 214821309 214821309
214821037 214539262 214539262
214586825 214613638
214821373 214821373 214821373 214748287 214821373 214821373 214821373 214821373 214577302 214577302 214642560 214642560
214843395 214839643
214702702 214601424
214827020 214827020 214821272 214821272 214821272 214821272 214827030 214827030
214826955 214574777
214820441 214586692 214829741 214820842 214820842
214826925 214826925 214826925 214826837 214826837
214582952 214582952
214572182 214572234 214821017 214819547 214821015 214718167 214821020 214819550
214644320 214644320
214511334 214821343 214511334 214821343 214800266 214511334
214841006 214841006
214826705 214826705 214826705
214837487 214837490 214837483 214837485 214717007
214718246 214711290
214596502 214596326
214826906 214826906 214826906 214826955 214826955 214826627 214826627 214800262 214709741 214709741 214819738 214819738 214819738
214826627 214826955
214716982 214716928 214826927
214826803 214839373
214821377 214821373
214586711 214716982 214716967 214717001
214716973 214716926
214580094 214596107 214580094 214596107 214596326 214596114
214839995 214840001 214839995
214821277 214821277 214826810 214709685 214706441 214706441 214709735
214748334 214717562
214531372 214531365 214531365
214833800 214833802 214587650 214833802 214826925 214826619
214710159 214691188 214688668 214541548
214586912 214586912
214710360 214710328 214678457 214678526 214692611 214697310 214587193 214697885 214537050 214697203 214697312 214697325 214697325 214697364 214646520 214844357 214821341
214586923 214630042 214556840 214826619
214829285 214829285
214819385 214717247 214709996
214743515 214580413
214716928 214716973
214826705 214835940
214840378 214840378 214839909
214826619 214826619
214636505 214829679 214664767 214601805 214539845 214829679 214539845
214702751 214712342
214829255 214829252
214710075 214829257 214710075 214710075
214594678 214594680 214594678
214508287 214571904 214545879
214717860 214580413 214652270 214580413
214826801 214556840
214545928 214545928 214545928 214545928 214545928
214545928 214545928 214545928 214545928 214545928 214545928 214545928
214829312 214829312
214835900 214838462
214826705 214826705 214585397
214587384 214829737
214821300 214753515 214821307
214710309 214691557 214691557 214691557 214840342 214843479 214691351 214843517 214843517 214840952 214840952 214690768 214843980 214843980 214843905 214843905 214840828 214840828 214843970 214843920 214843920 214843378 214843378 214691422 214840760
214738445 214738445 214537867 214511402
214821392 214820383
214826702 214586923
214821275 214601462 214546121 214686086
214601460 214601462
214826955 214826623
214701819 214701819
214548418 214548418 214826705
214826810 214826810 214826627 214826835 214718246 214711290 214695412 214711087 214819410 214826606
214510044 214672963
214840483 214840483 214840483 214840483 214840483 214840483
214826893 214572234
214601407 214826621 214556025 214675890 214564380 214826617
214601805 214601805
214718160 214821022 214819547 214561475
214821339 214821309
214691293 214691390
214716935 214716986
214716935 214716984
214821020 214819552 214819552 214684115 214546102 214840419 214827030 214746386 214746386 214829312 214706216 214601462 214746386
214718276 214591515
214717222 214717100 214702552 214661962
214821013 214547668 214674568 214547668
214531007 214538317 214714586 214707967 214695309
214819719 214821022
214821024 214718160 214718220 214832559 214699888
214827009 214820225
214821022 214821024
214826900 214826904 214717410
214826897 214826897
214832557 214832559 214819552 214821024
214531862 214531862
214553636 214553636
214586711 214821313 214821305 214821341 214821315 214672963
214546277 214708151 214588830
214545935 214545935 214716982 214716982 214826878
214531862 214531862
214839313 214677701 214704182
214595893 214838923
214826953 214832559 214717888 214836761
214539845 214539832
214829741 214551892 214551892 214551892
214538278 214552543 214552494 214552490 214552545 214514709 214552562 214552524 214514709 214552524 214552517 214552625 214552517 214552498 214552494 214552490 214552498 214552517
214826835 214826955 214684734 214684734 214711087 214820184
214821024 214829285
214586711 214821309 214551617 214551617 214584962
214828987 214828987 214558192 214558192 214826912 214826912 214826912 214826912
214534704 214687685
214613743 214586610
214718216 214827020 214702877
214716984 214716937 214832657 214716965 214716965
214820227 214820261 214584907 214820261
214821037 214820456 214576500
214538477 214707977 214538467 214826917
214826625 214826900 214554277
214685820 214819410 214819410
214536697 214586983 214586983 214586983
214821020 214821020
214842281 214842268 214842380 214840760
214574147 214580302 214680422
214840378 214839313
214744779 214748287 214744528 214706171 214744528 214717880 214717880 214706102 214819721 214819721 214717847 214712130 214819430 214819430 214820402 214601233 214556345 214826932 214800268 214587163 214690747 214576890 214576890 214826619 214826619 214819382 214748336
214512431 214509084 214601805
214609370 214609370
214601805 214539845 214601805 214664767 214829679
214836448 214601407
214698581 214698577 214698581 214698577 214698581 214698577 214698581 214698581
214839371 214684513 214684513
214718169 214821015
214586923 214826627
214826816 214826705 214826705 214826816 214536962
214821024 214718160
214826803 214716924
214509830 214510738 214509830
214682717 214682717
214821305 214821305 214826837 214826837 214551626 214551626
214535621 214536320 214535621 214535621 214535621
214820240 214712402 214826927 214712402
214551617 214612920
214509082 214645835
214612695 214702787 214840382 214587898 214714597 214840378 214676010 214651556 214651552 214651610 214677285 214652407 214651582 214639592 214638566 214591680 214668534 214638566 214638958 214651582 214652960 214544840 214545005 214544840 214545032 214717070 214544355 214545005 214600989
214691390 214691428
214826816 214826816
214712235 214581489
214843492 214691587
214709634 214826810
214821020 214718160
214826705 214826810 214532070 214819490
214686086 214746386
214838308 214711805
214582387 214535621 214820842
214551617 214612721 214586711 214586711 214821305 214821309 214551630 214821302 214533026 214533026
214832550 214832550 214832550 214832550 214832550 214832550 214832550 214832550
214821339 214821339 214821315
214826955 214826955 214826955 214826835
214839313 214839313
214587384 214587028
214551913 214551913
214540635 214540635
214683960 214546059 214546059
214819721 214819745
214646608 214576950 214821315 214821305 214586711 214612723 214612723 214827062
214691390 214691293
214829130 214547608 214829130 214829068 214829130 214829068 214539405 214829068 214712544 214712544 214712537 214712544 214712544 214829130 214829291
214551890 214551890 214551890
214557755 214630016 214573241 214557755
214556840 214820842 214716461
214821017 214826702 214826897
214691426 214691267 214826893
214717507 214826829 214819468 214716937 214716939 214550366 214791682 214711322 214669899 214669790 214595994 214712681 214712844 214826833 214709666 214581551 214712137 214696997 214819762 214743335 214602802 214819719 214554431 214668270 214707883 214717003 214819468 214716937
214839905 214819685 214702749 214839902 214839902
214702839 214702839 214702839
214701242 214826816 214826705 214826700
214639305 214509084 214537967
214840415 214821307 214774682
214539206 214589711
214819550 214718167 214819550 214821015
214575311 214638624 214820317 214575311 214552610 214552580 214716958 214716960 214530369 214642982 214578645 214836142 214682289
214826955 214826955
214744530 214821309 214744530 214560170
214821305 214821305
214826816 214826955
214509084 214582387
214539845 214639305 214639303 214512431 214826780 214829679 214601805 214539845
214833800 214833802 214587650 214835585 214833802
214687685 214840412 214840419 214840419 214840417 214840417 214840417
214609442 214712488 214842298 214842300 214712488
214586595 214586595
214836761 214836761 214836761 214836761 214587864 214587864 214550863 214550863 214536317 214536317 214587864
214691426 214826625 214826799
214532070 214532072
214820842 214685795 214826803
214821022 214821024 214718160
214820413 214703790 214613743
214826608 214826705
214826801 214826801 214826627 214687685 214826837 214826908 214717286 214826872 214826619 214826619 214826998 214826998 214680716 214667921 214820400 214601233 214716667 214819376 214819562 214819562
214821024 214821017 214821024
214829312 214829312 214826705
214826835 214826810
214842450 214842450
214725508 214725508 214725508 214725508 214725508 214820231
214832557 214717888
214696556 214580372
214819562 214819562
214819721 214819721 214717247 214717247 214725532 214725532 214717247
214832559 214674487 214712107 214712107 214838503 214508942 214540963 214546110
214826927 214698420
214716924 214716924
214842450 214840775
214832557 214832557
214559672 214705119 214821024 214829282
214826801 214826799
214821300 214753515 214690110 214744775
214826606 214826799
214584920 214819552 214819547 214819552
214705659 214560077 214560077 214644716 214705659 214717738 214531517 214644716
214819777 214826750
214837890 214820233 214828867
214840378 214820814 214587935 214587935 214587898 214644915 214835255 214587898 214712062
214678526 214678526 214678526 214678526 214678526 214678526 214678526 214678526
214821028 214718220 214832559 214832557
214695540 214695540
214639335 214639342 214639333 214639348 214639346
214715111 214651065
214703906 214687982 214821373 214821373 214821377 214821373 214821373
214548885 214709792 214746339
214711297 214585395 214826835 214819745 214827015 214586711 214821339 214821341 214821315
214820199 214676019
214821386 214821386
214696434 214602240 214700623
214601233 214601233 214821017 214821017 214601233
214509013 214509000 214696434
214587384 214587384 214711661 214711661 214567410 214556210 214556210
214826829 214826889
214602605 214581489 214712235
214696631 214696631
214821277 214826955 214821277
214820814 214820814
214827030 214717331
214594678 214594678 214594678 214587613 214594678
214688668 214691117 214691117
214587446 214640415
214819721 214836761
214717005 214717007
214832559 214821017 214819552 214572234 214699888 214691390 214691426 214691428 214821279 214716935 214716932
214821313 214537496 214717331
214677493 214677457
214556822 214508563 214838045 214725551
214826705 214826705
214712126 214674487
214555005 214668122
214717003 214717003
214832559 214718203
214821037 214821037
214535006 214535038 214535006 214535038 214840762 214840762
214602821 214594644 214684513 214684513 214839373 214613902 214613685 214613900 214613895 214613904 214838996 214839000 214838992 214596206 214835308
214838503 214838503
214826908 214826908 214820392 214820392 214674487 214826908 214821300 214821300 214694156 214676962 214819374 214826617 214556025 214564380 214554765 214640017 214716902 214651423 214709666 214695285 214819382 214582948 214555262 214640017 214820392 214820392
214820231 214820231
214586983 214586983 214840762 214840762 214840762
214585395 214833800 214839834
214540597 214540597
214821022 214718160 214820942
214602583 214833789 214572230
214820441 214821309 214551626 214551617 214510044 214600502 214820439 214836748 214836782 214717325
214821022 214718169
214714903 214718304 214714603
214558192 214827007 214834865 214826925 214827000
214826715 214826606 214826606 214826606 214826606
214826700 214826623
214716932 214716932 214716973 214716971 214716937 214716973 214716973
214826897 214691587
214532072 214821285 214821275 214840762 214584907
214826829 214826627 214821279
214836388 214744779
214826617 214826612 214826615 214717877 214826621 214586711 214821307 214821341
214704180 214704180
214840762 214586983 214840762 214508942 214695326 214538201
214706432 214668596 214554131 214820218 214551930 214583852 214551930 214557270 214551930 214557270 214840558 214564687 214583852
214819599 214532072
214544820 214544846 214544846
214826705 214826897 214585652
214557581 214557581 214587390 214725551
214774685 214827020
214512416 214537972
214718160 214821037
214717003 214716937
214551892 214652462 214551892
214821277 214820231 214820231 214821277 214821277
214819719 214819719
214534736 214534736 214534736 214534736 214534736 214534736 214712113 214696980 214717089 214717089
214836332 214836431 214836427
214717005 214716984 214832653 214832657 214716986 214716984
214587384 214832557
214509752 214509752
214826615 214826615 214826615 214554982 214826621 214826621 214826619 214826619 214826619 214826617 214826617 214826617 214826617 214826621 214826621 214640017 214826837
214829017 214658156 214539362 214543592 214828948 214829055 214829015 214829023 214829017 214829010 214828957 214828955 214828946 214828944 214828935 214828922 214828914 214828910 214828899 214828897 214543513 214828895
214821292 214826799
214562021 214562021
214840415 214840417 214840412 214642031
214821024 214826608 214826608 214826801
214827022 214582387 214691484 214843916 214842433 214842410 214843980 214843903 214840877 214691415 214691338 214691336 214582387 214820246
214532072 214532070 214826810 214532072
214555537 214718203 214555537
214587898 214587898
214826803 214711297 214826801
214820450 214508942 214718272 214508942 214718270 214600132 214600134 214600132 214600132 214600132 214600132 214600132
214580094 214557530
214826953 214819526
214686086 214686086 214686086 214685795
214826810 214539845 214829679 214636505 214601805 214826780 214536868 214539825
214702828 214702826 214702824 214702826
214601040 214717003 214717003 214716984
214601042 214601040
214718409 214537899
214602579 214601668 214613645 214841006
214821272 214508563
214601040 214601042 214601040 214717007
214717003 214716984 214819408
214826705 214826816 214826705
def batch(reader, batch_size,sort_group_size,drop_last=False):
"""
Create a batched reader.
:param reader: the data reader to read from.
:type reader: callable
:param batch_size: size of each mini-batch
:type batch_size: int
:param drop_last: drop the last batch, if the size of last batch is not equal to batch_size.
:type drop_last: bool
:return: the batched reader.
:rtype: callable
"""
def batch_reader():
r = reader()
b = []
for instance in r:
b.append(instance)
if len(b) == sort_group_size:
sortl=sorted(b, key=lambda x:len(x[0]), reverse=True)
b = []
c = []
for sort_i in sortl:
c.append(sort_i)
if(len(c) == batch_size):
yield c
c = []
if drop_last == False and len(b) != 0:
sortl=sorted(b, key=lambda x:len(x[0]), reverse=True)
c = []
for sort_i in sortl:
c.append(sort_i)
if(len(c) == batch_size):
yield c
c = []
# Batch size check
batch_size = int(batch_size)
if batch_size <= 0:
raise ValueError("batch_size should be a positive integeral value, "
"but got batch_size={}".format(batch_size))
return batch_reader
import os
import sys
import time
import six
import numpy as np
import math
import argparse
import paddle.fluid as fluid
import paddle
import time
import utils
SEED = 102
def parse_args():
parser = argparse.ArgumentParser("gru4rec benchmark.")
parser.add_argument(
'--enable_ce',
action='store_true',
help='If set, run \
the task with continuous evaluation logs.')
parser.add_argument(
'--num_devices',
type=int,
default=1,
help='Number of GPU devices')
args = parser.parse_args()
return args
def network(src, dst, vocab_size, hid_size, init_low_bound, init_high_bound):
""" network definition """
emb_lr_x = 10.0
gru_lr_x = 1.0
fc_lr_x = 1.0
emb = fluid.layers.embedding(
input=src,
size=[vocab_size, hid_size],
param_attr=fluid.ParamAttr(
initializer=fluid.initializer.Uniform(
low=init_low_bound, high=init_high_bound),
learning_rate=emb_lr_x),
is_sparse=True)
fc0 = fluid.layers.fc(input=emb,
size=hid_size * 3,
param_attr=fluid.ParamAttr(
initializer=fluid.initializer.Uniform(
low=init_low_bound, high=init_high_bound),
learning_rate=gru_lr_x))
gru_h0 = fluid.layers.dynamic_gru(
input=fc0,
size=hid_size,
param_attr=fluid.ParamAttr(
initializer=fluid.initializer.Uniform(
low=init_low_bound, high=init_high_bound),
learning_rate=gru_lr_x))
fc = fluid.layers.fc(input=gru_h0,
size=vocab_size,
act='softmax',
param_attr=fluid.ParamAttr(
initializer=fluid.initializer.Uniform(
low=init_low_bound, high=init_high_bound),
learning_rate=fc_lr_x))
cost = fluid.layers.cross_entropy(input=fc, label=dst)
acc = fluid.layers.accuracy(input=fc, label=dst, k=20)
return cost, acc
def train(train_reader,
vocab,
network,
hid_size,
base_lr,
batch_size,
pass_num,
use_cuda,
parallel,
model_dir,
init_low_bound=-0.04,
init_high_bound=0.04):
""" train network """
args = parse_args()
if args.enable_ce:
# random seed must set before configuring the network.
fluid.default_startup_program().random_seed = SEED
vocab_size = len(vocab)
# Input data
src_wordseq = fluid.layers.data(
name="src_wordseq", shape=[1], dtype="int64", lod_level=1)
dst_wordseq = fluid.layers.data(
name="dst_wordseq", shape=[1], dtype="int64", lod_level=1)
# Train program
avg_cost = None
cost, acc = network(src_wordseq, dst_wordseq,
vocab_size,hid_size, init_low_bound, init_high_bound)
avg_cost = fluid.layers.mean(x=cost)
# Optimization to minimize lost
sgd_optimizer = fluid.optimizer.Adagrad(learning_rate=base_lr)
sgd_optimizer.minimize(avg_cost)
# Initialize executor
place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
train_exe = fluid.ParallelExecutor(use_cuda=True, loss_name=avg_cost.name)
total_time = 0.0
fetch_list = [avg_cost.name]
for pass_idx in six.moves.xrange(pass_num):
epoch_idx = pass_idx + 1
print "epoch_%d start" % epoch_idx
t0 = time.time()
i = 0
newest_ppl = 0
for data in train_reader():
i += 1
lod_src_wordseq = utils.to_lodtensor(
[dat[0] for dat in data], place)
lod_dst_wordseq = utils.to_lodtensor(
[dat[1] for dat in data], place)
ret_avg_cost = train_exe.run(feed={
"src_wordseq": lod_src_wordseq,
"dst_wordseq": lod_dst_wordseq
},
fetch_list=fetch_list)
avg_ppl = np.exp(ret_avg_cost[0])
newest_ppl = np.mean(avg_ppl)
if i % 100 == 0:
print "step:%d ppl:%.3f" % (i, newest_ppl)
t1 = time.time()
total_time += t1 - t0
print "epoch:%d num_steps:%d time_cost(s):%f" % (epoch_idx, i,
total_time / epoch_idx)
if pass_idx == pass_num - 1 and args.enable_ce:
#Note: The following logs are special for CE monitoring.
#Other situations do not need to care about these logs.
gpu_num = get_cards(args.enable_ce)
if gpu_num == 1:
print("kpis rsc15_pass_duration %s" %
(total_time / epoch_idx))
print("kpis rsc15_avg_ppl %s" % newest_ppl)
else:
print("kpis rsc15_pass_duration_card%s %s" % \
(gpu_num, total_time / epoch_idx))
print("kpis rsc15_avg_ppl_card%s %s" %
(gpu_num, newest_ppl))
save_dir = "%s/epoch_%d" % (model_dir, epoch_idx)
feed_var_names = ["src_wordseq", "dst_wordseq"]
fetch_vars = [avg_cost, acc]
fluid.io.save_inference_model(save_dir, feed_var_names, fetch_vars, exe)
print("model saved in %s" % save_dir)
print("finish training")
def get_cards(args):
if args.enable_ce:
cards = os.environ.get('CUDA_VISIBLE_DEVICES')
num = len(cards.split(","))
return num
else:
return args.num_devices
def train_net():
""" do training """
train_file="small_train.txt";
test_file="small_test.txt"
batch_size =5
args = parse_args()
vocab, train_reader, test_reader = utils.prepare_data(
train_file, test_file,batch_size=batch_size * get_cards(args),\
buffer_size=1000, word_freq_threshold=0)
train(
train_reader=train_reader,
vocab=vocab,
network=network,
hid_size=100,
base_lr=0.01,
batch_size=batch_size,
pass_num=10,
use_cuda=True,
parallel=True,
model_dir="model_recall20",
init_low_bound=-0.1,
init_high_bound=0.1)
if __name__ == "__main__":
train_net()
import sys
import time
import numpy as np
import paddle.fluid as fluid
import paddle
import data_preprocess as dp
import sort_batch as sortb
def to_lodtensor(data, place):
""" convert to LODtensor """
seq_lens = [len(seq) for seq in data]
cur_len = 0
lod = [cur_len]
for l in seq_lens:
cur_len += l
lod.append(cur_len)
flattened_data = np.concatenate(data, axis=0).astype("int64")
flattened_data = flattened_data.reshape([len(flattened_data), 1])
res = fluid.LoDTensor()
res.set(flattened_data, place)
res.set_lod([lod])
return res
def prepare_data(train_filename, test_filename, batch_size,
buffer_size=1000, word_freq_threshold=0, enable_ce=False):
""" prepare the English Pann Treebank (PTB) data """
print("start constuct word dict")
vocab = dp.build_dict(word_freq_threshold,train_filename,test_filename)
print("construct word dict done\n")
if enable_ce:
train_reader = paddle.batch(
dp.train(train_filename,
vocab,
buffer_size,
data_type=dp.DataType.SEQ),
batch_size)
else:
train_reader = sortb.batch(
paddle.reader.shuffle(
dp.train(train_filename,
vocab,
buffer_size,
data_type=dp.DataType.SEQ),
buf_size=buffer_size),
batch_size,batch_size*20)
test_reader = sortb.batch(
dp.test(test_filename,
vocab, buffer_size, data_type=dp.DataType.SEQ),
batch_size,batch_size*20)
return vocab, train_reader, test_reader
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册