forked from python/cpython
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ucnhash.c
12244 lines (12218 loc) · 541 KB
/
ucnhash.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#include "ucnhash.h"
/*
* The hash is produced using the algorithm described in
* "Optimal algorithms for minimal perfect hashing",
* G. Havas, B.S. Majewski. Available as a technical report
* from the CS department, University of Queensland
* (ftp://ftp.cs.uq.oz.au/).
*
* Generated using a heavily tweaked version of Andrew Kuchling's
* perfect_hash.py:
* http://starship.python.net/crew/amk/python/code/perfect-hash.html
*
* Generated on: Fri Jul 14 08:00:58 2000
*/
#define k_cHashElements 18836
#define k_cchMaxKey 83
#define k_cKeys 10538
staticforward const unsigned short G[k_cHashElements];
staticforward const _Py_UnicodeCharacterName aucn[k_cKeys];
static long f1(const char *key, unsigned int cch)
{
register int len;
register unsigned char *p;
register unsigned long x;
len = cch;
p = (unsigned char *) key;
x = 0x64fc2234;
while (--len >= 0)
{
/* (1000003 * x) ^ toupper(*(p++))
* translated to handle > 32 bit longs
*/
x = (0xf4243 * x);
x = x & 0xFFFFFFFF;
x = x ^ toupper(*(p++));
}
x ^= cch + 10;
if (x == 0xFFFFFFFF)
x = 0xfffffffe;
if (x & 0x80000000)
{
/* Emulate 32-bit signed (2's complement) modulo operation */
x = (~x & 0xFFFFFFFF) + 1;
x %= k_cHashElements;
if (x != 0)
{
x = x + (~k_cHashElements & 0xFFFFFFFF) + 1;
x = (~x & 0xFFFFFFFF) + 1;
}
}
else
x %= k_cHashElements;
return x;
}
static long f2(const char *key, unsigned int cch)
{
register int len;
register unsigned char *p;
register unsigned long x;
len = cch;
p = (unsigned char *) key;
x = 0x8db7d737;
while (--len >= 0)
{
/* (1000003 * x) ^ toupper(*(p++))
* translated to handle > 32 bit longs
*/
x = (0xf4243 * x);
x = x & 0xFFFFFFFF;
x = x ^ toupper(*(p++));
}
x ^= cch + 10;
if (x == 0xFFFFFFFF)
x = 0xfffffffe;
if (x & 0x80000000)
{
/* Emulate 32-bit signed (2's complement) modulo operation */
x = (~x & 0xFFFFFFFF) + 1;
x %= k_cHashElements;
if (x != 0)
{
x = x + (~k_cHashElements & 0xFFFFFFFF) + 1;
x = (~x & 0xFFFFFFFF) + 1;
}
}
else
x %= k_cHashElements;
return x;
}
static unsigned long hash(const char *key, unsigned int cch)
{
return ((unsigned long)(G[ f1(key, cch) ]) + (unsigned long)(G[ f2(key, cch) ]) ) % k_cHashElements;
}
const void *getValue(unsigned long iKey)
{
return &aucn[iKey];
}
/* Helper for adding objects to dictionaries. Check for errors with
PyErr_Occurred() */
static
void insobj(PyObject *dict,
char *name,
PyObject *v)
{
PyDict_SetItemString(dict, name, v);
Py_XDECREF(v);
}
static const _Py_UCNHashAPI hashAPI =
{
k_cKeys,
k_cchMaxKey,
&hash,
&getValue,
};
static
PyMethodDef Module_methods[] =
{
{NULL, NULL},
};
static char *Module_docstring = "ucnhash hash function module";
/* Error reporting for module init functions */
#define Py_ReportModuleInitError(modname) { \
PyObject *exc_type, *exc_value, *exc_tb; \
PyObject *str_type, *str_value; \
\
/* Fetch error objects and convert them to strings */ \
PyErr_Fetch(&exc_type, &exc_value, &exc_tb); \
if (exc_type && exc_value) { \
str_type = PyObject_Str(exc_type); \
str_value = PyObject_Str(exc_value); \
} \
else { \
str_type = NULL; \
str_value = NULL; \
} \
/* Try to format a more informative error message using the \
original error */ \
if (str_type && str_value && \
PyString_Check(str_type) && PyString_Check(str_value)) \
PyErr_Format( \
PyExc_ImportError, \
"initialization of module "modname" failed " \
"(%s:%s)", \
PyString_AS_STRING(str_type), \
PyString_AS_STRING(str_value)); \
else \
PyErr_SetString( \
PyExc_ImportError, \
"initialization of module "modname" failed"); \
Py_XDECREF(str_type); \
Py_XDECREF(str_value); \
Py_XDECREF(exc_type); \
Py_XDECREF(exc_value); \
Py_XDECREF(exc_tb); \
}
/* Create PyMethodObjects and register them in the module's dict */
DL_EXPORT(void)
initucnhash(void)
{
PyObject *module, *moddict;
/* Create module */
module = Py_InitModule4("ucnhash", /* Module name */
Module_methods, /* Method list */
Module_docstring, /* Module doc-string */
(PyObject *)NULL, /* always pass this as *self */
PYTHON_API_VERSION); /* API Version */
if (module == NULL)
goto onError;
/* Add some constants to the module's dict */
moddict = PyModule_GetDict(module);
if (moddict == NULL)
goto onError;
/* Export C API */
insobj(
moddict,
"ucnhashAPI",
PyCObject_FromVoidPtr((void *)&hashAPI, NULL));
onError:
/* Check for errors and report them */
if (PyErr_Occurred())
Py_ReportModuleInitError("ucnhash");
return;
}
static const unsigned short G[] =
{ 0, 0, 0, 0, 0, 0, 0, 11953, 0, 0, 0, 9525, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8379, 0, 0, 0, 0,
0, 0, 0, 0, 3426, 0, 0, 0, 0, 0, 0, 0, 15561, 0, 0, 0,
9861, 4304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2876,
0, 0, 0, 0, 0, 0, 14935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3610, 0, 0, 0, 0,
11753, 0, 0, 0, 0, 0, 0, 0, 0, 5516, 0, 12757, 0, 0, 0,
0, 0, 0, 0, 6111, 10127, 0, 0, 0, 0, 12107, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1112, 16812, 7868, 0, 4523, 8156, 0, 0, 0,
0, 0, 0, 0, 8333, 10969, 0, 0, 0, 0, 3166, 0, 0, 0, 16562,
0, 0, 0, 14539, 0, 0, 0, 11038, 9829, 9342, 2598, 0, 0, 0,
0, 3920, 0, 0, 0, 0, 0, 0, 0, 0, 3292, 0, 0, 4859, 0, 11347,
4380, 0, 7279, 7152, 0, 0, 0, 0, 8923, 0, 0, 12282, 0, 6341,
0, 0, 0, 0, 0, 0, 5170, 0, 9366, 2765, 15341, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 3646, 9501, 7605, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 6980, 0, 6035, 11135, 0, 0, 0, 0, 0,
0, 0, 0, 0, 15770, 0, 0, 4362, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 8371, 3425, 5911, 14745, 248, 0, 0, 0, 0, 0,
0, 0, 0, 877, 0, 0, 0, 0, 0, 0, 8592, 0, 0, 0, 0, 0, 0,
18225, 16638, 0, 0, 6933, 644, 0, 3481, 0, 0, 0, 820, 0, 0,
4178, 0, 0, 0, 0, 4463, 17116, 5252, 0, 0, 12656, 0, 7208,
16280, 17140, 2486, 0, 16076, 0, 0, 0, 0, 0, 0, 13341, 0,
889, 500, 0, 0, 422, 0, 7971, 0, 0, 0, 10624, 0, 17241, 0,
0, 0, 4910, 0, 0, 0, 0, 0, 0, 0, 0, 17764, 0, 687, 0, 0,
3623, 12593, 15985, 0, 8813, 0, 0, 7118, 0, 0, 0, 0, 0, 0,
0, 2864, 0, 0, 0, 0, 0, 12314, 0, 10396, 0, 13564, 0, 0,
13957, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5421, 0, 0, 3295,
0, 0, 10087, 10726, 0, 8836, 1294, 0, 0, 0, 0, 3223, 0, 0,
2619, 0, 0, 0, 0, 0, 0, 10328, 0, 16532, 0, 0, 0, 2104, 0,
4117, 0, 6193, 16507, 0, 0, 0, 0, 0, 0, 1306, 4632, 6720,
0, 0, 0, 0, 0, 0, 3534, 0, 0, 6831, 0, 0, 0, 0, 0, 0, 16363,
0, 0, 0, 0, 11894, 0, 16253, 0, 7203, 0, 0, 777, 4049, 0,
0, 0, 0, 0, 8599, 0, 8588, 0, 0, 18560, 0, 0, 0, 0, 8590,
0, 0, 0, 0, 0, 13580, 0, 11458, 0, 10873, 5454, 0, 0, 0,
0, 0, 0, 0, 0, 11314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 18649, 0, 0, 0, 0, 0, 6946, 0, 0, 0, 11988, 0, 18260,
0, 0, 0, 8917, 0, 10821, 0, 0, 0, 0, 0, 8174, 12682, 13253,
201, 0, 0, 0, 0, 0, 0, 18267, 13005, 0, 0, 8121, 9311, 0,
5362, 8118, 0, 0, 0, 8119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 8123, 0, 12260, 2050, 0, 11882, 0, 0, 0, 17886, 3476,
0, 0, 7135, 0, 0, 9416, 0, 0, 4644, 16253, 0, 1902, 0, 0,
0, 15756, 0, 6484, 0, 0, 108, 844, 6921, 17728, 6424, 0, 0,
0, 7717, 0, 0, 0, 381, 0, 0, 0, 6452, 2227, 0, 0, 0, 0,
7028, 0, 0, 0, 6997, 4164, 0, 0, 0, 0, 9262, 0, 4528, 6195,
0, 4063, 0, 932, 2889, 0, 0, 0, 8041, 0, 0, 15598, 0, 0,
0, 0, 0, 0, 0, 0, 11375, 0, 0, 13072, 0, 16495, 0, 0, 0,
17233, 18773, 7319, 17372, 0, 0, 0, 0, 0, 0, 11654, 7165, 0,
0, 0, 0, 15293, 17430, 5464, 0, 0, 18062, 0, 0, 0, 10590,
0, 0, 0, 0, 0, 8406, 0, 11680, 0, 5350, 0, 0, 0, 0, 0, 1977,
0, 0, 0, 0, 12278, 18014, 18086, 8793, 0, 6302, 12721, 2469,
0, 18320, 18508, 0, 2873, 0, 3936, 1333, 7212, 0, 0, 14781,
0, 0, 0, 0, 0, 0, 5281, 0, 9605, 0, 43, 0, 10238, 0, 0,
15219, 11138, 0, 0, 0, 1697, 3380, 0, 2257, 0, 18481, 0, 0,
0, 0, 0, 0, 2229, 0, 0, 16743, 11151, 0, 0, 17764, 0, 0,
0, 1162, 0, 0, 0, 0, 0, 15353, 5671, 12216, 0, 0, 7584, 0,
0, 653, 0, 8468, 0, 0, 3293, 10551, 18807, 0, 0, 0, 0, 0,
9624, 0, 0, 0, 0, 5696, 0, 0, 0, 0, 0, 0, 4684, 0, 0, 14619,
0, 3397, 2814, 0, 9194, 0, 0, 0, 4513, 0, 13821, 0, 0, 14675,
0, 3572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2103, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 2301, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 13235, 0, 6802, 17294, 0, 0, 5403, 0, 0, 0, 0,
0, 9985, 10010, 0, 0, 0, 0, 0, 4204, 0, 0, 0, 0, 0, 4527,
0, 7721, 2112, 7131, 0, 0, 10425, 13913, 0, 0, 0, 4594, 6445,
0, 11256, 0, 0, 0, 11062, 0, 16060, 14342, 0, 17353, 0, 14359,
0, 0, 0, 0, 0, 12763, 0, 0, 13908, 1111, 0, 0, 772, 0, 1461,
0, 0, 0, 0, 13384, 0, 9391, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 6318, 1907, 0, 0, 0, 0, 0, 0, 0, 9845, 17007, 0, 0,
0, 0, 0, 0, 60, 0, 11072, 0, 0, 0, 378, 0, 8598, 0, 9581,
451, 0, 0, 16608, 0, 0, 0, 15462, 18347, 0, 0, 18040, 0, 0,
0, 0, 1976, 0, 0, 0, 0, 0, 0, 2566, 0, 0, 0, 0, 0, 11895,
0, 3535, 0, 0, 7840, 0, 0, 0, 0, 0, 0, 816, 2429, 0, 0,
0, 2441, 0, 0, 0, 2433, 0, 0, 0, 0, 0, 2443, 15565, 0, 0,
0, 13106, 10201, 7908, 5076, 0, 623, 0, 4118, 0, 0, 0, 0,
0, 0, 0, 7390, 0, 18120, 0, 0, 6697, 0, 0, 9979, 7667, 0,
17494, 0, 0, 0, 17370, 3835, 0, 0, 1241, 13040, 0, 0, 16051,
17879, 0, 0, 0, 0, 2152, 0, 1273, 7124, 11242, 4690, 17351,
0, 0, 8447, 15632, 2250, 1787, 0, 1281, 8442, 0, 0, 18032,
8443, 10621, 0, 12894, 0, 0, 12359, 0, 0, 2387, 0, 15846, 17372,
0, 10852, 12932, 0, 4105, 0, 8432, 0, 17891, 8334, 12053, 0,
3144, 15499, 0, 0, 0, 0, 1532, 0, 5470, 0, 7580, 6434, 0,
0, 1344, 3376, 0, 0, 2184, 12892, 0, 0, 0, 0, 3656, 16799,
499, 1645, 10069, 0, 5807, 0, 719, 0, 0, 0, 0, 0, 7240, 3794,
0, 0, 16343, 0, 0, 2304, 1944, 2144, 0, 6113, 13315, 2098,
9359, 12600, 7242, 0, 0, 7886, 1127, 0, 0, 11230, 13039, 0,
7244, 0, 3057, 0, 6949, 0, 5853, 0, 0, 0, 0, 0, 0, 0, 0,
0, 14986, 0, 1869, 0, 0, 0, 0, 0, 0, 18066, 0, 0, 0, 0,
0, 16842, 0, 0, 16997, 8458, 1750, 0, 0, 0, 0, 211, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7417, 0, 0, 0, 0, 0, 0,
6291, 0, 10449, 0, 0, 835, 0, 0, 1225, 0, 8351, 0, 7212, 4835,
12503, 0, 0, 0, 4291, 0, 0, 12876, 0, 0, 0, 8086, 0, 0, 6953,
0, 0, 0, 0, 0, 6726, 0, 0, 0, 12951, 0, 0, 11324, 0, 12148,
0, 0, 0, 0, 0, 0, 0, 9612, 0, 17062, 0, 0, 15443, 6462, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13876, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16879, 0, 1949, 13842, 0,
0, 0, 0, 0, 0, 13967, 10546, 16609, 0, 9339, 9340, 11539, 9953,
5854, 9336, 8693, 2405, 0, 0, 0, 0, 9343, 9344, 6426, 0, 0,
0, 0, 2952, 4583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14748, 14545,
0, 0, 9803, 3720, 17206, 0, 0, 0, 0, 0, 0, 3029, 0, 0, 0,
0, 12759, 0, 0, 2663, 0, 0, 3617, 5349, 17556, 3622, 9434,
0, 0, 6249, 6408, 0, 0, 0, 16756, 0, 0, 11979, 1634, 14292,
5846, 0, 688, 0, 0, 0, 0, 450, 1177, 0, 0, 5614, 0, 10046,
0, 0, 0, 0, 0, 13501, 0, 2952, 0, 4825, 0, 0, 0, 0, 4791,
0, 10136, 1577, 0, 5100, 12453, 0, 151, 0, 0, 0, 4885, 9349,
9350, 0, 4883, 9345, 4094, 11067, 16437, 0, 0, 9401, 0, 5282,
1674, 0, 0, 0, 3251, 0, 0, 0, 10504, 777, 0, 0, 0, 0, 0,
5561, 16257, 0, 0, 0, 1990, 6401, 0, 2318, 2359, 1904, 5628,
0, 0, 389, 0, 0, 12362, 0, 0, 9992, 4144, 0, 4560, 0, 413,
0, 6405, 0, 9781, 0, 16889, 0, 4401, 0, 3643, 9420, 11305,
0, 0, 0, 0, 18529, 6319, 0, 0, 0, 2401, 0, 14441, 0, 0, 4581,
0, 0, 0, 17869, 6443, 0, 15350, 9213, 4457, 12653, 0, 496,
0, 3363, 12875, 12168, 0, 0, 0, 9014, 4546, 9106, 0, 0, 15047,
0, 0, 0, 6262, 0, 0, 14589, 0, 4576, 5352, 0, 8404, 0, 0,
0, 0, 0, 0, 6168, 4783, 0, 3264, 6106, 9469, 0, 0, 0, 0,
11017, 7225, 1192, 17507, 8441, 18305, 0, 8991, 10682, 1244,
0, 11489, 0, 0, 4028, 0, 0, 8344, 3201, 11961, 0, 0, 0, 0,
0, 0, 0, 11775, 0, 0, 0, 0, 0, 2991, 0, 0, 3212, 11780, 0,
0, 5921, 2984, 0, 0, 0, 10593, 0, 0, 0, 8141, 0, 0, 0, 0,
0, 6443, 0, 0, 0, 0, 0, 0, 9471, 0, 0, 0, 0, 0, 13470, 0,
18195, 0, 12739, 49, 0, 4523, 0, 12729, 5404, 0, 7128, 0, 0,
0, 2041, 2890, 15275, 13863, 0, 0, 0, 0, 7064, 6644, 7980,
12220, 0, 0, 0, 18129, 0, 18637, 0, 0, 9559, 0, 14026, 0,
0, 17886, 9608, 0, 0, 0, 0, 11667, 0, 0, 1438, 1316, 0, 0,
0, 0, 0, 0, 0, 7576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14930,
0, 9905, 1321, 0, 0, 11266, 0, 6686, 378, 5296, 0, 0, 3163,
17057, 0, 1655, 0, 1010, 0, 0, 0, 9652, 0, 0, 11662, 0, 12991,
0, 0, 11708, 0, 725, 8698, 0, 0, 9610, 0, 10282, 10289, 7833,
0, 0, 18076, 0, 0, 3921, 4770, 3472, 1683, 14225, 18715, 17607,
7333, 3923, 0, 0, 12921, 10777, 5030, 0, 2170, 0, 6253, 0,
0, 0, 0, 0, 7066, 0, 14297, 0, 12024, 0, 0, 0, 17278, 0,
0, 0, 372, 2573, 0, 0, 7410, 17801, 0, 0, 0, 0, 0, 0, 7750,
0, 3067, 0, 6384, 3534, 0, 18470, 17129, 0, 0, 6559, 11415,
15597, 11744, 0, 3109, 0, 16547, 6325, 17456, 16933, 0, 9139,
5124, 13848, 0, 0, 16141, 0, 3079, 0, 0, 0, 0, 0, 10056, 0,
5945, 0, 0, 2263, 0, 0, 5047, 0, 0, 0, 7419, 16237, 10189,
0, 0, 0, 0, 16924, 0, 10528, 15866, 0, 9022, 0, 0, 11385,
0, 0, 15499, 0, 15745, 13379, 0, 16367, 5370, 2838, 6074, 0,
0, 0, 0, 12845, 9694, 16351, 11022, 16294, 0, 14353, 15189,
17818, 0, 7046, 0, 1258, 0, 5062, 0, 10497, 1786, 0, 10124,
0, 0, 18212, 0, 0, 0, 0, 0, 0, 13449, 0, 0, 0, 0, 0, 0,
11820, 9949, 0, 0, 0, 0, 0, 0, 8632, 7575, 0, 0, 0, 3370,
0, 0, 0, 0, 0, 1259, 0, 15632, 0, 17263, 0, 8949, 0, 0, 4452,
0, 13770, 0, 0, 14760, 0, 0, 0, 0, 6385, 0, 4943, 16143, 3295,
4690, 0, 0, 0, 0, 0, 4101, 0, 0, 11292, 0, 0, 0, 0, 11519,
0, 0, 0, 0, 6396, 8285, 0, 0, 0, 0, 15557, 5366, 0, 0, 2852,
12752, 0, 0, 0, 0, 0, 0, 0, 1620, 0, 11532, 16380, 0, 14800,
7192, 0, 11043, 2454, 0, 0, 7609, 0, 2846, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 10230, 0, 2261, 0, 0, 0, 0, 0, 0, 0,
2694, 0, 0, 4938, 1707, 0, 18806, 0, 2830, 9293, 0, 2253, 16647,
18517, 17467, 0, 4160, 6353, 352, 0, 18174, 0, 7257, 2649, 647,
0, 0, 0, 0, 0, 10537, 0, 0, 0, 0, 18148, 0, 0, 0, 0, 0,
0, 0, 9132, 8656, 0, 4332, 0, 0, 1079, 0, 0, 0, 0, 7608,
0, 0, 0, 5347, 3194, 0, 0, 0, 0, 0, 95, 0, 0, 5678, 0, 0,
11875, 0, 12956, 0, 0, 0, 0, 1226, 0, 736, 0, 0, 0, 0, 2186,
1029, 0, 6620, 0, 16839, 0, 2579, 0, 0, 0, 17848, 0, 0, 16472,
18396, 0, 5079, 6202, 0, 0, 16593, 6750, 0, 0, 2129, 2086,
0, 0, 0, 0, 0, 17466, 0, 18670, 0, 0, 0, 0, 0, 0, 3573,
0, 0, 0, 0, 0, 0, 0, 0, 2775, 0, 9691, 0, 0, 0, 12695, 0,
6411, 921, 0, 6511, 17117, 0, 0, 0, 0, 10151, 0, 3683, 0,
0, 15913, 0, 0, 9659, 0, 0, 0, 0, 14816, 16088, 620, 0, 0,
0, 0, 0, 0, 9340, 0, 0, 0, 1263, 0, 0, 8685, 0, 15154, 5536,
0, 0, 17445, 0, 1148, 0, 0, 9758, 11222, 0, 0, 0, 0, 0, 14407,
0, 0, 0, 0, 4075, 0, 0, 0, 8897, 4538, 11702, 1226, 18622,
2500, 0, 0, 0, 2499, 13886, 0, 0, 0, 0, 0, 13815, 13862, 0,
0, 12183, 0, 0, 0, 0, 0, 3663, 0, 0, 0, 4677, 0, 1291, 0,
0, 2472, 0, 3051, 5862, 7695, 0, 0, 4170, 0, 16578, 0, 17616,
1705, 0, 0, 8656, 1611, 0, 0, 0, 0, 3020, 4828, 16444, 7538,
0, 4399, 18246, 0, 0, 0, 0, 205, 13049, 0, 0, 2167, 0, 11741,
0, 0, 0, 8334, 3153, 0, 0, 6130, 10731, 15006, 13378, 16295,
0, 12350, 4871, 0, 461, 0, 16175, 597, 16278, 6236, 0, 0, 3054,
0, 2851, 0, 9420, 10180, 302, 9699, 0, 3101, 1622, 0, 1062,
0, 0, 0, 0, 0, 0, 0, 0, 0, 17197, 0, 0, 11311, 9700, 0,
5857, 0, 0, 2701, 0, 0, 10490, 0, 0, 10007, 10080, 0, 0, 0,
0, 9712, 13474, 0, 10093, 7178, 0, 0, 0, 0, 0, 0, 4218, 17671,
0, 0, 0, 7677, 0, 0, 0, 17385, 0, 10641, 0, 0, 262, 0, 0,
0, 18834, 16729, 0, 5869, 0, 0, 0, 0, 0, 0, 0, 8902, 0, 15571,
15543, 0, 0, 18092, 1305, 4025, 3162, 17699, 0, 0, 0, 0, 0,
5798, 0, 0, 12874, 13159, 0, 0, 0, 11548, 0, 0, 0, 6058, 0,
0, 0, 0, 0, 0, 14747, 0, 0, 0, 0, 0, 17557, 1512, 0, 12733,
0, 0, 0, 16872, 4602, 18244, 17596, 1532, 7268, 0, 0, 2614,
7055, 0, 0, 0, 0, 0, 7027, 0, 0, 0, 0, 0, 17635, 0, 7239,
14742, 5205, 748, 0, 0, 0, 18797, 0, 0, 0, 5074, 0, 0, 0,
0, 0, 0, 13715, 0, 18540, 10712, 0, 0, 0, 0, 0, 0, 0, 0,
0, 18068, 0, 0, 0, 0, 0, 0, 0, 2178, 7006, 0, 6430, 0, 0,
3762, 18021, 0, 5716, 0, 16535, 16226, 0, 3277, 0, 0, 5256,
10896, 0, 17774, 0, 0, 0, 6315, 0, 0, 4673, 0, 0, 15217, 18645,
0, 0, 0, 4064, 13527, 0, 0, 16956, 0, 4628, 0, 0, 0, 12879,
0, 6010, 0, 7124, 0, 14804, 0, 0, 0, 0, 0, 14123, 0, 0, 16706,
0, 5227, 0, 0, 16006, 0, 5219, 16782, 0, 1453, 13717, 0, 12269,
0, 17363, 1344, 10396, 3069, 0, 14914, 0, 5519, 0, 2130, 15400,
0, 0, 16329, 8461, 17950, 8801, 0, 0, 0, 10634, 15059, 0, 0,
0, 0, 4241, 0, 5467, 0, 0, 0, 0, 13845, 11492, 4914, 15843,
0, 0, 2853, 15699, 0, 0, 0, 0, 0, 0, 4771, 0, 14396, 6561,
0, 0, 0, 0, 0, 0, 0, 8553, 0, 0, 0, 0, 0, 0, 582, 17811,
0, 10303, 0, 0, 9804, 986, 13785, 8859, 0, 8857, 9351, 0, 8734,
2926, 1371, 13714, 0, 16722, 0, 0, 0, 0, 0, 0, 17950, 6216,
0, 4073, 0, 0, 0, 0, 0, 0, 0, 3084, 5567, 16082, 0, 0, 6207,
0, 0, 3160, 0, 0, 0, 0, 0, 10381, 0, 0, 0, 0, 0, 13174,
8994, 7419, 0, 0, 13972, 18502, 13530, 0, 0, 0, 0, 0, 0, 18302,
3113, 0, 0, 1730, 0, 578, 0, 11071, 0, 10404, 18786, 0, 9062,
12129, 0, 0, 9569, 18726, 0, 0, 2610, 0, 5450, 0, 0, 13137,
0, 5558, 0, 0, 0, 0, 2907, 0, 0, 0, 1460, 16623, 0, 2775,
0, 9115, 7738, 7735, 0, 0, 0, 0, 0, 0, 0, 928, 0, 0, 13386,
0, 13164, 0, 0, 0, 14503, 0, 0, 0, 0, 0, 4253, 6025, 0, 0,
0, 0, 17025, 15422, 7083, 0, 0, 0, 7110, 0, 0, 0, 14021, 0,
2249, 0, 18136, 0, 202, 10671, 0, 1395, 2784, 0, 1877, 0, 10617,
4951, 3906, 17273, 0, 17759, 11539, 18372, 11879, 2496, 0, 5591,
8753, 3367, 8751, 0, 0, 4340, 8748, 0, 0, 0, 8749, 11019, 0,
0, 0, 0, 0, 0, 0, 9085, 12947, 342, 0, 0, 3002, 0, 0, 0,
0, 0, 3165, 0, 0, 9269, 0, 0, 0, 17119, 0, 0, 0, 13173, 4407,
4537, 0, 18543, 15076, 0, 958, 17501, 0, 9122, 0, 10652, 8318,
0, 8798, 3451, 0, 6506, 0, 17649, 0, 3876, 0, 0, 0, 0, 0,
0, 16293, 5323, 5039, 9347, 0, 0, 0, 0, 0, 0, 5477, 0, 5924,
7631, 0, 3365, 0, 4343, 17018, 0, 4466, 0, 16876, 0, 0, 410,
13960, 0, 0, 0, 0, 0, 0, 0, 12440, 0, 0, 0, 3019, 6856, 18151,
0, 0, 10885, 7937, 8786, 0, 1996, 16101, 0, 0, 0, 15484, 0,
0, 0, 0, 1632, 18212, 0, 0, 3945, 0, 0, 0, 4906, 0, 0, 5095,
9679, 6222, 0, 0, 0, 7124, 1407, 0, 388, 2610, 0, 0, 0, 588,
9151, 0, 0, 0, 0, 0, 0, 11972, 2311, 0, 0, 0, 7589, 0, 5850,
13706, 0, 7010, 3506, 0, 781, 0, 0, 14042, 0, 0, 0, 0, 0,
0, 0, 0, 1597, 0, 3781, 0, 0, 0, 11608, 16707, 0, 0, 1704,
16612, 0, 0, 0, 430, 18228, 0, 2748, 2364, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 4030, 0, 0, 0, 6181, 0, 0, 0, 7818, 2481,
15713, 10428, 490, 2033, 266, 0, 13669, 11221, 0, 16014, 0,
11693, 14715, 0, 0, 7457, 9772, 0, 16022, 11821, 17187, 3188,
0, 0, 1432, 6846, 9563, 46, 15662, 13437, 0, 11839, 0, 0, 5036,
2441, 0, 13385, 0, 13371, 18564, 0, 12407, 13396, 0, 4094, 0,
0, 0, 259, 0, 8940, 10910, 14261, 0, 11202, 0, 3276, 0, 14885,
17669, 12805, 0, 9238, 1389, 7974, 0, 1946, 0, 3028, 13761,
14958, 0, 0, 6676, 11714, 4342, 0, 0, 6787, 0, 15695, 8876,
3947, 2567, 2008, 17553, 4936, 7614, 12409, 17437, 10281, 10435,
0, 3453, 0, 982, 2163, 7905, 0, 0, 1947, 14513, 0, 0, 1542,
16556, 10012, 0, 0, 0, 15677, 0, 0, 0, 4036, 0, 5813, 0, 6463,
0, 0, 0, 0, 0, 9512, 14194, 18828, 0, 0, 0, 8315, 8603, 0,
11277, 16506, 4391, 0, 0, 2658, 0, 0, 10330, 12098, 0, 3578,
17153, 13952, 0, 11160, 1390, 0, 0, 6846, 0, 0, 0, 0, 0, 4770,
9602, 9289, 6785, 7952, 4671, 0, 16670, 0, 0, 16050, 0, 0,
0, 0, 2356, 8167, 0, 10609, 0, 7675, 0, 0, 0, 0, 0, 0, 0,
18073, 9823, 18165, 0, 7858, 1628, 12431, 0, 5165, 6870, 0,
0, 16425, 6767, 0, 6255, 5696, 0, 0, 4958, 0, 0, 6724, 6590,
0, 1307, 0, 0, 0, 18771, 1804, 15490, 0, 0, 0, 13173, 0, 13847,
0, 0, 0, 4244, 0, 13395, 0, 11601, 0, 0, 11122, 18635, 0,
18447, 0, 12813, 0, 4264, 6455, 0, 8741, 0, 12648, 0, 13076,
0, 0, 9642, 0, 2040, 16773, 15176, 0, 2588, 0, 0, 0, 0, 0,
0, 1080, 2729, 0, 0, 7421, 0, 0, 18068, 0, 7382, 11692, 0,
16529, 0, 0, 0, 17205, 9578, 0, 13833, 7462, 0, 0, 10253, 0,
0, 0, 18785, 0, 4463, 0, 0, 13955, 0, 5710, 1983, 0, 186,
5210, 0, 0, 0, 14919, 1518, 15990, 0, 5983, 14724, 0, 0, 0,
17814, 0, 0, 0, 0, 0, 6862, 13803, 14553, 0, 0, 0, 300, 6338,
3995, 0, 8376, 0, 3730, 0, 5888, 0, 8371, 8595, 8525, 0, 8372,
0, 0, 14834, 8520, 0, 0, 15218, 0, 2897, 5402, 0, 0, 15147,
7509, 0, 11808, 8363, 521, 8349, 5367, 0, 11669, 0, 2602, 0,
14844, 0, 12942, 0, 0, 0, 0, 0, 14905, 0, 0, 17223, 0, 0,
15329, 1444, 0, 0, 4629, 0, 0, 0, 0, 4976, 5864, 7345, 0,
0, 0, 8198, 0, 10505, 10015, 0, 8999, 0, 0, 7941, 3461, 10097,
0, 0, 13525, 0, 0, 0, 0, 0, 0, 5846, 0, 0, 10449, 0, 9671,
13729, 16937, 0, 0, 585, 0, 10935, 0, 9530, 16545, 6383, 1693,
0, 0, 0, 0, 14936, 0, 0, 0, 0, 883, 0, 0, 1120, 5173, 0,
8529, 9929, 0, 500, 15759, 6241, 9892, 0, 3742, 0, 17265, 0,
16295, 2925, 2881, 7865, 0, 6837, 0, 13752, 8444, 0, 7542, 8094,
0, 1493, 0, 769, 10880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 3960, 3416, 18179, 0, 0, 0, 0, 0, 5094, 0, 0, 0, 15181,
17908, 7083, 0, 16247, 0, 11150, 0, 18792, 0, 0, 0, 3620, 15284,
16721, 10098, 0, 0, 9152, 0, 0, 0, 0, 0, 12558, 0, 17634,
0, 0, 2712, 0, 0, 1955, 0, 0, 0, 0, 13704, 0, 0, 0, 9836,
0, 0, 13010, 0, 0, 4761, 0, 0, 6152, 0, 0, 4172, 8737, 8958,
13101, 13710, 12795, 14398, 0, 0, 0, 9556, 0, 0, 0, 0, 0,
1192, 9199, 0, 0, 0, 3406, 6452, 2277, 15040, 17914, 0, 0,
7629, 0, 0, 12282, 1690, 13060, 2742, 0, 0, 14316, 9060, 4390,
0, 7653, 0, 0, 0, 16064, 10120, 16191, 0, 0, 0, 1855, 3466,
7052, 0, 4987, 8702, 9841, 3037, 0, 3576, 18470, 0, 10986, 0,
0, 0, 18064, 0, 5267, 11284, 12900, 0, 0, 0, 17130, 0, 2403,
8892, 0, 3899, 8345, 12380, 0, 0, 0, 926, 0, 18394, 0, 0,
2240, 0, 0, 13854, 0, 1666, 0, 4444, 9260, 754, 14101, 0, 14065,
12330, 0, 0, 13039, 9804, 409, 2555, 0, 0, 0, 0, 0, 2590,
15217, 0, 17997, 2643, 0, 0, 6810, 0, 0, 0, 0, 3733, 462,
0, 0, 0, 12528, 15551, 14695, 0, 2854, 9893, 0, 10189, 0, 0,
0, 0, 0, 17507, 0, 13638, 6451, 5146, 0, 14243, 2326, 1232,
0, 8631, 0, 0, 0, 4749, 0, 0, 12927, 0, 0, 0, 0, 4285, 3319,
2231, 0, 0, 0, 0, 9902, 16330, 0, 4790, 0, 0, 2626, 426, 0,
0, 515, 0, 12349, 0, 0, 9988, 0, 0, 0, 5565, 0, 0, 16071,
1135, 6392, 11401, 0, 13132, 2198, 10188, 500, 0, 8422, 1868,
12010, 0, 1791, 878, 18493, 2905, 502, 11628, 0, 0, 4710, 0,
0, 0, 5761, 5482, 0, 0, 0, 12765, 4342, 15055, 0, 6355, 0,
9867, 0, 11601, 0, 0, 1281, 0, 0, 0, 0, 0, 0, 0, 10791, 6532,
0, 0, 0, 6308, 3904, 0, 1082, 15350, 0, 0, 3190, 0, 8038,
148, 0, 0, 17836, 0, 6800, 0, 8820, 0, 0, 18557, 791, 5003,
0, 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4902, 0, 3974,
3067, 8583, 13036, 4761, 0, 0, 17830, 8240, 0, 0, 0, 0, 0,
0, 0, 6336, 0, 626, 0, 0, 0, 0, 0, 13618, 12974, 0, 0, 0,
0, 0, 8292, 13037, 9039, 0, 0, 0, 2418, 15953, 0, 0, 8735,
0, 0, 0, 3017, 0, 1295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17979,
3866, 11271, 15803, 0, 5746, 10975, 0, 0, 6706, 0, 10206, 0,
15615, 0, 0, 0, 0, 0, 7586, 0, 0, 0, 0, 4388, 0, 0, 4594,
0, 0, 3598, 0, 0, 3987, 11023, 3303, 7705, 5680, 17456, 2310,
9775, 3096, 6202, 9481, 8471, 0, 0, 12028, 8470, 0, 8475, 0,
16429, 0, 0, 12115, 0, 17853, 18365, 16066, 0, 0, 14538, 0,
0, 0, 17816, 14018, 0, 11937, 18366, 13271, 4856, 8747, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14373, 9819, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 2264, 276, 9780, 0, 8017, 0,
0, 0, 3721, 0, 9976, 16722, 0, 0, 0, 0, 13949, 3815, 0, 0,
0, 6834, 0, 0, 17801, 0, 817, 0, 0, 0, 7443, 18181, 0, 0,
18602, 0, 0, 0, 0, 15725, 0, 4403, 0, 0, 12289, 0, 0, 3958,
1180, 0, 12065, 3071, 0, 0, 9605, 0, 14084, 1198, 0, 6082,
4678, 9838, 670, 0, 8576, 0, 807, 9603, 12056, 6102, 14243,
0, 8574, 0, 0, 0, 0, 0, 5634, 0, 17556, 828, 8406, 0, 0,
531, 1996, 0, 0, 0, 0, 0, 2472, 0, 0, 0, 0, 1103, 1504, 7975,
0, 11270, 13503, 0, 1375, 0, 0, 4824, 11409, 4974, 0, 7974,
0, 0, 1926, 0, 7773, 0, 0, 11650, 9117, 18582, 0, 0, 0, 4245,
18289, 0, 0, 0, 3635, 0, 0, 0, 0, 0, 2861, 0, 165, 0, 0,
13865, 18491, 0, 0, 0, 16115, 3595, 0, 4720, 0, 0, 5446, 0,
0, 8739, 15673, 0, 9612, 474, 0, 8594, 0, 15104, 0, 16213,
0, 12003, 0, 7641, 1128, 16831, 1025, 0, 0, 0, 14838, 0, 0,
0, 11991, 2027, 0, 0, 11879, 0, 0, 17151, 0, 17527, 13168,
7006, 12918, 6971, 15435, 0, 5222, 17120, 0, 0, 0, 1391, 6080,
2559, 0, 6352, 373, 0, 0, 0, 4375, 12582, 0, 512, 0, 0, 5503,
12157, 0, 14865, 16650, 0, 0, 12367, 0, 0, 7275, 0, 18588,
0, 5068, 7522, 0, 7914, 17939, 4776, 8741, 0, 0, 0, 0, 3631,
6381, 0, 11346, 0, 0, 0, 16806, 0, 4051, 0, 3926, 0, 0, 0,
0, 7472, 0, 6884, 1560, 0, 504, 0, 0, 0, 0, 0, 13333, 0,
0, 0, 0, 0, 0, 14126, 0, 3168, 12200, 3832, 9936, 0, 8897,
0, 16149, 0, 0, 2682, 2784, 17909, 0, 0, 0, 0, 5586, 9157,
0, 5608, 0, 362, 0, 0, 0, 0, 14409, 15279, 13622, 0, 4210,
0, 0, 3176, 9091, 3552, 10199, 0, 9063, 0, 0, 0, 0, 5875,
0, 0, 5124, 959, 1067, 0, 0, 17210, 7041, 266, 0, 5802, 7027,
12368, 12448, 0, 2719, 0, 0, 0, 17544, 0, 0, 3479, 0, 0, 3480,
0, 0, 0, 1273, 13168, 7114, 9989, 12190, 7707, 1744, 15577,
0, 12188, 0, 2480, 5763, 3474, 339, 0, 0, 5178, 0, 3478, 0,
3477, 3917, 0, 6193, 0, 12647, 14655, 0, 14672, 0, 0, 0, 1912,
9064, 4250, 0, 0, 4151, 0, 0, 1733, 10657, 5898, 18296, 0,
0, 12594, 8270, 3009, 1661, 13555, 0, 8567, 0, 0, 0, 16697,
0, 0, 3781, 11445, 1985, 0, 1121, 11531, 2208, 9923, 0, 0,
0, 2436, 0, 0, 17372, 0, 0, 0, 9519, 0, 12214, 0, 3068, 16947,
0, 11471, 13392, 15836, 2886, 84, 5787, 11502, 5461, 13705, 0,
0, 0, 0, 0, 0, 11807, 0, 1536, 0, 0, 0, 0, 11115, 5753, 10534,
0, 1770, 4306, 234, 0, 0, 0, 16029, 10478, 2448, 18526, 0,
16452, 0, 121, 0, 0, 0, 749, 0, 0, 0, 2645, 3787, 0, 0, 0,
0, 0, 0, 9823, 0, 0, 1939, 3604, 0, 6136, 1207, 16203, 18021,
11940, 18455, 0, 0, 0, 8371, 0, 13831, 0, 12932, 6253, 5426,
0, 4240, 8839, 0, 0, 10582, 5879, 3132, 0, 17580, 0, 18360,
7092, 8052, 6008, 7497, 0, 8450, 10279, 0, 6299, 5061, 0, 18092,
3051, 8860, 6994, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15212, 0, 0,
11415, 18223, 0, 0, 0, 0, 7392, 1882, 3641, 8172, 15480, 974,
9613, 6857, 3604, 0, 10662, 12711, 7237, 0, 10863, 2077, 533,
17182, 0, 8196, 0, 0, 11891, 18017, 6980, 0, 0, 14546, 0, 3083,
0, 0, 4490, 0, 0, 4253, 4939, 0, 0, 0, 0, 3894, 0, 4132,
0, 0, 0, 0, 17320, 0, 0, 0, 0, 6754, 0, 13479, 8968, 15269,
18524, 760, 11251, 5072, 15143, 6460, 15375, 5458, 6120, 17438,
15266, 0, 13087, 3698, 16782, 0, 0, 0, 7394, 0, 0, 0, 0, 15257,
0, 18710, 1956, 5242, 7743, 5035, 15405, 0, 0, 14874, 7700,
8811, 0, 0, 3611, 7838, 9488, 10138, 3621, 0, 3617, 0, 2289,
6068, 0, 0, 3613, 0, 0, 2450, 6093, 0, 10079, 0, 11249, 1012,
8177, 10181, 0, 1485, 8137, 3000, 15358, 5533, 4516, 12619, 0,
14174, 4419, 0, 0, 0, 0, 18816, 0, 8342, 18442, 12703, 4357,
12203, 10678, 12155, 0, 7461, 5977, 1920, 8870, 14419, 0, 16176,
0, 8028, 0, 5357, 5337, 0, 0, 12368, 0, 0, 0, 14754, 14600,
11469, 5293, 0, 4394, 0, 0, 0, 4874, 0, 7496, 15441, 0, 0,
517, 6712, 2344, 1353, 0, 7388, 0, 16165, 0, 6312, 4962, 1601,
8880, 0, 562, 0, 7338, 14007, 8627, 17826, 0, 0, 3947, 14769,
0, 0, 8110, 1736, 16317, 0, 0, 0, 13400, 0, 0, 0, 9584, 9244,
7270, 15576, 1979, 0, 0, 0, 11756, 0, 7851, 5182, 0, 6087,
0, 9507, 0, 0, 338, 13159, 2123, 0, 835, 0, 0, 3230, 0, 10930,
0, 0, 1573, 0, 0, 0, 2118, 0, 13649, 5580, 0, 13123, 13374,
0, 0, 3282, 0, 13709, 3581, 5602, 0, 0, 9355, 11455, 18228,
0, 13988, 10095, 0, 0, 4641, 0, 595, 0, 11503, 0, 12475, 0,
11931, 0, 8484, 0, 0, 4963, 3713, 17542, 1450, 267, 6875, 0,
0, 0, 17823, 13502, 0, 0, 0, 5776, 0, 18022, 0, 0, 11728,
0, 0, 0, 1796, 13258, 9092, 0, 14734, 10013, 0, 4248, 6952,
0, 14755, 992, 0, 2305, 2498, 0, 18371, 0, 0, 0, 14394, 0,
0, 0, 5410, 0, 11926, 0, 16139, 964, 2982, 17280, 16813, 0,
15805, 0, 8169, 0, 5922, 15034, 1432, 13050, 0, 0, 2222, 0,
13309, 15123, 10063, 0, 7771, 0, 14241, 0, 13387, 0, 0, 5793,
0, 4826, 0, 0, 0, 0, 0, 0, 0, 18237, 0, 0, 0, 5656, 0, 4231,
8223, 718, 0, 0, 8454, 0, 0, 2775, 0, 15756, 0, 0, 0, 0,
0, 1966, 0, 14523, 0, 8380, 6143, 0, 0, 0, 6683, 13731, 0,
10097, 0, 8628, 0, 0, 0, 0, 0, 0, 9762, 7439, 0, 1227, 7360,
5544, 4486, 0, 3677, 0, 13224, 0, 0, 13798, 17794, 0, 8353,
0, 12287, 16253, 0, 0, 4482, 0, 6734, 73, 0, 1111, 0, 6271,
11872, 0, 10032, 9916, 2194, 0, 1066, 14067, 2406, 0, 5462,
17380, 3738, 9727, 5457, 12719, 17721, 0, 17339, 18057, 0, 14495,
11761, 0, 0, 0, 0, 0, 0, 3338, 10825, 14806, 0, 953, 6078,
0, 5880, 0, 0, 2255, 3081, 18136, 0, 0, 4951, 0, 17255, 0,
0, 10416, 1621, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12443, 0,
0, 0, 0, 10321, 0, 6825, 10261, 0, 13785, 0, 0, 17534, 4375,
12580, 0, 13516, 7409, 0, 1959, 0, 0, 11970, 10132, 0, 0, 0,
0, 17380, 7402, 0, 12035, 11745, 2600, 15699, 18483, 0, 13456,
4498, 9044, 0, 0, 3623, 16057, 0, 0, 0, 11245, 10246, 12813,
0, 0, 0, 0, 1605, 5051, 0, 0, 0, 9059, 1222, 1346, 0, 0,
0, 0, 0, 9487, 2450, 8956, 0, 13659, 0, 7479, 0, 0, 0, 16859,
0, 5560, 2266, 2342, 0, 4502, 0, 0, 15466, 0, 9725, 0, 0,
0, 0, 15821, 17276, 7046, 18768, 0, 18174, 0, 4748, 6954, 0,
7768, 0, 13650, 0, 7703, 0, 0, 0, 3512, 8667, 0, 0, 0, 17071,
4936, 0, 1442, 9508, 0, 2728, 7395, 0, 5816, 0, 0, 4369, 0,
14738, 2960, 0, 16188, 8239, 0, 8641, 17423, 15568, 2768, 0,
3527, 1371, 14878, 1867, 8249, 0, 12427, 0, 6848, 0, 0, 4563,
8251, 4267, 8253, 126, 6967, 9428, 0, 0, 7515, 0, 0, 0, 11699,
1546, 15346, 0, 4741, 6992, 0, 0, 12531, 0, 15700, 4116, 8430,
0, 0, 0, 6371, 7563, 17018, 17026, 0, 15042, 1853, 7984, 1490,
6248, 0, 500, 2327, 0, 6365, 0, 5680, 7642, 0, 2005, 13150,
0, 0, 18482, 9892, 0, 0, 0, 0, 1878, 7210, 0, 13290, 15593,
7792, 0, 0, 0, 4211, 0, 463, 0, 0, 0, 0, 7770, 16029, 3495,
0, 0, 0, 17625, 16033, 8255, 4131, 15929, 5876, 14013, 16733,
0, 18605, 6414, 15692, 0, 15702, 3998, 0, 0, 1207, 17869, 17497,
0, 243, 16153, 16061, 0, 11752, 2074, 18370, 0, 0, 0, 0, 0,
0, 0, 15552, 4212, 13798, 0, 2981, 0, 0, 0, 13882, 12004, 18615,
0, 1631, 7933, 0, 0, 14138, 0, 8950, 0, 18087, 211, 6860, 0,
0, 0, 0, 0, 366, 2256, 0, 4303, 7573, 0, 0, 17711, 0, 1709,
18211, 0, 17589, 0, 11848, 0, 9575, 0, 5590, 12737, 0, 0, 0,
0, 0, 2945, 0, 11256, 1104, 0, 0, 0, 0, 10095, 18634, 11403,
468, 17486, 8596, 17184, 6882, 18524, 7218, 2327, 0, 17156, 16243,
14482, 8643, 0, 0, 0, 5286, 16596, 0, 9803, 6843, 1519, 0,
18788, 0, 15317, 17671, 2427, 0, 16595, 6578, 1097, 3961, 3277,
0, 0, 0, 0, 3412, 3305, 18224, 0, 0, 0, 17171, 0, 0, 0, 0,
0, 0, 10246, 17055, 11375, 0, 0, 17704, 4678, 2544, 70, 3514,
15719, 0, 68, 3515, 0, 3516, 0, 0, 0, 7617, 5671, 8549, 42,
7803, 0, 3517, 8847, 0, 3122, 0, 0, 11171, 0, 0, 0, 0, 0,
0, 0, 0, 17399, 0, 3217, 0, 0, 0, 3971, 11036, 0, 11346, 0,
7334, 0, 0, 0, 5649, 2091, 737, 618, 0, 3715, 0, 8931, 4732,
156, 0, 17577, 7873, 2103, 12228, 0, 0, 4598, 0, 14614, 0,
2461, 0, 5375, 0, 14444, 0, 4583, 0, 0, 9329, 0, 2395, 386,
14515, 0, 17859, 0, 874, 9338, 0, 13416, 16035, 0, 0, 17625,
0, 0, 12935, 17368, 0, 0, 0, 0, 15712, 0, 0, 8369, 2116, 0,
13492, 8811, 1650, 4837, 1421, 15256, 0, 0, 0, 11235, 0, 0,
0, 16474, 5521, 9032, 0, 17704, 0, 0, 12281, 5242, 0, 0, 3428,
0, 0, 0, 0, 648, 0, 14880, 9313, 5307, 1941, 5627, 0, 0, 5210,
2214, 467, 13167, 4256, 9919, 0, 0, 2363, 0, 0, 0, 0, 4591,
5534, 6755, 8272, 0, 0, 0, 3971, 4770, 0, 0, 3526, 3253, 0,
0, 18570, 0, 0, 9526, 0, 0, 0, 16348, 0, 1547, 13801, 0, 8763,
0, 0, 10188, 0, 248, 6820, 1181, 16234, 5715, 0, 0, 16565,
13795, 16384, 1775, 4314, 14736, 13321, 9336, 17296, 0, 0, 13839,
0, 4224, 0, 0, 0, 0, 17350, 8887, 3639, 8607, 0, 0, 0, 0,
0, 0, 17368, 6352, 13589, 0, 1170, 0, 0, 7713, 0, 2019, 0,
0, 0, 0, 107, 0, 0, 0, 0, 9811, 0, 0, 0, 0, 7409, 0, 0,
0, 0, 2412, 950, 0, 8681, 4838, 0, 0, 10467, 9965, 4111, 0,
2146, 4776, 6679, 11517, 12788, 0, 0, 0, 12149, 3475, 0, 0,
0, 10194, 14353, 0, 6424, 0, 5471, 12941, 4864, 11572, 139,
0, 15767, 13607, 0, 0, 0, 7704, 4929, 6040, 6096, 7333, 15247,
0, 10523, 4803, 0, 0, 929, 0, 10894, 0, 4200, 0, 0, 0, 2791,
1848, 0, 6328, 14169, 3688, 249, 0, 0, 0, 0, 0, 0, 0, 3593,
771, 0, 4203, 14152, 0, 0, 15025, 12950, 5214, 6220, 0, 16386,
17394, 0, 3299, 7509, 175, 7506, 0, 17902, 17396, 0, 0, 7856,
0, 0, 9936, 3488, 0, 5836, 11156, 0, 0, 0, 16991, 7534, 804,
0, 0, 2041, 14587, 7531, 0, 0, 0, 0, 0, 0, 0, 3073, 913,
0, 3447, 0, 0, 10013, 3499, 0, 12812, 6191, 0, 9643, 0, 5986,
0, 584, 0, 0, 0, 3923, 0, 8419, 17569, 3629, 0, 0, 1306, 8185,
18675, 0, 0, 0, 3252, 0, 0, 3882, 9419, 5456, 7025, 0, 8391,
0, 0, 0, 0, 7966, 0, 1126, 0, 2685, 1361, 16154, 17954, 0,
7492, 17157, 0, 0, 0, 0, 5400, 0, 10257, 3857, 0, 0, 0, 0,
10751, 17757, 0, 8324, 16457, 0, 0, 0, 0, 6828, 17441, 15849,
0, 0, 15249, 3288, 6521, 0, 8060, 1465, 0, 6521, 8054, 3379,
0, 7042, 0, 6641, 4754, 4989, 0, 3679, 0, 0, 8032, 0, 8414,
8754, 8050, 1671, 0, 14582, 8040, 0, 0, 0, 0, 0, 0, 0, 0,
14201, 0, 1997, 0, 0, 9299, 0, 2641, 0, 0, 0, 18476, 0, 6887,
10445, 0, 0, 9825, 16333, 0, 0, 6715, 3720, 0, 0, 0, 12587,
6781, 3496, 4395, 0, 8998, 2075, 0, 10447, 0, 0, 0, 0, 15836,
0, 285, 0, 2698, 476, 6989, 3885, 0, 18689, 0, 3876, 0, 8995,
10081, 0, 1522, 18274, 15774, 455, 13442, 8993, 0, 6649, 0,
0, 0, 11000, 15934, 0, 0, 0, 17058, 9928, 10157, 13842, 18390,
10424, 0, 0, 0, 70, 0, 0, 4497, 0, 0, 0, 0, 0, 16732, 2822,
17964, 0, 2780, 0, 4413, 3044, 357, 18284, 5491, 1464, 15942,
0, 0, 0, 0, 5868, 0, 0, 0, 0, 139, 0, 0, 0, 12259, 0, 3636,
2438, 0, 6964, 0, 5588, 9497, 12682, 0, 17212, 0, 18782, 793,
0, 0, 0, 0, 13749, 0, 0, 519, 0, 2257, 0, 1382, 0, 8709,
0, 0, 8609, 13555, 6927, 0, 11998, 7387, 5982, 7792, 7809, 1137,
1167, 0, 0, 472, 0, 4597, 15701, 17390, 9733, 13502, 10718,
17899, 12594, 4154, 616, 13056, 10427, 4451, 8797, 18499, 7010,
12248, 5236, 11810, 15095, 7494, 0, 1118, 0, 17469, 0, 14206,
0, 17001, 0, 0, 11719, 1462, 1254, 0, 0, 0, 0, 7425, 0, 5599,
1555, 3383, 0, 11112, 0, 2575, 0, 0, 0, 0, 0, 7853, 0, 1297,
14697, 10743, 8936, 0, 111, 0, 0, 0, 0, 123, 6435, 2840, 13761,
0, 16145, 0, 0, 5240, 0, 2913, 5374, 878, 0, 0, 5752, 0, 5227,
0, 0, 0, 3230, 0, 2156, 755, 0, 0, 7807, 529, 18714, 14176,
0, 7014, 1110, 0, 15065, 7836, 0, 5382, 6374, 0, 5434, 1448,
0, 7536, 3386, 2271, 0, 0, 0, 16098, 14408, 0, 2039, 0, 231,
0, 7644, 4643, 3793, 101, 5207, 101, 0, 1422, 13324, 4789, 18185,
0, 1346, 9176, 16018, 15072, 18066, 16257, 15093, 1153, 13785,
7265, 0, 1182, 5881, 0, 6360, 7263, 0, 0, 7043, 12500, 0, 0,
8489, 99, 0, 14742, 13221, 2003, 3433, 0, 8487, 7261, 0, 18432,
0, 4495, 7341, 7326, 16864, 5623, 2390, 7359, 7353, 4628, 7327,
7323, 7342, 7319, 7338, 8666, 7340, 0, 0, 8680, 0, 7999, 8383,
75, 0, 3196, 0, 6972, 1001, 9525, 5086, 8689, 7650, 0, 0, 16646,
0, 16133, 16540, 0, 433, 2056, 2217, 0, 7265, 0, 4989, 9298,
17232, 6409, 5614, 7169, 0, 0, 2108, 11856, 17264, 0, 1028,
0, 11084, 6207, 0, 13773, 3646, 0, 16840, 0, 0, 14361, 1059,
0, 0, 0, 0, 6037, 0, 1938, 0, 0, 0, 0, 6947, 15527, 9454,
3370, 622, 17022, 16167, 3670, 4852, 8293, 465, 3371, 2752, 7062,
8183, 1928, 0, 0, 0, 13571, 14413, 0, 0, 4194, 6107, 0, 13856,
16864, 16300, 6024, 8033, 0, 1564, 0, 0, 0, 9943, 10091, 13766,
17750, 11949, 5324, 1708, 0, 0, 0, 0, 0, 9794, 10127, 0, 4,
0, 6193, 0, 0, 17938, 14759, 408, 0, 0, 0, 7109, 0, 0, 0,
0, 0, 262, 18755, 11089, 3122, 15060, 0, 6441, 0, 3060, 0,
0, 11183, 0, 17940, 0, 9584, 0, 1678, 7149, 0, 0, 9945, 0,
7142, 1147, 0, 0, 2934, 10443, 6796, 0, 12607, 1097, 18548,
0, 1534, 0, 0, 0, 0, 14948, 15912, 10039, 0, 0, 5117, 12866,
17615, 0, 12429, 10087, 14894, 0, 0, 0, 4920, 0, 12508, 0,
12281, 13752, 0, 2833, 7897, 0, 3194, 18062, 15712, 0, 0, 4990,
1124, 1196, 0, 0, 18086, 11010, 0, 0, 15526, 913, 16295, 4525,
6504, 7105, 0, 0, 0, 18249, 13321, 1249, 10315, 5380, 0, 0,
16833, 0, 9615, 0, 0, 0, 14352, 0, 1067, 0, 14587, 0, 0, 2903,
13802, 15820, 3218, 13552, 0, 9590, 16186, 1459, 0, 10596, 0,
0, 15786, 6863, 0, 536, 0, 0, 2581, 3734, 8281, 0, 984, 0,
0, 10873, 0, 6548, 7634, 0, 6260, 0, 9202, 0, 16982, 0, 15458,
16680, 6558, 0, 11748, 0, 18591, 14079, 14991, 0, 0, 2227, 0,
5462, 0, 0, 0, 0, 0, 6576, 0, 0, 9063, 17969, 9649, 0, 18194,
1572, 590, 0, 0, 2740, 0, 0, 0, 0, 1798, 0, 2887, 4713, 0,
1904, 8200, 428, 0, 0, 13683, 15766, 3447, 2554, 0, 0, 6170,
12783, 12867, 0, 0, 0, 7095, 11702, 15834, 0, 164, 0, 0, 8122,
17150, 854, 3472, 0, 290, 0, 5840, 13453, 3471, 4847, 0, 0,
8730, 4160, 13470, 0, 0, 4735, 3469, 4248, 0, 0, 3468, 0, 1718,
0, 6174, 967, 5024, 13427, 0, 9920, 3314, 16773, 0, 107, 4065,
7991, 0, 8275, 0, 17810, 18262, 14730, 16062, 0, 0, 5725, 5166,
1213, 12865, 0, 0, 256, 0, 0, 0, 0, 10603, 0, 962, 15408,
1100, 14891, 0, 0, 15301, 8145, 10482, 0, 0, 4454, 0, 7886,
4248, 14299, 0, 0, 16822, 9173, 0, 17198, 6197, 13603, 0, 0,
0, 0, 394, 420, 0, 0, 0, 9690, 8558, 0, 0, 0, 18351, 4464,
79, 510, 0, 918, 6349, 3989, 5957, 0, 0, 0, 0, 925, 3246,
8137, 2468, 18, 0, 0, 397, 17803, 7833, 16675, 8443, 0, 16968,
0, 6752, 16222, 0, 3617, 10547, 17284, 0, 0, 0, 0, 0, 0, 0,
3930, 0, 1355, 0, 0, 12335, 9548, 16378, 1275, 1470, 17096,
0, 0, 0, 0, 4694, 0, 7631, 0, 12071, 0, 395, 6329, 0, 1552,
0, 10435, 0, 0, 14339, 5292, 13362, 1027, 4757, 758, 18805,
0, 4961, 0, 12957, 13005, 0, 0, 4164, 5002, 9247, 0, 11450,
10311, 0, 0, 784, 0, 12090, 6960, 0, 11140, 0, 0, 0, 11805,
4013, 15973, 5022, 0, 0, 5314, 16340, 10207, 0, 0, 695, 1315,
10165, 0, 0, 0, 6803, 3853, 0, 14025, 0, 0, 10715, 7939, 0,
12105, 0, 730, 4196, 4092, 0, 0, 11176, 14355, 0, 11364, 0,
0, 0, 3204, 0, 10189, 0, 1568, 6026, 10, 0, 2893, 0, 0, 0,
8375, 18725, 1393, 0, 0, 463, 0, 0, 17333, 0, 0, 2022, 0,
0, 0, 7041, 14306, 7041, 0, 0, 0, 0, 0, 6292, 12033, 0, 0,
8823, 10727, 0, 0, 3939, 1395, 3426, 0, 9455, 17548, 0, 10244,
0, 0, 0, 0, 0, 0, 0, 0, 2458, 0, 18055, 18244, 3687, 17387,
0, 16183, 0, 18180, 4265, 8016, 12865, 8802, 2640, 0, 16151,
0, 0, 4634, 0, 16149, 0, 15139, 0, 0, 0, 0, 7324, 0, 0, 13545,
4105, 0, 15363, 0, 437, 2492, 0, 0, 7084, 15450, 2014, 0, 13810,
0, 0, 0, 16130, 0, 7038, 782, 1583, 0, 17411, 0, 5075, 9900,
0, 7116, 2171, 0, 0, 5316, 1591, 0, 14764, 0, 4058, 0, 0,
702, 2072, 0, 5526, 0, 4057, 6688, 18427, 0, 11765, 0, 0, 0,
0, 0, 0, 0, 0, 0, 17050, 9622, 17927, 0, 10121, 0, 5043, 0,
4870, 0, 0, 0, 0, 0, 2634, 0, 0, 0, 10931, 0, 7362, 0, 9912,
1459, 0, 0, 8192, 3326, 0, 9427, 0, 14172, 0, 14880, 4600,
10425, 0, 17994, 14477, 5716, 3039, 9649, 0, 4616, 0, 17908,
0, 0, 4248, 8510, 5303, 3231, 0, 0, 17953, 0, 2351, 9395, 0,
2130, 3038, 3030, 3515, 8215, 4638, 0, 8769, 6022, 6535, 6567,
8834, 1036, 1202, 2324, 6631, 6013, 8924, 1097, 4535, 5718, 2833,
13618, 10376, 0, 16554, 5637, 12239, 0, 3944, 11539, 2167, 0,
0, 0, 3962, 0, 0, 0, 5247, 8871, 2519, 5710, 2565, 0, 3961,
0, 6861, 0, 0, 11859, 1748, 0, 0, 0, 8080, 0, 1846, 0, 0,
2461, 0, 12844, 4225, 18623, 2044, 9310, 7090, 7252, 8872, 9306,
11599, 12007, 10833, 15387, 0, 11474, 377, 5887, 4062, 3247,
2877, 6782, 13092, 6195, 17061, 9396, 1337, 9313, 5060, 3111,
0, 0, 0, 0, 16387, 0, 0, 0, 0, 0, 0, 0, 0, 12412, 18320,
0, 0, 5872, 7638, 0, 0, 0, 11381, 15352, 4580, 0, 3517, 10902,
0, 8954, 0, 7471, 0, 0, 2824, 0, 0, 1952, 0, 0, 17829, 13818,
17885, 0, 8746, 8070, 3343, 0, 12692, 4655, 10374, 11954, 7629,
1311, 11905, 0, 7296, 0, 7292, 0, 2452, 9887, 11276, 9384, 0,
0, 8511, 0, 17211, 87, 3654, 0, 18689, 0, 0, 0, 4212, 0, 10070,
13506, 0, 0, 0, 0, 6935, 18716, 3956, 6331, 12330, 0, 10237,
0, 4635, 15059, 0, 0, 6812, 0, 10431, 0, 10699, 9176, 10433,
8255, 3246, 0, 14974, 2082, 6388, 0, 0, 0, 0, 954, 5121, 6257,
3667, 0, 7769, 0, 9787, 8877, 6193, 4823, 0, 6458, 11349, 15534,
0, 756, 9798, 10335, 0, 0, 0, 4845, 11438, 0, 7436, 4151, 718,
0, 3738, 6053, 0, 7712, 3845, 17128, 0, 2999, 1784, 0, 0, 0,
1906, 4922, 10077, 0, 17641, 15011, 13249, 18113, 6666, 0, 0,
16467, 12965, 16249, 3990, 15813, 2218, 9564, 433, 4778, 6089,
0, 0, 0, 0, 10025, 0, 6821, 0, 6065, 0, 0, 0, 0, 0, 0, 0,
4988, 0, 0, 2552, 0, 6696, 2904, 1895, 12667, 0, 3341, 3471,
0, 6416, 18059, 8200, 12995, 17718, 13989, 0, 6399, 0, 0, 0,
5885, 12235, 13292, 0, 8841, 3740, 14817, 0, 0, 8644, 2985,
10404, 2112, 6367, 11690, 14153, 0, 0, 0, 13505, 8947, 0, 18816,
0, 0, 0, 0, 0, 0, 3694, 8691, 0, 17323, 4892, 0, 0, 7411,
2090, 0, 11279, 9443, 0, 316, 0, 0, 1104, 2113, 333, 7503,
9005, 0, 0, 1670, 0, 3783, 0, 0, 8615, 0, 0, 0, 5728, 0,
9747, 3626, 9382, 0, 5430, 0, 0, 17194, 16828, 10218, 2624,
0, 0, 6909, 0, 11200, 0, 1930, 0, 0, 0, 10657, 10984, 15505,
0, 18156, 0, 12287, 0, 4334, 6041, 5078, 0, 18315, 12365, 0,
14355, 18357, 0, 10027, 6115, 0, 10373, 874, 7495, 6728, 2738,
13126, 10134, 13113, 8434, 2266, 0, 0, 0, 0, 3284, 0, 0, 6262,
0, 0, 0, 11724, 9982, 0, 5933, 0, 0, 1577, 0, 0, 0, 0, 6091,
6850, 5251, 0, 7261, 0, 11105, 0, 12841, 0, 5104, 1197, 17123,
8658, 15679, 17558, 0, 0, 0, 4738, 10669, 0, 0, 3758, 5088,
0, 3359, 0, 0, 0, 12536, 13902, 0, 0, 14834, 5875, 0, 0, 0,
1894, 3793, 15810, 2574, 16204, 0, 4418, 2141, 7759, 8966, 7712,
1735, 0, 4036, 0, 6560, 0, 4039, 0, 3745, 6485, 0, 8135, 0,
0, 7909, 602, 0, 544, 11614, 10456, 6659, 471, 2773, 11171,
0, 0, 1750, 9516, 0, 0, 11532, 0, 14981, 0, 0, 0, 1959, 2302,
0, 0, 8957, 0, 17307, 0, 13956, 1031, 0, 9855, 0, 13992, 10835,
0, 2618, 99, 10979, 0, 0, 10121, 8671, 9536, 5140, 0, 1883,
0, 15211, 9677, 4163, 0, 0, 0, 0, 0, 6792, 0, 975, 0, 12893,
0, 0, 0, 0, 4242, 0, 0, 0, 10428, 5978, 0, 0, 0, 10083, 0,
12829, 6827, 1432, 2000, 13431, 13518, 1916, 7959, 3485, 0, 0,
0, 0, 7304, 0, 3736, 0, 0, 0, 0, 0, 4611, 6681, 14108, 9031,
1621, 0, 12667, 1080, 4520, 0, 0, 17273, 6967, 7576, 10890,
1982, 9476, 0, 14351, 2600, 0, 7677, 7219, 0, 0, 1980, 5552,
9695, 0, 18532, 0, 602, 0, 5565, 5697, 0, 1248, 2650, 1029,
0, 9680, 1977, 11312, 13887, 14824, 9515, 0, 3729, 15864, 0,
12790, 0, 0, 9856, 0, 7282, 13852, 0, 11735, 3792, 0, 9801,
4276, 4719, 6891, 7285, 0, 7276, 0, 4649, 8290, 7279, 0, 0,
0, 9532, 11445, 13520, 0, 1376, 0, 0, 9713, 0, 0, 2436, 17790,
4425, 0, 0, 2528, 1982, 0, 0, 0, 3744, 0, 12357, 0, 18133,
0, 3920, 0, 10811, 10135, 0, 0, 0, 15089, 3506, 0, 0, 3307,
0, 0, 0, 3302, 0, 9849, 11850, 8066, 0, 3308, 10784, 18743,
14761, 13345, 4926, 7464, 11694, 14282, 0, 14007, 6879, 5084,
2462, 10839, 17887, 15085, 10122, 0, 3823, 9546, 0, 0, 0, 16619,
0, 0, 13875, 9012, 0, 1849, 13023, 17712, 4307, 1764, 0, 4345,
1797, 0, 2972, 11978, 17114, 8656, 15611, 3584, 0, 10036, 350,
0, 4389, 15147, 7568, 9254, 2825, 0, 13734, 17892, 0, 15950,
0, 0, 3807, 0, 0, 0, 5472, 0, 2034, 5655, 1932, 0, 10477,
761, 4949, 208, 18116, 0, 0, 0, 0, 0, 5973, 0, 15208, 10967,
0, 0, 0, 567, 1092, 0, 0, 6457, 0, 0, 14791, 0, 1325, 0,
18548, 1540, 5238, 0, 0, 6568, 7892, 8876, 0, 14384, 0, 0,
0, 18741, 16349, 0, 0, 0, 0, 0, 2212, 0, 0, 10500, 3954, 0,
0, 10072, 6880, 0, 18010, 6527, 15953, 11728, 8127, 0, 1141,
3844, 0, 12611, 10067, 0, 13310, 438, 2386, 0, 0, 7602, 274,
0, 0, 17697, 14683, 13962, 0, 11420, 0, 0, 0, 0, 7646, 0,
0, 0, 0, 0, 0, 4021, 0, 7060, 0, 2888, 0, 1675, 0, 0, 919,
2833, 1255, 0, 6122, 1668, 0, 1476, 18647, 6949, 1461, 12234,
0, 12991, 15147, 0, 0, 7887, 0, 0, 8526, 11182, 0, 6176, 3233,
14014, 0, 18660, 0, 2835, 0, 0, 0, 2251, 0, 0, 193, 0, 0,
3133, 0, 0, 0, 2114, 1340, 0, 0, 15792, 4800, 16202, 0, 0,
3199, 0, 4542, 2941, 5357, 6241, 3800, 13171, 4757, 9768, 0,
18140, 0, 0, 2739, 0, 9602, 12207, 10605, 0, 0, 8284, 10203,
5006, 0, 0, 10594, 10376, 6810, 1950, 0, 8353, 7222, 5074, 10103,
13327, 0, 17241, 1853, 18745, 8739, 0, 0, 0, 16451, 0, 0, 15877,
9719, 2663, 2760, 14511, 0, 7664, 0, 14781, 0, 17402, 1355,
0, 1339, 8250, 0, 2177, 0, 15793, 5573, 9100, 0, 8014, 2520,
0, 6442, 8235, 0, 3826, 0, 16107, 9738, 3927, 0, 4552, 2839,
0, 509, 0, 3259, 11082, 797, 16749, 12202, 5825, 0, 537, 0,
0, 18754, 0, 0, 9102, 0, 17937, 0, 0, 0, 8141, 6359, 0, 0,
17167, 5775, 17668, 3758, 0, 18123, 0, 0, 2711, 8130, 0, 0,
0, 8129, 0, 0, 14825, 6191, 14332, 0, 0, 0, 0, 15283, 1034,
0, 0, 3359, 0, 0, 0, 0, 0, 4654, 15131, 15782, 1607, 0, 17116,
0, 0, 14239, 2037, 0, 0, 0, 5191, 8911, 1228, 11329, 0, 6269,
13374, 6449, 13313, 8913, 15911, 14811, 6042, 3117, 16969, 0,
3279, 1245, 2472, 0, 18238, 0, 17616, 5235, 0, 16834, 0, 7047,
3731, 1405, 0, 15270, 17207, 8633, 4094, 16720, 2778, 340, 6458,
4749, 0, 17754, 11489, 13331, 15165, 11293, 0, 0, 3314, 0, 8969,
0, 0, 0, 4391, 14732, 1107, 4231, 0, 7713, 4065, 0, 0, 0,
0, 4655, 15347, 0, 13599, 18570, 0, 0, 2496, 303, 0, 2269,
16811, 1121, 2809, 13686, 0, 16047, 0, 0, 7945, 3968, 14074,
3970, 0, 8807, 13301, 0, 16232, 4668, 0, 15732, 18312, 17219,
11039, 8075, 0, 5620, 6122, 8656, 5799, 2974, 0, 0, 9871, 0,
0, 7950, 408, 977, 9021, 4157, 0, 0, 2403, 0, 0, 10736, 0,
0, 741, 9066, 124, 0, 11068, 0, 0, 0, 0, 15880, 2156, 0, 0,
1999, 1559, 8009, 0, 0, 0, 0, 10048, 0, 0, 0, 2098, 0, 0,
3316, 3706, 0, 15618, 7537, 2376, 5260, 0, 0, 7990, 16441, 455,
7925, 7968, 0, 2459, 6173, 0, 6904, 15374, 0, 16889, 5853, 0,
4719, 5550, 11724, 7216, 0, 7214, 0, 12604, 14147, 12079, 0,
18738, 7643, 17055, 0, 4650, 17645, 0, 0, 0, 4064, 10444, 1210,
0, 0, 0, 4326, 0, 0, 11108, 0, 15355, 16635, 0, 1889, 0, 0,
0, 0, 2616, 0, 8459, 0, 6616, 0, 15043, 0, 0, 13019, 0, 7203,
0, 0, 239, 4262, 2694, 6253, 2268, 1995, 0, 0, 0, 0, 2747,
1350, 17408, 0, 0, 919, 0, 7188, 0, 4546, 0, 6009, 0, 0, 5688,
473, 15153, 11072, 0, 13650, 0, 0, 4531, 1834, 0, 6662, 0,
7185, 6953, 14561, 0, 0, 8989, 10162, 15069, 0, 17769, 0, 7643,
0, 0, 0, 3244, 5675, 0, 0, 0, 10997, 8836, 4530, 0, 0, 7437,
0, 4091, 10028, 3861, 0, 4902, 0, 12944, 0, 4089, 0, 16799,
0, 8131, 0, 2147, 8041, 15560, 9658, 0, 0, 297, 5626, 0, 0,
0, 7831, 17927, 0, 14009, 822, 4942, 0, 0, 808, 4378, 0, 0,
9038, 5339, 0, 9824, 7873, 7879, 5563, 0, 0, 6789, 11975, 1652,
0, 17746, 9462, 18337, 18758, 0, 2347, 9463, 0, 0, 0, 1244,
13361, 2076, 0, 6685, 496, 4059, 0, 0, 0, 7147, 5233, 0, 0,
0, 0, 32, 14575, 0, 0, 0, 1751, 7627, 0, 17591, 0, 6180, 6594,
5142, 7631, 0, 9093, 3127, 18791, 9568, 4221, 0, 0, 0, 4319,
0, 0, 0, 15900, 6120, 15489, 0, 0, 0, 1266, 1399, 1291, 0,
1292, 0, 0, 0, 3811, 15024, 819, 0, 0, 0, 18107, 9906, 0,
13501, 0, 6804, 0, 16998, 15731, 0, 16618, 9461, 0, 10298, 1946,
16254, 3857, 4383, 0, 14471, 0, 9913, 0, 17232, 0, 14081, 9868,
9526, 0, 0, 1947, 0, 4245, 14066, 14716, 0, 0, 11605, 13445,
9875, 0, 7608, 11810, 329, 12364, 3034, 3410, 0, 11201, 10094,
14901, 8370, 0, 723, 0, 0, 5798, 17532, 0, 0, 0, 0, 16713,
0, 0, 0, 985, 0, 0, 2725, 14085, 0, 8176, 13816, 0, 0, 15443,
18756, 12581, 0, 0, 0, 16320, 2144, 11382, 0, 3981, 0, 16261,
15189, 0, 1153, 6926, 2124, 16641, 0, 326, 0, 0, 0, 8681, 0,
0, 2454, 12589, 0, 18700, 0, 15912, 0, 7575, 0, 7255, 12733,
0, 0, 4958, 15518, 3546, 5065, 4229, 16885, 897, 9614, 12864,
5865, 14656, 9298, 13592, 2896, 15610, 0, 2041, 3591, 0, 0,
14166, 10679, 0, 0, 0, 0, 3142, 0, 4410, 0, 0, 7254, 0, 0,
10368, 15877, 0, 0, 12713, 0, 15718, 1594, 5891, 0, 0, 1323,
18289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7891, 9375, 0, 0, 11306,
0, 7086, 0, 14030, 9367, 15587, 4853, 3839, 12849, 6374, 1236,
733, 7404, 0, 0, 0, 3311, 11847, 0, 1177, 6669, 0, 0, 0, 4526,
6348, 16159, 11138, 14819, 2326, 0, 4278, 0, 4958, 7918, 908,
10979, 8485, 6535, 607, 1219, 0, 0, 13021, 0, 0, 0, 0, 6956,
6638, 0, 3838, 12756, 0, 18495, 9292, 1897, 9294, 9293, 9288,
11341, 5592, 15038, 0, 18773, 0, 0, 0, 0, 0, 0, 466, 14422,
0, 0, 907, 16164, 0, 0, 0, 0, 0, 2035, 0, 0, 0, 15600, 0,
0, 0, 0, 15110, 10601, 14580, 5381, 0, 10751, 0, 0, 0, 0,
4163, 10001, 4790, 752, 0, 0, 0, 0, 14123, 0, 0, 0, 14413,
15097, 1916, 12683, 16060, 17536, 16014, 5023, 1966, 9776, 5047,
0, 0, 5917, 246, 0, 0, 13423, 18367, 0, 0, 0, 0, 7955, 0,
2940, 0, 0, 0, 12653, 17781, 423, 773, 0, 0, 9211, 0, 0, 0,
0, 10121, 0, 0, 18832, 14483, 1597, 0, 0, 0, 0, 3306, 5186,
1711, 0, 15925, 16399, 5321, 0, 0, 0, 14582, 0, 0, 0, 1215,
0, 15745, 0, 112, 10160, 0, 0, 0, 4851, 3932, 0, 2165, 0,
7984, 0, 17327, 0, 0, 0, 1051, 16812, 779, 0, 4476, 8639, 0,
15892, 0, 1643, 16919, 0, 5652, 0, 5388, 0, 10005, 1144, 2721,
5442, 148, 0, 14505, 0, 3118, 16386, 0, 7875, 6363, 18510, 9778,
17861, 7660, 3411, 7639, 4015, 13972, 0, 1061, 8848, 5216, 0,
10736, 0, 696, 0, 4492, 2243, 18211, 4758, 0, 1979, 0, 4121,
8788, 3353, 0, 11067, 0, 0, 0, 3349, 6642, 13983, 18569, 0,
14338, 0, 1063, 0, 12369, 0, 0, 4463, 11797, 0, 0, 10158, 0,
956, 0, 0, 0, 3190, 760, 1574, 12021, 12153, 8295, 7381, 0,
0, 0, 0, 11542, 0, 8190, 10519, 125, 0, 5959, 15060, 0, 0,
509, 2581, 729, 0, 4204, 0, 0, 0, 2329, 0, 0, 16549, 0, 2100,
2470, 12539, 2428, 0, 0, 9560, 0, 17504, 0, 575, 0, 2675, 0,
1002, 5047, 16485, 0, 3818, 14740, 13570, 0, 0, 0, 947, 0,
10522, 0, 653, 0, 0, 1888, 15816, 27, 0, 0, 647, 115, 16342,
10023, 12989, 0, 11818, 0, 6814, 0, 3088, 249, 0, 10735, 3879,
17943, 0, 12226, 12731, 5805, 10876, 0, 0, 8400, 12540, 6413,
0, 0, 0, 5593, 0, 11316, 0, 13108, 12396, 0, 12928, 0, 0,
12405, 10318, 0, 13831, 7777, 3675, 0, 16371, 9121, 8726, 0,
4074, 16097, 0, 0, 0, 6277, 18148, 0, 0, 2294, 0, 0, 0, 5397,
2329, 9758, 0, 1820, 17779, 0, 0, 11173, 15352, 0, 0, 1832,
2372, 15702, 18319, 0, 0, 5705, 3715, 0, 0, 0, 0, 0, 0, 17599,
1021, 0, 6579, 6068, 0, 7133, 17174, 0, 0, 9760, 0, 10022,
0, 18273, 0, 0, 13728, 12674, 705, 0, 5117, 15399, 0, 2278,
0, 0, 0, 17197, 0, 7165, 14993, 12963, 0, 10144, 12651, 0,
9218, 0, 0, 4550, 0, 0, 0, 13778, 9850, 2323, 0, 35, 9634,
0, 5248, 0, 0, 0, 11291, 2598, 0, 1752, 0, 2026, 0, 0, 17264,
132, 14126, 0, 2740, 0, 0, 7166, 0, 0, 0, 6076, 12622, 7173,
0, 2459, 0, 0, 14329, 14715, 0, 18704, 8820, 0, 0, 936, 16632,
0, 0, 1336, 3753, 14227, 1826, 5524, 6027, 18174, 3560, 9037,
0, 0, 0, 8357, 0, 0, 7022, 0, 5934, 0, 0, 0, 880, 0, 0,
2026, 17858, 11910, 16697, 0, 1497, 0, 17862, 17577, 3052, 0,
0, 12759, 1104, 1762, 6799, 9971, 18101, 7907, 830, 3835, 15799,
0, 17224, 0, 0, 0, 17560, 6285, 0, 0, 17509, 6704, 14494, 3868,
10442, 0, 4318, 0, 0, 6543, 0, 0, 0, 1722, 0, 0, 7310, 10759,
0, 0, 13300, 0, 0, 5042, 3973, 12753, 14076, 11015, 0, 8246,
2113, 0, 0, 7221, 18794, 8350, 0, 17977, 0, 9193, 10911, 0,
430, 0, 9799, 3947, 1196, 10130, 0, 15015, 5405, 17513, 0, 0,
0, 4152, 467, 18785, 0, 10540, 8420, 16532, 5649, 4153, 0, 8682,
0, 7739, 0, 0, 0, 0, 7555, 5531, 0, 8686, 9505, 0, 15836,
0, 17751, 0, 3421, 6853, 12765, 18699, 16757, 18125, 17680, 3821,
3423, 0, 3940, 15767, 720, 3424, 15141, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 450, 0, 0, 13675, 0, 0, 6336, 2425, 5895, 176,
0, 0, 0, 5754, 7772, 0, 14365, 0, 13540, 13978, 13317, 11876,
2365, 17737, 3189, 5363, 0, 2575, 6132, 0, 0, 0, 3743, 0, 14887,
8775, 3425, 6298, 0, 0, 0, 0, 2831, 3974, 0, 0, 7865, 0, 8312,
0, 9072, 16598, 1684, 11412, 9169, 12968, 0, 16272, 4069, 9288,
6295, 14967, 3422, 6344, 10730, 0, 6134, 0, 12821, 0, 11659,
0, 0, 0, 0, 0, 1233, 0, 0, 0, 0, 0, 0, 0, 17662, 9472, 0,
0, 11361, 12183, 0, 0, 3488, 16467, 766, 0, 17140, 0, 0, 0,
5732, 7352, 0, 0, 5805, 0, 0, 0, 0, 0, 1131, 0, 0, 0, 13604,
5518, 15811, 0, 0, 0, 10741, 3003, 0, 3693, 13618, 8720, 2267,
3802, 0, 5776, 12368, 3876, 0, 2055, 2833, 0, 44, 5351, 2911,
5340, 0, 0, 1181, 93, 9939, 1692, 6217, 6208, 410, 978, 0,
16156, 3519, 136, 0, 0, 13891, 7681, 0, 1180, 14264, 18102,
0, 7763, 4411, 2375, 11729, 4076, 3034, 18779, 14345, 11193,
0, 7691, 0, 0, 15929, 525, 2736, 14313, 0, 14458, 0, 7334,
2611, 7691, 0, 6224, 7957, 701, 6535, 3933, 6539, 2998, 11416,
11392, 4994, 1666, 0, 3040, 18095, 2591, 15996, 0, 342, 6536,
2309, 10832, 7633, 11769, 18170, 733, 17352, 13839, 0, 13212,
0, 0, 17252, 8887, 6518, 6550, 0, 0, 1949, 5389, 4121, 0, 0,
0, 6614, 9206, 6988, 2579, 0, 10098, 15772, 18080, 0, 12464,
0, 0, 9739, 0, 0, 0, 0, 0, 17689, 14803, 8657, 0, 16580, 0,
15633, 12410, 0, 18552, 0, 0, 8653, 0, 17295, 13131, 5685, 10779,
0, 4358, 10278, 9296, 1832, 1113, 0, 0, 0, 5492, 18561, 0,
0, 0, 16714, 3879, 0, 0, 15681, 7864, 14383, 7878, 1069, 14989,
10852, 8067, 1356, 0, 8063, 0, 449, 14109, 6942, 0, 12490, 0,
8065, 1821, 7612, 0, 9431, 16080, 0, 1414, 0, 0, 4004, 0, 0,
0, 5035, 0, 15631, 14390, 1497, 4620, 0, 6830, 12952, 0, 11332,
0, 9692, 3599, 14303, 3233, 17165, 7267, 538, 0, 7363, 0, 14098,
631, 14700, 13171, 1891, 11351, 0, 9249, 7572, 16807, 0, 3084,
10505, 1870, 0, 0, 0, 7263, 11639, 2104, 3620, 0, 8206, 10744,
3610, 5278, 1817, 2231, 13089, 0, 0, 5766, 0, 8347, 1672, 3155,
0, 0, 2107, 0, 0, 12471, 0, 10719, 0, 9722, 0, 15020, 0, 11930,
7620, 3084, 0, 273, 0, 13310, 0, 516, 5767, 4387, 0, 0, 2669,
0, 5196, 0, 15006, 14805, 4304, 0, 0, 11533, 0, 4815, 4481,
10984, 0, 0, 1720, 0, 0, 0, 1764, 17325, 2445, 821, 0, 0,
0, 0, 0, 0, 0, 5884, 0, 13451, 0, 1950, 18148, 2604, 14830,
0, 15006, 1495, 18835, 17478, 14820, 0, 0, 0, 6663, 0, 0, 0,
0, 0, 0, 5121, 0, 0, 18475, 0, 0, 2748, 0, 10345, 0, 15839,
0, 0, 18005, 0, 9970, 0, 0, 0, 0, 1003, 0, 0, 12471, 0, 7218,
0, 104, 14927, 2902, 6065, 18738, 8723, 0, 10330, 7675, 10061,
6486, 4067, 9800, 0, 7377, 4986, 1812, 0, 0, 5422, 8946, 4892,
0, 8269, 0, 14829, 0, 0, 0, 0, 0, 0, 4468, 5251, 0, 15991,
2742, 0, 0, 13344, 801, 0, 0, 0, 0, 9835, 4824, 14983, 4826,
8119, 8604, 17858, 14753, 8175, 8605, 5084, 0, 0, 15857, 0,
6187, 0, 0, 2628, 3299, 18583, 17735, 0, 0, 4491, 797, 0, 0,
637, 0, 6736, 0, 0, 13106, 2070, 2073, 0, 6285, 0, 14247, 11346,
0, 0, 8430, 0, 17358, 15670, 18830, 15001, 10091, 18408, 5261,
18419, 13916, 12825, 14121, 938, 0, 1125, 8281, 0, 676, 0, 5163,
6730, 0, 0, 244, 0, 518, 4912, 1835, 0, 0, 0, 10185, 1904,
2746, 0, 0, 10498, 10430, 11694, 8605, 3916, 11588, 12269, 13754,
15372, 10069, 0, 0, 4190, 3700, 1735, 2420, 0, 757, 1626, 0,
0, 0, 13250, 0, 3942, 5583, 883, 4878, 0, 0, 0, 5363, 7143,
0, 3977, 0, 0, 0, 0, 0, 2358, 1788, 0, 0, 0, 0, 2498, 0,
0, 0, 8056, 0, 0, 0, 0, 0, 7507, 0, 6245, 0, 7296, 0, 7571,
4139, 8241, 9410, 681, 11216, 6696, 0, 0, 0, 5725, 7240, 0,
14061, 0, 2099, 7514, 0, 0, 0, 0, 2488, 10331, 0, 11774, 5293,
4460, 8654, 9752, 1476, 0, 9657, 12716, 7661, 6612, 8153, 0,
4251, 0, 18617, 0, 13224, 0, 8650, 2608, 5060, 2856, 0, 5175,
3625, 1677, 3467, 2948, 15995, 8944, 1014, 11796, 5717, 0, 4868,
0, 18069, 0, 8200, 0, 0, 0, 12693, 0, 0, 5628, 0, 0, 0, 7622,