pydpm_xl 0.1.10__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 (94) hide show
  1. py_dpm/AST/ASTConstructor.py +503 -0
  2. py_dpm/AST/ASTObjects.py +827 -0
  3. py_dpm/AST/ASTTemplate.py +101 -0
  4. py_dpm/AST/ASTVisitor.py +13 -0
  5. py_dpm/AST/MLGeneration.py +588 -0
  6. py_dpm/AST/ModuleAnalyzer.py +79 -0
  7. py_dpm/AST/ModuleDependencies.py +203 -0
  8. py_dpm/AST/WhereClauseChecker.py +12 -0
  9. py_dpm/AST/__init__.py +0 -0
  10. py_dpm/AST/check_operands.py +302 -0
  11. py_dpm/DataTypes/ScalarTypes.py +324 -0
  12. py_dpm/DataTypes/TimeClasses.py +370 -0
  13. py_dpm/DataTypes/TypePromotion.py +195 -0
  14. py_dpm/DataTypes/__init__.py +0 -0
  15. py_dpm/Exceptions/__init__.py +0 -0
  16. py_dpm/Exceptions/exceptions.py +84 -0
  17. py_dpm/Exceptions/messages.py +114 -0
  18. py_dpm/OperationScopes/OperationScopeService.py +247 -0
  19. py_dpm/OperationScopes/__init__.py +0 -0
  20. py_dpm/Operators/AggregateOperators.py +138 -0
  21. py_dpm/Operators/BooleanOperators.py +30 -0
  22. py_dpm/Operators/ClauseOperators.py +159 -0
  23. py_dpm/Operators/ComparisonOperators.py +69 -0
  24. py_dpm/Operators/ConditionalOperators.py +362 -0
  25. py_dpm/Operators/NumericOperators.py +101 -0
  26. py_dpm/Operators/Operator.py +388 -0
  27. py_dpm/Operators/StringOperators.py +27 -0
  28. py_dpm/Operators/TimeOperators.py +53 -0
  29. py_dpm/Operators/__init__.py +0 -0
  30. py_dpm/Utils/ValidationsGenerationUtils.py +429 -0
  31. py_dpm/Utils/__init__.py +0 -0
  32. py_dpm/Utils/operands_mapping.py +73 -0
  33. py_dpm/Utils/operator_mapping.py +89 -0
  34. py_dpm/Utils/tokens.py +172 -0
  35. py_dpm/Utils/utils.py +2 -0
  36. py_dpm/ValidationsGeneration/PropertiesConstraintsProcessor.py +190 -0
  37. py_dpm/ValidationsGeneration/Utils.py +364 -0
  38. py_dpm/ValidationsGeneration/VariantsProcessor.py +265 -0
  39. py_dpm/ValidationsGeneration/__init__.py +0 -0
  40. py_dpm/ValidationsGeneration/auxiliary_functions.py +98 -0
  41. py_dpm/__init__.py +61 -0
  42. py_dpm/api/__init__.py +140 -0
  43. py_dpm/api/ast_generator.py +438 -0
  44. py_dpm/api/complete_ast.py +241 -0
  45. py_dpm/api/data_dictionary_validation.py +577 -0
  46. py_dpm/api/migration.py +77 -0
  47. py_dpm/api/semantic.py +224 -0
  48. py_dpm/api/syntax.py +182 -0
  49. py_dpm/client.py +106 -0
  50. py_dpm/data_handlers.py +99 -0
  51. py_dpm/db_utils.py +117 -0
  52. py_dpm/grammar/__init__.py +0 -0
  53. py_dpm/grammar/dist/__init__.py +0 -0
  54. py_dpm/grammar/dist/dpm_xlLexer.interp +428 -0
  55. py_dpm/grammar/dist/dpm_xlLexer.py +804 -0
  56. py_dpm/grammar/dist/dpm_xlLexer.tokens +106 -0
  57. py_dpm/grammar/dist/dpm_xlParser.interp +249 -0
  58. py_dpm/grammar/dist/dpm_xlParser.py +5224 -0
  59. py_dpm/grammar/dist/dpm_xlParser.tokens +106 -0
  60. py_dpm/grammar/dist/dpm_xlParserListener.py +742 -0
  61. py_dpm/grammar/dist/dpm_xlParserVisitor.py +419 -0
  62. py_dpm/grammar/dist/listeners.py +10 -0
  63. py_dpm/grammar/dpm_xlLexer.g4 +435 -0
  64. py_dpm/grammar/dpm_xlParser.g4 +260 -0
  65. py_dpm/migration.py +282 -0
  66. py_dpm/models.py +2139 -0
  67. py_dpm/semantics/DAG/DAGAnalyzer.py +158 -0
  68. py_dpm/semantics/DAG/__init__.py +0 -0
  69. py_dpm/semantics/SemanticAnalyzer.py +320 -0
  70. py_dpm/semantics/Symbols.py +223 -0
  71. py_dpm/semantics/__init__.py +0 -0
  72. py_dpm/utils/__init__.py +0 -0
  73. py_dpm/utils/ast_serialization.py +481 -0
  74. py_dpm/views/data_types.sql +12 -0
  75. py_dpm/views/datapoints.sql +65 -0
  76. py_dpm/views/hierarchy_operand_reference.sql +11 -0
  77. py_dpm/views/hierarchy_preconditions.sql +13 -0
  78. py_dpm/views/hierarchy_variables.sql +26 -0
  79. py_dpm/views/hierarchy_variables_context.sql +14 -0
  80. py_dpm/views/key_components.sql +18 -0
  81. py_dpm/views/module_from_table.sql +11 -0
  82. py_dpm/views/open_keys.sql +13 -0
  83. py_dpm/views/operation_info.sql +27 -0
  84. py_dpm/views/operation_list.sql +18 -0
  85. py_dpm/views/operations_versions_from_module_version.sql +30 -0
  86. py_dpm/views/precondition_info.sql +17 -0
  87. py_dpm/views/report_type_operand_reference_info.sql +18 -0
  88. py_dpm/views/subcategory_info.sql +17 -0
  89. py_dpm/views/table_info.sql +19 -0
  90. pydpm_xl-0.1.10.dist-info/LICENSE +674 -0
  91. pydpm_xl-0.1.10.dist-info/METADATA +50 -0
  92. pydpm_xl-0.1.10.dist-info/RECORD +94 -0
  93. pydpm_xl-0.1.10.dist-info/WHEEL +4 -0
  94. pydpm_xl-0.1.10.dist-info/entry_points.txt +3 -0
py_dpm/db_utils.py ADDED
@@ -0,0 +1,117 @@
1
+ import os
2
+ from urllib.parse import quote_plus
3
+
4
+ from dotenv import load_dotenv
5
+ from sqlalchemy import create_engine
6
+ from sqlalchemy.engine import URL
7
+ from sqlalchemy.orm import close_all_sessions, sessionmaker
8
+ from rich.console import Console
9
+
10
+ console = Console()
11
+
12
+ env_path = os.path.join(os.path.dirname(__file__), ".env")
13
+ if os.path.exists(env_path):
14
+ load_dotenv(env_path)
15
+
16
+ # SQLite configuration
17
+ sqlite_db_path = os.getenv("SQLITE_DB_PATH", "database.db")
18
+
19
+ # Legacy SQL Server configuration (kept for backward compatibility)
20
+ server = os.getenv("DATABASE_SERVER", None)
21
+ username = os.getenv("DATABASE_USER", None)
22
+ password = os.getenv("DATABASE_PASS", None)
23
+ database_name = os.getenv("DATABASE_NAME", None)
24
+
25
+ # Determine database type
26
+ use_sqlite = os.getenv("USE_SQLITE", "true").lower() == "true"
27
+
28
+ if not use_sqlite and not (server and username and password):
29
+ console.print(f"Warning: Database credentials not provided", style="bold yellow")
30
+ elif not use_sqlite:
31
+ # Handling special characters in password for SQL Server
32
+ password = password.replace('}', '}}')
33
+ for x in '%&.@#/\\=;':
34
+ if x in password:
35
+ password = '{' + password + '}'
36
+ break
37
+
38
+ engine = None
39
+ connection = None
40
+ sessionMakerObject = None
41
+
42
+
43
+ def create_engine_object(url):
44
+ global engine
45
+ if use_sqlite:
46
+ engine = create_engine(url, pool_pre_ping=True)
47
+ else:
48
+ engine = create_engine(url, pool_size=20, max_overflow=10,
49
+ pool_recycle=180, pool_pre_ping=True)
50
+
51
+ global sessionMakerObject
52
+ if sessionMakerObject is not None:
53
+ close_all_sessions()
54
+ sessionMakerObject = sessionmaker(bind=engine)
55
+ return engine
56
+
57
+
58
+ def get_engine(owner=None):
59
+ if use_sqlite:
60
+ # For SQLite, create the database path if it doesn't exist
61
+ db_dir = os.path.dirname(sqlite_db_path)
62
+ if db_dir and not os.path.exists(db_dir):
63
+ os.makedirs(db_dir)
64
+
65
+ # If owner is specified, append it to the filename
66
+ if owner:
67
+ base_name = os.path.splitext(sqlite_db_path)[0]
68
+ extension = os.path.splitext(sqlite_db_path)[1] or '.db'
69
+ db_path = f"{base_name}_{owner}{extension}"
70
+ else:
71
+ db_path = sqlite_db_path
72
+
73
+ connection_url = f"sqlite:///{db_path}"
74
+ return create_engine_object(connection_url)
75
+ else:
76
+ # Legacy SQL Server logic
77
+ if owner is None:
78
+ raise Exception("Cannot generate engine. No owner used.")
79
+
80
+ if owner not in ('EBA', 'EIOPA'):
81
+ raise Exception("Invalid owner, must be EBA or EIOPA")
82
+
83
+ if database_name is None:
84
+ database = "DPM_" + owner
85
+ else:
86
+ database = database_name
87
+
88
+ if os.name == 'nt':
89
+ driver = "{SQL Server}"
90
+ else:
91
+ driver = os.getenv('SQL_DRIVER', "{ODBC Driver 18 for SQL Server}")
92
+
93
+ connection_string = (
94
+ f"DRIVER={driver}", f"SERVER={server}",
95
+ f"DATABASE={database}", f"UID={username}",
96
+ f"PWD={password}",
97
+ "TrustServerCertificate=yes")
98
+ connection_string = ';'.join(connection_string)
99
+ connection_url = URL.create("mssql+pyodbc", query={"odbc_connect": quote_plus(connection_string)})
100
+ return create_engine_object(connection_url)
101
+
102
+
103
+ def get_connection(owner=None):
104
+ global engine
105
+ if engine is None:
106
+ engine = get_engine(owner)
107
+ connection = engine.connect()
108
+ return connection
109
+
110
+
111
+ def get_session():
112
+ global sessionMakerObject
113
+ """Returns as session on the connection string"""
114
+ if sessionMakerObject is None:
115
+ raise Exception("Not found Session Maker")
116
+ session = sessionMakerObject()
117
+ return session
File without changes
File without changes
@@ -0,0 +1,428 @@
1
+ token literal names:
2
+ null
3
+ null
4
+ null
5
+ null
6
+ null
7
+ null
8
+ ':='
9
+ '<-'
10
+ null
11
+ null
12
+ null
13
+ null
14
+ null
15
+ null
16
+ null
17
+ 'with'
18
+ null
19
+ null
20
+ null
21
+ null
22
+ null
23
+ null
24
+ null
25
+ null
26
+ null
27
+ null
28
+ 'group by'
29
+ null
30
+ null
31
+ null
32
+ null
33
+ null
34
+ null
35
+ null
36
+ null
37
+ null
38
+ 'in'
39
+ null
40
+ null
41
+ null
42
+ null
43
+ '{'
44
+ null
45
+ '['
46
+ null
47
+ null
48
+ null
49
+ null
50
+ null
51
+ null
52
+ null
53
+ null
54
+ null
55
+ null
56
+ null
57
+ null
58
+ null
59
+ null
60
+ null
61
+ ';'
62
+ null
63
+ null
64
+ null
65
+ 'null'
66
+ null
67
+ null
68
+ null
69
+ null
70
+ null
71
+ null
72
+ null
73
+ 'interval'
74
+ 'default'
75
+ null
76
+ null
77
+ null
78
+ null
79
+ null
80
+ null
81
+ null
82
+ null
83
+ null
84
+ null
85
+ null
86
+ null
87
+ null
88
+ null
89
+ null
90
+ null
91
+ null
92
+ null
93
+ null
94
+ null
95
+ null
96
+ null
97
+ null
98
+
99
+ token symbolic names:
100
+ null
101
+ BOOLEAN_LITERAL
102
+ AND
103
+ OR
104
+ XOR
105
+ NOT
106
+ ASSIGN
107
+ PERSISTENT_ASSIGN
108
+ EQ
109
+ NE
110
+ LT
111
+ LE
112
+ GT
113
+ GE
114
+ MATCH
115
+ WITH
116
+ PLUS
117
+ MINUS
118
+ MULT
119
+ DIV
120
+ MAX_AGGR
121
+ MIN_AGGR
122
+ SUM
123
+ COUNT
124
+ AVG
125
+ MEDIAN
126
+ GROUP_BY
127
+ ABS
128
+ ISNULL
129
+ EXP
130
+ LN
131
+ SQRT
132
+ POWER
133
+ LOG
134
+ MAX
135
+ MIN
136
+ IN
137
+ COMMA
138
+ COLON
139
+ LPAREN
140
+ RPAREN
141
+ CURLY_BRACKET_LEFT
142
+ CURLY_BRACKET_RIGHT
143
+ SQUARE_BRACKET_LEFT
144
+ SQUARE_BRACKET_RIGHT
145
+ IF
146
+ ENDIF
147
+ THEN
148
+ ELSE
149
+ NVL
150
+ FILTER
151
+ WHERE
152
+ GET
153
+ RENAME
154
+ TO
155
+ TIME_SHIFT
156
+ LEN
157
+ CONCAT
158
+ TIME_PERIOD
159
+ EOL
160
+ INTEGER_LITERAL
161
+ DECIMAL_LITERAL
162
+ PERCENT_LITERAL
163
+ NULL_LITERAL
164
+ STRING_LITERAL
165
+ EMPTY_LITERAL
166
+ DATE_LITERAL
167
+ TIME_INTERVAL_LITERAL
168
+ TIME_PERIOD_LITERAL
169
+ CODE
170
+ WS
171
+ INTERVAL
172
+ DEFAULT
173
+ ROW
174
+ ROW_RANGE
175
+ ROW_ALL
176
+ COL
177
+ COL_RANGE
178
+ COL_ALL
179
+ SHEET
180
+ SHEET_RANGE
181
+ SHEET_ALL
182
+ TABLE_REFERENCE
183
+ TABLE_GROUP_REFERENCE
184
+ VAR_REFERENCE
185
+ OPERATION_REFERENCE
186
+ PRECONDITION_ELEMENT
187
+ SELECTION_MODE_WS
188
+ ROW_COMPONENT
189
+ COL_COMPONENT
190
+ SHEET_COMPONENT
191
+ ITEM_SIGNATURE
192
+ PROPERTY_CODE
193
+ CLAUSE_WS
194
+ GROUPING_WS
195
+ SET_OPERAND_MODE_WS
196
+
197
+ rule names:
198
+ BOOLEAN_LITERAL
199
+ AND
200
+ OR
201
+ XOR
202
+ NOT
203
+ ASSIGN
204
+ PERSISTENT_ASSIGN
205
+ EQ
206
+ NE
207
+ LT
208
+ LE
209
+ GT
210
+ GE
211
+ MATCH
212
+ WITH
213
+ PLUS
214
+ MINUS
215
+ MULT
216
+ DIV
217
+ MAX_AGGR
218
+ MIN_AGGR
219
+ SUM
220
+ COUNT
221
+ AVG
222
+ MEDIAN
223
+ GROUP_BY
224
+ ABS
225
+ ISNULL
226
+ EXP
227
+ LN
228
+ SQRT
229
+ POWER
230
+ LOG
231
+ MAX
232
+ MIN
233
+ IN
234
+ COMMA
235
+ COLON
236
+ LPAREN
237
+ RPAREN
238
+ CURLY_BRACKET_LEFT
239
+ CURLY_BRACKET_RIGHT
240
+ SQUARE_BRACKET_LEFT
241
+ SQUARE_BRACKET_RIGHT
242
+ IF
243
+ ENDIF
244
+ THEN
245
+ ELSE
246
+ NVL
247
+ FILTER
248
+ WHERE
249
+ GET
250
+ RENAME
251
+ TO
252
+ TIME_SHIFT
253
+ LEN
254
+ CONCAT
255
+ TIME_PERIOD
256
+ EOL
257
+ DIGITS0_9
258
+ DIGITS1_9
259
+ INTEGER_LITERAL
260
+ DECIMAL_LITERAL
261
+ PERCENT_LITERAL
262
+ NULL_LITERAL
263
+ STRING_LITERAL
264
+ EMPTY_LITERAL
265
+ YEAR
266
+ MONTH
267
+ WEEK
268
+ DAY
269
+ HOURS
270
+ MINUTES
271
+ SECONDS
272
+ DATE_FORMAT
273
+ TIME_PERIOD_FORMAT
274
+ DATE_LITERAL
275
+ TIME_INTERVAL_LITERAL
276
+ TIME_PERIOD_LITERAL
277
+ CODE
278
+ WS
279
+ SELECTION_MODE_COMMA
280
+ SELECTION_MODE_COLON
281
+ SELECTION_MODE_LPAREN
282
+ SELECTION_MODE_RPAREN
283
+ SELECTION_MODE_CURLY_BRACKET_RIGHT
284
+ INTERVAL
285
+ DEFAULT
286
+ SELECTION_MODE_NULL_LITERAL
287
+ SELECTION_MODE_BOOLEAN_LITERAL
288
+ ROW_PREFIX
289
+ COL_PREFIX
290
+ SHEET_PREFIX
291
+ TABLE_PREFIX
292
+ TABLE_GROUP_PREFIX
293
+ VAR_REF_PREFIX
294
+ OPERATION_REF_PREFIX
295
+ PRECONDITION_PREFIX
296
+ TABLE_CODE
297
+ CELL_COMPONENT_CODE
298
+ CELL_COMPONENT_RANGE
299
+ VAR_CODE
300
+ OPERATION_CODE
301
+ ROW
302
+ ROW_RANGE
303
+ ROW_ALL
304
+ COL
305
+ COL_RANGE
306
+ COL_ALL
307
+ SHEET
308
+ SHEET_RANGE
309
+ SHEET_ALL
310
+ TABLE_REFERENCE
311
+ TABLE_GROUP_REFERENCE
312
+ VAR_REFERENCE
313
+ OPERATION_REFERENCE
314
+ PRECONDITION_ELEMENT
315
+ SELECTION_MODE_INTEGER_LITERAL
316
+ SELECTION_MODE_DECIMAL_LITERAL
317
+ SELECTION_MODE_PERCENT_LITERAL
318
+ SELECTION_MODE_STRING_LITERAL
319
+ SELECTION_MODE_EMPTY_LITERAL
320
+ SELECTION_MODE_DATE_LITERAL
321
+ SELECTION_MODE_TIME_INTERVAL_LITERAL
322
+ SELECTION_MODE_TIME_PERIOD_LITERAL
323
+ SELECTION_MODE_WS
324
+ CLAUSE_BOOLEAN_LITERAL
325
+ CLAUSE_AND
326
+ CLAUSE_OR
327
+ CLAUSE_XOR
328
+ CLAUSE_NOT
329
+ CLAUSE_EQ
330
+ CLAUSE_NE
331
+ CLAUSE_LT
332
+ CLAUSE_LE
333
+ CLAUSE_GT
334
+ CLAUSE_GE
335
+ CLAUSE_MATCH
336
+ CLAUSE_PLUS
337
+ CLAUSE_MINUS
338
+ CLAUSE_MULT
339
+ CLAUSE_DIV
340
+ CLAUSE_MAX_AGGR
341
+ CLAUSE_MIN_AGGR
342
+ CLAUSE_SUM
343
+ CLAUSE_COUNT
344
+ CLAUSE_AVG
345
+ CLAUSE_MEDIAN
346
+ CLAUSE_GROUP_BY
347
+ CLAUSE_ABS
348
+ CLAUSE_ISNULL
349
+ CLAUSE_EXP
350
+ CLAUSE_LN
351
+ CLAUSE_SQRT
352
+ CLAUSE_POWER
353
+ CLAUSE_LOG
354
+ CLAUSE_MAX
355
+ CLAUSE_MIN
356
+ CLAUSE_IN
357
+ CLAUSE_COMMA
358
+ CLAUSE_COLON
359
+ CLAUSE_LPAREN
360
+ CLAUSE_RPAREN
361
+ CLAUSE_CURLY_BRACKET_LEFT
362
+ CLAUSE_CURLY_BRACKET_RIGHT
363
+ CLAUSE_SQUARE_BRACKET_LEFT
364
+ CLAUSE_SQUARE_BRACKET_RIGHT
365
+ CLAUSE_IF
366
+ CLAUSE_ENDIF
367
+ CLAUSE_THEN
368
+ CLAUSE_ELSE
369
+ CLAUSE_NVL
370
+ CLAUSE_FILTER
371
+ CLAUSE_WHERE
372
+ CLAUSE_GET
373
+ CLAUSE_RENAME
374
+ CLAUSE_TO
375
+ CLAUSE_TIME_SHIFT
376
+ CLAUSE_LEN
377
+ CLAUSE_CONCAT
378
+ ROW_COMPONENT
379
+ COL_COMPONENT
380
+ SHEET_COMPONENT
381
+ CLAUSE_TIME_PERIOD
382
+ CLAUSE_INTEGER_LITERAL
383
+ CLAUSE_DECIMAL_LITERAL
384
+ CLAUSE_PERCENT_LITERAL
385
+ CLAUSE_STRING_LITERAL
386
+ CLAUSE_EMPTY_LITERAL
387
+ CLAUSE_DATE_LITERAL
388
+ CLAUSE_TIME_INTERVAL_LITERAL
389
+ CLAUSE_TIME_PERIOD_LITERAL
390
+ ITEM_SIGNATURE
391
+ PROPERTY_CODE
392
+ CLAUSE_WS
393
+ GROUPING_RPAREN
394
+ GROUPING_COMMA
395
+ GROUPING_ROW_COMPONENT
396
+ GROUPING_COL_COMPONENT
397
+ GROUPING_SHEET_COMPONENT
398
+ GROUPING_PROPERTY_CODE
399
+ GROUPING_WS
400
+ SET_OPERAND_MODE_COMMA
401
+ SET_OPERAND_MODE_CURLY_BRACKET_LEFT
402
+ SET_OPERAND_MODE_CURLY_BRACKET_RIGHT
403
+ SET_OPERAND_MODE_SQUARE_BRACKET_LEFT
404
+ SET_OPERAND_MODE_SQUARE_BRACKET_RIGHT
405
+ SET_OPERAND_MODE_ITEM_SIGNATURE
406
+ SET_OPERAND_MODE_INTEGER_LITERAL
407
+ SET_OPERAND_MODE_DECIMAL_LITERAL
408
+ SET_OPERAND_MODE_PERCENT_LITERAL
409
+ SET_OPERAND_MODE_STRING_LITERAL
410
+ SET_OPERAND_MODE_EMPTY_LITERAL
411
+ SET_OPERAND_MODE_DATE_LITERAL
412
+ SET_OPERAND_MODE_TIME_INTERVAL_LITERAL
413
+ SET_OPERAND_MODE_TIME_PERIOD_LITERAL
414
+ SET_OPERAND_MODE_WS
415
+
416
+ channel names:
417
+ DEFAULT_TOKEN_CHANNEL
418
+ HIDDEN
419
+
420
+ mode names:
421
+ DEFAULT_MODE
422
+ SELECTION_MODE
423
+ CLAUSE_MODE
424
+ GROUPING_CLAUSE_MODE
425
+ SET_OPERAND_MODE
426
+
427
+ atn:
428
+ [4, 0, 95, 1558, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 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, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 449, 8, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 4, 61, 698, 8, 61, 11, 61, 12, 61, 699, 1, 61, 1, 61, 1, 61, 4, 61, 705, 8, 61, 11, 61, 12, 61, 706, 1, 61, 1, 61, 3, 61, 711, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 723, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 4, 65, 732, 8, 65, 11, 65, 12, 65, 733, 1, 65, 1, 65, 1, 65, 4, 65, 739, 8, 65, 11, 65, 12, 65, 740, 1, 65, 3, 65, 744, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 750, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 761, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 769, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 775, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 781, 8, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 801, 8, 74, 1, 75, 1, 75, 3, 75, 805, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 829, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 5, 79, 847, 8, 79, 10, 79, 12, 79, 850, 9, 79, 1, 79, 5, 79, 853, 8, 79, 10, 79, 12, 79, 856, 9, 79, 1, 80, 4, 80, 859, 8, 80, 11, 80, 12, 80, 860, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 5, 98, 930, 8, 98, 10, 98, 12, 98, 933, 9, 98, 1, 98, 5, 98, 936, 8, 98, 10, 98, 12, 98, 939, 9, 98, 1, 99, 4, 99, 942, 8, 99, 11, 99, 12, 99, 943, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 5, 101, 952, 8, 101, 10, 101, 12, 101, 955, 9, 101, 1, 101, 5, 101, 958, 8, 101, 10, 101, 12, 101, 961, 9, 101, 1, 102, 1, 102, 5, 102, 965, 8, 102, 10, 102, 12, 102, 968, 9, 102, 1, 102, 5, 102, 971, 8, 102, 10, 102, 12, 102, 974, 9, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 5, 192, 1440, 8, 192, 10, 192, 12, 192, 1443, 9, 192, 1, 192, 1, 192, 5, 192, 1447, 8, 192, 10, 192, 12, 192, 1450, 9, 192, 1, 192, 4, 192, 1453, 8, 192, 11, 192, 12, 192, 1454, 1, 193, 1, 193, 1, 194, 4, 194, 1460, 8, 194, 11, 194, 12, 194, 1461, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 4, 201, 1492, 8, 201, 11, 201, 12, 201, 1493, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 0, 0, 217, 5, 1, 7, 2, 9, 3, 11, 4, 13, 5, 15, 6, 17, 7, 19, 8, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 18, 41, 19, 43, 20, 45, 21, 47, 22, 49, 23, 51, 24, 53, 25, 55, 26, 57, 27, 59, 28, 61, 29, 63, 30, 65, 31, 67, 32, 69, 33, 71, 34, 73, 35, 75, 36, 77, 37, 79, 38, 81, 39, 83, 40, 85, 41, 87, 42, 89, 43, 91, 44, 93, 45, 95, 46, 97, 47, 99, 48, 101, 49, 103, 50, 105, 51, 107, 52, 109, 53, 111, 54, 113, 55, 115, 56, 117, 57, 119, 58, 121, 59, 123, 0, 125, 0, 127, 60, 129, 61, 131, 62, 133, 63, 135, 64, 137, 65, 139, 0, 141, 0, 143, 0, 145, 0, 147, 0, 149, 0, 151, 0, 153, 0, 155, 0, 157, 66, 159, 67, 161, 68, 163, 69, 165, 70, 167, 0, 169, 0, 171, 0, 173, 0, 175, 0, 177, 71, 179, 72, 181, 0, 183, 0, 185, 0, 187, 0, 189, 0, 191, 0, 193, 0, 195, 0, 197, 0, 199, 0, 201, 0, 203, 0, 205, 0, 207, 0, 209, 0, 211, 73, 213, 74, 215, 75, 217, 76, 219, 77, 221, 78, 223, 79, 225, 80, 227, 81, 229, 82, 231, 83, 233, 84, 235, 85, 237, 86, 239, 0, 241, 0, 243, 0, 245, 0, 247, 0, 249, 0, 251, 0, 253, 0, 255, 87, 257, 0, 259, 0, 261, 0, 263, 0, 265, 0, 267, 0, 269, 0, 271, 0, 273, 0, 275, 0, 277, 0, 279, 0, 281, 0, 283, 0, 285, 0, 287, 0, 289, 0, 291, 0, 293, 0, 295, 0, 297, 0, 299, 0, 301, 0, 303, 0, 305, 0, 307, 0, 309, 0, 311, 0, 313, 0, 315, 0, 317, 0, 319, 0, 321, 0, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 0, 335, 0, 337, 0, 339, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353, 0, 355, 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 88, 367, 89, 369, 90, 371, 0, 373, 0, 375, 0, 377, 0, 379, 0, 381, 0, 383, 0, 385, 0, 387, 0, 389, 91, 391, 92, 393, 93, 395, 0, 397, 0, 399, 0, 401, 0, 403, 0, 405, 0, 407, 94, 409, 0, 411, 0, 413, 0, 415, 0, 417, 0, 419, 0, 421, 0, 423, 0, 425, 0, 427, 0, 429, 0, 431, 0, 433, 0, 435, 0, 437, 95, 5, 0, 1, 2, 3, 4, 18, 6, 0, 65, 65, 68, 68, 77, 77, 81, 81, 83, 83, 87, 87, 1, 0, 34, 34, 1, 0, 39, 39, 1, 0, 48, 50, 1, 0, 49, 52, 1, 0, 48, 49, 1, 0, 48, 51, 1, 0, 48, 53, 1, 0, 49, 50, 2, 0, 65, 90, 97, 122, 5, 0, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 3, 0, 48, 57, 65, 90, 97, 122, 3, 0, 9, 10, 12, 13, 32, 32, 5, 0, 45, 46, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 45, 45, 1, 0, 42, 42, 5, 0, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 58, 58, 1565, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 1, 167, 1, 0, 0, 0, 1, 169, 1, 0, 0, 0, 1, 171, 1, 0, 0, 0, 1, 173, 1, 0, 0, 0, 1, 175, 1, 0, 0, 0, 1, 177, 1, 0, 0, 0, 1, 179, 1, 0, 0, 0, 1, 181, 1, 0, 0, 0, 1, 183, 1, 0, 0, 0, 1, 211, 1, 0, 0, 0, 1, 213, 1, 0, 0, 0, 1, 215, 1, 0, 0, 0, 1, 217, 1, 0, 0, 0, 1, 219, 1, 0, 0, 0, 1, 221, 1, 0, 0, 0, 1, 223, 1, 0, 0, 0, 1, 225, 1, 0, 0, 0, 1, 227, 1, 0, 0, 0, 1, 229, 1, 0, 0, 0, 1, 231, 1, 0, 0, 0, 1, 233, 1, 0, 0, 0, 1, 235, 1, 0, 0, 0, 1, 237, 1, 0, 0, 0, 1, 239, 1, 0, 0, 0, 1, 241, 1, 0, 0, 0, 1, 243, 1, 0, 0, 0, 1, 245, 1, 0, 0, 0, 1, 247, 1, 0, 0, 0, 1, 249, 1, 0, 0, 0, 1, 251, 1, 0, 0, 0, 1, 253, 1, 0, 0, 0, 1, 255, 1, 0, 0, 0, 2, 257, 1, 0, 0, 0, 2, 259, 1, 0, 0, 0, 2, 261, 1, 0, 0, 0, 2, 263, 1, 0, 0, 0, 2, 265, 1, 0, 0, 0, 2, 267, 1, 0, 0, 0, 2, 269, 1, 0, 0, 0, 2, 271, 1, 0, 0, 0, 2, 273, 1, 0, 0, 0, 2, 275, 1, 0, 0, 0, 2, 277, 1, 0, 0, 0, 2, 279, 1, 0, 0, 0, 2, 281, 1, 0, 0, 0, 2, 283, 1, 0, 0, 0, 2, 285, 1, 0, 0, 0, 2, 287, 1, 0, 0, 0, 2, 289, 1, 0, 0, 0, 2, 291, 1, 0, 0, 0, 2, 293, 1, 0, 0, 0, 2, 295, 1, 0, 0, 0, 2, 297, 1, 0, 0, 0, 2, 299, 1, 0, 0, 0, 2, 301, 1, 0, 0, 0, 2, 303, 1, 0, 0, 0, 2, 305, 1, 0, 0, 0, 2, 307, 1, 0, 0, 0, 2, 309, 1, 0, 0, 0, 2, 311, 1, 0, 0, 0, 2, 313, 1, 0, 0, 0, 2, 315, 1, 0, 0, 0, 2, 317, 1, 0, 0, 0, 2, 319, 1, 0, 0, 0, 2, 321, 1, 0, 0, 0, 2, 323, 1, 0, 0, 0, 2, 325, 1, 0, 0, 0, 2, 327, 1, 0, 0, 0, 2, 329, 1, 0, 0, 0, 2, 331, 1, 0, 0, 0, 2, 333, 1, 0, 0, 0, 2, 335, 1, 0, 0, 0, 2, 337, 1, 0, 0, 0, 2, 339, 1, 0, 0, 0, 2, 341, 1, 0, 0, 0, 2, 343, 1, 0, 0, 0, 2, 345, 1, 0, 0, 0, 2, 347, 1, 0, 0, 0, 2, 349, 1, 0, 0, 0, 2, 351, 1, 0, 0, 0, 2, 353, 1, 0, 0, 0, 2, 355, 1, 0, 0, 0, 2, 357, 1, 0, 0, 0, 2, 359, 1, 0, 0, 0, 2, 361, 1, 0, 0, 0, 2, 363, 1, 0, 0, 0, 2, 365, 1, 0, 0, 0, 2, 367, 1, 0, 0, 0, 2, 369, 1, 0, 0, 0, 2, 371, 1, 0, 0, 0, 2, 373, 1, 0, 0, 0, 2, 375, 1, 0, 0, 0, 2, 377, 1, 0, 0, 0, 2, 379, 1, 0, 0, 0, 2, 381, 1, 0, 0, 0, 2, 383, 1, 0, 0, 0, 2, 385, 1, 0, 0, 0, 2, 387, 1, 0, 0, 0, 2, 389, 1, 0, 0, 0, 2, 391, 1, 0, 0, 0, 2, 393, 1, 0, 0, 0, 3, 395, 1, 0, 0, 0, 3, 397, 1, 0, 0, 0, 3, 399, 1, 0, 0, 0, 3, 401, 1, 0, 0, 0, 3, 403, 1, 0, 0, 0, 3, 405, 1, 0, 0, 0, 3, 407, 1, 0, 0, 0, 4, 409, 1, 0, 0, 0, 4, 411, 1, 0, 0, 0, 4, 413, 1, 0, 0, 0, 4, 415, 1, 0, 0, 0, 4, 417, 1, 0, 0, 0, 4, 419, 1, 0, 0, 0, 4, 421, 1, 0, 0, 0, 4, 423, 1, 0, 0, 0, 4, 425, 1, 0, 0, 0, 4, 427, 1, 0, 0, 0, 4, 429, 1, 0, 0, 0, 4, 431, 1, 0, 0, 0, 4, 433, 1, 0, 0, 0, 4, 435, 1, 0, 0, 0, 4, 437, 1, 0, 0, 0, 5, 448, 1, 0, 0, 0, 7, 450, 1, 0, 0, 0, 9, 454, 1, 0, 0, 0, 11, 457, 1, 0, 0, 0, 13, 461, 1, 0, 0, 0, 15, 465, 1, 0, 0, 0, 17, 468, 1, 0, 0, 0, 19, 471, 1, 0, 0, 0, 21, 473, 1, 0, 0, 0, 23, 476, 1, 0, 0, 0, 25, 478, 1, 0, 0, 0, 27, 481, 1, 0, 0, 0, 29, 483, 1, 0, 0, 0, 31, 486, 1, 0, 0, 0, 33, 492, 1, 0, 0, 0, 35, 497, 1, 0, 0, 0, 37, 499, 1, 0, 0, 0, 39, 501, 1, 0, 0, 0, 41, 503, 1, 0, 0, 0, 43, 505, 1, 0, 0, 0, 45, 514, 1, 0, 0, 0, 47, 523, 1, 0, 0, 0, 49, 527, 1, 0, 0, 0, 51, 533, 1, 0, 0, 0, 53, 537, 1, 0, 0, 0, 55, 544, 1, 0, 0, 0, 57, 555, 1, 0, 0, 0, 59, 559, 1, 0, 0, 0, 61, 566, 1, 0, 0, 0, 63, 570, 1, 0, 0, 0, 65, 573, 1, 0, 0, 0, 67, 578, 1, 0, 0, 0, 69, 584, 1, 0, 0, 0, 71, 588, 1, 0, 0, 0, 73, 592, 1, 0, 0, 0, 75, 596, 1, 0, 0, 0, 77, 601, 1, 0, 0, 0, 79, 603, 1, 0, 0, 0, 81, 605, 1, 0, 0, 0, 83, 607, 1, 0, 0, 0, 85, 609, 1, 0, 0, 0, 87, 613, 1, 0, 0, 0, 89, 615, 1, 0, 0, 0, 91, 619, 1, 0, 0, 0, 93, 621, 1, 0, 0, 0, 95, 624, 1, 0, 0, 0, 97, 630, 1, 0, 0, 0, 99, 635, 1, 0, 0, 0, 101, 640, 1, 0, 0, 0, 103, 644, 1, 0, 0, 0, 105, 651, 1, 0, 0, 0, 107, 657, 1, 0, 0, 0, 109, 661, 1, 0, 0, 0, 111, 668, 1, 0, 0, 0, 113, 671, 1, 0, 0, 0, 115, 682, 1, 0, 0, 0, 117, 686, 1, 0, 0, 0, 119, 688, 1, 0, 0, 0, 121, 690, 1, 0, 0, 0, 123, 692, 1, 0, 0, 0, 125, 694, 1, 0, 0, 0, 127, 710, 1, 0, 0, 0, 129, 712, 1, 0, 0, 0, 131, 722, 1, 0, 0, 0, 133, 724, 1, 0, 0, 0, 135, 743, 1, 0, 0, 0, 137, 749, 1, 0, 0, 0, 139, 751, 1, 0, 0, 0, 141, 760, 1, 0, 0, 0, 143, 768, 1, 0, 0, 0, 145, 774, 1, 0, 0, 0, 147, 780, 1, 0, 0, 0, 149, 782, 1, 0, 0, 0, 151, 785, 1, 0, 0, 0, 153, 788, 1, 0, 0, 0, 155, 828, 1, 0, 0, 0, 157, 830, 1, 0, 0, 0, 159, 834, 1, 0, 0, 0, 161, 840, 1, 0, 0, 0, 163, 844, 1, 0, 0, 0, 165, 858, 1, 0, 0, 0, 167, 864, 1, 0, 0, 0, 169, 868, 1, 0, 0, 0, 171, 872, 1, 0, 0, 0, 173, 876, 1, 0, 0, 0, 175, 880, 1, 0, 0, 0, 177, 885, 1, 0, 0, 0, 179, 894, 1, 0, 0, 0, 181, 902, 1, 0, 0, 0, 183, 906, 1, 0, 0, 0, 185, 910, 1, 0, 0, 0, 187, 912, 1, 0, 0, 0, 189, 914, 1, 0, 0, 0, 191, 916, 1, 0, 0, 0, 193, 918, 1, 0, 0, 0, 195, 920, 1, 0, 0, 0, 197, 922, 1, 0, 0, 0, 199, 924, 1, 0, 0, 0, 201, 927, 1, 0, 0, 0, 203, 941, 1, 0, 0, 0, 205, 945, 1, 0, 0, 0, 207, 949, 1, 0, 0, 0, 209, 962, 1, 0, 0, 0, 211, 975, 1, 0, 0, 0, 213, 978, 1, 0, 0, 0, 215, 981, 1, 0, 0, 0, 217, 984, 1, 0, 0, 0, 219, 987, 1, 0, 0, 0, 221, 990, 1, 0, 0, 0, 223, 993, 1, 0, 0, 0, 225, 996, 1, 0, 0, 0, 227, 999, 1, 0, 0, 0, 229, 1002, 1, 0, 0, 0, 231, 1005, 1, 0, 0, 0, 233, 1008, 1, 0, 0, 0, 235, 1011, 1, 0, 0, 0, 237, 1014, 1, 0, 0, 0, 239, 1017, 1, 0, 0, 0, 241, 1021, 1, 0, 0, 0, 243, 1025, 1, 0, 0, 0, 245, 1029, 1, 0, 0, 0, 247, 1033, 1, 0, 0, 0, 249, 1037, 1, 0, 0, 0, 251, 1041, 1, 0, 0, 0, 253, 1045, 1, 0, 0, 0, 255, 1049, 1, 0, 0, 0, 257, 1053, 1, 0, 0, 0, 259, 1057, 1, 0, 0, 0, 261, 1063, 1, 0, 0, 0, 263, 1068, 1, 0, 0, 0, 265, 1074, 1, 0, 0, 0, 267, 1080, 1, 0, 0, 0, 269, 1084, 1, 0, 0, 0, 271, 1089, 1, 0, 0, 0, 273, 1093, 1, 0, 0, 0, 275, 1098, 1, 0, 0, 0, 277, 1102, 1, 0, 0, 0, 279, 1107, 1, 0, 0, 0, 281, 1115, 1, 0, 0, 0, 283, 1119, 1, 0, 0, 0, 285, 1123, 1, 0, 0, 0, 287, 1127, 1, 0, 0, 0, 289, 1131, 1, 0, 0, 0, 291, 1142, 1, 0, 0, 0, 293, 1153, 1, 0, 0, 0, 295, 1159, 1, 0, 0, 0, 297, 1167, 1, 0, 0, 0, 299, 1173, 1, 0, 0, 0, 301, 1182, 1, 0, 0, 0, 303, 1194, 1, 0, 0, 0, 305, 1200, 1, 0, 0, 0, 307, 1209, 1, 0, 0, 0, 309, 1215, 1, 0, 0, 0, 311, 1220, 1, 0, 0, 0, 313, 1227, 1, 0, 0, 0, 315, 1235, 1, 0, 0, 0, 317, 1241, 1, 0, 0, 0, 319, 1247, 1, 0, 0, 0, 321, 1253, 1, 0, 0, 0, 323, 1259, 1, 0, 0, 0, 325, 1263, 1, 0, 0, 0, 327, 1267, 1, 0, 0, 0, 329, 1271, 1, 0, 0, 0, 331, 1275, 1, 0, 0, 0, 333, 1280, 1, 0, 0, 0, 335, 1284, 1, 0, 0, 0, 337, 1289, 1, 0, 0, 0, 339, 1294, 1, 0, 0, 0, 341, 1299, 1, 0, 0, 0, 343, 1307, 1, 0, 0, 0, 345, 1314, 1, 0, 0, 0, 347, 1321, 1, 0, 0, 0, 349, 1327, 1, 0, 0, 0, 351, 1336, 1, 0, 0, 0, 353, 1344, 1, 0, 0, 0, 355, 1350, 1, 0, 0, 0, 357, 1359, 1, 0, 0, 0, 359, 1364, 1, 0, 0, 0, 361, 1377, 1, 0, 0, 0, 363, 1383, 1, 0, 0, 0, 365, 1387, 1, 0, 0, 0, 367, 1389, 1, 0, 0, 0, 369, 1391, 1, 0, 0, 0, 371, 1393, 1, 0, 0, 0, 373, 1397, 1, 0, 0, 0, 375, 1401, 1, 0, 0, 0, 377, 1405, 1, 0, 0, 0, 379, 1409, 1, 0, 0, 0, 381, 1413, 1, 0, 0, 0, 383, 1417, 1, 0, 0, 0, 385, 1423, 1, 0, 0, 0, 387, 1431, 1, 0, 0, 0, 389, 1437, 1, 0, 0, 0, 391, 1456, 1, 0, 0, 0, 393, 1459, 1, 0, 0, 0, 395, 1465, 1, 0, 0, 0, 397, 1470, 1, 0, 0, 0, 399, 1474, 1, 0, 0, 0, 401, 1478, 1, 0, 0, 0, 403, 1482, 1, 0, 0, 0, 405, 1486, 1, 0, 0, 0, 407, 1491, 1, 0, 0, 0, 409, 1497, 1, 0, 0, 0, 411, 1501, 1, 0, 0, 0, 413, 1505, 1, 0, 0, 0, 415, 1510, 1, 0, 0, 0, 417, 1514, 1, 0, 0, 0, 419, 1518, 1, 0, 0, 0, 421, 1522, 1, 0, 0, 0, 423, 1526, 1, 0, 0, 0, 425, 1530, 1, 0, 0, 0, 427, 1534, 1, 0, 0, 0, 429, 1538, 1, 0, 0, 0, 431, 1542, 1, 0, 0, 0, 433, 1546, 1, 0, 0, 0, 435, 1550, 1, 0, 0, 0, 437, 1554, 1, 0, 0, 0, 439, 440, 5, 116, 0, 0, 440, 441, 5, 114, 0, 0, 441, 442, 5, 117, 0, 0, 442, 449, 5, 101, 0, 0, 443, 444, 5, 102, 0, 0, 444, 445, 5, 97, 0, 0, 445, 446, 5, 108, 0, 0, 446, 447, 5, 115, 0, 0, 447, 449, 5, 101, 0, 0, 448, 439, 1, 0, 0, 0, 448, 443, 1, 0, 0, 0, 449, 6, 1, 0, 0, 0, 450, 451, 5, 97, 0, 0, 451, 452, 5, 110, 0, 0, 452, 453, 5, 100, 0, 0, 453, 8, 1, 0, 0, 0, 454, 455, 5, 111, 0, 0, 455, 456, 5, 114, 0, 0, 456, 10, 1, 0, 0, 0, 457, 458, 5, 120, 0, 0, 458, 459, 5, 111, 0, 0, 459, 460, 5, 114, 0, 0, 460, 12, 1, 0, 0, 0, 461, 462, 5, 110, 0, 0, 462, 463, 5, 111, 0, 0, 463, 464, 5, 116, 0, 0, 464, 14, 1, 0, 0, 0, 465, 466, 5, 58, 0, 0, 466, 467, 5, 61, 0, 0, 467, 16, 1, 0, 0, 0, 468, 469, 5, 60, 0, 0, 469, 470, 5, 45, 0, 0, 470, 18, 1, 0, 0, 0, 471, 472, 5, 61, 0, 0, 472, 20, 1, 0, 0, 0, 473, 474, 5, 33, 0, 0, 474, 475, 5, 61, 0, 0, 475, 22, 1, 0, 0, 0, 476, 477, 5, 60, 0, 0, 477, 24, 1, 0, 0, 0, 478, 479, 5, 60, 0, 0, 479, 480, 5, 61, 0, 0, 480, 26, 1, 0, 0, 0, 481, 482, 5, 62, 0, 0, 482, 28, 1, 0, 0, 0, 483, 484, 5, 62, 0, 0, 484, 485, 5, 61, 0, 0, 485, 30, 1, 0, 0, 0, 486, 487, 5, 109, 0, 0, 487, 488, 5, 97, 0, 0, 488, 489, 5, 116, 0, 0, 489, 490, 5, 99, 0, 0, 490, 491, 5, 104, 0, 0, 491, 32, 1, 0, 0, 0, 492, 493, 5, 119, 0, 0, 493, 494, 5, 105, 0, 0, 494, 495, 5, 116, 0, 0, 495, 496, 5, 104, 0, 0, 496, 34, 1, 0, 0, 0, 497, 498, 5, 43, 0, 0, 498, 36, 1, 0, 0, 0, 499, 500, 5, 45, 0, 0, 500, 38, 1, 0, 0, 0, 501, 502, 5, 42, 0, 0, 502, 40, 1, 0, 0, 0, 503, 504, 5, 47, 0, 0, 504, 42, 1, 0, 0, 0, 505, 506, 5, 109, 0, 0, 506, 507, 5, 97, 0, 0, 507, 508, 5, 120, 0, 0, 508, 509, 5, 95, 0, 0, 509, 510, 5, 97, 0, 0, 510, 511, 5, 103, 0, 0, 511, 512, 5, 103, 0, 0, 512, 513, 5, 114, 0, 0, 513, 44, 1, 0, 0, 0, 514, 515, 5, 109, 0, 0, 515, 516, 5, 105, 0, 0, 516, 517, 5, 110, 0, 0, 517, 518, 5, 95, 0, 0, 518, 519, 5, 97, 0, 0, 519, 520, 5, 103, 0, 0, 520, 521, 5, 103, 0, 0, 521, 522, 5, 114, 0, 0, 522, 46, 1, 0, 0, 0, 523, 524, 5, 115, 0, 0, 524, 525, 5, 117, 0, 0, 525, 526, 5, 109, 0, 0, 526, 48, 1, 0, 0, 0, 527, 528, 5, 99, 0, 0, 528, 529, 5, 111, 0, 0, 529, 530, 5, 117, 0, 0, 530, 531, 5, 110, 0, 0, 531, 532, 5, 116, 0, 0, 532, 50, 1, 0, 0, 0, 533, 534, 5, 97, 0, 0, 534, 535, 5, 118, 0, 0, 535, 536, 5, 103, 0, 0, 536, 52, 1, 0, 0, 0, 537, 538, 5, 109, 0, 0, 538, 539, 5, 101, 0, 0, 539, 540, 5, 100, 0, 0, 540, 541, 5, 105, 0, 0, 541, 542, 5, 97, 0, 0, 542, 543, 5, 110, 0, 0, 543, 54, 1, 0, 0, 0, 544, 545, 5, 103, 0, 0, 545, 546, 5, 114, 0, 0, 546, 547, 5, 111, 0, 0, 547, 548, 5, 117, 0, 0, 548, 549, 5, 112, 0, 0, 549, 550, 5, 32, 0, 0, 550, 551, 5, 98, 0, 0, 551, 552, 5, 121, 0, 0, 552, 553, 1, 0, 0, 0, 553, 554, 6, 25, 0, 0, 554, 56, 1, 0, 0, 0, 555, 556, 5, 97, 0, 0, 556, 557, 5, 98, 0, 0, 557, 558, 5, 115, 0, 0, 558, 58, 1, 0, 0, 0, 559, 560, 5, 105, 0, 0, 560, 561, 5, 115, 0, 0, 561, 562, 5, 110, 0, 0, 562, 563, 5, 117, 0, 0, 563, 564, 5, 108, 0, 0, 564, 565, 5, 108, 0, 0, 565, 60, 1, 0, 0, 0, 566, 567, 5, 101, 0, 0, 567, 568, 5, 120, 0, 0, 568, 569, 5, 112, 0, 0, 569, 62, 1, 0, 0, 0, 570, 571, 5, 108, 0, 0, 571, 572, 5, 110, 0, 0, 572, 64, 1, 0, 0, 0, 573, 574, 5, 115, 0, 0, 574, 575, 5, 113, 0, 0, 575, 576, 5, 114, 0, 0, 576, 577, 5, 116, 0, 0, 577, 66, 1, 0, 0, 0, 578, 579, 5, 112, 0, 0, 579, 580, 5, 111, 0, 0, 580, 581, 5, 119, 0, 0, 581, 582, 5, 101, 0, 0, 582, 583, 5, 114, 0, 0, 583, 68, 1, 0, 0, 0, 584, 585, 5, 108, 0, 0, 585, 586, 5, 111, 0, 0, 586, 587, 5, 103, 0, 0, 587, 70, 1, 0, 0, 0, 588, 589, 5, 109, 0, 0, 589, 590, 5, 97, 0, 0, 590, 591, 5, 120, 0, 0, 591, 72, 1, 0, 0, 0, 592, 593, 5, 109, 0, 0, 593, 594, 5, 105, 0, 0, 594, 595, 5, 110, 0, 0, 595, 74, 1, 0, 0, 0, 596, 597, 5, 105, 0, 0, 597, 598, 5, 110, 0, 0, 598, 599, 1, 0, 0, 0, 599, 600, 6, 35, 1, 0, 600, 76, 1, 0, 0, 0, 601, 602, 5, 44, 0, 0, 602, 78, 1, 0, 0, 0, 603, 604, 5, 58, 0, 0, 604, 80, 1, 0, 0, 0, 605, 606, 5, 40, 0, 0, 606, 82, 1, 0, 0, 0, 607, 608, 5, 41, 0, 0, 608, 84, 1, 0, 0, 0, 609, 610, 5, 123, 0, 0, 610, 611, 1, 0, 0, 0, 611, 612, 6, 40, 2, 0, 612, 86, 1, 0, 0, 0, 613, 614, 5, 125, 0, 0, 614, 88, 1, 0, 0, 0, 615, 616, 5, 91, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 6, 42, 3, 0, 618, 90, 1, 0, 0, 0, 619, 620, 5, 93, 0, 0, 620, 92, 1, 0, 0, 0, 621, 622, 5, 105, 0, 0, 622, 623, 5, 102, 0, 0, 623, 94, 1, 0, 0, 0, 624, 625, 5, 101, 0, 0, 625, 626, 5, 110, 0, 0, 626, 627, 5, 100, 0, 0, 627, 628, 5, 105, 0, 0, 628, 629, 5, 102, 0, 0, 629, 96, 1, 0, 0, 0, 630, 631, 5, 116, 0, 0, 631, 632, 5, 104, 0, 0, 632, 633, 5, 101, 0, 0, 633, 634, 5, 110, 0, 0, 634, 98, 1, 0, 0, 0, 635, 636, 5, 101, 0, 0, 636, 637, 5, 108, 0, 0, 637, 638, 5, 115, 0, 0, 638, 639, 5, 101, 0, 0, 639, 100, 1, 0, 0, 0, 640, 641, 5, 110, 0, 0, 641, 642, 5, 118, 0, 0, 642, 643, 5, 108, 0, 0, 643, 102, 1, 0, 0, 0, 644, 645, 5, 102, 0, 0, 645, 646, 5, 105, 0, 0, 646, 647, 5, 108, 0, 0, 647, 648, 5, 116, 0, 0, 648, 649, 5, 101, 0, 0, 649, 650, 5, 114, 0, 0, 650, 104, 1, 0, 0, 0, 651, 652, 5, 119, 0, 0, 652, 653, 5, 104, 0, 0, 653, 654, 5, 101, 0, 0, 654, 655, 5, 114, 0, 0, 655, 656, 5, 101, 0, 0, 656, 106, 1, 0, 0, 0, 657, 658, 5, 103, 0, 0, 658, 659, 5, 101, 0, 0, 659, 660, 5, 116, 0, 0, 660, 108, 1, 0, 0, 0, 661, 662, 5, 114, 0, 0, 662, 663, 5, 101, 0, 0, 663, 664, 5, 110, 0, 0, 664, 665, 5, 97, 0, 0, 665, 666, 5, 109, 0, 0, 666, 667, 5, 101, 0, 0, 667, 110, 1, 0, 0, 0, 668, 669, 5, 116, 0, 0, 669, 670, 5, 111, 0, 0, 670, 112, 1, 0, 0, 0, 671, 672, 5, 116, 0, 0, 672, 673, 5, 105, 0, 0, 673, 674, 5, 109, 0, 0, 674, 675, 5, 101, 0, 0, 675, 676, 5, 95, 0, 0, 676, 677, 5, 115, 0, 0, 677, 678, 5, 104, 0, 0, 678, 679, 5, 105, 0, 0, 679, 680, 5, 102, 0, 0, 680, 681, 5, 116, 0, 0, 681, 114, 1, 0, 0, 0, 682, 683, 5, 108, 0, 0, 683, 684, 5, 101, 0, 0, 684, 685, 5, 110, 0, 0, 685, 116, 1, 0, 0, 0, 686, 687, 5, 38, 0, 0, 687, 118, 1, 0, 0, 0, 688, 689, 7, 0, 0, 0, 689, 120, 1, 0, 0, 0, 690, 691, 5, 59, 0, 0, 691, 122, 1, 0, 0, 0, 692, 693, 2, 48, 57, 0, 693, 124, 1, 0, 0, 0, 694, 695, 2, 49, 57, 0, 695, 126, 1, 0, 0, 0, 696, 698, 3, 123, 59, 0, 697, 696, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 711, 1, 0, 0, 0, 701, 702, 3, 81, 38, 0, 702, 704, 3, 37, 16, 0, 703, 705, 3, 123, 59, 0, 704, 703, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 704, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 3, 83, 39, 0, 709, 711, 1, 0, 0, 0, 710, 697, 1, 0, 0, 0, 710, 701, 1, 0, 0, 0, 711, 128, 1, 0, 0, 0, 712, 713, 3, 127, 61, 0, 713, 714, 5, 46, 0, 0, 714, 715, 3, 127, 61, 0, 715, 130, 1, 0, 0, 0, 716, 717, 3, 127, 61, 0, 717, 718, 5, 37, 0, 0, 718, 723, 1, 0, 0, 0, 719, 720, 3, 129, 62, 0, 720, 721, 5, 37, 0, 0, 721, 723, 1, 0, 0, 0, 722, 716, 1, 0, 0, 0, 722, 719, 1, 0, 0, 0, 723, 132, 1, 0, 0, 0, 724, 725, 5, 110, 0, 0, 725, 726, 5, 117, 0, 0, 726, 727, 5, 108, 0, 0, 727, 728, 5, 108, 0, 0, 728, 134, 1, 0, 0, 0, 729, 731, 5, 34, 0, 0, 730, 732, 8, 1, 0, 0, 731, 730, 1, 0, 0, 0, 732, 733, 1, 0, 0, 0, 733, 731, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 744, 5, 34, 0, 0, 736, 738, 5, 39, 0, 0, 737, 739, 8, 2, 0, 0, 738, 737, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 738, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 744, 5, 39, 0, 0, 743, 729, 1, 0, 0, 0, 743, 736, 1, 0, 0, 0, 744, 136, 1, 0, 0, 0, 745, 746, 5, 39, 0, 0, 746, 750, 5, 39, 0, 0, 747, 748, 5, 34, 0, 0, 748, 750, 5, 34, 0, 0, 749, 745, 1, 0, 0, 0, 749, 747, 1, 0, 0, 0, 750, 138, 1, 0, 0, 0, 751, 752, 3, 123, 59, 0, 752, 753, 3, 123, 59, 0, 753, 754, 3, 123, 59, 0, 754, 755, 3, 123, 59, 0, 755, 140, 1, 0, 0, 0, 756, 757, 5, 48, 0, 0, 757, 761, 3, 125, 60, 0, 758, 759, 5, 49, 0, 0, 759, 761, 7, 3, 0, 0, 760, 756, 1, 0, 0, 0, 760, 758, 1, 0, 0, 0, 761, 142, 1, 0, 0, 0, 762, 763, 5, 48, 0, 0, 763, 769, 3, 125, 60, 0, 764, 765, 7, 4, 0, 0, 765, 769, 3, 123, 59, 0, 766, 767, 5, 53, 0, 0, 767, 769, 7, 3, 0, 0, 768, 762, 1, 0, 0, 0, 768, 764, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 769, 144, 1, 0, 0, 0, 770, 771, 7, 3, 0, 0, 771, 775, 3, 123, 59, 0, 772, 773, 5, 51, 0, 0, 773, 775, 7, 5, 0, 0, 774, 770, 1, 0, 0, 0, 774, 772, 1, 0, 0, 0, 775, 146, 1, 0, 0, 0, 776, 777, 7, 5, 0, 0, 777, 781, 3, 123, 59, 0, 778, 779, 5, 50, 0, 0, 779, 781, 7, 6, 0, 0, 780, 776, 1, 0, 0, 0, 780, 778, 1, 0, 0, 0, 781, 148, 1, 0, 0, 0, 782, 783, 7, 7, 0, 0, 783, 784, 3, 123, 59, 0, 784, 150, 1, 0, 0, 0, 785, 786, 7, 7, 0, 0, 786, 787, 3, 123, 59, 0, 787, 152, 1, 0, 0, 0, 788, 789, 3, 139, 67, 0, 789, 790, 5, 45, 0, 0, 790, 791, 3, 141, 68, 0, 791, 792, 5, 45, 0, 0, 792, 800, 3, 145, 70, 0, 793, 794, 5, 84, 0, 0, 794, 795, 3, 147, 71, 0, 795, 796, 3, 79, 37, 0, 796, 797, 3, 149, 72, 0, 797, 798, 3, 79, 37, 0, 798, 799, 3, 151, 73, 0, 799, 801, 1, 0, 0, 0, 800, 793, 1, 0, 0, 0, 800, 801, 1, 0, 0, 0, 801, 154, 1, 0, 0, 0, 802, 804, 3, 139, 67, 0, 803, 805, 5, 65, 0, 0, 804, 803, 1, 0, 0, 0, 804, 805, 1, 0, 0, 0, 805, 829, 1, 0, 0, 0, 806, 807, 3, 139, 67, 0, 807, 808, 5, 68, 0, 0, 808, 809, 7, 6, 0, 0, 809, 810, 3, 123, 59, 0, 810, 811, 3, 123, 59, 0, 811, 829, 1, 0, 0, 0, 812, 813, 3, 139, 67, 0, 813, 814, 5, 87, 0, 0, 814, 815, 3, 143, 69, 0, 815, 829, 1, 0, 0, 0, 816, 817, 3, 139, 67, 0, 817, 818, 5, 77, 0, 0, 818, 819, 3, 141, 68, 0, 819, 829, 1, 0, 0, 0, 820, 821, 3, 139, 67, 0, 821, 822, 5, 81, 0, 0, 822, 823, 7, 4, 0, 0, 823, 829, 1, 0, 0, 0, 824, 825, 3, 139, 67, 0, 825, 826, 5, 83, 0, 0, 826, 827, 7, 8, 0, 0, 827, 829, 1, 0, 0, 0, 828, 802, 1, 0, 0, 0, 828, 806, 1, 0, 0, 0, 828, 812, 1, 0, 0, 0, 828, 816, 1, 0, 0, 0, 828, 820, 1, 0, 0, 0, 828, 824, 1, 0, 0, 0, 829, 156, 1, 0, 0, 0, 830, 831, 5, 35, 0, 0, 831, 832, 3, 153, 74, 0, 832, 833, 5, 35, 0, 0, 833, 158, 1, 0, 0, 0, 834, 835, 5, 35, 0, 0, 835, 836, 3, 153, 74, 0, 836, 837, 5, 47, 0, 0, 837, 838, 3, 153, 74, 0, 838, 839, 5, 35, 0, 0, 839, 160, 1, 0, 0, 0, 840, 841, 5, 35, 0, 0, 841, 842, 3, 155, 75, 0, 842, 843, 5, 35, 0, 0, 843, 162, 1, 0, 0, 0, 844, 854, 7, 9, 0, 0, 845, 847, 7, 10, 0, 0, 846, 845, 1, 0, 0, 0, 847, 850, 1, 0, 0, 0, 848, 846, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 851, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 851, 853, 7, 11, 0, 0, 852, 848, 1, 0, 0, 0, 853, 856, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 164, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 857, 859, 7, 12, 0, 0, 858, 857, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 858, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 863, 6, 80, 4, 0, 863, 166, 1, 0, 0, 0, 864, 865, 3, 77, 36, 0, 865, 866, 1, 0, 0, 0, 866, 867, 6, 81, 5, 0, 867, 168, 1, 0, 0, 0, 868, 869, 3, 79, 37, 0, 869, 870, 1, 0, 0, 0, 870, 871, 6, 82, 6, 0, 871, 170, 1, 0, 0, 0, 872, 873, 3, 81, 38, 0, 873, 874, 1, 0, 0, 0, 874, 875, 6, 83, 7, 0, 875, 172, 1, 0, 0, 0, 876, 877, 3, 83, 39, 0, 877, 878, 1, 0, 0, 0, 878, 879, 6, 84, 8, 0, 879, 174, 1, 0, 0, 0, 880, 881, 3, 87, 41, 0, 881, 882, 1, 0, 0, 0, 882, 883, 6, 85, 9, 0, 883, 884, 6, 85, 10, 0, 884, 176, 1, 0, 0, 0, 885, 886, 5, 105, 0, 0, 886, 887, 5, 110, 0, 0, 887, 888, 5, 116, 0, 0, 888, 889, 5, 101, 0, 0, 889, 890, 5, 114, 0, 0, 890, 891, 5, 118, 0, 0, 891, 892, 5, 97, 0, 0, 892, 893, 5, 108, 0, 0, 893, 178, 1, 0, 0, 0, 894, 895, 5, 100, 0, 0, 895, 896, 5, 101, 0, 0, 896, 897, 5, 102, 0, 0, 897, 898, 5, 97, 0, 0, 898, 899, 5, 117, 0, 0, 899, 900, 5, 108, 0, 0, 900, 901, 5, 116, 0, 0, 901, 180, 1, 0, 0, 0, 902, 903, 3, 133, 64, 0, 903, 904, 1, 0, 0, 0, 904, 905, 6, 88, 11, 0, 905, 182, 1, 0, 0, 0, 906, 907, 3, 5, 0, 0, 907, 908, 1, 0, 0, 0, 908, 909, 6, 89, 12, 0, 909, 184, 1, 0, 0, 0, 910, 911, 5, 114, 0, 0, 911, 186, 1, 0, 0, 0, 912, 913, 5, 99, 0, 0, 913, 188, 1, 0, 0, 0, 914, 915, 5, 115, 0, 0, 915, 190, 1, 0, 0, 0, 916, 917, 5, 116, 0, 0, 917, 192, 1, 0, 0, 0, 918, 919, 5, 103, 0, 0, 919, 194, 1, 0, 0, 0, 920, 921, 5, 118, 0, 0, 921, 196, 1, 0, 0, 0, 922, 923, 5, 111, 0, 0, 923, 198, 1, 0, 0, 0, 924, 925, 5, 118, 0, 0, 925, 926, 5, 95, 0, 0, 926, 200, 1, 0, 0, 0, 927, 937, 7, 9, 0, 0, 928, 930, 7, 13, 0, 0, 929, 928, 1, 0, 0, 0, 930, 933, 1, 0, 0, 0, 931, 929, 1, 0, 0, 0, 931, 932, 1, 0, 0, 0, 932, 934, 1, 0, 0, 0, 933, 931, 1, 0, 0, 0, 934, 936, 7, 11, 0, 0, 935, 931, 1, 0, 0, 0, 936, 939, 1, 0, 0, 0, 937, 935, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 202, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 940, 942, 7, 11, 0, 0, 941, 940, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 943, 944, 1, 0, 0, 0, 944, 204, 1, 0, 0, 0, 945, 946, 3, 203, 99, 0, 946, 947, 7, 14, 0, 0, 947, 948, 3, 203, 99, 0, 948, 206, 1, 0, 0, 0, 949, 959, 7, 9, 0, 0, 950, 952, 7, 10, 0, 0, 951, 950, 1, 0, 0, 0, 952, 955, 1, 0, 0, 0, 953, 951, 1, 0, 0, 0, 953, 954, 1, 0, 0, 0, 954, 956, 1, 0, 0, 0, 955, 953, 1, 0, 0, 0, 956, 958, 7, 11, 0, 0, 957, 953, 1, 0, 0, 0, 958, 961, 1, 0, 0, 0, 959, 957, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 208, 1, 0, 0, 0, 961, 959, 1, 0, 0, 0, 962, 972, 7, 9, 0, 0, 963, 965, 7, 10, 0, 0, 964, 963, 1, 0, 0, 0, 965, 968, 1, 0, 0, 0, 966, 964, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 969, 1, 0, 0, 0, 968, 966, 1, 0, 0, 0, 969, 971, 7, 11, 0, 0, 970, 966, 1, 0, 0, 0, 971, 974, 1, 0, 0, 0, 972, 970, 1, 0, 0, 0, 972, 973, 1, 0, 0, 0, 973, 210, 1, 0, 0, 0, 974, 972, 1, 0, 0, 0, 975, 976, 3, 185, 90, 0, 976, 977, 3, 203, 99, 0, 977, 212, 1, 0, 0, 0, 978, 979, 3, 185, 90, 0, 979, 980, 3, 205, 100, 0, 980, 214, 1, 0, 0, 0, 981, 982, 3, 185, 90, 0, 982, 983, 7, 15, 0, 0, 983, 216, 1, 0, 0, 0, 984, 985, 3, 187, 91, 0, 985, 986, 3, 203, 99, 0, 986, 218, 1, 0, 0, 0, 987, 988, 3, 187, 91, 0, 988, 989, 3, 205, 100, 0, 989, 220, 1, 0, 0, 0, 990, 991, 3, 187, 91, 0, 991, 992, 7, 15, 0, 0, 992, 222, 1, 0, 0, 0, 993, 994, 3, 189, 92, 0, 994, 995, 3, 203, 99, 0, 995, 224, 1, 0, 0, 0, 996, 997, 3, 189, 92, 0, 997, 998, 3, 205, 100, 0, 998, 226, 1, 0, 0, 0, 999, 1000, 3, 189, 92, 0, 1000, 1001, 7, 15, 0, 0, 1001, 228, 1, 0, 0, 0, 1002, 1003, 3, 191, 93, 0, 1003, 1004, 3, 201, 98, 0, 1004, 230, 1, 0, 0, 0, 1005, 1006, 3, 193, 94, 0, 1006, 1007, 3, 201, 98, 0, 1007, 232, 1, 0, 0, 0, 1008, 1009, 3, 195, 95, 0, 1009, 1010, 3, 207, 101, 0, 1010, 234, 1, 0, 0, 0, 1011, 1012, 3, 197, 96, 0, 1012, 1013, 3, 209, 102, 0, 1013, 236, 1, 0, 0, 0, 1014, 1015, 3, 199, 97, 0, 1015, 1016, 3, 201, 98, 0, 1016, 238, 1, 0, 0, 0, 1017, 1018, 3, 127, 61, 0, 1018, 1019, 1, 0, 0, 0, 1019, 1020, 6, 117, 13, 0, 1020, 240, 1, 0, 0, 0, 1021, 1022, 3, 129, 62, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1024, 6, 118, 14, 0, 1024, 242, 1, 0, 0, 0, 1025, 1026, 3, 131, 63, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028, 6, 119, 15, 0, 1028, 244, 1, 0, 0, 0, 1029, 1030, 3, 135, 65, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1032, 6, 120, 16, 0, 1032, 246, 1, 0, 0, 0, 1033, 1034, 3, 137, 66, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1036, 6, 121, 17, 0, 1036, 248, 1, 0, 0, 0, 1037, 1038, 3, 157, 76, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1040, 6, 122, 18, 0, 1040, 250, 1, 0, 0, 0, 1041, 1042, 3, 159, 77, 0, 1042, 1043, 1, 0, 0, 0, 1043, 1044, 6, 123, 19, 0, 1044, 252, 1, 0, 0, 0, 1045, 1046, 3, 161, 78, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1048, 6, 124, 20, 0, 1048, 254, 1, 0, 0, 0, 1049, 1050, 3, 165, 80, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1052, 6, 125, 4, 0, 1052, 256, 1, 0, 0, 0, 1053, 1054, 3, 5, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 1056, 6, 126, 12, 0, 1056, 258, 1, 0, 0, 0, 1057, 1058, 5, 97, 0, 0, 1058, 1059, 5, 110, 0, 0, 1059, 1060, 5, 100, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1062, 6, 127, 21, 0, 1062, 260, 1, 0, 0, 0, 1063, 1064, 5, 111, 0, 0, 1064, 1065, 5, 114, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 6, 128, 22, 0, 1067, 262, 1, 0, 0, 0, 1068, 1069, 5, 120, 0, 0, 1069, 1070, 5, 111, 0, 0, 1070, 1071, 5, 114, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1073, 6, 129, 23, 0, 1073, 264, 1, 0, 0, 0, 1074, 1075, 5, 110, 0, 0, 1075, 1076, 5, 111, 0, 0, 1076, 1077, 5, 116, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1079, 6, 130, 24, 0, 1079, 266, 1, 0, 0, 0, 1080, 1081, 5, 61, 0, 0, 1081, 1082, 1, 0, 0, 0, 1082, 1083, 6, 131, 25, 0, 1083, 268, 1, 0, 0, 0, 1084, 1085, 5, 33, 0, 0, 1085, 1086, 5, 61, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1088, 6, 132, 26, 0, 1088, 270, 1, 0, 0, 0, 1089, 1090, 5, 60, 0, 0, 1090, 1091, 1, 0, 0, 0, 1091, 1092, 6, 133, 27, 0, 1092, 272, 1, 0, 0, 0, 1093, 1094, 5, 60, 0, 0, 1094, 1095, 5, 61, 0, 0, 1095, 1096, 1, 0, 0, 0, 1096, 1097, 6, 134, 28, 0, 1097, 274, 1, 0, 0, 0, 1098, 1099, 5, 62, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1101, 6, 135, 29, 0, 1101, 276, 1, 0, 0, 0, 1102, 1103, 5, 62, 0, 0, 1103, 1104, 5, 61, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1106, 6, 136, 30, 0, 1106, 278, 1, 0, 0, 0, 1107, 1108, 5, 109, 0, 0, 1108, 1109, 5, 97, 0, 0, 1109, 1110, 5, 116, 0, 0, 1110, 1111, 5, 99, 0, 0, 1111, 1112, 5, 104, 0, 0, 1112, 1113, 1, 0, 0, 0, 1113, 1114, 6, 137, 31, 0, 1114, 280, 1, 0, 0, 0, 1115, 1116, 5, 43, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1118, 6, 138, 32, 0, 1118, 282, 1, 0, 0, 0, 1119, 1120, 5, 45, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 1122, 6, 139, 33, 0, 1122, 284, 1, 0, 0, 0, 1123, 1124, 5, 42, 0, 0, 1124, 1125, 1, 0, 0, 0, 1125, 1126, 6, 140, 34, 0, 1126, 286, 1, 0, 0, 0, 1127, 1128, 5, 47, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1130, 6, 141, 35, 0, 1130, 288, 1, 0, 0, 0, 1131, 1132, 5, 109, 0, 0, 1132, 1133, 5, 97, 0, 0, 1133, 1134, 5, 120, 0, 0, 1134, 1135, 5, 95, 0, 0, 1135, 1136, 5, 97, 0, 0, 1136, 1137, 5, 103, 0, 0, 1137, 1138, 5, 103, 0, 0, 1138, 1139, 5, 114, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1141, 6, 142, 36, 0, 1141, 290, 1, 0, 0, 0, 1142, 1143, 5, 109, 0, 0, 1143, 1144, 5, 105, 0, 0, 1144, 1145, 5, 110, 0, 0, 1145, 1146, 5, 95, 0, 0, 1146, 1147, 5, 97, 0, 0, 1147, 1148, 5, 103, 0, 0, 1148, 1149, 5, 103, 0, 0, 1149, 1150, 5, 114, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 6, 143, 37, 0, 1152, 292, 1, 0, 0, 0, 1153, 1154, 5, 115, 0, 0, 1154, 1155, 5, 117, 0, 0, 1155, 1156, 5, 109, 0, 0, 1156, 1157, 1, 0, 0, 0, 1157, 1158, 6, 144, 38, 0, 1158, 294, 1, 0, 0, 0, 1159, 1160, 5, 99, 0, 0, 1160, 1161, 5, 111, 0, 0, 1161, 1162, 5, 117, 0, 0, 1162, 1163, 5, 110, 0, 0, 1163, 1164, 5, 116, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1166, 6, 145, 39, 0, 1166, 296, 1, 0, 0, 0, 1167, 1168, 5, 97, 0, 0, 1168, 1169, 5, 118, 0, 0, 1169, 1170, 5, 103, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1172, 6, 146, 40, 0, 1172, 298, 1, 0, 0, 0, 1173, 1174, 5, 109, 0, 0, 1174, 1175, 5, 101, 0, 0, 1175, 1176, 5, 100, 0, 0, 1176, 1177, 5, 105, 0, 0, 1177, 1178, 5, 97, 0, 0, 1178, 1179, 5, 110, 0, 0, 1179, 1180, 1, 0, 0, 0, 1180, 1181, 6, 147, 41, 0, 1181, 300, 1, 0, 0, 0, 1182, 1183, 5, 103, 0, 0, 1183, 1184, 5, 114, 0, 0, 1184, 1185, 5, 111, 0, 0, 1185, 1186, 5, 117, 0, 0, 1186, 1187, 5, 112, 0, 0, 1187, 1188, 5, 32, 0, 0, 1188, 1189, 5, 98, 0, 0, 1189, 1190, 5, 121, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1192, 6, 148, 42, 0, 1192, 1193, 6, 148, 0, 0, 1193, 302, 1, 0, 0, 0, 1194, 1195, 5, 97, 0, 0, 1195, 1196, 5, 98, 0, 0, 1196, 1197, 5, 115, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 6, 149, 43, 0, 1199, 304, 1, 0, 0, 0, 1200, 1201, 5, 105, 0, 0, 1201, 1202, 5, 115, 0, 0, 1202, 1203, 5, 110, 0, 0, 1203, 1204, 5, 117, 0, 0, 1204, 1205, 5, 108, 0, 0, 1205, 1206, 5, 108, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1208, 6, 150, 44, 0, 1208, 306, 1, 0, 0, 0, 1209, 1210, 5, 101, 0, 0, 1210, 1211, 5, 120, 0, 0, 1211, 1212, 5, 112, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1214, 6, 151, 45, 0, 1214, 308, 1, 0, 0, 0, 1215, 1216, 5, 108, 0, 0, 1216, 1217, 5, 110, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1219, 6, 152, 46, 0, 1219, 310, 1, 0, 0, 0, 1220, 1221, 5, 115, 0, 0, 1221, 1222, 5, 113, 0, 0, 1222, 1223, 5, 114, 0, 0, 1223, 1224, 5, 116, 0, 0, 1224, 1225, 1, 0, 0, 0, 1225, 1226, 6, 153, 47, 0, 1226, 312, 1, 0, 0, 0, 1227, 1228, 5, 112, 0, 0, 1228, 1229, 5, 111, 0, 0, 1229, 1230, 5, 119, 0, 0, 1230, 1231, 5, 101, 0, 0, 1231, 1232, 5, 114, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1234, 6, 154, 48, 0, 1234, 314, 1, 0, 0, 0, 1235, 1236, 5, 108, 0, 0, 1236, 1237, 5, 111, 0, 0, 1237, 1238, 5, 103, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1240, 6, 155, 49, 0, 1240, 316, 1, 0, 0, 0, 1241, 1242, 5, 109, 0, 0, 1242, 1243, 5, 97, 0, 0, 1243, 1244, 5, 120, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1246, 6, 156, 50, 0, 1246, 318, 1, 0, 0, 0, 1247, 1248, 5, 109, 0, 0, 1248, 1249, 5, 105, 0, 0, 1249, 1250, 5, 110, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1252, 6, 157, 51, 0, 1252, 320, 1, 0, 0, 0, 1253, 1254, 5, 105, 0, 0, 1254, 1255, 5, 110, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1257, 6, 158, 1, 0, 1257, 1258, 6, 158, 52, 0, 1258, 322, 1, 0, 0, 0, 1259, 1260, 5, 44, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1262, 6, 159, 5, 0, 1262, 324, 1, 0, 0, 0, 1263, 1264, 5, 58, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1266, 6, 160, 6, 0, 1266, 326, 1, 0, 0, 0, 1267, 1268, 5, 40, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1270, 6, 161, 7, 0, 1270, 328, 1, 0, 0, 0, 1271, 1272, 5, 41, 0, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1274, 6, 162, 8, 0, 1274, 330, 1, 0, 0, 0, 1275, 1276, 5, 123, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1278, 6, 163, 53, 0, 1278, 1279, 6, 163, 2, 0, 1279, 332, 1, 0, 0, 0, 1280, 1281, 5, 125, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1283, 6, 164, 10, 0, 1283, 334, 1, 0, 0, 0, 1284, 1285, 5, 91, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1287, 6, 165, 54, 0, 1287, 1288, 6, 165, 3, 0, 1288, 336, 1, 0, 0, 0, 1289, 1290, 5, 93, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1292, 6, 166, 55, 0, 1292, 1293, 6, 166, 9, 0, 1293, 338, 1, 0, 0, 0, 1294, 1295, 5, 105, 0, 0, 1295, 1296, 5, 102, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1298, 6, 167, 56, 0, 1298, 340, 1, 0, 0, 0, 1299, 1300, 5, 101, 0, 0, 1300, 1301, 5, 110, 0, 0, 1301, 1302, 5, 100, 0, 0, 1302, 1303, 5, 105, 0, 0, 1303, 1304, 5, 102, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1306, 6, 168, 57, 0, 1306, 342, 1, 0, 0, 0, 1307, 1308, 5, 116, 0, 0, 1308, 1309, 5, 104, 0, 0, 1309, 1310, 5, 101, 0, 0, 1310, 1311, 5, 110, 0, 0, 1311, 1312, 1, 0, 0, 0, 1312, 1313, 6, 169, 58, 0, 1313, 344, 1, 0, 0, 0, 1314, 1315, 5, 101, 0, 0, 1315, 1316, 5, 108, 0, 0, 1316, 1317, 5, 115, 0, 0, 1317, 1318, 5, 101, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1320, 6, 170, 59, 0, 1320, 346, 1, 0, 0, 0, 1321, 1322, 5, 110, 0, 0, 1322, 1323, 5, 118, 0, 0, 1323, 1324, 5, 108, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 1326, 6, 171, 60, 0, 1326, 348, 1, 0, 0, 0, 1327, 1328, 5, 102, 0, 0, 1328, 1329, 5, 105, 0, 0, 1329, 1330, 5, 108, 0, 0, 1330, 1331, 5, 116, 0, 0, 1331, 1332, 5, 101, 0, 0, 1332, 1333, 5, 114, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1335, 6, 172, 61, 0, 1335, 350, 1, 0, 0, 0, 1336, 1337, 5, 119, 0, 0, 1337, 1338, 5, 104, 0, 0, 1338, 1339, 5, 101, 0, 0, 1339, 1340, 5, 114, 0, 0, 1340, 1341, 5, 101, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1343, 6, 173, 62, 0, 1343, 352, 1, 0, 0, 0, 1344, 1345, 5, 103, 0, 0, 1345, 1346, 5, 101, 0, 0, 1346, 1347, 5, 116, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1349, 6, 174, 63, 0, 1349, 354, 1, 0, 0, 0, 1350, 1351, 5, 114, 0, 0, 1351, 1352, 5, 101, 0, 0, 1352, 1353, 5, 110, 0, 0, 1353, 1354, 5, 97, 0, 0, 1354, 1355, 5, 109, 0, 0, 1355, 1356, 5, 101, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1358, 6, 175, 64, 0, 1358, 356, 1, 0, 0, 0, 1359, 1360, 5, 116, 0, 0, 1360, 1361, 5, 111, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1363, 6, 176, 65, 0, 1363, 358, 1, 0, 0, 0, 1364, 1365, 5, 116, 0, 0, 1365, 1366, 5, 105, 0, 0, 1366, 1367, 5, 109, 0, 0, 1367, 1368, 5, 101, 0, 0, 1368, 1369, 5, 95, 0, 0, 1369, 1370, 5, 115, 0, 0, 1370, 1371, 5, 104, 0, 0, 1371, 1372, 5, 105, 0, 0, 1372, 1373, 5, 102, 0, 0, 1373, 1374, 5, 116, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1376, 6, 177, 66, 0, 1376, 360, 1, 0, 0, 0, 1377, 1378, 5, 108, 0, 0, 1378, 1379, 5, 101, 0, 0, 1379, 1380, 5, 110, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1382, 6, 178, 67, 0, 1382, 362, 1, 0, 0, 0, 1383, 1384, 5, 38, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1386, 6, 179, 68, 0, 1386, 364, 1, 0, 0, 0, 1387, 1388, 5, 114, 0, 0, 1388, 366, 1, 0, 0, 0, 1389, 1390, 5, 99, 0, 0, 1390, 368, 1, 0, 0, 0, 1391, 1392, 5, 115, 0, 0, 1392, 370, 1, 0, 0, 0, 1393, 1394, 3, 119, 57, 0, 1394, 1395, 1, 0, 0, 0, 1395, 1396, 6, 183, 69, 0, 1396, 372, 1, 0, 0, 0, 1397, 1398, 3, 127, 61, 0, 1398, 1399, 1, 0, 0, 0, 1399, 1400, 6, 184, 13, 0, 1400, 374, 1, 0, 0, 0, 1401, 1402, 3, 129, 62, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1404, 6, 185, 14, 0, 1404, 376, 1, 0, 0, 0, 1405, 1406, 3, 131, 63, 0, 1406, 1407, 1, 0, 0, 0, 1407, 1408, 6, 186, 15, 0, 1408, 378, 1, 0, 0, 0, 1409, 1410, 3, 135, 65, 0, 1410, 1411, 1, 0, 0, 0, 1411, 1412, 6, 187, 16, 0, 1412, 380, 1, 0, 0, 0, 1413, 1414, 3, 137, 66, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1416, 6, 188, 17, 0, 1416, 382, 1, 0, 0, 0, 1417, 1418, 5, 35, 0, 0, 1418, 1419, 3, 153, 74, 0, 1419, 1420, 5, 35, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1422, 6, 189, 18, 0, 1422, 384, 1, 0, 0, 0, 1423, 1424, 5, 35, 0, 0, 1424, 1425, 3, 153, 74, 0, 1425, 1426, 5, 47, 0, 0, 1426, 1427, 3, 153, 74, 0, 1427, 1428, 5, 35, 0, 0, 1428, 1429, 1, 0, 0, 0, 1429, 1430, 6, 190, 19, 0, 1430, 386, 1, 0, 0, 0, 1431, 1432, 5, 35, 0, 0, 1432, 1433, 3, 155, 75, 0, 1433, 1434, 5, 35, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1436, 6, 191, 20, 0, 1436, 388, 1, 0, 0, 0, 1437, 1452, 7, 9, 0, 0, 1438, 1440, 7, 16, 0, 0, 1439, 1438, 1, 0, 0, 0, 1440, 1443, 1, 0, 0, 0, 1441, 1439, 1, 0, 0, 0, 1441, 1442, 1, 0, 0, 0, 1442, 1444, 1, 0, 0, 0, 1443, 1441, 1, 0, 0, 0, 1444, 1448, 7, 17, 0, 0, 1445, 1447, 7, 13, 0, 0, 1446, 1445, 1, 0, 0, 0, 1447, 1450, 1, 0, 0, 0, 1448, 1446, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1451, 1, 0, 0, 0, 1450, 1448, 1, 0, 0, 0, 1451, 1453, 7, 11, 0, 0, 1452, 1441, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1452, 1, 0, 0, 0, 1454, 1455, 1, 0, 0, 0, 1455, 390, 1, 0, 0, 0, 1456, 1457, 3, 163, 79, 0, 1457, 392, 1, 0, 0, 0, 1458, 1460, 7, 12, 0, 0, 1459, 1458, 1, 0, 0, 0, 1460, 1461, 1, 0, 0, 0, 1461, 1459, 1, 0, 0, 0, 1461, 1462, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 1464, 6, 194, 4, 0, 1464, 394, 1, 0, 0, 0, 1465, 1466, 5, 41, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1468, 6, 195, 8, 0, 1468, 1469, 6, 195, 9, 0, 1469, 396, 1, 0, 0, 0, 1470, 1471, 5, 44, 0, 0, 1471, 1472, 1, 0, 0, 0, 1472, 1473, 6, 196, 5, 0, 1473, 398, 1, 0, 0, 0, 1474, 1475, 5, 114, 0, 0, 1475, 1476, 1, 0, 0, 0, 1476, 1477, 6, 197, 70, 0, 1477, 400, 1, 0, 0, 0, 1478, 1479, 5, 99, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1481, 6, 198, 71, 0, 1481, 402, 1, 0, 0, 0, 1482, 1483, 5, 115, 0, 0, 1483, 1484, 1, 0, 0, 0, 1484, 1485, 6, 199, 72, 0, 1485, 404, 1, 0, 0, 0, 1486, 1487, 3, 163, 79, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1489, 6, 200, 73, 0, 1489, 406, 1, 0, 0, 0, 1490, 1492, 7, 12, 0, 0, 1491, 1490, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1495, 1, 0, 0, 0, 1495, 1496, 6, 201, 4, 0, 1496, 408, 1, 0, 0, 0, 1497, 1498, 3, 77, 36, 0, 1498, 1499, 1, 0, 0, 0, 1499, 1500, 6, 202, 5, 0, 1500, 410, 1, 0, 0, 0, 1501, 1502, 3, 85, 40, 0, 1502, 1503, 1, 0, 0, 0, 1503, 1504, 6, 203, 53, 0, 1504, 412, 1, 0, 0, 0, 1505, 1506, 3, 87, 41, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1508, 6, 204, 9, 0, 1508, 1509, 6, 204, 10, 0, 1509, 414, 1, 0, 0, 0, 1510, 1511, 3, 89, 42, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, 6, 205, 54, 0, 1513, 416, 1, 0, 0, 0, 1514, 1515, 3, 91, 43, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1517, 6, 206, 55, 0, 1517, 418, 1, 0, 0, 0, 1518, 1519, 3, 389, 192, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1521, 6, 207, 74, 0, 1521, 420, 1, 0, 0, 0, 1522, 1523, 3, 127, 61, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1525, 6, 208, 13, 0, 1525, 422, 1, 0, 0, 0, 1526, 1527, 3, 129, 62, 0, 1527, 1528, 1, 0, 0, 0, 1528, 1529, 6, 209, 14, 0, 1529, 424, 1, 0, 0, 0, 1530, 1531, 3, 131, 63, 0, 1531, 1532, 1, 0, 0, 0, 1532, 1533, 6, 210, 15, 0, 1533, 426, 1, 0, 0, 0, 1534, 1535, 3, 135, 65, 0, 1535, 1536, 1, 0, 0, 0, 1536, 1537, 6, 211, 16, 0, 1537, 428, 1, 0, 0, 0, 1538, 1539, 3, 137, 66, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1541, 6, 212, 17, 0, 1541, 430, 1, 0, 0, 0, 1542, 1543, 3, 157, 76, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1545, 6, 213, 18, 0, 1545, 432, 1, 0, 0, 0, 1546, 1547, 3, 159, 77, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1549, 6, 214, 19, 0, 1549, 434, 1, 0, 0, 0, 1550, 1551, 3, 161, 78, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 6, 215, 20, 0, 1553, 436, 1, 0, 0, 0, 1554, 1555, 3, 165, 80, 0, 1555, 1556, 1, 0, 0, 0, 1556, 1557, 6, 216, 4, 0, 1557, 438, 1, 0, 0, 0, 36, 0, 1, 2, 3, 4, 448, 699, 706, 710, 722, 733, 740, 743, 749, 760, 768, 774, 780, 800, 804, 828, 848, 854, 860, 931, 937, 943, 953, 959, 966, 972, 1441, 1448, 1454, 1461, 1493, 75, 5, 3, 0, 5, 4, 0, 5, 1, 0, 5, 2, 0, 0, 2, 0, 7, 37, 0, 7, 38, 0, 7, 39, 0, 7, 40, 0, 4, 0, 0, 7, 42, 0, 7, 63, 0, 7, 1, 0, 7, 60, 0, 7, 61, 0, 7, 62, 0, 7, 64, 0, 7, 65, 0, 7, 66, 0, 7, 67, 0, 7, 68, 0, 7, 2, 0, 7, 3, 0, 7, 4, 0, 7, 5, 0, 7, 8, 0, 7, 9, 0, 7, 10, 0, 7, 11, 0, 7, 12, 0, 7, 13, 0, 7, 14, 0, 7, 16, 0, 7, 17, 0, 7, 18, 0, 7, 19, 0, 7, 20, 0, 7, 21, 0, 7, 22, 0, 7, 23, 0, 7, 24, 0, 7, 25, 0, 7, 26, 0, 7, 27, 0, 7, 28, 0, 7, 29, 0, 7, 30, 0, 7, 31, 0, 7, 32, 0, 7, 33, 0, 7, 34, 0, 7, 35, 0, 7, 36, 0, 7, 41, 0, 7, 43, 0, 7, 44, 0, 7, 45, 0, 7, 46, 0, 7, 47, 0, 7, 48, 0, 7, 49, 0, 7, 50, 0, 7, 51, 0, 7, 52, 0, 7, 53, 0, 7, 54, 0, 7, 55, 0, 7, 56, 0, 7, 57, 0, 7, 58, 0, 7, 88, 0, 7, 89, 0, 7, 90, 0, 7, 92, 0, 7, 91, 0]