End of Sprint 5
-
Upload
dmwork -
Category
Technology
-
view
394 -
download
24
Transcript of End of Sprint 5
Collective Inteligence
Enginering
Not Bigger Research Picture (Tom)
Progress
Findings
Proposal
Progress
Reading.
Progress
Investigate Compute Problem.
Progress
Investigate Compute Problem.
Pearson example.
Progress
Investigate Compute Problem.
Pearson example.
Progress
Investigate Compute Problem.
Pearson example.
Store all comparisons = 1/2 N^2
Progress
Investigate Scale
N films
M people
M[(N(N-1)/2] time the algorithm cost
Pearson:
Numerator 2 , 1 *, 1+
Denominator 2 -, 2 ^2, 2 +
M(N) time to compute averages
Can be done on ingest in M(N) time
Progress
Tractible?
A typical P4 - theoretical max of 20-40 G FLOPs,
With L2cach bandwidth, supporting instructions etc. a max of 3-7 G Flop is more realistic. (my further benchmarking show 7GFlop on a dual core centrino)
What could we expect from various technologies
Matrix multiplication is a good estimate.....
Progress
41 mins
17 mins
8 mins
Progress
40 Seconds
Progress
Genial MFlops
Which correlate well with: http://www.ient.rwth-aachen.de/~laurent/genial/benchmark_gemm_4T.html
More investigation details at: http://jira.talis.com/browse/COL-5
Progress
Computation
a 1M x 1M dense matrix multiply results in at least 1M ^ 3 FLOP's = 1E18 = 1 exaflop.
On a single P4 cpu this would take 1E18 / 7E9 = 142E6 seconds or 1653 days.
So even on a matrix 100,000 a theoretical time of 1.65 days.
Of course Comparisons are this
Megaflop 10 6gigaflop 10 9teraflop 10 12petaflop 10 15exaflop 10 18zettaflop 10 21yottaflop 10 24
Progress
Realisation.
Huge compute problem
1M matrix 1650 days
Paralelise?
16.5 days on 100 nodes
1.65 days on 1000 nodes
10M matrix 1,650,000 days
Paralelise?
16,500 days on 100 nodes
1,650 days on 1000 nodes
165 days on 10,000 nodes
Progress
Brute force
IBM's US$133M Roadrunner sustaining over 1petaflops
12,960 IBM PowerXCell 8i CPUs and 6,480 AMD Opteron dual-core processors
PowerXCell 32 GFLOPS (similar to GPU's)
10M matrix = 1000 seconds (100M = 11.6 Days)
Progress
Brute force
Folding@Home (free!) is reached over 4.1 PFLOPS
10M matrix = 25 seconds
ATI Radeon HD 4870 X2 2.4 Teraflops
500 * $500 + 250 *$1000 (each backplane) = $500,000 (331,665) for 1 PFLOP
Progress
Optimisations
Intuitively sparse - Ignore Nulls? How sparse?
True Pearson for linear algebra requires zeros, but Nulls?
Depends on data generally yes
I.e three people A, B, C - A has seen no films in common with B or C
A has seen 10 films, B 5 and C 15
Pearson numerator for B would be 15 and c -25
So C is less similar to A than B is.
So can ignore nulls - tfft!
Progress
600 Elsevier Full Text Articles.
Single core running C++
processes 20 articles / 80,000 terms per second.
Computations way faster than dense matrix.
Only 600 articles 150,000 unique terms.
A little distraction...
Progress
Progress
(from van Rijsbergen, 1979) The most frequent wordsare not the most descriptive
More Optimisation
Word Count (LSA) Characteristics
Be carefull, the lower discriminatory words can provide good information...
(and serendipity)
Progress
Progress
How Sparse?
Term Document Count from 2.18 million DBPedia Abstracts
Progress
Distraction....
Some Least Popular (stemmed) 3 docs each
Accretionari - an increase in a beneficiary's share in an estate
Accordiana - a musical radio series which was heard on CBS in 1934
Accokeek - Located in the southwest corner of Prince George's County
Nazarbayev - President of Kazakhstan
The Most Popular
15938 year
12476 season
11410 state
10758 world
10722 name
Serendipity
Progress
Very Sparse
Turns out to be Zipf Mandelbrot distribution.
[1] G. K. Zipf, Human Behavior and the Principle of Least Effort. (Cam- bridge, Mass., 1949; Addison-; Wesley, 1965).
[2] B. Mandelbrot, An informational theory of the statistical structure of language, in Communication Theory, ed. Willis Jackson. (Better- worths, 1953).
Word Count is .0025% dense
Ignore Null for huge optimisation.
40,000 x less compute
(using uniform density assumption)
Zipf-Mandelbrot has the form:
y = P1/(x+P2)^P3.
Progress
DBPedia words follow Zipf-Mandelbrot
Zoomed in chunk of DBPedia word count
y = P1/(x+P2)^P3
best fit regression (red curve)
with factors
P1 = 874150
P2 = 60.0000
P3 = 1.01000
Progress
Calculate Comparisons.
2.18 million Abstracts 1.3M unique terms.
Fits in 2G ram - (1.3M*2.18M*.000025 * 21 = 1.5G ) (as it is .0025% dense each entry is 21 bytes)
Uniform density assumption
Comparisons computable in few minutes
Not storeable in RAM (3.6 Tbytes!)
Big underestimate
(Stopped the run after 4 hours)
Stored random 100 article sample, and comparing with all 2M others. (0.2Gb) to allow intuitative QA
Progress
Extrapolating Compute Times.
Not 40,000x less compute (.0025% dense)
Word Count is .0025% dense - 40,000 x less compute
Top 1000 most commonly occurring terms the density is 0.78%
Not 128x less (.78% dense)
So use square of area under curve
= Integral of Zipf Mandelbrot Squared
Roughly a power law.
y = (x^P)/N
Progress
DBPedia Abstracs Ops (not including algorithm cost)
Regression using simple power law (P = 2.1 N = 1E0.73)
Progress
Extrapolating Compute Times.
2 Million abstracts
Square of Integral of Zipf Mandelbrot
Predicts calculable in 5.42 Hours
Assuming all in RAM.
But writing Gigs to disk big overhead.
(Not run this yet to prove)
Progress
Loans Data Ops (not including algorithm cost)(proving power law linear regression prediction)
Regression using simple power law (P = 3.5 N = 1E10.15)
Progress
Loans Data
Hereford Libraries.
C++ In memory 'super fast hash'
Processed 19M loans in 1min 20sec.
Producing 269,000 unique borrower and 491,000 unique books.
8 Million unique loan events
Progress
Loans per Individual Nice Zipf Mandelbrot curve
Progress
Zipf Mandelbrot Good Assumption?
Most (all large complex systems?) data that we are likely to process will follow a Zipf-Mandlebrot model.
K. Silagadze shows [1] that these comply...
Clickstreams
Page-rank (Linkage/Centrality)
Citations
Other long tail interactions.
[1]Z. K. Silagadze [physics.soc-ph] 26 Jan 1999 Citations and the Zipf-Mandelbrots law - Budker Institute of Nuclear Physics, 630 090, Novosibirsk, Russia ing.
Findings
Cant Store All Comparisons
50 Tb for 10M matrix ( N^2) for triangle matrix.
Store only meaningfull? Thld = n or f.
Can compute All 2M (squared) Comparisons
In 6 hours (1 core).
Cant Compute 1 Billion Comparisons
287 years (7 days on 20,000 cores 10Billion?).
Zipf Mandelbrot Curve is Usefull.
Can store All(?) raw metrics
n=count - fixedf=factor - Z-M
Findings
Zipf Mandelbrot Curve is Usefull.
Head
Big proportion of compute
Large M1 M2 intersection.
Low discrimination
Body
Good info
Medium compute
Tail
Specialist
Trivial or no compute
Findings
Zipf Mandelbrot Curve is Usefull.
Allows us to make optimisations
In reducing the y axis (and x a bit)
Chop the head off.
Body
Dimensionality reduction
Tail
Chop the tail off
Or Dimensionality reduction
X axis = N^2, Y axis = M
Findings
What about storing meaningfull comparisons.
Solves storage problem
Requires repeated compute problem
Deltas, could affect whole set
Will affect a chunk of the set
Could trade off timely accuracy with batch processing.
Proposal
Store raw curve
Sparse Strorage Bigtable like
Hbase, Hypertable, etc
Unloads indexing and lookup to nodes.
Calculate on the fly
Two indeces Books people and People books
Not 1/2N^2 just 1* Intersect (* M)
Tail Retrieval problem M~0 Intersect~0.
Body Some retrieval and compute.
Head Big retrieval and compute big M big intersect.
Proposal
Pre Compute Head
Store top n
Store any that take more than .5 seconds
Zipf-Mandelbrot retrieval only problem
Dynamic finding them is linear
Store as a cache only when requested?
Depends on acceptible delay?
This Hybrid Scales Better.
Better than Storing all or Computnig all
Proposal
It doesn't scale indefinately.
* scale by 10, * nodes by 100
Dimensionality reduction will HAVE to kick in.
This aproach allows that, but at bigger scles than most
Consider severing head and tail as early aproach.
Only optimised for individual requests.
Given this article find the 10 next similar
What about...Given this corpus find the 100 most similar things
Then set n = infinity (or f=0) and the service will tell you how many days to come back for your results
Proposal
Experimentation
Used Hbase, HDFS, Hadoop
Not using Hadoop yet but is good fit for data ingest
Hadoop not v efficient for comparison but doable.
Used Loan data and binary pearson
Ignoring nulls (and sigma) so counts only.
Quick demo
Proposal
Next Steps
Prove this aproach
Performance Testing.
Hbase over n nodes (perf lab, poss then EC2?).
Timing retrieval vs compute
Good logging
Configurable variables
Multiple 'stores' (data sets).
8M loans now 80M?
Hadoop the ingest if just to save time during trials
OpsPredicted Ops
140177643736920282.7204039
2135545534601664907107.6301639
317842229994162169851509.672014
4202901127390308266375731.97562
5247103441119866530973764.725377
6279949812720790821819083.372186
733161815943973281486734211.08415
841895835332021363369742434.19775
945377145567594944455829660.29513
1049114058085647025877850970.94164
111.#NAN9842678040
121.#NAN1.#NAN0
Loans
11179
21176
31176
41175
51169
61167
71157
81154
91136
101127
111121
121112
131111
141110
151109
161109
171108
181101
191095
201088
211065
221064
231055
241042
251042
261039
271039
281036
291033
301015
311014
321011
331007
34993
35991
36983
37982
38976
39964
40954
41952
42951
43950
44947
45945
46945
47944
48933
49922
50921
51916
52905
53904
54897
55895
56889
57885
58879
59876
60876
61864
62863
63861
64858
65853
66848
67848
68845
69842
70834
71831
72828
73824
74821
75816
76813
77812
78796
79796
80795
81794
82794
83791
84790
85786
86772
87761
88758
89753
90751
91747
92745
93742
94740
95740
96740
97738
98737
99737
100735
101731
102726
103724
104723
105723
106721
107719
108717
109716
110715
111714
112712
113709
114708
115707
116707
117704
118701
119691
120690
121683
122680
123679
124677
125677
126673
127673
128672
129671
130668
131667
132666
133665
134664
135661
136660
137660
138659
139655
140654
141654
142654
143650
144648
145648
146647
147647
148647
149645
150644
151642
152642
153640
154639
155637
156636
157633
158631
159627
160627
161625
162624
163623
164622
165622
166620
167620
168618
169618
170616
171615
172614
173614
174614
175613
176613
177612
178611
179609
180609
181607
182606
183606
184605
185605
186604
187604
188604
189603
190602
191602
192601
193600
194598
195598
196596
197594
198594
199591
200591
201588
202587
203586
204586
205586
206586
207585
208585
209582
210582
211582
212581
213581
214580
215580
216579
217579
218578
219578
220578
221574
222574
223574
224571
225571
226569
227564
228563
229563
230563
231563
232562
233559
234558
235557
236557
237557
238556
239554
240554
241554
242553
243553
244553
245552
246551
247551
248551
249550
250549
251549
252549
253549
254548
255548
256547
257547
258546
259546
260544
261544
262542
263542
264541
265541
266541
267540
268540
269540
270540
271540
272539
273537
274535
275534
276533
277532
278532
279530
280530
281529
282529
283528
284528
285527
286527
287526
288526
289525
290525
291525
292524
293524
294524
295523
296523
297522
298522
299521
300521
301521
302520
303519
304519
305519
306519
307517
308517
309516
310516
311516
312515
313515
314515
315515
316514
317513
318512
319512
320512
321510
322510
323509
324509
325509
326508
327508
328507
329507
330506
331506
332506
333505
334505
335504
336503
337502
338502
339501
340500
341500
342500
343500
344500
345500
346499
347498
348498
349498
350498
351498
352497
353497
354496
355496
356495
357495
358495
359495
360495
361494
362494
363494
364493
365493
366492
367492
368492
369491
370491
371490
372490
373490
374490
375490
376490
377489
378489
379489
380489
381488
382488
383488
384488
385487
386487
387487
388487
389487
390487
391486
392486
393486
394486
395486
396486
397485
398485
399485
400484
401483
402483
403483
404482
405482
406482
407482
408481
409480
410480
411480
412478
413478
414478
415478
416478
417477
418477
419477
420477
421477
422477
423476
424476
425475
426475
427475
428475
429474
430474
431474
432473
433473
434472
435471
436471
437471
438471
439470
440470
441470
442469
443469
444468
445468
446468
447467
448467
449467
450466
451466
452466
453466
454466
455465
456465
457464
458464
459464
460463
461463
462463
463462
464462
465462
466462
467462
468462
469461
470461
471461
472461
473460
474460
475460
476460
477459
478459
479459
480459
481459
482459
483458
484458
485458
486458
487457
488457
489457
490457
491457
492457
493456
494456
495456
496455
497455
498455
499455
500455
501454
502454
503454
504454
505454
506454
507453
508453
509453
510453
511452
512452
513452
514452
515452
516452
517452
518452
519451
520451
521451
522451
523451
524451
525451
526451
527451
528450
529450
530450
531450
532450
533450
534450
535450
536449
537449
538449
539449
540449
541449
542448
543448
544448
545448
546448
547447
548447
549447
550447
551447
552446
553446
554446
555446
556445
557445
558445
559445
560444
561444
562444
563444
564444
565443
566443
567443
568443
569442
570442
571442
572442
573441
574441
575441
576441
577441
578441
579441
580440
581440
582440
583440
584439
585439
586439
587439
588439
589439
590439
591439
592439
593438
594438
595438
596438
597438
598438
599438
600438
601437
602437
603437
604437
605437
606437
607437
608436
609436
610436
611436
612436
613436
614436
615435
616435
617435
618435
619435
620435
621435
622434
623434
624434
625434
626434
627434
628434
629434
630433
631433
632433
633433
634433
635433
636433
637433
638433
639433
640432
641432
642432
643431
644431
645431
646431
647430
648430
649430
650429
651429
652429
653428
654428
655428
656428
657428
658428
659428
660428
661427
662427
663427
664427
665427
666427
667427
668427
669426
670426
671426
672426
673426
674426
675426
676425
677425
678425
679425
680425
681425
682425
683425
684424
685424
686424
687424
688424
689424
690424
691424
692424
693424
694424
695424
696423
697423
698423
699422
700422
701422
702422
703422
704421
705421
706421
707421
708421
709421
710421
711420
712420
713420
714420
715420
716420
717419
718419
719419
720419
721419
722419
723419
724418
725418
726418
727418
728418
729417
730417
731417
732417
733417
734417
735416
736416
737416
738416
739416
740416
741416
742415
743415
744415
745414
746414
747414
748413
749413
750413
751413
752413
753413
754413
755413
756412
757412
758412
759412
760411
761411
762411
763411
764411
765411
766411
767411
768411
769411
770410
771410
772410
773409
774409
775409
776409
777408
778408
779408
780408
781408
782408
783407
784407
785407
786407
787407
788407
789406
790406
791406
792406
793406
794405
795405
796405
797405
798404
799404
800404
801404
802404
803404
804404
805404
806404
807404
808403
809403
810403
811403
812403
813403
814403
815403
816403
817403
818402
819402
820402
821402
822402
823402
824402
825402
826402
827402
828401
829401
830401
831401
832401
833401
834401
835400
836400
837400
838400
839400
840400
841400
842400
843399
844399
845399
846399
847399
848399
849399
850399
851399
852399
853398
854398
855398
856398
857398
858398
859398
860398
861398
862397
863397
864397
865397
866397
867397
868397
869397
870397
871397
872397
873396
874396
875396
876396
877396
878396
879396
880395
881395
882395
883395
884394
885394
886393
887393
888393
889393
890393
891393
892392
893392
894392
895392
896392
897392
898392
899392
900392
901392
902392
903392
904391
905391
906391
907391
908391
909391
910391
911391
912390
913390
914389
915389
916389
917389
918389
919389
920389
921389
922388
923388
924388
925388
926388
927387
928387
929387
930387
931387
932387
933387
934387
935387
936387
937386
938386
939386
940386
941386
942386
943386
944386
945386
946385
947385
948385
949385
950385
951385
952385
953385
954385
955385
956384
957384
958384
959384
960384
961384
962384
963384
964383
965383
966383
967383
968383
969383
970383
971383
972383
973383
974382
975382
976382
977382
978382
979382
980382
981382
982381
983381
984381
985381
986381
987381
988381
989381
990381
991381
992381
993381
994381
995381
996380
997380
998380
999380
1000380
1001380
1002380
1003380
1004379
1005379
1006379
1007379
1008379
1009379
1010379
1011379
1012379
1013379
1014378
1015378
1016378
1017378
1018378
1019378
1020378
1021378
1022378
1023378
1024378
1025377
1026377
1027377
1028377
1029377
1030377
1031377
1032377
1033377
1034376
1035376
1036376
1037376
1038376
1039376
1040376
1041375
1042375
1043375
1044375
1045375
1046375
1047375
1048374
1049374
1050374
1051374
1052374
1053374
1054374
1055373
1056373
1057372
1058372
1059372
1060372
1061372
1062372
1063372
1064371
1065371
1066371
1067371
1068370
1069370
1070370
1071369
1072369
1073369
1074369
1075369
1076369
1077369
1078368
1079368
1080368
1081368
1082368
1083368
1084368
1085368
1086367
1087367
1088367
1089367
1090367
1091367
1092367
1093367
1094367
1095367
1096367
1097367
1098367
1099366
1100366
1101366
1102366
1103366
1104366
1105366
1106366
1107366
1108366
1109365
1110365
1111365
1112365
1113365
1114365
1115365
1116365
1117365
1118365
1119365
1120365
1121365
1122365
1123365
1124364
1125364
1126364
1127364
1128364
1129364
1130364
1131364
1132364
1133364
1134364
1135364
1136363
1137363
1138363
1139363
1140363
1141363
1142363
1143363
1144362
1145362
1146362
1147362
1148361
1149361
1150361
1151361
1152361
1153361
1154361
1155361
1156361
1157360
1158360
1159360
1160360
1161360
1162360
1163360
1164360
1165360
1166360
1167360
1168359
1169359
1170359
1171359
1172359
1173359
1174359
1175359
1176359
1177359
1178359
1179358
1180358
1181358
1182358
1183358
1184358
1185358
1186358
1187358
1188358
1189357
1190357
1191357
1192357
1193357
1194357
1195357
1196357
1197357
1198357
1199357
1200357
1201357
1202357
1203357
1204356
1205356
1206356
1207356
1208356
1209356
1210356
1211356
1212356
1213356
1214356
1215356
1216356
1217356
1218355
1219355
1220355
1221355
1222355
1223355
1224355
1225355
1226355
1227355
1228355
1229355
1230355
1231354
1232354
1233354
1234354
1235354
1236353
1237353
1238353
1239353
1240353
1241353
1242353
1243353
1244353
1245353
1246353
1247353
1248353
1249353
1250353
1251353
1252352
1253352
1254352
1255352
1256352
1257352
1258352
1259352
1260352
1261352
1262352
1263352
1264352
1265352
1266352
1267351
1268351
1269351
1270351
1271351
1272351
1273351
1274351
1275351
1276351
1277350
1278350
1279350
1280350
1281350
1282350
1283350
1284350
1285350
1286350
1287350
1288349
1289349
1290349
1291349
1292349
1293349
1294349
1295349
1296349
1297348
1298348
1299348
1300348
1301348
1302348
1303348
1304348
1305348
1306348
1307348
1308348
1309348
1310348
1311347
1312347
1313347
1314347
1315347
1316347
1317347
1318347
1319347
1320347
1321347
1322347
1323347
1324346
1325346
1326346
1327346
1328346
1329346
1330346
1331346
1332346
1333346
1334346
1335346
1336346
1337346
1338345
1339345
1340345
1341345
1342345
1343345
1344345
1345345
1346345
1347345
1348345
1349345
1350344
1351344
1352344
1353344
1354344
1355344
1356344
1357344
1358344
1359344
1360344
1361343
1362343
1363343
1364343
1365343
1366343
1367343
1368343
1369343
1370343
1371343
1372343
1373342
1374342
1375342
1376342
1377342
1378342
1379342
1380342
1381342
1382342
1383342
1384342
1385342
1386342
1387341
1388341
1389341
1390341
1391341
1392341
1393341
1394341
1395341
1396341
1397341
1398341
1399341
1400340
1401340
1402340
1403340
1404340
1405340
1406340
1407340
1408340
1409340
1410340
1411340
1412340
1413340
1414340
1415340
1416339
1417339
1418339
1419339
1420339
1421339
1422339
1423339
1424339
1425339
1426339
1427339
1428339
1429339
1430339
1431338
1432338
1433338
1434338
1435338
1436338
1437338
1438338
1439338
1440338
1441338
1442338
1443338
1444338
1445338
1446338
1447337
1448337
1449337
1450337
1451337
1452337
1453337
1454337
1455337
1456337
1457337
1458337
1459337
1460336
1461336
1462336
1463336
1464336
1465336
1466336
1467336
1468336
1469335
1470335
1471335
1472335
1473335
1474335
1475335
1476335
1477335
1478334
1479334
1480334
1481334
1482334
1483334
1484334
1485334
1486334
1487334
1488334
1489334
1490334
1491333
1492333
1493333
1494333
1495333
1496333
1497333
1498333
1499333
1500333
1501333
1502333
1503333
1504333
1505333
1506333
1507333
1508333
1509333
1510332
1511332
1512332
1513332
1514332
1515332
1516332
1517332
1518332
1519332
1520332
1521332
1522332
1523332
1524332
1525332
1526332
1527331
1528331
1529331
1530331
1531331
1532331
1533331
1534331
1535331
1536331
1537331
1538331
1539331
1540331
1541331
1542331
1543331
1544331
1545330
1546330
1547330
1548330
1549330
1550330
1551330
1552330
1553330
1554330
1555330
1556330
1557330
1558330
1559330
1560330
1561330
1562329
1563329
1564329
1565329
1566329
1567329
1568329
1569329
1570329
1571329
1572329
1573329
1574329
1575329
1576329
1577329
1578329
1579329
1580328
1581328
1582328
1583328
1584328
1585328
1586328
1587328
1588328
1589328
1590327
1591327
1592327
1593327
1594327
1595327
1596327
1597327
1598327
1599326
1600326
1601326
1602326
1603326
1604326
1605326
1606326
1607326
1608326
1609326
1610326
1611326
1612326
1613326
1614326
1615325
1616325
1617325
1618325
1619325
1620325
1621325
1622325
1623325
1624325
1625325
1626325
1627324
1628324
1629324
1630324
1631324
1632324
1633324
1634324
1635323
1636323
1637323
1638323
1639323
1640323
1641323
1642323
1643323
1644323
1645323
1646323
1647323
1648322
1649322
1650322
1651322
1652322
1653322
1654322
1655322
1656322
1657322
1658322
1659322
1660322
1661322
1662322
1663322
1664322
1665322
1666322
1667322
1668322
1669321
1670321
1671321
1672321
1673321
1674321
1675321
1676321
1677321
1678321
1679321
1680320
1681320
1682320
1683320
1684320
1685320
1686320
1687320
1688320
1689320
1690320
1691320
1692320
1693320
1694320
1695320
1696320
1697319
1698319
1699319
1700319
1701319
1702319
1703319
1704319
1705319
1706319
1707319
1708319
1709319
1710318
1711318
1712318
1713318
1714318
1715318
1716318
1717318
1718318
1719318
1720318
1721318
1722318
1723318
1724318
1725317
1726317
1727317
1728317
1729317
1730317
1731317
1732317
1733317
1734317
1735317
1736317
1737316
1738316
1739316
1740316
1741316
1742316
1743316
1744316
1745316
1746316
1747316
1748315
1749315
1750315
1751315
1752315
1753315
1754315
1755315
1756315
1757315
1758315
1759315
1760315
1761315
1762314
1763314
1764314
1765314
1766314
1767314
1768314
1769314
1770314
1771314
1772314
1773314
1774314
1775314
1776314
1777314
1778314
1779314
1780314
1781314
1782314
1783313
1784313
1785313
1786313
1787313
1788313
1789313
1790313
1791313
1792313
1793313
1794313
1795313
1796313
1797313
1798313
1799313
1800313
1801312
1802312
1803312
1804312
1805312
1806312
1807312
1808312
1809312
1810312
1811312
1812312
1813311
1814311
1815311
1816311
1817311
1818311
1819311
1820311
1821311
1822311
1823311
1824311
1825311
1826311
1827311
1828310
1829310
1830310
1831310
1832310
1833310
1834310
1835310
1836310
1837310
1838310
1839310
1840310
1841310
1842309
1843309
1844309
1845309
1846309
1847309
1848309
1849309
1850309
1851309
1852309
1853309
1854309
1855309
1856309
1857309
1858309
1859309
1860309
1861309
1862309
1863309
1864309
1865309
1866308
1867308
1868308
1869308
1870308
1871308
1872308
1873308
1874308
1875308
1876308
1877307
1878307
1879307
1880307
1881307
1882307
1883307
1884307
1885307
1886307
1887307
1888307
1889307
1890307
1891307
1892307
1893307
1894306
1895306
1896306
1897306
1898306
1899306
1900306
1901306
1902306
1903306
1904306
1905306
1906306
1907306
1908305
1909305
1910305
1911305
1912305
1913305
1914305
1915305
1916305
1917305
1918305
1919305
1920305
1921305
1922304
1923304
1924304
1925304
1926304
1927304
1928304
1929304
1930304
1931304
1932304
1933304
1934304
1935304
1936304
1937304
1938303
1939303
1940303
1941303
1942303
1943303
1944303
1945303
1946303
1947303
1948303
1949303
1950303
1951303
1952303
1953303
1954303
1955303
1956303
1957303
1958302
1959302
1960302
1961302
1962302
1963302
1964302
1965302
1966302
1967302
1968302
1969302
1970302
1971302
1972302
1973301
1974301
1975301
1976301
1977301
1978301
1979301
1980301
1981301
1982301
1983301
1984301
1985301
1986301
1987301
1988301
1989301
1990301
1991301
1992301
1993300
1994300
1995300
1996300
1997300
1998300
1999300
2000300
2001300
2002300
2003300
2004300
2005299
2006299
2007299
2008299
2009299
2010299
2011299
2012299
2013299
2014299
2015299
2016299
2017299
2018299
2019299
2020299
2021299
2022299
2023299
2024299
2025299
2026299
2027299
2028298
2029298
2030298
2031298
2032298
2033298
2034298
2035298
2036298
2037298
2038298
2039298
2040298
2041298
2042298
2043298
2044298
2045298
2046298
2047297
2048297
2049297
2050297
2051297
2052297
2053297
2054297
2055297
2056297
2057297
2058297
2059297
2060297
2061297
2062297
2063297
2064297
2065297
2066297
2067297
2068297
2069297
2070297
2071297
2072297
2073297
2074297
2075296
2076296
2077296
2078296
2079296
2080296
2081296
2082296
2083296
2084296
2085296
2086296
2087296
2088296
2089296
2090296
2091296
2092295
2093295
2094295
2095295
2096295
2097295
2098295
2099295
2100295
2101295
2102295
2103295
2104295
2105295
2106295
2107295
2108294
2109294
2110294
2111294
2112294
2113294
2114294
2115294
2116294
2117294
2118294
2119294
2120294
2121294
2122294
2123293
2124293
2125293
2126293
2127293
2128293
2129293
2130293
2131293
2132293
2133293
2134293
2135293
2136293
2137293
2138293
2139293
2140292
2141292
2142292
2143292
2144292
2145292
2146292
2147292
2148292
2149292
2150292
2151292
2152292
2153292
2154292
2155292
2156291
2157291
2158291
2159291
2160291
2161291
2162291
2163291
2164291
2165291
2166291
2167290
2168290
2169290
2170290
2171290
2172290
2173290
2174290
2175290
2176290
2177290
2178290
2179290
2180290
2181290
2182290
2183290
2184290
2185290
2186290
2187290
2188290
2189290
2190290
2191289
2192289
2193289
2194289
2195289
2196289
2197289
2198289
2199289
2200289
2201289
2202289
2203289
2204289
2205289
2206289
2207289
2208289
2209289
2210289
2211288
2212288
2213288
2214288
2215288
2216288
2217288
2218288
2219288
2220288
2221288
2222288
2223288
2224288
2225288
2226288
2227288
2228288
2229288
2230288
2231288
2232287
2233287
2234287
2235287
2236287
2237287
2238287
2239287
2240287
2241287
2242287
2243287
2244287
2245287
2246287
2247287
2248287
2249287
2250287
2251287
2252287
2253286
2254286
2255286
2256286
2257286
2258286
2259286
2260286
2261286
2262286
2263286
2264286
2265286
2266286
2267286
2268285
2269285
2270285
2271285
2272285
2273285
2274285
2275285
2276285
2277285
2278285
2279285
2280285
2281285
2282285
2283285
2284285
2285285
2286285
2287285
2288285
2289285
2290285
2291285
2292284
2293284
2294284
2295284
2296284
2297284
2298284
2299284
2300284
2301284
2302284
2303284
2304284
2305284
2306284
2307284
2308284
2309284
2310284
2311284
2312284
2313283
2314283
2315283
2316283
2317283
2318283
2319283
2320283
2321283
2322283
2323283
2324283
2325282
2326282
2327282
2328282
2329282
2330282
2331282
2332282
2333282
2334282
2335282
2336282
2337282
2338282
2339282
2340282
2341282
2342282
2343282
2344282
2345282
2346282
2347282
2348282
2349282
2350281
2351281
2352281
2353281
2354281
2355281
2356281
2357281
2358281
2359281
2360281
2361281
2362281
2363281
2364281
2365281
2366281
2367281
2368281
2369280
2370280
2371280
2372280
2373280
2374280
2375280
2376280
2377280
2378280
2379280
2380280
2381280
2382280
2383280
2384280
2385280
2386280
2387280
2388280
2389280
2390280
2391279
2392279
2393279
2394279
2395279
2396279
2397279
2398279
2399279
2400279
2401279
2402279
2403279
2404279
2405279
2406279
2407279
2408279
2409279
2410279
2411279
2412278
2413278
2414278
2415278
2416278
2417278
2418278
2419278
2420278
2421278
2422278
2423278
2424278
2425278
2426278
2427278
2428278
2429278
2430278
2431278
2432278
2433278
2434278
2435278
2436278
2437278
2438278
2439278
2440278
2441278
2442278
2443278
2444278
2445278
2446277
2447277
2448277
2449277
2450277
2451277
2452277
2453277
2454277
2455277
2456277
2457277
2458277
2459277
2460277
2461277
2462277
2463277
2464277
2465277
2466277
2467277
2468277
2469277
2470277
2471277
2472276
2473276
2474276
2475276
2476276
2477276
2478276
2479276
2480276
2481276
2482276
2483276
2484276
2485276
2486276
2487276
2488276
2489276
2490276
2491276
2492276
2493276
2494276
2495276
2496276
2497276
2498276
2499276
2500275
2501275
2502275
2503275
2504275
2505275
2506275
2507275
2508275
2509275
2510275
2511275
2512275
2513275
2514275
2515275
2516275
2517275
2518275
2519275
2520275
2521275
2522275
2523274
2524274
2525274
2526274
2527274
2528274
2529274
2530274
2531274
2532274
2533274
2534274
2535274
2536274
2537274
2538274
2539274
2540274
2541274
2542274
2543274
2544274
2545274
2546274
2547274
2548274
2549274
2550274
2551273
2552273
2553273
2554273
2555273
2556273
2557273
2558273
2559273
2560273
2561273
2562273
2563273
2564273
2565273
2566273
2567273
2568273
2569273
2570272
2571272
2572272
2573272
2574272
2575272
2576272
2577272
2578272
2579272
2580272
2581272
2582272
2583272
2584272
2585272
2586272
2587272
2588272
2589272
2590272
2591272
2592272
2593272
2594272
2595272
2596271
2597271
2598271
2599271
2600271
2601271
2602271
2603271
2604271
2605271
2606271
2607271
2608271
2609271
2610271
2611270
2612270
2613270
2614270
2615270
2616270
2617270
2618270
2619270
2620270
2621270
2622270
2623270
2624270
2625270
2626270
2627270
2628270
2629270
2630270
2631270
2632270
2633270
2634270
2635270
2636270
2637270
2638269
2639269
2640269
2641269
2642269
2643269
2644269
2645269
2646269
2647269
2648269
2649269
2650269
2651269
2652269
2653269
2654269
2655269
2656269
2657269
2658269
2659268
2660268
2661268
2662268
2663268
2664268
2665268
2666268
2667268
2668268
2669268
2670268
2671268
2672268
2673268
2674268
2675268
2676268
2677268
2678268
2679268
2680268
2681267
2682267
2683267
2684267
2685267
2686267
2687267
2688267
2689267
2690267
2691267
2692267
2693267
2694267
2695267
2696267
2697267
2698267
2699267
2700267
2701267
2702267
2703267
2704267
2705266
2706266
2707266
2708266
2709266
2710266
2711266
2712266
2713266
2714266
2715266
2716266
2717266
2718266
2719266
2720266
2721266
2722266
2723266
2724266
2725266
2726266
2727266
2728266
2729266
2730265
2731265
2732265
2733265
2734265
2735265
2736265
2737265
2738265
2739265
2740265
2741265
2742265
2743265
2744265
2745265
2746265
2747265
2748265
2749265
2750265
2751265
2752265
2753265
2754265
2755265
2756265
2757264
2758264
2759264
2760264
2761264
2762264
2763264
2764264
2765264
2766264
2767264
2768264
2769264
2770264
2771264
2772264
2773264
2774264
2775264
2776264
2777264
2778264
2779264
2780264
2781264
2782264
2783264
2784263
2785263
2786263
2787263
2788263
2789263
2790263
2791263
2792263
2793263
2794263
2795263
2796263
2797263
2798263
2799263
2800263
2801263
2802263
2803263
2804263
2805263
2806263
2807263
2808263
2809263
2810263
2811263
2812263
2813263
2814263
2815263
2816263
2817263
2818263
2819262
2820262
2821262
2822262
2823262
2824262
2825262
2826262
2827262
2828262
2829262
2830262
2831262
2832262
2833262
2834262
2835262
2836262
2837262
2838262
2839261
2840261
2841261
2842261
2843261
2844261
2845261
2846261
2847261
2848261
2849261
2850261
2851261
2852261
2853261
2854261
2855261
2856261
2857261
2858261
2859261
2860261
2861261
2862261
2863261
2864260
2865260
2866260
2867260
2868260
2869260
2870260
2871260
2872260
2873260
2874260
2875260
2876260
2877260
2878260
2879260
2880260
2881260
2882260
2883260
2884260
2885260
2886260
2887260
2888260
2889260
2890260
2891260
2892260
2893260
2894260
2895260
2896260
2897260
2898260
2899260
2900260
2901259
2902259
2903259
2904259
2905259
2906259
2907259
2908259
2909259
2910259
2911259
2912259
2913259
2914259
2915259
2916259
2917259
2918259
2919259
2920259
2921258
2922258
2923258
2924258
2925258
2926258
2927258
2928258
2929258
2930258
2931258
2932258
2933258
2934258
2935258
2936258
2937258
2938258
2939258
2940258
2941257
2942257
2943257
2944257
2945257
2946257
2947257
2948257
2949257
2950257
2951257
2952257
2953257
2954257
2955257
2956257
2957257
2958257
2959257
2960257
2961257
2962257
2963257
2964257
2965257
2966257
2967257
2968257
2969257
2970257
2971257
2972257
2973257
2974257
2975257
2976256
2977256
2978256
2979256
2980256
2981256
2982256
2983256
2984256
2985256
2986256
2987256
2988256
2989256
2990256
2991256
2992256
2993256
2994256
2995256
2996256
2997256
2998256
2999256
3000256
3001256
3002256
3003256
3004256
3005256
3006256
3007256
3008256
3009256
3010256
3011256
3012255
3013255
3014255
3015255
3016255
3017255
3018255
3019255
3020255
3021255
3022255
3023255
3024255
3025255
3026255
3027255
3028255
3029255
3030255
3031255
3032255
3033255
3034255
3035255
3036255
3037255
3038254
3039254
3040254
3041254
3042254
3043254
3044254
3045254
3046254
3047254
3048254
3049254
3050254
3051254
3052254
3053254
3054254
3055254
3056254
3057254
3058254
3059254
3060254
3061254
3062254
3063254
3064254
3065254
3066254
3067254
3068254
3069253
3070253
3071253
3072253
3073253
3074253
3075253
3076253
3077253
3078253
3079253
3080253
3081253
3082253
3083253
3084253
3085253
3086253
3087253
3088253
3089253
3090253
3091253
3092252
3093252
3094252
3095252
3096252
3097252
3098252
3099252
3100252
3101252
3102252
3103252
3104252
3105252
3106252
3107252
3108252
3109252
3110252
3111252
3112252
3113252
3114252
3115252
3116252
3117252
3118252
3119252
3120251
3121251
3122251
3123251
3124251
3125251
3126251
3127251
3128251
3129251
3130251
3131251
3132251
3133251
3134251
3135251
3136251
3137251
3138251
3139251
3140251
3141251
3142251
3143251
3144251
3145251
3146250
3147250
3148250
3149250
3150250
3151250
3152250
3153250
3154250
3155250
3156250
3157250
3158250
3159250
3160250
3161250
3162250
3163250
3164250
3165250
3166250
3167250
3168250
3169250
3170250
3171249
3172249
3173249
3174249
3175249
3176249
3177249
3178249
3179249
3180249
3181249
3182249
3183249
3184249
3185249
3186249
3187249
3188249
3189249
3190249
3191249
3192249
3193249
3194249
3195249
3196249
3197249
3198249
3199249
3200249
3201249
3202249
3203248
3204248
3205248
3206248
3207248
3208248
3209248
3210248
3211248
3212248
3213248
3214248
3215248
3216248
3217248
3218248
3219248
3220248
3221248
3222248
3223248
3224248
3225248
3226248
3227248
3228248
3229248
3230248
3231248
3232248
3233248
3234248
3235247
3236247
3237247
3238247
3239247
3240247
3241247
3242247
3243247
3244247
3245247
3246247
3247247
3248247
3249247
3250247
3251247
3252247
3253247
3254247
3255247
3256247
3257247
3258247
3259247
3260247
3261247
3262247
3263247
3264247
3265247
3266247
3267247
3268247
3269246
3270246
3271246
3272246
3273246
3274246
3275246
3276246
3277246
3278246
3279246
3280246
3281246
3282246
3283246
3284246
3285246
3286246
3287246
3288246
3289246
3290246
3291246
3292246
3293246
3294246
3295246
3296246
3297246
3298246
3299245
3300245
3301245
3302245
3303245
3304245
3305245
3306245
3307245
3308245
3309245
3310245
3311245
3312245
3313245
3314245
3315245
3316245
3317245
3318245
3319245
3320245
3321245
3322245
3323245
3324245
3325245
3326245
3327245
3328245
3329245
3330245
3331245
3332245
3333244
3334244
3335244
3336244
3337244
3338244
3339244
3340244
3341244
3342244
3343244
3344244
3345244
3346244
3347244
3348244
3349244
3350244
3351244
3352244
3353244
3354244
3355244
3356244
3357244
3358244
3359244
3360243
3361243
3362243
3363243
3364243
3365243
3366243
3367243
3368243
3369243
3370243
3371243
3372243
3373243
3374243
3375243
3376243
3377243
3378243
3379243
3380243
3381243
3382243
3383243
3384243
3385243
3386243
3387243
3388243
3389243
3390243
3391243
3392243
3393243
3394243
3395243
3396243
3397243
3398242
3399242
3400242
3401242
3402242
3403242
3404242
3405242
3406242
3407242
3408242
3409242
3410242
3411242
3412242
3413242
3414242
3415242
3416242
3417242
3418242
3419242
3420242
3421242
3422242
3423242
3424242
3425242
3426242
3427242
3428242
3429242
3430242
3431241
3432241
3433241
3434241
3435241
3436241
3437241
3438241
3439241
3440241
3441241
3442241
3443241
3444241
3445241
3446241
3447241
3448241
3449241
3450241
3451241
3452241
3453241
3454241
3455241
3456241
3457241
3458241
3459241
3460240
3461240
3462240
3463240
3464240
3465240
3466240
3467240
3468240
3469240
3470240
3471240
3472240
3473240
3474240
3475240
3476240
3477240
3478240
3479240
3480240
3481240
3482240
3483240
3484240
3485240
3486240
3487240
3488240
3489239
3490239
3491239
3492239
3493239
3494239
3495239
3496239
3497239
3498239
3499239
3500239
3501239
3502239
3503239
3504239
3505239
3506239
3507239
3508239
3509239
3510239
3511239
3512239
3513239
3514239
3515239
3516239
3517239
3518239
3519239
3520239
3521239
3522238
3523238
3524238
3525238
3526238
3527238
3528238
3529238
3530238
3531238
3532238
3533238
3534238
3535238
3536238
3537238
3538238
3539238
3540238
3541238
3542238
3543238
3544238
3545238
3546238
3547238
3548238
3549238
3550238
3551238
3552238
3553238
3554238
3555238
3556238
3557237
3558237
3559237
3560237
3561237
3562237
3563237
3564237
3565237
3566237
3567237
3568237
3569237
3570237
3571237
3572237
3573237
3574237
3575237
3576237
3577237
3578237
3579237
3580237
3581237
3582237
3583237
3584237
3585237
3586237
3587237
3588237
3589237
3590237
3591237
3592236
3593236
3594236
3595236
3596236
3597236
3598236
3599236
3600236
3601236
3602236
3603236
3604236
3605236
3606236
3607236
3608236
3609236
3610236
3611236
3612236
3613236
3614236
3615236
3616236
3617236
3618236
3619236
3620236
3621235
3622235
3623235
3624235
3625235
3626235
3627235
3628235
3629235
3630235
3631235
3632235
3633235
3634235
3635235
3636235
3637235
3638235
3639235
3640235
3641235
3642235
3643235
3644235
3645235
3646235
3647235
3648235
3649235
3650235
3651235
3652235
3653235
3654235
3655235
3656235
3657235
3658234
3659234
3660234
3661234
3662234
3663234
3664234
3665234
3666234
3667234
3668234
3669234
3670234
3671234
3672234
3673234
3674234
3675234
3676234
3677234
3678234
3679234
3680234
3681234
3682234
3683234
3684234
3685234
3686234
3687234
3688234
3689234
3690234
3691234
3692234
3693234
3694234
3695233
3696233
3697233
3698233
3699233
3700233
3701233
3702233
3703233
3704233
3705233
3706233
3707233
3708233
3709233
3710233
3711233
3712233
3713233
3714233
3715233
3716233
3717233
3718233
3719233
3720233
3721233
3722233
3723233
3724233
3725233
3726233
3727233
3728233
3729233
3730233
3731233
3732233
3733233
3734233
3735233
3736233
3737232
3738232
3739232
3740232
3741232
3742232
3743232
3744232
3745232
3746232
3747232
3748232
3749232
3750232
3751232
3752232
3753232
3754232
3755232
3756232
3757232
3758232
3759232
3760232
3761232
3762231
3763231
3764231
3765231
3766231
3767231
3768231
3769231
3770231
3771231
3772231
3773231
3774231
3775231
3776231
3777231
3778231
3779231
3780231
3781231
3782231
3783231
3784231
3785231
3786231
3787231
3788231
3789231
3790231
3791231
3792231
3793231
3794231
3795231
3796231
3797231
3798231
3799231
3800231
3801231
3802231
3803231
3804231
3805230
3806230
3807230
3808230
3809230
3810230
3811230
3812230
3813230
3814230
3815230
3816230
3817230
3818230
3819230
3820230
3821230
3822230
3823230
3824230
3825230
3826230
3827230
3828230
3829230
3830230
3831230
3832230
3833230
3834230
3835230
3836230
3837230
3838230
3839230
3840230
3841230
3842230
3843230
3844230
3845230
3846230
3847229
3848229
3849229
3850229
3851229
3852229
3853229
3854229
3855229
3856229
3857229
3858229
3859229
3860229
3861229
3862229
3863229
3864229
3865229
3866229
3867229
3868229
3869229
3870229
3871229
3872229
3873229
3874229
3875229
3876229
3877229
3878229
3879229
3880229
3881229
3882229
3883229
3884229
3885229
3886228
3887228
3888228
3889228
3890228
3891228
3892228
3893228
3894228
3895228
3896228
3897228
3898228
3899228
3900228
3901228
3902228
3903228
3904228
3905228
3906228
3907228
3908228
3909228
3910228
3911228
3912228
3913228
3914228
3915228
3916228
3917228
3918228
3919228
3920228
3921228
3922227
3923227
3924227
3925227
3926227
3927227
3928227
3929227
3930227
3931227
3932227
3933227
3934227
3935227
3936227
3937227
3938227
3939227
3940227
3941227
3942227
3943227
3944227
3945227
3946227
3947227
3948227
3949227
3950227
3951226
3952226
3953226
3954226
3955226
3956226
3957226
3958226
3959226
3960226
3961226
3962226
3963226
3964226
3965226
3966226
3967226
3968226
3969226
3970226
3971226
3972226
3973226
3974226
3975226
3976226
3977226
3978226
3979226
3980226
3981226
3982226
3983226
3984226
3985226
3986226
3987226
3988226
3989225
3990225
3991225
3992225
3993225
3994225
3995225
3996225
3997225
3998225
3999225
4000225
4001225
4002225
4003225
4004225
4005225
4006225
4007225
4008225
4009225
4010225
4011225
4012225
4013225
4014225
4015225
4016225
4017225
4018225
4019225
4020225
4021225
4022225
4023225
4024225
4025225
4026225
4027225
4028225
4029224
4030224
4031224
4032224
4033224
4034224
4035224
4036224
4037224
4038224
4039224
4040224
4041224
4042224
4043224
4044224
4045224
4046224
4047224
4048224
4049224
4050224
4051224
4052224
4053224
4054224
4055224
4056224
4057224
4058224
4059224
4060224
4061224
4062224
4063224
4064224
4065224
4066224
4067224
4068224
4069224
4070224
4071224
4072224
4073224
4074224
4075224
4076224
4077223
4078223
4079223
4080223
4081223
4082223
4083223
4084223
4085223
4086223
4087223
4088223
4089223
4090223
4091223
4092223
4093223
4094223
4095223
4096223
4097223
4098223
4099223
4100223
4101223
4102223
4103223
4104223
4105223
4106223
4107223
4108223
4109223
4110223
4111223
4112223
4113223
4114222
4115222
4116222
4117222
4118222
4119222
4120222
4121222
4122222
4123222
4124222
4125222
4126222
4127222
4128222
4129222
4130222
4131222
4132222
4133222
4134222
4135222
4136222
4137222
4138222
4139222
4140222
4141222
4142222
4143222
4144222
4145222
4146222
4147222
4148222
4149222
4150222
4151221
4152221
4153221
4154221
4155221
4156221
4157221
4158221
4159221
4160221
4161221
4162221
4163221
4164221
4165221
4166221
4167221
4168221
4169221
4170221
4171221
4172221
4173221
4174221
4175221
4176221
4177221
4178221
4179221
4180221
4181221
4182221
4183221
4184221
4185221
4186221
4187221
4188221
4189221
4190220
4191220
4192220
4193220
4194220
4195220
4196220
4197220
4198220
4199220
4200220
4201220
4202220
4203220
4204220
4205220
4206220
4207220
4208220
4209220
4210220
4211220
4212220
4213220
4214220
4215220
4216220
4217220
4218220
4219220
4220220
4221220
4222220
4223220
4224220
4225220
4226220
4227220
4228220
4229220
4230220
4231219
4232219
4233219
4234219
4235219
4236219
4237219
4238219
4239219
4240219
4241219
4242219
4243219
4244219
4245219
4246219
4247219
4248219
4249219
4250219
4251219
4252219
4253219
4254219
4255219
4256219
4257219
4258219
4259219
4260219
4261219
4262219
4263219
4264219
4265219
4266219
4267219
4268219
4269219
4270219
4271219
4272219
4273219
4274219
4275218
4276218
4277218
4278218
4279218
4280218
4281218
4282218
4283218
4284218
4285218
4286218
4287218
4288218
4289218
4290218
4291218
4292218
4293218
4294218
4295218
4296218
4297218
4298218
4299218
4300218
4301218
4302218
4303218
4304218
4305218
4306218
4307218
4308218
4309218
4310218
4311218
4312218
4313218
4314218
4315218
4316218
4317218
4318218
4319218
4320218
4321218
4322218
4323218
4324218
4325218
4326217
4327217
4328217
4329217
4330217
4331217
4332217
4333217
4334217
4335217
4336217
4337217
4338217
4339217
4340217
4341217
4342217
4343217
4344217
4345217
4346217
4347217
4348217
4349217
4350217
4351217
4352217
4353217
4354217
4355217
4356217
4357217
4358217
4359217
4360217
4361217
4362217
4363217
4364217
4365217
4366217
4367217
4368216
4369216
4370216
4371216
4372216
4373216
4374216
4375216
4376216
4377216
4378216
4379216
4380216
4381216
4382216
4383216
4384216
4385216
4386216
4387216
4388216
4389216
4390216
4391216
4392216
4393216
4394216
4395216
4396216
4397216
4398216
4399216
4400216
4401216
4402216
4403216
4404216
4405216
4406216
4407216
4408216
4409216
4410216
4411216
4412215
4413215
4414215
4415215
4416215
4417215
4418215
4419215
4420215
4421215
4422215
4423215
4424215
4425215
4426215
4427215
4428215
4429215
4430215
4431215
4432215
4433215
4434215
4435215
4436215
4437215
4438215
4439215
4440215
4441215
4442215
4443215
4444215
4445215
4446215
4447215
4448215
4449215
4450215
4451215
4452215
4453215
4454215
4455215
4456215
4457215
4458215
4459215
4460215
4461215
4462215
4463215
4464215
4465215
4466215
4467215
4468215
4469214
4470214
4471214
4472214
4473214
4474214
4475214
4476214
4477214
4478214
4479214
4480214
4481214
4482214
4483214
4484214
4485214
4486214
4487214
4488214
4489214
4490214
4491214
4492214
4493214
4494214
4495214
4496214
4497214
4498214
4499214
4500214
4501214
4502214
4503214
4504214
4505214
4506214
4507214
4508214
4509213
4510213
4511213
4512213
4513213
4514213
4515213
4516213
4517213
4518213
4519213
4520213
4521213
4522213
4523213
4524213
4525213
4526213
4527213
4528213
4529213
4530213
4531213
4532213
4533213
4534213
4535213
4536213
4537213
4538213
4539213
4540213
4541213
4542213
4543213
4544213
4545213
4546212
4547212
4548212
4549212
4550212
4551212
4552212
4553212
4554212
4555212
4556212
4557212
4558212
4559212
4560212
4561212
4562212
4563212
4564212
4565212
4566212
4567212
4568212
4569212
4570212
4571212
4572212
4573212
4574212
4575212
4576212
4577212
4578212
4579212
4580212
4581212
4582212
4583212
4584212
4585212
4586212
4587212
4588212
4589212
4590212
4591212
4592212
4593212
4594212
4595212
4596212
4597211
4598211
4599211
4600211
4601211
4602211
4603211
4604211
4605211
4606211
4607211
4608211
4609211
4610211
4611211
4612211
4613211
4614211
4615211
4616211
4617211
4618211
4619211
4620211
4621211
4622211
4623211
4624211
4625211
4626211
4627211
4628211
4629211
4630211
4631211
4632211
4633211
4634211
4635211
4636211
4637211
4638211
4639211
4640211
4641211
4642211
4643211
4644211
4645211
4646211
4647211
4648211
4649211
4650211
4651211
4652211
4653211
4654210
4655210
4656210
4657210
4658210
4659210
4660210
4661210
4662210
4663210
4664210
4665210
4666210
4667210
4668210
4669210
4670210
4671210
4672210
4673210
4674210
4675210
4676210
4677210
4678210
4679210
4680210
4681210
4682210
4683210
4684210
4685210
4686210
4687210
4688210
4689210
4690210
4691210
4692210
4693210
4694210
4695210
4696210
4697210
4698210
4699210
4700210
4701210
4702210
4703210
4704210
4705210
4706210
4707210
4708210
4709210
4710210
4711210
4712210
4713210
4714210
4715210
4716210
4717209
4718209
4719209
4720209
4721209
4722209
4723209
4724209
4725209
4726209
4727209
4728209
4729209
4730209
4731209
4732209
4733209
4734209
4735209
4736209
4737209
4738209
4739209
4740209
4741209
4742209
4743209
4744209
4745209
4746209
4747209
4748209
4749209
4750209
4751209
4752209
4753209
4754209
4755209
4756209
4757209
4758209
4759209
4760209
4761209
4762209
4763209
4764209
4765209
4766209
4767209
4768209
4769209
4770209
4771209
4772209
4773209
4774208
4775208
4776208
4777208
4778208
4779208
4780208
4781208
4782208
4783208
4784208
4785208
4786208
4787208
4788208
4789208
4790208
4791208
4792208
4793208
4794208
4795208
4796208
4797208
4798208
4799208
4800208
4801208
4802208
4803208
4804208
4805208
4806208
4807208
4808208
4809208
4810208
4811208
4812208
4813208
4814208
4815208
4816208
4817208
4818208
4819208
4820208
4821208
4822208
4823208
4824208
4825208
4826208
4827208
4828208
4829208
4830208
4831208
4832208
4833208
4834208
4835207
4836207
4837207
4838207
4839207
4840207
4841207
4842207
4843207
4844207
4845207
4846207
4847207
4848207
4849207
4850207
4851207
4852207
4853207
4854207
4855207
4856207
4857207
4858207
4859207
4860207
4861207
4862207
4863207
4864207
4865207
4866207
4867207
4868207
4869207
4870207
4871207
4872207
4873207
4874207
4875207
4876207
4877207
4878207
4879207
4880207
4881207
4882207
4883207
4884207
4885207
4886207
4887207
4888207
4889207
4890207
4891206
4892206
4893206
4894206
4895206
4896206
4897206
4898206
4899206
4900206
4901206
4902206
4903206
4904206
4905206
4906206
4907206
4908206
4909206
4910206
4911206
4912206
4913206
4914206
4915206
4916206
4917206
4918206
4919206
4920206
4921206
4922206
4923206
4924206
4925206
4926206
4927206
4928206
4929206
4930206
4931206
4932206
4933206
4934206
4935206
4936206
4937205
4938205
4939205
4940205
4941205
4942205
4943205
4944205
4945205
4946205
4947205
4948205
4949205
4950205
4951205
4952205
4953205
4954205
4955205
4956205
4957205
4958205
4959205
4960205
4961205
4962205
4963205
4964205
4965205
4966205
4967205
4968205
4969205
4970205
4971205
4972205
4973205
4974205
4975205
4976205
4977205
4978205
4979205
4980205
4981205
4982205
4983205
4984205
4985205
4986205
4987205
4988205
4989205
4990205
4991205
4992204
4993204
4994204
4995204
4996204
4997204
4998204
4999204
5000204
5001204
5002204
5003204
5004204
5005204
5006204
5007204
5008204
5009204
5010204
5011204
5012204
5013204
5014204
5015204
5016204
5017204
5018204
5019204
5020204
5021204
5022204
5023204
5024204
5025204
5026204
5027204
5028204
5029204
5030204
5031204
5032204
5033203
5034203
5035203
5036203
5037203
5038203
5039203
5040203
5041203
5042203
5043203
5044203
5045203
5046203
5047203
5048203
5049203
5050203
5051203
5052203
5053203
5054203
5055203
5056203
5057203
5058203
5059203
5060203
5061203
5062203
5063203
5064203
5065203
5066203
5067203
5068203
5069203
5070203
5071203
5072203
5073203
5074203
5075203
5076203
5077203
5078203
5079203
5080203
5081203
5082203
5083203
5084203
5085203
5086202
5087202
5088202
5089202
5090202
5091202
5092202
5093202
5094202
5095202
5096202
5097202
5098202
5099202
5100202
5101202
5102202
5103202
5104202
5105202
5106202
5107202
5108202
5109202
5110202
5111202
5112202
5113202
5114202
5115202
5116202
5117202
5118202
5119202
5120202
5121202
5122202
5123202
5124202
5125202
5126202
5127202
5128202
5129202
5130202
5131202
5132202
5133202
5134202
5135202
5136202
5137202
5138202
5139202
5140202
5141202
5142202
5143202
5144202
5145202
5146202
5147202
5148202
5149201
5150201
5151201
5152201
5153201
5154201
5155201
5156201
5157201
5158201
5159201
5160201
5161201
5162201
5163201
5164201
5165201
5166201
5167201
5168201
5169201
5170201
5171201
5172201
5173201
5174201
5175201
5176201
5177201
5178201
5179201
5180201
5181201
5182201
5183201
5184201
5185201
5186201
5187201
5188201
5189201
5190201
5191201
5192201
5193201
5194201
5195201
5196201
5197201
5198201
5199201
5200201
5201201
5202201
5203201
5204201
5205201
5206201
5207201
5208201
5209201
5210201
5211201
5212201
5213201
5214201
5215201
5216201
5217201
5218201
5219201
5220201
5221201
5222201
5223200
5224200
5225200
5226200
5227200
5228200
5229200
5230200
5231200
5232200
5233200
5234200
5235200
5236200
5237200
5238200
5239200
5240200
5241200
5242200
5243200
5244200
5245200
5246200
5247200
5248200
5249200
5250200
5251200
5252200
5253200
5254200
5255200
5256200
5257200
5258200
5259200
5260200
5261200
5262200
5263200
5264200
5265200
5266200
5267200
5268200
5269200
5270200
5271200
5272200
5273200
5274200
5275200
5276200
5277200
5278200
5279200
5280200
5281200
5282200
5283200
5284200
5285199
5286199
5287199
5288199
5289199
5290199
5291199
5292199
5293199
5294199
5295199
5296199
5297199
5298199
5299199
5300199
5301199
5302199
5303199
5304199
5305199
5306199
5307199
5308199
5309199
5310199
5311199
5312199
5313199
5314199
5315199
5316199
5317199
5318199
5319199
5320199
5321199
5322199
5323199
5324199
5325199
5326199
5327199
5328199
5329199
5330199
5331199
5332199
5333199
5334199
5335199
5336199
5337198
5338198
5339198
5340198
5341198
5342198
5343198
5344198
5345198
5346198
5347198
5348198
5349198
5350198
5351198
5352198
5353198
5354198
5355198
5356198
5357198
5358198
5359198
5360198
5361198
5362198
5363198
5364198
5365198
5366198
5367198
5368198
5369198
5370198
5371198
5372198
5373198
5374198
5375198
5376198
5377198
5378198
5379198
5380198
5381198
5382198
5383198
5384198
5385198
5386198
5387198
5388198
5389198
5390198
5391198
5392198
5393198
5394198
5395198
5396198
5397198
5398198
5399198
5400198
5401198
5402198
5403197
5404197
5405197
5406197
5407197
5408197
5409197
5410197
5411197
5412197
5413197
5414197
5415197
5416197
5417197
5418197
5419197
5420197
5421197
5422197
5423197
5424197
5425197
5426197
5427197
5428197
5429197
5430197
5431197
5432197
5433197
5434197
5435197
5436197
5437197
5438197
5439197
5440197
5441197
5442197
5443197
5444197
5445197
5446197
5447197
5448197
5449197
5450197
5451197
5452197
5453197
5454197
5455197
5456197
5457197
5458197
5459196
5460196
5461196
5462196
5463196
5464196
5465196
5466196
5467196
5468196
5469196
5470196
5471196
5472196
5473196
5474196
5475196
5476196
5477196
5478196
5479196
5480196
5481196
5482196
5483196
5484196
5485196
5486196
5487196
5488196
5489196
5490196
5491196
5492196
5493196
5494196
5495196
5496196
5497196
5498196
5499196
5500196
5501196
5502196
5503196
5504196
5505196
5506196
5507196
5508196
5509196
5510196
5511196
5512196
5513196
5514196
5515196
5516196
5517196
5518196
5519195
5520195
5521195
5522195
5523195
5524195
5525195
5526195
5527195
5528195
5529195
5530195
5531195
5532195
5533195
5534195
5535195
5536195
5537195
5538195
5539195
5540195
5541195
5542195
5543195
5544195
5545195
5546195
5547195
5548195
5549195
5550195
5551195
5552195
5553195
5554195
5555195
5556195
5557195
5558195
5559195
5560195
5561195
5562195
5563195
5564195
5565195
5566195
5567195
5568195
5569195
5570195
5571195
5572195
5573195
5574195
5575195
5576195
5577195
5578195
5579195
5580195
5581195
5582195
5583195
5584194
5585194
5586194
5587194
5588194
5589194
5590194
5591194
5592194
5593194
5594194
5595194
5596194
5597194
5598194
5599194
5600194
5601194
5602194
5603194
5604194
5605194
5606194
5607194
5608194
5609194
5610194
5611194
5612194
5613194
5614194
5615194
5616194
5617194
5618194
5619194
5620194
5621194
5622194
5623194
5624194
5625194
5626194
5627194
5628194
5629194
5630194
5631194
5632194
5633194
5634194
5635194
5636194
5637194
5638194
5639194
5640194
5641194
5642193
5643193
5644193
5645193
5646193
5647193
5648193
5649193
5650193
5651193
5652193
5653193
5654193
5655193
5656193
5657193
5658193
5659193
5660193
5661193
5662193
5663193
5664193
5665193
5666193
5667193
5668193
5669193
5670193
5671193
5672193
5673193
5674193
5675193
5676193
5677193
5678193
5679193
5680193
5681193
5682193
5683193
5684193
5685193
5686193
5687193
5688193
5689193
5690193
5691193
5692193
5693193
5694193
5695193
5696193
5697193
5698193
5699193
5700193
5701193
5702193
5703192
5704192
5705192
5706192
5707192
5708192
5709192
5710192
5711192
5712192
5713192
5714192
5715192
5716192
5717192
5718192
5719192
5720192
5721192
5722192
5723192
5724192