kernpy 0.0.2__py3-none-any.whl → 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. kernpy/__init__.py +215 -0
  2. kernpy/__main__.py +217 -0
  3. kernpy/core/__init__.py +119 -0
  4. kernpy/core/_io.py +48 -0
  5. kernpy/core/base_antlr_importer.py +61 -0
  6. kernpy/core/base_antlr_spine_parser_listener.py +196 -0
  7. kernpy/core/basic_spine_importer.py +43 -0
  8. kernpy/core/document.py +965 -0
  9. kernpy/core/dyn_importer.py +30 -0
  10. kernpy/core/dynam_spine_importer.py +42 -0
  11. kernpy/core/error_listener.py +51 -0
  12. kernpy/core/exporter.py +535 -0
  13. kernpy/core/fing_spine_importer.py +42 -0
  14. kernpy/core/generated/kernSpineLexer.interp +444 -0
  15. kernpy/core/generated/kernSpineLexer.py +535 -0
  16. kernpy/core/generated/kernSpineLexer.tokens +236 -0
  17. kernpy/core/generated/kernSpineParser.interp +425 -0
  18. kernpy/core/generated/kernSpineParser.py +9954 -0
  19. kernpy/core/generated/kernSpineParser.tokens +236 -0
  20. kernpy/core/generated/kernSpineParserListener.py +1200 -0
  21. kernpy/core/generated/kernSpineParserVisitor.py +673 -0
  22. kernpy/core/generic.py +426 -0
  23. kernpy/core/gkern.py +526 -0
  24. kernpy/core/graphviz_exporter.py +89 -0
  25. kernpy/core/harm_spine_importer.py +41 -0
  26. kernpy/core/import_humdrum_old.py +853 -0
  27. kernpy/core/importer.py +285 -0
  28. kernpy/core/importer_factory.py +43 -0
  29. kernpy/core/kern_spine_importer.py +73 -0
  30. kernpy/core/mens_spine_importer.py +23 -0
  31. kernpy/core/mhxm_spine_importer.py +44 -0
  32. kernpy/core/pitch_models.py +338 -0
  33. kernpy/core/root_spine_importer.py +58 -0
  34. kernpy/core/spine_importer.py +45 -0
  35. kernpy/core/text_spine_importer.py +43 -0
  36. kernpy/core/tokenizers.py +239 -0
  37. kernpy/core/tokens.py +2011 -0
  38. kernpy/core/transposer.py +300 -0
  39. kernpy/io/__init__.py +14 -0
  40. kernpy/io/public.py +355 -0
  41. kernpy/polish_scores/__init__.py +13 -0
  42. kernpy/polish_scores/download_polish_dataset.py +357 -0
  43. kernpy/polish_scores/iiif.py +47 -0
  44. kernpy/test_grammar.sh +22 -0
  45. kernpy/util/__init__.py +14 -0
  46. kernpy/util/helpers.py +55 -0
  47. kernpy/util/store_cache.py +35 -0
  48. kernpy/visualize_analysis.sh +23 -0
  49. kernpy-1.0.0.dist-info/METADATA +501 -0
  50. kernpy-1.0.0.dist-info/RECORD +51 -0
  51. {kernpy-0.0.2.dist-info → kernpy-1.0.0.dist-info}/WHEEL +1 -2
  52. kernpy/example.py +0 -1
  53. kernpy-0.0.2.dist-info/LICENSE +0 -19
  54. kernpy-0.0.2.dist-info/METADATA +0 -19
  55. kernpy-0.0.2.dist-info/RECORD +0 -7
  56. kernpy-0.0.2.dist-info/top_level.txt +0 -1
@@ -0,0 +1,425 @@
1
+ token literal names:
2
+ null
3
+ null
4
+ null
5
+ null
6
+ null
7
+ null
8
+ null
9
+ null
10
+ null
11
+ null
12
+ null
13
+ null
14
+ null
15
+ null
16
+ 'norep'
17
+ null
18
+ null
19
+ null
20
+ null
21
+ null
22
+ null
23
+ null
24
+ null
25
+ null
26
+ null
27
+ null
28
+ null
29
+ null
30
+ null
31
+ null
32
+ null
33
+ null
34
+ null
35
+ null
36
+ null
37
+ null
38
+ null
39
+ null
40
+ null
41
+ null
42
+ '!'
43
+ '%'
44
+ '&'
45
+ '@'
46
+ 'A'
47
+ 'B'
48
+ 'C'
49
+ 'D'
50
+ 'E'
51
+ 'F'
52
+ 'G'
53
+ 'H'
54
+ 'I'
55
+ 'J'
56
+ 'K'
57
+ 'L'
58
+ 'M'
59
+ 'N'
60
+ 'O'
61
+ 'P'
62
+ 'Q'
63
+ 'R'
64
+ 'S'
65
+ 'T'
66
+ 'U'
67
+ 'V'
68
+ 'W'
69
+ 'X'
70
+ 'Y'
71
+ 'Z'
72
+ 'a'
73
+ 'b'
74
+ 'c'
75
+ 'd'
76
+ 'e'
77
+ 'f'
78
+ 'g'
79
+ 'h'
80
+ 'i'
81
+ 'j'
82
+ 'k'
83
+ 'l'
84
+ 'm'
85
+ 'n'
86
+ 'o'
87
+ 'p'
88
+ 'q'
89
+ 'r'
90
+ 's'
91
+ 't'
92
+ 'u'
93
+ 'v'
94
+ 'w'
95
+ 'x'
96
+ 'y'
97
+ 'z'
98
+ null
99
+ '0'
100
+ '1'
101
+ '2'
102
+ '3'
103
+ '4'
104
+ '5'
105
+ '6'
106
+ '7'
107
+ '8'
108
+ '9'
109
+ null
110
+ null
111
+ null
112
+ null
113
+ null
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
+ null
143
+ null
144
+
145
+ token symbolic names:
146
+ null
147
+ TANDEM_KEYCANCEL
148
+ TANDEM_PART
149
+ TANDEM_GROUP
150
+ TANDEM_ACCOMP
151
+ TANDEM_SOLO
152
+ TANDEM_STROPHE
153
+ TANDEM_STAFF
154
+ TANDEM_TRANSPOSITION
155
+ TANDEM_CLEF
156
+ TANDEM_KEY_SIGNATURE
157
+ TANDEM_MET
158
+ METRONOME
159
+ TANDEM_SECTION
160
+ NO_REPEAT
161
+ TANDEM_LEFT_HAND
162
+ TANDEM_RIGHT_HAND
163
+ TANDEM_ABOVE
164
+ TANDEM_BELOW
165
+ TANDEM_CENTERED
166
+ TANDEM_PEDAL_START
167
+ TANDEM_ELA
168
+ TANDEM_PEDAL_END
169
+ TANDEM_TUPLET_START
170
+ TANDEM_TUPLET_END
171
+ TANDEM_CUE_START
172
+ TANDEM_CUE_END
173
+ TANDEM_TREMOLO_START
174
+ TANDEM_TREMOLO_END
175
+ TANDEM_TSTART
176
+ TANDEM_TEND
177
+ TANDEM_RSCALE
178
+ TANDEM_TIMESIGNATURE
179
+ TANDEM_SIC
180
+ TANDEM_OSSIA
181
+ TANDEM_FIN
182
+ TANDEM_SMINUS
183
+ TANDEM_TIMEBASE
184
+ TANDEM_BOUNDING_BOX
185
+ OCTAVE_SHIFT
186
+ EXCLAMATION
187
+ PERCENT
188
+ AMPERSAND
189
+ AT
190
+ CHAR_A
191
+ CHAR_B
192
+ CHAR_C
193
+ CHAR_D
194
+ CHAR_E
195
+ CHAR_F
196
+ CHAR_G
197
+ CHAR_H
198
+ CHAR_I
199
+ CHAR_J
200
+ CHAR_K
201
+ CHAR_L
202
+ CHAR_M
203
+ CHAR_N
204
+ CHAR_O
205
+ CHAR_P
206
+ CHAR_Q
207
+ CHAR_R
208
+ CHAR_S
209
+ CHAR_T
210
+ CHAR_U
211
+ CHAR_V
212
+ CHAR_W
213
+ CHAR_X
214
+ CHAR_Y
215
+ CHAR_Z
216
+ CHAR_a
217
+ CHAR_b
218
+ CHAR_c
219
+ CHAR_d
220
+ CHAR_e
221
+ CHAR_f
222
+ CHAR_g
223
+ CHAR_h
224
+ CHAR_i
225
+ CHAR_j
226
+ CHAR_k
227
+ CHAR_l
228
+ CHAR_m
229
+ CHAR_n
230
+ CHAR_o
231
+ CHAR_p
232
+ CHAR_q
233
+ CHAR_r
234
+ CHAR_s
235
+ CHAR_t
236
+ CHAR_u
237
+ CHAR_v
238
+ CHAR_w
239
+ CHAR_x
240
+ CHAR_y
241
+ CHAR_z
242
+ NON_ENGLISH
243
+ DIGIT_0
244
+ DIGIT_1
245
+ DIGIT_2
246
+ DIGIT_3
247
+ DIGIT_4
248
+ DIGIT_5
249
+ DIGIT_6
250
+ DIGIT_7
251
+ DIGIT_8
252
+ DIGIT_9
253
+ SPINE_TERMINATOR
254
+ SPINE_ADD
255
+ SPINE_SPLIT
256
+ SPINE_JOIN
257
+ ASTERISK
258
+ QUOTATION_MARK
259
+ APOSTROPHE
260
+ LEFT_BRACKET
261
+ RIGHT_BRACKET
262
+ LEFT_CURLY_BRACES
263
+ RIGHT_CURLY_BRACES
264
+ OCTOTHORPE
265
+ PLUS
266
+ MINUS
267
+ EQUAL
268
+ DOT
269
+ PIPE
270
+ GRAVE_ACCENT
271
+ CIRCUMFLEX
272
+ TILDE
273
+ ANGLE_BRACKET_OPEN
274
+ ANGLE_BRACKET_CLOSE
275
+ SLASH
276
+ BACKSLASH
277
+ UNDERSCORE
278
+ DOLLAR
279
+ LEFT_PARENTHESIS
280
+ RIGHT_PARENTHESIS
281
+ COLON
282
+ SEMICOLON
283
+ COMMA
284
+ QUESTION_MARK
285
+ SPACE
286
+ INSTRUMENT_TITLE
287
+ INSTRUMENT
288
+
289
+ rule names:
290
+ start
291
+ field
292
+ notes_rests_chords
293
+ structural
294
+ contextual
295
+ signatures
296
+ otherContextual
297
+ empty
298
+ rest
299
+ restChar_r
300
+ restDecoration
301
+ chord
302
+ note
303
+ nonVisualTandemInterpretation
304
+ boundingBox
305
+ xywh
306
+ x
307
+ y
308
+ w
309
+ h
310
+ pageNumber
311
+ visualTandemInterpretation
312
+ associatedIDS
313
+ placeHolder
314
+ octaveShift
315
+ pianoHand
316
+ tandemTuplet
317
+ tandemCue
318
+ tandemTremolo
319
+ ossia
320
+ rscale
321
+ pedal
322
+ ela
323
+ dynamics_position
324
+ sections
325
+ sectionNames
326
+ sectionName
327
+ transposition
328
+ instrument
329
+ instrumentTitle
330
+ number
331
+ lowerCasePitch
332
+ upperCasePitch
333
+ pitchClass
334
+ accomp
335
+ solo
336
+ strophe
337
+ timebase
338
+ part
339
+ group
340
+ staff
341
+ clef
342
+ clefValue
343
+ clefSign
344
+ clefLine
345
+ clefOctave
346
+ keySignature
347
+ keySignaturePitchClass
348
+ keySignatureCancel
349
+ keyCancel
350
+ keyMode
351
+ key
352
+ singleKey
353
+ minorKey
354
+ majorKey
355
+ modal
356
+ locrian
357
+ ionian
358
+ aeolian
359
+ mixolydian
360
+ lydian
361
+ phrygian
362
+ dorian
363
+ timeSignature
364
+ numerator
365
+ denominator
366
+ standardTimeSignature
367
+ additiveTimeSignature
368
+ mixedTimeSignature
369
+ alternatingTimeSignature
370
+ alternatingTimeSignatureItem
371
+ interchangingTimeSignature
372
+ meterSymbol
373
+ modernMeterSymbolSign
374
+ mensuration
375
+ metronome
376
+ nullInterpretation
377
+ barline
378
+ barLineType
379
+ restPosition
380
+ duration
381
+ fermata
382
+ modernDuration
383
+ augmentationDot
384
+ alteration
385
+ staffChange
386
+ chordSpace
387
+ graceNote
388
+ appoggiatura
389
+ appoggiaturaMode
390
+ ligatureTie
391
+ noteDecoration
392
+ noteDecorationCharX
393
+ phrase
394
+ diatonicPitchAndOctave
395
+ trebleNotes
396
+ bassNotes
397
+ accidental
398
+ alterationDisplay
399
+ turn
400
+ userAssignable
401
+ glissando
402
+ articulation
403
+ accent
404
+ tenuto
405
+ staccatissimo
406
+ pizzicato
407
+ spiccato
408
+ staccato
409
+ editorialIntervention
410
+ slurStart
411
+ ligatureTieStart
412
+ tieContinue
413
+ ligatureTieEnd
414
+ slurEnd
415
+ barLineCrossedNoteStart
416
+ barLineCrossedNoteEnd
417
+ stem
418
+ beam
419
+ mordent
420
+ trill
421
+ footnote
422
+
423
+
424
+ atn:
425
+ [4, 1, 141, 1087, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 275, 8, 1, 1, 2, 1, 2, 1, 2, 3, 2, 280, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 286, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 293, 8, 5, 1, 6, 1, 6, 1, 6, 3, 6, 298, 8, 6, 1, 7, 1, 7, 3, 7, 302, 8, 7, 1, 8, 5, 8, 305, 8, 8, 10, 8, 12, 8, 308, 9, 8, 1, 8, 3, 8, 311, 8, 8, 1, 8, 1, 8, 5, 8, 315, 8, 8, 10, 8, 12, 8, 318, 9, 8, 1, 9, 1, 9, 3, 9, 322, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 337, 8, 10, 1, 11, 1, 11, 3, 11, 341, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 346, 8, 11, 4, 11, 348, 8, 11, 11, 11, 12, 11, 349, 1, 12, 5, 12, 353, 8, 12, 10, 12, 12, 12, 356, 9, 12, 1, 12, 3, 12, 359, 8, 12, 1, 12, 5, 12, 362, 8, 12, 10, 12, 12, 12, 365, 9, 12, 1, 12, 1, 12, 5, 12, 369, 8, 12, 10, 12, 12, 12, 372, 9, 12, 1, 12, 3, 12, 375, 8, 12, 1, 12, 5, 12, 378, 8, 12, 10, 12, 12, 12, 381, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 395, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 5, 20, 420, 8, 20, 10, 20, 12, 20, 423, 9, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 434, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 439, 8, 22, 10, 22, 12, 22, 442, 9, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 463, 8, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 473, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 480, 8, 34, 1, 35, 1, 35, 1, 35, 5, 35, 485, 8, 35, 10, 35, 12, 35, 488, 9, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 4, 36, 544, 8, 36, 11, 36, 12, 36, 545, 1, 37, 1, 37, 1, 37, 3, 37, 551, 8, 37, 1, 37, 1, 37, 1, 37, 3, 37, 556, 8, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 4, 40, 565, 8, 40, 11, 40, 12, 40, 566, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 3, 50, 593, 8, 50, 1, 50, 1, 50, 1, 50, 3, 50, 598, 8, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 3, 52, 605, 8, 52, 1, 52, 3, 52, 608, 8, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 616, 8, 55, 1, 55, 1, 55, 3, 55, 620, 8, 55, 3, 55, 622, 8, 55, 1, 56, 1, 56, 1, 56, 5, 56, 627, 8, 56, 10, 56, 12, 56, 630, 9, 56, 1, 56, 1, 56, 3, 56, 634, 8, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 3, 60, 645, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 651, 8, 61, 1, 62, 1, 62, 3, 62, 655, 8, 62, 1, 62, 1, 62, 3, 62, 659, 8, 62, 1, 62, 3, 62, 662, 8, 62, 3, 62, 664, 8, 62, 1, 63, 1, 63, 3, 63, 668, 8, 63, 1, 64, 1, 64, 3, 64, 672, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 681, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 717, 8, 73, 1, 73, 1, 73, 3, 73, 721, 8, 73, 1, 74, 1, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 4, 77, 734, 8, 77, 11, 77, 12, 77, 735, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 4, 78, 744, 8, 78, 11, 78, 12, 78, 745, 1, 79, 1, 79, 1, 79, 4, 79, 751, 8, 79, 11, 79, 12, 79, 752, 1, 80, 1, 80, 1, 80, 3, 80, 758, 8, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 768, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 3, 83, 775, 8, 83, 1, 84, 4, 84, 778, 8, 84, 11, 84, 12, 84, 779, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 786, 8, 85, 1, 86, 1, 86, 1, 87, 1, 87, 3, 87, 792, 8, 87, 1, 87, 3, 87, 795, 8, 87, 1, 87, 3, 87, 798, 8, 87, 1, 87, 3, 87, 801, 8, 87, 1, 87, 3, 87, 804, 8, 87, 1, 87, 3, 87, 807, 8, 87, 1, 87, 3, 87, 810, 8, 87, 1, 87, 3, 87, 813, 8, 87, 1, 87, 3, 87, 816, 8, 87, 1, 87, 3, 87, 819, 8, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 826, 8, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 834, 8, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 842, 8, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 854, 8, 88, 1, 89, 1, 89, 1, 90, 1, 90, 5, 90, 860, 8, 90, 10, 90, 12, 90, 863, 9, 90, 1, 90, 1, 90, 3, 90, 867, 8, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 3, 92, 874, 8, 92, 1, 93, 1, 93, 1, 94, 1, 94, 3, 94, 880, 8, 94, 1, 95, 1, 95, 1, 96, 3, 96, 885, 8, 96, 1, 97, 1, 97, 3, 97, 889, 8, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 3, 100, 898, 8, 100, 1, 100, 3, 100, 901, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 933, 8, 101, 1, 102, 1, 102, 3, 102, 937, 8, 102, 1, 103, 1, 103, 1, 104, 1, 104, 3, 104, 943, 8, 104, 1, 105, 4, 105, 946, 8, 105, 11, 105, 12, 105, 947, 1, 106, 4, 106, 951, 8, 106, 11, 106, 12, 106, 952, 1, 107, 1, 107, 1, 107, 3, 107, 958, 8, 107, 3, 107, 960, 8, 107, 1, 107, 1, 107, 1, 107, 3, 107, 965, 8, 107, 3, 107, 967, 8, 107, 1, 107, 3, 107, 970, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 980, 8, 108, 1, 108, 1, 108, 3, 108, 984, 8, 108, 3, 108, 986, 8, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 1000, 8, 112, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 5, 119, 1016, 8, 119, 10, 119, 12, 119, 1019, 9, 119, 1, 119, 3, 119, 1022, 8, 119, 1, 119, 3, 119, 1025, 8, 119, 1, 120, 5, 120, 1028, 8, 120, 10, 120, 12, 120, 1031, 9, 120, 1, 120, 1, 120, 3, 120, 1035, 8, 120, 1, 121, 1, 121, 1, 121, 3, 121, 1040, 8, 121, 3, 121, 1042, 8, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 124, 5, 124, 1049, 8, 124, 10, 124, 12, 124, 1052, 9, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 1, 128, 1, 128, 3, 128, 1064, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 1070, 8, 129, 1, 129, 3, 129, 1073, 8, 129, 1, 130, 1, 130, 3, 130, 1077, 8, 130, 1, 130, 3, 130, 1080, 8, 130, 1, 131, 4, 131, 1083, 8, 131, 11, 131, 12, 131, 1084, 1, 131, 0, 0, 132, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 0, 23, 1, 0, 135, 135, 1, 0, 15, 16, 1, 0, 23, 24, 1, 0, 25, 26, 1, 0, 27, 28, 1, 0, 33, 36, 2, 0, 20, 20, 22, 22, 1, 0, 17, 19, 1, 0, 97, 106, 1, 0, 70, 76, 1, 0, 44, 50, 4, 0, 46, 46, 49, 50, 59, 59, 63, 63, 1, 0, 98, 102, 2, 0, 11, 11, 32, 32, 6, 0, 46, 46, 58, 58, 87, 87, 99, 100, 122, 123, 129, 129, 2, 0, 120, 120, 122, 122, 1, 0, 127, 128, 2, 0, 59, 59, 85, 85, 1, 0, 116, 117, 2, 0, 62, 62, 132, 132, 2, 0, 115, 115, 128, 128, 1, 0, 129, 130, 2, 0, 53, 55, 80, 80, 1213, 0, 264, 1, 0, 0, 0, 2, 274, 1, 0, 0, 0, 4, 279, 1, 0, 0, 0, 6, 281, 1, 0, 0, 0, 8, 285, 1, 0, 0, 0, 10, 292, 1, 0, 0, 0, 12, 297, 1, 0, 0, 0, 14, 301, 1, 0, 0, 0, 16, 306, 1, 0, 0, 0, 18, 319, 1, 0, 0, 0, 20, 336, 1, 0, 0, 0, 22, 340, 1, 0, 0, 0, 24, 354, 1, 0, 0, 0, 26, 394, 1, 0, 0, 0, 28, 396, 1, 0, 0, 0, 30, 402, 1, 0, 0, 0, 32, 410, 1, 0, 0, 0, 34, 412, 1, 0, 0, 0, 36, 414, 1, 0, 0, 0, 38, 416, 1, 0, 0, 0, 40, 421, 1, 0, 0, 0, 42, 433, 1, 0, 0, 0, 44, 435, 1, 0, 0, 0, 46, 443, 1, 0, 0, 0, 48, 445, 1, 0, 0, 0, 50, 447, 1, 0, 0, 0, 52, 449, 1, 0, 0, 0, 54, 451, 1, 0, 0, 0, 56, 453, 1, 0, 0, 0, 58, 455, 1, 0, 0, 0, 60, 457, 1, 0, 0, 0, 62, 464, 1, 0, 0, 0, 64, 466, 1, 0, 0, 0, 66, 468, 1, 0, 0, 0, 68, 470, 1, 0, 0, 0, 70, 481, 1, 0, 0, 0, 72, 543, 1, 0, 0, 0, 74, 547, 1, 0, 0, 0, 76, 559, 1, 0, 0, 0, 78, 561, 1, 0, 0, 0, 80, 564, 1, 0, 0, 0, 82, 568, 1, 0, 0, 0, 84, 570, 1, 0, 0, 0, 86, 572, 1, 0, 0, 0, 88, 575, 1, 0, 0, 0, 90, 577, 1, 0, 0, 0, 92, 579, 1, 0, 0, 0, 94, 581, 1, 0, 0, 0, 96, 584, 1, 0, 0, 0, 98, 587, 1, 0, 0, 0, 100, 590, 1, 0, 0, 0, 102, 599, 1, 0, 0, 0, 104, 602, 1, 0, 0, 0, 106, 609, 1, 0, 0, 0, 108, 611, 1, 0, 0, 0, 110, 621, 1, 0, 0, 0, 112, 623, 1, 0, 0, 0, 114, 635, 1, 0, 0, 0, 116, 637, 1, 0, 0, 0, 118, 639, 1, 0, 0, 0, 120, 644, 1, 0, 0, 0, 122, 646, 1, 0, 0, 0, 124, 652, 1, 0, 0, 0, 126, 665, 1, 0, 0, 0, 128, 669, 1, 0, 0, 0, 130, 680, 1, 0, 0, 0, 132, 682, 1, 0, 0, 0, 134, 686, 1, 0, 0, 0, 136, 690, 1, 0, 0, 0, 138, 694, 1, 0, 0, 0, 140, 698, 1, 0, 0, 0, 142, 702, 1, 0, 0, 0, 144, 706, 1, 0, 0, 0, 146, 710, 1, 0, 0, 0, 148, 722, 1, 0, 0, 0, 150, 724, 1, 0, 0, 0, 152, 726, 1, 0, 0, 0, 154, 730, 1, 0, 0, 0, 156, 740, 1, 0, 0, 0, 158, 747, 1, 0, 0, 0, 160, 754, 1, 0, 0, 0, 162, 759, 1, 0, 0, 0, 164, 763, 1, 0, 0, 0, 166, 774, 1, 0, 0, 0, 168, 777, 1, 0, 0, 0, 170, 781, 1, 0, 0, 0, 172, 787, 1, 0, 0, 0, 174, 789, 1, 0, 0, 0, 176, 853, 1, 0, 0, 0, 178, 855, 1, 0, 0, 0, 180, 857, 1, 0, 0, 0, 182, 868, 1, 0, 0, 0, 184, 870, 1, 0, 0, 0, 186, 875, 1, 0, 0, 0, 188, 877, 1, 0, 0, 0, 190, 881, 1, 0, 0, 0, 192, 884, 1, 0, 0, 0, 194, 886, 1, 0, 0, 0, 196, 890, 1, 0, 0, 0, 198, 892, 1, 0, 0, 0, 200, 897, 1, 0, 0, 0, 202, 932, 1, 0, 0, 0, 204, 934, 1, 0, 0, 0, 206, 938, 1, 0, 0, 0, 208, 942, 1, 0, 0, 0, 210, 945, 1, 0, 0, 0, 212, 950, 1, 0, 0, 0, 214, 969, 1, 0, 0, 0, 216, 985, 1, 0, 0, 0, 218, 987, 1, 0, 0, 0, 220, 989, 1, 0, 0, 0, 222, 991, 1, 0, 0, 0, 224, 999, 1, 0, 0, 0, 226, 1001, 1, 0, 0, 0, 228, 1003, 1, 0, 0, 0, 230, 1005, 1, 0, 0, 0, 232, 1007, 1, 0, 0, 0, 234, 1009, 1, 0, 0, 0, 236, 1011, 1, 0, 0, 0, 238, 1024, 1, 0, 0, 0, 240, 1029, 1, 0, 0, 0, 242, 1041, 1, 0, 0, 0, 244, 1043, 1, 0, 0, 0, 246, 1045, 1, 0, 0, 0, 248, 1050, 1, 0, 0, 0, 250, 1055, 1, 0, 0, 0, 252, 1057, 1, 0, 0, 0, 254, 1059, 1, 0, 0, 0, 256, 1061, 1, 0, 0, 0, 258, 1072, 1, 0, 0, 0, 260, 1079, 1, 0, 0, 0, 262, 1082, 1, 0, 0, 0, 264, 265, 3, 2, 1, 0, 265, 1, 1, 0, 0, 0, 266, 275, 3, 4, 2, 0, 267, 275, 3, 6, 3, 0, 268, 275, 3, 8, 4, 0, 269, 275, 3, 174, 87, 0, 270, 275, 3, 14, 7, 0, 271, 275, 3, 42, 21, 0, 272, 275, 3, 26, 13, 0, 273, 275, 3, 28, 14, 0, 274, 266, 1, 0, 0, 0, 274, 267, 1, 0, 0, 0, 274, 268, 1, 0, 0, 0, 274, 269, 1, 0, 0, 0, 274, 270, 1, 0, 0, 0, 274, 271, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 274, 273, 1, 0, 0, 0, 275, 3, 1, 0, 0, 0, 276, 280, 3, 24, 12, 0, 277, 280, 3, 16, 8, 0, 278, 280, 3, 22, 11, 0, 279, 276, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 278, 1, 0, 0, 0, 280, 5, 1, 0, 0, 0, 281, 282, 3, 100, 50, 0, 282, 7, 1, 0, 0, 0, 283, 286, 3, 10, 5, 0, 284, 286, 3, 12, 6, 0, 285, 283, 1, 0, 0, 0, 285, 284, 1, 0, 0, 0, 286, 9, 1, 0, 0, 0, 287, 293, 3, 102, 51, 0, 288, 293, 3, 146, 73, 0, 289, 293, 3, 164, 82, 0, 290, 293, 3, 118, 59, 0, 291, 293, 3, 112, 56, 0, 292, 287, 1, 0, 0, 0, 292, 288, 1, 0, 0, 0, 292, 289, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 291, 1, 0, 0, 0, 293, 11, 1, 0, 0, 0, 294, 298, 3, 48, 24, 0, 295, 298, 3, 122, 61, 0, 296, 298, 3, 170, 85, 0, 297, 294, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 297, 296, 1, 0, 0, 0, 298, 13, 1, 0, 0, 0, 299, 302, 3, 172, 86, 0, 300, 302, 3, 46, 23, 0, 301, 299, 1, 0, 0, 0, 301, 300, 1, 0, 0, 0, 302, 15, 1, 0, 0, 0, 303, 305, 3, 20, 10, 0, 304, 303, 1, 0, 0, 0, 305, 308, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 310, 1, 0, 0, 0, 308, 306, 1, 0, 0, 0, 309, 311, 3, 180, 90, 0, 310, 309, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 316, 3, 18, 9, 0, 313, 315, 3, 20, 10, 0, 314, 313, 1, 0, 0, 0, 315, 318, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 17, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 319, 321, 5, 87, 0, 0, 320, 322, 5, 87, 0, 0, 321, 320, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 19, 1, 0, 0, 0, 323, 337, 3, 240, 120, 0, 324, 337, 3, 194, 97, 0, 325, 337, 3, 190, 95, 0, 326, 337, 3, 178, 89, 0, 327, 337, 3, 182, 91, 0, 328, 337, 3, 238, 119, 0, 329, 337, 3, 248, 124, 0, 330, 337, 3, 236, 118, 0, 331, 337, 3, 206, 103, 0, 332, 337, 3, 186, 93, 0, 333, 334, 3, 254, 127, 0, 334, 335, 5, 79, 0, 0, 335, 337, 1, 0, 0, 0, 336, 323, 1, 0, 0, 0, 336, 324, 1, 0, 0, 0, 336, 325, 1, 0, 0, 0, 336, 326, 1, 0, 0, 0, 336, 327, 1, 0, 0, 0, 336, 328, 1, 0, 0, 0, 336, 329, 1, 0, 0, 0, 336, 330, 1, 0, 0, 0, 336, 331, 1, 0, 0, 0, 336, 332, 1, 0, 0, 0, 336, 333, 1, 0, 0, 0, 337, 21, 1, 0, 0, 0, 338, 341, 3, 24, 12, 0, 339, 341, 3, 16, 8, 0, 340, 338, 1, 0, 0, 0, 340, 339, 1, 0, 0, 0, 341, 347, 1, 0, 0, 0, 342, 345, 3, 192, 96, 0, 343, 346, 3, 24, 12, 0, 344, 346, 3, 16, 8, 0, 345, 343, 1, 0, 0, 0, 345, 344, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 342, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 23, 1, 0, 0, 0, 351, 353, 3, 202, 101, 0, 352, 351, 1, 0, 0, 0, 353, 356, 1, 0, 0, 0, 354, 352, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 358, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 357, 359, 3, 180, 90, 0, 358, 357, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 363, 1, 0, 0, 0, 360, 362, 3, 202, 101, 0, 361, 360, 1, 0, 0, 0, 362, 365, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 363, 1, 0, 0, 0, 366, 370, 3, 208, 104, 0, 367, 369, 3, 202, 101, 0, 368, 367, 1, 0, 0, 0, 369, 372, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 374, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 373, 375, 3, 188, 94, 0, 374, 373, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 379, 1, 0, 0, 0, 376, 378, 3, 202, 101, 0, 377, 376, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 25, 1, 0, 0, 0, 381, 379, 1, 0, 0, 0, 382, 395, 3, 94, 47, 0, 383, 395, 3, 90, 45, 0, 384, 395, 3, 88, 44, 0, 385, 395, 3, 92, 46, 0, 386, 395, 3, 96, 48, 0, 387, 395, 3, 98, 49, 0, 388, 395, 3, 76, 38, 0, 389, 395, 3, 78, 39, 0, 390, 395, 3, 74, 37, 0, 391, 395, 3, 68, 34, 0, 392, 395, 3, 50, 25, 0, 393, 395, 3, 58, 29, 0, 394, 382, 1, 0, 0, 0, 394, 383, 1, 0, 0, 0, 394, 384, 1, 0, 0, 0, 394, 385, 1, 0, 0, 0, 394, 386, 1, 0, 0, 0, 394, 387, 1, 0, 0, 0, 394, 388, 1, 0, 0, 0, 394, 389, 1, 0, 0, 0, 394, 390, 1, 0, 0, 0, 394, 391, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 394, 393, 1, 0, 0, 0, 395, 27, 1, 0, 0, 0, 396, 397, 5, 38, 0, 0, 397, 398, 5, 120, 0, 0, 398, 399, 3, 40, 20, 0, 399, 400, 5, 135, 0, 0, 400, 401, 3, 30, 15, 0, 401, 29, 1, 0, 0, 0, 402, 403, 3, 32, 16, 0, 403, 404, 5, 137, 0, 0, 404, 405, 3, 34, 17, 0, 405, 406, 5, 137, 0, 0, 406, 407, 3, 36, 18, 0, 407, 408, 5, 137, 0, 0, 408, 409, 3, 38, 19, 0, 409, 31, 1, 0, 0, 0, 410, 411, 3, 80, 40, 0, 411, 33, 1, 0, 0, 0, 412, 413, 3, 80, 40, 0, 413, 35, 1, 0, 0, 0, 414, 415, 3, 80, 40, 0, 415, 37, 1, 0, 0, 0, 416, 417, 3, 80, 40, 0, 417, 39, 1, 0, 0, 0, 418, 420, 8, 0, 0, 0, 419, 418, 1, 0, 0, 0, 420, 423, 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 41, 1, 0, 0, 0, 423, 421, 1, 0, 0, 0, 424, 434, 3, 66, 33, 0, 425, 434, 3, 54, 27, 0, 426, 434, 3, 56, 28, 0, 427, 434, 3, 60, 30, 0, 428, 434, 3, 62, 31, 0, 429, 434, 3, 64, 32, 0, 430, 434, 3, 52, 26, 0, 431, 434, 5, 29, 0, 0, 432, 434, 5, 30, 0, 0, 433, 424, 1, 0, 0, 0, 433, 425, 1, 0, 0, 0, 433, 426, 1, 0, 0, 0, 433, 427, 1, 0, 0, 0, 433, 428, 1, 0, 0, 0, 433, 429, 1, 0, 0, 0, 433, 430, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 433, 432, 1, 0, 0, 0, 434, 43, 1, 0, 0, 0, 435, 440, 3, 80, 40, 0, 436, 437, 5, 137, 0, 0, 437, 439, 3, 44, 22, 0, 438, 436, 1, 0, 0, 0, 439, 442, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 45, 1, 0, 0, 0, 442, 440, 1, 0, 0, 0, 443, 444, 5, 122, 0, 0, 444, 47, 1, 0, 0, 0, 445, 446, 5, 39, 0, 0, 446, 49, 1, 0, 0, 0, 447, 448, 7, 1, 0, 0, 448, 51, 1, 0, 0, 0, 449, 450, 7, 2, 0, 0, 450, 53, 1, 0, 0, 0, 451, 452, 7, 3, 0, 0, 452, 55, 1, 0, 0, 0, 453, 454, 7, 4, 0, 0, 454, 57, 1, 0, 0, 0, 455, 456, 7, 5, 0, 0, 456, 59, 1, 0, 0, 0, 457, 458, 5, 31, 0, 0, 458, 459, 5, 135, 0, 0, 459, 462, 3, 80, 40, 0, 460, 461, 5, 129, 0, 0, 461, 463, 3, 80, 40, 0, 462, 460, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 61, 1, 0, 0, 0, 464, 465, 7, 6, 0, 0, 465, 63, 1, 0, 0, 0, 466, 467, 5, 21, 0, 0, 467, 65, 1, 0, 0, 0, 468, 469, 7, 7, 0, 0, 469, 67, 1, 0, 0, 0, 470, 479, 5, 13, 0, 0, 471, 473, 5, 14, 0, 0, 472, 471, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 5, 114, 0, 0, 475, 476, 3, 70, 35, 0, 476, 477, 5, 115, 0, 0, 477, 480, 1, 0, 0, 0, 478, 480, 3, 72, 36, 0, 479, 472, 1, 0, 0, 0, 479, 478, 1, 0, 0, 0, 480, 69, 1, 0, 0, 0, 481, 486, 3, 72, 36, 0, 482, 483, 5, 137, 0, 0, 483, 485, 3, 72, 36, 0, 484, 482, 1, 0, 0, 0, 485, 488, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 71, 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 489, 544, 5, 44, 0, 0, 490, 544, 5, 45, 0, 0, 491, 544, 5, 46, 0, 0, 492, 544, 5, 47, 0, 0, 493, 544, 5, 48, 0, 0, 494, 544, 5, 49, 0, 0, 495, 544, 5, 50, 0, 0, 496, 544, 5, 51, 0, 0, 497, 544, 5, 52, 0, 0, 498, 544, 5, 53, 0, 0, 499, 544, 5, 54, 0, 0, 500, 544, 5, 55, 0, 0, 501, 544, 5, 56, 0, 0, 502, 544, 5, 57, 0, 0, 503, 544, 5, 58, 0, 0, 504, 544, 5, 59, 0, 0, 505, 544, 5, 60, 0, 0, 506, 544, 5, 61, 0, 0, 507, 544, 5, 62, 0, 0, 508, 544, 5, 63, 0, 0, 509, 544, 5, 64, 0, 0, 510, 544, 5, 65, 0, 0, 511, 544, 5, 66, 0, 0, 512, 544, 5, 67, 0, 0, 513, 544, 5, 68, 0, 0, 514, 544, 5, 69, 0, 0, 515, 544, 5, 70, 0, 0, 516, 544, 5, 71, 0, 0, 517, 544, 5, 72, 0, 0, 518, 544, 5, 73, 0, 0, 519, 544, 5, 74, 0, 0, 520, 544, 5, 75, 0, 0, 521, 544, 5, 76, 0, 0, 522, 544, 5, 77, 0, 0, 523, 544, 5, 78, 0, 0, 524, 544, 5, 79, 0, 0, 525, 544, 5, 80, 0, 0, 526, 544, 5, 81, 0, 0, 527, 544, 5, 82, 0, 0, 528, 544, 5, 83, 0, 0, 529, 544, 5, 84, 0, 0, 530, 544, 5, 85, 0, 0, 531, 544, 5, 86, 0, 0, 532, 544, 5, 87, 0, 0, 533, 544, 5, 88, 0, 0, 534, 544, 5, 89, 0, 0, 535, 544, 5, 90, 0, 0, 536, 544, 5, 91, 0, 0, 537, 544, 5, 92, 0, 0, 538, 544, 5, 93, 0, 0, 539, 544, 5, 94, 0, 0, 540, 544, 5, 95, 0, 0, 541, 544, 5, 139, 0, 0, 542, 544, 3, 80, 40, 0, 543, 489, 1, 0, 0, 0, 543, 490, 1, 0, 0, 0, 543, 491, 1, 0, 0, 0, 543, 492, 1, 0, 0, 0, 543, 493, 1, 0, 0, 0, 543, 494, 1, 0, 0, 0, 543, 495, 1, 0, 0, 0, 543, 496, 1, 0, 0, 0, 543, 497, 1, 0, 0, 0, 543, 498, 1, 0, 0, 0, 543, 499, 1, 0, 0, 0, 543, 500, 1, 0, 0, 0, 543, 501, 1, 0, 0, 0, 543, 502, 1, 0, 0, 0, 543, 503, 1, 0, 0, 0, 543, 504, 1, 0, 0, 0, 543, 505, 1, 0, 0, 0, 543, 506, 1, 0, 0, 0, 543, 507, 1, 0, 0, 0, 543, 508, 1, 0, 0, 0, 543, 509, 1, 0, 0, 0, 543, 510, 1, 0, 0, 0, 543, 511, 1, 0, 0, 0, 543, 512, 1, 0, 0, 0, 543, 513, 1, 0, 0, 0, 543, 514, 1, 0, 0, 0, 543, 515, 1, 0, 0, 0, 543, 516, 1, 0, 0, 0, 543, 517, 1, 0, 0, 0, 543, 518, 1, 0, 0, 0, 543, 519, 1, 0, 0, 0, 543, 520, 1, 0, 0, 0, 543, 521, 1, 0, 0, 0, 543, 522, 1, 0, 0, 0, 543, 523, 1, 0, 0, 0, 543, 524, 1, 0, 0, 0, 543, 525, 1, 0, 0, 0, 543, 526, 1, 0, 0, 0, 543, 527, 1, 0, 0, 0, 543, 528, 1, 0, 0, 0, 543, 529, 1, 0, 0, 0, 543, 530, 1, 0, 0, 0, 543, 531, 1, 0, 0, 0, 543, 532, 1, 0, 0, 0, 543, 533, 1, 0, 0, 0, 543, 534, 1, 0, 0, 0, 543, 535, 1, 0, 0, 0, 543, 536, 1, 0, 0, 0, 543, 537, 1, 0, 0, 0, 543, 538, 1, 0, 0, 0, 543, 539, 1, 0, 0, 0, 543, 540, 1, 0, 0, 0, 543, 541, 1, 0, 0, 0, 543, 542, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 543, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 73, 1, 0, 0, 0, 547, 548, 5, 8, 0, 0, 548, 550, 5, 73, 0, 0, 549, 551, 5, 120, 0, 0, 550, 549, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 553, 3, 80, 40, 0, 553, 555, 5, 72, 0, 0, 554, 556, 5, 120, 0, 0, 555, 554, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 558, 3, 80, 40, 0, 558, 75, 1, 0, 0, 0, 559, 560, 5, 141, 0, 0, 560, 77, 1, 0, 0, 0, 561, 562, 5, 140, 0, 0, 562, 79, 1, 0, 0, 0, 563, 565, 7, 8, 0, 0, 564, 563, 1, 0, 0, 0, 565, 566, 1, 0, 0, 0, 566, 564, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 81, 1, 0, 0, 0, 568, 569, 7, 9, 0, 0, 569, 83, 1, 0, 0, 0, 570, 571, 7, 10, 0, 0, 571, 85, 1, 0, 0, 0, 572, 573, 3, 82, 41, 0, 573, 574, 3, 214, 107, 0, 574, 87, 1, 0, 0, 0, 575, 576, 5, 4, 0, 0, 576, 89, 1, 0, 0, 0, 577, 578, 5, 5, 0, 0, 578, 91, 1, 0, 0, 0, 579, 580, 5, 6, 0, 0, 580, 93, 1, 0, 0, 0, 581, 582, 5, 37, 0, 0, 582, 583, 3, 80, 40, 0, 583, 95, 1, 0, 0, 0, 584, 585, 5, 2, 0, 0, 585, 586, 3, 80, 40, 0, 586, 97, 1, 0, 0, 0, 587, 588, 5, 3, 0, 0, 588, 589, 3, 80, 40, 0, 589, 99, 1, 0, 0, 0, 590, 592, 5, 7, 0, 0, 591, 593, 5, 119, 0, 0, 592, 591, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 597, 3, 80, 40, 0, 595, 596, 5, 129, 0, 0, 596, 598, 3, 80, 40, 0, 597, 595, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 101, 1, 0, 0, 0, 599, 600, 5, 9, 0, 0, 600, 601, 3, 104, 52, 0, 601, 103, 1, 0, 0, 0, 602, 604, 3, 106, 53, 0, 603, 605, 3, 110, 55, 0, 604, 603, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 607, 1, 0, 0, 0, 606, 608, 3, 108, 54, 0, 607, 606, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 105, 1, 0, 0, 0, 609, 610, 7, 11, 0, 0, 610, 107, 1, 0, 0, 0, 611, 612, 7, 12, 0, 0, 612, 109, 1, 0, 0, 0, 613, 615, 5, 91, 0, 0, 614, 616, 5, 91, 0, 0, 615, 614, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 622, 1, 0, 0, 0, 617, 619, 5, 125, 0, 0, 618, 620, 5, 125, 0, 0, 619, 618, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 622, 1, 0, 0, 0, 621, 613, 1, 0, 0, 0, 621, 617, 1, 0, 0, 0, 622, 111, 1, 0, 0, 0, 623, 624, 5, 10, 0, 0, 624, 628, 5, 114, 0, 0, 625, 627, 3, 114, 57, 0, 626, 625, 1, 0, 0, 0, 627, 630, 1, 0, 0, 0, 628, 626, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 631, 1, 0, 0, 0, 630, 628, 1, 0, 0, 0, 631, 633, 5, 115, 0, 0, 632, 634, 3, 116, 58, 0, 633, 632, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 113, 1, 0, 0, 0, 635, 636, 3, 86, 43, 0, 636, 115, 1, 0, 0, 0, 637, 638, 5, 67, 0, 0, 638, 117, 1, 0, 0, 0, 639, 640, 5, 1, 0, 0, 640, 119, 1, 0, 0, 0, 641, 645, 3, 126, 63, 0, 642, 645, 3, 128, 64, 0, 643, 645, 5, 138, 0, 0, 644, 641, 1, 0, 0, 0, 644, 642, 1, 0, 0, 0, 644, 643, 1, 0, 0, 0, 645, 121, 1, 0, 0, 0, 646, 647, 5, 111, 0, 0, 647, 650, 3, 124, 62, 0, 648, 649, 5, 129, 0, 0, 649, 651, 3, 124, 62, 0, 650, 648, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 123, 1, 0, 0, 0, 652, 654, 3, 120, 60, 0, 653, 655, 3, 116, 58, 0, 654, 653, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 663, 1, 0, 0, 0, 656, 658, 5, 135, 0, 0, 657, 659, 3, 130, 65, 0, 658, 657, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 664, 1, 0, 0, 0, 660, 662, 3, 80, 40, 0, 661, 660, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 664, 1, 0, 0, 0, 663, 656, 1, 0, 0, 0, 663, 661, 1, 0, 0, 0, 664, 125, 1, 0, 0, 0, 665, 667, 3, 82, 41, 0, 666, 668, 3, 214, 107, 0, 667, 666, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 127, 1, 0, 0, 0, 669, 671, 3, 84, 42, 0, 670, 672, 3, 214, 107, 0, 671, 670, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 129, 1, 0, 0, 0, 673, 681, 3, 144, 72, 0, 674, 681, 3, 142, 71, 0, 675, 681, 3, 140, 70, 0, 676, 681, 3, 138, 69, 0, 677, 681, 3, 136, 68, 0, 678, 681, 3, 134, 67, 0, 679, 681, 3, 132, 66, 0, 680, 673, 1, 0, 0, 0, 680, 674, 1, 0, 0, 0, 680, 675, 1, 0, 0, 0, 680, 676, 1, 0, 0, 0, 680, 677, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 680, 679, 1, 0, 0, 0, 681, 131, 1, 0, 0, 0, 682, 683, 5, 81, 0, 0, 683, 684, 5, 84, 0, 0, 684, 685, 5, 72, 0, 0, 685, 133, 1, 0, 0, 0, 686, 687, 5, 78, 0, 0, 687, 688, 5, 84, 0, 0, 688, 689, 5, 83, 0, 0, 689, 135, 1, 0, 0, 0, 690, 691, 5, 70, 0, 0, 691, 692, 5, 74, 0, 0, 692, 693, 5, 84, 0, 0, 693, 137, 1, 0, 0, 0, 694, 695, 5, 82, 0, 0, 695, 696, 5, 78, 0, 0, 696, 697, 5, 93, 0, 0, 697, 139, 1, 0, 0, 0, 698, 699, 5, 81, 0, 0, 699, 700, 5, 94, 0, 0, 700, 701, 5, 73, 0, 0, 701, 141, 1, 0, 0, 0, 702, 703, 5, 85, 0, 0, 703, 704, 5, 77, 0, 0, 704, 705, 5, 87, 0, 0, 705, 143, 1, 0, 0, 0, 706, 707, 5, 73, 0, 0, 707, 708, 5, 84, 0, 0, 708, 709, 5, 87, 0, 0, 709, 145, 1, 0, 0, 0, 710, 716, 5, 32, 0, 0, 711, 717, 3, 152, 76, 0, 712, 717, 3, 154, 77, 0, 713, 717, 3, 156, 78, 0, 714, 717, 3, 158, 79, 0, 715, 717, 3, 162, 81, 0, 716, 711, 1, 0, 0, 0, 716, 712, 1, 0, 0, 0, 716, 713, 1, 0, 0, 0, 716, 714, 1, 0, 0, 0, 716, 715, 1, 0, 0, 0, 717, 720, 1, 0, 0, 0, 718, 719, 5, 41, 0, 0, 719, 721, 5, 99, 0, 0, 720, 718, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 147, 1, 0, 0, 0, 722, 723, 3, 80, 40, 0, 723, 149, 1, 0, 0, 0, 724, 725, 3, 80, 40, 0, 725, 151, 1, 0, 0, 0, 726, 727, 3, 148, 74, 0, 727, 728, 5, 129, 0, 0, 728, 729, 3, 150, 75, 0, 729, 153, 1, 0, 0, 0, 730, 733, 3, 148, 74, 0, 731, 732, 5, 119, 0, 0, 732, 734, 3, 148, 74, 0, 733, 731, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 733, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 738, 5, 129, 0, 0, 738, 739, 3, 150, 75, 0, 739, 155, 1, 0, 0, 0, 740, 743, 3, 152, 76, 0, 741, 742, 5, 119, 0, 0, 742, 744, 3, 152, 76, 0, 743, 741, 1, 0, 0, 0, 744, 745, 1, 0, 0, 0, 745, 743, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 746, 157, 1, 0, 0, 0, 747, 750, 3, 160, 80, 0, 748, 749, 5, 135, 0, 0, 749, 751, 3, 160, 80, 0, 750, 748, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 752, 750, 1, 0, 0, 0, 752, 753, 1, 0, 0, 0, 753, 159, 1, 0, 0, 0, 754, 757, 3, 152, 76, 0, 755, 756, 5, 136, 0, 0, 756, 758, 3, 80, 40, 0, 757, 755, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 161, 1, 0, 0, 0, 759, 760, 3, 152, 76, 0, 760, 761, 5, 123, 0, 0, 761, 762, 3, 152, 76, 0, 762, 163, 1, 0, 0, 0, 763, 764, 7, 13, 0, 0, 764, 767, 5, 133, 0, 0, 765, 768, 3, 166, 83, 0, 766, 768, 3, 168, 84, 0, 767, 765, 1, 0, 0, 0, 767, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 770, 5, 134, 0, 0, 770, 165, 1, 0, 0, 0, 771, 775, 5, 72, 0, 0, 772, 773, 5, 72, 0, 0, 773, 775, 5, 123, 0, 0, 774, 771, 1, 0, 0, 0, 774, 772, 1, 0, 0, 0, 775, 167, 1, 0, 0, 0, 776, 778, 7, 14, 0, 0, 777, 776, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 169, 1, 0, 0, 0, 781, 782, 5, 12, 0, 0, 782, 785, 3, 80, 40, 0, 783, 784, 7, 15, 0, 0, 784, 786, 3, 80, 40, 0, 785, 783, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 171, 1, 0, 0, 0, 787, 788, 5, 111, 0, 0, 788, 173, 1, 0, 0, 0, 789, 791, 5, 121, 0, 0, 790, 792, 5, 121, 0, 0, 791, 790, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 794, 1, 0, 0, 0, 793, 795, 3, 80, 40, 0, 794, 793, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, 797, 1, 0, 0, 0, 796, 798, 5, 70, 0, 0, 797, 796, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 800, 1, 0, 0, 0, 799, 801, 5, 71, 0, 0, 800, 799, 1, 0, 0, 0, 800, 801, 1, 0, 0, 0, 801, 803, 1, 0, 0, 0, 802, 804, 5, 120, 0, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 806, 1, 0, 0, 0, 805, 807, 3, 176, 88, 0, 806, 805, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 809, 1, 0, 0, 0, 808, 810, 3, 182, 91, 0, 809, 808, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, 812, 1, 0, 0, 0, 811, 813, 5, 79, 0, 0, 812, 811, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 815, 1, 0, 0, 0, 814, 816, 5, 122, 0, 0, 815, 814, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 818, 1, 0, 0, 0, 817, 819, 3, 262, 131, 0, 818, 817, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 175, 1, 0, 0, 0, 820, 821, 5, 123, 0, 0, 821, 854, 5, 123, 0, 0, 822, 823, 5, 123, 0, 0, 823, 825, 5, 40, 0, 0, 824, 826, 5, 135, 0, 0, 825, 824, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 854, 1, 0, 0, 0, 827, 828, 5, 123, 0, 0, 828, 854, 5, 135, 0, 0, 829, 830, 5, 40, 0, 0, 830, 831, 5, 123, 0, 0, 831, 854, 5, 135, 0, 0, 832, 834, 5, 121, 0, 0, 833, 832, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 835, 1, 0, 0, 0, 835, 836, 5, 135, 0, 0, 836, 837, 5, 123, 0, 0, 837, 854, 5, 40, 0, 0, 838, 839, 5, 135, 0, 0, 839, 841, 5, 123, 0, 0, 840, 842, 5, 40, 0, 0, 841, 840, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 844, 5, 123, 0, 0, 844, 854, 5, 135, 0, 0, 845, 846, 5, 135, 0, 0, 846, 847, 5, 40, 0, 0, 847, 854, 5, 135, 0, 0, 848, 849, 5, 135, 0, 0, 849, 850, 5, 40, 0, 0, 850, 851, 5, 40, 0, 0, 851, 854, 5, 135, 0, 0, 852, 854, 5, 121, 0, 0, 853, 820, 1, 0, 0, 0, 853, 822, 1, 0, 0, 0, 853, 827, 1, 0, 0, 0, 853, 829, 1, 0, 0, 0, 853, 833, 1, 0, 0, 0, 853, 838, 1, 0, 0, 0, 853, 845, 1, 0, 0, 0, 853, 848, 1, 0, 0, 0, 853, 852, 1, 0, 0, 0, 854, 177, 1, 0, 0, 0, 855, 856, 3, 208, 104, 0, 856, 179, 1, 0, 0, 0, 857, 861, 3, 184, 92, 0, 858, 860, 3, 186, 93, 0, 859, 858, 1, 0, 0, 0, 860, 863, 1, 0, 0, 0, 861, 859, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 866, 1, 0, 0, 0, 863, 861, 1, 0, 0, 0, 864, 867, 3, 194, 97, 0, 865, 867, 3, 196, 98, 0, 866, 864, 1, 0, 0, 0, 866, 865, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 181, 1, 0, 0, 0, 868, 869, 5, 136, 0, 0, 869, 183, 1, 0, 0, 0, 870, 873, 3, 80, 40, 0, 871, 872, 5, 41, 0, 0, 872, 874, 3, 80, 40, 0, 873, 871, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 185, 1, 0, 0, 0, 875, 876, 5, 122, 0, 0, 876, 187, 1, 0, 0, 0, 877, 879, 3, 214, 107, 0, 878, 880, 3, 216, 108, 0, 879, 878, 1, 0, 0, 0, 879, 880, 1, 0, 0, 0, 880, 189, 1, 0, 0, 0, 881, 882, 7, 16, 0, 0, 882, 191, 1, 0, 0, 0, 883, 885, 5, 139, 0, 0, 884, 883, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 193, 1, 0, 0, 0, 886, 888, 5, 86, 0, 0, 887, 889, 5, 86, 0, 0, 888, 887, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 195, 1, 0, 0, 0, 890, 891, 3, 198, 99, 0, 891, 197, 1, 0, 0, 0, 892, 893, 7, 17, 0, 0, 893, 199, 1, 0, 0, 0, 894, 898, 3, 242, 121, 0, 895, 898, 3, 246, 123, 0, 896, 898, 3, 244, 122, 0, 897, 894, 1, 0, 0, 0, 897, 895, 1, 0, 0, 0, 897, 896, 1, 0, 0, 0, 898, 900, 1, 0, 0, 0, 899, 901, 3, 190, 95, 0, 900, 899, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 201, 1, 0, 0, 0, 902, 933, 3, 226, 113, 0, 903, 933, 3, 196, 98, 0, 904, 933, 3, 224, 112, 0, 905, 933, 3, 250, 125, 0, 906, 933, 3, 252, 126, 0, 907, 933, 3, 256, 128, 0, 908, 933, 3, 238, 119, 0, 909, 933, 3, 182, 91, 0, 910, 933, 3, 262, 131, 0, 911, 933, 3, 222, 111, 0, 912, 933, 3, 194, 97, 0, 913, 933, 3, 200, 100, 0, 914, 933, 3, 258, 129, 0, 915, 933, 3, 186, 93, 0, 916, 933, 3, 206, 103, 0, 917, 933, 3, 240, 120, 0, 918, 933, 3, 248, 124, 0, 919, 933, 3, 190, 95, 0, 920, 933, 3, 254, 127, 0, 921, 933, 3, 218, 109, 0, 922, 933, 3, 260, 130, 0, 923, 933, 3, 220, 110, 0, 924, 933, 5, 57, 0, 0, 925, 933, 5, 79, 0, 0, 926, 933, 5, 67, 0, 0, 927, 933, 5, 69, 0, 0, 928, 933, 5, 58, 0, 0, 929, 933, 5, 81, 0, 0, 930, 933, 5, 65, 0, 0, 931, 933, 3, 204, 102, 0, 932, 902, 1, 0, 0, 0, 932, 903, 1, 0, 0, 0, 932, 904, 1, 0, 0, 0, 932, 905, 1, 0, 0, 0, 932, 906, 1, 0, 0, 0, 932, 907, 1, 0, 0, 0, 932, 908, 1, 0, 0, 0, 932, 909, 1, 0, 0, 0, 932, 910, 1, 0, 0, 0, 932, 911, 1, 0, 0, 0, 932, 912, 1, 0, 0, 0, 932, 913, 1, 0, 0, 0, 932, 914, 1, 0, 0, 0, 932, 915, 1, 0, 0, 0, 932, 916, 1, 0, 0, 0, 932, 917, 1, 0, 0, 0, 932, 918, 1, 0, 0, 0, 932, 919, 1, 0, 0, 0, 932, 920, 1, 0, 0, 0, 932, 921, 1, 0, 0, 0, 932, 922, 1, 0, 0, 0, 932, 923, 1, 0, 0, 0, 932, 924, 1, 0, 0, 0, 932, 925, 1, 0, 0, 0, 932, 926, 1, 0, 0, 0, 932, 927, 1, 0, 0, 0, 932, 928, 1, 0, 0, 0, 932, 929, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 932, 931, 1, 0, 0, 0, 933, 203, 1, 0, 0, 0, 934, 936, 5, 93, 0, 0, 935, 937, 5, 93, 0, 0, 936, 935, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 205, 1, 0, 0, 0, 938, 939, 7, 18, 0, 0, 939, 207, 1, 0, 0, 0, 940, 943, 3, 212, 106, 0, 941, 943, 3, 210, 105, 0, 942, 940, 1, 0, 0, 0, 942, 941, 1, 0, 0, 0, 943, 209, 1, 0, 0, 0, 944, 946, 3, 82, 41, 0, 945, 944, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 945, 1, 0, 0, 0, 947, 948, 1, 0, 0, 0, 948, 211, 1, 0, 0, 0, 949, 951, 3, 84, 42, 0, 950, 949, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, 950, 1, 0, 0, 0, 952, 953, 1, 0, 0, 0, 953, 213, 1, 0, 0, 0, 954, 959, 5, 118, 0, 0, 955, 957, 5, 118, 0, 0, 956, 958, 5, 118, 0, 0, 957, 956, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 960, 1, 0, 0, 0, 959, 955, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 970, 1, 0, 0, 0, 961, 966, 5, 120, 0, 0, 962, 964, 5, 120, 0, 0, 963, 965, 5, 120, 0, 0, 964, 963, 1, 0, 0, 0, 964, 965, 1, 0, 0, 0, 965, 967, 1, 0, 0, 0, 966, 962, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 970, 1, 0, 0, 0, 968, 970, 5, 83, 0, 0, 969, 954, 1, 0, 0, 0, 969, 961, 1, 0, 0, 0, 969, 968, 1, 0, 0, 0, 970, 215, 1, 0, 0, 0, 971, 986, 5, 93, 0, 0, 972, 986, 5, 67, 0, 0, 973, 986, 5, 78, 0, 0, 974, 986, 5, 52, 0, 0, 975, 986, 5, 79, 0, 0, 976, 986, 5, 69, 0, 0, 977, 979, 5, 94, 0, 0, 978, 980, 5, 94, 0, 0, 979, 978, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 986, 1, 0, 0, 0, 981, 983, 5, 68, 0, 0, 982, 984, 5, 68, 0, 0, 983, 982, 1, 0, 0, 0, 983, 984, 1, 0, 0, 0, 984, 986, 1, 0, 0, 0, 985, 971, 1, 0, 0, 0, 985, 972, 1, 0, 0, 0, 985, 973, 1, 0, 0, 0, 985, 974, 1, 0, 0, 0, 985, 975, 1, 0, 0, 0, 985, 976, 1, 0, 0, 0, 985, 977, 1, 0, 0, 0, 985, 981, 1, 0, 0, 0, 986, 217, 1, 0, 0, 0, 987, 988, 7, 19, 0, 0, 988, 219, 1, 0, 0, 0, 989, 990, 5, 78, 0, 0, 990, 221, 1, 0, 0, 0, 991, 992, 5, 135, 0, 0, 992, 223, 1, 0, 0, 0, 993, 1000, 3, 236, 118, 0, 994, 1000, 3, 234, 117, 0, 995, 1000, 3, 232, 116, 0, 996, 1000, 3, 230, 115, 0, 997, 1000, 3, 228, 114, 0, 998, 1000, 3, 226, 113, 0, 999, 993, 1, 0, 0, 0, 999, 994, 1, 0, 0, 0, 999, 995, 1, 0, 0, 0, 999, 996, 1, 0, 0, 0, 999, 997, 1, 0, 0, 0, 999, 998, 1, 0, 0, 0, 1000, 225, 1, 0, 0, 0, 1001, 1002, 5, 125, 0, 0, 1002, 227, 1, 0, 0, 0, 1003, 1004, 5, 126, 0, 0, 1004, 229, 1, 0, 0, 0, 1005, 1006, 5, 124, 0, 0, 1006, 231, 1, 0, 0, 0, 1007, 1008, 5, 112, 0, 0, 1008, 233, 1, 0, 0, 0, 1009, 1010, 5, 88, 0, 0, 1010, 235, 1, 0, 0, 0, 1011, 1012, 5, 113, 0, 0, 1012, 237, 1, 0, 0, 0, 1013, 1017, 5, 94, 0, 0, 1014, 1016, 5, 94, 0, 0, 1015, 1014, 1, 0, 0, 0, 1016, 1019, 1, 0, 0, 0, 1017, 1015, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1021, 1, 0, 0, 0, 1019, 1017, 1, 0, 0, 0, 1020, 1022, 5, 43, 0, 0, 1021, 1020, 1, 0, 0, 0, 1021, 1022, 1, 0, 0, 0, 1022, 1025, 1, 0, 0, 0, 1023, 1025, 5, 67, 0, 0, 1024, 1013, 1, 0, 0, 0, 1024, 1023, 1, 0, 0, 0, 1025, 239, 1, 0, 0, 0, 1026, 1028, 5, 42, 0, 0, 1027, 1026, 1, 0, 0, 0, 1028, 1031, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1029, 1030, 1, 0, 0, 0, 1030, 1032, 1, 0, 0, 0, 1031, 1029, 1, 0, 0, 0, 1032, 1034, 5, 133, 0, 0, 1033, 1035, 3, 190, 95, 0, 1034, 1033, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 241, 1, 0, 0, 0, 1036, 1042, 5, 127, 0, 0, 1037, 1039, 5, 114, 0, 0, 1038, 1040, 5, 94, 0, 0, 1039, 1038, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1042, 1, 0, 0, 0, 1041, 1036, 1, 0, 0, 0, 1041, 1037, 1, 0, 0, 0, 1042, 243, 1, 0, 0, 0, 1043, 1044, 5, 131, 0, 0, 1044, 245, 1, 0, 0, 0, 1045, 1046, 7, 20, 0, 0, 1046, 247, 1, 0, 0, 0, 1047, 1049, 5, 42, 0, 0, 1048, 1047, 1, 0, 0, 0, 1049, 1052, 1, 0, 0, 0, 1050, 1048, 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1053, 1, 0, 0, 0, 1052, 1050, 1, 0, 0, 0, 1053, 1054, 5, 134, 0, 0, 1054, 249, 1, 0, 0, 0, 1055, 1056, 5, 63, 0, 0, 1056, 251, 1, 0, 0, 0, 1057, 1058, 5, 89, 0, 0, 1058, 253, 1, 0, 0, 0, 1059, 1060, 7, 21, 0, 0, 1060, 255, 1, 0, 0, 0, 1061, 1063, 7, 22, 0, 0, 1062, 1064, 3, 190, 95, 0, 1063, 1062, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 257, 1, 0, 0, 0, 1065, 1073, 5, 56, 0, 0, 1066, 1073, 5, 82, 0, 0, 1067, 1069, 5, 66, 0, 0, 1068, 1070, 5, 92, 0, 0, 1069, 1068, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1073, 1, 0, 0, 0, 1071, 1073, 5, 92, 0, 0, 1072, 1065, 1, 0, 0, 0, 1072, 1066, 1, 0, 0, 0, 1072, 1067, 1, 0, 0, 0, 1072, 1071, 1, 0, 0, 0, 1073, 259, 1, 0, 0, 0, 1074, 1076, 5, 63, 0, 0, 1075, 1077, 5, 63, 0, 0, 1076, 1075, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1080, 1, 0, 0, 0, 1078, 1080, 5, 89, 0, 0, 1079, 1074, 1, 0, 0, 0, 1079, 1078, 1, 0, 0, 0, 1080, 261, 1, 0, 0, 0, 1081, 1083, 5, 138, 0, 0, 1082, 1081, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1082, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 263, 1, 0, 0, 0, 111, 274, 279, 285, 292, 297, 301, 306, 310, 316, 321, 336, 340, 345, 349, 354, 358, 363, 370, 374, 379, 394, 421, 433, 440, 462, 472, 479, 486, 543, 545, 550, 555, 566, 592, 597, 604, 607, 615, 619, 621, 628, 633, 644, 650, 654, 658, 661, 663, 667, 671, 680, 716, 720, 735, 745, 752, 757, 767, 774, 779, 785, 791, 794, 797, 800, 803, 806, 809, 812, 815, 818, 825, 833, 841, 853, 861, 866, 873, 879, 884, 888, 897, 900, 932, 936, 942, 947, 952, 957, 959, 964, 966, 969, 979, 983, 985, 999, 1017, 1021, 1024, 1029, 1034, 1039, 1041, 1050, 1063, 1069, 1072, 1076, 1079, 1084]