From db8d5e9ea54d01979f98385b8b1b01a7eee64a30 Mon Sep 17 00:00:00 2001 From: wubin1989 <328454505@qq.com> Date: Wed, 27 Dec 2023 23:33:03 +0800 Subject: [PATCH 1/2] ... --- .gitignore | 1 - go.mod | 3 +- go.sum | 2 + toolkit/dbvendor/ivendor.go | 138 + toolkit/dbvendor/mysql/columnenum.go | 46 + toolkit/dbvendor/mysql/mysql.go | 200 + toolkit/dbvendor/mysql/parser/LICENSE | 21 + .../dbvendor/mysql/parser/console/console.go | 104 + .../mysql/parser/console/console_test.go | 34 + .../dbvendor/mysql/parser/gen/mysql_lexer.go | 7702 ++ .../dbvendor/mysql/parser/gen/mysql_parser.go | 92494 ++++++++++++++++ .../parser/gen/mysqlparser_base_visitor.go | 2236 + .../mysql/parser/gen/mysqlparser_visitor.go | 1684 + .../mysql/parser/grammar/MySqlLexer.g4 | 1267 + .../mysql/parser/grammar/MySqlParser.g4 | 2590 + .../mysql/parser/parser/altertable_visitor.go | 93 + .../mysql/parser/parser/casestream.go | 51 + .../parser/parser/columndefinition_test.go | 86 + .../parser/parser/columndefinition_visitor.go | 166 + .../mysql/parser/parser/createtable_test.go | 331 + .../parser/parser/createtable_visitor.go | 163 + .../parser/parser/createtable_visitor_test.go | 36 + .../mysql/parser/parser/datatype_test.go | 300 + .../mysql/parser/parser/datatype_visitor.go | 421 + .../dbvendor/mysql/parser/parser/parser.go | 210 + .../mysql/parser/parser/sqlstatement_test.go | 115 + .../parser/parser/sqlstatement_visitor.go | 68 + .../parser/parser/tableconstraint_test.go | 74 + .../parser/parser/tableconstraint_visitor.go | 98 + toolkit/dbvendor/mysql/parser/parser/token.go | 67 + .../dbvendor/mysql/parser/parser/visitor.go | 56 + toolkit/dbvendor/mysql/template.go | 58 + toolkit/dbvendor/placeholder.go | 114 + toolkit/dbvendor/placeholder_test.go | 67 + toolkit/dbvendor/postgres/columnenum.go | 28 + toolkit/dbvendor/postgres/postgres.go | 202 + toolkit/dbvendor/postgres/template.go | 82 + 37 files changed, 111406 insertions(+), 2 deletions(-) create mode 100644 toolkit/dbvendor/ivendor.go create mode 100644 toolkit/dbvendor/mysql/columnenum.go create mode 100644 toolkit/dbvendor/mysql/mysql.go create mode 100644 toolkit/dbvendor/mysql/parser/LICENSE create mode 100644 toolkit/dbvendor/mysql/parser/console/console.go create mode 100644 toolkit/dbvendor/mysql/parser/console/console_test.go create mode 100644 toolkit/dbvendor/mysql/parser/gen/mysql_lexer.go create mode 100644 toolkit/dbvendor/mysql/parser/gen/mysql_parser.go create mode 100644 toolkit/dbvendor/mysql/parser/gen/mysqlparser_base_visitor.go create mode 100644 toolkit/dbvendor/mysql/parser/gen/mysqlparser_visitor.go create mode 100644 toolkit/dbvendor/mysql/parser/grammar/MySqlLexer.g4 create mode 100644 toolkit/dbvendor/mysql/parser/grammar/MySqlParser.g4 create mode 100644 toolkit/dbvendor/mysql/parser/parser/altertable_visitor.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/casestream.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/columndefinition_test.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/columndefinition_visitor.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/createtable_test.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/createtable_visitor.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/createtable_visitor_test.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/datatype_test.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/datatype_visitor.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/parser.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/sqlstatement_test.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/sqlstatement_visitor.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/tableconstraint_test.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/tableconstraint_visitor.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/token.go create mode 100644 toolkit/dbvendor/mysql/parser/parser/visitor.go create mode 100644 toolkit/dbvendor/mysql/template.go create mode 100644 toolkit/dbvendor/placeholder.go create mode 100644 toolkit/dbvendor/placeholder_test.go create mode 100644 toolkit/dbvendor/postgres/columnenum.go create mode 100644 toolkit/dbvendor/postgres/postgres.go create mode 100644 toolkit/dbvendor/postgres/template.go diff --git a/.gitignore b/.gitignore index e4b2b1c4..07ddc414 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ example/ddl/dao/ example/doudou/dao/ **/cover.out **/coverage.txt -gen cmd/testdata/testsvc/cmd/cmd coverage.out resources diff --git a/go.mod b/go.mod index d9d12703..fb71045f 100644 --- a/go.mod +++ b/go.mod @@ -49,6 +49,7 @@ require ( github.com/gorilla/handlers v1.5.1 github.com/hashicorp/go-sockaddr v1.0.2 github.com/hashicorp/golang-lru v0.5.4 + github.com/logrusorgru/aurora v2.0.3+incompatible github.com/manifoldco/promptui v0.9.0 github.com/mholt/archiver/v3 v3.5.1 github.com/morkid/gocache v1.0.0 @@ -93,7 +94,7 @@ require ( github.com/acomagu/bufpipe v1.0.4 // indirect github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 // indirect github.com/andybalholm/brotli v1.0.5 // indirect - github.com/antlr/antlr4 v0.0.0-20200124162019-2d7f727a00b7 // indirect + github.com/antlr/antlr4 v0.0.0-20200124162019-2d7f727a00b7 github.com/beorn7/perks v1.0.1 // indirect github.com/buger/jsonparser v1.1.1 // indirect github.com/cenkalti/backoff v2.2.1+incompatible // indirect diff --git a/go.sum b/go.sum index 9d54724d..bffd7fb4 100644 --- a/go.sum +++ b/go.sum @@ -831,6 +831,8 @@ github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8= github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lithammer/shortuuid/v4 v4.0.0 h1:QRbbVkfgNippHOS8PXDkti4NaWeyYfcBTHtw7k08o4c= github.com/lithammer/shortuuid/v4 v4.0.0/go.mod h1:Zs8puNcrvf2rV9rTH51ZLLcj7ZXqQI3lv67aw4KiB1Y= +github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= +github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= diff --git a/toolkit/dbvendor/ivendor.go b/toolkit/dbvendor/ivendor.go new file mode 100644 index 00000000..bb91586e --- /dev/null +++ b/toolkit/dbvendor/ivendor.go @@ -0,0 +1,138 @@ +package dbvendor + +import ( + "context" + "database/sql" + "fmt" + "github.com/pkg/errors" + "github.com/unionj-cloud/go-doudou/v2/toolkit/errorx" + "github.com/unionj-cloud/go-doudou/v2/toolkit/templateutils" + "github.com/unionj-cloud/go-doudou/v2/toolkit/zlogger" + "gorm.io/gorm" +) + +var Registry = ®istry{ + vendors: map[string]IVendor{}, +} + +type registry struct { + vendors map[string]IVendor +} + +func (receiver *registry) Register(driver string, vendor IVendor) { + receiver.vendors[driver] = vendor +} + +func (receiver *registry) GetVendor(driver string) IVendor { + vendor, ok := receiver.vendors[driver] + if !ok { + errorx.Panic(fmt.Sprintf("Unsupported driver %s", driver)) + } + return vendor +} + +type IVendor interface { + CreateTable(ctx context.Context, db *gorm.DB, t Table) error + DropTable(ctx context.Context, db *gorm.DB, t Table) error + ChangeColumn(ctx context.Context, db *gorm.DB, col Column) error + AddColumn(ctx context.Context, db *gorm.DB, col Column) error + DropColumn(ctx context.Context, db *gorm.DB, col Column) error + ToColumnType(goType string, autoincrementing bool) string + + Insert(ctx context.Context, db *gorm.DB, dml DMLSchema, args ...interface{}) (int64, error) + Update(ctx context.Context, db *gorm.DB, dml DMLSchema, args ...interface{}) error + Delete(ctx context.Context, db *gorm.DB, dml DMLSchema, args ...interface{}) error + SelectById(ctx context.Context, db *gorm.DB, dml DMLSchema, args ...interface{}) (map[string]interface{}, error) + GetInsertStatement(dml DMLSchema) (statement string, err error) + GetUpdateStatement(dml DMLSchema) (statement string, err error) +} + +type DMLSchema struct { + Schema string + TablePrefix string + TableName string + InsertColumns []Column + UpdateColumns []Column + Pk Column +} + +// Column define a column +type Column struct { + TablePrefix string + Table string + Name string + OldName string + Type string + Default *string + Pk bool + Nullable bool + Unsigned bool + Autoincrement bool + Extra string + Comment string + // 关联表名 + Foreign string +} + +// Table defines a table +type Table struct { + Name string + Columns []Column + BizColumns []Column + Pk string + Joins []string + // 父表 + Inherited string +} + +func String(tmplname, tmpl string, data interface{}, pf PlaceholderFormat) (string, error) { + result, err := templateutils.String(tmplname, tmpl, data) + if err != nil { + return "", errors.WithStack(err) + } + if pf != nil { + result, err = pf.ReplacePlaceholders(result) + if err != nil { + return "", errors.WithStack(err) + } + } + zlogger.Info().Msg(result) + return result, nil +} + +func StringBlock(tmplname, tmpl string, block string, data interface{}, pf PlaceholderFormat) (string, error) { + result, err := templateutils.StringBlock(tmplname, tmpl, block, data) + if err != nil { + return "", errors.WithStack(err) + } + if pf != nil { + result, err = pf.ReplacePlaceholders(result) + if err != nil { + return "", errors.WithStack(err) + } + } + zlogger.Info().Msg(result) + return result, nil +} + +const ( + // Update used for update_at column + Update = "on update CURRENT_TIMESTAMP" +) + +func Scan(rows *sql.Rows, result *[]map[string]interface{}) { + fields, _ := rows.Columns() + for rows.Next() { + scans := make([]interface{}, len(fields)) + data := make(map[string]interface{}) + + for i := range scans { + scans[i] = &scans[i] + } + rows.Scan(scans...) + for i, v := range scans { + data[fields[i]] = v + } + *result = append(*result, data) + } +} diff --git a/toolkit/dbvendor/mysql/columnenum.go b/toolkit/dbvendor/mysql/columnenum.go new file mode 100644 index 00000000..ff3bc0dc --- /dev/null +++ b/toolkit/dbvendor/mysql/columnenum.go @@ -0,0 +1,46 @@ +package mysql + +const ( + // BitType bit + BitType = "BIT" + // TextType text + TextType = "TEXT" + // BlobType blob + BlobType = "BLOB" + // DateType date + DateType = "DATE" + // DatetimeType datatime + DatetimeType = "DATETIME" + // DecimalType decimal + DecimalType = "DECIMAL" + // DoubleType double + DoubleType = "DOUBLE" + // EnumType enum + EnumType = "ENUM" + // FloatType float + FloatType = "FLOAT" + // GeometryType geometry + GeometryType = "GEOMETRY" + // MediumintType medium int + MediumintType = "MEDIUMINT" + // JSONType json + JSONType = "JSON" + // IntType int + IntType = "INT" + // LongtextType long text + LongtextType = "LONGTEXT" + // LongblobType long blob + LongblobType = "LONGBLOB" + // BigintType big int + BigintType = "BIGINT" + // MediumtextType medium text + MediumtextType = "MEDIUMTEXT" + // MediumblobType medium blob + MediumblobType = "MEDIUMBLOB" + // SmallintType small int + SmallintType = "SMALLINT" + // TinyintType tiny int + TinyintType = "TINYINT" + // VarcharType varchar + VarcharType = "VARCHAR(255)" +) diff --git a/toolkit/dbvendor/mysql/mysql.go b/toolkit/dbvendor/mysql/mysql.go new file mode 100644 index 00000000..c9f28bcc --- /dev/null +++ b/toolkit/dbvendor/mysql/mysql.go @@ -0,0 +1,200 @@ +package mysql + +import ( + "context" + "database/sql" + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor" + "fmt" + "github.com/pkg/errors" + "github.com/unionj-cloud/go-doudou/v2/framework/database" + "gorm.io/gorm" +) + +func init() { + dbvendor.Registry.Register(database.DriverMysql, &Vendor{}) +} + +var _ dbvendor.IVendor = (*Vendor)(nil) + +type Vendor struct { +} + +func (v *Vendor) ToColumnType(goType string, _ bool) string { + switch goType { + case "int", "int16", "int32": + return IntType + case "int64": + return BigintType + case "float32": + return FloatType + case "float64": + return DoubleType + case "string": + return VarcharType + case "text": + return LongtextType + case "bool", "int8": + return TinyintType + case "time.Time": + return DatetimeType + case "decimal.Decimal": + return "decimal(6,2)" + case "types.JSONText": + return JSONType + } + panic(fmt.Sprintf("no available type %s", goType)) +} + +func (v *Vendor) CreateTable(ctx context.Context, db *gorm.DB, t dbvendor.Table) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.String(createTable, createTable, t, nil); err != nil { + return err + } + return db.WithContext(ctx).Exec(statement).Error +} + +func (v *Vendor) DropTable(ctx context.Context, db *gorm.DB, t dbvendor.Table) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.String(dropTable, dropTable, t, nil); err != nil { + return err + } + return db.WithContext(ctx).Exec(statement).Error +} + +func (v *Vendor) ChangeColumn(ctx context.Context, db *gorm.DB, col dbvendor.Column) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.StringBlock(alterTable, alterTable, "change", col, nil); err != nil { + return err + } + return db.WithContext(ctx).Exec(statement).Error +} + +func (v *Vendor) AddColumn(ctx context.Context, db *gorm.DB, col dbvendor.Column) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.StringBlock(alterTable, alterTable, "add", col, nil); err != nil { + return err + } + return db.WithContext(ctx).Exec(statement).Error +} + +func (v *Vendor) DropColumn(ctx context.Context, db *gorm.DB, col dbvendor.Column) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.StringBlock(alterTable, alterTable, "drop", col, nil); err != nil { + return err + } + return db.WithContext(ctx).Exec(statement).Error +} + +func (v *Vendor) Insert(ctx context.Context, db *gorm.DB, dml dbvendor.DMLSchema, args ...interface{}) (int64, error) { + var ( + statement string + err error + ) + if statement, err = v.GetInsertStatement(dml); err != nil { + return 0, errors.WithStack(err) + } + sqlDB, err := db.DB() + if err != nil { + return 0, errors.WithStack(err) + } + result, err := sqlDB.ExecContext(ctx, statement, args...) + if err != nil { + return 0, errors.WithStack(err) + } + id, err := result.LastInsertId() + if err != nil { + return 0, errors.WithStack(err) + } + return id, nil +} + +func (v *Vendor) GetInsertStatement(dml dbvendor.DMLSchema) (statement string, err error) { + if statement, err = dbvendor.String(insertInto, insertInto, dml, dbvendor.Question); err != nil { + return "", errors.WithStack(err) + } + return statement, nil +} + +func (v *Vendor) GetUpdateStatement(dml dbvendor.DMLSchema) (statement string, err error) { + if statement, err = dbvendor.String(updateTable, updateTable, dml, dbvendor.Question); err != nil { + return "", errors.WithStack(err) + } + return statement, nil +} + +func (v *Vendor) Update(ctx context.Context, db *gorm.DB, dml dbvendor.DMLSchema, args ...interface{}) error { + var ( + statement string + err error + ) + if statement, err = v.GetUpdateStatement(dml); err != nil { + return errors.WithStack(err) + } + sqlDB, err := db.DB() + if err != nil { + return errors.WithStack(err) + } + _, err = sqlDB.ExecContext(ctx, statement, args...) + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (v *Vendor) Delete(ctx context.Context, db *gorm.DB, dml dbvendor.DMLSchema, args ...interface{}) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.String(deleteFrom, deleteFrom, dml, dbvendor.Question); err != nil { + return errors.WithStack(err) + } + sqlDB, err := db.DB() + if err != nil { + return errors.WithStack(err) + } + _, err = sqlDB.ExecContext(ctx, statement, args...) + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (v *Vendor) SelectById(ctx context.Context, db *gorm.DB, dml dbvendor.DMLSchema, args ...interface{}) (map[string]interface{}, error) { + var ( + statement string + err error + rows *sql.Rows + ) + if statement, err = dbvendor.String(selectFromById, selectFromById, dml, dbvendor.Question); err != nil { + return nil, errors.WithStack(err) + } + sqlDB, err := db.DB() + if err != nil { + return nil, errors.WithStack(err) + } + if rows, err = sqlDB.QueryContext(ctx, statement, args...); err != nil { + return nil, errors.WithStack(err) + } + result := make([]map[string]interface{}, 0) + dbvendor.Scan(rows, &result) + if len(result) == 0 { + return nil, errors.WithStack(sql.ErrNoRows) + } + return result[0], nil +} diff --git a/toolkit/dbvendor/mysql/parser/LICENSE b/toolkit/dbvendor/mysql/parser/LICENSE new file mode 100644 index 00000000..fdba72ff --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 zeromicro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/toolkit/dbvendor/mysql/parser/console/console.go b/toolkit/dbvendor/mysql/parser/console/console.go new file mode 100644 index 00000000..3f063c38 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/console/console.go @@ -0,0 +1,104 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package console + +import ( + "fmt" + "log" + + "github.com/logrusorgru/aurora" +) + +// Console describes an abstract printer. +type Console interface { + Info(msg ...interface{}) + InfoF(format string, msg ...interface{}) + Debug(msg ...interface{}) + DebugF(format string, msg ...interface{}) + Warning(msg ...interface{}) + WarningF(format string, msg ...interface{}) + Error(msg ...interface{}) + ErrorF(format string, msg ...interface{}) + Fatal(msg ...interface{}) + FatalF(format string, msg ...interface{}) + Panic(msg ...interface{}) + PanicF(format string, msg ...interface{}) +} + +// Assert *colorConsole implements Console. +var _ Console = (*colorConsole)(nil) + +// NewColorConsole returns an instance of Console. +func NewColorConsole() Console { + return &colorConsole{} +} + +type colorConsole struct{} + +func (c *colorConsole) Info(msg ...interface{}) { + fmt.Println(aurora.Green(fmt.Sprint(msg...))) +} + +func (c *colorConsole) InfoF(format string, a ...interface{}) { + msg := fmt.Sprintf(format, a...) + fmt.Println(aurora.Green(msg)) +} + +func (c *colorConsole) Debug(msg ...interface{}) { + fmt.Println(aurora.Blue(fmt.Sprint(msg...))) +} + +func (c *colorConsole) DebugF(format string, a ...interface{}) { + msg := fmt.Sprintf(format, a...) + fmt.Println(aurora.Blue(msg)) +} + +func (c *colorConsole) Warning(msg ...interface{}) { + fmt.Println(aurora.Yellow(fmt.Sprint(msg...))) +} + +func (c *colorConsole) WarningF(format string, a ...interface{}) { + msg := fmt.Sprintf(format, a...) + fmt.Println(aurora.Yellow(msg)) +} + +func (c *colorConsole) Error(msg ...interface{}) { + fmt.Println(aurora.Red(fmt.Sprint(msg...))) +} + +func (c *colorConsole) ErrorF(format string, a ...interface{}) { + msg := fmt.Sprintf(format, a...) + fmt.Println(aurora.Red(msg)) +} + +func (c *colorConsole) Fatal(msg ...interface{}) { + log.Fatalln(fmt.Sprint(msg...)) +} + +func (c *colorConsole) FatalF(format string, a ...interface{}) { + msg := fmt.Sprintf(format, a...) + log.Fatalln(aurora.Red(msg)) +} + +func (c *colorConsole) Panic(msg ...interface{}) { + panic(fmt.Sprint(msg...)) +} + +func (c *colorConsole) PanicF(format string, a ...interface{}) { + msg := fmt.Sprintf(format, a...) + panic(msg) +} diff --git a/toolkit/dbvendor/mysql/parser/console/console_test.go b/toolkit/dbvendor/mysql/parser/console/console_test.go new file mode 100644 index 00000000..8bf5137b --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/console/console_test.go @@ -0,0 +1,34 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package console + +import "testing" + +func TestConsole(t *testing.T) { + console := NewColorConsole() + console.Info("info", "info") + console.InfoF("%v", "info") + + console.Debug("debug", "debug") + console.DebugF("%v", "debug") + + console.Warning("warning", "warning") + console.WarningF("%v", "warning") + + console.Error("error") + console.ErrorF("%v", "error") +} diff --git a/toolkit/dbvendor/mysql/parser/gen/mysql_lexer.go b/toolkit/dbvendor/mysql/parser/gen/mysql_lexer.go new file mode 100644 index 00000000..32b32591 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/gen/mysql_lexer.go @@ -0,0 +1,7702 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +// Code generated from /Users/anqiansong/goland/go/ddl-parser/grammar/MySqlLexer.g4 by ANTLR 4.9.1. DO NOT EDIT. + +package gen + +import ( + "fmt" + "unicode" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +// Suppress unused import error +var _ = fmt.Printf +var _ = unicode.IsLetter + +var serializedLexerAtn = []uint16{ + 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 1092, 12809, + 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, + 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, + 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, + 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, + 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, + 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, + 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, + 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, + 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, + 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, + 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, + 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, + 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, + 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, + 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, + 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, + 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, + 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, + 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, + 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, + 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, + 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, + 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, + 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, + 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, + 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, + 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, + 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, + 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, + 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, + 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, + 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, + 9, 160, 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, + 4, 165, 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, + 9, 169, 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, + 4, 174, 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, + 9, 178, 4, 179, 9, 179, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, + 4, 183, 9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, + 9, 187, 4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, + 4, 192, 9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 4, 196, + 9, 196, 4, 197, 9, 197, 4, 198, 9, 198, 4, 199, 9, 199, 4, 200, 9, 200, + 4, 201, 9, 201, 4, 202, 9, 202, 4, 203, 9, 203, 4, 204, 9, 204, 4, 205, + 9, 205, 4, 206, 9, 206, 4, 207, 9, 207, 4, 208, 9, 208, 4, 209, 9, 209, + 4, 210, 9, 210, 4, 211, 9, 211, 4, 212, 9, 212, 4, 213, 9, 213, 4, 214, + 9, 214, 4, 215, 9, 215, 4, 216, 9, 216, 4, 217, 9, 217, 4, 218, 9, 218, + 4, 219, 9, 219, 4, 220, 9, 220, 4, 221, 9, 221, 4, 222, 9, 222, 4, 223, + 9, 223, 4, 224, 9, 224, 4, 225, 9, 225, 4, 226, 9, 226, 4, 227, 9, 227, + 4, 228, 9, 228, 4, 229, 9, 229, 4, 230, 9, 230, 4, 231, 9, 231, 4, 232, + 9, 232, 4, 233, 9, 233, 4, 234, 9, 234, 4, 235, 9, 235, 4, 236, 9, 236, + 4, 237, 9, 237, 4, 238, 9, 238, 4, 239, 9, 239, 4, 240, 9, 240, 4, 241, + 9, 241, 4, 242, 9, 242, 4, 243, 9, 243, 4, 244, 9, 244, 4, 245, 9, 245, + 4, 246, 9, 246, 4, 247, 9, 247, 4, 248, 9, 248, 4, 249, 9, 249, 4, 250, + 9, 250, 4, 251, 9, 251, 4, 252, 9, 252, 4, 253, 9, 253, 4, 254, 9, 254, + 4, 255, 9, 255, 4, 256, 9, 256, 4, 257, 9, 257, 4, 258, 9, 258, 4, 259, + 9, 259, 4, 260, 9, 260, 4, 261, 9, 261, 4, 262, 9, 262, 4, 263, 9, 263, + 4, 264, 9, 264, 4, 265, 9, 265, 4, 266, 9, 266, 4, 267, 9, 267, 4, 268, + 9, 268, 4, 269, 9, 269, 4, 270, 9, 270, 4, 271, 9, 271, 4, 272, 9, 272, + 4, 273, 9, 273, 4, 274, 9, 274, 4, 275, 9, 275, 4, 276, 9, 276, 4, 277, + 9, 277, 4, 278, 9, 278, 4, 279, 9, 279, 4, 280, 9, 280, 4, 281, 9, 281, + 4, 282, 9, 282, 4, 283, 9, 283, 4, 284, 9, 284, 4, 285, 9, 285, 4, 286, + 9, 286, 4, 287, 9, 287, 4, 288, 9, 288, 4, 289, 9, 289, 4, 290, 9, 290, + 4, 291, 9, 291, 4, 292, 9, 292, 4, 293, 9, 293, 4, 294, 9, 294, 4, 295, + 9, 295, 4, 296, 9, 296, 4, 297, 9, 297, 4, 298, 9, 298, 4, 299, 9, 299, + 4, 300, 9, 300, 4, 301, 9, 301, 4, 302, 9, 302, 4, 303, 9, 303, 4, 304, + 9, 304, 4, 305, 9, 305, 4, 306, 9, 306, 4, 307, 9, 307, 4, 308, 9, 308, + 4, 309, 9, 309, 4, 310, 9, 310, 4, 311, 9, 311, 4, 312, 9, 312, 4, 313, + 9, 313, 4, 314, 9, 314, 4, 315, 9, 315, 4, 316, 9, 316, 4, 317, 9, 317, + 4, 318, 9, 318, 4, 319, 9, 319, 4, 320, 9, 320, 4, 321, 9, 321, 4, 322, + 9, 322, 4, 323, 9, 323, 4, 324, 9, 324, 4, 325, 9, 325, 4, 326, 9, 326, + 4, 327, 9, 327, 4, 328, 9, 328, 4, 329, 9, 329, 4, 330, 9, 330, 4, 331, + 9, 331, 4, 332, 9, 332, 4, 333, 9, 333, 4, 334, 9, 334, 4, 335, 9, 335, + 4, 336, 9, 336, 4, 337, 9, 337, 4, 338, 9, 338, 4, 339, 9, 339, 4, 340, + 9, 340, 4, 341, 9, 341, 4, 342, 9, 342, 4, 343, 9, 343, 4, 344, 9, 344, + 4, 345, 9, 345, 4, 346, 9, 346, 4, 347, 9, 347, 4, 348, 9, 348, 4, 349, + 9, 349, 4, 350, 9, 350, 4, 351, 9, 351, 4, 352, 9, 352, 4, 353, 9, 353, + 4, 354, 9, 354, 4, 355, 9, 355, 4, 356, 9, 356, 4, 357, 9, 357, 4, 358, + 9, 358, 4, 359, 9, 359, 4, 360, 9, 360, 4, 361, 9, 361, 4, 362, 9, 362, + 4, 363, 9, 363, 4, 364, 9, 364, 4, 365, 9, 365, 4, 366, 9, 366, 4, 367, + 9, 367, 4, 368, 9, 368, 4, 369, 9, 369, 4, 370, 9, 370, 4, 371, 9, 371, + 4, 372, 9, 372, 4, 373, 9, 373, 4, 374, 9, 374, 4, 375, 9, 375, 4, 376, + 9, 376, 4, 377, 9, 377, 4, 378, 9, 378, 4, 379, 9, 379, 4, 380, 9, 380, + 4, 381, 9, 381, 4, 382, 9, 382, 4, 383, 9, 383, 4, 384, 9, 384, 4, 385, + 9, 385, 4, 386, 9, 386, 4, 387, 9, 387, 4, 388, 9, 388, 4, 389, 9, 389, + 4, 390, 9, 390, 4, 391, 9, 391, 4, 392, 9, 392, 4, 393, 9, 393, 4, 394, + 9, 394, 4, 395, 9, 395, 4, 396, 9, 396, 4, 397, 9, 397, 4, 398, 9, 398, + 4, 399, 9, 399, 4, 400, 9, 400, 4, 401, 9, 401, 4, 402, 9, 402, 4, 403, + 9, 403, 4, 404, 9, 404, 4, 405, 9, 405, 4, 406, 9, 406, 4, 407, 9, 407, + 4, 408, 9, 408, 4, 409, 9, 409, 4, 410, 9, 410, 4, 411, 9, 411, 4, 412, + 9, 412, 4, 413, 9, 413, 4, 414, 9, 414, 4, 415, 9, 415, 4, 416, 9, 416, + 4, 417, 9, 417, 4, 418, 9, 418, 4, 419, 9, 419, 4, 420, 9, 420, 4, 421, + 9, 421, 4, 422, 9, 422, 4, 423, 9, 423, 4, 424, 9, 424, 4, 425, 9, 425, + 4, 426, 9, 426, 4, 427, 9, 427, 4, 428, 9, 428, 4, 429, 9, 429, 4, 430, + 9, 430, 4, 431, 9, 431, 4, 432, 9, 432, 4, 433, 9, 433, 4, 434, 9, 434, + 4, 435, 9, 435, 4, 436, 9, 436, 4, 437, 9, 437, 4, 438, 9, 438, 4, 439, + 9, 439, 4, 440, 9, 440, 4, 441, 9, 441, 4, 442, 9, 442, 4, 443, 9, 443, + 4, 444, 9, 444, 4, 445, 9, 445, 4, 446, 9, 446, 4, 447, 9, 447, 4, 448, + 9, 448, 4, 449, 9, 449, 4, 450, 9, 450, 4, 451, 9, 451, 4, 452, 9, 452, + 4, 453, 9, 453, 4, 454, 9, 454, 4, 455, 9, 455, 4, 456, 9, 456, 4, 457, + 9, 457, 4, 458, 9, 458, 4, 459, 9, 459, 4, 460, 9, 460, 4, 461, 9, 461, + 4, 462, 9, 462, 4, 463, 9, 463, 4, 464, 9, 464, 4, 465, 9, 465, 4, 466, + 9, 466, 4, 467, 9, 467, 4, 468, 9, 468, 4, 469, 9, 469, 4, 470, 9, 470, + 4, 471, 9, 471, 4, 472, 9, 472, 4, 473, 9, 473, 4, 474, 9, 474, 4, 475, + 9, 475, 4, 476, 9, 476, 4, 477, 9, 477, 4, 478, 9, 478, 4, 479, 9, 479, + 4, 480, 9, 480, 4, 481, 9, 481, 4, 482, 9, 482, 4, 483, 9, 483, 4, 484, + 9, 484, 4, 485, 9, 485, 4, 486, 9, 486, 4, 487, 9, 487, 4, 488, 9, 488, + 4, 489, 9, 489, 4, 490, 9, 490, 4, 491, 9, 491, 4, 492, 9, 492, 4, 493, + 9, 493, 4, 494, 9, 494, 4, 495, 9, 495, 4, 496, 9, 496, 4, 497, 9, 497, + 4, 498, 9, 498, 4, 499, 9, 499, 4, 500, 9, 500, 4, 501, 9, 501, 4, 502, + 9, 502, 4, 503, 9, 503, 4, 504, 9, 504, 4, 505, 9, 505, 4, 506, 9, 506, + 4, 507, 9, 507, 4, 508, 9, 508, 4, 509, 9, 509, 4, 510, 9, 510, 4, 511, + 9, 511, 4, 512, 9, 512, 4, 513, 9, 513, 4, 514, 9, 514, 4, 515, 9, 515, + 4, 516, 9, 516, 4, 517, 9, 517, 4, 518, 9, 518, 4, 519, 9, 519, 4, 520, + 9, 520, 4, 521, 9, 521, 4, 522, 9, 522, 4, 523, 9, 523, 4, 524, 9, 524, + 4, 525, 9, 525, 4, 526, 9, 526, 4, 527, 9, 527, 4, 528, 9, 528, 4, 529, + 9, 529, 4, 530, 9, 530, 4, 531, 9, 531, 4, 532, 9, 532, 4, 533, 9, 533, + 4, 534, 9, 534, 4, 535, 9, 535, 4, 536, 9, 536, 4, 537, 9, 537, 4, 538, + 9, 538, 4, 539, 9, 539, 4, 540, 9, 540, 4, 541, 9, 541, 4, 542, 9, 542, + 4, 543, 9, 543, 4, 544, 9, 544, 4, 545, 9, 545, 4, 546, 9, 546, 4, 547, + 9, 547, 4, 548, 9, 548, 4, 549, 9, 549, 4, 550, 9, 550, 4, 551, 9, 551, + 4, 552, 9, 552, 4, 553, 9, 553, 4, 554, 9, 554, 4, 555, 9, 555, 4, 556, + 9, 556, 4, 557, 9, 557, 4, 558, 9, 558, 4, 559, 9, 559, 4, 560, 9, 560, + 4, 561, 9, 561, 4, 562, 9, 562, 4, 563, 9, 563, 4, 564, 9, 564, 4, 565, + 9, 565, 4, 566, 9, 566, 4, 567, 9, 567, 4, 568, 9, 568, 4, 569, 9, 569, + 4, 570, 9, 570, 4, 571, 9, 571, 4, 572, 9, 572, 4, 573, 9, 573, 4, 574, + 9, 574, 4, 575, 9, 575, 4, 576, 9, 576, 4, 577, 9, 577, 4, 578, 9, 578, + 4, 579, 9, 579, 4, 580, 9, 580, 4, 581, 9, 581, 4, 582, 9, 582, 4, 583, + 9, 583, 4, 584, 9, 584, 4, 585, 9, 585, 4, 586, 9, 586, 4, 587, 9, 587, + 4, 588, 9, 588, 4, 589, 9, 589, 4, 590, 9, 590, 4, 591, 9, 591, 4, 592, + 9, 592, 4, 593, 9, 593, 4, 594, 9, 594, 4, 595, 9, 595, 4, 596, 9, 596, + 4, 597, 9, 597, 4, 598, 9, 598, 4, 599, 9, 599, 4, 600, 9, 600, 4, 601, + 9, 601, 4, 602, 9, 602, 4, 603, 9, 603, 4, 604, 9, 604, 4, 605, 9, 605, + 4, 606, 9, 606, 4, 607, 9, 607, 4, 608, 9, 608, 4, 609, 9, 609, 4, 610, + 9, 610, 4, 611, 9, 611, 4, 612, 9, 612, 4, 613, 9, 613, 4, 614, 9, 614, + 4, 615, 9, 615, 4, 616, 9, 616, 4, 617, 9, 617, 4, 618, 9, 618, 4, 619, + 9, 619, 4, 620, 9, 620, 4, 621, 9, 621, 4, 622, 9, 622, 4, 623, 9, 623, + 4, 624, 9, 624, 4, 625, 9, 625, 4, 626, 9, 626, 4, 627, 9, 627, 4, 628, + 9, 628, 4, 629, 9, 629, 4, 630, 9, 630, 4, 631, 9, 631, 4, 632, 9, 632, + 4, 633, 9, 633, 4, 634, 9, 634, 4, 635, 9, 635, 4, 636, 9, 636, 4, 637, + 9, 637, 4, 638, 9, 638, 4, 639, 9, 639, 4, 640, 9, 640, 4, 641, 9, 641, + 4, 642, 9, 642, 4, 643, 9, 643, 4, 644, 9, 644, 4, 645, 9, 645, 4, 646, + 9, 646, 4, 647, 9, 647, 4, 648, 9, 648, 4, 649, 9, 649, 4, 650, 9, 650, + 4, 651, 9, 651, 4, 652, 9, 652, 4, 653, 9, 653, 4, 654, 9, 654, 4, 655, + 9, 655, 4, 656, 9, 656, 4, 657, 9, 657, 4, 658, 9, 658, 4, 659, 9, 659, + 4, 660, 9, 660, 4, 661, 9, 661, 4, 662, 9, 662, 4, 663, 9, 663, 4, 664, + 9, 664, 4, 665, 9, 665, 4, 666, 9, 666, 4, 667, 9, 667, 4, 668, 9, 668, + 4, 669, 9, 669, 4, 670, 9, 670, 4, 671, 9, 671, 4, 672, 9, 672, 4, 673, + 9, 673, 4, 674, 9, 674, 4, 675, 9, 675, 4, 676, 9, 676, 4, 677, 9, 677, + 4, 678, 9, 678, 4, 679, 9, 679, 4, 680, 9, 680, 4, 681, 9, 681, 4, 682, + 9, 682, 4, 683, 9, 683, 4, 684, 9, 684, 4, 685, 9, 685, 4, 686, 9, 686, + 4, 687, 9, 687, 4, 688, 9, 688, 4, 689, 9, 689, 4, 690, 9, 690, 4, 691, + 9, 691, 4, 692, 9, 692, 4, 693, 9, 693, 4, 694, 9, 694, 4, 695, 9, 695, + 4, 696, 9, 696, 4, 697, 9, 697, 4, 698, 9, 698, 4, 699, 9, 699, 4, 700, + 9, 700, 4, 701, 9, 701, 4, 702, 9, 702, 4, 703, 9, 703, 4, 704, 9, 704, + 4, 705, 9, 705, 4, 706, 9, 706, 4, 707, 9, 707, 4, 708, 9, 708, 4, 709, + 9, 709, 4, 710, 9, 710, 4, 711, 9, 711, 4, 712, 9, 712, 4, 713, 9, 713, + 4, 714, 9, 714, 4, 715, 9, 715, 4, 716, 9, 716, 4, 717, 9, 717, 4, 718, + 9, 718, 4, 719, 9, 719, 4, 720, 9, 720, 4, 721, 9, 721, 4, 722, 9, 722, + 4, 723, 9, 723, 4, 724, 9, 724, 4, 725, 9, 725, 4, 726, 9, 726, 4, 727, + 9, 727, 4, 728, 9, 728, 4, 729, 9, 729, 4, 730, 9, 730, 4, 731, 9, 731, + 4, 732, 9, 732, 4, 733, 9, 733, 4, 734, 9, 734, 4, 735, 9, 735, 4, 736, + 9, 736, 4, 737, 9, 737, 4, 738, 9, 738, 4, 739, 9, 739, 4, 740, 9, 740, + 4, 741, 9, 741, 4, 742, 9, 742, 4, 743, 9, 743, 4, 744, 9, 744, 4, 745, + 9, 745, 4, 746, 9, 746, 4, 747, 9, 747, 4, 748, 9, 748, 4, 749, 9, 749, + 4, 750, 9, 750, 4, 751, 9, 751, 4, 752, 9, 752, 4, 753, 9, 753, 4, 754, + 9, 754, 4, 755, 9, 755, 4, 756, 9, 756, 4, 757, 9, 757, 4, 758, 9, 758, + 4, 759, 9, 759, 4, 760, 9, 760, 4, 761, 9, 761, 4, 762, 9, 762, 4, 763, + 9, 763, 4, 764, 9, 764, 4, 765, 9, 765, 4, 766, 9, 766, 4, 767, 9, 767, + 4, 768, 9, 768, 4, 769, 9, 769, 4, 770, 9, 770, 4, 771, 9, 771, 4, 772, + 9, 772, 4, 773, 9, 773, 4, 774, 9, 774, 4, 775, 9, 775, 4, 776, 9, 776, + 4, 777, 9, 777, 4, 778, 9, 778, 4, 779, 9, 779, 4, 780, 9, 780, 4, 781, + 9, 781, 4, 782, 9, 782, 4, 783, 9, 783, 4, 784, 9, 784, 4, 785, 9, 785, + 4, 786, 9, 786, 4, 787, 9, 787, 4, 788, 9, 788, 4, 789, 9, 789, 4, 790, + 9, 790, 4, 791, 9, 791, 4, 792, 9, 792, 4, 793, 9, 793, 4, 794, 9, 794, + 4, 795, 9, 795, 4, 796, 9, 796, 4, 797, 9, 797, 4, 798, 9, 798, 4, 799, + 9, 799, 4, 800, 9, 800, 4, 801, 9, 801, 4, 802, 9, 802, 4, 803, 9, 803, + 4, 804, 9, 804, 4, 805, 9, 805, 4, 806, 9, 806, 4, 807, 9, 807, 4, 808, + 9, 808, 4, 809, 9, 809, 4, 810, 9, 810, 4, 811, 9, 811, 4, 812, 9, 812, + 4, 813, 9, 813, 4, 814, 9, 814, 4, 815, 9, 815, 4, 816, 9, 816, 4, 817, + 9, 817, 4, 818, 9, 818, 4, 819, 9, 819, 4, 820, 9, 820, 4, 821, 9, 821, + 4, 822, 9, 822, 4, 823, 9, 823, 4, 824, 9, 824, 4, 825, 9, 825, 4, 826, + 9, 826, 4, 827, 9, 827, 4, 828, 9, 828, 4, 829, 9, 829, 4, 830, 9, 830, + 4, 831, 9, 831, 4, 832, 9, 832, 4, 833, 9, 833, 4, 834, 9, 834, 4, 835, + 9, 835, 4, 836, 9, 836, 4, 837, 9, 837, 4, 838, 9, 838, 4, 839, 9, 839, + 4, 840, 9, 840, 4, 841, 9, 841, 4, 842, 9, 842, 4, 843, 9, 843, 4, 844, + 9, 844, 4, 845, 9, 845, 4, 846, 9, 846, 4, 847, 9, 847, 4, 848, 9, 848, + 4, 849, 9, 849, 4, 850, 9, 850, 4, 851, 9, 851, 4, 852, 9, 852, 4, 853, + 9, 853, 4, 854, 9, 854, 4, 855, 9, 855, 4, 856, 9, 856, 4, 857, 9, 857, + 4, 858, 9, 858, 4, 859, 9, 859, 4, 860, 9, 860, 4, 861, 9, 861, 4, 862, + 9, 862, 4, 863, 9, 863, 4, 864, 9, 864, 4, 865, 9, 865, 4, 866, 9, 866, + 4, 867, 9, 867, 4, 868, 9, 868, 4, 869, 9, 869, 4, 870, 9, 870, 4, 871, + 9, 871, 4, 872, 9, 872, 4, 873, 9, 873, 4, 874, 9, 874, 4, 875, 9, 875, + 4, 876, 9, 876, 4, 877, 9, 877, 4, 878, 9, 878, 4, 879, 9, 879, 4, 880, + 9, 880, 4, 881, 9, 881, 4, 882, 9, 882, 4, 883, 9, 883, 4, 884, 9, 884, + 4, 885, 9, 885, 4, 886, 9, 886, 4, 887, 9, 887, 4, 888, 9, 888, 4, 889, + 9, 889, 4, 890, 9, 890, 4, 891, 9, 891, 4, 892, 9, 892, 4, 893, 9, 893, + 4, 894, 9, 894, 4, 895, 9, 895, 4, 896, 9, 896, 4, 897, 9, 897, 4, 898, + 9, 898, 4, 899, 9, 899, 4, 900, 9, 900, 4, 901, 9, 901, 4, 902, 9, 902, + 4, 903, 9, 903, 4, 904, 9, 904, 4, 905, 9, 905, 4, 906, 9, 906, 4, 907, + 9, 907, 4, 908, 9, 908, 4, 909, 9, 909, 4, 910, 9, 910, 4, 911, 9, 911, + 4, 912, 9, 912, 4, 913, 9, 913, 4, 914, 9, 914, 4, 915, 9, 915, 4, 916, + 9, 916, 4, 917, 9, 917, 4, 918, 9, 918, 4, 919, 9, 919, 4, 920, 9, 920, + 4, 921, 9, 921, 4, 922, 9, 922, 4, 923, 9, 923, 4, 924, 9, 924, 4, 925, + 9, 925, 4, 926, 9, 926, 4, 927, 9, 927, 4, 928, 9, 928, 4, 929, 9, 929, + 4, 930, 9, 930, 4, 931, 9, 931, 4, 932, 9, 932, 4, 933, 9, 933, 4, 934, + 9, 934, 4, 935, 9, 935, 4, 936, 9, 936, 4, 937, 9, 937, 4, 938, 9, 938, + 4, 939, 9, 939, 4, 940, 9, 940, 4, 941, 9, 941, 4, 942, 9, 942, 4, 943, + 9, 943, 4, 944, 9, 944, 4, 945, 9, 945, 4, 946, 9, 946, 4, 947, 9, 947, + 4, 948, 9, 948, 4, 949, 9, 949, 4, 950, 9, 950, 4, 951, 9, 951, 4, 952, + 9, 952, 4, 953, 9, 953, 4, 954, 9, 954, 4, 955, 9, 955, 4, 956, 9, 956, + 4, 957, 9, 957, 4, 958, 9, 958, 4, 959, 9, 959, 4, 960, 9, 960, 4, 961, + 9, 961, 4, 962, 9, 962, 4, 963, 9, 963, 4, 964, 9, 964, 4, 965, 9, 965, + 4, 966, 9, 966, 4, 967, 9, 967, 4, 968, 9, 968, 4, 969, 9, 969, 4, 970, + 9, 970, 4, 971, 9, 971, 4, 972, 9, 972, 4, 973, 9, 973, 4, 974, 9, 974, + 4, 975, 9, 975, 4, 976, 9, 976, 4, 977, 9, 977, 4, 978, 9, 978, 4, 979, + 9, 979, 4, 980, 9, 980, 4, 981, 9, 981, 4, 982, 9, 982, 4, 983, 9, 983, + 4, 984, 9, 984, 4, 985, 9, 985, 4, 986, 9, 986, 4, 987, 9, 987, 4, 988, + 9, 988, 4, 989, 9, 989, 4, 990, 9, 990, 4, 991, 9, 991, 4, 992, 9, 992, + 4, 993, 9, 993, 4, 994, 9, 994, 4, 995, 9, 995, 4, 996, 9, 996, 4, 997, + 9, 997, 4, 998, 9, 998, 4, 999, 9, 999, 4, 1000, 9, 1000, 4, 1001, 9, 1001, + 4, 1002, 9, 1002, 4, 1003, 9, 1003, 4, 1004, 9, 1004, 4, 1005, 9, 1005, + 4, 1006, 9, 1006, 4, 1007, 9, 1007, 4, 1008, 9, 1008, 4, 1009, 9, 1009, + 4, 1010, 9, 1010, 4, 1011, 9, 1011, 4, 1012, 9, 1012, 4, 1013, 9, 1013, + 4, 1014, 9, 1014, 4, 1015, 9, 1015, 4, 1016, 9, 1016, 4, 1017, 9, 1017, + 4, 1018, 9, 1018, 4, 1019, 9, 1019, 4, 1020, 9, 1020, 4, 1021, 9, 1021, + 4, 1022, 9, 1022, 4, 1023, 9, 1023, 4, 1024, 9, 1024, 4, 1025, 9, 1025, + 4, 1026, 9, 1026, 4, 1027, 9, 1027, 4, 1028, 9, 1028, 4, 1029, 9, 1029, + 4, 1030, 9, 1030, 4, 1031, 9, 1031, 4, 1032, 9, 1032, 4, 1033, 9, 1033, + 4, 1034, 9, 1034, 4, 1035, 9, 1035, 4, 1036, 9, 1036, 4, 1037, 9, 1037, + 4, 1038, 9, 1038, 4, 1039, 9, 1039, 4, 1040, 9, 1040, 4, 1041, 9, 1041, + 4, 1042, 9, 1042, 4, 1043, 9, 1043, 4, 1044, 9, 1044, 4, 1045, 9, 1045, + 4, 1046, 9, 1046, 4, 1047, 9, 1047, 4, 1048, 9, 1048, 4, 1049, 9, 1049, + 4, 1050, 9, 1050, 4, 1051, 9, 1051, 4, 1052, 9, 1052, 4, 1053, 9, 1053, + 4, 1054, 9, 1054, 4, 1055, 9, 1055, 4, 1056, 9, 1056, 4, 1057, 9, 1057, + 4, 1058, 9, 1058, 4, 1059, 9, 1059, 4, 1060, 9, 1060, 4, 1061, 9, 1061, + 4, 1062, 9, 1062, 4, 1063, 9, 1063, 4, 1064, 9, 1064, 4, 1065, 9, 1065, + 4, 1066, 9, 1066, 4, 1067, 9, 1067, 4, 1068, 9, 1068, 4, 1069, 9, 1069, + 4, 1070, 9, 1070, 4, 1071, 9, 1071, 4, 1072, 9, 1072, 4, 1073, 9, 1073, + 4, 1074, 9, 1074, 4, 1075, 9, 1075, 4, 1076, 9, 1076, 4, 1077, 9, 1077, + 4, 1078, 9, 1078, 4, 1079, 9, 1079, 4, 1080, 9, 1080, 4, 1081, 9, 1081, + 4, 1082, 9, 1082, 4, 1083, 9, 1083, 4, 1084, 9, 1084, 4, 1085, 9, 1085, + 4, 1086, 9, 1086, 4, 1087, 9, 1087, 4, 1088, 9, 1088, 4, 1089, 9, 1089, + 4, 1090, 9, 1090, 4, 1091, 9, 1091, 4, 1092, 9, 1092, 4, 1093, 9, 1093, + 4, 1094, 9, 1094, 4, 1095, 9, 1095, 4, 1096, 9, 1096, 4, 1097, 9, 1097, + 4, 1098, 9, 1098, 4, 1099, 9, 1099, 4, 1100, 9, 1100, 4, 1101, 9, 1101, + 3, 2, 6, 2, 2205, 10, 2, 13, 2, 14, 2, 2206, 3, 2, 3, 2, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 6, 3, 2216, 10, 3, 13, 3, 14, 3, 2217, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 2229, 10, 4, 12, 4, 14, 4, 2232, + 11, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, + 2244, 10, 5, 3, 5, 7, 5, 2247, 10, 5, 12, 5, 14, 5, 2250, 11, 5, 3, 5, + 5, 5, 2253, 10, 5, 3, 5, 3, 5, 5, 5, 2257, 10, 5, 3, 5, 3, 5, 3, 5, 3, + 5, 5, 5, 2263, 10, 5, 3, 5, 3, 5, 5, 5, 2267, 10, 5, 5, 5, 2269, 10, 5, + 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, + 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, + 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, + 11, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, + 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, + 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, + 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, + 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, + 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, + 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, + 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, + 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, + 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, + 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, + 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, + 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, + 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, + 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, + 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, + 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, + 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, + 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, + 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, + 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, + 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, + 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, + 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, + 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, + 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, + 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, + 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, + 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, + 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, + 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, + 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, + 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, + 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, + 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, + 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, + 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, + 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, + 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, + 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, + 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, + 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, + 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 74, + 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, + 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, + 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, + 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, + 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, + 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, + 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, + 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, + 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, + 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, + 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, + 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, + 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, + 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, + 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, + 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, + 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, + 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 100, + 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, + 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, + 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, + 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, + 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, + 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, + 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, + 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 110, + 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, + 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, + 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, + 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 115, + 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, + 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 118, + 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, + 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, + 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, + 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, + 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 124, + 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 125, 3, 125, 3, 125, 3, 125, + 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 126, 3, 126, + 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, + 3, 127, 3, 127, 3, 127, 3, 127, 3, 128, 3, 128, 3, 128, 3, 128, 3, 128, + 3, 128, 3, 128, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, + 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 131, + 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 132, 3, 132, + 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 133, 3, 133, + 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 134, 3, 134, + 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 135, + 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 136, 3, 136, 3, 136, + 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, + 3, 138, 3, 138, 3, 138, 3, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, + 3, 139, 3, 139, 3, 139, 3, 140, 3, 140, 3, 140, 3, 140, 3, 140, 3, 140, + 3, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 142, 3, 142, 3, 142, 3, 142, + 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, + 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, + 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 146, + 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, + 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 148, 3, 148, + 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 149, 3, 149, + 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, + 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, + 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 151, 3, 151, 3, 151, + 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, + 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 152, + 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, + 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 153, 3, 153, + 3, 153, 3, 153, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, + 3, 154, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, + 3, 155, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, + 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 157, 3, 157, 3, 157, + 3, 157, 3, 157, 3, 157, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, + 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 159, 3, 159, 3, 159, 3, 159, + 3, 159, 3, 160, 3, 160, 3, 160, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, + 3, 161, 3, 161, 3, 161, 3, 161, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, + 3, 162, 3, 162, 3, 162, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 164, + 3, 164, 3, 164, 3, 164, 3, 164, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, + 3, 165, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 167, + 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 168, 3, 168, 3, 168, + 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 169, 3, 169, 3, 169, + 3, 169, 3, 169, 3, 169, 3, 169, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, + 3, 170, 3, 171, 3, 171, 3, 171, 3, 171, 3, 172, 3, 172, 3, 172, 3, 172, + 3, 172, 3, 172, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, + 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 175, 3, 175, 3, 175, 3, 175, + 3, 175, 3, 175, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 177, + 3, 177, 3, 177, 3, 177, 3, 177, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, + 3, 178, 3, 179, 3, 179, 3, 179, 3, 179, 3, 180, 3, 180, 3, 180, 3, 180, + 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 181, 3, 181, 3, 181, 3, 181, + 3, 181, 3, 181, 3, 181, 3, 181, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, + 3, 182, 3, 182, 3, 182, 3, 182, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, + 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 184, 3, 184, 3, 184, 3, 184, + 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 185, 3, 185, 3, 185, + 3, 185, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 187, 3, 187, 3, 187, + 3, 187, 3, 187, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 189, 3, 189, + 3, 189, 3, 189, 3, 189, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 191, + 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 192, 3, 192, + 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 193, 3, 193, 3, 193, 3, 193, + 3, 193, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 195, + 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, + 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 197, 3, 197, 3, 197, + 3, 197, 3, 197, 3, 197, 3, 197, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, + 3, 198, 3, 198, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, + 3, 199, 3, 200, 3, 200, 3, 200, 3, 200, 3, 201, 3, 201, 3, 201, 3, 201, + 3, 201, 3, 201, 3, 201, 3, 201, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, + 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 204, 3, 204, 3, 204, 3, 204, + 3, 204, 3, 204, 3, 204, 3, 204, 3, 204, 3, 204, 3, 205, 3, 205, 3, 205, + 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 206, 3, 206, 3, 206, + 3, 206, 3, 206, 3, 207, 3, 207, 3, 207, 3, 207, 3, 207, 3, 208, 3, 208, + 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 3, 209, 3, 209, 3, 209, + 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 210, 3, 210, 3, 210, + 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 211, 3, 211, 3, 211, + 3, 211, 3, 211, 3, 211, 3, 211, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, + 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 213, 3, 213, 3, 213, 3, 213, + 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 214, 3, 214, 3, 214, 3, 214, + 3, 214, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, + 3, 215, 3, 215, 3, 215, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 217, + 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 218, + 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 219, + 3, 219, 3, 219, 3, 219, 3, 219, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, + 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 221, 3, 221, 3, 221, + 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 222, 3, 222, 3, 222, + 3, 222, 3, 222, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, + 3, 223, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 225, + 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, + 3, 225, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, + 3, 226, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, + 3, 227, 3, 227, 3, 227, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, + 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 229, 3, 229, 3, 229, 3, 229, + 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 230, + 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, + 3, 230, 3, 230, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, + 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 232, 3, 232, + 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, + 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 233, + 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, + 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, + 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, + 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 235, + 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, + 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 3, 236, 3, 236, 3, 236, + 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 237, + 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, + 3, 237, 3, 237, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, + 3, 238, 3, 238, 3, 238, 3, 238, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, + 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, + 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, + 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, + 3, 240, 3, 241, 3, 241, 3, 241, 3, 241, 3, 241, 3, 241, 3, 241, 3, 241, + 3, 241, 3, 241, 3, 241, 3, 241, 3, 241, 3, 242, 3, 242, 3, 242, 3, 242, + 3, 242, 3, 242, 3, 242, 3, 242, 3, 242, 3, 242, 3, 243, 3, 243, 3, 243, + 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, + 3, 243, 3, 243, 3, 244, 3, 244, 3, 244, 3, 244, 3, 244, 3, 244, 3, 244, + 3, 244, 3, 244, 3, 244, 3, 244, 3, 244, 3, 245, 3, 245, 3, 245, 3, 245, + 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 246, 3, 246, + 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, + 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 247, 3, 247, + 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, + 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 248, 3, 248, + 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, + 3, 248, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, + 3, 249, 3, 249, 3, 249, 3, 250, 3, 250, 3, 250, 3, 250, 3, 250, 3, 250, + 3, 250, 3, 250, 3, 250, 3, 250, 3, 250, 3, 250, 3, 250, 3, 250, 3, 250, + 3, 250, 3, 250, 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, + 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, + 3, 251, 3, 251, 3, 251, 3, 251, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, + 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, 3, 252, 3, 253, 3, 253, + 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, 3, 253, + 3, 253, 3, 253, 3, 254, 3, 254, 3, 254, 3, 254, 3, 254, 3, 254, 3, 254, + 3, 254, 3, 254, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, + 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, 3, 255, 3, 256, 3, 256, 3, 256, + 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 256, 3, 257, + 3, 257, 3, 257, 3, 257, 3, 257, 3, 257, 3, 257, 3, 257, 3, 257, 3, 257, + 3, 257, 3, 257, 3, 258, 3, 258, 3, 258, 3, 258, 3, 258, 3, 258, 3, 258, + 3, 258, 3, 258, 3, 258, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, + 3, 259, 3, 259, 3, 259, 3, 259, 3, 259, 3, 260, 3, 260, 3, 260, 3, 260, + 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 260, 3, 261, 3, 261, + 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, + 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 262, 3, 262, + 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, + 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, + 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, + 3, 262, 3, 263, 3, 263, 3, 263, 3, 263, 3, 263, 3, 263, 3, 263, 3, 263, + 3, 263, 3, 263, 3, 263, 3, 263, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, + 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, + 3, 264, 3, 264, 3, 264, 3, 264, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, + 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, 3, 265, + 3, 265, 3, 265, 3, 265, 3, 265, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, + 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, + 3, 267, 3, 267, 3, 267, 3, 267, 3, 267, 3, 267, 3, 267, 3, 267, 3, 267, + 3, 267, 3, 267, 3, 267, 3, 267, 3, 267, 3, 267, 3, 268, 3, 268, 3, 268, + 3, 268, 3, 269, 3, 269, 3, 269, 3, 269, 3, 269, 3, 269, 3, 269, 3, 269, + 3, 270, 3, 270, 3, 270, 3, 270, 3, 270, 3, 270, 3, 270, 3, 271, 3, 271, + 3, 271, 3, 271, 3, 271, 3, 271, 3, 271, 3, 271, 3, 272, 3, 272, 3, 272, + 3, 272, 3, 272, 3, 272, 3, 273, 3, 273, 3, 273, 3, 273, 3, 273, 3, 273, + 3, 273, 3, 273, 3, 273, 3, 273, 3, 273, 3, 273, 3, 273, 3, 274, 3, 274, + 3, 274, 3, 274, 3, 275, 3, 275, 3, 275, 3, 275, 3, 276, 3, 276, 3, 276, + 3, 276, 3, 277, 3, 277, 3, 277, 3, 277, 3, 277, 3, 277, 3, 277, 3, 278, + 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, + 3, 278, 3, 279, 3, 279, 3, 279, 3, 279, 3, 279, 3, 279, 3, 279, 3, 279, + 3, 279, 3, 279, 3, 279, 3, 279, 3, 280, 3, 280, 3, 280, 3, 280, 3, 281, + 3, 281, 3, 281, 3, 281, 3, 281, 3, 281, 3, 281, 3, 281, 3, 282, 3, 282, + 3, 282, 3, 282, 3, 282, 3, 282, 3, 282, 3, 282, 3, 282, 3, 283, 3, 283, + 3, 283, 3, 283, 3, 283, 3, 283, 3, 283, 3, 283, 3, 283, 3, 284, 3, 284, + 3, 284, 3, 284, 3, 284, 3, 284, 3, 284, 3, 284, 3, 284, 3, 284, 3, 284, + 3, 284, 3, 284, 3, 285, 3, 285, 3, 285, 3, 285, 3, 285, 3, 285, 3, 285, + 3, 285, 3, 285, 3, 285, 3, 285, 3, 285, 3, 285, 3, 286, 3, 286, 3, 286, + 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, + 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 286, 3, 287, 3, 287, 3, 287, + 3, 287, 3, 287, 3, 287, 3, 287, 3, 287, 3, 287, 3, 287, 3, 288, 3, 288, + 3, 288, 3, 288, 3, 288, 3, 288, 3, 288, 3, 288, 3, 289, 3, 289, 3, 289, + 3, 289, 3, 289, 3, 289, 3, 289, 3, 289, 3, 290, 3, 290, 3, 290, 3, 290, + 3, 290, 3, 290, 3, 290, 3, 290, 3, 290, 3, 291, 3, 291, 3, 291, 3, 291, + 3, 291, 3, 291, 3, 291, 3, 291, 3, 291, 3, 292, 3, 292, 3, 292, 3, 292, + 3, 292, 3, 292, 3, 292, 3, 292, 3, 293, 3, 293, 3, 293, 3, 293, 3, 293, + 3, 293, 3, 293, 3, 293, 3, 293, 3, 293, 3, 293, 3, 293, 3, 293, 3, 293, + 3, 293, 3, 294, 3, 294, 3, 294, 3, 294, 3, 295, 3, 295, 3, 295, 3, 295, + 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 296, 3, 296, 3, 296, 3, 296, + 3, 296, 3, 296, 3, 296, 3, 297, 3, 297, 3, 297, 3, 297, 3, 297, 3, 297, + 3, 297, 3, 297, 3, 297, 3, 297, 3, 298, 3, 298, 3, 298, 3, 298, 3, 298, + 3, 298, 3, 298, 3, 298, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 300, + 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 301, + 3, 301, 3, 301, 3, 301, 3, 301, 3, 301, 3, 301, 3, 301, 3, 301, 3, 302, + 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, 3, 302, + 3, 302, 3, 302, 3, 302, 3, 302, 3, 303, 3, 303, 3, 303, 3, 303, 3, 303, + 3, 303, 3, 303, 3, 303, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, + 3, 304, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 306, 3, 306, + 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 307, + 3, 307, 3, 307, 3, 307, 3, 307, 3, 307, 3, 307, 3, 307, 3, 307, 3, 307, + 3, 308, 3, 308, 3, 308, 3, 308, 3, 309, 3, 309, 3, 309, 3, 310, 3, 310, + 3, 310, 3, 310, 3, 310, 3, 310, 3, 310, 3, 310, 3, 311, 3, 311, 3, 311, + 3, 311, 3, 311, 3, 311, 3, 311, 3, 311, 3, 311, 3, 311, 3, 311, 3, 312, + 3, 312, 3, 312, 3, 312, 3, 312, 3, 312, 3, 312, 3, 312, 3, 312, 3, 312, + 3, 312, 3, 312, 3, 312, 3, 312, 3, 312, 3, 312, 3, 313, 3, 313, 3, 313, + 3, 313, 3, 313, 3, 313, 3, 313, 3, 313, 3, 313, 3, 313, 3, 313, 3, 313, + 3, 313, 3, 313, 3, 313, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, + 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, 3, 314, + 3, 315, 3, 315, 3, 315, 3, 315, 3, 315, 3, 315, 3, 316, 3, 316, 3, 316, + 3, 316, 3, 316, 3, 316, 3, 316, 3, 317, 3, 317, 3, 317, 3, 317, 3, 318, + 3, 318, 3, 318, 3, 318, 3, 318, 3, 318, 3, 319, 3, 319, 3, 319, 3, 319, + 3, 319, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, 3, 320, + 3, 321, 3, 321, 3, 321, 3, 321, 3, 321, 3, 321, 3, 322, 3, 322, 3, 322, + 3, 322, 3, 322, 3, 322, 3, 323, 3, 323, 3, 323, 3, 323, 3, 323, 3, 323, + 3, 323, 3, 323, 3, 323, 3, 324, 3, 324, 3, 324, 3, 324, 3, 324, 3, 324, + 3, 325, 3, 325, 3, 325, 3, 325, 3, 325, 3, 325, 3, 325, 3, 325, 3, 326, + 3, 326, 3, 326, 3, 326, 3, 326, 3, 326, 3, 326, 3, 326, 3, 327, 3, 327, + 3, 327, 3, 327, 3, 327, 3, 327, 3, 327, 3, 327, 3, 327, 3, 328, 3, 328, + 3, 328, 3, 328, 3, 328, 3, 328, 3, 328, 3, 328, 3, 328, 3, 328, 3, 328, + 3, 328, 3, 328, 3, 328, 3, 329, 3, 329, 3, 329, 3, 329, 3, 329, 3, 329, + 3, 329, 3, 330, 3, 330, 3, 330, 3, 330, 3, 330, 3, 330, 3, 330, 3, 330, + 3, 330, 3, 330, 3, 330, 3, 330, 3, 330, 3, 331, 3, 331, 3, 331, 3, 331, + 3, 331, 3, 331, 3, 331, 3, 332, 3, 332, 3, 332, 3, 332, 3, 332, 3, 332, + 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, 3, 333, + 3, 334, 3, 334, 3, 334, 3, 334, 3, 334, 3, 335, 3, 335, 3, 335, 3, 335, + 3, 335, 3, 335, 3, 335, 3, 335, 3, 336, 3, 336, 3, 336, 3, 336, 3, 336, + 3, 336, 3, 336, 3, 336, 3, 336, 3, 336, 3, 336, 3, 336, 3, 336, 3, 336, + 3, 337, 3, 337, 3, 337, 3, 337, 3, 337, 3, 337, 3, 337, 3, 337, 3, 337, + 3, 337, 3, 337, 3, 337, 3, 338, 3, 338, 3, 338, 3, 338, 3, 338, 3, 338, + 3, 338, 3, 338, 3, 339, 3, 339, 3, 339, 3, 339, 3, 339, 3, 339, 3, 339, + 3, 340, 3, 340, 3, 340, 3, 340, 3, 340, 3, 340, 3, 340, 3, 340, 3, 341, + 3, 341, 3, 341, 3, 341, 3, 341, 3, 341, 3, 341, 3, 341, 3, 341, 3, 341, + 3, 341, 3, 342, 3, 342, 3, 342, 3, 342, 3, 342, 3, 342, 3, 342, 3, 342, + 3, 342, 3, 342, 3, 342, 3, 343, 3, 343, 3, 343, 3, 343, 3, 343, 3, 343, + 3, 343, 3, 343, 3, 343, 3, 343, 3, 343, 3, 343, 3, 344, 3, 344, 3, 344, + 3, 344, 3, 344, 3, 344, 3, 344, 3, 344, 3, 344, 3, 344, 3, 344, 3, 345, + 3, 345, 3, 345, 3, 345, 3, 345, 3, 345, 3, 345, 3, 345, 3, 345, 3, 345, + 3, 345, 3, 346, 3, 346, 3, 346, 3, 346, 3, 346, 3, 346, 3, 346, 3, 346, + 3, 346, 3, 346, 3, 346, 3, 347, 3, 347, 3, 347, 3, 347, 3, 347, 3, 347, + 3, 347, 3, 347, 3, 347, 3, 347, 3, 347, 3, 347, 3, 347, 3, 347, 3, 347, + 3, 347, 3, 347, 3, 347, 3, 347, 3, 348, 3, 348, 3, 348, 3, 348, 3, 348, + 3, 348, 3, 348, 3, 348, 3, 348, 3, 348, 3, 348, 3, 348, 3, 348, 3, 348, + 3, 348, 3, 348, 3, 348, 3, 348, 3, 349, 3, 349, 3, 349, 3, 349, 3, 349, + 3, 349, 3, 349, 3, 349, 3, 349, 3, 349, 3, 349, 3, 349, 3, 349, 3, 349, + 3, 349, 3, 349, 3, 350, 3, 350, 3, 350, 3, 350, 3, 350, 3, 350, 3, 350, + 3, 350, 3, 350, 3, 351, 3, 351, 3, 351, 3, 351, 3, 351, 3, 351, 3, 351, + 3, 351, 3, 352, 3, 352, 3, 352, 3, 352, 3, 352, 3, 352, 3, 352, 3, 352, + 3, 352, 3, 352, 3, 352, 3, 352, 3, 352, 3, 353, 3, 353, 3, 353, 3, 353, + 3, 353, 3, 354, 3, 354, 3, 354, 3, 354, 3, 355, 3, 355, 3, 355, 3, 355, + 3, 355, 3, 355, 3, 355, 3, 355, 3, 355, 3, 355, 3, 355, 3, 355, 3, 356, + 3, 356, 3, 356, 3, 356, 3, 356, 3, 357, 3, 357, 3, 357, 3, 357, 3, 357, + 3, 357, 3, 357, 3, 357, 3, 357, 3, 358, 3, 358, 3, 358, 3, 358, 3, 358, + 3, 358, 3, 358, 3, 358, 3, 358, 3, 358, 3, 358, 3, 359, 3, 359, 3, 359, + 3, 359, 3, 359, 3, 359, 3, 359, 3, 359, 3, 359, 3, 359, 3, 359, 3, 359, + 3, 359, 3, 360, 3, 360, 3, 360, 3, 360, 3, 360, 3, 360, 3, 360, 3, 360, + 3, 361, 3, 361, 3, 361, 3, 361, 3, 361, 3, 361, 3, 361, 3, 361, 3, 361, + 3, 361, 3, 361, 3, 361, 3, 361, 3, 361, 3, 361, 3, 361, 3, 362, 3, 362, + 3, 362, 3, 362, 3, 362, 3, 362, 3, 362, 3, 362, 3, 362, 3, 362, 3, 362, + 3, 362, 3, 362, 3, 363, 3, 363, 3, 363, 3, 363, 3, 363, 3, 363, 3, 363, + 3, 363, 3, 363, 3, 363, 3, 364, 3, 364, 3, 364, 3, 364, 3, 364, 3, 364, + 3, 364, 3, 364, 3, 365, 3, 365, 3, 365, 3, 365, 3, 365, 3, 365, 3, 365, + 3, 365, 3, 366, 3, 366, 3, 366, 3, 366, 3, 366, 3, 367, 3, 367, 3, 367, + 3, 368, 3, 368, 3, 368, 3, 368, 3, 368, 3, 368, 3, 368, 3, 368, 3, 368, + 3, 369, 3, 369, 3, 369, 3, 369, 3, 369, 3, 369, 3, 369, 3, 369, 3, 369, + 3, 369, 3, 370, 3, 370, 3, 370, 3, 370, 3, 370, 3, 370, 3, 370, 3, 370, + 3, 371, 3, 371, 3, 371, 3, 371, 3, 371, 3, 371, 3, 371, 3, 372, 3, 372, + 3, 372, 3, 372, 3, 372, 3, 372, 3, 372, 3, 372, 3, 372, 3, 372, 3, 372, + 3, 373, 3, 373, 3, 373, 3, 373, 3, 374, 3, 374, 3, 374, 3, 374, 3, 374, + 3, 375, 3, 375, 3, 375, 3, 375, 3, 375, 3, 375, 3, 375, 3, 376, 3, 376, + 3, 376, 3, 376, 3, 376, 3, 376, 3, 376, 3, 376, 3, 377, 3, 377, 3, 377, + 3, 377, 3, 377, 3, 377, 3, 378, 3, 378, 3, 378, 3, 378, 3, 378, 3, 378, + 3, 378, 3, 379, 3, 379, 3, 379, 3, 379, 3, 379, 3, 379, 3, 379, 3, 380, + 3, 380, 3, 380, 3, 380, 3, 380, 3, 381, 3, 381, 3, 381, 3, 381, 3, 381, + 3, 381, 3, 382, 3, 382, 3, 382, 3, 382, 3, 382, 3, 382, 3, 382, 3, 383, + 3, 383, 3, 383, 3, 383, 3, 383, 3, 383, 3, 384, 3, 384, 3, 384, 3, 384, + 3, 384, 3, 384, 3, 384, 3, 384, 3, 384, 3, 385, 3, 385, 3, 385, 3, 385, + 3, 385, 3, 385, 3, 385, 3, 385, 3, 385, 3, 385, 3, 386, 3, 386, 3, 386, + 3, 386, 3, 386, 3, 386, 3, 386, 3, 387, 3, 387, 3, 387, 3, 387, 3, 387, + 3, 387, 3, 387, 3, 388, 3, 388, 3, 388, 3, 388, 3, 388, 3, 388, 3, 388, + 3, 388, 3, 388, 3, 389, 3, 389, 3, 389, 3, 389, 3, 389, 3, 389, 3, 389, + 3, 389, 3, 389, 3, 389, 3, 389, 3, 389, 3, 390, 3, 390, 3, 390, 3, 390, + 3, 390, 3, 391, 3, 391, 3, 391, 3, 391, 3, 391, 3, 391, 3, 391, 3, 392, + 3, 392, 3, 392, 3, 392, 3, 392, 3, 392, 3, 392, 3, 393, 3, 393, 3, 393, + 3, 393, 3, 393, 3, 393, 3, 393, 3, 393, 3, 393, 3, 393, 3, 393, 3, 393, + 3, 393, 3, 393, 3, 393, 3, 393, 3, 394, 3, 394, 3, 394, 3, 394, 3, 394, + 3, 394, 3, 394, 3, 395, 3, 395, 3, 395, 3, 395, 3, 395, 3, 395, 3, 396, + 3, 396, 3, 396, 3, 396, 3, 396, 3, 396, 3, 397, 3, 397, 3, 397, 3, 397, + 3, 397, 3, 397, 3, 398, 3, 398, 3, 398, 3, 398, 3, 398, 3, 398, 3, 398, + 3, 398, 3, 399, 3, 399, 3, 399, 3, 399, 3, 399, 3, 399, 3, 400, 3, 400, + 3, 400, 3, 400, 3, 400, 3, 401, 3, 401, 3, 401, 3, 401, 3, 401, 3, 401, + 3, 401, 3, 401, 3, 401, 3, 402, 3, 402, 3, 402, 3, 402, 3, 402, 3, 402, + 3, 402, 3, 402, 3, 403, 3, 403, 3, 403, 3, 403, 3, 403, 3, 403, 3, 403, + 3, 404, 3, 404, 3, 404, 3, 404, 3, 404, 3, 404, 3, 404, 3, 405, 3, 405, + 3, 405, 3, 405, 3, 405, 3, 405, 3, 405, 3, 405, 3, 405, 3, 405, 3, 405, + 3, 405, 3, 405, 3, 405, 3, 405, 3, 405, 3, 405, 3, 405, 3, 406, 3, 406, + 3, 406, 3, 406, 3, 406, 3, 406, 3, 406, 3, 406, 3, 407, 3, 407, 3, 407, + 3, 407, 3, 407, 3, 408, 3, 408, 3, 408, 3, 408, 3, 408, 3, 409, 3, 409, + 3, 409, 3, 409, 3, 409, 3, 410, 3, 410, 3, 410, 3, 410, 3, 410, 3, 410, + 3, 411, 3, 411, 3, 411, 3, 411, 3, 411, 3, 411, 3, 411, 3, 411, 3, 411, + 3, 411, 3, 411, 3, 412, 3, 412, 3, 412, 3, 412, 3, 412, 3, 412, 3, 412, + 3, 412, 3, 412, 3, 412, 3, 412, 3, 412, 3, 412, 3, 412, 3, 412, 3, 412, + 3, 412, 3, 412, 3, 413, 3, 413, 3, 413, 3, 413, 3, 413, 3, 413, 3, 413, + 3, 414, 3, 414, 3, 414, 3, 414, 3, 414, 3, 414, 3, 414, 3, 414, 3, 415, + 3, 415, 3, 415, 3, 415, 3, 415, 3, 415, 3, 415, 3, 415, 3, 415, 3, 415, + 3, 415, 3, 415, 3, 415, 3, 416, 3, 416, 3, 416, 3, 416, 3, 416, 3, 416, + 3, 416, 3, 416, 3, 417, 3, 417, 3, 417, 3, 417, 3, 417, 3, 417, 3, 417, + 3, 417, 3, 417, 3, 417, 3, 417, 3, 417, 3, 417, 3, 417, 3, 418, 3, 418, + 3, 418, 3, 418, 3, 418, 3, 418, 3, 418, 3, 418, 3, 419, 3, 419, 3, 419, + 3, 419, 3, 419, 3, 419, 3, 419, 3, 419, 3, 419, 3, 420, 3, 420, 3, 420, + 3, 420, 3, 420, 3, 420, 3, 420, 3, 420, 3, 420, 3, 420, 3, 421, 3, 421, + 3, 421, 3, 421, 3, 421, 3, 421, 3, 421, 3, 421, 3, 422, 3, 422, 3, 422, + 3, 423, 3, 423, 3, 423, 3, 423, 3, 423, 3, 423, 3, 423, 3, 423, 3, 423, + 3, 423, 3, 424, 3, 424, 3, 424, 3, 424, 3, 425, 3, 425, 3, 425, 3, 425, + 3, 425, 3, 425, 3, 425, 3, 425, 3, 425, 3, 425, 3, 426, 3, 426, 3, 426, + 3, 426, 3, 426, 3, 426, 3, 426, 3, 427, 3, 427, 3, 427, 3, 427, 3, 427, + 3, 428, 3, 428, 3, 428, 3, 428, 3, 428, 3, 428, 3, 428, 3, 428, 3, 428, + 3, 428, 3, 428, 3, 428, 3, 428, 3, 428, 3, 428, 3, 429, 3, 429, 3, 429, + 3, 429, 3, 429, 3, 429, 3, 429, 3, 429, 3, 429, 3, 430, 3, 430, 3, 430, + 3, 430, 3, 430, 3, 431, 3, 431, 3, 431, 3, 431, 3, 431, 3, 431, 3, 431, + 3, 432, 3, 432, 3, 432, 3, 432, 3, 432, 3, 433, 3, 433, 3, 433, 3, 433, + 3, 433, 3, 433, 3, 434, 3, 434, 3, 434, 3, 434, 3, 434, 3, 435, 3, 435, + 3, 435, 3, 435, 3, 435, 3, 435, 3, 436, 3, 436, 3, 436, 3, 436, 3, 436, + 3, 436, 3, 436, 3, 436, 3, 437, 3, 437, 3, 437, 3, 437, 3, 437, 3, 438, + 3, 438, 3, 438, 3, 438, 3, 438, 3, 438, 3, 438, 3, 439, 3, 439, 3, 439, + 3, 439, 3, 439, 3, 439, 3, 439, 3, 439, 3, 439, 3, 439, 3, 439, 3, 439, + 3, 439, 3, 439, 3, 439, 3, 439, 3, 439, 3, 439, 3, 439, 3, 439, 3, 439, + 3, 440, 3, 440, 3, 440, 3, 440, 3, 440, 3, 440, 3, 440, 3, 440, 3, 440, + 3, 440, 3, 440, 3, 440, 3, 440, 3, 440, 3, 440, 3, 440, 3, 440, 3, 440, + 3, 440, 3, 440, 3, 440, 3, 441, 3, 441, 3, 441, 3, 441, 3, 441, 3, 441, + 3, 441, 3, 441, 3, 441, 3, 441, 3, 441, 3, 441, 3, 441, 3, 442, 3, 442, + 3, 442, 3, 442, 3, 442, 3, 442, 3, 442, 3, 442, 3, 442, 3, 442, 3, 442, + 3, 442, 3, 442, 3, 442, 3, 442, 3, 442, 3, 442, 3, 442, 3, 442, 3, 442, + 3, 442, 3, 442, 3, 442, 3, 442, 3, 443, 3, 443, 3, 443, 3, 443, 3, 443, + 3, 443, 3, 443, 3, 443, 3, 443, 3, 443, 3, 443, 3, 443, 3, 444, 3, 444, + 3, 444, 3, 444, 3, 444, 3, 444, 3, 444, 3, 444, 3, 444, 3, 444, 3, 444, + 3, 444, 3, 444, 3, 444, 3, 444, 3, 444, 3, 445, 3, 445, 3, 445, 3, 445, + 3, 445, 3, 445, 3, 445, 3, 445, 3, 445, 3, 445, 3, 445, 3, 445, 3, 445, + 3, 445, 3, 445, 3, 446, 3, 446, 3, 446, 3, 446, 3, 446, 3, 446, 3, 446, + 3, 446, 3, 446, 3, 446, 3, 446, 3, 446, 3, 446, 3, 446, 3, 446, 3, 446, + 3, 447, 3, 447, 3, 447, 3, 447, 3, 447, 3, 447, 3, 447, 3, 447, 3, 447, + 3, 447, 3, 447, 3, 447, 3, 448, 3, 448, 3, 448, 3, 448, 3, 448, 3, 448, + 3, 448, 3, 448, 3, 448, 3, 448, 3, 448, 3, 448, 3, 448, 3, 448, 3, 448, + 3, 448, 3, 448, 3, 448, 3, 448, 3, 449, 3, 449, 3, 449, 3, 449, 3, 449, + 3, 449, 3, 449, 3, 449, 3, 449, 3, 449, 3, 449, 3, 450, 3, 450, 3, 450, + 3, 450, 3, 450, 3, 450, 3, 450, 3, 450, 3, 450, 3, 450, 3, 450, 3, 450, + 3, 450, 3, 450, 3, 451, 3, 451, 3, 451, 3, 451, 3, 451, 3, 451, 3, 451, + 3, 451, 3, 451, 3, 451, 3, 451, 3, 451, 3, 451, 3, 451, 3, 451, 3, 451, + 3, 451, 3, 451, 3, 452, 3, 452, 3, 452, 3, 452, 3, 452, 3, 452, 3, 452, + 3, 452, 3, 452, 3, 452, 3, 452, 3, 452, 3, 452, 3, 452, 3, 452, 3, 452, + 3, 453, 3, 453, 3, 453, 3, 453, 3, 453, 3, 453, 3, 453, 3, 453, 3, 453, + 3, 453, 3, 453, 3, 453, 3, 453, 3, 453, 3, 453, 3, 453, 3, 453, 3, 453, + 3, 454, 3, 454, 3, 454, 3, 454, 3, 454, 3, 454, 3, 454, 3, 454, 3, 454, + 3, 454, 3, 454, 3, 454, 3, 454, 3, 454, 3, 454, 3, 455, 3, 455, 3, 455, + 3, 455, 3, 455, 3, 455, 3, 455, 3, 455, 3, 455, 3, 455, 3, 455, 3, 455, + 3, 455, 3, 455, 3, 455, 3, 455, 3, 455, 3, 455, 3, 455, 3, 456, 3, 456, + 3, 456, 3, 456, 3, 456, 3, 456, 3, 456, 3, 456, 3, 456, 3, 456, 3, 456, + 3, 456, 3, 456, 3, 456, 3, 456, 3, 457, 3, 457, 3, 457, 3, 457, 3, 457, + 3, 457, 3, 457, 3, 457, 3, 457, 3, 457, 3, 457, 3, 457, 3, 457, 3, 457, + 3, 457, 3, 457, 3, 457, 3, 457, 3, 457, 3, 458, 3, 458, 3, 458, 3, 458, + 3, 458, 3, 458, 3, 458, 3, 458, 3, 458, 3, 458, 3, 458, 3, 458, 3, 459, + 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, + 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, + 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, 3, 459, 3, 460, 3, 460, 3, 460, + 3, 460, 3, 460, 3, 460, 3, 460, 3, 460, 3, 460, 3, 460, 3, 460, 3, 460, + 3, 460, 3, 460, 3, 460, 3, 460, 3, 460, 3, 460, 3, 460, 3, 460, 3, 460, + 3, 461, 3, 461, 3, 461, 3, 461, 3, 461, 3, 461, 3, 461, 3, 461, 3, 461, + 3, 462, 3, 462, 3, 462, 3, 462, 3, 462, 3, 462, 3, 462, 3, 462, 3, 462, + 3, 463, 3, 463, 3, 463, 3, 463, 3, 463, 3, 463, 3, 463, 3, 463, 3, 463, + 3, 463, 3, 463, 3, 463, 3, 463, 3, 463, 3, 463, 3, 463, 3, 463, 3, 463, + 3, 463, 3, 463, 3, 463, 3, 464, 3, 464, 3, 464, 3, 464, 3, 464, 3, 464, + 3, 464, 3, 464, 3, 464, 3, 464, 3, 464, 3, 464, 3, 464, 3, 464, 3, 464, + 3, 464, 3, 464, 3, 464, 3, 464, 3, 464, 3, 464, 3, 465, 3, 465, 3, 465, + 3, 465, 3, 465, 3, 465, 3, 465, 3, 466, 3, 466, 3, 466, 3, 466, 3, 466, + 3, 466, 3, 466, 3, 467, 3, 467, 3, 467, 3, 467, 3, 467, 3, 467, 3, 468, + 3, 468, 3, 468, 3, 468, 3, 468, 3, 468, 3, 468, 3, 468, 3, 468, 3, 468, + 3, 468, 3, 468, 3, 468, 3, 469, 3, 469, 3, 469, 3, 469, 3, 470, 3, 470, + 3, 470, 3, 470, 3, 470, 3, 470, 3, 470, 3, 470, 3, 471, 3, 471, 3, 471, + 3, 471, 3, 471, 3, 471, 3, 471, 3, 471, 3, 471, 3, 472, 3, 472, 3, 472, + 3, 472, 3, 472, 3, 473, 3, 473, 3, 473, 3, 473, 3, 473, 3, 473, 3, 473, + 3, 474, 3, 474, 3, 474, 3, 474, 3, 474, 3, 474, 3, 475, 3, 475, 3, 475, + 3, 475, 3, 475, 3, 475, 3, 476, 3, 476, 3, 476, 3, 476, 3, 476, 3, 476, + 3, 476, 3, 476, 3, 476, 3, 476, 3, 476, 3, 476, 3, 477, 3, 477, 3, 477, + 3, 477, 3, 477, 3, 478, 3, 478, 3, 478, 3, 478, 3, 478, 3, 478, 3, 479, + 3, 479, 3, 479, 3, 479, 3, 479, 3, 479, 3, 480, 3, 480, 3, 480, 3, 480, + 3, 480, 3, 480, 3, 481, 3, 481, 3, 481, 3, 481, 3, 481, 3, 482, 3, 482, + 3, 482, 3, 483, 3, 483, 3, 483, 3, 483, 3, 483, 3, 483, 3, 483, 3, 483, + 3, 483, 3, 483, 3, 484, 3, 484, 3, 484, 3, 484, 3, 484, 3, 485, 3, 485, + 3, 485, 3, 485, 3, 485, 3, 485, 3, 485, 3, 485, 3, 486, 3, 486, 3, 486, + 3, 486, 3, 486, 3, 486, 3, 486, 3, 487, 3, 487, 3, 487, 3, 488, 3, 488, + 3, 488, 3, 489, 3, 489, 3, 489, 3, 489, 3, 489, 3, 489, 3, 489, 3, 489, + 3, 489, 3, 489, 3, 489, 3, 489, 3, 489, 3, 490, 3, 490, 3, 490, 3, 490, + 3, 491, 3, 491, 3, 491, 3, 491, 3, 491, 3, 491, 3, 491, 3, 492, 3, 492, + 3, 492, 3, 492, 3, 492, 3, 493, 3, 493, 3, 493, 3, 493, 3, 493, 3, 494, + 3, 494, 3, 494, 3, 494, 3, 494, 3, 494, 3, 494, 3, 494, 3, 494, 3, 494, + 3, 494, 3, 494, 3, 494, 3, 494, 3, 494, 3, 494, 3, 495, 3, 495, 3, 495, + 3, 495, 3, 495, 3, 495, 3, 495, 3, 495, 3, 496, 3, 496, 3, 496, 3, 496, + 3, 496, 3, 496, 3, 497, 3, 497, 3, 497, 3, 497, 3, 497, 3, 497, 3, 497, + 3, 497, 3, 497, 3, 497, 3, 498, 3, 498, 3, 498, 3, 498, 3, 498, 3, 499, + 3, 499, 3, 499, 3, 499, 3, 499, 3, 499, 3, 499, 3, 500, 3, 500, 3, 500, + 3, 500, 3, 500, 3, 500, 3, 500, 3, 500, 3, 501, 3, 501, 3, 501, 3, 501, + 3, 501, 3, 501, 3, 501, 3, 501, 3, 501, 3, 501, 3, 501, 3, 501, 3, 501, + 3, 502, 3, 502, 3, 502, 3, 502, 3, 502, 3, 502, 3, 502, 3, 502, 3, 502, + 3, 502, 3, 502, 3, 503, 3, 503, 3, 503, 3, 503, 3, 503, 3, 503, 3, 503, + 3, 503, 3, 503, 3, 504, 3, 504, 3, 504, 3, 504, 3, 504, 3, 504, 3, 505, + 3, 505, 3, 505, 3, 505, 3, 505, 3, 505, 3, 505, 3, 506, 3, 506, 3, 506, + 3, 506, 3, 506, 3, 506, 3, 506, 3, 506, 3, 506, 3, 506, 3, 506, 3, 507, + 3, 507, 3, 507, 3, 507, 3, 507, 3, 507, 3, 507, 3, 507, 3, 508, 3, 508, + 3, 508, 3, 508, 3, 508, 3, 509, 3, 509, 3, 509, 3, 509, 3, 509, 3, 509, + 3, 509, 3, 509, 3, 509, 3, 510, 3, 510, 3, 510, 3, 510, 3, 510, 3, 510, + 3, 510, 3, 510, 3, 511, 3, 511, 3, 511, 3, 511, 3, 511, 3, 511, 3, 511, + 3, 511, 3, 511, 3, 512, 3, 512, 3, 512, 3, 512, 3, 512, 3, 513, 3, 513, + 3, 513, 3, 513, 3, 513, 3, 513, 3, 513, 3, 513, 3, 513, 3, 513, 3, 513, + 3, 513, 3, 514, 3, 514, 3, 514, 3, 514, 3, 514, 3, 514, 3, 514, 3, 514, + 3, 515, 3, 515, 3, 515, 3, 515, 3, 515, 3, 515, 3, 515, 3, 515, 3, 515, + 3, 516, 3, 516, 3, 516, 3, 516, 3, 516, 3, 516, 3, 517, 3, 517, 3, 517, + 3, 517, 3, 517, 3, 517, 3, 518, 3, 518, 3, 518, 3, 518, 3, 518, 3, 518, + 3, 519, 3, 519, 3, 519, 3, 519, 3, 519, 3, 519, 3, 519, 3, 519, 3, 520, + 3, 520, 3, 520, 3, 520, 3, 520, 3, 520, 3, 520, 3, 520, 3, 521, 3, 521, + 3, 521, 3, 521, 3, 521, 3, 521, 3, 521, 3, 521, 3, 521, 3, 521, 3, 521, + 3, 521, 3, 521, 3, 521, 3, 521, 3, 521, 3, 521, 3, 522, 3, 522, 3, 522, + 3, 522, 3, 522, 3, 522, 3, 522, 3, 522, 3, 522, 3, 522, 3, 523, 3, 523, + 3, 523, 3, 523, 3, 523, 3, 523, 3, 524, 3, 524, 3, 524, 3, 524, 3, 524, + 3, 524, 3, 524, 3, 524, 3, 524, 3, 524, 3, 524, 3, 524, 3, 524, 3, 524, + 3, 524, 3, 525, 3, 525, 3, 525, 3, 525, 3, 525, 3, 525, 3, 525, 3, 525, + 3, 525, 3, 525, 3, 525, 3, 525, 3, 525, 3, 525, 3, 526, 3, 526, 3, 526, + 3, 526, 3, 526, 3, 526, 3, 526, 3, 526, 3, 526, 3, 527, 3, 527, 3, 527, + 3, 527, 3, 527, 3, 527, 3, 527, 3, 528, 3, 528, 3, 528, 3, 528, 3, 528, + 3, 528, 3, 528, 3, 528, 3, 528, 3, 528, 3, 528, 3, 529, 3, 529, 3, 529, + 3, 529, 3, 529, 3, 529, 3, 529, 3, 530, 3, 530, 3, 530, 3, 530, 3, 530, + 3, 530, 3, 530, 3, 530, 3, 530, 3, 530, 3, 530, 3, 530, 3, 530, 3, 530, + 3, 530, 3, 530, 3, 531, 3, 531, 3, 531, 3, 531, 3, 531, 3, 531, 3, 531, + 3, 531, 3, 531, 3, 531, 3, 531, 3, 531, 3, 531, 3, 531, 3, 531, 3, 531, + 3, 531, 3, 531, 3, 531, 3, 532, 3, 532, 3, 532, 3, 532, 3, 532, 3, 532, + 3, 532, 3, 532, 3, 532, 3, 532, 3, 532, 3, 532, 3, 532, 3, 532, 3, 532, + 3, 532, 3, 532, 3, 532, 3, 532, 3, 532, 3, 533, 3, 533, 3, 533, 3, 533, + 3, 533, 3, 533, 3, 533, 3, 533, 3, 533, 3, 533, 3, 533, 3, 533, 3, 533, + 3, 533, 3, 533, 3, 533, 3, 533, 3, 533, 3, 533, 3, 533, 3, 533, 3, 533, + 3, 533, 3, 534, 3, 534, 3, 534, 3, 534, 3, 534, 3, 534, 3, 534, 3, 534, + 3, 534, 3, 534, 3, 534, 3, 534, 3, 534, 3, 534, 3, 534, 3, 534, 3, 534, + 3, 534, 3, 534, 3, 534, 3, 534, 3, 535, 3, 535, 3, 535, 3, 535, 3, 535, + 3, 535, 3, 535, 3, 535, 3, 535, 3, 535, 3, 535, 3, 535, 3, 535, 3, 535, + 3, 535, 3, 535, 3, 535, 3, 535, 3, 535, 3, 535, 3, 535, 3, 535, 3, 535, + 3, 535, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, + 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, + 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, 3, 536, + 3, 536, 3, 536, 3, 537, 3, 537, 3, 537, 3, 537, 3, 537, 3, 537, 3, 537, + 3, 537, 3, 537, 3, 537, 3, 537, 3, 537, 3, 538, 3, 538, 3, 538, 3, 538, + 3, 538, 3, 538, 3, 539, 3, 539, 3, 539, 3, 539, 3, 539, 3, 539, 3, 539, + 3, 540, 3, 540, 3, 540, 3, 540, 3, 540, 3, 540, 3, 540, 3, 540, 3, 540, + 3, 540, 3, 540, 3, 540, 3, 540, 3, 540, 3, 540, 3, 540, 3, 540, 3, 540, + 3, 541, 3, 541, 3, 541, 3, 541, 3, 541, 3, 541, 3, 541, 3, 541, 3, 541, + 3, 541, 3, 542, 3, 542, 3, 542, 3, 542, 3, 542, 3, 542, 3, 542, 3, 542, + 3, 543, 3, 543, 3, 543, 3, 543, 3, 543, 3, 544, 3, 544, 3, 544, 3, 544, + 3, 544, 3, 544, 3, 544, 3, 544, 3, 544, 3, 545, 3, 545, 3, 545, 3, 545, + 3, 545, 3, 545, 3, 545, 3, 546, 3, 546, 3, 546, 3, 546, 3, 546, 3, 546, + 3, 546, 3, 547, 3, 547, 3, 547, 3, 547, 3, 548, 3, 548, 3, 548, 3, 548, + 3, 548, 3, 549, 3, 549, 3, 549, 3, 549, 3, 549, 3, 549, 3, 549, 3, 549, + 3, 549, 3, 549, 3, 549, 3, 550, 3, 550, 3, 550, 3, 550, 3, 550, 3, 550, + 3, 550, 3, 550, 3, 550, 3, 550, 3, 551, 3, 551, 3, 551, 3, 551, 3, 551, + 3, 551, 3, 551, 3, 551, 3, 551, 3, 552, 3, 552, 3, 552, 3, 552, 3, 552, + 3, 552, 3, 552, 3, 552, 3, 552, 3, 553, 3, 553, 3, 553, 3, 553, 3, 553, + 3, 553, 3, 553, 3, 554, 3, 554, 3, 554, 3, 554, 3, 554, 3, 554, 3, 554, + 3, 554, 3, 555, 3, 555, 3, 555, 3, 555, 3, 555, 3, 555, 3, 556, 3, 556, + 3, 556, 3, 556, 3, 556, 3, 556, 3, 556, 3, 557, 3, 557, 3, 557, 3, 557, + 3, 557, 3, 557, 3, 557, 3, 558, 3, 558, 3, 558, 3, 558, 3, 558, 3, 558, + 3, 558, 3, 559, 3, 559, 3, 559, 3, 559, 3, 559, 3, 559, 3, 560, 3, 560, + 3, 560, 3, 560, 3, 560, 3, 561, 3, 561, 3, 561, 3, 561, 3, 561, 3, 561, + 3, 561, 3, 561, 3, 561, 3, 562, 3, 562, 3, 562, 3, 562, 3, 562, 3, 562, + 3, 562, 3, 563, 3, 563, 3, 563, 3, 563, 3, 563, 3, 564, 3, 564, 3, 564, + 3, 564, 3, 564, 3, 564, 3, 564, 3, 565, 3, 565, 3, 565, 3, 565, 3, 565, + 3, 565, 3, 565, 3, 566, 3, 566, 3, 566, 3, 566, 3, 566, 3, 566, 3, 566, + 3, 567, 3, 567, 3, 567, 3, 567, 3, 567, 3, 567, 3, 567, 3, 567, 3, 567, + 3, 567, 3, 567, 3, 567, 3, 567, 3, 567, 3, 567, 3, 567, 3, 568, 3, 568, + 3, 568, 3, 568, 3, 568, 3, 568, 3, 568, 3, 568, 3, 568, 3, 568, 3, 568, + 3, 568, 3, 568, 3, 568, 3, 568, 3, 568, 3, 568, 3, 568, 3, 568, 3, 569, + 3, 569, 3, 569, 3, 569, 3, 569, 3, 569, 3, 569, 3, 569, 3, 569, 3, 569, + 3, 569, 3, 569, 3, 569, 3, 569, 3, 569, 3, 569, 3, 569, 3, 570, 3, 570, + 3, 570, 3, 570, 3, 570, 3, 570, 3, 570, 3, 570, 3, 570, 3, 570, 3, 570, + 3, 570, 3, 570, 3, 570, 3, 570, 3, 570, 3, 570, 3, 570, 3, 571, 3, 571, + 3, 571, 3, 571, 3, 571, 3, 571, 3, 571, 3, 571, 3, 571, 3, 571, 3, 572, + 3, 572, 3, 572, 3, 572, 3, 572, 3, 572, 3, 572, 3, 572, 3, 572, 3, 572, + 3, 572, 3, 572, 3, 572, 3, 573, 3, 573, 3, 573, 3, 573, 3, 573, 3, 573, + 3, 573, 3, 573, 3, 573, 3, 573, 3, 573, 3, 574, 3, 574, 3, 574, 3, 574, + 3, 574, 3, 574, 3, 575, 3, 575, 3, 575, 3, 575, 3, 575, 3, 575, 3, 575, + 3, 576, 3, 576, 3, 576, 3, 576, 3, 576, 3, 576, 3, 576, 3, 576, 3, 576, + 3, 576, 3, 576, 3, 576, 3, 576, 3, 576, 3, 576, 3, 576, 3, 576, 3, 576, + 3, 577, 3, 577, 3, 577, 3, 577, 3, 577, 3, 577, 3, 577, 3, 577, 3, 577, + 3, 577, 3, 577, 3, 577, 3, 577, 3, 577, 3, 577, 3, 577, 3, 577, 3, 578, + 3, 578, 3, 578, 3, 578, 3, 578, 3, 578, 3, 578, 3, 578, 3, 578, 3, 578, + 3, 578, 3, 578, 3, 578, 3, 578, 3, 578, 3, 578, 3, 578, 3, 578, 3, 578, + 3, 579, 3, 579, 3, 579, 3, 579, 3, 579, 3, 579, 3, 579, 3, 580, 3, 580, + 3, 580, 3, 580, 3, 580, 3, 581, 3, 581, 3, 581, 3, 581, 3, 581, 3, 581, + 3, 581, 3, 581, 3, 582, 3, 582, 3, 582, 3, 582, 3, 582, 3, 582, 3, 582, + 3, 583, 3, 583, 3, 583, 3, 583, 3, 583, 3, 583, 3, 583, 3, 584, 3, 584, + 3, 584, 3, 584, 3, 584, 3, 584, 3, 584, 3, 584, 3, 584, 3, 584, 3, 584, + 3, 584, 3, 584, 3, 584, 3, 584, 3, 584, 3, 585, 3, 585, 3, 585, 3, 585, + 3, 585, 3, 585, 3, 585, 3, 585, 3, 586, 3, 586, 3, 586, 3, 586, 3, 586, + 3, 586, 3, 586, 3, 586, 3, 586, 3, 586, 3, 586, 3, 586, 3, 586, 3, 587, + 3, 587, 3, 587, 3, 587, 3, 587, 3, 587, 3, 587, 3, 587, 3, 587, 3, 587, + 3, 587, 3, 587, 3, 587, 3, 587, 3, 588, 3, 588, 3, 588, 3, 588, 3, 588, + 3, 588, 3, 588, 3, 588, 3, 589, 3, 589, 3, 589, 3, 589, 3, 589, 3, 589, + 3, 590, 3, 590, 3, 590, 3, 590, 3, 590, 3, 590, 3, 590, 3, 590, 3, 590, + 3, 591, 3, 591, 3, 591, 3, 591, 3, 591, 3, 591, 3, 591, 3, 591, 3, 591, + 3, 591, 3, 591, 3, 592, 3, 592, 3, 592, 3, 592, 3, 592, 3, 592, 3, 592, + 3, 592, 3, 592, 3, 592, 3, 592, 3, 593, 3, 593, 3, 593, 3, 593, 3, 593, + 3, 593, 3, 593, 3, 593, 3, 593, 3, 593, 3, 594, 3, 594, 3, 594, 3, 594, + 3, 594, 3, 594, 3, 594, 3, 594, 3, 594, 3, 594, 3, 595, 3, 595, 3, 595, + 3, 595, 3, 595, 3, 596, 3, 596, 3, 596, 3, 596, 3, 596, 3, 596, 3, 596, + 3, 596, 3, 596, 3, 596, 3, 596, 3, 596, 3, 597, 3, 597, 3, 597, 3, 597, + 3, 597, 3, 597, 3, 597, 3, 597, 3, 597, 3, 597, 3, 597, 3, 597, 3, 598, + 3, 598, 3, 598, 3, 598, 3, 598, 3, 598, 3, 598, 3, 598, 3, 598, 3, 598, + 3, 598, 3, 598, 3, 598, 3, 598, 3, 599, 3, 599, 3, 599, 3, 599, 3, 599, + 3, 599, 3, 599, 3, 599, 3, 599, 3, 600, 3, 600, 3, 600, 3, 600, 3, 600, + 3, 600, 3, 600, 3, 600, 3, 600, 3, 601, 3, 601, 3, 601, 3, 601, 3, 601, + 3, 601, 3, 601, 3, 601, 3, 601, 3, 601, 3, 602, 3, 602, 3, 602, 3, 602, + 3, 602, 3, 602, 3, 602, 3, 602, 3, 602, 3, 603, 3, 603, 3, 603, 3, 603, + 3, 603, 3, 603, 3, 603, 3, 603, 3, 603, 3, 603, 3, 603, 3, 603, 3, 603, + 3, 603, 3, 603, 3, 603, 3, 603, 3, 604, 3, 604, 3, 604, 3, 604, 3, 604, + 3, 604, 3, 604, 3, 604, 3, 604, 3, 604, 3, 605, 3, 605, 3, 605, 3, 605, + 3, 605, 3, 605, 3, 605, 3, 605, 3, 606, 3, 606, 3, 606, 3, 606, 3, 606, + 3, 606, 3, 607, 3, 607, 3, 607, 3, 607, 3, 607, 3, 607, 3, 607, 3, 607, + 3, 608, 3, 608, 3, 608, 3, 608, 3, 608, 3, 609, 3, 609, 3, 609, 3, 609, + 3, 609, 3, 609, 3, 609, 3, 609, 3, 610, 3, 610, 3, 610, 3, 610, 3, 610, + 3, 610, 3, 610, 3, 610, 3, 610, 3, 610, 3, 610, 3, 610, 3, 610, 3, 610, + 3, 610, 3, 611, 3, 611, 3, 611, 3, 611, 3, 611, 3, 611, 3, 611, 3, 611, + 3, 611, 3, 611, 3, 611, 3, 612, 3, 612, 3, 612, 3, 612, 3, 612, 3, 612, + 3, 613, 3, 613, 3, 613, 3, 613, 3, 613, 3, 613, 3, 613, 3, 613, 3, 613, + 3, 613, 3, 614, 3, 614, 3, 614, 3, 614, 3, 614, 3, 615, 3, 615, 3, 615, + 3, 615, 3, 615, 3, 615, 3, 615, 3, 615, 3, 616, 3, 616, 3, 616, 3, 616, + 3, 616, 3, 616, 3, 616, 3, 616, 3, 617, 3, 617, 3, 617, 3, 617, 3, 617, + 3, 618, 3, 618, 3, 618, 3, 618, 3, 618, 3, 618, 3, 618, 3, 618, 3, 618, + 3, 619, 3, 619, 3, 619, 3, 619, 3, 619, 3, 619, 3, 619, 3, 619, 3, 620, + 3, 620, 3, 620, 3, 620, 3, 620, 3, 621, 3, 621, 3, 621, 3, 621, 3, 621, + 3, 621, 3, 621, 3, 621, 3, 622, 3, 622, 3, 622, 3, 622, 3, 622, 3, 623, + 3, 623, 3, 623, 3, 624, 3, 624, 3, 624, 3, 624, 3, 625, 3, 625, 3, 625, + 3, 625, 3, 626, 3, 626, 3, 626, 3, 626, 3, 627, 3, 627, 3, 627, 3, 627, + 3, 628, 3, 628, 3, 628, 3, 628, 3, 629, 3, 629, 3, 629, 3, 629, 3, 629, + 3, 629, 3, 629, 3, 629, 3, 629, 3, 630, 3, 630, 3, 630, 3, 630, 3, 630, + 3, 630, 3, 630, 3, 630, 3, 631, 3, 631, 3, 631, 3, 631, 3, 631, 3, 631, + 3, 632, 3, 632, 3, 632, 3, 632, 3, 633, 3, 633, 3, 633, 3, 633, 3, 633, + 3, 634, 3, 634, 3, 634, 3, 634, 3, 634, 3, 634, 3, 634, 3, 635, 3, 635, + 3, 635, 3, 635, 3, 635, 3, 636, 3, 636, 3, 636, 3, 636, 3, 636, 3, 636, + 3, 636, 3, 637, 3, 637, 3, 637, 3, 637, 3, 637, 3, 637, 3, 637, 3, 637, + 3, 637, 3, 637, 3, 637, 3, 637, 3, 638, 3, 638, 3, 638, 3, 638, 3, 638, + 3, 638, 3, 638, 3, 639, 3, 639, 3, 639, 3, 639, 3, 639, 3, 639, 3, 639, + 3, 639, 3, 640, 3, 640, 3, 640, 3, 640, 3, 640, 3, 640, 3, 640, 3, 640, + 3, 641, 3, 641, 3, 641, 3, 641, 3, 641, 3, 642, 3, 642, 3, 642, 3, 642, + 3, 642, 3, 642, 3, 642, 3, 642, 3, 643, 3, 643, 3, 643, 3, 643, 3, 643, + 3, 643, 3, 643, 3, 644, 3, 644, 3, 644, 3, 644, 3, 644, 3, 644, 3, 644, + 3, 644, 3, 644, 3, 645, 3, 645, 3, 645, 3, 645, 3, 645, 3, 645, 3, 646, + 3, 646, 3, 646, 3, 646, 3, 646, 3, 646, 3, 646, 3, 646, 3, 646, 3, 646, + 3, 646, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, + 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, + 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, 3, 647, + 3, 647, 3, 648, 3, 648, 3, 648, 3, 648, 3, 648, 3, 648, 3, 648, 3, 648, + 3, 648, 3, 648, 3, 648, 3, 648, 3, 649, 3, 649, 3, 649, 3, 649, 3, 649, + 3, 649, 3, 649, 3, 649, 3, 649, 3, 649, 3, 649, 3, 649, 3, 649, 3, 650, + 3, 650, 3, 650, 3, 650, 3, 650, 3, 650, 3, 650, 3, 650, 3, 650, 3, 650, + 3, 650, 3, 650, 3, 650, 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, + 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, + 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, 3, 651, + 3, 652, 3, 652, 3, 652, 3, 652, 3, 652, 3, 652, 3, 652, 3, 652, 3, 652, + 3, 652, 3, 652, 3, 652, 3, 653, 3, 653, 3, 653, 3, 653, 3, 653, 3, 653, + 3, 653, 3, 653, 3, 653, 3, 653, 3, 653, 3, 653, 3, 653, 3, 653, 3, 653, + 3, 653, 3, 653, 3, 654, 3, 654, 3, 654, 3, 654, 3, 654, 3, 654, 3, 654, + 3, 654, 3, 654, 3, 654, 3, 654, 3, 654, 3, 654, 3, 654, 3, 654, 3, 654, + 3, 654, 3, 654, 3, 654, 3, 654, 3, 654, 3, 655, 3, 655, 3, 655, 3, 655, + 3, 655, 3, 655, 3, 655, 3, 655, 3, 655, 3, 655, 3, 655, 3, 655, 3, 655, + 3, 655, 3, 655, 3, 656, 3, 656, 3, 656, 3, 656, 3, 656, 3, 656, 3, 656, + 3, 656, 3, 656, 3, 656, 3, 656, 3, 656, 3, 656, 3, 656, 3, 657, 3, 657, + 3, 657, 3, 657, 3, 657, 3, 657, 3, 657, 3, 657, 3, 657, 3, 657, 3, 657, + 3, 657, 3, 657, 3, 657, 3, 657, 3, 657, 3, 657, 3, 657, 3, 657, 3, 657, + 3, 657, 3, 657, 3, 658, 3, 658, 3, 658, 3, 658, 3, 658, 3, 658, 3, 658, + 3, 658, 3, 658, 3, 658, 3, 658, 3, 658, 3, 658, 3, 659, 3, 659, 3, 659, + 3, 659, 3, 659, 3, 659, 3, 659, 3, 659, 3, 659, 3, 659, 3, 659, 3, 659, + 3, 659, 3, 660, 3, 660, 3, 660, 3, 660, 3, 660, 3, 660, 3, 660, 3, 660, + 3, 660, 3, 660, 3, 660, 3, 660, 3, 660, 3, 660, 3, 660, 3, 660, 3, 660, + 3, 660, 3, 660, 3, 660, 3, 660, 3, 661, 3, 661, 3, 661, 3, 661, 3, 661, + 3, 661, 3, 661, 3, 661, 3, 661, 3, 661, 3, 661, 3, 661, 3, 661, 3, 661, + 3, 661, 3, 661, 3, 661, 3, 661, 3, 661, 3, 661, 3, 661, 3, 661, 3, 661, + 3, 661, 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, + 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, + 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, 3, 662, 3, 663, 3, 663, + 3, 663, 3, 663, 3, 663, 3, 663, 3, 663, 3, 663, 3, 663, 3, 663, 3, 663, + 3, 663, 3, 663, 3, 663, 3, 663, 3, 663, 3, 663, 3, 663, 3, 663, 3, 663, + 3, 663, 3, 663, 3, 663, 3, 664, 3, 664, 3, 664, 3, 664, 3, 664, 3, 664, + 3, 664, 3, 664, 3, 664, 3, 664, 3, 664, 3, 664, 3, 664, 3, 664, 3, 664, + 3, 664, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, + 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, + 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, 3, 665, + 3, 665, 3, 666, 3, 666, 3, 666, 3, 666, 3, 666, 3, 666, 3, 666, 3, 666, + 3, 666, 3, 666, 3, 666, 3, 666, 3, 666, 3, 666, 3, 666, 3, 666, 3, 666, + 3, 666, 3, 666, 3, 666, 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, + 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, + 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, 3, 667, + 3, 668, 3, 668, 3, 668, 3, 668, 3, 668, 3, 668, 3, 668, 3, 668, 3, 668, + 3, 668, 3, 668, 3, 668, 3, 668, 3, 668, 3, 668, 3, 668, 3, 668, 3, 668, + 3, 668, 3, 668, 3, 668, 3, 669, 3, 669, 3, 669, 3, 669, 3, 669, 3, 669, + 3, 669, 3, 669, 3, 669, 3, 669, 3, 669, 3, 669, 3, 669, 3, 669, 3, 669, + 3, 669, 3, 669, 3, 669, 3, 669, 3, 669, 3, 670, 3, 670, 3, 670, 3, 670, + 3, 670, 3, 670, 3, 670, 3, 670, 3, 670, 3, 670, 3, 670, 3, 671, 3, 671, + 3, 671, 3, 671, 3, 671, 3, 671, 3, 671, 3, 671, 3, 671, 3, 671, 3, 671, + 3, 671, 3, 671, 3, 671, 3, 671, 3, 671, 3, 671, 3, 671, 3, 671, 3, 671, + 3, 671, 3, 671, 3, 671, 3, 671, 3, 671, 3, 672, 5, 672, 8451, 10, 672, + 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, + 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, + 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, 3, 672, 5, 672, 8478, 10, + 672, 3, 673, 3, 673, 3, 673, 3, 673, 3, 673, 3, 673, 3, 673, 3, 673, 3, + 673, 3, 673, 3, 673, 3, 673, 3, 674, 3, 674, 3, 674, 3, 674, 3, 674, 3, + 674, 3, 674, 3, 674, 3, 674, 3, 674, 3, 674, 3, 674, 3, 674, 3, 675, 3, + 675, 3, 675, 3, 675, 3, 675, 3, 675, 3, 675, 3, 675, 3, 675, 3, 675, 3, + 675, 3, 675, 3, 675, 3, 675, 3, 675, 3, 675, 3, 675, 3, 675, 3, 675, 3, + 675, 3, 675, 3, 675, 3, 675, 3, 676, 3, 676, 3, 676, 3, 676, 3, 676, 3, + 676, 3, 676, 3, 676, 3, 676, 3, 676, 3, 676, 3, 676, 3, 676, 3, 676, 3, + 676, 3, 676, 3, 676, 3, 676, 3, 676, 3, 676, 3, 676, 3, 676, 3, 676, 3, + 677, 3, 677, 3, 677, 3, 677, 3, 677, 3, 677, 3, 677, 3, 677, 3, 677, 3, + 677, 3, 677, 3, 677, 3, 677, 3, 677, 3, 677, 3, 677, 3, 677, 3, 677, 3, + 677, 3, 677, 3, 678, 3, 678, 3, 678, 3, 678, 3, 678, 3, 678, 3, 678, 3, + 678, 3, 678, 3, 678, 3, 678, 3, 678, 3, 678, 3, 678, 3, 678, 3, 678, 3, + 678, 3, 679, 3, 679, 3, 679, 3, 679, 3, 679, 3, 679, 3, 679, 3, 679, 3, + 679, 3, 680, 3, 680, 3, 680, 3, 680, 3, 680, 3, 680, 3, 681, 3, 681, 3, + 681, 3, 681, 3, 681, 3, 682, 3, 682, 3, 682, 3, 682, 3, 682, 3, 682, 3, + 682, 3, 683, 3, 683, 3, 683, 3, 683, 3, 683, 3, 683, 3, 683, 3, 684, 3, + 684, 3, 684, 3, 684, 3, 684, 3, 684, 3, 684, 3, 685, 3, 685, 3, 685, 3, + 685, 3, 685, 3, 685, 3, 685, 3, 686, 3, 686, 3, 686, 3, 686, 3, 686, 3, + 686, 3, 687, 3, 687, 3, 687, 3, 687, 3, 687, 3, 687, 3, 688, 3, 688, 3, + 688, 3, 688, 3, 688, 3, 688, 3, 689, 3, 689, 3, 689, 3, 689, 3, 689, 3, + 689, 3, 690, 3, 690, 3, 690, 3, 690, 3, 690, 3, 691, 3, 691, 3, 691, 3, + 691, 3, 691, 3, 691, 3, 691, 3, 691, 3, 692, 3, 692, 3, 692, 3, 692, 3, + 692, 3, 692, 3, 693, 3, 693, 3, 693, 3, 693, 3, 693, 3, 693, 3, 693, 3, + 694, 3, 694, 3, 694, 3, 694, 3, 695, 3, 695, 3, 695, 3, 695, 3, 695, 3, + 695, 3, 695, 3, 695, 3, 696, 3, 696, 3, 696, 3, 696, 3, 696, 3, 696, 3, + 697, 3, 697, 3, 697, 3, 697, 3, 697, 3, 697, 3, 697, 3, 698, 3, 698, 3, + 698, 3, 698, 3, 699, 3, 699, 3, 699, 3, 699, 3, 699, 3, 699, 3, 699, 3, + 699, 3, 700, 3, 700, 3, 700, 3, 700, 3, 700, 3, 700, 3, 701, 3, 701, 3, + 701, 3, 701, 3, 701, 3, 701, 3, 702, 3, 702, 3, 702, 3, 702, 3, 702, 3, + 702, 3, 702, 3, 703, 3, 703, 3, 703, 3, 703, 3, 703, 3, 703, 3, 703, 3, + 704, 3, 704, 3, 704, 3, 704, 3, 704, 3, 704, 3, 704, 3, 705, 3, 705, 3, + 705, 3, 705, 3, 705, 3, 705, 3, 705, 3, 706, 3, 706, 3, 706, 3, 706, 3, + 706, 3, 706, 3, 707, 3, 707, 3, 707, 3, 707, 3, 707, 3, 707, 3, 707, 3, + 707, 3, 707, 3, 708, 3, 708, 3, 708, 3, 708, 3, 708, 3, 709, 3, 709, 3, + 709, 3, 709, 3, 709, 3, 710, 3, 710, 3, 710, 3, 710, 3, 710, 3, 710, 3, + 710, 3, 711, 3, 711, 3, 711, 3, 711, 3, 711, 3, 712, 3, 712, 3, 712, 3, + 712, 3, 712, 3, 713, 3, 713, 3, 713, 3, 713, 3, 713, 3, 713, 3, 714, 3, + 714, 3, 714, 3, 714, 3, 714, 3, 714, 3, 714, 3, 714, 3, 715, 3, 715, 3, + 715, 3, 715, 3, 715, 3, 715, 3, 716, 3, 716, 3, 716, 3, 716, 3, 716, 3, + 717, 3, 717, 3, 717, 3, 717, 3, 717, 3, 717, 3, 717, 3, 717, 3, 718, 3, + 718, 3, 718, 3, 718, 3, 718, 3, 718, 3, 718, 3, 718, 3, 719, 3, 719, 3, + 719, 3, 719, 3, 719, 3, 719, 3, 719, 3, 719, 3, 720, 3, 720, 3, 720, 3, + 720, 3, 720, 3, 720, 3, 720, 3, 720, 3, 720, 3, 720, 3, 721, 3, 721, 3, + 721, 3, 721, 3, 722, 3, 722, 3, 722, 3, 722, 3, 722, 3, 722, 3, 722, 3, + 722, 3, 722, 3, 722, 3, 723, 3, 723, 3, 723, 3, 723, 3, 723, 3, 723, 3, + 723, 3, 724, 3, 724, 3, 724, 3, 724, 3, 724, 3, 724, 3, 724, 3, 725, 3, + 725, 3, 725, 3, 725, 3, 725, 3, 725, 3, 725, 3, 725, 3, 725, 3, 725, 3, + 725, 3, 726, 3, 726, 3, 726, 3, 726, 3, 726, 3, 726, 3, 726, 3, 727, 3, + 727, 3, 727, 3, 727, 3, 728, 3, 728, 3, 728, 3, 728, 3, 728, 3, 728, 3, + 728, 3, 728, 3, 728, 3, 728, 3, 728, 3, 729, 3, 729, 3, 729, 3, 729, 3, + 729, 3, 729, 3, 729, 3, 729, 3, 729, 3, 729, 3, 729, 3, 729, 3, 729, 3, + 729, 3, 729, 3, 729, 3, 729, 3, 729, 3, 729, 3, 730, 3, 730, 3, 730, 3, + 730, 3, 730, 3, 730, 3, 730, 3, 731, 3, 731, 3, 731, 3, 731, 3, 731, 3, + 731, 3, 731, 3, 731, 3, 731, 3, 731, 3, 731, 3, 732, 3, 732, 3, 732, 3, + 732, 3, 732, 3, 732, 3, 732, 3, 732, 3, 732, 3, 732, 3, 733, 3, 733, 3, + 733, 3, 733, 3, 733, 3, 733, 3, 733, 3, 733, 3, 733, 3, 733, 3, 733, 3, + 733, 3, 734, 3, 734, 3, 734, 3, 734, 3, 734, 3, 734, 3, 734, 3, 734, 3, + 734, 3, 734, 3, 734, 3, 734, 3, 734, 3, 735, 3, 735, 3, 735, 3, 735, 3, + 735, 3, 735, 3, 735, 3, 735, 3, 735, 3, 735, 3, 735, 3, 735, 3, 735, 3, + 735, 3, 735, 3, 735, 3, 735, 3, 735, 3, 735, 3, 736, 3, 736, 3, 736, 3, + 736, 3, 736, 3, 736, 3, 736, 3, 736, 3, 736, 3, 736, 3, 736, 3, 736, 3, + 736, 3, 736, 3, 736, 3, 737, 3, 737, 3, 737, 3, 737, 3, 737, 3, 737, 3, + 737, 3, 737, 3, 737, 3, 738, 3, 738, 3, 738, 3, 738, 3, 738, 3, 738, 3, + 738, 3, 738, 3, 738, 3, 738, 3, 738, 3, 739, 3, 739, 3, 739, 3, 739, 3, + 739, 3, 739, 3, 739, 3, 739, 3, 739, 3, 739, 3, 739, 3, 739, 3, 739, 3, + 739, 3, 739, 3, 739, 3, 740, 3, 740, 3, 740, 3, 740, 3, 740, 3, 740, 3, + 740, 3, 740, 3, 740, 3, 740, 3, 740, 3, 741, 3, 741, 3, 741, 3, 741, 3, + 741, 3, 741, 3, 741, 3, 741, 3, 741, 3, 741, 3, 741, 3, 741, 3, 741, 3, + 742, 3, 742, 3, 742, 3, 742, 3, 742, 3, 742, 3, 743, 3, 743, 3, 743, 3, + 743, 3, 743, 3, 743, 3, 743, 3, 743, 3, 744, 3, 744, 3, 744, 3, 744, 3, + 745, 3, 745, 3, 745, 3, 745, 3, 745, 3, 746, 3, 746, 3, 746, 3, 746, 3, + 746, 3, 746, 3, 746, 3, 746, 3, 747, 3, 747, 3, 747, 3, 747, 3, 747, 3, + 747, 3, 747, 3, 747, 3, 748, 3, 748, 3, 748, 3, 748, 3, 748, 3, 748, 3, + 748, 3, 748, 3, 748, 3, 748, 3, 748, 3, 748, 3, 749, 3, 749, 3, 749, 3, + 749, 3, 749, 3, 749, 3, 749, 3, 749, 3, 749, 3, 749, 3, 749, 3, 749, 3, + 750, 3, 750, 3, 750, 3, 750, 3, 750, 3, 751, 3, 751, 3, 751, 3, 751, 3, + 751, 3, 751, 3, 751, 3, 751, 3, 751, 3, 752, 3, 752, 3, 752, 3, 752, 3, + 752, 3, 753, 3, 753, 3, 753, 3, 753, 3, 753, 3, 753, 3, 753, 3, 754, 3, + 754, 3, 754, 3, 754, 3, 754, 3, 754, 3, 755, 3, 755, 3, 755, 3, 755, 3, + 755, 3, 755, 3, 756, 3, 756, 3, 756, 3, 756, 3, 756, 3, 756, 3, 756, 3, + 756, 3, 756, 3, 756, 3, 756, 3, 756, 3, 756, 3, 756, 3, 756, 3, 756, 3, + 756, 3, 756, 3, 756, 3, 757, 3, 757, 3, 757, 3, 757, 3, 757, 3, 757, 3, + 757, 3, 757, 3, 757, 3, 757, 3, 757, 3, 757, 3, 757, 3, 757, 3, 757, 3, + 757, 3, 757, 3, 757, 3, 758, 3, 758, 3, 758, 3, 758, 3, 758, 3, 758, 3, + 758, 3, 758, 3, 758, 3, 758, 3, 758, 3, 758, 3, 758, 3, 758, 3, 758, 3, + 758, 3, 758, 3, 758, 3, 758, 3, 759, 3, 759, 3, 759, 3, 759, 3, 759, 3, + 759, 3, 759, 3, 759, 3, 759, 3, 759, 3, 759, 3, 759, 3, 759, 3, 759, 3, + 759, 3, 759, 3, 760, 3, 760, 3, 760, 3, 760, 3, 760, 3, 760, 3, 760, 3, + 760, 3, 760, 3, 760, 3, 760, 3, 760, 3, 760, 3, 760, 3, 760, 3, 760, 3, + 760, 3, 760, 3, 761, 3, 761, 3, 761, 3, 761, 3, 761, 3, 762, 3, 762, 3, + 762, 3, 762, 3, 762, 3, 762, 3, 763, 3, 763, 3, 763, 3, 763, 3, 763, 3, + 763, 3, 763, 3, 763, 3, 763, 3, 763, 3, 764, 3, 764, 3, 764, 3, 764, 3, + 765, 3, 765, 3, 765, 3, 765, 3, 765, 3, 765, 3, 765, 3, 765, 3, 765, 3, + 765, 3, 766, 3, 766, 3, 766, 3, 766, 3, 766, 3, 766, 3, 766, 3, 766, 3, + 766, 3, 766, 3, 766, 3, 767, 3, 767, 3, 767, 3, 767, 3, 767, 3, 767, 3, + 767, 3, 768, 3, 768, 3, 768, 3, 768, 3, 768, 3, 768, 3, 768, 3, 768, 3, + 768, 3, 768, 3, 768, 3, 768, 3, 768, 3, 769, 3, 769, 3, 769, 3, 769, 3, + 769, 3, 770, 3, 770, 3, 770, 3, 770, 3, 770, 3, 770, 3, 770, 3, 770, 3, + 771, 3, 771, 3, 771, 3, 771, 3, 771, 3, 771, 3, 771, 3, 771, 3, 771, 3, + 772, 3, 772, 3, 772, 3, 772, 3, 772, 3, 772, 3, 772, 3, 772, 3, 772, 3, + 772, 3, 772, 3, 772, 3, 772, 3, 772, 3, 772, 3, 772, 3, 772, 3, 773, 3, + 773, 3, 773, 3, 773, 3, 773, 3, 773, 3, 773, 3, 773, 3, 774, 3, 774, 3, + 774, 3, 774, 3, 774, 3, 774, 3, 774, 3, 774, 3, 774, 3, 774, 3, 774, 3, + 774, 3, 775, 3, 775, 3, 775, 3, 775, 3, 775, 3, 775, 3, 775, 3, 775, 3, + 775, 3, 775, 3, 775, 3, 775, 3, 775, 3, 776, 3, 776, 3, 776, 3, 776, 3, + 776, 3, 776, 3, 776, 3, 776, 3, 776, 3, 776, 3, 777, 3, 777, 3, 777, 3, + 777, 3, 777, 3, 777, 3, 777, 3, 777, 3, 777, 3, 778, 3, 778, 3, 778, 3, + 778, 3, 778, 3, 778, 3, 778, 3, 779, 3, 779, 3, 779, 3, 779, 3, 779, 3, + 779, 3, 779, 3, 779, 3, 779, 3, 779, 3, 780, 3, 780, 3, 780, 3, 780, 3, + 780, 3, 780, 3, 780, 3, 780, 3, 780, 3, 780, 3, 780, 3, 780, 3, 780, 3, + 780, 3, 781, 3, 781, 3, 781, 3, 781, 3, 781, 3, 782, 3, 782, 3, 782, 3, + 782, 3, 782, 3, 782, 3, 782, 3, 782, 3, 782, 3, 782, 3, 782, 3, 783, 3, + 783, 3, 783, 3, 783, 3, 784, 3, 784, 3, 784, 3, 784, 3, 785, 3, 785, 3, + 785, 3, 785, 3, 785, 3, 785, 3, 786, 3, 786, 3, 786, 3, 786, 3, 786, 3, + 786, 3, 786, 3, 786, 3, 786, 3, 786, 3, 786, 3, 786, 3, 786, 3, 786, 3, + 786, 3, 786, 3, 786, 3, 786, 3, 786, 3, 786, 3, 786, 3, 786, 3, 786, 3, + 786, 3, 786, 3, 786, 3, 786, 3, 787, 3, 787, 3, 787, 3, 787, 3, 787, 3, + 787, 3, 787, 3, 787, 3, 787, 3, 787, 3, 787, 3, 787, 3, 787, 3, 787, 3, + 787, 3, 787, 3, 787, 3, 787, 3, 787, 3, 787, 3, 787, 3, 787, 3, 787, 3, + 787, 3, 787, 3, 787, 3, 788, 3, 788, 3, 788, 3, 788, 3, 788, 3, 788, 3, + 788, 3, 788, 3, 788, 3, 788, 3, 788, 3, 788, 3, 788, 3, 788, 3, 788, 3, + 788, 3, 788, 3, 788, 3, 788, 3, 788, 3, 788, 3, 789, 3, 789, 3, 789, 3, + 789, 3, 789, 3, 789, 3, 789, 3, 789, 3, 789, 3, 789, 3, 789, 3, 789, 3, + 789, 3, 789, 3, 790, 3, 790, 3, 790, 3, 790, 3, 790, 3, 790, 3, 790, 3, + 790, 3, 791, 3, 791, 3, 791, 3, 791, 3, 791, 3, 791, 3, 791, 3, 791, 3, + 791, 3, 792, 3, 792, 3, 792, 3, 792, 3, 792, 3, 792, 3, 792, 3, 792, 3, + 792, 3, 792, 3, 792, 3, 792, 3, 793, 3, 793, 3, 793, 3, 793, 3, 793, 3, + 793, 3, 793, 3, 793, 3, 794, 3, 794, 3, 794, 3, 794, 3, 794, 3, 794, 3, + 794, 3, 794, 3, 794, 3, 794, 3, 794, 3, 795, 3, 795, 3, 795, 3, 795, 3, + 795, 3, 795, 3, 795, 3, 795, 3, 795, 3, 795, 3, 796, 3, 796, 3, 796, 3, + 796, 3, 796, 3, 796, 3, 796, 3, 796, 3, 796, 3, 796, 3, 797, 3, 797, 3, + 797, 3, 797, 3, 797, 3, 797, 3, 797, 3, 798, 3, 798, 3, 798, 3, 798, 3, + 798, 3, 798, 3, 798, 3, 798, 3, 799, 3, 799, 3, 799, 3, 799, 3, 799, 3, + 799, 3, 799, 3, 799, 3, 799, 3, 799, 3, 799, 3, 799, 3, 800, 3, 800, 3, + 800, 3, 800, 3, 800, 3, 800, 3, 800, 3, 800, 3, 800, 3, 800, 3, 800, 3, + 800, 3, 801, 3, 801, 3, 801, 3, 801, 3, 801, 3, 801, 3, 801, 3, 801, 3, + 801, 3, 801, 3, 802, 3, 802, 3, 802, 3, 802, 3, 802, 3, 802, 3, 802, 3, + 802, 3, 802, 3, 803, 3, 803, 3, 803, 3, 803, 3, 804, 3, 804, 3, 804, 3, + 804, 3, 804, 3, 804, 3, 804, 3, 805, 3, 805, 3, 805, 3, 805, 3, 805, 3, + 805, 3, 805, 3, 805, 3, 806, 3, 806, 3, 806, 3, 806, 3, 806, 3, 806, 3, + 806, 3, 806, 3, 806, 3, 807, 3, 807, 3, 807, 3, 807, 3, 807, 3, 807, 3, + 807, 3, 807, 3, 807, 3, 808, 3, 808, 3, 808, 3, 808, 3, 808, 3, 808, 3, + 808, 3, 809, 3, 809, 3, 809, 3, 809, 3, 810, 3, 810, 3, 810, 3, 810, 3, + 810, 3, 810, 3, 810, 3, 810, 3, 810, 3, 810, 3, 810, 3, 811, 3, 811, 3, + 811, 3, 811, 3, 811, 3, 811, 3, 811, 3, 811, 3, 811, 3, 811, 3, 811, 3, + 811, 3, 811, 3, 812, 3, 812, 3, 812, 3, 812, 3, 812, 3, 812, 3, 812, 3, + 812, 3, 812, 3, 812, 3, 812, 3, 812, 3, 812, 3, 813, 3, 813, 3, 813, 3, + 813, 3, 813, 3, 813, 3, 814, 3, 814, 3, 814, 3, 814, 3, 814, 3, 814, 3, + 814, 3, 814, 3, 814, 3, 814, 3, 814, 3, 814, 3, 815, 3, 815, 3, 815, 3, + 815, 3, 815, 3, 815, 3, 816, 3, 816, 3, 816, 3, 816, 3, 816, 3, 816, 3, + 816, 3, 817, 3, 817, 3, 817, 3, 817, 3, 817, 3, 817, 3, 817, 3, 817, 3, + 817, 3, 817, 3, 817, 3, 818, 3, 818, 3, 818, 3, 818, 3, 818, 3, 818, 3, + 818, 3, 818, 3, 818, 3, 818, 3, 818, 3, 818, 3, 819, 3, 819, 3, 819, 3, + 819, 3, 819, 3, 819, 3, 819, 3, 819, 3, 819, 3, 819, 3, 820, 3, 820, 3, + 820, 3, 820, 3, 820, 3, 820, 3, 820, 3, 820, 3, 820, 3, 820, 3, 820, 3, + 820, 3, 820, 3, 820, 3, 821, 3, 821, 3, 821, 3, 821, 3, 821, 3, 821, 3, + 821, 3, 821, 3, 821, 3, 821, 3, 821, 3, 821, 3, 821, 3, 821, 3, 821, 3, + 821, 3, 821, 3, 822, 3, 822, 3, 822, 3, 822, 3, 822, 3, 822, 3, 822, 3, + 822, 3, 822, 3, 822, 3, 822, 3, 822, 3, 822, 3, 822, 3, 822, 3, 822, 3, + 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, + 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, + 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, 823, 3, + 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, + 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, + 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 824, 3, 825, 3, + 825, 3, 825, 3, 825, 3, 825, 3, 825, 3, 825, 3, 825, 3, 825, 3, 825, 3, + 825, 3, 825, 3, 825, 3, 825, 3, 825, 3, 825, 3, 825, 3, 826, 3, 826, 3, + 826, 3, 826, 3, 826, 3, 826, 3, 826, 3, 826, 3, 826, 3, 826, 3, 826, 3, + 826, 3, 826, 3, 826, 3, 826, 3, 826, 3, 827, 3, 827, 3, 827, 3, 827, 3, + 827, 3, 827, 3, 827, 3, 827, 3, 827, 3, 827, 3, 828, 3, 828, 3, 828, 3, + 828, 3, 828, 3, 828, 3, 828, 3, 828, 3, 828, 3, 828, 3, 828, 3, 828, 3, + 828, 3, 829, 3, 829, 3, 829, 3, 829, 3, 829, 3, 829, 3, 829, 3, 829, 3, + 829, 3, 829, 3, 829, 3, 829, 3, 829, 3, 830, 3, 830, 3, 830, 3, 830, 3, + 830, 3, 830, 3, 830, 3, 830, 3, 830, 3, 830, 3, 830, 3, 830, 3, 831, 3, + 831, 3, 831, 3, 831, 3, 831, 3, 831, 3, 831, 3, 831, 3, 831, 3, 831, 3, + 831, 3, 832, 3, 832, 3, 832, 3, 832, 3, 832, 3, 832, 3, 832, 3, 832, 3, + 832, 3, 833, 3, 833, 3, 833, 3, 833, 3, 833, 3, 833, 3, 833, 3, 833, 3, + 834, 3, 834, 3, 834, 3, 834, 3, 834, 3, 834, 3, 834, 3, 834, 3, 834, 3, + 835, 3, 835, 3, 835, 3, 835, 3, 835, 3, 835, 3, 835, 3, 835, 3, 835, 3, + 835, 3, 835, 3, 835, 3, 836, 3, 836, 3, 836, 3, 836, 3, 836, 3, 836, 3, + 836, 3, 836, 3, 836, 3, 836, 3, 836, 3, 836, 3, 836, 3, 836, 3, 837, 3, + 837, 3, 837, 3, 837, 3, 838, 3, 838, 3, 838, 3, 838, 3, 838, 3, 838, 3, + 838, 3, 839, 3, 839, 3, 839, 3, 839, 3, 839, 3, 839, 3, 839, 3, 839, 3, + 839, 3, 839, 3, 839, 3, 840, 3, 840, 3, 840, 3, 840, 3, 840, 3, 840, 3, + 840, 3, 840, 3, 840, 3, 840, 3, 840, 3, 841, 3, 841, 3, 841, 3, 841, 3, + 841, 3, 841, 3, 841, 3, 841, 3, 841, 3, 841, 3, 842, 3, 842, 3, 842, 3, + 842, 3, 842, 3, 842, 3, 842, 3, 842, 3, 842, 3, 842, 3, 843, 3, 843, 3, + 843, 3, 843, 3, 843, 3, 843, 3, 844, 3, 844, 3, 844, 3, 844, 3, 844, 3, + 844, 3, 844, 3, 844, 3, 844, 3, 844, 3, 844, 3, 844, 3, 844, 3, 844, 3, + 845, 3, 845, 3, 845, 3, 845, 3, 845, 3, 845, 3, 845, 3, 845, 3, 845, 3, + 845, 3, 845, 3, 846, 3, 846, 3, 846, 3, 846, 3, 846, 3, 846, 3, 846, 3, + 846, 3, 846, 3, 847, 3, 847, 3, 847, 3, 847, 3, 847, 3, 847, 3, 847, 3, + 847, 3, 848, 3, 848, 3, 848, 3, 848, 3, 848, 3, 848, 3, 848, 3, 849, 3, + 849, 3, 849, 3, 849, 3, 849, 3, 849, 3, 849, 3, 849, 3, 849, 3, 850, 3, + 850, 3, 850, 3, 850, 3, 850, 3, 850, 3, 850, 3, 850, 3, 850, 3, 850, 3, + 850, 3, 850, 3, 850, 3, 851, 3, 851, 3, 851, 3, 851, 3, 851, 3, 851, 3, + 851, 3, 851, 3, 852, 3, 852, 3, 852, 3, 852, 3, 852, 3, 852, 3, 852, 3, + 852, 3, 852, 3, 852, 3, 852, 3, 852, 3, 852, 3, 852, 3, 852, 3, 853, 3, + 853, 3, 853, 3, 853, 3, 853, 3, 853, 3, 853, 3, 853, 3, 853, 3, 853, 3, + 853, 3, 853, 3, 853, 3, 853, 3, 853, 3, 854, 3, 854, 3, 854, 3, 854, 3, + 854, 3, 854, 3, 854, 3, 854, 3, 855, 3, 855, 3, 855, 3, 855, 3, 855, 3, + 855, 3, 855, 3, 855, 3, 855, 3, 855, 3, 855, 3, 855, 3, 855, 3, 856, 3, + 856, 3, 856, 3, 856, 3, 856, 3, 856, 3, 856, 3, 856, 3, 856, 3, 856, 3, + 856, 3, 856, 3, 856, 3, 856, 3, 856, 3, 857, 3, 857, 3, 857, 3, 857, 3, + 857, 3, 857, 3, 858, 3, 858, 3, 858, 3, 858, 3, 858, 3, 858, 3, 859, 3, + 859, 3, 859, 3, 859, 3, 859, 3, 859, 3, 859, 3, 860, 3, 860, 3, 860, 3, + 860, 3, 860, 3, 860, 3, 860, 3, 860, 3, 860, 3, 860, 3, 860, 3, 860, 3, + 860, 3, 861, 3, 861, 3, 861, 3, 861, 3, 861, 3, 861, 3, 861, 3, 861, 3, + 861, 3, 861, 3, 861, 3, 861, 3, 862, 3, 862, 3, 862, 3, 862, 3, 862, 3, + 862, 3, 862, 3, 862, 3, 862, 3, 862, 3, 862, 3, 862, 3, 862, 3, 862, 3, + 862, 3, 862, 3, 862, 3, 862, 3, 862, 3, 863, 3, 863, 3, 863, 3, 863, 3, + 863, 3, 863, 3, 863, 3, 863, 3, 863, 3, 863, 3, 863, 3, 863, 3, 863, 3, + 863, 3, 863, 3, 863, 3, 863, 3, 863, 3, 864, 3, 864, 3, 864, 3, 865, 3, + 865, 3, 865, 3, 865, 3, 865, 3, 865, 3, 865, 3, 865, 3, 865, 3, 865, 3, + 866, 3, 866, 3, 866, 3, 866, 3, 866, 3, 866, 3, 866, 3, 867, 3, 867, 3, + 867, 3, 867, 3, 868, 3, 868, 3, 868, 3, 868, 3, 868, 3, 868, 3, 869, 3, + 869, 3, 869, 3, 869, 3, 869, 3, 870, 3, 870, 3, 870, 3, 870, 3, 870, 3, + 870, 3, 871, 3, 871, 3, 871, 3, 871, 3, 871, 3, 872, 3, 872, 3, 872, 3, + 872, 3, 872, 3, 872, 3, 873, 3, 873, 3, 873, 3, 873, 3, 873, 3, 873, 3, + 873, 3, 873, 3, 873, 3, 874, 3, 874, 3, 874, 3, 874, 3, 874, 3, 874, 3, + 874, 3, 874, 3, 874, 3, 875, 3, 875, 3, 875, 3, 875, 3, 875, 3, 875, 3, + 875, 3, 875, 3, 875, 3, 876, 3, 876, 3, 876, 3, 876, 3, 876, 3, 876, 3, + 876, 3, 876, 3, 876, 3, 876, 3, 876, 3, 876, 3, 876, 3, 876, 3, 876, 3, + 876, 3, 877, 3, 877, 3, 877, 3, 877, 3, 877, 3, 877, 3, 877, 3, 877, 3, + 877, 3, 877, 3, 877, 3, 877, 3, 878, 3, 878, 3, 878, 3, 878, 3, 878, 3, + 878, 3, 878, 3, 878, 3, 878, 3, 878, 3, 878, 3, 878, 3, 879, 3, 879, 3, + 879, 3, 879, 3, 879, 3, 879, 3, 879, 3, 879, 3, 879, 3, 880, 3, 880, 3, + 880, 3, 880, 3, 880, 3, 880, 3, 880, 3, 880, 3, 880, 3, 880, 3, 880, 3, + 880, 3, 880, 3, 880, 3, 881, 3, 881, 3, 881, 3, 881, 3, 881, 3, 881, 3, + 881, 3, 881, 3, 881, 3, 881, 3, 881, 3, 881, 3, 882, 3, 882, 3, 882, 3, + 882, 3, 882, 3, 882, 3, 882, 3, 882, 3, 882, 3, 882, 3, 882, 3, 883, 3, + 883, 3, 883, 3, 883, 3, 883, 3, 883, 3, 883, 3, 883, 3, 883, 3, 883, 3, + 884, 3, 884, 3, 884, 3, 884, 3, 885, 3, 885, 3, 885, 3, 885, 3, 885, 3, + 885, 3, 885, 3, 885, 3, 885, 3, 885, 3, 885, 3, 885, 3, 885, 3, 885, 3, + 886, 3, 886, 3, 886, 3, 886, 3, 886, 3, 886, 3, 886, 3, 886, 3, 886, 3, + 886, 3, 886, 3, 886, 3, 886, 3, 887, 3, 887, 3, 887, 3, 887, 3, 887, 3, + 887, 3, 887, 3, 887, 3, 887, 3, 887, 3, 888, 3, 888, 3, 888, 3, 888, 3, + 888, 3, 888, 3, 888, 3, 888, 3, 888, 3, 888, 3, 888, 3, 888, 3, 888, 3, + 888, 3, 888, 3, 889, 3, 889, 3, 889, 3, 889, 3, 889, 3, 889, 3, 889, 3, + 889, 3, 889, 3, 889, 3, 889, 3, 889, 3, 889, 3, 889, 3, 890, 3, 890, 3, + 890, 3, 890, 3, 890, 3, 890, 3, 890, 3, 890, 3, 890, 3, 890, 3, 890, 3, + 890, 3, 890, 3, 890, 3, 891, 3, 891, 3, 891, 3, 891, 3, 891, 3, 891, 3, + 891, 3, 891, 3, 891, 3, 891, 3, 891, 3, 891, 3, 891, 3, 892, 3, 892, 3, + 892, 3, 892, 3, 892, 3, 892, 3, 892, 3, 892, 3, 892, 3, 892, 3, 892, 3, + 892, 3, 892, 3, 892, 3, 892, 3, 892, 3, 892, 3, 892, 3, 892, 3, 892, 3, + 892, 3, 892, 3, 892, 3, 892, 3, 893, 3, 893, 3, 893, 3, 893, 3, 893, 3, + 893, 3, 893, 3, 893, 3, 893, 3, 893, 3, 893, 3, 893, 3, 893, 3, 893, 3, + 893, 3, 893, 3, 893, 3, 893, 3, 893, 3, 893, 3, 893, 3, 893, 3, 893, 3, + 894, 3, 894, 3, 894, 3, 894, 3, 894, 3, 894, 3, 894, 3, 894, 3, 894, 3, + 894, 3, 894, 3, 894, 3, 894, 3, 894, 3, 894, 3, 894, 3, 894, 3, 894, 3, + 894, 3, 895, 3, 895, 3, 895, 3, 895, 3, 895, 3, 895, 3, 895, 3, 895, 3, + 895, 3, 895, 3, 895, 3, 895, 3, 895, 3, 895, 3, 895, 3, 895, 3, 895, 3, + 895, 3, 896, 3, 896, 3, 896, 3, 896, 3, 896, 3, 896, 3, 896, 3, 896, 3, + 896, 3, 896, 3, 896, 3, 896, 3, 896, 3, 896, 3, 896, 3, 896, 3, 896, 3, + 896, 3, 896, 3, 896, 3, 896, 3, 897, 3, 897, 3, 897, 3, 897, 3, 897, 3, + 897, 3, 897, 3, 897, 3, 897, 3, 897, 3, 897, 3, 897, 3, 897, 3, 897, 3, + 897, 3, 897, 3, 897, 3, 897, 3, 897, 3, 897, 3, 898, 3, 898, 3, 898, 3, + 898, 3, 898, 3, 898, 3, 898, 3, 898, 3, 898, 3, 898, 3, 898, 3, 899, 3, + 899, 3, 899, 3, 899, 3, 899, 3, 899, 3, 899, 3, 900, 3, 900, 3, 900, 3, + 900, 3, 900, 3, 900, 3, 900, 3, 900, 3, 900, 3, 900, 3, 900, 3, 900, 3, + 900, 3, 900, 3, 901, 3, 901, 3, 901, 3, 901, 3, 901, 3, 901, 3, 901, 3, + 901, 3, 901, 3, 901, 3, 901, 3, 901, 3, 901, 3, 901, 3, 901, 3, 901, 3, + 901, 3, 902, 3, 902, 3, 902, 3, 902, 3, 902, 3, 902, 3, 902, 3, 902, 3, + 902, 3, 902, 3, 903, 3, 903, 3, 903, 3, 903, 3, 904, 3, 904, 3, 904, 3, + 904, 3, 904, 3, 904, 3, 904, 3, 904, 3, 904, 3, 904, 3, 904, 3, 904, 3, + 904, 3, 905, 3, 905, 3, 905, 3, 905, 3, 906, 3, 906, 3, 906, 3, 906, 3, + 906, 3, 906, 3, 906, 3, 906, 3, 906, 3, 907, 3, 907, 3, 907, 3, 907, 3, + 907, 3, 907, 3, 907, 3, 907, 3, 907, 3, 907, 3, 907, 3, 908, 3, 908, 3, + 908, 3, 908, 3, 908, 3, 908, 3, 908, 3, 908, 3, 908, 3, 908, 3, 908, 3, + 908, 3, 909, 3, 909, 3, 909, 3, 910, 3, 910, 3, 910, 3, 910, 3, 910, 3, + 910, 3, 910, 3, 910, 3, 910, 3, 910, 3, 910, 3, 910, 3, 910, 3, 910, 3, + 911, 3, 911, 3, 911, 3, 911, 3, 911, 3, 911, 3, 911, 3, 911, 3, 911, 3, + 911, 3, 911, 3, 911, 3, 911, 3, 912, 3, 912, 3, 912, 3, 912, 3, 912, 3, + 912, 3, 912, 3, 913, 3, 913, 3, 913, 3, 913, 3, 913, 3, 913, 3, 913, 3, + 913, 3, 913, 3, 913, 3, 913, 3, 913, 3, 913, 3, 914, 3, 914, 3, 914, 3, + 914, 3, 914, 3, 914, 3, 914, 3, 914, 3, 914, 3, 914, 3, 914, 3, 914, 3, + 915, 3, 915, 3, 915, 3, 915, 3, 915, 3, 915, 3, 915, 3, 915, 3, 915, 3, + 915, 3, 915, 3, 915, 3, 915, 3, 915, 3, 915, 3, 915, 3, 916, 3, 916, 3, + 916, 3, 916, 3, 916, 3, 916, 3, 916, 3, 916, 3, 916, 3, 916, 3, 916, 3, + 916, 3, 916, 3, 916, 3, 916, 3, 917, 3, 917, 3, 917, 3, 917, 3, 918, 3, + 918, 3, 918, 3, 918, 3, 918, 3, 918, 3, 919, 3, 919, 3, 919, 3, 919, 3, + 919, 3, 919, 3, 920, 3, 920, 3, 920, 3, 920, 3, 920, 3, 920, 3, 920, 3, + 920, 3, 921, 3, 921, 3, 921, 3, 921, 3, 921, 3, 922, 3, 922, 3, 922, 3, + 922, 3, 922, 3, 922, 3, 922, 3, 922, 3, 922, 3, 922, 3, 922, 3, 922, 3, + 922, 3, 923, 3, 923, 3, 923, 3, 923, 3, 923, 3, 923, 3, 923, 3, 923, 3, + 923, 3, 923, 3, 923, 3, 923, 3, 923, 3, 924, 3, 924, 3, 924, 3, 924, 3, + 924, 3, 924, 3, 924, 3, 924, 3, 925, 3, 925, 3, 925, 3, 925, 3, 925, 3, + 925, 3, 926, 3, 926, 3, 926, 3, 926, 3, 926, 3, 926, 3, 926, 3, 926, 3, + 926, 3, 926, 3, 927, 3, 927, 3, 927, 3, 927, 3, 927, 3, 928, 3, 928, 3, + 928, 3, 928, 3, 928, 3, 928, 3, 929, 3, 929, 3, 929, 3, 929, 3, 929, 3, + 929, 3, 929, 3, 929, 3, 929, 3, 929, 3, 929, 3, 929, 3, 930, 3, 930, 3, + 930, 3, 930, 3, 930, 3, 930, 3, 930, 3, 930, 3, 930, 3, 930, 3, 930, 3, + 930, 3, 930, 3, 931, 3, 931, 3, 931, 3, 931, 3, 932, 3, 932, 3, 932, 3, + 932, 3, 932, 3, 933, 3, 933, 3, 933, 3, 933, 3, 933, 3, 934, 3, 934, 3, + 934, 3, 934, 3, 934, 3, 934, 3, 934, 3, 934, 3, 934, 3, 934, 3, 934, 3, + 934, 3, 935, 3, 935, 3, 935, 3, 935, 3, 935, 3, 936, 3, 936, 3, 936, 3, + 936, 3, 937, 3, 937, 3, 937, 3, 937, 3, 937, 3, 937, 3, 938, 3, 938, 3, + 938, 3, 938, 3, 938, 3, 938, 3, 938, 3, 938, 3, 939, 3, 939, 3, 939, 3, + 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, + 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, + 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, 939, 3, 940, 3, 940, 3, + 940, 3, 940, 3, 940, 3, 941, 3, 941, 3, 941, 3, 941, 3, 941, 3, 942, 3, + 942, 3, 942, 3, 942, 3, 942, 3, 942, 3, 942, 3, 942, 3, 942, 3, 942, 3, + 942, 3, 943, 3, 943, 3, 943, 3, 943, 3, 943, 3, 943, 3, 943, 3, 944, 3, + 944, 3, 944, 3, 944, 3, 944, 3, 944, 3, 944, 3, 944, 3, 944, 3, 944, 3, + 944, 3, 944, 3, 945, 3, 945, 3, 945, 3, 945, 3, 945, 3, 945, 3, 945, 3, + 945, 3, 946, 3, 946, 3, 946, 3, 946, 3, 946, 3, 946, 3, 946, 3, 946, 3, + 946, 3, 946, 3, 946, 3, 946, 3, 947, 3, 947, 3, 947, 3, 947, 3, 947, 3, + 947, 3, 947, 3, 947, 3, 947, 3, 947, 3, 948, 3, 948, 3, 948, 3, 948, 3, + 948, 3, 948, 3, 948, 3, 948, 3, 948, 3, 949, 3, 949, 3, 949, 3, 949, 3, + 949, 3, 949, 3, 949, 3, 949, 3, 949, 3, 950, 3, 950, 3, 950, 3, 950, 3, + 950, 3, 950, 3, 950, 3, 950, 3, 950, 3, 950, 3, 951, 3, 951, 3, 951, 3, + 951, 3, 951, 3, 951, 3, 951, 3, 951, 3, 951, 3, 951, 3, 951, 3, 951, 3, + 952, 3, 952, 3, 952, 3, 952, 3, 952, 3, 952, 3, 952, 3, 952, 3, 952, 3, + 952, 3, 952, 3, 952, 3, 953, 3, 953, 3, 953, 3, 953, 3, 953, 3, 953, 3, + 953, 3, 953, 3, 953, 3, 953, 3, 953, 3, 954, 3, 954, 3, 954, 3, 954, 3, + 954, 3, 954, 3, 954, 3, 954, 3, 954, 3, 954, 3, 954, 3, 954, 3, 954, 3, + 954, 3, 955, 3, 955, 3, 955, 3, 955, 3, 955, 3, 955, 3, 955, 3, 955, 3, + 955, 3, 955, 3, 955, 3, 955, 3, 955, 3, 956, 3, 956, 3, 956, 3, 956, 3, + 956, 3, 956, 3, 956, 3, 956, 3, 956, 3, 956, 3, 956, 3, 956, 3, 957, 3, + 957, 3, 957, 3, 957, 3, 957, 3, 957, 3, 957, 3, 957, 3, 957, 3, 957, 3, + 957, 3, 957, 3, 958, 3, 958, 3, 958, 3, 958, 3, 958, 3, 958, 3, 958, 3, + 958, 3, 958, 3, 958, 3, 958, 3, 958, 3, 959, 3, 959, 3, 959, 3, 959, 3, + 959, 3, 959, 3, 959, 3, 959, 3, 959, 3, 959, 3, 959, 3, 959, 3, 960, 3, + 960, 3, 960, 3, 960, 3, 960, 3, 960, 3, 960, 3, 960, 3, 960, 3, 960, 3, + 961, 3, 961, 3, 961, 3, 961, 3, 961, 3, 961, 3, 961, 3, 961, 3, 961, 3, + 961, 3, 961, 3, 961, 3, 961, 3, 961, 3, 961, 3, 961, 3, 962, 3, 962, 3, + 962, 3, 962, 3, 962, 3, 962, 3, 962, 3, 962, 3, 962, 3, 962, 3, 962, 3, + 962, 3, 962, 3, 962, 3, 962, 3, 962, 3, 962, 3, 962, 3, 962, 3, 962, 3, + 963, 3, 963, 3, 963, 3, 963, 3, 963, 3, 963, 3, 963, 3, 963, 3, 963, 3, + 963, 3, 963, 3, 963, 3, 963, 3, 963, 3, 963, 3, 963, 3, 963, 3, 963, 3, + 963, 3, 964, 3, 964, 3, 964, 3, 964, 3, 964, 3, 964, 3, 964, 3, 964, 3, + 964, 3, 964, 3, 964, 3, 964, 3, 964, 3, 964, 3, 964, 3, 964, 3, 964, 3, + 964, 3, 964, 3, 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, + 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, + 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, + 965, 3, 965, 3, 965, 3, 965, 3, 965, 3, 966, 3, 966, 3, 966, 3, 966, 3, + 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, + 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, + 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, 966, 3, 967, 3, 967, 3, + 967, 3, 967, 3, 967, 3, 967, 3, 967, 3, 967, 3, 967, 3, 967, 3, 967, 3, + 967, 3, 967, 3, 967, 3, 967, 3, 967, 3, 967, 3, 967, 3, 967, 3, 967, 3, + 968, 3, 968, 3, 968, 3, 968, 3, 968, 3, 968, 3, 968, 3, 968, 3, 968, 3, + 968, 3, 968, 3, 968, 3, 968, 3, 968, 3, 968, 3, 968, 3, 968, 3, 968, 3, + 968, 3, 969, 3, 969, 3, 969, 3, 969, 3, 969, 3, 969, 3, 969, 3, 969, 3, + 969, 3, 969, 3, 969, 3, 969, 3, 969, 3, 970, 3, 970, 3, 970, 3, 970, 3, + 970, 3, 970, 3, 970, 3, 970, 3, 970, 3, 970, 3, 970, 3, 970, 3, 970, 3, + 970, 3, 970, 3, 970, 3, 971, 3, 971, 3, 971, 3, 971, 3, 971, 3, 971, 3, + 971, 3, 971, 3, 971, 3, 971, 3, 971, 3, 971, 3, 971, 3, 971, 3, 971, 3, + 971, 3, 972, 3, 972, 3, 972, 3, 972, 3, 972, 3, 972, 3, 972, 3, 972, 3, + 972, 3, 972, 3, 972, 3, 972, 3, 972, 3, 972, 3, 972, 3, 973, 3, 973, 3, + 973, 3, 973, 3, 973, 3, 973, 3, 973, 3, 973, 3, 973, 3, 973, 3, 973, 3, + 973, 3, 973, 3, 973, 3, 973, 3, 973, 3, 973, 3, 974, 3, 974, 3, 974, 3, + 974, 3, 974, 3, 974, 3, 974, 3, 974, 3, 974, 3, 974, 3, 974, 3, 974, 3, + 974, 3, 974, 3, 974, 3, 974, 3, 975, 3, 975, 3, 975, 3, 975, 3, 975, 3, + 975, 3, 975, 3, 975, 3, 975, 3, 975, 3, 975, 3, 975, 3, 975, 3, 975, 3, + 976, 3, 976, 3, 976, 3, 976, 3, 976, 3, 976, 3, 976, 3, 976, 3, 976, 3, + 976, 3, 976, 3, 976, 3, 977, 3, 977, 3, 977, 3, 977, 3, 977, 3, 977, 3, + 977, 3, 977, 3, 977, 3, 977, 3, 977, 3, 978, 3, 978, 3, 978, 3, 978, 3, + 978, 3, 978, 3, 978, 3, 978, 3, 978, 3, 978, 3, 978, 3, 978, 3, 979, 3, + 979, 3, 979, 3, 979, 3, 979, 3, 979, 3, 979, 3, 979, 3, 979, 3, 979, 3, + 979, 3, 979, 3, 979, 3, 979, 3, 979, 3, 979, 3, 980, 3, 980, 3, 980, 3, + 980, 3, 980, 3, 980, 3, 980, 3, 980, 3, 980, 3, 980, 3, 980, 3, 980, 3, + 980, 3, 980, 3, 980, 3, 981, 3, 981, 3, 981, 3, 981, 3, 981, 3, 981, 3, + 981, 3, 981, 3, 981, 3, 981, 3, 981, 3, 981, 3, 981, 3, 981, 3, 981, 3, + 981, 3, 981, 3, 981, 3, 981, 3, 981, 3, 981, 3, 981, 3, 982, 3, 982, 3, + 982, 3, 982, 3, 982, 3, 982, 3, 982, 3, 982, 3, 982, 3, 982, 3, 982, 3, + 982, 3, 982, 3, 982, 3, 982, 3, 982, 3, 982, 3, 982, 3, 982, 3, 982, 3, + 982, 3, 983, 3, 983, 3, 983, 3, 983, 3, 983, 3, 983, 3, 983, 3, 983, 3, + 983, 3, 983, 3, 983, 3, 983, 3, 983, 3, 983, 3, 983, 3, 983, 3, 983, 3, + 984, 3, 984, 3, 984, 3, 984, 3, 984, 3, 984, 3, 984, 3, 984, 3, 984, 3, + 984, 3, 984, 3, 984, 3, 984, 3, 984, 3, 984, 3, 984, 3, 984, 3, 984, 3, + 984, 3, 985, 3, 985, 3, 985, 3, 985, 3, 985, 3, 985, 3, 985, 3, 985, 3, + 985, 3, 985, 3, 985, 3, 985, 3, 985, 3, 985, 3, 985, 3, 985, 3, 985, 3, + 985, 3, 985, 3, 985, 3, 986, 3, 986, 3, 986, 3, 986, 3, 986, 3, 986, 3, + 986, 3, 986, 3, 986, 3, 986, 3, 986, 3, 986, 3, 986, 3, 987, 3, 987, 3, + 987, 3, 987, 3, 987, 3, 987, 3, 987, 3, 987, 3, 987, 3, 987, 3, 987, 3, + 987, 3, 988, 3, 988, 3, 988, 3, 988, 3, 988, 3, 988, 3, 988, 3, 988, 3, + 988, 3, 988, 3, 988, 3, 988, 3, 988, 3, 988, 3, 988, 3, 988, 3, 988, 3, + 989, 3, 989, 3, 989, 3, 989, 3, 989, 3, 989, 3, 989, 3, 989, 3, 989, 3, + 989, 3, 989, 3, 989, 3, 989, 3, 989, 3, 989, 3, 989, 3, 990, 3, 990, 3, + 990, 3, 990, 3, 990, 3, 990, 3, 990, 3, 990, 3, 990, 3, 990, 3, 991, 3, + 991, 3, 991, 3, 991, 3, 991, 3, 991, 3, 991, 3, 991, 3, 991, 3, 991, 3, + 991, 3, 991, 3, 991, 3, 991, 3, 991, 3, 991, 3, 992, 3, 992, 3, 992, 3, + 992, 3, 992, 3, 992, 3, 992, 3, 992, 3, 992, 3, 992, 3, 992, 3, 992, 3, + 992, 3, 992, 3, 992, 3, 993, 3, 993, 3, 993, 3, 993, 3, 993, 3, 993, 3, + 993, 3, 993, 3, 993, 3, 993, 3, 993, 3, 993, 3, 993, 3, 993, 3, 993, 3, + 993, 3, 993, 3, 993, 3, 993, 3, 994, 3, 994, 3, 994, 3, 994, 3, 994, 3, + 994, 3, 994, 3, 994, 3, 994, 3, 994, 3, 994, 3, 994, 3, 994, 3, 994, 3, + 994, 3, 994, 3, 994, 3, 994, 3, 995, 3, 995, 3, 995, 3, 995, 3, 995, 3, + 995, 3, 995, 3, 995, 3, 996, 3, 996, 3, 996, 3, 996, 3, 996, 3, 996, 3, + 996, 3, 996, 3, 996, 3, 996, 3, 996, 3, 996, 3, 996, 3, 996, 3, 997, 3, + 997, 3, 997, 3, 997, 3, 997, 3, 997, 3, 997, 3, 997, 3, 997, 3, 997, 3, + 997, 3, 997, 3, 997, 3, 997, 3, 997, 3, 997, 3, 997, 3, 998, 3, 998, 3, + 998, 3, 998, 3, 998, 3, 998, 3, 998, 3, 998, 3, 998, 3, 998, 3, 998, 3, + 999, 3, 999, 3, 999, 3, 999, 3, 999, 3, 999, 3, 999, 3, 999, 3, 999, 3, + 1000, 3, 1000, 3, 1000, 3, 1000, 3, 1000, 3, 1000, 3, 1000, 3, 1000, 3, + 1000, 3, 1000, 3, 1001, 3, 1001, 3, 1001, 3, 1001, 3, 1001, 3, 1002, 3, + 1002, 3, 1002, 3, 1002, 3, 1002, 3, 1003, 3, 1003, 3, 1003, 3, 1003, 3, + 1003, 3, 1003, 3, 1003, 3, 1003, 3, 1004, 3, 1004, 3, 1004, 3, 1004, 3, + 1004, 3, 1004, 3, 1004, 3, 1004, 3, 1004, 3, 1004, 3, 1004, 3, 1004, 3, + 1004, 3, 1004, 3, 1004, 3, 1004, 3, 1005, 3, 1005, 3, 1005, 3, 1005, 3, + 1005, 3, 1005, 3, 1005, 3, 1005, 3, 1006, 3, 1006, 3, 1006, 3, 1006, 3, + 1006, 3, 1006, 3, 1006, 3, 1006, 3, 1006, 3, 1006, 3, 1006, 3, 1006, 3, + 1007, 3, 1007, 3, 1007, 3, 1007, 3, 1008, 3, 1008, 3, 1008, 3, 1008, 3, + 1008, 3, 1008, 3, 1008, 3, 1008, 3, 1008, 3, 1009, 3, 1009, 3, 1009, 3, + 1009, 3, 1009, 3, 1009, 3, 1009, 3, 1009, 3, 1009, 3, 1009, 3, 1009, 3, + 1009, 3, 1009, 3, 1010, 3, 1010, 3, 1010, 3, 1010, 3, 1010, 3, 1010, 3, + 1010, 3, 1010, 3, 1010, 3, 1010, 3, 1010, 3, 1010, 3, 1010, 3, 1010, 3, + 1011, 3, 1011, 3, 1011, 3, 1011, 3, 1011, 3, 1011, 3, 1011, 3, 1011, 3, + 1011, 3, 1011, 3, 1011, 3, 1011, 3, 1012, 3, 1012, 3, 1012, 3, 1012, 3, + 1012, 3, 1012, 3, 1012, 3, 1012, 3, 1012, 3, 1012, 3, 1012, 3, 1012, 3, + 1013, 3, 1013, 3, 1013, 3, 1013, 3, 1013, 3, 1013, 3, 1013, 3, 1013, 3, + 1014, 3, 1014, 3, 1014, 3, 1014, 3, 1014, 3, 1014, 3, 1014, 3, 1014, 3, + 1014, 3, 1014, 3, 1015, 3, 1015, 3, 1015, 3, 1015, 3, 1015, 3, 1015, 3, + 1015, 3, 1015, 3, 1016, 3, 1016, 3, 1016, 3, 1016, 3, 1016, 3, 1016, 3, + 1016, 3, 1016, 3, 1016, 3, 1016, 3, 1016, 3, 1017, 3, 1017, 3, 1017, 3, + 1017, 3, 1017, 3, 1017, 3, 1018, 3, 1018, 3, 1018, 3, 1018, 3, 1018, 3, + 1018, 3, 1018, 3, 1018, 3, 1018, 3, 1018, 3, 1018, 3, 1019, 3, 1019, 3, + 1019, 3, 1019, 3, 1019, 3, 1019, 3, 1019, 3, 1019, 3, 1019, 3, 1019, 3, + 1019, 3, 1019, 3, 1019, 3, 1019, 3, 1019, 3, 1019, 3, 1019, 3, 1019, 3, + 1019, 3, 1019, 3, 1020, 3, 1020, 3, 1020, 3, 1020, 3, 1020, 3, 1020, 3, + 1021, 3, 1021, 3, 1021, 3, 1021, 3, 1021, 3, 1021, 3, 1021, 3, 1021, 3, + 1021, 3, 1021, 3, 1021, 3, 1021, 3, 1021, 3, 1021, 3, 1021, 3, 1022, 3, + 1022, 3, 1022, 3, 1022, 3, 1022, 3, 1022, 3, 1022, 3, 1022, 3, 1022, 3, + 1022, 3, 1023, 3, 1023, 3, 1023, 3, 1023, 3, 1023, 3, 1023, 3, 1024, 3, + 1024, 3, 1024, 3, 1024, 3, 1024, 3, 1025, 3, 1025, 3, 1025, 3, 1025, 3, + 1025, 3, 1025, 3, 1025, 3, 1025, 3, 1025, 3, 1025, 3, 1025, 3, 1026, 3, + 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, + 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, + 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, 1026, 3, + 1026, 3, 1026, 3, 1027, 3, 1027, 3, 1027, 3, 1027, 3, 1027, 3, 1027, 3, + 1027, 3, 1027, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, + 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, + 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, + 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1028, 3, + 1028, 3, 1028, 3, 1028, 3, 1028, 3, 1029, 3, 1029, 3, 1029, 3, 1029, 3, + 1029, 3, 1029, 3, 1029, 3, 1029, 3, 1030, 3, 1030, 3, 1030, 3, 1030, 3, + 1030, 3, 1030, 3, 1030, 3, 1030, 3, 1030, 3, 1030, 3, 1030, 3, 1031, 3, + 1031, 3, 1031, 3, 1031, 3, 1031, 3, 1031, 3, 1031, 3, 1031, 3, 1031, 3, + 1031, 3, 1031, 3, 1031, 3, 1031, 3, 1031, 3, 1032, 3, 1032, 3, 1032, 3, + 1032, 3, 1032, 3, 1032, 3, 1032, 3, 1033, 3, 1033, 3, 1033, 3, 1033, 3, + 1033, 3, 1033, 3, 1033, 3, 1033, 3, 1033, 3, 1034, 3, 1034, 3, 1035, 3, + 1035, 3, 1036, 3, 1036, 3, 1036, 3, 1037, 3, 1037, 3, 1037, 3, 1038, 3, + 1038, 3, 1038, 3, 1039, 3, 1039, 3, 1039, 3, 1040, 3, 1040, 3, 1040, 3, + 1041, 3, 1041, 3, 1041, 3, 1042, 3, 1042, 3, 1042, 3, 1043, 3, 1043, 3, + 1043, 3, 1044, 3, 1044, 3, 1044, 3, 1045, 3, 1045, 3, 1046, 3, 1046, 3, + 1047, 3, 1047, 3, 1048, 3, 1048, 3, 1049, 3, 1049, 3, 1049, 3, 1050, 3, + 1050, 3, 1051, 3, 1051, 3, 1051, 3, 1051, 3, 1052, 3, 1052, 3, 1052, 3, + 1052, 3, 1053, 3, 1053, 3, 1054, 3, 1054, 3, 1055, 3, 1055, 3, 1056, 3, + 1056, 3, 1057, 3, 1057, 3, 1058, 3, 1058, 3, 1059, 3, 1059, 3, 1060, 3, + 1060, 3, 1061, 3, 1061, 3, 1062, 3, 1062, 3, 1063, 3, 1063, 3, 1064, 3, + 1064, 3, 1065, 3, 1065, 3, 1066, 3, 1066, 3, 1067, 3, 1067, 3, 1068, 3, + 1068, 3, 1069, 3, 1069, 3, 1070, 3, 1070, 3, 1071, 3, 1071, 3, 1072, 3, + 1072, 3, 1073, 3, 1073, 3, 1074, 3, 1074, 3, 1074, 5, 1074, 12513, 10, + 1074, 3, 1075, 3, 1075, 3, 1075, 3, 1075, 3, 1076, 6, 1076, 12520, 10, + 1076, 13, 1076, 14, 1076, 12521, 3, 1076, 3, 1076, 3, 1077, 3, 1077, 3, + 1077, 3, 1078, 3, 1078, 3, 1078, 5, 1078, 12532, 10, 1078, 3, 1079, 6, + 1079, 12535, 10, 1079, 13, 1079, 14, 1079, 12536, 3, 1080, 3, 1080, 3, + 1080, 3, 1080, 3, 1080, 6, 1080, 12544, 10, 1080, 13, 1080, 14, 1080, 12545, + 3, 1080, 3, 1080, 3, 1080, 3, 1080, 3, 1080, 3, 1080, 6, 1080, 12554, 10, + 1080, 13, 1080, 14, 1080, 12555, 5, 1080, 12558, 10, 1080, 3, 1081, 6, + 1081, 12561, 10, 1081, 13, 1081, 14, 1081, 12562, 5, 1081, 12565, 10, 1081, + 3, 1081, 3, 1081, 6, 1081, 12569, 10, 1081, 13, 1081, 14, 1081, 12570, + 3, 1081, 6, 1081, 12574, 10, 1081, 13, 1081, 14, 1081, 12575, 3, 1081, + 3, 1081, 3, 1081, 3, 1081, 6, 1081, 12582, 10, 1081, 13, 1081, 14, 1081, + 12583, 5, 1081, 12586, 10, 1081, 3, 1081, 3, 1081, 6, 1081, 12590, 10, + 1081, 13, 1081, 14, 1081, 12591, 3, 1081, 3, 1081, 3, 1081, 6, 1081, 12597, + 10, 1081, 13, 1081, 14, 1081, 12598, 3, 1081, 3, 1081, 5, 1081, 12603, + 10, 1081, 3, 1082, 3, 1082, 3, 1082, 3, 1083, 3, 1083, 3, 1084, 3, 1084, + 3, 1084, 3, 1085, 3, 1085, 3, 1085, 3, 1086, 3, 1086, 3, 1087, 3, 1087, + 6, 1087, 12620, 10, 1087, 13, 1087, 14, 1087, 12621, 3, 1087, 3, 1087, + 3, 1088, 3, 1088, 3, 1088, 3, 1088, 5, 1088, 12630, 10, 1088, 3, 1088, + 3, 1088, 3, 1088, 3, 1088, 3, 1088, 3, 1088, 5, 1088, 12638, 10, 1088, + 3, 1089, 6, 1089, 12641, 10, 1089, 13, 1089, 14, 1089, 12642, 3, 1089, + 3, 1089, 6, 1089, 12647, 10, 1089, 13, 1089, 14, 1089, 12648, 3, 1089, + 6, 1089, 12652, 10, 1089, 13, 1089, 14, 1089, 12653, 3, 1089, 3, 1089, + 6, 1089, 12658, 10, 1089, 13, 1089, 14, 1089, 12659, 5, 1089, 12662, 10, + 1089, 3, 1090, 3, 1090, 6, 1090, 12666, 10, 1090, 13, 1090, 14, 1090, 12667, + 3, 1090, 3, 1090, 3, 1090, 5, 1090, 12673, 10, 1090, 3, 1091, 3, 1091, + 3, 1091, 6, 1091, 12678, 10, 1091, 13, 1091, 14, 1091, 12679, 3, 1091, + 5, 1091, 12683, 10, 1091, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, + 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, + 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, + 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, + 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, 3, 1092, + 3, 1092, 3, 1092, 3, 1092, 3, 1092, 5, 1092, 12726, 10, 1092, 3, 1093, + 3, 1093, 5, 1093, 12730, 10, 1093, 3, 1093, 6, 1093, 12733, 10, 1093, 13, + 1093, 14, 1093, 12734, 3, 1094, 7, 1094, 12738, 10, 1094, 12, 1094, 14, + 1094, 12741, 11, 1094, 3, 1094, 6, 1094, 12744, 10, 1094, 13, 1094, 14, + 1094, 12745, 3, 1094, 7, 1094, 12749, 10, 1094, 12, 1094, 14, 1094, 12752, + 11, 1094, 3, 1095, 3, 1095, 3, 1095, 3, 1095, 3, 1095, 3, 1095, 7, 1095, + 12760, 10, 1095, 12, 1095, 14, 1095, 12763, 11, 1095, 3, 1095, 3, 1095, + 3, 1096, 3, 1096, 3, 1096, 3, 1096, 3, 1096, 3, 1096, 7, 1096, 12773, 10, + 1096, 12, 1096, 14, 1096, 12776, 11, 1096, 3, 1096, 3, 1096, 3, 1097, 3, + 1097, 3, 1097, 3, 1097, 3, 1097, 3, 1097, 7, 1097, 12786, 10, 1097, 12, + 1097, 14, 1097, 12789, 11, 1097, 3, 1097, 3, 1097, 3, 1098, 3, 1098, 3, + 1099, 3, 1099, 3, 1100, 3, 1100, 3, 1100, 6, 1100, 12800, 10, 1100, 13, + 1100, 14, 1100, 12801, 3, 1100, 3, 1100, 3, 1101, 3, 1101, 3, 1101, 3, + 1101, 6, 2217, 2230, 12739, 12745, 2, 1102, 3, 3, 5, 4, 7, 5, 9, 6, 11, + 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, + 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, + 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, + 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, + 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, + 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, + 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, + 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 75, 149, 76, + 151, 77, 153, 78, 155, 79, 157, 80, 159, 81, 161, 82, 163, 83, 165, 84, + 167, 85, 169, 86, 171, 87, 173, 88, 175, 89, 177, 90, 179, 91, 181, 92, + 183, 93, 185, 94, 187, 95, 189, 96, 191, 97, 193, 98, 195, 99, 197, 100, + 199, 101, 201, 102, 203, 103, 205, 104, 207, 105, 209, 106, 211, 107, 213, + 108, 215, 109, 217, 110, 219, 111, 221, 112, 223, 113, 225, 114, 227, 115, + 229, 116, 231, 117, 233, 118, 235, 119, 237, 120, 239, 121, 241, 122, 243, + 123, 245, 124, 247, 125, 249, 126, 251, 127, 253, 128, 255, 129, 257, 130, + 259, 131, 261, 132, 263, 133, 265, 134, 267, 135, 269, 136, 271, 137, 273, + 138, 275, 139, 277, 140, 279, 141, 281, 142, 283, 143, 285, 144, 287, 145, + 289, 146, 291, 147, 293, 148, 295, 149, 297, 150, 299, 151, 301, 152, 303, + 153, 305, 154, 307, 155, 309, 156, 311, 157, 313, 158, 315, 159, 317, 160, + 319, 161, 321, 162, 323, 163, 325, 164, 327, 165, 329, 166, 331, 167, 333, + 168, 335, 169, 337, 170, 339, 171, 341, 172, 343, 173, 345, 174, 347, 175, + 349, 176, 351, 177, 353, 178, 355, 179, 357, 180, 359, 181, 361, 182, 363, + 183, 365, 184, 367, 185, 369, 186, 371, 187, 373, 188, 375, 189, 377, 190, + 379, 191, 381, 192, 383, 193, 385, 194, 387, 195, 389, 196, 391, 197, 393, + 198, 395, 199, 397, 200, 399, 201, 401, 202, 403, 203, 405, 204, 407, 205, + 409, 206, 411, 207, 413, 208, 415, 209, 417, 210, 419, 211, 421, 212, 423, + 213, 425, 214, 427, 215, 429, 216, 431, 217, 433, 218, 435, 219, 437, 220, + 439, 221, 441, 222, 443, 223, 445, 224, 447, 225, 449, 226, 451, 227, 453, + 228, 455, 229, 457, 230, 459, 231, 461, 232, 463, 233, 465, 234, 467, 235, + 469, 236, 471, 237, 473, 238, 475, 239, 477, 240, 479, 241, 481, 242, 483, + 243, 485, 244, 487, 245, 489, 246, 491, 247, 493, 248, 495, 249, 497, 250, + 499, 251, 501, 252, 503, 253, 505, 254, 507, 255, 509, 256, 511, 257, 513, + 258, 515, 259, 517, 260, 519, 261, 521, 262, 523, 263, 525, 264, 527, 265, + 529, 266, 531, 267, 533, 268, 535, 269, 537, 270, 539, 271, 541, 272, 543, + 273, 545, 274, 547, 275, 549, 276, 551, 277, 553, 278, 555, 279, 557, 280, + 559, 281, 561, 282, 563, 283, 565, 284, 567, 285, 569, 286, 571, 287, 573, + 288, 575, 289, 577, 290, 579, 291, 581, 292, 583, 293, 585, 294, 587, 295, + 589, 296, 591, 297, 593, 298, 595, 299, 597, 300, 599, 301, 601, 302, 603, + 303, 605, 304, 607, 305, 609, 306, 611, 307, 613, 308, 615, 309, 617, 310, + 619, 311, 621, 312, 623, 313, 625, 314, 627, 315, 629, 316, 631, 317, 633, + 318, 635, 319, 637, 320, 639, 321, 641, 322, 643, 323, 645, 324, 647, 325, + 649, 326, 651, 327, 653, 328, 655, 329, 657, 330, 659, 331, 661, 332, 663, + 333, 665, 334, 667, 335, 669, 336, 671, 337, 673, 338, 675, 339, 677, 340, + 679, 341, 681, 342, 683, 343, 685, 344, 687, 345, 689, 346, 691, 347, 693, + 348, 695, 349, 697, 350, 699, 351, 701, 352, 703, 353, 705, 354, 707, 355, + 709, 356, 711, 357, 713, 358, 715, 359, 717, 360, 719, 361, 721, 362, 723, + 363, 725, 364, 727, 365, 729, 366, 731, 367, 733, 368, 735, 369, 737, 370, + 739, 371, 741, 372, 743, 373, 745, 374, 747, 375, 749, 376, 751, 377, 753, + 378, 755, 379, 757, 380, 759, 381, 761, 382, 763, 383, 765, 384, 767, 385, + 769, 386, 771, 387, 773, 388, 775, 389, 777, 390, 779, 391, 781, 392, 783, + 393, 785, 394, 787, 395, 789, 396, 791, 397, 793, 398, 795, 399, 797, 400, + 799, 401, 801, 402, 803, 403, 805, 404, 807, 405, 809, 406, 811, 407, 813, + 408, 815, 409, 817, 410, 819, 411, 821, 412, 823, 413, 825, 414, 827, 415, + 829, 416, 831, 417, 833, 418, 835, 419, 837, 420, 839, 421, 841, 422, 843, + 423, 845, 424, 847, 425, 849, 426, 851, 427, 853, 428, 855, 429, 857, 430, + 859, 431, 861, 432, 863, 433, 865, 434, 867, 435, 869, 436, 871, 437, 873, + 438, 875, 439, 877, 440, 879, 441, 881, 442, 883, 443, 885, 444, 887, 445, + 889, 446, 891, 447, 893, 448, 895, 449, 897, 450, 899, 451, 901, 452, 903, + 453, 905, 454, 907, 455, 909, 456, 911, 457, 913, 458, 915, 459, 917, 460, + 919, 461, 921, 462, 923, 463, 925, 464, 927, 465, 929, 466, 931, 467, 933, + 468, 935, 469, 937, 470, 939, 471, 941, 472, 943, 473, 945, 474, 947, 475, + 949, 476, 951, 477, 953, 478, 955, 479, 957, 480, 959, 481, 961, 482, 963, + 483, 965, 484, 967, 485, 969, 486, 971, 487, 973, 488, 975, 489, 977, 490, + 979, 491, 981, 492, 983, 493, 985, 494, 987, 495, 989, 496, 991, 497, 993, + 498, 995, 499, 997, 500, 999, 501, 1001, 502, 1003, 503, 1005, 504, 1007, + 505, 1009, 506, 1011, 507, 1013, 508, 1015, 509, 1017, 510, 1019, 511, + 1021, 512, 1023, 513, 1025, 514, 1027, 515, 1029, 516, 1031, 517, 1033, + 518, 1035, 519, 1037, 520, 1039, 521, 1041, 522, 1043, 523, 1045, 524, + 1047, 525, 1049, 526, 1051, 527, 1053, 528, 1055, 529, 1057, 530, 1059, + 531, 1061, 532, 1063, 533, 1065, 534, 1067, 535, 1069, 536, 1071, 537, + 1073, 538, 1075, 539, 1077, 540, 1079, 541, 1081, 542, 1083, 543, 1085, + 544, 1087, 545, 1089, 546, 1091, 547, 1093, 548, 1095, 549, 1097, 550, + 1099, 551, 1101, 552, 1103, 553, 1105, 554, 1107, 555, 1109, 556, 1111, + 557, 1113, 558, 1115, 559, 1117, 560, 1119, 561, 1121, 562, 1123, 563, + 1125, 564, 1127, 565, 1129, 566, 1131, 567, 1133, 568, 1135, 569, 1137, + 570, 1139, 571, 1141, 572, 1143, 573, 1145, 574, 1147, 575, 1149, 576, + 1151, 577, 1153, 578, 1155, 579, 1157, 580, 1159, 581, 1161, 582, 1163, + 583, 1165, 584, 1167, 585, 1169, 586, 1171, 587, 1173, 588, 1175, 589, + 1177, 590, 1179, 591, 1181, 592, 1183, 593, 1185, 594, 1187, 595, 1189, + 596, 1191, 597, 1193, 598, 1195, 599, 1197, 600, 1199, 601, 1201, 602, + 1203, 603, 1205, 604, 1207, 605, 1209, 606, 1211, 607, 1213, 608, 1215, + 609, 1217, 610, 1219, 611, 1221, 612, 1223, 613, 1225, 614, 1227, 615, + 1229, 616, 1231, 617, 1233, 618, 1235, 619, 1237, 620, 1239, 621, 1241, + 622, 1243, 623, 1245, 624, 1247, 625, 1249, 626, 1251, 627, 1253, 628, + 1255, 629, 1257, 630, 1259, 631, 1261, 632, 1263, 633, 1265, 634, 1267, + 635, 1269, 636, 1271, 637, 1273, 638, 1275, 639, 1277, 640, 1279, 641, + 1281, 642, 1283, 643, 1285, 644, 1287, 645, 1289, 646, 1291, 647, 1293, + 648, 1295, 649, 1297, 650, 1299, 651, 1301, 652, 1303, 653, 1305, 654, + 1307, 655, 1309, 656, 1311, 657, 1313, 658, 1315, 659, 1317, 660, 1319, + 661, 1321, 662, 1323, 663, 1325, 664, 1327, 665, 1329, 666, 1331, 667, + 1333, 668, 1335, 669, 1337, 670, 1339, 671, 1341, 672, 1343, 673, 1345, + 674, 1347, 675, 1349, 676, 1351, 677, 1353, 678, 1355, 679, 1357, 680, + 1359, 681, 1361, 682, 1363, 683, 1365, 684, 1367, 685, 1369, 686, 1371, + 687, 1373, 688, 1375, 689, 1377, 690, 1379, 691, 1381, 692, 1383, 693, + 1385, 694, 1387, 695, 1389, 696, 1391, 697, 1393, 698, 1395, 699, 1397, + 700, 1399, 701, 1401, 702, 1403, 703, 1405, 704, 1407, 705, 1409, 706, + 1411, 707, 1413, 708, 1415, 709, 1417, 710, 1419, 711, 1421, 712, 1423, + 713, 1425, 714, 1427, 715, 1429, 716, 1431, 717, 1433, 718, 1435, 719, + 1437, 720, 1439, 721, 1441, 722, 1443, 723, 1445, 724, 1447, 725, 1449, + 726, 1451, 727, 1453, 728, 1455, 729, 1457, 730, 1459, 731, 1461, 732, + 1463, 733, 1465, 734, 1467, 735, 1469, 736, 1471, 737, 1473, 738, 1475, + 739, 1477, 740, 1479, 741, 1481, 742, 1483, 743, 1485, 744, 1487, 745, + 1489, 746, 1491, 747, 1493, 748, 1495, 749, 1497, 750, 1499, 751, 1501, + 752, 1503, 753, 1505, 754, 1507, 755, 1509, 756, 1511, 757, 1513, 758, + 1515, 759, 1517, 760, 1519, 761, 1521, 762, 1523, 763, 1525, 764, 1527, + 765, 1529, 766, 1531, 767, 1533, 768, 1535, 769, 1537, 770, 1539, 771, + 1541, 772, 1543, 773, 1545, 774, 1547, 775, 1549, 776, 1551, 777, 1553, + 778, 1555, 779, 1557, 780, 1559, 781, 1561, 782, 1563, 783, 1565, 784, + 1567, 785, 1569, 786, 1571, 787, 1573, 788, 1575, 789, 1577, 790, 1579, + 791, 1581, 792, 1583, 793, 1585, 794, 1587, 795, 1589, 796, 1591, 797, + 1593, 798, 1595, 799, 1597, 800, 1599, 801, 1601, 802, 1603, 803, 1605, + 804, 1607, 805, 1609, 806, 1611, 807, 1613, 808, 1615, 809, 1617, 810, + 1619, 811, 1621, 812, 1623, 813, 1625, 814, 1627, 815, 1629, 816, 1631, + 817, 1633, 818, 1635, 819, 1637, 820, 1639, 821, 1641, 822, 1643, 823, + 1645, 824, 1647, 825, 1649, 826, 1651, 827, 1653, 828, 1655, 829, 1657, + 830, 1659, 831, 1661, 832, 1663, 833, 1665, 834, 1667, 835, 1669, 836, + 1671, 837, 1673, 838, 1675, 839, 1677, 840, 1679, 841, 1681, 842, 1683, + 843, 1685, 844, 1687, 845, 1689, 846, 1691, 847, 1693, 848, 1695, 849, + 1697, 850, 1699, 851, 1701, 852, 1703, 853, 1705, 854, 1707, 855, 1709, + 856, 1711, 857, 1713, 858, 1715, 859, 1717, 860, 1719, 861, 1721, 862, + 1723, 863, 1725, 864, 1727, 865, 1729, 866, 1731, 867, 1733, 868, 1735, + 869, 1737, 870, 1739, 871, 1741, 872, 1743, 873, 1745, 874, 1747, 875, + 1749, 876, 1751, 877, 1753, 878, 1755, 879, 1757, 880, 1759, 881, 1761, + 882, 1763, 883, 1765, 884, 1767, 885, 1769, 886, 1771, 887, 1773, 888, + 1775, 889, 1777, 890, 1779, 891, 1781, 892, 1783, 893, 1785, 894, 1787, + 895, 1789, 896, 1791, 897, 1793, 898, 1795, 899, 1797, 900, 1799, 901, + 1801, 902, 1803, 903, 1805, 904, 1807, 905, 1809, 906, 1811, 907, 1813, + 908, 1815, 909, 1817, 910, 1819, 911, 1821, 912, 1823, 913, 1825, 914, + 1827, 915, 1829, 916, 1831, 917, 1833, 918, 1835, 919, 1837, 920, 1839, + 921, 1841, 922, 1843, 923, 1845, 924, 1847, 925, 1849, 926, 1851, 927, + 1853, 928, 1855, 929, 1857, 930, 1859, 931, 1861, 932, 1863, 933, 1865, + 934, 1867, 935, 1869, 936, 1871, 937, 1873, 938, 1875, 939, 1877, 940, + 1879, 941, 1881, 942, 1883, 943, 1885, 944, 1887, 945, 1889, 946, 1891, + 947, 1893, 948, 1895, 949, 1897, 950, 1899, 951, 1901, 952, 1903, 953, + 1905, 954, 1907, 955, 1909, 956, 1911, 957, 1913, 958, 1915, 959, 1917, + 960, 1919, 961, 1921, 962, 1923, 963, 1925, 964, 1927, 965, 1929, 966, + 1931, 967, 1933, 968, 1935, 969, 1937, 970, 1939, 971, 1941, 972, 1943, + 973, 1945, 974, 1947, 975, 1949, 976, 1951, 977, 1953, 978, 1955, 979, + 1957, 980, 1959, 981, 1961, 982, 1963, 983, 1965, 984, 1967, 985, 1969, + 986, 1971, 987, 1973, 988, 1975, 989, 1977, 990, 1979, 991, 1981, 992, + 1983, 993, 1985, 994, 1987, 995, 1989, 996, 1991, 997, 1993, 998, 1995, + 999, 1997, 1000, 1999, 1001, 2001, 1002, 2003, 1003, 2005, 1004, 2007, + 1005, 2009, 1006, 2011, 1007, 2013, 1008, 2015, 1009, 2017, 1010, 2019, + 1011, 2021, 1012, 2023, 1013, 2025, 1014, 2027, 1015, 2029, 1016, 2031, + 1017, 2033, 1018, 2035, 1019, 2037, 1020, 2039, 1021, 2041, 1022, 2043, + 1023, 2045, 1024, 2047, 1025, 2049, 1026, 2051, 1027, 2053, 1028, 2055, + 1029, 2057, 1030, 2059, 1031, 2061, 1032, 2063, 1033, 2065, 1034, 2067, + 1035, 2069, 1036, 2071, 1037, 2073, 1038, 2075, 1039, 2077, 1040, 2079, + 1041, 2081, 1042, 2083, 1043, 2085, 1044, 2087, 1045, 2089, 1046, 2091, + 1047, 2093, 1048, 2095, 1049, 2097, 1050, 2099, 1051, 2101, 1052, 2103, + 1053, 2105, 1054, 2107, 1055, 2109, 1056, 2111, 1057, 2113, 1058, 2115, + 1059, 2117, 1060, 2119, 1061, 2121, 1062, 2123, 1063, 2125, 1064, 2127, + 1065, 2129, 1066, 2131, 1067, 2133, 1068, 2135, 1069, 2137, 1070, 2139, + 1071, 2141, 1072, 2143, 1073, 2145, 1074, 2147, 2, 2149, 1075, 2151, 1076, + 2153, 1077, 2155, 1078, 2157, 1079, 2159, 1080, 2161, 1081, 2163, 1082, + 2165, 1083, 2167, 1084, 2169, 1085, 2171, 1086, 2173, 1087, 2175, 1088, + 2177, 1089, 2179, 1090, 2181, 1091, 2183, 2, 2185, 2, 2187, 2, 2189, 2, + 2191, 2, 2193, 2, 2195, 2, 2197, 2, 2199, 2, 2201, 1092, 3, 2, 19, 5, 2, + 11, 12, 15, 15, 34, 34, 4, 2, 11, 11, 34, 34, 4, 2, 12, 12, 15, 15, 6, + 2, 73, 73, 77, 77, 79, 79, 86, 86, 3, 2, 98, 98, 3, 2, 50, 59, 4, 2, 48, + 48, 50, 59, 4, 2, 50, 60, 67, 72, 7, 2, 38, 38, 48, 48, 50, 59, 67, 92, + 97, 97, 4, 2, 45, 45, 47, 47, 7, 2, 38, 38, 50, 59, 67, 92, 97, 97, 130, + 1, 6, 2, 38, 38, 67, 92, 97, 97, 130, 1, 4, 2, 36, 36, 94, 94, 4, 2, 41, + 41, 94, 94, 4, 2, 94, 94, 98, 98, 4, 2, 50, 59, 67, 72, 3, 2, 50, 51, 2, + 12904, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, + 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, + 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, + 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, + 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, + 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, + 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, + 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, + 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, + 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, + 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, + 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, + 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, + 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, + 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, + 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, + 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, + 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, + 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, + 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, + 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, + 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, + 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, + 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, + 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, + 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, + 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, + 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, + 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, + 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, + 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, + 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 235, 3, 2, 2, 2, 2, 237, 3, 2, 2, 2, + 2, 239, 3, 2, 2, 2, 2, 241, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 245, 3, + 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, + 253, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, + 2, 2, 2, 261, 3, 2, 2, 2, 2, 263, 3, 2, 2, 2, 2, 265, 3, 2, 2, 2, 2, 267, + 3, 2, 2, 2, 2, 269, 3, 2, 2, 2, 2, 271, 3, 2, 2, 2, 2, 273, 3, 2, 2, 2, + 2, 275, 3, 2, 2, 2, 2, 277, 3, 2, 2, 2, 2, 279, 3, 2, 2, 2, 2, 281, 3, + 2, 2, 2, 2, 283, 3, 2, 2, 2, 2, 285, 3, 2, 2, 2, 2, 287, 3, 2, 2, 2, 2, + 289, 3, 2, 2, 2, 2, 291, 3, 2, 2, 2, 2, 293, 3, 2, 2, 2, 2, 295, 3, 2, + 2, 2, 2, 297, 3, 2, 2, 2, 2, 299, 3, 2, 2, 2, 2, 301, 3, 2, 2, 2, 2, 303, + 3, 2, 2, 2, 2, 305, 3, 2, 2, 2, 2, 307, 3, 2, 2, 2, 2, 309, 3, 2, 2, 2, + 2, 311, 3, 2, 2, 2, 2, 313, 3, 2, 2, 2, 2, 315, 3, 2, 2, 2, 2, 317, 3, + 2, 2, 2, 2, 319, 3, 2, 2, 2, 2, 321, 3, 2, 2, 2, 2, 323, 3, 2, 2, 2, 2, + 325, 3, 2, 2, 2, 2, 327, 3, 2, 2, 2, 2, 329, 3, 2, 2, 2, 2, 331, 3, 2, + 2, 2, 2, 333, 3, 2, 2, 2, 2, 335, 3, 2, 2, 2, 2, 337, 3, 2, 2, 2, 2, 339, + 3, 2, 2, 2, 2, 341, 3, 2, 2, 2, 2, 343, 3, 2, 2, 2, 2, 345, 3, 2, 2, 2, + 2, 347, 3, 2, 2, 2, 2, 349, 3, 2, 2, 2, 2, 351, 3, 2, 2, 2, 2, 353, 3, + 2, 2, 2, 2, 355, 3, 2, 2, 2, 2, 357, 3, 2, 2, 2, 2, 359, 3, 2, 2, 2, 2, + 361, 3, 2, 2, 2, 2, 363, 3, 2, 2, 2, 2, 365, 3, 2, 2, 2, 2, 367, 3, 2, + 2, 2, 2, 369, 3, 2, 2, 2, 2, 371, 3, 2, 2, 2, 2, 373, 3, 2, 2, 2, 2, 375, + 3, 2, 2, 2, 2, 377, 3, 2, 2, 2, 2, 379, 3, 2, 2, 2, 2, 381, 3, 2, 2, 2, + 2, 383, 3, 2, 2, 2, 2, 385, 3, 2, 2, 2, 2, 387, 3, 2, 2, 2, 2, 389, 3, + 2, 2, 2, 2, 391, 3, 2, 2, 2, 2, 393, 3, 2, 2, 2, 2, 395, 3, 2, 2, 2, 2, + 397, 3, 2, 2, 2, 2, 399, 3, 2, 2, 2, 2, 401, 3, 2, 2, 2, 2, 403, 3, 2, + 2, 2, 2, 405, 3, 2, 2, 2, 2, 407, 3, 2, 2, 2, 2, 409, 3, 2, 2, 2, 2, 411, + 3, 2, 2, 2, 2, 413, 3, 2, 2, 2, 2, 415, 3, 2, 2, 2, 2, 417, 3, 2, 2, 2, + 2, 419, 3, 2, 2, 2, 2, 421, 3, 2, 2, 2, 2, 423, 3, 2, 2, 2, 2, 425, 3, + 2, 2, 2, 2, 427, 3, 2, 2, 2, 2, 429, 3, 2, 2, 2, 2, 431, 3, 2, 2, 2, 2, + 433, 3, 2, 2, 2, 2, 435, 3, 2, 2, 2, 2, 437, 3, 2, 2, 2, 2, 439, 3, 2, + 2, 2, 2, 441, 3, 2, 2, 2, 2, 443, 3, 2, 2, 2, 2, 445, 3, 2, 2, 2, 2, 447, + 3, 2, 2, 2, 2, 449, 3, 2, 2, 2, 2, 451, 3, 2, 2, 2, 2, 453, 3, 2, 2, 2, + 2, 455, 3, 2, 2, 2, 2, 457, 3, 2, 2, 2, 2, 459, 3, 2, 2, 2, 2, 461, 3, + 2, 2, 2, 2, 463, 3, 2, 2, 2, 2, 465, 3, 2, 2, 2, 2, 467, 3, 2, 2, 2, 2, + 469, 3, 2, 2, 2, 2, 471, 3, 2, 2, 2, 2, 473, 3, 2, 2, 2, 2, 475, 3, 2, + 2, 2, 2, 477, 3, 2, 2, 2, 2, 479, 3, 2, 2, 2, 2, 481, 3, 2, 2, 2, 2, 483, + 3, 2, 2, 2, 2, 485, 3, 2, 2, 2, 2, 487, 3, 2, 2, 2, 2, 489, 3, 2, 2, 2, + 2, 491, 3, 2, 2, 2, 2, 493, 3, 2, 2, 2, 2, 495, 3, 2, 2, 2, 2, 497, 3, + 2, 2, 2, 2, 499, 3, 2, 2, 2, 2, 501, 3, 2, 2, 2, 2, 503, 3, 2, 2, 2, 2, + 505, 3, 2, 2, 2, 2, 507, 3, 2, 2, 2, 2, 509, 3, 2, 2, 2, 2, 511, 3, 2, + 2, 2, 2, 513, 3, 2, 2, 2, 2, 515, 3, 2, 2, 2, 2, 517, 3, 2, 2, 2, 2, 519, + 3, 2, 2, 2, 2, 521, 3, 2, 2, 2, 2, 523, 3, 2, 2, 2, 2, 525, 3, 2, 2, 2, + 2, 527, 3, 2, 2, 2, 2, 529, 3, 2, 2, 2, 2, 531, 3, 2, 2, 2, 2, 533, 3, + 2, 2, 2, 2, 535, 3, 2, 2, 2, 2, 537, 3, 2, 2, 2, 2, 539, 3, 2, 2, 2, 2, + 541, 3, 2, 2, 2, 2, 543, 3, 2, 2, 2, 2, 545, 3, 2, 2, 2, 2, 547, 3, 2, + 2, 2, 2, 549, 3, 2, 2, 2, 2, 551, 3, 2, 2, 2, 2, 553, 3, 2, 2, 2, 2, 555, + 3, 2, 2, 2, 2, 557, 3, 2, 2, 2, 2, 559, 3, 2, 2, 2, 2, 561, 3, 2, 2, 2, + 2, 563, 3, 2, 2, 2, 2, 565, 3, 2, 2, 2, 2, 567, 3, 2, 2, 2, 2, 569, 3, + 2, 2, 2, 2, 571, 3, 2, 2, 2, 2, 573, 3, 2, 2, 2, 2, 575, 3, 2, 2, 2, 2, + 577, 3, 2, 2, 2, 2, 579, 3, 2, 2, 2, 2, 581, 3, 2, 2, 2, 2, 583, 3, 2, + 2, 2, 2, 585, 3, 2, 2, 2, 2, 587, 3, 2, 2, 2, 2, 589, 3, 2, 2, 2, 2, 591, + 3, 2, 2, 2, 2, 593, 3, 2, 2, 2, 2, 595, 3, 2, 2, 2, 2, 597, 3, 2, 2, 2, + 2, 599, 3, 2, 2, 2, 2, 601, 3, 2, 2, 2, 2, 603, 3, 2, 2, 2, 2, 605, 3, + 2, 2, 2, 2, 607, 3, 2, 2, 2, 2, 609, 3, 2, 2, 2, 2, 611, 3, 2, 2, 2, 2, + 613, 3, 2, 2, 2, 2, 615, 3, 2, 2, 2, 2, 617, 3, 2, 2, 2, 2, 619, 3, 2, + 2, 2, 2, 621, 3, 2, 2, 2, 2, 623, 3, 2, 2, 2, 2, 625, 3, 2, 2, 2, 2, 627, + 3, 2, 2, 2, 2, 629, 3, 2, 2, 2, 2, 631, 3, 2, 2, 2, 2, 633, 3, 2, 2, 2, + 2, 635, 3, 2, 2, 2, 2, 637, 3, 2, 2, 2, 2, 639, 3, 2, 2, 2, 2, 641, 3, + 2, 2, 2, 2, 643, 3, 2, 2, 2, 2, 645, 3, 2, 2, 2, 2, 647, 3, 2, 2, 2, 2, + 649, 3, 2, 2, 2, 2, 651, 3, 2, 2, 2, 2, 653, 3, 2, 2, 2, 2, 655, 3, 2, + 2, 2, 2, 657, 3, 2, 2, 2, 2, 659, 3, 2, 2, 2, 2, 661, 3, 2, 2, 2, 2, 663, + 3, 2, 2, 2, 2, 665, 3, 2, 2, 2, 2, 667, 3, 2, 2, 2, 2, 669, 3, 2, 2, 2, + 2, 671, 3, 2, 2, 2, 2, 673, 3, 2, 2, 2, 2, 675, 3, 2, 2, 2, 2, 677, 3, + 2, 2, 2, 2, 679, 3, 2, 2, 2, 2, 681, 3, 2, 2, 2, 2, 683, 3, 2, 2, 2, 2, + 685, 3, 2, 2, 2, 2, 687, 3, 2, 2, 2, 2, 689, 3, 2, 2, 2, 2, 691, 3, 2, + 2, 2, 2, 693, 3, 2, 2, 2, 2, 695, 3, 2, 2, 2, 2, 697, 3, 2, 2, 2, 2, 699, + 3, 2, 2, 2, 2, 701, 3, 2, 2, 2, 2, 703, 3, 2, 2, 2, 2, 705, 3, 2, 2, 2, + 2, 707, 3, 2, 2, 2, 2, 709, 3, 2, 2, 2, 2, 711, 3, 2, 2, 2, 2, 713, 3, + 2, 2, 2, 2, 715, 3, 2, 2, 2, 2, 717, 3, 2, 2, 2, 2, 719, 3, 2, 2, 2, 2, + 721, 3, 2, 2, 2, 2, 723, 3, 2, 2, 2, 2, 725, 3, 2, 2, 2, 2, 727, 3, 2, + 2, 2, 2, 729, 3, 2, 2, 2, 2, 731, 3, 2, 2, 2, 2, 733, 3, 2, 2, 2, 2, 735, + 3, 2, 2, 2, 2, 737, 3, 2, 2, 2, 2, 739, 3, 2, 2, 2, 2, 741, 3, 2, 2, 2, + 2, 743, 3, 2, 2, 2, 2, 745, 3, 2, 2, 2, 2, 747, 3, 2, 2, 2, 2, 749, 3, + 2, 2, 2, 2, 751, 3, 2, 2, 2, 2, 753, 3, 2, 2, 2, 2, 755, 3, 2, 2, 2, 2, + 757, 3, 2, 2, 2, 2, 759, 3, 2, 2, 2, 2, 761, 3, 2, 2, 2, 2, 763, 3, 2, + 2, 2, 2, 765, 3, 2, 2, 2, 2, 767, 3, 2, 2, 2, 2, 769, 3, 2, 2, 2, 2, 771, + 3, 2, 2, 2, 2, 773, 3, 2, 2, 2, 2, 775, 3, 2, 2, 2, 2, 777, 3, 2, 2, 2, + 2, 779, 3, 2, 2, 2, 2, 781, 3, 2, 2, 2, 2, 783, 3, 2, 2, 2, 2, 785, 3, + 2, 2, 2, 2, 787, 3, 2, 2, 2, 2, 789, 3, 2, 2, 2, 2, 791, 3, 2, 2, 2, 2, + 793, 3, 2, 2, 2, 2, 795, 3, 2, 2, 2, 2, 797, 3, 2, 2, 2, 2, 799, 3, 2, + 2, 2, 2, 801, 3, 2, 2, 2, 2, 803, 3, 2, 2, 2, 2, 805, 3, 2, 2, 2, 2, 807, + 3, 2, 2, 2, 2, 809, 3, 2, 2, 2, 2, 811, 3, 2, 2, 2, 2, 813, 3, 2, 2, 2, + 2, 815, 3, 2, 2, 2, 2, 817, 3, 2, 2, 2, 2, 819, 3, 2, 2, 2, 2, 821, 3, + 2, 2, 2, 2, 823, 3, 2, 2, 2, 2, 825, 3, 2, 2, 2, 2, 827, 3, 2, 2, 2, 2, + 829, 3, 2, 2, 2, 2, 831, 3, 2, 2, 2, 2, 833, 3, 2, 2, 2, 2, 835, 3, 2, + 2, 2, 2, 837, 3, 2, 2, 2, 2, 839, 3, 2, 2, 2, 2, 841, 3, 2, 2, 2, 2, 843, + 3, 2, 2, 2, 2, 845, 3, 2, 2, 2, 2, 847, 3, 2, 2, 2, 2, 849, 3, 2, 2, 2, + 2, 851, 3, 2, 2, 2, 2, 853, 3, 2, 2, 2, 2, 855, 3, 2, 2, 2, 2, 857, 3, + 2, 2, 2, 2, 859, 3, 2, 2, 2, 2, 861, 3, 2, 2, 2, 2, 863, 3, 2, 2, 2, 2, + 865, 3, 2, 2, 2, 2, 867, 3, 2, 2, 2, 2, 869, 3, 2, 2, 2, 2, 871, 3, 2, + 2, 2, 2, 873, 3, 2, 2, 2, 2, 875, 3, 2, 2, 2, 2, 877, 3, 2, 2, 2, 2, 879, + 3, 2, 2, 2, 2, 881, 3, 2, 2, 2, 2, 883, 3, 2, 2, 2, 2, 885, 3, 2, 2, 2, + 2, 887, 3, 2, 2, 2, 2, 889, 3, 2, 2, 2, 2, 891, 3, 2, 2, 2, 2, 893, 3, + 2, 2, 2, 2, 895, 3, 2, 2, 2, 2, 897, 3, 2, 2, 2, 2, 899, 3, 2, 2, 2, 2, + 901, 3, 2, 2, 2, 2, 903, 3, 2, 2, 2, 2, 905, 3, 2, 2, 2, 2, 907, 3, 2, + 2, 2, 2, 909, 3, 2, 2, 2, 2, 911, 3, 2, 2, 2, 2, 913, 3, 2, 2, 2, 2, 915, + 3, 2, 2, 2, 2, 917, 3, 2, 2, 2, 2, 919, 3, 2, 2, 2, 2, 921, 3, 2, 2, 2, + 2, 923, 3, 2, 2, 2, 2, 925, 3, 2, 2, 2, 2, 927, 3, 2, 2, 2, 2, 929, 3, + 2, 2, 2, 2, 931, 3, 2, 2, 2, 2, 933, 3, 2, 2, 2, 2, 935, 3, 2, 2, 2, 2, + 937, 3, 2, 2, 2, 2, 939, 3, 2, 2, 2, 2, 941, 3, 2, 2, 2, 2, 943, 3, 2, + 2, 2, 2, 945, 3, 2, 2, 2, 2, 947, 3, 2, 2, 2, 2, 949, 3, 2, 2, 2, 2, 951, + 3, 2, 2, 2, 2, 953, 3, 2, 2, 2, 2, 955, 3, 2, 2, 2, 2, 957, 3, 2, 2, 2, + 2, 959, 3, 2, 2, 2, 2, 961, 3, 2, 2, 2, 2, 963, 3, 2, 2, 2, 2, 965, 3, + 2, 2, 2, 2, 967, 3, 2, 2, 2, 2, 969, 3, 2, 2, 2, 2, 971, 3, 2, 2, 2, 2, + 973, 3, 2, 2, 2, 2, 975, 3, 2, 2, 2, 2, 977, 3, 2, 2, 2, 2, 979, 3, 2, + 2, 2, 2, 981, 3, 2, 2, 2, 2, 983, 3, 2, 2, 2, 2, 985, 3, 2, 2, 2, 2, 987, + 3, 2, 2, 2, 2, 989, 3, 2, 2, 2, 2, 991, 3, 2, 2, 2, 2, 993, 3, 2, 2, 2, + 2, 995, 3, 2, 2, 2, 2, 997, 3, 2, 2, 2, 2, 999, 3, 2, 2, 2, 2, 1001, 3, + 2, 2, 2, 2, 1003, 3, 2, 2, 2, 2, 1005, 3, 2, 2, 2, 2, 1007, 3, 2, 2, 2, + 2, 1009, 3, 2, 2, 2, 2, 1011, 3, 2, 2, 2, 2, 1013, 3, 2, 2, 2, 2, 1015, + 3, 2, 2, 2, 2, 1017, 3, 2, 2, 2, 2, 1019, 3, 2, 2, 2, 2, 1021, 3, 2, 2, + 2, 2, 1023, 3, 2, 2, 2, 2, 1025, 3, 2, 2, 2, 2, 1027, 3, 2, 2, 2, 2, 1029, + 3, 2, 2, 2, 2, 1031, 3, 2, 2, 2, 2, 1033, 3, 2, 2, 2, 2, 1035, 3, 2, 2, + 2, 2, 1037, 3, 2, 2, 2, 2, 1039, 3, 2, 2, 2, 2, 1041, 3, 2, 2, 2, 2, 1043, + 3, 2, 2, 2, 2, 1045, 3, 2, 2, 2, 2, 1047, 3, 2, 2, 2, 2, 1049, 3, 2, 2, + 2, 2, 1051, 3, 2, 2, 2, 2, 1053, 3, 2, 2, 2, 2, 1055, 3, 2, 2, 2, 2, 1057, + 3, 2, 2, 2, 2, 1059, 3, 2, 2, 2, 2, 1061, 3, 2, 2, 2, 2, 1063, 3, 2, 2, + 2, 2, 1065, 3, 2, 2, 2, 2, 1067, 3, 2, 2, 2, 2, 1069, 3, 2, 2, 2, 2, 1071, + 3, 2, 2, 2, 2, 1073, 3, 2, 2, 2, 2, 1075, 3, 2, 2, 2, 2, 1077, 3, 2, 2, + 2, 2, 1079, 3, 2, 2, 2, 2, 1081, 3, 2, 2, 2, 2, 1083, 3, 2, 2, 2, 2, 1085, + 3, 2, 2, 2, 2, 1087, 3, 2, 2, 2, 2, 1089, 3, 2, 2, 2, 2, 1091, 3, 2, 2, + 2, 2, 1093, 3, 2, 2, 2, 2, 1095, 3, 2, 2, 2, 2, 1097, 3, 2, 2, 2, 2, 1099, + 3, 2, 2, 2, 2, 1101, 3, 2, 2, 2, 2, 1103, 3, 2, 2, 2, 2, 1105, 3, 2, 2, + 2, 2, 1107, 3, 2, 2, 2, 2, 1109, 3, 2, 2, 2, 2, 1111, 3, 2, 2, 2, 2, 1113, + 3, 2, 2, 2, 2, 1115, 3, 2, 2, 2, 2, 1117, 3, 2, 2, 2, 2, 1119, 3, 2, 2, + 2, 2, 1121, 3, 2, 2, 2, 2, 1123, 3, 2, 2, 2, 2, 1125, 3, 2, 2, 2, 2, 1127, + 3, 2, 2, 2, 2, 1129, 3, 2, 2, 2, 2, 1131, 3, 2, 2, 2, 2, 1133, 3, 2, 2, + 2, 2, 1135, 3, 2, 2, 2, 2, 1137, 3, 2, 2, 2, 2, 1139, 3, 2, 2, 2, 2, 1141, + 3, 2, 2, 2, 2, 1143, 3, 2, 2, 2, 2, 1145, 3, 2, 2, 2, 2, 1147, 3, 2, 2, + 2, 2, 1149, 3, 2, 2, 2, 2, 1151, 3, 2, 2, 2, 2, 1153, 3, 2, 2, 2, 2, 1155, + 3, 2, 2, 2, 2, 1157, 3, 2, 2, 2, 2, 1159, 3, 2, 2, 2, 2, 1161, 3, 2, 2, + 2, 2, 1163, 3, 2, 2, 2, 2, 1165, 3, 2, 2, 2, 2, 1167, 3, 2, 2, 2, 2, 1169, + 3, 2, 2, 2, 2, 1171, 3, 2, 2, 2, 2, 1173, 3, 2, 2, 2, 2, 1175, 3, 2, 2, + 2, 2, 1177, 3, 2, 2, 2, 2, 1179, 3, 2, 2, 2, 2, 1181, 3, 2, 2, 2, 2, 1183, + 3, 2, 2, 2, 2, 1185, 3, 2, 2, 2, 2, 1187, 3, 2, 2, 2, 2, 1189, 3, 2, 2, + 2, 2, 1191, 3, 2, 2, 2, 2, 1193, 3, 2, 2, 2, 2, 1195, 3, 2, 2, 2, 2, 1197, + 3, 2, 2, 2, 2, 1199, 3, 2, 2, 2, 2, 1201, 3, 2, 2, 2, 2, 1203, 3, 2, 2, + 2, 2, 1205, 3, 2, 2, 2, 2, 1207, 3, 2, 2, 2, 2, 1209, 3, 2, 2, 2, 2, 1211, + 3, 2, 2, 2, 2, 1213, 3, 2, 2, 2, 2, 1215, 3, 2, 2, 2, 2, 1217, 3, 2, 2, + 2, 2, 1219, 3, 2, 2, 2, 2, 1221, 3, 2, 2, 2, 2, 1223, 3, 2, 2, 2, 2, 1225, + 3, 2, 2, 2, 2, 1227, 3, 2, 2, 2, 2, 1229, 3, 2, 2, 2, 2, 1231, 3, 2, 2, + 2, 2, 1233, 3, 2, 2, 2, 2, 1235, 3, 2, 2, 2, 2, 1237, 3, 2, 2, 2, 2, 1239, + 3, 2, 2, 2, 2, 1241, 3, 2, 2, 2, 2, 1243, 3, 2, 2, 2, 2, 1245, 3, 2, 2, + 2, 2, 1247, 3, 2, 2, 2, 2, 1249, 3, 2, 2, 2, 2, 1251, 3, 2, 2, 2, 2, 1253, + 3, 2, 2, 2, 2, 1255, 3, 2, 2, 2, 2, 1257, 3, 2, 2, 2, 2, 1259, 3, 2, 2, + 2, 2, 1261, 3, 2, 2, 2, 2, 1263, 3, 2, 2, 2, 2, 1265, 3, 2, 2, 2, 2, 1267, + 3, 2, 2, 2, 2, 1269, 3, 2, 2, 2, 2, 1271, 3, 2, 2, 2, 2, 1273, 3, 2, 2, + 2, 2, 1275, 3, 2, 2, 2, 2, 1277, 3, 2, 2, 2, 2, 1279, 3, 2, 2, 2, 2, 1281, + 3, 2, 2, 2, 2, 1283, 3, 2, 2, 2, 2, 1285, 3, 2, 2, 2, 2, 1287, 3, 2, 2, + 2, 2, 1289, 3, 2, 2, 2, 2, 1291, 3, 2, 2, 2, 2, 1293, 3, 2, 2, 2, 2, 1295, + 3, 2, 2, 2, 2, 1297, 3, 2, 2, 2, 2, 1299, 3, 2, 2, 2, 2, 1301, 3, 2, 2, + 2, 2, 1303, 3, 2, 2, 2, 2, 1305, 3, 2, 2, 2, 2, 1307, 3, 2, 2, 2, 2, 1309, + 3, 2, 2, 2, 2, 1311, 3, 2, 2, 2, 2, 1313, 3, 2, 2, 2, 2, 1315, 3, 2, 2, + 2, 2, 1317, 3, 2, 2, 2, 2, 1319, 3, 2, 2, 2, 2, 1321, 3, 2, 2, 2, 2, 1323, + 3, 2, 2, 2, 2, 1325, 3, 2, 2, 2, 2, 1327, 3, 2, 2, 2, 2, 1329, 3, 2, 2, + 2, 2, 1331, 3, 2, 2, 2, 2, 1333, 3, 2, 2, 2, 2, 1335, 3, 2, 2, 2, 2, 1337, + 3, 2, 2, 2, 2, 1339, 3, 2, 2, 2, 2, 1341, 3, 2, 2, 2, 2, 1343, 3, 2, 2, + 2, 2, 1345, 3, 2, 2, 2, 2, 1347, 3, 2, 2, 2, 2, 1349, 3, 2, 2, 2, 2, 1351, + 3, 2, 2, 2, 2, 1353, 3, 2, 2, 2, 2, 1355, 3, 2, 2, 2, 2, 1357, 3, 2, 2, + 2, 2, 1359, 3, 2, 2, 2, 2, 1361, 3, 2, 2, 2, 2, 1363, 3, 2, 2, 2, 2, 1365, + 3, 2, 2, 2, 2, 1367, 3, 2, 2, 2, 2, 1369, 3, 2, 2, 2, 2, 1371, 3, 2, 2, + 2, 2, 1373, 3, 2, 2, 2, 2, 1375, 3, 2, 2, 2, 2, 1377, 3, 2, 2, 2, 2, 1379, + 3, 2, 2, 2, 2, 1381, 3, 2, 2, 2, 2, 1383, 3, 2, 2, 2, 2, 1385, 3, 2, 2, + 2, 2, 1387, 3, 2, 2, 2, 2, 1389, 3, 2, 2, 2, 2, 1391, 3, 2, 2, 2, 2, 1393, + 3, 2, 2, 2, 2, 1395, 3, 2, 2, 2, 2, 1397, 3, 2, 2, 2, 2, 1399, 3, 2, 2, + 2, 2, 1401, 3, 2, 2, 2, 2, 1403, 3, 2, 2, 2, 2, 1405, 3, 2, 2, 2, 2, 1407, + 3, 2, 2, 2, 2, 1409, 3, 2, 2, 2, 2, 1411, 3, 2, 2, 2, 2, 1413, 3, 2, 2, + 2, 2, 1415, 3, 2, 2, 2, 2, 1417, 3, 2, 2, 2, 2, 1419, 3, 2, 2, 2, 2, 1421, + 3, 2, 2, 2, 2, 1423, 3, 2, 2, 2, 2, 1425, 3, 2, 2, 2, 2, 1427, 3, 2, 2, + 2, 2, 1429, 3, 2, 2, 2, 2, 1431, 3, 2, 2, 2, 2, 1433, 3, 2, 2, 2, 2, 1435, + 3, 2, 2, 2, 2, 1437, 3, 2, 2, 2, 2, 1439, 3, 2, 2, 2, 2, 1441, 3, 2, 2, + 2, 2, 1443, 3, 2, 2, 2, 2, 1445, 3, 2, 2, 2, 2, 1447, 3, 2, 2, 2, 2, 1449, + 3, 2, 2, 2, 2, 1451, 3, 2, 2, 2, 2, 1453, 3, 2, 2, 2, 2, 1455, 3, 2, 2, + 2, 2, 1457, 3, 2, 2, 2, 2, 1459, 3, 2, 2, 2, 2, 1461, 3, 2, 2, 2, 2, 1463, + 3, 2, 2, 2, 2, 1465, 3, 2, 2, 2, 2, 1467, 3, 2, 2, 2, 2, 1469, 3, 2, 2, + 2, 2, 1471, 3, 2, 2, 2, 2, 1473, 3, 2, 2, 2, 2, 1475, 3, 2, 2, 2, 2, 1477, + 3, 2, 2, 2, 2, 1479, 3, 2, 2, 2, 2, 1481, 3, 2, 2, 2, 2, 1483, 3, 2, 2, + 2, 2, 1485, 3, 2, 2, 2, 2, 1487, 3, 2, 2, 2, 2, 1489, 3, 2, 2, 2, 2, 1491, + 3, 2, 2, 2, 2, 1493, 3, 2, 2, 2, 2, 1495, 3, 2, 2, 2, 2, 1497, 3, 2, 2, + 2, 2, 1499, 3, 2, 2, 2, 2, 1501, 3, 2, 2, 2, 2, 1503, 3, 2, 2, 2, 2, 1505, + 3, 2, 2, 2, 2, 1507, 3, 2, 2, 2, 2, 1509, 3, 2, 2, 2, 2, 1511, 3, 2, 2, + 2, 2, 1513, 3, 2, 2, 2, 2, 1515, 3, 2, 2, 2, 2, 1517, 3, 2, 2, 2, 2, 1519, + 3, 2, 2, 2, 2, 1521, 3, 2, 2, 2, 2, 1523, 3, 2, 2, 2, 2, 1525, 3, 2, 2, + 2, 2, 1527, 3, 2, 2, 2, 2, 1529, 3, 2, 2, 2, 2, 1531, 3, 2, 2, 2, 2, 1533, + 3, 2, 2, 2, 2, 1535, 3, 2, 2, 2, 2, 1537, 3, 2, 2, 2, 2, 1539, 3, 2, 2, + 2, 2, 1541, 3, 2, 2, 2, 2, 1543, 3, 2, 2, 2, 2, 1545, 3, 2, 2, 2, 2, 1547, + 3, 2, 2, 2, 2, 1549, 3, 2, 2, 2, 2, 1551, 3, 2, 2, 2, 2, 1553, 3, 2, 2, + 2, 2, 1555, 3, 2, 2, 2, 2, 1557, 3, 2, 2, 2, 2, 1559, 3, 2, 2, 2, 2, 1561, + 3, 2, 2, 2, 2, 1563, 3, 2, 2, 2, 2, 1565, 3, 2, 2, 2, 2, 1567, 3, 2, 2, + 2, 2, 1569, 3, 2, 2, 2, 2, 1571, 3, 2, 2, 2, 2, 1573, 3, 2, 2, 2, 2, 1575, + 3, 2, 2, 2, 2, 1577, 3, 2, 2, 2, 2, 1579, 3, 2, 2, 2, 2, 1581, 3, 2, 2, + 2, 2, 1583, 3, 2, 2, 2, 2, 1585, 3, 2, 2, 2, 2, 1587, 3, 2, 2, 2, 2, 1589, + 3, 2, 2, 2, 2, 1591, 3, 2, 2, 2, 2, 1593, 3, 2, 2, 2, 2, 1595, 3, 2, 2, + 2, 2, 1597, 3, 2, 2, 2, 2, 1599, 3, 2, 2, 2, 2, 1601, 3, 2, 2, 2, 2, 1603, + 3, 2, 2, 2, 2, 1605, 3, 2, 2, 2, 2, 1607, 3, 2, 2, 2, 2, 1609, 3, 2, 2, + 2, 2, 1611, 3, 2, 2, 2, 2, 1613, 3, 2, 2, 2, 2, 1615, 3, 2, 2, 2, 2, 1617, + 3, 2, 2, 2, 2, 1619, 3, 2, 2, 2, 2, 1621, 3, 2, 2, 2, 2, 1623, 3, 2, 2, + 2, 2, 1625, 3, 2, 2, 2, 2, 1627, 3, 2, 2, 2, 2, 1629, 3, 2, 2, 2, 2, 1631, + 3, 2, 2, 2, 2, 1633, 3, 2, 2, 2, 2, 1635, 3, 2, 2, 2, 2, 1637, 3, 2, 2, + 2, 2, 1639, 3, 2, 2, 2, 2, 1641, 3, 2, 2, 2, 2, 1643, 3, 2, 2, 2, 2, 1645, + 3, 2, 2, 2, 2, 1647, 3, 2, 2, 2, 2, 1649, 3, 2, 2, 2, 2, 1651, 3, 2, 2, + 2, 2, 1653, 3, 2, 2, 2, 2, 1655, 3, 2, 2, 2, 2, 1657, 3, 2, 2, 2, 2, 1659, + 3, 2, 2, 2, 2, 1661, 3, 2, 2, 2, 2, 1663, 3, 2, 2, 2, 2, 1665, 3, 2, 2, + 2, 2, 1667, 3, 2, 2, 2, 2, 1669, 3, 2, 2, 2, 2, 1671, 3, 2, 2, 2, 2, 1673, + 3, 2, 2, 2, 2, 1675, 3, 2, 2, 2, 2, 1677, 3, 2, 2, 2, 2, 1679, 3, 2, 2, + 2, 2, 1681, 3, 2, 2, 2, 2, 1683, 3, 2, 2, 2, 2, 1685, 3, 2, 2, 2, 2, 1687, + 3, 2, 2, 2, 2, 1689, 3, 2, 2, 2, 2, 1691, 3, 2, 2, 2, 2, 1693, 3, 2, 2, + 2, 2, 1695, 3, 2, 2, 2, 2, 1697, 3, 2, 2, 2, 2, 1699, 3, 2, 2, 2, 2, 1701, + 3, 2, 2, 2, 2, 1703, 3, 2, 2, 2, 2, 1705, 3, 2, 2, 2, 2, 1707, 3, 2, 2, + 2, 2, 1709, 3, 2, 2, 2, 2, 1711, 3, 2, 2, 2, 2, 1713, 3, 2, 2, 2, 2, 1715, + 3, 2, 2, 2, 2, 1717, 3, 2, 2, 2, 2, 1719, 3, 2, 2, 2, 2, 1721, 3, 2, 2, + 2, 2, 1723, 3, 2, 2, 2, 2, 1725, 3, 2, 2, 2, 2, 1727, 3, 2, 2, 2, 2, 1729, + 3, 2, 2, 2, 2, 1731, 3, 2, 2, 2, 2, 1733, 3, 2, 2, 2, 2, 1735, 3, 2, 2, + 2, 2, 1737, 3, 2, 2, 2, 2, 1739, 3, 2, 2, 2, 2, 1741, 3, 2, 2, 2, 2, 1743, + 3, 2, 2, 2, 2, 1745, 3, 2, 2, 2, 2, 1747, 3, 2, 2, 2, 2, 1749, 3, 2, 2, + 2, 2, 1751, 3, 2, 2, 2, 2, 1753, 3, 2, 2, 2, 2, 1755, 3, 2, 2, 2, 2, 1757, + 3, 2, 2, 2, 2, 1759, 3, 2, 2, 2, 2, 1761, 3, 2, 2, 2, 2, 1763, 3, 2, 2, + 2, 2, 1765, 3, 2, 2, 2, 2, 1767, 3, 2, 2, 2, 2, 1769, 3, 2, 2, 2, 2, 1771, + 3, 2, 2, 2, 2, 1773, 3, 2, 2, 2, 2, 1775, 3, 2, 2, 2, 2, 1777, 3, 2, 2, + 2, 2, 1779, 3, 2, 2, 2, 2, 1781, 3, 2, 2, 2, 2, 1783, 3, 2, 2, 2, 2, 1785, + 3, 2, 2, 2, 2, 1787, 3, 2, 2, 2, 2, 1789, 3, 2, 2, 2, 2, 1791, 3, 2, 2, + 2, 2, 1793, 3, 2, 2, 2, 2, 1795, 3, 2, 2, 2, 2, 1797, 3, 2, 2, 2, 2, 1799, + 3, 2, 2, 2, 2, 1801, 3, 2, 2, 2, 2, 1803, 3, 2, 2, 2, 2, 1805, 3, 2, 2, + 2, 2, 1807, 3, 2, 2, 2, 2, 1809, 3, 2, 2, 2, 2, 1811, 3, 2, 2, 2, 2, 1813, + 3, 2, 2, 2, 2, 1815, 3, 2, 2, 2, 2, 1817, 3, 2, 2, 2, 2, 1819, 3, 2, 2, + 2, 2, 1821, 3, 2, 2, 2, 2, 1823, 3, 2, 2, 2, 2, 1825, 3, 2, 2, 2, 2, 1827, + 3, 2, 2, 2, 2, 1829, 3, 2, 2, 2, 2, 1831, 3, 2, 2, 2, 2, 1833, 3, 2, 2, + 2, 2, 1835, 3, 2, 2, 2, 2, 1837, 3, 2, 2, 2, 2, 1839, 3, 2, 2, 2, 2, 1841, + 3, 2, 2, 2, 2, 1843, 3, 2, 2, 2, 2, 1845, 3, 2, 2, 2, 2, 1847, 3, 2, 2, + 2, 2, 1849, 3, 2, 2, 2, 2, 1851, 3, 2, 2, 2, 2, 1853, 3, 2, 2, 2, 2, 1855, + 3, 2, 2, 2, 2, 1857, 3, 2, 2, 2, 2, 1859, 3, 2, 2, 2, 2, 1861, 3, 2, 2, + 2, 2, 1863, 3, 2, 2, 2, 2, 1865, 3, 2, 2, 2, 2, 1867, 3, 2, 2, 2, 2, 1869, + 3, 2, 2, 2, 2, 1871, 3, 2, 2, 2, 2, 1873, 3, 2, 2, 2, 2, 1875, 3, 2, 2, + 2, 2, 1877, 3, 2, 2, 2, 2, 1879, 3, 2, 2, 2, 2, 1881, 3, 2, 2, 2, 2, 1883, + 3, 2, 2, 2, 2, 1885, 3, 2, 2, 2, 2, 1887, 3, 2, 2, 2, 2, 1889, 3, 2, 2, + 2, 2, 1891, 3, 2, 2, 2, 2, 1893, 3, 2, 2, 2, 2, 1895, 3, 2, 2, 2, 2, 1897, + 3, 2, 2, 2, 2, 1899, 3, 2, 2, 2, 2, 1901, 3, 2, 2, 2, 2, 1903, 3, 2, 2, + 2, 2, 1905, 3, 2, 2, 2, 2, 1907, 3, 2, 2, 2, 2, 1909, 3, 2, 2, 2, 2, 1911, + 3, 2, 2, 2, 2, 1913, 3, 2, 2, 2, 2, 1915, 3, 2, 2, 2, 2, 1917, 3, 2, 2, + 2, 2, 1919, 3, 2, 2, 2, 2, 1921, 3, 2, 2, 2, 2, 1923, 3, 2, 2, 2, 2, 1925, + 3, 2, 2, 2, 2, 1927, 3, 2, 2, 2, 2, 1929, 3, 2, 2, 2, 2, 1931, 3, 2, 2, + 2, 2, 1933, 3, 2, 2, 2, 2, 1935, 3, 2, 2, 2, 2, 1937, 3, 2, 2, 2, 2, 1939, + 3, 2, 2, 2, 2, 1941, 3, 2, 2, 2, 2, 1943, 3, 2, 2, 2, 2, 1945, 3, 2, 2, + 2, 2, 1947, 3, 2, 2, 2, 2, 1949, 3, 2, 2, 2, 2, 1951, 3, 2, 2, 2, 2, 1953, + 3, 2, 2, 2, 2, 1955, 3, 2, 2, 2, 2, 1957, 3, 2, 2, 2, 2, 1959, 3, 2, 2, + 2, 2, 1961, 3, 2, 2, 2, 2, 1963, 3, 2, 2, 2, 2, 1965, 3, 2, 2, 2, 2, 1967, + 3, 2, 2, 2, 2, 1969, 3, 2, 2, 2, 2, 1971, 3, 2, 2, 2, 2, 1973, 3, 2, 2, + 2, 2, 1975, 3, 2, 2, 2, 2, 1977, 3, 2, 2, 2, 2, 1979, 3, 2, 2, 2, 2, 1981, + 3, 2, 2, 2, 2, 1983, 3, 2, 2, 2, 2, 1985, 3, 2, 2, 2, 2, 1987, 3, 2, 2, + 2, 2, 1989, 3, 2, 2, 2, 2, 1991, 3, 2, 2, 2, 2, 1993, 3, 2, 2, 2, 2, 1995, + 3, 2, 2, 2, 2, 1997, 3, 2, 2, 2, 2, 1999, 3, 2, 2, 2, 2, 2001, 3, 2, 2, + 2, 2, 2003, 3, 2, 2, 2, 2, 2005, 3, 2, 2, 2, 2, 2007, 3, 2, 2, 2, 2, 2009, + 3, 2, 2, 2, 2, 2011, 3, 2, 2, 2, 2, 2013, 3, 2, 2, 2, 2, 2015, 3, 2, 2, + 2, 2, 2017, 3, 2, 2, 2, 2, 2019, 3, 2, 2, 2, 2, 2021, 3, 2, 2, 2, 2, 2023, + 3, 2, 2, 2, 2, 2025, 3, 2, 2, 2, 2, 2027, 3, 2, 2, 2, 2, 2029, 3, 2, 2, + 2, 2, 2031, 3, 2, 2, 2, 2, 2033, 3, 2, 2, 2, 2, 2035, 3, 2, 2, 2, 2, 2037, + 3, 2, 2, 2, 2, 2039, 3, 2, 2, 2, 2, 2041, 3, 2, 2, 2, 2, 2043, 3, 2, 2, + 2, 2, 2045, 3, 2, 2, 2, 2, 2047, 3, 2, 2, 2, 2, 2049, 3, 2, 2, 2, 2, 2051, + 3, 2, 2, 2, 2, 2053, 3, 2, 2, 2, 2, 2055, 3, 2, 2, 2, 2, 2057, 3, 2, 2, + 2, 2, 2059, 3, 2, 2, 2, 2, 2061, 3, 2, 2, 2, 2, 2063, 3, 2, 2, 2, 2, 2065, + 3, 2, 2, 2, 2, 2067, 3, 2, 2, 2, 2, 2069, 3, 2, 2, 2, 2, 2071, 3, 2, 2, + 2, 2, 2073, 3, 2, 2, 2, 2, 2075, 3, 2, 2, 2, 2, 2077, 3, 2, 2, 2, 2, 2079, + 3, 2, 2, 2, 2, 2081, 3, 2, 2, 2, 2, 2083, 3, 2, 2, 2, 2, 2085, 3, 2, 2, + 2, 2, 2087, 3, 2, 2, 2, 2, 2089, 3, 2, 2, 2, 2, 2091, 3, 2, 2, 2, 2, 2093, + 3, 2, 2, 2, 2, 2095, 3, 2, 2, 2, 2, 2097, 3, 2, 2, 2, 2, 2099, 3, 2, 2, + 2, 2, 2101, 3, 2, 2, 2, 2, 2103, 3, 2, 2, 2, 2, 2105, 3, 2, 2, 2, 2, 2107, + 3, 2, 2, 2, 2, 2109, 3, 2, 2, 2, 2, 2111, 3, 2, 2, 2, 2, 2113, 3, 2, 2, + 2, 2, 2115, 3, 2, 2, 2, 2, 2117, 3, 2, 2, 2, 2, 2119, 3, 2, 2, 2, 2, 2121, + 3, 2, 2, 2, 2, 2123, 3, 2, 2, 2, 2, 2125, 3, 2, 2, 2, 2, 2127, 3, 2, 2, + 2, 2, 2129, 3, 2, 2, 2, 2, 2131, 3, 2, 2, 2, 2, 2133, 3, 2, 2, 2, 2, 2135, + 3, 2, 2, 2, 2, 2137, 3, 2, 2, 2, 2, 2139, 3, 2, 2, 2, 2, 2141, 3, 2, 2, + 2, 2, 2143, 3, 2, 2, 2, 2, 2145, 3, 2, 2, 2, 2, 2149, 3, 2, 2, 2, 2, 2151, + 3, 2, 2, 2, 2, 2153, 3, 2, 2, 2, 2, 2155, 3, 2, 2, 2, 2, 2157, 3, 2, 2, + 2, 2, 2159, 3, 2, 2, 2, 2, 2161, 3, 2, 2, 2, 2, 2163, 3, 2, 2, 2, 2, 2165, + 3, 2, 2, 2, 2, 2167, 3, 2, 2, 2, 2, 2169, 3, 2, 2, 2, 2, 2171, 3, 2, 2, + 2, 2, 2173, 3, 2, 2, 2, 2, 2175, 3, 2, 2, 2, 2, 2177, 3, 2, 2, 2, 2, 2179, + 3, 2, 2, 2, 2, 2181, 3, 2, 2, 2, 2, 2201, 3, 2, 2, 2, 3, 2204, 3, 2, 2, + 2, 5, 2210, 3, 2, 2, 2, 7, 2224, 3, 2, 2, 2, 9, 2268, 3, 2, 2, 2, 11, 2272, + 3, 2, 2, 2, 13, 2276, 3, 2, 2, 2, 15, 2280, 3, 2, 2, 2, 17, 2286, 3, 2, + 2, 2, 19, 2293, 3, 2, 2, 2, 21, 2301, 3, 2, 2, 2, 23, 2305, 3, 2, 2, 2, + 25, 2308, 3, 2, 2, 2, 27, 2312, 3, 2, 2, 2, 29, 2319, 3, 2, 2, 2, 31, 2327, + 3, 2, 2, 2, 33, 2332, 3, 2, 2, 2, 35, 2335, 3, 2, 2, 2, 37, 2340, 3, 2, + 2, 2, 39, 2348, 3, 2, 2, 2, 41, 2353, 3, 2, 2, 2, 43, 2358, 3, 2, 2, 2, + 45, 2365, 3, 2, 2, 2, 47, 2375, 3, 2, 2, 2, 49, 2381, 3, 2, 2, 2, 51, 2389, + 3, 2, 2, 2, 53, 2396, 3, 2, 2, 2, 55, 2406, 3, 2, 2, 2, 57, 2417, 3, 2, + 2, 2, 59, 2426, 3, 2, 2, 2, 61, 2434, 3, 2, 2, 2, 63, 2441, 3, 2, 2, 2, + 65, 2447, 3, 2, 2, 2, 67, 2455, 3, 2, 2, 2, 69, 2468, 3, 2, 2, 2, 71, 2475, + 3, 2, 2, 2, 73, 2484, 3, 2, 2, 2, 75, 2494, 3, 2, 2, 2, 77, 2502, 3, 2, + 2, 2, 79, 2510, 3, 2, 2, 2, 81, 2518, 3, 2, 2, 2, 83, 2525, 3, 2, 2, 2, + 85, 2530, 3, 2, 2, 2, 87, 2539, 3, 2, 2, 2, 89, 2553, 3, 2, 2, 2, 91, 2565, + 3, 2, 2, 2, 93, 2574, 3, 2, 2, 2, 95, 2586, 3, 2, 2, 2, 97, 2591, 3, 2, + 2, 2, 99, 2596, 3, 2, 2, 2, 101, 2601, 3, 2, 2, 2, 103, 2608, 3, 2, 2, + 2, 105, 2614, 3, 2, 2, 2, 107, 2623, 3, 2, 2, 2, 109, 2631, 3, 2, 2, 2, + 111, 2638, 3, 2, 2, 2, 113, 2643, 3, 2, 2, 2, 115, 2651, 3, 2, 2, 2, 117, + 2657, 3, 2, 2, 2, 119, 2663, 3, 2, 2, 2, 121, 2667, 3, 2, 2, 2, 123, 2673, + 3, 2, 2, 2, 125, 2681, 3, 2, 2, 2, 127, 2686, 3, 2, 2, 2, 129, 2695, 3, + 2, 2, 2, 131, 2705, 3, 2, 2, 2, 133, 2709, 3, 2, 2, 2, 135, 2715, 3, 2, + 2, 2, 137, 2721, 3, 2, 2, 2, 139, 2728, 3, 2, 2, 2, 141, 2742, 3, 2, 2, + 2, 143, 2745, 3, 2, 2, 2, 145, 2752, 3, 2, 2, 2, 147, 2755, 3, 2, 2, 2, + 149, 2761, 3, 2, 2, 2, 151, 2768, 3, 2, 2, 2, 153, 2774, 3, 2, 2, 2, 155, + 2780, 3, 2, 2, 2, 157, 2787, 3, 2, 2, 2, 159, 2796, 3, 2, 2, 2, 161, 2801, + 3, 2, 2, 2, 163, 2804, 3, 2, 2, 2, 165, 2812, 3, 2, 2, 2, 167, 2817, 3, + 2, 2, 2, 169, 2821, 3, 2, 2, 2, 171, 2826, 3, 2, 2, 2, 173, 2831, 3, 2, + 2, 2, 175, 2839, 3, 2, 2, 2, 177, 2845, 3, 2, 2, 2, 179, 2850, 3, 2, 2, + 2, 181, 2855, 3, 2, 2, 2, 183, 2861, 3, 2, 2, 2, 185, 2868, 3, 2, 2, 2, + 187, 2874, 3, 2, 2, 2, 189, 2879, 3, 2, 2, 2, 191, 2884, 3, 2, 2, 2, 193, + 2889, 3, 2, 2, 2, 195, 2902, 3, 2, 2, 2, 197, 2914, 3, 2, 2, 2, 199, 2944, + 3, 2, 2, 2, 201, 2950, 3, 2, 2, 2, 203, 2959, 3, 2, 2, 2, 205, 2968, 3, + 2, 2, 2, 207, 2976, 3, 2, 2, 2, 209, 2980, 3, 2, 2, 2, 211, 2999, 3, 2, + 2, 2, 213, 3001, 3, 2, 2, 2, 215, 3006, 3, 2, 2, 2, 217, 3013, 3, 2, 2, + 2, 219, 3016, 3, 2, 2, 2, 221, 3025, 3, 2, 2, 2, 223, 3032, 3, 2, 2, 2, + 225, 3043, 3, 2, 2, 2, 227, 3046, 3, 2, 2, 2, 229, 3052, 3, 2, 2, 2, 231, + 3056, 3, 2, 2, 2, 233, 3062, 3, 2, 2, 2, 235, 3070, 3, 2, 2, 2, 237, 3080, + 3, 2, 2, 2, 239, 3088, 3, 2, 2, 2, 241, 3098, 3, 2, 2, 2, 243, 3104, 3, + 2, 2, 2, 245, 3110, 3, 2, 2, 2, 247, 3115, 3, 2, 2, 2, 249, 3121, 3, 2, + 2, 2, 251, 3132, 3, 2, 2, 2, 253, 3139, 3, 2, 2, 2, 255, 3147, 3, 2, 2, + 2, 257, 3154, 3, 2, 2, 2, 259, 3161, 3, 2, 2, 2, 261, 3169, 3, 2, 2, 2, + 263, 3177, 3, 2, 2, 2, 265, 3186, 3, 2, 2, 2, 267, 3195, 3, 2, 2, 2, 269, + 3202, 3, 2, 2, 2, 271, 3209, 3, 2, 2, 2, 273, 3215, 3, 2, 2, 2, 275, 3221, + 3, 2, 2, 2, 277, 3228, 3, 2, 2, 2, 279, 3236, 3, 2, 2, 2, 281, 3243, 3, + 2, 2, 2, 283, 3247, 3, 2, 2, 2, 285, 3257, 3, 2, 2, 2, 287, 3262, 3, 2, + 2, 2, 289, 3269, 3, 2, 2, 2, 291, 3277, 3, 2, 2, 2, 293, 3281, 3, 2, 2, + 2, 295, 3294, 3, 2, 2, 2, 297, 3303, 3, 2, 2, 2, 299, 3314, 3, 2, 2, 2, + 301, 3329, 3, 2, 2, 2, 303, 3349, 3, 2, 2, 2, 305, 3366, 3, 2, 2, 2, 307, + 3370, 3, 2, 2, 2, 309, 3378, 3, 2, 2, 2, 311, 3387, 3, 2, 2, 2, 313, 3401, + 3, 2, 2, 2, 315, 3407, 3, 2, 2, 2, 317, 3418, 3, 2, 2, 2, 319, 3423, 3, + 2, 2, 2, 321, 3426, 3, 2, 2, 2, 323, 3435, 3, 2, 2, 2, 325, 3443, 3, 2, + 2, 2, 327, 3448, 3, 2, 2, 2, 329, 3453, 3, 2, 2, 2, 331, 3459, 3, 2, 2, + 2, 333, 3466, 3, 2, 2, 2, 335, 3473, 3, 2, 2, 2, 337, 3482, 3, 2, 2, 2, + 339, 3489, 3, 2, 2, 2, 341, 3495, 3, 2, 2, 2, 343, 3499, 3, 2, 2, 2, 345, + 3505, 3, 2, 2, 2, 347, 3512, 3, 2, 2, 2, 349, 3517, 3, 2, 2, 2, 351, 3523, + 3, 2, 2, 2, 353, 3529, 3, 2, 2, 2, 355, 3534, 3, 2, 2, 2, 357, 3540, 3, + 2, 2, 2, 359, 3544, 3, 2, 2, 2, 361, 3553, 3, 2, 2, 2, 363, 3561, 3, 2, + 2, 2, 365, 3570, 3, 2, 2, 2, 367, 3580, 3, 2, 2, 2, 369, 3590, 3, 2, 2, + 2, 371, 3594, 3, 2, 2, 2, 373, 3599, 3, 2, 2, 2, 375, 3604, 3, 2, 2, 2, + 377, 3609, 3, 2, 2, 2, 379, 3614, 3, 2, 2, 2, 381, 3619, 3, 2, 2, 2, 383, + 3627, 3, 2, 2, 2, 385, 3634, 3, 2, 2, 2, 387, 3639, 3, 2, 2, 2, 389, 3646, + 3, 2, 2, 2, 391, 3656, 3, 2, 2, 2, 393, 3662, 3, 2, 2, 2, 395, 3669, 3, + 2, 2, 2, 397, 3676, 3, 2, 2, 2, 399, 3684, 3, 2, 2, 2, 401, 3688, 3, 2, + 2, 2, 403, 3696, 3, 2, 2, 2, 405, 3701, 3, 2, 2, 2, 407, 3706, 3, 2, 2, + 2, 409, 3716, 3, 2, 2, 2, 411, 3725, 3, 2, 2, 2, 413, 3730, 3, 2, 2, 2, + 415, 3735, 3, 2, 2, 2, 417, 3743, 3, 2, 2, 2, 419, 3752, 3, 2, 2, 2, 421, + 3761, 3, 2, 2, 2, 423, 3768, 3, 2, 2, 2, 425, 3778, 3, 2, 2, 2, 427, 3787, + 3, 2, 2, 2, 429, 3792, 3, 2, 2, 2, 431, 3803, 3, 2, 2, 2, 433, 3808, 3, + 2, 2, 2, 435, 3817, 3, 2, 2, 2, 437, 3826, 3, 2, 2, 2, 439, 3831, 3, 2, + 2, 2, 441, 3842, 3, 2, 2, 2, 443, 3851, 3, 2, 2, 2, 445, 3856, 3, 2, 2, + 2, 447, 3864, 3, 2, 2, 2, 449, 3871, 3, 2, 2, 2, 451, 3882, 3, 2, 2, 2, + 453, 3891, 3, 2, 2, 2, 455, 3902, 3, 2, 2, 2, 457, 3913, 3, 2, 2, 2, 459, + 3925, 3, 2, 2, 2, 461, 3937, 3, 2, 2, 2, 463, 3951, 3, 2, 2, 2, 465, 3970, + 3, 2, 2, 2, 467, 3989, 3, 2, 2, 2, 469, 4006, 3, 2, 2, 2, 471, 4022, 3, + 2, 2, 2, 473, 4033, 3, 2, 2, 2, 475, 4045, 3, 2, 2, 2, 477, 4056, 3, 2, + 2, 2, 479, 4070, 3, 2, 2, 2, 481, 4089, 3, 2, 2, 2, 483, 4102, 3, 2, 2, + 2, 485, 4112, 3, 2, 2, 2, 487, 4126, 3, 2, 2, 2, 489, 4138, 3, 2, 2, 2, + 491, 4149, 3, 2, 2, 2, 493, 4167, 3, 2, 2, 2, 495, 4185, 3, 2, 2, 2, 497, + 4197, 3, 2, 2, 2, 499, 4208, 3, 2, 2, 2, 501, 4225, 3, 2, 2, 2, 503, 4245, + 3, 2, 2, 2, 505, 4257, 3, 2, 2, 2, 507, 4270, 3, 2, 2, 2, 509, 4279, 3, + 2, 2, 2, 511, 4292, 3, 2, 2, 2, 513, 4303, 3, 2, 2, 2, 515, 4315, 3, 2, + 2, 2, 517, 4325, 3, 2, 2, 2, 519, 4336, 3, 2, 2, 2, 521, 4347, 3, 2, 2, + 2, 523, 4365, 3, 2, 2, 2, 525, 4395, 3, 2, 2, 2, 527, 4407, 3, 2, 2, 2, + 529, 4425, 3, 2, 2, 2, 531, 4443, 3, 2, 2, 2, 533, 4457, 3, 2, 2, 2, 535, + 4472, 3, 2, 2, 2, 537, 4476, 3, 2, 2, 2, 539, 4484, 3, 2, 2, 2, 541, 4491, + 3, 2, 2, 2, 543, 4499, 3, 2, 2, 2, 545, 4505, 3, 2, 2, 2, 547, 4518, 3, + 2, 2, 2, 549, 4522, 3, 2, 2, 2, 551, 4526, 3, 2, 2, 2, 553, 4530, 3, 2, + 2, 2, 555, 4537, 3, 2, 2, 2, 557, 4548, 3, 2, 2, 2, 559, 4560, 3, 2, 2, + 2, 561, 4564, 3, 2, 2, 2, 563, 4572, 3, 2, 2, 2, 565, 4581, 3, 2, 2, 2, + 567, 4590, 3, 2, 2, 2, 569, 4603, 3, 2, 2, 2, 571, 4616, 3, 2, 2, 2, 573, + 4634, 3, 2, 2, 2, 575, 4644, 3, 2, 2, 2, 577, 4652, 3, 2, 2, 2, 579, 4660, + 3, 2, 2, 2, 581, 4669, 3, 2, 2, 2, 583, 4678, 3, 2, 2, 2, 585, 4686, 3, + 2, 2, 2, 587, 4701, 3, 2, 2, 2, 589, 4705, 3, 2, 2, 2, 591, 4714, 3, 2, + 2, 2, 593, 4721, 3, 2, 2, 2, 595, 4731, 3, 2, 2, 2, 597, 4739, 3, 2, 2, + 2, 599, 4744, 3, 2, 2, 2, 601, 4753, 3, 2, 2, 2, 603, 4762, 3, 2, 2, 2, + 605, 4776, 3, 2, 2, 2, 607, 4784, 3, 2, 2, 2, 609, 4791, 3, 2, 2, 2, 611, + 4797, 3, 2, 2, 2, 613, 4807, 3, 2, 2, 2, 615, 4817, 3, 2, 2, 2, 617, 4821, + 3, 2, 2, 2, 619, 4824, 3, 2, 2, 2, 621, 4832, 3, 2, 2, 2, 623, 4843, 3, + 2, 2, 2, 625, 4859, 3, 2, 2, 2, 627, 4874, 3, 2, 2, 2, 629, 4889, 3, 2, + 2, 2, 631, 4895, 3, 2, 2, 2, 633, 4902, 3, 2, 2, 2, 635, 4906, 3, 2, 2, + 2, 637, 4912, 3, 2, 2, 2, 639, 4917, 3, 2, 2, 2, 641, 4925, 3, 2, 2, 2, + 643, 4931, 3, 2, 2, 2, 645, 4937, 3, 2, 2, 2, 647, 4946, 3, 2, 2, 2, 649, + 4952, 3, 2, 2, 2, 651, 4960, 3, 2, 2, 2, 653, 4968, 3, 2, 2, 2, 655, 4977, + 3, 2, 2, 2, 657, 4991, 3, 2, 2, 2, 659, 4998, 3, 2, 2, 2, 661, 5011, 3, + 2, 2, 2, 663, 5018, 3, 2, 2, 2, 665, 5024, 3, 2, 2, 2, 667, 5033, 3, 2, + 2, 2, 669, 5038, 3, 2, 2, 2, 671, 5046, 3, 2, 2, 2, 673, 5060, 3, 2, 2, + 2, 675, 5072, 3, 2, 2, 2, 677, 5080, 3, 2, 2, 2, 679, 5087, 3, 2, 2, 2, + 681, 5095, 3, 2, 2, 2, 683, 5106, 3, 2, 2, 2, 685, 5117, 3, 2, 2, 2, 687, + 5129, 3, 2, 2, 2, 689, 5140, 3, 2, 2, 2, 691, 5151, 3, 2, 2, 2, 693, 5162, + 3, 2, 2, 2, 695, 5181, 3, 2, 2, 2, 697, 5199, 3, 2, 2, 2, 699, 5215, 3, + 2, 2, 2, 701, 5224, 3, 2, 2, 2, 703, 5232, 3, 2, 2, 2, 705, 5245, 3, 2, + 2, 2, 707, 5250, 3, 2, 2, 2, 709, 5254, 3, 2, 2, 2, 711, 5266, 3, 2, 2, + 2, 713, 5271, 3, 2, 2, 2, 715, 5280, 3, 2, 2, 2, 717, 5291, 3, 2, 2, 2, + 719, 5304, 3, 2, 2, 2, 721, 5312, 3, 2, 2, 2, 723, 5328, 3, 2, 2, 2, 725, + 5341, 3, 2, 2, 2, 727, 5351, 3, 2, 2, 2, 729, 5359, 3, 2, 2, 2, 731, 5367, + 3, 2, 2, 2, 733, 5372, 3, 2, 2, 2, 735, 5375, 3, 2, 2, 2, 737, 5384, 3, + 2, 2, 2, 739, 5394, 3, 2, 2, 2, 741, 5402, 3, 2, 2, 2, 743, 5409, 3, 2, + 2, 2, 745, 5420, 3, 2, 2, 2, 747, 5424, 3, 2, 2, 2, 749, 5429, 3, 2, 2, + 2, 751, 5436, 3, 2, 2, 2, 753, 5444, 3, 2, 2, 2, 755, 5450, 3, 2, 2, 2, + 757, 5457, 3, 2, 2, 2, 759, 5464, 3, 2, 2, 2, 761, 5469, 3, 2, 2, 2, 763, + 5475, 3, 2, 2, 2, 765, 5482, 3, 2, 2, 2, 767, 5488, 3, 2, 2, 2, 769, 5497, + 3, 2, 2, 2, 771, 5507, 3, 2, 2, 2, 773, 5514, 3, 2, 2, 2, 775, 5521, 3, + 2, 2, 2, 777, 5530, 3, 2, 2, 2, 779, 5542, 3, 2, 2, 2, 781, 5547, 3, 2, + 2, 2, 783, 5554, 3, 2, 2, 2, 785, 5561, 3, 2, 2, 2, 787, 5577, 3, 2, 2, + 2, 789, 5584, 3, 2, 2, 2, 791, 5590, 3, 2, 2, 2, 793, 5596, 3, 2, 2, 2, + 795, 5602, 3, 2, 2, 2, 797, 5610, 3, 2, 2, 2, 799, 5616, 3, 2, 2, 2, 801, + 5621, 3, 2, 2, 2, 803, 5630, 3, 2, 2, 2, 805, 5638, 3, 2, 2, 2, 807, 5645, + 3, 2, 2, 2, 809, 5652, 3, 2, 2, 2, 811, 5670, 3, 2, 2, 2, 813, 5678, 3, + 2, 2, 2, 815, 5683, 3, 2, 2, 2, 817, 5688, 3, 2, 2, 2, 819, 5693, 3, 2, + 2, 2, 821, 5699, 3, 2, 2, 2, 823, 5710, 3, 2, 2, 2, 825, 5728, 3, 2, 2, + 2, 827, 5735, 3, 2, 2, 2, 829, 5743, 3, 2, 2, 2, 831, 5756, 3, 2, 2, 2, + 833, 5764, 3, 2, 2, 2, 835, 5778, 3, 2, 2, 2, 837, 5786, 3, 2, 2, 2, 839, + 5795, 3, 2, 2, 2, 841, 5805, 3, 2, 2, 2, 843, 5813, 3, 2, 2, 2, 845, 5816, + 3, 2, 2, 2, 847, 5826, 3, 2, 2, 2, 849, 5830, 3, 2, 2, 2, 851, 5840, 3, + 2, 2, 2, 853, 5847, 3, 2, 2, 2, 855, 5852, 3, 2, 2, 2, 857, 5867, 3, 2, + 2, 2, 859, 5876, 3, 2, 2, 2, 861, 5881, 3, 2, 2, 2, 863, 5888, 3, 2, 2, + 2, 865, 5893, 3, 2, 2, 2, 867, 5899, 3, 2, 2, 2, 869, 5904, 3, 2, 2, 2, + 871, 5910, 3, 2, 2, 2, 873, 5918, 3, 2, 2, 2, 875, 5923, 3, 2, 2, 2, 877, + 5930, 3, 2, 2, 2, 879, 5951, 3, 2, 2, 2, 881, 5972, 3, 2, 2, 2, 883, 5985, + 3, 2, 2, 2, 885, 6009, 3, 2, 2, 2, 887, 6021, 3, 2, 2, 2, 889, 6037, 3, + 2, 2, 2, 891, 6052, 3, 2, 2, 2, 893, 6068, 3, 2, 2, 2, 895, 6080, 3, 2, + 2, 2, 897, 6099, 3, 2, 2, 2, 899, 6110, 3, 2, 2, 2, 901, 6124, 3, 2, 2, + 2, 903, 6142, 3, 2, 2, 2, 905, 6158, 3, 2, 2, 2, 907, 6176, 3, 2, 2, 2, + 909, 6191, 3, 2, 2, 2, 911, 6210, 3, 2, 2, 2, 913, 6225, 3, 2, 2, 2, 915, + 6244, 3, 2, 2, 2, 917, 6256, 3, 2, 2, 2, 919, 6281, 3, 2, 2, 2, 921, 6302, + 3, 2, 2, 2, 923, 6311, 3, 2, 2, 2, 925, 6320, 3, 2, 2, 2, 927, 6341, 3, + 2, 2, 2, 929, 6362, 3, 2, 2, 2, 931, 6369, 3, 2, 2, 2, 933, 6376, 3, 2, + 2, 2, 935, 6382, 3, 2, 2, 2, 937, 6395, 3, 2, 2, 2, 939, 6399, 3, 2, 2, + 2, 941, 6407, 3, 2, 2, 2, 943, 6416, 3, 2, 2, 2, 945, 6421, 3, 2, 2, 2, + 947, 6428, 3, 2, 2, 2, 949, 6434, 3, 2, 2, 2, 951, 6440, 3, 2, 2, 2, 953, + 6452, 3, 2, 2, 2, 955, 6457, 3, 2, 2, 2, 957, 6463, 3, 2, 2, 2, 959, 6469, + 3, 2, 2, 2, 961, 6475, 3, 2, 2, 2, 963, 6480, 3, 2, 2, 2, 965, 6483, 3, + 2, 2, 2, 967, 6493, 3, 2, 2, 2, 969, 6498, 3, 2, 2, 2, 971, 6506, 3, 2, + 2, 2, 973, 6513, 3, 2, 2, 2, 975, 6516, 3, 2, 2, 2, 977, 6519, 3, 2, 2, + 2, 979, 6532, 3, 2, 2, 2, 981, 6536, 3, 2, 2, 2, 983, 6543, 3, 2, 2, 2, + 985, 6548, 3, 2, 2, 2, 987, 6553, 3, 2, 2, 2, 989, 6569, 3, 2, 2, 2, 991, + 6577, 3, 2, 2, 2, 993, 6583, 3, 2, 2, 2, 995, 6593, 3, 2, 2, 2, 997, 6598, + 3, 2, 2, 2, 999, 6605, 3, 2, 2, 2, 1001, 6613, 3, 2, 2, 2, 1003, 6626, + 3, 2, 2, 2, 1005, 6637, 3, 2, 2, 2, 1007, 6646, 3, 2, 2, 2, 1009, 6652, + 3, 2, 2, 2, 1011, 6659, 3, 2, 2, 2, 1013, 6670, 3, 2, 2, 2, 1015, 6678, + 3, 2, 2, 2, 1017, 6683, 3, 2, 2, 2, 1019, 6692, 3, 2, 2, 2, 1021, 6700, + 3, 2, 2, 2, 1023, 6709, 3, 2, 2, 2, 1025, 6714, 3, 2, 2, 2, 1027, 6726, + 3, 2, 2, 2, 1029, 6734, 3, 2, 2, 2, 1031, 6743, 3, 2, 2, 2, 1033, 6749, + 3, 2, 2, 2, 1035, 6755, 3, 2, 2, 2, 1037, 6761, 3, 2, 2, 2, 1039, 6769, + 3, 2, 2, 2, 1041, 6777, 3, 2, 2, 2, 1043, 6794, 3, 2, 2, 2, 1045, 6804, + 3, 2, 2, 2, 1047, 6810, 3, 2, 2, 2, 1049, 6825, 3, 2, 2, 2, 1051, 6839, + 3, 2, 2, 2, 1053, 6848, 3, 2, 2, 2, 1055, 6855, 3, 2, 2, 2, 1057, 6866, + 3, 2, 2, 2, 1059, 6873, 3, 2, 2, 2, 1061, 6889, 3, 2, 2, 2, 1063, 6908, + 3, 2, 2, 2, 1065, 6928, 3, 2, 2, 2, 1067, 6951, 3, 2, 2, 2, 1069, 6972, + 3, 2, 2, 2, 1071, 6996, 3, 2, 2, 2, 1073, 7024, 3, 2, 2, 2, 1075, 7036, + 3, 2, 2, 2, 1077, 7042, 3, 2, 2, 2, 1079, 7049, 3, 2, 2, 2, 1081, 7067, + 3, 2, 2, 2, 1083, 7077, 3, 2, 2, 2, 1085, 7085, 3, 2, 2, 2, 1087, 7090, + 3, 2, 2, 2, 1089, 7099, 3, 2, 2, 2, 1091, 7106, 3, 2, 2, 2, 1093, 7113, + 3, 2, 2, 2, 1095, 7117, 3, 2, 2, 2, 1097, 7122, 3, 2, 2, 2, 1099, 7133, + 3, 2, 2, 2, 1101, 7143, 3, 2, 2, 2, 1103, 7152, 3, 2, 2, 2, 1105, 7161, + 3, 2, 2, 2, 1107, 7168, 3, 2, 2, 2, 1109, 7176, 3, 2, 2, 2, 1111, 7182, + 3, 2, 2, 2, 1113, 7189, 3, 2, 2, 2, 1115, 7196, 3, 2, 2, 2, 1117, 7203, + 3, 2, 2, 2, 1119, 7209, 3, 2, 2, 2, 1121, 7214, 3, 2, 2, 2, 1123, 7223, + 3, 2, 2, 2, 1125, 7230, 3, 2, 2, 2, 1127, 7235, 3, 2, 2, 2, 1129, 7242, + 3, 2, 2, 2, 1131, 7249, 3, 2, 2, 2, 1133, 7256, 3, 2, 2, 2, 1135, 7272, + 3, 2, 2, 2, 1137, 7291, 3, 2, 2, 2, 1139, 7308, 3, 2, 2, 2, 1141, 7326, + 3, 2, 2, 2, 1143, 7336, 3, 2, 2, 2, 1145, 7349, 3, 2, 2, 2, 1147, 7360, + 3, 2, 2, 2, 1149, 7366, 3, 2, 2, 2, 1151, 7373, 3, 2, 2, 2, 1153, 7391, + 3, 2, 2, 2, 1155, 7408, 3, 2, 2, 2, 1157, 7427, 3, 2, 2, 2, 1159, 7434, + 3, 2, 2, 2, 1161, 7439, 3, 2, 2, 2, 1163, 7447, 3, 2, 2, 2, 1165, 7454, + 3, 2, 2, 2, 1167, 7461, 3, 2, 2, 2, 1169, 7477, 3, 2, 2, 2, 1171, 7485, + 3, 2, 2, 2, 1173, 7498, 3, 2, 2, 2, 1175, 7512, 3, 2, 2, 2, 1177, 7520, + 3, 2, 2, 2, 1179, 7526, 3, 2, 2, 2, 1181, 7535, 3, 2, 2, 2, 1183, 7546, + 3, 2, 2, 2, 1185, 7557, 3, 2, 2, 2, 1187, 7567, 3, 2, 2, 2, 1189, 7577, + 3, 2, 2, 2, 1191, 7582, 3, 2, 2, 2, 1193, 7594, 3, 2, 2, 2, 1195, 7606, + 3, 2, 2, 2, 1197, 7620, 3, 2, 2, 2, 1199, 7629, 3, 2, 2, 2, 1201, 7638, + 3, 2, 2, 2, 1203, 7648, 3, 2, 2, 2, 1205, 7657, 3, 2, 2, 2, 1207, 7674, + 3, 2, 2, 2, 1209, 7684, 3, 2, 2, 2, 1211, 7692, 3, 2, 2, 2, 1213, 7698, + 3, 2, 2, 2, 1215, 7706, 3, 2, 2, 2, 1217, 7711, 3, 2, 2, 2, 1219, 7719, + 3, 2, 2, 2, 1221, 7734, 3, 2, 2, 2, 1223, 7745, 3, 2, 2, 2, 1225, 7751, + 3, 2, 2, 2, 1227, 7761, 3, 2, 2, 2, 1229, 7766, 3, 2, 2, 2, 1231, 7774, + 3, 2, 2, 2, 1233, 7782, 3, 2, 2, 2, 1235, 7787, 3, 2, 2, 2, 1237, 7796, + 3, 2, 2, 2, 1239, 7804, 3, 2, 2, 2, 1241, 7809, 3, 2, 2, 2, 1243, 7817, + 3, 2, 2, 2, 1245, 7822, 3, 2, 2, 2, 1247, 7825, 3, 2, 2, 2, 1249, 7829, + 3, 2, 2, 2, 1251, 7833, 3, 2, 2, 2, 1253, 7837, 3, 2, 2, 2, 1255, 7841, + 3, 2, 2, 2, 1257, 7845, 3, 2, 2, 2, 1259, 7854, 3, 2, 2, 2, 1261, 7862, + 3, 2, 2, 2, 1263, 7868, 3, 2, 2, 2, 1265, 7872, 3, 2, 2, 2, 1267, 7877, + 3, 2, 2, 2, 1269, 7884, 3, 2, 2, 2, 1271, 7889, 3, 2, 2, 2, 1273, 7896, + 3, 2, 2, 2, 1275, 7908, 3, 2, 2, 2, 1277, 7915, 3, 2, 2, 2, 1279, 7923, + 3, 2, 2, 2, 1281, 7931, 3, 2, 2, 2, 1283, 7936, 3, 2, 2, 2, 1285, 7944, + 3, 2, 2, 2, 1287, 7951, 3, 2, 2, 2, 1289, 7960, 3, 2, 2, 2, 1291, 7966, + 3, 2, 2, 2, 1293, 7977, 3, 2, 2, 2, 1295, 8004, 3, 2, 2, 2, 1297, 8016, + 3, 2, 2, 2, 1299, 8029, 3, 2, 2, 2, 1301, 8042, 3, 2, 2, 2, 1303, 8066, + 3, 2, 2, 2, 1305, 8078, 3, 2, 2, 2, 1307, 8095, 3, 2, 2, 2, 1309, 8116, + 3, 2, 2, 2, 1311, 8131, 3, 2, 2, 2, 1313, 8145, 3, 2, 2, 2, 1315, 8167, + 3, 2, 2, 2, 1317, 8180, 3, 2, 2, 2, 1319, 8193, 3, 2, 2, 2, 1321, 8214, + 3, 2, 2, 2, 1323, 8238, 3, 2, 2, 2, 1325, 8262, 3, 2, 2, 2, 1327, 8285, + 3, 2, 2, 2, 1329, 8301, 3, 2, 2, 2, 1331, 8328, 3, 2, 2, 2, 1333, 8348, + 3, 2, 2, 2, 1335, 8372, 3, 2, 2, 2, 1337, 8393, 3, 2, 2, 2, 1339, 8413, + 3, 2, 2, 2, 1341, 8424, 3, 2, 2, 2, 1343, 8450, 3, 2, 2, 2, 1345, 8479, + 3, 2, 2, 2, 1347, 8491, 3, 2, 2, 2, 1349, 8504, 3, 2, 2, 2, 1351, 8527, + 3, 2, 2, 2, 1353, 8550, 3, 2, 2, 2, 1355, 8570, 3, 2, 2, 2, 1357, 8587, + 3, 2, 2, 2, 1359, 8596, 3, 2, 2, 2, 1361, 8602, 3, 2, 2, 2, 1363, 8607, + 3, 2, 2, 2, 1365, 8614, 3, 2, 2, 2, 1367, 8621, 3, 2, 2, 2, 1369, 8628, + 3, 2, 2, 2, 1371, 8635, 3, 2, 2, 2, 1373, 8641, 3, 2, 2, 2, 1375, 8647, + 3, 2, 2, 2, 1377, 8653, 3, 2, 2, 2, 1379, 8659, 3, 2, 2, 2, 1381, 8664, + 3, 2, 2, 2, 1383, 8672, 3, 2, 2, 2, 1385, 8678, 3, 2, 2, 2, 1387, 8685, + 3, 2, 2, 2, 1389, 8689, 3, 2, 2, 2, 1391, 8697, 3, 2, 2, 2, 1393, 8703, + 3, 2, 2, 2, 1395, 8710, 3, 2, 2, 2, 1397, 8714, 3, 2, 2, 2, 1399, 8722, + 3, 2, 2, 2, 1401, 8728, 3, 2, 2, 2, 1403, 8734, 3, 2, 2, 2, 1405, 8741, + 3, 2, 2, 2, 1407, 8748, 3, 2, 2, 2, 1409, 8755, 3, 2, 2, 2, 1411, 8762, + 3, 2, 2, 2, 1413, 8768, 3, 2, 2, 2, 1415, 8777, 3, 2, 2, 2, 1417, 8782, + 3, 2, 2, 2, 1419, 8787, 3, 2, 2, 2, 1421, 8794, 3, 2, 2, 2, 1423, 8799, + 3, 2, 2, 2, 1425, 8804, 3, 2, 2, 2, 1427, 8810, 3, 2, 2, 2, 1429, 8818, + 3, 2, 2, 2, 1431, 8824, 3, 2, 2, 2, 1433, 8829, 3, 2, 2, 2, 1435, 8837, + 3, 2, 2, 2, 1437, 8845, 3, 2, 2, 2, 1439, 8853, 3, 2, 2, 2, 1441, 8863, + 3, 2, 2, 2, 1443, 8867, 3, 2, 2, 2, 1445, 8877, 3, 2, 2, 2, 1447, 8884, + 3, 2, 2, 2, 1449, 8891, 3, 2, 2, 2, 1451, 8902, 3, 2, 2, 2, 1453, 8909, + 3, 2, 2, 2, 1455, 8913, 3, 2, 2, 2, 1457, 8924, 3, 2, 2, 2, 1459, 8943, + 3, 2, 2, 2, 1461, 8950, 3, 2, 2, 2, 1463, 8961, 3, 2, 2, 2, 1465, 8971, + 3, 2, 2, 2, 1467, 8983, 3, 2, 2, 2, 1469, 8996, 3, 2, 2, 2, 1471, 9015, + 3, 2, 2, 2, 1473, 9030, 3, 2, 2, 2, 1475, 9039, 3, 2, 2, 2, 1477, 9050, + 3, 2, 2, 2, 1479, 9066, 3, 2, 2, 2, 1481, 9077, 3, 2, 2, 2, 1483, 9090, + 3, 2, 2, 2, 1485, 9096, 3, 2, 2, 2, 1487, 9104, 3, 2, 2, 2, 1489, 9108, + 3, 2, 2, 2, 1491, 9113, 3, 2, 2, 2, 1493, 9121, 3, 2, 2, 2, 1495, 9129, + 3, 2, 2, 2, 1497, 9141, 3, 2, 2, 2, 1499, 9153, 3, 2, 2, 2, 1501, 9158, + 3, 2, 2, 2, 1503, 9167, 3, 2, 2, 2, 1505, 9172, 3, 2, 2, 2, 1507, 9179, + 3, 2, 2, 2, 1509, 9185, 3, 2, 2, 2, 1511, 9191, 3, 2, 2, 2, 1513, 9210, + 3, 2, 2, 2, 1515, 9228, 3, 2, 2, 2, 1517, 9247, 3, 2, 2, 2, 1519, 9263, + 3, 2, 2, 2, 1521, 9281, 3, 2, 2, 2, 1523, 9286, 3, 2, 2, 2, 1525, 9292, + 3, 2, 2, 2, 1527, 9302, 3, 2, 2, 2, 1529, 9306, 3, 2, 2, 2, 1531, 9316, + 3, 2, 2, 2, 1533, 9327, 3, 2, 2, 2, 1535, 9334, 3, 2, 2, 2, 1537, 9347, + 3, 2, 2, 2, 1539, 9352, 3, 2, 2, 2, 1541, 9360, 3, 2, 2, 2, 1543, 9369, + 3, 2, 2, 2, 1545, 9386, 3, 2, 2, 2, 1547, 9394, 3, 2, 2, 2, 1549, 9406, + 3, 2, 2, 2, 1551, 9419, 3, 2, 2, 2, 1553, 9429, 3, 2, 2, 2, 1555, 9438, + 3, 2, 2, 2, 1557, 9445, 3, 2, 2, 2, 1559, 9455, 3, 2, 2, 2, 1561, 9469, + 3, 2, 2, 2, 1563, 9474, 3, 2, 2, 2, 1565, 9485, 3, 2, 2, 2, 1567, 9489, + 3, 2, 2, 2, 1569, 9493, 3, 2, 2, 2, 1571, 9499, 3, 2, 2, 2, 1573, 9526, + 3, 2, 2, 2, 1575, 9552, 3, 2, 2, 2, 1577, 9573, 3, 2, 2, 2, 1579, 9587, + 3, 2, 2, 2, 1581, 9595, 3, 2, 2, 2, 1583, 9604, 3, 2, 2, 2, 1585, 9616, + 3, 2, 2, 2, 1587, 9624, 3, 2, 2, 2, 1589, 9635, 3, 2, 2, 2, 1591, 9645, + 3, 2, 2, 2, 1593, 9655, 3, 2, 2, 2, 1595, 9662, 3, 2, 2, 2, 1597, 9670, + 3, 2, 2, 2, 1599, 9682, 3, 2, 2, 2, 1601, 9694, 3, 2, 2, 2, 1603, 9704, + 3, 2, 2, 2, 1605, 9713, 3, 2, 2, 2, 1607, 9717, 3, 2, 2, 2, 1609, 9724, + 3, 2, 2, 2, 1611, 9732, 3, 2, 2, 2, 1613, 9741, 3, 2, 2, 2, 1615, 9750, + 3, 2, 2, 2, 1617, 9757, 3, 2, 2, 2, 1619, 9761, 3, 2, 2, 2, 1621, 9772, + 3, 2, 2, 2, 1623, 9785, 3, 2, 2, 2, 1625, 9798, 3, 2, 2, 2, 1627, 9804, + 3, 2, 2, 2, 1629, 9816, 3, 2, 2, 2, 1631, 9822, 3, 2, 2, 2, 1633, 9829, + 3, 2, 2, 2, 1635, 9840, 3, 2, 2, 2, 1637, 9852, 3, 2, 2, 2, 1639, 9862, + 3, 2, 2, 2, 1641, 9876, 3, 2, 2, 2, 1643, 9893, 3, 2, 2, 2, 1645, 9909, + 3, 2, 2, 2, 1647, 9936, 3, 2, 2, 2, 1649, 9962, 3, 2, 2, 2, 1651, 9979, + 3, 2, 2, 2, 1653, 9995, 3, 2, 2, 2, 1655, 10005, 3, 2, 2, 2, 1657, 10018, + 3, 2, 2, 2, 1659, 10031, 3, 2, 2, 2, 1661, 10043, 3, 2, 2, 2, 1663, 10054, + 3, 2, 2, 2, 1665, 10063, 3, 2, 2, 2, 1667, 10071, 3, 2, 2, 2, 1669, 10080, + 3, 2, 2, 2, 1671, 10092, 3, 2, 2, 2, 1673, 10106, 3, 2, 2, 2, 1675, 10110, + 3, 2, 2, 2, 1677, 10117, 3, 2, 2, 2, 1679, 10128, 3, 2, 2, 2, 1681, 10139, + 3, 2, 2, 2, 1683, 10149, 3, 2, 2, 2, 1685, 10159, 3, 2, 2, 2, 1687, 10165, + 3, 2, 2, 2, 1689, 10179, 3, 2, 2, 2, 1691, 10190, 3, 2, 2, 2, 1693, 10199, + 3, 2, 2, 2, 1695, 10207, 3, 2, 2, 2, 1697, 10214, 3, 2, 2, 2, 1699, 10223, + 3, 2, 2, 2, 1701, 10236, 3, 2, 2, 2, 1703, 10244, 3, 2, 2, 2, 1705, 10259, + 3, 2, 2, 2, 1707, 10274, 3, 2, 2, 2, 1709, 10282, 3, 2, 2, 2, 1711, 10295, + 3, 2, 2, 2, 1713, 10310, 3, 2, 2, 2, 1715, 10316, 3, 2, 2, 2, 1717, 10322, + 3, 2, 2, 2, 1719, 10329, 3, 2, 2, 2, 1721, 10342, 3, 2, 2, 2, 1723, 10354, + 3, 2, 2, 2, 1725, 10373, 3, 2, 2, 2, 1727, 10391, 3, 2, 2, 2, 1729, 10394, + 3, 2, 2, 2, 1731, 10404, 3, 2, 2, 2, 1733, 10411, 3, 2, 2, 2, 1735, 10415, + 3, 2, 2, 2, 1737, 10421, 3, 2, 2, 2, 1739, 10426, 3, 2, 2, 2, 1741, 10432, + 3, 2, 2, 2, 1743, 10437, 3, 2, 2, 2, 1745, 10443, 3, 2, 2, 2, 1747, 10452, + 3, 2, 2, 2, 1749, 10461, 3, 2, 2, 2, 1751, 10470, 3, 2, 2, 2, 1753, 10486, + 3, 2, 2, 2, 1755, 10498, 3, 2, 2, 2, 1757, 10510, 3, 2, 2, 2, 1759, 10519, + 3, 2, 2, 2, 1761, 10533, 3, 2, 2, 2, 1763, 10545, 3, 2, 2, 2, 1765, 10556, + 3, 2, 2, 2, 1767, 10566, 3, 2, 2, 2, 1769, 10570, 3, 2, 2, 2, 1771, 10584, + 3, 2, 2, 2, 1773, 10597, 3, 2, 2, 2, 1775, 10607, 3, 2, 2, 2, 1777, 10622, + 3, 2, 2, 2, 1779, 10636, 3, 2, 2, 2, 1781, 10650, 3, 2, 2, 2, 1783, 10663, + 3, 2, 2, 2, 1785, 10687, 3, 2, 2, 2, 1787, 10710, 3, 2, 2, 2, 1789, 10729, + 3, 2, 2, 2, 1791, 10747, 3, 2, 2, 2, 1793, 10768, 3, 2, 2, 2, 1795, 10788, + 3, 2, 2, 2, 1797, 10799, 3, 2, 2, 2, 1799, 10806, 3, 2, 2, 2, 1801, 10820, + 3, 2, 2, 2, 1803, 10837, 3, 2, 2, 2, 1805, 10847, 3, 2, 2, 2, 1807, 10851, + 3, 2, 2, 2, 1809, 10864, 3, 2, 2, 2, 1811, 10868, 3, 2, 2, 2, 1813, 10877, + 3, 2, 2, 2, 1815, 10888, 3, 2, 2, 2, 1817, 10900, 3, 2, 2, 2, 1819, 10903, + 3, 2, 2, 2, 1821, 10917, 3, 2, 2, 2, 1823, 10930, 3, 2, 2, 2, 1825, 10937, + 3, 2, 2, 2, 1827, 10950, 3, 2, 2, 2, 1829, 10962, 3, 2, 2, 2, 1831, 10978, + 3, 2, 2, 2, 1833, 10993, 3, 2, 2, 2, 1835, 10997, 3, 2, 2, 2, 1837, 11003, + 3, 2, 2, 2, 1839, 11009, 3, 2, 2, 2, 1841, 11017, 3, 2, 2, 2, 1843, 11022, + 3, 2, 2, 2, 1845, 11035, 3, 2, 2, 2, 1847, 11048, 3, 2, 2, 2, 1849, 11056, + 3, 2, 2, 2, 1851, 11062, 3, 2, 2, 2, 1853, 11072, 3, 2, 2, 2, 1855, 11077, + 3, 2, 2, 2, 1857, 11083, 3, 2, 2, 2, 1859, 11095, 3, 2, 2, 2, 1861, 11108, + 3, 2, 2, 2, 1863, 11112, 3, 2, 2, 2, 1865, 11117, 3, 2, 2, 2, 1867, 11122, + 3, 2, 2, 2, 1869, 11134, 3, 2, 2, 2, 1871, 11139, 3, 2, 2, 2, 1873, 11143, + 3, 2, 2, 2, 1875, 11149, 3, 2, 2, 2, 1877, 11157, 3, 2, 2, 2, 1879, 11185, + 3, 2, 2, 2, 1881, 11190, 3, 2, 2, 2, 1883, 11195, 3, 2, 2, 2, 1885, 11206, + 3, 2, 2, 2, 1887, 11213, 3, 2, 2, 2, 1889, 11225, 3, 2, 2, 2, 1891, 11233, + 3, 2, 2, 2, 1893, 11245, 3, 2, 2, 2, 1895, 11255, 3, 2, 2, 2, 1897, 11264, + 3, 2, 2, 2, 1899, 11273, 3, 2, 2, 2, 1901, 11283, 3, 2, 2, 2, 1903, 11295, + 3, 2, 2, 2, 1905, 11307, 3, 2, 2, 2, 1907, 11318, 3, 2, 2, 2, 1909, 11332, + 3, 2, 2, 2, 1911, 11345, 3, 2, 2, 2, 1913, 11357, 3, 2, 2, 2, 1915, 11369, + 3, 2, 2, 2, 1917, 11381, 3, 2, 2, 2, 1919, 11393, 3, 2, 2, 2, 1921, 11403, + 3, 2, 2, 2, 1923, 11419, 3, 2, 2, 2, 1925, 11439, 3, 2, 2, 2, 1927, 11458, + 3, 2, 2, 2, 1929, 11477, 3, 2, 2, 2, 1931, 11507, 3, 2, 2, 2, 1933, 11536, + 3, 2, 2, 2, 1935, 11556, 3, 2, 2, 2, 1937, 11575, 3, 2, 2, 2, 1939, 11588, + 3, 2, 2, 2, 1941, 11604, 3, 2, 2, 2, 1943, 11620, 3, 2, 2, 2, 1945, 11635, + 3, 2, 2, 2, 1947, 11652, 3, 2, 2, 2, 1949, 11668, 3, 2, 2, 2, 1951, 11682, + 3, 2, 2, 2, 1953, 11694, 3, 2, 2, 2, 1955, 11705, 3, 2, 2, 2, 1957, 11717, + 3, 2, 2, 2, 1959, 11733, 3, 2, 2, 2, 1961, 11748, 3, 2, 2, 2, 1963, 11770, + 3, 2, 2, 2, 1965, 11791, 3, 2, 2, 2, 1967, 11808, 3, 2, 2, 2, 1969, 11827, + 3, 2, 2, 2, 1971, 11847, 3, 2, 2, 2, 1973, 11860, 3, 2, 2, 2, 1975, 11872, + 3, 2, 2, 2, 1977, 11889, 3, 2, 2, 2, 1979, 11905, 3, 2, 2, 2, 1981, 11915, + 3, 2, 2, 2, 1983, 11931, 3, 2, 2, 2, 1985, 11946, 3, 2, 2, 2, 1987, 11965, + 3, 2, 2, 2, 1989, 11983, 3, 2, 2, 2, 1991, 11991, 3, 2, 2, 2, 1993, 12005, + 3, 2, 2, 2, 1995, 12022, 3, 2, 2, 2, 1997, 12033, 3, 2, 2, 2, 1999, 12042, + 3, 2, 2, 2, 2001, 12052, 3, 2, 2, 2, 2003, 12057, 3, 2, 2, 2, 2005, 12062, + 3, 2, 2, 2, 2007, 12070, 3, 2, 2, 2, 2009, 12086, 3, 2, 2, 2, 2011, 12094, + 3, 2, 2, 2, 2013, 12106, 3, 2, 2, 2, 2015, 12110, 3, 2, 2, 2, 2017, 12119, + 3, 2, 2, 2, 2019, 12132, 3, 2, 2, 2, 2021, 12146, 3, 2, 2, 2, 2023, 12158, + 3, 2, 2, 2, 2025, 12170, 3, 2, 2, 2, 2027, 12178, 3, 2, 2, 2, 2029, 12188, + 3, 2, 2, 2, 2031, 12196, 3, 2, 2, 2, 2033, 12207, 3, 2, 2, 2, 2035, 12213, + 3, 2, 2, 2, 2037, 12224, 3, 2, 2, 2, 2039, 12244, 3, 2, 2, 2, 2041, 12250, + 3, 2, 2, 2, 2043, 12265, 3, 2, 2, 2, 2045, 12275, 3, 2, 2, 2, 2047, 12281, + 3, 2, 2, 2, 2049, 12286, 3, 2, 2, 2, 2051, 12297, 3, 2, 2, 2, 2053, 12324, + 3, 2, 2, 2, 2055, 12332, 3, 2, 2, 2, 2057, 12366, 3, 2, 2, 2, 2059, 12374, + 3, 2, 2, 2, 2061, 12385, 3, 2, 2, 2, 2063, 12399, 3, 2, 2, 2, 2065, 12406, + 3, 2, 2, 2, 2067, 12415, 3, 2, 2, 2, 2069, 12417, 3, 2, 2, 2, 2071, 12419, + 3, 2, 2, 2, 2073, 12422, 3, 2, 2, 2, 2075, 12425, 3, 2, 2, 2, 2077, 12428, + 3, 2, 2, 2, 2079, 12431, 3, 2, 2, 2, 2081, 12434, 3, 2, 2, 2, 2083, 12437, + 3, 2, 2, 2, 2085, 12440, 3, 2, 2, 2, 2087, 12443, 3, 2, 2, 2, 2089, 12446, + 3, 2, 2, 2, 2091, 12448, 3, 2, 2, 2, 2093, 12450, 3, 2, 2, 2, 2095, 12452, + 3, 2, 2, 2, 2097, 12454, 3, 2, 2, 2, 2099, 12457, 3, 2, 2, 2, 2101, 12459, + 3, 2, 2, 2, 2103, 12463, 3, 2, 2, 2, 2105, 12467, 3, 2, 2, 2, 2107, 12469, + 3, 2, 2, 2, 2109, 12471, 3, 2, 2, 2, 2111, 12473, 3, 2, 2, 2, 2113, 12475, + 3, 2, 2, 2, 2115, 12477, 3, 2, 2, 2, 2117, 12479, 3, 2, 2, 2, 2119, 12481, + 3, 2, 2, 2, 2121, 12483, 3, 2, 2, 2, 2123, 12485, 3, 2, 2, 2, 2125, 12487, + 3, 2, 2, 2, 2127, 12489, 3, 2, 2, 2, 2129, 12491, 3, 2, 2, 2, 2131, 12493, + 3, 2, 2, 2, 2133, 12495, 3, 2, 2, 2, 2135, 12497, 3, 2, 2, 2, 2137, 12499, + 3, 2, 2, 2, 2139, 12501, 3, 2, 2, 2, 2141, 12503, 3, 2, 2, 2, 2143, 12505, + 3, 2, 2, 2, 2145, 12507, 3, 2, 2, 2, 2147, 12512, 3, 2, 2, 2, 2149, 12514, + 3, 2, 2, 2, 2151, 12519, 3, 2, 2, 2, 2153, 12525, 3, 2, 2, 2, 2155, 12531, + 3, 2, 2, 2, 2157, 12534, 3, 2, 2, 2, 2159, 12557, 3, 2, 2, 2, 2161, 12602, + 3, 2, 2, 2, 2163, 12604, 3, 2, 2, 2, 2165, 12607, 3, 2, 2, 2, 2167, 12609, + 3, 2, 2, 2, 2169, 12612, 3, 2, 2, 2, 2171, 12615, 3, 2, 2, 2, 2173, 12617, + 3, 2, 2, 2, 2175, 12629, 3, 2, 2, 2, 2177, 12661, 3, 2, 2, 2, 2179, 12663, + 3, 2, 2, 2, 2181, 12674, 3, 2, 2, 2, 2183, 12725, 3, 2, 2, 2, 2185, 12727, + 3, 2, 2, 2, 2187, 12739, 3, 2, 2, 2, 2189, 12753, 3, 2, 2, 2, 2191, 12766, + 3, 2, 2, 2, 2193, 12779, 3, 2, 2, 2, 2195, 12792, 3, 2, 2, 2, 2197, 12794, + 3, 2, 2, 2, 2199, 12796, 3, 2, 2, 2, 2201, 12805, 3, 2, 2, 2, 2203, 2205, + 9, 2, 2, 2, 2204, 2203, 3, 2, 2, 2, 2205, 2206, 3, 2, 2, 2, 2206, 2204, + 3, 2, 2, 2, 2206, 2207, 3, 2, 2, 2, 2207, 2208, 3, 2, 2, 2, 2208, 2209, + 8, 2, 2, 2, 2209, 4, 3, 2, 2, 2, 2210, 2211, 7, 49, 2, 2, 2211, 2212, 7, + 44, 2, 2, 2212, 2213, 7, 35, 2, 2, 2213, 2215, 3, 2, 2, 2, 2214, 2216, + 11, 2, 2, 2, 2215, 2214, 3, 2, 2, 2, 2216, 2217, 3, 2, 2, 2, 2217, 2218, + 3, 2, 2, 2, 2217, 2215, 3, 2, 2, 2, 2218, 2219, 3, 2, 2, 2, 2219, 2220, + 7, 44, 2, 2, 2220, 2221, 7, 49, 2, 2, 2221, 2222, 3, 2, 2, 2, 2222, 2223, + 8, 3, 3, 2, 2223, 6, 3, 2, 2, 2, 2224, 2225, 7, 49, 2, 2, 2225, 2226, 7, + 44, 2, 2, 2226, 2230, 3, 2, 2, 2, 2227, 2229, 11, 2, 2, 2, 2228, 2227, + 3, 2, 2, 2, 2229, 2232, 3, 2, 2, 2, 2230, 2231, 3, 2, 2, 2, 2230, 2228, + 3, 2, 2, 2, 2231, 2233, 3, 2, 2, 2, 2232, 2230, 3, 2, 2, 2, 2233, 2234, + 7, 44, 2, 2, 2234, 2235, 7, 49, 2, 2, 2235, 2236, 3, 2, 2, 2, 2236, 2237, + 8, 4, 2, 2, 2237, 8, 3, 2, 2, 2, 2238, 2239, 7, 47, 2, 2, 2239, 2240, 7, + 47, 2, 2, 2240, 2241, 3, 2, 2, 2, 2241, 2244, 9, 3, 2, 2, 2242, 2244, 7, + 37, 2, 2, 2243, 2238, 3, 2, 2, 2, 2243, 2242, 3, 2, 2, 2, 2244, 2248, 3, + 2, 2, 2, 2245, 2247, 10, 4, 2, 2, 2246, 2245, 3, 2, 2, 2, 2247, 2250, 3, + 2, 2, 2, 2248, 2246, 3, 2, 2, 2, 2248, 2249, 3, 2, 2, 2, 2249, 2256, 3, + 2, 2, 2, 2250, 2248, 3, 2, 2, 2, 2251, 2253, 7, 15, 2, 2, 2252, 2251, 3, + 2, 2, 2, 2252, 2253, 3, 2, 2, 2, 2253, 2254, 3, 2, 2, 2, 2254, 2257, 7, + 12, 2, 2, 2255, 2257, 7, 2, 2, 3, 2256, 2252, 3, 2, 2, 2, 2256, 2255, 3, + 2, 2, 2, 2257, 2269, 3, 2, 2, 2, 2258, 2259, 7, 47, 2, 2, 2259, 2260, 7, + 47, 2, 2, 2260, 2266, 3, 2, 2, 2, 2261, 2263, 7, 15, 2, 2, 2262, 2261, + 3, 2, 2, 2, 2262, 2263, 3, 2, 2, 2, 2263, 2264, 3, 2, 2, 2, 2264, 2267, + 7, 12, 2, 2, 2265, 2267, 7, 2, 2, 3, 2266, 2262, 3, 2, 2, 2, 2266, 2265, + 3, 2, 2, 2, 2267, 2269, 3, 2, 2, 2, 2268, 2243, 3, 2, 2, 2, 2268, 2258, + 3, 2, 2, 2, 2269, 2270, 3, 2, 2, 2, 2270, 2271, 8, 5, 2, 2, 2271, 10, 3, + 2, 2, 2, 2272, 2273, 7, 67, 2, 2, 2273, 2274, 7, 70, 2, 2, 2274, 2275, + 7, 70, 2, 2, 2275, 12, 3, 2, 2, 2, 2276, 2277, 7, 67, 2, 2, 2277, 2278, + 7, 78, 2, 2, 2278, 2279, 7, 78, 2, 2, 2279, 14, 3, 2, 2, 2, 2280, 2281, + 7, 67, 2, 2, 2281, 2282, 7, 78, 2, 2, 2282, 2283, 7, 86, 2, 2, 2283, 2284, + 7, 71, 2, 2, 2284, 2285, 7, 84, 2, 2, 2285, 16, 3, 2, 2, 2, 2286, 2287, + 7, 67, 2, 2, 2287, 2288, 7, 78, 2, 2, 2288, 2289, 7, 89, 2, 2, 2289, 2290, + 7, 67, 2, 2, 2290, 2291, 7, 91, 2, 2, 2291, 2292, 7, 85, 2, 2, 2292, 18, + 3, 2, 2, 2, 2293, 2294, 7, 67, 2, 2, 2294, 2295, 7, 80, 2, 2, 2295, 2296, + 7, 67, 2, 2, 2296, 2297, 7, 78, 2, 2, 2297, 2298, 7, 91, 2, 2, 2298, 2299, + 7, 92, 2, 2, 2299, 2300, 7, 71, 2, 2, 2300, 20, 3, 2, 2, 2, 2301, 2302, + 7, 67, 2, 2, 2302, 2303, 7, 80, 2, 2, 2303, 2304, 7, 70, 2, 2, 2304, 22, + 3, 2, 2, 2, 2305, 2306, 7, 67, 2, 2, 2306, 2307, 7, 85, 2, 2, 2307, 24, + 3, 2, 2, 2, 2308, 2309, 7, 67, 2, 2, 2309, 2310, 7, 85, 2, 2, 2310, 2311, + 7, 69, 2, 2, 2311, 26, 3, 2, 2, 2, 2312, 2313, 7, 68, 2, 2, 2313, 2314, + 7, 71, 2, 2, 2314, 2315, 7, 72, 2, 2, 2315, 2316, 7, 81, 2, 2, 2316, 2317, + 7, 84, 2, 2, 2317, 2318, 7, 71, 2, 2, 2318, 28, 3, 2, 2, 2, 2319, 2320, + 7, 68, 2, 2, 2320, 2321, 7, 71, 2, 2, 2321, 2322, 7, 86, 2, 2, 2322, 2323, + 7, 89, 2, 2, 2323, 2324, 7, 71, 2, 2, 2324, 2325, 7, 71, 2, 2, 2325, 2326, + 7, 80, 2, 2, 2326, 30, 3, 2, 2, 2, 2327, 2328, 7, 68, 2, 2, 2328, 2329, + 7, 81, 2, 2, 2329, 2330, 7, 86, 2, 2, 2330, 2331, 7, 74, 2, 2, 2331, 32, + 3, 2, 2, 2, 2332, 2333, 7, 68, 2, 2, 2333, 2334, 7, 91, 2, 2, 2334, 34, + 3, 2, 2, 2, 2335, 2336, 7, 69, 2, 2, 2336, 2337, 7, 67, 2, 2, 2337, 2338, + 7, 78, 2, 2, 2338, 2339, 7, 78, 2, 2, 2339, 36, 3, 2, 2, 2, 2340, 2341, + 7, 69, 2, 2, 2341, 2342, 7, 67, 2, 2, 2342, 2343, 7, 85, 2, 2, 2343, 2344, + 7, 69, 2, 2, 2344, 2345, 7, 67, 2, 2, 2345, 2346, 7, 70, 2, 2, 2346, 2347, + 7, 71, 2, 2, 2347, 38, 3, 2, 2, 2, 2348, 2349, 7, 69, 2, 2, 2349, 2350, + 7, 67, 2, 2, 2350, 2351, 7, 85, 2, 2, 2351, 2352, 7, 71, 2, 2, 2352, 40, + 3, 2, 2, 2, 2353, 2354, 7, 69, 2, 2, 2354, 2355, 7, 67, 2, 2, 2355, 2356, + 7, 85, 2, 2, 2356, 2357, 7, 86, 2, 2, 2357, 42, 3, 2, 2, 2, 2358, 2359, + 7, 69, 2, 2, 2359, 2360, 7, 74, 2, 2, 2360, 2361, 7, 67, 2, 2, 2361, 2362, + 7, 80, 2, 2, 2362, 2363, 7, 73, 2, 2, 2363, 2364, 7, 71, 2, 2, 2364, 44, + 3, 2, 2, 2, 2365, 2366, 7, 69, 2, 2, 2366, 2367, 7, 74, 2, 2, 2367, 2368, + 7, 67, 2, 2, 2368, 2369, 7, 84, 2, 2, 2369, 2370, 7, 67, 2, 2, 2370, 2371, + 7, 69, 2, 2, 2371, 2372, 7, 86, 2, 2, 2372, 2373, 7, 71, 2, 2, 2373, 2374, + 7, 84, 2, 2, 2374, 46, 3, 2, 2, 2, 2375, 2376, 7, 69, 2, 2, 2376, 2377, + 7, 74, 2, 2, 2377, 2378, 7, 71, 2, 2, 2378, 2379, 7, 69, 2, 2, 2379, 2380, + 7, 77, 2, 2, 2380, 48, 3, 2, 2, 2, 2381, 2382, 7, 69, 2, 2, 2382, 2383, + 7, 81, 2, 2, 2383, 2384, 7, 78, 2, 2, 2384, 2385, 7, 78, 2, 2, 2385, 2386, + 7, 67, 2, 2, 2386, 2387, 7, 86, 2, 2, 2387, 2388, 7, 71, 2, 2, 2388, 50, + 3, 2, 2, 2, 2389, 2390, 7, 69, 2, 2, 2390, 2391, 7, 81, 2, 2, 2391, 2392, + 7, 78, 2, 2, 2392, 2393, 7, 87, 2, 2, 2393, 2394, 7, 79, 2, 2, 2394, 2395, + 7, 80, 2, 2, 2395, 52, 3, 2, 2, 2, 2396, 2397, 7, 69, 2, 2, 2397, 2398, + 7, 81, 2, 2, 2398, 2399, 7, 80, 2, 2, 2399, 2400, 7, 70, 2, 2, 2400, 2401, + 7, 75, 2, 2, 2401, 2402, 7, 86, 2, 2, 2402, 2403, 7, 75, 2, 2, 2403, 2404, + 7, 81, 2, 2, 2404, 2405, 7, 80, 2, 2, 2405, 54, 3, 2, 2, 2, 2406, 2407, + 7, 69, 2, 2, 2407, 2408, 7, 81, 2, 2, 2408, 2409, 7, 80, 2, 2, 2409, 2410, + 7, 85, 2, 2, 2410, 2411, 7, 86, 2, 2, 2411, 2412, 7, 84, 2, 2, 2412, 2413, + 7, 67, 2, 2, 2413, 2414, 7, 75, 2, 2, 2414, 2415, 7, 80, 2, 2, 2415, 2416, + 7, 86, 2, 2, 2416, 56, 3, 2, 2, 2, 2417, 2418, 7, 69, 2, 2, 2418, 2419, + 7, 81, 2, 2, 2419, 2420, 7, 80, 2, 2, 2420, 2421, 7, 86, 2, 2, 2421, 2422, + 7, 75, 2, 2, 2422, 2423, 7, 80, 2, 2, 2423, 2424, 7, 87, 2, 2, 2424, 2425, + 7, 71, 2, 2, 2425, 58, 3, 2, 2, 2, 2426, 2427, 7, 69, 2, 2, 2427, 2428, + 7, 81, 2, 2, 2428, 2429, 7, 80, 2, 2, 2429, 2430, 7, 88, 2, 2, 2430, 2431, + 7, 71, 2, 2, 2431, 2432, 7, 84, 2, 2, 2432, 2433, 7, 86, 2, 2, 2433, 60, + 3, 2, 2, 2, 2434, 2435, 7, 69, 2, 2, 2435, 2436, 7, 84, 2, 2, 2436, 2437, + 7, 71, 2, 2, 2437, 2438, 7, 67, 2, 2, 2438, 2439, 7, 86, 2, 2, 2439, 2440, + 7, 71, 2, 2, 2440, 62, 3, 2, 2, 2, 2441, 2442, 7, 69, 2, 2, 2442, 2443, + 7, 84, 2, 2, 2443, 2444, 7, 81, 2, 2, 2444, 2445, 7, 85, 2, 2, 2445, 2446, + 7, 85, 2, 2, 2446, 64, 3, 2, 2, 2, 2447, 2448, 7, 69, 2, 2, 2448, 2449, + 7, 87, 2, 2, 2449, 2450, 7, 84, 2, 2, 2450, 2451, 7, 84, 2, 2, 2451, 2452, + 7, 71, 2, 2, 2452, 2453, 7, 80, 2, 2, 2453, 2454, 7, 86, 2, 2, 2454, 66, + 3, 2, 2, 2, 2455, 2456, 7, 69, 2, 2, 2456, 2457, 7, 87, 2, 2, 2457, 2458, + 7, 84, 2, 2, 2458, 2459, 7, 84, 2, 2, 2459, 2460, 7, 71, 2, 2, 2460, 2461, + 7, 80, 2, 2, 2461, 2462, 7, 86, 2, 2, 2462, 2463, 7, 97, 2, 2, 2463, 2464, + 7, 87, 2, 2, 2464, 2465, 7, 85, 2, 2, 2465, 2466, 7, 71, 2, 2, 2466, 2467, + 7, 84, 2, 2, 2467, 68, 3, 2, 2, 2, 2468, 2469, 7, 69, 2, 2, 2469, 2470, + 7, 87, 2, 2, 2470, 2471, 7, 84, 2, 2, 2471, 2472, 7, 85, 2, 2, 2472, 2473, + 7, 81, 2, 2, 2473, 2474, 7, 84, 2, 2, 2474, 70, 3, 2, 2, 2, 2475, 2476, + 7, 70, 2, 2, 2476, 2477, 7, 67, 2, 2, 2477, 2478, 7, 86, 2, 2, 2478, 2479, + 7, 67, 2, 2, 2479, 2480, 7, 68, 2, 2, 2480, 2481, 7, 67, 2, 2, 2481, 2482, + 7, 85, 2, 2, 2482, 2483, 7, 71, 2, 2, 2483, 72, 3, 2, 2, 2, 2484, 2485, + 7, 70, 2, 2, 2485, 2486, 7, 67, 2, 2, 2486, 2487, 7, 86, 2, 2, 2487, 2488, + 7, 67, 2, 2, 2488, 2489, 7, 68, 2, 2, 2489, 2490, 7, 67, 2, 2, 2490, 2491, + 7, 85, 2, 2, 2491, 2492, 7, 71, 2, 2, 2492, 2493, 7, 85, 2, 2, 2493, 74, + 3, 2, 2, 2, 2494, 2495, 7, 70, 2, 2, 2495, 2496, 7, 71, 2, 2, 2496, 2497, + 7, 69, 2, 2, 2497, 2498, 7, 78, 2, 2, 2498, 2499, 7, 67, 2, 2, 2499, 2500, + 7, 84, 2, 2, 2500, 2501, 7, 71, 2, 2, 2501, 76, 3, 2, 2, 2, 2502, 2503, + 7, 70, 2, 2, 2503, 2504, 7, 71, 2, 2, 2504, 2505, 7, 72, 2, 2, 2505, 2506, + 7, 67, 2, 2, 2506, 2507, 7, 87, 2, 2, 2507, 2508, 7, 78, 2, 2, 2508, 2509, + 7, 86, 2, 2, 2509, 78, 3, 2, 2, 2, 2510, 2511, 7, 70, 2, 2, 2511, 2512, + 7, 71, 2, 2, 2512, 2513, 7, 78, 2, 2, 2513, 2514, 7, 67, 2, 2, 2514, 2515, + 7, 91, 2, 2, 2515, 2516, 7, 71, 2, 2, 2516, 2517, 7, 70, 2, 2, 2517, 80, + 3, 2, 2, 2, 2518, 2519, 7, 70, 2, 2, 2519, 2520, 7, 71, 2, 2, 2520, 2521, + 7, 78, 2, 2, 2521, 2522, 7, 71, 2, 2, 2522, 2523, 7, 86, 2, 2, 2523, 2524, + 7, 71, 2, 2, 2524, 82, 3, 2, 2, 2, 2525, 2526, 7, 70, 2, 2, 2526, 2527, + 7, 71, 2, 2, 2527, 2528, 7, 85, 2, 2, 2528, 2529, 7, 69, 2, 2, 2529, 84, + 3, 2, 2, 2, 2530, 2531, 7, 70, 2, 2, 2531, 2532, 7, 71, 2, 2, 2532, 2533, + 7, 85, 2, 2, 2533, 2534, 7, 69, 2, 2, 2534, 2535, 7, 84, 2, 2, 2535, 2536, + 7, 75, 2, 2, 2536, 2537, 7, 68, 2, 2, 2537, 2538, 7, 71, 2, 2, 2538, 86, + 3, 2, 2, 2, 2539, 2540, 7, 70, 2, 2, 2540, 2541, 7, 71, 2, 2, 2541, 2542, + 7, 86, 2, 2, 2542, 2543, 7, 71, 2, 2, 2543, 2544, 7, 84, 2, 2, 2544, 2545, + 7, 79, 2, 2, 2545, 2546, 7, 75, 2, 2, 2546, 2547, 7, 80, 2, 2, 2547, 2548, + 7, 75, 2, 2, 2548, 2549, 7, 85, 2, 2, 2549, 2550, 7, 86, 2, 2, 2550, 2551, + 7, 75, 2, 2, 2551, 2552, 7, 69, 2, 2, 2552, 88, 3, 2, 2, 2, 2553, 2554, + 7, 70, 2, 2, 2554, 2555, 7, 75, 2, 2, 2555, 2556, 7, 67, 2, 2, 2556, 2557, + 7, 73, 2, 2, 2557, 2558, 7, 80, 2, 2, 2558, 2559, 7, 81, 2, 2, 2559, 2560, + 7, 85, 2, 2, 2560, 2561, 7, 86, 2, 2, 2561, 2562, 7, 75, 2, 2, 2562, 2563, + 7, 69, 2, 2, 2563, 2564, 7, 85, 2, 2, 2564, 90, 3, 2, 2, 2, 2565, 2566, + 7, 70, 2, 2, 2566, 2567, 7, 75, 2, 2, 2567, 2568, 7, 85, 2, 2, 2568, 2569, + 7, 86, 2, 2, 2569, 2570, 7, 75, 2, 2, 2570, 2571, 7, 80, 2, 2, 2571, 2572, + 7, 69, 2, 2, 2572, 2573, 7, 86, 2, 2, 2573, 92, 3, 2, 2, 2, 2574, 2575, + 7, 70, 2, 2, 2575, 2576, 7, 75, 2, 2, 2576, 2577, 7, 85, 2, 2, 2577, 2578, + 7, 86, 2, 2, 2578, 2579, 7, 75, 2, 2, 2579, 2580, 7, 80, 2, 2, 2580, 2581, + 7, 69, 2, 2, 2581, 2582, 7, 86, 2, 2, 2582, 2583, 7, 84, 2, 2, 2583, 2584, + 7, 81, 2, 2, 2584, 2585, 7, 89, 2, 2, 2585, 94, 3, 2, 2, 2, 2586, 2587, + 7, 70, 2, 2, 2587, 2588, 7, 84, 2, 2, 2588, 2589, 7, 81, 2, 2, 2589, 2590, + 7, 82, 2, 2, 2590, 96, 3, 2, 2, 2, 2591, 2592, 7, 71, 2, 2, 2592, 2593, + 7, 67, 2, 2, 2593, 2594, 7, 69, 2, 2, 2594, 2595, 7, 74, 2, 2, 2595, 98, + 3, 2, 2, 2, 2596, 2597, 7, 71, 2, 2, 2597, 2598, 7, 78, 2, 2, 2598, 2599, + 7, 85, 2, 2, 2599, 2600, 7, 71, 2, 2, 2600, 100, 3, 2, 2, 2, 2601, 2602, + 7, 71, 2, 2, 2602, 2603, 7, 78, 2, 2, 2603, 2604, 7, 85, 2, 2, 2604, 2605, + 7, 71, 2, 2, 2605, 2606, 7, 75, 2, 2, 2606, 2607, 7, 72, 2, 2, 2607, 102, + 3, 2, 2, 2, 2608, 2609, 7, 71, 2, 2, 2609, 2610, 7, 79, 2, 2, 2610, 2611, + 7, 82, 2, 2, 2611, 2612, 7, 86, 2, 2, 2612, 2613, 7, 91, 2, 2, 2613, 104, + 3, 2, 2, 2, 2614, 2615, 7, 71, 2, 2, 2615, 2616, 7, 80, 2, 2, 2616, 2617, + 7, 69, 2, 2, 2617, 2618, 7, 78, 2, 2, 2618, 2619, 7, 81, 2, 2, 2619, 2620, + 7, 85, 2, 2, 2620, 2621, 7, 71, 2, 2, 2621, 2622, 7, 70, 2, 2, 2622, 106, + 3, 2, 2, 2, 2623, 2624, 7, 71, 2, 2, 2624, 2625, 7, 85, 2, 2, 2625, 2626, + 7, 69, 2, 2, 2626, 2627, 7, 67, 2, 2, 2627, 2628, 7, 82, 2, 2, 2628, 2629, + 7, 71, 2, 2, 2629, 2630, 7, 70, 2, 2, 2630, 108, 3, 2, 2, 2, 2631, 2632, + 7, 71, 2, 2, 2632, 2633, 7, 90, 2, 2, 2633, 2634, 7, 75, 2, 2, 2634, 2635, + 7, 85, 2, 2, 2635, 2636, 7, 86, 2, 2, 2636, 2637, 7, 85, 2, 2, 2637, 110, + 3, 2, 2, 2, 2638, 2639, 7, 71, 2, 2, 2639, 2640, 7, 90, 2, 2, 2640, 2641, + 7, 75, 2, 2, 2641, 2642, 7, 86, 2, 2, 2642, 112, 3, 2, 2, 2, 2643, 2644, + 7, 71, 2, 2, 2644, 2645, 7, 90, 2, 2, 2645, 2646, 7, 82, 2, 2, 2646, 2647, + 7, 78, 2, 2, 2647, 2648, 7, 67, 2, 2, 2648, 2649, 7, 75, 2, 2, 2649, 2650, + 7, 80, 2, 2, 2650, 114, 3, 2, 2, 2, 2651, 2652, 7, 72, 2, 2, 2652, 2653, + 7, 67, 2, 2, 2653, 2654, 7, 78, 2, 2, 2654, 2655, 7, 85, 2, 2, 2655, 2656, + 7, 71, 2, 2, 2656, 116, 3, 2, 2, 2, 2657, 2658, 7, 72, 2, 2, 2658, 2659, + 7, 71, 2, 2, 2659, 2660, 7, 86, 2, 2, 2660, 2661, 7, 69, 2, 2, 2661, 2662, + 7, 74, 2, 2, 2662, 118, 3, 2, 2, 2, 2663, 2664, 7, 72, 2, 2, 2664, 2665, + 7, 81, 2, 2, 2665, 2666, 7, 84, 2, 2, 2666, 120, 3, 2, 2, 2, 2667, 2668, + 7, 72, 2, 2, 2668, 2669, 7, 81, 2, 2, 2669, 2670, 7, 84, 2, 2, 2670, 2671, + 7, 69, 2, 2, 2671, 2672, 7, 71, 2, 2, 2672, 122, 3, 2, 2, 2, 2673, 2674, + 7, 72, 2, 2, 2674, 2675, 7, 81, 2, 2, 2675, 2676, 7, 84, 2, 2, 2676, 2677, + 7, 71, 2, 2, 2677, 2678, 7, 75, 2, 2, 2678, 2679, 7, 73, 2, 2, 2679, 2680, + 7, 80, 2, 2, 2680, 124, 3, 2, 2, 2, 2681, 2682, 7, 72, 2, 2, 2682, 2683, + 7, 84, 2, 2, 2683, 2684, 7, 81, 2, 2, 2684, 2685, 7, 79, 2, 2, 2685, 126, + 3, 2, 2, 2, 2686, 2687, 7, 72, 2, 2, 2687, 2688, 7, 87, 2, 2, 2688, 2689, + 7, 78, 2, 2, 2689, 2690, 7, 78, 2, 2, 2690, 2691, 7, 86, 2, 2, 2691, 2692, + 7, 71, 2, 2, 2692, 2693, 7, 90, 2, 2, 2693, 2694, 7, 86, 2, 2, 2694, 128, + 3, 2, 2, 2, 2695, 2696, 7, 73, 2, 2, 2696, 2697, 7, 71, 2, 2, 2697, 2698, + 7, 80, 2, 2, 2698, 2699, 7, 71, 2, 2, 2699, 2700, 7, 84, 2, 2, 2700, 2701, + 7, 67, 2, 2, 2701, 2702, 7, 86, 2, 2, 2702, 2703, 7, 71, 2, 2, 2703, 2704, + 7, 70, 2, 2, 2704, 130, 3, 2, 2, 2, 2705, 2706, 7, 73, 2, 2, 2706, 2707, + 7, 71, 2, 2, 2707, 2708, 7, 86, 2, 2, 2708, 132, 3, 2, 2, 2, 2709, 2710, + 7, 73, 2, 2, 2710, 2711, 7, 84, 2, 2, 2711, 2712, 7, 67, 2, 2, 2712, 2713, + 7, 80, 2, 2, 2713, 2714, 7, 86, 2, 2, 2714, 134, 3, 2, 2, 2, 2715, 2716, + 7, 73, 2, 2, 2716, 2717, 7, 84, 2, 2, 2717, 2718, 7, 81, 2, 2, 2718, 2719, + 7, 87, 2, 2, 2719, 2720, 7, 82, 2, 2, 2720, 136, 3, 2, 2, 2, 2721, 2722, + 7, 74, 2, 2, 2722, 2723, 7, 67, 2, 2, 2723, 2724, 7, 88, 2, 2, 2724, 2725, + 7, 75, 2, 2, 2725, 2726, 7, 80, 2, 2, 2726, 2727, 7, 73, 2, 2, 2727, 138, + 3, 2, 2, 2, 2728, 2729, 7, 74, 2, 2, 2729, 2730, 7, 75, 2, 2, 2730, 2731, + 7, 73, 2, 2, 2731, 2732, 7, 74, 2, 2, 2732, 2733, 7, 97, 2, 2, 2733, 2734, + 7, 82, 2, 2, 2734, 2735, 7, 84, 2, 2, 2735, 2736, 7, 75, 2, 2, 2736, 2737, + 7, 81, 2, 2, 2737, 2738, 7, 84, 2, 2, 2738, 2739, 7, 75, 2, 2, 2739, 2740, + 7, 86, 2, 2, 2740, 2741, 7, 91, 2, 2, 2741, 140, 3, 2, 2, 2, 2742, 2743, + 7, 75, 2, 2, 2743, 2744, 7, 72, 2, 2, 2744, 142, 3, 2, 2, 2, 2745, 2746, + 7, 75, 2, 2, 2746, 2747, 7, 73, 2, 2, 2747, 2748, 7, 80, 2, 2, 2748, 2749, + 7, 81, 2, 2, 2749, 2750, 7, 84, 2, 2, 2750, 2751, 7, 71, 2, 2, 2751, 144, + 3, 2, 2, 2, 2752, 2753, 7, 75, 2, 2, 2753, 2754, 7, 80, 2, 2, 2754, 146, + 3, 2, 2, 2, 2755, 2756, 7, 75, 2, 2, 2756, 2757, 7, 80, 2, 2, 2757, 2758, + 7, 70, 2, 2, 2758, 2759, 7, 71, 2, 2, 2759, 2760, 7, 90, 2, 2, 2760, 148, + 3, 2, 2, 2, 2761, 2762, 7, 75, 2, 2, 2762, 2763, 7, 80, 2, 2, 2763, 2764, + 7, 72, 2, 2, 2764, 2765, 7, 75, 2, 2, 2765, 2766, 7, 78, 2, 2, 2766, 2767, + 7, 71, 2, 2, 2767, 150, 3, 2, 2, 2, 2768, 2769, 7, 75, 2, 2, 2769, 2770, + 7, 80, 2, 2, 2770, 2771, 7, 80, 2, 2, 2771, 2772, 7, 71, 2, 2, 2772, 2773, + 7, 84, 2, 2, 2773, 152, 3, 2, 2, 2, 2774, 2775, 7, 75, 2, 2, 2775, 2776, + 7, 80, 2, 2, 2776, 2777, 7, 81, 2, 2, 2777, 2778, 7, 87, 2, 2, 2778, 2779, + 7, 86, 2, 2, 2779, 154, 3, 2, 2, 2, 2780, 2781, 7, 75, 2, 2, 2781, 2782, + 7, 80, 2, 2, 2782, 2783, 7, 85, 2, 2, 2783, 2784, 7, 71, 2, 2, 2784, 2785, + 7, 84, 2, 2, 2785, 2786, 7, 86, 2, 2, 2786, 156, 3, 2, 2, 2, 2787, 2788, + 7, 75, 2, 2, 2788, 2789, 7, 80, 2, 2, 2789, 2790, 7, 86, 2, 2, 2790, 2791, + 7, 71, 2, 2, 2791, 2792, 7, 84, 2, 2, 2792, 2793, 7, 88, 2, 2, 2793, 2794, + 7, 67, 2, 2, 2794, 2795, 7, 78, 2, 2, 2795, 158, 3, 2, 2, 2, 2796, 2797, + 7, 75, 2, 2, 2797, 2798, 7, 80, 2, 2, 2798, 2799, 7, 86, 2, 2, 2799, 2800, + 7, 81, 2, 2, 2800, 160, 3, 2, 2, 2, 2801, 2802, 7, 75, 2, 2, 2802, 2803, + 7, 85, 2, 2, 2803, 162, 3, 2, 2, 2, 2804, 2805, 7, 75, 2, 2, 2805, 2806, + 7, 86, 2, 2, 2806, 2807, 7, 71, 2, 2, 2807, 2808, 7, 84, 2, 2, 2808, 2809, + 7, 67, 2, 2, 2809, 2810, 7, 86, 2, 2, 2810, 2811, 7, 71, 2, 2, 2811, 164, + 3, 2, 2, 2, 2812, 2813, 7, 76, 2, 2, 2813, 2814, 7, 81, 2, 2, 2814, 2815, + 7, 75, 2, 2, 2815, 2816, 7, 80, 2, 2, 2816, 166, 3, 2, 2, 2, 2817, 2818, + 7, 77, 2, 2, 2818, 2819, 7, 71, 2, 2, 2819, 2820, 7, 91, 2, 2, 2820, 168, + 3, 2, 2, 2, 2821, 2822, 7, 77, 2, 2, 2822, 2823, 7, 71, 2, 2, 2823, 2824, + 7, 91, 2, 2, 2824, 2825, 7, 85, 2, 2, 2825, 170, 3, 2, 2, 2, 2826, 2827, + 7, 77, 2, 2, 2827, 2828, 7, 75, 2, 2, 2828, 2829, 7, 78, 2, 2, 2829, 2830, + 7, 78, 2, 2, 2830, 172, 3, 2, 2, 2, 2831, 2832, 7, 78, 2, 2, 2832, 2833, + 7, 71, 2, 2, 2833, 2834, 7, 67, 2, 2, 2834, 2835, 7, 70, 2, 2, 2835, 2836, + 7, 75, 2, 2, 2836, 2837, 7, 80, 2, 2, 2837, 2838, 7, 73, 2, 2, 2838, 174, + 3, 2, 2, 2, 2839, 2840, 7, 78, 2, 2, 2840, 2841, 7, 71, 2, 2, 2841, 2842, + 7, 67, 2, 2, 2842, 2843, 7, 88, 2, 2, 2843, 2844, 7, 71, 2, 2, 2844, 176, + 3, 2, 2, 2, 2845, 2846, 7, 78, 2, 2, 2846, 2847, 7, 71, 2, 2, 2847, 2848, + 7, 72, 2, 2, 2848, 2849, 7, 86, 2, 2, 2849, 178, 3, 2, 2, 2, 2850, 2851, + 7, 78, 2, 2, 2851, 2852, 7, 75, 2, 2, 2852, 2853, 7, 77, 2, 2, 2853, 2854, + 7, 71, 2, 2, 2854, 180, 3, 2, 2, 2, 2855, 2856, 7, 78, 2, 2, 2856, 2857, + 7, 75, 2, 2, 2857, 2858, 7, 79, 2, 2, 2858, 2859, 7, 75, 2, 2, 2859, 2860, + 7, 86, 2, 2, 2860, 182, 3, 2, 2, 2, 2861, 2862, 7, 78, 2, 2, 2862, 2863, + 7, 75, 2, 2, 2863, 2864, 7, 80, 2, 2, 2864, 2865, 7, 71, 2, 2, 2865, 2866, + 7, 67, 2, 2, 2866, 2867, 7, 84, 2, 2, 2867, 184, 3, 2, 2, 2, 2868, 2869, + 7, 78, 2, 2, 2869, 2870, 7, 75, 2, 2, 2870, 2871, 7, 80, 2, 2, 2871, 2872, + 7, 71, 2, 2, 2872, 2873, 7, 85, 2, 2, 2873, 186, 3, 2, 2, 2, 2874, 2875, + 7, 78, 2, 2, 2875, 2876, 7, 81, 2, 2, 2876, 2877, 7, 67, 2, 2, 2877, 2878, + 7, 70, 2, 2, 2878, 188, 3, 2, 2, 2, 2879, 2880, 7, 78, 2, 2, 2880, 2881, + 7, 81, 2, 2, 2881, 2882, 7, 69, 2, 2, 2882, 2883, 7, 77, 2, 2, 2883, 190, + 3, 2, 2, 2, 2884, 2885, 7, 78, 2, 2, 2885, 2886, 7, 81, 2, 2, 2886, 2887, + 7, 81, 2, 2, 2887, 2888, 7, 82, 2, 2, 2888, 192, 3, 2, 2, 2, 2889, 2890, + 7, 78, 2, 2, 2890, 2891, 7, 81, 2, 2, 2891, 2892, 7, 89, 2, 2, 2892, 2893, + 7, 97, 2, 2, 2893, 2894, 7, 82, 2, 2, 2894, 2895, 7, 84, 2, 2, 2895, 2896, + 7, 75, 2, 2, 2896, 2897, 7, 81, 2, 2, 2897, 2898, 7, 84, 2, 2, 2898, 2899, + 7, 75, 2, 2, 2899, 2900, 7, 86, 2, 2, 2900, 2901, 7, 91, 2, 2, 2901, 194, + 3, 2, 2, 2, 2902, 2903, 7, 79, 2, 2, 2903, 2904, 7, 67, 2, 2, 2904, 2905, + 7, 85, 2, 2, 2905, 2906, 7, 86, 2, 2, 2906, 2907, 7, 71, 2, 2, 2907, 2908, + 7, 84, 2, 2, 2908, 2909, 7, 97, 2, 2, 2909, 2910, 7, 68, 2, 2, 2910, 2911, + 7, 75, 2, 2, 2911, 2912, 7, 80, 2, 2, 2912, 2913, 7, 70, 2, 2, 2913, 196, + 3, 2, 2, 2, 2914, 2915, 7, 79, 2, 2, 2915, 2916, 7, 67, 2, 2, 2916, 2917, + 7, 85, 2, 2, 2917, 2918, 7, 86, 2, 2, 2918, 2919, 7, 71, 2, 2, 2919, 2920, + 7, 84, 2, 2, 2920, 2921, 7, 97, 2, 2, 2921, 2922, 7, 85, 2, 2, 2922, 2923, + 7, 85, 2, 2, 2923, 2924, 7, 78, 2, 2, 2924, 2925, 7, 97, 2, 2, 2925, 2926, + 7, 88, 2, 2, 2926, 2927, 7, 71, 2, 2, 2927, 2928, 7, 84, 2, 2, 2928, 2929, + 7, 75, 2, 2, 2929, 2930, 7, 72, 2, 2, 2930, 2931, 7, 91, 2, 2, 2931, 2932, + 7, 97, 2, 2, 2932, 2933, 7, 85, 2, 2, 2933, 2934, 7, 71, 2, 2, 2934, 2935, + 7, 84, 2, 2, 2935, 2936, 7, 88, 2, 2, 2936, 2937, 7, 71, 2, 2, 2937, 2938, + 7, 84, 2, 2, 2938, 2939, 7, 97, 2, 2, 2939, 2940, 7, 69, 2, 2, 2940, 2941, + 7, 71, 2, 2, 2941, 2942, 7, 84, 2, 2, 2942, 2943, 7, 86, 2, 2, 2943, 198, + 3, 2, 2, 2, 2944, 2945, 7, 79, 2, 2, 2945, 2946, 7, 67, 2, 2, 2946, 2947, + 7, 86, 2, 2, 2947, 2948, 7, 69, 2, 2, 2948, 2949, 7, 74, 2, 2, 2949, 200, + 3, 2, 2, 2, 2950, 2951, 7, 79, 2, 2, 2951, 2952, 7, 67, 2, 2, 2952, 2953, + 7, 90, 2, 2, 2953, 2954, 7, 88, 2, 2, 2954, 2955, 7, 67, 2, 2, 2955, 2956, + 7, 78, 2, 2, 2956, 2957, 7, 87, 2, 2, 2957, 2958, 7, 71, 2, 2, 2958, 202, + 3, 2, 2, 2, 2959, 2960, 7, 79, 2, 2, 2960, 2961, 7, 81, 2, 2, 2961, 2962, + 7, 70, 2, 2, 2962, 2963, 7, 75, 2, 2, 2963, 2964, 7, 72, 2, 2, 2964, 2965, + 7, 75, 2, 2, 2965, 2966, 7, 71, 2, 2, 2966, 2967, 7, 85, 2, 2, 2967, 204, + 3, 2, 2, 2, 2968, 2969, 7, 80, 2, 2, 2969, 2970, 7, 67, 2, 2, 2970, 2971, + 7, 86, 2, 2, 2971, 2972, 7, 87, 2, 2, 2972, 2973, 7, 84, 2, 2, 2973, 2974, + 7, 67, 2, 2, 2974, 2975, 7, 78, 2, 2, 2975, 206, 3, 2, 2, 2, 2976, 2977, + 7, 80, 2, 2, 2977, 2978, 7, 81, 2, 2, 2978, 2979, 7, 86, 2, 2, 2979, 208, + 3, 2, 2, 2, 2980, 2981, 7, 80, 2, 2, 2981, 2982, 7, 81, 2, 2, 2982, 2983, + 7, 97, 2, 2, 2983, 2984, 7, 89, 2, 2, 2984, 2985, 7, 84, 2, 2, 2985, 2986, + 7, 75, 2, 2, 2986, 2987, 7, 86, 2, 2, 2987, 2988, 7, 71, 2, 2, 2988, 2989, + 7, 97, 2, 2, 2989, 2990, 7, 86, 2, 2, 2990, 2991, 7, 81, 2, 2, 2991, 2992, + 7, 97, 2, 2, 2992, 2993, 7, 68, 2, 2, 2993, 2994, 7, 75, 2, 2, 2994, 2995, + 7, 80, 2, 2, 2995, 2996, 7, 78, 2, 2, 2996, 2997, 7, 81, 2, 2, 2997, 2998, + 7, 73, 2, 2, 2998, 210, 3, 2, 2, 2, 2999, 3000, 5, 213, 107, 2, 3000, 212, + 3, 2, 2, 2, 3001, 3002, 7, 80, 2, 2, 3002, 3003, 7, 87, 2, 2, 3003, 3004, + 7, 78, 2, 2, 3004, 3005, 7, 78, 2, 2, 3005, 214, 3, 2, 2, 2, 3006, 3007, + 7, 80, 2, 2, 3007, 3008, 7, 87, 2, 2, 3008, 3009, 7, 79, 2, 2, 3009, 3010, + 7, 68, 2, 2, 3010, 3011, 7, 71, 2, 2, 3011, 3012, 7, 84, 2, 2, 3012, 216, + 3, 2, 2, 2, 3013, 3014, 7, 81, 2, 2, 3014, 3015, 7, 80, 2, 2, 3015, 218, + 3, 2, 2, 2, 3016, 3017, 7, 81, 2, 2, 3017, 3018, 7, 82, 2, 2, 3018, 3019, + 7, 86, 2, 2, 3019, 3020, 7, 75, 2, 2, 3020, 3021, 7, 79, 2, 2, 3021, 3022, + 7, 75, 2, 2, 3022, 3023, 7, 92, 2, 2, 3023, 3024, 7, 71, 2, 2, 3024, 220, + 3, 2, 2, 2, 3025, 3026, 7, 81, 2, 2, 3026, 3027, 7, 82, 2, 2, 3027, 3028, + 7, 86, 2, 2, 3028, 3029, 7, 75, 2, 2, 3029, 3030, 7, 81, 2, 2, 3030, 3031, + 7, 80, 2, 2, 3031, 222, 3, 2, 2, 2, 3032, 3033, 7, 81, 2, 2, 3033, 3034, + 7, 82, 2, 2, 3034, 3035, 7, 86, 2, 2, 3035, 3036, 7, 75, 2, 2, 3036, 3037, + 7, 81, 2, 2, 3037, 3038, 7, 80, 2, 2, 3038, 3039, 7, 67, 2, 2, 3039, 3040, + 7, 78, 2, 2, 3040, 3041, 7, 78, 2, 2, 3041, 3042, 7, 91, 2, 2, 3042, 224, + 3, 2, 2, 2, 3043, 3044, 7, 81, 2, 2, 3044, 3045, 7, 84, 2, 2, 3045, 226, + 3, 2, 2, 2, 3046, 3047, 7, 81, 2, 2, 3047, 3048, 7, 84, 2, 2, 3048, 3049, + 7, 70, 2, 2, 3049, 3050, 7, 71, 2, 2, 3050, 3051, 7, 84, 2, 2, 3051, 228, + 3, 2, 2, 2, 3052, 3053, 7, 81, 2, 2, 3053, 3054, 7, 87, 2, 2, 3054, 3055, + 7, 86, 2, 2, 3055, 230, 3, 2, 2, 2, 3056, 3057, 7, 81, 2, 2, 3057, 3058, + 7, 87, 2, 2, 3058, 3059, 7, 86, 2, 2, 3059, 3060, 7, 71, 2, 2, 3060, 3061, + 7, 84, 2, 2, 3061, 232, 3, 2, 2, 2, 3062, 3063, 7, 81, 2, 2, 3063, 3064, + 7, 87, 2, 2, 3064, 3065, 7, 86, 2, 2, 3065, 3066, 7, 72, 2, 2, 3066, 3067, + 7, 75, 2, 2, 3067, 3068, 7, 78, 2, 2, 3068, 3069, 7, 71, 2, 2, 3069, 234, + 3, 2, 2, 2, 3070, 3071, 7, 82, 2, 2, 3071, 3072, 7, 67, 2, 2, 3072, 3073, + 7, 84, 2, 2, 3073, 3074, 7, 86, 2, 2, 3074, 3075, 7, 75, 2, 2, 3075, 3076, + 7, 86, 2, 2, 3076, 3077, 7, 75, 2, 2, 3077, 3078, 7, 81, 2, 2, 3078, 3079, + 7, 80, 2, 2, 3079, 236, 3, 2, 2, 2, 3080, 3081, 7, 82, 2, 2, 3081, 3082, + 7, 84, 2, 2, 3082, 3083, 7, 75, 2, 2, 3083, 3084, 7, 79, 2, 2, 3084, 3085, + 7, 67, 2, 2, 3085, 3086, 7, 84, 2, 2, 3086, 3087, 7, 91, 2, 2, 3087, 238, + 3, 2, 2, 2, 3088, 3089, 7, 82, 2, 2, 3089, 3090, 7, 84, 2, 2, 3090, 3091, + 7, 81, 2, 2, 3091, 3092, 7, 69, 2, 2, 3092, 3093, 7, 71, 2, 2, 3093, 3094, + 7, 70, 2, 2, 3094, 3095, 7, 87, 2, 2, 3095, 3096, 7, 84, 2, 2, 3096, 3097, + 7, 71, 2, 2, 3097, 240, 3, 2, 2, 2, 3098, 3099, 7, 82, 2, 2, 3099, 3100, + 7, 87, 2, 2, 3100, 3101, 7, 84, 2, 2, 3101, 3102, 7, 73, 2, 2, 3102, 3103, + 7, 71, 2, 2, 3103, 242, 3, 2, 2, 2, 3104, 3105, 7, 84, 2, 2, 3105, 3106, + 7, 67, 2, 2, 3106, 3107, 7, 80, 2, 2, 3107, 3108, 7, 73, 2, 2, 3108, 3109, + 7, 71, 2, 2, 3109, 244, 3, 2, 2, 2, 3110, 3111, 7, 84, 2, 2, 3111, 3112, + 7, 71, 2, 2, 3112, 3113, 7, 67, 2, 2, 3113, 3114, 7, 70, 2, 2, 3114, 246, + 3, 2, 2, 2, 3115, 3116, 7, 84, 2, 2, 3116, 3117, 7, 71, 2, 2, 3117, 3118, + 7, 67, 2, 2, 3118, 3119, 7, 70, 2, 2, 3119, 3120, 7, 85, 2, 2, 3120, 248, + 3, 2, 2, 2, 3121, 3122, 7, 84, 2, 2, 3122, 3123, 7, 71, 2, 2, 3123, 3124, + 7, 72, 2, 2, 3124, 3125, 7, 71, 2, 2, 3125, 3126, 7, 84, 2, 2, 3126, 3127, + 7, 71, 2, 2, 3127, 3128, 7, 80, 2, 2, 3128, 3129, 7, 69, 2, 2, 3129, 3130, + 7, 71, 2, 2, 3130, 3131, 7, 85, 2, 2, 3131, 250, 3, 2, 2, 2, 3132, 3133, + 7, 84, 2, 2, 3133, 3134, 7, 71, 2, 2, 3134, 3135, 7, 73, 2, 2, 3135, 3136, + 7, 71, 2, 2, 3136, 3137, 7, 90, 2, 2, 3137, 3138, 7, 82, 2, 2, 3138, 252, + 3, 2, 2, 2, 3139, 3140, 7, 84, 2, 2, 3140, 3141, 7, 71, 2, 2, 3141, 3142, + 7, 78, 2, 2, 3142, 3143, 7, 71, 2, 2, 3143, 3144, 7, 67, 2, 2, 3144, 3145, + 7, 85, 2, 2, 3145, 3146, 7, 71, 2, 2, 3146, 254, 3, 2, 2, 2, 3147, 3148, + 7, 84, 2, 2, 3148, 3149, 7, 71, 2, 2, 3149, 3150, 7, 80, 2, 2, 3150, 3151, + 7, 67, 2, 2, 3151, 3152, 7, 79, 2, 2, 3152, 3153, 7, 71, 2, 2, 3153, 256, + 3, 2, 2, 2, 3154, 3155, 7, 84, 2, 2, 3155, 3156, 7, 71, 2, 2, 3156, 3157, + 7, 82, 2, 2, 3157, 3158, 7, 71, 2, 2, 3158, 3159, 7, 67, 2, 2, 3159, 3160, + 7, 86, 2, 2, 3160, 258, 3, 2, 2, 2, 3161, 3162, 7, 84, 2, 2, 3162, 3163, + 7, 71, 2, 2, 3163, 3164, 7, 82, 2, 2, 3164, 3165, 7, 78, 2, 2, 3165, 3166, + 7, 67, 2, 2, 3166, 3167, 7, 69, 2, 2, 3167, 3168, 7, 71, 2, 2, 3168, 260, + 3, 2, 2, 2, 3169, 3170, 7, 84, 2, 2, 3170, 3171, 7, 71, 2, 2, 3171, 3172, + 7, 83, 2, 2, 3172, 3173, 7, 87, 2, 2, 3173, 3174, 7, 75, 2, 2, 3174, 3175, + 7, 84, 2, 2, 3175, 3176, 7, 71, 2, 2, 3176, 262, 3, 2, 2, 2, 3177, 3178, + 7, 84, 2, 2, 3178, 3179, 7, 71, 2, 2, 3179, 3180, 7, 85, 2, 2, 3180, 3181, + 7, 75, 2, 2, 3181, 3182, 7, 73, 2, 2, 3182, 3183, 7, 80, 2, 2, 3183, 3184, + 7, 67, 2, 2, 3184, 3185, 7, 78, 2, 2, 3185, 264, 3, 2, 2, 2, 3186, 3187, + 7, 84, 2, 2, 3187, 3188, 7, 71, 2, 2, 3188, 3189, 7, 85, 2, 2, 3189, 3190, + 7, 86, 2, 2, 3190, 3191, 7, 84, 2, 2, 3191, 3192, 7, 75, 2, 2, 3192, 3193, + 7, 69, 2, 2, 3193, 3194, 7, 86, 2, 2, 3194, 266, 3, 2, 2, 2, 3195, 3196, + 7, 84, 2, 2, 3196, 3197, 7, 71, 2, 2, 3197, 3198, 7, 86, 2, 2, 3198, 3199, + 7, 87, 2, 2, 3199, 3200, 7, 84, 2, 2, 3200, 3201, 7, 80, 2, 2, 3201, 268, + 3, 2, 2, 2, 3202, 3203, 7, 84, 2, 2, 3203, 3204, 7, 71, 2, 2, 3204, 3205, + 7, 88, 2, 2, 3205, 3206, 7, 81, 2, 2, 3206, 3207, 7, 77, 2, 2, 3207, 3208, + 7, 71, 2, 2, 3208, 270, 3, 2, 2, 2, 3209, 3210, 7, 84, 2, 2, 3210, 3211, + 7, 75, 2, 2, 3211, 3212, 7, 73, 2, 2, 3212, 3213, 7, 74, 2, 2, 3213, 3214, + 7, 86, 2, 2, 3214, 272, 3, 2, 2, 2, 3215, 3216, 7, 84, 2, 2, 3216, 3217, + 7, 78, 2, 2, 3217, 3218, 7, 75, 2, 2, 3218, 3219, 7, 77, 2, 2, 3219, 3220, + 7, 71, 2, 2, 3220, 274, 3, 2, 2, 2, 3221, 3222, 7, 85, 2, 2, 3222, 3223, + 7, 69, 2, 2, 3223, 3224, 7, 74, 2, 2, 3224, 3225, 7, 71, 2, 2, 3225, 3226, + 7, 79, 2, 2, 3226, 3227, 7, 67, 2, 2, 3227, 276, 3, 2, 2, 2, 3228, 3229, + 7, 85, 2, 2, 3229, 3230, 7, 69, 2, 2, 3230, 3231, 7, 74, 2, 2, 3231, 3232, + 7, 71, 2, 2, 3232, 3233, 7, 79, 2, 2, 3233, 3234, 7, 67, 2, 2, 3234, 3235, + 7, 85, 2, 2, 3235, 278, 3, 2, 2, 2, 3236, 3237, 7, 85, 2, 2, 3237, 3238, + 7, 71, 2, 2, 3238, 3239, 7, 78, 2, 2, 3239, 3240, 7, 71, 2, 2, 3240, 3241, + 7, 69, 2, 2, 3241, 3242, 7, 86, 2, 2, 3242, 280, 3, 2, 2, 2, 3243, 3244, + 7, 85, 2, 2, 3244, 3245, 7, 71, 2, 2, 3245, 3246, 7, 86, 2, 2, 3246, 282, + 3, 2, 2, 2, 3247, 3248, 7, 85, 2, 2, 3248, 3249, 7, 71, 2, 2, 3249, 3250, + 7, 82, 2, 2, 3250, 3251, 7, 67, 2, 2, 3251, 3252, 7, 84, 2, 2, 3252, 3253, + 7, 67, 2, 2, 3253, 3254, 7, 86, 2, 2, 3254, 3255, 7, 81, 2, 2, 3255, 3256, + 7, 84, 2, 2, 3256, 284, 3, 2, 2, 2, 3257, 3258, 7, 85, 2, 2, 3258, 3259, + 7, 74, 2, 2, 3259, 3260, 7, 81, 2, 2, 3260, 3261, 7, 89, 2, 2, 3261, 286, + 3, 2, 2, 2, 3262, 3263, 7, 85, 2, 2, 3263, 3264, 7, 75, 2, 2, 3264, 3265, + 7, 73, 2, 2, 3265, 3266, 7, 80, 2, 2, 3266, 3267, 7, 67, 2, 2, 3267, 3268, + 7, 78, 2, 2, 3268, 288, 3, 2, 2, 2, 3269, 3270, 7, 85, 2, 2, 3270, 3271, + 7, 82, 2, 2, 3271, 3272, 7, 67, 2, 2, 3272, 3273, 7, 86, 2, 2, 3273, 3274, + 7, 75, 2, 2, 3274, 3275, 7, 67, 2, 2, 3275, 3276, 7, 78, 2, 2, 3276, 290, + 3, 2, 2, 2, 3277, 3278, 7, 85, 2, 2, 3278, 3279, 7, 83, 2, 2, 3279, 3280, + 7, 78, 2, 2, 3280, 292, 3, 2, 2, 2, 3281, 3282, 7, 85, 2, 2, 3282, 3283, + 7, 83, 2, 2, 3283, 3284, 7, 78, 2, 2, 3284, 3285, 7, 71, 2, 2, 3285, 3286, + 7, 90, 2, 2, 3286, 3287, 7, 69, 2, 2, 3287, 3288, 7, 71, 2, 2, 3288, 3289, + 7, 82, 2, 2, 3289, 3290, 7, 86, 2, 2, 3290, 3291, 7, 75, 2, 2, 3291, 3292, + 7, 81, 2, 2, 3292, 3293, 7, 80, 2, 2, 3293, 294, 3, 2, 2, 2, 3294, 3295, + 7, 85, 2, 2, 3295, 3296, 7, 83, 2, 2, 3296, 3297, 7, 78, 2, 2, 3297, 3298, + 7, 85, 2, 2, 3298, 3299, 7, 86, 2, 2, 3299, 3300, 7, 67, 2, 2, 3300, 3301, + 7, 86, 2, 2, 3301, 3302, 7, 71, 2, 2, 3302, 296, 3, 2, 2, 2, 3303, 3304, + 7, 85, 2, 2, 3304, 3305, 7, 83, 2, 2, 3305, 3306, 7, 78, 2, 2, 3306, 3307, + 7, 89, 2, 2, 3307, 3308, 7, 67, 2, 2, 3308, 3309, 7, 84, 2, 2, 3309, 3310, + 7, 80, 2, 2, 3310, 3311, 7, 75, 2, 2, 3311, 3312, 7, 80, 2, 2, 3312, 3313, + 7, 73, 2, 2, 3313, 298, 3, 2, 2, 2, 3314, 3315, 7, 85, 2, 2, 3315, 3316, + 7, 83, 2, 2, 3316, 3317, 7, 78, 2, 2, 3317, 3318, 7, 97, 2, 2, 3318, 3319, + 7, 68, 2, 2, 3319, 3320, 7, 75, 2, 2, 3320, 3321, 7, 73, 2, 2, 3321, 3322, + 7, 97, 2, 2, 3322, 3323, 7, 84, 2, 2, 3323, 3324, 7, 71, 2, 2, 3324, 3325, + 7, 85, 2, 2, 3325, 3326, 7, 87, 2, 2, 3326, 3327, 7, 78, 2, 2, 3327, 3328, + 7, 86, 2, 2, 3328, 300, 3, 2, 2, 2, 3329, 3330, 7, 85, 2, 2, 3330, 3331, + 7, 83, 2, 2, 3331, 3332, 7, 78, 2, 2, 3332, 3333, 7, 97, 2, 2, 3333, 3334, + 7, 69, 2, 2, 3334, 3335, 7, 67, 2, 2, 3335, 3336, 7, 78, 2, 2, 3336, 3337, + 7, 69, 2, 2, 3337, 3338, 7, 97, 2, 2, 3338, 3339, 7, 72, 2, 2, 3339, 3340, + 7, 81, 2, 2, 3340, 3341, 7, 87, 2, 2, 3341, 3342, 7, 80, 2, 2, 3342, 3343, + 7, 70, 2, 2, 3343, 3344, 7, 97, 2, 2, 3344, 3345, 7, 84, 2, 2, 3345, 3346, + 7, 81, 2, 2, 3346, 3347, 7, 89, 2, 2, 3347, 3348, 7, 85, 2, 2, 3348, 302, + 3, 2, 2, 2, 3349, 3350, 7, 85, 2, 2, 3350, 3351, 7, 83, 2, 2, 3351, 3352, + 7, 78, 2, 2, 3352, 3353, 7, 97, 2, 2, 3353, 3354, 7, 85, 2, 2, 3354, 3355, + 7, 79, 2, 2, 3355, 3356, 7, 67, 2, 2, 3356, 3357, 7, 78, 2, 2, 3357, 3358, + 7, 78, 2, 2, 3358, 3359, 7, 97, 2, 2, 3359, 3360, 7, 84, 2, 2, 3360, 3361, + 7, 71, 2, 2, 3361, 3362, 7, 85, 2, 2, 3362, 3363, 7, 87, 2, 2, 3363, 3364, + 7, 78, 2, 2, 3364, 3365, 7, 86, 2, 2, 3365, 304, 3, 2, 2, 2, 3366, 3367, + 7, 85, 2, 2, 3367, 3368, 7, 85, 2, 2, 3368, 3369, 7, 78, 2, 2, 3369, 306, + 3, 2, 2, 2, 3370, 3371, 7, 85, 2, 2, 3371, 3372, 7, 86, 2, 2, 3372, 3373, + 7, 67, 2, 2, 3373, 3374, 7, 69, 2, 2, 3374, 3375, 7, 77, 2, 2, 3375, 3376, + 7, 71, 2, 2, 3376, 3377, 7, 70, 2, 2, 3377, 308, 3, 2, 2, 2, 3378, 3379, + 7, 85, 2, 2, 3379, 3380, 7, 86, 2, 2, 3380, 3381, 7, 67, 2, 2, 3381, 3382, + 7, 84, 2, 2, 3382, 3383, 7, 86, 2, 2, 3383, 3384, 7, 75, 2, 2, 3384, 3385, + 7, 80, 2, 2, 3385, 3386, 7, 73, 2, 2, 3386, 310, 3, 2, 2, 2, 3387, 3388, + 7, 85, 2, 2, 3388, 3389, 7, 86, 2, 2, 3389, 3390, 7, 84, 2, 2, 3390, 3391, + 7, 67, 2, 2, 3391, 3392, 7, 75, 2, 2, 3392, 3393, 7, 73, 2, 2, 3393, 3394, + 7, 74, 2, 2, 3394, 3395, 7, 86, 2, 2, 3395, 3396, 7, 97, 2, 2, 3396, 3397, + 7, 76, 2, 2, 3397, 3398, 7, 81, 2, 2, 3398, 3399, 7, 75, 2, 2, 3399, 3400, + 7, 80, 2, 2, 3400, 312, 3, 2, 2, 2, 3401, 3402, 7, 86, 2, 2, 3402, 3403, + 7, 67, 2, 2, 3403, 3404, 7, 68, 2, 2, 3404, 3405, 7, 78, 2, 2, 3405, 3406, + 7, 71, 2, 2, 3406, 314, 3, 2, 2, 2, 3407, 3408, 7, 86, 2, 2, 3408, 3409, + 7, 71, 2, 2, 3409, 3410, 7, 84, 2, 2, 3410, 3411, 7, 79, 2, 2, 3411, 3412, + 7, 75, 2, 2, 3412, 3413, 7, 80, 2, 2, 3413, 3414, 7, 67, 2, 2, 3414, 3415, + 7, 86, 2, 2, 3415, 3416, 7, 71, 2, 2, 3416, 3417, 7, 70, 2, 2, 3417, 316, + 3, 2, 2, 2, 3418, 3419, 7, 86, 2, 2, 3419, 3420, 7, 74, 2, 2, 3420, 3421, + 7, 71, 2, 2, 3421, 3422, 7, 80, 2, 2, 3422, 318, 3, 2, 2, 2, 3423, 3424, + 7, 86, 2, 2, 3424, 3425, 7, 81, 2, 2, 3425, 320, 3, 2, 2, 2, 3426, 3427, + 7, 86, 2, 2, 3427, 3428, 7, 84, 2, 2, 3428, 3429, 7, 67, 2, 2, 3429, 3430, + 7, 75, 2, 2, 3430, 3431, 7, 78, 2, 2, 3431, 3432, 7, 75, 2, 2, 3432, 3433, + 7, 80, 2, 2, 3433, 3434, 7, 73, 2, 2, 3434, 322, 3, 2, 2, 2, 3435, 3436, + 7, 86, 2, 2, 3436, 3437, 7, 84, 2, 2, 3437, 3438, 7, 75, 2, 2, 3438, 3439, + 7, 73, 2, 2, 3439, 3440, 7, 73, 2, 2, 3440, 3441, 7, 71, 2, 2, 3441, 3442, + 7, 84, 2, 2, 3442, 324, 3, 2, 2, 2, 3443, 3444, 7, 86, 2, 2, 3444, 3445, + 7, 84, 2, 2, 3445, 3446, 7, 87, 2, 2, 3446, 3447, 7, 71, 2, 2, 3447, 326, + 3, 2, 2, 2, 3448, 3449, 7, 87, 2, 2, 3449, 3450, 7, 80, 2, 2, 3450, 3451, + 7, 70, 2, 2, 3451, 3452, 7, 81, 2, 2, 3452, 328, 3, 2, 2, 2, 3453, 3454, + 7, 87, 2, 2, 3454, 3455, 7, 80, 2, 2, 3455, 3456, 7, 75, 2, 2, 3456, 3457, + 7, 81, 2, 2, 3457, 3458, 7, 80, 2, 2, 3458, 330, 3, 2, 2, 2, 3459, 3460, + 7, 87, 2, 2, 3460, 3461, 7, 80, 2, 2, 3461, 3462, 7, 75, 2, 2, 3462, 3463, + 7, 83, 2, 2, 3463, 3464, 7, 87, 2, 2, 3464, 3465, 7, 71, 2, 2, 3465, 332, + 3, 2, 2, 2, 3466, 3467, 7, 87, 2, 2, 3467, 3468, 7, 80, 2, 2, 3468, 3469, + 7, 78, 2, 2, 3469, 3470, 7, 81, 2, 2, 3470, 3471, 7, 69, 2, 2, 3471, 3472, + 7, 77, 2, 2, 3472, 334, 3, 2, 2, 2, 3473, 3474, 7, 87, 2, 2, 3474, 3475, + 7, 80, 2, 2, 3475, 3476, 7, 85, 2, 2, 3476, 3477, 7, 75, 2, 2, 3477, 3478, + 7, 73, 2, 2, 3478, 3479, 7, 80, 2, 2, 3479, 3480, 7, 71, 2, 2, 3480, 3481, + 7, 70, 2, 2, 3481, 336, 3, 2, 2, 2, 3482, 3483, 7, 87, 2, 2, 3483, 3484, + 7, 82, 2, 2, 3484, 3485, 7, 70, 2, 2, 3485, 3486, 7, 67, 2, 2, 3486, 3487, + 7, 86, 2, 2, 3487, 3488, 7, 71, 2, 2, 3488, 338, 3, 2, 2, 2, 3489, 3490, + 7, 87, 2, 2, 3490, 3491, 7, 85, 2, 2, 3491, 3492, 7, 67, 2, 2, 3492, 3493, + 7, 73, 2, 2, 3493, 3494, 7, 71, 2, 2, 3494, 340, 3, 2, 2, 2, 3495, 3496, + 7, 87, 2, 2, 3496, 3497, 7, 85, 2, 2, 3497, 3498, 7, 71, 2, 2, 3498, 342, + 3, 2, 2, 2, 3499, 3500, 7, 87, 2, 2, 3500, 3501, 7, 85, 2, 2, 3501, 3502, + 7, 75, 2, 2, 3502, 3503, 7, 80, 2, 2, 3503, 3504, 7, 73, 2, 2, 3504, 344, + 3, 2, 2, 2, 3505, 3506, 7, 88, 2, 2, 3506, 3507, 7, 67, 2, 2, 3507, 3508, + 7, 78, 2, 2, 3508, 3509, 7, 87, 2, 2, 3509, 3510, 7, 71, 2, 2, 3510, 3511, + 7, 85, 2, 2, 3511, 346, 3, 2, 2, 2, 3512, 3513, 7, 89, 2, 2, 3513, 3514, + 7, 74, 2, 2, 3514, 3515, 7, 71, 2, 2, 3515, 3516, 7, 80, 2, 2, 3516, 348, + 3, 2, 2, 2, 3517, 3518, 7, 89, 2, 2, 3518, 3519, 7, 74, 2, 2, 3519, 3520, + 7, 71, 2, 2, 3520, 3521, 7, 84, 2, 2, 3521, 3522, 7, 71, 2, 2, 3522, 350, + 3, 2, 2, 2, 3523, 3524, 7, 89, 2, 2, 3524, 3525, 7, 74, 2, 2, 3525, 3526, + 7, 75, 2, 2, 3526, 3527, 7, 78, 2, 2, 3527, 3528, 7, 71, 2, 2, 3528, 352, + 3, 2, 2, 2, 3529, 3530, 7, 89, 2, 2, 3530, 3531, 7, 75, 2, 2, 3531, 3532, + 7, 86, 2, 2, 3532, 3533, 7, 74, 2, 2, 3533, 354, 3, 2, 2, 2, 3534, 3535, + 7, 89, 2, 2, 3535, 3536, 7, 84, 2, 2, 3536, 3537, 7, 75, 2, 2, 3537, 3538, + 7, 86, 2, 2, 3538, 3539, 7, 71, 2, 2, 3539, 356, 3, 2, 2, 2, 3540, 3541, + 7, 90, 2, 2, 3541, 3542, 7, 81, 2, 2, 3542, 3543, 7, 84, 2, 2, 3543, 358, + 3, 2, 2, 2, 3544, 3545, 7, 92, 2, 2, 3545, 3546, 7, 71, 2, 2, 3546, 3547, + 7, 84, 2, 2, 3547, 3548, 7, 81, 2, 2, 3548, 3549, 7, 72, 2, 2, 3549, 3550, + 7, 75, 2, 2, 3550, 3551, 7, 78, 2, 2, 3551, 3552, 7, 78, 2, 2, 3552, 360, + 3, 2, 2, 2, 3553, 3554, 7, 86, 2, 2, 3554, 3555, 7, 75, 2, 2, 3555, 3556, + 7, 80, 2, 2, 3556, 3557, 7, 91, 2, 2, 3557, 3558, 7, 75, 2, 2, 3558, 3559, + 7, 80, 2, 2, 3559, 3560, 7, 86, 2, 2, 3560, 362, 3, 2, 2, 2, 3561, 3562, + 7, 85, 2, 2, 3562, 3563, 7, 79, 2, 2, 3563, 3564, 7, 67, 2, 2, 3564, 3565, + 7, 78, 2, 2, 3565, 3566, 7, 78, 2, 2, 3566, 3567, 7, 75, 2, 2, 3567, 3568, + 7, 80, 2, 2, 3568, 3569, 7, 86, 2, 2, 3569, 364, 3, 2, 2, 2, 3570, 3571, + 7, 79, 2, 2, 3571, 3572, 7, 71, 2, 2, 3572, 3573, 7, 70, 2, 2, 3573, 3574, + 7, 75, 2, 2, 3574, 3575, 7, 87, 2, 2, 3575, 3576, 7, 79, 2, 2, 3576, 3577, + 7, 75, 2, 2, 3577, 3578, 7, 80, 2, 2, 3578, 3579, 7, 86, 2, 2, 3579, 366, + 3, 2, 2, 2, 3580, 3581, 7, 79, 2, 2, 3581, 3582, 7, 75, 2, 2, 3582, 3583, + 7, 70, 2, 2, 3583, 3584, 7, 70, 2, 2, 3584, 3585, 7, 78, 2, 2, 3585, 3586, + 7, 71, 2, 2, 3586, 3587, 7, 75, 2, 2, 3587, 3588, 7, 80, 2, 2, 3588, 3589, + 7, 86, 2, 2, 3589, 368, 3, 2, 2, 2, 3590, 3591, 7, 75, 2, 2, 3591, 3592, + 7, 80, 2, 2, 3592, 3593, 7, 86, 2, 2, 3593, 370, 3, 2, 2, 2, 3594, 3595, + 7, 75, 2, 2, 3595, 3596, 7, 80, 2, 2, 3596, 3597, 7, 86, 2, 2, 3597, 3598, + 7, 51, 2, 2, 3598, 372, 3, 2, 2, 2, 3599, 3600, 7, 75, 2, 2, 3600, 3601, + 7, 80, 2, 2, 3601, 3602, 7, 86, 2, 2, 3602, 3603, 7, 52, 2, 2, 3603, 374, + 3, 2, 2, 2, 3604, 3605, 7, 75, 2, 2, 3605, 3606, 7, 80, 2, 2, 3606, 3607, + 7, 86, 2, 2, 3607, 3608, 7, 53, 2, 2, 3608, 376, 3, 2, 2, 2, 3609, 3610, + 7, 75, 2, 2, 3610, 3611, 7, 80, 2, 2, 3611, 3612, 7, 86, 2, 2, 3612, 3613, + 7, 54, 2, 2, 3613, 378, 3, 2, 2, 2, 3614, 3615, 7, 75, 2, 2, 3615, 3616, + 7, 80, 2, 2, 3616, 3617, 7, 86, 2, 2, 3617, 3618, 7, 58, 2, 2, 3618, 380, + 3, 2, 2, 2, 3619, 3620, 7, 75, 2, 2, 3620, 3621, 7, 80, 2, 2, 3621, 3622, + 7, 86, 2, 2, 3622, 3623, 7, 71, 2, 2, 3623, 3624, 7, 73, 2, 2, 3624, 3625, + 7, 71, 2, 2, 3625, 3626, 7, 84, 2, 2, 3626, 382, 3, 2, 2, 2, 3627, 3628, + 7, 68, 2, 2, 3628, 3629, 7, 75, 2, 2, 3629, 3630, 7, 73, 2, 2, 3630, 3631, + 7, 75, 2, 2, 3631, 3632, 7, 80, 2, 2, 3632, 3633, 7, 86, 2, 2, 3633, 384, + 3, 2, 2, 2, 3634, 3635, 7, 84, 2, 2, 3635, 3636, 7, 71, 2, 2, 3636, 3637, + 7, 67, 2, 2, 3637, 3638, 7, 78, 2, 2, 3638, 386, 3, 2, 2, 2, 3639, 3640, + 7, 70, 2, 2, 3640, 3641, 7, 81, 2, 2, 3641, 3642, 7, 87, 2, 2, 3642, 3643, + 7, 68, 2, 2, 3643, 3644, 7, 78, 2, 2, 3644, 3645, 7, 71, 2, 2, 3645, 388, + 3, 2, 2, 2, 3646, 3647, 7, 82, 2, 2, 3647, 3648, 7, 84, 2, 2, 3648, 3649, + 7, 71, 2, 2, 3649, 3650, 7, 69, 2, 2, 3650, 3651, 7, 75, 2, 2, 3651, 3652, + 7, 85, 2, 2, 3652, 3653, 7, 75, 2, 2, 3653, 3654, 7, 81, 2, 2, 3654, 3655, + 7, 80, 2, 2, 3655, 390, 3, 2, 2, 2, 3656, 3657, 7, 72, 2, 2, 3657, 3658, + 7, 78, 2, 2, 3658, 3659, 7, 81, 2, 2, 3659, 3660, 7, 67, 2, 2, 3660, 3661, + 7, 86, 2, 2, 3661, 392, 3, 2, 2, 2, 3662, 3663, 7, 72, 2, 2, 3663, 3664, + 7, 78, 2, 2, 3664, 3665, 7, 81, 2, 2, 3665, 3666, 7, 67, 2, 2, 3666, 3667, + 7, 86, 2, 2, 3667, 3668, 7, 54, 2, 2, 3668, 394, 3, 2, 2, 2, 3669, 3670, + 7, 72, 2, 2, 3670, 3671, 7, 78, 2, 2, 3671, 3672, 7, 81, 2, 2, 3672, 3673, + 7, 67, 2, 2, 3673, 3674, 7, 86, 2, 2, 3674, 3675, 7, 58, 2, 2, 3675, 396, + 3, 2, 2, 2, 3676, 3677, 7, 70, 2, 2, 3677, 3678, 7, 71, 2, 2, 3678, 3679, + 7, 69, 2, 2, 3679, 3680, 7, 75, 2, 2, 3680, 3681, 7, 79, 2, 2, 3681, 3682, + 7, 67, 2, 2, 3682, 3683, 7, 78, 2, 2, 3683, 398, 3, 2, 2, 2, 3684, 3685, + 7, 70, 2, 2, 3685, 3686, 7, 71, 2, 2, 3686, 3687, 7, 69, 2, 2, 3687, 400, + 3, 2, 2, 2, 3688, 3689, 7, 80, 2, 2, 3689, 3690, 7, 87, 2, 2, 3690, 3691, + 7, 79, 2, 2, 3691, 3692, 7, 71, 2, 2, 3692, 3693, 7, 84, 2, 2, 3693, 3694, + 7, 75, 2, 2, 3694, 3695, 7, 69, 2, 2, 3695, 402, 3, 2, 2, 2, 3696, 3697, + 7, 70, 2, 2, 3697, 3698, 7, 67, 2, 2, 3698, 3699, 7, 86, 2, 2, 3699, 3700, + 7, 71, 2, 2, 3700, 404, 3, 2, 2, 2, 3701, 3702, 7, 86, 2, 2, 3702, 3703, + 7, 75, 2, 2, 3703, 3704, 7, 79, 2, 2, 3704, 3705, 7, 71, 2, 2, 3705, 406, + 3, 2, 2, 2, 3706, 3707, 7, 86, 2, 2, 3707, 3708, 7, 75, 2, 2, 3708, 3709, + 7, 79, 2, 2, 3709, 3710, 7, 71, 2, 2, 3710, 3711, 7, 85, 2, 2, 3711, 3712, + 7, 86, 2, 2, 3712, 3713, 7, 67, 2, 2, 3713, 3714, 7, 79, 2, 2, 3714, 3715, + 7, 82, 2, 2, 3715, 408, 3, 2, 2, 2, 3716, 3717, 7, 70, 2, 2, 3717, 3718, + 7, 67, 2, 2, 3718, 3719, 7, 86, 2, 2, 3719, 3720, 7, 71, 2, 2, 3720, 3721, + 7, 86, 2, 2, 3721, 3722, 7, 75, 2, 2, 3722, 3723, 7, 79, 2, 2, 3723, 3724, + 7, 71, 2, 2, 3724, 410, 3, 2, 2, 2, 3725, 3726, 7, 91, 2, 2, 3726, 3727, + 7, 71, 2, 2, 3727, 3728, 7, 67, 2, 2, 3728, 3729, 7, 84, 2, 2, 3729, 412, + 3, 2, 2, 2, 3730, 3731, 7, 69, 2, 2, 3731, 3732, 7, 74, 2, 2, 3732, 3733, + 7, 67, 2, 2, 3733, 3734, 7, 84, 2, 2, 3734, 414, 3, 2, 2, 2, 3735, 3736, + 7, 88, 2, 2, 3736, 3737, 7, 67, 2, 2, 3737, 3738, 7, 84, 2, 2, 3738, 3739, + 7, 69, 2, 2, 3739, 3740, 7, 74, 2, 2, 3740, 3741, 7, 67, 2, 2, 3741, 3742, + 7, 84, 2, 2, 3742, 416, 3, 2, 2, 2, 3743, 3744, 7, 80, 2, 2, 3744, 3745, + 7, 88, 2, 2, 3745, 3746, 7, 67, 2, 2, 3746, 3747, 7, 84, 2, 2, 3747, 3748, + 7, 69, 2, 2, 3748, 3749, 7, 74, 2, 2, 3749, 3750, 7, 67, 2, 2, 3750, 3751, + 7, 84, 2, 2, 3751, 418, 3, 2, 2, 2, 3752, 3753, 7, 80, 2, 2, 3753, 3754, + 7, 67, 2, 2, 3754, 3755, 7, 86, 2, 2, 3755, 3756, 7, 75, 2, 2, 3756, 3757, + 7, 81, 2, 2, 3757, 3758, 7, 80, 2, 2, 3758, 3759, 7, 67, 2, 2, 3759, 3760, + 7, 78, 2, 2, 3760, 420, 3, 2, 2, 2, 3761, 3762, 7, 68, 2, 2, 3762, 3763, + 7, 75, 2, 2, 3763, 3764, 7, 80, 2, 2, 3764, 3765, 7, 67, 2, 2, 3765, 3766, + 7, 84, 2, 2, 3766, 3767, 7, 91, 2, 2, 3767, 422, 3, 2, 2, 2, 3768, 3769, + 7, 88, 2, 2, 3769, 3770, 7, 67, 2, 2, 3770, 3771, 7, 84, 2, 2, 3771, 3772, + 7, 68, 2, 2, 3772, 3773, 7, 75, 2, 2, 3773, 3774, 7, 80, 2, 2, 3774, 3775, + 7, 67, 2, 2, 3775, 3776, 7, 84, 2, 2, 3776, 3777, 7, 91, 2, 2, 3777, 424, + 3, 2, 2, 2, 3778, 3779, 7, 86, 2, 2, 3779, 3780, 7, 75, 2, 2, 3780, 3781, + 7, 80, 2, 2, 3781, 3782, 7, 91, 2, 2, 3782, 3783, 7, 68, 2, 2, 3783, 3784, + 7, 78, 2, 2, 3784, 3785, 7, 81, 2, 2, 3785, 3786, 7, 68, 2, 2, 3786, 426, + 3, 2, 2, 2, 3787, 3788, 7, 68, 2, 2, 3788, 3789, 7, 78, 2, 2, 3789, 3790, + 7, 81, 2, 2, 3790, 3791, 7, 68, 2, 2, 3791, 428, 3, 2, 2, 2, 3792, 3793, + 7, 79, 2, 2, 3793, 3794, 7, 71, 2, 2, 3794, 3795, 7, 70, 2, 2, 3795, 3796, + 7, 75, 2, 2, 3796, 3797, 7, 87, 2, 2, 3797, 3798, 7, 79, 2, 2, 3798, 3799, + 7, 68, 2, 2, 3799, 3800, 7, 78, 2, 2, 3800, 3801, 7, 81, 2, 2, 3801, 3802, + 7, 68, 2, 2, 3802, 430, 3, 2, 2, 2, 3803, 3804, 7, 78, 2, 2, 3804, 3805, + 7, 81, 2, 2, 3805, 3806, 7, 80, 2, 2, 3806, 3807, 7, 73, 2, 2, 3807, 432, + 3, 2, 2, 2, 3808, 3809, 7, 78, 2, 2, 3809, 3810, 7, 81, 2, 2, 3810, 3811, + 7, 80, 2, 2, 3811, 3812, 7, 73, 2, 2, 3812, 3813, 7, 68, 2, 2, 3813, 3814, + 7, 78, 2, 2, 3814, 3815, 7, 81, 2, 2, 3815, 3816, 7, 68, 2, 2, 3816, 434, + 3, 2, 2, 2, 3817, 3818, 7, 86, 2, 2, 3818, 3819, 7, 75, 2, 2, 3819, 3820, + 7, 80, 2, 2, 3820, 3821, 7, 91, 2, 2, 3821, 3822, 7, 86, 2, 2, 3822, 3823, + 7, 71, 2, 2, 3823, 3824, 7, 90, 2, 2, 3824, 3825, 7, 86, 2, 2, 3825, 436, + 3, 2, 2, 2, 3826, 3827, 7, 86, 2, 2, 3827, 3828, 7, 71, 2, 2, 3828, 3829, + 7, 90, 2, 2, 3829, 3830, 7, 86, 2, 2, 3830, 438, 3, 2, 2, 2, 3831, 3832, + 7, 79, 2, 2, 3832, 3833, 7, 71, 2, 2, 3833, 3834, 7, 70, 2, 2, 3834, 3835, + 7, 75, 2, 2, 3835, 3836, 7, 87, 2, 2, 3836, 3837, 7, 79, 2, 2, 3837, 3838, + 7, 86, 2, 2, 3838, 3839, 7, 71, 2, 2, 3839, 3840, 7, 90, 2, 2, 3840, 3841, + 7, 86, 2, 2, 3841, 440, 3, 2, 2, 2, 3842, 3843, 7, 78, 2, 2, 3843, 3844, + 7, 81, 2, 2, 3844, 3845, 7, 80, 2, 2, 3845, 3846, 7, 73, 2, 2, 3846, 3847, + 7, 86, 2, 2, 3847, 3848, 7, 71, 2, 2, 3848, 3849, 7, 90, 2, 2, 3849, 3850, + 7, 86, 2, 2, 3850, 442, 3, 2, 2, 2, 3851, 3852, 7, 71, 2, 2, 3852, 3853, + 7, 80, 2, 2, 3853, 3854, 7, 87, 2, 2, 3854, 3855, 7, 79, 2, 2, 3855, 444, + 3, 2, 2, 2, 3856, 3857, 7, 88, 2, 2, 3857, 3858, 7, 67, 2, 2, 3858, 3859, + 7, 84, 2, 2, 3859, 3860, 7, 91, 2, 2, 3860, 3861, 7, 75, 2, 2, 3861, 3862, + 7, 80, 2, 2, 3862, 3863, 7, 73, 2, 2, 3863, 446, 3, 2, 2, 2, 3864, 3865, + 7, 85, 2, 2, 3865, 3866, 7, 71, 2, 2, 3866, 3867, 7, 84, 2, 2, 3867, 3868, + 7, 75, 2, 2, 3868, 3869, 7, 67, 2, 2, 3869, 3870, 7, 78, 2, 2, 3870, 448, + 3, 2, 2, 2, 3871, 3872, 7, 91, 2, 2, 3872, 3873, 7, 71, 2, 2, 3873, 3874, + 7, 67, 2, 2, 3874, 3875, 7, 84, 2, 2, 3875, 3876, 7, 97, 2, 2, 3876, 3877, + 7, 79, 2, 2, 3877, 3878, 7, 81, 2, 2, 3878, 3879, 7, 80, 2, 2, 3879, 3880, + 7, 86, 2, 2, 3880, 3881, 7, 74, 2, 2, 3881, 450, 3, 2, 2, 2, 3882, 3883, + 7, 70, 2, 2, 3883, 3884, 7, 67, 2, 2, 3884, 3885, 7, 91, 2, 2, 3885, 3886, + 7, 97, 2, 2, 3886, 3887, 7, 74, 2, 2, 3887, 3888, 7, 81, 2, 2, 3888, 3889, + 7, 87, 2, 2, 3889, 3890, 7, 84, 2, 2, 3890, 452, 3, 2, 2, 2, 3891, 3892, + 7, 70, 2, 2, 3892, 3893, 7, 67, 2, 2, 3893, 3894, 7, 91, 2, 2, 3894, 3895, + 7, 97, 2, 2, 3895, 3896, 7, 79, 2, 2, 3896, 3897, 7, 75, 2, 2, 3897, 3898, + 7, 80, 2, 2, 3898, 3899, 7, 87, 2, 2, 3899, 3900, 7, 86, 2, 2, 3900, 3901, + 7, 71, 2, 2, 3901, 454, 3, 2, 2, 2, 3902, 3903, 7, 70, 2, 2, 3903, 3904, + 7, 67, 2, 2, 3904, 3905, 7, 91, 2, 2, 3905, 3906, 7, 97, 2, 2, 3906, 3907, + 7, 85, 2, 2, 3907, 3908, 7, 71, 2, 2, 3908, 3909, 7, 69, 2, 2, 3909, 3910, + 7, 81, 2, 2, 3910, 3911, 7, 80, 2, 2, 3911, 3912, 7, 70, 2, 2, 3912, 456, + 3, 2, 2, 2, 3913, 3914, 7, 74, 2, 2, 3914, 3915, 7, 81, 2, 2, 3915, 3916, + 7, 87, 2, 2, 3916, 3917, 7, 84, 2, 2, 3917, 3918, 7, 97, 2, 2, 3918, 3919, + 7, 79, 2, 2, 3919, 3920, 7, 75, 2, 2, 3920, 3921, 7, 80, 2, 2, 3921, 3922, + 7, 87, 2, 2, 3922, 3923, 7, 86, 2, 2, 3923, 3924, 7, 71, 2, 2, 3924, 458, + 3, 2, 2, 2, 3925, 3926, 7, 74, 2, 2, 3926, 3927, 7, 81, 2, 2, 3927, 3928, + 7, 87, 2, 2, 3928, 3929, 7, 84, 2, 2, 3929, 3930, 7, 97, 2, 2, 3930, 3931, + 7, 85, 2, 2, 3931, 3932, 7, 71, 2, 2, 3932, 3933, 7, 69, 2, 2, 3933, 3934, + 7, 81, 2, 2, 3934, 3935, 7, 80, 2, 2, 3935, 3936, 7, 70, 2, 2, 3936, 460, + 3, 2, 2, 2, 3937, 3938, 7, 79, 2, 2, 3938, 3939, 7, 75, 2, 2, 3939, 3940, + 7, 80, 2, 2, 3940, 3941, 7, 87, 2, 2, 3941, 3942, 7, 86, 2, 2, 3942, 3943, + 7, 71, 2, 2, 3943, 3944, 7, 97, 2, 2, 3944, 3945, 7, 85, 2, 2, 3945, 3946, + 7, 71, 2, 2, 3946, 3947, 7, 69, 2, 2, 3947, 3948, 7, 81, 2, 2, 3948, 3949, + 7, 80, 2, 2, 3949, 3950, 7, 70, 2, 2, 3950, 462, 3, 2, 2, 2, 3951, 3952, + 7, 85, 2, 2, 3952, 3953, 7, 71, 2, 2, 3953, 3954, 7, 69, 2, 2, 3954, 3955, + 7, 81, 2, 2, 3955, 3956, 7, 80, 2, 2, 3956, 3957, 7, 70, 2, 2, 3957, 3958, + 7, 97, 2, 2, 3958, 3959, 7, 79, 2, 2, 3959, 3960, 7, 75, 2, 2, 3960, 3961, + 7, 69, 2, 2, 3961, 3962, 7, 84, 2, 2, 3962, 3963, 7, 81, 2, 2, 3963, 3964, + 7, 85, 2, 2, 3964, 3965, 7, 71, 2, 2, 3965, 3966, 7, 69, 2, 2, 3966, 3967, + 7, 81, 2, 2, 3967, 3968, 7, 80, 2, 2, 3968, 3969, 7, 70, 2, 2, 3969, 464, + 3, 2, 2, 2, 3970, 3971, 7, 79, 2, 2, 3971, 3972, 7, 75, 2, 2, 3972, 3973, + 7, 80, 2, 2, 3973, 3974, 7, 87, 2, 2, 3974, 3975, 7, 86, 2, 2, 3975, 3976, + 7, 71, 2, 2, 3976, 3977, 7, 97, 2, 2, 3977, 3978, 7, 79, 2, 2, 3978, 3979, + 7, 75, 2, 2, 3979, 3980, 7, 69, 2, 2, 3980, 3981, 7, 84, 2, 2, 3981, 3982, + 7, 81, 2, 2, 3982, 3983, 7, 85, 2, 2, 3983, 3984, 7, 71, 2, 2, 3984, 3985, + 7, 69, 2, 2, 3985, 3986, 7, 81, 2, 2, 3986, 3987, 7, 80, 2, 2, 3987, 3988, + 7, 70, 2, 2, 3988, 466, 3, 2, 2, 2, 3989, 3990, 7, 74, 2, 2, 3990, 3991, + 7, 81, 2, 2, 3991, 3992, 7, 87, 2, 2, 3992, 3993, 7, 84, 2, 2, 3993, 3994, + 7, 97, 2, 2, 3994, 3995, 7, 79, 2, 2, 3995, 3996, 7, 75, 2, 2, 3996, 3997, + 7, 69, 2, 2, 3997, 3998, 7, 84, 2, 2, 3998, 3999, 7, 81, 2, 2, 3999, 4000, + 7, 85, 2, 2, 4000, 4001, 7, 71, 2, 2, 4001, 4002, 7, 69, 2, 2, 4002, 4003, + 7, 81, 2, 2, 4003, 4004, 7, 80, 2, 2, 4004, 4005, 7, 70, 2, 2, 4005, 468, + 3, 2, 2, 2, 4006, 4007, 7, 70, 2, 2, 4007, 4008, 7, 67, 2, 2, 4008, 4009, + 7, 91, 2, 2, 4009, 4010, 7, 97, 2, 2, 4010, 4011, 7, 79, 2, 2, 4011, 4012, + 7, 75, 2, 2, 4012, 4013, 7, 69, 2, 2, 4013, 4014, 7, 84, 2, 2, 4014, 4015, + 7, 81, 2, 2, 4015, 4016, 7, 85, 2, 2, 4016, 4017, 7, 71, 2, 2, 4017, 4018, + 7, 69, 2, 2, 4018, 4019, 7, 81, 2, 2, 4019, 4020, 7, 80, 2, 2, 4020, 4021, + 7, 70, 2, 2, 4021, 470, 3, 2, 2, 2, 4022, 4023, 7, 76, 2, 2, 4023, 4024, + 7, 85, 2, 2, 4024, 4025, 7, 81, 2, 2, 4025, 4026, 7, 80, 2, 2, 4026, 4027, + 7, 97, 2, 2, 4027, 4028, 7, 67, 2, 2, 4028, 4029, 7, 84, 2, 2, 4029, 4030, + 7, 84, 2, 2, 4030, 4031, 7, 67, 2, 2, 4031, 4032, 7, 91, 2, 2, 4032, 472, + 3, 2, 2, 2, 4033, 4034, 7, 76, 2, 2, 4034, 4035, 7, 85, 2, 2, 4035, 4036, + 7, 81, 2, 2, 4036, 4037, 7, 80, 2, 2, 4037, 4038, 7, 97, 2, 2, 4038, 4039, + 7, 81, 2, 2, 4039, 4040, 7, 68, 2, 2, 4040, 4041, 7, 76, 2, 2, 4041, 4042, + 7, 71, 2, 2, 4042, 4043, 7, 69, 2, 2, 4043, 4044, 7, 86, 2, 2, 4044, 474, + 3, 2, 2, 2, 4045, 4046, 7, 76, 2, 2, 4046, 4047, 7, 85, 2, 2, 4047, 4048, + 7, 81, 2, 2, 4048, 4049, 7, 80, 2, 2, 4049, 4050, 7, 97, 2, 2, 4050, 4051, + 7, 83, 2, 2, 4051, 4052, 7, 87, 2, 2, 4052, 4053, 7, 81, 2, 2, 4053, 4054, + 7, 86, 2, 2, 4054, 4055, 7, 71, 2, 2, 4055, 476, 3, 2, 2, 2, 4056, 4057, + 7, 76, 2, 2, 4057, 4058, 7, 85, 2, 2, 4058, 4059, 7, 81, 2, 2, 4059, 4060, + 7, 80, 2, 2, 4060, 4061, 7, 97, 2, 2, 4061, 4062, 7, 69, 2, 2, 4062, 4063, + 7, 81, 2, 2, 4063, 4064, 7, 80, 2, 2, 4064, 4065, 7, 86, 2, 2, 4065, 4066, + 7, 67, 2, 2, 4066, 4067, 7, 75, 2, 2, 4067, 4068, 7, 80, 2, 2, 4068, 4069, + 7, 85, 2, 2, 4069, 478, 3, 2, 2, 2, 4070, 4071, 7, 76, 2, 2, 4071, 4072, + 7, 85, 2, 2, 4072, 4073, 7, 81, 2, 2, 4073, 4074, 7, 80, 2, 2, 4074, 4075, + 7, 97, 2, 2, 4075, 4076, 7, 69, 2, 2, 4076, 4077, 7, 81, 2, 2, 4077, 4078, + 7, 80, 2, 2, 4078, 4079, 7, 86, 2, 2, 4079, 4080, 7, 67, 2, 2, 4080, 4081, + 7, 75, 2, 2, 4081, 4082, 7, 80, 2, 2, 4082, 4083, 7, 85, 2, 2, 4083, 4084, + 7, 97, 2, 2, 4084, 4085, 7, 82, 2, 2, 4085, 4086, 7, 67, 2, 2, 4086, 4087, + 7, 86, 2, 2, 4087, 4088, 7, 74, 2, 2, 4088, 480, 3, 2, 2, 2, 4089, 4090, + 7, 76, 2, 2, 4090, 4091, 7, 85, 2, 2, 4091, 4092, 7, 81, 2, 2, 4092, 4093, + 7, 80, 2, 2, 4093, 4094, 7, 97, 2, 2, 4094, 4095, 7, 71, 2, 2, 4095, 4096, + 7, 90, 2, 2, 4096, 4097, 7, 86, 2, 2, 4097, 4098, 7, 84, 2, 2, 4098, 4099, + 7, 67, 2, 2, 4099, 4100, 7, 69, 2, 2, 4100, 4101, 7, 86, 2, 2, 4101, 482, + 3, 2, 2, 2, 4102, 4103, 7, 76, 2, 2, 4103, 4104, 7, 85, 2, 2, 4104, 4105, + 7, 81, 2, 2, 4105, 4106, 7, 80, 2, 2, 4106, 4107, 7, 97, 2, 2, 4107, 4108, + 7, 77, 2, 2, 4108, 4109, 7, 71, 2, 2, 4109, 4110, 7, 91, 2, 2, 4110, 4111, + 7, 85, 2, 2, 4111, 484, 3, 2, 2, 2, 4112, 4113, 7, 76, 2, 2, 4113, 4114, + 7, 85, 2, 2, 4114, 4115, 7, 81, 2, 2, 4115, 4116, 7, 80, 2, 2, 4116, 4117, + 7, 97, 2, 2, 4117, 4118, 7, 81, 2, 2, 4118, 4119, 7, 88, 2, 2, 4119, 4120, + 7, 71, 2, 2, 4120, 4121, 7, 84, 2, 2, 4121, 4122, 7, 78, 2, 2, 4122, 4123, + 7, 67, 2, 2, 4123, 4124, 7, 82, 2, 2, 4124, 4125, 7, 85, 2, 2, 4125, 486, + 3, 2, 2, 2, 4126, 4127, 7, 76, 2, 2, 4127, 4128, 7, 85, 2, 2, 4128, 4129, + 7, 81, 2, 2, 4129, 4130, 7, 80, 2, 2, 4130, 4131, 7, 97, 2, 2, 4131, 4132, + 7, 85, 2, 2, 4132, 4133, 7, 71, 2, 2, 4133, 4134, 7, 67, 2, 2, 4134, 4135, + 7, 84, 2, 2, 4135, 4136, 7, 69, 2, 2, 4136, 4137, 7, 74, 2, 2, 4137, 488, + 3, 2, 2, 2, 4138, 4139, 7, 76, 2, 2, 4139, 4140, 7, 85, 2, 2, 4140, 4141, + 7, 81, 2, 2, 4141, 4142, 7, 80, 2, 2, 4142, 4143, 7, 97, 2, 2, 4143, 4144, + 7, 88, 2, 2, 4144, 4145, 7, 67, 2, 2, 4145, 4146, 7, 78, 2, 2, 4146, 4147, + 7, 87, 2, 2, 4147, 4148, 7, 71, 2, 2, 4148, 490, 3, 2, 2, 2, 4149, 4150, + 7, 76, 2, 2, 4150, 4151, 7, 85, 2, 2, 4151, 4152, 7, 81, 2, 2, 4152, 4153, + 7, 80, 2, 2, 4153, 4154, 7, 97, 2, 2, 4154, 4155, 7, 67, 2, 2, 4155, 4156, + 7, 84, 2, 2, 4156, 4157, 7, 84, 2, 2, 4157, 4158, 7, 67, 2, 2, 4158, 4159, + 7, 91, 2, 2, 4159, 4160, 7, 97, 2, 2, 4160, 4161, 7, 67, 2, 2, 4161, 4162, + 7, 82, 2, 2, 4162, 4163, 7, 82, 2, 2, 4163, 4164, 7, 71, 2, 2, 4164, 4165, + 7, 80, 2, 2, 4165, 4166, 7, 70, 2, 2, 4166, 492, 3, 2, 2, 2, 4167, 4168, + 7, 76, 2, 2, 4168, 4169, 7, 85, 2, 2, 4169, 4170, 7, 81, 2, 2, 4170, 4171, + 7, 80, 2, 2, 4171, 4172, 7, 97, 2, 2, 4172, 4173, 7, 67, 2, 2, 4173, 4174, + 7, 84, 2, 2, 4174, 4175, 7, 84, 2, 2, 4175, 4176, 7, 67, 2, 2, 4176, 4177, + 7, 91, 2, 2, 4177, 4178, 7, 97, 2, 2, 4178, 4179, 7, 75, 2, 2, 4179, 4180, + 7, 80, 2, 2, 4180, 4181, 7, 85, 2, 2, 4181, 4182, 7, 71, 2, 2, 4182, 4183, + 7, 84, 2, 2, 4183, 4184, 7, 86, 2, 2, 4184, 494, 3, 2, 2, 2, 4185, 4186, + 7, 76, 2, 2, 4186, 4187, 7, 85, 2, 2, 4187, 4188, 7, 81, 2, 2, 4188, 4189, + 7, 80, 2, 2, 4189, 4190, 7, 97, 2, 2, 4190, 4191, 7, 75, 2, 2, 4191, 4192, + 7, 80, 2, 2, 4192, 4193, 7, 85, 2, 2, 4193, 4194, 7, 71, 2, 2, 4194, 4195, + 7, 84, 2, 2, 4195, 4196, 7, 86, 2, 2, 4196, 496, 3, 2, 2, 2, 4197, 4198, + 7, 76, 2, 2, 4198, 4199, 7, 85, 2, 2, 4199, 4200, 7, 81, 2, 2, 4200, 4201, + 7, 80, 2, 2, 4201, 4202, 7, 97, 2, 2, 4202, 4203, 7, 79, 2, 2, 4203, 4204, + 7, 71, 2, 2, 4204, 4205, 7, 84, 2, 2, 4205, 4206, 7, 73, 2, 2, 4206, 4207, + 7, 71, 2, 2, 4207, 498, 3, 2, 2, 2, 4208, 4209, 7, 76, 2, 2, 4209, 4210, + 7, 85, 2, 2, 4210, 4211, 7, 81, 2, 2, 4211, 4212, 7, 80, 2, 2, 4212, 4213, + 7, 97, 2, 2, 4213, 4214, 7, 79, 2, 2, 4214, 4215, 7, 71, 2, 2, 4215, 4216, + 7, 84, 2, 2, 4216, 4217, 7, 73, 2, 2, 4217, 4218, 7, 71, 2, 2, 4218, 4219, + 7, 97, 2, 2, 4219, 4220, 7, 82, 2, 2, 4220, 4221, 7, 67, 2, 2, 4221, 4222, + 7, 86, 2, 2, 4222, 4223, 7, 69, 2, 2, 4223, 4224, 7, 74, 2, 2, 4224, 500, + 3, 2, 2, 2, 4225, 4226, 7, 76, 2, 2, 4226, 4227, 7, 85, 2, 2, 4227, 4228, + 7, 81, 2, 2, 4228, 4229, 7, 80, 2, 2, 4229, 4230, 7, 97, 2, 2, 4230, 4231, + 7, 79, 2, 2, 4231, 4232, 7, 71, 2, 2, 4232, 4233, 7, 84, 2, 2, 4233, 4234, + 7, 73, 2, 2, 4234, 4235, 7, 71, 2, 2, 4235, 4236, 7, 97, 2, 2, 4236, 4237, + 7, 82, 2, 2, 4237, 4238, 7, 84, 2, 2, 4238, 4239, 7, 71, 2, 2, 4239, 4240, + 7, 85, 2, 2, 4240, 4241, 7, 71, 2, 2, 4241, 4242, 7, 84, 2, 2, 4242, 4243, + 7, 88, 2, 2, 4243, 4244, 7, 71, 2, 2, 4244, 502, 3, 2, 2, 2, 4245, 4246, + 7, 76, 2, 2, 4246, 4247, 7, 85, 2, 2, 4247, 4248, 7, 81, 2, 2, 4248, 4249, + 7, 80, 2, 2, 4249, 4250, 7, 97, 2, 2, 4250, 4251, 7, 84, 2, 2, 4251, 4252, + 7, 71, 2, 2, 4252, 4253, 7, 79, 2, 2, 4253, 4254, 7, 81, 2, 2, 4254, 4255, + 7, 88, 2, 2, 4255, 4256, 7, 71, 2, 2, 4256, 504, 3, 2, 2, 2, 4257, 4258, + 7, 76, 2, 2, 4258, 4259, 7, 85, 2, 2, 4259, 4260, 7, 81, 2, 2, 4260, 4261, + 7, 80, 2, 2, 4261, 4262, 7, 97, 2, 2, 4262, 4263, 7, 84, 2, 2, 4263, 4264, + 7, 71, 2, 2, 4264, 4265, 7, 82, 2, 2, 4265, 4266, 7, 78, 2, 2, 4266, 4267, + 7, 67, 2, 2, 4267, 4268, 7, 69, 2, 2, 4268, 4269, 7, 71, 2, 2, 4269, 506, + 3, 2, 2, 2, 4270, 4271, 7, 76, 2, 2, 4271, 4272, 7, 85, 2, 2, 4272, 4273, + 7, 81, 2, 2, 4273, 4274, 7, 80, 2, 2, 4274, 4275, 7, 97, 2, 2, 4275, 4276, + 7, 85, 2, 2, 4276, 4277, 7, 71, 2, 2, 4277, 4278, 7, 86, 2, 2, 4278, 508, + 3, 2, 2, 2, 4279, 4280, 7, 76, 2, 2, 4280, 4281, 7, 85, 2, 2, 4281, 4282, + 7, 81, 2, 2, 4282, 4283, 7, 80, 2, 2, 4283, 4284, 7, 97, 2, 2, 4284, 4285, + 7, 87, 2, 2, 4285, 4286, 7, 80, 2, 2, 4286, 4287, 7, 83, 2, 2, 4287, 4288, + 7, 87, 2, 2, 4288, 4289, 7, 81, 2, 2, 4289, 4290, 7, 86, 2, 2, 4290, 4291, + 7, 71, 2, 2, 4291, 510, 3, 2, 2, 2, 4292, 4293, 7, 76, 2, 2, 4293, 4294, + 7, 85, 2, 2, 4294, 4295, 7, 81, 2, 2, 4295, 4296, 7, 80, 2, 2, 4296, 4297, + 7, 97, 2, 2, 4297, 4298, 7, 70, 2, 2, 4298, 4299, 7, 71, 2, 2, 4299, 4300, + 7, 82, 2, 2, 4300, 4301, 7, 86, 2, 2, 4301, 4302, 7, 74, 2, 2, 4302, 512, + 3, 2, 2, 2, 4303, 4304, 7, 76, 2, 2, 4304, 4305, 7, 85, 2, 2, 4305, 4306, + 7, 81, 2, 2, 4306, 4307, 7, 80, 2, 2, 4307, 4308, 7, 97, 2, 2, 4308, 4309, + 7, 78, 2, 2, 4309, 4310, 7, 71, 2, 2, 4310, 4311, 7, 80, 2, 2, 4311, 4312, + 7, 73, 2, 2, 4312, 4313, 7, 86, 2, 2, 4313, 4314, 7, 74, 2, 2, 4314, 514, + 3, 2, 2, 2, 4315, 4316, 7, 76, 2, 2, 4316, 4317, 7, 85, 2, 2, 4317, 4318, + 7, 81, 2, 2, 4318, 4319, 7, 80, 2, 2, 4319, 4320, 7, 97, 2, 2, 4320, 4321, + 7, 86, 2, 2, 4321, 4322, 7, 91, 2, 2, 4322, 4323, 7, 82, 2, 2, 4323, 4324, + 7, 71, 2, 2, 4324, 516, 3, 2, 2, 2, 4325, 4326, 7, 76, 2, 2, 4326, 4327, + 7, 85, 2, 2, 4327, 4328, 7, 81, 2, 2, 4328, 4329, 7, 80, 2, 2, 4329, 4330, + 7, 97, 2, 2, 4330, 4331, 7, 88, 2, 2, 4331, 4332, 7, 67, 2, 2, 4332, 4333, + 7, 78, 2, 2, 4333, 4334, 7, 75, 2, 2, 4334, 4335, 7, 70, 2, 2, 4335, 518, + 3, 2, 2, 2, 4336, 4337, 7, 76, 2, 2, 4337, 4338, 7, 85, 2, 2, 4338, 4339, + 7, 81, 2, 2, 4339, 4340, 7, 80, 2, 2, 4340, 4341, 7, 97, 2, 2, 4341, 4342, + 7, 86, 2, 2, 4342, 4343, 7, 67, 2, 2, 4343, 4344, 7, 68, 2, 2, 4344, 4345, + 7, 78, 2, 2, 4345, 4346, 7, 71, 2, 2, 4346, 520, 3, 2, 2, 2, 4347, 4348, + 7, 76, 2, 2, 4348, 4349, 7, 85, 2, 2, 4349, 4350, 7, 81, 2, 2, 4350, 4351, + 7, 80, 2, 2, 4351, 4352, 7, 97, 2, 2, 4352, 4353, 7, 85, 2, 2, 4353, 4354, + 7, 69, 2, 2, 4354, 4355, 7, 74, 2, 2, 4355, 4356, 7, 71, 2, 2, 4356, 4357, + 7, 79, 2, 2, 4357, 4358, 7, 67, 2, 2, 4358, 4359, 7, 97, 2, 2, 4359, 4360, + 7, 88, 2, 2, 4360, 4361, 7, 67, 2, 2, 4361, 4362, 7, 78, 2, 2, 4362, 4363, + 7, 75, 2, 2, 4363, 4364, 7, 70, 2, 2, 4364, 522, 3, 2, 2, 2, 4365, 4366, + 7, 76, 2, 2, 4366, 4367, 7, 85, 2, 2, 4367, 4368, 7, 81, 2, 2, 4368, 4369, + 7, 80, 2, 2, 4369, 4370, 7, 97, 2, 2, 4370, 4371, 7, 85, 2, 2, 4371, 4372, + 7, 69, 2, 2, 4372, 4373, 7, 74, 2, 2, 4373, 4374, 7, 71, 2, 2, 4374, 4375, + 7, 79, 2, 2, 4375, 4376, 7, 67, 2, 2, 4376, 4377, 7, 97, 2, 2, 4377, 4378, + 7, 88, 2, 2, 4378, 4379, 7, 67, 2, 2, 4379, 4380, 7, 78, 2, 2, 4380, 4381, + 7, 75, 2, 2, 4381, 4382, 7, 70, 2, 2, 4382, 4383, 7, 67, 2, 2, 4383, 4384, + 7, 86, 2, 2, 4384, 4385, 7, 75, 2, 2, 4385, 4386, 7, 81, 2, 2, 4386, 4387, + 7, 80, 2, 2, 4387, 4388, 7, 97, 2, 2, 4388, 4389, 7, 84, 2, 2, 4389, 4390, + 7, 71, 2, 2, 4390, 4391, 7, 82, 2, 2, 4391, 4392, 7, 81, 2, 2, 4392, 4393, + 7, 84, 2, 2, 4393, 4394, 7, 86, 2, 2, 4394, 524, 3, 2, 2, 2, 4395, 4396, + 7, 76, 2, 2, 4396, 4397, 7, 85, 2, 2, 4397, 4398, 7, 81, 2, 2, 4398, 4399, + 7, 80, 2, 2, 4399, 4400, 7, 97, 2, 2, 4400, 4401, 7, 82, 2, 2, 4401, 4402, + 7, 84, 2, 2, 4402, 4403, 7, 71, 2, 2, 4403, 4404, 7, 86, 2, 2, 4404, 4405, + 7, 86, 2, 2, 4405, 4406, 7, 91, 2, 2, 4406, 526, 3, 2, 2, 2, 4407, 4408, + 7, 76, 2, 2, 4408, 4409, 7, 85, 2, 2, 4409, 4410, 7, 81, 2, 2, 4410, 4411, + 7, 80, 2, 2, 4411, 4412, 7, 97, 2, 2, 4412, 4413, 7, 85, 2, 2, 4413, 4414, + 7, 86, 2, 2, 4414, 4415, 7, 81, 2, 2, 4415, 4416, 7, 84, 2, 2, 4416, 4417, + 7, 67, 2, 2, 4417, 4418, 7, 73, 2, 2, 4418, 4419, 7, 71, 2, 2, 4419, 4420, + 7, 97, 2, 2, 4420, 4421, 7, 72, 2, 2, 4421, 4422, 7, 84, 2, 2, 4422, 4423, + 7, 71, 2, 2, 4423, 4424, 7, 71, 2, 2, 4424, 528, 3, 2, 2, 2, 4425, 4426, + 7, 76, 2, 2, 4426, 4427, 7, 85, 2, 2, 4427, 4428, 7, 81, 2, 2, 4428, 4429, + 7, 80, 2, 2, 4429, 4430, 7, 97, 2, 2, 4430, 4431, 7, 85, 2, 2, 4431, 4432, + 7, 86, 2, 2, 4432, 4433, 7, 81, 2, 2, 4433, 4434, 7, 84, 2, 2, 4434, 4435, + 7, 67, 2, 2, 4435, 4436, 7, 73, 2, 2, 4436, 4437, 7, 71, 2, 2, 4437, 4438, + 7, 97, 2, 2, 4438, 4439, 7, 85, 2, 2, 4439, 4440, 7, 75, 2, 2, 4440, 4441, + 7, 92, 2, 2, 4441, 4442, 7, 71, 2, 2, 4442, 530, 3, 2, 2, 2, 4443, 4444, + 7, 76, 2, 2, 4444, 4445, 7, 85, 2, 2, 4445, 4446, 7, 81, 2, 2, 4446, 4447, + 7, 80, 2, 2, 4447, 4448, 7, 97, 2, 2, 4448, 4449, 7, 67, 2, 2, 4449, 4450, + 7, 84, 2, 2, 4450, 4451, 7, 84, 2, 2, 4451, 4452, 7, 67, 2, 2, 4452, 4453, + 7, 91, 2, 2, 4453, 4454, 7, 67, 2, 2, 4454, 4455, 7, 73, 2, 2, 4455, 4456, + 7, 73, 2, 2, 4456, 532, 3, 2, 2, 2, 4457, 4458, 7, 76, 2, 2, 4458, 4459, + 7, 85, 2, 2, 4459, 4460, 7, 81, 2, 2, 4460, 4461, 7, 80, 2, 2, 4461, 4462, + 7, 97, 2, 2, 4462, 4463, 7, 81, 2, 2, 4463, 4464, 7, 68, 2, 2, 4464, 4465, + 7, 76, 2, 2, 4465, 4466, 7, 71, 2, 2, 4466, 4467, 7, 69, 2, 2, 4467, 4468, + 7, 86, 2, 2, 4468, 4469, 7, 67, 2, 2, 4469, 4470, 7, 73, 2, 2, 4470, 4471, + 7, 73, 2, 2, 4471, 534, 3, 2, 2, 2, 4472, 4473, 7, 67, 2, 2, 4473, 4474, + 7, 88, 2, 2, 4474, 4475, 7, 73, 2, 2, 4475, 536, 3, 2, 2, 2, 4476, 4477, + 7, 68, 2, 2, 4477, 4478, 7, 75, 2, 2, 4478, 4479, 7, 86, 2, 2, 4479, 4480, + 7, 97, 2, 2, 4480, 4481, 7, 67, 2, 2, 4481, 4482, 7, 80, 2, 2, 4482, 4483, + 7, 70, 2, 2, 4483, 538, 3, 2, 2, 2, 4484, 4485, 7, 68, 2, 2, 4485, 4486, + 7, 75, 2, 2, 4486, 4487, 7, 86, 2, 2, 4487, 4488, 7, 97, 2, 2, 4488, 4489, + 7, 81, 2, 2, 4489, 4490, 7, 84, 2, 2, 4490, 540, 3, 2, 2, 2, 4491, 4492, + 7, 68, 2, 2, 4492, 4493, 7, 75, 2, 2, 4493, 4494, 7, 86, 2, 2, 4494, 4495, + 7, 97, 2, 2, 4495, 4496, 7, 90, 2, 2, 4496, 4497, 7, 81, 2, 2, 4497, 4498, + 7, 84, 2, 2, 4498, 542, 3, 2, 2, 2, 4499, 4500, 7, 69, 2, 2, 4500, 4501, + 7, 81, 2, 2, 4501, 4502, 7, 87, 2, 2, 4502, 4503, 7, 80, 2, 2, 4503, 4504, + 7, 86, 2, 2, 4504, 544, 3, 2, 2, 2, 4505, 4506, 7, 73, 2, 2, 4506, 4507, + 7, 84, 2, 2, 4507, 4508, 7, 81, 2, 2, 4508, 4509, 7, 87, 2, 2, 4509, 4510, + 7, 82, 2, 2, 4510, 4511, 7, 97, 2, 2, 4511, 4512, 7, 69, 2, 2, 4512, 4513, + 7, 81, 2, 2, 4513, 4514, 7, 80, 2, 2, 4514, 4515, 7, 69, 2, 2, 4515, 4516, + 7, 67, 2, 2, 4516, 4517, 7, 86, 2, 2, 4517, 546, 3, 2, 2, 2, 4518, 4519, + 7, 79, 2, 2, 4519, 4520, 7, 67, 2, 2, 4520, 4521, 7, 90, 2, 2, 4521, 548, + 3, 2, 2, 2, 4522, 4523, 7, 79, 2, 2, 4523, 4524, 7, 75, 2, 2, 4524, 4525, + 7, 80, 2, 2, 4525, 550, 3, 2, 2, 2, 4526, 4527, 7, 85, 2, 2, 4527, 4528, + 7, 86, 2, 2, 4528, 4529, 7, 70, 2, 2, 4529, 552, 3, 2, 2, 2, 4530, 4531, + 7, 85, 2, 2, 4531, 4532, 7, 86, 2, 2, 4532, 4533, 7, 70, 2, 2, 4533, 4534, + 7, 70, 2, 2, 4534, 4535, 7, 71, 2, 2, 4535, 4536, 7, 88, 2, 2, 4536, 554, + 3, 2, 2, 2, 4537, 4538, 7, 85, 2, 2, 4538, 4539, 7, 86, 2, 2, 4539, 4540, + 7, 70, 2, 2, 4540, 4541, 7, 70, 2, 2, 4541, 4542, 7, 71, 2, 2, 4542, 4543, + 7, 88, 2, 2, 4543, 4544, 7, 97, 2, 2, 4544, 4545, 7, 82, 2, 2, 4545, 4546, + 7, 81, 2, 2, 4546, 4547, 7, 82, 2, 2, 4547, 556, 3, 2, 2, 2, 4548, 4549, + 7, 85, 2, 2, 4549, 4550, 7, 86, 2, 2, 4550, 4551, 7, 70, 2, 2, 4551, 4552, + 7, 70, 2, 2, 4552, 4553, 7, 71, 2, 2, 4553, 4554, 7, 88, 2, 2, 4554, 4555, + 7, 97, 2, 2, 4555, 4556, 7, 85, 2, 2, 4556, 4557, 7, 67, 2, 2, 4557, 4558, + 7, 79, 2, 2, 4558, 4559, 7, 82, 2, 2, 4559, 558, 3, 2, 2, 2, 4560, 4561, + 7, 85, 2, 2, 4561, 4562, 7, 87, 2, 2, 4562, 4563, 7, 79, 2, 2, 4563, 560, + 3, 2, 2, 2, 4564, 4565, 7, 88, 2, 2, 4565, 4566, 7, 67, 2, 2, 4566, 4567, + 7, 84, 2, 2, 4567, 4568, 7, 97, 2, 2, 4568, 4569, 7, 82, 2, 2, 4569, 4570, + 7, 81, 2, 2, 4570, 4571, 7, 82, 2, 2, 4571, 562, 3, 2, 2, 2, 4572, 4573, + 7, 88, 2, 2, 4573, 4574, 7, 67, 2, 2, 4574, 4575, 7, 84, 2, 2, 4575, 4576, + 7, 97, 2, 2, 4576, 4577, 7, 85, 2, 2, 4577, 4578, 7, 67, 2, 2, 4578, 4579, + 7, 79, 2, 2, 4579, 4580, 7, 82, 2, 2, 4580, 564, 3, 2, 2, 2, 4581, 4582, + 7, 88, 2, 2, 4582, 4583, 7, 67, 2, 2, 4583, 4584, 7, 84, 2, 2, 4584, 4585, + 7, 75, 2, 2, 4585, 4586, 7, 67, 2, 2, 4586, 4587, 7, 80, 2, 2, 4587, 4588, + 7, 69, 2, 2, 4588, 4589, 7, 71, 2, 2, 4589, 566, 3, 2, 2, 2, 4590, 4591, + 7, 69, 2, 2, 4591, 4592, 7, 87, 2, 2, 4592, 4593, 7, 84, 2, 2, 4593, 4594, + 7, 84, 2, 2, 4594, 4595, 7, 71, 2, 2, 4595, 4596, 7, 80, 2, 2, 4596, 4597, + 7, 86, 2, 2, 4597, 4598, 7, 97, 2, 2, 4598, 4599, 7, 70, 2, 2, 4599, 4600, + 7, 67, 2, 2, 4600, 4601, 7, 86, 2, 2, 4601, 4602, 7, 71, 2, 2, 4602, 568, + 3, 2, 2, 2, 4603, 4604, 7, 69, 2, 2, 4604, 4605, 7, 87, 2, 2, 4605, 4606, + 7, 84, 2, 2, 4606, 4607, 7, 84, 2, 2, 4607, 4608, 7, 71, 2, 2, 4608, 4609, + 7, 80, 2, 2, 4609, 4610, 7, 86, 2, 2, 4610, 4611, 7, 97, 2, 2, 4611, 4612, + 7, 86, 2, 2, 4612, 4613, 7, 75, 2, 2, 4613, 4614, 7, 79, 2, 2, 4614, 4615, + 7, 71, 2, 2, 4615, 570, 3, 2, 2, 2, 4616, 4617, 7, 69, 2, 2, 4617, 4618, + 7, 87, 2, 2, 4618, 4619, 7, 84, 2, 2, 4619, 4620, 7, 84, 2, 2, 4620, 4621, + 7, 71, 2, 2, 4621, 4622, 7, 80, 2, 2, 4622, 4623, 7, 86, 2, 2, 4623, 4624, + 7, 97, 2, 2, 4624, 4625, 7, 86, 2, 2, 4625, 4626, 7, 75, 2, 2, 4626, 4627, + 7, 79, 2, 2, 4627, 4628, 7, 71, 2, 2, 4628, 4629, 7, 85, 2, 2, 4629, 4630, + 7, 86, 2, 2, 4630, 4631, 7, 67, 2, 2, 4631, 4632, 7, 79, 2, 2, 4632, 4633, + 7, 82, 2, 2, 4633, 572, 3, 2, 2, 2, 4634, 4635, 7, 78, 2, 2, 4635, 4636, + 7, 81, 2, 2, 4636, 4637, 7, 69, 2, 2, 4637, 4638, 7, 67, 2, 2, 4638, 4639, + 7, 78, 2, 2, 4639, 4640, 7, 86, 2, 2, 4640, 4641, 7, 75, 2, 2, 4641, 4642, + 7, 79, 2, 2, 4642, 4643, 7, 71, 2, 2, 4643, 574, 3, 2, 2, 2, 4644, 4645, + 7, 69, 2, 2, 4645, 4646, 7, 87, 2, 2, 4646, 4647, 7, 84, 2, 2, 4647, 4648, + 7, 70, 2, 2, 4648, 4649, 7, 67, 2, 2, 4649, 4650, 7, 86, 2, 2, 4650, 4651, + 7, 71, 2, 2, 4651, 576, 3, 2, 2, 2, 4652, 4653, 7, 69, 2, 2, 4653, 4654, + 7, 87, 2, 2, 4654, 4655, 7, 84, 2, 2, 4655, 4656, 7, 86, 2, 2, 4656, 4657, + 7, 75, 2, 2, 4657, 4658, 7, 79, 2, 2, 4658, 4659, 7, 71, 2, 2, 4659, 578, + 3, 2, 2, 2, 4660, 4661, 7, 70, 2, 2, 4661, 4662, 7, 67, 2, 2, 4662, 4663, + 7, 86, 2, 2, 4663, 4664, 7, 71, 2, 2, 4664, 4665, 7, 97, 2, 2, 4665, 4666, + 7, 67, 2, 2, 4666, 4667, 7, 70, 2, 2, 4667, 4668, 7, 70, 2, 2, 4668, 580, + 3, 2, 2, 2, 4669, 4670, 7, 70, 2, 2, 4670, 4671, 7, 67, 2, 2, 4671, 4672, + 7, 86, 2, 2, 4672, 4673, 7, 71, 2, 2, 4673, 4674, 7, 97, 2, 2, 4674, 4675, + 7, 85, 2, 2, 4675, 4676, 7, 87, 2, 2, 4676, 4677, 7, 68, 2, 2, 4677, 582, + 3, 2, 2, 2, 4678, 4679, 7, 71, 2, 2, 4679, 4680, 7, 90, 2, 2, 4680, 4681, + 7, 86, 2, 2, 4681, 4682, 7, 84, 2, 2, 4682, 4683, 7, 67, 2, 2, 4683, 4684, + 7, 69, 2, 2, 4684, 4685, 7, 86, 2, 2, 4685, 584, 3, 2, 2, 2, 4686, 4687, + 7, 78, 2, 2, 4687, 4688, 7, 81, 2, 2, 4688, 4689, 7, 69, 2, 2, 4689, 4690, + 7, 67, 2, 2, 4690, 4691, 7, 78, 2, 2, 4691, 4692, 7, 86, 2, 2, 4692, 4693, + 7, 75, 2, 2, 4693, 4694, 7, 79, 2, 2, 4694, 4695, 7, 71, 2, 2, 4695, 4696, + 7, 85, 2, 2, 4696, 4697, 7, 86, 2, 2, 4697, 4698, 7, 67, 2, 2, 4698, 4699, + 7, 79, 2, 2, 4699, 4700, 7, 82, 2, 2, 4700, 586, 3, 2, 2, 2, 4701, 4702, + 7, 80, 2, 2, 4702, 4703, 7, 81, 2, 2, 4703, 4704, 7, 89, 2, 2, 4704, 588, + 3, 2, 2, 2, 4705, 4706, 7, 82, 2, 2, 4706, 4707, 7, 81, 2, 2, 4707, 4708, + 7, 85, 2, 2, 4708, 4709, 7, 75, 2, 2, 4709, 4710, 7, 86, 2, 2, 4710, 4711, + 7, 75, 2, 2, 4711, 4712, 7, 81, 2, 2, 4712, 4713, 7, 80, 2, 2, 4713, 590, + 3, 2, 2, 2, 4714, 4715, 7, 85, 2, 2, 4715, 4716, 7, 87, 2, 2, 4716, 4717, + 7, 68, 2, 2, 4717, 4718, 7, 85, 2, 2, 4718, 4719, 7, 86, 2, 2, 4719, 4720, + 7, 84, 2, 2, 4720, 592, 3, 2, 2, 2, 4721, 4722, 7, 85, 2, 2, 4722, 4723, + 7, 87, 2, 2, 4723, 4724, 7, 68, 2, 2, 4724, 4725, 7, 85, 2, 2, 4725, 4726, + 7, 86, 2, 2, 4726, 4727, 7, 84, 2, 2, 4727, 4728, 7, 75, 2, 2, 4728, 4729, + 7, 80, 2, 2, 4729, 4730, 7, 73, 2, 2, 4730, 594, 3, 2, 2, 2, 4731, 4732, + 7, 85, 2, 2, 4732, 4733, 7, 91, 2, 2, 4733, 4734, 7, 85, 2, 2, 4734, 4735, + 7, 70, 2, 2, 4735, 4736, 7, 67, 2, 2, 4736, 4737, 7, 86, 2, 2, 4737, 4738, + 7, 71, 2, 2, 4738, 596, 3, 2, 2, 2, 4739, 4740, 7, 86, 2, 2, 4740, 4741, + 7, 84, 2, 2, 4741, 4742, 7, 75, 2, 2, 4742, 4743, 7, 79, 2, 2, 4743, 598, + 3, 2, 2, 2, 4744, 4745, 7, 87, 2, 2, 4745, 4746, 7, 86, 2, 2, 4746, 4747, + 7, 69, 2, 2, 4747, 4748, 7, 97, 2, 2, 4748, 4749, 7, 70, 2, 2, 4749, 4750, + 7, 67, 2, 2, 4750, 4751, 7, 86, 2, 2, 4751, 4752, 7, 71, 2, 2, 4752, 600, + 3, 2, 2, 2, 4753, 4754, 7, 87, 2, 2, 4754, 4755, 7, 86, 2, 2, 4755, 4756, + 7, 69, 2, 2, 4756, 4757, 7, 97, 2, 2, 4757, 4758, 7, 86, 2, 2, 4758, 4759, + 7, 75, 2, 2, 4759, 4760, 7, 79, 2, 2, 4760, 4761, 7, 71, 2, 2, 4761, 602, + 3, 2, 2, 2, 4762, 4763, 7, 87, 2, 2, 4763, 4764, 7, 86, 2, 2, 4764, 4765, + 7, 69, 2, 2, 4765, 4766, 7, 97, 2, 2, 4766, 4767, 7, 86, 2, 2, 4767, 4768, + 7, 75, 2, 2, 4768, 4769, 7, 79, 2, 2, 4769, 4770, 7, 71, 2, 2, 4770, 4771, + 7, 85, 2, 2, 4771, 4772, 7, 86, 2, 2, 4772, 4773, 7, 67, 2, 2, 4773, 4774, + 7, 79, 2, 2, 4774, 4775, 7, 82, 2, 2, 4775, 604, 3, 2, 2, 2, 4776, 4777, + 7, 67, 2, 2, 4777, 4778, 7, 69, 2, 2, 4778, 4779, 7, 69, 2, 2, 4779, 4780, + 7, 81, 2, 2, 4780, 4781, 7, 87, 2, 2, 4781, 4782, 7, 80, 2, 2, 4782, 4783, + 7, 86, 2, 2, 4783, 606, 3, 2, 2, 2, 4784, 4785, 7, 67, 2, 2, 4785, 4786, + 7, 69, 2, 2, 4786, 4787, 7, 86, 2, 2, 4787, 4788, 7, 75, 2, 2, 4788, 4789, + 7, 81, 2, 2, 4789, 4790, 7, 80, 2, 2, 4790, 608, 3, 2, 2, 2, 4791, 4792, + 7, 67, 2, 2, 4792, 4793, 7, 72, 2, 2, 4793, 4794, 7, 86, 2, 2, 4794, 4795, + 7, 71, 2, 2, 4795, 4796, 7, 84, 2, 2, 4796, 610, 3, 2, 2, 2, 4797, 4798, + 7, 67, 2, 2, 4798, 4799, 7, 73, 2, 2, 4799, 4800, 7, 73, 2, 2, 4800, 4801, + 7, 84, 2, 2, 4801, 4802, 7, 71, 2, 2, 4802, 4803, 7, 73, 2, 2, 4803, 4804, + 7, 67, 2, 2, 4804, 4805, 7, 86, 2, 2, 4805, 4806, 7, 71, 2, 2, 4806, 612, + 3, 2, 2, 2, 4807, 4808, 7, 67, 2, 2, 4808, 4809, 7, 78, 2, 2, 4809, 4810, + 7, 73, 2, 2, 4810, 4811, 7, 81, 2, 2, 4811, 4812, 7, 84, 2, 2, 4812, 4813, + 7, 75, 2, 2, 4813, 4814, 7, 86, 2, 2, 4814, 4815, 7, 74, 2, 2, 4815, 4816, + 7, 79, 2, 2, 4816, 614, 3, 2, 2, 2, 4817, 4818, 7, 67, 2, 2, 4818, 4819, + 7, 80, 2, 2, 4819, 4820, 7, 91, 2, 2, 4820, 616, 3, 2, 2, 2, 4821, 4822, + 7, 67, 2, 2, 4822, 4823, 7, 86, 2, 2, 4823, 618, 3, 2, 2, 2, 4824, 4825, + 7, 67, 2, 2, 4825, 4826, 7, 87, 2, 2, 4826, 4827, 7, 86, 2, 2, 4827, 4828, + 7, 74, 2, 2, 4828, 4829, 7, 81, 2, 2, 4829, 4830, 7, 84, 2, 2, 4830, 4831, + 7, 85, 2, 2, 4831, 620, 3, 2, 2, 2, 4832, 4833, 7, 67, 2, 2, 4833, 4834, + 7, 87, 2, 2, 4834, 4835, 7, 86, 2, 2, 4835, 4836, 7, 81, 2, 2, 4836, 4837, + 7, 69, 2, 2, 4837, 4838, 7, 81, 2, 2, 4838, 4839, 7, 79, 2, 2, 4839, 4840, + 7, 79, 2, 2, 4840, 4841, 7, 75, 2, 2, 4841, 4842, 7, 86, 2, 2, 4842, 622, + 3, 2, 2, 2, 4843, 4844, 7, 67, 2, 2, 4844, 4845, 7, 87, 2, 2, 4845, 4846, + 7, 86, 2, 2, 4846, 4847, 7, 81, 2, 2, 4847, 4848, 7, 71, 2, 2, 4848, 4849, + 7, 90, 2, 2, 4849, 4850, 7, 86, 2, 2, 4850, 4851, 7, 71, 2, 2, 4851, 4852, + 7, 80, 2, 2, 4852, 4853, 7, 70, 2, 2, 4853, 4854, 7, 97, 2, 2, 4854, 4855, + 7, 85, 2, 2, 4855, 4856, 7, 75, 2, 2, 4856, 4857, 7, 92, 2, 2, 4857, 4858, + 7, 71, 2, 2, 4858, 624, 3, 2, 2, 2, 4859, 4860, 7, 67, 2, 2, 4860, 4861, + 7, 87, 2, 2, 4861, 4862, 7, 86, 2, 2, 4862, 4863, 7, 81, 2, 2, 4863, 4864, + 7, 97, 2, 2, 4864, 4865, 7, 75, 2, 2, 4865, 4866, 7, 80, 2, 2, 4866, 4867, + 7, 69, 2, 2, 4867, 4868, 7, 84, 2, 2, 4868, 4869, 7, 71, 2, 2, 4869, 4870, + 7, 79, 2, 2, 4870, 4871, 7, 71, 2, 2, 4871, 4872, 7, 80, 2, 2, 4872, 4873, + 7, 86, 2, 2, 4873, 626, 3, 2, 2, 2, 4874, 4875, 7, 67, 2, 2, 4875, 4876, + 7, 88, 2, 2, 4876, 4877, 7, 73, 2, 2, 4877, 4878, 7, 97, 2, 2, 4878, 4879, + 7, 84, 2, 2, 4879, 4880, 7, 81, 2, 2, 4880, 4881, 7, 89, 2, 2, 4881, 4882, + 7, 97, 2, 2, 4882, 4883, 7, 78, 2, 2, 4883, 4884, 7, 71, 2, 2, 4884, 4885, + 7, 80, 2, 2, 4885, 4886, 7, 73, 2, 2, 4886, 4887, 7, 86, 2, 2, 4887, 4888, + 7, 74, 2, 2, 4888, 628, 3, 2, 2, 2, 4889, 4890, 7, 68, 2, 2, 4890, 4891, + 7, 71, 2, 2, 4891, 4892, 7, 73, 2, 2, 4892, 4893, 7, 75, 2, 2, 4893, 4894, + 7, 80, 2, 2, 4894, 630, 3, 2, 2, 2, 4895, 4896, 7, 68, 2, 2, 4896, 4897, + 7, 75, 2, 2, 4897, 4898, 7, 80, 2, 2, 4898, 4899, 7, 78, 2, 2, 4899, 4900, + 7, 81, 2, 2, 4900, 4901, 7, 73, 2, 2, 4901, 632, 3, 2, 2, 2, 4902, 4903, + 7, 68, 2, 2, 4903, 4904, 7, 75, 2, 2, 4904, 4905, 7, 86, 2, 2, 4905, 634, + 3, 2, 2, 2, 4906, 4907, 7, 68, 2, 2, 4907, 4908, 7, 78, 2, 2, 4908, 4909, + 7, 81, 2, 2, 4909, 4910, 7, 69, 2, 2, 4910, 4911, 7, 77, 2, 2, 4911, 636, + 3, 2, 2, 2, 4912, 4913, 7, 68, 2, 2, 4913, 4914, 7, 81, 2, 2, 4914, 4915, + 7, 81, 2, 2, 4915, 4916, 7, 78, 2, 2, 4916, 638, 3, 2, 2, 2, 4917, 4918, + 7, 68, 2, 2, 4918, 4919, 7, 81, 2, 2, 4919, 4920, 7, 81, 2, 2, 4920, 4921, + 7, 78, 2, 2, 4921, 4922, 7, 71, 2, 2, 4922, 4923, 7, 67, 2, 2, 4923, 4924, + 7, 80, 2, 2, 4924, 640, 3, 2, 2, 2, 4925, 4926, 7, 68, 2, 2, 4926, 4927, + 7, 86, 2, 2, 4927, 4928, 7, 84, 2, 2, 4928, 4929, 7, 71, 2, 2, 4929, 4930, + 7, 71, 2, 2, 4930, 642, 3, 2, 2, 2, 4931, 4932, 7, 69, 2, 2, 4932, 4933, + 7, 67, 2, 2, 4933, 4934, 7, 69, 2, 2, 4934, 4935, 7, 74, 2, 2, 4935, 4936, + 7, 71, 2, 2, 4936, 644, 3, 2, 2, 2, 4937, 4938, 7, 69, 2, 2, 4938, 4939, + 7, 67, 2, 2, 4939, 4940, 7, 85, 2, 2, 4940, 4941, 7, 69, 2, 2, 4941, 4942, + 7, 67, 2, 2, 4942, 4943, 7, 70, 2, 2, 4943, 4944, 7, 71, 2, 2, 4944, 4945, + 7, 70, 2, 2, 4945, 646, 3, 2, 2, 2, 4946, 4947, 7, 69, 2, 2, 4947, 4948, + 7, 74, 2, 2, 4948, 4949, 7, 67, 2, 2, 4949, 4950, 7, 75, 2, 2, 4950, 4951, + 7, 80, 2, 2, 4951, 648, 3, 2, 2, 2, 4952, 4953, 7, 69, 2, 2, 4953, 4954, + 7, 74, 2, 2, 4954, 4955, 7, 67, 2, 2, 4955, 4956, 7, 80, 2, 2, 4956, 4957, + 7, 73, 2, 2, 4957, 4958, 7, 71, 2, 2, 4958, 4959, 7, 70, 2, 2, 4959, 650, + 3, 2, 2, 2, 4960, 4961, 7, 69, 2, 2, 4961, 4962, 7, 74, 2, 2, 4962, 4963, + 7, 67, 2, 2, 4963, 4964, 7, 80, 2, 2, 4964, 4965, 7, 80, 2, 2, 4965, 4966, + 7, 71, 2, 2, 4966, 4967, 7, 78, 2, 2, 4967, 652, 3, 2, 2, 2, 4968, 4969, + 7, 69, 2, 2, 4969, 4970, 7, 74, 2, 2, 4970, 4971, 7, 71, 2, 2, 4971, 4972, + 7, 69, 2, 2, 4972, 4973, 7, 77, 2, 2, 4973, 4974, 7, 85, 2, 2, 4974, 4975, + 7, 87, 2, 2, 4975, 4976, 7, 79, 2, 2, 4976, 654, 3, 2, 2, 2, 4977, 4978, + 7, 82, 2, 2, 4978, 4979, 7, 67, 2, 2, 4979, 4980, 7, 73, 2, 2, 4980, 4981, + 7, 71, 2, 2, 4981, 4982, 7, 97, 2, 2, 4982, 4983, 7, 69, 2, 2, 4983, 4984, + 7, 74, 2, 2, 4984, 4985, 7, 71, 2, 2, 4985, 4986, 7, 69, 2, 2, 4986, 4987, + 7, 77, 2, 2, 4987, 4988, 7, 85, 2, 2, 4988, 4989, 7, 87, 2, 2, 4989, 4990, + 7, 79, 2, 2, 4990, 656, 3, 2, 2, 2, 4991, 4992, 7, 69, 2, 2, 4992, 4993, + 7, 75, 2, 2, 4993, 4994, 7, 82, 2, 2, 4994, 4995, 7, 74, 2, 2, 4995, 4996, + 7, 71, 2, 2, 4996, 4997, 7, 84, 2, 2, 4997, 658, 3, 2, 2, 2, 4998, 4999, + 7, 69, 2, 2, 4999, 5000, 7, 78, 2, 2, 5000, 5001, 7, 67, 2, 2, 5001, 5002, + 7, 85, 2, 2, 5002, 5003, 7, 85, 2, 2, 5003, 5004, 7, 97, 2, 2, 5004, 5005, + 7, 81, 2, 2, 5005, 5006, 7, 84, 2, 2, 5006, 5007, 7, 75, 2, 2, 5007, 5008, + 7, 73, 2, 2, 5008, 5009, 7, 75, 2, 2, 5009, 5010, 7, 80, 2, 2, 5010, 660, + 3, 2, 2, 2, 5011, 5012, 7, 69, 2, 2, 5012, 5013, 7, 78, 2, 2, 5013, 5014, + 7, 75, 2, 2, 5014, 5015, 7, 71, 2, 2, 5015, 5016, 7, 80, 2, 2, 5016, 5017, + 7, 86, 2, 2, 5017, 662, 3, 2, 2, 2, 5018, 5019, 7, 69, 2, 2, 5019, 5020, + 7, 78, 2, 2, 5020, 5021, 7, 81, 2, 2, 5021, 5022, 7, 85, 2, 2, 5022, 5023, + 7, 71, 2, 2, 5023, 664, 3, 2, 2, 2, 5024, 5025, 7, 69, 2, 2, 5025, 5026, + 7, 81, 2, 2, 5026, 5027, 7, 67, 2, 2, 5027, 5028, 7, 78, 2, 2, 5028, 5029, + 7, 71, 2, 2, 5029, 5030, 7, 85, 2, 2, 5030, 5031, 7, 69, 2, 2, 5031, 5032, + 7, 71, 2, 2, 5032, 666, 3, 2, 2, 2, 5033, 5034, 7, 69, 2, 2, 5034, 5035, + 7, 81, 2, 2, 5035, 5036, 7, 70, 2, 2, 5036, 5037, 7, 71, 2, 2, 5037, 668, + 3, 2, 2, 2, 5038, 5039, 7, 69, 2, 2, 5039, 5040, 7, 81, 2, 2, 5040, 5041, + 7, 78, 2, 2, 5041, 5042, 7, 87, 2, 2, 5042, 5043, 7, 79, 2, 2, 5043, 5044, + 7, 80, 2, 2, 5044, 5045, 7, 85, 2, 2, 5045, 670, 3, 2, 2, 2, 5046, 5047, + 7, 69, 2, 2, 5047, 5048, 7, 81, 2, 2, 5048, 5049, 7, 78, 2, 2, 5049, 5050, + 7, 87, 2, 2, 5050, 5051, 7, 79, 2, 2, 5051, 5052, 7, 80, 2, 2, 5052, 5053, + 7, 97, 2, 2, 5053, 5054, 7, 72, 2, 2, 5054, 5055, 7, 81, 2, 2, 5055, 5056, + 7, 84, 2, 2, 5056, 5057, 7, 79, 2, 2, 5057, 5058, 7, 67, 2, 2, 5058, 5059, + 7, 86, 2, 2, 5059, 672, 3, 2, 2, 2, 5060, 5061, 7, 69, 2, 2, 5061, 5062, + 7, 81, 2, 2, 5062, 5063, 7, 78, 2, 2, 5063, 5064, 7, 87, 2, 2, 5064, 5065, + 7, 79, 2, 2, 5065, 5066, 7, 80, 2, 2, 5066, 5067, 7, 97, 2, 2, 5067, 5068, + 7, 80, 2, 2, 5068, 5069, 7, 67, 2, 2, 5069, 5070, 7, 79, 2, 2, 5070, 5071, + 7, 71, 2, 2, 5071, 674, 3, 2, 2, 2, 5072, 5073, 7, 69, 2, 2, 5073, 5074, + 7, 81, 2, 2, 5074, 5075, 7, 79, 2, 2, 5075, 5076, 7, 79, 2, 2, 5076, 5077, + 7, 71, 2, 2, 5077, 5078, 7, 80, 2, 2, 5078, 5079, 7, 86, 2, 2, 5079, 676, + 3, 2, 2, 2, 5080, 5081, 7, 69, 2, 2, 5081, 5082, 7, 81, 2, 2, 5082, 5083, + 7, 79, 2, 2, 5083, 5084, 7, 79, 2, 2, 5084, 5085, 7, 75, 2, 2, 5085, 5086, + 7, 86, 2, 2, 5086, 678, 3, 2, 2, 2, 5087, 5088, 7, 69, 2, 2, 5088, 5089, + 7, 81, 2, 2, 5089, 5090, 7, 79, 2, 2, 5090, 5091, 7, 82, 2, 2, 5091, 5092, + 7, 67, 2, 2, 5092, 5093, 7, 69, 2, 2, 5093, 5094, 7, 86, 2, 2, 5094, 680, + 3, 2, 2, 2, 5095, 5096, 7, 69, 2, 2, 5096, 5097, 7, 81, 2, 2, 5097, 5098, + 7, 79, 2, 2, 5098, 5099, 7, 82, 2, 2, 5099, 5100, 7, 78, 2, 2, 5100, 5101, + 7, 71, 2, 2, 5101, 5102, 7, 86, 2, 2, 5102, 5103, 7, 75, 2, 2, 5103, 5104, + 7, 81, 2, 2, 5104, 5105, 7, 80, 2, 2, 5105, 682, 3, 2, 2, 2, 5106, 5107, + 7, 69, 2, 2, 5107, 5108, 7, 81, 2, 2, 5108, 5109, 7, 79, 2, 2, 5109, 5110, + 7, 82, 2, 2, 5110, 5111, 7, 84, 2, 2, 5111, 5112, 7, 71, 2, 2, 5112, 5113, + 7, 85, 2, 2, 5113, 5114, 7, 85, 2, 2, 5114, 5115, 7, 71, 2, 2, 5115, 5116, + 7, 70, 2, 2, 5116, 684, 3, 2, 2, 2, 5117, 5118, 7, 69, 2, 2, 5118, 5119, + 7, 81, 2, 2, 5119, 5120, 7, 79, 2, 2, 5120, 5121, 7, 82, 2, 2, 5121, 5122, + 7, 84, 2, 2, 5122, 5123, 7, 71, 2, 2, 5123, 5124, 7, 85, 2, 2, 5124, 5125, + 7, 85, 2, 2, 5125, 5126, 7, 75, 2, 2, 5126, 5127, 7, 81, 2, 2, 5127, 5128, + 7, 80, 2, 2, 5128, 686, 3, 2, 2, 2, 5129, 5130, 7, 69, 2, 2, 5130, 5131, + 7, 81, 2, 2, 5131, 5132, 7, 80, 2, 2, 5132, 5133, 7, 69, 2, 2, 5133, 5134, + 7, 87, 2, 2, 5134, 5135, 7, 84, 2, 2, 5135, 5136, 7, 84, 2, 2, 5136, 5137, + 7, 71, 2, 2, 5137, 5138, 7, 80, 2, 2, 5138, 5139, 7, 86, 2, 2, 5139, 688, + 3, 2, 2, 2, 5140, 5141, 7, 69, 2, 2, 5141, 5142, 7, 81, 2, 2, 5142, 5143, + 7, 80, 2, 2, 5143, 5144, 7, 80, 2, 2, 5144, 5145, 7, 71, 2, 2, 5145, 5146, + 7, 69, 2, 2, 5146, 5147, 7, 86, 2, 2, 5147, 5148, 7, 75, 2, 2, 5148, 5149, + 7, 81, 2, 2, 5149, 5150, 7, 80, 2, 2, 5150, 690, 3, 2, 2, 2, 5151, 5152, + 7, 69, 2, 2, 5152, 5153, 7, 81, 2, 2, 5153, 5154, 7, 80, 2, 2, 5154, 5155, + 7, 85, 2, 2, 5155, 5156, 7, 75, 2, 2, 5156, 5157, 7, 85, 2, 2, 5157, 5158, + 7, 86, 2, 2, 5158, 5159, 7, 71, 2, 2, 5159, 5160, 7, 80, 2, 2, 5160, 5161, + 7, 86, 2, 2, 5161, 692, 3, 2, 2, 2, 5162, 5163, 7, 69, 2, 2, 5163, 5164, + 7, 81, 2, 2, 5164, 5165, 7, 80, 2, 2, 5165, 5166, 7, 85, 2, 2, 5166, 5167, + 7, 86, 2, 2, 5167, 5168, 7, 84, 2, 2, 5168, 5169, 7, 67, 2, 2, 5169, 5170, + 7, 75, 2, 2, 5170, 5171, 7, 80, 2, 2, 5171, 5172, 7, 86, 2, 2, 5172, 5173, + 7, 97, 2, 2, 5173, 5174, 7, 69, 2, 2, 5174, 5175, 7, 67, 2, 2, 5175, 5176, + 7, 86, 2, 2, 5176, 5177, 7, 67, 2, 2, 5177, 5178, 7, 78, 2, 2, 5178, 5179, + 7, 81, 2, 2, 5179, 5180, 7, 73, 2, 2, 5180, 694, 3, 2, 2, 2, 5181, 5182, + 7, 69, 2, 2, 5182, 5183, 7, 81, 2, 2, 5183, 5184, 7, 80, 2, 2, 5184, 5185, + 7, 85, 2, 2, 5185, 5186, 7, 86, 2, 2, 5186, 5187, 7, 84, 2, 2, 5187, 5188, + 7, 67, 2, 2, 5188, 5189, 7, 75, 2, 2, 5189, 5190, 7, 80, 2, 2, 5190, 5191, + 7, 86, 2, 2, 5191, 5192, 7, 97, 2, 2, 5192, 5193, 7, 85, 2, 2, 5193, 5194, + 7, 69, 2, 2, 5194, 5195, 7, 74, 2, 2, 5195, 5196, 7, 71, 2, 2, 5196, 5197, + 7, 79, 2, 2, 5197, 5198, 7, 67, 2, 2, 5198, 696, 3, 2, 2, 2, 5199, 5200, + 7, 69, 2, 2, 5200, 5201, 7, 81, 2, 2, 5201, 5202, 7, 80, 2, 2, 5202, 5203, + 7, 85, 2, 2, 5203, 5204, 7, 86, 2, 2, 5204, 5205, 7, 84, 2, 2, 5205, 5206, + 7, 67, 2, 2, 5206, 5207, 7, 75, 2, 2, 5207, 5208, 7, 80, 2, 2, 5208, 5209, + 7, 86, 2, 2, 5209, 5210, 7, 97, 2, 2, 5210, 5211, 7, 80, 2, 2, 5211, 5212, + 7, 67, 2, 2, 5212, 5213, 7, 79, 2, 2, 5213, 5214, 7, 71, 2, 2, 5214, 698, + 3, 2, 2, 2, 5215, 5216, 7, 69, 2, 2, 5216, 5217, 7, 81, 2, 2, 5217, 5218, + 7, 80, 2, 2, 5218, 5219, 7, 86, 2, 2, 5219, 5220, 7, 67, 2, 2, 5220, 5221, + 7, 75, 2, 2, 5221, 5222, 7, 80, 2, 2, 5222, 5223, 7, 85, 2, 2, 5223, 700, + 3, 2, 2, 2, 5224, 5225, 7, 69, 2, 2, 5225, 5226, 7, 81, 2, 2, 5226, 5227, + 7, 80, 2, 2, 5227, 5228, 7, 86, 2, 2, 5228, 5229, 7, 71, 2, 2, 5229, 5230, + 7, 90, 2, 2, 5230, 5231, 7, 86, 2, 2, 5231, 702, 3, 2, 2, 2, 5232, 5233, + 7, 69, 2, 2, 5233, 5234, 7, 81, 2, 2, 5234, 5235, 7, 80, 2, 2, 5235, 5236, + 7, 86, 2, 2, 5236, 5237, 7, 84, 2, 2, 5237, 5238, 7, 75, 2, 2, 5238, 5239, + 7, 68, 2, 2, 5239, 5240, 7, 87, 2, 2, 5240, 5241, 7, 86, 2, 2, 5241, 5242, + 7, 81, 2, 2, 5242, 5243, 7, 84, 2, 2, 5243, 5244, 7, 85, 2, 2, 5244, 704, + 3, 2, 2, 2, 5245, 5246, 7, 69, 2, 2, 5246, 5247, 7, 81, 2, 2, 5247, 5248, + 7, 82, 2, 2, 5248, 5249, 7, 91, 2, 2, 5249, 706, 3, 2, 2, 2, 5250, 5251, + 7, 69, 2, 2, 5251, 5252, 7, 82, 2, 2, 5252, 5253, 7, 87, 2, 2, 5253, 708, + 3, 2, 2, 2, 5254, 5255, 7, 69, 2, 2, 5255, 5256, 7, 87, 2, 2, 5256, 5257, + 7, 84, 2, 2, 5257, 5258, 7, 85, 2, 2, 5258, 5259, 7, 81, 2, 2, 5259, 5260, + 7, 84, 2, 2, 5260, 5261, 7, 97, 2, 2, 5261, 5262, 7, 80, 2, 2, 5262, 5263, + 7, 67, 2, 2, 5263, 5264, 7, 79, 2, 2, 5264, 5265, 7, 71, 2, 2, 5265, 710, + 3, 2, 2, 2, 5266, 5267, 7, 70, 2, 2, 5267, 5268, 7, 67, 2, 2, 5268, 5269, + 7, 86, 2, 2, 5269, 5270, 7, 67, 2, 2, 5270, 712, 3, 2, 2, 2, 5271, 5272, + 7, 70, 2, 2, 5272, 5273, 7, 67, 2, 2, 5273, 5274, 7, 86, 2, 2, 5274, 5275, + 7, 67, 2, 2, 5275, 5276, 7, 72, 2, 2, 5276, 5277, 7, 75, 2, 2, 5277, 5278, + 7, 78, 2, 2, 5278, 5279, 7, 71, 2, 2, 5279, 714, 3, 2, 2, 2, 5280, 5281, + 7, 70, 2, 2, 5281, 5282, 7, 71, 2, 2, 5282, 5283, 7, 67, 2, 2, 5283, 5284, + 7, 78, 2, 2, 5284, 5285, 7, 78, 2, 2, 5285, 5286, 7, 81, 2, 2, 5286, 5287, + 7, 69, 2, 2, 5287, 5288, 7, 67, 2, 2, 5288, 5289, 7, 86, 2, 2, 5289, 5290, + 7, 71, 2, 2, 5290, 716, 3, 2, 2, 2, 5291, 5292, 7, 70, 2, 2, 5292, 5293, + 7, 71, 2, 2, 5293, 5294, 7, 72, 2, 2, 5294, 5295, 7, 67, 2, 2, 5295, 5296, + 7, 87, 2, 2, 5296, 5297, 7, 78, 2, 2, 5297, 5298, 7, 86, 2, 2, 5298, 5299, + 7, 97, 2, 2, 5299, 5300, 7, 67, 2, 2, 5300, 5301, 7, 87, 2, 2, 5301, 5302, + 7, 86, 2, 2, 5302, 5303, 7, 74, 2, 2, 5303, 718, 3, 2, 2, 2, 5304, 5305, + 7, 70, 2, 2, 5305, 5306, 7, 71, 2, 2, 5306, 5307, 7, 72, 2, 2, 5307, 5308, + 7, 75, 2, 2, 5308, 5309, 7, 80, 2, 2, 5309, 5310, 7, 71, 2, 2, 5310, 5311, + 7, 84, 2, 2, 5311, 720, 3, 2, 2, 2, 5312, 5313, 7, 70, 2, 2, 5313, 5314, + 7, 71, 2, 2, 5314, 5315, 7, 78, 2, 2, 5315, 5316, 7, 67, 2, 2, 5316, 5317, + 7, 91, 2, 2, 5317, 5318, 7, 97, 2, 2, 5318, 5319, 7, 77, 2, 2, 5319, 5320, + 7, 71, 2, 2, 5320, 5321, 7, 91, 2, 2, 5321, 5322, 7, 97, 2, 2, 5322, 5323, + 7, 89, 2, 2, 5323, 5324, 7, 84, 2, 2, 5324, 5325, 7, 75, 2, 2, 5325, 5326, + 7, 86, 2, 2, 5326, 5327, 7, 71, 2, 2, 5327, 722, 3, 2, 2, 2, 5328, 5329, + 7, 70, 2, 2, 5329, 5330, 7, 71, 2, 2, 5330, 5331, 7, 85, 2, 2, 5331, 5332, + 7, 97, 2, 2, 5332, 5333, 7, 77, 2, 2, 5333, 5334, 7, 71, 2, 2, 5334, 5335, + 7, 91, 2, 2, 5335, 5336, 7, 97, 2, 2, 5336, 5337, 7, 72, 2, 2, 5337, 5338, + 7, 75, 2, 2, 5338, 5339, 7, 78, 2, 2, 5339, 5340, 7, 71, 2, 2, 5340, 724, + 3, 2, 2, 2, 5341, 5342, 7, 70, 2, 2, 5342, 5343, 7, 75, 2, 2, 5343, 5344, + 7, 84, 2, 2, 5344, 5345, 7, 71, 2, 2, 5345, 5346, 7, 69, 2, 2, 5346, 5347, + 7, 86, 2, 2, 5347, 5348, 7, 81, 2, 2, 5348, 5349, 7, 84, 2, 2, 5349, 5350, + 7, 91, 2, 2, 5350, 726, 3, 2, 2, 2, 5351, 5352, 7, 70, 2, 2, 5352, 5353, + 7, 75, 2, 2, 5353, 5354, 7, 85, 2, 2, 5354, 5355, 7, 67, 2, 2, 5355, 5356, + 7, 68, 2, 2, 5356, 5357, 7, 78, 2, 2, 5357, 5358, 7, 71, 2, 2, 5358, 728, + 3, 2, 2, 2, 5359, 5360, 7, 70, 2, 2, 5360, 5361, 7, 75, 2, 2, 5361, 5362, + 7, 85, 2, 2, 5362, 5363, 7, 69, 2, 2, 5363, 5364, 7, 67, 2, 2, 5364, 5365, + 7, 84, 2, 2, 5365, 5366, 7, 70, 2, 2, 5366, 730, 3, 2, 2, 2, 5367, 5368, + 7, 70, 2, 2, 5368, 5369, 7, 75, 2, 2, 5369, 5370, 7, 85, 2, 2, 5370, 5371, + 7, 77, 2, 2, 5371, 732, 3, 2, 2, 2, 5372, 5373, 7, 70, 2, 2, 5373, 5374, + 7, 81, 2, 2, 5374, 734, 3, 2, 2, 2, 5375, 5376, 7, 70, 2, 2, 5376, 5377, + 7, 87, 2, 2, 5377, 5378, 7, 79, 2, 2, 5378, 5379, 7, 82, 2, 2, 5379, 5380, + 7, 72, 2, 2, 5380, 5381, 7, 75, 2, 2, 5381, 5382, 7, 78, 2, 2, 5382, 5383, + 7, 71, 2, 2, 5383, 736, 3, 2, 2, 2, 5384, 5385, 7, 70, 2, 2, 5385, 5386, + 7, 87, 2, 2, 5386, 5387, 7, 82, 2, 2, 5387, 5388, 7, 78, 2, 2, 5388, 5389, + 7, 75, 2, 2, 5389, 5390, 7, 69, 2, 2, 5390, 5391, 7, 67, 2, 2, 5391, 5392, + 7, 86, 2, 2, 5392, 5393, 7, 71, 2, 2, 5393, 738, 3, 2, 2, 2, 5394, 5395, + 7, 70, 2, 2, 5395, 5396, 7, 91, 2, 2, 5396, 5397, 7, 80, 2, 2, 5397, 5398, + 7, 67, 2, 2, 5398, 5399, 7, 79, 2, 2, 5399, 5400, 7, 75, 2, 2, 5400, 5401, + 7, 69, 2, 2, 5401, 740, 3, 2, 2, 2, 5402, 5403, 7, 71, 2, 2, 5403, 5404, + 7, 80, 2, 2, 5404, 5405, 7, 67, 2, 2, 5405, 5406, 7, 68, 2, 2, 5406, 5407, + 7, 78, 2, 2, 5407, 5408, 7, 71, 2, 2, 5408, 742, 3, 2, 2, 2, 5409, 5410, + 7, 71, 2, 2, 5410, 5411, 7, 80, 2, 2, 5411, 5412, 7, 69, 2, 2, 5412, 5413, + 7, 84, 2, 2, 5413, 5414, 7, 91, 2, 2, 5414, 5415, 7, 82, 2, 2, 5415, 5416, + 7, 86, 2, 2, 5416, 5417, 7, 75, 2, 2, 5417, 5418, 7, 81, 2, 2, 5418, 5419, + 7, 80, 2, 2, 5419, 744, 3, 2, 2, 2, 5420, 5421, 7, 71, 2, 2, 5421, 5422, + 7, 80, 2, 2, 5422, 5423, 7, 70, 2, 2, 5423, 746, 3, 2, 2, 2, 5424, 5425, + 7, 71, 2, 2, 5425, 5426, 7, 80, 2, 2, 5426, 5427, 7, 70, 2, 2, 5427, 5428, + 7, 85, 2, 2, 5428, 748, 3, 2, 2, 2, 5429, 5430, 7, 71, 2, 2, 5430, 5431, + 7, 80, 2, 2, 5431, 5432, 7, 73, 2, 2, 5432, 5433, 7, 75, 2, 2, 5433, 5434, + 7, 80, 2, 2, 5434, 5435, 7, 71, 2, 2, 5435, 750, 3, 2, 2, 2, 5436, 5437, + 7, 71, 2, 2, 5437, 5438, 7, 80, 2, 2, 5438, 5439, 7, 73, 2, 2, 5439, 5440, + 7, 75, 2, 2, 5440, 5441, 7, 80, 2, 2, 5441, 5442, 7, 71, 2, 2, 5442, 5443, + 7, 85, 2, 2, 5443, 752, 3, 2, 2, 2, 5444, 5445, 7, 71, 2, 2, 5445, 5446, + 7, 84, 2, 2, 5446, 5447, 7, 84, 2, 2, 5447, 5448, 7, 81, 2, 2, 5448, 5449, + 7, 84, 2, 2, 5449, 754, 3, 2, 2, 2, 5450, 5451, 7, 71, 2, 2, 5451, 5452, + 7, 84, 2, 2, 5452, 5453, 7, 84, 2, 2, 5453, 5454, 7, 81, 2, 2, 5454, 5455, + 7, 84, 2, 2, 5455, 5456, 7, 85, 2, 2, 5456, 756, 3, 2, 2, 2, 5457, 5458, + 7, 71, 2, 2, 5458, 5459, 7, 85, 2, 2, 5459, 5460, 7, 69, 2, 2, 5460, 5461, + 7, 67, 2, 2, 5461, 5462, 7, 82, 2, 2, 5462, 5463, 7, 71, 2, 2, 5463, 758, + 3, 2, 2, 2, 5464, 5465, 7, 71, 2, 2, 5465, 5466, 7, 88, 2, 2, 5466, 5467, + 7, 71, 2, 2, 5467, 5468, 7, 80, 2, 2, 5468, 760, 3, 2, 2, 2, 5469, 5470, + 7, 71, 2, 2, 5470, 5471, 7, 88, 2, 2, 5471, 5472, 7, 71, 2, 2, 5472, 5473, + 7, 80, 2, 2, 5473, 5474, 7, 86, 2, 2, 5474, 762, 3, 2, 2, 2, 5475, 5476, + 7, 71, 2, 2, 5476, 5477, 7, 88, 2, 2, 5477, 5478, 7, 71, 2, 2, 5478, 5479, + 7, 80, 2, 2, 5479, 5480, 7, 86, 2, 2, 5480, 5481, 7, 85, 2, 2, 5481, 764, + 3, 2, 2, 2, 5482, 5483, 7, 71, 2, 2, 5483, 5484, 7, 88, 2, 2, 5484, 5485, + 7, 71, 2, 2, 5485, 5486, 7, 84, 2, 2, 5486, 5487, 7, 91, 2, 2, 5487, 766, + 3, 2, 2, 2, 5488, 5489, 7, 71, 2, 2, 5489, 5490, 7, 90, 2, 2, 5490, 5491, + 7, 69, 2, 2, 5491, 5492, 7, 74, 2, 2, 5492, 5493, 7, 67, 2, 2, 5493, 5494, + 7, 80, 2, 2, 5494, 5495, 7, 73, 2, 2, 5495, 5496, 7, 71, 2, 2, 5496, 768, + 3, 2, 2, 2, 5497, 5498, 7, 71, 2, 2, 5498, 5499, 7, 90, 2, 2, 5499, 5500, + 7, 69, 2, 2, 5500, 5501, 7, 78, 2, 2, 5501, 5502, 7, 87, 2, 2, 5502, 5503, + 7, 85, 2, 2, 5503, 5504, 7, 75, 2, 2, 5504, 5505, 7, 88, 2, 2, 5505, 5506, + 7, 71, 2, 2, 5506, 770, 3, 2, 2, 2, 5507, 5508, 7, 71, 2, 2, 5508, 5509, + 7, 90, 2, 2, 5509, 5510, 7, 82, 2, 2, 5510, 5511, 7, 75, 2, 2, 5511, 5512, + 7, 84, 2, 2, 5512, 5513, 7, 71, 2, 2, 5513, 772, 3, 2, 2, 2, 5514, 5515, + 7, 71, 2, 2, 5515, 5516, 7, 90, 2, 2, 5516, 5517, 7, 82, 2, 2, 5517, 5518, + 7, 81, 2, 2, 5518, 5519, 7, 84, 2, 2, 5519, 5520, 7, 86, 2, 2, 5520, 774, + 3, 2, 2, 2, 5521, 5522, 7, 71, 2, 2, 5522, 5523, 7, 90, 2, 2, 5523, 5524, + 7, 86, 2, 2, 5524, 5525, 7, 71, 2, 2, 5525, 5526, 7, 80, 2, 2, 5526, 5527, + 7, 70, 2, 2, 5527, 5528, 7, 71, 2, 2, 5528, 5529, 7, 70, 2, 2, 5529, 776, + 3, 2, 2, 2, 5530, 5531, 7, 71, 2, 2, 5531, 5532, 7, 90, 2, 2, 5532, 5533, + 7, 86, 2, 2, 5533, 5534, 7, 71, 2, 2, 5534, 5535, 7, 80, 2, 2, 5535, 5536, + 7, 86, 2, 2, 5536, 5537, 7, 97, 2, 2, 5537, 5538, 7, 85, 2, 2, 5538, 5539, + 7, 75, 2, 2, 5539, 5540, 7, 92, 2, 2, 5540, 5541, 7, 71, 2, 2, 5541, 778, + 3, 2, 2, 2, 5542, 5543, 7, 72, 2, 2, 5543, 5544, 7, 67, 2, 2, 5544, 5545, + 7, 85, 2, 2, 5545, 5546, 7, 86, 2, 2, 5546, 780, 3, 2, 2, 2, 5547, 5548, + 7, 72, 2, 2, 5548, 5549, 7, 67, 2, 2, 5549, 5550, 7, 87, 2, 2, 5550, 5551, + 7, 78, 2, 2, 5551, 5552, 7, 86, 2, 2, 5552, 5553, 7, 85, 2, 2, 5553, 782, + 3, 2, 2, 2, 5554, 5555, 7, 72, 2, 2, 5555, 5556, 7, 75, 2, 2, 5556, 5557, + 7, 71, 2, 2, 5557, 5558, 7, 78, 2, 2, 5558, 5559, 7, 70, 2, 2, 5559, 5560, + 7, 85, 2, 2, 5560, 784, 3, 2, 2, 2, 5561, 5562, 7, 72, 2, 2, 5562, 5563, + 7, 75, 2, 2, 5563, 5564, 7, 78, 2, 2, 5564, 5565, 7, 71, 2, 2, 5565, 5566, + 7, 97, 2, 2, 5566, 5567, 7, 68, 2, 2, 5567, 5568, 7, 78, 2, 2, 5568, 5569, + 7, 81, 2, 2, 5569, 5570, 7, 69, 2, 2, 5570, 5571, 7, 77, 2, 2, 5571, 5572, + 7, 97, 2, 2, 5572, 5573, 7, 85, 2, 2, 5573, 5574, 7, 75, 2, 2, 5574, 5575, + 7, 92, 2, 2, 5575, 5576, 7, 71, 2, 2, 5576, 786, 3, 2, 2, 2, 5577, 5578, + 7, 72, 2, 2, 5578, 5579, 7, 75, 2, 2, 5579, 5580, 7, 78, 2, 2, 5580, 5581, + 7, 86, 2, 2, 5581, 5582, 7, 71, 2, 2, 5582, 5583, 7, 84, 2, 2, 5583, 788, + 3, 2, 2, 2, 5584, 5585, 7, 72, 2, 2, 5585, 5586, 7, 75, 2, 2, 5586, 5587, + 7, 84, 2, 2, 5587, 5588, 7, 85, 2, 2, 5588, 5589, 7, 86, 2, 2, 5589, 790, + 3, 2, 2, 2, 5590, 5591, 7, 72, 2, 2, 5591, 5592, 7, 75, 2, 2, 5592, 5593, + 7, 90, 2, 2, 5593, 5594, 7, 71, 2, 2, 5594, 5595, 7, 70, 2, 2, 5595, 792, + 3, 2, 2, 2, 5596, 5597, 7, 72, 2, 2, 5597, 5598, 7, 78, 2, 2, 5598, 5599, + 7, 87, 2, 2, 5599, 5600, 7, 85, 2, 2, 5600, 5601, 7, 74, 2, 2, 5601, 794, + 3, 2, 2, 2, 5602, 5603, 7, 72, 2, 2, 5603, 5604, 7, 81, 2, 2, 5604, 5605, + 7, 78, 2, 2, 5605, 5606, 7, 78, 2, 2, 5606, 5607, 7, 81, 2, 2, 5607, 5608, + 7, 89, 2, 2, 5608, 5609, 7, 85, 2, 2, 5609, 796, 3, 2, 2, 2, 5610, 5611, + 7, 72, 2, 2, 5611, 5612, 7, 81, 2, 2, 5612, 5613, 7, 87, 2, 2, 5613, 5614, + 7, 80, 2, 2, 5614, 5615, 7, 70, 2, 2, 5615, 798, 3, 2, 2, 2, 5616, 5617, + 7, 72, 2, 2, 5617, 5618, 7, 87, 2, 2, 5618, 5619, 7, 78, 2, 2, 5619, 5620, + 7, 78, 2, 2, 5620, 800, 3, 2, 2, 2, 5621, 5622, 7, 72, 2, 2, 5622, 5623, + 7, 87, 2, 2, 5623, 5624, 7, 80, 2, 2, 5624, 5625, 7, 69, 2, 2, 5625, 5626, + 7, 86, 2, 2, 5626, 5627, 7, 75, 2, 2, 5627, 5628, 7, 81, 2, 2, 5628, 5629, + 7, 80, 2, 2, 5629, 802, 3, 2, 2, 2, 5630, 5631, 7, 73, 2, 2, 5631, 5632, + 7, 71, 2, 2, 5632, 5633, 7, 80, 2, 2, 5633, 5634, 7, 71, 2, 2, 5634, 5635, + 7, 84, 2, 2, 5635, 5636, 7, 67, 2, 2, 5636, 5637, 7, 78, 2, 2, 5637, 804, + 3, 2, 2, 2, 5638, 5639, 7, 73, 2, 2, 5639, 5640, 7, 78, 2, 2, 5640, 5641, + 7, 81, 2, 2, 5641, 5642, 7, 68, 2, 2, 5642, 5643, 7, 67, 2, 2, 5643, 5644, + 7, 78, 2, 2, 5644, 806, 3, 2, 2, 2, 5645, 5646, 7, 73, 2, 2, 5646, 5647, + 7, 84, 2, 2, 5647, 5648, 7, 67, 2, 2, 5648, 5649, 7, 80, 2, 2, 5649, 5650, + 7, 86, 2, 2, 5650, 5651, 7, 85, 2, 2, 5651, 808, 3, 2, 2, 2, 5652, 5653, + 7, 73, 2, 2, 5653, 5654, 7, 84, 2, 2, 5654, 5655, 7, 81, 2, 2, 5655, 5656, + 7, 87, 2, 2, 5656, 5657, 7, 82, 2, 2, 5657, 5658, 7, 97, 2, 2, 5658, 5659, + 7, 84, 2, 2, 5659, 5660, 7, 71, 2, 2, 5660, 5661, 7, 82, 2, 2, 5661, 5662, + 7, 78, 2, 2, 5662, 5663, 7, 75, 2, 2, 5663, 5664, 7, 69, 2, 2, 5664, 5665, + 7, 67, 2, 2, 5665, 5666, 7, 86, 2, 2, 5666, 5667, 7, 75, 2, 2, 5667, 5668, + 7, 81, 2, 2, 5668, 5669, 7, 80, 2, 2, 5669, 810, 3, 2, 2, 2, 5670, 5671, + 7, 74, 2, 2, 5671, 5672, 7, 67, 2, 2, 5672, 5673, 7, 80, 2, 2, 5673, 5674, + 7, 70, 2, 2, 5674, 5675, 7, 78, 2, 2, 5675, 5676, 7, 71, 2, 2, 5676, 5677, + 7, 84, 2, 2, 5677, 812, 3, 2, 2, 2, 5678, 5679, 7, 74, 2, 2, 5679, 5680, + 7, 67, 2, 2, 5680, 5681, 7, 85, 2, 2, 5681, 5682, 7, 74, 2, 2, 5682, 814, + 3, 2, 2, 2, 5683, 5684, 7, 74, 2, 2, 5684, 5685, 7, 71, 2, 2, 5685, 5686, + 7, 78, 2, 2, 5686, 5687, 7, 82, 2, 2, 5687, 816, 3, 2, 2, 2, 5688, 5689, + 7, 74, 2, 2, 5689, 5690, 7, 81, 2, 2, 5690, 5691, 7, 85, 2, 2, 5691, 5692, + 7, 86, 2, 2, 5692, 818, 3, 2, 2, 2, 5693, 5694, 7, 74, 2, 2, 5694, 5695, + 7, 81, 2, 2, 5695, 5696, 7, 85, 2, 2, 5696, 5697, 7, 86, 2, 2, 5697, 5698, + 7, 85, 2, 2, 5698, 820, 3, 2, 2, 2, 5699, 5700, 7, 75, 2, 2, 5700, 5701, + 7, 70, 2, 2, 5701, 5702, 7, 71, 2, 2, 5702, 5703, 7, 80, 2, 2, 5703, 5704, + 7, 86, 2, 2, 5704, 5705, 7, 75, 2, 2, 5705, 5706, 7, 72, 2, 2, 5706, 5707, + 7, 75, 2, 2, 5707, 5708, 7, 71, 2, 2, 5708, 5709, 7, 70, 2, 2, 5709, 822, + 3, 2, 2, 2, 5710, 5711, 7, 75, 2, 2, 5711, 5712, 7, 73, 2, 2, 5712, 5713, + 7, 80, 2, 2, 5713, 5714, 7, 81, 2, 2, 5714, 5715, 7, 84, 2, 2, 5715, 5716, + 7, 71, 2, 2, 5716, 5717, 7, 97, 2, 2, 5717, 5718, 7, 85, 2, 2, 5718, 5719, + 7, 71, 2, 2, 5719, 5720, 7, 84, 2, 2, 5720, 5721, 7, 88, 2, 2, 5721, 5722, + 7, 71, 2, 2, 5722, 5723, 7, 84, 2, 2, 5723, 5724, 7, 97, 2, 2, 5724, 5725, + 7, 75, 2, 2, 5725, 5726, 7, 70, 2, 2, 5726, 5727, 7, 85, 2, 2, 5727, 824, + 3, 2, 2, 2, 5728, 5729, 7, 75, 2, 2, 5729, 5730, 7, 79, 2, 2, 5730, 5731, + 7, 82, 2, 2, 5731, 5732, 7, 81, 2, 2, 5732, 5733, 7, 84, 2, 2, 5733, 5734, + 7, 86, 2, 2, 5734, 826, 3, 2, 2, 2, 5735, 5736, 7, 75, 2, 2, 5736, 5737, + 7, 80, 2, 2, 5737, 5738, 7, 70, 2, 2, 5738, 5739, 7, 71, 2, 2, 5739, 5740, + 7, 90, 2, 2, 5740, 5741, 7, 71, 2, 2, 5741, 5742, 7, 85, 2, 2, 5742, 828, + 3, 2, 2, 2, 5743, 5744, 7, 75, 2, 2, 5744, 5745, 7, 80, 2, 2, 5745, 5746, + 7, 75, 2, 2, 5746, 5747, 7, 86, 2, 2, 5747, 5748, 7, 75, 2, 2, 5748, 5749, + 7, 67, 2, 2, 5749, 5750, 7, 78, 2, 2, 5750, 5751, 7, 97, 2, 2, 5751, 5752, + 7, 85, 2, 2, 5752, 5753, 7, 75, 2, 2, 5753, 5754, 7, 92, 2, 2, 5754, 5755, + 7, 71, 2, 2, 5755, 830, 3, 2, 2, 2, 5756, 5757, 7, 75, 2, 2, 5757, 5758, + 7, 80, 2, 2, 5758, 5759, 7, 82, 2, 2, 5759, 5760, 7, 78, 2, 2, 5760, 5761, + 7, 67, 2, 2, 5761, 5762, 7, 69, 2, 2, 5762, 5763, 7, 71, 2, 2, 5763, 832, + 3, 2, 2, 2, 5764, 5765, 7, 75, 2, 2, 5765, 5766, 7, 80, 2, 2, 5766, 5767, + 7, 85, 2, 2, 5767, 5768, 7, 71, 2, 2, 5768, 5769, 7, 84, 2, 2, 5769, 5770, + 7, 86, 2, 2, 5770, 5771, 7, 97, 2, 2, 5771, 5772, 7, 79, 2, 2, 5772, 5773, + 7, 71, 2, 2, 5773, 5774, 7, 86, 2, 2, 5774, 5775, 7, 74, 2, 2, 5775, 5776, + 7, 81, 2, 2, 5776, 5777, 7, 70, 2, 2, 5777, 834, 3, 2, 2, 2, 5778, 5779, + 7, 75, 2, 2, 5779, 5780, 7, 80, 2, 2, 5780, 5781, 7, 85, 2, 2, 5781, 5782, + 7, 86, 2, 2, 5782, 5783, 7, 67, 2, 2, 5783, 5784, 7, 78, 2, 2, 5784, 5785, + 7, 78, 2, 2, 5785, 836, 3, 2, 2, 2, 5786, 5787, 7, 75, 2, 2, 5787, 5788, + 7, 80, 2, 2, 5788, 5789, 7, 85, 2, 2, 5789, 5790, 7, 86, 2, 2, 5790, 5791, + 7, 67, 2, 2, 5791, 5792, 7, 80, 2, 2, 5792, 5793, 7, 69, 2, 2, 5793, 5794, + 7, 71, 2, 2, 5794, 838, 3, 2, 2, 2, 5795, 5796, 7, 75, 2, 2, 5796, 5797, + 7, 80, 2, 2, 5797, 5798, 7, 88, 2, 2, 5798, 5799, 7, 75, 2, 2, 5799, 5800, + 7, 85, 2, 2, 5800, 5801, 7, 75, 2, 2, 5801, 5802, 7, 68, 2, 2, 5802, 5803, + 7, 78, 2, 2, 5803, 5804, 7, 71, 2, 2, 5804, 840, 3, 2, 2, 2, 5805, 5806, + 7, 75, 2, 2, 5806, 5807, 7, 80, 2, 2, 5807, 5808, 7, 88, 2, 2, 5808, 5809, + 7, 81, 2, 2, 5809, 5810, 7, 77, 2, 2, 5810, 5811, 7, 71, 2, 2, 5811, 5812, + 7, 84, 2, 2, 5812, 842, 3, 2, 2, 2, 5813, 5814, 7, 75, 2, 2, 5814, 5815, + 7, 81, 2, 2, 5815, 844, 3, 2, 2, 2, 5816, 5817, 7, 75, 2, 2, 5817, 5818, + 7, 81, 2, 2, 5818, 5819, 7, 97, 2, 2, 5819, 5820, 7, 86, 2, 2, 5820, 5821, + 7, 74, 2, 2, 5821, 5822, 7, 84, 2, 2, 5822, 5823, 7, 71, 2, 2, 5823, 5824, + 7, 67, 2, 2, 5824, 5825, 7, 70, 2, 2, 5825, 846, 3, 2, 2, 2, 5826, 5827, + 7, 75, 2, 2, 5827, 5828, 7, 82, 2, 2, 5828, 5829, 7, 69, 2, 2, 5829, 848, + 3, 2, 2, 2, 5830, 5831, 7, 75, 2, 2, 5831, 5832, 7, 85, 2, 2, 5832, 5833, + 7, 81, 2, 2, 5833, 5834, 7, 78, 2, 2, 5834, 5835, 7, 67, 2, 2, 5835, 5836, + 7, 86, 2, 2, 5836, 5837, 7, 75, 2, 2, 5837, 5838, 7, 81, 2, 2, 5838, 5839, + 7, 80, 2, 2, 5839, 850, 3, 2, 2, 2, 5840, 5841, 7, 75, 2, 2, 5841, 5842, + 7, 85, 2, 2, 5842, 5843, 7, 85, 2, 2, 5843, 5844, 7, 87, 2, 2, 5844, 5845, + 7, 71, 2, 2, 5845, 5846, 7, 84, 2, 2, 5846, 852, 3, 2, 2, 2, 5847, 5848, + 7, 76, 2, 2, 5848, 5849, 7, 85, 2, 2, 5849, 5850, 7, 81, 2, 2, 5850, 5851, + 7, 80, 2, 2, 5851, 854, 3, 2, 2, 2, 5852, 5853, 7, 77, 2, 2, 5853, 5854, + 7, 71, 2, 2, 5854, 5855, 7, 91, 2, 2, 5855, 5856, 7, 97, 2, 2, 5856, 5857, + 7, 68, 2, 2, 5857, 5858, 7, 78, 2, 2, 5858, 5859, 7, 81, 2, 2, 5859, 5860, + 7, 69, 2, 2, 5860, 5861, 7, 77, 2, 2, 5861, 5862, 7, 97, 2, 2, 5862, 5863, + 7, 85, 2, 2, 5863, 5864, 7, 75, 2, 2, 5864, 5865, 7, 92, 2, 2, 5865, 5866, + 7, 71, 2, 2, 5866, 856, 3, 2, 2, 2, 5867, 5868, 7, 78, 2, 2, 5868, 5869, + 7, 67, 2, 2, 5869, 5870, 7, 80, 2, 2, 5870, 5871, 7, 73, 2, 2, 5871, 5872, + 7, 87, 2, 2, 5872, 5873, 7, 67, 2, 2, 5873, 5874, 7, 73, 2, 2, 5874, 5875, + 7, 71, 2, 2, 5875, 858, 3, 2, 2, 2, 5876, 5877, 7, 78, 2, 2, 5877, 5878, + 7, 67, 2, 2, 5878, 5879, 7, 85, 2, 2, 5879, 5880, 7, 86, 2, 2, 5880, 860, + 3, 2, 2, 2, 5881, 5882, 7, 78, 2, 2, 5882, 5883, 7, 71, 2, 2, 5883, 5884, + 7, 67, 2, 2, 5884, 5885, 7, 88, 2, 2, 5885, 5886, 7, 71, 2, 2, 5886, 5887, + 7, 85, 2, 2, 5887, 862, 3, 2, 2, 2, 5888, 5889, 7, 78, 2, 2, 5889, 5890, + 7, 71, 2, 2, 5890, 5891, 7, 85, 2, 2, 5891, 5892, 7, 85, 2, 2, 5892, 864, + 3, 2, 2, 2, 5893, 5894, 7, 78, 2, 2, 5894, 5895, 7, 71, 2, 2, 5895, 5896, + 7, 88, 2, 2, 5896, 5897, 7, 71, 2, 2, 5897, 5898, 7, 78, 2, 2, 5898, 866, + 3, 2, 2, 2, 5899, 5900, 7, 78, 2, 2, 5900, 5901, 7, 75, 2, 2, 5901, 5902, + 7, 85, 2, 2, 5902, 5903, 7, 86, 2, 2, 5903, 868, 3, 2, 2, 2, 5904, 5905, + 7, 78, 2, 2, 5905, 5906, 7, 81, 2, 2, 5906, 5907, 7, 69, 2, 2, 5907, 5908, + 7, 67, 2, 2, 5908, 5909, 7, 78, 2, 2, 5909, 870, 3, 2, 2, 2, 5910, 5911, + 7, 78, 2, 2, 5911, 5912, 7, 81, 2, 2, 5912, 5913, 7, 73, 2, 2, 5913, 5914, + 7, 72, 2, 2, 5914, 5915, 7, 75, 2, 2, 5915, 5916, 7, 78, 2, 2, 5916, 5917, + 7, 71, 2, 2, 5917, 872, 3, 2, 2, 2, 5918, 5919, 7, 78, 2, 2, 5919, 5920, + 7, 81, 2, 2, 5920, 5921, 7, 73, 2, 2, 5921, 5922, 7, 85, 2, 2, 5922, 874, + 3, 2, 2, 2, 5923, 5924, 7, 79, 2, 2, 5924, 5925, 7, 67, 2, 2, 5925, 5926, + 7, 85, 2, 2, 5926, 5927, 7, 86, 2, 2, 5927, 5928, 7, 71, 2, 2, 5928, 5929, + 7, 84, 2, 2, 5929, 876, 3, 2, 2, 2, 5930, 5931, 7, 79, 2, 2, 5931, 5932, + 7, 67, 2, 2, 5932, 5933, 7, 85, 2, 2, 5933, 5934, 7, 86, 2, 2, 5934, 5935, + 7, 71, 2, 2, 5935, 5936, 7, 84, 2, 2, 5936, 5937, 7, 97, 2, 2, 5937, 5938, + 7, 67, 2, 2, 5938, 5939, 7, 87, 2, 2, 5939, 5940, 7, 86, 2, 2, 5940, 5941, + 7, 81, 2, 2, 5941, 5942, 7, 97, 2, 2, 5942, 5943, 7, 82, 2, 2, 5943, 5944, + 7, 81, 2, 2, 5944, 5945, 7, 85, 2, 2, 5945, 5946, 7, 75, 2, 2, 5946, 5947, + 7, 86, 2, 2, 5947, 5948, 7, 75, 2, 2, 5948, 5949, 7, 81, 2, 2, 5949, 5950, + 7, 80, 2, 2, 5950, 878, 3, 2, 2, 2, 5951, 5952, 7, 79, 2, 2, 5952, 5953, + 7, 67, 2, 2, 5953, 5954, 7, 85, 2, 2, 5954, 5955, 7, 86, 2, 2, 5955, 5956, + 7, 71, 2, 2, 5956, 5957, 7, 84, 2, 2, 5957, 5958, 7, 97, 2, 2, 5958, 5959, + 7, 69, 2, 2, 5959, 5960, 7, 81, 2, 2, 5960, 5961, 7, 80, 2, 2, 5961, 5962, + 7, 80, 2, 2, 5962, 5963, 7, 71, 2, 2, 5963, 5964, 7, 69, 2, 2, 5964, 5965, + 7, 86, 2, 2, 5965, 5966, 7, 97, 2, 2, 5966, 5967, 7, 84, 2, 2, 5967, 5968, + 7, 71, 2, 2, 5968, 5969, 7, 86, 2, 2, 5969, 5970, 7, 84, 2, 2, 5970, 5971, + 7, 91, 2, 2, 5971, 880, 3, 2, 2, 2, 5972, 5973, 7, 79, 2, 2, 5973, 5974, + 7, 67, 2, 2, 5974, 5975, 7, 85, 2, 2, 5975, 5976, 7, 86, 2, 2, 5976, 5977, + 7, 71, 2, 2, 5977, 5978, 7, 84, 2, 2, 5978, 5979, 7, 97, 2, 2, 5979, 5980, + 7, 70, 2, 2, 5980, 5981, 7, 71, 2, 2, 5981, 5982, 7, 78, 2, 2, 5982, 5983, + 7, 67, 2, 2, 5983, 5984, 7, 91, 2, 2, 5984, 882, 3, 2, 2, 2, 5985, 5986, + 7, 79, 2, 2, 5986, 5987, 7, 67, 2, 2, 5987, 5988, 7, 85, 2, 2, 5988, 5989, + 7, 86, 2, 2, 5989, 5990, 7, 71, 2, 2, 5990, 5991, 7, 84, 2, 2, 5991, 5992, + 7, 97, 2, 2, 5992, 5993, 7, 74, 2, 2, 5993, 5994, 7, 71, 2, 2, 5994, 5995, + 7, 67, 2, 2, 5995, 5996, 7, 84, 2, 2, 5996, 5997, 7, 86, 2, 2, 5997, 5998, + 7, 68, 2, 2, 5998, 5999, 7, 71, 2, 2, 5999, 6000, 7, 67, 2, 2, 6000, 6001, + 7, 86, 2, 2, 6001, 6002, 7, 97, 2, 2, 6002, 6003, 7, 82, 2, 2, 6003, 6004, + 7, 71, 2, 2, 6004, 6005, 7, 84, 2, 2, 6005, 6006, 7, 75, 2, 2, 6006, 6007, + 7, 81, 2, 2, 6007, 6008, 7, 70, 2, 2, 6008, 884, 3, 2, 2, 2, 6009, 6010, + 7, 79, 2, 2, 6010, 6011, 7, 67, 2, 2, 6011, 6012, 7, 85, 2, 2, 6012, 6013, + 7, 86, 2, 2, 6013, 6014, 7, 71, 2, 2, 6014, 6015, 7, 84, 2, 2, 6015, 6016, + 7, 97, 2, 2, 6016, 6017, 7, 74, 2, 2, 6017, 6018, 7, 81, 2, 2, 6018, 6019, + 7, 85, 2, 2, 6019, 6020, 7, 86, 2, 2, 6020, 886, 3, 2, 2, 2, 6021, 6022, + 7, 79, 2, 2, 6022, 6023, 7, 67, 2, 2, 6023, 6024, 7, 85, 2, 2, 6024, 6025, + 7, 86, 2, 2, 6025, 6026, 7, 71, 2, 2, 6026, 6027, 7, 84, 2, 2, 6027, 6028, + 7, 97, 2, 2, 6028, 6029, 7, 78, 2, 2, 6029, 6030, 7, 81, 2, 2, 6030, 6031, + 7, 73, 2, 2, 6031, 6032, 7, 97, 2, 2, 6032, 6033, 7, 72, 2, 2, 6033, 6034, + 7, 75, 2, 2, 6034, 6035, 7, 78, 2, 2, 6035, 6036, 7, 71, 2, 2, 6036, 888, + 3, 2, 2, 2, 6037, 6038, 7, 79, 2, 2, 6038, 6039, 7, 67, 2, 2, 6039, 6040, + 7, 85, 2, 2, 6040, 6041, 7, 86, 2, 2, 6041, 6042, 7, 71, 2, 2, 6042, 6043, + 7, 84, 2, 2, 6043, 6044, 7, 97, 2, 2, 6044, 6045, 7, 78, 2, 2, 6045, 6046, + 7, 81, 2, 2, 6046, 6047, 7, 73, 2, 2, 6047, 6048, 7, 97, 2, 2, 6048, 6049, + 7, 82, 2, 2, 6049, 6050, 7, 81, 2, 2, 6050, 6051, 7, 85, 2, 2, 6051, 890, + 3, 2, 2, 2, 6052, 6053, 7, 79, 2, 2, 6053, 6054, 7, 67, 2, 2, 6054, 6055, + 7, 85, 2, 2, 6055, 6056, 7, 86, 2, 2, 6056, 6057, 7, 71, 2, 2, 6057, 6058, + 7, 84, 2, 2, 6058, 6059, 7, 97, 2, 2, 6059, 6060, 7, 82, 2, 2, 6060, 6061, + 7, 67, 2, 2, 6061, 6062, 7, 85, 2, 2, 6062, 6063, 7, 85, 2, 2, 6063, 6064, + 7, 89, 2, 2, 6064, 6065, 7, 81, 2, 2, 6065, 6066, 7, 84, 2, 2, 6066, 6067, + 7, 70, 2, 2, 6067, 892, 3, 2, 2, 2, 6068, 6069, 7, 79, 2, 2, 6069, 6070, + 7, 67, 2, 2, 6070, 6071, 7, 85, 2, 2, 6071, 6072, 7, 86, 2, 2, 6072, 6073, + 7, 71, 2, 2, 6073, 6074, 7, 84, 2, 2, 6074, 6075, 7, 97, 2, 2, 6075, 6076, + 7, 82, 2, 2, 6076, 6077, 7, 81, 2, 2, 6077, 6078, 7, 84, 2, 2, 6078, 6079, + 7, 86, 2, 2, 6079, 894, 3, 2, 2, 2, 6080, 6081, 7, 79, 2, 2, 6081, 6082, + 7, 67, 2, 2, 6082, 6083, 7, 85, 2, 2, 6083, 6084, 7, 86, 2, 2, 6084, 6085, + 7, 71, 2, 2, 6085, 6086, 7, 84, 2, 2, 6086, 6087, 7, 97, 2, 2, 6087, 6088, + 7, 84, 2, 2, 6088, 6089, 7, 71, 2, 2, 6089, 6090, 7, 86, 2, 2, 6090, 6091, + 7, 84, 2, 2, 6091, 6092, 7, 91, 2, 2, 6092, 6093, 7, 97, 2, 2, 6093, 6094, + 7, 69, 2, 2, 6094, 6095, 7, 81, 2, 2, 6095, 6096, 7, 87, 2, 2, 6096, 6097, + 7, 80, 2, 2, 6097, 6098, 7, 86, 2, 2, 6098, 896, 3, 2, 2, 2, 6099, 6100, + 7, 79, 2, 2, 6100, 6101, 7, 67, 2, 2, 6101, 6102, 7, 85, 2, 2, 6102, 6103, + 7, 86, 2, 2, 6103, 6104, 7, 71, 2, 2, 6104, 6105, 7, 84, 2, 2, 6105, 6106, + 7, 97, 2, 2, 6106, 6107, 7, 85, 2, 2, 6107, 6108, 7, 85, 2, 2, 6108, 6109, + 7, 78, 2, 2, 6109, 898, 3, 2, 2, 2, 6110, 6111, 7, 79, 2, 2, 6111, 6112, + 7, 67, 2, 2, 6112, 6113, 7, 85, 2, 2, 6113, 6114, 7, 86, 2, 2, 6114, 6115, + 7, 71, 2, 2, 6115, 6116, 7, 84, 2, 2, 6116, 6117, 7, 97, 2, 2, 6117, 6118, + 7, 85, 2, 2, 6118, 6119, 7, 85, 2, 2, 6119, 6120, 7, 78, 2, 2, 6120, 6121, + 7, 97, 2, 2, 6121, 6122, 7, 69, 2, 2, 6122, 6123, 7, 67, 2, 2, 6123, 900, + 3, 2, 2, 2, 6124, 6125, 7, 79, 2, 2, 6125, 6126, 7, 67, 2, 2, 6126, 6127, + 7, 85, 2, 2, 6127, 6128, 7, 86, 2, 2, 6128, 6129, 7, 71, 2, 2, 6129, 6130, + 7, 84, 2, 2, 6130, 6131, 7, 97, 2, 2, 6131, 6132, 7, 85, 2, 2, 6132, 6133, + 7, 85, 2, 2, 6133, 6134, 7, 78, 2, 2, 6134, 6135, 7, 97, 2, 2, 6135, 6136, + 7, 69, 2, 2, 6136, 6137, 7, 67, 2, 2, 6137, 6138, 7, 82, 2, 2, 6138, 6139, + 7, 67, 2, 2, 6139, 6140, 7, 86, 2, 2, 6140, 6141, 7, 74, 2, 2, 6141, 902, + 3, 2, 2, 2, 6142, 6143, 7, 79, 2, 2, 6143, 6144, 7, 67, 2, 2, 6144, 6145, + 7, 85, 2, 2, 6145, 6146, 7, 86, 2, 2, 6146, 6147, 7, 71, 2, 2, 6147, 6148, + 7, 84, 2, 2, 6148, 6149, 7, 97, 2, 2, 6149, 6150, 7, 85, 2, 2, 6150, 6151, + 7, 85, 2, 2, 6151, 6152, 7, 78, 2, 2, 6152, 6153, 7, 97, 2, 2, 6153, 6154, + 7, 69, 2, 2, 6154, 6155, 7, 71, 2, 2, 6155, 6156, 7, 84, 2, 2, 6156, 6157, + 7, 86, 2, 2, 6157, 904, 3, 2, 2, 2, 6158, 6159, 7, 79, 2, 2, 6159, 6160, + 7, 67, 2, 2, 6160, 6161, 7, 85, 2, 2, 6161, 6162, 7, 86, 2, 2, 6162, 6163, + 7, 71, 2, 2, 6163, 6164, 7, 84, 2, 2, 6164, 6165, 7, 97, 2, 2, 6165, 6166, + 7, 85, 2, 2, 6166, 6167, 7, 85, 2, 2, 6167, 6168, 7, 78, 2, 2, 6168, 6169, + 7, 97, 2, 2, 6169, 6170, 7, 69, 2, 2, 6170, 6171, 7, 75, 2, 2, 6171, 6172, + 7, 82, 2, 2, 6172, 6173, 7, 74, 2, 2, 6173, 6174, 7, 71, 2, 2, 6174, 6175, + 7, 84, 2, 2, 6175, 906, 3, 2, 2, 2, 6176, 6177, 7, 79, 2, 2, 6177, 6178, + 7, 67, 2, 2, 6178, 6179, 7, 85, 2, 2, 6179, 6180, 7, 86, 2, 2, 6180, 6181, + 7, 71, 2, 2, 6181, 6182, 7, 84, 2, 2, 6182, 6183, 7, 97, 2, 2, 6183, 6184, + 7, 85, 2, 2, 6184, 6185, 7, 85, 2, 2, 6185, 6186, 7, 78, 2, 2, 6186, 6187, + 7, 97, 2, 2, 6187, 6188, 7, 69, 2, 2, 6188, 6189, 7, 84, 2, 2, 6189, 6190, + 7, 78, 2, 2, 6190, 908, 3, 2, 2, 2, 6191, 6192, 7, 79, 2, 2, 6192, 6193, + 7, 67, 2, 2, 6193, 6194, 7, 85, 2, 2, 6194, 6195, 7, 86, 2, 2, 6195, 6196, + 7, 71, 2, 2, 6196, 6197, 7, 84, 2, 2, 6197, 6198, 7, 97, 2, 2, 6198, 6199, + 7, 85, 2, 2, 6199, 6200, 7, 85, 2, 2, 6200, 6201, 7, 78, 2, 2, 6201, 6202, + 7, 97, 2, 2, 6202, 6203, 7, 69, 2, 2, 6203, 6204, 7, 84, 2, 2, 6204, 6205, + 7, 78, 2, 2, 6205, 6206, 7, 82, 2, 2, 6206, 6207, 7, 67, 2, 2, 6207, 6208, + 7, 86, 2, 2, 6208, 6209, 7, 74, 2, 2, 6209, 910, 3, 2, 2, 2, 6210, 6211, + 7, 79, 2, 2, 6211, 6212, 7, 67, 2, 2, 6212, 6213, 7, 85, 2, 2, 6213, 6214, + 7, 86, 2, 2, 6214, 6215, 7, 71, 2, 2, 6215, 6216, 7, 84, 2, 2, 6216, 6217, + 7, 97, 2, 2, 6217, 6218, 7, 85, 2, 2, 6218, 6219, 7, 85, 2, 2, 6219, 6220, + 7, 78, 2, 2, 6220, 6221, 7, 97, 2, 2, 6221, 6222, 7, 77, 2, 2, 6222, 6223, + 7, 71, 2, 2, 6223, 6224, 7, 91, 2, 2, 6224, 912, 3, 2, 2, 2, 6225, 6226, + 7, 79, 2, 2, 6226, 6227, 7, 67, 2, 2, 6227, 6228, 7, 85, 2, 2, 6228, 6229, + 7, 86, 2, 2, 6229, 6230, 7, 71, 2, 2, 6230, 6231, 7, 84, 2, 2, 6231, 6232, + 7, 97, 2, 2, 6232, 6233, 7, 86, 2, 2, 6233, 6234, 7, 78, 2, 2, 6234, 6235, + 7, 85, 2, 2, 6235, 6236, 7, 97, 2, 2, 6236, 6237, 7, 88, 2, 2, 6237, 6238, + 7, 71, 2, 2, 6238, 6239, 7, 84, 2, 2, 6239, 6240, 7, 85, 2, 2, 6240, 6241, + 7, 75, 2, 2, 6241, 6242, 7, 81, 2, 2, 6242, 6243, 7, 80, 2, 2, 6243, 914, + 3, 2, 2, 2, 6244, 6245, 7, 79, 2, 2, 6245, 6246, 7, 67, 2, 2, 6246, 6247, + 7, 85, 2, 2, 6247, 6248, 7, 86, 2, 2, 6248, 6249, 7, 71, 2, 2, 6249, 6250, + 7, 84, 2, 2, 6250, 6251, 7, 97, 2, 2, 6251, 6252, 7, 87, 2, 2, 6252, 6253, + 7, 85, 2, 2, 6253, 6254, 7, 71, 2, 2, 6254, 6255, 7, 84, 2, 2, 6255, 916, + 3, 2, 2, 2, 6256, 6257, 7, 79, 2, 2, 6257, 6258, 7, 67, 2, 2, 6258, 6259, + 7, 90, 2, 2, 6259, 6260, 7, 97, 2, 2, 6260, 6261, 7, 69, 2, 2, 6261, 6262, + 7, 81, 2, 2, 6262, 6263, 7, 80, 2, 2, 6263, 6264, 7, 80, 2, 2, 6264, 6265, + 7, 71, 2, 2, 6265, 6266, 7, 69, 2, 2, 6266, 6267, 7, 86, 2, 2, 6267, 6268, + 7, 75, 2, 2, 6268, 6269, 7, 81, 2, 2, 6269, 6270, 7, 80, 2, 2, 6270, 6271, + 7, 85, 2, 2, 6271, 6272, 7, 97, 2, 2, 6272, 6273, 7, 82, 2, 2, 6273, 6274, + 7, 71, 2, 2, 6274, 6275, 7, 84, 2, 2, 6275, 6276, 7, 97, 2, 2, 6276, 6277, + 7, 74, 2, 2, 6277, 6278, 7, 81, 2, 2, 6278, 6279, 7, 87, 2, 2, 6279, 6280, + 7, 84, 2, 2, 6280, 918, 3, 2, 2, 2, 6281, 6282, 7, 79, 2, 2, 6282, 6283, + 7, 67, 2, 2, 6283, 6284, 7, 90, 2, 2, 6284, 6285, 7, 97, 2, 2, 6285, 6286, + 7, 83, 2, 2, 6286, 6287, 7, 87, 2, 2, 6287, 6288, 7, 71, 2, 2, 6288, 6289, + 7, 84, 2, 2, 6289, 6290, 7, 75, 2, 2, 6290, 6291, 7, 71, 2, 2, 6291, 6292, + 7, 85, 2, 2, 6292, 6293, 7, 97, 2, 2, 6293, 6294, 7, 82, 2, 2, 6294, 6295, + 7, 71, 2, 2, 6295, 6296, 7, 84, 2, 2, 6296, 6297, 7, 97, 2, 2, 6297, 6298, + 7, 74, 2, 2, 6298, 6299, 7, 81, 2, 2, 6299, 6300, 7, 87, 2, 2, 6300, 6301, + 7, 84, 2, 2, 6301, 920, 3, 2, 2, 2, 6302, 6303, 7, 79, 2, 2, 6303, 6304, + 7, 67, 2, 2, 6304, 6305, 7, 90, 2, 2, 6305, 6306, 7, 97, 2, 2, 6306, 6307, + 7, 84, 2, 2, 6307, 6308, 7, 81, 2, 2, 6308, 6309, 7, 89, 2, 2, 6309, 6310, + 7, 85, 2, 2, 6310, 922, 3, 2, 2, 2, 6311, 6312, 7, 79, 2, 2, 6312, 6313, + 7, 67, 2, 2, 6313, 6314, 7, 90, 2, 2, 6314, 6315, 7, 97, 2, 2, 6315, 6316, + 7, 85, 2, 2, 6316, 6317, 7, 75, 2, 2, 6317, 6318, 7, 92, 2, 2, 6318, 6319, + 7, 71, 2, 2, 6319, 924, 3, 2, 2, 2, 6320, 6321, 7, 79, 2, 2, 6321, 6322, + 7, 67, 2, 2, 6322, 6323, 7, 90, 2, 2, 6323, 6324, 7, 97, 2, 2, 6324, 6325, + 7, 87, 2, 2, 6325, 6326, 7, 82, 2, 2, 6326, 6327, 7, 70, 2, 2, 6327, 6328, + 7, 67, 2, 2, 6328, 6329, 7, 86, 2, 2, 6329, 6330, 7, 71, 2, 2, 6330, 6331, + 7, 85, 2, 2, 6331, 6332, 7, 97, 2, 2, 6332, 6333, 7, 82, 2, 2, 6333, 6334, + 7, 71, 2, 2, 6334, 6335, 7, 84, 2, 2, 6335, 6336, 7, 97, 2, 2, 6336, 6337, + 7, 74, 2, 2, 6337, 6338, 7, 81, 2, 2, 6338, 6339, 7, 87, 2, 2, 6339, 6340, + 7, 84, 2, 2, 6340, 926, 3, 2, 2, 2, 6341, 6342, 7, 79, 2, 2, 6342, 6343, + 7, 67, 2, 2, 6343, 6344, 7, 90, 2, 2, 6344, 6345, 7, 97, 2, 2, 6345, 6346, + 7, 87, 2, 2, 6346, 6347, 7, 85, 2, 2, 6347, 6348, 7, 71, 2, 2, 6348, 6349, + 7, 84, 2, 2, 6349, 6350, 7, 97, 2, 2, 6350, 6351, 7, 69, 2, 2, 6351, 6352, + 7, 81, 2, 2, 6352, 6353, 7, 80, 2, 2, 6353, 6354, 7, 80, 2, 2, 6354, 6355, + 7, 71, 2, 2, 6355, 6356, 7, 69, 2, 2, 6356, 6357, 7, 86, 2, 2, 6357, 6358, + 7, 75, 2, 2, 6358, 6359, 7, 81, 2, 2, 6359, 6360, 7, 80, 2, 2, 6360, 6361, + 7, 85, 2, 2, 6361, 928, 3, 2, 2, 2, 6362, 6363, 7, 79, 2, 2, 6363, 6364, + 7, 71, 2, 2, 6364, 6365, 7, 70, 2, 2, 6365, 6366, 7, 75, 2, 2, 6366, 6367, + 7, 87, 2, 2, 6367, 6368, 7, 79, 2, 2, 6368, 930, 3, 2, 2, 2, 6369, 6370, + 7, 79, 2, 2, 6370, 6371, 7, 71, 2, 2, 6371, 6372, 7, 79, 2, 2, 6372, 6373, + 7, 68, 2, 2, 6373, 6374, 7, 71, 2, 2, 6374, 6375, 7, 84, 2, 2, 6375, 932, + 3, 2, 2, 2, 6376, 6377, 7, 79, 2, 2, 6377, 6378, 7, 71, 2, 2, 6378, 6379, + 7, 84, 2, 2, 6379, 6380, 7, 73, 2, 2, 6380, 6381, 7, 71, 2, 2, 6381, 934, + 3, 2, 2, 2, 6382, 6383, 7, 79, 2, 2, 6383, 6384, 7, 71, 2, 2, 6384, 6385, + 7, 85, 2, 2, 6385, 6386, 7, 85, 2, 2, 6386, 6387, 7, 67, 2, 2, 6387, 6388, + 7, 73, 2, 2, 6388, 6389, 7, 71, 2, 2, 6389, 6390, 7, 97, 2, 2, 6390, 6391, + 7, 86, 2, 2, 6391, 6392, 7, 71, 2, 2, 6392, 6393, 7, 90, 2, 2, 6393, 6394, + 7, 86, 2, 2, 6394, 936, 3, 2, 2, 2, 6395, 6396, 7, 79, 2, 2, 6396, 6397, + 7, 75, 2, 2, 6397, 6398, 7, 70, 2, 2, 6398, 938, 3, 2, 2, 2, 6399, 6400, + 7, 79, 2, 2, 6400, 6401, 7, 75, 2, 2, 6401, 6402, 7, 73, 2, 2, 6402, 6403, + 7, 84, 2, 2, 6403, 6404, 7, 67, 2, 2, 6404, 6405, 7, 86, 2, 2, 6405, 6406, + 7, 71, 2, 2, 6406, 940, 3, 2, 2, 2, 6407, 6408, 7, 79, 2, 2, 6408, 6409, + 7, 75, 2, 2, 6409, 6410, 7, 80, 2, 2, 6410, 6411, 7, 97, 2, 2, 6411, 6412, + 7, 84, 2, 2, 6412, 6413, 7, 81, 2, 2, 6413, 6414, 7, 89, 2, 2, 6414, 6415, + 7, 85, 2, 2, 6415, 942, 3, 2, 2, 2, 6416, 6417, 7, 79, 2, 2, 6417, 6418, + 7, 81, 2, 2, 6418, 6419, 7, 70, 2, 2, 6419, 6420, 7, 71, 2, 2, 6420, 944, + 3, 2, 2, 2, 6421, 6422, 7, 79, 2, 2, 6422, 6423, 7, 81, 2, 2, 6423, 6424, + 7, 70, 2, 2, 6424, 6425, 7, 75, 2, 2, 6425, 6426, 7, 72, 2, 2, 6426, 6427, + 7, 91, 2, 2, 6427, 946, 3, 2, 2, 2, 6428, 6429, 7, 79, 2, 2, 6429, 6430, + 7, 87, 2, 2, 6430, 6431, 7, 86, 2, 2, 6431, 6432, 7, 71, 2, 2, 6432, 6433, + 7, 90, 2, 2, 6433, 948, 3, 2, 2, 2, 6434, 6435, 7, 79, 2, 2, 6435, 6436, + 7, 91, 2, 2, 6436, 6437, 7, 85, 2, 2, 6437, 6438, 7, 83, 2, 2, 6438, 6439, + 7, 78, 2, 2, 6439, 950, 3, 2, 2, 2, 6440, 6441, 7, 79, 2, 2, 6441, 6442, + 7, 91, 2, 2, 6442, 6443, 7, 85, 2, 2, 6443, 6444, 7, 83, 2, 2, 6444, 6445, + 7, 78, 2, 2, 6445, 6446, 7, 97, 2, 2, 6446, 6447, 7, 71, 2, 2, 6447, 6448, + 7, 84, 2, 2, 6448, 6449, 7, 84, 2, 2, 6449, 6450, 7, 80, 2, 2, 6450, 6451, + 7, 81, 2, 2, 6451, 952, 3, 2, 2, 2, 6452, 6453, 7, 80, 2, 2, 6453, 6454, + 7, 67, 2, 2, 6454, 6455, 7, 79, 2, 2, 6455, 6456, 7, 71, 2, 2, 6456, 954, + 3, 2, 2, 2, 6457, 6458, 7, 80, 2, 2, 6458, 6459, 7, 67, 2, 2, 6459, 6460, + 7, 79, 2, 2, 6460, 6461, 7, 71, 2, 2, 6461, 6462, 7, 85, 2, 2, 6462, 956, + 3, 2, 2, 2, 6463, 6464, 7, 80, 2, 2, 6464, 6465, 7, 69, 2, 2, 6465, 6466, + 7, 74, 2, 2, 6466, 6467, 7, 67, 2, 2, 6467, 6468, 7, 84, 2, 2, 6468, 958, + 3, 2, 2, 2, 6469, 6470, 7, 80, 2, 2, 6470, 6471, 7, 71, 2, 2, 6471, 6472, + 7, 88, 2, 2, 6472, 6473, 7, 71, 2, 2, 6473, 6474, 7, 84, 2, 2, 6474, 960, + 3, 2, 2, 2, 6475, 6476, 7, 80, 2, 2, 6476, 6477, 7, 71, 2, 2, 6477, 6478, + 7, 90, 2, 2, 6478, 6479, 7, 86, 2, 2, 6479, 962, 3, 2, 2, 2, 6480, 6481, + 7, 80, 2, 2, 6481, 6482, 7, 81, 2, 2, 6482, 964, 3, 2, 2, 2, 6483, 6484, + 7, 80, 2, 2, 6484, 6485, 7, 81, 2, 2, 6485, 6486, 7, 70, 2, 2, 6486, 6487, + 7, 71, 2, 2, 6487, 6488, 7, 73, 2, 2, 6488, 6489, 7, 84, 2, 2, 6489, 6490, + 7, 81, 2, 2, 6490, 6491, 7, 87, 2, 2, 6491, 6492, 7, 82, 2, 2, 6492, 966, + 3, 2, 2, 2, 6493, 6494, 7, 80, 2, 2, 6494, 6495, 7, 81, 2, 2, 6495, 6496, + 7, 80, 2, 2, 6496, 6497, 7, 71, 2, 2, 6497, 968, 3, 2, 2, 2, 6498, 6499, + 7, 81, 2, 2, 6499, 6500, 7, 72, 2, 2, 6500, 6501, 7, 72, 2, 2, 6501, 6502, + 7, 78, 2, 2, 6502, 6503, 7, 75, 2, 2, 6503, 6504, 7, 80, 2, 2, 6504, 6505, + 7, 71, 2, 2, 6505, 970, 3, 2, 2, 2, 6506, 6507, 7, 81, 2, 2, 6507, 6508, + 7, 72, 2, 2, 6508, 6509, 7, 72, 2, 2, 6509, 6510, 7, 85, 2, 2, 6510, 6511, + 7, 71, 2, 2, 6511, 6512, 7, 86, 2, 2, 6512, 972, 3, 2, 2, 2, 6513, 6514, + 7, 81, 2, 2, 6514, 6515, 7, 72, 2, 2, 6515, 974, 3, 2, 2, 2, 6516, 6517, + 7, 81, 2, 2, 6517, 6518, 7, 76, 2, 2, 6518, 976, 3, 2, 2, 2, 6519, 6520, + 7, 81, 2, 2, 6520, 6521, 7, 78, 2, 2, 6521, 6522, 7, 70, 2, 2, 6522, 6523, + 7, 97, 2, 2, 6523, 6524, 7, 82, 2, 2, 6524, 6525, 7, 67, 2, 2, 6525, 6526, + 7, 85, 2, 2, 6526, 6527, 7, 85, 2, 2, 6527, 6528, 7, 89, 2, 2, 6528, 6529, + 7, 81, 2, 2, 6529, 6530, 7, 84, 2, 2, 6530, 6531, 7, 70, 2, 2, 6531, 978, + 3, 2, 2, 2, 6532, 6533, 7, 81, 2, 2, 6533, 6534, 7, 80, 2, 2, 6534, 6535, + 7, 71, 2, 2, 6535, 980, 3, 2, 2, 2, 6536, 6537, 7, 81, 2, 2, 6537, 6538, + 7, 80, 2, 2, 6538, 6539, 7, 78, 2, 2, 6539, 6540, 7, 75, 2, 2, 6540, 6541, + 7, 80, 2, 2, 6541, 6542, 7, 71, 2, 2, 6542, 982, 3, 2, 2, 2, 6543, 6544, + 7, 81, 2, 2, 6544, 6545, 7, 80, 2, 2, 6545, 6546, 7, 78, 2, 2, 6546, 6547, + 7, 91, 2, 2, 6547, 984, 3, 2, 2, 2, 6548, 6549, 7, 81, 2, 2, 6549, 6550, + 7, 82, 2, 2, 6550, 6551, 7, 71, 2, 2, 6551, 6552, 7, 80, 2, 2, 6552, 986, + 3, 2, 2, 2, 6553, 6554, 7, 81, 2, 2, 6554, 6555, 7, 82, 2, 2, 6555, 6556, + 7, 86, 2, 2, 6556, 6557, 7, 75, 2, 2, 6557, 6558, 7, 79, 2, 2, 6558, 6559, + 7, 75, 2, 2, 6559, 6560, 7, 92, 2, 2, 6560, 6561, 7, 71, 2, 2, 6561, 6562, + 7, 84, 2, 2, 6562, 6563, 7, 97, 2, 2, 6563, 6564, 7, 69, 2, 2, 6564, 6565, + 7, 81, 2, 2, 6565, 6566, 7, 85, 2, 2, 6566, 6567, 7, 86, 2, 2, 6567, 6568, + 7, 85, 2, 2, 6568, 988, 3, 2, 2, 2, 6569, 6570, 7, 81, 2, 2, 6570, 6571, + 7, 82, 2, 2, 6571, 6572, 7, 86, 2, 2, 6572, 6573, 7, 75, 2, 2, 6573, 6574, + 7, 81, 2, 2, 6574, 6575, 7, 80, 2, 2, 6575, 6576, 7, 85, 2, 2, 6576, 990, + 3, 2, 2, 2, 6577, 6578, 7, 81, 2, 2, 6578, 6579, 7, 89, 2, 2, 6579, 6580, + 7, 80, 2, 2, 6580, 6581, 7, 71, 2, 2, 6581, 6582, 7, 84, 2, 2, 6582, 992, + 3, 2, 2, 2, 6583, 6584, 7, 82, 2, 2, 6584, 6585, 7, 67, 2, 2, 6585, 6586, + 7, 69, 2, 2, 6586, 6587, 7, 77, 2, 2, 6587, 6588, 7, 97, 2, 2, 6588, 6589, + 7, 77, 2, 2, 6589, 6590, 7, 71, 2, 2, 6590, 6591, 7, 91, 2, 2, 6591, 6592, + 7, 85, 2, 2, 6592, 994, 3, 2, 2, 2, 6593, 6594, 7, 82, 2, 2, 6594, 6595, + 7, 67, 2, 2, 6595, 6596, 7, 73, 2, 2, 6596, 6597, 7, 71, 2, 2, 6597, 996, + 3, 2, 2, 2, 6598, 6599, 7, 82, 2, 2, 6599, 6600, 7, 67, 2, 2, 6600, 6601, + 7, 84, 2, 2, 6601, 6602, 7, 85, 2, 2, 6602, 6603, 7, 71, 2, 2, 6603, 6604, + 7, 84, 2, 2, 6604, 998, 3, 2, 2, 2, 6605, 6606, 7, 82, 2, 2, 6606, 6607, + 7, 67, 2, 2, 6607, 6608, 7, 84, 2, 2, 6608, 6609, 7, 86, 2, 2, 6609, 6610, + 7, 75, 2, 2, 6610, 6611, 7, 67, 2, 2, 6611, 6612, 7, 78, 2, 2, 6612, 1000, + 3, 2, 2, 2, 6613, 6614, 7, 82, 2, 2, 6614, 6615, 7, 67, 2, 2, 6615, 6616, + 7, 84, 2, 2, 6616, 6617, 7, 86, 2, 2, 6617, 6618, 7, 75, 2, 2, 6618, 6619, + 7, 86, 2, 2, 6619, 6620, 7, 75, 2, 2, 6620, 6621, 7, 81, 2, 2, 6621, 6622, + 7, 80, 2, 2, 6622, 6623, 7, 75, 2, 2, 6623, 6624, 7, 80, 2, 2, 6624, 6625, + 7, 73, 2, 2, 6625, 1002, 3, 2, 2, 2, 6626, 6627, 7, 82, 2, 2, 6627, 6628, + 7, 67, 2, 2, 6628, 6629, 7, 84, 2, 2, 6629, 6630, 7, 86, 2, 2, 6630, 6631, + 7, 75, 2, 2, 6631, 6632, 7, 86, 2, 2, 6632, 6633, 7, 75, 2, 2, 6633, 6634, + 7, 81, 2, 2, 6634, 6635, 7, 80, 2, 2, 6635, 6636, 7, 85, 2, 2, 6636, 1004, + 3, 2, 2, 2, 6637, 6638, 7, 82, 2, 2, 6638, 6639, 7, 67, 2, 2, 6639, 6640, + 7, 85, 2, 2, 6640, 6641, 7, 85, 2, 2, 6641, 6642, 7, 89, 2, 2, 6642, 6643, + 7, 81, 2, 2, 6643, 6644, 7, 84, 2, 2, 6644, 6645, 7, 70, 2, 2, 6645, 1006, + 3, 2, 2, 2, 6646, 6647, 7, 82, 2, 2, 6647, 6648, 7, 74, 2, 2, 6648, 6649, + 7, 67, 2, 2, 6649, 6650, 7, 85, 2, 2, 6650, 6651, 7, 71, 2, 2, 6651, 1008, + 3, 2, 2, 2, 6652, 6653, 7, 82, 2, 2, 6653, 6654, 7, 78, 2, 2, 6654, 6655, + 7, 87, 2, 2, 6655, 6656, 7, 73, 2, 2, 6656, 6657, 7, 75, 2, 2, 6657, 6658, + 7, 80, 2, 2, 6658, 1010, 3, 2, 2, 2, 6659, 6660, 7, 82, 2, 2, 6660, 6661, + 7, 78, 2, 2, 6661, 6662, 7, 87, 2, 2, 6662, 6663, 7, 73, 2, 2, 6663, 6664, + 7, 75, 2, 2, 6664, 6665, 7, 80, 2, 2, 6665, 6666, 7, 97, 2, 2, 6666, 6667, + 7, 70, 2, 2, 6667, 6668, 7, 75, 2, 2, 6668, 6669, 7, 84, 2, 2, 6669, 1012, + 3, 2, 2, 2, 6670, 6671, 7, 82, 2, 2, 6671, 6672, 7, 78, 2, 2, 6672, 6673, + 7, 87, 2, 2, 6673, 6674, 7, 73, 2, 2, 6674, 6675, 7, 75, 2, 2, 6675, 6676, + 7, 80, 2, 2, 6676, 6677, 7, 85, 2, 2, 6677, 1014, 3, 2, 2, 2, 6678, 6679, + 7, 82, 2, 2, 6679, 6680, 7, 81, 2, 2, 6680, 6681, 7, 84, 2, 2, 6681, 6682, + 7, 86, 2, 2, 6682, 1016, 3, 2, 2, 2, 6683, 6684, 7, 82, 2, 2, 6684, 6685, + 7, 84, 2, 2, 6685, 6686, 7, 71, 2, 2, 6686, 6687, 7, 69, 2, 2, 6687, 6688, + 7, 71, 2, 2, 6688, 6689, 7, 70, 2, 2, 6689, 6690, 7, 71, 2, 2, 6690, 6691, + 7, 85, 2, 2, 6691, 1018, 3, 2, 2, 2, 6692, 6693, 7, 82, 2, 2, 6693, 6694, + 7, 84, 2, 2, 6694, 6695, 7, 71, 2, 2, 6695, 6696, 7, 82, 2, 2, 6696, 6697, + 7, 67, 2, 2, 6697, 6698, 7, 84, 2, 2, 6698, 6699, 7, 71, 2, 2, 6699, 1020, + 3, 2, 2, 2, 6700, 6701, 7, 82, 2, 2, 6701, 6702, 7, 84, 2, 2, 6702, 6703, + 7, 71, 2, 2, 6703, 6704, 7, 85, 2, 2, 6704, 6705, 7, 71, 2, 2, 6705, 6706, + 7, 84, 2, 2, 6706, 6707, 7, 88, 2, 2, 6707, 6708, 7, 71, 2, 2, 6708, 1022, + 3, 2, 2, 2, 6709, 6710, 7, 82, 2, 2, 6710, 6711, 7, 84, 2, 2, 6711, 6712, + 7, 71, 2, 2, 6712, 6713, 7, 88, 2, 2, 6713, 1024, 3, 2, 2, 2, 6714, 6715, + 7, 82, 2, 2, 6715, 6716, 7, 84, 2, 2, 6716, 6717, 7, 81, 2, 2, 6717, 6718, + 7, 69, 2, 2, 6718, 6719, 7, 71, 2, 2, 6719, 6720, 7, 85, 2, 2, 6720, 6721, + 7, 85, 2, 2, 6721, 6722, 7, 78, 2, 2, 6722, 6723, 7, 75, 2, 2, 6723, 6724, + 7, 85, 2, 2, 6724, 6725, 7, 86, 2, 2, 6725, 1026, 3, 2, 2, 2, 6726, 6727, + 7, 82, 2, 2, 6727, 6728, 7, 84, 2, 2, 6728, 6729, 7, 81, 2, 2, 6729, 6730, + 7, 72, 2, 2, 6730, 6731, 7, 75, 2, 2, 6731, 6732, 7, 78, 2, 2, 6732, 6733, + 7, 71, 2, 2, 6733, 1028, 3, 2, 2, 2, 6734, 6735, 7, 82, 2, 2, 6735, 6736, + 7, 84, 2, 2, 6736, 6737, 7, 81, 2, 2, 6737, 6738, 7, 72, 2, 2, 6738, 6739, + 7, 75, 2, 2, 6739, 6740, 7, 78, 2, 2, 6740, 6741, 7, 71, 2, 2, 6741, 6742, + 7, 85, 2, 2, 6742, 1030, 3, 2, 2, 2, 6743, 6744, 7, 82, 2, 2, 6744, 6745, + 7, 84, 2, 2, 6745, 6746, 7, 81, 2, 2, 6746, 6747, 7, 90, 2, 2, 6747, 6748, + 7, 91, 2, 2, 6748, 1032, 3, 2, 2, 2, 6749, 6750, 7, 83, 2, 2, 6750, 6751, + 7, 87, 2, 2, 6751, 6752, 7, 71, 2, 2, 6752, 6753, 7, 84, 2, 2, 6753, 6754, + 7, 91, 2, 2, 6754, 1034, 3, 2, 2, 2, 6755, 6756, 7, 83, 2, 2, 6756, 6757, + 7, 87, 2, 2, 6757, 6758, 7, 75, 2, 2, 6758, 6759, 7, 69, 2, 2, 6759, 6760, + 7, 77, 2, 2, 6760, 1036, 3, 2, 2, 2, 6761, 6762, 7, 84, 2, 2, 6762, 6763, + 7, 71, 2, 2, 6763, 6764, 7, 68, 2, 2, 6764, 6765, 7, 87, 2, 2, 6765, 6766, + 7, 75, 2, 2, 6766, 6767, 7, 78, 2, 2, 6767, 6768, 7, 70, 2, 2, 6768, 1038, + 3, 2, 2, 2, 6769, 6770, 7, 84, 2, 2, 6770, 6771, 7, 71, 2, 2, 6771, 6772, + 7, 69, 2, 2, 6772, 6773, 7, 81, 2, 2, 6773, 6774, 7, 88, 2, 2, 6774, 6775, + 7, 71, 2, 2, 6775, 6776, 7, 84, 2, 2, 6776, 1040, 3, 2, 2, 2, 6777, 6778, + 7, 84, 2, 2, 6778, 6779, 7, 71, 2, 2, 6779, 6780, 7, 70, 2, 2, 6780, 6781, + 7, 81, 2, 2, 6781, 6782, 7, 97, 2, 2, 6782, 6783, 7, 68, 2, 2, 6783, 6784, + 7, 87, 2, 2, 6784, 6785, 7, 72, 2, 2, 6785, 6786, 7, 72, 2, 2, 6786, 6787, + 7, 71, 2, 2, 6787, 6788, 7, 84, 2, 2, 6788, 6789, 7, 97, 2, 2, 6789, 6790, + 7, 85, 2, 2, 6790, 6791, 7, 75, 2, 2, 6791, 6792, 7, 92, 2, 2, 6792, 6793, + 7, 71, 2, 2, 6793, 1042, 3, 2, 2, 2, 6794, 6795, 7, 84, 2, 2, 6795, 6796, + 7, 71, 2, 2, 6796, 6797, 7, 70, 2, 2, 6797, 6798, 7, 87, 2, 2, 6798, 6799, + 7, 80, 2, 2, 6799, 6800, 7, 70, 2, 2, 6800, 6801, 7, 67, 2, 2, 6801, 6802, + 7, 80, 2, 2, 6802, 6803, 7, 86, 2, 2, 6803, 1044, 3, 2, 2, 2, 6804, 6805, + 7, 84, 2, 2, 6805, 6806, 7, 71, 2, 2, 6806, 6807, 7, 78, 2, 2, 6807, 6808, + 7, 67, 2, 2, 6808, 6809, 7, 91, 2, 2, 6809, 1046, 3, 2, 2, 2, 6810, 6811, + 7, 84, 2, 2, 6811, 6812, 7, 71, 2, 2, 6812, 6813, 7, 78, 2, 2, 6813, 6814, + 7, 67, 2, 2, 6814, 6815, 7, 91, 2, 2, 6815, 6816, 7, 97, 2, 2, 6816, 6817, + 7, 78, 2, 2, 6817, 6818, 7, 81, 2, 2, 6818, 6819, 7, 73, 2, 2, 6819, 6820, + 7, 97, 2, 2, 6820, 6821, 7, 72, 2, 2, 6821, 6822, 7, 75, 2, 2, 6822, 6823, + 7, 78, 2, 2, 6823, 6824, 7, 71, 2, 2, 6824, 1048, 3, 2, 2, 2, 6825, 6826, + 7, 84, 2, 2, 6826, 6827, 7, 71, 2, 2, 6827, 6828, 7, 78, 2, 2, 6828, 6829, + 7, 67, 2, 2, 6829, 6830, 7, 91, 2, 2, 6830, 6831, 7, 97, 2, 2, 6831, 6832, + 7, 78, 2, 2, 6832, 6833, 7, 81, 2, 2, 6833, 6834, 7, 73, 2, 2, 6834, 6835, + 7, 97, 2, 2, 6835, 6836, 7, 82, 2, 2, 6836, 6837, 7, 81, 2, 2, 6837, 6838, + 7, 85, 2, 2, 6838, 1050, 3, 2, 2, 2, 6839, 6840, 7, 84, 2, 2, 6840, 6841, + 7, 71, 2, 2, 6841, 6842, 7, 78, 2, 2, 6842, 6843, 7, 67, 2, 2, 6843, 6844, + 7, 91, 2, 2, 6844, 6845, 7, 78, 2, 2, 6845, 6846, 7, 81, 2, 2, 6846, 6847, + 7, 73, 2, 2, 6847, 1052, 3, 2, 2, 2, 6848, 6849, 7, 84, 2, 2, 6849, 6850, + 7, 71, 2, 2, 6850, 6851, 7, 79, 2, 2, 6851, 6852, 7, 81, 2, 2, 6852, 6853, + 7, 88, 2, 2, 6853, 6854, 7, 71, 2, 2, 6854, 1054, 3, 2, 2, 2, 6855, 6856, + 7, 84, 2, 2, 6856, 6857, 7, 71, 2, 2, 6857, 6858, 7, 81, 2, 2, 6858, 6859, + 7, 84, 2, 2, 6859, 6860, 7, 73, 2, 2, 6860, 6861, 7, 67, 2, 2, 6861, 6862, + 7, 80, 2, 2, 6862, 6863, 7, 75, 2, 2, 6863, 6864, 7, 92, 2, 2, 6864, 6865, + 7, 71, 2, 2, 6865, 1056, 3, 2, 2, 2, 6866, 6867, 7, 84, 2, 2, 6867, 6868, + 7, 71, 2, 2, 6868, 6869, 7, 82, 2, 2, 6869, 6870, 7, 67, 2, 2, 6870, 6871, + 7, 75, 2, 2, 6871, 6872, 7, 84, 2, 2, 6872, 1058, 3, 2, 2, 2, 6873, 6874, + 7, 84, 2, 2, 6874, 6875, 7, 71, 2, 2, 6875, 6876, 7, 82, 2, 2, 6876, 6877, + 7, 78, 2, 2, 6877, 6878, 7, 75, 2, 2, 6878, 6879, 7, 69, 2, 2, 6879, 6880, + 7, 67, 2, 2, 6880, 6881, 7, 86, 2, 2, 6881, 6882, 7, 71, 2, 2, 6882, 6883, + 7, 97, 2, 2, 6883, 6884, 7, 70, 2, 2, 6884, 6885, 7, 81, 2, 2, 6885, 6886, + 7, 97, 2, 2, 6886, 6887, 7, 70, 2, 2, 6887, 6888, 7, 68, 2, 2, 6888, 1060, + 3, 2, 2, 2, 6889, 6890, 7, 84, 2, 2, 6890, 6891, 7, 71, 2, 2, 6891, 6892, + 7, 82, 2, 2, 6892, 6893, 7, 78, 2, 2, 6893, 6894, 7, 75, 2, 2, 6894, 6895, + 7, 69, 2, 2, 6895, 6896, 7, 67, 2, 2, 6896, 6897, 7, 86, 2, 2, 6897, 6898, + 7, 71, 2, 2, 6898, 6899, 7, 97, 2, 2, 6899, 6900, 7, 70, 2, 2, 6900, 6901, + 7, 81, 2, 2, 6901, 6902, 7, 97, 2, 2, 6902, 6903, 7, 86, 2, 2, 6903, 6904, + 7, 67, 2, 2, 6904, 6905, 7, 68, 2, 2, 6905, 6906, 7, 78, 2, 2, 6906, 6907, + 7, 71, 2, 2, 6907, 1062, 3, 2, 2, 2, 6908, 6909, 7, 84, 2, 2, 6909, 6910, + 7, 71, 2, 2, 6910, 6911, 7, 82, 2, 2, 6911, 6912, 7, 78, 2, 2, 6912, 6913, + 7, 75, 2, 2, 6913, 6914, 7, 69, 2, 2, 6914, 6915, 7, 67, 2, 2, 6915, 6916, + 7, 86, 2, 2, 6916, 6917, 7, 71, 2, 2, 6917, 6918, 7, 97, 2, 2, 6918, 6919, + 7, 75, 2, 2, 6919, 6920, 7, 73, 2, 2, 6920, 6921, 7, 80, 2, 2, 6921, 6922, + 7, 81, 2, 2, 6922, 6923, 7, 84, 2, 2, 6923, 6924, 7, 71, 2, 2, 6924, 6925, + 7, 97, 2, 2, 6925, 6926, 7, 70, 2, 2, 6926, 6927, 7, 68, 2, 2, 6927, 1064, + 3, 2, 2, 2, 6928, 6929, 7, 84, 2, 2, 6929, 6930, 7, 71, 2, 2, 6930, 6931, + 7, 82, 2, 2, 6931, 6932, 7, 78, 2, 2, 6932, 6933, 7, 75, 2, 2, 6933, 6934, + 7, 69, 2, 2, 6934, 6935, 7, 67, 2, 2, 6935, 6936, 7, 86, 2, 2, 6936, 6937, + 7, 71, 2, 2, 6937, 6938, 7, 97, 2, 2, 6938, 6939, 7, 75, 2, 2, 6939, 6940, + 7, 73, 2, 2, 6940, 6941, 7, 80, 2, 2, 6941, 6942, 7, 81, 2, 2, 6942, 6943, + 7, 84, 2, 2, 6943, 6944, 7, 71, 2, 2, 6944, 6945, 7, 97, 2, 2, 6945, 6946, + 7, 86, 2, 2, 6946, 6947, 7, 67, 2, 2, 6947, 6948, 7, 68, 2, 2, 6948, 6949, + 7, 78, 2, 2, 6949, 6950, 7, 71, 2, 2, 6950, 1066, 3, 2, 2, 2, 6951, 6952, + 7, 84, 2, 2, 6952, 6953, 7, 71, 2, 2, 6953, 6954, 7, 82, 2, 2, 6954, 6955, + 7, 78, 2, 2, 6955, 6956, 7, 75, 2, 2, 6956, 6957, 7, 69, 2, 2, 6957, 6958, + 7, 67, 2, 2, 6958, 6959, 7, 86, 2, 2, 6959, 6960, 7, 71, 2, 2, 6960, 6961, + 7, 97, 2, 2, 6961, 6962, 7, 84, 2, 2, 6962, 6963, 7, 71, 2, 2, 6963, 6964, + 7, 89, 2, 2, 6964, 6965, 7, 84, 2, 2, 6965, 6966, 7, 75, 2, 2, 6966, 6967, + 7, 86, 2, 2, 6967, 6968, 7, 71, 2, 2, 6968, 6969, 7, 97, 2, 2, 6969, 6970, + 7, 70, 2, 2, 6970, 6971, 7, 68, 2, 2, 6971, 1068, 3, 2, 2, 2, 6972, 6973, + 7, 84, 2, 2, 6973, 6974, 7, 71, 2, 2, 6974, 6975, 7, 82, 2, 2, 6975, 6976, + 7, 78, 2, 2, 6976, 6977, 7, 75, 2, 2, 6977, 6978, 7, 69, 2, 2, 6978, 6979, + 7, 67, 2, 2, 6979, 6980, 7, 86, 2, 2, 6980, 6981, 7, 71, 2, 2, 6981, 6982, + 7, 97, 2, 2, 6982, 6983, 7, 89, 2, 2, 6983, 6984, 7, 75, 2, 2, 6984, 6985, + 7, 78, 2, 2, 6985, 6986, 7, 70, 2, 2, 6986, 6987, 7, 97, 2, 2, 6987, 6988, + 7, 70, 2, 2, 6988, 6989, 7, 81, 2, 2, 6989, 6990, 7, 97, 2, 2, 6990, 6991, + 7, 86, 2, 2, 6991, 6992, 7, 67, 2, 2, 6992, 6993, 7, 68, 2, 2, 6993, 6994, + 7, 78, 2, 2, 6994, 6995, 7, 71, 2, 2, 6995, 1070, 3, 2, 2, 2, 6996, 6997, + 7, 84, 2, 2, 6997, 6998, 7, 71, 2, 2, 6998, 6999, 7, 82, 2, 2, 6999, 7000, + 7, 78, 2, 2, 7000, 7001, 7, 75, 2, 2, 7001, 7002, 7, 69, 2, 2, 7002, 7003, + 7, 67, 2, 2, 7003, 7004, 7, 86, 2, 2, 7004, 7005, 7, 71, 2, 2, 7005, 7006, + 7, 97, 2, 2, 7006, 7007, 7, 89, 2, 2, 7007, 7008, 7, 75, 2, 2, 7008, 7009, + 7, 78, 2, 2, 7009, 7010, 7, 70, 2, 2, 7010, 7011, 7, 97, 2, 2, 7011, 7012, + 7, 75, 2, 2, 7012, 7013, 7, 73, 2, 2, 7013, 7014, 7, 80, 2, 2, 7014, 7015, + 7, 81, 2, 2, 7015, 7016, 7, 84, 2, 2, 7016, 7017, 7, 71, 2, 2, 7017, 7018, + 7, 97, 2, 2, 7018, 7019, 7, 86, 2, 2, 7019, 7020, 7, 67, 2, 2, 7020, 7021, + 7, 68, 2, 2, 7021, 7022, 7, 78, 2, 2, 7022, 7023, 7, 71, 2, 2, 7023, 1072, + 3, 2, 2, 2, 7024, 7025, 7, 84, 2, 2, 7025, 7026, 7, 71, 2, 2, 7026, 7027, + 7, 82, 2, 2, 7027, 7028, 7, 78, 2, 2, 7028, 7029, 7, 75, 2, 2, 7029, 7030, + 7, 69, 2, 2, 7030, 7031, 7, 67, 2, 2, 7031, 7032, 7, 86, 2, 2, 7032, 7033, + 7, 75, 2, 2, 7033, 7034, 7, 81, 2, 2, 7034, 7035, 7, 80, 2, 2, 7035, 1074, + 3, 2, 2, 2, 7036, 7037, 7, 84, 2, 2, 7037, 7038, 7, 71, 2, 2, 7038, 7039, + 7, 85, 2, 2, 7039, 7040, 7, 71, 2, 2, 7040, 7041, 7, 86, 2, 2, 7041, 1076, + 3, 2, 2, 2, 7042, 7043, 7, 84, 2, 2, 7043, 7044, 7, 71, 2, 2, 7044, 7045, + 7, 85, 2, 2, 7045, 7046, 7, 87, 2, 2, 7046, 7047, 7, 79, 2, 2, 7047, 7048, + 7, 71, 2, 2, 7048, 1078, 3, 2, 2, 2, 7049, 7050, 7, 84, 2, 2, 7050, 7051, + 7, 71, 2, 2, 7051, 7052, 7, 86, 2, 2, 7052, 7053, 7, 87, 2, 2, 7053, 7054, + 7, 84, 2, 2, 7054, 7055, 7, 80, 2, 2, 7055, 7056, 7, 71, 2, 2, 7056, 7057, + 7, 70, 2, 2, 7057, 7058, 7, 97, 2, 2, 7058, 7059, 7, 85, 2, 2, 7059, 7060, + 7, 83, 2, 2, 7060, 7061, 7, 78, 2, 2, 7061, 7062, 7, 85, 2, 2, 7062, 7063, + 7, 86, 2, 2, 7063, 7064, 7, 67, 2, 2, 7064, 7065, 7, 86, 2, 2, 7065, 7066, + 7, 71, 2, 2, 7066, 1080, 3, 2, 2, 2, 7067, 7068, 7, 84, 2, 2, 7068, 7069, + 7, 71, 2, 2, 7069, 7070, 7, 86, 2, 2, 7070, 7071, 7, 87, 2, 2, 7071, 7072, + 7, 84, 2, 2, 7072, 7073, 7, 80, 2, 2, 7073, 7074, 7, 75, 2, 2, 7074, 7075, + 7, 80, 2, 2, 7075, 7076, 7, 73, 2, 2, 7076, 1082, 3, 2, 2, 2, 7077, 7078, + 7, 84, 2, 2, 7078, 7079, 7, 71, 2, 2, 7079, 7080, 7, 86, 2, 2, 7080, 7081, + 7, 87, 2, 2, 7081, 7082, 7, 84, 2, 2, 7082, 7083, 7, 80, 2, 2, 7083, 7084, + 7, 85, 2, 2, 7084, 1084, 3, 2, 2, 2, 7085, 7086, 7, 84, 2, 2, 7086, 7087, + 7, 81, 2, 2, 7087, 7088, 7, 78, 2, 2, 7088, 7089, 7, 71, 2, 2, 7089, 1086, + 3, 2, 2, 2, 7090, 7091, 7, 84, 2, 2, 7091, 7092, 7, 81, 2, 2, 7092, 7093, + 7, 78, 2, 2, 7093, 7094, 7, 78, 2, 2, 7094, 7095, 7, 68, 2, 2, 7095, 7096, + 7, 67, 2, 2, 7096, 7097, 7, 69, 2, 2, 7097, 7098, 7, 77, 2, 2, 7098, 1088, + 3, 2, 2, 2, 7099, 7100, 7, 84, 2, 2, 7100, 7101, 7, 81, 2, 2, 7101, 7102, + 7, 78, 2, 2, 7102, 7103, 7, 78, 2, 2, 7103, 7104, 7, 87, 2, 2, 7104, 7105, + 7, 82, 2, 2, 7105, 1090, 3, 2, 2, 2, 7106, 7107, 7, 84, 2, 2, 7107, 7108, + 7, 81, 2, 2, 7108, 7109, 7, 86, 2, 2, 7109, 7110, 7, 67, 2, 2, 7110, 7111, + 7, 86, 2, 2, 7111, 7112, 7, 71, 2, 2, 7112, 1092, 3, 2, 2, 2, 7113, 7114, + 7, 84, 2, 2, 7114, 7115, 7, 81, 2, 2, 7115, 7116, 7, 89, 2, 2, 7116, 1094, + 3, 2, 2, 2, 7117, 7118, 7, 84, 2, 2, 7118, 7119, 7, 81, 2, 2, 7119, 7120, + 7, 89, 2, 2, 7120, 7121, 7, 85, 2, 2, 7121, 1096, 3, 2, 2, 2, 7122, 7123, + 7, 84, 2, 2, 7123, 7124, 7, 81, 2, 2, 7124, 7125, 7, 89, 2, 2, 7125, 7126, + 7, 97, 2, 2, 7126, 7127, 7, 72, 2, 2, 7127, 7128, 7, 81, 2, 2, 7128, 7129, + 7, 84, 2, 2, 7129, 7130, 7, 79, 2, 2, 7130, 7131, 7, 67, 2, 2, 7131, 7132, + 7, 86, 2, 2, 7132, 1098, 3, 2, 2, 2, 7133, 7134, 7, 85, 2, 2, 7134, 7135, + 7, 67, 2, 2, 7135, 7136, 7, 88, 2, 2, 7136, 7137, 7, 71, 2, 2, 7137, 7138, + 7, 82, 2, 2, 7138, 7139, 7, 81, 2, 2, 7139, 7140, 7, 75, 2, 2, 7140, 7141, + 7, 80, 2, 2, 7141, 7142, 7, 86, 2, 2, 7142, 1100, 3, 2, 2, 2, 7143, 7144, + 7, 85, 2, 2, 7144, 7145, 7, 69, 2, 2, 7145, 7146, 7, 74, 2, 2, 7146, 7147, + 7, 71, 2, 2, 7147, 7148, 7, 70, 2, 2, 7148, 7149, 7, 87, 2, 2, 7149, 7150, + 7, 78, 2, 2, 7150, 7151, 7, 71, 2, 2, 7151, 1102, 3, 2, 2, 2, 7152, 7153, + 7, 85, 2, 2, 7153, 7154, 7, 71, 2, 2, 7154, 7155, 7, 69, 2, 2, 7155, 7156, + 7, 87, 2, 2, 7156, 7157, 7, 84, 2, 2, 7157, 7158, 7, 75, 2, 2, 7158, 7159, + 7, 86, 2, 2, 7159, 7160, 7, 91, 2, 2, 7160, 1104, 3, 2, 2, 2, 7161, 7162, + 7, 85, 2, 2, 7162, 7163, 7, 71, 2, 2, 7163, 7164, 7, 84, 2, 2, 7164, 7165, + 7, 88, 2, 2, 7165, 7166, 7, 71, 2, 2, 7166, 7167, 7, 84, 2, 2, 7167, 1106, + 3, 2, 2, 2, 7168, 7169, 7, 85, 2, 2, 7169, 7170, 7, 71, 2, 2, 7170, 7171, + 7, 85, 2, 2, 7171, 7172, 7, 85, 2, 2, 7172, 7173, 7, 75, 2, 2, 7173, 7174, + 7, 81, 2, 2, 7174, 7175, 7, 80, 2, 2, 7175, 1108, 3, 2, 2, 2, 7176, 7177, + 7, 85, 2, 2, 7177, 7178, 7, 74, 2, 2, 7178, 7179, 7, 67, 2, 2, 7179, 7180, + 7, 84, 2, 2, 7180, 7181, 7, 71, 2, 2, 7181, 1110, 3, 2, 2, 2, 7182, 7183, + 7, 85, 2, 2, 7183, 7184, 7, 74, 2, 2, 7184, 7185, 7, 67, 2, 2, 7185, 7186, + 7, 84, 2, 2, 7186, 7187, 7, 71, 2, 2, 7187, 7188, 7, 70, 2, 2, 7188, 1112, + 3, 2, 2, 2, 7189, 7190, 7, 85, 2, 2, 7190, 7191, 7, 75, 2, 2, 7191, 7192, + 7, 73, 2, 2, 7192, 7193, 7, 80, 2, 2, 7193, 7194, 7, 71, 2, 2, 7194, 7195, + 7, 70, 2, 2, 7195, 1114, 3, 2, 2, 2, 7196, 7197, 7, 85, 2, 2, 7197, 7198, + 7, 75, 2, 2, 7198, 7199, 7, 79, 2, 2, 7199, 7200, 7, 82, 2, 2, 7200, 7201, + 7, 78, 2, 2, 7201, 7202, 7, 71, 2, 2, 7202, 1116, 3, 2, 2, 2, 7203, 7204, + 7, 85, 2, 2, 7204, 7205, 7, 78, 2, 2, 7205, 7206, 7, 67, 2, 2, 7206, 7207, + 7, 88, 2, 2, 7207, 7208, 7, 71, 2, 2, 7208, 1118, 3, 2, 2, 2, 7209, 7210, + 7, 85, 2, 2, 7210, 7211, 7, 78, 2, 2, 7211, 7212, 7, 81, 2, 2, 7212, 7213, + 7, 89, 2, 2, 7213, 1120, 3, 2, 2, 2, 7214, 7215, 7, 85, 2, 2, 7215, 7216, + 7, 80, 2, 2, 7216, 7217, 7, 67, 2, 2, 7217, 7218, 7, 82, 2, 2, 7218, 7219, + 7, 85, 2, 2, 7219, 7220, 7, 74, 2, 2, 7220, 7221, 7, 81, 2, 2, 7221, 7222, + 7, 86, 2, 2, 7222, 1122, 3, 2, 2, 2, 7223, 7224, 7, 85, 2, 2, 7224, 7225, + 7, 81, 2, 2, 7225, 7226, 7, 69, 2, 2, 7226, 7227, 7, 77, 2, 2, 7227, 7228, + 7, 71, 2, 2, 7228, 7229, 7, 86, 2, 2, 7229, 1124, 3, 2, 2, 2, 7230, 7231, + 7, 85, 2, 2, 7231, 7232, 7, 81, 2, 2, 7232, 7233, 7, 79, 2, 2, 7233, 7234, + 7, 71, 2, 2, 7234, 1126, 3, 2, 2, 2, 7235, 7236, 7, 85, 2, 2, 7236, 7237, + 7, 81, 2, 2, 7237, 7238, 7, 80, 2, 2, 7238, 7239, 7, 67, 2, 2, 7239, 7240, + 7, 79, 2, 2, 7240, 7241, 7, 71, 2, 2, 7241, 1128, 3, 2, 2, 2, 7242, 7243, + 7, 85, 2, 2, 7243, 7244, 7, 81, 2, 2, 7244, 7245, 7, 87, 2, 2, 7245, 7246, + 7, 80, 2, 2, 7246, 7247, 7, 70, 2, 2, 7247, 7248, 7, 85, 2, 2, 7248, 1130, + 3, 2, 2, 2, 7249, 7250, 7, 85, 2, 2, 7250, 7251, 7, 81, 2, 2, 7251, 7252, + 7, 87, 2, 2, 7252, 7253, 7, 84, 2, 2, 7253, 7254, 7, 69, 2, 2, 7254, 7255, + 7, 71, 2, 2, 7255, 1132, 3, 2, 2, 2, 7256, 7257, 7, 85, 2, 2, 7257, 7258, + 7, 83, 2, 2, 7258, 7259, 7, 78, 2, 2, 7259, 7260, 7, 97, 2, 2, 7260, 7261, + 7, 67, 2, 2, 7261, 7262, 7, 72, 2, 2, 7262, 7263, 7, 86, 2, 2, 7263, 7264, + 7, 71, 2, 2, 7264, 7265, 7, 84, 2, 2, 7265, 7266, 7, 97, 2, 2, 7266, 7267, + 7, 73, 2, 2, 7267, 7268, 7, 86, 2, 2, 7268, 7269, 7, 75, 2, 2, 7269, 7270, + 7, 70, 2, 2, 7270, 7271, 7, 85, 2, 2, 7271, 1134, 3, 2, 2, 2, 7272, 7273, + 7, 85, 2, 2, 7273, 7274, 7, 83, 2, 2, 7274, 7275, 7, 78, 2, 2, 7275, 7276, + 7, 97, 2, 2, 7276, 7277, 7, 67, 2, 2, 7277, 7278, 7, 72, 2, 2, 7278, 7279, + 7, 86, 2, 2, 7279, 7280, 7, 71, 2, 2, 7280, 7281, 7, 84, 2, 2, 7281, 7282, + 7, 97, 2, 2, 7282, 7283, 7, 79, 2, 2, 7283, 7284, 7, 86, 2, 2, 7284, 7285, + 7, 85, 2, 2, 7285, 7286, 7, 97, 2, 2, 7286, 7287, 7, 73, 2, 2, 7287, 7288, + 7, 67, 2, 2, 7288, 7289, 7, 82, 2, 2, 7289, 7290, 7, 85, 2, 2, 7290, 1136, + 3, 2, 2, 2, 7291, 7292, 7, 85, 2, 2, 7292, 7293, 7, 83, 2, 2, 7293, 7294, + 7, 78, 2, 2, 7294, 7295, 7, 97, 2, 2, 7295, 7296, 7, 68, 2, 2, 7296, 7297, + 7, 71, 2, 2, 7297, 7298, 7, 72, 2, 2, 7298, 7299, 7, 81, 2, 2, 7299, 7300, + 7, 84, 2, 2, 7300, 7301, 7, 71, 2, 2, 7301, 7302, 7, 97, 2, 2, 7302, 7303, + 7, 73, 2, 2, 7303, 7304, 7, 86, 2, 2, 7304, 7305, 7, 75, 2, 2, 7305, 7306, + 7, 70, 2, 2, 7306, 7307, 7, 85, 2, 2, 7307, 1138, 3, 2, 2, 2, 7308, 7309, + 7, 85, 2, 2, 7309, 7310, 7, 83, 2, 2, 7310, 7311, 7, 78, 2, 2, 7311, 7312, + 7, 97, 2, 2, 7312, 7313, 7, 68, 2, 2, 7313, 7314, 7, 87, 2, 2, 7314, 7315, + 7, 72, 2, 2, 7315, 7316, 7, 72, 2, 2, 7316, 7317, 7, 71, 2, 2, 7317, 7318, + 7, 84, 2, 2, 7318, 7319, 7, 97, 2, 2, 7319, 7320, 7, 84, 2, 2, 7320, 7321, + 7, 71, 2, 2, 7321, 7322, 7, 85, 2, 2, 7322, 7323, 7, 87, 2, 2, 7323, 7324, + 7, 78, 2, 2, 7324, 7325, 7, 86, 2, 2, 7325, 1140, 3, 2, 2, 2, 7326, 7327, + 7, 85, 2, 2, 7327, 7328, 7, 83, 2, 2, 7328, 7329, 7, 78, 2, 2, 7329, 7330, + 7, 97, 2, 2, 7330, 7331, 7, 69, 2, 2, 7331, 7332, 7, 67, 2, 2, 7332, 7333, + 7, 69, 2, 2, 7333, 7334, 7, 74, 2, 2, 7334, 7335, 7, 71, 2, 2, 7335, 1142, + 3, 2, 2, 2, 7336, 7337, 7, 85, 2, 2, 7337, 7338, 7, 83, 2, 2, 7338, 7339, + 7, 78, 2, 2, 7339, 7340, 7, 97, 2, 2, 7340, 7341, 7, 80, 2, 2, 7341, 7342, + 7, 81, 2, 2, 7342, 7343, 7, 97, 2, 2, 7343, 7344, 7, 69, 2, 2, 7344, 7345, + 7, 67, 2, 2, 7345, 7346, 7, 69, 2, 2, 7346, 7347, 7, 74, 2, 2, 7347, 7348, + 7, 71, 2, 2, 7348, 1144, 3, 2, 2, 2, 7349, 7350, 7, 85, 2, 2, 7350, 7351, + 7, 83, 2, 2, 7351, 7352, 7, 78, 2, 2, 7352, 7353, 7, 97, 2, 2, 7353, 7354, + 7, 86, 2, 2, 7354, 7355, 7, 74, 2, 2, 7355, 7356, 7, 84, 2, 2, 7356, 7357, + 7, 71, 2, 2, 7357, 7358, 7, 67, 2, 2, 7358, 7359, 7, 70, 2, 2, 7359, 1146, + 3, 2, 2, 2, 7360, 7361, 7, 85, 2, 2, 7361, 7362, 7, 86, 2, 2, 7362, 7363, + 7, 67, 2, 2, 7363, 7364, 7, 84, 2, 2, 7364, 7365, 7, 86, 2, 2, 7365, 1148, + 3, 2, 2, 2, 7366, 7367, 7, 85, 2, 2, 7367, 7368, 7, 86, 2, 2, 7368, 7369, + 7, 67, 2, 2, 7369, 7370, 7, 84, 2, 2, 7370, 7371, 7, 86, 2, 2, 7371, 7372, + 7, 85, 2, 2, 7372, 1150, 3, 2, 2, 2, 7373, 7374, 7, 85, 2, 2, 7374, 7375, + 7, 86, 2, 2, 7375, 7376, 7, 67, 2, 2, 7376, 7377, 7, 86, 2, 2, 7377, 7378, + 7, 85, 2, 2, 7378, 7379, 7, 97, 2, 2, 7379, 7380, 7, 67, 2, 2, 7380, 7381, + 7, 87, 2, 2, 7381, 7382, 7, 86, 2, 2, 7382, 7383, 7, 81, 2, 2, 7383, 7384, + 7, 97, 2, 2, 7384, 7385, 7, 84, 2, 2, 7385, 7386, 7, 71, 2, 2, 7386, 7387, + 7, 69, 2, 2, 7387, 7388, 7, 67, 2, 2, 7388, 7389, 7, 78, 2, 2, 7389, 7390, + 7, 69, 2, 2, 7390, 1152, 3, 2, 2, 2, 7391, 7392, 7, 85, 2, 2, 7392, 7393, + 7, 86, 2, 2, 7393, 7394, 7, 67, 2, 2, 7394, 7395, 7, 86, 2, 2, 7395, 7396, + 7, 85, 2, 2, 7396, 7397, 7, 97, 2, 2, 7397, 7398, 7, 82, 2, 2, 7398, 7399, + 7, 71, 2, 2, 7399, 7400, 7, 84, 2, 2, 7400, 7401, 7, 85, 2, 2, 7401, 7402, + 7, 75, 2, 2, 7402, 7403, 7, 85, 2, 2, 7403, 7404, 7, 86, 2, 2, 7404, 7405, + 7, 71, 2, 2, 7405, 7406, 7, 80, 2, 2, 7406, 7407, 7, 86, 2, 2, 7407, 1154, + 3, 2, 2, 2, 7408, 7409, 7, 85, 2, 2, 7409, 7410, 7, 86, 2, 2, 7410, 7411, + 7, 67, 2, 2, 7411, 7412, 7, 86, 2, 2, 7412, 7413, 7, 85, 2, 2, 7413, 7414, + 7, 97, 2, 2, 7414, 7415, 7, 85, 2, 2, 7415, 7416, 7, 67, 2, 2, 7416, 7417, + 7, 79, 2, 2, 7417, 7418, 7, 82, 2, 2, 7418, 7419, 7, 78, 2, 2, 7419, 7420, + 7, 71, 2, 2, 7420, 7421, 7, 97, 2, 2, 7421, 7422, 7, 82, 2, 2, 7422, 7423, + 7, 67, 2, 2, 7423, 7424, 7, 73, 2, 2, 7424, 7425, 7, 71, 2, 2, 7425, 7426, + 7, 85, 2, 2, 7426, 1156, 3, 2, 2, 2, 7427, 7428, 7, 85, 2, 2, 7428, 7429, + 7, 86, 2, 2, 7429, 7430, 7, 67, 2, 2, 7430, 7431, 7, 86, 2, 2, 7431, 7432, + 7, 87, 2, 2, 7432, 7433, 7, 85, 2, 2, 7433, 1158, 3, 2, 2, 2, 7434, 7435, + 7, 85, 2, 2, 7435, 7436, 7, 86, 2, 2, 7436, 7437, 7, 81, 2, 2, 7437, 7438, + 7, 82, 2, 2, 7438, 1160, 3, 2, 2, 2, 7439, 7440, 7, 85, 2, 2, 7440, 7441, + 7, 86, 2, 2, 7441, 7442, 7, 81, 2, 2, 7442, 7443, 7, 84, 2, 2, 7443, 7444, + 7, 67, 2, 2, 7444, 7445, 7, 73, 2, 2, 7445, 7446, 7, 71, 2, 2, 7446, 1162, + 3, 2, 2, 2, 7447, 7448, 7, 85, 2, 2, 7448, 7449, 7, 86, 2, 2, 7449, 7450, + 7, 81, 2, 2, 7450, 7451, 7, 84, 2, 2, 7451, 7452, 7, 71, 2, 2, 7452, 7453, + 7, 70, 2, 2, 7453, 1164, 3, 2, 2, 2, 7454, 7455, 7, 85, 2, 2, 7455, 7456, + 7, 86, 2, 2, 7456, 7457, 7, 84, 2, 2, 7457, 7458, 7, 75, 2, 2, 7458, 7459, + 7, 80, 2, 2, 7459, 7460, 7, 73, 2, 2, 7460, 1166, 3, 2, 2, 2, 7461, 7462, + 7, 85, 2, 2, 7462, 7463, 7, 87, 2, 2, 7463, 7464, 7, 68, 2, 2, 7464, 7465, + 7, 69, 2, 2, 7465, 7466, 7, 78, 2, 2, 7466, 7467, 7, 67, 2, 2, 7467, 7468, + 7, 85, 2, 2, 7468, 7469, 7, 85, 2, 2, 7469, 7470, 7, 97, 2, 2, 7470, 7471, + 7, 81, 2, 2, 7471, 7472, 7, 84, 2, 2, 7472, 7473, 7, 75, 2, 2, 7473, 7474, + 7, 73, 2, 2, 7474, 7475, 7, 75, 2, 2, 7475, 7476, 7, 80, 2, 2, 7476, 1168, + 3, 2, 2, 2, 7477, 7478, 7, 85, 2, 2, 7478, 7479, 7, 87, 2, 2, 7479, 7480, + 7, 68, 2, 2, 7480, 7481, 7, 76, 2, 2, 7481, 7482, 7, 71, 2, 2, 7482, 7483, + 7, 69, 2, 2, 7483, 7484, 7, 86, 2, 2, 7484, 1170, 3, 2, 2, 2, 7485, 7486, + 7, 85, 2, 2, 7486, 7487, 7, 87, 2, 2, 7487, 7488, 7, 68, 2, 2, 7488, 7489, + 7, 82, 2, 2, 7489, 7490, 7, 67, 2, 2, 7490, 7491, 7, 84, 2, 2, 7491, 7492, + 7, 86, 2, 2, 7492, 7493, 7, 75, 2, 2, 7493, 7494, 7, 86, 2, 2, 7494, 7495, + 7, 75, 2, 2, 7495, 7496, 7, 81, 2, 2, 7496, 7497, 7, 80, 2, 2, 7497, 1172, + 3, 2, 2, 2, 7498, 7499, 7, 85, 2, 2, 7499, 7500, 7, 87, 2, 2, 7500, 7501, + 7, 68, 2, 2, 7501, 7502, 7, 82, 2, 2, 7502, 7503, 7, 67, 2, 2, 7503, 7504, + 7, 84, 2, 2, 7504, 7505, 7, 86, 2, 2, 7505, 7506, 7, 75, 2, 2, 7506, 7507, + 7, 86, 2, 2, 7507, 7508, 7, 75, 2, 2, 7508, 7509, 7, 81, 2, 2, 7509, 7510, + 7, 80, 2, 2, 7510, 7511, 7, 85, 2, 2, 7511, 1174, 3, 2, 2, 2, 7512, 7513, + 7, 85, 2, 2, 7513, 7514, 7, 87, 2, 2, 7514, 7515, 7, 85, 2, 2, 7515, 7516, + 7, 82, 2, 2, 7516, 7517, 7, 71, 2, 2, 7517, 7518, 7, 80, 2, 2, 7518, 7519, + 7, 70, 2, 2, 7519, 1176, 3, 2, 2, 2, 7520, 7521, 7, 85, 2, 2, 7521, 7522, + 7, 89, 2, 2, 7522, 7523, 7, 67, 2, 2, 7523, 7524, 7, 82, 2, 2, 7524, 7525, + 7, 85, 2, 2, 7525, 1178, 3, 2, 2, 2, 7526, 7527, 7, 85, 2, 2, 7527, 7528, + 7, 89, 2, 2, 7528, 7529, 7, 75, 2, 2, 7529, 7530, 7, 86, 2, 2, 7530, 7531, + 7, 69, 2, 2, 7531, 7532, 7, 74, 2, 2, 7532, 7533, 7, 71, 2, 2, 7533, 7534, + 7, 85, 2, 2, 7534, 1180, 3, 2, 2, 2, 7535, 7536, 7, 86, 2, 2, 7536, 7537, + 7, 67, 2, 2, 7537, 7538, 7, 68, 2, 2, 7538, 7539, 7, 78, 2, 2, 7539, 7540, + 7, 71, 2, 2, 7540, 7541, 7, 97, 2, 2, 7541, 7542, 7, 80, 2, 2, 7542, 7543, + 7, 67, 2, 2, 7543, 7544, 7, 79, 2, 2, 7544, 7545, 7, 71, 2, 2, 7545, 1182, + 3, 2, 2, 2, 7546, 7547, 7, 86, 2, 2, 7547, 7548, 7, 67, 2, 2, 7548, 7549, + 7, 68, 2, 2, 7549, 7550, 7, 78, 2, 2, 7550, 7551, 7, 71, 2, 2, 7551, 7552, + 7, 85, 2, 2, 7552, 7553, 7, 82, 2, 2, 7553, 7554, 7, 67, 2, 2, 7554, 7555, + 7, 69, 2, 2, 7555, 7556, 7, 71, 2, 2, 7556, 1184, 3, 2, 2, 2, 7557, 7558, + 7, 86, 2, 2, 7558, 7559, 7, 71, 2, 2, 7559, 7560, 7, 79, 2, 2, 7560, 7561, + 7, 82, 2, 2, 7561, 7562, 7, 81, 2, 2, 7562, 7563, 7, 84, 2, 2, 7563, 7564, + 7, 67, 2, 2, 7564, 7565, 7, 84, 2, 2, 7565, 7566, 7, 91, 2, 2, 7566, 1186, + 3, 2, 2, 2, 7567, 7568, 7, 86, 2, 2, 7568, 7569, 7, 71, 2, 2, 7569, 7570, + 7, 79, 2, 2, 7570, 7571, 7, 82, 2, 2, 7571, 7572, 7, 86, 2, 2, 7572, 7573, + 7, 67, 2, 2, 7573, 7574, 7, 68, 2, 2, 7574, 7575, 7, 78, 2, 2, 7575, 7576, + 7, 71, 2, 2, 7576, 1188, 3, 2, 2, 2, 7577, 7578, 7, 86, 2, 2, 7578, 7579, + 7, 74, 2, 2, 7579, 7580, 7, 67, 2, 2, 7580, 7581, 7, 80, 2, 2, 7581, 1190, + 3, 2, 2, 2, 7582, 7583, 7, 86, 2, 2, 7583, 7584, 7, 84, 2, 2, 7584, 7585, + 7, 67, 2, 2, 7585, 7586, 7, 70, 2, 2, 7586, 7587, 7, 75, 2, 2, 7587, 7588, + 7, 86, 2, 2, 7588, 7589, 7, 75, 2, 2, 7589, 7590, 7, 81, 2, 2, 7590, 7591, + 7, 80, 2, 2, 7591, 7592, 7, 67, 2, 2, 7592, 7593, 7, 78, 2, 2, 7593, 1192, + 3, 2, 2, 2, 7594, 7595, 7, 86, 2, 2, 7595, 7596, 7, 84, 2, 2, 7596, 7597, + 7, 67, 2, 2, 7597, 7598, 7, 80, 2, 2, 7598, 7599, 7, 85, 2, 2, 7599, 7600, + 7, 67, 2, 2, 7600, 7601, 7, 69, 2, 2, 7601, 7602, 7, 86, 2, 2, 7602, 7603, + 7, 75, 2, 2, 7603, 7604, 7, 81, 2, 2, 7604, 7605, 7, 80, 2, 2, 7605, 1194, + 3, 2, 2, 2, 7606, 7607, 7, 86, 2, 2, 7607, 7608, 7, 84, 2, 2, 7608, 7609, + 7, 67, 2, 2, 7609, 7610, 7, 80, 2, 2, 7610, 7611, 7, 85, 2, 2, 7611, 7612, + 7, 67, 2, 2, 7612, 7613, 7, 69, 2, 2, 7613, 7614, 7, 86, 2, 2, 7614, 7615, + 7, 75, 2, 2, 7615, 7616, 7, 81, 2, 2, 7616, 7617, 7, 80, 2, 2, 7617, 7618, + 7, 67, 2, 2, 7618, 7619, 7, 78, 2, 2, 7619, 1196, 3, 2, 2, 2, 7620, 7621, + 7, 86, 2, 2, 7621, 7622, 7, 84, 2, 2, 7622, 7623, 7, 75, 2, 2, 7623, 7624, + 7, 73, 2, 2, 7624, 7625, 7, 73, 2, 2, 7625, 7626, 7, 71, 2, 2, 7626, 7627, + 7, 84, 2, 2, 7627, 7628, 7, 85, 2, 2, 7628, 1198, 3, 2, 2, 2, 7629, 7630, + 7, 86, 2, 2, 7630, 7631, 7, 84, 2, 2, 7631, 7632, 7, 87, 2, 2, 7632, 7633, + 7, 80, 2, 2, 7633, 7634, 7, 69, 2, 2, 7634, 7635, 7, 67, 2, 2, 7635, 7636, + 7, 86, 2, 2, 7636, 7637, 7, 71, 2, 2, 7637, 1200, 3, 2, 2, 2, 7638, 7639, + 7, 87, 2, 2, 7639, 7640, 7, 80, 2, 2, 7640, 7641, 7, 70, 2, 2, 7641, 7642, + 7, 71, 2, 2, 7642, 7643, 7, 72, 2, 2, 7643, 7644, 7, 75, 2, 2, 7644, 7645, + 7, 80, 2, 2, 7645, 7646, 7, 71, 2, 2, 7646, 7647, 7, 70, 2, 2, 7647, 1202, + 3, 2, 2, 2, 7648, 7649, 7, 87, 2, 2, 7649, 7650, 7, 80, 2, 2, 7650, 7651, + 7, 70, 2, 2, 7651, 7652, 7, 81, 2, 2, 7652, 7653, 7, 72, 2, 2, 7653, 7654, + 7, 75, 2, 2, 7654, 7655, 7, 78, 2, 2, 7655, 7656, 7, 71, 2, 2, 7656, 1204, + 3, 2, 2, 2, 7657, 7658, 7, 87, 2, 2, 7658, 7659, 7, 80, 2, 2, 7659, 7660, + 7, 70, 2, 2, 7660, 7661, 7, 81, 2, 2, 7661, 7662, 7, 97, 2, 2, 7662, 7663, + 7, 68, 2, 2, 7663, 7664, 7, 87, 2, 2, 7664, 7665, 7, 72, 2, 2, 7665, 7666, + 7, 72, 2, 2, 7666, 7667, 7, 71, 2, 2, 7667, 7668, 7, 84, 2, 2, 7668, 7669, + 7, 97, 2, 2, 7669, 7670, 7, 85, 2, 2, 7670, 7671, 7, 75, 2, 2, 7671, 7672, + 7, 92, 2, 2, 7672, 7673, 7, 71, 2, 2, 7673, 1206, 3, 2, 2, 2, 7674, 7675, + 7, 87, 2, 2, 7675, 7676, 7, 80, 2, 2, 7676, 7677, 7, 75, 2, 2, 7677, 7678, + 7, 80, 2, 2, 7678, 7679, 7, 85, 2, 2, 7679, 7680, 7, 86, 2, 2, 7680, 7681, + 7, 67, 2, 2, 7681, 7682, 7, 78, 2, 2, 7682, 7683, 7, 78, 2, 2, 7683, 1208, + 3, 2, 2, 2, 7684, 7685, 7, 87, 2, 2, 7685, 7686, 7, 80, 2, 2, 7686, 7687, + 7, 77, 2, 2, 7687, 7688, 7, 80, 2, 2, 7688, 7689, 7, 81, 2, 2, 7689, 7690, + 7, 89, 2, 2, 7690, 7691, 7, 80, 2, 2, 7691, 1210, 3, 2, 2, 2, 7692, 7693, + 7, 87, 2, 2, 7693, 7694, 7, 80, 2, 2, 7694, 7695, 7, 86, 2, 2, 7695, 7696, + 7, 75, 2, 2, 7696, 7697, 7, 78, 2, 2, 7697, 1212, 3, 2, 2, 2, 7698, 7699, + 7, 87, 2, 2, 7699, 7700, 7, 82, 2, 2, 7700, 7701, 7, 73, 2, 2, 7701, 7702, + 7, 84, 2, 2, 7702, 7703, 7, 67, 2, 2, 7703, 7704, 7, 70, 2, 2, 7704, 7705, + 7, 71, 2, 2, 7705, 1214, 3, 2, 2, 2, 7706, 7707, 7, 87, 2, 2, 7707, 7708, + 7, 85, 2, 2, 7708, 7709, 7, 71, 2, 2, 7709, 7710, 7, 84, 2, 2, 7710, 1216, + 3, 2, 2, 2, 7711, 7712, 7, 87, 2, 2, 7712, 7713, 7, 85, 2, 2, 7713, 7714, + 7, 71, 2, 2, 7714, 7715, 7, 97, 2, 2, 7715, 7716, 7, 72, 2, 2, 7716, 7717, + 7, 84, 2, 2, 7717, 7718, 7, 79, 2, 2, 7718, 1218, 3, 2, 2, 2, 7719, 7720, + 7, 87, 2, 2, 7720, 7721, 7, 85, 2, 2, 7721, 7722, 7, 71, 2, 2, 7722, 7723, + 7, 84, 2, 2, 7723, 7724, 7, 97, 2, 2, 7724, 7725, 7, 84, 2, 2, 7725, 7726, + 7, 71, 2, 2, 7726, 7727, 7, 85, 2, 2, 7727, 7728, 7, 81, 2, 2, 7728, 7729, + 7, 87, 2, 2, 7729, 7730, 7, 84, 2, 2, 7730, 7731, 7, 69, 2, 2, 7731, 7732, + 7, 71, 2, 2, 7732, 7733, 7, 85, 2, 2, 7733, 1220, 3, 2, 2, 2, 7734, 7735, + 7, 88, 2, 2, 7735, 7736, 7, 67, 2, 2, 7736, 7737, 7, 78, 2, 2, 7737, 7738, + 7, 75, 2, 2, 7738, 7739, 7, 70, 2, 2, 7739, 7740, 7, 67, 2, 2, 7740, 7741, + 7, 86, 2, 2, 7741, 7742, 7, 75, 2, 2, 7742, 7743, 7, 81, 2, 2, 7743, 7744, + 7, 80, 2, 2, 7744, 1222, 3, 2, 2, 2, 7745, 7746, 7, 88, 2, 2, 7746, 7747, + 7, 67, 2, 2, 7747, 7748, 7, 78, 2, 2, 7748, 7749, 7, 87, 2, 2, 7749, 7750, + 7, 71, 2, 2, 7750, 1224, 3, 2, 2, 2, 7751, 7752, 7, 88, 2, 2, 7752, 7753, + 7, 67, 2, 2, 7753, 7754, 7, 84, 2, 2, 7754, 7755, 7, 75, 2, 2, 7755, 7756, + 7, 67, 2, 2, 7756, 7757, 7, 68, 2, 2, 7757, 7758, 7, 78, 2, 2, 7758, 7759, + 7, 71, 2, 2, 7759, 7760, 7, 85, 2, 2, 7760, 1226, 3, 2, 2, 2, 7761, 7762, + 7, 88, 2, 2, 7762, 7763, 7, 75, 2, 2, 7763, 7764, 7, 71, 2, 2, 7764, 7765, + 7, 89, 2, 2, 7765, 1228, 3, 2, 2, 2, 7766, 7767, 7, 88, 2, 2, 7767, 7768, + 7, 75, 2, 2, 7768, 7769, 7, 84, 2, 2, 7769, 7770, 7, 86, 2, 2, 7770, 7771, + 7, 87, 2, 2, 7771, 7772, 7, 67, 2, 2, 7772, 7773, 7, 78, 2, 2, 7773, 1230, + 3, 2, 2, 2, 7774, 7775, 7, 88, 2, 2, 7775, 7776, 7, 75, 2, 2, 7776, 7777, + 7, 85, 2, 2, 7777, 7778, 7, 75, 2, 2, 7778, 7779, 7, 68, 2, 2, 7779, 7780, + 7, 78, 2, 2, 7780, 7781, 7, 71, 2, 2, 7781, 1232, 3, 2, 2, 2, 7782, 7783, + 7, 89, 2, 2, 7783, 7784, 7, 67, 2, 2, 7784, 7785, 7, 75, 2, 2, 7785, 7786, + 7, 86, 2, 2, 7786, 1234, 3, 2, 2, 2, 7787, 7788, 7, 89, 2, 2, 7788, 7789, + 7, 67, 2, 2, 7789, 7790, 7, 84, 2, 2, 7790, 7791, 7, 80, 2, 2, 7791, 7792, + 7, 75, 2, 2, 7792, 7793, 7, 80, 2, 2, 7793, 7794, 7, 73, 2, 2, 7794, 7795, + 7, 85, 2, 2, 7795, 1236, 3, 2, 2, 2, 7796, 7797, 7, 89, 2, 2, 7797, 7798, + 7, 75, 2, 2, 7798, 7799, 7, 86, 2, 2, 7799, 7800, 7, 74, 2, 2, 7800, 7801, + 7, 81, 2, 2, 7801, 7802, 7, 87, 2, 2, 7802, 7803, 7, 86, 2, 2, 7803, 1238, + 3, 2, 2, 2, 7804, 7805, 7, 89, 2, 2, 7805, 7806, 7, 81, 2, 2, 7806, 7807, + 7, 84, 2, 2, 7807, 7808, 7, 77, 2, 2, 7808, 1240, 3, 2, 2, 2, 7809, 7810, + 7, 89, 2, 2, 7810, 7811, 7, 84, 2, 2, 7811, 7812, 7, 67, 2, 2, 7812, 7813, + 7, 82, 2, 2, 7813, 7814, 7, 82, 2, 2, 7814, 7815, 7, 71, 2, 2, 7815, 7816, + 7, 84, 2, 2, 7816, 1242, 3, 2, 2, 2, 7817, 7818, 7, 90, 2, 2, 7818, 7819, + 7, 55, 2, 2, 7819, 7820, 7, 50, 2, 2, 7820, 7821, 7, 59, 2, 2, 7821, 1244, + 3, 2, 2, 2, 7822, 7823, 7, 90, 2, 2, 7823, 7824, 7, 67, 2, 2, 7824, 1246, + 3, 2, 2, 2, 7825, 7826, 7, 90, 2, 2, 7826, 7827, 7, 79, 2, 2, 7827, 7828, + 7, 78, 2, 2, 7828, 1248, 3, 2, 2, 2, 7829, 7830, 7, 71, 2, 2, 7830, 7831, + 7, 87, 2, 2, 7831, 7832, 7, 84, 2, 2, 7832, 1250, 3, 2, 2, 2, 7833, 7834, + 7, 87, 2, 2, 7834, 7835, 7, 85, 2, 2, 7835, 7836, 7, 67, 2, 2, 7836, 1252, + 3, 2, 2, 2, 7837, 7838, 7, 76, 2, 2, 7838, 7839, 7, 75, 2, 2, 7839, 7840, + 7, 85, 2, 2, 7840, 1254, 3, 2, 2, 2, 7841, 7842, 7, 75, 2, 2, 7842, 7843, + 7, 85, 2, 2, 7843, 7844, 7, 81, 2, 2, 7844, 1256, 3, 2, 2, 2, 7845, 7846, + 7, 75, 2, 2, 7846, 7847, 7, 80, 2, 2, 7847, 7848, 7, 86, 2, 2, 7848, 7849, + 7, 71, 2, 2, 7849, 7850, 7, 84, 2, 2, 7850, 7851, 7, 80, 2, 2, 7851, 7852, + 7, 67, 2, 2, 7852, 7853, 7, 78, 2, 2, 7853, 1258, 3, 2, 2, 2, 7854, 7855, + 7, 83, 2, 2, 7855, 7856, 7, 87, 2, 2, 7856, 7857, 7, 67, 2, 2, 7857, 7858, + 7, 84, 2, 2, 7858, 7859, 7, 86, 2, 2, 7859, 7860, 7, 71, 2, 2, 7860, 7861, + 7, 84, 2, 2, 7861, 1260, 3, 2, 2, 2, 7862, 7863, 7, 79, 2, 2, 7863, 7864, + 7, 81, 2, 2, 7864, 7865, 7, 80, 2, 2, 7865, 7866, 7, 86, 2, 2, 7866, 7867, + 7, 74, 2, 2, 7867, 1262, 3, 2, 2, 2, 7868, 7869, 7, 70, 2, 2, 7869, 7870, + 7, 67, 2, 2, 7870, 7871, 7, 91, 2, 2, 7871, 1264, 3, 2, 2, 2, 7872, 7873, + 7, 74, 2, 2, 7873, 7874, 7, 81, 2, 2, 7874, 7875, 7, 87, 2, 2, 7875, 7876, + 7, 84, 2, 2, 7876, 1266, 3, 2, 2, 2, 7877, 7878, 7, 79, 2, 2, 7878, 7879, + 7, 75, 2, 2, 7879, 7880, 7, 80, 2, 2, 7880, 7881, 7, 87, 2, 2, 7881, 7882, + 7, 86, 2, 2, 7882, 7883, 7, 71, 2, 2, 7883, 1268, 3, 2, 2, 2, 7884, 7885, + 7, 89, 2, 2, 7885, 7886, 7, 71, 2, 2, 7886, 7887, 7, 71, 2, 2, 7887, 7888, + 7, 77, 2, 2, 7888, 1270, 3, 2, 2, 2, 7889, 7890, 7, 85, 2, 2, 7890, 7891, + 7, 71, 2, 2, 7891, 7892, 7, 69, 2, 2, 7892, 7893, 7, 81, 2, 2, 7893, 7894, + 7, 80, 2, 2, 7894, 7895, 7, 70, 2, 2, 7895, 1272, 3, 2, 2, 2, 7896, 7897, + 7, 79, 2, 2, 7897, 7898, 7, 75, 2, 2, 7898, 7899, 7, 69, 2, 2, 7899, 7900, + 7, 84, 2, 2, 7900, 7901, 7, 81, 2, 2, 7901, 7902, 7, 85, 2, 2, 7902, 7903, + 7, 71, 2, 2, 7903, 7904, 7, 69, 2, 2, 7904, 7905, 7, 81, 2, 2, 7905, 7906, + 7, 80, 2, 2, 7906, 7907, 7, 70, 2, 2, 7907, 1274, 3, 2, 2, 2, 7908, 7909, + 7, 86, 2, 2, 7909, 7910, 7, 67, 2, 2, 7910, 7911, 7, 68, 2, 2, 7911, 7912, + 7, 78, 2, 2, 7912, 7913, 7, 71, 2, 2, 7913, 7914, 7, 85, 2, 2, 7914, 1276, + 3, 2, 2, 2, 7915, 7916, 7, 84, 2, 2, 7916, 7917, 7, 81, 2, 2, 7917, 7918, + 7, 87, 2, 2, 7918, 7919, 7, 86, 2, 2, 7919, 7920, 7, 75, 2, 2, 7920, 7921, + 7, 80, 2, 2, 7921, 7922, 7, 71, 2, 2, 7922, 1278, 3, 2, 2, 2, 7923, 7924, + 7, 71, 2, 2, 7924, 7925, 7, 90, 2, 2, 7925, 7926, 7, 71, 2, 2, 7926, 7927, + 7, 69, 2, 2, 7927, 7928, 7, 87, 2, 2, 7928, 7929, 7, 86, 2, 2, 7929, 7930, + 7, 71, 2, 2, 7930, 1280, 3, 2, 2, 2, 7931, 7932, 7, 72, 2, 2, 7932, 7933, + 7, 75, 2, 2, 7933, 7934, 7, 78, 2, 2, 7934, 7935, 7, 71, 2, 2, 7935, 1282, + 3, 2, 2, 2, 7936, 7937, 7, 82, 2, 2, 7937, 7938, 7, 84, 2, 2, 7938, 7939, + 7, 81, 2, 2, 7939, 7940, 7, 69, 2, 2, 7940, 7941, 7, 71, 2, 2, 7941, 7942, + 7, 85, 2, 2, 7942, 7943, 7, 85, 2, 2, 7943, 1284, 3, 2, 2, 2, 7944, 7945, + 7, 84, 2, 2, 7945, 7946, 7, 71, 2, 2, 7946, 7947, 7, 78, 2, 2, 7947, 7948, + 7, 81, 2, 2, 7948, 7949, 7, 67, 2, 2, 7949, 7950, 7, 70, 2, 2, 7950, 1286, + 3, 2, 2, 2, 7951, 7952, 7, 85, 2, 2, 7952, 7953, 7, 74, 2, 2, 7953, 7954, + 7, 87, 2, 2, 7954, 7955, 7, 86, 2, 2, 7955, 7956, 7, 70, 2, 2, 7956, 7957, + 7, 81, 2, 2, 7957, 7958, 7, 89, 2, 2, 7958, 7959, 7, 80, 2, 2, 7959, 1288, + 3, 2, 2, 2, 7960, 7961, 7, 85, 2, 2, 7961, 7962, 7, 87, 2, 2, 7962, 7963, + 7, 82, 2, 2, 7963, 7964, 7, 71, 2, 2, 7964, 7965, 7, 84, 2, 2, 7965, 1290, + 3, 2, 2, 2, 7966, 7967, 7, 82, 2, 2, 7967, 7968, 7, 84, 2, 2, 7968, 7969, + 7, 75, 2, 2, 7969, 7970, 7, 88, 2, 2, 7970, 7971, 7, 75, 2, 2, 7971, 7972, + 7, 78, 2, 2, 7972, 7973, 7, 71, 2, 2, 7973, 7974, 7, 73, 2, 2, 7974, 7975, + 7, 71, 2, 2, 7975, 7976, 7, 85, 2, 2, 7976, 1292, 3, 2, 2, 2, 7977, 7978, + 7, 67, 2, 2, 7978, 7979, 7, 82, 2, 2, 7979, 7980, 7, 82, 2, 2, 7980, 7981, + 7, 78, 2, 2, 7981, 7982, 7, 75, 2, 2, 7982, 7983, 7, 69, 2, 2, 7983, 7984, + 7, 67, 2, 2, 7984, 7985, 7, 86, 2, 2, 7985, 7986, 7, 75, 2, 2, 7986, 7987, + 7, 81, 2, 2, 7987, 7988, 7, 80, 2, 2, 7988, 7989, 7, 97, 2, 2, 7989, 7990, + 7, 82, 2, 2, 7990, 7991, 7, 67, 2, 2, 7991, 7992, 7, 85, 2, 2, 7992, 7993, + 7, 85, 2, 2, 7993, 7994, 7, 89, 2, 2, 7994, 7995, 7, 81, 2, 2, 7995, 7996, + 7, 84, 2, 2, 7996, 7997, 7, 70, 2, 2, 7997, 7998, 7, 97, 2, 2, 7998, 7999, + 7, 67, 2, 2, 7999, 8000, 7, 70, 2, 2, 8000, 8001, 7, 79, 2, 2, 8001, 8002, + 7, 75, 2, 2, 8002, 8003, 7, 80, 2, 2, 8003, 1294, 3, 2, 2, 2, 8004, 8005, + 7, 67, 2, 2, 8005, 8006, 7, 87, 2, 2, 8006, 8007, 7, 70, 2, 2, 8007, 8008, + 7, 75, 2, 2, 8008, 8009, 7, 86, 2, 2, 8009, 8010, 7, 97, 2, 2, 8010, 8011, + 7, 67, 2, 2, 8011, 8012, 7, 70, 2, 2, 8012, 8013, 7, 79, 2, 2, 8013, 8014, + 7, 75, 2, 2, 8014, 8015, 7, 80, 2, 2, 8015, 1296, 3, 2, 2, 2, 8016, 8017, + 7, 68, 2, 2, 8017, 8018, 7, 67, 2, 2, 8018, 8019, 7, 69, 2, 2, 8019, 8020, + 7, 77, 2, 2, 8020, 8021, 7, 87, 2, 2, 8021, 8022, 7, 82, 2, 2, 8022, 8023, + 7, 97, 2, 2, 8023, 8024, 7, 67, 2, 2, 8024, 8025, 7, 70, 2, 2, 8025, 8026, + 7, 79, 2, 2, 8026, 8027, 7, 75, 2, 2, 8027, 8028, 7, 80, 2, 2, 8028, 1298, + 3, 2, 2, 2, 8029, 8030, 7, 68, 2, 2, 8030, 8031, 7, 75, 2, 2, 8031, 8032, + 7, 80, 2, 2, 8032, 8033, 7, 78, 2, 2, 8033, 8034, 7, 81, 2, 2, 8034, 8035, + 7, 73, 2, 2, 8035, 8036, 7, 97, 2, 2, 8036, 8037, 7, 67, 2, 2, 8037, 8038, + 7, 70, 2, 2, 8038, 8039, 7, 79, 2, 2, 8039, 8040, 7, 75, 2, 2, 8040, 8041, + 7, 80, 2, 2, 8041, 1300, 3, 2, 2, 2, 8042, 8043, 7, 68, 2, 2, 8043, 8044, + 7, 75, 2, 2, 8044, 8045, 7, 80, 2, 2, 8045, 8046, 7, 78, 2, 2, 8046, 8047, + 7, 81, 2, 2, 8047, 8048, 7, 73, 2, 2, 8048, 8049, 7, 97, 2, 2, 8049, 8050, + 7, 71, 2, 2, 8050, 8051, 7, 80, 2, 2, 8051, 8052, 7, 69, 2, 2, 8052, 8053, + 7, 84, 2, 2, 8053, 8054, 7, 91, 2, 2, 8054, 8055, 7, 82, 2, 2, 8055, 8056, + 7, 86, 2, 2, 8056, 8057, 7, 75, 2, 2, 8057, 8058, 7, 81, 2, 2, 8058, 8059, + 7, 80, 2, 2, 8059, 8060, 7, 97, 2, 2, 8060, 8061, 7, 67, 2, 2, 8061, 8062, + 7, 70, 2, 2, 8062, 8063, 7, 79, 2, 2, 8063, 8064, 7, 75, 2, 2, 8064, 8065, + 7, 80, 2, 2, 8065, 1302, 3, 2, 2, 2, 8066, 8067, 7, 69, 2, 2, 8067, 8068, + 7, 78, 2, 2, 8068, 8069, 7, 81, 2, 2, 8069, 8070, 7, 80, 2, 2, 8070, 8071, + 7, 71, 2, 2, 8071, 8072, 7, 97, 2, 2, 8072, 8073, 7, 67, 2, 2, 8073, 8074, + 7, 70, 2, 2, 8074, 8075, 7, 79, 2, 2, 8075, 8076, 7, 75, 2, 2, 8076, 8077, + 7, 80, 2, 2, 8077, 1304, 3, 2, 2, 2, 8078, 8079, 7, 69, 2, 2, 8079, 8080, + 7, 81, 2, 2, 8080, 8081, 7, 80, 2, 2, 8081, 8082, 7, 80, 2, 2, 8082, 8083, + 7, 71, 2, 2, 8083, 8084, 7, 69, 2, 2, 8084, 8085, 7, 86, 2, 2, 8085, 8086, + 7, 75, 2, 2, 8086, 8087, 7, 81, 2, 2, 8087, 8088, 7, 80, 2, 2, 8088, 8089, + 7, 97, 2, 2, 8089, 8090, 7, 67, 2, 2, 8090, 8091, 7, 70, 2, 2, 8091, 8092, + 7, 79, 2, 2, 8092, 8093, 7, 75, 2, 2, 8093, 8094, 7, 80, 2, 2, 8094, 1306, + 3, 2, 2, 2, 8095, 8096, 7, 71, 2, 2, 8096, 8097, 7, 80, 2, 2, 8097, 8098, + 7, 69, 2, 2, 8098, 8099, 7, 84, 2, 2, 8099, 8100, 7, 91, 2, 2, 8100, 8101, + 7, 82, 2, 2, 8101, 8102, 7, 86, 2, 2, 8102, 8103, 7, 75, 2, 2, 8103, 8104, + 7, 81, 2, 2, 8104, 8105, 7, 80, 2, 2, 8105, 8106, 7, 97, 2, 2, 8106, 8107, + 7, 77, 2, 2, 8107, 8108, 7, 71, 2, 2, 8108, 8109, 7, 91, 2, 2, 8109, 8110, + 7, 97, 2, 2, 8110, 8111, 7, 67, 2, 2, 8111, 8112, 7, 70, 2, 2, 8112, 8113, + 7, 79, 2, 2, 8113, 8114, 7, 75, 2, 2, 8114, 8115, 7, 80, 2, 2, 8115, 1308, + 3, 2, 2, 2, 8116, 8117, 7, 72, 2, 2, 8117, 8118, 7, 75, 2, 2, 8118, 8119, + 7, 84, 2, 2, 8119, 8120, 7, 71, 2, 2, 8120, 8121, 7, 89, 2, 2, 8121, 8122, + 7, 67, 2, 2, 8122, 8123, 7, 78, 2, 2, 8123, 8124, 7, 78, 2, 2, 8124, 8125, + 7, 97, 2, 2, 8125, 8126, 7, 67, 2, 2, 8126, 8127, 7, 70, 2, 2, 8127, 8128, + 7, 79, 2, 2, 8128, 8129, 7, 75, 2, 2, 8129, 8130, 7, 80, 2, 2, 8130, 1310, + 3, 2, 2, 2, 8131, 8132, 7, 72, 2, 2, 8132, 8133, 7, 75, 2, 2, 8133, 8134, + 7, 84, 2, 2, 8134, 8135, 7, 71, 2, 2, 8135, 8136, 7, 89, 2, 2, 8136, 8137, + 7, 67, 2, 2, 8137, 8138, 7, 78, 2, 2, 8138, 8139, 7, 78, 2, 2, 8139, 8140, + 7, 97, 2, 2, 8140, 8141, 7, 87, 2, 2, 8141, 8142, 7, 85, 2, 2, 8142, 8143, + 7, 71, 2, 2, 8143, 8144, 7, 84, 2, 2, 8144, 1312, 3, 2, 2, 2, 8145, 8146, + 7, 72, 2, 2, 8146, 8147, 7, 78, 2, 2, 8147, 8148, 7, 87, 2, 2, 8148, 8149, + 7, 85, 2, 2, 8149, 8150, 7, 74, 2, 2, 8150, 8151, 7, 97, 2, 2, 8151, 8152, + 7, 81, 2, 2, 8152, 8153, 7, 82, 2, 2, 8153, 8154, 7, 86, 2, 2, 8154, 8155, + 7, 75, 2, 2, 8155, 8156, 7, 79, 2, 2, 8156, 8157, 7, 75, 2, 2, 8157, 8158, + 7, 92, 2, 2, 8158, 8159, 7, 71, 2, 2, 8159, 8160, 7, 84, 2, 2, 8160, 8161, + 7, 97, 2, 2, 8161, 8162, 7, 69, 2, 2, 8162, 8163, 7, 81, 2, 2, 8163, 8164, + 7, 85, 2, 2, 8164, 8165, 7, 86, 2, 2, 8165, 8166, 7, 85, 2, 2, 8166, 1314, + 3, 2, 2, 2, 8167, 8168, 7, 72, 2, 2, 8168, 8169, 7, 78, 2, 2, 8169, 8170, + 7, 87, 2, 2, 8170, 8171, 7, 85, 2, 2, 8171, 8172, 7, 74, 2, 2, 8172, 8173, + 7, 97, 2, 2, 8173, 8174, 7, 85, 2, 2, 8174, 8175, 7, 86, 2, 2, 8175, 8176, + 7, 67, 2, 2, 8176, 8177, 7, 86, 2, 2, 8177, 8178, 7, 87, 2, 2, 8178, 8179, + 7, 85, 2, 2, 8179, 1316, 3, 2, 2, 2, 8180, 8181, 7, 72, 2, 2, 8181, 8182, + 7, 78, 2, 2, 8182, 8183, 7, 87, 2, 2, 8183, 8184, 7, 85, 2, 2, 8184, 8185, + 7, 74, 2, 2, 8185, 8186, 7, 97, 2, 2, 8186, 8187, 7, 86, 2, 2, 8187, 8188, + 7, 67, 2, 2, 8188, 8189, 7, 68, 2, 2, 8189, 8190, 7, 78, 2, 2, 8190, 8191, + 7, 71, 2, 2, 8191, 8192, 7, 85, 2, 2, 8192, 1318, 3, 2, 2, 2, 8193, 8194, + 7, 72, 2, 2, 8194, 8195, 7, 78, 2, 2, 8195, 8196, 7, 87, 2, 2, 8196, 8197, + 7, 85, 2, 2, 8197, 8198, 7, 74, 2, 2, 8198, 8199, 7, 97, 2, 2, 8199, 8200, + 7, 87, 2, 2, 8200, 8201, 7, 85, 2, 2, 8201, 8202, 7, 71, 2, 2, 8202, 8203, + 7, 84, 2, 2, 8203, 8204, 7, 97, 2, 2, 8204, 8205, 7, 84, 2, 2, 8205, 8206, + 7, 71, 2, 2, 8206, 8207, 7, 85, 2, 2, 8207, 8208, 7, 81, 2, 2, 8208, 8209, + 7, 87, 2, 2, 8209, 8210, 7, 84, 2, 2, 8210, 8211, 7, 69, 2, 2, 8211, 8212, + 7, 71, 2, 2, 8212, 8213, 7, 85, 2, 2, 8213, 1320, 3, 2, 2, 2, 8214, 8215, + 7, 73, 2, 2, 8215, 8216, 7, 84, 2, 2, 8216, 8217, 7, 81, 2, 2, 8217, 8218, + 7, 87, 2, 2, 8218, 8219, 7, 82, 2, 2, 8219, 8220, 7, 97, 2, 2, 8220, 8221, + 7, 84, 2, 2, 8221, 8222, 7, 71, 2, 2, 8222, 8223, 7, 82, 2, 2, 8223, 8224, + 7, 78, 2, 2, 8224, 8225, 7, 75, 2, 2, 8225, 8226, 7, 69, 2, 2, 8226, 8227, + 7, 67, 2, 2, 8227, 8228, 7, 86, 2, 2, 8228, 8229, 7, 75, 2, 2, 8229, 8230, + 7, 81, 2, 2, 8230, 8231, 7, 80, 2, 2, 8231, 8232, 7, 97, 2, 2, 8232, 8233, + 7, 67, 2, 2, 8233, 8234, 7, 70, 2, 2, 8234, 8235, 7, 79, 2, 2, 8235, 8236, + 7, 75, 2, 2, 8236, 8237, 7, 80, 2, 2, 8237, 1322, 3, 2, 2, 2, 8238, 8239, + 7, 75, 2, 2, 8239, 8240, 7, 80, 2, 2, 8240, 8241, 7, 80, 2, 2, 8241, 8242, + 7, 81, 2, 2, 8242, 8243, 7, 70, 2, 2, 8243, 8244, 7, 68, 2, 2, 8244, 8245, + 7, 97, 2, 2, 8245, 8246, 7, 84, 2, 2, 8246, 8247, 7, 71, 2, 2, 8247, 8248, + 7, 70, 2, 2, 8248, 8249, 7, 81, 2, 2, 8249, 8250, 7, 97, 2, 2, 8250, 8251, + 7, 78, 2, 2, 8251, 8252, 7, 81, 2, 2, 8252, 8253, 7, 73, 2, 2, 8253, 8254, + 7, 97, 2, 2, 8254, 8255, 7, 67, 2, 2, 8255, 8256, 7, 84, 2, 2, 8256, 8257, + 7, 69, 2, 2, 8257, 8258, 7, 74, 2, 2, 8258, 8259, 7, 75, 2, 2, 8259, 8260, + 7, 88, 2, 2, 8260, 8261, 7, 71, 2, 2, 8261, 1324, 3, 2, 2, 2, 8262, 8263, + 7, 75, 2, 2, 8263, 8264, 7, 80, 2, 2, 8264, 8265, 7, 80, 2, 2, 8265, 8266, + 7, 81, 2, 2, 8266, 8267, 7, 70, 2, 2, 8267, 8268, 7, 68, 2, 2, 8268, 8269, + 7, 97, 2, 2, 8269, 8270, 7, 84, 2, 2, 8270, 8271, 7, 71, 2, 2, 8271, 8272, + 7, 70, 2, 2, 8272, 8273, 7, 81, 2, 2, 8273, 8274, 7, 97, 2, 2, 8274, 8275, + 7, 78, 2, 2, 8275, 8276, 7, 81, 2, 2, 8276, 8277, 7, 73, 2, 2, 8277, 8278, + 7, 97, 2, 2, 8278, 8279, 7, 71, 2, 2, 8279, 8280, 7, 80, 2, 2, 8280, 8281, + 7, 67, 2, 2, 8281, 8282, 7, 68, 2, 2, 8282, 8283, 7, 78, 2, 2, 8283, 8284, + 7, 71, 2, 2, 8284, 1326, 3, 2, 2, 2, 8285, 8286, 7, 80, 2, 2, 8286, 8287, + 7, 70, 2, 2, 8287, 8288, 7, 68, 2, 2, 8288, 8289, 7, 97, 2, 2, 8289, 8290, + 7, 85, 2, 2, 8290, 8291, 7, 86, 2, 2, 8291, 8292, 7, 81, 2, 2, 8292, 8293, + 7, 84, 2, 2, 8293, 8294, 7, 71, 2, 2, 8294, 8295, 7, 70, 2, 2, 8295, 8296, + 7, 97, 2, 2, 8296, 8297, 7, 87, 2, 2, 8297, 8298, 7, 85, 2, 2, 8298, 8299, + 7, 71, 2, 2, 8299, 8300, 7, 84, 2, 2, 8300, 1328, 3, 2, 2, 2, 8301, 8302, + 7, 82, 2, 2, 8302, 8303, 7, 71, 2, 2, 8303, 8304, 7, 84, 2, 2, 8304, 8305, + 7, 85, 2, 2, 8305, 8306, 7, 75, 2, 2, 8306, 8307, 7, 85, 2, 2, 8307, 8308, + 7, 86, 2, 2, 8308, 8309, 7, 97, 2, 2, 8309, 8310, 7, 84, 2, 2, 8310, 8311, + 7, 81, 2, 2, 8311, 8312, 7, 97, 2, 2, 8312, 8313, 7, 88, 2, 2, 8313, 8314, + 7, 67, 2, 2, 8314, 8315, 7, 84, 2, 2, 8315, 8316, 7, 75, 2, 2, 8316, 8317, + 7, 67, 2, 2, 8317, 8318, 7, 68, 2, 2, 8318, 8319, 7, 78, 2, 2, 8319, 8320, + 7, 71, 2, 2, 8320, 8321, 7, 85, 2, 2, 8321, 8322, 7, 97, 2, 2, 8322, 8323, + 7, 67, 2, 2, 8323, 8324, 7, 70, 2, 2, 8324, 8325, 7, 79, 2, 2, 8325, 8326, + 7, 75, 2, 2, 8326, 8327, 7, 80, 2, 2, 8327, 1330, 3, 2, 2, 2, 8328, 8329, + 7, 84, 2, 2, 8329, 8330, 7, 71, 2, 2, 8330, 8331, 7, 82, 2, 2, 8331, 8332, + 7, 78, 2, 2, 8332, 8333, 7, 75, 2, 2, 8333, 8334, 7, 69, 2, 2, 8334, 8335, + 7, 67, 2, 2, 8335, 8336, 7, 86, 2, 2, 8336, 8337, 7, 75, 2, 2, 8337, 8338, + 7, 81, 2, 2, 8338, 8339, 7, 80, 2, 2, 8339, 8340, 7, 97, 2, 2, 8340, 8341, + 7, 67, 2, 2, 8341, 8342, 7, 82, 2, 2, 8342, 8343, 7, 82, 2, 2, 8343, 8344, + 7, 78, 2, 2, 8344, 8345, 7, 75, 2, 2, 8345, 8346, 7, 71, 2, 2, 8346, 8347, + 7, 84, 2, 2, 8347, 1332, 3, 2, 2, 2, 8348, 8349, 7, 84, 2, 2, 8349, 8350, + 7, 71, 2, 2, 8350, 8351, 7, 82, 2, 2, 8351, 8352, 7, 78, 2, 2, 8352, 8353, + 7, 75, 2, 2, 8353, 8354, 7, 69, 2, 2, 8354, 8355, 7, 67, 2, 2, 8355, 8356, + 7, 86, 2, 2, 8356, 8357, 7, 75, 2, 2, 8357, 8358, 7, 81, 2, 2, 8358, 8359, + 7, 80, 2, 2, 8359, 8360, 7, 97, 2, 2, 8360, 8361, 7, 85, 2, 2, 8361, 8362, + 7, 78, 2, 2, 8362, 8363, 7, 67, 2, 2, 8363, 8364, 7, 88, 2, 2, 8364, 8365, + 7, 71, 2, 2, 8365, 8366, 7, 97, 2, 2, 8366, 8367, 7, 67, 2, 2, 8367, 8368, + 7, 70, 2, 2, 8368, 8369, 7, 79, 2, 2, 8369, 8370, 7, 75, 2, 2, 8370, 8371, + 7, 80, 2, 2, 8371, 1334, 3, 2, 2, 2, 8372, 8373, 7, 84, 2, 2, 8373, 8374, + 7, 71, 2, 2, 8374, 8375, 7, 85, 2, 2, 8375, 8376, 7, 81, 2, 2, 8376, 8377, + 7, 87, 2, 2, 8377, 8378, 7, 84, 2, 2, 8378, 8379, 7, 69, 2, 2, 8379, 8380, + 7, 71, 2, 2, 8380, 8381, 7, 97, 2, 2, 8381, 8382, 7, 73, 2, 2, 8382, 8383, + 7, 84, 2, 2, 8383, 8384, 7, 81, 2, 2, 8384, 8385, 7, 87, 2, 2, 8385, 8386, + 7, 82, 2, 2, 8386, 8387, 7, 97, 2, 2, 8387, 8388, 7, 67, 2, 2, 8388, 8389, + 7, 70, 2, 2, 8389, 8390, 7, 79, 2, 2, 8390, 8391, 7, 75, 2, 2, 8391, 8392, + 7, 80, 2, 2, 8392, 1336, 3, 2, 2, 2, 8393, 8394, 7, 84, 2, 2, 8394, 8395, + 7, 71, 2, 2, 8395, 8396, 7, 85, 2, 2, 8396, 8397, 7, 81, 2, 2, 8397, 8398, + 7, 87, 2, 2, 8398, 8399, 7, 84, 2, 2, 8399, 8400, 7, 69, 2, 2, 8400, 8401, + 7, 71, 2, 2, 8401, 8402, 7, 97, 2, 2, 8402, 8403, 7, 73, 2, 2, 8403, 8404, + 7, 84, 2, 2, 8404, 8405, 7, 81, 2, 2, 8405, 8406, 7, 87, 2, 2, 8406, 8407, + 7, 82, 2, 2, 8407, 8408, 7, 97, 2, 2, 8408, 8409, 7, 87, 2, 2, 8409, 8410, + 7, 85, 2, 2, 8410, 8411, 7, 71, 2, 2, 8411, 8412, 7, 84, 2, 2, 8412, 1338, + 3, 2, 2, 2, 8413, 8414, 7, 84, 2, 2, 8414, 8415, 7, 81, 2, 2, 8415, 8416, + 7, 78, 2, 2, 8416, 8417, 7, 71, 2, 2, 8417, 8418, 7, 97, 2, 2, 8418, 8419, + 7, 67, 2, 2, 8419, 8420, 7, 70, 2, 2, 8420, 8421, 7, 79, 2, 2, 8421, 8422, + 7, 75, 2, 2, 8422, 8423, 7, 80, 2, 2, 8423, 1340, 3, 2, 2, 2, 8424, 8425, + 7, 85, 2, 2, 8425, 8426, 7, 71, 2, 2, 8426, 8427, 7, 84, 2, 2, 8427, 8428, + 7, 88, 2, 2, 8428, 8429, 7, 75, 2, 2, 8429, 8430, 7, 69, 2, 2, 8430, 8431, + 7, 71, 2, 2, 8431, 8432, 7, 97, 2, 2, 8432, 8433, 7, 69, 2, 2, 8433, 8434, + 7, 81, 2, 2, 8434, 8435, 7, 80, 2, 2, 8435, 8436, 7, 80, 2, 2, 8436, 8437, + 7, 71, 2, 2, 8437, 8438, 7, 69, 2, 2, 8438, 8439, 7, 86, 2, 2, 8439, 8440, + 7, 75, 2, 2, 8440, 8441, 7, 81, 2, 2, 8441, 8442, 7, 80, 2, 2, 8442, 8443, + 7, 97, 2, 2, 8443, 8444, 7, 67, 2, 2, 8444, 8445, 7, 70, 2, 2, 8445, 8446, + 7, 79, 2, 2, 8446, 8447, 7, 75, 2, 2, 8447, 8448, 7, 80, 2, 2, 8448, 1342, + 3, 2, 2, 2, 8449, 8451, 5, 2147, 1074, 2, 8450, 8449, 3, 2, 2, 2, 8450, + 8451, 3, 2, 2, 2, 8451, 8452, 3, 2, 2, 2, 8452, 8453, 7, 85, 2, 2, 8453, + 8454, 7, 71, 2, 2, 8454, 8455, 7, 85, 2, 2, 8455, 8456, 7, 85, 2, 2, 8456, + 8457, 7, 75, 2, 2, 8457, 8458, 7, 81, 2, 2, 8458, 8459, 7, 80, 2, 2, 8459, + 8460, 7, 97, 2, 2, 8460, 8461, 7, 88, 2, 2, 8461, 8462, 7, 67, 2, 2, 8462, + 8463, 7, 84, 2, 2, 8463, 8464, 7, 75, 2, 2, 8464, 8465, 7, 67, 2, 2, 8465, + 8466, 7, 68, 2, 2, 8466, 8467, 7, 78, 2, 2, 8467, 8468, 7, 71, 2, 2, 8468, + 8469, 7, 85, 2, 2, 8469, 8470, 7, 97, 2, 2, 8470, 8471, 7, 67, 2, 2, 8471, + 8472, 7, 70, 2, 2, 8472, 8473, 7, 79, 2, 2, 8473, 8474, 7, 75, 2, 2, 8474, + 8475, 7, 80, 2, 2, 8475, 8477, 3, 2, 2, 2, 8476, 8478, 5, 2147, 1074, 2, + 8477, 8476, 3, 2, 2, 2, 8477, 8478, 3, 2, 2, 2, 8478, 1344, 3, 2, 2, 2, + 8479, 8480, 7, 85, 2, 2, 8480, 8481, 7, 71, 2, 2, 8481, 8482, 7, 86, 2, + 2, 8482, 8483, 7, 97, 2, 2, 8483, 8484, 7, 87, 2, 2, 8484, 8485, 7, 85, + 2, 2, 8485, 8486, 7, 71, 2, 2, 8486, 8487, 7, 84, 2, 2, 8487, 8488, 7, + 97, 2, 2, 8488, 8489, 7, 75, 2, 2, 8489, 8490, 7, 70, 2, 2, 8490, 1346, + 3, 2, 2, 2, 8491, 8492, 7, 85, 2, 2, 8492, 8493, 7, 74, 2, 2, 8493, 8494, + 7, 81, 2, 2, 8494, 8495, 7, 89, 2, 2, 8495, 8496, 7, 97, 2, 2, 8496, 8497, + 7, 84, 2, 2, 8497, 8498, 7, 81, 2, 2, 8498, 8499, 7, 87, 2, 2, 8499, 8500, + 7, 86, 2, 2, 8500, 8501, 7, 75, 2, 2, 8501, 8502, 7, 80, 2, 2, 8502, 8503, + 7, 71, 2, 2, 8503, 1348, 3, 2, 2, 2, 8504, 8505, 7, 85, 2, 2, 8505, 8506, + 7, 91, 2, 2, 8506, 8507, 7, 85, 2, 2, 8507, 8508, 7, 86, 2, 2, 8508, 8509, + 7, 71, 2, 2, 8509, 8510, 7, 79, 2, 2, 8510, 8511, 7, 97, 2, 2, 8511, 8512, + 7, 88, 2, 2, 8512, 8513, 7, 67, 2, 2, 8513, 8514, 7, 84, 2, 2, 8514, 8515, + 7, 75, 2, 2, 8515, 8516, 7, 67, 2, 2, 8516, 8517, 7, 68, 2, 2, 8517, 8518, + 7, 78, 2, 2, 8518, 8519, 7, 71, 2, 2, 8519, 8520, 7, 85, 2, 2, 8520, 8521, + 7, 97, 2, 2, 8521, 8522, 7, 67, 2, 2, 8522, 8523, 7, 70, 2, 2, 8523, 8524, + 7, 79, 2, 2, 8524, 8525, 7, 75, 2, 2, 8525, 8526, 7, 80, 2, 2, 8526, 1350, + 3, 2, 2, 2, 8527, 8528, 7, 86, 2, 2, 8528, 8529, 7, 67, 2, 2, 8529, 8530, + 7, 68, 2, 2, 8530, 8531, 7, 78, 2, 2, 8531, 8532, 7, 71, 2, 2, 8532, 8533, + 7, 97, 2, 2, 8533, 8534, 7, 71, 2, 2, 8534, 8535, 7, 80, 2, 2, 8535, 8536, + 7, 69, 2, 2, 8536, 8537, 7, 84, 2, 2, 8537, 8538, 7, 91, 2, 2, 8538, 8539, + 7, 82, 2, 2, 8539, 8540, 7, 86, 2, 2, 8540, 8541, 7, 75, 2, 2, 8541, 8542, + 7, 81, 2, 2, 8542, 8543, 7, 80, 2, 2, 8543, 8544, 7, 97, 2, 2, 8544, 8545, + 7, 67, 2, 2, 8545, 8546, 7, 70, 2, 2, 8546, 8547, 7, 79, 2, 2, 8547, 8548, + 7, 75, 2, 2, 8548, 8549, 7, 80, 2, 2, 8549, 1352, 3, 2, 2, 2, 8550, 8551, + 7, 88, 2, 2, 8551, 8552, 7, 71, 2, 2, 8552, 8553, 7, 84, 2, 2, 8553, 8554, + 7, 85, 2, 2, 8554, 8555, 7, 75, 2, 2, 8555, 8556, 7, 81, 2, 2, 8556, 8557, + 7, 80, 2, 2, 8557, 8558, 7, 97, 2, 2, 8558, 8559, 7, 86, 2, 2, 8559, 8560, + 7, 81, 2, 2, 8560, 8561, 7, 77, 2, 2, 8561, 8562, 7, 71, 2, 2, 8562, 8563, + 7, 80, 2, 2, 8563, 8564, 7, 97, 2, 2, 8564, 8565, 7, 67, 2, 2, 8565, 8566, + 7, 70, 2, 2, 8566, 8567, 7, 79, 2, 2, 8567, 8568, 7, 75, 2, 2, 8568, 8569, + 7, 80, 2, 2, 8569, 1354, 3, 2, 2, 2, 8570, 8571, 7, 90, 2, 2, 8571, 8572, + 7, 67, 2, 2, 8572, 8573, 7, 97, 2, 2, 8573, 8574, 7, 84, 2, 2, 8574, 8575, + 7, 71, 2, 2, 8575, 8576, 7, 69, 2, 2, 8576, 8577, 7, 81, 2, 2, 8577, 8578, + 7, 88, 2, 2, 8578, 8579, 7, 71, 2, 2, 8579, 8580, 7, 84, 2, 2, 8580, 8581, + 7, 97, 2, 2, 8581, 8582, 7, 67, 2, 2, 8582, 8583, 7, 70, 2, 2, 8583, 8584, + 7, 79, 2, 2, 8584, 8585, 7, 75, 2, 2, 8585, 8586, 7, 80, 2, 2, 8586, 1356, + 3, 2, 2, 2, 8587, 8588, 7, 67, 2, 2, 8588, 8589, 7, 84, 2, 2, 8589, 8590, + 7, 79, 2, 2, 8590, 8591, 7, 85, 2, 2, 8591, 8592, 7, 69, 2, 2, 8592, 8593, + 7, 75, 2, 2, 8593, 8594, 7, 75, 2, 2, 8594, 8595, 7, 58, 2, 2, 8595, 1358, + 3, 2, 2, 2, 8596, 8597, 7, 67, 2, 2, 8597, 8598, 7, 85, 2, 2, 8598, 8599, + 7, 69, 2, 2, 8599, 8600, 7, 75, 2, 2, 8600, 8601, 7, 75, 2, 2, 8601, 1360, + 3, 2, 2, 2, 8602, 8603, 7, 68, 2, 2, 8603, 8604, 7, 75, 2, 2, 8604, 8605, + 7, 73, 2, 2, 8605, 8606, 7, 55, 2, 2, 8606, 1362, 3, 2, 2, 2, 8607, 8608, + 7, 69, 2, 2, 8608, 8609, 7, 82, 2, 2, 8609, 8610, 7, 51, 2, 2, 8610, 8611, + 7, 52, 2, 2, 8611, 8612, 7, 55, 2, 2, 8612, 8613, 7, 50, 2, 2, 8613, 1364, + 3, 2, 2, 2, 8614, 8615, 7, 69, 2, 2, 8615, 8616, 7, 82, 2, 2, 8616, 8617, + 7, 51, 2, 2, 8617, 8618, 7, 52, 2, 2, 8618, 8619, 7, 55, 2, 2, 8619, 8620, + 7, 51, 2, 2, 8620, 1366, 3, 2, 2, 2, 8621, 8622, 7, 69, 2, 2, 8622, 8623, + 7, 82, 2, 2, 8623, 8624, 7, 51, 2, 2, 8624, 8625, 7, 52, 2, 2, 8625, 8626, + 7, 55, 2, 2, 8626, 8627, 7, 56, 2, 2, 8627, 1368, 3, 2, 2, 2, 8628, 8629, + 7, 69, 2, 2, 8629, 8630, 7, 82, 2, 2, 8630, 8631, 7, 51, 2, 2, 8631, 8632, + 7, 52, 2, 2, 8632, 8633, 7, 55, 2, 2, 8633, 8634, 7, 57, 2, 2, 8634, 1370, + 3, 2, 2, 2, 8635, 8636, 7, 69, 2, 2, 8636, 8637, 7, 82, 2, 2, 8637, 8638, + 7, 58, 2, 2, 8638, 8639, 7, 55, 2, 2, 8639, 8640, 7, 50, 2, 2, 8640, 1372, + 3, 2, 2, 2, 8641, 8642, 7, 69, 2, 2, 8642, 8643, 7, 82, 2, 2, 8643, 8644, + 7, 58, 2, 2, 8644, 8645, 7, 55, 2, 2, 8645, 8646, 7, 52, 2, 2, 8646, 1374, + 3, 2, 2, 2, 8647, 8648, 7, 69, 2, 2, 8648, 8649, 7, 82, 2, 2, 8649, 8650, + 7, 58, 2, 2, 8650, 8651, 7, 56, 2, 2, 8651, 8652, 7, 56, 2, 2, 8652, 1376, + 3, 2, 2, 2, 8653, 8654, 7, 69, 2, 2, 8654, 8655, 7, 82, 2, 2, 8655, 8656, + 7, 59, 2, 2, 8656, 8657, 7, 53, 2, 2, 8657, 8658, 7, 52, 2, 2, 8658, 1378, + 3, 2, 2, 2, 8659, 8660, 7, 70, 2, 2, 8660, 8661, 7, 71, 2, 2, 8661, 8662, + 7, 69, 2, 2, 8662, 8663, 7, 58, 2, 2, 8663, 1380, 3, 2, 2, 2, 8664, 8665, + 7, 71, 2, 2, 8665, 8666, 7, 87, 2, 2, 8666, 8667, 7, 69, 2, 2, 8667, 8668, + 7, 76, 2, 2, 8668, 8669, 7, 82, 2, 2, 8669, 8670, 7, 79, 2, 2, 8670, 8671, + 7, 85, 2, 2, 8671, 1382, 3, 2, 2, 2, 8672, 8673, 7, 71, 2, 2, 8673, 8674, + 7, 87, 2, 2, 8674, 8675, 7, 69, 2, 2, 8675, 8676, 7, 77, 2, 2, 8676, 8677, + 7, 84, 2, 2, 8677, 1384, 3, 2, 2, 2, 8678, 8679, 7, 73, 2, 2, 8679, 8680, + 7, 68, 2, 2, 8680, 8681, 7, 52, 2, 2, 8681, 8682, 7, 53, 2, 2, 8682, 8683, + 7, 51, 2, 2, 8683, 8684, 7, 52, 2, 2, 8684, 1386, 3, 2, 2, 2, 8685, 8686, + 7, 73, 2, 2, 8686, 8687, 7, 68, 2, 2, 8687, 8688, 7, 77, 2, 2, 8688, 1388, + 3, 2, 2, 2, 8689, 8690, 7, 73, 2, 2, 8690, 8691, 7, 71, 2, 2, 8691, 8692, + 7, 81, 2, 2, 8692, 8693, 7, 85, 2, 2, 8693, 8694, 7, 86, 2, 2, 8694, 8695, + 7, 70, 2, 2, 8695, 8696, 7, 58, 2, 2, 8696, 1390, 3, 2, 2, 2, 8697, 8698, + 7, 73, 2, 2, 8698, 8699, 7, 84, 2, 2, 8699, 8700, 7, 71, 2, 2, 8700, 8701, + 7, 71, 2, 2, 8701, 8702, 7, 77, 2, 2, 8702, 1392, 3, 2, 2, 2, 8703, 8704, + 7, 74, 2, 2, 8704, 8705, 7, 71, 2, 2, 8705, 8706, 7, 68, 2, 2, 8706, 8707, + 7, 84, 2, 2, 8707, 8708, 7, 71, 2, 2, 8708, 8709, 7, 89, 2, 2, 8709, 1394, + 3, 2, 2, 2, 8710, 8711, 7, 74, 2, 2, 8711, 8712, 7, 82, 2, 2, 8712, 8713, + 7, 58, 2, 2, 8713, 1396, 3, 2, 2, 2, 8714, 8715, 7, 77, 2, 2, 8715, 8716, + 7, 71, 2, 2, 8716, 8717, 7, 91, 2, 2, 8717, 8718, 7, 68, 2, 2, 8718, 8719, + 7, 69, 2, 2, 8719, 8720, 7, 85, 2, 2, 8720, 8721, 7, 52, 2, 2, 8721, 1398, + 3, 2, 2, 2, 8722, 8723, 7, 77, 2, 2, 8723, 8724, 7, 81, 2, 2, 8724, 8725, + 7, 75, 2, 2, 8725, 8726, 7, 58, 2, 2, 8726, 8727, 7, 84, 2, 2, 8727, 1400, + 3, 2, 2, 2, 8728, 8729, 7, 77, 2, 2, 8729, 8730, 7, 81, 2, 2, 8730, 8731, + 7, 75, 2, 2, 8731, 8732, 7, 58, 2, 2, 8732, 8733, 7, 87, 2, 2, 8733, 1402, + 3, 2, 2, 2, 8734, 8735, 7, 78, 2, 2, 8735, 8736, 7, 67, 2, 2, 8736, 8737, + 7, 86, 2, 2, 8737, 8738, 7, 75, 2, 2, 8738, 8739, 7, 80, 2, 2, 8739, 8740, + 7, 51, 2, 2, 8740, 1404, 3, 2, 2, 2, 8741, 8742, 7, 78, 2, 2, 8742, 8743, + 7, 67, 2, 2, 8743, 8744, 7, 86, 2, 2, 8744, 8745, 7, 75, 2, 2, 8745, 8746, + 7, 80, 2, 2, 8746, 8747, 7, 52, 2, 2, 8747, 1406, 3, 2, 2, 2, 8748, 8749, + 7, 78, 2, 2, 8749, 8750, 7, 67, 2, 2, 8750, 8751, 7, 86, 2, 2, 8751, 8752, + 7, 75, 2, 2, 8752, 8753, 7, 80, 2, 2, 8753, 8754, 7, 55, 2, 2, 8754, 1408, + 3, 2, 2, 2, 8755, 8756, 7, 78, 2, 2, 8756, 8757, 7, 67, 2, 2, 8757, 8758, + 7, 86, 2, 2, 8758, 8759, 7, 75, 2, 2, 8759, 8760, 7, 80, 2, 2, 8760, 8761, + 7, 57, 2, 2, 8761, 1410, 3, 2, 2, 2, 8762, 8763, 7, 79, 2, 2, 8763, 8764, + 7, 67, 2, 2, 8764, 8765, 7, 69, 2, 2, 8765, 8766, 7, 69, 2, 2, 8766, 8767, + 7, 71, 2, 2, 8767, 1412, 3, 2, 2, 2, 8768, 8769, 7, 79, 2, 2, 8769, 8770, + 7, 67, 2, 2, 8770, 8771, 7, 69, 2, 2, 8771, 8772, 7, 84, 2, 2, 8772, 8773, + 7, 81, 2, 2, 8773, 8774, 7, 79, 2, 2, 8774, 8775, 7, 67, 2, 2, 8775, 8776, + 7, 80, 2, 2, 8776, 1414, 3, 2, 2, 2, 8777, 8778, 7, 85, 2, 2, 8778, 8779, + 7, 76, 2, 2, 8779, 8780, 7, 75, 2, 2, 8780, 8781, 7, 85, 2, 2, 8781, 1416, + 3, 2, 2, 2, 8782, 8783, 7, 85, 2, 2, 8783, 8784, 7, 89, 2, 2, 8784, 8785, + 7, 71, 2, 2, 8785, 8786, 7, 57, 2, 2, 8786, 1418, 3, 2, 2, 2, 8787, 8788, + 7, 86, 2, 2, 8788, 8789, 7, 75, 2, 2, 8789, 8790, 7, 85, 2, 2, 8790, 8791, + 7, 56, 2, 2, 8791, 8792, 7, 52, 2, 2, 8792, 8793, 7, 50, 2, 2, 8793, 1420, + 3, 2, 2, 2, 8794, 8795, 7, 87, 2, 2, 8795, 8796, 7, 69, 2, 2, 8796, 8797, + 7, 85, 2, 2, 8797, 8798, 7, 52, 2, 2, 8798, 1422, 3, 2, 2, 2, 8799, 8800, + 7, 87, 2, 2, 8800, 8801, 7, 76, 2, 2, 8801, 8802, 7, 75, 2, 2, 8802, 8803, + 7, 85, 2, 2, 8803, 1424, 3, 2, 2, 2, 8804, 8805, 7, 87, 2, 2, 8805, 8806, + 7, 86, 2, 2, 8806, 8807, 7, 72, 2, 2, 8807, 8808, 7, 51, 2, 2, 8808, 8809, + 7, 56, 2, 2, 8809, 1426, 3, 2, 2, 2, 8810, 8811, 7, 87, 2, 2, 8811, 8812, + 7, 86, 2, 2, 8812, 8813, 7, 72, 2, 2, 8813, 8814, 7, 51, 2, 2, 8814, 8815, + 7, 56, 2, 2, 8815, 8816, 7, 78, 2, 2, 8816, 8817, 7, 71, 2, 2, 8817, 1428, + 3, 2, 2, 2, 8818, 8819, 7, 87, 2, 2, 8819, 8820, 7, 86, 2, 2, 8820, 8821, + 7, 72, 2, 2, 8821, 8822, 7, 53, 2, 2, 8822, 8823, 7, 52, 2, 2, 8823, 1430, + 3, 2, 2, 2, 8824, 8825, 7, 87, 2, 2, 8825, 8826, 7, 86, 2, 2, 8826, 8827, + 7, 72, 2, 2, 8827, 8828, 7, 58, 2, 2, 8828, 1432, 3, 2, 2, 2, 8829, 8830, + 7, 87, 2, 2, 8830, 8831, 7, 86, 2, 2, 8831, 8832, 7, 72, 2, 2, 8832, 8833, + 7, 58, 2, 2, 8833, 8834, 7, 79, 2, 2, 8834, 8835, 7, 68, 2, 2, 8835, 8836, + 7, 53, 2, 2, 8836, 1434, 3, 2, 2, 2, 8837, 8838, 7, 87, 2, 2, 8838, 8839, + 7, 86, 2, 2, 8839, 8840, 7, 72, 2, 2, 8840, 8841, 7, 58, 2, 2, 8841, 8842, + 7, 79, 2, 2, 8842, 8843, 7, 68, 2, 2, 8843, 8844, 7, 54, 2, 2, 8844, 1436, + 3, 2, 2, 2, 8845, 8846, 7, 67, 2, 2, 8846, 8847, 7, 84, 2, 2, 8847, 8848, + 7, 69, 2, 2, 8848, 8849, 7, 74, 2, 2, 8849, 8850, 7, 75, 2, 2, 8850, 8851, + 7, 88, 2, 2, 8851, 8852, 7, 71, 2, 2, 8852, 1438, 3, 2, 2, 2, 8853, 8854, + 7, 68, 2, 2, 8854, 8855, 7, 78, 2, 2, 8855, 8856, 7, 67, 2, 2, 8856, 8857, + 7, 69, 2, 2, 8857, 8858, 7, 77, 2, 2, 8858, 8859, 7, 74, 2, 2, 8859, 8860, + 7, 81, 2, 2, 8860, 8861, 7, 78, 2, 2, 8861, 8862, 7, 71, 2, 2, 8862, 1440, + 3, 2, 2, 2, 8863, 8864, 7, 69, 2, 2, 8864, 8865, 7, 85, 2, 2, 8865, 8866, + 7, 88, 2, 2, 8866, 1442, 3, 2, 2, 2, 8867, 8868, 7, 72, 2, 2, 8868, 8869, + 7, 71, 2, 2, 8869, 8870, 7, 70, 2, 2, 8870, 8871, 7, 71, 2, 2, 8871, 8872, + 7, 84, 2, 2, 8872, 8873, 7, 67, 2, 2, 8873, 8874, 7, 86, 2, 2, 8874, 8875, + 7, 71, 2, 2, 8875, 8876, 7, 70, 2, 2, 8876, 1444, 3, 2, 2, 2, 8877, 8878, + 7, 75, 2, 2, 8878, 8879, 7, 80, 2, 2, 8879, 8880, 7, 80, 2, 2, 8880, 8881, + 7, 81, 2, 2, 8881, 8882, 7, 70, 2, 2, 8882, 8883, 7, 68, 2, 2, 8883, 1446, + 3, 2, 2, 2, 8884, 8885, 7, 79, 2, 2, 8885, 8886, 7, 71, 2, 2, 8886, 8887, + 7, 79, 2, 2, 8887, 8888, 7, 81, 2, 2, 8888, 8889, 7, 84, 2, 2, 8889, 8890, + 7, 91, 2, 2, 8890, 1448, 3, 2, 2, 2, 8891, 8892, 7, 79, 2, 2, 8892, 8893, + 7, 84, 2, 2, 8893, 8894, 7, 73, 2, 2, 8894, 8895, 7, 97, 2, 2, 8895, 8896, + 7, 79, 2, 2, 8896, 8897, 7, 91, 2, 2, 8897, 8898, 7, 75, 2, 2, 8898, 8899, + 7, 85, 2, 2, 8899, 8900, 7, 67, 2, 2, 8900, 8901, 7, 79, 2, 2, 8901, 1450, + 3, 2, 2, 2, 8902, 8903, 7, 79, 2, 2, 8903, 8904, 7, 91, 2, 2, 8904, 8905, + 7, 75, 2, 2, 8905, 8906, 7, 85, 2, 2, 8906, 8907, 7, 67, 2, 2, 8907, 8908, + 7, 79, 2, 2, 8908, 1452, 3, 2, 2, 2, 8909, 8910, 7, 80, 2, 2, 8910, 8911, + 7, 70, 2, 2, 8911, 8912, 7, 68, 2, 2, 8912, 1454, 3, 2, 2, 2, 8913, 8914, + 7, 80, 2, 2, 8914, 8915, 7, 70, 2, 2, 8915, 8916, 7, 68, 2, 2, 8916, 8917, + 7, 69, 2, 2, 8917, 8918, 7, 78, 2, 2, 8918, 8919, 7, 87, 2, 2, 8919, 8920, + 7, 85, 2, 2, 8920, 8921, 7, 86, 2, 2, 8921, 8922, 7, 71, 2, 2, 8922, 8923, + 7, 84, 2, 2, 8923, 1456, 3, 2, 2, 2, 8924, 8925, 7, 82, 2, 2, 8925, 8926, + 7, 71, 2, 2, 8926, 8927, 7, 84, 2, 2, 8927, 8928, 7, 72, 2, 2, 8928, 8929, + 7, 81, 2, 2, 8929, 8930, 7, 84, 2, 2, 8930, 8931, 7, 79, 2, 2, 8931, 8932, + 7, 67, 2, 2, 8932, 8933, 7, 80, 2, 2, 8933, 8934, 7, 69, 2, 2, 8934, 8935, + 7, 71, 2, 2, 8935, 8936, 7, 97, 2, 2, 8936, 8937, 7, 85, 2, 2, 8937, 8938, + 7, 69, 2, 2, 8938, 8939, 7, 74, 2, 2, 8939, 8940, 7, 71, 2, 2, 8940, 8941, + 7, 79, 2, 2, 8941, 8942, 7, 67, 2, 2, 8942, 1458, 3, 2, 2, 2, 8943, 8944, + 7, 86, 2, 2, 8944, 8945, 7, 81, 2, 2, 8945, 8946, 7, 77, 2, 2, 8946, 8947, + 7, 87, 2, 2, 8947, 8948, 7, 70, 2, 2, 8948, 8949, 7, 68, 2, 2, 8949, 1460, + 3, 2, 2, 2, 8950, 8951, 7, 84, 2, 2, 8951, 8952, 7, 71, 2, 2, 8952, 8953, + 7, 82, 2, 2, 8953, 8954, 7, 71, 2, 2, 8954, 8955, 7, 67, 2, 2, 8955, 8956, + 7, 86, 2, 2, 8956, 8957, 7, 67, 2, 2, 8957, 8958, 7, 68, 2, 2, 8958, 8959, + 7, 78, 2, 2, 8959, 8960, 7, 71, 2, 2, 8960, 1462, 3, 2, 2, 2, 8961, 8962, + 7, 69, 2, 2, 8962, 8963, 7, 81, 2, 2, 8963, 8964, 7, 79, 2, 2, 8964, 8965, + 7, 79, 2, 2, 8965, 8966, 7, 75, 2, 2, 8966, 8967, 7, 86, 2, 2, 8967, 8968, + 7, 86, 2, 2, 8968, 8969, 7, 71, 2, 2, 8969, 8970, 7, 70, 2, 2, 8970, 1464, + 3, 2, 2, 2, 8971, 8972, 7, 87, 2, 2, 8972, 8973, 7, 80, 2, 2, 8973, 8974, + 7, 69, 2, 2, 8974, 8975, 7, 81, 2, 2, 8975, 8976, 7, 79, 2, 2, 8976, 8977, + 7, 79, 2, 2, 8977, 8978, 7, 75, 2, 2, 8978, 8979, 7, 86, 2, 2, 8979, 8980, + 7, 86, 2, 2, 8980, 8981, 7, 71, 2, 2, 8981, 8982, 7, 70, 2, 2, 8982, 1466, + 3, 2, 2, 2, 8983, 8984, 7, 85, 2, 2, 8984, 8985, 7, 71, 2, 2, 8985, 8986, + 7, 84, 2, 2, 8986, 8987, 7, 75, 2, 2, 8987, 8988, 7, 67, 2, 2, 8988, 8989, + 7, 78, 2, 2, 8989, 8990, 7, 75, 2, 2, 8990, 8991, 7, 92, 2, 2, 8991, 8992, + 7, 67, 2, 2, 8992, 8993, 7, 68, 2, 2, 8993, 8994, 7, 78, 2, 2, 8994, 8995, + 7, 71, 2, 2, 8995, 1468, 3, 2, 2, 2, 8996, 8997, 7, 73, 2, 2, 8997, 8998, + 7, 71, 2, 2, 8998, 8999, 7, 81, 2, 2, 8999, 9000, 7, 79, 2, 2, 9000, 9001, + 7, 71, 2, 2, 9001, 9002, 7, 86, 2, 2, 9002, 9003, 7, 84, 2, 2, 9003, 9004, + 7, 91, 2, 2, 9004, 9005, 7, 69, 2, 2, 9005, 9006, 7, 81, 2, 2, 9006, 9007, + 7, 78, 2, 2, 9007, 9008, 7, 78, 2, 2, 9008, 9009, 7, 71, 2, 2, 9009, 9010, + 7, 69, 2, 2, 9010, 9011, 7, 86, 2, 2, 9011, 9012, 7, 75, 2, 2, 9012, 9013, + 7, 81, 2, 2, 9013, 9014, 7, 80, 2, 2, 9014, 1470, 3, 2, 2, 2, 9015, 9016, + 7, 73, 2, 2, 9016, 9017, 7, 71, 2, 2, 9017, 9018, 7, 81, 2, 2, 9018, 9019, + 7, 79, 2, 2, 9019, 9020, 7, 69, 2, 2, 9020, 9021, 7, 81, 2, 2, 9021, 9022, + 7, 78, 2, 2, 9022, 9023, 7, 78, 2, 2, 9023, 9024, 7, 71, 2, 2, 9024, 9025, + 7, 69, 2, 2, 9025, 9026, 7, 86, 2, 2, 9026, 9027, 7, 75, 2, 2, 9027, 9028, + 7, 81, 2, 2, 9028, 9029, 7, 80, 2, 2, 9029, 1472, 3, 2, 2, 2, 9030, 9031, + 7, 73, 2, 2, 9031, 9032, 7, 71, 2, 2, 9032, 9033, 7, 81, 2, 2, 9033, 9034, + 7, 79, 2, 2, 9034, 9035, 7, 71, 2, 2, 9035, 9036, 7, 86, 2, 2, 9036, 9037, + 7, 84, 2, 2, 9037, 9038, 7, 91, 2, 2, 9038, 1474, 3, 2, 2, 2, 9039, 9040, + 7, 78, 2, 2, 9040, 9041, 7, 75, 2, 2, 9041, 9042, 7, 80, 2, 2, 9042, 9043, + 7, 71, 2, 2, 9043, 9044, 7, 85, 2, 2, 9044, 9045, 7, 86, 2, 2, 9045, 9046, + 7, 84, 2, 2, 9046, 9047, 7, 75, 2, 2, 9047, 9048, 7, 80, 2, 2, 9048, 9049, + 7, 73, 2, 2, 9049, 1476, 3, 2, 2, 2, 9050, 9051, 7, 79, 2, 2, 9051, 9052, + 7, 87, 2, 2, 9052, 9053, 7, 78, 2, 2, 9053, 9054, 7, 86, 2, 2, 9054, 9055, + 7, 75, 2, 2, 9055, 9056, 7, 78, 2, 2, 9056, 9057, 7, 75, 2, 2, 9057, 9058, + 7, 80, 2, 2, 9058, 9059, 7, 71, 2, 2, 9059, 9060, 7, 85, 2, 2, 9060, 9061, + 7, 86, 2, 2, 9061, 9062, 7, 84, 2, 2, 9062, 9063, 7, 75, 2, 2, 9063, 9064, + 7, 80, 2, 2, 9064, 9065, 7, 73, 2, 2, 9065, 1478, 3, 2, 2, 2, 9066, 9067, + 7, 79, 2, 2, 9067, 9068, 7, 87, 2, 2, 9068, 9069, 7, 78, 2, 2, 9069, 9070, + 7, 86, 2, 2, 9070, 9071, 7, 75, 2, 2, 9071, 9072, 7, 82, 2, 2, 9072, 9073, + 7, 81, 2, 2, 9073, 9074, 7, 75, 2, 2, 9074, 9075, 7, 80, 2, 2, 9075, 9076, + 7, 86, 2, 2, 9076, 1480, 3, 2, 2, 2, 9077, 9078, 7, 79, 2, 2, 9078, 9079, + 7, 87, 2, 2, 9079, 9080, 7, 78, 2, 2, 9080, 9081, 7, 86, 2, 2, 9081, 9082, + 7, 75, 2, 2, 9082, 9083, 7, 82, 2, 2, 9083, 9084, 7, 81, 2, 2, 9084, 9085, + 7, 78, 2, 2, 9085, 9086, 7, 91, 2, 2, 9086, 9087, 7, 73, 2, 2, 9087, 9088, + 7, 81, 2, 2, 9088, 9089, 7, 80, 2, 2, 9089, 1482, 3, 2, 2, 2, 9090, 9091, + 7, 82, 2, 2, 9091, 9092, 7, 81, 2, 2, 9092, 9093, 7, 75, 2, 2, 9093, 9094, + 7, 80, 2, 2, 9094, 9095, 7, 86, 2, 2, 9095, 1484, 3, 2, 2, 2, 9096, 9097, + 7, 82, 2, 2, 9097, 9098, 7, 81, 2, 2, 9098, 9099, 7, 78, 2, 2, 9099, 9100, + 7, 91, 2, 2, 9100, 9101, 7, 73, 2, 2, 9101, 9102, 7, 81, 2, 2, 9102, 9103, + 7, 80, 2, 2, 9103, 1486, 3, 2, 2, 2, 9104, 9105, 7, 67, 2, 2, 9105, 9106, + 7, 68, 2, 2, 9106, 9107, 7, 85, 2, 2, 9107, 1488, 3, 2, 2, 2, 9108, 9109, + 7, 67, 2, 2, 9109, 9110, 7, 69, 2, 2, 9110, 9111, 7, 81, 2, 2, 9111, 9112, + 7, 85, 2, 2, 9112, 1490, 3, 2, 2, 2, 9113, 9114, 7, 67, 2, 2, 9114, 9115, + 7, 70, 2, 2, 9115, 9116, 7, 70, 2, 2, 9116, 9117, 7, 70, 2, 2, 9117, 9118, + 7, 67, 2, 2, 9118, 9119, 7, 86, 2, 2, 9119, 9120, 7, 71, 2, 2, 9120, 1492, + 3, 2, 2, 2, 9121, 9122, 7, 67, 2, 2, 9122, 9123, 7, 70, 2, 2, 9123, 9124, + 7, 70, 2, 2, 9124, 9125, 7, 86, 2, 2, 9125, 9126, 7, 75, 2, 2, 9126, 9127, + 7, 79, 2, 2, 9127, 9128, 7, 71, 2, 2, 9128, 1494, 3, 2, 2, 2, 9129, 9130, + 7, 67, 2, 2, 9130, 9131, 7, 71, 2, 2, 9131, 9132, 7, 85, 2, 2, 9132, 9133, + 7, 97, 2, 2, 9133, 9134, 7, 70, 2, 2, 9134, 9135, 7, 71, 2, 2, 9135, 9136, + 7, 69, 2, 2, 9136, 9137, 7, 84, 2, 2, 9137, 9138, 7, 91, 2, 2, 9138, 9139, + 7, 82, 2, 2, 9139, 9140, 7, 86, 2, 2, 9140, 1496, 3, 2, 2, 2, 9141, 9142, + 7, 67, 2, 2, 9142, 9143, 7, 71, 2, 2, 9143, 9144, 7, 85, 2, 2, 9144, 9145, + 7, 97, 2, 2, 9145, 9146, 7, 71, 2, 2, 9146, 9147, 7, 80, 2, 2, 9147, 9148, + 7, 69, 2, 2, 9148, 9149, 7, 84, 2, 2, 9149, 9150, 7, 91, 2, 2, 9150, 9151, + 7, 82, 2, 2, 9151, 9152, 7, 86, 2, 2, 9152, 1498, 3, 2, 2, 2, 9153, 9154, + 7, 67, 2, 2, 9154, 9155, 7, 84, 2, 2, 9155, 9156, 7, 71, 2, 2, 9156, 9157, + 7, 67, 2, 2, 9157, 1500, 3, 2, 2, 2, 9158, 9159, 7, 67, 2, 2, 9159, 9160, + 7, 85, 2, 2, 9160, 9161, 7, 68, 2, 2, 9161, 9162, 7, 75, 2, 2, 9162, 9163, + 7, 80, 2, 2, 9163, 9164, 7, 67, 2, 2, 9164, 9165, 7, 84, 2, 2, 9165, 9166, + 7, 91, 2, 2, 9166, 1502, 3, 2, 2, 2, 9167, 9168, 7, 67, 2, 2, 9168, 9169, + 7, 85, 2, 2, 9169, 9170, 7, 75, 2, 2, 9170, 9171, 7, 80, 2, 2, 9171, 1504, + 3, 2, 2, 2, 9172, 9173, 7, 67, 2, 2, 9173, 9174, 7, 85, 2, 2, 9174, 9175, + 7, 86, 2, 2, 9175, 9176, 7, 71, 2, 2, 9176, 9177, 7, 90, 2, 2, 9177, 9178, + 7, 86, 2, 2, 9178, 1506, 3, 2, 2, 2, 9179, 9180, 7, 67, 2, 2, 9180, 9181, + 7, 85, 2, 2, 9181, 9182, 7, 89, 2, 2, 9182, 9183, 7, 77, 2, 2, 9183, 9184, + 7, 68, 2, 2, 9184, 1508, 3, 2, 2, 2, 9185, 9186, 7, 67, 2, 2, 9186, 9187, + 7, 85, 2, 2, 9187, 9188, 7, 89, 2, 2, 9188, 9189, 7, 77, 2, 2, 9189, 9190, + 7, 86, 2, 2, 9190, 1510, 3, 2, 2, 2, 9191, 9192, 7, 67, 2, 2, 9192, 9193, + 7, 85, 2, 2, 9193, 9194, 7, 91, 2, 2, 9194, 9195, 7, 79, 2, 2, 9195, 9196, + 7, 79, 2, 2, 9196, 9197, 7, 71, 2, 2, 9197, 9198, 7, 86, 2, 2, 9198, 9199, + 7, 84, 2, 2, 9199, 9200, 7, 75, 2, 2, 9200, 9201, 7, 69, 2, 2, 9201, 9202, + 7, 97, 2, 2, 9202, 9203, 7, 70, 2, 2, 9203, 9204, 7, 71, 2, 2, 9204, 9205, + 7, 69, 2, 2, 9205, 9206, 7, 84, 2, 2, 9206, 9207, 7, 91, 2, 2, 9207, 9208, + 7, 82, 2, 2, 9208, 9209, 7, 86, 2, 2, 9209, 1512, 3, 2, 2, 2, 9210, 9211, + 7, 67, 2, 2, 9211, 9212, 7, 85, 2, 2, 9212, 9213, 7, 91, 2, 2, 9213, 9214, + 7, 79, 2, 2, 9214, 9215, 7, 79, 2, 2, 9215, 9216, 7, 71, 2, 2, 9216, 9217, + 7, 86, 2, 2, 9217, 9218, 7, 84, 2, 2, 9218, 9219, 7, 75, 2, 2, 9219, 9220, + 7, 69, 2, 2, 9220, 9221, 7, 97, 2, 2, 9221, 9222, 7, 70, 2, 2, 9222, 9223, + 7, 71, 2, 2, 9223, 9224, 7, 84, 2, 2, 9224, 9225, 7, 75, 2, 2, 9225, 9226, + 7, 88, 2, 2, 9226, 9227, 7, 71, 2, 2, 9227, 1514, 3, 2, 2, 2, 9228, 9229, + 7, 67, 2, 2, 9229, 9230, 7, 85, 2, 2, 9230, 9231, 7, 91, 2, 2, 9231, 9232, + 7, 79, 2, 2, 9232, 9233, 7, 79, 2, 2, 9233, 9234, 7, 71, 2, 2, 9234, 9235, + 7, 86, 2, 2, 9235, 9236, 7, 84, 2, 2, 9236, 9237, 7, 75, 2, 2, 9237, 9238, + 7, 69, 2, 2, 9238, 9239, 7, 97, 2, 2, 9239, 9240, 7, 71, 2, 2, 9240, 9241, + 7, 80, 2, 2, 9241, 9242, 7, 69, 2, 2, 9242, 9243, 7, 84, 2, 2, 9243, 9244, + 7, 91, 2, 2, 9244, 9245, 7, 82, 2, 2, 9245, 9246, 7, 86, 2, 2, 9246, 1516, + 3, 2, 2, 2, 9247, 9248, 7, 67, 2, 2, 9248, 9249, 7, 85, 2, 2, 9249, 9250, + 7, 91, 2, 2, 9250, 9251, 7, 79, 2, 2, 9251, 9252, 7, 79, 2, 2, 9252, 9253, + 7, 71, 2, 2, 9253, 9254, 7, 86, 2, 2, 9254, 9255, 7, 84, 2, 2, 9255, 9256, + 7, 75, 2, 2, 9256, 9257, 7, 69, 2, 2, 9257, 9258, 7, 97, 2, 2, 9258, 9259, + 7, 85, 2, 2, 9259, 9260, 7, 75, 2, 2, 9260, 9261, 7, 73, 2, 2, 9261, 9262, + 7, 80, 2, 2, 9262, 1518, 3, 2, 2, 2, 9263, 9264, 7, 67, 2, 2, 9264, 9265, + 7, 85, 2, 2, 9265, 9266, 7, 91, 2, 2, 9266, 9267, 7, 79, 2, 2, 9267, 9268, + 7, 79, 2, 2, 9268, 9269, 7, 71, 2, 2, 9269, 9270, 7, 86, 2, 2, 9270, 9271, + 7, 84, 2, 2, 9271, 9272, 7, 75, 2, 2, 9272, 9273, 7, 69, 2, 2, 9273, 9274, + 7, 97, 2, 2, 9274, 9275, 7, 88, 2, 2, 9275, 9276, 7, 71, 2, 2, 9276, 9277, + 7, 84, 2, 2, 9277, 9278, 7, 75, 2, 2, 9278, 9279, 7, 72, 2, 2, 9279, 9280, + 7, 91, 2, 2, 9280, 1520, 3, 2, 2, 2, 9281, 9282, 7, 67, 2, 2, 9282, 9283, + 7, 86, 2, 2, 9283, 9284, 7, 67, 2, 2, 9284, 9285, 7, 80, 2, 2, 9285, 1522, + 3, 2, 2, 2, 9286, 9287, 7, 67, 2, 2, 9287, 9288, 7, 86, 2, 2, 9288, 9289, + 7, 67, 2, 2, 9289, 9290, 7, 80, 2, 2, 9290, 9291, 7, 52, 2, 2, 9291, 1524, + 3, 2, 2, 2, 9292, 9293, 7, 68, 2, 2, 9293, 9294, 7, 71, 2, 2, 9294, 9295, + 7, 80, 2, 2, 9295, 9296, 7, 69, 2, 2, 9296, 9297, 7, 74, 2, 2, 9297, 9298, + 7, 79, 2, 2, 9298, 9299, 7, 67, 2, 2, 9299, 9300, 7, 84, 2, 2, 9300, 9301, + 7, 77, 2, 2, 9301, 1526, 3, 2, 2, 2, 9302, 9303, 7, 68, 2, 2, 9303, 9304, + 7, 75, 2, 2, 9304, 9305, 7, 80, 2, 2, 9305, 1528, 3, 2, 2, 2, 9306, 9307, + 7, 68, 2, 2, 9307, 9308, 7, 75, 2, 2, 9308, 9309, 7, 86, 2, 2, 9309, 9310, + 7, 97, 2, 2, 9310, 9311, 7, 69, 2, 2, 9311, 9312, 7, 81, 2, 2, 9312, 9313, + 7, 87, 2, 2, 9313, 9314, 7, 80, 2, 2, 9314, 9315, 7, 86, 2, 2, 9315, 1530, + 3, 2, 2, 2, 9316, 9317, 7, 68, 2, 2, 9317, 9318, 7, 75, 2, 2, 9318, 9319, + 7, 86, 2, 2, 9319, 9320, 7, 97, 2, 2, 9320, 9321, 7, 78, 2, 2, 9321, 9322, + 7, 71, 2, 2, 9322, 9323, 7, 80, 2, 2, 9323, 9324, 7, 73, 2, 2, 9324, 9325, + 7, 86, 2, 2, 9325, 9326, 7, 74, 2, 2, 9326, 1532, 3, 2, 2, 2, 9327, 9328, + 7, 68, 2, 2, 9328, 9329, 7, 87, 2, 2, 9329, 9330, 7, 72, 2, 2, 9330, 9331, + 7, 72, 2, 2, 9331, 9332, 7, 71, 2, 2, 9332, 9333, 7, 84, 2, 2, 9333, 1534, + 3, 2, 2, 2, 9334, 9335, 7, 69, 2, 2, 9335, 9336, 7, 67, 2, 2, 9336, 9337, + 7, 86, 2, 2, 9337, 9338, 7, 67, 2, 2, 9338, 9339, 7, 78, 2, 2, 9339, 9340, + 7, 81, 2, 2, 9340, 9341, 7, 73, 2, 2, 9341, 9342, 7, 97, 2, 2, 9342, 9343, + 7, 80, 2, 2, 9343, 9344, 7, 67, 2, 2, 9344, 9345, 7, 79, 2, 2, 9345, 9346, + 7, 71, 2, 2, 9346, 1536, 3, 2, 2, 2, 9347, 9348, 7, 69, 2, 2, 9348, 9349, + 7, 71, 2, 2, 9349, 9350, 7, 75, 2, 2, 9350, 9351, 7, 78, 2, 2, 9351, 1538, + 3, 2, 2, 2, 9352, 9353, 7, 69, 2, 2, 9353, 9354, 7, 71, 2, 2, 9354, 9355, + 7, 75, 2, 2, 9355, 9356, 7, 78, 2, 2, 9356, 9357, 7, 75, 2, 2, 9357, 9358, + 7, 80, 2, 2, 9358, 9359, 7, 73, 2, 2, 9359, 1540, 3, 2, 2, 2, 9360, 9361, + 7, 69, 2, 2, 9361, 9362, 7, 71, 2, 2, 9362, 9363, 7, 80, 2, 2, 9363, 9364, + 7, 86, 2, 2, 9364, 9365, 7, 84, 2, 2, 9365, 9366, 7, 81, 2, 2, 9366, 9367, + 7, 75, 2, 2, 9367, 9368, 7, 70, 2, 2, 9368, 1542, 3, 2, 2, 2, 9369, 9370, + 7, 69, 2, 2, 9370, 9371, 7, 74, 2, 2, 9371, 9372, 7, 67, 2, 2, 9372, 9373, + 7, 84, 2, 2, 9373, 9374, 7, 67, 2, 2, 9374, 9375, 7, 69, 2, 2, 9375, 9376, + 7, 86, 2, 2, 9376, 9377, 7, 71, 2, 2, 9377, 9378, 7, 84, 2, 2, 9378, 9379, + 7, 97, 2, 2, 9379, 9380, 7, 78, 2, 2, 9380, 9381, 7, 71, 2, 2, 9381, 9382, + 7, 80, 2, 2, 9382, 9383, 7, 73, 2, 2, 9383, 9384, 7, 86, 2, 2, 9384, 9385, + 7, 74, 2, 2, 9385, 1544, 3, 2, 2, 2, 9386, 9387, 7, 69, 2, 2, 9387, 9388, + 7, 74, 2, 2, 9388, 9389, 7, 67, 2, 2, 9389, 9390, 7, 84, 2, 2, 9390, 9391, + 7, 85, 2, 2, 9391, 9392, 7, 71, 2, 2, 9392, 9393, 7, 86, 2, 2, 9393, 1546, + 3, 2, 2, 2, 9394, 9395, 7, 69, 2, 2, 9395, 9396, 7, 74, 2, 2, 9396, 9397, + 7, 67, 2, 2, 9397, 9398, 7, 84, 2, 2, 9398, 9399, 7, 97, 2, 2, 9399, 9400, + 7, 78, 2, 2, 9400, 9401, 7, 71, 2, 2, 9401, 9402, 7, 80, 2, 2, 9402, 9403, + 7, 73, 2, 2, 9403, 9404, 7, 86, 2, 2, 9404, 9405, 7, 74, 2, 2, 9405, 1548, + 3, 2, 2, 2, 9406, 9407, 7, 69, 2, 2, 9407, 9408, 7, 81, 2, 2, 9408, 9409, + 7, 71, 2, 2, 9409, 9410, 7, 84, 2, 2, 9410, 9411, 7, 69, 2, 2, 9411, 9412, + 7, 75, 2, 2, 9412, 9413, 7, 68, 2, 2, 9413, 9414, 7, 75, 2, 2, 9414, 9415, + 7, 78, 2, 2, 9415, 9416, 7, 75, 2, 2, 9416, 9417, 7, 86, 2, 2, 9417, 9418, + 7, 91, 2, 2, 9418, 1550, 3, 2, 2, 2, 9419, 9420, 7, 69, 2, 2, 9420, 9421, + 7, 81, 2, 2, 9421, 9422, 7, 78, 2, 2, 9422, 9423, 7, 78, 2, 2, 9423, 9424, + 7, 67, 2, 2, 9424, 9425, 7, 86, 2, 2, 9425, 9426, 7, 75, 2, 2, 9426, 9427, + 7, 81, 2, 2, 9427, 9428, 7, 80, 2, 2, 9428, 1552, 3, 2, 2, 2, 9429, 9430, + 7, 69, 2, 2, 9430, 9431, 7, 81, 2, 2, 9431, 9432, 7, 79, 2, 2, 9432, 9433, + 7, 82, 2, 2, 9433, 9434, 7, 84, 2, 2, 9434, 9435, 7, 71, 2, 2, 9435, 9436, + 7, 85, 2, 2, 9436, 9437, 7, 85, 2, 2, 9437, 1554, 3, 2, 2, 2, 9438, 9439, + 7, 69, 2, 2, 9439, 9440, 7, 81, 2, 2, 9440, 9441, 7, 80, 2, 2, 9441, 9442, + 7, 69, 2, 2, 9442, 9443, 7, 67, 2, 2, 9443, 9444, 7, 86, 2, 2, 9444, 1556, + 3, 2, 2, 2, 9445, 9446, 7, 69, 2, 2, 9446, 9447, 7, 81, 2, 2, 9447, 9448, + 7, 80, 2, 2, 9448, 9449, 7, 69, 2, 2, 9449, 9450, 7, 67, 2, 2, 9450, 9451, + 7, 86, 2, 2, 9451, 9452, 7, 97, 2, 2, 9452, 9453, 7, 89, 2, 2, 9453, 9454, + 7, 85, 2, 2, 9454, 1558, 3, 2, 2, 2, 9455, 9456, 7, 69, 2, 2, 9456, 9457, + 7, 81, 2, 2, 9457, 9458, 7, 80, 2, 2, 9458, 9459, 7, 80, 2, 2, 9459, 9460, + 7, 71, 2, 2, 9460, 9461, 7, 69, 2, 2, 9461, 9462, 7, 86, 2, 2, 9462, 9463, + 7, 75, 2, 2, 9463, 9464, 7, 81, 2, 2, 9464, 9465, 7, 80, 2, 2, 9465, 9466, + 7, 97, 2, 2, 9466, 9467, 7, 75, 2, 2, 9467, 9468, 7, 70, 2, 2, 9468, 1560, + 3, 2, 2, 2, 9469, 9470, 7, 69, 2, 2, 9470, 9471, 7, 81, 2, 2, 9471, 9472, + 7, 80, 2, 2, 9472, 9473, 7, 88, 2, 2, 9473, 1562, 3, 2, 2, 2, 9474, 9475, + 7, 69, 2, 2, 9475, 9476, 7, 81, 2, 2, 9476, 9477, 7, 80, 2, 2, 9477, 9478, + 7, 88, 2, 2, 9478, 9479, 7, 71, 2, 2, 9479, 9480, 7, 84, 2, 2, 9480, 9481, + 7, 86, 2, 2, 9481, 9482, 7, 97, 2, 2, 9482, 9483, 7, 86, 2, 2, 9483, 9484, + 7, 92, 2, 2, 9484, 1564, 3, 2, 2, 2, 9485, 9486, 7, 69, 2, 2, 9486, 9487, + 7, 81, 2, 2, 9487, 9488, 7, 85, 2, 2, 9488, 1566, 3, 2, 2, 2, 9489, 9490, + 7, 69, 2, 2, 9490, 9491, 7, 81, 2, 2, 9491, 9492, 7, 86, 2, 2, 9492, 1568, + 3, 2, 2, 2, 9493, 9494, 7, 69, 2, 2, 9494, 9495, 7, 84, 2, 2, 9495, 9496, + 7, 69, 2, 2, 9496, 9497, 7, 53, 2, 2, 9497, 9498, 7, 52, 2, 2, 9498, 1570, + 3, 2, 2, 2, 9499, 9500, 7, 69, 2, 2, 9500, 9501, 7, 84, 2, 2, 9501, 9502, + 7, 71, 2, 2, 9502, 9503, 7, 67, 2, 2, 9503, 9504, 7, 86, 2, 2, 9504, 9505, + 7, 71, 2, 2, 9505, 9506, 7, 97, 2, 2, 9506, 9507, 7, 67, 2, 2, 9507, 9508, + 7, 85, 2, 2, 9508, 9509, 7, 91, 2, 2, 9509, 9510, 7, 79, 2, 2, 9510, 9511, + 7, 79, 2, 2, 9511, 9512, 7, 71, 2, 2, 9512, 9513, 7, 86, 2, 2, 9513, 9514, + 7, 84, 2, 2, 9514, 9515, 7, 75, 2, 2, 9515, 9516, 7, 69, 2, 2, 9516, 9517, + 7, 97, 2, 2, 9517, 9518, 7, 82, 2, 2, 9518, 9519, 7, 84, 2, 2, 9519, 9520, + 7, 75, 2, 2, 9520, 9521, 7, 88, 2, 2, 9521, 9522, 7, 97, 2, 2, 9522, 9523, + 7, 77, 2, 2, 9523, 9524, 7, 71, 2, 2, 9524, 9525, 7, 91, 2, 2, 9525, 1572, + 3, 2, 2, 2, 9526, 9527, 7, 69, 2, 2, 9527, 9528, 7, 84, 2, 2, 9528, 9529, + 7, 71, 2, 2, 9529, 9530, 7, 67, 2, 2, 9530, 9531, 7, 86, 2, 2, 9531, 9532, + 7, 71, 2, 2, 9532, 9533, 7, 97, 2, 2, 9533, 9534, 7, 67, 2, 2, 9534, 9535, + 7, 85, 2, 2, 9535, 9536, 7, 91, 2, 2, 9536, 9537, 7, 79, 2, 2, 9537, 9538, + 7, 79, 2, 2, 9538, 9539, 7, 71, 2, 2, 9539, 9540, 7, 86, 2, 2, 9540, 9541, + 7, 84, 2, 2, 9541, 9542, 7, 75, 2, 2, 9542, 9543, 7, 69, 2, 2, 9543, 9544, + 7, 97, 2, 2, 9544, 9545, 7, 82, 2, 2, 9545, 9546, 7, 87, 2, 2, 9546, 9547, + 7, 68, 2, 2, 9547, 9548, 7, 97, 2, 2, 9548, 9549, 7, 77, 2, 2, 9549, 9550, + 7, 71, 2, 2, 9550, 9551, 7, 91, 2, 2, 9551, 1574, 3, 2, 2, 2, 9552, 9553, + 7, 69, 2, 2, 9553, 9554, 7, 84, 2, 2, 9554, 9555, 7, 71, 2, 2, 9555, 9556, + 7, 67, 2, 2, 9556, 9557, 7, 86, 2, 2, 9557, 9558, 7, 71, 2, 2, 9558, 9559, + 7, 97, 2, 2, 9559, 9560, 7, 70, 2, 2, 9560, 9561, 7, 74, 2, 2, 9561, 9562, + 7, 97, 2, 2, 9562, 9563, 7, 82, 2, 2, 9563, 9564, 7, 67, 2, 2, 9564, 9565, + 7, 84, 2, 2, 9565, 9566, 7, 67, 2, 2, 9566, 9567, 7, 79, 2, 2, 9567, 9568, + 7, 71, 2, 2, 9568, 9569, 7, 86, 2, 2, 9569, 9570, 7, 71, 2, 2, 9570, 9571, + 7, 84, 2, 2, 9571, 9572, 7, 85, 2, 2, 9572, 1576, 3, 2, 2, 2, 9573, 9574, + 7, 69, 2, 2, 9574, 9575, 7, 84, 2, 2, 9575, 9576, 7, 71, 2, 2, 9576, 9577, + 7, 67, 2, 2, 9577, 9578, 7, 86, 2, 2, 9578, 9579, 7, 71, 2, 2, 9579, 9580, + 7, 97, 2, 2, 9580, 9581, 7, 70, 2, 2, 9581, 9582, 7, 75, 2, 2, 9582, 9583, + 7, 73, 2, 2, 9583, 9584, 7, 71, 2, 2, 9584, 9585, 7, 85, 2, 2, 9585, 9586, + 7, 86, 2, 2, 9586, 1578, 3, 2, 2, 2, 9587, 9588, 7, 69, 2, 2, 9588, 9589, + 7, 84, 2, 2, 9589, 9590, 7, 81, 2, 2, 9590, 9591, 7, 85, 2, 2, 9591, 9592, + 7, 85, 2, 2, 9592, 9593, 7, 71, 2, 2, 9593, 9594, 7, 85, 2, 2, 9594, 1580, + 3, 2, 2, 2, 9595, 9596, 7, 70, 2, 2, 9596, 9597, 7, 67, 2, 2, 9597, 9598, + 7, 86, 2, 2, 9598, 9599, 7, 71, 2, 2, 9599, 9600, 7, 70, 2, 2, 9600, 9601, + 7, 75, 2, 2, 9601, 9602, 7, 72, 2, 2, 9602, 9603, 7, 72, 2, 2, 9603, 1582, + 3, 2, 2, 2, 9604, 9605, 7, 70, 2, 2, 9605, 9606, 7, 67, 2, 2, 9606, 9607, + 7, 86, 2, 2, 9607, 9608, 7, 71, 2, 2, 9608, 9609, 7, 97, 2, 2, 9609, 9610, + 7, 72, 2, 2, 9610, 9611, 7, 81, 2, 2, 9611, 9612, 7, 84, 2, 2, 9612, 9613, + 7, 79, 2, 2, 9613, 9614, 7, 67, 2, 2, 9614, 9615, 7, 86, 2, 2, 9615, 1584, + 3, 2, 2, 2, 9616, 9617, 7, 70, 2, 2, 9617, 9618, 7, 67, 2, 2, 9618, 9619, + 7, 91, 2, 2, 9619, 9620, 7, 80, 2, 2, 9620, 9621, 7, 67, 2, 2, 9621, 9622, + 7, 79, 2, 2, 9622, 9623, 7, 71, 2, 2, 9623, 1586, 3, 2, 2, 2, 9624, 9625, + 7, 70, 2, 2, 9625, 9626, 7, 67, 2, 2, 9626, 9627, 7, 91, 2, 2, 9627, 9628, + 7, 81, 2, 2, 9628, 9629, 7, 72, 2, 2, 9629, 9630, 7, 79, 2, 2, 9630, 9631, + 7, 81, 2, 2, 9631, 9632, 7, 80, 2, 2, 9632, 9633, 7, 86, 2, 2, 9633, 9634, + 7, 74, 2, 2, 9634, 1588, 3, 2, 2, 2, 9635, 9636, 7, 70, 2, 2, 9636, 9637, + 7, 67, 2, 2, 9637, 9638, 7, 91, 2, 2, 9638, 9639, 7, 81, 2, 2, 9639, 9640, + 7, 72, 2, 2, 9640, 9641, 7, 89, 2, 2, 9641, 9642, 7, 71, 2, 2, 9642, 9643, + 7, 71, 2, 2, 9643, 9644, 7, 77, 2, 2, 9644, 1590, 3, 2, 2, 2, 9645, 9646, + 7, 70, 2, 2, 9646, 9647, 7, 67, 2, 2, 9647, 9648, 7, 91, 2, 2, 9648, 9649, + 7, 81, 2, 2, 9649, 9650, 7, 72, 2, 2, 9650, 9651, 7, 91, 2, 2, 9651, 9652, + 7, 71, 2, 2, 9652, 9653, 7, 67, 2, 2, 9653, 9654, 7, 84, 2, 2, 9654, 1592, + 3, 2, 2, 2, 9655, 9656, 7, 70, 2, 2, 9656, 9657, 7, 71, 2, 2, 9657, 9658, + 7, 69, 2, 2, 9658, 9659, 7, 81, 2, 2, 9659, 9660, 7, 70, 2, 2, 9660, 9661, + 7, 71, 2, 2, 9661, 1594, 3, 2, 2, 2, 9662, 9663, 7, 70, 2, 2, 9663, 9664, + 7, 71, 2, 2, 9664, 9665, 7, 73, 2, 2, 9665, 9666, 7, 84, 2, 2, 9666, 9667, + 7, 71, 2, 2, 9667, 9668, 7, 71, 2, 2, 9668, 9669, 7, 85, 2, 2, 9669, 1596, + 3, 2, 2, 2, 9670, 9671, 7, 70, 2, 2, 9671, 9672, 7, 71, 2, 2, 9672, 9673, + 7, 85, 2, 2, 9673, 9674, 7, 97, 2, 2, 9674, 9675, 7, 70, 2, 2, 9675, 9676, + 7, 71, 2, 2, 9676, 9677, 7, 69, 2, 2, 9677, 9678, 7, 84, 2, 2, 9678, 9679, + 7, 91, 2, 2, 9679, 9680, 7, 82, 2, 2, 9680, 9681, 7, 86, 2, 2, 9681, 1598, + 3, 2, 2, 2, 9682, 9683, 7, 70, 2, 2, 9683, 9684, 7, 71, 2, 2, 9684, 9685, + 7, 85, 2, 2, 9685, 9686, 7, 97, 2, 2, 9686, 9687, 7, 71, 2, 2, 9687, 9688, + 7, 80, 2, 2, 9688, 9689, 7, 69, 2, 2, 9689, 9690, 7, 84, 2, 2, 9690, 9691, + 7, 91, 2, 2, 9691, 9692, 7, 82, 2, 2, 9692, 9693, 7, 86, 2, 2, 9693, 1600, + 3, 2, 2, 2, 9694, 9695, 7, 70, 2, 2, 9695, 9696, 7, 75, 2, 2, 9696, 9697, + 7, 79, 2, 2, 9697, 9698, 7, 71, 2, 2, 9698, 9699, 7, 80, 2, 2, 9699, 9700, + 7, 85, 2, 2, 9700, 9701, 7, 75, 2, 2, 9701, 9702, 7, 81, 2, 2, 9702, 9703, + 7, 80, 2, 2, 9703, 1602, 3, 2, 2, 2, 9704, 9705, 7, 70, 2, 2, 9705, 9706, + 7, 75, 2, 2, 9706, 9707, 7, 85, 2, 2, 9707, 9708, 7, 76, 2, 2, 9708, 9709, + 7, 81, 2, 2, 9709, 9710, 7, 75, 2, 2, 9710, 9711, 7, 80, 2, 2, 9711, 9712, + 7, 86, 2, 2, 9712, 1604, 3, 2, 2, 2, 9713, 9714, 7, 71, 2, 2, 9714, 9715, + 7, 78, 2, 2, 9715, 9716, 7, 86, 2, 2, 9716, 1606, 3, 2, 2, 2, 9717, 9718, + 7, 71, 2, 2, 9718, 9719, 7, 80, 2, 2, 9719, 9720, 7, 69, 2, 2, 9720, 9721, + 7, 81, 2, 2, 9721, 9722, 7, 70, 2, 2, 9722, 9723, 7, 71, 2, 2, 9723, 1608, + 3, 2, 2, 2, 9724, 9725, 7, 71, 2, 2, 9725, 9726, 7, 80, 2, 2, 9726, 9727, + 7, 69, 2, 2, 9727, 9728, 7, 84, 2, 2, 9728, 9729, 7, 91, 2, 2, 9729, 9730, + 7, 82, 2, 2, 9730, 9731, 7, 86, 2, 2, 9731, 1610, 3, 2, 2, 2, 9732, 9733, + 7, 71, 2, 2, 9733, 9734, 7, 80, 2, 2, 9734, 9735, 7, 70, 2, 2, 9735, 9736, + 7, 82, 2, 2, 9736, 9737, 7, 81, 2, 2, 9737, 9738, 7, 75, 2, 2, 9738, 9739, + 7, 80, 2, 2, 9739, 9740, 7, 86, 2, 2, 9740, 1612, 3, 2, 2, 2, 9741, 9742, + 7, 71, 2, 2, 9742, 9743, 7, 80, 2, 2, 9743, 9744, 7, 88, 2, 2, 9744, 9745, + 7, 71, 2, 2, 9745, 9746, 7, 78, 2, 2, 9746, 9747, 7, 81, 2, 2, 9747, 9748, + 7, 82, 2, 2, 9748, 9749, 7, 71, 2, 2, 9749, 1614, 3, 2, 2, 2, 9750, 9751, + 7, 71, 2, 2, 9751, 9752, 7, 83, 2, 2, 9752, 9753, 7, 87, 2, 2, 9753, 9754, + 7, 67, 2, 2, 9754, 9755, 7, 78, 2, 2, 9755, 9756, 7, 85, 2, 2, 9756, 1616, + 3, 2, 2, 2, 9757, 9758, 7, 71, 2, 2, 9758, 9759, 7, 90, 2, 2, 9759, 9760, + 7, 82, 2, 2, 9760, 1618, 3, 2, 2, 2, 9761, 9762, 7, 71, 2, 2, 9762, 9763, + 7, 90, 2, 2, 9763, 9764, 7, 82, 2, 2, 9764, 9765, 7, 81, 2, 2, 9765, 9766, + 7, 84, 2, 2, 9766, 9767, 7, 86, 2, 2, 9767, 9768, 7, 97, 2, 2, 9768, 9769, + 7, 85, 2, 2, 9769, 9770, 7, 71, 2, 2, 9770, 9771, 7, 86, 2, 2, 9771, 1620, + 3, 2, 2, 2, 9772, 9773, 7, 71, 2, 2, 9773, 9774, 7, 90, 2, 2, 9774, 9775, + 7, 86, 2, 2, 9775, 9776, 7, 71, 2, 2, 9776, 9777, 7, 84, 2, 2, 9777, 9778, + 7, 75, 2, 2, 9778, 9779, 7, 81, 2, 2, 9779, 9780, 7, 84, 2, 2, 9780, 9781, + 7, 84, 2, 2, 9781, 9782, 7, 75, 2, 2, 9782, 9783, 7, 80, 2, 2, 9783, 9784, + 7, 73, 2, 2, 9784, 1622, 3, 2, 2, 2, 9785, 9786, 7, 71, 2, 2, 9786, 9787, + 7, 90, 2, 2, 9787, 9788, 7, 86, 2, 2, 9788, 9789, 7, 84, 2, 2, 9789, 9790, + 7, 67, 2, 2, 9790, 9791, 7, 69, 2, 2, 9791, 9792, 7, 86, 2, 2, 9792, 9793, + 7, 88, 2, 2, 9793, 9794, 7, 67, 2, 2, 9794, 9795, 7, 78, 2, 2, 9795, 9796, + 7, 87, 2, 2, 9796, 9797, 7, 71, 2, 2, 9797, 1624, 3, 2, 2, 2, 9798, 9799, + 7, 72, 2, 2, 9799, 9800, 7, 75, 2, 2, 9800, 9801, 7, 71, 2, 2, 9801, 9802, + 7, 78, 2, 2, 9802, 9803, 7, 70, 2, 2, 9803, 1626, 3, 2, 2, 2, 9804, 9805, + 7, 72, 2, 2, 9805, 9806, 7, 75, 2, 2, 9806, 9807, 7, 80, 2, 2, 9807, 9808, + 7, 70, 2, 2, 9808, 9809, 7, 97, 2, 2, 9809, 9810, 7, 75, 2, 2, 9810, 9811, + 7, 80, 2, 2, 9811, 9812, 7, 97, 2, 2, 9812, 9813, 7, 85, 2, 2, 9813, 9814, + 7, 71, 2, 2, 9814, 9815, 7, 86, 2, 2, 9815, 1628, 3, 2, 2, 2, 9816, 9817, + 7, 72, 2, 2, 9817, 9818, 7, 78, 2, 2, 9818, 9819, 7, 81, 2, 2, 9819, 9820, + 7, 81, 2, 2, 9820, 9821, 7, 84, 2, 2, 9821, 1630, 3, 2, 2, 2, 9822, 9823, + 7, 72, 2, 2, 9823, 9824, 7, 81, 2, 2, 9824, 9825, 7, 84, 2, 2, 9825, 9826, + 7, 79, 2, 2, 9826, 9827, 7, 67, 2, 2, 9827, 9828, 7, 86, 2, 2, 9828, 1632, + 3, 2, 2, 2, 9829, 9830, 7, 72, 2, 2, 9830, 9831, 7, 81, 2, 2, 9831, 9832, + 7, 87, 2, 2, 9832, 9833, 7, 80, 2, 2, 9833, 9834, 7, 70, 2, 2, 9834, 9835, + 7, 97, 2, 2, 9835, 9836, 7, 84, 2, 2, 9836, 9837, 7, 81, 2, 2, 9837, 9838, + 7, 89, 2, 2, 9838, 9839, 7, 85, 2, 2, 9839, 1634, 3, 2, 2, 2, 9840, 9841, + 7, 72, 2, 2, 9841, 9842, 7, 84, 2, 2, 9842, 9843, 7, 81, 2, 2, 9843, 9844, + 7, 79, 2, 2, 9844, 9845, 7, 97, 2, 2, 9845, 9846, 7, 68, 2, 2, 9846, 9847, + 7, 67, 2, 2, 9847, 9848, 7, 85, 2, 2, 9848, 9849, 7, 71, 2, 2, 9849, 9850, + 7, 56, 2, 2, 9850, 9851, 7, 54, 2, 2, 9851, 1636, 3, 2, 2, 2, 9852, 9853, + 7, 72, 2, 2, 9853, 9854, 7, 84, 2, 2, 9854, 9855, 7, 81, 2, 2, 9855, 9856, + 7, 79, 2, 2, 9856, 9857, 7, 97, 2, 2, 9857, 9858, 7, 70, 2, 2, 9858, 9859, + 7, 67, 2, 2, 9859, 9860, 7, 91, 2, 2, 9860, 9861, 7, 85, 2, 2, 9861, 1638, + 3, 2, 2, 2, 9862, 9863, 7, 72, 2, 2, 9863, 9864, 7, 84, 2, 2, 9864, 9865, + 7, 81, 2, 2, 9865, 9866, 7, 79, 2, 2, 9866, 9867, 7, 97, 2, 2, 9867, 9868, + 7, 87, 2, 2, 9868, 9869, 7, 80, 2, 2, 9869, 9870, 7, 75, 2, 2, 9870, 9871, + 7, 90, 2, 2, 9871, 9872, 7, 86, 2, 2, 9872, 9873, 7, 75, 2, 2, 9873, 9874, + 7, 79, 2, 2, 9874, 9875, 7, 71, 2, 2, 9875, 1640, 3, 2, 2, 2, 9876, 9877, + 7, 73, 2, 2, 9877, 9878, 7, 71, 2, 2, 9878, 9879, 7, 81, 2, 2, 9879, 9880, + 7, 79, 2, 2, 9880, 9881, 7, 69, 2, 2, 9881, 9882, 7, 81, 2, 2, 9882, 9883, + 7, 78, 2, 2, 9883, 9884, 7, 78, 2, 2, 9884, 9885, 7, 72, 2, 2, 9885, 9886, + 7, 84, 2, 2, 9886, 9887, 7, 81, 2, 2, 9887, 9888, 7, 79, 2, 2, 9888, 9889, + 7, 86, 2, 2, 9889, 9890, 7, 71, 2, 2, 9890, 9891, 7, 90, 2, 2, 9891, 9892, + 7, 86, 2, 2, 9892, 1642, 3, 2, 2, 2, 9893, 9894, 7, 73, 2, 2, 9894, 9895, + 7, 71, 2, 2, 9895, 9896, 7, 81, 2, 2, 9896, 9897, 7, 79, 2, 2, 9897, 9898, + 7, 69, 2, 2, 9898, 9899, 7, 81, 2, 2, 9899, 9900, 7, 78, 2, 2, 9900, 9901, + 7, 78, 2, 2, 9901, 9902, 7, 72, 2, 2, 9902, 9903, 7, 84, 2, 2, 9903, 9904, + 7, 81, 2, 2, 9904, 9905, 7, 79, 2, 2, 9905, 9906, 7, 89, 2, 2, 9906, 9907, + 7, 77, 2, 2, 9907, 9908, 7, 68, 2, 2, 9908, 1644, 3, 2, 2, 2, 9909, 9910, + 7, 73, 2, 2, 9910, 9911, 7, 71, 2, 2, 9911, 9912, 7, 81, 2, 2, 9912, 9913, + 7, 79, 2, 2, 9913, 9914, 7, 71, 2, 2, 9914, 9915, 7, 86, 2, 2, 9915, 9916, + 7, 84, 2, 2, 9916, 9917, 7, 91, 2, 2, 9917, 9918, 7, 69, 2, 2, 9918, 9919, + 7, 81, 2, 2, 9919, 9920, 7, 78, 2, 2, 9920, 9921, 7, 78, 2, 2, 9921, 9922, + 7, 71, 2, 2, 9922, 9923, 7, 69, 2, 2, 9923, 9924, 7, 86, 2, 2, 9924, 9925, + 7, 75, 2, 2, 9925, 9926, 7, 81, 2, 2, 9926, 9927, 7, 80, 2, 2, 9927, 9928, + 7, 72, 2, 2, 9928, 9929, 7, 84, 2, 2, 9929, 9930, 7, 81, 2, 2, 9930, 9931, + 7, 79, 2, 2, 9931, 9932, 7, 86, 2, 2, 9932, 9933, 7, 71, 2, 2, 9933, 9934, + 7, 90, 2, 2, 9934, 9935, 7, 86, 2, 2, 9935, 1646, 3, 2, 2, 2, 9936, 9937, + 7, 73, 2, 2, 9937, 9938, 7, 71, 2, 2, 9938, 9939, 7, 81, 2, 2, 9939, 9940, + 7, 79, 2, 2, 9940, 9941, 7, 71, 2, 2, 9941, 9942, 7, 86, 2, 2, 9942, 9943, + 7, 84, 2, 2, 9943, 9944, 7, 91, 2, 2, 9944, 9945, 7, 69, 2, 2, 9945, 9946, + 7, 81, 2, 2, 9946, 9947, 7, 78, 2, 2, 9947, 9948, 7, 78, 2, 2, 9948, 9949, + 7, 71, 2, 2, 9949, 9950, 7, 69, 2, 2, 9950, 9951, 7, 86, 2, 2, 9951, 9952, + 7, 75, 2, 2, 9952, 9953, 7, 81, 2, 2, 9953, 9954, 7, 80, 2, 2, 9954, 9955, + 7, 72, 2, 2, 9955, 9956, 7, 84, 2, 2, 9956, 9957, 7, 81, 2, 2, 9957, 9958, + 7, 79, 2, 2, 9958, 9959, 7, 89, 2, 2, 9959, 9960, 7, 77, 2, 2, 9960, 9961, + 7, 68, 2, 2, 9961, 1648, 3, 2, 2, 2, 9962, 9963, 7, 73, 2, 2, 9963, 9964, + 7, 71, 2, 2, 9964, 9965, 7, 81, 2, 2, 9965, 9966, 7, 79, 2, 2, 9966, 9967, + 7, 71, 2, 2, 9967, 9968, 7, 86, 2, 2, 9968, 9969, 7, 84, 2, 2, 9969, 9970, + 7, 91, 2, 2, 9970, 9971, 7, 72, 2, 2, 9971, 9972, 7, 84, 2, 2, 9972, 9973, + 7, 81, 2, 2, 9973, 9974, 7, 79, 2, 2, 9974, 9975, 7, 86, 2, 2, 9975, 9976, + 7, 71, 2, 2, 9976, 9977, 7, 90, 2, 2, 9977, 9978, 7, 86, 2, 2, 9978, 1650, + 3, 2, 2, 2, 9979, 9980, 7, 73, 2, 2, 9980, 9981, 7, 71, 2, 2, 9981, 9982, + 7, 81, 2, 2, 9982, 9983, 7, 79, 2, 2, 9983, 9984, 7, 71, 2, 2, 9984, 9985, + 7, 86, 2, 2, 9985, 9986, 7, 84, 2, 2, 9986, 9987, 7, 91, 2, 2, 9987, 9988, + 7, 72, 2, 2, 9988, 9989, 7, 84, 2, 2, 9989, 9990, 7, 81, 2, 2, 9990, 9991, + 7, 79, 2, 2, 9991, 9992, 7, 89, 2, 2, 9992, 9993, 7, 77, 2, 2, 9993, 9994, + 7, 68, 2, 2, 9994, 1652, 3, 2, 2, 2, 9995, 9996, 7, 73, 2, 2, 9996, 9997, + 7, 71, 2, 2, 9997, 9998, 7, 81, 2, 2, 9998, 9999, 7, 79, 2, 2, 9999, 10000, + 7, 71, 2, 2, 10000, 10001, 7, 86, 2, 2, 10001, 10002, 7, 84, 2, 2, 10002, + 10003, 7, 91, 2, 2, 10003, 10004, 7, 80, 2, 2, 10004, 1654, 3, 2, 2, 2, + 10005, 10006, 7, 73, 2, 2, 10006, 10007, 7, 71, 2, 2, 10007, 10008, 7, + 81, 2, 2, 10008, 10009, 7, 79, 2, 2, 10009, 10010, 7, 71, 2, 2, 10010, + 10011, 7, 86, 2, 2, 10011, 10012, 7, 84, 2, 2, 10012, 10013, 7, 91, 2, + 2, 10013, 10014, 7, 86, 2, 2, 10014, 10015, 7, 91, 2, 2, 10015, 10016, + 7, 82, 2, 2, 10016, 10017, 7, 71, 2, 2, 10017, 1656, 3, 2, 2, 2, 10018, + 10019, 7, 73, 2, 2, 10019, 10020, 7, 71, 2, 2, 10020, 10021, 7, 81, 2, + 2, 10021, 10022, 7, 79, 2, 2, 10022, 10023, 7, 72, 2, 2, 10023, 10024, + 7, 84, 2, 2, 10024, 10025, 7, 81, 2, 2, 10025, 10026, 7, 79, 2, 2, 10026, + 10027, 7, 86, 2, 2, 10027, 10028, 7, 71, 2, 2, 10028, 10029, 7, 90, 2, + 2, 10029, 10030, 7, 86, 2, 2, 10030, 1658, 3, 2, 2, 2, 10031, 10032, 7, + 73, 2, 2, 10032, 10033, 7, 71, 2, 2, 10033, 10034, 7, 81, 2, 2, 10034, + 10035, 7, 79, 2, 2, 10035, 10036, 7, 72, 2, 2, 10036, 10037, 7, 84, 2, + 2, 10037, 10038, 7, 81, 2, 2, 10038, 10039, 7, 79, 2, 2, 10039, 10040, + 7, 89, 2, 2, 10040, 10041, 7, 77, 2, 2, 10041, 10042, 7, 68, 2, 2, 10042, + 1660, 3, 2, 2, 2, 10043, 10044, 7, 73, 2, 2, 10044, 10045, 7, 71, 2, 2, + 10045, 10046, 7, 86, 2, 2, 10046, 10047, 7, 97, 2, 2, 10047, 10048, 7, + 72, 2, 2, 10048, 10049, 7, 81, 2, 2, 10049, 10050, 7, 84, 2, 2, 10050, + 10051, 7, 79, 2, 2, 10051, 10052, 7, 67, 2, 2, 10052, 10053, 7, 86, 2, + 2, 10053, 1662, 3, 2, 2, 2, 10054, 10055, 7, 73, 2, 2, 10055, 10056, 7, + 71, 2, 2, 10056, 10057, 7, 86, 2, 2, 10057, 10058, 7, 97, 2, 2, 10058, + 10059, 7, 78, 2, 2, 10059, 10060, 7, 81, 2, 2, 10060, 10061, 7, 69, 2, + 2, 10061, 10062, 7, 77, 2, 2, 10062, 1664, 3, 2, 2, 2, 10063, 10064, 7, + 73, 2, 2, 10064, 10065, 7, 78, 2, 2, 10065, 10066, 7, 71, 2, 2, 10066, + 10067, 7, 80, 2, 2, 10067, 10068, 7, 73, 2, 2, 10068, 10069, 7, 86, 2, + 2, 10069, 10070, 7, 74, 2, 2, 10070, 1666, 3, 2, 2, 2, 10071, 10072, 7, + 73, 2, 2, 10072, 10073, 7, 84, 2, 2, 10073, 10074, 7, 71, 2, 2, 10074, + 10075, 7, 67, 2, 2, 10075, 10076, 7, 86, 2, 2, 10076, 10077, 7, 71, 2, + 2, 10077, 10078, 7, 85, 2, 2, 10078, 10079, 7, 86, 2, 2, 10079, 1668, 3, + 2, 2, 2, 10080, 10081, 7, 73, 2, 2, 10081, 10082, 7, 86, 2, 2, 10082, 10083, + 7, 75, 2, 2, 10083, 10084, 7, 70, 2, 2, 10084, 10085, 7, 97, 2, 2, 10085, + 10086, 7, 85, 2, 2, 10086, 10087, 7, 87, 2, 2, 10087, 10088, 7, 68, 2, + 2, 10088, 10089, 7, 85, 2, 2, 10089, 10090, 7, 71, 2, 2, 10090, 10091, + 7, 86, 2, 2, 10091, 1670, 3, 2, 2, 2, 10092, 10093, 7, 73, 2, 2, 10093, + 10094, 7, 86, 2, 2, 10094, 10095, 7, 75, 2, 2, 10095, 10096, 7, 70, 2, + 2, 10096, 10097, 7, 97, 2, 2, 10097, 10098, 7, 85, 2, 2, 10098, 10099, + 7, 87, 2, 2, 10099, 10100, 7, 68, 2, 2, 10100, 10101, 7, 86, 2, 2, 10101, + 10102, 7, 84, 2, 2, 10102, 10103, 7, 67, 2, 2, 10103, 10104, 7, 69, 2, + 2, 10104, 10105, 7, 86, 2, 2, 10105, 1672, 3, 2, 2, 2, 10106, 10107, 7, + 74, 2, 2, 10107, 10108, 7, 71, 2, 2, 10108, 10109, 7, 90, 2, 2, 10109, + 1674, 3, 2, 2, 2, 10110, 10111, 7, 75, 2, 2, 10111, 10112, 7, 72, 2, 2, + 10112, 10113, 7, 80, 2, 2, 10113, 10114, 7, 87, 2, 2, 10114, 10115, 7, + 78, 2, 2, 10115, 10116, 7, 78, 2, 2, 10116, 1676, 3, 2, 2, 2, 10117, 10118, + 7, 75, 2, 2, 10118, 10119, 7, 80, 2, 2, 10119, 10120, 7, 71, 2, 2, 10120, + 10121, 7, 86, 2, 2, 10121, 10122, 7, 56, 2, 2, 10122, 10123, 7, 97, 2, + 2, 10123, 10124, 7, 67, 2, 2, 10124, 10125, 7, 86, 2, 2, 10125, 10126, + 7, 81, 2, 2, 10126, 10127, 7, 80, 2, 2, 10127, 1678, 3, 2, 2, 2, 10128, + 10129, 7, 75, 2, 2, 10129, 10130, 7, 80, 2, 2, 10130, 10131, 7, 71, 2, + 2, 10131, 10132, 7, 86, 2, 2, 10132, 10133, 7, 56, 2, 2, 10133, 10134, + 7, 97, 2, 2, 10134, 10135, 7, 80, 2, 2, 10135, 10136, 7, 86, 2, 2, 10136, + 10137, 7, 81, 2, 2, 10137, 10138, 7, 67, 2, 2, 10138, 1680, 3, 2, 2, 2, + 10139, 10140, 7, 75, 2, 2, 10140, 10141, 7, 80, 2, 2, 10141, 10142, 7, + 71, 2, 2, 10142, 10143, 7, 86, 2, 2, 10143, 10144, 7, 97, 2, 2, 10144, + 10145, 7, 67, 2, 2, 10145, 10146, 7, 86, 2, 2, 10146, 10147, 7, 81, 2, + 2, 10147, 10148, 7, 80, 2, 2, 10148, 1682, 3, 2, 2, 2, 10149, 10150, 7, + 75, 2, 2, 10150, 10151, 7, 80, 2, 2, 10151, 10152, 7, 71, 2, 2, 10152, + 10153, 7, 86, 2, 2, 10153, 10154, 7, 97, 2, 2, 10154, 10155, 7, 80, 2, + 2, 10155, 10156, 7, 86, 2, 2, 10156, 10157, 7, 81, 2, 2, 10157, 10158, + 7, 67, 2, 2, 10158, 1684, 3, 2, 2, 2, 10159, 10160, 7, 75, 2, 2, 10160, + 10161, 7, 80, 2, 2, 10161, 10162, 7, 85, 2, 2, 10162, 10163, 7, 86, 2, + 2, 10163, 10164, 7, 84, 2, 2, 10164, 1686, 3, 2, 2, 2, 10165, 10166, 7, + 75, 2, 2, 10166, 10167, 7, 80, 2, 2, 10167, 10168, 7, 86, 2, 2, 10168, + 10169, 7, 71, 2, 2, 10169, 10170, 7, 84, 2, 2, 10170, 10171, 7, 75, 2, + 2, 10171, 10172, 7, 81, 2, 2, 10172, 10173, 7, 84, 2, 2, 10173, 10174, + 7, 84, 2, 2, 10174, 10175, 7, 75, 2, 2, 10175, 10176, 7, 80, 2, 2, 10176, + 10177, 7, 73, 2, 2, 10177, 10178, 7, 80, 2, 2, 10178, 1688, 3, 2, 2, 2, + 10179, 10180, 7, 75, 2, 2, 10180, 10181, 7, 80, 2, 2, 10181, 10182, 7, + 86, 2, 2, 10182, 10183, 7, 71, 2, 2, 10183, 10184, 7, 84, 2, 2, 10184, + 10185, 7, 85, 2, 2, 10185, 10186, 7, 71, 2, 2, 10186, 10187, 7, 69, 2, + 2, 10187, 10188, 7, 86, 2, 2, 10188, 10189, 7, 85, 2, 2, 10189, 1690, 3, + 2, 2, 2, 10190, 10191, 7, 75, 2, 2, 10191, 10192, 7, 85, 2, 2, 10192, 10193, + 7, 69, 2, 2, 10193, 10194, 7, 78, 2, 2, 10194, 10195, 7, 81, 2, 2, 10195, + 10196, 7, 85, 2, 2, 10196, 10197, 7, 71, 2, 2, 10197, 10198, 7, 70, 2, + 2, 10198, 1692, 3, 2, 2, 2, 10199, 10200, 7, 75, 2, 2, 10200, 10201, 7, + 85, 2, 2, 10201, 10202, 7, 71, 2, 2, 10202, 10203, 7, 79, 2, 2, 10203, + 10204, 7, 82, 2, 2, 10204, 10205, 7, 86, 2, 2, 10205, 10206, 7, 91, 2, + 2, 10206, 1694, 3, 2, 2, 2, 10207, 10208, 7, 75, 2, 2, 10208, 10209, 7, + 85, 2, 2, 10209, 10210, 7, 80, 2, 2, 10210, 10211, 7, 87, 2, 2, 10211, + 10212, 7, 78, 2, 2, 10212, 10213, 7, 78, 2, 2, 10213, 1696, 3, 2, 2, 2, + 10214, 10215, 7, 75, 2, 2, 10215, 10216, 7, 85, 2, 2, 10216, 10217, 7, + 85, 2, 2, 10217, 10218, 7, 75, 2, 2, 10218, 10219, 7, 79, 2, 2, 10219, + 10220, 7, 82, 2, 2, 10220, 10221, 7, 78, 2, 2, 10221, 10222, 7, 71, 2, + 2, 10222, 1698, 3, 2, 2, 2, 10223, 10224, 7, 75, 2, 2, 10224, 10225, 7, + 85, 2, 2, 10225, 10226, 7, 97, 2, 2, 10226, 10227, 7, 72, 2, 2, 10227, + 10228, 7, 84, 2, 2, 10228, 10229, 7, 71, 2, 2, 10229, 10230, 7, 71, 2, + 2, 10230, 10231, 7, 97, 2, 2, 10231, 10232, 7, 78, 2, 2, 10232, 10233, + 7, 81, 2, 2, 10233, 10234, 7, 69, 2, 2, 10234, 10235, 7, 77, 2, 2, 10235, + 1700, 3, 2, 2, 2, 10236, 10237, 7, 75, 2, 2, 10237, 10238, 7, 85, 2, 2, + 10238, 10239, 7, 97, 2, 2, 10239, 10240, 7, 75, 2, 2, 10240, 10241, 7, + 82, 2, 2, 10241, 10242, 7, 88, 2, 2, 10242, 10243, 7, 54, 2, 2, 10243, + 1702, 3, 2, 2, 2, 10244, 10245, 7, 75, 2, 2, 10245, 10246, 7, 85, 2, 2, + 10246, 10247, 7, 97, 2, 2, 10247, 10248, 7, 75, 2, 2, 10248, 10249, 7, + 82, 2, 2, 10249, 10250, 7, 88, 2, 2, 10250, 10251, 7, 54, 2, 2, 10251, + 10252, 7, 97, 2, 2, 10252, 10253, 7, 69, 2, 2, 10253, 10254, 7, 81, 2, + 2, 10254, 10255, 7, 79, 2, 2, 10255, 10256, 7, 82, 2, 2, 10256, 10257, + 7, 67, 2, 2, 10257, 10258, 7, 86, 2, 2, 10258, 1704, 3, 2, 2, 2, 10259, + 10260, 7, 75, 2, 2, 10260, 10261, 7, 85, 2, 2, 10261, 10262, 7, 97, 2, + 2, 10262, 10263, 7, 75, 2, 2, 10263, 10264, 7, 82, 2, 2, 10264, 10265, + 7, 88, 2, 2, 10265, 10266, 7, 54, 2, 2, 10266, 10267, 7, 97, 2, 2, 10267, + 10268, 7, 79, 2, 2, 10268, 10269, 7, 67, 2, 2, 10269, 10270, 7, 82, 2, + 2, 10270, 10271, 7, 82, 2, 2, 10271, 10272, 7, 71, 2, 2, 10272, 10273, + 7, 70, 2, 2, 10273, 1706, 3, 2, 2, 2, 10274, 10275, 7, 75, 2, 2, 10275, + 10276, 7, 85, 2, 2, 10276, 10277, 7, 97, 2, 2, 10277, 10278, 7, 75, 2, + 2, 10278, 10279, 7, 82, 2, 2, 10279, 10280, 7, 88, 2, 2, 10280, 10281, + 7, 56, 2, 2, 10281, 1708, 3, 2, 2, 2, 10282, 10283, 7, 75, 2, 2, 10283, + 10284, 7, 85, 2, 2, 10284, 10285, 7, 97, 2, 2, 10285, 10286, 7, 87, 2, + 2, 10286, 10287, 7, 85, 2, 2, 10287, 10288, 7, 71, 2, 2, 10288, 10289, + 7, 70, 2, 2, 10289, 10290, 7, 97, 2, 2, 10290, 10291, 7, 78, 2, 2, 10291, + 10292, 7, 81, 2, 2, 10292, 10293, 7, 69, 2, 2, 10293, 10294, 7, 77, 2, + 2, 10294, 1710, 3, 2, 2, 2, 10295, 10296, 7, 78, 2, 2, 10296, 10297, 7, + 67, 2, 2, 10297, 10298, 7, 85, 2, 2, 10298, 10299, 7, 86, 2, 2, 10299, + 10300, 7, 97, 2, 2, 10300, 10301, 7, 75, 2, 2, 10301, 10302, 7, 80, 2, + 2, 10302, 10303, 7, 85, 2, 2, 10303, 10304, 7, 71, 2, 2, 10304, 10305, + 7, 84, 2, 2, 10305, 10306, 7, 86, 2, 2, 10306, 10307, 7, 97, 2, 2, 10307, + 10308, 7, 75, 2, 2, 10308, 10309, 7, 70, 2, 2, 10309, 1712, 3, 2, 2, 2, + 10310, 10311, 7, 78, 2, 2, 10311, 10312, 7, 69, 2, 2, 10312, 10313, 7, + 67, 2, 2, 10313, 10314, 7, 85, 2, 2, 10314, 10315, 7, 71, 2, 2, 10315, + 1714, 3, 2, 2, 2, 10316, 10317, 7, 78, 2, 2, 10317, 10318, 7, 71, 2, 2, + 10318, 10319, 7, 67, 2, 2, 10319, 10320, 7, 85, 2, 2, 10320, 10321, 7, + 86, 2, 2, 10321, 1716, 3, 2, 2, 2, 10322, 10323, 7, 78, 2, 2, 10323, 10324, + 7, 71, 2, 2, 10324, 10325, 7, 80, 2, 2, 10325, 10326, 7, 73, 2, 2, 10326, + 10327, 7, 86, 2, 2, 10327, 10328, 7, 74, 2, 2, 10328, 1718, 3, 2, 2, 2, + 10329, 10330, 7, 78, 2, 2, 10330, 10331, 7, 75, 2, 2, 10331, 10332, 7, + 80, 2, 2, 10332, 10333, 7, 71, 2, 2, 10333, 10334, 7, 72, 2, 2, 10334, + 10335, 7, 84, 2, 2, 10335, 10336, 7, 81, 2, 2, 10336, 10337, 7, 79, 2, + 2, 10337, 10338, 7, 86, 2, 2, 10338, 10339, 7, 71, 2, 2, 10339, 10340, + 7, 90, 2, 2, 10340, 10341, 7, 86, 2, 2, 10341, 1720, 3, 2, 2, 2, 10342, + 10343, 7, 78, 2, 2, 10343, 10344, 7, 75, 2, 2, 10344, 10345, 7, 80, 2, + 2, 10345, 10346, 7, 71, 2, 2, 10346, 10347, 7, 72, 2, 2, 10347, 10348, + 7, 84, 2, 2, 10348, 10349, 7, 81, 2, 2, 10349, 10350, 7, 79, 2, 2, 10350, + 10351, 7, 89, 2, 2, 10351, 10352, 7, 77, 2, 2, 10352, 10353, 7, 68, 2, + 2, 10353, 1722, 3, 2, 2, 2, 10354, 10355, 7, 78, 2, 2, 10355, 10356, 7, + 75, 2, 2, 10356, 10357, 7, 80, 2, 2, 10357, 10358, 7, 71, 2, 2, 10358, + 10359, 7, 85, 2, 2, 10359, 10360, 7, 86, 2, 2, 10360, 10361, 7, 84, 2, + 2, 10361, 10362, 7, 75, 2, 2, 10362, 10363, 7, 80, 2, 2, 10363, 10364, + 7, 73, 2, 2, 10364, 10365, 7, 72, 2, 2, 10365, 10366, 7, 84, 2, 2, 10366, + 10367, 7, 81, 2, 2, 10367, 10368, 7, 79, 2, 2, 10368, 10369, 7, 86, 2, + 2, 10369, 10370, 7, 71, 2, 2, 10370, 10371, 7, 90, 2, 2, 10371, 10372, + 7, 86, 2, 2, 10372, 1724, 3, 2, 2, 2, 10373, 10374, 7, 78, 2, 2, 10374, + 10375, 7, 75, 2, 2, 10375, 10376, 7, 80, 2, 2, 10376, 10377, 7, 71, 2, + 2, 10377, 10378, 7, 85, 2, 2, 10378, 10379, 7, 86, 2, 2, 10379, 10380, + 7, 84, 2, 2, 10380, 10381, 7, 75, 2, 2, 10381, 10382, 7, 80, 2, 2, 10382, + 10383, 7, 73, 2, 2, 10383, 10384, 7, 72, 2, 2, 10384, 10385, 7, 84, 2, + 2, 10385, 10386, 7, 81, 2, 2, 10386, 10387, 7, 79, 2, 2, 10387, 10388, + 7, 89, 2, 2, 10388, 10389, 7, 77, 2, 2, 10389, 10390, 7, 68, 2, 2, 10390, + 1726, 3, 2, 2, 2, 10391, 10392, 7, 78, 2, 2, 10392, 10393, 7, 80, 2, 2, + 10393, 1728, 3, 2, 2, 2, 10394, 10395, 7, 78, 2, 2, 10395, 10396, 7, 81, + 2, 2, 10396, 10397, 7, 67, 2, 2, 10397, 10398, 7, 70, 2, 2, 10398, 10399, + 7, 97, 2, 2, 10399, 10400, 7, 72, 2, 2, 10400, 10401, 7, 75, 2, 2, 10401, + 10402, 7, 78, 2, 2, 10402, 10403, 7, 71, 2, 2, 10403, 1730, 3, 2, 2, 2, + 10404, 10405, 7, 78, 2, 2, 10405, 10406, 7, 81, 2, 2, 10406, 10407, 7, + 69, 2, 2, 10407, 10408, 7, 67, 2, 2, 10408, 10409, 7, 86, 2, 2, 10409, + 10410, 7, 71, 2, 2, 10410, 1732, 3, 2, 2, 2, 10411, 10412, 7, 78, 2, 2, + 10412, 10413, 7, 81, 2, 2, 10413, 10414, 7, 73, 2, 2, 10414, 1734, 3, 2, + 2, 2, 10415, 10416, 7, 78, 2, 2, 10416, 10417, 7, 81, 2, 2, 10417, 10418, + 7, 73, 2, 2, 10418, 10419, 7, 51, 2, 2, 10419, 10420, 7, 50, 2, 2, 10420, + 1736, 3, 2, 2, 2, 10421, 10422, 7, 78, 2, 2, 10422, 10423, 7, 81, 2, 2, + 10423, 10424, 7, 73, 2, 2, 10424, 10425, 7, 52, 2, 2, 10425, 1738, 3, 2, + 2, 2, 10426, 10427, 7, 78, 2, 2, 10427, 10428, 7, 81, 2, 2, 10428, 10429, + 7, 89, 2, 2, 10429, 10430, 7, 71, 2, 2, 10430, 10431, 7, 84, 2, 2, 10431, + 1740, 3, 2, 2, 2, 10432, 10433, 7, 78, 2, 2, 10433, 10434, 7, 82, 2, 2, + 10434, 10435, 7, 67, 2, 2, 10435, 10436, 7, 70, 2, 2, 10436, 1742, 3, 2, + 2, 2, 10437, 10438, 7, 78, 2, 2, 10438, 10439, 7, 86, 2, 2, 10439, 10440, + 7, 84, 2, 2, 10440, 10441, 7, 75, 2, 2, 10441, 10442, 7, 79, 2, 2, 10442, + 1744, 3, 2, 2, 2, 10443, 10444, 7, 79, 2, 2, 10444, 10445, 7, 67, 2, 2, + 10445, 10446, 7, 77, 2, 2, 10446, 10447, 7, 71, 2, 2, 10447, 10448, 7, + 70, 2, 2, 10448, 10449, 7, 67, 2, 2, 10449, 10450, 7, 86, 2, 2, 10450, + 10451, 7, 71, 2, 2, 10451, 1746, 3, 2, 2, 2, 10452, 10453, 7, 79, 2, 2, + 10453, 10454, 7, 67, 2, 2, 10454, 10455, 7, 77, 2, 2, 10455, 10456, 7, + 71, 2, 2, 10456, 10457, 7, 86, 2, 2, 10457, 10458, 7, 75, 2, 2, 10458, + 10459, 7, 79, 2, 2, 10459, 10460, 7, 71, 2, 2, 10460, 1748, 3, 2, 2, 2, + 10461, 10462, 7, 79, 2, 2, 10462, 10463, 7, 67, 2, 2, 10463, 10464, 7, + 77, 2, 2, 10464, 10465, 7, 71, 2, 2, 10465, 10466, 7, 97, 2, 2, 10466, + 10467, 7, 85, 2, 2, 10467, 10468, 7, 71, 2, 2, 10468, 10469, 7, 86, 2, + 2, 10469, 1750, 3, 2, 2, 2, 10470, 10471, 7, 79, 2, 2, 10471, 10472, 7, + 67, 2, 2, 10472, 10473, 7, 85, 2, 2, 10473, 10474, 7, 86, 2, 2, 10474, + 10475, 7, 71, 2, 2, 10475, 10476, 7, 84, 2, 2, 10476, 10477, 7, 97, 2, + 2, 10477, 10478, 7, 82, 2, 2, 10478, 10479, 7, 81, 2, 2, 10479, 10480, + 7, 85, 2, 2, 10480, 10481, 7, 97, 2, 2, 10481, 10482, 7, 89, 2, 2, 10482, + 10483, 7, 67, 2, 2, 10483, 10484, 7, 75, 2, 2, 10484, 10485, 7, 86, 2, + 2, 10485, 1752, 3, 2, 2, 2, 10486, 10487, 7, 79, 2, 2, 10487, 10488, 7, + 68, 2, 2, 10488, 10489, 7, 84, 2, 2, 10489, 10490, 7, 69, 2, 2, 10490, + 10491, 7, 81, 2, 2, 10491, 10492, 7, 80, 2, 2, 10492, 10493, 7, 86, 2, + 2, 10493, 10494, 7, 67, 2, 2, 10494, 10495, 7, 75, 2, 2, 10495, 10496, + 7, 80, 2, 2, 10496, 10497, 7, 85, 2, 2, 10497, 1754, 3, 2, 2, 2, 10498, + 10499, 7, 79, 2, 2, 10499, 10500, 7, 68, 2, 2, 10500, 10501, 7, 84, 2, + 2, 10501, 10502, 7, 70, 2, 2, 10502, 10503, 7, 75, 2, 2, 10503, 10504, + 7, 85, 2, 2, 10504, 10505, 7, 76, 2, 2, 10505, 10506, 7, 81, 2, 2, 10506, + 10507, 7, 75, 2, 2, 10507, 10508, 7, 80, 2, 2, 10508, 10509, 7, 86, 2, + 2, 10509, 1756, 3, 2, 2, 2, 10510, 10511, 7, 79, 2, 2, 10511, 10512, 7, + 68, 2, 2, 10512, 10513, 7, 84, 2, 2, 10513, 10514, 7, 71, 2, 2, 10514, + 10515, 7, 83, 2, 2, 10515, 10516, 7, 87, 2, 2, 10516, 10517, 7, 67, 2, + 2, 10517, 10518, 7, 78, 2, 2, 10518, 1758, 3, 2, 2, 2, 10519, 10520, 7, + 79, 2, 2, 10520, 10521, 7, 68, 2, 2, 10521, 10522, 7, 84, 2, 2, 10522, + 10523, 7, 75, 2, 2, 10523, 10524, 7, 80, 2, 2, 10524, 10525, 7, 86, 2, + 2, 10525, 10526, 7, 71, 2, 2, 10526, 10527, 7, 84, 2, 2, 10527, 10528, + 7, 85, 2, 2, 10528, 10529, 7, 71, 2, 2, 10529, 10530, 7, 69, 2, 2, 10530, + 10531, 7, 86, 2, 2, 10531, 10532, 7, 85, 2, 2, 10532, 1760, 3, 2, 2, 2, + 10533, 10534, 7, 79, 2, 2, 10534, 10535, 7, 68, 2, 2, 10535, 10536, 7, + 84, 2, 2, 10536, 10537, 7, 81, 2, 2, 10537, 10538, 7, 88, 2, 2, 10538, + 10539, 7, 71, 2, 2, 10539, 10540, 7, 84, 2, 2, 10540, 10541, 7, 78, 2, + 2, 10541, 10542, 7, 67, 2, 2, 10542, 10543, 7, 82, 2, 2, 10543, 10544, + 7, 85, 2, 2, 10544, 1762, 3, 2, 2, 2, 10545, 10546, 7, 79, 2, 2, 10546, + 10547, 7, 68, 2, 2, 10547, 10548, 7, 84, 2, 2, 10548, 10549, 7, 86, 2, + 2, 10549, 10550, 7, 81, 2, 2, 10550, 10551, 7, 87, 2, 2, 10551, 10552, + 7, 69, 2, 2, 10552, 10553, 7, 74, 2, 2, 10553, 10554, 7, 71, 2, 2, 10554, + 10555, 7, 85, 2, 2, 10555, 1764, 3, 2, 2, 2, 10556, 10557, 7, 79, 2, 2, + 10557, 10558, 7, 68, 2, 2, 10558, 10559, 7, 84, 2, 2, 10559, 10560, 7, + 89, 2, 2, 10560, 10561, 7, 75, 2, 2, 10561, 10562, 7, 86, 2, 2, 10562, + 10563, 7, 74, 2, 2, 10563, 10564, 7, 75, 2, 2, 10564, 10565, 7, 80, 2, + 2, 10565, 1766, 3, 2, 2, 2, 10566, 10567, 7, 79, 2, 2, 10567, 10568, 7, + 70, 2, 2, 10568, 10569, 7, 55, 2, 2, 10569, 1768, 3, 2, 2, 2, 10570, 10571, + 7, 79, 2, 2, 10571, 10572, 7, 78, 2, 2, 10572, 10573, 7, 75, 2, 2, 10573, + 10574, 7, 80, 2, 2, 10574, 10575, 7, 71, 2, 2, 10575, 10576, 7, 72, 2, + 2, 10576, 10577, 7, 84, 2, 2, 10577, 10578, 7, 81, 2, 2, 10578, 10579, + 7, 79, 2, 2, 10579, 10580, 7, 86, 2, 2, 10580, 10581, 7, 71, 2, 2, 10581, + 10582, 7, 90, 2, 2, 10582, 10583, 7, 86, 2, 2, 10583, 1770, 3, 2, 2, 2, + 10584, 10585, 7, 79, 2, 2, 10585, 10586, 7, 78, 2, 2, 10586, 10587, 7, + 75, 2, 2, 10587, 10588, 7, 80, 2, 2, 10588, 10589, 7, 71, 2, 2, 10589, + 10590, 7, 72, 2, 2, 10590, 10591, 7, 84, 2, 2, 10591, 10592, 7, 81, 2, + 2, 10592, 10593, 7, 79, 2, 2, 10593, 10594, 7, 89, 2, 2, 10594, 10595, + 7, 77, 2, 2, 10595, 10596, 7, 68, 2, 2, 10596, 1772, 3, 2, 2, 2, 10597, + 10598, 7, 79, 2, 2, 10598, 10599, 7, 81, 2, 2, 10599, 10600, 7, 80, 2, + 2, 10600, 10601, 7, 86, 2, 2, 10601, 10602, 7, 74, 2, 2, 10602, 10603, + 7, 80, 2, 2, 10603, 10604, 7, 67, 2, 2, 10604, 10605, 7, 79, 2, 2, 10605, + 10606, 7, 71, 2, 2, 10606, 1774, 3, 2, 2, 2, 10607, 10608, 7, 79, 2, 2, + 10608, 10609, 7, 82, 2, 2, 10609, 10610, 7, 81, 2, 2, 10610, 10611, 7, + 75, 2, 2, 10611, 10612, 7, 80, 2, 2, 10612, 10613, 7, 86, 2, 2, 10613, + 10614, 7, 72, 2, 2, 10614, 10615, 7, 84, 2, 2, 10615, 10616, 7, 81, 2, + 2, 10616, 10617, 7, 79, 2, 2, 10617, 10618, 7, 86, 2, 2, 10618, 10619, + 7, 71, 2, 2, 10619, 10620, 7, 90, 2, 2, 10620, 10621, 7, 86, 2, 2, 10621, + 1776, 3, 2, 2, 2, 10622, 10623, 7, 79, 2, 2, 10623, 10624, 7, 82, 2, 2, + 10624, 10625, 7, 81, 2, 2, 10625, 10626, 7, 75, 2, 2, 10626, 10627, 7, + 80, 2, 2, 10627, 10628, 7, 86, 2, 2, 10628, 10629, 7, 72, 2, 2, 10629, + 10630, 7, 84, 2, 2, 10630, 10631, 7, 81, 2, 2, 10631, 10632, 7, 79, 2, + 2, 10632, 10633, 7, 89, 2, 2, 10633, 10634, 7, 77, 2, 2, 10634, 10635, + 7, 68, 2, 2, 10635, 1778, 3, 2, 2, 2, 10636, 10637, 7, 79, 2, 2, 10637, + 10638, 7, 82, 2, 2, 10638, 10639, 7, 81, 2, 2, 10639, 10640, 7, 78, 2, + 2, 10640, 10641, 7, 91, 2, 2, 10641, 10642, 7, 72, 2, 2, 10642, 10643, + 7, 84, 2, 2, 10643, 10644, 7, 81, 2, 2, 10644, 10645, 7, 79, 2, 2, 10645, + 10646, 7, 86, 2, 2, 10646, 10647, 7, 71, 2, 2, 10647, 10648, 7, 90, 2, + 2, 10648, 10649, 7, 86, 2, 2, 10649, 1780, 3, 2, 2, 2, 10650, 10651, 7, + 79, 2, 2, 10651, 10652, 7, 82, 2, 2, 10652, 10653, 7, 81, 2, 2, 10653, + 10654, 7, 78, 2, 2, 10654, 10655, 7, 91, 2, 2, 10655, 10656, 7, 72, 2, + 2, 10656, 10657, 7, 84, 2, 2, 10657, 10658, 7, 81, 2, 2, 10658, 10659, + 7, 79, 2, 2, 10659, 10660, 7, 89, 2, 2, 10660, 10661, 7, 77, 2, 2, 10661, + 10662, 7, 68, 2, 2, 10662, 1782, 3, 2, 2, 2, 10663, 10664, 7, 79, 2, 2, + 10664, 10665, 7, 87, 2, 2, 10665, 10666, 7, 78, 2, 2, 10666, 10667, 7, + 86, 2, 2, 10667, 10668, 7, 75, 2, 2, 10668, 10669, 7, 78, 2, 2, 10669, + 10670, 7, 75, 2, 2, 10670, 10671, 7, 80, 2, 2, 10671, 10672, 7, 71, 2, + 2, 10672, 10673, 7, 85, 2, 2, 10673, 10674, 7, 86, 2, 2, 10674, 10675, + 7, 84, 2, 2, 10675, 10676, 7, 75, 2, 2, 10676, 10677, 7, 80, 2, 2, 10677, + 10678, 7, 73, 2, 2, 10678, 10679, 7, 72, 2, 2, 10679, 10680, 7, 84, 2, + 2, 10680, 10681, 7, 81, 2, 2, 10681, 10682, 7, 79, 2, 2, 10682, 10683, + 7, 86, 2, 2, 10683, 10684, 7, 71, 2, 2, 10684, 10685, 7, 90, 2, 2, 10685, + 10686, 7, 86, 2, 2, 10686, 1784, 3, 2, 2, 2, 10687, 10688, 7, 79, 2, 2, + 10688, 10689, 7, 87, 2, 2, 10689, 10690, 7, 78, 2, 2, 10690, 10691, 7, + 86, 2, 2, 10691, 10692, 7, 75, 2, 2, 10692, 10693, 7, 78, 2, 2, 10693, + 10694, 7, 75, 2, 2, 10694, 10695, 7, 80, 2, 2, 10695, 10696, 7, 71, 2, + 2, 10696, 10697, 7, 85, 2, 2, 10697, 10698, 7, 86, 2, 2, 10698, 10699, + 7, 84, 2, 2, 10699, 10700, 7, 75, 2, 2, 10700, 10701, 7, 80, 2, 2, 10701, + 10702, 7, 73, 2, 2, 10702, 10703, 7, 72, 2, 2, 10703, 10704, 7, 84, 2, + 2, 10704, 10705, 7, 81, 2, 2, 10705, 10706, 7, 79, 2, 2, 10706, 10707, + 7, 89, 2, 2, 10707, 10708, 7, 77, 2, 2, 10708, 10709, 7, 68, 2, 2, 10709, + 1786, 3, 2, 2, 2, 10710, 10711, 7, 79, 2, 2, 10711, 10712, 7, 87, 2, 2, + 10712, 10713, 7, 78, 2, 2, 10713, 10714, 7, 86, 2, 2, 10714, 10715, 7, + 75, 2, 2, 10715, 10716, 7, 82, 2, 2, 10716, 10717, 7, 81, 2, 2, 10717, + 10718, 7, 75, 2, 2, 10718, 10719, 7, 80, 2, 2, 10719, 10720, 7, 86, 2, + 2, 10720, 10721, 7, 72, 2, 2, 10721, 10722, 7, 84, 2, 2, 10722, 10723, + 7, 81, 2, 2, 10723, 10724, 7, 79, 2, 2, 10724, 10725, 7, 86, 2, 2, 10725, + 10726, 7, 71, 2, 2, 10726, 10727, 7, 90, 2, 2, 10727, 10728, 7, 86, 2, + 2, 10728, 1788, 3, 2, 2, 2, 10729, 10730, 7, 79, 2, 2, 10730, 10731, 7, + 87, 2, 2, 10731, 10732, 7, 78, 2, 2, 10732, 10733, 7, 86, 2, 2, 10733, + 10734, 7, 75, 2, 2, 10734, 10735, 7, 82, 2, 2, 10735, 10736, 7, 81, 2, + 2, 10736, 10737, 7, 75, 2, 2, 10737, 10738, 7, 80, 2, 2, 10738, 10739, + 7, 86, 2, 2, 10739, 10740, 7, 72, 2, 2, 10740, 10741, 7, 84, 2, 2, 10741, + 10742, 7, 81, 2, 2, 10742, 10743, 7, 79, 2, 2, 10743, 10744, 7, 89, 2, + 2, 10744, 10745, 7, 77, 2, 2, 10745, 10746, 7, 68, 2, 2, 10746, 1790, 3, + 2, 2, 2, 10747, 10748, 7, 79, 2, 2, 10748, 10749, 7, 87, 2, 2, 10749, 10750, + 7, 78, 2, 2, 10750, 10751, 7, 86, 2, 2, 10751, 10752, 7, 75, 2, 2, 10752, + 10753, 7, 82, 2, 2, 10753, 10754, 7, 81, 2, 2, 10754, 10755, 7, 78, 2, + 2, 10755, 10756, 7, 91, 2, 2, 10756, 10757, 7, 73, 2, 2, 10757, 10758, + 7, 81, 2, 2, 10758, 10759, 7, 80, 2, 2, 10759, 10760, 7, 72, 2, 2, 10760, + 10761, 7, 84, 2, 2, 10761, 10762, 7, 81, 2, 2, 10762, 10763, 7, 79, 2, + 2, 10763, 10764, 7, 86, 2, 2, 10764, 10765, 7, 71, 2, 2, 10765, 10766, + 7, 90, 2, 2, 10766, 10767, 7, 86, 2, 2, 10767, 1792, 3, 2, 2, 2, 10768, + 10769, 7, 79, 2, 2, 10769, 10770, 7, 87, 2, 2, 10770, 10771, 7, 78, 2, + 2, 10771, 10772, 7, 86, 2, 2, 10772, 10773, 7, 75, 2, 2, 10773, 10774, + 7, 82, 2, 2, 10774, 10775, 7, 81, 2, 2, 10775, 10776, 7, 78, 2, 2, 10776, + 10777, 7, 91, 2, 2, 10777, 10778, 7, 73, 2, 2, 10778, 10779, 7, 81, 2, + 2, 10779, 10780, 7, 80, 2, 2, 10780, 10781, 7, 72, 2, 2, 10781, 10782, + 7, 84, 2, 2, 10782, 10783, 7, 81, 2, 2, 10783, 10784, 7, 79, 2, 2, 10784, + 10785, 7, 89, 2, 2, 10785, 10786, 7, 77, 2, 2, 10786, 10787, 7, 68, 2, + 2, 10787, 1794, 3, 2, 2, 2, 10788, 10789, 7, 80, 2, 2, 10789, 10790, 7, + 67, 2, 2, 10790, 10791, 7, 79, 2, 2, 10791, 10792, 7, 71, 2, 2, 10792, + 10793, 7, 97, 2, 2, 10793, 10794, 7, 69, 2, 2, 10794, 10795, 7, 81, 2, + 2, 10795, 10796, 7, 80, 2, 2, 10796, 10797, 7, 85, 2, 2, 10797, 10798, + 7, 86, 2, 2, 10798, 1796, 3, 2, 2, 2, 10799, 10800, 7, 80, 2, 2, 10800, + 10801, 7, 87, 2, 2, 10801, 10802, 7, 78, 2, 2, 10802, 10803, 7, 78, 2, + 2, 10803, 10804, 7, 75, 2, 2, 10804, 10805, 7, 72, 2, 2, 10805, 1798, 3, + 2, 2, 2, 10806, 10807, 7, 80, 2, 2, 10807, 10808, 7, 87, 2, 2, 10808, 10809, + 7, 79, 2, 2, 10809, 10810, 7, 73, 2, 2, 10810, 10811, 7, 71, 2, 2, 10811, + 10812, 7, 81, 2, 2, 10812, 10813, 7, 79, 2, 2, 10813, 10814, 7, 71, 2, + 2, 10814, 10815, 7, 86, 2, 2, 10815, 10816, 7, 84, 2, 2, 10816, 10817, + 7, 75, 2, 2, 10817, 10818, 7, 71, 2, 2, 10818, 10819, 7, 85, 2, 2, 10819, + 1800, 3, 2, 2, 2, 10820, 10821, 7, 80, 2, 2, 10821, 10822, 7, 87, 2, 2, + 10822, 10823, 7, 79, 2, 2, 10823, 10824, 7, 75, 2, 2, 10824, 10825, 7, + 80, 2, 2, 10825, 10826, 7, 86, 2, 2, 10826, 10827, 7, 71, 2, 2, 10827, + 10828, 7, 84, 2, 2, 10828, 10829, 7, 75, 2, 2, 10829, 10830, 7, 81, 2, + 2, 10830, 10831, 7, 84, 2, 2, 10831, 10832, 7, 84, 2, 2, 10832, 10833, + 7, 75, 2, 2, 10833, 10834, 7, 80, 2, 2, 10834, 10835, 7, 73, 2, 2, 10835, + 10836, 7, 85, 2, 2, 10836, 1802, 3, 2, 2, 2, 10837, 10838, 7, 80, 2, 2, + 10838, 10839, 7, 87, 2, 2, 10839, 10840, 7, 79, 2, 2, 10840, 10841, 7, + 82, 2, 2, 10841, 10842, 7, 81, 2, 2, 10842, 10843, 7, 75, 2, 2, 10843, + 10844, 7, 80, 2, 2, 10844, 10845, 7, 86, 2, 2, 10845, 10846, 7, 85, 2, + 2, 10846, 1804, 3, 2, 2, 2, 10847, 10848, 7, 81, 2, 2, 10848, 10849, 7, + 69, 2, 2, 10849, 10850, 7, 86, 2, 2, 10850, 1806, 3, 2, 2, 2, 10851, 10852, + 7, 81, 2, 2, 10852, 10853, 7, 69, 2, 2, 10853, 10854, 7, 86, 2, 2, 10854, + 10855, 7, 71, 2, 2, 10855, 10856, 7, 86, 2, 2, 10856, 10857, 7, 97, 2, + 2, 10857, 10858, 7, 78, 2, 2, 10858, 10859, 7, 71, 2, 2, 10859, 10860, + 7, 80, 2, 2, 10860, 10861, 7, 73, 2, 2, 10861, 10862, 7, 86, 2, 2, 10862, + 10863, 7, 74, 2, 2, 10863, 1808, 3, 2, 2, 2, 10864, 10865, 7, 81, 2, 2, + 10865, 10866, 7, 84, 2, 2, 10866, 10867, 7, 70, 2, 2, 10867, 1810, 3, 2, + 2, 2, 10868, 10869, 7, 81, 2, 2, 10869, 10870, 7, 88, 2, 2, 10870, 10871, + 7, 71, 2, 2, 10871, 10872, 7, 84, 2, 2, 10872, 10873, 7, 78, 2, 2, 10873, + 10874, 7, 67, 2, 2, 10874, 10875, 7, 82, 2, 2, 10875, 10876, 7, 85, 2, + 2, 10876, 1812, 3, 2, 2, 2, 10877, 10878, 7, 82, 2, 2, 10878, 10879, 7, + 71, 2, 2, 10879, 10880, 7, 84, 2, 2, 10880, 10881, 7, 75, 2, 2, 10881, + 10882, 7, 81, 2, 2, 10882, 10883, 7, 70, 2, 2, 10883, 10884, 7, 97, 2, + 2, 10884, 10885, 7, 67, 2, 2, 10885, 10886, 7, 70, 2, 2, 10886, 10887, + 7, 70, 2, 2, 10887, 1814, 3, 2, 2, 2, 10888, 10889, 7, 82, 2, 2, 10889, + 10890, 7, 71, 2, 2, 10890, 10891, 7, 84, 2, 2, 10891, 10892, 7, 75, 2, + 2, 10892, 10893, 7, 81, 2, 2, 10893, 10894, 7, 70, 2, 2, 10894, 10895, + 7, 97, 2, 2, 10895, 10896, 7, 70, 2, 2, 10896, 10897, 7, 75, 2, 2, 10897, + 10898, 7, 72, 2, 2, 10898, 10899, 7, 72, 2, 2, 10899, 1816, 3, 2, 2, 2, + 10900, 10901, 7, 82, 2, 2, 10901, 10902, 7, 75, 2, 2, 10902, 1818, 3, 2, + 2, 2, 10903, 10904, 7, 82, 2, 2, 10904, 10905, 7, 81, 2, 2, 10905, 10906, + 7, 75, 2, 2, 10906, 10907, 7, 80, 2, 2, 10907, 10908, 7, 86, 2, 2, 10908, + 10909, 7, 72, 2, 2, 10909, 10910, 7, 84, 2, 2, 10910, 10911, 7, 81, 2, + 2, 10911, 10912, 7, 79, 2, 2, 10912, 10913, 7, 86, 2, 2, 10913, 10914, + 7, 71, 2, 2, 10914, 10915, 7, 90, 2, 2, 10915, 10916, 7, 86, 2, 2, 10916, + 1820, 3, 2, 2, 2, 10917, 10918, 7, 82, 2, 2, 10918, 10919, 7, 81, 2, 2, + 10919, 10920, 7, 75, 2, 2, 10920, 10921, 7, 80, 2, 2, 10921, 10922, 7, + 86, 2, 2, 10922, 10923, 7, 72, 2, 2, 10923, 10924, 7, 84, 2, 2, 10924, + 10925, 7, 81, 2, 2, 10925, 10926, 7, 79, 2, 2, 10926, 10927, 7, 89, 2, + 2, 10927, 10928, 7, 77, 2, 2, 10928, 10929, 7, 68, 2, 2, 10929, 1822, 3, + 2, 2, 2, 10930, 10931, 7, 82, 2, 2, 10931, 10932, 7, 81, 2, 2, 10932, 10933, + 7, 75, 2, 2, 10933, 10934, 7, 80, 2, 2, 10934, 10935, 7, 86, 2, 2, 10935, + 10936, 7, 80, 2, 2, 10936, 1824, 3, 2, 2, 2, 10937, 10938, 7, 82, 2, 2, + 10938, 10939, 7, 81, 2, 2, 10939, 10940, 7, 78, 2, 2, 10940, 10941, 7, + 91, 2, 2, 10941, 10942, 7, 72, 2, 2, 10942, 10943, 7, 84, 2, 2, 10943, + 10944, 7, 81, 2, 2, 10944, 10945, 7, 79, 2, 2, 10945, 10946, 7, 86, 2, + 2, 10946, 10947, 7, 71, 2, 2, 10947, 10948, 7, 90, 2, 2, 10948, 10949, + 7, 86, 2, 2, 10949, 1826, 3, 2, 2, 2, 10950, 10951, 7, 82, 2, 2, 10951, + 10952, 7, 81, 2, 2, 10952, 10953, 7, 78, 2, 2, 10953, 10954, 7, 91, 2, + 2, 10954, 10955, 7, 72, 2, 2, 10955, 10956, 7, 84, 2, 2, 10956, 10957, + 7, 81, 2, 2, 10957, 10958, 7, 79, 2, 2, 10958, 10959, 7, 89, 2, 2, 10959, + 10960, 7, 77, 2, 2, 10960, 10961, 7, 68, 2, 2, 10961, 1828, 3, 2, 2, 2, + 10962, 10963, 7, 82, 2, 2, 10963, 10964, 7, 81, 2, 2, 10964, 10965, 7, + 78, 2, 2, 10965, 10966, 7, 91, 2, 2, 10966, 10967, 7, 73, 2, 2, 10967, + 10968, 7, 81, 2, 2, 10968, 10969, 7, 80, 2, 2, 10969, 10970, 7, 72, 2, + 2, 10970, 10971, 7, 84, 2, 2, 10971, 10972, 7, 81, 2, 2, 10972, 10973, + 7, 79, 2, 2, 10973, 10974, 7, 86, 2, 2, 10974, 10975, 7, 71, 2, 2, 10975, + 10976, 7, 90, 2, 2, 10976, 10977, 7, 86, 2, 2, 10977, 1830, 3, 2, 2, 2, + 10978, 10979, 7, 82, 2, 2, 10979, 10980, 7, 81, 2, 2, 10980, 10981, 7, + 78, 2, 2, 10981, 10982, 7, 91, 2, 2, 10982, 10983, 7, 73, 2, 2, 10983, + 10984, 7, 81, 2, 2, 10984, 10985, 7, 80, 2, 2, 10985, 10986, 7, 72, 2, + 2, 10986, 10987, 7, 84, 2, 2, 10987, 10988, 7, 81, 2, 2, 10988, 10989, + 7, 79, 2, 2, 10989, 10990, 7, 89, 2, 2, 10990, 10991, 7, 77, 2, 2, 10991, + 10992, 7, 68, 2, 2, 10992, 1832, 3, 2, 2, 2, 10993, 10994, 7, 82, 2, 2, + 10994, 10995, 7, 81, 2, 2, 10995, 10996, 7, 89, 2, 2, 10996, 1834, 3, 2, + 2, 2, 10997, 10998, 7, 82, 2, 2, 10998, 10999, 7, 81, 2, 2, 10999, 11000, + 7, 89, 2, 2, 11000, 11001, 7, 71, 2, 2, 11001, 11002, 7, 84, 2, 2, 11002, + 1836, 3, 2, 2, 2, 11003, 11004, 7, 83, 2, 2, 11004, 11005, 7, 87, 2, 2, + 11005, 11006, 7, 81, 2, 2, 11006, 11007, 7, 86, 2, 2, 11007, 11008, 7, + 71, 2, 2, 11008, 1838, 3, 2, 2, 2, 11009, 11010, 7, 84, 2, 2, 11010, 11011, + 7, 67, 2, 2, 11011, 11012, 7, 70, 2, 2, 11012, 11013, 7, 75, 2, 2, 11013, + 11014, 7, 67, 2, 2, 11014, 11015, 7, 80, 2, 2, 11015, 11016, 7, 85, 2, + 2, 11016, 1840, 3, 2, 2, 2, 11017, 11018, 7, 84, 2, 2, 11018, 11019, 7, + 67, 2, 2, 11019, 11020, 7, 80, 2, 2, 11020, 11021, 7, 70, 2, 2, 11021, + 1842, 3, 2, 2, 2, 11022, 11023, 7, 84, 2, 2, 11023, 11024, 7, 67, 2, 2, + 11024, 11025, 7, 80, 2, 2, 11025, 11026, 7, 70, 2, 2, 11026, 11027, 7, + 81, 2, 2, 11027, 11028, 7, 79, 2, 2, 11028, 11029, 7, 97, 2, 2, 11029, + 11030, 7, 68, 2, 2, 11030, 11031, 7, 91, 2, 2, 11031, 11032, 7, 86, 2, + 2, 11032, 11033, 7, 71, 2, 2, 11033, 11034, 7, 85, 2, 2, 11034, 1844, 3, + 2, 2, 2, 11035, 11036, 7, 84, 2, 2, 11036, 11037, 7, 71, 2, 2, 11037, 11038, + 7, 78, 2, 2, 11038, 11039, 7, 71, 2, 2, 11039, 11040, 7, 67, 2, 2, 11040, + 11041, 7, 85, 2, 2, 11041, 11042, 7, 71, 2, 2, 11042, 11043, 7, 97, 2, + 2, 11043, 11044, 7, 78, 2, 2, 11044, 11045, 7, 81, 2, 2, 11045, 11046, + 7, 69, 2, 2, 11046, 11047, 7, 77, 2, 2, 11047, 1846, 3, 2, 2, 2, 11048, + 11049, 7, 84, 2, 2, 11049, 11050, 7, 71, 2, 2, 11050, 11051, 7, 88, 2, + 2, 11051, 11052, 7, 71, 2, 2, 11052, 11053, 7, 84, 2, 2, 11053, 11054, + 7, 85, 2, 2, 11054, 11055, 7, 71, 2, 2, 11055, 1848, 3, 2, 2, 2, 11056, + 11057, 7, 84, 2, 2, 11057, 11058, 7, 81, 2, 2, 11058, 11059, 7, 87, 2, + 2, 11059, 11060, 7, 80, 2, 2, 11060, 11061, 7, 70, 2, 2, 11061, 1850, 3, + 2, 2, 2, 11062, 11063, 7, 84, 2, 2, 11063, 11064, 7, 81, 2, 2, 11064, 11065, + 7, 89, 2, 2, 11065, 11066, 7, 97, 2, 2, 11066, 11067, 7, 69, 2, 2, 11067, + 11068, 7, 81, 2, 2, 11068, 11069, 7, 87, 2, 2, 11069, 11070, 7, 80, 2, + 2, 11070, 11071, 7, 86, 2, 2, 11071, 1852, 3, 2, 2, 2, 11072, 11073, 7, + 84, 2, 2, 11073, 11074, 7, 82, 2, 2, 11074, 11075, 7, 67, 2, 2, 11075, + 11076, 7, 70, 2, 2, 11076, 1854, 3, 2, 2, 2, 11077, 11078, 7, 84, 2, 2, + 11078, 11079, 7, 86, 2, 2, 11079, 11080, 7, 84, 2, 2, 11080, 11081, 7, + 75, 2, 2, 11081, 11082, 7, 79, 2, 2, 11082, 1856, 3, 2, 2, 2, 11083, 11084, + 7, 85, 2, 2, 11084, 11085, 7, 71, 2, 2, 11085, 11086, 7, 69, 2, 2, 11086, + 11087, 7, 97, 2, 2, 11087, 11088, 7, 86, 2, 2, 11088, 11089, 7, 81, 2, + 2, 11089, 11090, 7, 97, 2, 2, 11090, 11091, 7, 86, 2, 2, 11091, 11092, + 7, 75, 2, 2, 11092, 11093, 7, 79, 2, 2, 11093, 11094, 7, 71, 2, 2, 11094, + 1858, 3, 2, 2, 2, 11095, 11096, 7, 85, 2, 2, 11096, 11097, 7, 71, 2, 2, + 11097, 11098, 7, 85, 2, 2, 11098, 11099, 7, 85, 2, 2, 11099, 11100, 7, + 75, 2, 2, 11100, 11101, 7, 81, 2, 2, 11101, 11102, 7, 80, 2, 2, 11102, + 11103, 7, 97, 2, 2, 11103, 11104, 7, 87, 2, 2, 11104, 11105, 7, 85, 2, + 2, 11105, 11106, 7, 71, 2, 2, 11106, 11107, 7, 84, 2, 2, 11107, 1860, 3, + 2, 2, 2, 11108, 11109, 7, 85, 2, 2, 11109, 11110, 7, 74, 2, 2, 11110, 11111, + 7, 67, 2, 2, 11111, 1862, 3, 2, 2, 2, 11112, 11113, 7, 85, 2, 2, 11113, + 11114, 7, 74, 2, 2, 11114, 11115, 7, 67, 2, 2, 11115, 11116, 7, 51, 2, + 2, 11116, 1864, 3, 2, 2, 2, 11117, 11118, 7, 85, 2, 2, 11118, 11119, 7, + 74, 2, 2, 11119, 11120, 7, 67, 2, 2, 11120, 11121, 7, 52, 2, 2, 11121, + 1866, 3, 2, 2, 2, 11122, 11123, 7, 85, 2, 2, 11123, 11124, 7, 69, 2, 2, + 11124, 11125, 7, 74, 2, 2, 11125, 11126, 7, 71, 2, 2, 11126, 11127, 7, + 79, 2, 2, 11127, 11128, 7, 67, 2, 2, 11128, 11129, 7, 97, 2, 2, 11129, + 11130, 7, 80, 2, 2, 11130, 11131, 7, 67, 2, 2, 11131, 11132, 7, 79, 2, + 2, 11132, 11133, 7, 71, 2, 2, 11133, 1868, 3, 2, 2, 2, 11134, 11135, 7, + 85, 2, 2, 11135, 11136, 7, 75, 2, 2, 11136, 11137, 7, 73, 2, 2, 11137, + 11138, 7, 80, 2, 2, 11138, 1870, 3, 2, 2, 2, 11139, 11140, 7, 85, 2, 2, + 11140, 11141, 7, 75, 2, 2, 11141, 11142, 7, 80, 2, 2, 11142, 1872, 3, 2, + 2, 2, 11143, 11144, 7, 85, 2, 2, 11144, 11145, 7, 78, 2, 2, 11145, 11146, + 7, 71, 2, 2, 11146, 11147, 7, 71, 2, 2, 11147, 11148, 7, 82, 2, 2, 11148, + 1874, 3, 2, 2, 2, 11149, 11150, 7, 85, 2, 2, 11150, 11151, 7, 81, 2, 2, + 11151, 11152, 7, 87, 2, 2, 11152, 11153, 7, 80, 2, 2, 11153, 11154, 7, + 70, 2, 2, 11154, 11155, 7, 71, 2, 2, 11155, 11156, 7, 90, 2, 2, 11156, + 1876, 3, 2, 2, 2, 11157, 11158, 7, 85, 2, 2, 11158, 11159, 7, 83, 2, 2, + 11159, 11160, 7, 78, 2, 2, 11160, 11161, 7, 97, 2, 2, 11161, 11162, 7, + 86, 2, 2, 11162, 11163, 7, 74, 2, 2, 11163, 11164, 7, 84, 2, 2, 11164, + 11165, 7, 71, 2, 2, 11165, 11166, 7, 67, 2, 2, 11166, 11167, 7, 70, 2, + 2, 11167, 11168, 7, 97, 2, 2, 11168, 11169, 7, 89, 2, 2, 11169, 11170, + 7, 67, 2, 2, 11170, 11171, 7, 75, 2, 2, 11171, 11172, 7, 86, 2, 2, 11172, + 11173, 7, 97, 2, 2, 11173, 11174, 7, 67, 2, 2, 11174, 11175, 7, 72, 2, + 2, 11175, 11176, 7, 86, 2, 2, 11176, 11177, 7, 71, 2, 2, 11177, 11178, + 7, 84, 2, 2, 11178, 11179, 7, 97, 2, 2, 11179, 11180, 7, 73, 2, 2, 11180, + 11181, 7, 86, 2, 2, 11181, 11182, 7, 75, 2, 2, 11182, 11183, 7, 70, 2, + 2, 11183, 11184, 7, 85, 2, 2, 11184, 1878, 3, 2, 2, 2, 11185, 11186, 7, + 85, 2, 2, 11186, 11187, 7, 83, 2, 2, 11187, 11188, 7, 84, 2, 2, 11188, + 11189, 7, 86, 2, 2, 11189, 1880, 3, 2, 2, 2, 11190, 11191, 7, 85, 2, 2, + 11191, 11192, 7, 84, 2, 2, 11192, 11193, 7, 75, 2, 2, 11193, 11194, 7, + 70, 2, 2, 11194, 1882, 3, 2, 2, 2, 11195, 11196, 7, 85, 2, 2, 11196, 11197, + 7, 86, 2, 2, 11197, 11198, 7, 67, 2, 2, 11198, 11199, 7, 84, 2, 2, 11199, + 11200, 7, 86, 2, 2, 11200, 11201, 7, 82, 2, 2, 11201, 11202, 7, 81, 2, + 2, 11202, 11203, 7, 75, 2, 2, 11203, 11204, 7, 80, 2, 2, 11204, 11205, + 7, 86, 2, 2, 11205, 1884, 3, 2, 2, 2, 11206, 11207, 7, 85, 2, 2, 11207, + 11208, 7, 86, 2, 2, 11208, 11209, 7, 84, 2, 2, 11209, 11210, 7, 69, 2, + 2, 11210, 11211, 7, 79, 2, 2, 11211, 11212, 7, 82, 2, 2, 11212, 1886, 3, + 2, 2, 2, 11213, 11214, 7, 85, 2, 2, 11214, 11215, 7, 86, 2, 2, 11215, 11216, + 7, 84, 2, 2, 11216, 11217, 7, 97, 2, 2, 11217, 11218, 7, 86, 2, 2, 11218, + 11219, 7, 81, 2, 2, 11219, 11220, 7, 97, 2, 2, 11220, 11221, 7, 70, 2, + 2, 11221, 11222, 7, 67, 2, 2, 11222, 11223, 7, 86, 2, 2, 11223, 11224, + 7, 71, 2, 2, 11224, 1888, 3, 2, 2, 2, 11225, 11226, 7, 85, 2, 2, 11226, + 11227, 7, 86, 2, 2, 11227, 11228, 7, 97, 2, 2, 11228, 11229, 7, 67, 2, + 2, 11229, 11230, 7, 84, 2, 2, 11230, 11231, 7, 71, 2, 2, 11231, 11232, + 7, 67, 2, 2, 11232, 1890, 3, 2, 2, 2, 11233, 11234, 7, 85, 2, 2, 11234, + 11235, 7, 86, 2, 2, 11235, 11236, 7, 97, 2, 2, 11236, 11237, 7, 67, 2, + 2, 11237, 11238, 7, 85, 2, 2, 11238, 11239, 7, 68, 2, 2, 11239, 11240, + 7, 75, 2, 2, 11240, 11241, 7, 80, 2, 2, 11241, 11242, 7, 67, 2, 2, 11242, + 11243, 7, 84, 2, 2, 11243, 11244, 7, 91, 2, 2, 11244, 1892, 3, 2, 2, 2, + 11245, 11246, 7, 85, 2, 2, 11246, 11247, 7, 86, 2, 2, 11247, 11248, 7, + 97, 2, 2, 11248, 11249, 7, 67, 2, 2, 11249, 11250, 7, 85, 2, 2, 11250, + 11251, 7, 86, 2, 2, 11251, 11252, 7, 71, 2, 2, 11252, 11253, 7, 90, 2, + 2, 11253, 11254, 7, 86, 2, 2, 11254, 1894, 3, 2, 2, 2, 11255, 11256, 7, + 85, 2, 2, 11256, 11257, 7, 86, 2, 2, 11257, 11258, 7, 97, 2, 2, 11258, + 11259, 7, 67, 2, 2, 11259, 11260, 7, 85, 2, 2, 11260, 11261, 7, 89, 2, + 2, 11261, 11262, 7, 77, 2, 2, 11262, 11263, 7, 68, 2, 2, 11263, 1896, 3, + 2, 2, 2, 11264, 11265, 7, 85, 2, 2, 11265, 11266, 7, 86, 2, 2, 11266, 11267, + 7, 97, 2, 2, 11267, 11268, 7, 67, 2, 2, 11268, 11269, 7, 85, 2, 2, 11269, + 11270, 7, 89, 2, 2, 11270, 11271, 7, 77, 2, 2, 11271, 11272, 7, 86, 2, + 2, 11272, 1898, 3, 2, 2, 2, 11273, 11274, 7, 85, 2, 2, 11274, 11275, 7, + 86, 2, 2, 11275, 11276, 7, 97, 2, 2, 11276, 11277, 7, 68, 2, 2, 11277, + 11278, 7, 87, 2, 2, 11278, 11279, 7, 72, 2, 2, 11279, 11280, 7, 72, 2, + 2, 11280, 11281, 7, 71, 2, 2, 11281, 11282, 7, 84, 2, 2, 11282, 1900, 3, + 2, 2, 2, 11283, 11284, 7, 85, 2, 2, 11284, 11285, 7, 86, 2, 2, 11285, 11286, + 7, 97, 2, 2, 11286, 11287, 7, 69, 2, 2, 11287, 11288, 7, 71, 2, 2, 11288, + 11289, 7, 80, 2, 2, 11289, 11290, 7, 86, 2, 2, 11290, 11291, 7, 84, 2, + 2, 11291, 11292, 7, 81, 2, 2, 11292, 11293, 7, 75, 2, 2, 11293, 11294, + 7, 70, 2, 2, 11294, 1902, 3, 2, 2, 2, 11295, 11296, 7, 85, 2, 2, 11296, + 11297, 7, 86, 2, 2, 11297, 11298, 7, 97, 2, 2, 11298, 11299, 7, 69, 2, + 2, 11299, 11300, 7, 81, 2, 2, 11300, 11301, 7, 80, 2, 2, 11301, 11302, + 7, 86, 2, 2, 11302, 11303, 7, 67, 2, 2, 11303, 11304, 7, 75, 2, 2, 11304, + 11305, 7, 80, 2, 2, 11305, 11306, 7, 85, 2, 2, 11306, 1904, 3, 2, 2, 2, + 11307, 11308, 7, 85, 2, 2, 11308, 11309, 7, 86, 2, 2, 11309, 11310, 7, + 97, 2, 2, 11310, 11311, 7, 69, 2, 2, 11311, 11312, 7, 84, 2, 2, 11312, + 11313, 7, 81, 2, 2, 11313, 11314, 7, 85, 2, 2, 11314, 11315, 7, 85, 2, + 2, 11315, 11316, 7, 71, 2, 2, 11316, 11317, 7, 85, 2, 2, 11317, 1906, 3, + 2, 2, 2, 11318, 11319, 7, 85, 2, 2, 11319, 11320, 7, 86, 2, 2, 11320, 11321, + 7, 97, 2, 2, 11321, 11322, 7, 70, 2, 2, 11322, 11323, 7, 75, 2, 2, 11323, + 11324, 7, 72, 2, 2, 11324, 11325, 7, 72, 2, 2, 11325, 11326, 7, 71, 2, + 2, 11326, 11327, 7, 84, 2, 2, 11327, 11328, 7, 71, 2, 2, 11328, 11329, + 7, 80, 2, 2, 11329, 11330, 7, 69, 2, 2, 11330, 11331, 7, 71, 2, 2, 11331, + 1908, 3, 2, 2, 2, 11332, 11333, 7, 85, 2, 2, 11333, 11334, 7, 86, 2, 2, + 11334, 11335, 7, 97, 2, 2, 11335, 11336, 7, 70, 2, 2, 11336, 11337, 7, + 75, 2, 2, 11337, 11338, 7, 79, 2, 2, 11338, 11339, 7, 71, 2, 2, 11339, + 11340, 7, 80, 2, 2, 11340, 11341, 7, 85, 2, 2, 11341, 11342, 7, 75, 2, + 2, 11342, 11343, 7, 81, 2, 2, 11343, 11344, 7, 80, 2, 2, 11344, 1910, 3, + 2, 2, 2, 11345, 11346, 7, 85, 2, 2, 11346, 11347, 7, 86, 2, 2, 11347, 11348, + 7, 97, 2, 2, 11348, 11349, 7, 70, 2, 2, 11349, 11350, 7, 75, 2, 2, 11350, + 11351, 7, 85, 2, 2, 11351, 11352, 7, 76, 2, 2, 11352, 11353, 7, 81, 2, + 2, 11353, 11354, 7, 75, 2, 2, 11354, 11355, 7, 80, 2, 2, 11355, 11356, + 7, 86, 2, 2, 11356, 1912, 3, 2, 2, 2, 11357, 11358, 7, 85, 2, 2, 11358, + 11359, 7, 86, 2, 2, 11359, 11360, 7, 97, 2, 2, 11360, 11361, 7, 70, 2, + 2, 11361, 11362, 7, 75, 2, 2, 11362, 11363, 7, 85, 2, 2, 11363, 11364, + 7, 86, 2, 2, 11364, 11365, 7, 67, 2, 2, 11365, 11366, 7, 80, 2, 2, 11366, + 11367, 7, 69, 2, 2, 11367, 11368, 7, 71, 2, 2, 11368, 1914, 3, 2, 2, 2, + 11369, 11370, 7, 85, 2, 2, 11370, 11371, 7, 86, 2, 2, 11371, 11372, 7, + 97, 2, 2, 11372, 11373, 7, 71, 2, 2, 11373, 11374, 7, 80, 2, 2, 11374, + 11375, 7, 70, 2, 2, 11375, 11376, 7, 82, 2, 2, 11376, 11377, 7, 81, 2, + 2, 11377, 11378, 7, 75, 2, 2, 11378, 11379, 7, 80, 2, 2, 11379, 11380, + 7, 86, 2, 2, 11380, 1916, 3, 2, 2, 2, 11381, 11382, 7, 85, 2, 2, 11382, + 11383, 7, 86, 2, 2, 11383, 11384, 7, 97, 2, 2, 11384, 11385, 7, 71, 2, + 2, 11385, 11386, 7, 80, 2, 2, 11386, 11387, 7, 88, 2, 2, 11387, 11388, + 7, 71, 2, 2, 11388, 11389, 7, 78, 2, 2, 11389, 11390, 7, 81, 2, 2, 11390, + 11391, 7, 82, 2, 2, 11391, 11392, 7, 71, 2, 2, 11392, 1918, 3, 2, 2, 2, + 11393, 11394, 7, 85, 2, 2, 11394, 11395, 7, 86, 2, 2, 11395, 11396, 7, + 97, 2, 2, 11396, 11397, 7, 71, 2, 2, 11397, 11398, 7, 83, 2, 2, 11398, + 11399, 7, 87, 2, 2, 11399, 11400, 7, 67, 2, 2, 11400, 11401, 7, 78, 2, + 2, 11401, 11402, 7, 85, 2, 2, 11402, 1920, 3, 2, 2, 2, 11403, 11404, 7, + 85, 2, 2, 11404, 11405, 7, 86, 2, 2, 11405, 11406, 7, 97, 2, 2, 11406, + 11407, 7, 71, 2, 2, 11407, 11408, 7, 90, 2, 2, 11408, 11409, 7, 86, 2, + 2, 11409, 11410, 7, 71, 2, 2, 11410, 11411, 7, 84, 2, 2, 11411, 11412, + 7, 75, 2, 2, 11412, 11413, 7, 81, 2, 2, 11413, 11414, 7, 84, 2, 2, 11414, + 11415, 7, 84, 2, 2, 11415, 11416, 7, 75, 2, 2, 11416, 11417, 7, 80, 2, + 2, 11417, 11418, 7, 73, 2, 2, 11418, 1922, 3, 2, 2, 2, 11419, 11420, 7, + 85, 2, 2, 11420, 11421, 7, 86, 2, 2, 11421, 11422, 7, 97, 2, 2, 11422, + 11423, 7, 73, 2, 2, 11423, 11424, 7, 71, 2, 2, 11424, 11425, 7, 81, 2, + 2, 11425, 11426, 7, 79, 2, 2, 11426, 11427, 7, 69, 2, 2, 11427, 11428, + 7, 81, 2, 2, 11428, 11429, 7, 78, 2, 2, 11429, 11430, 7, 78, 2, 2, 11430, + 11431, 7, 72, 2, 2, 11431, 11432, 7, 84, 2, 2, 11432, 11433, 7, 81, 2, + 2, 11433, 11434, 7, 79, 2, 2, 11434, 11435, 7, 86, 2, 2, 11435, 11436, + 7, 71, 2, 2, 11436, 11437, 7, 90, 2, 2, 11437, 11438, 7, 86, 2, 2, 11438, + 1924, 3, 2, 2, 2, 11439, 11440, 7, 85, 2, 2, 11440, 11441, 7, 86, 2, 2, + 11441, 11442, 7, 97, 2, 2, 11442, 11443, 7, 73, 2, 2, 11443, 11444, 7, + 71, 2, 2, 11444, 11445, 7, 81, 2, 2, 11445, 11446, 7, 79, 2, 2, 11446, + 11447, 7, 69, 2, 2, 11447, 11448, 7, 81, 2, 2, 11448, 11449, 7, 78, 2, + 2, 11449, 11450, 7, 78, 2, 2, 11450, 11451, 7, 72, 2, 2, 11451, 11452, + 7, 84, 2, 2, 11452, 11453, 7, 81, 2, 2, 11453, 11454, 7, 79, 2, 2, 11454, + 11455, 7, 86, 2, 2, 11455, 11456, 7, 90, 2, 2, 11456, 11457, 7, 86, 2, + 2, 11457, 1926, 3, 2, 2, 2, 11458, 11459, 7, 85, 2, 2, 11459, 11460, 7, + 86, 2, 2, 11460, 11461, 7, 97, 2, 2, 11461, 11462, 7, 73, 2, 2, 11462, + 11463, 7, 71, 2, 2, 11463, 11464, 7, 81, 2, 2, 11464, 11465, 7, 79, 2, + 2, 11465, 11466, 7, 69, 2, 2, 11466, 11467, 7, 81, 2, 2, 11467, 11468, + 7, 78, 2, 2, 11468, 11469, 7, 78, 2, 2, 11469, 11470, 7, 72, 2, 2, 11470, + 11471, 7, 84, 2, 2, 11471, 11472, 7, 81, 2, 2, 11472, 11473, 7, 79, 2, + 2, 11473, 11474, 7, 89, 2, 2, 11474, 11475, 7, 77, 2, 2, 11475, 11476, + 7, 68, 2, 2, 11476, 1928, 3, 2, 2, 2, 11477, 11478, 7, 85, 2, 2, 11478, + 11479, 7, 86, 2, 2, 11479, 11480, 7, 97, 2, 2, 11480, 11481, 7, 73, 2, + 2, 11481, 11482, 7, 71, 2, 2, 11482, 11483, 7, 81, 2, 2, 11483, 11484, + 7, 79, 2, 2, 11484, 11485, 7, 71, 2, 2, 11485, 11486, 7, 86, 2, 2, 11486, + 11487, 7, 84, 2, 2, 11487, 11488, 7, 91, 2, 2, 11488, 11489, 7, 69, 2, + 2, 11489, 11490, 7, 81, 2, 2, 11490, 11491, 7, 78, 2, 2, 11491, 11492, + 7, 78, 2, 2, 11492, 11493, 7, 71, 2, 2, 11493, 11494, 7, 69, 2, 2, 11494, + 11495, 7, 86, 2, 2, 11495, 11496, 7, 75, 2, 2, 11496, 11497, 7, 81, 2, + 2, 11497, 11498, 7, 80, 2, 2, 11498, 11499, 7, 72, 2, 2, 11499, 11500, + 7, 84, 2, 2, 11500, 11501, 7, 81, 2, 2, 11501, 11502, 7, 79, 2, 2, 11502, + 11503, 7, 86, 2, 2, 11503, 11504, 7, 71, 2, 2, 11504, 11505, 7, 90, 2, + 2, 11505, 11506, 7, 86, 2, 2, 11506, 1930, 3, 2, 2, 2, 11507, 11508, 7, + 85, 2, 2, 11508, 11509, 7, 86, 2, 2, 11509, 11510, 7, 97, 2, 2, 11510, + 11511, 7, 73, 2, 2, 11511, 11512, 7, 71, 2, 2, 11512, 11513, 7, 81, 2, + 2, 11513, 11514, 7, 79, 2, 2, 11514, 11515, 7, 71, 2, 2, 11515, 11516, + 7, 86, 2, 2, 11516, 11517, 7, 84, 2, 2, 11517, 11518, 7, 91, 2, 2, 11518, + 11519, 7, 69, 2, 2, 11519, 11520, 7, 81, 2, 2, 11520, 11521, 7, 78, 2, + 2, 11521, 11522, 7, 78, 2, 2, 11522, 11523, 7, 71, 2, 2, 11523, 11524, + 7, 69, 2, 2, 11524, 11525, 7, 86, 2, 2, 11525, 11526, 7, 75, 2, 2, 11526, + 11527, 7, 81, 2, 2, 11527, 11528, 7, 80, 2, 2, 11528, 11529, 7, 72, 2, + 2, 11529, 11530, 7, 84, 2, 2, 11530, 11531, 7, 81, 2, 2, 11531, 11532, + 7, 79, 2, 2, 11532, 11533, 7, 89, 2, 2, 11533, 11534, 7, 77, 2, 2, 11534, + 11535, 7, 68, 2, 2, 11535, 1932, 3, 2, 2, 2, 11536, 11537, 7, 85, 2, 2, + 11537, 11538, 7, 86, 2, 2, 11538, 11539, 7, 97, 2, 2, 11539, 11540, 7, + 73, 2, 2, 11540, 11541, 7, 71, 2, 2, 11541, 11542, 7, 81, 2, 2, 11542, + 11543, 7, 79, 2, 2, 11543, 11544, 7, 71, 2, 2, 11544, 11545, 7, 86, 2, + 2, 11545, 11546, 7, 84, 2, 2, 11546, 11547, 7, 91, 2, 2, 11547, 11548, + 7, 72, 2, 2, 11548, 11549, 7, 84, 2, 2, 11549, 11550, 7, 81, 2, 2, 11550, + 11551, 7, 79, 2, 2, 11551, 11552, 7, 86, 2, 2, 11552, 11553, 7, 71, 2, + 2, 11553, 11554, 7, 90, 2, 2, 11554, 11555, 7, 86, 2, 2, 11555, 1934, 3, + 2, 2, 2, 11556, 11557, 7, 85, 2, 2, 11557, 11558, 7, 86, 2, 2, 11558, 11559, + 7, 97, 2, 2, 11559, 11560, 7, 73, 2, 2, 11560, 11561, 7, 71, 2, 2, 11561, + 11562, 7, 81, 2, 2, 11562, 11563, 7, 79, 2, 2, 11563, 11564, 7, 71, 2, + 2, 11564, 11565, 7, 86, 2, 2, 11565, 11566, 7, 84, 2, 2, 11566, 11567, + 7, 91, 2, 2, 11567, 11568, 7, 72, 2, 2, 11568, 11569, 7, 84, 2, 2, 11569, + 11570, 7, 81, 2, 2, 11570, 11571, 7, 79, 2, 2, 11571, 11572, 7, 89, 2, + 2, 11572, 11573, 7, 77, 2, 2, 11573, 11574, 7, 68, 2, 2, 11574, 1936, 3, + 2, 2, 2, 11575, 11576, 7, 85, 2, 2, 11576, 11577, 7, 86, 2, 2, 11577, 11578, + 7, 97, 2, 2, 11578, 11579, 7, 73, 2, 2, 11579, 11580, 7, 71, 2, 2, 11580, + 11581, 7, 81, 2, 2, 11581, 11582, 7, 79, 2, 2, 11582, 11583, 7, 71, 2, + 2, 11583, 11584, 7, 86, 2, 2, 11584, 11585, 7, 84, 2, 2, 11585, 11586, + 7, 91, 2, 2, 11586, 11587, 7, 80, 2, 2, 11587, 1938, 3, 2, 2, 2, 11588, + 11589, 7, 85, 2, 2, 11589, 11590, 7, 86, 2, 2, 11590, 11591, 7, 97, 2, + 2, 11591, 11592, 7, 73, 2, 2, 11592, 11593, 7, 71, 2, 2, 11593, 11594, + 7, 81, 2, 2, 11594, 11595, 7, 79, 2, 2, 11595, 11596, 7, 71, 2, 2, 11596, + 11597, 7, 86, 2, 2, 11597, 11598, 7, 84, 2, 2, 11598, 11599, 7, 91, 2, + 2, 11599, 11600, 7, 86, 2, 2, 11600, 11601, 7, 91, 2, 2, 11601, 11602, + 7, 82, 2, 2, 11602, 11603, 7, 71, 2, 2, 11603, 1940, 3, 2, 2, 2, 11604, + 11605, 7, 85, 2, 2, 11605, 11606, 7, 86, 2, 2, 11606, 11607, 7, 97, 2, + 2, 11607, 11608, 7, 73, 2, 2, 11608, 11609, 7, 71, 2, 2, 11609, 11610, + 7, 81, 2, 2, 11610, 11611, 7, 79, 2, 2, 11611, 11612, 7, 72, 2, 2, 11612, + 11613, 7, 84, 2, 2, 11613, 11614, 7, 81, 2, 2, 11614, 11615, 7, 79, 2, + 2, 11615, 11616, 7, 86, 2, 2, 11616, 11617, 7, 71, 2, 2, 11617, 11618, + 7, 90, 2, 2, 11618, 11619, 7, 86, 2, 2, 11619, 1942, 3, 2, 2, 2, 11620, + 11621, 7, 85, 2, 2, 11621, 11622, 7, 86, 2, 2, 11622, 11623, 7, 97, 2, + 2, 11623, 11624, 7, 73, 2, 2, 11624, 11625, 7, 71, 2, 2, 11625, 11626, + 7, 81, 2, 2, 11626, 11627, 7, 79, 2, 2, 11627, 11628, 7, 72, 2, 2, 11628, + 11629, 7, 84, 2, 2, 11629, 11630, 7, 81, 2, 2, 11630, 11631, 7, 79, 2, + 2, 11631, 11632, 7, 89, 2, 2, 11632, 11633, 7, 77, 2, 2, 11633, 11634, + 7, 68, 2, 2, 11634, 1944, 3, 2, 2, 2, 11635, 11636, 7, 85, 2, 2, 11636, + 11637, 7, 86, 2, 2, 11637, 11638, 7, 97, 2, 2, 11638, 11639, 7, 75, 2, + 2, 11639, 11640, 7, 80, 2, 2, 11640, 11641, 7, 86, 2, 2, 11641, 11642, + 7, 71, 2, 2, 11642, 11643, 7, 84, 2, 2, 11643, 11644, 7, 75, 2, 2, 11644, + 11645, 7, 81, 2, 2, 11645, 11646, 7, 84, 2, 2, 11646, 11647, 7, 84, 2, + 2, 11647, 11648, 7, 75, 2, 2, 11648, 11649, 7, 80, 2, 2, 11649, 11650, + 7, 73, 2, 2, 11650, 11651, 7, 80, 2, 2, 11651, 1946, 3, 2, 2, 2, 11652, + 11653, 7, 85, 2, 2, 11653, 11654, 7, 86, 2, 2, 11654, 11655, 7, 97, 2, + 2, 11655, 11656, 7, 75, 2, 2, 11656, 11657, 7, 80, 2, 2, 11657, 11658, + 7, 86, 2, 2, 11658, 11659, 7, 71, 2, 2, 11659, 11660, 7, 84, 2, 2, 11660, + 11661, 7, 85, 2, 2, 11661, 11662, 7, 71, 2, 2, 11662, 11663, 7, 69, 2, + 2, 11663, 11664, 7, 86, 2, 2, 11664, 11665, 7, 75, 2, 2, 11665, 11666, + 7, 81, 2, 2, 11666, 11667, 7, 80, 2, 2, 11667, 1948, 3, 2, 2, 2, 11668, + 11669, 7, 85, 2, 2, 11669, 11670, 7, 86, 2, 2, 11670, 11671, 7, 97, 2, + 2, 11671, 11672, 7, 75, 2, 2, 11672, 11673, 7, 80, 2, 2, 11673, 11674, + 7, 86, 2, 2, 11674, 11675, 7, 71, 2, 2, 11675, 11676, 7, 84, 2, 2, 11676, + 11677, 7, 85, 2, 2, 11677, 11678, 7, 71, 2, 2, 11678, 11679, 7, 69, 2, + 2, 11679, 11680, 7, 86, 2, 2, 11680, 11681, 7, 85, 2, 2, 11681, 1950, 3, + 2, 2, 2, 11682, 11683, 7, 85, 2, 2, 11683, 11684, 7, 86, 2, 2, 11684, 11685, + 7, 97, 2, 2, 11685, 11686, 7, 75, 2, 2, 11686, 11687, 7, 85, 2, 2, 11687, + 11688, 7, 69, 2, 2, 11688, 11689, 7, 78, 2, 2, 11689, 11690, 7, 81, 2, + 2, 11690, 11691, 7, 85, 2, 2, 11691, 11692, 7, 71, 2, 2, 11692, 11693, + 7, 70, 2, 2, 11693, 1952, 3, 2, 2, 2, 11694, 11695, 7, 85, 2, 2, 11695, + 11696, 7, 86, 2, 2, 11696, 11697, 7, 97, 2, 2, 11697, 11698, 7, 75, 2, + 2, 11698, 11699, 7, 85, 2, 2, 11699, 11700, 7, 71, 2, 2, 11700, 11701, + 7, 79, 2, 2, 11701, 11702, 7, 82, 2, 2, 11702, 11703, 7, 86, 2, 2, 11703, + 11704, 7, 91, 2, 2, 11704, 1954, 3, 2, 2, 2, 11705, 11706, 7, 85, 2, 2, + 11706, 11707, 7, 86, 2, 2, 11707, 11708, 7, 97, 2, 2, 11708, 11709, 7, + 75, 2, 2, 11709, 11710, 7, 85, 2, 2, 11710, 11711, 7, 85, 2, 2, 11711, + 11712, 7, 75, 2, 2, 11712, 11713, 7, 79, 2, 2, 11713, 11714, 7, 82, 2, + 2, 11714, 11715, 7, 78, 2, 2, 11715, 11716, 7, 71, 2, 2, 11716, 1956, 3, + 2, 2, 2, 11717, 11718, 7, 85, 2, 2, 11718, 11719, 7, 86, 2, 2, 11719, 11720, + 7, 97, 2, 2, 11720, 11721, 7, 78, 2, 2, 11721, 11722, 7, 75, 2, 2, 11722, + 11723, 7, 80, 2, 2, 11723, 11724, 7, 71, 2, 2, 11724, 11725, 7, 72, 2, + 2, 11725, 11726, 7, 84, 2, 2, 11726, 11727, 7, 81, 2, 2, 11727, 11728, + 7, 79, 2, 2, 11728, 11729, 7, 86, 2, 2, 11729, 11730, 7, 71, 2, 2, 11730, + 11731, 7, 90, 2, 2, 11731, 11732, 7, 86, 2, 2, 11732, 1958, 3, 2, 2, 2, + 11733, 11734, 7, 85, 2, 2, 11734, 11735, 7, 86, 2, 2, 11735, 11736, 7, + 97, 2, 2, 11736, 11737, 7, 78, 2, 2, 11737, 11738, 7, 75, 2, 2, 11738, + 11739, 7, 80, 2, 2, 11739, 11740, 7, 71, 2, 2, 11740, 11741, 7, 72, 2, + 2, 11741, 11742, 7, 84, 2, 2, 11742, 11743, 7, 81, 2, 2, 11743, 11744, + 7, 79, 2, 2, 11744, 11745, 7, 89, 2, 2, 11745, 11746, 7, 77, 2, 2, 11746, + 11747, 7, 68, 2, 2, 11747, 1960, 3, 2, 2, 2, 11748, 11749, 7, 85, 2, 2, + 11749, 11750, 7, 86, 2, 2, 11750, 11751, 7, 97, 2, 2, 11751, 11752, 7, + 78, 2, 2, 11752, 11753, 7, 75, 2, 2, 11753, 11754, 7, 80, 2, 2, 11754, + 11755, 7, 71, 2, 2, 11755, 11756, 7, 85, 2, 2, 11756, 11757, 7, 86, 2, + 2, 11757, 11758, 7, 84, 2, 2, 11758, 11759, 7, 75, 2, 2, 11759, 11760, + 7, 80, 2, 2, 11760, 11761, 7, 73, 2, 2, 11761, 11762, 7, 72, 2, 2, 11762, + 11763, 7, 84, 2, 2, 11763, 11764, 7, 81, 2, 2, 11764, 11765, 7, 79, 2, + 2, 11765, 11766, 7, 86, 2, 2, 11766, 11767, 7, 71, 2, 2, 11767, 11768, + 7, 90, 2, 2, 11768, 11769, 7, 86, 2, 2, 11769, 1962, 3, 2, 2, 2, 11770, + 11771, 7, 85, 2, 2, 11771, 11772, 7, 86, 2, 2, 11772, 11773, 7, 97, 2, + 2, 11773, 11774, 7, 78, 2, 2, 11774, 11775, 7, 75, 2, 2, 11775, 11776, + 7, 80, 2, 2, 11776, 11777, 7, 71, 2, 2, 11777, 11778, 7, 85, 2, 2, 11778, + 11779, 7, 86, 2, 2, 11779, 11780, 7, 84, 2, 2, 11780, 11781, 7, 75, 2, + 2, 11781, 11782, 7, 80, 2, 2, 11782, 11783, 7, 73, 2, 2, 11783, 11784, + 7, 72, 2, 2, 11784, 11785, 7, 84, 2, 2, 11785, 11786, 7, 81, 2, 2, 11786, + 11787, 7, 79, 2, 2, 11787, 11788, 7, 89, 2, 2, 11788, 11789, 7, 77, 2, + 2, 11789, 11790, 7, 68, 2, 2, 11790, 1964, 3, 2, 2, 2, 11791, 11792, 7, + 85, 2, 2, 11792, 11793, 7, 86, 2, 2, 11793, 11794, 7, 97, 2, 2, 11794, + 11795, 7, 80, 2, 2, 11795, 11796, 7, 87, 2, 2, 11796, 11797, 7, 79, 2, + 2, 11797, 11798, 7, 73, 2, 2, 11798, 11799, 7, 71, 2, 2, 11799, 11800, + 7, 81, 2, 2, 11800, 11801, 7, 79, 2, 2, 11801, 11802, 7, 71, 2, 2, 11802, + 11803, 7, 86, 2, 2, 11803, 11804, 7, 84, 2, 2, 11804, 11805, 7, 75, 2, + 2, 11805, 11806, 7, 71, 2, 2, 11806, 11807, 7, 85, 2, 2, 11807, 1966, 3, + 2, 2, 2, 11808, 11809, 7, 85, 2, 2, 11809, 11810, 7, 86, 2, 2, 11810, 11811, + 7, 97, 2, 2, 11811, 11812, 7, 80, 2, 2, 11812, 11813, 7, 87, 2, 2, 11813, + 11814, 7, 79, 2, 2, 11814, 11815, 7, 75, 2, 2, 11815, 11816, 7, 80, 2, + 2, 11816, 11817, 7, 86, 2, 2, 11817, 11818, 7, 71, 2, 2, 11818, 11819, + 7, 84, 2, 2, 11819, 11820, 7, 75, 2, 2, 11820, 11821, 7, 81, 2, 2, 11821, + 11822, 7, 84, 2, 2, 11822, 11823, 7, 84, 2, 2, 11823, 11824, 7, 75, 2, + 2, 11824, 11825, 7, 80, 2, 2, 11825, 11826, 7, 73, 2, 2, 11826, 1968, 3, + 2, 2, 2, 11827, 11828, 7, 85, 2, 2, 11828, 11829, 7, 86, 2, 2, 11829, 11830, + 7, 97, 2, 2, 11830, 11831, 7, 80, 2, 2, 11831, 11832, 7, 87, 2, 2, 11832, + 11833, 7, 79, 2, 2, 11833, 11834, 7, 75, 2, 2, 11834, 11835, 7, 80, 2, + 2, 11835, 11836, 7, 86, 2, 2, 11836, 11837, 7, 71, 2, 2, 11837, 11838, + 7, 84, 2, 2, 11838, 11839, 7, 75, 2, 2, 11839, 11840, 7, 81, 2, 2, 11840, + 11841, 7, 84, 2, 2, 11841, 11842, 7, 84, 2, 2, 11842, 11843, 7, 75, 2, + 2, 11843, 11844, 7, 80, 2, 2, 11844, 11845, 7, 73, 2, 2, 11845, 11846, + 7, 85, 2, 2, 11846, 1970, 3, 2, 2, 2, 11847, 11848, 7, 85, 2, 2, 11848, + 11849, 7, 86, 2, 2, 11849, 11850, 7, 97, 2, 2, 11850, 11851, 7, 80, 2, + 2, 11851, 11852, 7, 87, 2, 2, 11852, 11853, 7, 79, 2, 2, 11853, 11854, + 7, 82, 2, 2, 11854, 11855, 7, 81, 2, 2, 11855, 11856, 7, 75, 2, 2, 11856, + 11857, 7, 80, 2, 2, 11857, 11858, 7, 86, 2, 2, 11858, 11859, 7, 85, 2, + 2, 11859, 1972, 3, 2, 2, 2, 11860, 11861, 7, 85, 2, 2, 11861, 11862, 7, + 86, 2, 2, 11862, 11863, 7, 97, 2, 2, 11863, 11864, 7, 81, 2, 2, 11864, + 11865, 7, 88, 2, 2, 11865, 11866, 7, 71, 2, 2, 11866, 11867, 7, 84, 2, + 2, 11867, 11868, 7, 78, 2, 2, 11868, 11869, 7, 67, 2, 2, 11869, 11870, + 7, 82, 2, 2, 11870, 11871, 7, 85, 2, 2, 11871, 1974, 3, 2, 2, 2, 11872, + 11873, 7, 85, 2, 2, 11873, 11874, 7, 86, 2, 2, 11874, 11875, 7, 97, 2, + 2, 11875, 11876, 7, 82, 2, 2, 11876, 11877, 7, 81, 2, 2, 11877, 11878, + 7, 75, 2, 2, 11878, 11879, 7, 80, 2, 2, 11879, 11880, 7, 86, 2, 2, 11880, + 11881, 7, 72, 2, 2, 11881, 11882, 7, 84, 2, 2, 11882, 11883, 7, 81, 2, + 2, 11883, 11884, 7, 79, 2, 2, 11884, 11885, 7, 86, 2, 2, 11885, 11886, + 7, 71, 2, 2, 11886, 11887, 7, 90, 2, 2, 11887, 11888, 7, 86, 2, 2, 11888, + 1976, 3, 2, 2, 2, 11889, 11890, 7, 85, 2, 2, 11890, 11891, 7, 86, 2, 2, + 11891, 11892, 7, 97, 2, 2, 11892, 11893, 7, 82, 2, 2, 11893, 11894, 7, + 81, 2, 2, 11894, 11895, 7, 75, 2, 2, 11895, 11896, 7, 80, 2, 2, 11896, + 11897, 7, 86, 2, 2, 11897, 11898, 7, 72, 2, 2, 11898, 11899, 7, 84, 2, + 2, 11899, 11900, 7, 81, 2, 2, 11900, 11901, 7, 79, 2, 2, 11901, 11902, + 7, 89, 2, 2, 11902, 11903, 7, 77, 2, 2, 11903, 11904, 7, 68, 2, 2, 11904, + 1978, 3, 2, 2, 2, 11905, 11906, 7, 85, 2, 2, 11906, 11907, 7, 86, 2, 2, + 11907, 11908, 7, 97, 2, 2, 11908, 11909, 7, 82, 2, 2, 11909, 11910, 7, + 81, 2, 2, 11910, 11911, 7, 75, 2, 2, 11911, 11912, 7, 80, 2, 2, 11912, + 11913, 7, 86, 2, 2, 11913, 11914, 7, 80, 2, 2, 11914, 1980, 3, 2, 2, 2, + 11915, 11916, 7, 85, 2, 2, 11916, 11917, 7, 86, 2, 2, 11917, 11918, 7, + 97, 2, 2, 11918, 11919, 7, 82, 2, 2, 11919, 11920, 7, 81, 2, 2, 11920, + 11921, 7, 78, 2, 2, 11921, 11922, 7, 91, 2, 2, 11922, 11923, 7, 72, 2, + 2, 11923, 11924, 7, 84, 2, 2, 11924, 11925, 7, 81, 2, 2, 11925, 11926, + 7, 79, 2, 2, 11926, 11927, 7, 86, 2, 2, 11927, 11928, 7, 71, 2, 2, 11928, + 11929, 7, 90, 2, 2, 11929, 11930, 7, 86, 2, 2, 11930, 1982, 3, 2, 2, 2, + 11931, 11932, 7, 85, 2, 2, 11932, 11933, 7, 86, 2, 2, 11933, 11934, 7, + 97, 2, 2, 11934, 11935, 7, 82, 2, 2, 11935, 11936, 7, 81, 2, 2, 11936, + 11937, 7, 78, 2, 2, 11937, 11938, 7, 91, 2, 2, 11938, 11939, 7, 72, 2, + 2, 11939, 11940, 7, 84, 2, 2, 11940, 11941, 7, 81, 2, 2, 11941, 11942, + 7, 79, 2, 2, 11942, 11943, 7, 89, 2, 2, 11943, 11944, 7, 77, 2, 2, 11944, + 11945, 7, 68, 2, 2, 11945, 1984, 3, 2, 2, 2, 11946, 11947, 7, 85, 2, 2, + 11947, 11948, 7, 86, 2, 2, 11948, 11949, 7, 97, 2, 2, 11949, 11950, 7, + 82, 2, 2, 11950, 11951, 7, 81, 2, 2, 11951, 11952, 7, 78, 2, 2, 11952, + 11953, 7, 91, 2, 2, 11953, 11954, 7, 73, 2, 2, 11954, 11955, 7, 81, 2, + 2, 11955, 11956, 7, 80, 2, 2, 11956, 11957, 7, 72, 2, 2, 11957, 11958, + 7, 84, 2, 2, 11958, 11959, 7, 81, 2, 2, 11959, 11960, 7, 79, 2, 2, 11960, + 11961, 7, 86, 2, 2, 11961, 11962, 7, 71, 2, 2, 11962, 11963, 7, 90, 2, + 2, 11963, 11964, 7, 86, 2, 2, 11964, 1986, 3, 2, 2, 2, 11965, 11966, 7, + 85, 2, 2, 11966, 11967, 7, 86, 2, 2, 11967, 11968, 7, 97, 2, 2, 11968, + 11969, 7, 82, 2, 2, 11969, 11970, 7, 81, 2, 2, 11970, 11971, 7, 78, 2, + 2, 11971, 11972, 7, 91, 2, 2, 11972, 11973, 7, 73, 2, 2, 11973, 11974, + 7, 81, 2, 2, 11974, 11975, 7, 80, 2, 2, 11975, 11976, 7, 72, 2, 2, 11976, + 11977, 7, 84, 2, 2, 11977, 11978, 7, 81, 2, 2, 11978, 11979, 7, 79, 2, + 2, 11979, 11980, 7, 89, 2, 2, 11980, 11981, 7, 77, 2, 2, 11981, 11982, + 7, 68, 2, 2, 11982, 1988, 3, 2, 2, 2, 11983, 11984, 7, 85, 2, 2, 11984, + 11985, 7, 86, 2, 2, 11985, 11986, 7, 97, 2, 2, 11986, 11987, 7, 85, 2, + 2, 11987, 11988, 7, 84, 2, 2, 11988, 11989, 7, 75, 2, 2, 11989, 11990, + 7, 70, 2, 2, 11990, 1990, 3, 2, 2, 2, 11991, 11992, 7, 85, 2, 2, 11992, + 11993, 7, 86, 2, 2, 11993, 11994, 7, 97, 2, 2, 11994, 11995, 7, 85, 2, + 2, 11995, 11996, 7, 86, 2, 2, 11996, 11997, 7, 67, 2, 2, 11997, 11998, + 7, 84, 2, 2, 11998, 11999, 7, 86, 2, 2, 11999, 12000, 7, 82, 2, 2, 12000, + 12001, 7, 81, 2, 2, 12001, 12002, 7, 75, 2, 2, 12002, 12003, 7, 80, 2, + 2, 12003, 12004, 7, 86, 2, 2, 12004, 1992, 3, 2, 2, 2, 12005, 12006, 7, + 85, 2, 2, 12006, 12007, 7, 86, 2, 2, 12007, 12008, 7, 97, 2, 2, 12008, + 12009, 7, 85, 2, 2, 12009, 12010, 7, 91, 2, 2, 12010, 12011, 7, 79, 2, + 2, 12011, 12012, 7, 70, 2, 2, 12012, 12013, 7, 75, 2, 2, 12013, 12014, + 7, 72, 2, 2, 12014, 12015, 7, 72, 2, 2, 12015, 12016, 7, 71, 2, 2, 12016, + 12017, 7, 84, 2, 2, 12017, 12018, 7, 71, 2, 2, 12018, 12019, 7, 80, 2, + 2, 12019, 12020, 7, 69, 2, 2, 12020, 12021, 7, 71, 2, 2, 12021, 1994, 3, + 2, 2, 2, 12022, 12023, 7, 85, 2, 2, 12023, 12024, 7, 86, 2, 2, 12024, 12025, + 7, 97, 2, 2, 12025, 12026, 7, 86, 2, 2, 12026, 12027, 7, 81, 2, 2, 12027, + 12028, 7, 87, 2, 2, 12028, 12029, 7, 69, 2, 2, 12029, 12030, 7, 74, 2, + 2, 12030, 12031, 7, 71, 2, 2, 12031, 12032, 7, 85, 2, 2, 12032, 1996, 3, + 2, 2, 2, 12033, 12034, 7, 85, 2, 2, 12034, 12035, 7, 86, 2, 2, 12035, 12036, + 7, 97, 2, 2, 12036, 12037, 7, 87, 2, 2, 12037, 12038, 7, 80, 2, 2, 12038, + 12039, 7, 75, 2, 2, 12039, 12040, 7, 81, 2, 2, 12040, 12041, 7, 80, 2, + 2, 12041, 1998, 3, 2, 2, 2, 12042, 12043, 7, 85, 2, 2, 12043, 12044, 7, + 86, 2, 2, 12044, 12045, 7, 97, 2, 2, 12045, 12046, 7, 89, 2, 2, 12046, + 12047, 7, 75, 2, 2, 12047, 12048, 7, 86, 2, 2, 12048, 12049, 7, 74, 2, + 2, 12049, 12050, 7, 75, 2, 2, 12050, 12051, 7, 80, 2, 2, 12051, 2000, 3, + 2, 2, 2, 12052, 12053, 7, 85, 2, 2, 12053, 12054, 7, 86, 2, 2, 12054, 12055, + 7, 97, 2, 2, 12055, 12056, 7, 90, 2, 2, 12056, 2002, 3, 2, 2, 2, 12057, + 12058, 7, 85, 2, 2, 12058, 12059, 7, 86, 2, 2, 12059, 12060, 7, 97, 2, + 2, 12060, 12061, 7, 91, 2, 2, 12061, 2004, 3, 2, 2, 2, 12062, 12063, 7, + 85, 2, 2, 12063, 12064, 7, 87, 2, 2, 12064, 12065, 7, 68, 2, 2, 12065, + 12066, 7, 70, 2, 2, 12066, 12067, 7, 67, 2, 2, 12067, 12068, 7, 86, 2, + 2, 12068, 12069, 7, 71, 2, 2, 12069, 2006, 3, 2, 2, 2, 12070, 12071, 7, + 85, 2, 2, 12071, 12072, 7, 87, 2, 2, 12072, 12073, 7, 68, 2, 2, 12073, + 12074, 7, 85, 2, 2, 12074, 12075, 7, 86, 2, 2, 12075, 12076, 7, 84, 2, + 2, 12076, 12077, 7, 75, 2, 2, 12077, 12078, 7, 80, 2, 2, 12078, 12079, + 7, 73, 2, 2, 12079, 12080, 7, 97, 2, 2, 12080, 12081, 7, 75, 2, 2, 12081, + 12082, 7, 80, 2, 2, 12082, 12083, 7, 70, 2, 2, 12083, 12084, 7, 71, 2, + 2, 12084, 12085, 7, 90, 2, 2, 12085, 2008, 3, 2, 2, 2, 12086, 12087, 7, + 85, 2, 2, 12087, 12088, 7, 87, 2, 2, 12088, 12089, 7, 68, 2, 2, 12089, + 12090, 7, 86, 2, 2, 12090, 12091, 7, 75, 2, 2, 12091, 12092, 7, 79, 2, + 2, 12092, 12093, 7, 71, 2, 2, 12093, 2010, 3, 2, 2, 2, 12094, 12095, 7, + 85, 2, 2, 12095, 12096, 7, 91, 2, 2, 12096, 12097, 7, 85, 2, 2, 12097, + 12098, 7, 86, 2, 2, 12098, 12099, 7, 71, 2, 2, 12099, 12100, 7, 79, 2, + 2, 12100, 12101, 7, 97, 2, 2, 12101, 12102, 7, 87, 2, 2, 12102, 12103, + 7, 85, 2, 2, 12103, 12104, 7, 71, 2, 2, 12104, 12105, 7, 84, 2, 2, 12105, + 2012, 3, 2, 2, 2, 12106, 12107, 7, 86, 2, 2, 12107, 12108, 7, 67, 2, 2, + 12108, 12109, 7, 80, 2, 2, 12109, 2014, 3, 2, 2, 2, 12110, 12111, 7, 86, + 2, 2, 12111, 12112, 7, 75, 2, 2, 12112, 12113, 7, 79, 2, 2, 12113, 12114, + 7, 71, 2, 2, 12114, 12115, 7, 70, 2, 2, 12115, 12116, 7, 75, 2, 2, 12116, + 12117, 7, 72, 2, 2, 12117, 12118, 7, 72, 2, 2, 12118, 2016, 3, 2, 2, 2, + 12119, 12120, 7, 86, 2, 2, 12120, 12121, 7, 75, 2, 2, 12121, 12122, 7, + 79, 2, 2, 12122, 12123, 7, 71, 2, 2, 12123, 12124, 7, 85, 2, 2, 12124, + 12125, 7, 86, 2, 2, 12125, 12126, 7, 67, 2, 2, 12126, 12127, 7, 79, 2, + 2, 12127, 12128, 7, 82, 2, 2, 12128, 12129, 7, 67, 2, 2, 12129, 12130, + 7, 70, 2, 2, 12130, 12131, 7, 70, 2, 2, 12131, 2018, 3, 2, 2, 2, 12132, + 12133, 7, 86, 2, 2, 12133, 12134, 7, 75, 2, 2, 12134, 12135, 7, 79, 2, + 2, 12135, 12136, 7, 71, 2, 2, 12136, 12137, 7, 85, 2, 2, 12137, 12138, + 7, 86, 2, 2, 12138, 12139, 7, 67, 2, 2, 12139, 12140, 7, 79, 2, 2, 12140, + 12141, 7, 82, 2, 2, 12141, 12142, 7, 70, 2, 2, 12142, 12143, 7, 75, 2, + 2, 12143, 12144, 7, 72, 2, 2, 12144, 12145, 7, 72, 2, 2, 12145, 2020, 3, + 2, 2, 2, 12146, 12147, 7, 86, 2, 2, 12147, 12148, 7, 75, 2, 2, 12148, 12149, + 7, 79, 2, 2, 12149, 12150, 7, 71, 2, 2, 12150, 12151, 7, 97, 2, 2, 12151, + 12152, 7, 72, 2, 2, 12152, 12153, 7, 81, 2, 2, 12153, 12154, 7, 84, 2, + 2, 12154, 12155, 7, 79, 2, 2, 12155, 12156, 7, 67, 2, 2, 12156, 12157, + 7, 86, 2, 2, 12157, 2022, 3, 2, 2, 2, 12158, 12159, 7, 86, 2, 2, 12159, + 12160, 7, 75, 2, 2, 12160, 12161, 7, 79, 2, 2, 12161, 12162, 7, 71, 2, + 2, 12162, 12163, 7, 97, 2, 2, 12163, 12164, 7, 86, 2, 2, 12164, 12165, + 7, 81, 2, 2, 12165, 12166, 7, 97, 2, 2, 12166, 12167, 7, 85, 2, 2, 12167, + 12168, 7, 71, 2, 2, 12168, 12169, 7, 69, 2, 2, 12169, 2024, 3, 2, 2, 2, + 12170, 12171, 7, 86, 2, 2, 12171, 12172, 7, 81, 2, 2, 12172, 12173, 7, + 87, 2, 2, 12173, 12174, 7, 69, 2, 2, 12174, 12175, 7, 74, 2, 2, 12175, + 12176, 7, 71, 2, 2, 12176, 12177, 7, 85, 2, 2, 12177, 2026, 3, 2, 2, 2, + 12178, 12179, 7, 86, 2, 2, 12179, 12180, 7, 81, 2, 2, 12180, 12181, 7, + 97, 2, 2, 12181, 12182, 7, 68, 2, 2, 12182, 12183, 7, 67, 2, 2, 12183, + 12184, 7, 85, 2, 2, 12184, 12185, 7, 71, 2, 2, 12185, 12186, 7, 56, 2, + 2, 12186, 12187, 7, 54, 2, 2, 12187, 2028, 3, 2, 2, 2, 12188, 12189, 7, + 86, 2, 2, 12189, 12190, 7, 81, 2, 2, 12190, 12191, 7, 97, 2, 2, 12191, + 12192, 7, 70, 2, 2, 12192, 12193, 7, 67, 2, 2, 12193, 12194, 7, 91, 2, + 2, 12194, 12195, 7, 85, 2, 2, 12195, 2030, 3, 2, 2, 2, 12196, 12197, 7, + 86, 2, 2, 12197, 12198, 7, 81, 2, 2, 12198, 12199, 7, 97, 2, 2, 12199, + 12200, 7, 85, 2, 2, 12200, 12201, 7, 71, 2, 2, 12201, 12202, 7, 69, 2, + 2, 12202, 12203, 7, 81, 2, 2, 12203, 12204, 7, 80, 2, 2, 12204, 12205, + 7, 70, 2, 2, 12205, 12206, 7, 85, 2, 2, 12206, 2032, 3, 2, 2, 2, 12207, + 12208, 7, 87, 2, 2, 12208, 12209, 7, 69, 2, 2, 12209, 12210, 7, 67, 2, + 2, 12210, 12211, 7, 85, 2, 2, 12211, 12212, 7, 71, 2, 2, 12212, 2034, 3, + 2, 2, 2, 12213, 12214, 7, 87, 2, 2, 12214, 12215, 7, 80, 2, 2, 12215, 12216, + 7, 69, 2, 2, 12216, 12217, 7, 81, 2, 2, 12217, 12218, 7, 79, 2, 2, 12218, + 12219, 7, 82, 2, 2, 12219, 12220, 7, 84, 2, 2, 12220, 12221, 7, 71, 2, + 2, 12221, 12222, 7, 85, 2, 2, 12222, 12223, 7, 85, 2, 2, 12223, 2036, 3, + 2, 2, 2, 12224, 12225, 7, 87, 2, 2, 12225, 12226, 7, 80, 2, 2, 12226, 12227, + 7, 69, 2, 2, 12227, 12228, 7, 81, 2, 2, 12228, 12229, 7, 79, 2, 2, 12229, + 12230, 7, 82, 2, 2, 12230, 12231, 7, 84, 2, 2, 12231, 12232, 7, 71, 2, + 2, 12232, 12233, 7, 85, 2, 2, 12233, 12234, 7, 85, 2, 2, 12234, 12235, + 7, 71, 2, 2, 12235, 12236, 7, 70, 2, 2, 12236, 12237, 7, 97, 2, 2, 12237, + 12238, 7, 78, 2, 2, 12238, 12239, 7, 71, 2, 2, 12239, 12240, 7, 80, 2, + 2, 12240, 12241, 7, 73, 2, 2, 12241, 12242, 7, 86, 2, 2, 12242, 12243, + 7, 74, 2, 2, 12243, 2038, 3, 2, 2, 2, 12244, 12245, 7, 87, 2, 2, 12245, + 12246, 7, 80, 2, 2, 12246, 12247, 7, 74, 2, 2, 12247, 12248, 7, 71, 2, + 2, 12248, 12249, 7, 90, 2, 2, 12249, 2040, 3, 2, 2, 2, 12250, 12251, 7, + 87, 2, 2, 12251, 12252, 7, 80, 2, 2, 12252, 12253, 7, 75, 2, 2, 12253, + 12254, 7, 90, 2, 2, 12254, 12255, 7, 97, 2, 2, 12255, 12256, 7, 86, 2, + 2, 12256, 12257, 7, 75, 2, 2, 12257, 12258, 7, 79, 2, 2, 12258, 12259, + 7, 71, 2, 2, 12259, 12260, 7, 85, 2, 2, 12260, 12261, 7, 86, 2, 2, 12261, + 12262, 7, 67, 2, 2, 12262, 12263, 7, 79, 2, 2, 12263, 12264, 7, 82, 2, + 2, 12264, 2042, 3, 2, 2, 2, 12265, 12266, 7, 87, 2, 2, 12266, 12267, 7, + 82, 2, 2, 12267, 12268, 7, 70, 2, 2, 12268, 12269, 7, 67, 2, 2, 12269, + 12270, 7, 86, 2, 2, 12270, 12271, 7, 71, 2, 2, 12271, 12272, 7, 90, 2, + 2, 12272, 12273, 7, 79, 2, 2, 12273, 12274, 7, 78, 2, 2, 12274, 2044, 3, + 2, 2, 2, 12275, 12276, 7, 87, 2, 2, 12276, 12277, 7, 82, 2, 2, 12277, 12278, + 7, 82, 2, 2, 12278, 12279, 7, 71, 2, 2, 12279, 12280, 7, 84, 2, 2, 12280, + 2046, 3, 2, 2, 2, 12281, 12282, 7, 87, 2, 2, 12282, 12283, 7, 87, 2, 2, + 12283, 12284, 7, 75, 2, 2, 12284, 12285, 7, 70, 2, 2, 12285, 2048, 3, 2, + 2, 2, 12286, 12287, 7, 87, 2, 2, 12287, 12288, 7, 87, 2, 2, 12288, 12289, + 7, 75, 2, 2, 12289, 12290, 7, 70, 2, 2, 12290, 12291, 7, 97, 2, 2, 12291, + 12292, 7, 85, 2, 2, 12292, 12293, 7, 74, 2, 2, 12293, 12294, 7, 81, 2, + 2, 12294, 12295, 7, 84, 2, 2, 12295, 12296, 7, 86, 2, 2, 12296, 2050, 3, + 2, 2, 2, 12297, 12298, 7, 88, 2, 2, 12298, 12299, 7, 67, 2, 2, 12299, 12300, + 7, 78, 2, 2, 12300, 12301, 7, 75, 2, 2, 12301, 12302, 7, 70, 2, 2, 12302, + 12303, 7, 67, 2, 2, 12303, 12304, 7, 86, 2, 2, 12304, 12305, 7, 71, 2, + 2, 12305, 12306, 7, 97, 2, 2, 12306, 12307, 7, 82, 2, 2, 12307, 12308, + 7, 67, 2, 2, 12308, 12309, 7, 85, 2, 2, 12309, 12310, 7, 85, 2, 2, 12310, + 12311, 7, 89, 2, 2, 12311, 12312, 7, 81, 2, 2, 12312, 12313, 7, 84, 2, + 2, 12313, 12314, 7, 70, 2, 2, 12314, 12315, 7, 97, 2, 2, 12315, 12316, + 7, 85, 2, 2, 12316, 12317, 7, 86, 2, 2, 12317, 12318, 7, 84, 2, 2, 12318, + 12319, 7, 71, 2, 2, 12319, 12320, 7, 80, 2, 2, 12320, 12321, 7, 73, 2, + 2, 12321, 12322, 7, 86, 2, 2, 12322, 12323, 7, 74, 2, 2, 12323, 2052, 3, + 2, 2, 2, 12324, 12325, 7, 88, 2, 2, 12325, 12326, 7, 71, 2, 2, 12326, 12327, + 7, 84, 2, 2, 12327, 12328, 7, 85, 2, 2, 12328, 12329, 7, 75, 2, 2, 12329, + 12330, 7, 81, 2, 2, 12330, 12331, 7, 80, 2, 2, 12331, 2054, 3, 2, 2, 2, + 12332, 12333, 7, 89, 2, 2, 12333, 12334, 7, 67, 2, 2, 12334, 12335, 7, + 75, 2, 2, 12335, 12336, 7, 86, 2, 2, 12336, 12337, 7, 97, 2, 2, 12337, + 12338, 7, 87, 2, 2, 12338, 12339, 7, 80, 2, 2, 12339, 12340, 7, 86, 2, + 2, 12340, 12341, 7, 75, 2, 2, 12341, 12342, 7, 78, 2, 2, 12342, 12343, + 7, 97, 2, 2, 12343, 12344, 7, 85, 2, 2, 12344, 12345, 7, 83, 2, 2, 12345, + 12346, 7, 78, 2, 2, 12346, 12347, 7, 97, 2, 2, 12347, 12348, 7, 86, 2, + 2, 12348, 12349, 7, 74, 2, 2, 12349, 12350, 7, 84, 2, 2, 12350, 12351, + 7, 71, 2, 2, 12351, 12352, 7, 67, 2, 2, 12352, 12353, 7, 70, 2, 2, 12353, + 12354, 7, 97, 2, 2, 12354, 12355, 7, 67, 2, 2, 12355, 12356, 7, 72, 2, + 2, 12356, 12357, 7, 86, 2, 2, 12357, 12358, 7, 71, 2, 2, 12358, 12359, + 7, 84, 2, 2, 12359, 12360, 7, 97, 2, 2, 12360, 12361, 7, 73, 2, 2, 12361, + 12362, 7, 86, 2, 2, 12362, 12363, 7, 75, 2, 2, 12363, 12364, 7, 70, 2, + 2, 12364, 12365, 7, 85, 2, 2, 12365, 2056, 3, 2, 2, 2, 12366, 12367, 7, + 89, 2, 2, 12367, 12368, 7, 71, 2, 2, 12368, 12369, 7, 71, 2, 2, 12369, + 12370, 7, 77, 2, 2, 12370, 12371, 7, 70, 2, 2, 12371, 12372, 7, 67, 2, + 2, 12372, 12373, 7, 91, 2, 2, 12373, 2058, 3, 2, 2, 2, 12374, 12375, 7, + 89, 2, 2, 12375, 12376, 7, 71, 2, 2, 12376, 12377, 7, 71, 2, 2, 12377, + 12378, 7, 77, 2, 2, 12378, 12379, 7, 81, 2, 2, 12379, 12380, 7, 72, 2, + 2, 12380, 12381, 7, 91, 2, 2, 12381, 12382, 7, 71, 2, 2, 12382, 12383, + 7, 67, 2, 2, 12383, 12384, 7, 84, 2, 2, 12384, 2060, 3, 2, 2, 2, 12385, + 12386, 7, 89, 2, 2, 12386, 12387, 7, 71, 2, 2, 12387, 12388, 7, 75, 2, + 2, 12388, 12389, 7, 73, 2, 2, 12389, 12390, 7, 74, 2, 2, 12390, 12391, + 7, 86, 2, 2, 12391, 12392, 7, 97, 2, 2, 12392, 12393, 7, 85, 2, 2, 12393, + 12394, 7, 86, 2, 2, 12394, 12395, 7, 84, 2, 2, 12395, 12396, 7, 75, 2, + 2, 12396, 12397, 7, 80, 2, 2, 12397, 12398, 7, 73, 2, 2, 12398, 2062, 3, + 2, 2, 2, 12399, 12400, 7, 89, 2, 2, 12400, 12401, 7, 75, 2, 2, 12401, 12402, + 7, 86, 2, 2, 12402, 12403, 7, 74, 2, 2, 12403, 12404, 7, 75, 2, 2, 12404, + 12405, 7, 80, 2, 2, 12405, 2064, 3, 2, 2, 2, 12406, 12407, 7, 91, 2, 2, + 12407, 12408, 7, 71, 2, 2, 12408, 12409, 7, 67, 2, 2, 12409, 12410, 7, + 84, 2, 2, 12410, 12411, 7, 89, 2, 2, 12411, 12412, 7, 71, 2, 2, 12412, + 12413, 7, 71, 2, 2, 12413, 12414, 7, 77, 2, 2, 12414, 2066, 3, 2, 2, 2, + 12415, 12416, 7, 91, 2, 2, 12416, 2068, 3, 2, 2, 2, 12417, 12418, 7, 90, + 2, 2, 12418, 2070, 3, 2, 2, 2, 12419, 12420, 7, 60, 2, 2, 12420, 12421, + 7, 63, 2, 2, 12421, 2072, 3, 2, 2, 2, 12422, 12423, 7, 45, 2, 2, 12423, + 12424, 7, 63, 2, 2, 12424, 2074, 3, 2, 2, 2, 12425, 12426, 7, 47, 2, 2, + 12426, 12427, 7, 63, 2, 2, 12427, 2076, 3, 2, 2, 2, 12428, 12429, 7, 44, + 2, 2, 12429, 12430, 7, 63, 2, 2, 12430, 2078, 3, 2, 2, 2, 12431, 12432, + 7, 49, 2, 2, 12432, 12433, 7, 63, 2, 2, 12433, 2080, 3, 2, 2, 2, 12434, + 12435, 7, 39, 2, 2, 12435, 12436, 7, 63, 2, 2, 12436, 2082, 3, 2, 2, 2, + 12437, 12438, 7, 40, 2, 2, 12438, 12439, 7, 63, 2, 2, 12439, 2084, 3, 2, + 2, 2, 12440, 12441, 7, 96, 2, 2, 12441, 12442, 7, 63, 2, 2, 12442, 2086, + 3, 2, 2, 2, 12443, 12444, 7, 126, 2, 2, 12444, 12445, 7, 63, 2, 2, 12445, + 2088, 3, 2, 2, 2, 12446, 12447, 7, 44, 2, 2, 12447, 2090, 3, 2, 2, 2, 12448, + 12449, 7, 49, 2, 2, 12449, 2092, 3, 2, 2, 2, 12450, 12451, 7, 39, 2, 2, + 12451, 2094, 3, 2, 2, 2, 12452, 12453, 7, 45, 2, 2, 12453, 2096, 3, 2, + 2, 2, 12454, 12455, 7, 47, 2, 2, 12455, 12456, 7, 47, 2, 2, 12456, 2098, + 3, 2, 2, 2, 12457, 12458, 7, 47, 2, 2, 12458, 2100, 3, 2, 2, 2, 12459, + 12460, 7, 70, 2, 2, 12460, 12461, 7, 75, 2, 2, 12461, 12462, 7, 88, 2, + 2, 12462, 2102, 3, 2, 2, 2, 12463, 12464, 7, 79, 2, 2, 12464, 12465, 7, + 81, 2, 2, 12465, 12466, 7, 70, 2, 2, 12466, 2104, 3, 2, 2, 2, 12467, 12468, + 7, 63, 2, 2, 12468, 2106, 3, 2, 2, 2, 12469, 12470, 7, 64, 2, 2, 12470, + 2108, 3, 2, 2, 2, 12471, 12472, 7, 62, 2, 2, 12472, 2110, 3, 2, 2, 2, 12473, + 12474, 7, 35, 2, 2, 12474, 2112, 3, 2, 2, 2, 12475, 12476, 7, 128, 2, 2, + 12476, 2114, 3, 2, 2, 2, 12477, 12478, 7, 126, 2, 2, 12478, 2116, 3, 2, + 2, 2, 12479, 12480, 7, 40, 2, 2, 12480, 2118, 3, 2, 2, 2, 12481, 12482, + 7, 96, 2, 2, 12482, 2120, 3, 2, 2, 2, 12483, 12484, 7, 48, 2, 2, 12484, + 2122, 3, 2, 2, 2, 12485, 12486, 7, 42, 2, 2, 12486, 2124, 3, 2, 2, 2, 12487, + 12488, 7, 43, 2, 2, 12488, 2126, 3, 2, 2, 2, 12489, 12490, 7, 46, 2, 2, + 12490, 2128, 3, 2, 2, 2, 12491, 12492, 7, 61, 2, 2, 12492, 2130, 3, 2, + 2, 2, 12493, 12494, 7, 66, 2, 2, 12494, 2132, 3, 2, 2, 2, 12495, 12496, + 7, 50, 2, 2, 12496, 2134, 3, 2, 2, 2, 12497, 12498, 7, 51, 2, 2, 12498, + 2136, 3, 2, 2, 2, 12499, 12500, 7, 52, 2, 2, 12500, 2138, 3, 2, 2, 2, 12501, + 12502, 7, 41, 2, 2, 12502, 2140, 3, 2, 2, 2, 12503, 12504, 7, 36, 2, 2, + 12504, 2142, 3, 2, 2, 2, 12505, 12506, 7, 98, 2, 2, 12506, 2144, 3, 2, + 2, 2, 12507, 12508, 7, 60, 2, 2, 12508, 2146, 3, 2, 2, 2, 12509, 12513, + 5, 2139, 1070, 2, 12510, 12513, 5, 2141, 1071, 2, 12511, 12513, 5, 2143, + 1072, 2, 12512, 12509, 3, 2, 2, 2, 12512, 12510, 3, 2, 2, 2, 12512, 12511, + 3, 2, 2, 2, 12513, 2148, 3, 2, 2, 2, 12514, 12515, 7, 98, 2, 2, 12515, + 12516, 5, 2183, 1092, 2, 12516, 12517, 7, 98, 2, 2, 12517, 2150, 3, 2, + 2, 2, 12518, 12520, 5, 2197, 1099, 2, 12519, 12518, 3, 2, 2, 2, 12520, + 12521, 3, 2, 2, 2, 12521, 12519, 3, 2, 2, 2, 12521, 12522, 3, 2, 2, 2, + 12522, 12523, 3, 2, 2, 2, 12523, 12524, 9, 5, 2, 2, 12524, 2152, 3, 2, + 2, 2, 12525, 12526, 7, 80, 2, 2, 12526, 12527, 5, 2191, 1096, 2, 12527, + 2154, 3, 2, 2, 2, 12528, 12532, 5, 2189, 1095, 2, 12529, 12532, 5, 2191, + 1096, 2, 12530, 12532, 5, 2193, 1097, 2, 12531, 12528, 3, 2, 2, 2, 12531, + 12529, 3, 2, 2, 2, 12531, 12530, 3, 2, 2, 2, 12532, 2156, 3, 2, 2, 2, 12533, + 12535, 5, 2197, 1099, 2, 12534, 12533, 3, 2, 2, 2, 12535, 12536, 3, 2, + 2, 2, 12536, 12534, 3, 2, 2, 2, 12536, 12537, 3, 2, 2, 2, 12537, 2158, + 3, 2, 2, 2, 12538, 12539, 7, 90, 2, 2, 12539, 12543, 7, 41, 2, 2, 12540, + 12541, 5, 2195, 1098, 2, 12541, 12542, 5, 2195, 1098, 2, 12542, 12544, + 3, 2, 2, 2, 12543, 12540, 3, 2, 2, 2, 12544, 12545, 3, 2, 2, 2, 12545, + 12543, 3, 2, 2, 2, 12545, 12546, 3, 2, 2, 2, 12546, 12547, 3, 2, 2, 2, + 12547, 12548, 7, 41, 2, 2, 12548, 12558, 3, 2, 2, 2, 12549, 12550, 7, 50, + 2, 2, 12550, 12551, 7, 90, 2, 2, 12551, 12553, 3, 2, 2, 2, 12552, 12554, + 5, 2195, 1098, 2, 12553, 12552, 3, 2, 2, 2, 12554, 12555, 3, 2, 2, 2, 12555, + 12553, 3, 2, 2, 2, 12555, 12556, 3, 2, 2, 2, 12556, 12558, 3, 2, 2, 2, + 12557, 12538, 3, 2, 2, 2, 12557, 12549, 3, 2, 2, 2, 12558, 2160, 3, 2, + 2, 2, 12559, 12561, 5, 2197, 1099, 2, 12560, 12559, 3, 2, 2, 2, 12561, + 12562, 3, 2, 2, 2, 12562, 12560, 3, 2, 2, 2, 12562, 12563, 3, 2, 2, 2, + 12563, 12565, 3, 2, 2, 2, 12564, 12560, 3, 2, 2, 2, 12564, 12565, 3, 2, + 2, 2, 12565, 12566, 3, 2, 2, 2, 12566, 12568, 7, 48, 2, 2, 12567, 12569, + 5, 2197, 1099, 2, 12568, 12567, 3, 2, 2, 2, 12569, 12570, 3, 2, 2, 2, 12570, + 12568, 3, 2, 2, 2, 12570, 12571, 3, 2, 2, 2, 12571, 12603, 3, 2, 2, 2, + 12572, 12574, 5, 2197, 1099, 2, 12573, 12572, 3, 2, 2, 2, 12574, 12575, + 3, 2, 2, 2, 12575, 12573, 3, 2, 2, 2, 12575, 12576, 3, 2, 2, 2, 12576, + 12577, 3, 2, 2, 2, 12577, 12578, 7, 48, 2, 2, 12578, 12579, 5, 2185, 1093, + 2, 12579, 12603, 3, 2, 2, 2, 12580, 12582, 5, 2197, 1099, 2, 12581, 12580, + 3, 2, 2, 2, 12582, 12583, 3, 2, 2, 2, 12583, 12581, 3, 2, 2, 2, 12583, + 12584, 3, 2, 2, 2, 12584, 12586, 3, 2, 2, 2, 12585, 12581, 3, 2, 2, 2, + 12585, 12586, 3, 2, 2, 2, 12586, 12587, 3, 2, 2, 2, 12587, 12589, 7, 48, + 2, 2, 12588, 12590, 5, 2197, 1099, 2, 12589, 12588, 3, 2, 2, 2, 12590, + 12591, 3, 2, 2, 2, 12591, 12589, 3, 2, 2, 2, 12591, 12592, 3, 2, 2, 2, + 12592, 12593, 3, 2, 2, 2, 12593, 12594, 5, 2185, 1093, 2, 12594, 12603, + 3, 2, 2, 2, 12595, 12597, 5, 2197, 1099, 2, 12596, 12595, 3, 2, 2, 2, 12597, + 12598, 3, 2, 2, 2, 12598, 12596, 3, 2, 2, 2, 12598, 12599, 3, 2, 2, 2, + 12599, 12600, 3, 2, 2, 2, 12600, 12601, 5, 2185, 1093, 2, 12601, 12603, + 3, 2, 2, 2, 12602, 12564, 3, 2, 2, 2, 12602, 12573, 3, 2, 2, 2, 12602, + 12585, 3, 2, 2, 2, 12602, 12596, 3, 2, 2, 2, 12603, 2162, 3, 2, 2, 2, 12604, + 12605, 7, 94, 2, 2, 12605, 12606, 7, 80, 2, 2, 12606, 2164, 3, 2, 2, 2, + 12607, 12608, 5, 2199, 1100, 2, 12608, 2166, 3, 2, 2, 2, 12609, 12610, + 7, 97, 2, 2, 12610, 12611, 5, 2183, 1092, 2, 12611, 2168, 3, 2, 2, 2, 12612, + 12613, 7, 48, 2, 2, 12613, 12614, 5, 2187, 1094, 2, 12614, 2170, 3, 2, + 2, 2, 12615, 12616, 5, 2187, 1094, 2, 12616, 2172, 3, 2, 2, 2, 12617, 12619, + 7, 98, 2, 2, 12618, 12620, 10, 6, 2, 2, 12619, 12618, 3, 2, 2, 2, 12620, + 12621, 3, 2, 2, 2, 12621, 12619, 3, 2, 2, 2, 12621, 12622, 3, 2, 2, 2, + 12622, 12623, 3, 2, 2, 2, 12623, 12624, 7, 98, 2, 2, 12624, 2174, 3, 2, + 2, 2, 12625, 12630, 5, 2191, 1096, 2, 12626, 12630, 5, 2189, 1095, 2, 12627, + 12630, 5, 2193, 1097, 2, 12628, 12630, 5, 2187, 1094, 2, 12629, 12625, + 3, 2, 2, 2, 12629, 12626, 3, 2, 2, 2, 12629, 12627, 3, 2, 2, 2, 12629, + 12628, 3, 2, 2, 2, 12630, 12631, 3, 2, 2, 2, 12631, 12637, 7, 66, 2, 2, + 12632, 12638, 5, 2191, 1096, 2, 12633, 12638, 5, 2189, 1095, 2, 12634, + 12638, 5, 2193, 1097, 2, 12635, 12638, 5, 2187, 1094, 2, 12636, 12638, + 5, 2177, 1089, 2, 12637, 12632, 3, 2, 2, 2, 12637, 12633, 3, 2, 2, 2, 12637, + 12634, 3, 2, 2, 2, 12637, 12635, 3, 2, 2, 2, 12637, 12636, 3, 2, 2, 2, + 12638, 2176, 3, 2, 2, 2, 12639, 12641, 9, 7, 2, 2, 12640, 12639, 3, 2, + 2, 2, 12641, 12642, 3, 2, 2, 2, 12642, 12640, 3, 2, 2, 2, 12642, 12643, + 3, 2, 2, 2, 12643, 12644, 3, 2, 2, 2, 12644, 12646, 7, 48, 2, 2, 12645, + 12647, 9, 8, 2, 2, 12646, 12645, 3, 2, 2, 2, 12647, 12648, 3, 2, 2, 2, + 12648, 12646, 3, 2, 2, 2, 12648, 12649, 3, 2, 2, 2, 12649, 12662, 3, 2, + 2, 2, 12650, 12652, 9, 9, 2, 2, 12651, 12650, 3, 2, 2, 2, 12652, 12653, + 3, 2, 2, 2, 12653, 12651, 3, 2, 2, 2, 12653, 12654, 3, 2, 2, 2, 12654, + 12655, 3, 2, 2, 2, 12655, 12657, 7, 60, 2, 2, 12656, 12658, 9, 9, 2, 2, + 12657, 12656, 3, 2, 2, 2, 12658, 12659, 3, 2, 2, 2, 12659, 12657, 3, 2, + 2, 2, 12659, 12660, 3, 2, 2, 2, 12660, 12662, 3, 2, 2, 2, 12661, 12640, + 3, 2, 2, 2, 12661, 12651, 3, 2, 2, 2, 12662, 2178, 3, 2, 2, 2, 12663, 12672, + 7, 66, 2, 2, 12664, 12666, 9, 10, 2, 2, 12665, 12664, 3, 2, 2, 2, 12666, + 12667, 3, 2, 2, 2, 12667, 12665, 3, 2, 2, 2, 12667, 12668, 3, 2, 2, 2, + 12668, 12673, 3, 2, 2, 2, 12669, 12673, 5, 2191, 1096, 2, 12670, 12673, + 5, 2189, 1095, 2, 12671, 12673, 5, 2193, 1097, 2, 12672, 12665, 3, 2, 2, + 2, 12672, 12669, 3, 2, 2, 2, 12672, 12670, 3, 2, 2, 2, 12672, 12671, 3, + 2, 2, 2, 12673, 2180, 3, 2, 2, 2, 12674, 12675, 7, 66, 2, 2, 12675, 12682, + 7, 66, 2, 2, 12676, 12678, 9, 10, 2, 2, 12677, 12676, 3, 2, 2, 2, 12678, + 12679, 3, 2, 2, 2, 12679, 12677, 3, 2, 2, 2, 12679, 12680, 3, 2, 2, 2, + 12680, 12683, 3, 2, 2, 2, 12681, 12683, 5, 2193, 1097, 2, 12682, 12677, + 3, 2, 2, 2, 12682, 12681, 3, 2, 2, 2, 12683, 2182, 3, 2, 2, 2, 12684, 12726, + 5, 1357, 679, 2, 12685, 12726, 5, 1359, 680, 2, 12686, 12726, 5, 1361, + 681, 2, 12687, 12726, 5, 421, 211, 2, 12688, 12726, 5, 1363, 682, 2, 12689, + 12726, 5, 1365, 683, 2, 12690, 12726, 5, 1367, 684, 2, 12691, 12726, 5, + 1369, 685, 2, 12692, 12726, 5, 1371, 686, 2, 12693, 12726, 5, 1373, 687, + 2, 12694, 12726, 5, 1375, 688, 2, 12695, 12726, 5, 1377, 689, 2, 12696, + 12726, 5, 1379, 690, 2, 12697, 12726, 5, 1381, 691, 2, 12698, 12726, 5, + 1383, 692, 2, 12699, 12726, 5, 1385, 693, 2, 12700, 12726, 5, 1387, 694, + 2, 12701, 12726, 5, 1389, 695, 2, 12702, 12726, 5, 1391, 696, 2, 12703, + 12726, 5, 1393, 697, 2, 12704, 12726, 5, 1395, 698, 2, 12705, 12726, 5, + 1397, 699, 2, 12706, 12726, 5, 1399, 700, 2, 12707, 12726, 5, 1401, 701, + 2, 12708, 12726, 5, 1403, 702, 2, 12709, 12726, 5, 1405, 703, 2, 12710, + 12726, 5, 1407, 704, 2, 12711, 12726, 5, 1409, 705, 2, 12712, 12726, 5, + 1411, 706, 2, 12713, 12726, 5, 1413, 707, 2, 12714, 12726, 5, 1415, 708, + 2, 12715, 12726, 5, 1417, 709, 2, 12716, 12726, 5, 1419, 710, 2, 12717, + 12726, 5, 1421, 711, 2, 12718, 12726, 5, 1423, 712, 2, 12719, 12726, 5, + 1425, 713, 2, 12720, 12726, 5, 1427, 714, 2, 12721, 12726, 5, 1429, 715, + 2, 12722, 12726, 5, 1431, 716, 2, 12723, 12726, 5, 1433, 717, 2, 12724, + 12726, 5, 1435, 718, 2, 12725, 12684, 3, 2, 2, 2, 12725, 12685, 3, 2, 2, + 2, 12725, 12686, 3, 2, 2, 2, 12725, 12687, 3, 2, 2, 2, 12725, 12688, 3, + 2, 2, 2, 12725, 12689, 3, 2, 2, 2, 12725, 12690, 3, 2, 2, 2, 12725, 12691, + 3, 2, 2, 2, 12725, 12692, 3, 2, 2, 2, 12725, 12693, 3, 2, 2, 2, 12725, + 12694, 3, 2, 2, 2, 12725, 12695, 3, 2, 2, 2, 12725, 12696, 3, 2, 2, 2, + 12725, 12697, 3, 2, 2, 2, 12725, 12698, 3, 2, 2, 2, 12725, 12699, 3, 2, + 2, 2, 12725, 12700, 3, 2, 2, 2, 12725, 12701, 3, 2, 2, 2, 12725, 12702, + 3, 2, 2, 2, 12725, 12703, 3, 2, 2, 2, 12725, 12704, 3, 2, 2, 2, 12725, + 12705, 3, 2, 2, 2, 12725, 12706, 3, 2, 2, 2, 12725, 12707, 3, 2, 2, 2, + 12725, 12708, 3, 2, 2, 2, 12725, 12709, 3, 2, 2, 2, 12725, 12710, 3, 2, + 2, 2, 12725, 12711, 3, 2, 2, 2, 12725, 12712, 3, 2, 2, 2, 12725, 12713, + 3, 2, 2, 2, 12725, 12714, 3, 2, 2, 2, 12725, 12715, 3, 2, 2, 2, 12725, + 12716, 3, 2, 2, 2, 12725, 12717, 3, 2, 2, 2, 12725, 12718, 3, 2, 2, 2, + 12725, 12719, 3, 2, 2, 2, 12725, 12720, 3, 2, 2, 2, 12725, 12721, 3, 2, + 2, 2, 12725, 12722, 3, 2, 2, 2, 12725, 12723, 3, 2, 2, 2, 12725, 12724, + 3, 2, 2, 2, 12726, 2184, 3, 2, 2, 2, 12727, 12729, 7, 71, 2, 2, 12728, + 12730, 9, 11, 2, 2, 12729, 12728, 3, 2, 2, 2, 12729, 12730, 3, 2, 2, 2, + 12730, 12732, 3, 2, 2, 2, 12731, 12733, 5, 2197, 1099, 2, 12732, 12731, + 3, 2, 2, 2, 12733, 12734, 3, 2, 2, 2, 12734, 12732, 3, 2, 2, 2, 12734, + 12735, 3, 2, 2, 2, 12735, 2186, 3, 2, 2, 2, 12736, 12738, 9, 12, 2, 2, + 12737, 12736, 3, 2, 2, 2, 12738, 12741, 3, 2, 2, 2, 12739, 12740, 3, 2, + 2, 2, 12739, 12737, 3, 2, 2, 2, 12740, 12743, 3, 2, 2, 2, 12741, 12739, + 3, 2, 2, 2, 12742, 12744, 9, 13, 2, 2, 12743, 12742, 3, 2, 2, 2, 12744, + 12745, 3, 2, 2, 2, 12745, 12746, 3, 2, 2, 2, 12745, 12743, 3, 2, 2, 2, + 12746, 12750, 3, 2, 2, 2, 12747, 12749, 9, 12, 2, 2, 12748, 12747, 3, 2, + 2, 2, 12749, 12752, 3, 2, 2, 2, 12750, 12748, 3, 2, 2, 2, 12750, 12751, + 3, 2, 2, 2, 12751, 2188, 3, 2, 2, 2, 12752, 12750, 3, 2, 2, 2, 12753, 12761, + 7, 36, 2, 2, 12754, 12755, 7, 94, 2, 2, 12755, 12760, 11, 2, 2, 2, 12756, + 12757, 7, 36, 2, 2, 12757, 12760, 7, 36, 2, 2, 12758, 12760, 10, 14, 2, + 2, 12759, 12754, 3, 2, 2, 2, 12759, 12756, 3, 2, 2, 2, 12759, 12758, 3, + 2, 2, 2, 12760, 12763, 3, 2, 2, 2, 12761, 12759, 3, 2, 2, 2, 12761, 12762, + 3, 2, 2, 2, 12762, 12764, 3, 2, 2, 2, 12763, 12761, 3, 2, 2, 2, 12764, + 12765, 7, 36, 2, 2, 12765, 2190, 3, 2, 2, 2, 12766, 12774, 7, 41, 2, 2, + 12767, 12768, 7, 94, 2, 2, 12768, 12773, 11, 2, 2, 2, 12769, 12770, 7, + 41, 2, 2, 12770, 12773, 7, 41, 2, 2, 12771, 12773, 10, 15, 2, 2, 12772, + 12767, 3, 2, 2, 2, 12772, 12769, 3, 2, 2, 2, 12772, 12771, 3, 2, 2, 2, + 12773, 12776, 3, 2, 2, 2, 12774, 12772, 3, 2, 2, 2, 12774, 12775, 3, 2, + 2, 2, 12775, 12777, 3, 2, 2, 2, 12776, 12774, 3, 2, 2, 2, 12777, 12778, + 7, 41, 2, 2, 12778, 2192, 3, 2, 2, 2, 12779, 12787, 7, 98, 2, 2, 12780, + 12781, 7, 94, 2, 2, 12781, 12786, 11, 2, 2, 2, 12782, 12783, 7, 98, 2, + 2, 12783, 12786, 7, 98, 2, 2, 12784, 12786, 10, 16, 2, 2, 12785, 12780, + 3, 2, 2, 2, 12785, 12782, 3, 2, 2, 2, 12785, 12784, 3, 2, 2, 2, 12786, + 12789, 3, 2, 2, 2, 12787, 12785, 3, 2, 2, 2, 12787, 12788, 3, 2, 2, 2, + 12788, 12790, 3, 2, 2, 2, 12789, 12787, 3, 2, 2, 2, 12790, 12791, 7, 98, + 2, 2, 12791, 2194, 3, 2, 2, 2, 12792, 12793, 9, 17, 2, 2, 12793, 2196, + 3, 2, 2, 2, 12794, 12795, 9, 7, 2, 2, 12795, 2198, 3, 2, 2, 2, 12796, 12797, + 7, 68, 2, 2, 12797, 12799, 7, 41, 2, 2, 12798, 12800, 9, 18, 2, 2, 12799, + 12798, 3, 2, 2, 2, 12800, 12801, 3, 2, 2, 2, 12801, 12799, 3, 2, 2, 2, + 12801, 12802, 3, 2, 2, 2, 12802, 12803, 3, 2, 2, 2, 12803, 12804, 7, 41, + 2, 2, 12804, 2200, 3, 2, 2, 2, 12805, 12806, 11, 2, 2, 2, 12806, 12807, + 3, 2, 2, 2, 12807, 12808, 8, 1101, 4, 2, 12808, 2202, 3, 2, 2, 2, 56, 2, + 2206, 2217, 2230, 2243, 2248, 2252, 2256, 2262, 2266, 2268, 8450, 8477, + 12512, 12521, 12531, 12536, 12545, 12555, 12557, 12562, 12564, 12570, 12575, + 12583, 12585, 12591, 12598, 12602, 12621, 12629, 12637, 12642, 12648, 12653, + 12659, 12661, 12667, 12672, 12679, 12682, 12725, 12729, 12734, 12739, 12745, + 12750, 12759, 12761, 12772, 12774, 12785, 12787, 12801, 5, 2, 3, 2, 2, + 4, 2, 2, 5, 2, +} + +var lexerChannelNames = []string{ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "MYSQLCOMMENT", "ERRORCHANNEL", +} + +var lexerModeNames = []string{ + "DEFAULT_MODE", +} + +var lexerLiteralNames = []string{ + "", "", "", "", "", "'ADD'", "'ALL'", "'ALTER'", "'ALWAYS'", "'ANALYZE'", + "'AND'", "'AS'", "'ASC'", "'BEFORE'", "'BETWEEN'", "'BOTH'", "'BY'", "'CALL'", + "'CASCADE'", "'CASE'", "'CAST'", "'CHANGE'", "'CHARACTER'", "'CHECK'", + "'COLLATE'", "'COLUMN'", "'CONDITION'", "'CONSTRAINT'", "'CONTINUE'", "'CONVERT'", + "'CREATE'", "'CROSS'", "'CURRENT'", "'CURRENT_USER'", "'CURSOR'", "'DATABASE'", + "'DATABASES'", "'DECLARE'", "'DEFAULT'", "'DELAYED'", "'DELETE'", "'DESC'", + "'DESCRIBE'", "'DETERMINISTIC'", "'DIAGNOSTICS'", "'DISTINCT'", "'DISTINCTROW'", + "'DROP'", "'EACH'", "'ELSE'", "'ELSEIF'", "'EMPTY'", "'ENCLOSED'", "'ESCAPED'", + "'EXISTS'", "'EXIT'", "'EXPLAIN'", "'FALSE'", "'FETCH'", "'FOR'", "'FORCE'", + "'FOREIGN'", "'FROM'", "'FULLTEXT'", "'GENERATED'", "'GET'", "'GRANT'", + "'GROUP'", "'HAVING'", "'HIGH_PRIORITY'", "'IF'", "'IGNORE'", "'IN'", "'INDEX'", + "'INFILE'", "'INNER'", "'INOUT'", "'INSERT'", "'INTERVAL'", "'INTO'", "'IS'", + "'ITERATE'", "'JOIN'", "'KEY'", "'KEYS'", "'KILL'", "'LEADING'", "'LEAVE'", + "'LEFT'", "'LIKE'", "'LIMIT'", "'LINEAR'", "'LINES'", "'LOAD'", "'LOCK'", + "'LOOP'", "'LOW_PRIORITY'", "'MASTER_BIND'", "'MASTER_SSL_VERIFY_SERVER_CERT'", + "'MATCH'", "'MAXVALUE'", "'MODIFIES'", "'NATURAL'", "'NOT'", "'NO_WRITE_TO_BINLOG'", + "", "'NULL'", "'NUMBER'", "'ON'", "'OPTIMIZE'", "'OPTION'", "'OPTIONALLY'", + "'OR'", "'ORDER'", "'OUT'", "'OUTER'", "'OUTFILE'", "'PARTITION'", "'PRIMARY'", + "'PROCEDURE'", "'PURGE'", "'RANGE'", "'READ'", "'READS'", "'REFERENCES'", + "'REGEXP'", "'RELEASE'", "'RENAME'", "'REPEAT'", "'REPLACE'", "'REQUIRE'", + "'RESIGNAL'", "'RESTRICT'", "'RETURN'", "'REVOKE'", "'RIGHT'", "'RLIKE'", + "'SCHEMA'", "'SCHEMAS'", "'SELECT'", "'SET'", "'SEPARATOR'", "'SHOW'", + "'SIGNAL'", "'SPATIAL'", "'SQL'", "'SQLEXCEPTION'", "'SQLSTATE'", "'SQLWARNING'", + "'SQL_BIG_RESULT'", "'SQL_CALC_FOUND_ROWS'", "'SQL_SMALL_RESULT'", "'SSL'", + "'STACKED'", "'STARTING'", "'STRAIGHT_JOIN'", "'TABLE'", "'TERMINATED'", + "'THEN'", "'TO'", "'TRAILING'", "'TRIGGER'", "'TRUE'", "'UNDO'", "'UNION'", + "'UNIQUE'", "'UNLOCK'", "'UNSIGNED'", "'UPDATE'", "'USAGE'", "'USE'", "'USING'", + "'VALUES'", "'WHEN'", "'WHERE'", "'WHILE'", "'WITH'", "'WRITE'", "'XOR'", + "'ZEROFILL'", "'TINYINT'", "'SMALLINT'", "'MEDIUMINT'", "'MIDDLEINT'", + "'INT'", "'INT1'", "'INT2'", "'INT3'", "'INT4'", "'INT8'", "'INTEGER'", + "'BIGINT'", "'REAL'", "'DOUBLE'", "'PRECISION'", "'FLOAT'", "'FLOAT4'", + "'FLOAT8'", "'DECIMAL'", "'DEC'", "'NUMERIC'", "'DATE'", "'TIME'", "'TIMESTAMP'", + "'DATETIME'", "'YEAR'", "'CHAR'", "'VARCHAR'", "'NVARCHAR'", "'NATIONAL'", + "'BINARY'", "'VARBINARY'", "'TINYBLOB'", "'BLOB'", "'MEDIUMBLOB'", "'LONG'", + "'LONGBLOB'", "'TINYTEXT'", "'TEXT'", "'MEDIUMTEXT'", "'LONGTEXT'", "'ENUM'", + "'VARYING'", "'SERIAL'", "'YEAR_MONTH'", "'DAY_HOUR'", "'DAY_MINUTE'", + "'DAY_SECOND'", "'HOUR_MINUTE'", "'HOUR_SECOND'", "'MINUTE_SECOND'", "'SECOND_MICROSECOND'", + "'MINUTE_MICROSECOND'", "'HOUR_MICROSECOND'", "'DAY_MICROSECOND'", "'JSON_ARRAY'", + "'JSON_OBJECT'", "'JSON_QUOTE'", "'JSON_CONTAINS'", "'JSON_CONTAINS_PATH'", + "'JSON_EXTRACT'", "'JSON_KEYS'", "'JSON_OVERLAPS'", "'JSON_SEARCH'", "'JSON_VALUE'", + "'JSON_ARRAY_APPEND'", "'JSON_ARRAY_INSERT'", "'JSON_INSERT'", "'JSON_MERGE'", + "'JSON_MERGE_PATCH'", "'JSON_MERGE_PRESERVE'", "'JSON_REMOVE'", "'JSON_REPLACE'", + "'JSON_SET'", "'JSON_UNQUOTE'", "'JSON_DEPTH'", "'JSON_LENGTH'", "'JSON_TYPE'", + "'JSON_VALID'", "'JSON_TABLE'", "'JSON_SCHEMA_VALID'", "'JSON_SCHEMA_VALIDATION_REPORT'", + "'JSON_PRETTY'", "'JSON_STORAGE_FREE'", "'JSON_STORAGE_SIZE'", "'JSON_ARRAYAGG'", + "'JSON_OBJECTAGG'", "'AVG'", "'BIT_AND'", "'BIT_OR'", "'BIT_XOR'", "'COUNT'", + "'GROUP_CONCAT'", "'MAX'", "'MIN'", "'STD'", "'STDDEV'", "'STDDEV_POP'", + "'STDDEV_SAMP'", "'SUM'", "'VAR_POP'", "'VAR_SAMP'", "'VARIANCE'", "'CURRENT_DATE'", + "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'LOCALTIME'", "'CURDATE'", "'CURTIME'", + "'DATE_ADD'", "'DATE_SUB'", "'EXTRACT'", "'LOCALTIMESTAMP'", "'NOW'", "'POSITION'", + "'SUBSTR'", "'SUBSTRING'", "'SYSDATE'", "'TRIM'", "'UTC_DATE'", "'UTC_TIME'", + "'UTC_TIMESTAMP'", "'ACCOUNT'", "'ACTION'", "'AFTER'", "'AGGREGATE'", "'ALGORITHM'", + "'ANY'", "'AT'", "'AUTHORS'", "'AUTOCOMMIT'", "'AUTOEXTEND_SIZE'", "'AUTO_INCREMENT'", + "'AVG_ROW_LENGTH'", "'BEGIN'", "'BINLOG'", "'BIT'", "'BLOCK'", "'BOOL'", + "'BOOLEAN'", "'BTREE'", "'CACHE'", "'CASCADED'", "'CHAIN'", "'CHANGED'", + "'CHANNEL'", "'CHECKSUM'", "'PAGE_CHECKSUM'", "'CIPHER'", "'CLASS_ORIGIN'", + "'CLIENT'", "'CLOSE'", "'COALESCE'", "'CODE'", "'COLUMNS'", "'COLUMN_FORMAT'", + "'COLUMN_NAME'", "'COMMENT'", "'COMMIT'", "'COMPACT'", "'COMPLETION'", + "'COMPRESSED'", "'COMPRESSION'", "'CONCURRENT'", "'CONNECTION'", "'CONSISTENT'", + "'CONSTRAINT_CATALOG'", "'CONSTRAINT_SCHEMA'", "'CONSTRAINT_NAME'", "'CONTAINS'", + "'CONTEXT'", "'CONTRIBUTORS'", "'COPY'", "'CPU'", "'CURSOR_NAME'", "'DATA'", + "'DATAFILE'", "'DEALLOCATE'", "'DEFAULT_AUTH'", "'DEFINER'", "'DELAY_KEY_WRITE'", + "'DES_KEY_FILE'", "'DIRECTORY'", "'DISABLE'", "'DISCARD'", "'DISK'", "'DO'", + "'DUMPFILE'", "'DUPLICATE'", "'DYNAMIC'", "'ENABLE'", "'ENCRYPTION'", "'END'", + "'ENDS'", "'ENGINE'", "'ENGINES'", "'ERROR'", "'ERRORS'", "'ESCAPE'", "'EVEN'", + "'EVENT'", "'EVENTS'", "'EVERY'", "'EXCHANGE'", "'EXCLUSIVE'", "'EXPIRE'", + "'EXPORT'", "'EXTENDED'", "'EXTENT_SIZE'", "'FAST'", "'FAULTS'", "'FIELDS'", + "'FILE_BLOCK_SIZE'", "'FILTER'", "'FIRST'", "'FIXED'", "'FLUSH'", "'FOLLOWS'", + "'FOUND'", "'FULL'", "'FUNCTION'", "'GENERAL'", "'GLOBAL'", "'GRANTS'", + "'GROUP_REPLICATION'", "'HANDLER'", "'HASH'", "'HELP'", "'HOST'", "'HOSTS'", + "'IDENTIFIED'", "'IGNORE_SERVER_IDS'", "'IMPORT'", "'INDEXES'", "'INITIAL_SIZE'", + "'INPLACE'", "'INSERT_METHOD'", "'INSTALL'", "'INSTANCE'", "'INVISIBLE'", + "'INVOKER'", "'IO'", "'IO_THREAD'", "'IPC'", "'ISOLATION'", "'ISSUER'", + "'JSON'", "'KEY_BLOCK_SIZE'", "'LANGUAGE'", "'LAST'", "'LEAVES'", "'LESS'", + "'LEVEL'", "'LIST'", "'LOCAL'", "'LOGFILE'", "'LOGS'", "'MASTER'", "'MASTER_AUTO_POSITION'", + "'MASTER_CONNECT_RETRY'", "'MASTER_DELAY'", "'MASTER_HEARTBEAT_PERIOD'", + "'MASTER_HOST'", "'MASTER_LOG_FILE'", "'MASTER_LOG_POS'", "'MASTER_PASSWORD'", + "'MASTER_PORT'", "'MASTER_RETRY_COUNT'", "'MASTER_SSL'", "'MASTER_SSL_CA'", + "'MASTER_SSL_CAPATH'", "'MASTER_SSL_CERT'", "'MASTER_SSL_CIPHER'", "'MASTER_SSL_CRL'", + "'MASTER_SSL_CRLPATH'", "'MASTER_SSL_KEY'", "'MASTER_TLS_VERSION'", "'MASTER_USER'", + "'MAX_CONNECTIONS_PER_HOUR'", "'MAX_QUERIES_PER_HOUR'", "'MAX_ROWS'", "'MAX_SIZE'", + "'MAX_UPDATES_PER_HOUR'", "'MAX_USER_CONNECTIONS'", "'MEDIUM'", "'MEMBER'", + "'MERGE'", "'MESSAGE_TEXT'", "'MID'", "'MIGRATE'", "'MIN_ROWS'", "'MODE'", + "'MODIFY'", "'MUTEX'", "'MYSQL'", "'MYSQL_ERRNO'", "'NAME'", "'NAMES'", + "'NCHAR'", "'NEVER'", "'NEXT'", "'NO'", "'NODEGROUP'", "'NONE'", "'OFFLINE'", + "'OFFSET'", "'OF'", "'OJ'", "'OLD_PASSWORD'", "'ONE'", "'ONLINE'", "'ONLY'", + "'OPEN'", "'OPTIMIZER_COSTS'", "'OPTIONS'", "'OWNER'", "'PACK_KEYS'", "'PAGE'", + "'PARSER'", "'PARTIAL'", "'PARTITIONING'", "'PARTITIONS'", "'PASSWORD'", + "'PHASE'", "'PLUGIN'", "'PLUGIN_DIR'", "'PLUGINS'", "'PORT'", "'PRECEDES'", + "'PREPARE'", "'PRESERVE'", "'PREV'", "'PROCESSLIST'", "'PROFILE'", "'PROFILES'", + "'PROXY'", "'QUERY'", "'QUICK'", "'REBUILD'", "'RECOVER'", "'REDO_BUFFER_SIZE'", + "'REDUNDANT'", "'RELAY'", "'RELAY_LOG_FILE'", "'RELAY_LOG_POS'", "'RELAYLOG'", + "'REMOVE'", "'REORGANIZE'", "'REPAIR'", "'REPLICATE_DO_DB'", "'REPLICATE_DO_TABLE'", + "'REPLICATE_IGNORE_DB'", "'REPLICATE_IGNORE_TABLE'", "'REPLICATE_REWRITE_DB'", + "'REPLICATE_WILD_DO_TABLE'", "'REPLICATE_WILD_IGNORE_TABLE'", "'REPLICATION'", + "'RESET'", "'RESUME'", "'RETURNED_SQLSTATE'", "'RETURNING'", "'RETURNS'", + "'ROLE'", "'ROLLBACK'", "'ROLLUP'", "'ROTATE'", "'ROW'", "'ROWS'", "'ROW_FORMAT'", + "'SAVEPOINT'", "'SCHEDULE'", "'SECURITY'", "'SERVER'", "'SESSION'", "'SHARE'", + "'SHARED'", "'SIGNED'", "'SIMPLE'", "'SLAVE'", "'SLOW'", "'SNAPSHOT'", + "'SOCKET'", "'SOME'", "'SONAME'", "'SOUNDS'", "'SOURCE'", "'SQL_AFTER_GTIDS'", + "'SQL_AFTER_MTS_GAPS'", "'SQL_BEFORE_GTIDS'", "'SQL_BUFFER_RESULT'", "'SQL_CACHE'", + "'SQL_NO_CACHE'", "'SQL_THREAD'", "'START'", "'STARTS'", "'STATS_AUTO_RECALC'", + "'STATS_PERSISTENT'", "'STATS_SAMPLE_PAGES'", "'STATUS'", "'STOP'", "'STORAGE'", + "'STORED'", "'STRING'", "'SUBCLASS_ORIGIN'", "'SUBJECT'", "'SUBPARTITION'", + "'SUBPARTITIONS'", "'SUSPEND'", "'SWAPS'", "'SWITCHES'", "'TABLE_NAME'", + "'TABLESPACE'", "'TEMPORARY'", "'TEMPTABLE'", "'THAN'", "'TRADITIONAL'", + "'TRANSACTION'", "'TRANSACTIONAL'", "'TRIGGERS'", "'TRUNCATE'", "'UNDEFINED'", + "'UNDOFILE'", "'UNDO_BUFFER_SIZE'", "'UNINSTALL'", "'UNKNOWN'", "'UNTIL'", + "'UPGRADE'", "'USER'", "'USE_FRM'", "'USER_RESOURCES'", "'VALIDATION'", + "'VALUE'", "'VARIABLES'", "'VIEW'", "'VIRTUAL'", "'VISIBLE'", "'WAIT'", + "'WARNINGS'", "'WITHOUT'", "'WORK'", "'WRAPPER'", "'X509'", "'XA'", "'XML'", + "'EUR'", "'USA'", "'JIS'", "'ISO'", "'INTERNAL'", "'QUARTER'", "'MONTH'", + "'DAY'", "'HOUR'", "'MINUTE'", "'WEEK'", "'SECOND'", "'MICROSECOND'", "'TABLES'", + "'ROUTINE'", "'EXECUTE'", "'FILE'", "'PROCESS'", "'RELOAD'", "'SHUTDOWN'", + "'SUPER'", "'PRIVILEGES'", "'APPLICATION_PASSWORD_ADMIN'", "'AUDIT_ADMIN'", + "'BACKUP_ADMIN'", "'BINLOG_ADMIN'", "'BINLOG_ENCRYPTION_ADMIN'", "'CLONE_ADMIN'", + "'CONNECTION_ADMIN'", "'ENCRYPTION_KEY_ADMIN'", "'FIREWALL_ADMIN'", "'FIREWALL_USER'", + "'FLUSH_OPTIMIZER_COSTS'", "'FLUSH_STATUS'", "'FLUSH_TABLES'", "'FLUSH_USER_RESOURCES'", + "'GROUP_REPLICATION_ADMIN'", "'INNODB_REDO_LOG_ARCHIVE'", "'INNODB_REDO_LOG_ENABLE'", + "'NDB_STORED_USER'", "'PERSIST_RO_VARIABLES_ADMIN'", "'REPLICATION_APPLIER'", + "'REPLICATION_SLAVE_ADMIN'", "'RESOURCE_GROUP_ADMIN'", "'RESOURCE_GROUP_USER'", + "'ROLE_ADMIN'", "'SERVICE_CONNECTION_ADMIN'", "", "'SET_USER_ID'", "'SHOW_ROUTINE'", + "'SYSTEM_VARIABLES_ADMIN'", "'TABLE_ENCRYPTION_ADMIN'", "'VERSION_TOKEN_ADMIN'", + "'XA_RECOVER_ADMIN'", "'ARMSCII8'", "'ASCII'", "'BIG5'", "'CP1250'", "'CP1251'", + "'CP1256'", "'CP1257'", "'CP850'", "'CP852'", "'CP866'", "'CP932'", "'DEC8'", + "'EUCJPMS'", "'EUCKR'", "'GB2312'", "'GBK'", "'GEOSTD8'", "'GREEK'", "'HEBREW'", + "'HP8'", "'KEYBCS2'", "'KOI8R'", "'KOI8U'", "'LATIN1'", "'LATIN2'", "'LATIN5'", + "'LATIN7'", "'MACCE'", "'MACROMAN'", "'SJIS'", "'SWE7'", "'TIS620'", "'UCS2'", + "'UJIS'", "'UTF16'", "'UTF16LE'", "'UTF32'", "'UTF8'", "'UTF8MB3'", "'UTF8MB4'", + "'ARCHIVE'", "'BLACKHOLE'", "'CSV'", "'FEDERATED'", "'INNODB'", "'MEMORY'", + "'MRG_MYISAM'", "'MYISAM'", "'NDB'", "'NDBCLUSTER'", "'PERFORMANCE_SCHEMA'", + "'TOKUDB'", "'REPEATABLE'", "'COMMITTED'", "'UNCOMMITTED'", "'SERIALIZABLE'", + "'GEOMETRYCOLLECTION'", "'GEOMCOLLECTION'", "'GEOMETRY'", "'LINESTRING'", + "'MULTILINESTRING'", "'MULTIPOINT'", "'MULTIPOLYGON'", "'POINT'", "'POLYGON'", + "'ABS'", "'ACOS'", "'ADDDATE'", "'ADDTIME'", "'AES_DECRYPT'", "'AES_ENCRYPT'", + "'AREA'", "'ASBINARY'", "'ASIN'", "'ASTEXT'", "'ASWKB'", "'ASWKT'", "'ASYMMETRIC_DECRYPT'", + "'ASYMMETRIC_DERIVE'", "'ASYMMETRIC_ENCRYPT'", "'ASYMMETRIC_SIGN'", "'ASYMMETRIC_VERIFY'", + "'ATAN'", "'ATAN2'", "'BENCHMARK'", "'BIN'", "'BIT_COUNT'", "'BIT_LENGTH'", + "'BUFFER'", "'CATALOG_NAME'", "'CEIL'", "'CEILING'", "'CENTROID'", "'CHARACTER_LENGTH'", + "'CHARSET'", "'CHAR_LENGTH'", "'COERCIBILITY'", "'COLLATION'", "'COMPRESS'", + "'CONCAT'", "'CONCAT_WS'", "'CONNECTION_ID'", "'CONV'", "'CONVERT_TZ'", + "'COS'", "'COT'", "'CRC32'", "'CREATE_ASYMMETRIC_PRIV_KEY'", "'CREATE_ASYMMETRIC_PUB_KEY'", + "'CREATE_DH_PARAMETERS'", "'CREATE_DIGEST'", "'CROSSES'", "'DATEDIFF'", + "'DATE_FORMAT'", "'DAYNAME'", "'DAYOFMONTH'", "'DAYOFWEEK'", "'DAYOFYEAR'", + "'DECODE'", "'DEGREES'", "'DES_DECRYPT'", "'DES_ENCRYPT'", "'DIMENSION'", + "'DISJOINT'", "'ELT'", "'ENCODE'", "'ENCRYPT'", "'ENDPOINT'", "'ENVELOPE'", + "'EQUALS'", "'EXP'", "'EXPORT_SET'", "'EXTERIORRING'", "'EXTRACTVALUE'", + "'FIELD'", "'FIND_IN_SET'", "'FLOOR'", "'FORMAT'", "'FOUND_ROWS'", "'FROM_BASE64'", + "'FROM_DAYS'", "'FROM_UNIXTIME'", "'GEOMCOLLFROMTEXT'", "'GEOMCOLLFROMWKB'", + "'GEOMETRYCOLLECTIONFROMTEXT'", "'GEOMETRYCOLLECTIONFROMWKB'", "'GEOMETRYFROMTEXT'", + "'GEOMETRYFROMWKB'", "'GEOMETRYN'", "'GEOMETRYTYPE'", "'GEOMFROMTEXT'", + "'GEOMFROMWKB'", "'GET_FORMAT'", "'GET_LOCK'", "'GLENGTH'", "'GREATEST'", + "'GTID_SUBSET'", "'GTID_SUBTRACT'", "'HEX'", "'IFNULL'", "'INET6_ATON'", + "'INET6_NTOA'", "'INET_ATON'", "'INET_NTOA'", "'INSTR'", "'INTERIORRINGN'", + "'INTERSECTS'", "'ISCLOSED'", "'ISEMPTY'", "'ISNULL'", "'ISSIMPLE'", "'IS_FREE_LOCK'", + "'IS_IPV4'", "'IS_IPV4_COMPAT'", "'IS_IPV4_MAPPED'", "'IS_IPV6'", "'IS_USED_LOCK'", + "'LAST_INSERT_ID'", "'LCASE'", "'LEAST'", "'LENGTH'", "'LINEFROMTEXT'", + "'LINEFROMWKB'", "'LINESTRINGFROMTEXT'", "'LINESTRINGFROMWKB'", "'LN'", + "'LOAD_FILE'", "'LOCATE'", "'LOG'", "'LOG10'", "'LOG2'", "'LOWER'", "'LPAD'", + "'LTRIM'", "'MAKEDATE'", "'MAKETIME'", "'MAKE_SET'", "'MASTER_POS_WAIT'", + "'MBRCONTAINS'", "'MBRDISJOINT'", "'MBREQUAL'", "'MBRINTERSECTS'", "'MBROVERLAPS'", + "'MBRTOUCHES'", "'MBRWITHIN'", "'MD5'", "'MLINEFROMTEXT'", "'MLINEFROMWKB'", + "'MONTHNAME'", "'MPOINTFROMTEXT'", "'MPOINTFROMWKB'", "'MPOLYFROMTEXT'", + "'MPOLYFROMWKB'", "'MULTILINESTRINGFROMTEXT'", "'MULTILINESTRINGFROMWKB'", + "'MULTIPOINTFROMTEXT'", "'MULTIPOINTFROMWKB'", "'MULTIPOLYGONFROMTEXT'", + "'MULTIPOLYGONFROMWKB'", "'NAME_CONST'", "'NULLIF'", "'NUMGEOMETRIES'", + "'NUMINTERIORRINGS'", "'NUMPOINTS'", "'OCT'", "'OCTET_LENGTH'", "'ORD'", + "'OVERLAPS'", "'PERIOD_ADD'", "'PERIOD_DIFF'", "'PI'", "'POINTFROMTEXT'", + "'POINTFROMWKB'", "'POINTN'", "'POLYFROMTEXT'", "'POLYFROMWKB'", "'POLYGONFROMTEXT'", + "'POLYGONFROMWKB'", "'POW'", "'POWER'", "'QUOTE'", "'RADIANS'", "'RAND'", + "'RANDOM_BYTES'", "'RELEASE_LOCK'", "'REVERSE'", "'ROUND'", "'ROW_COUNT'", + "'RPAD'", "'RTRIM'", "'SEC_TO_TIME'", "'SESSION_USER'", "'SHA'", "'SHA1'", + "'SHA2'", "'SCHEMA_NAME'", "'SIGN'", "'SIN'", "'SLEEP'", "'SOUNDEX'", "'SQL_THREAD_WAIT_AFTER_GTIDS'", + "'SQRT'", "'SRID'", "'STARTPOINT'", "'STRCMP'", "'STR_TO_DATE'", "'ST_AREA'", + "'ST_ASBINARY'", "'ST_ASTEXT'", "'ST_ASWKB'", "'ST_ASWKT'", "'ST_BUFFER'", + "'ST_CENTROID'", "'ST_CONTAINS'", "'ST_CROSSES'", "'ST_DIFFERENCE'", "'ST_DIMENSION'", + "'ST_DISJOINT'", "'ST_DISTANCE'", "'ST_ENDPOINT'", "'ST_ENVELOPE'", "'ST_EQUALS'", + "'ST_EXTERIORRING'", "'ST_GEOMCOLLFROMTEXT'", "'ST_GEOMCOLLFROMTXT'", "'ST_GEOMCOLLFROMWKB'", + "'ST_GEOMETRYCOLLECTIONFROMTEXT'", "'ST_GEOMETRYCOLLECTIONFROMWKB'", "'ST_GEOMETRYFROMTEXT'", + "'ST_GEOMETRYFROMWKB'", "'ST_GEOMETRYN'", "'ST_GEOMETRYTYPE'", "'ST_GEOMFROMTEXT'", + "'ST_GEOMFROMWKB'", "'ST_INTERIORRINGN'", "'ST_INTERSECTION'", "'ST_INTERSECTS'", + "'ST_ISCLOSED'", "'ST_ISEMPTY'", "'ST_ISSIMPLE'", "'ST_LINEFROMTEXT'", + "'ST_LINEFROMWKB'", "'ST_LINESTRINGFROMTEXT'", "'ST_LINESTRINGFROMWKB'", + "'ST_NUMGEOMETRIES'", "'ST_NUMINTERIORRING'", "'ST_NUMINTERIORRINGS'", + "'ST_NUMPOINTS'", "'ST_OVERLAPS'", "'ST_POINTFROMTEXT'", "'ST_POINTFROMWKB'", + "'ST_POINTN'", "'ST_POLYFROMTEXT'", "'ST_POLYFROMWKB'", "'ST_POLYGONFROMTEXT'", + "'ST_POLYGONFROMWKB'", "'ST_SRID'", "'ST_STARTPOINT'", "'ST_SYMDIFFERENCE'", + "'ST_TOUCHES'", "'ST_UNION'", "'ST_WITHIN'", "'ST_X'", "'ST_Y'", "'SUBDATE'", + "'SUBSTRING_INDEX'", "'SUBTIME'", "'SYSTEM_USER'", "'TAN'", "'TIMEDIFF'", + "'TIMESTAMPADD'", "'TIMESTAMPDIFF'", "'TIME_FORMAT'", "'TIME_TO_SEC'", + "'TOUCHES'", "'TO_BASE64'", "'TO_DAYS'", "'TO_SECONDS'", "'UCASE'", "'UNCOMPRESS'", + "'UNCOMPRESSED_LENGTH'", "'UNHEX'", "'UNIX_TIMESTAMP'", "'UPDATEXML'", + "'UPPER'", "'UUID'", "'UUID_SHORT'", "'VALIDATE_PASSWORD_STRENGTH'", "'VERSION'", + "'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'", "'WEEKDAY'", "'WEEKOFYEAR'", "'WEIGHT_STRING'", + "'WITHIN'", "'YEARWEEK'", "'Y'", "'X'", "':='", "'+='", "'-='", "'*='", + "'/='", "'%='", "'&='", "'^='", "'|='", "'*'", "'/'", "'%'", "'+'", "'--'", + "'-'", "'DIV'", "'MOD'", "'='", "'>'", "'<'", "'!'", "'~'", "'|'", "'&'", + "'^'", "'.'", "'('", "')'", "','", "';'", "'@'", "'0'", "'1'", "'2'", "'''", + "'\"'", "'`'", "':'", +} + +var lexerSymbolicNames = []string{ + "", "SPACE", "SPEC_MYSQL_COMMENT", "COMMENT_INPUT", "LINE_COMMENT", "ADD", + "ALL", "ALTER", "ALWAYS", "ANALYZE", "AND", "AS", "ASC", "BEFORE", "BETWEEN", + "BOTH", "BY", "CALL", "CASCADE", "CASE", "CAST", "CHANGE", "CHARACTER", + "CHECK", "COLLATE", "COLUMN", "CONDITION", "CONSTRAINT", "CONTINUE", "CONVERT", + "CREATE", "CROSS", "CURRENT", "CURRENT_USER", "CURSOR", "DATABASE", "DATABASES", + "DECLARE", "DEFAULT", "DELAYED", "DELETE", "DESC", "DESCRIBE", "DETERMINISTIC", + "DIAGNOSTICS", "DISTINCT", "DISTINCTROW", "DROP", "EACH", "ELSE", "ELSEIF", + "EMPTY", "ENCLOSED", "ESCAPED", "EXISTS", "EXIT", "EXPLAIN", "FALSE", "FETCH", + "FOR", "FORCE", "FOREIGN", "FROM", "FULLTEXT", "GENERATED", "GET", "GRANT", + "GROUP", "HAVING", "HIGH_PRIORITY", "IF", "IGNORE", "IN", "INDEX", "INFILE", + "INNER", "INOUT", "INSERT", "INTERVAL", "INTO", "IS", "ITERATE", "JOIN", + "KEY", "KEYS", "KILL", "LEADING", "LEAVE", "LEFT", "LIKE", "LIMIT", "LINEAR", + "LINES", "LOAD", "LOCK", "LOOP", "LOW_PRIORITY", "MASTER_BIND", "MASTER_SSL_VERIFY_SERVER_CERT", + "MATCH", "MAXVALUE", "MODIFIES", "NATURAL", "NOT", "NO_WRITE_TO_BINLOG", + "NULL_LITERAL", "NULL", "NUMBER", "ON", "OPTIMIZE", "OPTION", "OPTIONALLY", + "OR", "ORDER", "OUT", "OUTER", "OUTFILE", "PARTITION", "PRIMARY", "PROCEDURE", + "PURGE", "RANGE", "READ", "READS", "REFERENCES", "REGEXP", "RELEASE", "RENAME", + "REPEAT", "REPLACE", "REQUIRE", "RESIGNAL", "RESTRICT", "RETURN", "REVOKE", + "RIGHT", "RLIKE", "SCHEMA", "SCHEMAS", "SELECT", "SET", "SEPARATOR", "SHOW", + "SIGNAL", "SPATIAL", "SQL", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", "SQL_BIG_RESULT", + "SQL_CALC_FOUND_ROWS", "SQL_SMALL_RESULT", "SSL", "STACKED", "STARTING", + "STRAIGHT_JOIN", "TABLE", "TERMINATED", "THEN", "TO", "TRAILING", "TRIGGER", + "TRUE", "UNDO", "UNION", "UNIQUE", "UNLOCK", "UNSIGNED", "UPDATE", "USAGE", + "USE", "USING", "VALUES", "WHEN", "WHERE", "WHILE", "WITH", "WRITE", "XOR", + "ZEROFILL", "TINYINT", "SMALLINT", "MEDIUMINT", "MIDDLEINT", "INT", "INT1", + "INT2", "INT3", "INT4", "INT8", "INTEGER", "BIGINT", "REAL", "DOUBLE", + "PRECISION", "FLOAT", "FLOAT4", "FLOAT8", "DECIMAL", "DEC", "NUMERIC", + "DATE", "TIME", "TIMESTAMP", "DATETIME", "YEAR", "CHAR", "VARCHAR", "NVARCHAR", + "NATIONAL", "BINARY", "VARBINARY", "TINYBLOB", "BLOB", "MEDIUMBLOB", "LONG", + "LONGBLOB", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT", "ENUM", "VARYING", + "SERIAL", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", "HOUR_MINUTE", + "HOUR_SECOND", "MINUTE_SECOND", "SECOND_MICROSECOND", "MINUTE_MICROSECOND", + "HOUR_MICROSECOND", "DAY_MICROSECOND", "JSON_ARRAY", "JSON_OBJECT", "JSON_QUOTE", + "JSON_CONTAINS", "JSON_CONTAINS_PATH", "JSON_EXTRACT", "JSON_KEYS", "JSON_OVERLAPS", + "JSON_SEARCH", "JSON_VALUE", "JSON_ARRAY_APPEND", "JSON_ARRAY_INSERT", + "JSON_INSERT", "JSON_MERGE", "JSON_MERGE_PATCH", "JSON_MERGE_PRESERVE", + "JSON_REMOVE", "JSON_REPLACE", "JSON_SET", "JSON_UNQUOTE", "JSON_DEPTH", + "JSON_LENGTH", "JSON_TYPE", "JSON_VALID", "JSON_TABLE", "JSON_SCHEMA_VALID", + "JSON_SCHEMA_VALIDATION_REPORT", "JSON_PRETTY", "JSON_STORAGE_FREE", "JSON_STORAGE_SIZE", + "JSON_ARRAYAGG", "JSON_OBJECTAGG", "AVG", "BIT_AND", "BIT_OR", "BIT_XOR", + "COUNT", "GROUP_CONCAT", "MAX", "MIN", "STD", "STDDEV", "STDDEV_POP", "STDDEV_SAMP", + "SUM", "VAR_POP", "VAR_SAMP", "VARIANCE", "CURRENT_DATE", "CURRENT_TIME", + "CURRENT_TIMESTAMP", "LOCALTIME", "CURDATE", "CURTIME", "DATE_ADD", "DATE_SUB", + "EXTRACT", "LOCALTIMESTAMP", "NOW", "POSITION", "SUBSTR", "SUBSTRING", + "SYSDATE", "TRIM", "UTC_DATE", "UTC_TIME", "UTC_TIMESTAMP", "ACCOUNT", + "ACTION", "AFTER", "AGGREGATE", "ALGORITHM", "ANY", "AT", "AUTHORS", "AUTOCOMMIT", + "AUTOEXTEND_SIZE", "AUTO_INCREMENT", "AVG_ROW_LENGTH", "BEGIN", "BINLOG", + "BIT", "BLOCK", "BOOL", "BOOLEAN", "BTREE", "CACHE", "CASCADED", "CHAIN", + "CHANGED", "CHANNEL", "CHECKSUM", "PAGE_CHECKSUM", "CIPHER", "CLASS_ORIGIN", + "CLIENT", "CLOSE", "COALESCE", "CODE", "COLUMNS", "COLUMN_FORMAT", "COLUMN_NAME", + "COMMENT", "COMMIT", "COMPACT", "COMPLETION", "COMPRESSED", "COMPRESSION", + "CONCURRENT", "CONNECTION", "CONSISTENT", "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", + "CONSTRAINT_NAME", "CONTAINS", "CONTEXT", "CONTRIBUTORS", "COPY", "CPU", + "CURSOR_NAME", "DATA", "DATAFILE", "DEALLOCATE", "DEFAULT_AUTH", "DEFINER", + "DELAY_KEY_WRITE", "DES_KEY_FILE", "DIRECTORY", "DISABLE", "DISCARD", "DISK", + "DO", "DUMPFILE", "DUPLICATE", "DYNAMIC", "ENABLE", "ENCRYPTION", "END", + "ENDS", "ENGINE", "ENGINES", "ERROR", "ERRORS", "ESCAPE", "EVEN", "EVENT", + "EVENTS", "EVERY", "EXCHANGE", "EXCLUSIVE", "EXPIRE", "EXPORT", "EXTENDED", + "EXTENT_SIZE", "FAST", "FAULTS", "FIELDS", "FILE_BLOCK_SIZE", "FILTER", + "FIRST", "FIXED", "FLUSH", "FOLLOWS", "FOUND", "FULL", "FUNCTION", "GENERAL", + "GLOBAL", "GRANTS", "GROUP_REPLICATION", "HANDLER", "HASH", "HELP", "HOST", + "HOSTS", "IDENTIFIED", "IGNORE_SERVER_IDS", "IMPORT", "INDEXES", "INITIAL_SIZE", + "INPLACE", "INSERT_METHOD", "INSTALL", "INSTANCE", "INVISIBLE", "INVOKER", + "IO", "IO_THREAD", "IPC", "ISOLATION", "ISSUER", "JSON", "KEY_BLOCK_SIZE", + "LANGUAGE", "LAST", "LEAVES", "LESS", "LEVEL", "LIST", "LOCAL", "LOGFILE", + "LOGS", "MASTER", "MASTER_AUTO_POSITION", "MASTER_CONNECT_RETRY", "MASTER_DELAY", + "MASTER_HEARTBEAT_PERIOD", "MASTER_HOST", "MASTER_LOG_FILE", "MASTER_LOG_POS", + "MASTER_PASSWORD", "MASTER_PORT", "MASTER_RETRY_COUNT", "MASTER_SSL", "MASTER_SSL_CA", + "MASTER_SSL_CAPATH", "MASTER_SSL_CERT", "MASTER_SSL_CIPHER", "MASTER_SSL_CRL", + "MASTER_SSL_CRLPATH", "MASTER_SSL_KEY", "MASTER_TLS_VERSION", "MASTER_USER", + "MAX_CONNECTIONS_PER_HOUR", "MAX_QUERIES_PER_HOUR", "MAX_ROWS", "MAX_SIZE", + "MAX_UPDATES_PER_HOUR", "MAX_USER_CONNECTIONS", "MEDIUM", "MEMBER", "MERGE", + "MESSAGE_TEXT", "MID", "MIGRATE", "MIN_ROWS", "MODE", "MODIFY", "MUTEX", + "MYSQL", "MYSQL_ERRNO", "NAME", "NAMES", "NCHAR", "NEVER", "NEXT", "NO", + "NODEGROUP", "NONE", "OFFLINE", "OFFSET", "OF", "OJ", "OLD_PASSWORD", "ONE", + "ONLINE", "ONLY", "OPEN", "OPTIMIZER_COSTS", "OPTIONS", "OWNER", "PACK_KEYS", + "PAGE", "PARSER", "PARTIAL", "PARTITIONING", "PARTITIONS", "PASSWORD", + "PHASE", "PLUGIN", "PLUGIN_DIR", "PLUGINS", "PORT", "PRECEDES", "PREPARE", + "PRESERVE", "PREV", "PROCESSLIST", "PROFILE", "PROFILES", "PROXY", "QUERY", + "QUICK", "REBUILD", "RECOVER", "REDO_BUFFER_SIZE", "REDUNDANT", "RELAY", + "RELAY_LOG_FILE", "RELAY_LOG_POS", "RELAYLOG", "REMOVE", "REORGANIZE", + "REPAIR", "REPLICATE_DO_DB", "REPLICATE_DO_TABLE", "REPLICATE_IGNORE_DB", + "REPLICATE_IGNORE_TABLE", "REPLICATE_REWRITE_DB", "REPLICATE_WILD_DO_TABLE", + "REPLICATE_WILD_IGNORE_TABLE", "REPLICATION", "RESET", "RESUME", "RETURNED_SQLSTATE", + "RETURNING", "RETURNS", "ROLE", "ROLLBACK", "ROLLUP", "ROTATE", "ROW", + "ROWS", "ROW_FORMAT", "SAVEPOINT", "SCHEDULE", "SECURITY", "SERVER", "SESSION", + "SHARE", "SHARED", "SIGNED", "SIMPLE", "SLAVE", "SLOW", "SNAPSHOT", "SOCKET", + "SOME", "SONAME", "SOUNDS", "SOURCE", "SQL_AFTER_GTIDS", "SQL_AFTER_MTS_GAPS", + "SQL_BEFORE_GTIDS", "SQL_BUFFER_RESULT", "SQL_CACHE", "SQL_NO_CACHE", "SQL_THREAD", + "START", "STARTS", "STATS_AUTO_RECALC", "STATS_PERSISTENT", "STATS_SAMPLE_PAGES", + "STATUS", "STOP", "STORAGE", "STORED", "STRING", "SUBCLASS_ORIGIN", "SUBJECT", + "SUBPARTITION", "SUBPARTITIONS", "SUSPEND", "SWAPS", "SWITCHES", "TABLE_NAME", + "TABLESPACE", "TEMPORARY", "TEMPTABLE", "THAN", "TRADITIONAL", "TRANSACTION", + "TRANSACTIONAL", "TRIGGERS", "TRUNCATE", "UNDEFINED", "UNDOFILE", "UNDO_BUFFER_SIZE", + "UNINSTALL", "UNKNOWN", "UNTIL", "UPGRADE", "USER", "USE_FRM", "USER_RESOURCES", + "VALIDATION", "VALUE", "VARIABLES", "VIEW", "VIRTUAL", "VISIBLE", "WAIT", + "WARNINGS", "WITHOUT", "WORK", "WRAPPER", "X509", "XA", "XML", "EUR", "USA", + "JIS", "ISO", "INTERNAL", "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", + "WEEK", "SECOND", "MICROSECOND", "TABLES", "ROUTINE", "EXECUTE", "FILE", + "PROCESS", "RELOAD", "SHUTDOWN", "SUPER", "PRIVILEGES", "APPLICATION_PASSWORD_ADMIN", + "AUDIT_ADMIN", "BACKUP_ADMIN", "BINLOG_ADMIN", "BINLOG_ENCRYPTION_ADMIN", + "CLONE_ADMIN", "CONNECTION_ADMIN", "ENCRYPTION_KEY_ADMIN", "FIREWALL_ADMIN", + "FIREWALL_USER", "FLUSH_OPTIMIZER_COSTS", "FLUSH_STATUS", "FLUSH_TABLES", + "FLUSH_USER_RESOURCES", "GROUP_REPLICATION_ADMIN", "INNODB_REDO_LOG_ARCHIVE", + "INNODB_REDO_LOG_ENABLE", "NDB_STORED_USER", "PERSIST_RO_VARIABLES_ADMIN", + "REPLICATION_APPLIER", "REPLICATION_SLAVE_ADMIN", "RESOURCE_GROUP_ADMIN", + "RESOURCE_GROUP_USER", "ROLE_ADMIN", "SERVICE_CONNECTION_ADMIN", "SESSION_VARIABLES_ADMIN", + "SET_USER_ID", "SHOW_ROUTINE", "SYSTEM_VARIABLES_ADMIN", "TABLE_ENCRYPTION_ADMIN", + "VERSION_TOKEN_ADMIN", "XA_RECOVER_ADMIN", "ARMSCII8", "ASCII", "BIG5", + "CP1250", "CP1251", "CP1256", "CP1257", "CP850", "CP852", "CP866", "CP932", + "DEC8", "EUCJPMS", "EUCKR", "GB2312", "GBK", "GEOSTD8", "GREEK", "HEBREW", + "HP8", "KEYBCS2", "KOI8R", "KOI8U", "LATIN1", "LATIN2", "LATIN5", "LATIN7", + "MACCE", "MACROMAN", "SJIS", "SWE7", "TIS620", "UCS2", "UJIS", "UTF16", + "UTF16LE", "UTF32", "UTF8", "UTF8MB3", "UTF8MB4", "ARCHIVE", "BLACKHOLE", + "CSV", "FEDERATED", "INNODB", "MEMORY", "MRG_MYISAM", "MYISAM", "NDB", + "NDBCLUSTER", "PERFORMANCE_SCHEMA", "TOKUDB", "REPEATABLE", "COMMITTED", + "UNCOMMITTED", "SERIALIZABLE", "GEOMETRYCOLLECTION", "GEOMCOLLECTION", + "GEOMETRY", "LINESTRING", "MULTILINESTRING", "MULTIPOINT", "MULTIPOLYGON", + "POINT", "POLYGON", "ABS", "ACOS", "ADDDATE", "ADDTIME", "AES_DECRYPT", + "AES_ENCRYPT", "AREA", "ASBINARY", "ASIN", "ASTEXT", "ASWKB", "ASWKT", + "ASYMMETRIC_DECRYPT", "ASYMMETRIC_DERIVE", "ASYMMETRIC_ENCRYPT", "ASYMMETRIC_SIGN", + "ASYMMETRIC_VERIFY", "ATAN", "ATAN2", "BENCHMARK", "BIN", "BIT_COUNT", + "BIT_LENGTH", "BUFFER", "CATALOG_NAME", "CEIL", "CEILING", "CENTROID", + "CHARACTER_LENGTH", "CHARSET", "CHAR_LENGTH", "COERCIBILITY", "COLLATION", + "COMPRESS", "CONCAT", "CONCAT_WS", "CONNECTION_ID", "CONV", "CONVERT_TZ", + "COS", "COT", "CRC32", "CREATE_ASYMMETRIC_PRIV_KEY", "CREATE_ASYMMETRIC_PUB_KEY", + "CREATE_DH_PARAMETERS", "CREATE_DIGEST", "CROSSES", "DATEDIFF", "DATE_FORMAT", + "DAYNAME", "DAYOFMONTH", "DAYOFWEEK", "DAYOFYEAR", "DECODE", "DEGREES", + "DES_DECRYPT", "DES_ENCRYPT", "DIMENSION", "DISJOINT", "ELT", "ENCODE", + "ENCRYPT", "ENDPOINT", "ENVELOPE", "EQUALS", "EXP", "EXPORT_SET", "EXTERIORRING", + "EXTRACTVALUE", "FIELD", "FIND_IN_SET", "FLOOR", "FORMAT", "FOUND_ROWS", + "FROM_BASE64", "FROM_DAYS", "FROM_UNIXTIME", "GEOMCOLLFROMTEXT", "GEOMCOLLFROMWKB", + "GEOMETRYCOLLECTIONFROMTEXT", "GEOMETRYCOLLECTIONFROMWKB", "GEOMETRYFROMTEXT", + "GEOMETRYFROMWKB", "GEOMETRYN", "GEOMETRYTYPE", "GEOMFROMTEXT", "GEOMFROMWKB", + "GET_FORMAT", "GET_LOCK", "GLENGTH", "GREATEST", "GTID_SUBSET", "GTID_SUBTRACT", + "HEX", "IFNULL", "INET6_ATON", "INET6_NTOA", "INET_ATON", "INET_NTOA", + "INSTR", "INTERIORRINGN", "INTERSECTS", "ISCLOSED", "ISEMPTY", "ISNULL", + "ISSIMPLE", "IS_FREE_LOCK", "IS_IPV4", "IS_IPV4_COMPAT", "IS_IPV4_MAPPED", + "IS_IPV6", "IS_USED_LOCK", "LAST_INSERT_ID", "LCASE", "LEAST", "LENGTH", + "LINEFROMTEXT", "LINEFROMWKB", "LINESTRINGFROMTEXT", "LINESTRINGFROMWKB", + "LN", "LOAD_FILE", "LOCATE", "LOG", "LOG10", "LOG2", "LOWER", "LPAD", "LTRIM", + "MAKEDATE", "MAKETIME", "MAKE_SET", "MASTER_POS_WAIT", "MBRCONTAINS", "MBRDISJOINT", + "MBREQUAL", "MBRINTERSECTS", "MBROVERLAPS", "MBRTOUCHES", "MBRWITHIN", + "MD5", "MLINEFROMTEXT", "MLINEFROMWKB", "MONTHNAME", "MPOINTFROMTEXT", + "MPOINTFROMWKB", "MPOLYFROMTEXT", "MPOLYFROMWKB", "MULTILINESTRINGFROMTEXT", + "MULTILINESTRINGFROMWKB", "MULTIPOINTFROMTEXT", "MULTIPOINTFROMWKB", "MULTIPOLYGONFROMTEXT", + "MULTIPOLYGONFROMWKB", "NAME_CONST", "NULLIF", "NUMGEOMETRIES", "NUMINTERIORRINGS", + "NUMPOINTS", "OCT", "OCTET_LENGTH", "ORD", "OVERLAPS", "PERIOD_ADD", "PERIOD_DIFF", + "PI", "POINTFROMTEXT", "POINTFROMWKB", "POINTN", "POLYFROMTEXT", "POLYFROMWKB", + "POLYGONFROMTEXT", "POLYGONFROMWKB", "POW", "POWER", "QUOTE", "RADIANS", + "RAND", "RANDOM_BYTES", "RELEASE_LOCK", "REVERSE", "ROUND", "ROW_COUNT", + "RPAD", "RTRIM", "SEC_TO_TIME", "SESSION_USER", "SHA", "SHA1", "SHA2", + "SCHEMA_NAME", "SIGN", "SIN", "SLEEP", "SOUNDEX", "SQL_THREAD_WAIT_AFTER_GTIDS", + "SQRT", "SRID", "STARTPOINT", "STRCMP", "STR_TO_DATE", "ST_AREA", "ST_ASBINARY", + "ST_ASTEXT", "ST_ASWKB", "ST_ASWKT", "ST_BUFFER", "ST_CENTROID", "ST_CONTAINS", + "ST_CROSSES", "ST_DIFFERENCE", "ST_DIMENSION", "ST_DISJOINT", "ST_DISTANCE", + "ST_ENDPOINT", "ST_ENVELOPE", "ST_EQUALS", "ST_EXTERIORRING", "ST_GEOMCOLLFROMTEXT", + "ST_GEOMCOLLFROMTXT", "ST_GEOMCOLLFROMWKB", "ST_GEOMETRYCOLLECTIONFROMTEXT", + "ST_GEOMETRYCOLLECTIONFROMWKB", "ST_GEOMETRYFROMTEXT", "ST_GEOMETRYFROMWKB", + "ST_GEOMETRYN", "ST_GEOMETRYTYPE", "ST_GEOMFROMTEXT", "ST_GEOMFROMWKB", + "ST_INTERIORRINGN", "ST_INTERSECTION", "ST_INTERSECTS", "ST_ISCLOSED", + "ST_ISEMPTY", "ST_ISSIMPLE", "ST_LINEFROMTEXT", "ST_LINEFROMWKB", "ST_LINESTRINGFROMTEXT", + "ST_LINESTRINGFROMWKB", "ST_NUMGEOMETRIES", "ST_NUMINTERIORRING", "ST_NUMINTERIORRINGS", + "ST_NUMPOINTS", "ST_OVERLAPS", "ST_POINTFROMTEXT", "ST_POINTFROMWKB", "ST_POINTN", + "ST_POLYFROMTEXT", "ST_POLYFROMWKB", "ST_POLYGONFROMTEXT", "ST_POLYGONFROMWKB", + "ST_SRID", "ST_STARTPOINT", "ST_SYMDIFFERENCE", "ST_TOUCHES", "ST_UNION", + "ST_WITHIN", "ST_X", "ST_Y", "SUBDATE", "SUBSTRING_INDEX", "SUBTIME", "SYSTEM_USER", + "TAN", "TIMEDIFF", "TIMESTAMPADD", "TIMESTAMPDIFF", "TIME_FORMAT", "TIME_TO_SEC", + "TOUCHES", "TO_BASE64", "TO_DAYS", "TO_SECONDS", "UCASE", "UNCOMPRESS", + "UNCOMPRESSED_LENGTH", "UNHEX", "UNIX_TIMESTAMP", "UPDATEXML", "UPPER", + "UUID", "UUID_SHORT", "VALIDATE_PASSWORD_STRENGTH", "VERSION", "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", + "WEEKDAY", "WEEKOFYEAR", "WEIGHT_STRING", "WITHIN", "YEARWEEK", "Y_FUNCTION", + "X_FUNCTION", "VAR_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN", "MULT_ASSIGN", + "DIV_ASSIGN", "MOD_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "STAR", + "DIVIDE", "MODULE", "PLUS", "MINUSMINUS", "MINUS", "DIV", "MOD", "EQUAL_SYMBOL", + "GREATER_SYMBOL", "LESS_SYMBOL", "EXCLAMATION_SYMBOL", "BIT_NOT_OP", "BIT_OR_OP", + "BIT_AND_OP", "BIT_XOR_OP", "DOT", "LR_BRACKET", "RR_BRACKET", "COMMA", + "SEMI", "AT_SIGN", "ZERO_DECIMAL", "ONE_DECIMAL", "TWO_DECIMAL", "SINGLE_QUOTE_SYMB", + "DOUBLE_QUOTE_SYMB", "REVERSE_QUOTE_SYMB", "COLON_SYMB", "CHARSET_REVERSE_QOUTE_STRING", + "FILESIZE_LITERAL", "START_NATIONAL_STRING_LITERAL", "STRING_LITERAL", + "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "REAL_LITERAL", "NULL_SPEC_LITERAL", + "BIT_STRING", "STRING_CHARSET_NAME", "DOT_ID", "ID", "REVERSE_QUOTE_ID", + "STRING_USER_NAME", "IP_ADDRESS", "LOCAL_ID", "GLOBAL_ID", "ERROR_RECONGNIGION", +} + +var lexerRuleNames = []string{ + "SPACE", "SPEC_MYSQL_COMMENT", "COMMENT_INPUT", "LINE_COMMENT", "ADD", + "ALL", "ALTER", "ALWAYS", "ANALYZE", "AND", "AS", "ASC", "BEFORE", "BETWEEN", + "BOTH", "BY", "CALL", "CASCADE", "CASE", "CAST", "CHANGE", "CHARACTER", + "CHECK", "COLLATE", "COLUMN", "CONDITION", "CONSTRAINT", "CONTINUE", "CONVERT", + "CREATE", "CROSS", "CURRENT", "CURRENT_USER", "CURSOR", "DATABASE", "DATABASES", + "DECLARE", "DEFAULT", "DELAYED", "DELETE", "DESC", "DESCRIBE", "DETERMINISTIC", + "DIAGNOSTICS", "DISTINCT", "DISTINCTROW", "DROP", "EACH", "ELSE", "ELSEIF", + "EMPTY", "ENCLOSED", "ESCAPED", "EXISTS", "EXIT", "EXPLAIN", "FALSE", "FETCH", + "FOR", "FORCE", "FOREIGN", "FROM", "FULLTEXT", "GENERATED", "GET", "GRANT", + "GROUP", "HAVING", "HIGH_PRIORITY", "IF", "IGNORE", "IN", "INDEX", "INFILE", + "INNER", "INOUT", "INSERT", "INTERVAL", "INTO", "IS", "ITERATE", "JOIN", + "KEY", "KEYS", "KILL", "LEADING", "LEAVE", "LEFT", "LIKE", "LIMIT", "LINEAR", + "LINES", "LOAD", "LOCK", "LOOP", "LOW_PRIORITY", "MASTER_BIND", "MASTER_SSL_VERIFY_SERVER_CERT", + "MATCH", "MAXVALUE", "MODIFIES", "NATURAL", "NOT", "NO_WRITE_TO_BINLOG", + "NULL_LITERAL", "NULL", "NUMBER", "ON", "OPTIMIZE", "OPTION", "OPTIONALLY", + "OR", "ORDER", "OUT", "OUTER", "OUTFILE", "PARTITION", "PRIMARY", "PROCEDURE", + "PURGE", "RANGE", "READ", "READS", "REFERENCES", "REGEXP", "RELEASE", "RENAME", + "REPEAT", "REPLACE", "REQUIRE", "RESIGNAL", "RESTRICT", "RETURN", "REVOKE", + "RIGHT", "RLIKE", "SCHEMA", "SCHEMAS", "SELECT", "SET", "SEPARATOR", "SHOW", + "SIGNAL", "SPATIAL", "SQL", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", "SQL_BIG_RESULT", + "SQL_CALC_FOUND_ROWS", "SQL_SMALL_RESULT", "SSL", "STACKED", "STARTING", + "STRAIGHT_JOIN", "TABLE", "TERMINATED", "THEN", "TO", "TRAILING", "TRIGGER", + "TRUE", "UNDO", "UNION", "UNIQUE", "UNLOCK", "UNSIGNED", "UPDATE", "USAGE", + "USE", "USING", "VALUES", "WHEN", "WHERE", "WHILE", "WITH", "WRITE", "XOR", + "ZEROFILL", "TINYINT", "SMALLINT", "MEDIUMINT", "MIDDLEINT", "INT", "INT1", + "INT2", "INT3", "INT4", "INT8", "INTEGER", "BIGINT", "REAL", "DOUBLE", + "PRECISION", "FLOAT", "FLOAT4", "FLOAT8", "DECIMAL", "DEC", "NUMERIC", + "DATE", "TIME", "TIMESTAMP", "DATETIME", "YEAR", "CHAR", "VARCHAR", "NVARCHAR", + "NATIONAL", "BINARY", "VARBINARY", "TINYBLOB", "BLOB", "MEDIUMBLOB", "LONG", + "LONGBLOB", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT", "ENUM", "VARYING", + "SERIAL", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", "HOUR_MINUTE", + "HOUR_SECOND", "MINUTE_SECOND", "SECOND_MICROSECOND", "MINUTE_MICROSECOND", + "HOUR_MICROSECOND", "DAY_MICROSECOND", "JSON_ARRAY", "JSON_OBJECT", "JSON_QUOTE", + "JSON_CONTAINS", "JSON_CONTAINS_PATH", "JSON_EXTRACT", "JSON_KEYS", "JSON_OVERLAPS", + "JSON_SEARCH", "JSON_VALUE", "JSON_ARRAY_APPEND", "JSON_ARRAY_INSERT", + "JSON_INSERT", "JSON_MERGE", "JSON_MERGE_PATCH", "JSON_MERGE_PRESERVE", + "JSON_REMOVE", "JSON_REPLACE", "JSON_SET", "JSON_UNQUOTE", "JSON_DEPTH", + "JSON_LENGTH", "JSON_TYPE", "JSON_VALID", "JSON_TABLE", "JSON_SCHEMA_VALID", + "JSON_SCHEMA_VALIDATION_REPORT", "JSON_PRETTY", "JSON_STORAGE_FREE", "JSON_STORAGE_SIZE", + "JSON_ARRAYAGG", "JSON_OBJECTAGG", "AVG", "BIT_AND", "BIT_OR", "BIT_XOR", + "COUNT", "GROUP_CONCAT", "MAX", "MIN", "STD", "STDDEV", "STDDEV_POP", "STDDEV_SAMP", + "SUM", "VAR_POP", "VAR_SAMP", "VARIANCE", "CURRENT_DATE", "CURRENT_TIME", + "CURRENT_TIMESTAMP", "LOCALTIME", "CURDATE", "CURTIME", "DATE_ADD", "DATE_SUB", + "EXTRACT", "LOCALTIMESTAMP", "NOW", "POSITION", "SUBSTR", "SUBSTRING", + "SYSDATE", "TRIM", "UTC_DATE", "UTC_TIME", "UTC_TIMESTAMP", "ACCOUNT", + "ACTION", "AFTER", "AGGREGATE", "ALGORITHM", "ANY", "AT", "AUTHORS", "AUTOCOMMIT", + "AUTOEXTEND_SIZE", "AUTO_INCREMENT", "AVG_ROW_LENGTH", "BEGIN", "BINLOG", + "BIT", "BLOCK", "BOOL", "BOOLEAN", "BTREE", "CACHE", "CASCADED", "CHAIN", + "CHANGED", "CHANNEL", "CHECKSUM", "PAGE_CHECKSUM", "CIPHER", "CLASS_ORIGIN", + "CLIENT", "CLOSE", "COALESCE", "CODE", "COLUMNS", "COLUMN_FORMAT", "COLUMN_NAME", + "COMMENT", "COMMIT", "COMPACT", "COMPLETION", "COMPRESSED", "COMPRESSION", + "CONCURRENT", "CONNECTION", "CONSISTENT", "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", + "CONSTRAINT_NAME", "CONTAINS", "CONTEXT", "CONTRIBUTORS", "COPY", "CPU", + "CURSOR_NAME", "DATA", "DATAFILE", "DEALLOCATE", "DEFAULT_AUTH", "DEFINER", + "DELAY_KEY_WRITE", "DES_KEY_FILE", "DIRECTORY", "DISABLE", "DISCARD", "DISK", + "DO", "DUMPFILE", "DUPLICATE", "DYNAMIC", "ENABLE", "ENCRYPTION", "END", + "ENDS", "ENGINE", "ENGINES", "ERROR", "ERRORS", "ESCAPE", "EVEN", "EVENT", + "EVENTS", "EVERY", "EXCHANGE", "EXCLUSIVE", "EXPIRE", "EXPORT", "EXTENDED", + "EXTENT_SIZE", "FAST", "FAULTS", "FIELDS", "FILE_BLOCK_SIZE", "FILTER", + "FIRST", "FIXED", "FLUSH", "FOLLOWS", "FOUND", "FULL", "FUNCTION", "GENERAL", + "GLOBAL", "GRANTS", "GROUP_REPLICATION", "HANDLER", "HASH", "HELP", "HOST", + "HOSTS", "IDENTIFIED", "IGNORE_SERVER_IDS", "IMPORT", "INDEXES", "INITIAL_SIZE", + "INPLACE", "INSERT_METHOD", "INSTALL", "INSTANCE", "INVISIBLE", "INVOKER", + "IO", "IO_THREAD", "IPC", "ISOLATION", "ISSUER", "JSON", "KEY_BLOCK_SIZE", + "LANGUAGE", "LAST", "LEAVES", "LESS", "LEVEL", "LIST", "LOCAL", "LOGFILE", + "LOGS", "MASTER", "MASTER_AUTO_POSITION", "MASTER_CONNECT_RETRY", "MASTER_DELAY", + "MASTER_HEARTBEAT_PERIOD", "MASTER_HOST", "MASTER_LOG_FILE", "MASTER_LOG_POS", + "MASTER_PASSWORD", "MASTER_PORT", "MASTER_RETRY_COUNT", "MASTER_SSL", "MASTER_SSL_CA", + "MASTER_SSL_CAPATH", "MASTER_SSL_CERT", "MASTER_SSL_CIPHER", "MASTER_SSL_CRL", + "MASTER_SSL_CRLPATH", "MASTER_SSL_KEY", "MASTER_TLS_VERSION", "MASTER_USER", + "MAX_CONNECTIONS_PER_HOUR", "MAX_QUERIES_PER_HOUR", "MAX_ROWS", "MAX_SIZE", + "MAX_UPDATES_PER_HOUR", "MAX_USER_CONNECTIONS", "MEDIUM", "MEMBER", "MERGE", + "MESSAGE_TEXT", "MID", "MIGRATE", "MIN_ROWS", "MODE", "MODIFY", "MUTEX", + "MYSQL", "MYSQL_ERRNO", "NAME", "NAMES", "NCHAR", "NEVER", "NEXT", "NO", + "NODEGROUP", "NONE", "OFFLINE", "OFFSET", "OF", "OJ", "OLD_PASSWORD", "ONE", + "ONLINE", "ONLY", "OPEN", "OPTIMIZER_COSTS", "OPTIONS", "OWNER", "PACK_KEYS", + "PAGE", "PARSER", "PARTIAL", "PARTITIONING", "PARTITIONS", "PASSWORD", + "PHASE", "PLUGIN", "PLUGIN_DIR", "PLUGINS", "PORT", "PRECEDES", "PREPARE", + "PRESERVE", "PREV", "PROCESSLIST", "PROFILE", "PROFILES", "PROXY", "QUERY", + "QUICK", "REBUILD", "RECOVER", "REDO_BUFFER_SIZE", "REDUNDANT", "RELAY", + "RELAY_LOG_FILE", "RELAY_LOG_POS", "RELAYLOG", "REMOVE", "REORGANIZE", + "REPAIR", "REPLICATE_DO_DB", "REPLICATE_DO_TABLE", "REPLICATE_IGNORE_DB", + "REPLICATE_IGNORE_TABLE", "REPLICATE_REWRITE_DB", "REPLICATE_WILD_DO_TABLE", + "REPLICATE_WILD_IGNORE_TABLE", "REPLICATION", "RESET", "RESUME", "RETURNED_SQLSTATE", + "RETURNING", "RETURNS", "ROLE", "ROLLBACK", "ROLLUP", "ROTATE", "ROW", + "ROWS", "ROW_FORMAT", "SAVEPOINT", "SCHEDULE", "SECURITY", "SERVER", "SESSION", + "SHARE", "SHARED", "SIGNED", "SIMPLE", "SLAVE", "SLOW", "SNAPSHOT", "SOCKET", + "SOME", "SONAME", "SOUNDS", "SOURCE", "SQL_AFTER_GTIDS", "SQL_AFTER_MTS_GAPS", + "SQL_BEFORE_GTIDS", "SQL_BUFFER_RESULT", "SQL_CACHE", "SQL_NO_CACHE", "SQL_THREAD", + "START", "STARTS", "STATS_AUTO_RECALC", "STATS_PERSISTENT", "STATS_SAMPLE_PAGES", + "STATUS", "STOP", "STORAGE", "STORED", "STRING", "SUBCLASS_ORIGIN", "SUBJECT", + "SUBPARTITION", "SUBPARTITIONS", "SUSPEND", "SWAPS", "SWITCHES", "TABLE_NAME", + "TABLESPACE", "TEMPORARY", "TEMPTABLE", "THAN", "TRADITIONAL", "TRANSACTION", + "TRANSACTIONAL", "TRIGGERS", "TRUNCATE", "UNDEFINED", "UNDOFILE", "UNDO_BUFFER_SIZE", + "UNINSTALL", "UNKNOWN", "UNTIL", "UPGRADE", "USER", "USE_FRM", "USER_RESOURCES", + "VALIDATION", "VALUE", "VARIABLES", "VIEW", "VIRTUAL", "VISIBLE", "WAIT", + "WARNINGS", "WITHOUT", "WORK", "WRAPPER", "X509", "XA", "XML", "EUR", "USA", + "JIS", "ISO", "INTERNAL", "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", + "WEEK", "SECOND", "MICROSECOND", "TABLES", "ROUTINE", "EXECUTE", "FILE", + "PROCESS", "RELOAD", "SHUTDOWN", "SUPER", "PRIVILEGES", "APPLICATION_PASSWORD_ADMIN", + "AUDIT_ADMIN", "BACKUP_ADMIN", "BINLOG_ADMIN", "BINLOG_ENCRYPTION_ADMIN", + "CLONE_ADMIN", "CONNECTION_ADMIN", "ENCRYPTION_KEY_ADMIN", "FIREWALL_ADMIN", + "FIREWALL_USER", "FLUSH_OPTIMIZER_COSTS", "FLUSH_STATUS", "FLUSH_TABLES", + "FLUSH_USER_RESOURCES", "GROUP_REPLICATION_ADMIN", "INNODB_REDO_LOG_ARCHIVE", + "INNODB_REDO_LOG_ENABLE", "NDB_STORED_USER", "PERSIST_RO_VARIABLES_ADMIN", + "REPLICATION_APPLIER", "REPLICATION_SLAVE_ADMIN", "RESOURCE_GROUP_ADMIN", + "RESOURCE_GROUP_USER", "ROLE_ADMIN", "SERVICE_CONNECTION_ADMIN", "SESSION_VARIABLES_ADMIN", + "SET_USER_ID", "SHOW_ROUTINE", "SYSTEM_VARIABLES_ADMIN", "TABLE_ENCRYPTION_ADMIN", + "VERSION_TOKEN_ADMIN", "XA_RECOVER_ADMIN", "ARMSCII8", "ASCII", "BIG5", + "CP1250", "CP1251", "CP1256", "CP1257", "CP850", "CP852", "CP866", "CP932", + "DEC8", "EUCJPMS", "EUCKR", "GB2312", "GBK", "GEOSTD8", "GREEK", "HEBREW", + "HP8", "KEYBCS2", "KOI8R", "KOI8U", "LATIN1", "LATIN2", "LATIN5", "LATIN7", + "MACCE", "MACROMAN", "SJIS", "SWE7", "TIS620", "UCS2", "UJIS", "UTF16", + "UTF16LE", "UTF32", "UTF8", "UTF8MB3", "UTF8MB4", "ARCHIVE", "BLACKHOLE", + "CSV", "FEDERATED", "INNODB", "MEMORY", "MRG_MYISAM", "MYISAM", "NDB", + "NDBCLUSTER", "PERFORMANCE_SCHEMA", "TOKUDB", "REPEATABLE", "COMMITTED", + "UNCOMMITTED", "SERIALIZABLE", "GEOMETRYCOLLECTION", "GEOMCOLLECTION", + "GEOMETRY", "LINESTRING", "MULTILINESTRING", "MULTIPOINT", "MULTIPOLYGON", + "POINT", "POLYGON", "ABS", "ACOS", "ADDDATE", "ADDTIME", "AES_DECRYPT", + "AES_ENCRYPT", "AREA", "ASBINARY", "ASIN", "ASTEXT", "ASWKB", "ASWKT", + "ASYMMETRIC_DECRYPT", "ASYMMETRIC_DERIVE", "ASYMMETRIC_ENCRYPT", "ASYMMETRIC_SIGN", + "ASYMMETRIC_VERIFY", "ATAN", "ATAN2", "BENCHMARK", "BIN", "BIT_COUNT", + "BIT_LENGTH", "BUFFER", "CATALOG_NAME", "CEIL", "CEILING", "CENTROID", + "CHARACTER_LENGTH", "CHARSET", "CHAR_LENGTH", "COERCIBILITY", "COLLATION", + "COMPRESS", "CONCAT", "CONCAT_WS", "CONNECTION_ID", "CONV", "CONVERT_TZ", + "COS", "COT", "CRC32", "CREATE_ASYMMETRIC_PRIV_KEY", "CREATE_ASYMMETRIC_PUB_KEY", + "CREATE_DH_PARAMETERS", "CREATE_DIGEST", "CROSSES", "DATEDIFF", "DATE_FORMAT", + "DAYNAME", "DAYOFMONTH", "DAYOFWEEK", "DAYOFYEAR", "DECODE", "DEGREES", + "DES_DECRYPT", "DES_ENCRYPT", "DIMENSION", "DISJOINT", "ELT", "ENCODE", + "ENCRYPT", "ENDPOINT", "ENVELOPE", "EQUALS", "EXP", "EXPORT_SET", "EXTERIORRING", + "EXTRACTVALUE", "FIELD", "FIND_IN_SET", "FLOOR", "FORMAT", "FOUND_ROWS", + "FROM_BASE64", "FROM_DAYS", "FROM_UNIXTIME", "GEOMCOLLFROMTEXT", "GEOMCOLLFROMWKB", + "GEOMETRYCOLLECTIONFROMTEXT", "GEOMETRYCOLLECTIONFROMWKB", "GEOMETRYFROMTEXT", + "GEOMETRYFROMWKB", "GEOMETRYN", "GEOMETRYTYPE", "GEOMFROMTEXT", "GEOMFROMWKB", + "GET_FORMAT", "GET_LOCK", "GLENGTH", "GREATEST", "GTID_SUBSET", "GTID_SUBTRACT", + "HEX", "IFNULL", "INET6_ATON", "INET6_NTOA", "INET_ATON", "INET_NTOA", + "INSTR", "INTERIORRINGN", "INTERSECTS", "ISCLOSED", "ISEMPTY", "ISNULL", + "ISSIMPLE", "IS_FREE_LOCK", "IS_IPV4", "IS_IPV4_COMPAT", "IS_IPV4_MAPPED", + "IS_IPV6", "IS_USED_LOCK", "LAST_INSERT_ID", "LCASE", "LEAST", "LENGTH", + "LINEFROMTEXT", "LINEFROMWKB", "LINESTRINGFROMTEXT", "LINESTRINGFROMWKB", + "LN", "LOAD_FILE", "LOCATE", "LOG", "LOG10", "LOG2", "LOWER", "LPAD", "LTRIM", + "MAKEDATE", "MAKETIME", "MAKE_SET", "MASTER_POS_WAIT", "MBRCONTAINS", "MBRDISJOINT", + "MBREQUAL", "MBRINTERSECTS", "MBROVERLAPS", "MBRTOUCHES", "MBRWITHIN", + "MD5", "MLINEFROMTEXT", "MLINEFROMWKB", "MONTHNAME", "MPOINTFROMTEXT", + "MPOINTFROMWKB", "MPOLYFROMTEXT", "MPOLYFROMWKB", "MULTILINESTRINGFROMTEXT", + "MULTILINESTRINGFROMWKB", "MULTIPOINTFROMTEXT", "MULTIPOINTFROMWKB", "MULTIPOLYGONFROMTEXT", + "MULTIPOLYGONFROMWKB", "NAME_CONST", "NULLIF", "NUMGEOMETRIES", "NUMINTERIORRINGS", + "NUMPOINTS", "OCT", "OCTET_LENGTH", "ORD", "OVERLAPS", "PERIOD_ADD", "PERIOD_DIFF", + "PI", "POINTFROMTEXT", "POINTFROMWKB", "POINTN", "POLYFROMTEXT", "POLYFROMWKB", + "POLYGONFROMTEXT", "POLYGONFROMWKB", "POW", "POWER", "QUOTE", "RADIANS", + "RAND", "RANDOM_BYTES", "RELEASE_LOCK", "REVERSE", "ROUND", "ROW_COUNT", + "RPAD", "RTRIM", "SEC_TO_TIME", "SESSION_USER", "SHA", "SHA1", "SHA2", + "SCHEMA_NAME", "SIGN", "SIN", "SLEEP", "SOUNDEX", "SQL_THREAD_WAIT_AFTER_GTIDS", + "SQRT", "SRID", "STARTPOINT", "STRCMP", "STR_TO_DATE", "ST_AREA", "ST_ASBINARY", + "ST_ASTEXT", "ST_ASWKB", "ST_ASWKT", "ST_BUFFER", "ST_CENTROID", "ST_CONTAINS", + "ST_CROSSES", "ST_DIFFERENCE", "ST_DIMENSION", "ST_DISJOINT", "ST_DISTANCE", + "ST_ENDPOINT", "ST_ENVELOPE", "ST_EQUALS", "ST_EXTERIORRING", "ST_GEOMCOLLFROMTEXT", + "ST_GEOMCOLLFROMTXT", "ST_GEOMCOLLFROMWKB", "ST_GEOMETRYCOLLECTIONFROMTEXT", + "ST_GEOMETRYCOLLECTIONFROMWKB", "ST_GEOMETRYFROMTEXT", "ST_GEOMETRYFROMWKB", + "ST_GEOMETRYN", "ST_GEOMETRYTYPE", "ST_GEOMFROMTEXT", "ST_GEOMFROMWKB", + "ST_INTERIORRINGN", "ST_INTERSECTION", "ST_INTERSECTS", "ST_ISCLOSED", + "ST_ISEMPTY", "ST_ISSIMPLE", "ST_LINEFROMTEXT", "ST_LINEFROMWKB", "ST_LINESTRINGFROMTEXT", + "ST_LINESTRINGFROMWKB", "ST_NUMGEOMETRIES", "ST_NUMINTERIORRING", "ST_NUMINTERIORRINGS", + "ST_NUMPOINTS", "ST_OVERLAPS", "ST_POINTFROMTEXT", "ST_POINTFROMWKB", "ST_POINTN", + "ST_POLYFROMTEXT", "ST_POLYFROMWKB", "ST_POLYGONFROMTEXT", "ST_POLYGONFROMWKB", + "ST_SRID", "ST_STARTPOINT", "ST_SYMDIFFERENCE", "ST_TOUCHES", "ST_UNION", + "ST_WITHIN", "ST_X", "ST_Y", "SUBDATE", "SUBSTRING_INDEX", "SUBTIME", "SYSTEM_USER", + "TAN", "TIMEDIFF", "TIMESTAMPADD", "TIMESTAMPDIFF", "TIME_FORMAT", "TIME_TO_SEC", + "TOUCHES", "TO_BASE64", "TO_DAYS", "TO_SECONDS", "UCASE", "UNCOMPRESS", + "UNCOMPRESSED_LENGTH", "UNHEX", "UNIX_TIMESTAMP", "UPDATEXML", "UPPER", + "UUID", "UUID_SHORT", "VALIDATE_PASSWORD_STRENGTH", "VERSION", "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", + "WEEKDAY", "WEEKOFYEAR", "WEIGHT_STRING", "WITHIN", "YEARWEEK", "Y_FUNCTION", + "X_FUNCTION", "VAR_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN", "MULT_ASSIGN", + "DIV_ASSIGN", "MOD_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "STAR", + "DIVIDE", "MODULE", "PLUS", "MINUSMINUS", "MINUS", "DIV", "MOD", "EQUAL_SYMBOL", + "GREATER_SYMBOL", "LESS_SYMBOL", "EXCLAMATION_SYMBOL", "BIT_NOT_OP", "BIT_OR_OP", + "BIT_AND_OP", "BIT_XOR_OP", "DOT", "LR_BRACKET", "RR_BRACKET", "COMMA", + "SEMI", "AT_SIGN", "ZERO_DECIMAL", "ONE_DECIMAL", "TWO_DECIMAL", "SINGLE_QUOTE_SYMB", + "DOUBLE_QUOTE_SYMB", "REVERSE_QUOTE_SYMB", "COLON_SYMB", "QUOTE_SYMB", + "CHARSET_REVERSE_QOUTE_STRING", "FILESIZE_LITERAL", "START_NATIONAL_STRING_LITERAL", + "STRING_LITERAL", "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "REAL_LITERAL", + "NULL_SPEC_LITERAL", "BIT_STRING", "STRING_CHARSET_NAME", "DOT_ID", "ID", + "REVERSE_QUOTE_ID", "STRING_USER_NAME", "IP_ADDRESS", "LOCAL_ID", "GLOBAL_ID", + "CHARSET_NAME", "EXPONENT_NUM_PART", "ID_LITERAL", "DQUOTA_STRING", "SQUOTA_STRING", + "BQUOTA_STRING", "HEX_DIGIT", "DEC_DIGIT", "BIT_STRING_L", "ERROR_RECONGNIGION", +} + +type MySqlLexer struct { + *antlr.BaseLexer + channelNames []string + modeNames []string + // TODO: EOF string +} + +// NewMySqlLexer produces a new lexer instance for the optional input antlr.CharStream. +// +// The *MySqlLexer instance produced may be reused by calling the SetInputStream method. +// The initial lexer configuration is expensive to construct, and the object is not thread-safe; +// however, if used within a Golang sync.Pool, the construction cost amortizes well and the +// objects can be used in a thread-safe manner. +func NewMySqlLexer(input antlr.CharStream) *MySqlLexer { + l := new(MySqlLexer) + lexerDeserializer := antlr.NewATNDeserializer(nil) + lexerAtn := lexerDeserializer.DeserializeFromUInt16(serializedLexerAtn) + lexerDecisionToDFA := make([]*antlr.DFA, len(lexerAtn.DecisionToState)) + for index, ds := range lexerAtn.DecisionToState { + lexerDecisionToDFA[index] = antlr.NewDFA(ds, index) + } + l.BaseLexer = antlr.NewBaseLexer(input) + l.Interpreter = antlr.NewLexerATNSimulator(l, lexerAtn, lexerDecisionToDFA, antlr.NewPredictionContextCache()) + + l.channelNames = lexerChannelNames + l.modeNames = lexerModeNames + l.RuleNames = lexerRuleNames + l.LiteralNames = lexerLiteralNames + l.SymbolicNames = lexerSymbolicNames + l.GrammarFileName = "MySqlLexer.g4" + // TODO: l.EOF = antlr.TokenEOF + + return l +} + +// MySqlLexer tokens. +const ( + MySqlLexerSPACE = 1 + MySqlLexerSPEC_MYSQL_COMMENT = 2 + MySqlLexerCOMMENT_INPUT = 3 + MySqlLexerLINE_COMMENT = 4 + MySqlLexerADD = 5 + MySqlLexerALL = 6 + MySqlLexerALTER = 7 + MySqlLexerALWAYS = 8 + MySqlLexerANALYZE = 9 + MySqlLexerAND = 10 + MySqlLexerAS = 11 + MySqlLexerASC = 12 + MySqlLexerBEFORE = 13 + MySqlLexerBETWEEN = 14 + MySqlLexerBOTH = 15 + MySqlLexerBY = 16 + MySqlLexerCALL = 17 + MySqlLexerCASCADE = 18 + MySqlLexerCASE = 19 + MySqlLexerCAST = 20 + MySqlLexerCHANGE = 21 + MySqlLexerCHARACTER = 22 + MySqlLexerCHECK = 23 + MySqlLexerCOLLATE = 24 + MySqlLexerCOLUMN = 25 + MySqlLexerCONDITION = 26 + MySqlLexerCONSTRAINT = 27 + MySqlLexerCONTINUE = 28 + MySqlLexerCONVERT = 29 + MySqlLexerCREATE = 30 + MySqlLexerCROSS = 31 + MySqlLexerCURRENT = 32 + MySqlLexerCURRENT_USER = 33 + MySqlLexerCURSOR = 34 + MySqlLexerDATABASE = 35 + MySqlLexerDATABASES = 36 + MySqlLexerDECLARE = 37 + MySqlLexerDEFAULT = 38 + MySqlLexerDELAYED = 39 + MySqlLexerDELETE = 40 + MySqlLexerDESC = 41 + MySqlLexerDESCRIBE = 42 + MySqlLexerDETERMINISTIC = 43 + MySqlLexerDIAGNOSTICS = 44 + MySqlLexerDISTINCT = 45 + MySqlLexerDISTINCTROW = 46 + MySqlLexerDROP = 47 + MySqlLexerEACH = 48 + MySqlLexerELSE = 49 + MySqlLexerELSEIF = 50 + MySqlLexerEMPTY = 51 + MySqlLexerENCLOSED = 52 + MySqlLexerESCAPED = 53 + MySqlLexerEXISTS = 54 + MySqlLexerEXIT = 55 + MySqlLexerEXPLAIN = 56 + MySqlLexerFALSE = 57 + MySqlLexerFETCH = 58 + MySqlLexerFOR = 59 + MySqlLexerFORCE = 60 + MySqlLexerFOREIGN = 61 + MySqlLexerFROM = 62 + MySqlLexerFULLTEXT = 63 + MySqlLexerGENERATED = 64 + MySqlLexerGET = 65 + MySqlLexerGRANT = 66 + MySqlLexerGROUP = 67 + MySqlLexerHAVING = 68 + MySqlLexerHIGH_PRIORITY = 69 + MySqlLexerIF = 70 + MySqlLexerIGNORE = 71 + MySqlLexerIN = 72 + MySqlLexerINDEX = 73 + MySqlLexerINFILE = 74 + MySqlLexerINNER = 75 + MySqlLexerINOUT = 76 + MySqlLexerINSERT = 77 + MySqlLexerINTERVAL = 78 + MySqlLexerINTO = 79 + MySqlLexerIS = 80 + MySqlLexerITERATE = 81 + MySqlLexerJOIN = 82 + MySqlLexerKEY = 83 + MySqlLexerKEYS = 84 + MySqlLexerKILL = 85 + MySqlLexerLEADING = 86 + MySqlLexerLEAVE = 87 + MySqlLexerLEFT = 88 + MySqlLexerLIKE = 89 + MySqlLexerLIMIT = 90 + MySqlLexerLINEAR = 91 + MySqlLexerLINES = 92 + MySqlLexerLOAD = 93 + MySqlLexerLOCK = 94 + MySqlLexerLOOP = 95 + MySqlLexerLOW_PRIORITY = 96 + MySqlLexerMASTER_BIND = 97 + MySqlLexerMASTER_SSL_VERIFY_SERVER_CERT = 98 + MySqlLexerMATCH = 99 + MySqlLexerMAXVALUE = 100 + MySqlLexerMODIFIES = 101 + MySqlLexerNATURAL = 102 + MySqlLexerNOT = 103 + MySqlLexerNO_WRITE_TO_BINLOG = 104 + MySqlLexerNULL_LITERAL = 105 + MySqlLexerNULL = 106 + MySqlLexerNUMBER = 107 + MySqlLexerON = 108 + MySqlLexerOPTIMIZE = 109 + MySqlLexerOPTION = 110 + MySqlLexerOPTIONALLY = 111 + MySqlLexerOR = 112 + MySqlLexerORDER = 113 + MySqlLexerOUT = 114 + MySqlLexerOUTER = 115 + MySqlLexerOUTFILE = 116 + MySqlLexerPARTITION = 117 + MySqlLexerPRIMARY = 118 + MySqlLexerPROCEDURE = 119 + MySqlLexerPURGE = 120 + MySqlLexerRANGE = 121 + MySqlLexerREAD = 122 + MySqlLexerREADS = 123 + MySqlLexerREFERENCES = 124 + MySqlLexerREGEXP = 125 + MySqlLexerRELEASE = 126 + MySqlLexerRENAME = 127 + MySqlLexerREPEAT = 128 + MySqlLexerREPLACE = 129 + MySqlLexerREQUIRE = 130 + MySqlLexerRESIGNAL = 131 + MySqlLexerRESTRICT = 132 + MySqlLexerRETURN = 133 + MySqlLexerREVOKE = 134 + MySqlLexerRIGHT = 135 + MySqlLexerRLIKE = 136 + MySqlLexerSCHEMA = 137 + MySqlLexerSCHEMAS = 138 + MySqlLexerSELECT = 139 + MySqlLexerSET = 140 + MySqlLexerSEPARATOR = 141 + MySqlLexerSHOW = 142 + MySqlLexerSIGNAL = 143 + MySqlLexerSPATIAL = 144 + MySqlLexerSQL = 145 + MySqlLexerSQLEXCEPTION = 146 + MySqlLexerSQLSTATE = 147 + MySqlLexerSQLWARNING = 148 + MySqlLexerSQL_BIG_RESULT = 149 + MySqlLexerSQL_CALC_FOUND_ROWS = 150 + MySqlLexerSQL_SMALL_RESULT = 151 + MySqlLexerSSL = 152 + MySqlLexerSTACKED = 153 + MySqlLexerSTARTING = 154 + MySqlLexerSTRAIGHT_JOIN = 155 + MySqlLexerTABLE = 156 + MySqlLexerTERMINATED = 157 + MySqlLexerTHEN = 158 + MySqlLexerTO = 159 + MySqlLexerTRAILING = 160 + MySqlLexerTRIGGER = 161 + MySqlLexerTRUE = 162 + MySqlLexerUNDO = 163 + MySqlLexerUNION = 164 + MySqlLexerUNIQUE = 165 + MySqlLexerUNLOCK = 166 + MySqlLexerUNSIGNED = 167 + MySqlLexerUPDATE = 168 + MySqlLexerUSAGE = 169 + MySqlLexerUSE = 170 + MySqlLexerUSING = 171 + MySqlLexerVALUES = 172 + MySqlLexerWHEN = 173 + MySqlLexerWHERE = 174 + MySqlLexerWHILE = 175 + MySqlLexerWITH = 176 + MySqlLexerWRITE = 177 + MySqlLexerXOR = 178 + MySqlLexerZEROFILL = 179 + MySqlLexerTINYINT = 180 + MySqlLexerSMALLINT = 181 + MySqlLexerMEDIUMINT = 182 + MySqlLexerMIDDLEINT = 183 + MySqlLexerINT = 184 + MySqlLexerINT1 = 185 + MySqlLexerINT2 = 186 + MySqlLexerINT3 = 187 + MySqlLexerINT4 = 188 + MySqlLexerINT8 = 189 + MySqlLexerINTEGER = 190 + MySqlLexerBIGINT = 191 + MySqlLexerREAL = 192 + MySqlLexerDOUBLE = 193 + MySqlLexerPRECISION = 194 + MySqlLexerFLOAT = 195 + MySqlLexerFLOAT4 = 196 + MySqlLexerFLOAT8 = 197 + MySqlLexerDECIMAL = 198 + MySqlLexerDEC = 199 + MySqlLexerNUMERIC = 200 + MySqlLexerDATE = 201 + MySqlLexerTIME = 202 + MySqlLexerTIMESTAMP = 203 + MySqlLexerDATETIME = 204 + MySqlLexerYEAR = 205 + MySqlLexerCHAR = 206 + MySqlLexerVARCHAR = 207 + MySqlLexerNVARCHAR = 208 + MySqlLexerNATIONAL = 209 + MySqlLexerBINARY = 210 + MySqlLexerVARBINARY = 211 + MySqlLexerTINYBLOB = 212 + MySqlLexerBLOB = 213 + MySqlLexerMEDIUMBLOB = 214 + MySqlLexerLONG = 215 + MySqlLexerLONGBLOB = 216 + MySqlLexerTINYTEXT = 217 + MySqlLexerTEXT = 218 + MySqlLexerMEDIUMTEXT = 219 + MySqlLexerLONGTEXT = 220 + MySqlLexerENUM = 221 + MySqlLexerVARYING = 222 + MySqlLexerSERIAL = 223 + MySqlLexerYEAR_MONTH = 224 + MySqlLexerDAY_HOUR = 225 + MySqlLexerDAY_MINUTE = 226 + MySqlLexerDAY_SECOND = 227 + MySqlLexerHOUR_MINUTE = 228 + MySqlLexerHOUR_SECOND = 229 + MySqlLexerMINUTE_SECOND = 230 + MySqlLexerSECOND_MICROSECOND = 231 + MySqlLexerMINUTE_MICROSECOND = 232 + MySqlLexerHOUR_MICROSECOND = 233 + MySqlLexerDAY_MICROSECOND = 234 + MySqlLexerJSON_ARRAY = 235 + MySqlLexerJSON_OBJECT = 236 + MySqlLexerJSON_QUOTE = 237 + MySqlLexerJSON_CONTAINS = 238 + MySqlLexerJSON_CONTAINS_PATH = 239 + MySqlLexerJSON_EXTRACT = 240 + MySqlLexerJSON_KEYS = 241 + MySqlLexerJSON_OVERLAPS = 242 + MySqlLexerJSON_SEARCH = 243 + MySqlLexerJSON_VALUE = 244 + MySqlLexerJSON_ARRAY_APPEND = 245 + MySqlLexerJSON_ARRAY_INSERT = 246 + MySqlLexerJSON_INSERT = 247 + MySqlLexerJSON_MERGE = 248 + MySqlLexerJSON_MERGE_PATCH = 249 + MySqlLexerJSON_MERGE_PRESERVE = 250 + MySqlLexerJSON_REMOVE = 251 + MySqlLexerJSON_REPLACE = 252 + MySqlLexerJSON_SET = 253 + MySqlLexerJSON_UNQUOTE = 254 + MySqlLexerJSON_DEPTH = 255 + MySqlLexerJSON_LENGTH = 256 + MySqlLexerJSON_TYPE = 257 + MySqlLexerJSON_VALID = 258 + MySqlLexerJSON_TABLE = 259 + MySqlLexerJSON_SCHEMA_VALID = 260 + MySqlLexerJSON_SCHEMA_VALIDATION_REPORT = 261 + MySqlLexerJSON_PRETTY = 262 + MySqlLexerJSON_STORAGE_FREE = 263 + MySqlLexerJSON_STORAGE_SIZE = 264 + MySqlLexerJSON_ARRAYAGG = 265 + MySqlLexerJSON_OBJECTAGG = 266 + MySqlLexerAVG = 267 + MySqlLexerBIT_AND = 268 + MySqlLexerBIT_OR = 269 + MySqlLexerBIT_XOR = 270 + MySqlLexerCOUNT = 271 + MySqlLexerGROUP_CONCAT = 272 + MySqlLexerMAX = 273 + MySqlLexerMIN = 274 + MySqlLexerSTD = 275 + MySqlLexerSTDDEV = 276 + MySqlLexerSTDDEV_POP = 277 + MySqlLexerSTDDEV_SAMP = 278 + MySqlLexerSUM = 279 + MySqlLexerVAR_POP = 280 + MySqlLexerVAR_SAMP = 281 + MySqlLexerVARIANCE = 282 + MySqlLexerCURRENT_DATE = 283 + MySqlLexerCURRENT_TIME = 284 + MySqlLexerCURRENT_TIMESTAMP = 285 + MySqlLexerLOCALTIME = 286 + MySqlLexerCURDATE = 287 + MySqlLexerCURTIME = 288 + MySqlLexerDATE_ADD = 289 + MySqlLexerDATE_SUB = 290 + MySqlLexerEXTRACT = 291 + MySqlLexerLOCALTIMESTAMP = 292 + MySqlLexerNOW = 293 + MySqlLexerPOSITION = 294 + MySqlLexerSUBSTR = 295 + MySqlLexerSUBSTRING = 296 + MySqlLexerSYSDATE = 297 + MySqlLexerTRIM = 298 + MySqlLexerUTC_DATE = 299 + MySqlLexerUTC_TIME = 300 + MySqlLexerUTC_TIMESTAMP = 301 + MySqlLexerACCOUNT = 302 + MySqlLexerACTION = 303 + MySqlLexerAFTER = 304 + MySqlLexerAGGREGATE = 305 + MySqlLexerALGORITHM = 306 + MySqlLexerANY = 307 + MySqlLexerAT = 308 + MySqlLexerAUTHORS = 309 + MySqlLexerAUTOCOMMIT = 310 + MySqlLexerAUTOEXTEND_SIZE = 311 + MySqlLexerAUTO_INCREMENT = 312 + MySqlLexerAVG_ROW_LENGTH = 313 + MySqlLexerBEGIN = 314 + MySqlLexerBINLOG = 315 + MySqlLexerBIT = 316 + MySqlLexerBLOCK = 317 + MySqlLexerBOOL = 318 + MySqlLexerBOOLEAN = 319 + MySqlLexerBTREE = 320 + MySqlLexerCACHE = 321 + MySqlLexerCASCADED = 322 + MySqlLexerCHAIN = 323 + MySqlLexerCHANGED = 324 + MySqlLexerCHANNEL = 325 + MySqlLexerCHECKSUM = 326 + MySqlLexerPAGE_CHECKSUM = 327 + MySqlLexerCIPHER = 328 + MySqlLexerCLASS_ORIGIN = 329 + MySqlLexerCLIENT = 330 + MySqlLexerCLOSE = 331 + MySqlLexerCOALESCE = 332 + MySqlLexerCODE = 333 + MySqlLexerCOLUMNS = 334 + MySqlLexerCOLUMN_FORMAT = 335 + MySqlLexerCOLUMN_NAME = 336 + MySqlLexerCOMMENT = 337 + MySqlLexerCOMMIT = 338 + MySqlLexerCOMPACT = 339 + MySqlLexerCOMPLETION = 340 + MySqlLexerCOMPRESSED = 341 + MySqlLexerCOMPRESSION = 342 + MySqlLexerCONCURRENT = 343 + MySqlLexerCONNECTION = 344 + MySqlLexerCONSISTENT = 345 + MySqlLexerCONSTRAINT_CATALOG = 346 + MySqlLexerCONSTRAINT_SCHEMA = 347 + MySqlLexerCONSTRAINT_NAME = 348 + MySqlLexerCONTAINS = 349 + MySqlLexerCONTEXT = 350 + MySqlLexerCONTRIBUTORS = 351 + MySqlLexerCOPY = 352 + MySqlLexerCPU = 353 + MySqlLexerCURSOR_NAME = 354 + MySqlLexerDATA = 355 + MySqlLexerDATAFILE = 356 + MySqlLexerDEALLOCATE = 357 + MySqlLexerDEFAULT_AUTH = 358 + MySqlLexerDEFINER = 359 + MySqlLexerDELAY_KEY_WRITE = 360 + MySqlLexerDES_KEY_FILE = 361 + MySqlLexerDIRECTORY = 362 + MySqlLexerDISABLE = 363 + MySqlLexerDISCARD = 364 + MySqlLexerDISK = 365 + MySqlLexerDO = 366 + MySqlLexerDUMPFILE = 367 + MySqlLexerDUPLICATE = 368 + MySqlLexerDYNAMIC = 369 + MySqlLexerENABLE = 370 + MySqlLexerENCRYPTION = 371 + MySqlLexerEND = 372 + MySqlLexerENDS = 373 + MySqlLexerENGINE = 374 + MySqlLexerENGINES = 375 + MySqlLexerERROR = 376 + MySqlLexerERRORS = 377 + MySqlLexerESCAPE = 378 + MySqlLexerEVEN = 379 + MySqlLexerEVENT = 380 + MySqlLexerEVENTS = 381 + MySqlLexerEVERY = 382 + MySqlLexerEXCHANGE = 383 + MySqlLexerEXCLUSIVE = 384 + MySqlLexerEXPIRE = 385 + MySqlLexerEXPORT = 386 + MySqlLexerEXTENDED = 387 + MySqlLexerEXTENT_SIZE = 388 + MySqlLexerFAST = 389 + MySqlLexerFAULTS = 390 + MySqlLexerFIELDS = 391 + MySqlLexerFILE_BLOCK_SIZE = 392 + MySqlLexerFILTER = 393 + MySqlLexerFIRST = 394 + MySqlLexerFIXED = 395 + MySqlLexerFLUSH = 396 + MySqlLexerFOLLOWS = 397 + MySqlLexerFOUND = 398 + MySqlLexerFULL = 399 + MySqlLexerFUNCTION = 400 + MySqlLexerGENERAL = 401 + MySqlLexerGLOBAL = 402 + MySqlLexerGRANTS = 403 + MySqlLexerGROUP_REPLICATION = 404 + MySqlLexerHANDLER = 405 + MySqlLexerHASH = 406 + MySqlLexerHELP = 407 + MySqlLexerHOST = 408 + MySqlLexerHOSTS = 409 + MySqlLexerIDENTIFIED = 410 + MySqlLexerIGNORE_SERVER_IDS = 411 + MySqlLexerIMPORT = 412 + MySqlLexerINDEXES = 413 + MySqlLexerINITIAL_SIZE = 414 + MySqlLexerINPLACE = 415 + MySqlLexerINSERT_METHOD = 416 + MySqlLexerINSTALL = 417 + MySqlLexerINSTANCE = 418 + MySqlLexerINVISIBLE = 419 + MySqlLexerINVOKER = 420 + MySqlLexerIO = 421 + MySqlLexerIO_THREAD = 422 + MySqlLexerIPC = 423 + MySqlLexerISOLATION = 424 + MySqlLexerISSUER = 425 + MySqlLexerJSON = 426 + MySqlLexerKEY_BLOCK_SIZE = 427 + MySqlLexerLANGUAGE = 428 + MySqlLexerLAST = 429 + MySqlLexerLEAVES = 430 + MySqlLexerLESS = 431 + MySqlLexerLEVEL = 432 + MySqlLexerLIST = 433 + MySqlLexerLOCAL = 434 + MySqlLexerLOGFILE = 435 + MySqlLexerLOGS = 436 + MySqlLexerMASTER = 437 + MySqlLexerMASTER_AUTO_POSITION = 438 + MySqlLexerMASTER_CONNECT_RETRY = 439 + MySqlLexerMASTER_DELAY = 440 + MySqlLexerMASTER_HEARTBEAT_PERIOD = 441 + MySqlLexerMASTER_HOST = 442 + MySqlLexerMASTER_LOG_FILE = 443 + MySqlLexerMASTER_LOG_POS = 444 + MySqlLexerMASTER_PASSWORD = 445 + MySqlLexerMASTER_PORT = 446 + MySqlLexerMASTER_RETRY_COUNT = 447 + MySqlLexerMASTER_SSL = 448 + MySqlLexerMASTER_SSL_CA = 449 + MySqlLexerMASTER_SSL_CAPATH = 450 + MySqlLexerMASTER_SSL_CERT = 451 + MySqlLexerMASTER_SSL_CIPHER = 452 + MySqlLexerMASTER_SSL_CRL = 453 + MySqlLexerMASTER_SSL_CRLPATH = 454 + MySqlLexerMASTER_SSL_KEY = 455 + MySqlLexerMASTER_TLS_VERSION = 456 + MySqlLexerMASTER_USER = 457 + MySqlLexerMAX_CONNECTIONS_PER_HOUR = 458 + MySqlLexerMAX_QUERIES_PER_HOUR = 459 + MySqlLexerMAX_ROWS = 460 + MySqlLexerMAX_SIZE = 461 + MySqlLexerMAX_UPDATES_PER_HOUR = 462 + MySqlLexerMAX_USER_CONNECTIONS = 463 + MySqlLexerMEDIUM = 464 + MySqlLexerMEMBER = 465 + MySqlLexerMERGE = 466 + MySqlLexerMESSAGE_TEXT = 467 + MySqlLexerMID = 468 + MySqlLexerMIGRATE = 469 + MySqlLexerMIN_ROWS = 470 + MySqlLexerMODE = 471 + MySqlLexerMODIFY = 472 + MySqlLexerMUTEX = 473 + MySqlLexerMYSQL = 474 + MySqlLexerMYSQL_ERRNO = 475 + MySqlLexerNAME = 476 + MySqlLexerNAMES = 477 + MySqlLexerNCHAR = 478 + MySqlLexerNEVER = 479 + MySqlLexerNEXT = 480 + MySqlLexerNO = 481 + MySqlLexerNODEGROUP = 482 + MySqlLexerNONE = 483 + MySqlLexerOFFLINE = 484 + MySqlLexerOFFSET = 485 + MySqlLexerOF = 486 + MySqlLexerOJ = 487 + MySqlLexerOLD_PASSWORD = 488 + MySqlLexerONE = 489 + MySqlLexerONLINE = 490 + MySqlLexerONLY = 491 + MySqlLexerOPEN = 492 + MySqlLexerOPTIMIZER_COSTS = 493 + MySqlLexerOPTIONS = 494 + MySqlLexerOWNER = 495 + MySqlLexerPACK_KEYS = 496 + MySqlLexerPAGE = 497 + MySqlLexerPARSER = 498 + MySqlLexerPARTIAL = 499 + MySqlLexerPARTITIONING = 500 + MySqlLexerPARTITIONS = 501 + MySqlLexerPASSWORD = 502 + MySqlLexerPHASE = 503 + MySqlLexerPLUGIN = 504 + MySqlLexerPLUGIN_DIR = 505 + MySqlLexerPLUGINS = 506 + MySqlLexerPORT = 507 + MySqlLexerPRECEDES = 508 + MySqlLexerPREPARE = 509 + MySqlLexerPRESERVE = 510 + MySqlLexerPREV = 511 + MySqlLexerPROCESSLIST = 512 + MySqlLexerPROFILE = 513 + MySqlLexerPROFILES = 514 + MySqlLexerPROXY = 515 + MySqlLexerQUERY = 516 + MySqlLexerQUICK = 517 + MySqlLexerREBUILD = 518 + MySqlLexerRECOVER = 519 + MySqlLexerREDO_BUFFER_SIZE = 520 + MySqlLexerREDUNDANT = 521 + MySqlLexerRELAY = 522 + MySqlLexerRELAY_LOG_FILE = 523 + MySqlLexerRELAY_LOG_POS = 524 + MySqlLexerRELAYLOG = 525 + MySqlLexerREMOVE = 526 + MySqlLexerREORGANIZE = 527 + MySqlLexerREPAIR = 528 + MySqlLexerREPLICATE_DO_DB = 529 + MySqlLexerREPLICATE_DO_TABLE = 530 + MySqlLexerREPLICATE_IGNORE_DB = 531 + MySqlLexerREPLICATE_IGNORE_TABLE = 532 + MySqlLexerREPLICATE_REWRITE_DB = 533 + MySqlLexerREPLICATE_WILD_DO_TABLE = 534 + MySqlLexerREPLICATE_WILD_IGNORE_TABLE = 535 + MySqlLexerREPLICATION = 536 + MySqlLexerRESET = 537 + MySqlLexerRESUME = 538 + MySqlLexerRETURNED_SQLSTATE = 539 + MySqlLexerRETURNING = 540 + MySqlLexerRETURNS = 541 + MySqlLexerROLE = 542 + MySqlLexerROLLBACK = 543 + MySqlLexerROLLUP = 544 + MySqlLexerROTATE = 545 + MySqlLexerROW = 546 + MySqlLexerROWS = 547 + MySqlLexerROW_FORMAT = 548 + MySqlLexerSAVEPOINT = 549 + MySqlLexerSCHEDULE = 550 + MySqlLexerSECURITY = 551 + MySqlLexerSERVER = 552 + MySqlLexerSESSION = 553 + MySqlLexerSHARE = 554 + MySqlLexerSHARED = 555 + MySqlLexerSIGNED = 556 + MySqlLexerSIMPLE = 557 + MySqlLexerSLAVE = 558 + MySqlLexerSLOW = 559 + MySqlLexerSNAPSHOT = 560 + MySqlLexerSOCKET = 561 + MySqlLexerSOME = 562 + MySqlLexerSONAME = 563 + MySqlLexerSOUNDS = 564 + MySqlLexerSOURCE = 565 + MySqlLexerSQL_AFTER_GTIDS = 566 + MySqlLexerSQL_AFTER_MTS_GAPS = 567 + MySqlLexerSQL_BEFORE_GTIDS = 568 + MySqlLexerSQL_BUFFER_RESULT = 569 + MySqlLexerSQL_CACHE = 570 + MySqlLexerSQL_NO_CACHE = 571 + MySqlLexerSQL_THREAD = 572 + MySqlLexerSTART = 573 + MySqlLexerSTARTS = 574 + MySqlLexerSTATS_AUTO_RECALC = 575 + MySqlLexerSTATS_PERSISTENT = 576 + MySqlLexerSTATS_SAMPLE_PAGES = 577 + MySqlLexerSTATUS = 578 + MySqlLexerSTOP = 579 + MySqlLexerSTORAGE = 580 + MySqlLexerSTORED = 581 + MySqlLexerSTRING = 582 + MySqlLexerSUBCLASS_ORIGIN = 583 + MySqlLexerSUBJECT = 584 + MySqlLexerSUBPARTITION = 585 + MySqlLexerSUBPARTITIONS = 586 + MySqlLexerSUSPEND = 587 + MySqlLexerSWAPS = 588 + MySqlLexerSWITCHES = 589 + MySqlLexerTABLE_NAME = 590 + MySqlLexerTABLESPACE = 591 + MySqlLexerTEMPORARY = 592 + MySqlLexerTEMPTABLE = 593 + MySqlLexerTHAN = 594 + MySqlLexerTRADITIONAL = 595 + MySqlLexerTRANSACTION = 596 + MySqlLexerTRANSACTIONAL = 597 + MySqlLexerTRIGGERS = 598 + MySqlLexerTRUNCATE = 599 + MySqlLexerUNDEFINED = 600 + MySqlLexerUNDOFILE = 601 + MySqlLexerUNDO_BUFFER_SIZE = 602 + MySqlLexerUNINSTALL = 603 + MySqlLexerUNKNOWN = 604 + MySqlLexerUNTIL = 605 + MySqlLexerUPGRADE = 606 + MySqlLexerUSER = 607 + MySqlLexerUSE_FRM = 608 + MySqlLexerUSER_RESOURCES = 609 + MySqlLexerVALIDATION = 610 + MySqlLexerVALUE = 611 + MySqlLexerVARIABLES = 612 + MySqlLexerVIEW = 613 + MySqlLexerVIRTUAL = 614 + MySqlLexerVISIBLE = 615 + MySqlLexerWAIT = 616 + MySqlLexerWARNINGS = 617 + MySqlLexerWITHOUT = 618 + MySqlLexerWORK = 619 + MySqlLexerWRAPPER = 620 + MySqlLexerX509 = 621 + MySqlLexerXA = 622 + MySqlLexerXML = 623 + MySqlLexerEUR = 624 + MySqlLexerUSA = 625 + MySqlLexerJIS = 626 + MySqlLexerISO = 627 + MySqlLexerINTERNAL = 628 + MySqlLexerQUARTER = 629 + MySqlLexerMONTH = 630 + MySqlLexerDAY = 631 + MySqlLexerHOUR = 632 + MySqlLexerMINUTE = 633 + MySqlLexerWEEK = 634 + MySqlLexerSECOND = 635 + MySqlLexerMICROSECOND = 636 + MySqlLexerTABLES = 637 + MySqlLexerROUTINE = 638 + MySqlLexerEXECUTE = 639 + MySqlLexerFILE = 640 + MySqlLexerPROCESS = 641 + MySqlLexerRELOAD = 642 + MySqlLexerSHUTDOWN = 643 + MySqlLexerSUPER = 644 + MySqlLexerPRIVILEGES = 645 + MySqlLexerAPPLICATION_PASSWORD_ADMIN = 646 + MySqlLexerAUDIT_ADMIN = 647 + MySqlLexerBACKUP_ADMIN = 648 + MySqlLexerBINLOG_ADMIN = 649 + MySqlLexerBINLOG_ENCRYPTION_ADMIN = 650 + MySqlLexerCLONE_ADMIN = 651 + MySqlLexerCONNECTION_ADMIN = 652 + MySqlLexerENCRYPTION_KEY_ADMIN = 653 + MySqlLexerFIREWALL_ADMIN = 654 + MySqlLexerFIREWALL_USER = 655 + MySqlLexerFLUSH_OPTIMIZER_COSTS = 656 + MySqlLexerFLUSH_STATUS = 657 + MySqlLexerFLUSH_TABLES = 658 + MySqlLexerFLUSH_USER_RESOURCES = 659 + MySqlLexerGROUP_REPLICATION_ADMIN = 660 + MySqlLexerINNODB_REDO_LOG_ARCHIVE = 661 + MySqlLexerINNODB_REDO_LOG_ENABLE = 662 + MySqlLexerNDB_STORED_USER = 663 + MySqlLexerPERSIST_RO_VARIABLES_ADMIN = 664 + MySqlLexerREPLICATION_APPLIER = 665 + MySqlLexerREPLICATION_SLAVE_ADMIN = 666 + MySqlLexerRESOURCE_GROUP_ADMIN = 667 + MySqlLexerRESOURCE_GROUP_USER = 668 + MySqlLexerROLE_ADMIN = 669 + MySqlLexerSERVICE_CONNECTION_ADMIN = 670 + MySqlLexerSESSION_VARIABLES_ADMIN = 671 + MySqlLexerSET_USER_ID = 672 + MySqlLexerSHOW_ROUTINE = 673 + MySqlLexerSYSTEM_VARIABLES_ADMIN = 674 + MySqlLexerTABLE_ENCRYPTION_ADMIN = 675 + MySqlLexerVERSION_TOKEN_ADMIN = 676 + MySqlLexerXA_RECOVER_ADMIN = 677 + MySqlLexerARMSCII8 = 678 + MySqlLexerASCII = 679 + MySqlLexerBIG5 = 680 + MySqlLexerCP1250 = 681 + MySqlLexerCP1251 = 682 + MySqlLexerCP1256 = 683 + MySqlLexerCP1257 = 684 + MySqlLexerCP850 = 685 + MySqlLexerCP852 = 686 + MySqlLexerCP866 = 687 + MySqlLexerCP932 = 688 + MySqlLexerDEC8 = 689 + MySqlLexerEUCJPMS = 690 + MySqlLexerEUCKR = 691 + MySqlLexerGB2312 = 692 + MySqlLexerGBK = 693 + MySqlLexerGEOSTD8 = 694 + MySqlLexerGREEK = 695 + MySqlLexerHEBREW = 696 + MySqlLexerHP8 = 697 + MySqlLexerKEYBCS2 = 698 + MySqlLexerKOI8R = 699 + MySqlLexerKOI8U = 700 + MySqlLexerLATIN1 = 701 + MySqlLexerLATIN2 = 702 + MySqlLexerLATIN5 = 703 + MySqlLexerLATIN7 = 704 + MySqlLexerMACCE = 705 + MySqlLexerMACROMAN = 706 + MySqlLexerSJIS = 707 + MySqlLexerSWE7 = 708 + MySqlLexerTIS620 = 709 + MySqlLexerUCS2 = 710 + MySqlLexerUJIS = 711 + MySqlLexerUTF16 = 712 + MySqlLexerUTF16LE = 713 + MySqlLexerUTF32 = 714 + MySqlLexerUTF8 = 715 + MySqlLexerUTF8MB3 = 716 + MySqlLexerUTF8MB4 = 717 + MySqlLexerARCHIVE = 718 + MySqlLexerBLACKHOLE = 719 + MySqlLexerCSV = 720 + MySqlLexerFEDERATED = 721 + MySqlLexerINNODB = 722 + MySqlLexerMEMORY = 723 + MySqlLexerMRG_MYISAM = 724 + MySqlLexerMYISAM = 725 + MySqlLexerNDB = 726 + MySqlLexerNDBCLUSTER = 727 + MySqlLexerPERFORMANCE_SCHEMA = 728 + MySqlLexerTOKUDB = 729 + MySqlLexerREPEATABLE = 730 + MySqlLexerCOMMITTED = 731 + MySqlLexerUNCOMMITTED = 732 + MySqlLexerSERIALIZABLE = 733 + MySqlLexerGEOMETRYCOLLECTION = 734 + MySqlLexerGEOMCOLLECTION = 735 + MySqlLexerGEOMETRY = 736 + MySqlLexerLINESTRING = 737 + MySqlLexerMULTILINESTRING = 738 + MySqlLexerMULTIPOINT = 739 + MySqlLexerMULTIPOLYGON = 740 + MySqlLexerPOINT = 741 + MySqlLexerPOLYGON = 742 + MySqlLexerABS = 743 + MySqlLexerACOS = 744 + MySqlLexerADDDATE = 745 + MySqlLexerADDTIME = 746 + MySqlLexerAES_DECRYPT = 747 + MySqlLexerAES_ENCRYPT = 748 + MySqlLexerAREA = 749 + MySqlLexerASBINARY = 750 + MySqlLexerASIN = 751 + MySqlLexerASTEXT = 752 + MySqlLexerASWKB = 753 + MySqlLexerASWKT = 754 + MySqlLexerASYMMETRIC_DECRYPT = 755 + MySqlLexerASYMMETRIC_DERIVE = 756 + MySqlLexerASYMMETRIC_ENCRYPT = 757 + MySqlLexerASYMMETRIC_SIGN = 758 + MySqlLexerASYMMETRIC_VERIFY = 759 + MySqlLexerATAN = 760 + MySqlLexerATAN2 = 761 + MySqlLexerBENCHMARK = 762 + MySqlLexerBIN = 763 + MySqlLexerBIT_COUNT = 764 + MySqlLexerBIT_LENGTH = 765 + MySqlLexerBUFFER = 766 + MySqlLexerCATALOG_NAME = 767 + MySqlLexerCEIL = 768 + MySqlLexerCEILING = 769 + MySqlLexerCENTROID = 770 + MySqlLexerCHARACTER_LENGTH = 771 + MySqlLexerCHARSET = 772 + MySqlLexerCHAR_LENGTH = 773 + MySqlLexerCOERCIBILITY = 774 + MySqlLexerCOLLATION = 775 + MySqlLexerCOMPRESS = 776 + MySqlLexerCONCAT = 777 + MySqlLexerCONCAT_WS = 778 + MySqlLexerCONNECTION_ID = 779 + MySqlLexerCONV = 780 + MySqlLexerCONVERT_TZ = 781 + MySqlLexerCOS = 782 + MySqlLexerCOT = 783 + MySqlLexerCRC32 = 784 + MySqlLexerCREATE_ASYMMETRIC_PRIV_KEY = 785 + MySqlLexerCREATE_ASYMMETRIC_PUB_KEY = 786 + MySqlLexerCREATE_DH_PARAMETERS = 787 + MySqlLexerCREATE_DIGEST = 788 + MySqlLexerCROSSES = 789 + MySqlLexerDATEDIFF = 790 + MySqlLexerDATE_FORMAT = 791 + MySqlLexerDAYNAME = 792 + MySqlLexerDAYOFMONTH = 793 + MySqlLexerDAYOFWEEK = 794 + MySqlLexerDAYOFYEAR = 795 + MySqlLexerDECODE = 796 + MySqlLexerDEGREES = 797 + MySqlLexerDES_DECRYPT = 798 + MySqlLexerDES_ENCRYPT = 799 + MySqlLexerDIMENSION = 800 + MySqlLexerDISJOINT = 801 + MySqlLexerELT = 802 + MySqlLexerENCODE = 803 + MySqlLexerENCRYPT = 804 + MySqlLexerENDPOINT = 805 + MySqlLexerENVELOPE = 806 + MySqlLexerEQUALS = 807 + MySqlLexerEXP = 808 + MySqlLexerEXPORT_SET = 809 + MySqlLexerEXTERIORRING = 810 + MySqlLexerEXTRACTVALUE = 811 + MySqlLexerFIELD = 812 + MySqlLexerFIND_IN_SET = 813 + MySqlLexerFLOOR = 814 + MySqlLexerFORMAT = 815 + MySqlLexerFOUND_ROWS = 816 + MySqlLexerFROM_BASE64 = 817 + MySqlLexerFROM_DAYS = 818 + MySqlLexerFROM_UNIXTIME = 819 + MySqlLexerGEOMCOLLFROMTEXT = 820 + MySqlLexerGEOMCOLLFROMWKB = 821 + MySqlLexerGEOMETRYCOLLECTIONFROMTEXT = 822 + MySqlLexerGEOMETRYCOLLECTIONFROMWKB = 823 + MySqlLexerGEOMETRYFROMTEXT = 824 + MySqlLexerGEOMETRYFROMWKB = 825 + MySqlLexerGEOMETRYN = 826 + MySqlLexerGEOMETRYTYPE = 827 + MySqlLexerGEOMFROMTEXT = 828 + MySqlLexerGEOMFROMWKB = 829 + MySqlLexerGET_FORMAT = 830 + MySqlLexerGET_LOCK = 831 + MySqlLexerGLENGTH = 832 + MySqlLexerGREATEST = 833 + MySqlLexerGTID_SUBSET = 834 + MySqlLexerGTID_SUBTRACT = 835 + MySqlLexerHEX = 836 + MySqlLexerIFNULL = 837 + MySqlLexerINET6_ATON = 838 + MySqlLexerINET6_NTOA = 839 + MySqlLexerINET_ATON = 840 + MySqlLexerINET_NTOA = 841 + MySqlLexerINSTR = 842 + MySqlLexerINTERIORRINGN = 843 + MySqlLexerINTERSECTS = 844 + MySqlLexerISCLOSED = 845 + MySqlLexerISEMPTY = 846 + MySqlLexerISNULL = 847 + MySqlLexerISSIMPLE = 848 + MySqlLexerIS_FREE_LOCK = 849 + MySqlLexerIS_IPV4 = 850 + MySqlLexerIS_IPV4_COMPAT = 851 + MySqlLexerIS_IPV4_MAPPED = 852 + MySqlLexerIS_IPV6 = 853 + MySqlLexerIS_USED_LOCK = 854 + MySqlLexerLAST_INSERT_ID = 855 + MySqlLexerLCASE = 856 + MySqlLexerLEAST = 857 + MySqlLexerLENGTH = 858 + MySqlLexerLINEFROMTEXT = 859 + MySqlLexerLINEFROMWKB = 860 + MySqlLexerLINESTRINGFROMTEXT = 861 + MySqlLexerLINESTRINGFROMWKB = 862 + MySqlLexerLN = 863 + MySqlLexerLOAD_FILE = 864 + MySqlLexerLOCATE = 865 + MySqlLexerLOG = 866 + MySqlLexerLOG10 = 867 + MySqlLexerLOG2 = 868 + MySqlLexerLOWER = 869 + MySqlLexerLPAD = 870 + MySqlLexerLTRIM = 871 + MySqlLexerMAKEDATE = 872 + MySqlLexerMAKETIME = 873 + MySqlLexerMAKE_SET = 874 + MySqlLexerMASTER_POS_WAIT = 875 + MySqlLexerMBRCONTAINS = 876 + MySqlLexerMBRDISJOINT = 877 + MySqlLexerMBREQUAL = 878 + MySqlLexerMBRINTERSECTS = 879 + MySqlLexerMBROVERLAPS = 880 + MySqlLexerMBRTOUCHES = 881 + MySqlLexerMBRWITHIN = 882 + MySqlLexerMD5 = 883 + MySqlLexerMLINEFROMTEXT = 884 + MySqlLexerMLINEFROMWKB = 885 + MySqlLexerMONTHNAME = 886 + MySqlLexerMPOINTFROMTEXT = 887 + MySqlLexerMPOINTFROMWKB = 888 + MySqlLexerMPOLYFROMTEXT = 889 + MySqlLexerMPOLYFROMWKB = 890 + MySqlLexerMULTILINESTRINGFROMTEXT = 891 + MySqlLexerMULTILINESTRINGFROMWKB = 892 + MySqlLexerMULTIPOINTFROMTEXT = 893 + MySqlLexerMULTIPOINTFROMWKB = 894 + MySqlLexerMULTIPOLYGONFROMTEXT = 895 + MySqlLexerMULTIPOLYGONFROMWKB = 896 + MySqlLexerNAME_CONST = 897 + MySqlLexerNULLIF = 898 + MySqlLexerNUMGEOMETRIES = 899 + MySqlLexerNUMINTERIORRINGS = 900 + MySqlLexerNUMPOINTS = 901 + MySqlLexerOCT = 902 + MySqlLexerOCTET_LENGTH = 903 + MySqlLexerORD = 904 + MySqlLexerOVERLAPS = 905 + MySqlLexerPERIOD_ADD = 906 + MySqlLexerPERIOD_DIFF = 907 + MySqlLexerPI = 908 + MySqlLexerPOINTFROMTEXT = 909 + MySqlLexerPOINTFROMWKB = 910 + MySqlLexerPOINTN = 911 + MySqlLexerPOLYFROMTEXT = 912 + MySqlLexerPOLYFROMWKB = 913 + MySqlLexerPOLYGONFROMTEXT = 914 + MySqlLexerPOLYGONFROMWKB = 915 + MySqlLexerPOW = 916 + MySqlLexerPOWER = 917 + MySqlLexerQUOTE = 918 + MySqlLexerRADIANS = 919 + MySqlLexerRAND = 920 + MySqlLexerRANDOM_BYTES = 921 + MySqlLexerRELEASE_LOCK = 922 + MySqlLexerREVERSE = 923 + MySqlLexerROUND = 924 + MySqlLexerROW_COUNT = 925 + MySqlLexerRPAD = 926 + MySqlLexerRTRIM = 927 + MySqlLexerSEC_TO_TIME = 928 + MySqlLexerSESSION_USER = 929 + MySqlLexerSHA = 930 + MySqlLexerSHA1 = 931 + MySqlLexerSHA2 = 932 + MySqlLexerSCHEMA_NAME = 933 + MySqlLexerSIGN = 934 + MySqlLexerSIN = 935 + MySqlLexerSLEEP = 936 + MySqlLexerSOUNDEX = 937 + MySqlLexerSQL_THREAD_WAIT_AFTER_GTIDS = 938 + MySqlLexerSQRT = 939 + MySqlLexerSRID = 940 + MySqlLexerSTARTPOINT = 941 + MySqlLexerSTRCMP = 942 + MySqlLexerSTR_TO_DATE = 943 + MySqlLexerST_AREA = 944 + MySqlLexerST_ASBINARY = 945 + MySqlLexerST_ASTEXT = 946 + MySqlLexerST_ASWKB = 947 + MySqlLexerST_ASWKT = 948 + MySqlLexerST_BUFFER = 949 + MySqlLexerST_CENTROID = 950 + MySqlLexerST_CONTAINS = 951 + MySqlLexerST_CROSSES = 952 + MySqlLexerST_DIFFERENCE = 953 + MySqlLexerST_DIMENSION = 954 + MySqlLexerST_DISJOINT = 955 + MySqlLexerST_DISTANCE = 956 + MySqlLexerST_ENDPOINT = 957 + MySqlLexerST_ENVELOPE = 958 + MySqlLexerST_EQUALS = 959 + MySqlLexerST_EXTERIORRING = 960 + MySqlLexerST_GEOMCOLLFROMTEXT = 961 + MySqlLexerST_GEOMCOLLFROMTXT = 962 + MySqlLexerST_GEOMCOLLFROMWKB = 963 + MySqlLexerST_GEOMETRYCOLLECTIONFROMTEXT = 964 + MySqlLexerST_GEOMETRYCOLLECTIONFROMWKB = 965 + MySqlLexerST_GEOMETRYFROMTEXT = 966 + MySqlLexerST_GEOMETRYFROMWKB = 967 + MySqlLexerST_GEOMETRYN = 968 + MySqlLexerST_GEOMETRYTYPE = 969 + MySqlLexerST_GEOMFROMTEXT = 970 + MySqlLexerST_GEOMFROMWKB = 971 + MySqlLexerST_INTERIORRINGN = 972 + MySqlLexerST_INTERSECTION = 973 + MySqlLexerST_INTERSECTS = 974 + MySqlLexerST_ISCLOSED = 975 + MySqlLexerST_ISEMPTY = 976 + MySqlLexerST_ISSIMPLE = 977 + MySqlLexerST_LINEFROMTEXT = 978 + MySqlLexerST_LINEFROMWKB = 979 + MySqlLexerST_LINESTRINGFROMTEXT = 980 + MySqlLexerST_LINESTRINGFROMWKB = 981 + MySqlLexerST_NUMGEOMETRIES = 982 + MySqlLexerST_NUMINTERIORRING = 983 + MySqlLexerST_NUMINTERIORRINGS = 984 + MySqlLexerST_NUMPOINTS = 985 + MySqlLexerST_OVERLAPS = 986 + MySqlLexerST_POINTFROMTEXT = 987 + MySqlLexerST_POINTFROMWKB = 988 + MySqlLexerST_POINTN = 989 + MySqlLexerST_POLYFROMTEXT = 990 + MySqlLexerST_POLYFROMWKB = 991 + MySqlLexerST_POLYGONFROMTEXT = 992 + MySqlLexerST_POLYGONFROMWKB = 993 + MySqlLexerST_SRID = 994 + MySqlLexerST_STARTPOINT = 995 + MySqlLexerST_SYMDIFFERENCE = 996 + MySqlLexerST_TOUCHES = 997 + MySqlLexerST_UNION = 998 + MySqlLexerST_WITHIN = 999 + MySqlLexerST_X = 1000 + MySqlLexerST_Y = 1001 + MySqlLexerSUBDATE = 1002 + MySqlLexerSUBSTRING_INDEX = 1003 + MySqlLexerSUBTIME = 1004 + MySqlLexerSYSTEM_USER = 1005 + MySqlLexerTAN = 1006 + MySqlLexerTIMEDIFF = 1007 + MySqlLexerTIMESTAMPADD = 1008 + MySqlLexerTIMESTAMPDIFF = 1009 + MySqlLexerTIME_FORMAT = 1010 + MySqlLexerTIME_TO_SEC = 1011 + MySqlLexerTOUCHES = 1012 + MySqlLexerTO_BASE64 = 1013 + MySqlLexerTO_DAYS = 1014 + MySqlLexerTO_SECONDS = 1015 + MySqlLexerUCASE = 1016 + MySqlLexerUNCOMPRESS = 1017 + MySqlLexerUNCOMPRESSED_LENGTH = 1018 + MySqlLexerUNHEX = 1019 + MySqlLexerUNIX_TIMESTAMP = 1020 + MySqlLexerUPDATEXML = 1021 + MySqlLexerUPPER = 1022 + MySqlLexerUUID = 1023 + MySqlLexerUUID_SHORT = 1024 + MySqlLexerVALIDATE_PASSWORD_STRENGTH = 1025 + MySqlLexerVERSION = 1026 + MySqlLexerWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS = 1027 + MySqlLexerWEEKDAY = 1028 + MySqlLexerWEEKOFYEAR = 1029 + MySqlLexerWEIGHT_STRING = 1030 + MySqlLexerWITHIN = 1031 + MySqlLexerYEARWEEK = 1032 + MySqlLexerY_FUNCTION = 1033 + MySqlLexerX_FUNCTION = 1034 + MySqlLexerVAR_ASSIGN = 1035 + MySqlLexerPLUS_ASSIGN = 1036 + MySqlLexerMINUS_ASSIGN = 1037 + MySqlLexerMULT_ASSIGN = 1038 + MySqlLexerDIV_ASSIGN = 1039 + MySqlLexerMOD_ASSIGN = 1040 + MySqlLexerAND_ASSIGN = 1041 + MySqlLexerXOR_ASSIGN = 1042 + MySqlLexerOR_ASSIGN = 1043 + MySqlLexerSTAR = 1044 + MySqlLexerDIVIDE = 1045 + MySqlLexerMODULE = 1046 + MySqlLexerPLUS = 1047 + MySqlLexerMINUSMINUS = 1048 + MySqlLexerMINUS = 1049 + MySqlLexerDIV = 1050 + MySqlLexerMOD = 1051 + MySqlLexerEQUAL_SYMBOL = 1052 + MySqlLexerGREATER_SYMBOL = 1053 + MySqlLexerLESS_SYMBOL = 1054 + MySqlLexerEXCLAMATION_SYMBOL = 1055 + MySqlLexerBIT_NOT_OP = 1056 + MySqlLexerBIT_OR_OP = 1057 + MySqlLexerBIT_AND_OP = 1058 + MySqlLexerBIT_XOR_OP = 1059 + MySqlLexerDOT = 1060 + MySqlLexerLR_BRACKET = 1061 + MySqlLexerRR_BRACKET = 1062 + MySqlLexerCOMMA = 1063 + MySqlLexerSEMI = 1064 + MySqlLexerAT_SIGN = 1065 + MySqlLexerZERO_DECIMAL = 1066 + MySqlLexerONE_DECIMAL = 1067 + MySqlLexerTWO_DECIMAL = 1068 + MySqlLexerSINGLE_QUOTE_SYMB = 1069 + MySqlLexerDOUBLE_QUOTE_SYMB = 1070 + MySqlLexerREVERSE_QUOTE_SYMB = 1071 + MySqlLexerCOLON_SYMB = 1072 + MySqlLexerCHARSET_REVERSE_QOUTE_STRING = 1073 + MySqlLexerFILESIZE_LITERAL = 1074 + MySqlLexerSTART_NATIONAL_STRING_LITERAL = 1075 + MySqlLexerSTRING_LITERAL = 1076 + MySqlLexerDECIMAL_LITERAL = 1077 + MySqlLexerHEXADECIMAL_LITERAL = 1078 + MySqlLexerREAL_LITERAL = 1079 + MySqlLexerNULL_SPEC_LITERAL = 1080 + MySqlLexerBIT_STRING = 1081 + MySqlLexerSTRING_CHARSET_NAME = 1082 + MySqlLexerDOT_ID = 1083 + MySqlLexerID = 1084 + MySqlLexerREVERSE_QUOTE_ID = 1085 + MySqlLexerSTRING_USER_NAME = 1086 + MySqlLexerIP_ADDRESS = 1087 + MySqlLexerLOCAL_ID = 1088 + MySqlLexerGLOBAL_ID = 1089 + MySqlLexerERROR_RECONGNIGION = 1090 +) + +// MySqlLexer channels. +const ( + MySqlLexerMYSQLCOMMENT = 2 + MySqlLexerERRORCHANNEL = 3 +) diff --git a/toolkit/dbvendor/mysql/parser/gen/mysql_parser.go b/toolkit/dbvendor/mysql/parser/gen/mysql_parser.go new file mode 100644 index 00000000..06a119a9 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/gen/mysql_parser.go @@ -0,0 +1,92494 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +// Code generated from /Users/anqiansong/goland/go/ddl-parser/grammar/MySqlParser.g4 by ANTLR 4.9.1. DO NOT EDIT. + +package gen // MySqlParser +import ( + "fmt" + "reflect" + "strconv" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +// Suppress unused import errors +var _ = fmt.Printf +var _ = reflect.Copy +var _ = strconv.Itoa + +var parserATN = []uint16{ + 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 1092, 6497, + 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, + 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, + 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, + 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, + 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, + 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, + 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, + 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, + 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, + 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, + 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, + 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, + 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, + 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, + 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, + 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, + 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, + 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, + 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, + 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, + 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, + 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, + 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, + 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, + 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, + 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, + 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, + 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, + 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, + 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, + 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, + 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, + 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165, + 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169, + 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174, + 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178, + 4, 179, 9, 179, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, 4, 183, + 9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, 9, 187, + 4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, 4, 192, + 9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 4, 196, 9, 196, + 4, 197, 9, 197, 4, 198, 9, 198, 4, 199, 9, 199, 4, 200, 9, 200, 4, 201, + 9, 201, 4, 202, 9, 202, 4, 203, 9, 203, 4, 204, 9, 204, 4, 205, 9, 205, + 4, 206, 9, 206, 4, 207, 9, 207, 4, 208, 9, 208, 4, 209, 9, 209, 4, 210, + 9, 210, 4, 211, 9, 211, 4, 212, 9, 212, 4, 213, 9, 213, 4, 214, 9, 214, + 4, 215, 9, 215, 4, 216, 9, 216, 4, 217, 9, 217, 4, 218, 9, 218, 4, 219, + 9, 219, 4, 220, 9, 220, 4, 221, 9, 221, 4, 222, 9, 222, 4, 223, 9, 223, + 4, 224, 9, 224, 4, 225, 9, 225, 4, 226, 9, 226, 4, 227, 9, 227, 4, 228, + 9, 228, 4, 229, 9, 229, 4, 230, 9, 230, 4, 231, 9, 231, 4, 232, 9, 232, + 4, 233, 9, 233, 4, 234, 9, 234, 4, 235, 9, 235, 4, 236, 9, 236, 4, 237, + 9, 237, 4, 238, 9, 238, 4, 239, 9, 239, 4, 240, 9, 240, 4, 241, 9, 241, + 4, 242, 9, 242, 4, 243, 9, 243, 4, 244, 9, 244, 4, 245, 9, 245, 4, 246, + 9, 246, 4, 247, 9, 247, 4, 248, 9, 248, 4, 249, 9, 249, 4, 250, 9, 250, + 4, 251, 9, 251, 4, 252, 9, 252, 4, 253, 9, 253, 4, 254, 9, 254, 4, 255, + 9, 255, 4, 256, 9, 256, 4, 257, 9, 257, 4, 258, 9, 258, 4, 259, 9, 259, + 4, 260, 9, 260, 4, 261, 9, 261, 4, 262, 9, 262, 4, 263, 9, 263, 4, 264, + 9, 264, 4, 265, 9, 265, 4, 266, 9, 266, 4, 267, 9, 267, 4, 268, 9, 268, + 4, 269, 9, 269, 4, 270, 9, 270, 4, 271, 9, 271, 4, 272, 9, 272, 4, 273, + 9, 273, 4, 274, 9, 274, 4, 275, 9, 275, 4, 276, 9, 276, 4, 277, 9, 277, + 4, 278, 9, 278, 4, 279, 9, 279, 4, 280, 9, 280, 4, 281, 9, 281, 4, 282, + 9, 282, 4, 283, 9, 283, 4, 284, 9, 284, 4, 285, 9, 285, 4, 286, 9, 286, + 4, 287, 9, 287, 4, 288, 9, 288, 4, 289, 9, 289, 4, 290, 9, 290, 4, 291, + 9, 291, 4, 292, 9, 292, 4, 293, 9, 293, 4, 294, 9, 294, 4, 295, 9, 295, + 4, 296, 9, 296, 4, 297, 9, 297, 4, 298, 9, 298, 4, 299, 9, 299, 4, 300, + 9, 300, 4, 301, 9, 301, 4, 302, 9, 302, 4, 303, 9, 303, 4, 304, 9, 304, + 4, 305, 9, 305, 4, 306, 9, 306, 4, 307, 9, 307, 4, 308, 9, 308, 4, 309, + 9, 309, 4, 310, 9, 310, 4, 311, 9, 311, 4, 312, 9, 312, 4, 313, 9, 313, + 4, 314, 9, 314, 4, 315, 9, 315, 4, 316, 9, 316, 4, 317, 9, 317, 4, 318, + 9, 318, 4, 319, 9, 319, 3, 2, 5, 2, 640, 10, 2, 3, 2, 5, 2, 643, 10, 2, + 3, 2, 3, 2, 3, 3, 3, 3, 5, 3, 649, 10, 3, 3, 3, 5, 3, 652, 10, 3, 3, 3, + 7, 3, 655, 10, 3, 12, 3, 14, 3, 658, 11, 3, 3, 3, 3, 3, 5, 3, 662, 10, + 3, 3, 3, 5, 3, 665, 10, 3, 3, 3, 5, 3, 668, 10, 3, 3, 4, 3, 4, 3, 4, 3, + 4, 3, 4, 3, 4, 3, 4, 5, 4, 677, 10, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, + 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, + 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, + 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 716, 10, 6, 3, 7, 3, + 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 728, 10, 7, 3, + 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 739, 10, 8, 3, + 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, + 9, 3, 9, 3, 9, 5, 9, 756, 10, 9, 3, 10, 3, 10, 3, 10, 5, 10, 761, 10, 10, + 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, + 11, 773, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, + 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, + 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 800, 10, 12, 3, 13, + 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 809, 10, 13, 3, 14, 3, + 14, 3, 14, 5, 14, 814, 10, 14, 3, 14, 3, 14, 7, 14, 818, 10, 14, 12, 14, + 14, 14, 821, 11, 14, 3, 15, 3, 15, 5, 15, 825, 10, 15, 3, 15, 3, 15, 5, + 15, 829, 10, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, + 838, 10, 15, 3, 15, 5, 15, 841, 10, 15, 3, 15, 5, 15, 844, 10, 15, 3, 15, + 3, 15, 5, 15, 848, 10, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 5, 16, 855, + 10, 16, 3, 16, 5, 16, 858, 10, 16, 3, 16, 3, 16, 3, 16, 5, 16, 863, 10, + 16, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 869, 10, 16, 12, 16, 14, 16, 872, + 11, 16, 3, 16, 3, 16, 5, 16, 876, 10, 16, 3, 16, 3, 16, 3, 16, 5, 16, 881, + 10, 16, 3, 16, 7, 16, 884, 10, 16, 12, 16, 14, 16, 887, 11, 16, 3, 17, + 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 5, 17, 898, 10, + 17, 3, 17, 5, 17, 901, 10, 17, 3, 17, 3, 17, 5, 17, 905, 10, 17, 3, 17, + 5, 17, 908, 10, 17, 3, 17, 3, 17, 5, 17, 912, 10, 17, 3, 17, 5, 17, 915, + 10, 17, 3, 17, 3, 17, 5, 17, 919, 10, 17, 3, 17, 5, 17, 922, 10, 17, 3, + 17, 5, 17, 925, 10, 17, 3, 17, 3, 17, 5, 17, 929, 10, 17, 3, 17, 5, 17, + 932, 10, 17, 3, 17, 3, 17, 5, 17, 936, 10, 17, 3, 17, 3, 17, 3, 18, 3, + 18, 5, 18, 942, 10, 18, 3, 18, 3, 18, 3, 18, 3, 18, 5, 18, 948, 10, 18, + 3, 18, 3, 18, 7, 18, 952, 10, 18, 12, 18, 14, 18, 955, 11, 18, 3, 18, 3, + 18, 7, 18, 959, 10, 18, 12, 18, 14, 18, 962, 11, 18, 3, 18, 3, 18, 3, 19, + 3, 19, 5, 19, 968, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 974, 10, + 19, 3, 19, 3, 19, 7, 19, 978, 10, 19, 12, 19, 14, 19, 981, 11, 19, 3, 19, + 3, 19, 3, 19, 3, 19, 7, 19, 987, 10, 19, 12, 19, 14, 19, 990, 11, 19, 3, + 19, 3, 19, 5, 19, 994, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, + 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 1008, 10, 20, 12, 20, + 14, 20, 1011, 11, 20, 3, 20, 3, 20, 3, 21, 3, 21, 5, 21, 1017, 10, 21, + 3, 21, 3, 21, 5, 21, 1021, 10, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, + 21, 3, 21, 3, 21, 5, 21, 1031, 10, 21, 3, 21, 3, 21, 5, 21, 1035, 10, 21, + 3, 21, 3, 21, 5, 21, 1039, 10, 21, 3, 21, 3, 21, 5, 21, 1043, 10, 21, 3, + 21, 3, 21, 5, 21, 1047, 10, 21, 3, 21, 7, 21, 1050, 10, 21, 12, 21, 14, + 21, 1053, 11, 21, 5, 21, 1055, 10, 21, 3, 21, 5, 21, 1058, 10, 21, 3, 21, + 5, 21, 1061, 10, 21, 3, 21, 5, 21, 1064, 10, 21, 3, 21, 3, 21, 3, 21, 3, + 21, 5, 21, 1070, 10, 21, 3, 21, 3, 21, 5, 21, 1074, 10, 21, 3, 21, 3, 21, + 3, 21, 3, 21, 5, 21, 1080, 10, 21, 3, 21, 7, 21, 1083, 10, 21, 12, 21, + 14, 21, 1086, 11, 21, 5, 21, 1088, 10, 21, 3, 21, 5, 21, 1091, 10, 21, + 5, 21, 1093, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, + 22, 3, 22, 5, 22, 1104, 10, 22, 3, 22, 3, 22, 5, 22, 1108, 10, 22, 3, 22, + 5, 22, 1111, 10, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, + 23, 3, 23, 3, 23, 3, 23, 3, 23, 5, 23, 1125, 10, 23, 3, 23, 5, 23, 1128, + 10, 23, 3, 23, 3, 23, 5, 23, 1132, 10, 23, 3, 23, 5, 23, 1135, 10, 23, + 3, 23, 3, 23, 5, 23, 1139, 10, 23, 3, 23, 5, 23, 1142, 10, 23, 3, 23, 3, + 23, 5, 23, 1146, 10, 23, 3, 23, 5, 23, 1149, 10, 23, 3, 23, 3, 23, 5, 23, + 1153, 10, 23, 3, 23, 5, 23, 1156, 10, 23, 3, 23, 5, 23, 1159, 10, 23, 3, + 23, 3, 23, 5, 23, 1163, 10, 23, 3, 23, 5, 23, 1166, 10, 23, 3, 23, 3, 23, + 5, 23, 1170, 10, 23, 3, 23, 3, 23, 3, 24, 3, 24, 5, 24, 1176, 10, 24, 3, + 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, + 5, 24, 1189, 10, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 5, 25, 1196, 10, + 25, 3, 25, 3, 25, 3, 25, 5, 25, 1201, 10, 25, 3, 25, 5, 25, 1204, 10, 25, + 3, 25, 3, 25, 3, 25, 5, 25, 1209, 10, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, + 25, 3, 25, 5, 25, 1217, 10, 25, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 1223, + 10, 25, 3, 25, 3, 25, 5, 25, 1227, 10, 25, 3, 26, 5, 26, 1230, 10, 26, + 3, 26, 3, 26, 3, 26, 5, 26, 1235, 10, 26, 3, 26, 5, 26, 1238, 10, 26, 3, + 26, 3, 26, 5, 26, 1242, 10, 26, 3, 26, 5, 26, 1245, 10, 26, 3, 26, 3, 26, + 5, 26, 1249, 10, 26, 3, 26, 5, 26, 1252, 10, 26, 3, 27, 3, 27, 3, 27, 3, + 27, 3, 27, 3, 27, 5, 27, 1260, 10, 27, 5, 27, 1262, 10, 27, 3, 28, 3, 28, + 3, 28, 7, 28, 1267, 10, 28, 12, 28, 14, 28, 1270, 11, 28, 3, 28, 3, 28, + 3, 28, 5, 28, 1275, 10, 28, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 1281, 10, + 28, 12, 28, 14, 28, 1284, 11, 28, 5, 28, 1286, 10, 28, 3, 28, 3, 28, 3, + 28, 7, 28, 1291, 10, 28, 12, 28, 14, 28, 1294, 11, 28, 5, 28, 1296, 10, + 28, 5, 28, 1298, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 1304, 10, 29, + 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 1310, 10, 30, 3, 30, 3, 30, 3, 31, 3, + 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, + 3, 31, 5, 31, 1327, 10, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 5, 32, 1334, + 10, 32, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 5, 34, 1341, 10, 34, 3, 34, + 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 1352, 10, + 34, 3, 35, 5, 35, 1355, 10, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, + 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 1368, 10, 37, 3, 37, 3, 37, 3, + 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 1381, + 10, 37, 3, 37, 3, 37, 3, 37, 5, 37, 1386, 10, 37, 3, 38, 3, 38, 3, 38, + 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, + 38, 5, 38, 1402, 10, 38, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1408, 10, 39, + 12, 39, 14, 39, 1411, 11, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, + 3, 40, 5, 40, 1420, 10, 40, 3, 41, 3, 41, 7, 41, 1424, 10, 41, 12, 41, + 14, 41, 1427, 11, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, + 5, 42, 1436, 10, 42, 3, 42, 5, 42, 1439, 10, 42, 3, 42, 3, 42, 3, 42, 5, + 42, 1444, 10, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, + 3, 42, 3, 42, 3, 42, 5, 42, 1457, 10, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, + 42, 5, 42, 1464, 10, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 1471, + 10, 42, 5, 42, 1473, 10, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, + 1480, 10, 42, 3, 43, 3, 43, 5, 43, 1484, 10, 43, 5, 43, 1486, 10, 43, 3, + 43, 3, 43, 3, 43, 5, 43, 1491, 10, 43, 3, 43, 5, 43, 1494, 10, 43, 3, 43, + 3, 43, 7, 43, 1498, 10, 43, 12, 43, 14, 43, 1501, 11, 43, 3, 43, 3, 43, + 5, 43, 1505, 10, 43, 5, 43, 1507, 10, 43, 3, 43, 3, 43, 5, 43, 1511, 10, + 43, 3, 43, 5, 43, 1514, 10, 43, 3, 43, 5, 43, 1517, 10, 43, 3, 43, 3, 43, + 7, 43, 1521, 10, 43, 12, 43, 14, 43, 1524, 11, 43, 3, 43, 3, 43, 5, 43, + 1528, 10, 43, 5, 43, 1530, 10, 43, 3, 43, 3, 43, 3, 43, 5, 43, 1535, 10, + 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 1542, 10, 43, 5, 43, 1544, + 10, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 1551, 10, 43, 3, 44, + 3, 44, 3, 44, 5, 44, 1556, 10, 44, 3, 44, 3, 44, 5, 44, 1560, 10, 44, 3, + 44, 5, 44, 1563, 10, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, + 1571, 10, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 1579, 10, + 45, 5, 45, 1581, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, + 1589, 10, 46, 3, 47, 3, 47, 5, 47, 1593, 10, 47, 3, 47, 5, 47, 1596, 10, + 47, 3, 47, 3, 47, 7, 47, 1600, 10, 47, 12, 47, 14, 47, 1603, 11, 47, 3, + 47, 3, 47, 5, 47, 1607, 10, 47, 3, 47, 5, 47, 1610, 10, 47, 3, 47, 3, 47, + 7, 47, 1614, 10, 47, 12, 47, 14, 47, 1617, 11, 47, 5, 47, 1619, 10, 47, + 3, 48, 3, 48, 5, 48, 1623, 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1628, 10, + 48, 3, 48, 3, 48, 3, 48, 5, 48, 1633, 10, 48, 3, 48, 3, 48, 5, 48, 1637, + 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1642, 10, 48, 3, 48, 5, 48, 1645, 10, + 48, 3, 48, 3, 48, 5, 48, 1649, 10, 48, 3, 48, 3, 48, 5, 48, 1653, 10, 48, + 3, 48, 3, 48, 5, 48, 1657, 10, 48, 3, 48, 3, 48, 5, 48, 1661, 10, 48, 3, + 48, 3, 48, 3, 48, 5, 48, 1666, 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1671, + 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1676, 10, 48, 3, 48, 3, 48, 3, 48, + 3, 48, 5, 48, 1682, 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1687, 10, 48, 3, + 48, 3, 48, 3, 48, 5, 48, 1692, 10, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, + 1698, 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1703, 10, 48, 3, 48, 3, 48, 3, + 48, 5, 48, 1708, 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1713, 10, 48, 3, 48, + 3, 48, 3, 48, 5, 48, 1718, 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1723, 10, + 48, 3, 48, 3, 48, 3, 48, 5, 48, 1728, 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, + 1733, 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1738, 10, 48, 3, 48, 3, 48, 3, + 48, 5, 48, 1743, 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1748, 10, 48, 3, 48, + 3, 48, 3, 48, 3, 48, 5, 48, 1754, 10, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1759, + 10, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1765, 10, 48, 3, 49, 3, 49, + 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 1775, 10, 50, 3, 50, 3, + 50, 3, 50, 3, 50, 3, 50, 5, 50, 1782, 10, 50, 5, 50, 1784, 10, 50, 3, 50, + 3, 50, 3, 50, 3, 50, 7, 50, 1790, 10, 50, 12, 50, 14, 50, 1793, 11, 50, + 3, 50, 3, 50, 5, 50, 1797, 10, 50, 3, 51, 5, 51, 1800, 10, 51, 3, 51, 3, + 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1808, 10, 51, 3, 51, 3, 51, 3, 51, + 3, 51, 5, 51, 1814, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, + 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1830, 10, 51, + 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, + 51, 1842, 10, 51, 5, 51, 1844, 10, 51, 3, 52, 5, 52, 1847, 10, 52, 3, 52, + 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 1855, 10, 52, 3, 52, 3, 52, 3, + 52, 3, 52, 5, 52, 1861, 10, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 1867, + 10, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, + 7, 53, 1878, 10, 53, 12, 53, 14, 53, 1881, 11, 53, 3, 53, 3, 53, 7, 53, + 1885, 10, 53, 12, 53, 14, 53, 1888, 11, 53, 3, 53, 3, 53, 3, 53, 3, 53, + 7, 53, 1894, 10, 53, 12, 53, 14, 53, 1897, 11, 53, 3, 53, 3, 53, 5, 53, + 1901, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1910, + 10, 53, 12, 53, 14, 53, 1913, 11, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, + 1919, 10, 53, 12, 53, 14, 53, 1922, 11, 53, 3, 53, 3, 53, 5, 53, 1926, + 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, + 1936, 10, 53, 12, 53, 14, 53, 1939, 11, 53, 3, 53, 3, 53, 7, 53, 1943, + 10, 53, 12, 53, 14, 53, 1946, 11, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, + 1952, 10, 53, 12, 53, 14, 53, 1955, 11, 53, 3, 53, 3, 53, 5, 53, 1959, + 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, + 1969, 10, 53, 12, 53, 14, 53, 1972, 11, 53, 3, 53, 3, 53, 7, 53, 1976, + 10, 53, 12, 53, 14, 53, 1979, 11, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, + 1985, 10, 53, 12, 53, 14, 53, 1988, 11, 53, 3, 53, 3, 53, 5, 53, 1992, + 10, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1997, 10, 53, 12, 53, 14, 53, 2000, + 11, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 2006, 10, 53, 12, 53, 14, 53, + 2009, 11, 53, 3, 53, 3, 53, 5, 53, 2013, 10, 53, 5, 53, 2015, 10, 53, 3, + 54, 3, 54, 3, 54, 5, 54, 2020, 10, 54, 3, 55, 3, 55, 3, 55, 3, 55, 6, 55, + 2026, 10, 55, 13, 55, 14, 55, 2027, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, + 7, 56, 2035, 10, 56, 12, 56, 14, 56, 2038, 11, 56, 3, 57, 5, 57, 2041, + 10, 57, 3, 57, 3, 57, 5, 57, 2045, 10, 57, 3, 57, 3, 57, 3, 57, 5, 57, + 2050, 10, 57, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 2056, 10, 57, 3, 57, 3, + 57, 3, 57, 3, 57, 5, 57, 2062, 10, 57, 3, 57, 3, 57, 3, 57, 5, 57, 2067, + 10, 57, 3, 57, 3, 57, 3, 57, 5, 57, 2072, 10, 57, 3, 57, 3, 57, 3, 57, + 5, 57, 2077, 10, 57, 3, 57, 3, 57, 3, 57, 5, 57, 2082, 10, 57, 3, 57, 5, + 57, 2085, 10, 57, 3, 58, 3, 58, 3, 58, 5, 58, 2090, 10, 58, 3, 58, 6, 58, + 2093, 10, 58, 13, 58, 14, 58, 2094, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, + 3, 58, 3, 58, 3, 58, 5, 58, 2105, 10, 58, 3, 59, 3, 59, 5, 59, 2109, 10, + 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 2116, 10, 59, 3, 59, 3, 59, + 3, 59, 5, 59, 2121, 10, 59, 3, 59, 5, 59, 2124, 10, 59, 3, 59, 3, 59, 3, + 59, 5, 59, 2129, 10, 59, 3, 59, 5, 59, 2132, 10, 59, 3, 59, 3, 59, 5, 59, + 2136, 10, 59, 3, 59, 3, 59, 5, 59, 2140, 10, 59, 3, 60, 3, 60, 3, 60, 3, + 60, 7, 60, 2146, 10, 60, 12, 60, 14, 60, 2149, 11, 60, 3, 61, 3, 61, 3, + 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, + 3, 62, 3, 62, 3, 62, 5, 62, 2167, 10, 62, 3, 62, 5, 62, 2170, 10, 62, 3, + 62, 5, 62, 2173, 10, 62, 3, 62, 3, 62, 5, 62, 2177, 10, 62, 3, 62, 3, 62, + 3, 63, 3, 63, 3, 63, 3, 63, 7, 63, 2185, 10, 63, 12, 63, 14, 63, 2188, + 11, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 7, 64, + 2198, 10, 64, 12, 64, 14, 64, 2201, 11, 64, 3, 64, 3, 64, 3, 65, 3, 65, + 5, 65, 2207, 10, 65, 3, 65, 5, 65, 2210, 10, 65, 3, 65, 3, 65, 3, 65, 3, + 65, 3, 65, 7, 65, 2217, 10, 65, 12, 65, 14, 65, 2220, 11, 65, 5, 65, 2222, + 10, 65, 3, 65, 5, 65, 2225, 10, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, + 3, 66, 3, 66, 3, 66, 3, 66, 5, 66, 2236, 10, 66, 3, 66, 5, 66, 2239, 10, + 66, 3, 66, 3, 66, 5, 66, 2243, 10, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, + 3, 67, 5, 67, 2251, 10, 67, 3, 67, 5, 67, 2254, 10, 67, 3, 67, 3, 67, 3, + 67, 5, 67, 2259, 10, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 5, 67, + 2267, 10, 67, 3, 67, 3, 67, 3, 67, 3, 67, 5, 67, 2273, 10, 67, 3, 67, 3, + 67, 5, 67, 2277, 10, 67, 3, 68, 3, 68, 5, 68, 2281, 10, 68, 3, 68, 7, 68, + 2284, 10, 68, 12, 68, 14, 68, 2287, 11, 68, 3, 68, 3, 68, 5, 68, 2291, + 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2298, 10, 68, 3, 68, + 3, 68, 5, 68, 2302, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, + 68, 7, 68, 2311, 10, 68, 12, 68, 14, 68, 2314, 11, 68, 3, 68, 3, 68, 3, + 68, 3, 68, 3, 68, 5, 68, 2321, 10, 68, 3, 68, 5, 68, 2324, 10, 68, 3, 68, + 3, 68, 7, 68, 2328, 10, 68, 12, 68, 14, 68, 2331, 11, 68, 3, 68, 3, 68, + 3, 68, 5, 68, 2336, 10, 68, 5, 68, 2338, 10, 68, 3, 68, 3, 68, 3, 68, 5, + 68, 2343, 10, 68, 3, 68, 5, 68, 2346, 10, 68, 3, 68, 3, 68, 7, 68, 2350, + 10, 68, 12, 68, 14, 68, 2353, 11, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2358, + 10, 68, 5, 68, 2360, 10, 68, 3, 68, 3, 68, 5, 68, 2364, 10, 68, 3, 68, + 5, 68, 2367, 10, 68, 3, 68, 5, 68, 2370, 10, 68, 3, 68, 3, 68, 7, 68, 2374, + 10, 68, 12, 68, 14, 68, 2377, 11, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2382, + 10, 68, 3, 68, 5, 68, 2385, 10, 68, 3, 68, 3, 68, 7, 68, 2389, 10, 68, + 12, 68, 14, 68, 2392, 11, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2397, 10, 68, + 5, 68, 2399, 10, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2404, 10, 68, 3, 68, 3, + 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2412, 10, 68, 5, 68, 2414, 10, 68, + 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2423, 10, 68, 3, + 68, 3, 68, 3, 68, 5, 68, 2428, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, + 3, 68, 5, 68, 2436, 10, 68, 3, 68, 3, 68, 5, 68, 2440, 10, 68, 3, 68, 3, + 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2448, 10, 68, 3, 68, 3, 68, 3, 68, + 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2458, 10, 68, 3, 68, 3, 68, 3, + 68, 5, 68, 2463, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2470, + 10, 68, 3, 68, 3, 68, 5, 68, 2474, 10, 68, 3, 68, 3, 68, 5, 68, 2478, 10, + 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, + 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, + 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, + 2510, 10, 68, 3, 68, 3, 68, 5, 68, 2514, 10, 68, 3, 68, 3, 68, 3, 68, 3, + 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2526, 10, 68, 3, 68, + 5, 68, 2529, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, + 68, 2538, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, + 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 7, 68, 2553, 10, 68, 12, 68, 14, 68, + 2556, 11, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, + 68, 5, 68, 2567, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2574, + 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2581, 10, 68, 3, 68, + 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 7, + 68, 2594, 10, 68, 12, 68, 14, 68, 2597, 11, 68, 3, 68, 3, 68, 3, 68, 3, + 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2609, 10, 68, 3, 68, + 3, 68, 3, 68, 3, 68, 5, 68, 2615, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, + 68, 2621, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2627, 10, 68, 3, 68, + 3, 68, 3, 68, 3, 68, 5, 68, 2633, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, + 68, 2639, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 2645, 10, 68, 3, 69, + 3, 69, 3, 69, 5, 69, 2650, 10, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 5, + 70, 2657, 10, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 5, 71, 2664, 10, 71, + 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 2671, 10, 71, 3, 71, 3, 71, 3, + 71, 5, 71, 2676, 10, 71, 3, 71, 7, 71, 2679, 10, 71, 12, 71, 14, 71, 2682, + 11, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, + 3, 73, 3, 73, 5, 73, 2695, 10, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 5, + 74, 2702, 10, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 5, 75, 2709, 10, 75, + 3, 75, 3, 75, 3, 76, 3, 76, 5, 76, 2715, 10, 76, 3, 76, 3, 76, 5, 76, 2719, + 10, 76, 3, 76, 3, 76, 5, 76, 2723, 10, 76, 3, 77, 3, 77, 3, 77, 3, 77, + 3, 77, 5, 77, 2730, 10, 77, 3, 77, 5, 77, 2733, 10, 77, 3, 78, 3, 78, 3, + 78, 5, 78, 2738, 10, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 5, 79, 2745, + 10, 79, 3, 79, 3, 79, 3, 79, 7, 79, 2750, 10, 79, 12, 79, 14, 79, 2753, + 11, 79, 3, 79, 5, 79, 2756, 10, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, + 7, 80, 2763, 10, 80, 12, 80, 14, 80, 2766, 11, 80, 3, 81, 3, 81, 3, 81, + 3, 81, 3, 82, 3, 82, 5, 82, 2774, 10, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, + 83, 3, 83, 3, 83, 5, 83, 2783, 10, 83, 3, 83, 5, 83, 2786, 10, 83, 3, 84, + 3, 84, 5, 84, 2790, 10, 84, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, + 86, 5, 86, 2799, 10, 86, 3, 87, 3, 87, 5, 87, 2803, 10, 87, 3, 87, 5, 87, + 2806, 10, 87, 3, 87, 5, 87, 2809, 10, 87, 3, 87, 3, 87, 3, 87, 3, 87, 5, + 87, 2815, 10, 87, 3, 87, 5, 87, 2818, 10, 87, 3, 87, 3, 87, 3, 87, 3, 87, + 5, 87, 2824, 10, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 7, 87, 2831, 10, + 87, 12, 87, 14, 87, 2834, 11, 87, 5, 87, 2836, 10, 87, 3, 87, 3, 87, 3, + 87, 3, 87, 3, 87, 3, 87, 3, 87, 7, 87, 2845, 10, 87, 12, 87, 14, 87, 2848, + 11, 87, 5, 87, 2850, 10, 87, 3, 88, 3, 88, 3, 88, 5, 88, 2855, 10, 88, + 3, 88, 5, 88, 2858, 10, 88, 3, 88, 3, 88, 3, 88, 5, 88, 2863, 10, 88, 3, + 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 5, 88, 2873, 10, 88, + 3, 88, 3, 88, 3, 88, 5, 88, 2878, 10, 88, 3, 88, 3, 88, 6, 88, 2882, 10, + 88, 13, 88, 14, 88, 2883, 5, 88, 2886, 10, 88, 3, 88, 3, 88, 6, 88, 2890, + 10, 88, 13, 88, 14, 88, 2891, 5, 88, 2894, 10, 88, 3, 88, 3, 88, 3, 88, + 3, 88, 5, 88, 2900, 10, 88, 3, 88, 3, 88, 3, 88, 3, 88, 7, 88, 2906, 10, + 88, 12, 88, 14, 88, 2909, 11, 88, 3, 88, 3, 88, 5, 88, 2913, 10, 88, 3, + 88, 3, 88, 3, 88, 3, 88, 7, 88, 2919, 10, 88, 12, 88, 14, 88, 2922, 11, + 88, 5, 88, 2924, 10, 88, 3, 89, 3, 89, 3, 89, 5, 89, 2929, 10, 89, 3, 89, + 5, 89, 2932, 10, 89, 3, 89, 3, 89, 3, 89, 5, 89, 2937, 10, 89, 3, 89, 3, + 89, 3, 89, 3, 89, 3, 89, 3, 89, 5, 89, 2945, 10, 89, 3, 89, 3, 89, 3, 89, + 3, 89, 3, 89, 3, 89, 5, 89, 2953, 10, 89, 3, 89, 3, 89, 3, 89, 3, 89, 5, + 89, 2959, 10, 89, 3, 89, 3, 89, 3, 89, 3, 89, 7, 89, 2965, 10, 89, 12, + 89, 14, 89, 2968, 11, 89, 3, 89, 3, 89, 5, 89, 2972, 10, 89, 3, 89, 3, + 89, 3, 89, 3, 89, 7, 89, 2978, 10, 89, 12, 89, 14, 89, 2981, 11, 89, 5, + 89, 2983, 10, 89, 3, 90, 3, 90, 5, 90, 2987, 10, 90, 3, 90, 5, 90, 2990, + 10, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 5, 90, 2998, 10, 90, + 3, 90, 3, 90, 3, 90, 3, 90, 5, 90, 3004, 10, 90, 3, 90, 3, 90, 3, 90, 3, + 90, 3, 90, 7, 90, 3011, 10, 90, 12, 90, 14, 90, 3014, 11, 90, 5, 90, 3016, + 10, 90, 3, 91, 3, 91, 5, 91, 3020, 10, 91, 3, 91, 3, 91, 5, 91, 3024, 10, + 91, 3, 91, 3, 91, 6, 91, 3028, 10, 91, 13, 91, 14, 91, 3029, 3, 91, 3, + 91, 5, 91, 3034, 10, 91, 3, 91, 3, 91, 5, 91, 3038, 10, 91, 5, 91, 3040, + 10, 91, 3, 91, 5, 91, 3043, 10, 91, 3, 91, 5, 91, 3046, 10, 91, 3, 91, + 5, 91, 3049, 10, 91, 3, 91, 3, 91, 6, 91, 3053, 10, 91, 13, 91, 14, 91, + 3054, 3, 91, 3, 91, 5, 91, 3059, 10, 91, 3, 91, 5, 91, 3062, 10, 91, 3, + 91, 5, 91, 3065, 10, 91, 3, 91, 5, 91, 3068, 10, 91, 3, 91, 5, 91, 3071, + 10, 91, 5, 91, 3073, 10, 91, 3, 92, 3, 92, 5, 92, 3077, 10, 92, 3, 93, + 3, 93, 3, 93, 3, 93, 5, 93, 3083, 10, 93, 3, 93, 3, 93, 3, 93, 3, 93, 5, + 93, 3089, 10, 93, 3, 93, 7, 93, 3092, 10, 93, 12, 93, 14, 93, 3095, 11, + 93, 5, 93, 3097, 10, 93, 3, 94, 3, 94, 3, 94, 3, 94, 5, 94, 3103, 10, 94, + 3, 95, 3, 95, 5, 95, 3107, 10, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, + 96, 5, 96, 3115, 10, 96, 3, 97, 3, 97, 5, 97, 3119, 10, 97, 3, 97, 5, 97, + 3122, 10, 97, 3, 97, 5, 97, 3125, 10, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, + 97, 3, 97, 3, 97, 5, 97, 3134, 10, 97, 3, 97, 3, 97, 5, 97, 3138, 10, 97, + 3, 97, 5, 97, 3141, 10, 97, 3, 97, 3, 97, 5, 97, 3145, 10, 97, 3, 98, 3, + 98, 5, 98, 3149, 10, 98, 3, 98, 5, 98, 3152, 10, 98, 3, 98, 5, 98, 3155, + 10, 98, 3, 98, 3, 98, 3, 98, 5, 98, 3160, 10, 98, 3, 98, 3, 98, 3, 98, + 3, 98, 5, 98, 3166, 10, 98, 7, 98, 3168, 10, 98, 12, 98, 14, 98, 3171, + 11, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 5, 98, 3180, 10, + 98, 3, 98, 3, 98, 3, 98, 3, 98, 5, 98, 3186, 10, 98, 7, 98, 3188, 10, 98, + 12, 98, 14, 98, 3191, 11, 98, 3, 98, 3, 98, 3, 98, 5, 98, 3196, 10, 98, + 3, 98, 3, 98, 5, 98, 3200, 10, 98, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 3206, + 10, 99, 3, 99, 5, 99, 3209, 10, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, + 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 5, 100, 3221, 10, 100, 3, + 100, 3, 100, 5, 100, 3225, 10, 100, 3, 100, 3, 100, 5, 100, 3229, 10, 100, + 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 5, 101, 3237, 10, 101, + 3, 101, 3, 101, 5, 101, 3241, 10, 101, 3, 102, 3, 102, 3, 102, 3, 102, + 3, 103, 3, 103, 5, 103, 3249, 10, 103, 3, 103, 5, 103, 3252, 10, 103, 3, + 103, 3, 103, 5, 103, 3256, 10, 103, 3, 103, 5, 103, 3259, 10, 103, 3, 103, + 3, 103, 3, 103, 3, 103, 7, 103, 3265, 10, 103, 12, 103, 14, 103, 3268, + 11, 103, 3, 103, 3, 103, 5, 103, 3272, 10, 103, 3, 103, 5, 103, 3275, 10, + 103, 3, 103, 5, 103, 3278, 10, 103, 3, 104, 3, 104, 5, 104, 3282, 10, 104, + 3, 104, 5, 104, 3285, 10, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, + 7, 104, 3292, 10, 104, 12, 104, 14, 104, 3295, 11, 104, 3, 104, 3, 104, + 5, 104, 3299, 10, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 7, 105, + 3306, 10, 105, 12, 105, 14, 105, 3309, 11, 105, 3, 106, 3, 106, 5, 106, + 3313, 10, 106, 3, 107, 3, 107, 3, 107, 7, 107, 3318, 10, 107, 12, 107, + 14, 107, 3321, 11, 107, 3, 108, 3, 108, 7, 108, 3325, 10, 108, 12, 108, + 14, 108, 3328, 11, 108, 3, 108, 3, 108, 3, 108, 7, 108, 3333, 10, 108, + 12, 108, 14, 108, 3336, 11, 108, 3, 108, 3, 108, 5, 108, 3340, 10, 108, + 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 5, 109, 3348, 10, 109, + 3, 109, 5, 109, 3351, 10, 109, 3, 109, 5, 109, 3354, 10, 109, 3, 109, 3, + 109, 3, 109, 7, 109, 3359, 10, 109, 12, 109, 14, 109, 3362, 11, 109, 5, + 109, 3364, 10, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 5, 109, 3371, + 10, 109, 3, 109, 5, 109, 3374, 10, 109, 3, 109, 3, 109, 3, 109, 3, 109, + 3, 109, 3, 109, 5, 109, 3382, 10, 109, 3, 110, 3, 110, 3, 110, 3, 110, + 5, 110, 3388, 10, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, + 3, 111, 3, 111, 3, 111, 5, 111, 3399, 10, 111, 3, 112, 5, 112, 3402, 10, + 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, + 112, 5, 112, 3413, 10, 112, 3, 112, 3, 112, 3, 112, 3, 112, 5, 112, 3419, + 10, 112, 3, 112, 3, 112, 5, 112, 3423, 10, 112, 3, 112, 3, 112, 3, 112, + 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 5, 112, 3434, 10, 112, + 3, 112, 3, 112, 3, 112, 5, 112, 3439, 10, 112, 5, 112, 3441, 10, 112, 3, + 112, 3, 112, 5, 112, 3445, 10, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, + 113, 3, 113, 3, 113, 3, 113, 5, 113, 3455, 10, 113, 3, 114, 3, 114, 3, + 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 5, 114, 3465, 10, 114, 3, + 115, 3, 115, 7, 115, 3469, 10, 115, 12, 115, 14, 115, 3472, 11, 115, 3, + 115, 3, 115, 5, 115, 3476, 10, 115, 3, 115, 5, 115, 3479, 10, 115, 3, 115, + 5, 115, 3482, 10, 115, 3, 115, 5, 115, 3485, 10, 115, 3, 115, 5, 115, 3488, + 10, 115, 3, 115, 5, 115, 3491, 10, 115, 3, 115, 3, 115, 7, 115, 3495, 10, + 115, 12, 115, 14, 115, 3498, 11, 115, 3, 115, 3, 115, 5, 115, 3502, 10, + 115, 3, 115, 5, 115, 3505, 10, 115, 3, 115, 5, 115, 3508, 10, 115, 3, 115, + 5, 115, 3511, 10, 115, 3, 115, 5, 115, 3514, 10, 115, 3, 115, 5, 115, 3517, + 10, 115, 5, 115, 3519, 10, 115, 3, 116, 3, 116, 7, 116, 3523, 10, 116, + 12, 116, 14, 116, 3526, 11, 116, 3, 116, 3, 116, 5, 116, 3530, 10, 116, + 3, 116, 5, 116, 3533, 10, 116, 3, 116, 5, 116, 3536, 10, 116, 3, 116, 5, + 116, 3539, 10, 116, 3, 116, 5, 116, 3542, 10, 116, 3, 117, 3, 117, 5, 117, + 3546, 10, 117, 3, 117, 3, 117, 3, 118, 3, 118, 5, 118, 3552, 10, 118, 3, + 118, 3, 118, 5, 118, 3556, 10, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, + 119, 3, 119, 3, 119, 3, 119, 5, 119, 3566, 10, 119, 3, 120, 3, 120, 5, + 120, 3570, 10, 120, 3, 120, 3, 120, 7, 120, 3574, 10, 120, 12, 120, 14, + 120, 3577, 11, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 5, + 121, 3585, 10, 121, 3, 121, 5, 121, 3588, 10, 121, 3, 121, 3, 121, 5, 121, + 3592, 10, 121, 3, 121, 5, 121, 3595, 10, 121, 3, 121, 3, 121, 5, 121, 3599, + 10, 121, 3, 121, 3, 121, 5, 121, 3603, 10, 121, 3, 121, 5, 121, 3606, 10, + 121, 5, 121, 3608, 10, 121, 3, 122, 3, 122, 3, 122, 3, 122, 7, 122, 3614, + 10, 122, 12, 122, 14, 122, 3617, 11, 122, 3, 122, 3, 122, 3, 122, 3, 122, + 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 5, 122, 3628, 10, 122, 3, 122, + 3, 122, 6, 122, 3632, 10, 122, 13, 122, 14, 122, 3633, 5, 122, 3636, 10, + 122, 3, 122, 3, 122, 6, 122, 3640, 10, 122, 13, 122, 14, 122, 3641, 5, + 122, 3644, 10, 122, 5, 122, 3646, 10, 122, 3, 123, 3, 123, 3, 123, 3, 123, + 5, 123, 3652, 10, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, + 5, 123, 3660, 10, 123, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, + 5, 124, 3668, 10, 124, 3, 125, 3, 125, 3, 125, 3, 125, 5, 125, 3674, 10, + 125, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 7, 126, 3681, 10, 126, 12, + 126, 14, 126, 3684, 11, 126, 3, 126, 3, 126, 5, 126, 3688, 10, 126, 3, + 127, 3, 127, 3, 127, 3, 128, 3, 128, 5, 128, 3695, 10, 128, 3, 129, 3, + 129, 3, 129, 3, 129, 5, 129, 3701, 10, 129, 3, 129, 3, 129, 3, 129, 3, + 129, 3, 129, 5, 129, 3708, 10, 129, 3, 130, 3, 130, 3, 130, 5, 130, 3713, + 10, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 7, 131, 3720, 10, 131, + 12, 131, 14, 131, 3723, 11, 131, 5, 131, 3725, 10, 131, 3, 132, 3, 132, + 5, 132, 3729, 10, 132, 3, 133, 3, 133, 5, 133, 3733, 10, 133, 3, 133, 3, + 133, 5, 133, 3737, 10, 133, 3, 133, 5, 133, 3740, 10, 133, 3, 133, 5, 133, + 3743, 10, 133, 3, 133, 5, 133, 3746, 10, 133, 3, 134, 3, 134, 5, 134, 3750, + 10, 134, 3, 134, 3, 134, 5, 134, 3754, 10, 134, 3, 134, 5, 134, 3757, 10, + 134, 3, 134, 5, 134, 3760, 10, 134, 3, 134, 5, 134, 3763, 10, 134, 3, 135, + 3, 135, 3, 135, 3, 136, 3, 136, 5, 136, 3770, 10, 136, 3, 136, 3, 136, + 5, 136, 3774, 10, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, + 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 7, 138, 3787, 10, 138, 12, 138, + 14, 138, 3790, 11, 138, 3, 139, 3, 139, 3, 139, 3, 140, 3, 140, 3, 140, + 3, 140, 3, 140, 3, 141, 3, 141, 5, 141, 3802, 10, 141, 3, 141, 3, 141, + 3, 141, 3, 141, 7, 141, 3808, 10, 141, 12, 141, 14, 141, 3811, 11, 141, + 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 5, 142, 3820, 10, + 142, 3, 143, 3, 143, 5, 143, 3824, 10, 143, 3, 143, 5, 143, 3827, 10, 143, + 3, 143, 3, 143, 3, 144, 3, 144, 5, 144, 3833, 10, 144, 3, 144, 5, 144, + 3836, 10, 144, 3, 144, 5, 144, 3839, 10, 144, 3, 145, 3, 145, 3, 145, 3, + 145, 3, 145, 3, 145, 3, 145, 5, 145, 3848, 10, 145, 3, 146, 3, 146, 3, + 146, 3, 146, 3, 146, 3, 146, 3, 146, 5, 146, 3857, 10, 146, 3, 147, 3, + 147, 3, 147, 3, 147, 3, 147, 3, 147, 7, 147, 3865, 10, 147, 12, 147, 14, + 147, 3868, 11, 147, 3, 147, 5, 147, 3871, 10, 147, 3, 148, 3, 148, 3, 148, + 3, 148, 3, 148, 3, 148, 7, 148, 3879, 10, 148, 12, 148, 14, 148, 3882, + 11, 148, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 5, 149, + 3891, 10, 149, 3, 150, 3, 150, 3, 150, 3, 151, 3, 151, 3, 151, 5, 151, + 3899, 10, 151, 3, 151, 5, 151, 3902, 10, 151, 3, 152, 3, 152, 3, 152, 3, + 152, 3, 152, 7, 152, 3909, 10, 152, 12, 152, 14, 152, 3912, 11, 152, 5, + 152, 3914, 10, 152, 3, 152, 3, 152, 5, 152, 3918, 10, 152, 3, 152, 7, 152, + 3921, 10, 152, 12, 152, 14, 152, 3924, 11, 152, 3, 152, 5, 152, 3927, 10, + 152, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 7, 153, 3934, 10, 153, 12, + 153, 14, 153, 3937, 11, 153, 5, 153, 3939, 10, 153, 3, 154, 3, 154, 3, + 154, 3, 155, 3, 155, 3, 155, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, + 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, + 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 7, 156, 3968, 10, + 156, 12, 156, 14, 156, 3971, 11, 156, 5, 156, 3973, 10, 156, 3, 156, 5, + 156, 3976, 10, 156, 3, 157, 3, 157, 3, 158, 3, 158, 3, 159, 3, 159, 3, + 160, 3, 160, 3, 160, 3, 160, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, + 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, + 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, + 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, + 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, + 161, 7, 161, 4030, 10, 161, 12, 161, 14, 161, 4033, 11, 161, 3, 161, 3, + 161, 5, 161, 4037, 10, 161, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, + 162, 3, 163, 3, 163, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, + 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, + 164, 3, 164, 3, 164, 5, 164, 4065, 10, 164, 3, 165, 3, 165, 3, 165, 3, + 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 5, + 165, 4079, 10, 165, 3, 166, 3, 166, 3, 166, 7, 166, 4084, 10, 166, 12, + 166, 14, 166, 4087, 11, 166, 3, 166, 5, 166, 4090, 10, 166, 3, 167, 3, + 167, 3, 167, 3, 167, 5, 167, 4096, 10, 167, 3, 168, 3, 168, 3, 168, 3, + 168, 3, 168, 3, 168, 5, 168, 4104, 10, 168, 5, 168, 4106, 10, 168, 3, 169, + 3, 169, 3, 169, 3, 169, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 5, 170, + 4117, 10, 170, 3, 171, 3, 171, 3, 171, 3, 171, 3, 172, 3, 172, 3, 172, + 3, 172, 5, 172, 4127, 10, 172, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, + 5, 173, 4134, 10, 173, 3, 174, 3, 174, 3, 174, 3, 174, 5, 174, 4140, 10, + 174, 3, 175, 3, 175, 3, 175, 3, 175, 3, 176, 3, 176, 5, 176, 4148, 10, + 176, 3, 177, 3, 177, 3, 177, 5, 177, 4153, 10, 177, 3, 177, 3, 177, 3, + 177, 3, 177, 7, 177, 4159, 10, 177, 12, 177, 14, 177, 4162, 11, 177, 3, + 177, 3, 177, 3, 177, 7, 177, 4167, 10, 177, 12, 177, 14, 177, 4170, 11, + 177, 3, 177, 3, 177, 3, 177, 7, 177, 4175, 10, 177, 12, 177, 14, 177, 4178, + 11, 177, 3, 177, 3, 177, 3, 177, 7, 177, 4183, 10, 177, 12, 177, 14, 177, + 4186, 11, 177, 3, 177, 7, 177, 4189, 10, 177, 12, 177, 14, 177, 4192, 11, + 177, 5, 177, 4194, 10, 177, 3, 177, 3, 177, 5, 177, 4198, 10, 177, 3, 178, + 3, 178, 3, 178, 5, 178, 4203, 10, 178, 3, 178, 6, 178, 4206, 10, 178, 13, + 178, 14, 178, 4207, 3, 178, 3, 178, 6, 178, 4212, 10, 178, 13, 178, 14, + 178, 4213, 5, 178, 4216, 10, 178, 3, 178, 3, 178, 3, 178, 3, 179, 3, 179, + 3, 179, 3, 179, 6, 179, 4225, 10, 179, 13, 179, 14, 179, 4226, 3, 179, + 7, 179, 4230, 10, 179, 12, 179, 14, 179, 4233, 11, 179, 3, 179, 3, 179, + 6, 179, 4237, 10, 179, 13, 179, 14, 179, 4238, 5, 179, 4241, 10, 179, 3, + 179, 3, 179, 3, 179, 3, 180, 3, 180, 3, 180, 3, 181, 3, 181, 3, 181, 3, + 182, 3, 182, 3, 182, 5, 182, 4255, 10, 182, 3, 182, 3, 182, 6, 182, 4259, + 10, 182, 13, 182, 14, 182, 4260, 3, 182, 3, 182, 3, 182, 5, 182, 4266, + 10, 182, 3, 183, 3, 183, 3, 183, 5, 183, 4271, 10, 183, 3, 183, 3, 183, + 6, 183, 4275, 10, 183, 13, 183, 14, 183, 4276, 3, 183, 3, 183, 3, 183, + 3, 183, 3, 183, 5, 183, 4284, 10, 183, 3, 184, 3, 184, 3, 184, 3, 185, + 3, 185, 3, 185, 5, 185, 4292, 10, 185, 3, 185, 3, 185, 3, 185, 3, 185, + 6, 185, 4298, 10, 185, 13, 185, 14, 185, 4299, 3, 185, 3, 185, 3, 185, + 5, 185, 4305, 10, 185, 3, 186, 3, 186, 3, 186, 3, 186, 5, 186, 4311, 10, + 186, 3, 186, 5, 186, 4314, 10, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, + 186, 3, 186, 5, 186, 4322, 10, 186, 3, 187, 3, 187, 3, 187, 3, 187, 3, + 187, 5, 187, 4329, 10, 187, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, + 188, 3, 188, 5, 188, 4338, 10, 188, 3, 188, 5, 188, 4341, 10, 188, 3, 189, + 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 190, 3, 190, 3, 190, 3, 190, + 3, 190, 3, 190, 3, 190, 7, 190, 4356, 10, 190, 12, 190, 14, 190, 4359, + 11, 190, 3, 190, 3, 190, 3, 191, 3, 191, 3, 191, 5, 191, 4366, 10, 191, + 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 5, 191, 4374, 10, 191, + 3, 192, 3, 192, 5, 192, 4378, 10, 192, 3, 192, 3, 192, 3, 193, 3, 193, + 3, 193, 5, 193, 4385, 10, 193, 3, 193, 3, 193, 6, 193, 4389, 10, 193, 13, + 193, 14, 193, 4390, 3, 194, 3, 194, 3, 194, 3, 194, 6, 194, 4397, 10, 194, + 13, 194, 14, 194, 4398, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 7, 195, + 4406, 10, 195, 12, 195, 14, 195, 4409, 11, 195, 3, 195, 3, 195, 3, 195, + 5, 195, 4414, 10, 195, 3, 195, 3, 195, 3, 195, 7, 195, 4419, 10, 195, 12, + 195, 14, 195, 4422, 11, 195, 3, 195, 3, 195, 3, 195, 3, 195, 5, 195, 4428, + 10, 195, 3, 195, 7, 195, 4431, 10, 195, 12, 195, 14, 195, 4434, 11, 195, + 5, 195, 4436, 10, 195, 5, 195, 4438, 10, 195, 3, 195, 3, 195, 6, 195, 4442, + 10, 195, 13, 195, 14, 195, 4443, 5, 195, 4446, 10, 195, 3, 195, 3, 195, + 7, 195, 4450, 10, 195, 12, 195, 14, 195, 4453, 11, 195, 5, 195, 4455, 10, + 195, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 7, 196, 4462, 10, 196, 12, + 196, 14, 196, 4465, 11, 196, 3, 196, 3, 196, 3, 196, 5, 196, 4470, 10, + 196, 3, 196, 3, 196, 3, 196, 7, 196, 4475, 10, 196, 12, 196, 14, 196, 4478, + 11, 196, 3, 196, 3, 196, 3, 196, 3, 196, 5, 196, 4484, 10, 196, 3, 196, + 7, 196, 4487, 10, 196, 12, 196, 14, 196, 4490, 11, 196, 5, 196, 4492, 10, + 196, 5, 196, 4494, 10, 196, 3, 196, 3, 196, 6, 196, 4498, 10, 196, 13, + 196, 14, 196, 4499, 5, 196, 4502, 10, 196, 3, 196, 3, 196, 7, 196, 4506, + 10, 196, 12, 196, 14, 196, 4509, 11, 196, 5, 196, 4511, 10, 196, 3, 197, + 3, 197, 3, 197, 5, 197, 4516, 10, 197, 3, 197, 3, 197, 3, 197, 7, 197, + 4521, 10, 197, 12, 197, 14, 197, 4524, 11, 197, 3, 198, 3, 198, 3, 198, + 3, 198, 7, 198, 4530, 10, 198, 12, 198, 14, 198, 4533, 11, 198, 3, 198, + 3, 198, 5, 198, 4537, 10, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, + 7, 198, 4544, 10, 198, 12, 198, 14, 198, 4547, 11, 198, 3, 198, 3, 198, + 3, 198, 3, 198, 5, 198, 4553, 10, 198, 3, 198, 7, 198, 4556, 10, 198, 12, + 198, 14, 198, 4559, 11, 198, 5, 198, 4561, 10, 198, 5, 198, 4563, 10, 198, + 3, 198, 3, 198, 3, 198, 3, 198, 7, 198, 4569, 10, 198, 12, 198, 14, 198, + 4572, 11, 198, 5, 198, 4574, 10, 198, 3, 199, 3, 199, 3, 199, 3, 199, 3, + 199, 3, 199, 3, 199, 3, 199, 7, 199, 4584, 10, 199, 12, 199, 14, 199, 4587, + 11, 199, 3, 199, 3, 199, 3, 199, 5, 199, 4592, 10, 199, 3, 200, 3, 200, + 3, 200, 3, 200, 3, 200, 7, 200, 4599, 10, 200, 12, 200, 14, 200, 4602, + 11, 200, 3, 201, 3, 201, 3, 201, 3, 201, 7, 201, 4608, 10, 201, 12, 201, + 14, 201, 4611, 11, 201, 3, 201, 3, 201, 5, 201, 4615, 10, 201, 3, 201, + 3, 201, 3, 201, 3, 201, 3, 201, 7, 201, 4622, 10, 201, 12, 201, 14, 201, + 4625, 11, 201, 3, 201, 3, 201, 3, 201, 5, 201, 4630, 10, 201, 3, 201, 3, + 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 7, 201, 4639, 10, 201, 12, + 201, 14, 201, 4642, 11, 201, 5, 201, 4644, 10, 201, 3, 202, 3, 202, 3, + 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 7, 202, 4654, 10, 202, 12, + 202, 14, 202, 4657, 11, 202, 3, 203, 3, 203, 3, 203, 3, 203, 5, 203, 4663, + 10, 203, 3, 203, 3, 203, 3, 203, 5, 203, 4668, 10, 203, 3, 204, 3, 204, + 3, 204, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, + 3, 205, 3, 205, 5, 205, 4683, 10, 205, 3, 205, 3, 205, 3, 205, 3, 205, + 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 5, 205, 4694, 10, 205, 3, 205, + 5, 205, 4697, 10, 205, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, + 3, 206, 3, 206, 5, 206, 4707, 10, 206, 3, 207, 3, 207, 3, 207, 3, 207, + 3, 207, 3, 207, 3, 207, 3, 207, 5, 207, 4717, 10, 207, 3, 208, 3, 208, + 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 5, 208, 4727, 10, 208, + 3, 209, 3, 209, 3, 209, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 5, 210, + 4737, 10, 210, 3, 211, 3, 211, 5, 211, 4741, 10, 211, 3, 211, 3, 211, 5, + 211, 4745, 10, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, + 211, 3, 211, 5, 211, 4755, 10, 211, 3, 211, 3, 211, 3, 211, 5, 211, 4760, + 10, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, + 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, + 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, + 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, + 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, + 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, + 3, 211, 3, 211, 3, 211, 5, 211, 4818, 10, 211, 3, 212, 3, 212, 3, 212, + 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, + 3, 212, 3, 212, 3, 212, 3, 212, 5, 212, 4836, 10, 212, 3, 213, 3, 213, + 3, 213, 3, 213, 3, 214, 3, 214, 5, 214, 4844, 10, 214, 3, 214, 3, 214, + 3, 214, 3, 215, 3, 215, 3, 215, 3, 215, 7, 215, 4853, 10, 215, 12, 215, + 14, 215, 4856, 11, 215, 3, 216, 3, 216, 3, 216, 3, 216, 5, 216, 4862, 10, + 216, 3, 217, 3, 217, 5, 217, 4866, 10, 217, 3, 217, 3, 217, 3, 217, 3, + 218, 3, 218, 5, 218, 4873, 10, 218, 3, 218, 3, 218, 3, 218, 5, 218, 4878, + 10, 218, 3, 218, 5, 218, 4881, 10, 218, 3, 218, 5, 218, 4884, 10, 218, + 3, 219, 3, 219, 3, 219, 3, 219, 3, 219, 3, 219, 3, 219, 5, 219, 4893, 10, + 219, 3, 220, 3, 220, 5, 220, 4897, 10, 220, 3, 220, 3, 220, 3, 220, 3, + 220, 3, 220, 3, 220, 3, 220, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, + 221, 3, 222, 3, 222, 3, 222, 3, 222, 3, 223, 3, 223, 3, 223, 3, 223, 3, + 223, 3, 223, 3, 223, 3, 223, 3, 223, 7, 223, 4925, 10, 223, 12, 223, 14, + 223, 4928, 11, 223, 3, 223, 3, 223, 3, 223, 3, 223, 5, 223, 4934, 10, 223, + 3, 223, 3, 223, 5, 223, 4938, 10, 223, 3, 223, 3, 223, 3, 223, 3, 223, + 3, 223, 5, 223, 4945, 10, 223, 3, 223, 5, 223, 4948, 10, 223, 3, 223, 3, + 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, + 223, 3, 223, 7, 223, 4962, 10, 223, 12, 223, 14, 223, 4965, 11, 223, 5, + 223, 4967, 10, 223, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, + 224, 3, 224, 5, 224, 4977, 10, 224, 3, 224, 3, 224, 5, 224, 4981, 10, 224, + 3, 224, 3, 224, 3, 224, 3, 224, 5, 224, 4987, 10, 224, 3, 224, 5, 224, + 4990, 10, 224, 3, 224, 3, 224, 3, 224, 5, 224, 4995, 10, 224, 3, 224, 3, + 224, 5, 224, 4999, 10, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 5, + 224, 5006, 10, 224, 3, 224, 5, 224, 5009, 10, 224, 3, 224, 3, 224, 3, 224, + 3, 224, 5, 224, 5015, 10, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, + 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, + 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 5, 224, + 5039, 10, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, + 3, 224, 3, 224, 3, 224, 3, 224, 5, 224, 5052, 10, 224, 3, 224, 5, 224, + 5055, 10, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, + 3, 224, 5, 224, 5065, 10, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, + 3, 224, 5, 224, 5073, 10, 224, 3, 224, 3, 224, 5, 224, 5077, 10, 224, 3, + 224, 3, 224, 3, 224, 3, 224, 3, 224, 5, 224, 5084, 10, 224, 3, 224, 5, + 224, 5087, 10, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 7, 224, 5094, + 10, 224, 12, 224, 14, 224, 5097, 11, 224, 3, 224, 3, 224, 3, 224, 5, 224, + 5102, 10, 224, 3, 224, 3, 224, 3, 224, 3, 224, 5, 224, 5108, 10, 224, 3, + 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 5, 224, 5118, + 10, 224, 5, 224, 5120, 10, 224, 3, 225, 3, 225, 3, 225, 3, 225, 5, 225, + 5126, 10, 225, 3, 225, 5, 225, 5129, 10, 225, 3, 225, 5, 225, 5132, 10, + 225, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, + 226, 3, 226, 5, 226, 5144, 10, 226, 3, 226, 5, 226, 5147, 10, 226, 3, 227, + 3, 227, 3, 227, 3, 227, 5, 227, 5153, 10, 227, 3, 228, 5, 228, 5156, 10, + 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 5, 228, 5164, 10, + 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 5, 228, 5172, 10, + 228, 3, 229, 3, 229, 3, 229, 3, 229, 5, 229, 5178, 10, 229, 3, 229, 3, + 229, 5, 229, 5182, 10, 229, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, + 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 5, 230, 5196, 10, + 230, 3, 231, 3, 231, 3, 231, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 7, + 232, 5206, 10, 232, 12, 232, 14, 232, 5209, 11, 232, 3, 232, 3, 232, 3, + 232, 3, 232, 5, 232, 5215, 10, 232, 3, 232, 5, 232, 5218, 10, 232, 3, 232, + 3, 232, 3, 232, 3, 233, 3, 233, 5, 233, 5225, 10, 233, 3, 233, 3, 233, + 3, 233, 7, 233, 5230, 10, 233, 12, 233, 14, 233, 5233, 11, 233, 3, 234, + 3, 234, 5, 234, 5237, 10, 234, 3, 234, 6, 234, 5240, 10, 234, 13, 234, + 14, 234, 5241, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, + 7, 235, 5251, 10, 235, 12, 235, 14, 235, 5254, 11, 235, 3, 236, 3, 236, + 3, 236, 3, 236, 3, 237, 3, 237, 3, 238, 3, 238, 5, 238, 5264, 10, 238, + 3, 238, 3, 238, 3, 238, 3, 238, 5, 238, 5270, 10, 238, 3, 239, 3, 239, + 3, 239, 5, 239, 5275, 10, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, + 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 5, 239, 5288, 10, 239, + 5, 239, 5290, 10, 239, 3, 239, 3, 239, 3, 239, 5, 239, 5295, 10, 239, 3, + 239, 3, 239, 3, 239, 5, 239, 5300, 10, 239, 5, 239, 5302, 10, 239, 3, 240, + 3, 240, 3, 240, 3, 240, 3, 240, 5, 240, 5309, 10, 240, 3, 241, 3, 241, + 3, 241, 3, 241, 3, 241, 5, 241, 5316, 10, 241, 3, 241, 5, 241, 5319, 10, + 241, 3, 241, 5, 241, 5322, 10, 241, 3, 241, 3, 241, 3, 241, 3, 241, 5, + 241, 5328, 10, 241, 3, 241, 3, 241, 5, 241, 5332, 10, 241, 3, 242, 3, 242, + 3, 242, 3, 242, 5, 242, 5338, 10, 242, 3, 243, 3, 243, 3, 243, 3, 243, + 5, 243, 5344, 10, 243, 3, 243, 3, 243, 3, 244, 3, 244, 3, 244, 3, 245, + 3, 245, 3, 245, 3, 246, 3, 246, 3, 246, 5, 246, 5357, 10, 246, 3, 246, + 3, 246, 3, 246, 5, 246, 5362, 10, 246, 3, 246, 3, 246, 3, 246, 3, 246, + 7, 246, 5368, 10, 246, 12, 246, 14, 246, 5371, 11, 246, 5, 246, 5373, 10, + 246, 3, 247, 3, 247, 3, 247, 5, 247, 5378, 10, 247, 3, 247, 3, 247, 3, + 247, 5, 247, 5383, 10, 247, 3, 247, 3, 247, 3, 247, 3, 247, 7, 247, 5389, + 10, 247, 12, 247, 14, 247, 5392, 11, 247, 5, 247, 5394, 10, 247, 3, 248, + 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 5, 248, 5402, 10, 248, 3, 249, + 3, 249, 5, 249, 5406, 10, 249, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, + 3, 249, 3, 249, 3, 249, 3, 249, 7, 249, 5417, 10, 249, 12, 249, 14, 249, + 5420, 11, 249, 3, 249, 3, 249, 3, 249, 5, 249, 5425, 10, 249, 3, 249, 3, + 249, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, 7, 249, 5435, 10, + 249, 12, 249, 14, 249, 5438, 11, 249, 5, 249, 5440, 10, 249, 3, 250, 3, + 250, 3, 251, 3, 251, 3, 251, 3, 251, 3, 251, 5, 251, 5449, 10, 251, 3, + 251, 3, 251, 3, 251, 5, 251, 5454, 10, 251, 3, 252, 3, 252, 3, 252, 3, + 252, 5, 252, 5460, 10, 252, 3, 253, 3, 253, 3, 254, 3, 254, 3, 254, 5, + 254, 5467, 10, 254, 5, 254, 5469, 10, 254, 3, 254, 3, 254, 3, 254, 5, 254, + 5474, 10, 254, 5, 254, 5476, 10, 254, 3, 255, 3, 255, 5, 255, 5480, 10, + 255, 3, 255, 3, 255, 3, 255, 3, 255, 5, 255, 5486, 10, 255, 3, 255, 5, + 255, 5489, 10, 255, 3, 256, 3, 256, 3, 257, 3, 257, 3, 258, 3, 258, 3, + 258, 3, 258, 5, 258, 5499, 10, 258, 3, 259, 3, 259, 5, 259, 5503, 10, 259, + 3, 260, 3, 260, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, + 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 3, 261, 6, 261, 5521, 10, + 261, 13, 261, 14, 261, 5522, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 5, + 262, 5530, 10, 262, 5, 262, 5532, 10, 262, 3, 263, 3, 263, 3, 263, 6, 263, + 5537, 10, 263, 13, 263, 14, 263, 5538, 5, 263, 5541, 10, 263, 3, 264, 3, + 264, 5, 264, 5545, 10, 264, 3, 265, 3, 265, 3, 265, 5, 265, 5550, 10, 265, + 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, 3, 266, + 5, 266, 5561, 10, 266, 3, 267, 3, 267, 3, 267, 5, 267, 5566, 10, 267, 3, + 268, 3, 268, 3, 269, 3, 269, 5, 269, 5572, 10, 269, 3, 270, 5, 270, 5575, + 10, 270, 3, 270, 3, 270, 5, 270, 5579, 10, 270, 3, 270, 6, 270, 5582, 10, + 270, 13, 270, 14, 270, 5583, 3, 270, 5, 270, 5587, 10, 270, 3, 270, 3, + 270, 5, 270, 5591, 10, 270, 3, 270, 3, 270, 5, 270, 5595, 10, 270, 5, 270, + 5597, 10, 270, 3, 271, 3, 271, 3, 272, 5, 272, 5602, 10, 272, 3, 272, 3, + 272, 3, 273, 5, 273, 5607, 10, 273, 3, 273, 3, 273, 3, 274, 3, 274, 3, + 274, 3, 274, 3, 274, 3, 274, 3, 274, 3, 274, 3, 274, 5, 274, 5620, 10, + 274, 3, 274, 5, 274, 5623, 10, 274, 3, 275, 3, 275, 5, 275, 5627, 10, 275, + 3, 275, 5, 275, 5630, 10, 275, 3, 275, 5, 275, 5633, 10, 275, 3, 275, 3, + 275, 3, 275, 5, 275, 5638, 10, 275, 3, 275, 5, 275, 5641, 10, 275, 3, 275, + 3, 275, 3, 275, 5, 275, 5646, 10, 275, 3, 275, 3, 275, 3, 275, 5, 275, + 5651, 10, 275, 3, 275, 5, 275, 5654, 10, 275, 3, 275, 3, 275, 3, 275, 5, + 275, 5659, 10, 275, 3, 275, 5, 275, 5662, 10, 275, 3, 275, 3, 275, 3, 275, + 3, 275, 5, 275, 5668, 10, 275, 3, 275, 5, 275, 5671, 10, 275, 3, 275, 3, + 275, 5, 275, 5675, 10, 275, 3, 275, 5, 275, 5678, 10, 275, 3, 275, 5, 275, + 5681, 10, 275, 3, 275, 3, 275, 5, 275, 5685, 10, 275, 3, 275, 5, 275, 5688, + 10, 275, 3, 275, 5, 275, 5691, 10, 275, 3, 275, 3, 275, 5, 275, 5695, 10, + 275, 3, 275, 5, 275, 5698, 10, 275, 3, 275, 5, 275, 5701, 10, 275, 3, 275, + 5, 275, 5704, 10, 275, 3, 275, 3, 275, 5, 275, 5708, 10, 275, 3, 275, 5, + 275, 5711, 10, 275, 3, 275, 5, 275, 5714, 10, 275, 3, 275, 3, 275, 3, 275, + 5, 275, 5719, 10, 275, 3, 275, 3, 275, 3, 275, 5, 275, 5724, 10, 275, 3, + 275, 3, 275, 3, 275, 5, 275, 5729, 10, 275, 3, 275, 5, 275, 5732, 10, 275, + 3, 275, 3, 275, 3, 275, 5, 275, 5737, 10, 275, 3, 275, 5, 275, 5740, 10, + 275, 3, 275, 3, 275, 3, 275, 5, 275, 5745, 10, 275, 3, 275, 5, 275, 5748, + 10, 275, 3, 275, 3, 275, 5, 275, 5752, 10, 275, 3, 275, 3, 275, 5, 275, + 5756, 10, 275, 3, 276, 3, 276, 3, 276, 3, 276, 7, 276, 5762, 10, 276, 12, + 276, 14, 276, 5765, 11, 276, 3, 276, 3, 276, 3, 277, 3, 277, 5, 277, 5771, + 10, 277, 3, 277, 3, 277, 5, 277, 5775, 10, 277, 3, 277, 3, 277, 3, 277, + 5, 277, 5780, 10, 277, 3, 277, 5, 277, 5783, 10, 277, 3, 277, 3, 277, 3, + 277, 5, 277, 5788, 10, 277, 3, 277, 3, 277, 5, 277, 5792, 10, 277, 5, 277, + 5794, 10, 277, 3, 278, 3, 278, 3, 278, 3, 278, 3, 279, 3, 279, 3, 279, + 3, 279, 3, 279, 3, 279, 3, 280, 3, 280, 3, 280, 3, 280, 5, 280, 5810, 10, + 280, 3, 280, 3, 280, 3, 281, 3, 281, 3, 281, 7, 281, 5817, 10, 281, 12, + 281, 14, 281, 5820, 11, 281, 3, 282, 3, 282, 3, 282, 7, 282, 5825, 10, + 282, 12, 282, 14, 282, 5828, 11, 282, 3, 283, 3, 283, 3, 283, 3, 283, 7, + 283, 5834, 10, 283, 12, 283, 14, 283, 5837, 11, 283, 3, 283, 3, 283, 3, + 284, 3, 284, 3, 284, 7, 284, 5844, 10, 284, 12, 284, 14, 284, 5847, 11, + 284, 3, 285, 3, 285, 3, 285, 7, 285, 5852, 10, 285, 12, 285, 14, 285, 5855, + 11, 285, 3, 286, 3, 286, 3, 286, 7, 286, 5860, 10, 286, 12, 286, 14, 286, + 5863, 11, 286, 3, 287, 3, 287, 3, 287, 7, 287, 5868, 10, 287, 12, 287, + 14, 287, 5871, 11, 287, 3, 288, 3, 288, 3, 288, 7, 288, 5876, 10, 288, + 12, 288, 14, 288, 5879, 11, 288, 3, 289, 3, 289, 5, 289, 5883, 10, 289, + 3, 289, 3, 289, 3, 289, 3, 289, 3, 289, 3, 289, 5, 289, 5891, 10, 289, + 3, 289, 3, 289, 3, 289, 5, 289, 5896, 10, 289, 3, 290, 3, 290, 3, 290, + 5, 290, 5901, 10, 290, 3, 290, 5, 290, 5904, 10, 290, 3, 290, 3, 290, 3, + 290, 5, 290, 5909, 10, 290, 3, 290, 5, 290, 5912, 10, 290, 3, 291, 3, 291, + 5, 291, 5916, 10, 291, 3, 292, 3, 292, 3, 292, 3, 293, 3, 293, 3, 293, + 3, 293, 3, 294, 3, 294, 3, 294, 3, 294, 3, 294, 5, 294, 5930, 10, 294, + 3, 294, 3, 294, 3, 294, 3, 294, 3, 294, 5, 294, 5937, 10, 294, 3, 294, + 3, 294, 3, 294, 5, 294, 5942, 10, 294, 3, 295, 3, 295, 3, 295, 5, 295, + 5947, 10, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, + 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, + 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, + 3, 295, 3, 295, 3, 295, 3, 295, 6, 295, 5978, 10, 295, 13, 295, 14, 295, + 5979, 3, 295, 3, 295, 5, 295, 5984, 10, 295, 3, 295, 3, 295, 3, 295, 3, + 295, 6, 295, 5990, 10, 295, 13, 295, 14, 295, 5991, 3, 295, 3, 295, 5, + 295, 5996, 10, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, + 295, 5, 295, 6005, 10, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, + 295, 5, 295, 6013, 10, 295, 3, 295, 3, 295, 3, 295, 5, 295, 6018, 10, 295, + 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 5, 295, 6026, 10, 295, + 3, 295, 3, 295, 3, 295, 5, 295, 6031, 10, 295, 3, 295, 3, 295, 3, 295, + 5, 295, 6036, 10, 295, 5, 295, 6038, 10, 295, 3, 295, 3, 295, 3, 295, 3, + 295, 3, 295, 3, 295, 3, 295, 5, 295, 6047, 10, 295, 3, 295, 3, 295, 3, + 295, 5, 295, 6052, 10, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, + 295, 5, 295, 6060, 10, 295, 3, 295, 3, 295, 3, 295, 5, 295, 6065, 10, 295, + 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 5, 295, 6073, 10, 295, + 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 5, 295, 6081, 10, 295, + 3, 295, 5, 295, 6084, 10, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, + 3, 295, 3, 295, 3, 295, 5, 295, 6094, 10, 295, 3, 295, 3, 295, 3, 295, + 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, 3, 295, + 3, 295, 3, 295, 3, 295, 3, 295, 5, 295, 6112, 10, 295, 3, 295, 3, 295, + 3, 295, 3, 295, 5, 295, 6118, 10, 295, 3, 295, 3, 295, 5, 295, 6122, 10, + 295, 3, 295, 3, 295, 3, 295, 3, 295, 5, 295, 6128, 10, 295, 3, 295, 3, + 295, 5, 295, 6132, 10, 295, 3, 295, 3, 295, 5, 295, 6136, 10, 295, 3, 296, + 3, 296, 3, 296, 3, 296, 3, 296, 3, 297, 3, 297, 3, 297, 3, 297, 7, 297, + 6147, 10, 297, 12, 297, 14, 297, 6150, 11, 297, 3, 297, 3, 297, 3, 297, + 3, 297, 3, 297, 5, 297, 6157, 10, 297, 3, 298, 3, 298, 5, 298, 6161, 10, + 298, 3, 299, 3, 299, 3, 299, 5, 299, 6166, 10, 299, 3, 299, 3, 299, 3, + 299, 3, 299, 3, 299, 3, 299, 3, 299, 5, 299, 6175, 10, 299, 3, 299, 5, + 299, 6178, 10, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, 299, 3, + 299, 3, 299, 3, 299, 3, 299, 5, 299, 6190, 10, 299, 3, 299, 3, 299, 3, + 299, 3, 299, 3, 299, 3, 299, 5, 299, 6198, 10, 299, 3, 299, 3, 299, 3, + 299, 3, 299, 3, 299, 3, 299, 7, 299, 6206, 10, 299, 12, 299, 14, 299, 6209, + 11, 299, 5, 299, 6211, 10, 299, 3, 299, 3, 299, 5, 299, 6215, 10, 299, + 3, 299, 3, 299, 5, 299, 6219, 10, 299, 3, 300, 3, 300, 3, 300, 3, 300, + 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, + 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, 3, 300, + 3, 300, 5, 300, 6244, 10, 300, 3, 301, 3, 301, 3, 301, 3, 301, 3, 301, + 3, 302, 3, 302, 3, 302, 3, 302, 5, 302, 6255, 10, 302, 3, 302, 3, 302, + 3, 302, 3, 302, 3, 302, 5, 302, 6262, 10, 302, 7, 302, 6264, 10, 302, 12, + 302, 14, 302, 6267, 11, 302, 3, 303, 3, 303, 3, 303, 3, 303, 5, 303, 6273, + 10, 303, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 3, 304, 5, 304, 6281, + 10, 304, 3, 304, 3, 304, 3, 304, 5, 304, 6286, 10, 304, 3, 304, 3, 304, + 3, 304, 3, 304, 7, 304, 6292, 10, 304, 12, 304, 14, 304, 6295, 11, 304, + 3, 305, 3, 305, 3, 305, 5, 305, 6300, 10, 305, 3, 305, 3, 305, 3, 305, + 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 5, 305, 6310, 10, 305, 3, 305, + 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, + 3, 305, 5, 305, 6323, 10, 305, 3, 305, 3, 305, 3, 305, 3, 305, 5, 305, + 6329, 10, 305, 3, 305, 3, 305, 3, 305, 3, 305, 5, 305, 6335, 10, 305, 3, + 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, 305, 3, + 305, 3, 305, 3, 305, 3, 305, 3, 305, 5, 305, 6351, 10, 305, 3, 305, 3, + 305, 3, 305, 3, 305, 5, 305, 6357, 10, 305, 3, 305, 3, 305, 3, 305, 3, + 305, 3, 305, 3, 305, 3, 305, 7, 305, 6366, 10, 305, 12, 305, 14, 305, 6369, + 11, 305, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, + 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 7, 306, 6385, 10, 306, + 12, 306, 14, 306, 6388, 11, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, + 3, 306, 3, 306, 6, 306, 6397, 10, 306, 13, 306, 14, 306, 6398, 3, 306, + 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, + 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 5, 306, 6416, 10, 306, 3, 306, + 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, + 3, 306, 3, 306, 3, 306, 3, 306, 3, 306, 7, 306, 6433, 10, 306, 12, 306, + 14, 306, 6436, 11, 306, 3, 307, 3, 307, 3, 308, 3, 308, 3, 308, 3, 308, + 3, 308, 3, 308, 3, 308, 3, 308, 3, 308, 3, 308, 3, 308, 3, 308, 3, 308, + 3, 308, 5, 308, 6454, 10, 308, 3, 309, 3, 309, 3, 309, 3, 309, 3, 309, + 3, 309, 3, 309, 5, 309, 6463, 10, 309, 3, 310, 3, 310, 3, 310, 3, 310, + 3, 310, 3, 310, 3, 310, 5, 310, 6472, 10, 310, 3, 311, 3, 311, 3, 312, + 3, 312, 3, 312, 3, 312, 3, 312, 5, 312, 6481, 10, 312, 3, 313, 3, 313, + 3, 314, 3, 314, 3, 315, 3, 315, 3, 316, 3, 316, 3, 317, 3, 317, 3, 318, + 3, 318, 3, 319, 3, 319, 3, 319, 2, 5, 606, 608, 610, 320, 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, 264, + 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, + 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, + 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, + 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, + 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, + 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, + 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, + 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, + 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, + 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, + 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, + 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, + 626, 628, 630, 632, 634, 636, 2, 130, 4, 2, 37, 37, 139, 139, 4, 2, 486, + 486, 492, 492, 5, 2, 65, 65, 146, 146, 167, 167, 5, 2, 40, 40, 354, 354, + 417, 417, 6, 2, 40, 40, 386, 386, 485, 485, 557, 557, 4, 2, 476, 476, 1078, + 1078, 4, 2, 73, 73, 131, 131, 4, 2, 15, 15, 306, 306, 5, 2, 42, 42, 79, + 79, 170, 170, 4, 2, 399, 399, 510, 510, 5, 2, 468, 468, 595, 595, 602, + 602, 4, 2, 361, 361, 422, 422, 4, 2, 324, 324, 436, 436, 4, 2, 322, 322, + 408, 408, 5, 2, 74, 74, 78, 78, 116, 116, 5, 2, 40, 40, 371, 371, 397, + 397, 5, 2, 40, 40, 367, 367, 725, 725, 4, 2, 583, 583, 616, 616, 4, 2, + 75, 75, 85, 85, 5, 2, 401, 401, 501, 501, 559, 559, 4, 2, 65, 65, 146, + 146, 3, 2, 328, 329, 3, 2, 1068, 1069, 4, 2, 1078, 1078, 1086, 1086, 5, + 2, 396, 396, 431, 431, 483, 483, 4, 2, 40, 40, 1068, 1069, 9, 2, 40, 40, + 341, 341, 343, 343, 371, 371, 397, 397, 523, 523, 1086, 1086, 3, 2, 1069, + 1070, 4, 2, 7, 7, 49, 49, 4, 2, 25, 25, 29, 29, 4, 2, 421, 421, 617, 617, + 4, 2, 13, 13, 161, 161, 4, 2, 178, 178, 620, 620, 4, 2, 20, 20, 134, 134, + 5, 2, 41, 41, 71, 71, 98, 98, 4, 2, 98, 98, 345, 345, 4, 2, 336, 336, 393, + 393, 4, 2, 94, 94, 549, 549, 4, 2, 41, 41, 98, 98, 4, 2, 8, 8, 47, 47, + 4, 2, 174, 174, 613, 613, 6, 2, 396, 396, 431, 431, 482, 482, 513, 513, + 4, 2, 396, 396, 482, 482, 4, 2, 14, 14, 43, 43, 5, 2, 62, 62, 73, 73, 172, + 172, 4, 2, 33, 33, 77, 77, 4, 2, 90, 90, 137, 137, 4, 2, 8, 8, 47, 48, + 3, 2, 572, 573, 4, 2, 404, 404, 555, 555, 4, 2, 212, 212, 439, 439, 7, + 2, 99, 99, 444, 445, 447, 447, 451, 459, 525, 525, 6, 2, 441, 442, 446, + 446, 448, 449, 526, 526, 5, 2, 100, 100, 440, 440, 450, 450, 4, 2, 424, + 424, 574, 574, 4, 2, 568, 568, 570, 570, 4, 2, 316, 316, 575, 575, 4, 2, + 84, 84, 540, 540, 4, 2, 49, 49, 359, 359, 5, 2, 30, 30, 57, 57, 165, 165, + 5, 2, 121, 121, 158, 158, 402, 402, 4, 2, 96, 96, 168, 168, 4, 2, 332, + 332, 560, 560, 4, 2, 38, 38, 615, 615, 4, 2, 106, 106, 436, 436, 4, 2, + 389, 389, 519, 519, 4, 2, 158, 158, 639, 639, 6, 2, 192, 192, 194, 194, + 200, 200, 584, 584, 4, 2, 1037, 1037, 1054, 1054, 4, 2, 317, 317, 527, + 527, 4, 2, 64, 64, 74, 74, 8, 2, 121, 121, 158, 158, 163, 163, 382, 382, + 402, 402, 615, 615, 4, 2, 475, 475, 580, 580, 4, 2, 379, 379, 619, 619, + 4, 2, 121, 121, 402, 402, 5, 2, 75, 75, 86, 86, 415, 415, 5, 2, 404, 404, + 436, 436, 555, 555, 4, 2, 580, 580, 614, 614, 4, 2, 346, 346, 518, 518, + 8, 2, 212, 212, 376, 376, 378, 378, 403, 403, 524, 524, 561, 561, 4, 2, + 43, 44, 58, 58, 5, 2, 389, 389, 503, 503, 817, 817, 4, 2, 428, 428, 597, + 597, 12, 2, 331, 331, 338, 338, 348, 350, 356, 356, 469, 469, 477, 477, + 585, 585, 592, 592, 769, 769, 935, 935, 4, 2, 34, 34, 155, 155, 4, 2, 109, + 109, 927, 927, 13, 2, 331, 331, 338, 338, 348, 350, 356, 356, 469, 469, + 477, 477, 541, 541, 585, 585, 592, 592, 769, 769, 935, 935, 5, 2, 1078, + 1078, 1086, 1086, 1088, 1088, 3, 2, 1090, 1091, 5, 2, 720, 731, 1078, 1078, + 1086, 1087, 4, 2, 1068, 1070, 1079, 1079, 4, 2, 59, 59, 164, 164, 4, 2, + 107, 107, 1082, 1082, 7, 2, 24, 24, 208, 210, 217, 217, 219, 222, 480, + 480, 4, 2, 24, 24, 209, 209, 4, 2, 24, 24, 208, 208, 3, 2, 182, 193, 4, + 2, 169, 169, 558, 558, 4, 2, 197, 202, 397, 397, 8, 2, 203, 203, 214, 214, + 216, 216, 218, 218, 225, 225, 320, 321, 6, 2, 204, 207, 212, 213, 215, + 215, 318, 318, 4, 2, 142, 142, 223, 223, 4, 2, 428, 428, 736, 744, 4, 2, + 212, 212, 480, 480, 5, 2, 203, 204, 206, 206, 428, 428, 4, 2, 287, 288, + 294, 294, 4, 2, 35, 35, 285, 288, 3, 2, 297, 298, 5, 2, 17, 17, 88, 88, + 162, 162, 4, 2, 208, 208, 212, 212, 4, 2, 203, 204, 206, 206, 5, 2, 14, + 14, 43, 43, 925, 925, 5, 2, 269, 269, 275, 276, 281, 281, 5, 2, 270, 272, + 277, 280, 282, 284, 4, 2, 490, 490, 504, 504, 4, 2, 105, 105, 1057, 1057, + 5, 2, 59, 59, 164, 164, 606, 606, 4, 2, 127, 127, 138, 138, 5, 2, 8, 8, + 309, 309, 564, 564, 6, 2, 105, 105, 1049, 1049, 1051, 1051, 1057, 1058, + 3, 2, 1046, 1053, 3, 2, 680, 719, 3, 2, 732, 735, 3, 2, 639, 647, 3, 2, + 631, 638, 5, 2, 203, 207, 220, 220, 223, 223, 23, 2, 34, 34, 46, 46, 69, + 69, 109, 109, 115, 115, 155, 155, 225, 225, 269, 284, 304, 420, 422, 541, + 543, 582, 584, 615, 618, 625, 630, 630, 649, 657, 662, 663, 665, 671, 673, + 679, 725, 725, 769, 769, 935, 935, 20, 2, 37, 37, 90, 90, 137, 137, 139, + 139, 203, 205, 207, 207, 237, 268, 273, 273, 296, 296, 421, 421, 617, 617, + 631, 638, 673, 673, 736, 736, 739, 768, 770, 934, 936, 1036, 1053, 1053, + 2, 7649, 2, 639, 3, 2, 2, 2, 4, 656, 3, 2, 2, 2, 6, 676, 3, 2, 2, 2, 8, + 678, 3, 2, 2, 2, 10, 715, 3, 2, 2, 2, 12, 727, 3, 2, 2, 2, 14, 738, 3, + 2, 2, 2, 16, 755, 3, 2, 2, 2, 18, 760, 3, 2, 2, 2, 20, 772, 3, 2, 2, 2, + 22, 799, 3, 2, 2, 2, 24, 808, 3, 2, 2, 2, 26, 810, 3, 2, 2, 2, 28, 822, + 3, 2, 2, 2, 30, 852, 3, 2, 2, 2, 32, 888, 3, 2, 2, 2, 34, 939, 3, 2, 2, + 2, 36, 965, 3, 2, 2, 2, 38, 995, 3, 2, 2, 2, 40, 1092, 3, 2, 2, 2, 42, + 1094, 3, 2, 2, 2, 44, 1112, 3, 2, 2, 2, 46, 1173, 3, 2, 2, 2, 48, 1192, + 3, 2, 2, 2, 50, 1251, 3, 2, 2, 2, 52, 1253, 3, 2, 2, 2, 54, 1297, 3, 2, + 2, 2, 56, 1303, 3, 2, 2, 2, 58, 1305, 3, 2, 2, 2, 60, 1326, 3, 2, 2, 2, + 62, 1333, 3, 2, 2, 2, 64, 1335, 3, 2, 2, 2, 66, 1351, 3, 2, 2, 2, 68, 1354, + 3, 2, 2, 2, 70, 1359, 3, 2, 2, 2, 72, 1385, 3, 2, 2, 2, 74, 1401, 3, 2, + 2, 2, 76, 1403, 3, 2, 2, 2, 78, 1419, 3, 2, 2, 2, 80, 1421, 3, 2, 2, 2, + 82, 1479, 3, 2, 2, 2, 84, 1550, 3, 2, 2, 2, 86, 1552, 3, 2, 2, 2, 88, 1580, + 3, 2, 2, 2, 90, 1588, 3, 2, 2, 2, 92, 1618, 3, 2, 2, 2, 94, 1764, 3, 2, + 2, 2, 96, 1766, 3, 2, 2, 2, 98, 1769, 3, 2, 2, 2, 100, 1843, 3, 2, 2, 2, + 102, 1866, 3, 2, 2, 2, 104, 2014, 3, 2, 2, 2, 106, 2019, 3, 2, 2, 2, 108, + 2021, 3, 2, 2, 2, 110, 2031, 3, 2, 2, 2, 112, 2084, 3, 2, 2, 2, 114, 2104, + 3, 2, 2, 2, 116, 2106, 3, 2, 2, 2, 118, 2141, 3, 2, 2, 2, 120, 2150, 3, + 2, 2, 2, 122, 2157, 3, 2, 2, 2, 124, 2180, 3, 2, 2, 2, 126, 2189, 3, 2, + 2, 2, 128, 2204, 3, 2, 2, 2, 130, 2226, 3, 2, 2, 2, 132, 2246, 3, 2, 2, + 2, 134, 2644, 3, 2, 2, 2, 136, 2646, 3, 2, 2, 2, 138, 2653, 3, 2, 2, 2, + 140, 2660, 3, 2, 2, 2, 142, 2683, 3, 2, 2, 2, 144, 2691, 3, 2, 2, 2, 146, + 2698, 3, 2, 2, 2, 148, 2705, 3, 2, 2, 2, 150, 2712, 3, 2, 2, 2, 152, 2724, + 3, 2, 2, 2, 154, 2734, 3, 2, 2, 2, 156, 2741, 3, 2, 2, 2, 158, 2757, 3, + 2, 2, 2, 160, 2767, 3, 2, 2, 2, 162, 2771, 3, 2, 2, 2, 164, 2777, 3, 2, + 2, 2, 166, 2789, 3, 2, 2, 2, 168, 2791, 3, 2, 2, 2, 170, 2798, 3, 2, 2, + 2, 172, 2800, 3, 2, 2, 2, 174, 2851, 3, 2, 2, 2, 176, 2925, 3, 2, 2, 2, + 178, 2984, 3, 2, 2, 2, 180, 3072, 3, 2, 2, 2, 182, 3076, 3, 2, 2, 2, 184, + 3096, 3, 2, 2, 2, 186, 3098, 3, 2, 2, 2, 188, 3106, 3, 2, 2, 2, 190, 3114, + 3, 2, 2, 2, 192, 3116, 3, 2, 2, 2, 194, 3146, 3, 2, 2, 2, 196, 3201, 3, + 2, 2, 2, 198, 3210, 3, 2, 2, 2, 200, 3230, 3, 2, 2, 2, 202, 3242, 3, 2, + 2, 2, 204, 3246, 3, 2, 2, 2, 206, 3279, 3, 2, 2, 2, 208, 3300, 3, 2, 2, + 2, 210, 3310, 3, 2, 2, 2, 212, 3314, 3, 2, 2, 2, 214, 3339, 3, 2, 2, 2, + 216, 3381, 3, 2, 2, 2, 218, 3383, 3, 2, 2, 2, 220, 3398, 3, 2, 2, 2, 222, + 3444, 3, 2, 2, 2, 224, 3454, 3, 2, 2, 2, 226, 3464, 3, 2, 2, 2, 228, 3518, + 3, 2, 2, 2, 230, 3520, 3, 2, 2, 2, 232, 3543, 3, 2, 2, 2, 234, 3549, 3, + 2, 2, 2, 236, 3565, 3, 2, 2, 2, 238, 3569, 3, 2, 2, 2, 240, 3607, 3, 2, + 2, 2, 242, 3645, 3, 2, 2, 2, 244, 3659, 3, 2, 2, 2, 246, 3667, 3, 2, 2, + 2, 248, 3669, 3, 2, 2, 2, 250, 3675, 3, 2, 2, 2, 252, 3689, 3, 2, 2, 2, + 254, 3692, 3, 2, 2, 2, 256, 3696, 3, 2, 2, 2, 258, 3712, 3, 2, 2, 2, 260, + 3714, 3, 2, 2, 2, 262, 3726, 3, 2, 2, 2, 264, 3730, 3, 2, 2, 2, 266, 3747, + 3, 2, 2, 2, 268, 3764, 3, 2, 2, 2, 270, 3767, 3, 2, 2, 2, 272, 3777, 3, + 2, 2, 2, 274, 3781, 3, 2, 2, 2, 276, 3791, 3, 2, 2, 2, 278, 3794, 3, 2, + 2, 2, 280, 3799, 3, 2, 2, 2, 282, 3819, 3, 2, 2, 2, 284, 3821, 3, 2, 2, + 2, 286, 3838, 3, 2, 2, 2, 288, 3847, 3, 2, 2, 2, 290, 3856, 3, 2, 2, 2, + 292, 3858, 3, 2, 2, 2, 294, 3872, 3, 2, 2, 2, 296, 3883, 3, 2, 2, 2, 298, + 3892, 3, 2, 2, 2, 300, 3895, 3, 2, 2, 2, 302, 3903, 3, 2, 2, 2, 304, 3928, + 3, 2, 2, 2, 306, 3940, 3, 2, 2, 2, 308, 3943, 3, 2, 2, 2, 310, 3975, 3, + 2, 2, 2, 312, 3977, 3, 2, 2, 2, 314, 3979, 3, 2, 2, 2, 316, 3981, 3, 2, + 2, 2, 318, 3983, 3, 2, 2, 2, 320, 4036, 3, 2, 2, 2, 322, 4038, 3, 2, 2, + 2, 324, 4044, 3, 2, 2, 2, 326, 4064, 3, 2, 2, 2, 328, 4078, 3, 2, 2, 2, + 330, 4089, 3, 2, 2, 2, 332, 4091, 3, 2, 2, 2, 334, 4097, 3, 2, 2, 2, 336, + 4107, 3, 2, 2, 2, 338, 4111, 3, 2, 2, 2, 340, 4118, 3, 2, 2, 2, 342, 4122, + 3, 2, 2, 2, 344, 4128, 3, 2, 2, 2, 346, 4135, 3, 2, 2, 2, 348, 4141, 3, + 2, 2, 2, 350, 4147, 3, 2, 2, 2, 352, 4152, 3, 2, 2, 2, 354, 4199, 3, 2, + 2, 2, 356, 4220, 3, 2, 2, 2, 358, 4245, 3, 2, 2, 2, 360, 4248, 3, 2, 2, + 2, 362, 4254, 3, 2, 2, 2, 364, 4270, 3, 2, 2, 2, 366, 4285, 3, 2, 2, 2, + 368, 4291, 3, 2, 2, 2, 370, 4321, 3, 2, 2, 2, 372, 4323, 3, 2, 2, 2, 374, + 4330, 3, 2, 2, 2, 376, 4342, 3, 2, 2, 2, 378, 4348, 3, 2, 2, 2, 380, 4373, + 3, 2, 2, 2, 382, 4377, 3, 2, 2, 2, 384, 4381, 3, 2, 2, 2, 386, 4392, 3, + 2, 2, 2, 388, 4454, 3, 2, 2, 2, 390, 4510, 3, 2, 2, 2, 392, 4512, 3, 2, + 2, 2, 394, 4525, 3, 2, 2, 2, 396, 4575, 3, 2, 2, 2, 398, 4593, 3, 2, 2, + 2, 400, 4643, 3, 2, 2, 2, 402, 4645, 3, 2, 2, 2, 404, 4658, 3, 2, 2, 2, + 406, 4669, 3, 2, 2, 2, 408, 4696, 3, 2, 2, 2, 410, 4706, 3, 2, 2, 2, 412, + 4716, 3, 2, 2, 2, 414, 4718, 3, 2, 2, 2, 416, 4728, 3, 2, 2, 2, 418, 4731, + 3, 2, 2, 2, 420, 4817, 3, 2, 2, 2, 422, 4835, 3, 2, 2, 2, 424, 4837, 3, + 2, 2, 2, 426, 4841, 3, 2, 2, 2, 428, 4848, 3, 2, 2, 2, 430, 4857, 3, 2, + 2, 2, 432, 4863, 3, 2, 2, 2, 434, 4870, 3, 2, 2, 2, 436, 4892, 3, 2, 2, + 2, 438, 4894, 3, 2, 2, 2, 440, 4905, 3, 2, 2, 2, 442, 4911, 3, 2, 2, 2, + 444, 4966, 3, 2, 2, 2, 446, 5119, 3, 2, 2, 2, 448, 5131, 3, 2, 2, 2, 450, + 5146, 3, 2, 2, 2, 452, 5152, 3, 2, 2, 2, 454, 5171, 3, 2, 2, 2, 456, 5181, + 3, 2, 2, 2, 458, 5195, 3, 2, 2, 2, 460, 5197, 3, 2, 2, 2, 462, 5200, 3, + 2, 2, 2, 464, 5222, 3, 2, 2, 2, 466, 5234, 3, 2, 2, 2, 468, 5243, 3, 2, + 2, 2, 470, 5255, 3, 2, 2, 2, 472, 5259, 3, 2, 2, 2, 474, 5261, 3, 2, 2, + 2, 476, 5301, 3, 2, 2, 2, 478, 5308, 3, 2, 2, 2, 480, 5310, 3, 2, 2, 2, + 482, 5333, 3, 2, 2, 2, 484, 5339, 3, 2, 2, 2, 486, 5347, 3, 2, 2, 2, 488, + 5350, 3, 2, 2, 2, 490, 5353, 3, 2, 2, 2, 492, 5374, 3, 2, 2, 2, 494, 5395, + 3, 2, 2, 2, 496, 5403, 3, 2, 2, 2, 498, 5441, 3, 2, 2, 2, 500, 5453, 3, + 2, 2, 2, 502, 5455, 3, 2, 2, 2, 504, 5461, 3, 2, 2, 2, 506, 5475, 3, 2, + 2, 2, 508, 5479, 3, 2, 2, 2, 510, 5490, 3, 2, 2, 2, 512, 5492, 3, 2, 2, + 2, 514, 5498, 3, 2, 2, 2, 516, 5502, 3, 2, 2, 2, 518, 5504, 3, 2, 2, 2, + 520, 5506, 3, 2, 2, 2, 522, 5524, 3, 2, 2, 2, 524, 5540, 3, 2, 2, 2, 526, + 5544, 3, 2, 2, 2, 528, 5549, 3, 2, 2, 2, 530, 5560, 3, 2, 2, 2, 532, 5565, + 3, 2, 2, 2, 534, 5567, 3, 2, 2, 2, 536, 5571, 3, 2, 2, 2, 538, 5596, 3, + 2, 2, 2, 540, 5598, 3, 2, 2, 2, 542, 5601, 3, 2, 2, 2, 544, 5606, 3, 2, + 2, 2, 546, 5622, 3, 2, 2, 2, 548, 5755, 3, 2, 2, 2, 550, 5757, 3, 2, 2, + 2, 552, 5793, 3, 2, 2, 2, 554, 5795, 3, 2, 2, 2, 556, 5799, 3, 2, 2, 2, + 558, 5805, 3, 2, 2, 2, 560, 5813, 3, 2, 2, 2, 562, 5821, 3, 2, 2, 2, 564, + 5829, 3, 2, 2, 2, 566, 5840, 3, 2, 2, 2, 568, 5848, 3, 2, 2, 2, 570, 5856, + 3, 2, 2, 2, 572, 5864, 3, 2, 2, 2, 574, 5872, 3, 2, 2, 2, 576, 5890, 3, + 2, 2, 2, 578, 5911, 3, 2, 2, 2, 580, 5915, 3, 2, 2, 2, 582, 5917, 3, 2, + 2, 2, 584, 5920, 3, 2, 2, 2, 586, 5941, 3, 2, 2, 2, 588, 6135, 3, 2, 2, + 2, 590, 6137, 3, 2, 2, 2, 592, 6156, 3, 2, 2, 2, 594, 6158, 3, 2, 2, 2, + 596, 6218, 3, 2, 2, 2, 598, 6243, 3, 2, 2, 2, 600, 6245, 3, 2, 2, 2, 602, + 6254, 3, 2, 2, 2, 604, 6272, 3, 2, 2, 2, 606, 6285, 3, 2, 2, 2, 608, 6296, + 3, 2, 2, 2, 610, 6415, 3, 2, 2, 2, 612, 6437, 3, 2, 2, 2, 614, 6453, 3, + 2, 2, 2, 616, 6462, 3, 2, 2, 2, 618, 6471, 3, 2, 2, 2, 620, 6473, 3, 2, + 2, 2, 622, 6480, 3, 2, 2, 2, 624, 6482, 3, 2, 2, 2, 626, 6484, 3, 2, 2, + 2, 628, 6486, 3, 2, 2, 2, 630, 6488, 3, 2, 2, 2, 632, 6490, 3, 2, 2, 2, + 634, 6492, 3, 2, 2, 2, 636, 6494, 3, 2, 2, 2, 638, 640, 5, 4, 3, 2, 639, + 638, 3, 2, 2, 2, 639, 640, 3, 2, 2, 2, 640, 642, 3, 2, 2, 2, 641, 643, + 7, 1050, 2, 2, 642, 641, 3, 2, 2, 2, 642, 643, 3, 2, 2, 2, 643, 644, 3, + 2, 2, 2, 644, 645, 7, 2, 2, 3, 645, 3, 3, 2, 2, 2, 646, 648, 5, 6, 4, 2, + 647, 649, 7, 1050, 2, 2, 648, 647, 3, 2, 2, 2, 648, 649, 3, 2, 2, 2, 649, + 651, 3, 2, 2, 2, 650, 652, 7, 1066, 2, 2, 651, 650, 3, 2, 2, 2, 651, 652, + 3, 2, 2, 2, 652, 655, 3, 2, 2, 2, 653, 655, 5, 8, 5, 2, 654, 646, 3, 2, + 2, 2, 654, 653, 3, 2, 2, 2, 655, 658, 3, 2, 2, 2, 656, 654, 3, 2, 2, 2, + 656, 657, 3, 2, 2, 2, 657, 667, 3, 2, 2, 2, 658, 656, 3, 2, 2, 2, 659, + 664, 5, 6, 4, 2, 660, 662, 7, 1050, 2, 2, 661, 660, 3, 2, 2, 2, 661, 662, + 3, 2, 2, 2, 662, 663, 3, 2, 2, 2, 663, 665, 7, 1066, 2, 2, 664, 661, 3, + 2, 2, 2, 664, 665, 3, 2, 2, 2, 665, 668, 3, 2, 2, 2, 666, 668, 5, 8, 5, + 2, 667, 659, 3, 2, 2, 2, 667, 666, 3, 2, 2, 2, 668, 5, 3, 2, 2, 2, 669, + 677, 5, 10, 6, 2, 670, 677, 5, 12, 7, 2, 671, 677, 5, 14, 8, 2, 672, 677, + 5, 16, 9, 2, 673, 677, 5, 18, 10, 2, 674, 677, 5, 22, 12, 2, 675, 677, + 5, 24, 13, 2, 676, 669, 3, 2, 2, 2, 676, 670, 3, 2, 2, 2, 676, 671, 3, + 2, 2, 2, 676, 672, 3, 2, 2, 2, 676, 673, 3, 2, 2, 2, 676, 674, 3, 2, 2, + 2, 676, 675, 3, 2, 2, 2, 677, 7, 3, 2, 2, 2, 678, 679, 7, 1066, 2, 2, 679, + 9, 3, 2, 2, 2, 680, 716, 5, 26, 14, 2, 681, 716, 5, 28, 15, 2, 682, 716, + 5, 30, 16, 2, 683, 716, 5, 32, 17, 2, 684, 716, 5, 34, 18, 2, 685, 716, + 5, 36, 19, 2, 686, 716, 5, 38, 20, 2, 687, 716, 5, 40, 21, 2, 688, 716, + 5, 42, 22, 2, 689, 716, 5, 44, 23, 2, 690, 716, 5, 46, 24, 2, 691, 716, + 5, 48, 25, 2, 692, 716, 5, 114, 58, 2, 693, 716, 5, 116, 59, 2, 694, 716, + 5, 118, 60, 2, 695, 716, 5, 120, 61, 2, 696, 716, 5, 122, 62, 2, 697, 716, + 5, 124, 63, 2, 698, 716, 5, 126, 64, 2, 699, 716, 5, 128, 65, 2, 700, 716, + 5, 130, 66, 2, 701, 716, 5, 132, 67, 2, 702, 716, 5, 136, 69, 2, 703, 716, + 5, 138, 70, 2, 704, 716, 5, 140, 71, 2, 705, 716, 5, 142, 72, 2, 706, 716, + 5, 144, 73, 2, 707, 716, 5, 146, 74, 2, 708, 716, 5, 148, 75, 2, 709, 716, + 5, 150, 76, 2, 710, 716, 5, 152, 77, 2, 711, 716, 5, 154, 78, 2, 712, 716, + 5, 156, 79, 2, 713, 716, 5, 158, 80, 2, 714, 716, 5, 162, 82, 2, 715, 680, + 3, 2, 2, 2, 715, 681, 3, 2, 2, 2, 715, 682, 3, 2, 2, 2, 715, 683, 3, 2, + 2, 2, 715, 684, 3, 2, 2, 2, 715, 685, 3, 2, 2, 2, 715, 686, 3, 2, 2, 2, + 715, 687, 3, 2, 2, 2, 715, 688, 3, 2, 2, 2, 715, 689, 3, 2, 2, 2, 715, + 690, 3, 2, 2, 2, 715, 691, 3, 2, 2, 2, 715, 692, 3, 2, 2, 2, 715, 693, + 3, 2, 2, 2, 715, 694, 3, 2, 2, 2, 715, 695, 3, 2, 2, 2, 715, 696, 3, 2, + 2, 2, 715, 697, 3, 2, 2, 2, 715, 698, 3, 2, 2, 2, 715, 699, 3, 2, 2, 2, + 715, 700, 3, 2, 2, 2, 715, 701, 3, 2, 2, 2, 715, 702, 3, 2, 2, 2, 715, + 703, 3, 2, 2, 2, 715, 704, 3, 2, 2, 2, 715, 705, 3, 2, 2, 2, 715, 706, + 3, 2, 2, 2, 715, 707, 3, 2, 2, 2, 715, 708, 3, 2, 2, 2, 715, 709, 3, 2, + 2, 2, 715, 710, 3, 2, 2, 2, 715, 711, 3, 2, 2, 2, 715, 712, 3, 2, 2, 2, + 715, 713, 3, 2, 2, 2, 715, 714, 3, 2, 2, 2, 716, 11, 3, 2, 2, 2, 717, 728, + 5, 180, 91, 2, 718, 728, 5, 172, 87, 2, 719, 728, 5, 182, 92, 2, 720, 728, + 5, 166, 84, 2, 721, 728, 5, 178, 90, 2, 722, 728, 5, 164, 83, 2, 723, 728, + 5, 174, 88, 2, 724, 728, 5, 176, 89, 2, 725, 728, 5, 168, 85, 2, 726, 728, + 5, 170, 86, 2, 727, 717, 3, 2, 2, 2, 727, 718, 3, 2, 2, 2, 727, 719, 3, + 2, 2, 2, 727, 720, 3, 2, 2, 2, 727, 721, 3, 2, 2, 2, 727, 722, 3, 2, 2, + 2, 727, 723, 3, 2, 2, 2, 727, 724, 3, 2, 2, 2, 727, 725, 3, 2, 2, 2, 727, + 726, 3, 2, 2, 2, 728, 13, 3, 2, 2, 2, 729, 739, 5, 260, 131, 2, 730, 739, + 5, 262, 132, 2, 731, 739, 5, 264, 133, 2, 732, 739, 5, 266, 134, 2, 733, + 739, 5, 268, 135, 2, 734, 739, 5, 270, 136, 2, 735, 739, 5, 272, 137, 2, + 736, 739, 5, 274, 138, 2, 737, 739, 5, 276, 139, 2, 738, 729, 3, 2, 2, + 2, 738, 730, 3, 2, 2, 2, 738, 731, 3, 2, 2, 2, 738, 732, 3, 2, 2, 2, 738, + 733, 3, 2, 2, 2, 738, 734, 3, 2, 2, 2, 738, 735, 3, 2, 2, 2, 738, 736, + 3, 2, 2, 2, 738, 737, 3, 2, 2, 2, 739, 15, 3, 2, 2, 2, 740, 756, 5, 292, + 147, 2, 741, 756, 5, 294, 148, 2, 742, 756, 5, 296, 149, 2, 743, 756, 5, + 298, 150, 2, 744, 756, 5, 300, 151, 2, 745, 756, 5, 302, 152, 2, 746, 756, + 5, 304, 153, 2, 747, 756, 5, 306, 154, 2, 748, 756, 5, 308, 155, 2, 749, + 756, 5, 332, 167, 2, 750, 756, 5, 334, 168, 2, 751, 756, 5, 336, 169, 2, + 752, 756, 5, 338, 170, 2, 753, 756, 5, 340, 171, 2, 754, 756, 5, 342, 172, + 2, 755, 740, 3, 2, 2, 2, 755, 741, 3, 2, 2, 2, 755, 742, 3, 2, 2, 2, 755, + 743, 3, 2, 2, 2, 755, 744, 3, 2, 2, 2, 755, 745, 3, 2, 2, 2, 755, 746, + 3, 2, 2, 2, 755, 747, 3, 2, 2, 2, 755, 748, 3, 2, 2, 2, 755, 749, 3, 2, + 2, 2, 755, 750, 3, 2, 2, 2, 755, 751, 3, 2, 2, 2, 755, 752, 3, 2, 2, 2, + 755, 753, 3, 2, 2, 2, 755, 754, 3, 2, 2, 2, 756, 17, 3, 2, 2, 2, 757, 761, + 5, 344, 173, 2, 758, 761, 5, 346, 174, 2, 759, 761, 5, 348, 175, 2, 760, + 757, 3, 2, 2, 2, 760, 758, 3, 2, 2, 2, 760, 759, 3, 2, 2, 2, 761, 19, 3, + 2, 2, 2, 762, 773, 5, 352, 177, 2, 763, 773, 5, 354, 178, 2, 764, 773, + 5, 356, 179, 2, 765, 773, 5, 360, 181, 2, 766, 773, 5, 362, 182, 2, 767, + 773, 5, 364, 183, 2, 768, 773, 5, 368, 185, 2, 769, 773, 5, 358, 180, 2, + 770, 773, 5, 366, 184, 2, 771, 773, 5, 370, 186, 2, 772, 762, 3, 2, 2, + 2, 772, 763, 3, 2, 2, 2, 772, 764, 3, 2, 2, 2, 772, 765, 3, 2, 2, 2, 772, + 766, 3, 2, 2, 2, 772, 767, 3, 2, 2, 2, 772, 768, 3, 2, 2, 2, 772, 769, + 3, 2, 2, 2, 772, 770, 3, 2, 2, 2, 772, 771, 3, 2, 2, 2, 773, 21, 3, 2, + 2, 2, 774, 800, 5, 388, 195, 2, 775, 800, 5, 390, 196, 2, 776, 800, 5, + 392, 197, 2, 777, 800, 5, 394, 198, 2, 778, 800, 5, 396, 199, 2, 779, 800, + 5, 398, 200, 2, 780, 800, 5, 400, 201, 2, 781, 800, 5, 402, 202, 2, 782, + 800, 5, 426, 214, 2, 783, 800, 5, 428, 215, 2, 784, 800, 5, 430, 216, 2, + 785, 800, 5, 432, 217, 2, 786, 800, 5, 434, 218, 2, 787, 800, 5, 438, 220, + 2, 788, 800, 5, 440, 221, 2, 789, 800, 5, 442, 222, 2, 790, 800, 5, 444, + 223, 2, 791, 800, 5, 446, 224, 2, 792, 800, 5, 460, 231, 2, 793, 800, 5, + 462, 232, 2, 794, 800, 5, 464, 233, 2, 795, 800, 5, 466, 234, 2, 796, 800, + 5, 468, 235, 2, 797, 800, 5, 470, 236, 2, 798, 800, 5, 472, 237, 2, 799, + 774, 3, 2, 2, 2, 799, 775, 3, 2, 2, 2, 799, 776, 3, 2, 2, 2, 799, 777, + 3, 2, 2, 2, 799, 778, 3, 2, 2, 2, 799, 779, 3, 2, 2, 2, 799, 780, 3, 2, + 2, 2, 799, 781, 3, 2, 2, 2, 799, 782, 3, 2, 2, 2, 799, 783, 3, 2, 2, 2, + 799, 784, 3, 2, 2, 2, 799, 785, 3, 2, 2, 2, 799, 786, 3, 2, 2, 2, 799, + 787, 3, 2, 2, 2, 799, 788, 3, 2, 2, 2, 799, 789, 3, 2, 2, 2, 799, 790, + 3, 2, 2, 2, 799, 791, 3, 2, 2, 2, 799, 792, 3, 2, 2, 2, 799, 793, 3, 2, + 2, 2, 799, 794, 3, 2, 2, 2, 799, 795, 3, 2, 2, 2, 799, 796, 3, 2, 2, 2, + 799, 797, 3, 2, 2, 2, 799, 798, 3, 2, 2, 2, 800, 23, 3, 2, 2, 2, 801, 809, + 5, 482, 242, 2, 802, 809, 5, 484, 243, 2, 803, 809, 5, 486, 244, 2, 804, + 809, 5, 488, 245, 2, 805, 809, 5, 490, 246, 2, 806, 809, 5, 492, 247, 2, + 807, 809, 5, 496, 249, 2, 808, 801, 3, 2, 2, 2, 808, 802, 3, 2, 2, 2, 808, + 803, 3, 2, 2, 2, 808, 804, 3, 2, 2, 2, 808, 805, 3, 2, 2, 2, 808, 806, + 3, 2, 2, 2, 808, 807, 3, 2, 2, 2, 809, 25, 3, 2, 2, 2, 810, 811, 7, 32, + 2, 2, 811, 813, 9, 2, 2, 2, 812, 814, 5, 584, 293, 2, 813, 812, 3, 2, 2, + 2, 813, 814, 3, 2, 2, 2, 814, 815, 3, 2, 2, 2, 815, 819, 5, 528, 265, 2, + 816, 818, 5, 50, 26, 2, 817, 816, 3, 2, 2, 2, 818, 821, 3, 2, 2, 2, 819, + 817, 3, 2, 2, 2, 819, 820, 3, 2, 2, 2, 820, 27, 3, 2, 2, 2, 821, 819, 3, + 2, 2, 2, 822, 824, 7, 32, 2, 2, 823, 825, 5, 52, 27, 2, 824, 823, 3, 2, + 2, 2, 824, 825, 3, 2, 2, 2, 825, 826, 3, 2, 2, 2, 826, 828, 7, 382, 2, + 2, 827, 829, 5, 584, 293, 2, 828, 827, 3, 2, 2, 2, 828, 829, 3, 2, 2, 2, + 829, 830, 3, 2, 2, 2, 830, 831, 5, 502, 252, 2, 831, 832, 7, 110, 2, 2, + 832, 833, 7, 552, 2, 2, 833, 840, 5, 54, 28, 2, 834, 835, 7, 110, 2, 2, + 835, 837, 7, 342, 2, 2, 836, 838, 7, 105, 2, 2, 837, 836, 3, 2, 2, 2, 837, + 838, 3, 2, 2, 2, 838, 839, 3, 2, 2, 2, 839, 841, 7, 512, 2, 2, 840, 834, + 3, 2, 2, 2, 840, 841, 3, 2, 2, 2, 841, 843, 3, 2, 2, 2, 842, 844, 5, 62, + 32, 2, 843, 842, 3, 2, 2, 2, 843, 844, 3, 2, 2, 2, 844, 847, 3, 2, 2, 2, + 845, 846, 7, 339, 2, 2, 846, 848, 7, 1078, 2, 2, 847, 845, 3, 2, 2, 2, + 847, 848, 3, 2, 2, 2, 848, 849, 3, 2, 2, 2, 849, 850, 7, 368, 2, 2, 850, + 851, 5, 350, 176, 2, 851, 29, 3, 2, 2, 2, 852, 854, 7, 32, 2, 2, 853, 855, + 9, 3, 2, 2, 854, 853, 3, 2, 2, 2, 854, 855, 3, 2, 2, 2, 855, 857, 3, 2, + 2, 2, 856, 858, 9, 4, 2, 2, 857, 856, 3, 2, 2, 2, 857, 858, 3, 2, 2, 2, + 858, 859, 3, 2, 2, 2, 859, 860, 7, 75, 2, 2, 860, 862, 5, 528, 265, 2, + 861, 863, 5, 64, 33, 2, 862, 861, 3, 2, 2, 2, 862, 863, 3, 2, 2, 2, 863, + 864, 3, 2, 2, 2, 864, 865, 7, 110, 2, 2, 865, 866, 5, 504, 253, 2, 866, + 870, 5, 564, 283, 2, 867, 869, 5, 66, 34, 2, 868, 867, 3, 2, 2, 2, 869, + 872, 3, 2, 2, 2, 870, 868, 3, 2, 2, 2, 870, 871, 3, 2, 2, 2, 871, 885, + 3, 2, 2, 2, 872, 870, 3, 2, 2, 2, 873, 875, 7, 308, 2, 2, 874, 876, 7, + 1054, 2, 2, 875, 874, 3, 2, 2, 2, 875, 876, 3, 2, 2, 2, 876, 877, 3, 2, + 2, 2, 877, 884, 9, 5, 2, 2, 878, 880, 7, 96, 2, 2, 879, 881, 7, 1054, 2, + 2, 880, 879, 3, 2, 2, 2, 880, 881, 3, 2, 2, 2, 881, 882, 3, 2, 2, 2, 882, + 884, 9, 6, 2, 2, 883, 873, 3, 2, 2, 2, 883, 878, 3, 2, 2, 2, 884, 887, + 3, 2, 2, 2, 885, 883, 3, 2, 2, 2, 885, 886, 3, 2, 2, 2, 886, 31, 3, 2, + 2, 2, 887, 885, 3, 2, 2, 2, 888, 889, 7, 32, 2, 2, 889, 890, 7, 437, 2, + 2, 890, 891, 7, 69, 2, 2, 891, 892, 5, 528, 265, 2, 892, 893, 7, 7, 2, + 2, 893, 894, 7, 603, 2, 2, 894, 900, 7, 1078, 2, 2, 895, 897, 7, 416, 2, + 2, 896, 898, 7, 1054, 2, 2, 897, 896, 3, 2, 2, 2, 897, 898, 3, 2, 2, 2, + 898, 899, 3, 2, 2, 2, 899, 901, 5, 536, 269, 2, 900, 895, 3, 2, 2, 2, 900, + 901, 3, 2, 2, 2, 901, 907, 3, 2, 2, 2, 902, 904, 7, 604, 2, 2, 903, 905, + 7, 1054, 2, 2, 904, 903, 3, 2, 2, 2, 904, 905, 3, 2, 2, 2, 905, 906, 3, + 2, 2, 2, 906, 908, 5, 536, 269, 2, 907, 902, 3, 2, 2, 2, 907, 908, 3, 2, + 2, 2, 908, 914, 3, 2, 2, 2, 909, 911, 7, 522, 2, 2, 910, 912, 7, 1054, + 2, 2, 911, 910, 3, 2, 2, 2, 911, 912, 3, 2, 2, 2, 912, 913, 3, 2, 2, 2, + 913, 915, 5, 536, 269, 2, 914, 909, 3, 2, 2, 2, 914, 915, 3, 2, 2, 2, 915, + 921, 3, 2, 2, 2, 916, 918, 7, 484, 2, 2, 917, 919, 7, 1054, 2, 2, 918, + 917, 3, 2, 2, 2, 918, 919, 3, 2, 2, 2, 919, 920, 3, 2, 2, 2, 920, 922, + 5, 528, 265, 2, 921, 916, 3, 2, 2, 2, 921, 922, 3, 2, 2, 2, 922, 924, 3, + 2, 2, 2, 923, 925, 7, 618, 2, 2, 924, 923, 3, 2, 2, 2, 924, 925, 3, 2, + 2, 2, 925, 931, 3, 2, 2, 2, 926, 928, 7, 339, 2, 2, 927, 929, 7, 1054, + 2, 2, 928, 927, 3, 2, 2, 2, 928, 929, 3, 2, 2, 2, 929, 930, 3, 2, 2, 2, + 930, 932, 7, 1078, 2, 2, 931, 926, 3, 2, 2, 2, 931, 932, 3, 2, 2, 2, 932, + 933, 3, 2, 2, 2, 933, 935, 7, 376, 2, 2, 934, 936, 7, 1054, 2, 2, 935, + 934, 3, 2, 2, 2, 935, 936, 3, 2, 2, 2, 936, 937, 3, 2, 2, 2, 937, 938, + 5, 518, 260, 2, 938, 33, 3, 2, 2, 2, 939, 941, 7, 32, 2, 2, 940, 942, 5, + 52, 27, 2, 941, 940, 3, 2, 2, 2, 941, 942, 3, 2, 2, 2, 942, 943, 3, 2, + 2, 2, 943, 944, 7, 121, 2, 2, 944, 945, 5, 502, 252, 2, 945, 947, 7, 1063, + 2, 2, 946, 948, 5, 68, 35, 2, 947, 946, 3, 2, 2, 2, 947, 948, 3, 2, 2, + 2, 948, 953, 3, 2, 2, 2, 949, 950, 7, 1065, 2, 2, 950, 952, 5, 68, 35, + 2, 951, 949, 3, 2, 2, 2, 952, 955, 3, 2, 2, 2, 953, 951, 3, 2, 2, 2, 953, + 954, 3, 2, 2, 2, 954, 956, 3, 2, 2, 2, 955, 953, 3, 2, 2, 2, 956, 960, + 7, 1064, 2, 2, 957, 959, 5, 72, 37, 2, 958, 957, 3, 2, 2, 2, 959, 962, + 3, 2, 2, 2, 960, 958, 3, 2, 2, 2, 960, 961, 3, 2, 2, 2, 961, 963, 3, 2, + 2, 2, 962, 960, 3, 2, 2, 2, 963, 964, 5, 350, 176, 2, 964, 35, 3, 2, 2, + 2, 965, 967, 7, 32, 2, 2, 966, 968, 5, 52, 27, 2, 967, 966, 3, 2, 2, 2, + 967, 968, 3, 2, 2, 2, 968, 969, 3, 2, 2, 2, 969, 970, 7, 402, 2, 2, 970, + 971, 5, 502, 252, 2, 971, 973, 7, 1063, 2, 2, 972, 974, 5, 70, 36, 2, 973, + 972, 3, 2, 2, 2, 973, 974, 3, 2, 2, 2, 974, 979, 3, 2, 2, 2, 975, 976, + 7, 1065, 2, 2, 976, 978, 5, 70, 36, 2, 977, 975, 3, 2, 2, 2, 978, 981, + 3, 2, 2, 2, 979, 977, 3, 2, 2, 2, 979, 980, 3, 2, 2, 2, 980, 982, 3, 2, + 2, 2, 981, 979, 3, 2, 2, 2, 982, 983, 7, 1064, 2, 2, 983, 984, 7, 543, + 2, 2, 984, 988, 5, 548, 275, 2, 985, 987, 5, 72, 37, 2, 986, 985, 3, 2, + 2, 2, 987, 990, 3, 2, 2, 2, 988, 986, 3, 2, 2, 2, 988, 989, 3, 2, 2, 2, + 989, 993, 3, 2, 2, 2, 990, 988, 3, 2, 2, 2, 991, 994, 5, 350, 176, 2, 992, + 994, 5, 366, 184, 2, 993, 991, 3, 2, 2, 2, 993, 992, 3, 2, 2, 2, 994, 37, + 3, 2, 2, 2, 995, 996, 7, 32, 2, 2, 996, 997, 7, 554, 2, 2, 997, 998, 5, + 528, 265, 2, 998, 999, 7, 63, 2, 2, 999, 1000, 7, 357, 2, 2, 1000, 1001, + 7, 622, 2, 2, 1001, 1002, 9, 7, 2, 2, 1002, 1003, 7, 496, 2, 2, 1003, 1004, + 7, 1063, 2, 2, 1004, 1009, 5, 74, 38, 2, 1005, 1006, 7, 1065, 2, 2, 1006, + 1008, 5, 74, 38, 2, 1007, 1005, 3, 2, 2, 2, 1008, 1011, 3, 2, 2, 2, 1009, + 1007, 3, 2, 2, 2, 1009, 1010, 3, 2, 2, 2, 1010, 1012, 3, 2, 2, 2, 1011, + 1009, 3, 2, 2, 2, 1012, 1013, 7, 1064, 2, 2, 1013, 39, 3, 2, 2, 2, 1014, + 1016, 7, 32, 2, 2, 1015, 1017, 7, 594, 2, 2, 1016, 1015, 3, 2, 2, 2, 1016, + 1017, 3, 2, 2, 2, 1017, 1018, 3, 2, 2, 2, 1018, 1020, 7, 158, 2, 2, 1019, + 1021, 5, 584, 293, 2, 1020, 1019, 3, 2, 2, 2, 1020, 1021, 3, 2, 2, 2, 1021, + 1022, 3, 2, 2, 2, 1022, 1030, 5, 504, 253, 2, 1023, 1024, 7, 91, 2, 2, + 1024, 1031, 5, 504, 253, 2, 1025, 1026, 7, 1063, 2, 2, 1026, 1027, 7, 91, + 2, 2, 1027, 1028, 5, 504, 253, 2, 1028, 1029, 7, 1064, 2, 2, 1029, 1031, + 3, 2, 2, 2, 1030, 1023, 3, 2, 2, 2, 1030, 1025, 3, 2, 2, 2, 1031, 1093, + 3, 2, 2, 2, 1032, 1034, 7, 32, 2, 2, 1033, 1035, 7, 594, 2, 2, 1034, 1033, + 3, 2, 2, 2, 1034, 1035, 3, 2, 2, 2, 1035, 1036, 3, 2, 2, 2, 1036, 1038, + 7, 158, 2, 2, 1037, 1039, 5, 584, 293, 2, 1038, 1037, 3, 2, 2, 2, 1038, + 1039, 3, 2, 2, 2, 1039, 1040, 3, 2, 2, 2, 1040, 1042, 5, 504, 253, 2, 1041, + 1043, 5, 76, 39, 2, 1042, 1041, 3, 2, 2, 2, 1042, 1043, 3, 2, 2, 2, 1043, + 1054, 3, 2, 2, 2, 1044, 1051, 5, 94, 48, 2, 1045, 1047, 7, 1065, 2, 2, + 1046, 1045, 3, 2, 2, 2, 1046, 1047, 3, 2, 2, 2, 1047, 1048, 3, 2, 2, 2, + 1048, 1050, 5, 94, 48, 2, 1049, 1046, 3, 2, 2, 2, 1050, 1053, 3, 2, 2, + 2, 1051, 1049, 3, 2, 2, 2, 1051, 1052, 3, 2, 2, 2, 1052, 1055, 3, 2, 2, + 2, 1053, 1051, 3, 2, 2, 2, 1054, 1044, 3, 2, 2, 2, 1054, 1055, 3, 2, 2, + 2, 1055, 1057, 3, 2, 2, 2, 1056, 1058, 5, 98, 50, 2, 1057, 1056, 3, 2, + 2, 2, 1057, 1058, 3, 2, 2, 2, 1058, 1060, 3, 2, 2, 2, 1059, 1061, 9, 8, + 2, 2, 1060, 1059, 3, 2, 2, 2, 1060, 1061, 3, 2, 2, 2, 1061, 1063, 3, 2, + 2, 2, 1062, 1064, 7, 13, 2, 2, 1063, 1062, 3, 2, 2, 2, 1063, 1064, 3, 2, + 2, 2, 1064, 1065, 3, 2, 2, 2, 1065, 1066, 5, 180, 91, 2, 1066, 1093, 3, + 2, 2, 2, 1067, 1069, 7, 32, 2, 2, 1068, 1070, 7, 594, 2, 2, 1069, 1068, + 3, 2, 2, 2, 1069, 1070, 3, 2, 2, 2, 1070, 1071, 3, 2, 2, 2, 1071, 1073, + 7, 158, 2, 2, 1072, 1074, 5, 584, 293, 2, 1073, 1072, 3, 2, 2, 2, 1073, + 1074, 3, 2, 2, 2, 1074, 1075, 3, 2, 2, 2, 1075, 1076, 5, 504, 253, 2, 1076, + 1087, 5, 76, 39, 2, 1077, 1084, 5, 94, 48, 2, 1078, 1080, 7, 1065, 2, 2, + 1079, 1078, 3, 2, 2, 2, 1079, 1080, 3, 2, 2, 2, 1080, 1081, 3, 2, 2, 2, + 1081, 1083, 5, 94, 48, 2, 1082, 1079, 3, 2, 2, 2, 1083, 1086, 3, 2, 2, + 2, 1084, 1082, 3, 2, 2, 2, 1084, 1085, 3, 2, 2, 2, 1085, 1088, 3, 2, 2, + 2, 1086, 1084, 3, 2, 2, 2, 1087, 1077, 3, 2, 2, 2, 1087, 1088, 3, 2, 2, + 2, 1088, 1090, 3, 2, 2, 2, 1089, 1091, 5, 98, 50, 2, 1090, 1089, 3, 2, + 2, 2, 1090, 1091, 3, 2, 2, 2, 1091, 1093, 3, 2, 2, 2, 1092, 1014, 3, 2, + 2, 2, 1092, 1032, 3, 2, 2, 2, 1092, 1067, 3, 2, 2, 2, 1093, 41, 3, 2, 2, + 2, 1094, 1095, 7, 32, 2, 2, 1095, 1096, 7, 593, 2, 2, 1096, 1097, 5, 528, + 265, 2, 1097, 1098, 7, 7, 2, 2, 1098, 1099, 7, 358, 2, 2, 1099, 1103, 7, + 1078, 2, 2, 1100, 1101, 7, 394, 2, 2, 1101, 1102, 7, 1054, 2, 2, 1102, + 1104, 5, 536, 269, 2, 1103, 1100, 3, 2, 2, 2, 1103, 1104, 3, 2, 2, 2, 1104, + 1110, 3, 2, 2, 2, 1105, 1107, 7, 376, 2, 2, 1106, 1108, 7, 1054, 2, 2, + 1107, 1106, 3, 2, 2, 2, 1107, 1108, 3, 2, 2, 2, 1108, 1109, 3, 2, 2, 2, + 1109, 1111, 5, 518, 260, 2, 1110, 1105, 3, 2, 2, 2, 1110, 1111, 3, 2, 2, + 2, 1111, 43, 3, 2, 2, 2, 1112, 1113, 7, 32, 2, 2, 1113, 1114, 7, 593, 2, + 2, 1114, 1115, 5, 528, 265, 2, 1115, 1116, 7, 7, 2, 2, 1116, 1117, 7, 358, + 2, 2, 1117, 1118, 7, 1078, 2, 2, 1118, 1119, 7, 172, 2, 2, 1119, 1120, + 7, 437, 2, 2, 1120, 1121, 7, 69, 2, 2, 1121, 1127, 5, 528, 265, 2, 1122, + 1124, 7, 390, 2, 2, 1123, 1125, 7, 1054, 2, 2, 1124, 1123, 3, 2, 2, 2, + 1124, 1125, 3, 2, 2, 2, 1125, 1126, 3, 2, 2, 2, 1126, 1128, 5, 536, 269, + 2, 1127, 1122, 3, 2, 2, 2, 1127, 1128, 3, 2, 2, 2, 1128, 1134, 3, 2, 2, + 2, 1129, 1131, 7, 416, 2, 2, 1130, 1132, 7, 1054, 2, 2, 1131, 1130, 3, + 2, 2, 2, 1131, 1132, 3, 2, 2, 2, 1132, 1133, 3, 2, 2, 2, 1133, 1135, 5, + 536, 269, 2, 1134, 1129, 3, 2, 2, 2, 1134, 1135, 3, 2, 2, 2, 1135, 1141, + 3, 2, 2, 2, 1136, 1138, 7, 313, 2, 2, 1137, 1139, 7, 1054, 2, 2, 1138, + 1137, 3, 2, 2, 2, 1138, 1139, 3, 2, 2, 2, 1139, 1140, 3, 2, 2, 2, 1140, + 1142, 5, 536, 269, 2, 1141, 1136, 3, 2, 2, 2, 1141, 1142, 3, 2, 2, 2, 1142, + 1148, 3, 2, 2, 2, 1143, 1145, 7, 463, 2, 2, 1144, 1146, 7, 1054, 2, 2, + 1145, 1144, 3, 2, 2, 2, 1145, 1146, 3, 2, 2, 2, 1146, 1147, 3, 2, 2, 2, + 1147, 1149, 5, 536, 269, 2, 1148, 1143, 3, 2, 2, 2, 1148, 1149, 3, 2, 2, + 2, 1149, 1155, 3, 2, 2, 2, 1150, 1152, 7, 484, 2, 2, 1151, 1153, 7, 1054, + 2, 2, 1152, 1151, 3, 2, 2, 2, 1152, 1153, 3, 2, 2, 2, 1153, 1154, 3, 2, + 2, 2, 1154, 1156, 5, 528, 265, 2, 1155, 1150, 3, 2, 2, 2, 1155, 1156, 3, + 2, 2, 2, 1156, 1158, 3, 2, 2, 2, 1157, 1159, 7, 618, 2, 2, 1158, 1157, + 3, 2, 2, 2, 1158, 1159, 3, 2, 2, 2, 1159, 1165, 3, 2, 2, 2, 1160, 1162, + 7, 339, 2, 2, 1161, 1163, 7, 1054, 2, 2, 1162, 1161, 3, 2, 2, 2, 1162, + 1163, 3, 2, 2, 2, 1163, 1164, 3, 2, 2, 2, 1164, 1166, 7, 1078, 2, 2, 1165, + 1160, 3, 2, 2, 2, 1165, 1166, 3, 2, 2, 2, 1166, 1167, 3, 2, 2, 2, 1167, + 1169, 7, 376, 2, 2, 1168, 1170, 7, 1054, 2, 2, 1169, 1168, 3, 2, 2, 2, + 1169, 1170, 3, 2, 2, 2, 1170, 1171, 3, 2, 2, 2, 1171, 1172, 5, 518, 260, + 2, 1172, 45, 3, 2, 2, 2, 1173, 1175, 7, 32, 2, 2, 1174, 1176, 5, 52, 27, + 2, 1175, 1174, 3, 2, 2, 2, 1175, 1176, 3, 2, 2, 2, 1176, 1177, 3, 2, 2, + 2, 1177, 1178, 7, 163, 2, 2, 1178, 1179, 5, 502, 252, 2, 1179, 1180, 9, + 9, 2, 2, 1180, 1181, 9, 10, 2, 2, 1181, 1182, 7, 110, 2, 2, 1182, 1183, + 5, 504, 253, 2, 1183, 1184, 7, 61, 2, 2, 1184, 1185, 7, 50, 2, 2, 1185, + 1188, 7, 548, 2, 2, 1186, 1187, 9, 11, 2, 2, 1187, 1189, 5, 502, 252, 2, + 1188, 1186, 3, 2, 2, 2, 1188, 1189, 3, 2, 2, 2, 1189, 1190, 3, 2, 2, 2, + 1190, 1191, 5, 350, 176, 2, 1191, 47, 3, 2, 2, 2, 1192, 1195, 7, 32, 2, + 2, 1193, 1194, 7, 114, 2, 2, 1194, 1196, 7, 131, 2, 2, 1195, 1193, 3, 2, + 2, 2, 1195, 1196, 3, 2, 2, 2, 1196, 1200, 3, 2, 2, 2, 1197, 1198, 7, 308, + 2, 2, 1198, 1199, 7, 1054, 2, 2, 1199, 1201, 9, 12, 2, 2, 1200, 1197, 3, + 2, 2, 2, 1200, 1201, 3, 2, 2, 2, 1201, 1203, 3, 2, 2, 2, 1202, 1204, 5, + 52, 27, 2, 1203, 1202, 3, 2, 2, 2, 1203, 1204, 3, 2, 2, 2, 1204, 1208, + 3, 2, 2, 2, 1205, 1206, 7, 147, 2, 2, 1206, 1207, 7, 553, 2, 2, 1207, 1209, + 9, 13, 2, 2, 1208, 1205, 3, 2, 2, 2, 1208, 1209, 3, 2, 2, 2, 1209, 1210, + 3, 2, 2, 2, 1210, 1211, 7, 615, 2, 2, 1211, 1216, 5, 502, 252, 2, 1212, + 1213, 7, 1063, 2, 2, 1213, 1214, 5, 560, 281, 2, 1214, 1215, 7, 1064, 2, + 2, 1215, 1217, 3, 2, 2, 2, 1216, 1212, 3, 2, 2, 2, 1216, 1217, 3, 2, 2, + 2, 1217, 1218, 3, 2, 2, 2, 1218, 1219, 7, 13, 2, 2, 1219, 1226, 5, 180, + 91, 2, 1220, 1222, 7, 178, 2, 2, 1221, 1223, 9, 14, 2, 2, 1222, 1221, 3, + 2, 2, 2, 1222, 1223, 3, 2, 2, 2, 1223, 1224, 3, 2, 2, 2, 1224, 1225, 7, + 25, 2, 2, 1225, 1227, 7, 112, 2, 2, 1226, 1220, 3, 2, 2, 2, 1226, 1227, + 3, 2, 2, 2, 1227, 49, 3, 2, 2, 2, 1228, 1230, 7, 40, 2, 2, 1229, 1228, + 3, 2, 2, 2, 1229, 1230, 3, 2, 2, 2, 1230, 1234, 3, 2, 2, 2, 1231, 1232, + 7, 24, 2, 2, 1232, 1235, 7, 142, 2, 2, 1233, 1235, 7, 774, 2, 2, 1234, + 1231, 3, 2, 2, 2, 1234, 1233, 3, 2, 2, 2, 1235, 1237, 3, 2, 2, 2, 1236, + 1238, 7, 1054, 2, 2, 1237, 1236, 3, 2, 2, 2, 1237, 1238, 3, 2, 2, 2, 1238, + 1241, 3, 2, 2, 2, 1239, 1242, 5, 514, 258, 2, 1240, 1242, 7, 40, 2, 2, + 1241, 1239, 3, 2, 2, 2, 1241, 1240, 3, 2, 2, 2, 1242, 1252, 3, 2, 2, 2, + 1243, 1245, 7, 40, 2, 2, 1244, 1243, 3, 2, 2, 2, 1244, 1245, 3, 2, 2, 2, + 1245, 1246, 3, 2, 2, 2, 1246, 1248, 7, 26, 2, 2, 1247, 1249, 7, 1054, 2, + 2, 1248, 1247, 3, 2, 2, 2, 1248, 1249, 3, 2, 2, 2, 1249, 1250, 3, 2, 2, + 2, 1250, 1252, 5, 516, 259, 2, 1251, 1229, 3, 2, 2, 2, 1251, 1244, 3, 2, + 2, 2, 1252, 51, 3, 2, 2, 2, 1253, 1254, 7, 361, 2, 2, 1254, 1261, 7, 1054, + 2, 2, 1255, 1262, 5, 510, 256, 2, 1256, 1259, 7, 35, 2, 2, 1257, 1258, + 7, 1063, 2, 2, 1258, 1260, 7, 1064, 2, 2, 1259, 1257, 3, 2, 2, 2, 1259, + 1260, 3, 2, 2, 2, 1260, 1262, 3, 2, 2, 2, 1261, 1255, 3, 2, 2, 2, 1261, + 1256, 3, 2, 2, 2, 1262, 53, 3, 2, 2, 2, 1263, 1264, 7, 310, 2, 2, 1264, + 1268, 5, 56, 29, 2, 1265, 1267, 5, 58, 30, 2, 1266, 1265, 3, 2, 2, 2, 1267, + 1270, 3, 2, 2, 2, 1268, 1266, 3, 2, 2, 2, 1268, 1269, 3, 2, 2, 2, 1269, + 1298, 3, 2, 2, 2, 1270, 1268, 3, 2, 2, 2, 1271, 1274, 7, 384, 2, 2, 1272, + 1275, 5, 534, 268, 2, 1273, 1275, 5, 606, 304, 2, 1274, 1272, 3, 2, 2, + 2, 1274, 1273, 3, 2, 2, 2, 1275, 1276, 3, 2, 2, 2, 1276, 1285, 5, 60, 31, + 2, 1277, 1278, 7, 576, 2, 2, 1278, 1282, 5, 56, 29, 2, 1279, 1281, 5, 58, + 30, 2, 1280, 1279, 3, 2, 2, 2, 1281, 1284, 3, 2, 2, 2, 1282, 1280, 3, 2, + 2, 2, 1282, 1283, 3, 2, 2, 2, 1283, 1286, 3, 2, 2, 2, 1284, 1282, 3, 2, + 2, 2, 1285, 1277, 3, 2, 2, 2, 1285, 1286, 3, 2, 2, 2, 1286, 1295, 3, 2, + 2, 2, 1287, 1288, 7, 375, 2, 2, 1288, 1292, 5, 56, 29, 2, 1289, 1291, 5, + 58, 30, 2, 1290, 1289, 3, 2, 2, 2, 1291, 1294, 3, 2, 2, 2, 1292, 1290, + 3, 2, 2, 2, 1292, 1293, 3, 2, 2, 2, 1293, 1296, 3, 2, 2, 2, 1294, 1292, + 3, 2, 2, 2, 1295, 1287, 3, 2, 2, 2, 1295, 1296, 3, 2, 2, 2, 1296, 1298, + 3, 2, 2, 2, 1297, 1263, 3, 2, 2, 2, 1297, 1271, 3, 2, 2, 2, 1298, 55, 3, + 2, 2, 2, 1299, 1304, 7, 287, 2, 2, 1300, 1304, 5, 538, 270, 2, 1301, 1304, + 5, 534, 268, 2, 1302, 1304, 5, 606, 304, 2, 1303, 1299, 3, 2, 2, 2, 1303, + 1300, 3, 2, 2, 2, 1303, 1301, 3, 2, 2, 2, 1303, 1302, 3, 2, 2, 2, 1304, + 57, 3, 2, 2, 2, 1305, 1306, 7, 1049, 2, 2, 1306, 1309, 7, 80, 2, 2, 1307, + 1310, 5, 534, 268, 2, 1308, 1310, 5, 606, 304, 2, 1309, 1307, 3, 2, 2, + 2, 1309, 1308, 3, 2, 2, 2, 1310, 1311, 3, 2, 2, 2, 1311, 1312, 5, 60, 31, + 2, 1312, 59, 3, 2, 2, 2, 1313, 1327, 5, 630, 316, 2, 1314, 1327, 7, 207, + 2, 2, 1315, 1327, 7, 226, 2, 2, 1316, 1327, 7, 227, 2, 2, 1317, 1327, 7, + 228, 2, 2, 1318, 1327, 7, 229, 2, 2, 1319, 1327, 7, 230, 2, 2, 1320, 1327, + 7, 231, 2, 2, 1321, 1327, 7, 232, 2, 2, 1322, 1327, 7, 233, 2, 2, 1323, + 1327, 7, 234, 2, 2, 1324, 1327, 7, 235, 2, 2, 1325, 1327, 7, 236, 2, 2, + 1326, 1313, 3, 2, 2, 2, 1326, 1314, 3, 2, 2, 2, 1326, 1315, 3, 2, 2, 2, + 1326, 1316, 3, 2, 2, 2, 1326, 1317, 3, 2, 2, 2, 1326, 1318, 3, 2, 2, 2, + 1326, 1319, 3, 2, 2, 2, 1326, 1320, 3, 2, 2, 2, 1326, 1321, 3, 2, 2, 2, + 1326, 1322, 3, 2, 2, 2, 1326, 1323, 3, 2, 2, 2, 1326, 1324, 3, 2, 2, 2, + 1326, 1325, 3, 2, 2, 2, 1327, 61, 3, 2, 2, 2, 1328, 1334, 7, 372, 2, 2, + 1329, 1334, 7, 365, 2, 2, 1330, 1331, 7, 365, 2, 2, 1331, 1332, 7, 110, + 2, 2, 1332, 1334, 7, 560, 2, 2, 1333, 1328, 3, 2, 2, 2, 1333, 1329, 3, + 2, 2, 2, 1333, 1330, 3, 2, 2, 2, 1334, 63, 3, 2, 2, 2, 1335, 1336, 7, 173, + 2, 2, 1336, 1337, 9, 15, 2, 2, 1337, 65, 3, 2, 2, 2, 1338, 1340, 7, 429, + 2, 2, 1339, 1341, 7, 1054, 2, 2, 1340, 1339, 3, 2, 2, 2, 1340, 1341, 3, + 2, 2, 2, 1341, 1342, 3, 2, 2, 2, 1342, 1352, 5, 536, 269, 2, 1343, 1352, + 5, 64, 33, 2, 1344, 1345, 7, 178, 2, 2, 1345, 1346, 7, 500, 2, 2, 1346, + 1352, 5, 528, 265, 2, 1347, 1348, 7, 339, 2, 2, 1348, 1352, 7, 1078, 2, + 2, 1349, 1352, 7, 421, 2, 2, 1350, 1352, 7, 617, 2, 2, 1351, 1338, 3, 2, + 2, 2, 1351, 1343, 3, 2, 2, 2, 1351, 1344, 3, 2, 2, 2, 1351, 1347, 3, 2, + 2, 2, 1351, 1349, 3, 2, 2, 2, 1351, 1350, 3, 2, 2, 2, 1352, 67, 3, 2, 2, + 2, 1353, 1355, 9, 16, 2, 2, 1354, 1353, 3, 2, 2, 2, 1354, 1355, 3, 2, 2, + 2, 1355, 1356, 3, 2, 2, 2, 1356, 1357, 5, 528, 265, 2, 1357, 1358, 5, 548, + 275, 2, 1358, 69, 3, 2, 2, 2, 1359, 1360, 5, 528, 265, 2, 1360, 1361, 5, + 548, 275, 2, 1361, 71, 3, 2, 2, 2, 1362, 1363, 7, 339, 2, 2, 1363, 1386, + 7, 1078, 2, 2, 1364, 1365, 7, 430, 2, 2, 1365, 1386, 7, 147, 2, 2, 1366, + 1368, 7, 105, 2, 2, 1367, 1366, 3, 2, 2, 2, 1367, 1368, 3, 2, 2, 2, 1368, + 1369, 3, 2, 2, 2, 1369, 1386, 7, 45, 2, 2, 1370, 1371, 7, 351, 2, 2, 1371, + 1381, 7, 147, 2, 2, 1372, 1373, 7, 483, 2, 2, 1373, 1381, 7, 147, 2, 2, + 1374, 1375, 7, 125, 2, 2, 1375, 1376, 7, 147, 2, 2, 1376, 1381, 7, 357, + 2, 2, 1377, 1378, 7, 103, 2, 2, 1378, 1379, 7, 147, 2, 2, 1379, 1381, 7, + 357, 2, 2, 1380, 1370, 3, 2, 2, 2, 1380, 1372, 3, 2, 2, 2, 1380, 1374, + 3, 2, 2, 2, 1380, 1377, 3, 2, 2, 2, 1381, 1386, 3, 2, 2, 2, 1382, 1383, + 7, 147, 2, 2, 1383, 1384, 7, 553, 2, 2, 1384, 1386, 9, 13, 2, 2, 1385, + 1362, 3, 2, 2, 2, 1385, 1364, 3, 2, 2, 2, 1385, 1367, 3, 2, 2, 2, 1385, + 1380, 3, 2, 2, 2, 1385, 1382, 3, 2, 2, 2, 1386, 73, 3, 2, 2, 2, 1387, 1388, + 7, 410, 2, 2, 1388, 1402, 7, 1078, 2, 2, 1389, 1390, 7, 37, 2, 2, 1390, + 1402, 7, 1078, 2, 2, 1391, 1392, 7, 609, 2, 2, 1392, 1402, 7, 1078, 2, + 2, 1393, 1394, 7, 504, 2, 2, 1394, 1402, 7, 1078, 2, 2, 1395, 1396, 7, + 563, 2, 2, 1396, 1402, 7, 1078, 2, 2, 1397, 1398, 7, 497, 2, 2, 1398, 1402, + 7, 1078, 2, 2, 1399, 1400, 7, 509, 2, 2, 1400, 1402, 5, 534, 268, 2, 1401, + 1387, 3, 2, 2, 2, 1401, 1389, 3, 2, 2, 2, 1401, 1391, 3, 2, 2, 2, 1401, + 1393, 3, 2, 2, 2, 1401, 1395, 3, 2, 2, 2, 1401, 1397, 3, 2, 2, 2, 1401, + 1399, 3, 2, 2, 2, 1402, 75, 3, 2, 2, 2, 1403, 1404, 7, 1063, 2, 2, 1404, + 1409, 5, 78, 40, 2, 1405, 1406, 7, 1065, 2, 2, 1406, 1408, 5, 78, 40, 2, + 1407, 1405, 3, 2, 2, 2, 1408, 1411, 3, 2, 2, 2, 1409, 1407, 3, 2, 2, 2, + 1409, 1410, 3, 2, 2, 2, 1410, 1412, 3, 2, 2, 2, 1411, 1409, 3, 2, 2, 2, + 1412, 1413, 7, 1064, 2, 2, 1413, 77, 3, 2, 2, 2, 1414, 1415, 5, 528, 265, + 2, 1415, 1416, 5, 80, 41, 2, 1416, 1420, 3, 2, 2, 2, 1417, 1420, 5, 84, + 43, 2, 1418, 1420, 5, 92, 47, 2, 1419, 1414, 3, 2, 2, 2, 1419, 1417, 3, + 2, 2, 2, 1419, 1418, 3, 2, 2, 2, 1420, 79, 3, 2, 2, 2, 1421, 1425, 5, 548, + 275, 2, 1422, 1424, 5, 82, 42, 2, 1423, 1422, 3, 2, 2, 2, 1424, 1427, 3, + 2, 2, 2, 1425, 1423, 3, 2, 2, 2, 1425, 1426, 3, 2, 2, 2, 1426, 81, 3, 2, + 2, 2, 1427, 1425, 3, 2, 2, 2, 1428, 1480, 5, 544, 273, 2, 1429, 1430, 7, + 40, 2, 2, 1430, 1480, 5, 576, 289, 2, 1431, 1436, 7, 314, 2, 2, 1432, 1433, + 7, 110, 2, 2, 1433, 1434, 7, 170, 2, 2, 1434, 1436, 5, 578, 290, 2, 1435, + 1431, 3, 2, 2, 2, 1435, 1432, 3, 2, 2, 2, 1436, 1480, 3, 2, 2, 2, 1437, + 1439, 7, 120, 2, 2, 1438, 1437, 3, 2, 2, 2, 1438, 1439, 3, 2, 2, 2, 1439, + 1440, 3, 2, 2, 2, 1440, 1480, 7, 85, 2, 2, 1441, 1443, 7, 167, 2, 2, 1442, + 1444, 7, 85, 2, 2, 1443, 1442, 3, 2, 2, 2, 1443, 1444, 3, 2, 2, 2, 1444, + 1480, 3, 2, 2, 2, 1445, 1446, 7, 339, 2, 2, 1446, 1480, 7, 1078, 2, 2, + 1447, 1448, 7, 337, 2, 2, 1448, 1480, 9, 17, 2, 2, 1449, 1450, 7, 582, + 2, 2, 1450, 1480, 9, 18, 2, 2, 1451, 1480, 5, 86, 44, 2, 1452, 1453, 7, + 26, 2, 2, 1453, 1480, 5, 516, 259, 2, 1454, 1455, 7, 66, 2, 2, 1455, 1457, + 7, 10, 2, 2, 1456, 1454, 3, 2, 2, 2, 1456, 1457, 3, 2, 2, 2, 1457, 1458, + 3, 2, 2, 2, 1458, 1459, 7, 13, 2, 2, 1459, 1460, 7, 1063, 2, 2, 1460, 1461, + 5, 606, 304, 2, 1461, 1463, 7, 1064, 2, 2, 1462, 1464, 9, 19, 2, 2, 1463, + 1462, 3, 2, 2, 2, 1463, 1464, 3, 2, 2, 2, 1464, 1480, 3, 2, 2, 2, 1465, + 1466, 7, 225, 2, 2, 1466, 1467, 7, 40, 2, 2, 1467, 1480, 7, 613, 2, 2, + 1468, 1470, 7, 29, 2, 2, 1469, 1471, 5, 528, 265, 2, 1470, 1469, 3, 2, + 2, 2, 1470, 1471, 3, 2, 2, 2, 1471, 1473, 3, 2, 2, 2, 1472, 1468, 3, 2, + 2, 2, 1472, 1473, 3, 2, 2, 2, 1473, 1474, 3, 2, 2, 2, 1474, 1475, 7, 25, + 2, 2, 1475, 1476, 7, 1063, 2, 2, 1476, 1477, 5, 606, 304, 2, 1477, 1478, + 7, 1064, 2, 2, 1478, 1480, 3, 2, 2, 2, 1479, 1428, 3, 2, 2, 2, 1479, 1429, + 3, 2, 2, 2, 1479, 1435, 3, 2, 2, 2, 1479, 1438, 3, 2, 2, 2, 1479, 1441, + 3, 2, 2, 2, 1479, 1445, 3, 2, 2, 2, 1479, 1447, 3, 2, 2, 2, 1479, 1449, + 3, 2, 2, 2, 1479, 1451, 3, 2, 2, 2, 1479, 1452, 3, 2, 2, 2, 1479, 1456, + 3, 2, 2, 2, 1479, 1465, 3, 2, 2, 2, 1479, 1472, 3, 2, 2, 2, 1480, 83, 3, + 2, 2, 2, 1481, 1483, 7, 29, 2, 2, 1482, 1484, 5, 528, 265, 2, 1483, 1482, + 3, 2, 2, 2, 1483, 1484, 3, 2, 2, 2, 1484, 1486, 3, 2, 2, 2, 1485, 1481, + 3, 2, 2, 2, 1485, 1486, 3, 2, 2, 2, 1486, 1487, 3, 2, 2, 2, 1487, 1488, + 7, 120, 2, 2, 1488, 1490, 7, 85, 2, 2, 1489, 1491, 5, 528, 265, 2, 1490, + 1489, 3, 2, 2, 2, 1490, 1491, 3, 2, 2, 2, 1491, 1493, 3, 2, 2, 2, 1492, + 1494, 5, 64, 33, 2, 1493, 1492, 3, 2, 2, 2, 1493, 1494, 3, 2, 2, 2, 1494, + 1495, 3, 2, 2, 2, 1495, 1499, 5, 564, 283, 2, 1496, 1498, 5, 66, 34, 2, + 1497, 1496, 3, 2, 2, 2, 1498, 1501, 3, 2, 2, 2, 1499, 1497, 3, 2, 2, 2, + 1499, 1500, 3, 2, 2, 2, 1500, 1551, 3, 2, 2, 2, 1501, 1499, 3, 2, 2, 2, + 1502, 1504, 7, 29, 2, 2, 1503, 1505, 5, 528, 265, 2, 1504, 1503, 3, 2, + 2, 2, 1504, 1505, 3, 2, 2, 2, 1505, 1507, 3, 2, 2, 2, 1506, 1502, 3, 2, + 2, 2, 1506, 1507, 3, 2, 2, 2, 1507, 1508, 3, 2, 2, 2, 1508, 1510, 7, 167, + 2, 2, 1509, 1511, 9, 20, 2, 2, 1510, 1509, 3, 2, 2, 2, 1510, 1511, 3, 2, + 2, 2, 1511, 1513, 3, 2, 2, 2, 1512, 1514, 5, 528, 265, 2, 1513, 1512, 3, + 2, 2, 2, 1513, 1514, 3, 2, 2, 2, 1514, 1516, 3, 2, 2, 2, 1515, 1517, 5, + 64, 33, 2, 1516, 1515, 3, 2, 2, 2, 1516, 1517, 3, 2, 2, 2, 1517, 1518, + 3, 2, 2, 2, 1518, 1522, 5, 564, 283, 2, 1519, 1521, 5, 66, 34, 2, 1520, + 1519, 3, 2, 2, 2, 1521, 1524, 3, 2, 2, 2, 1522, 1520, 3, 2, 2, 2, 1522, + 1523, 3, 2, 2, 2, 1523, 1551, 3, 2, 2, 2, 1524, 1522, 3, 2, 2, 2, 1525, + 1527, 7, 29, 2, 2, 1526, 1528, 5, 528, 265, 2, 1527, 1526, 3, 2, 2, 2, + 1527, 1528, 3, 2, 2, 2, 1528, 1530, 3, 2, 2, 2, 1529, 1525, 3, 2, 2, 2, + 1529, 1530, 3, 2, 2, 2, 1530, 1531, 3, 2, 2, 2, 1531, 1532, 7, 63, 2, 2, + 1532, 1534, 7, 85, 2, 2, 1533, 1535, 5, 528, 265, 2, 1534, 1533, 3, 2, + 2, 2, 1534, 1535, 3, 2, 2, 2, 1535, 1536, 3, 2, 2, 2, 1536, 1537, 5, 564, + 283, 2, 1537, 1538, 5, 86, 44, 2, 1538, 1551, 3, 2, 2, 2, 1539, 1541, 7, + 29, 2, 2, 1540, 1542, 5, 528, 265, 2, 1541, 1540, 3, 2, 2, 2, 1541, 1542, + 3, 2, 2, 2, 1542, 1544, 3, 2, 2, 2, 1543, 1539, 3, 2, 2, 2, 1543, 1544, + 3, 2, 2, 2, 1544, 1545, 3, 2, 2, 2, 1545, 1546, 7, 25, 2, 2, 1546, 1547, + 7, 1063, 2, 2, 1547, 1548, 5, 606, 304, 2, 1548, 1549, 7, 1064, 2, 2, 1549, + 1551, 3, 2, 2, 2, 1550, 1485, 3, 2, 2, 2, 1550, 1506, 3, 2, 2, 2, 1550, + 1529, 3, 2, 2, 2, 1550, 1543, 3, 2, 2, 2, 1551, 85, 3, 2, 2, 2, 1552, 1553, + 7, 126, 2, 2, 1553, 1555, 5, 504, 253, 2, 1554, 1556, 5, 564, 283, 2, 1555, + 1554, 3, 2, 2, 2, 1555, 1556, 3, 2, 2, 2, 1556, 1559, 3, 2, 2, 2, 1557, + 1558, 7, 101, 2, 2, 1558, 1560, 9, 21, 2, 2, 1559, 1557, 3, 2, 2, 2, 1559, + 1560, 3, 2, 2, 2, 1560, 1562, 3, 2, 2, 2, 1561, 1563, 5, 88, 45, 2, 1562, + 1561, 3, 2, 2, 2, 1562, 1563, 3, 2, 2, 2, 1563, 87, 3, 2, 2, 2, 1564, 1565, + 7, 110, 2, 2, 1565, 1566, 7, 42, 2, 2, 1566, 1570, 5, 90, 46, 2, 1567, + 1568, 7, 110, 2, 2, 1568, 1569, 7, 170, 2, 2, 1569, 1571, 5, 90, 46, 2, + 1570, 1567, 3, 2, 2, 2, 1570, 1571, 3, 2, 2, 2, 1571, 1581, 3, 2, 2, 2, + 1572, 1573, 7, 110, 2, 2, 1573, 1574, 7, 170, 2, 2, 1574, 1578, 5, 90, + 46, 2, 1575, 1576, 7, 110, 2, 2, 1576, 1577, 7, 42, 2, 2, 1577, 1579, 5, + 90, 46, 2, 1578, 1575, 3, 2, 2, 2, 1578, 1579, 3, 2, 2, 2, 1579, 1581, + 3, 2, 2, 2, 1580, 1564, 3, 2, 2, 2, 1580, 1572, 3, 2, 2, 2, 1581, 89, 3, + 2, 2, 2, 1582, 1589, 7, 134, 2, 2, 1583, 1589, 7, 20, 2, 2, 1584, 1585, + 7, 142, 2, 2, 1585, 1589, 7, 107, 2, 2, 1586, 1587, 7, 483, 2, 2, 1587, + 1589, 7, 305, 2, 2, 1588, 1582, 3, 2, 2, 2, 1588, 1583, 3, 2, 2, 2, 1588, + 1584, 3, 2, 2, 2, 1588, 1586, 3, 2, 2, 2, 1589, 91, 3, 2, 2, 2, 1590, 1592, + 9, 20, 2, 2, 1591, 1593, 5, 528, 265, 2, 1592, 1591, 3, 2, 2, 2, 1592, + 1593, 3, 2, 2, 2, 1593, 1595, 3, 2, 2, 2, 1594, 1596, 5, 64, 33, 2, 1595, + 1594, 3, 2, 2, 2, 1595, 1596, 3, 2, 2, 2, 1596, 1597, 3, 2, 2, 2, 1597, + 1601, 5, 564, 283, 2, 1598, 1600, 5, 66, 34, 2, 1599, 1598, 3, 2, 2, 2, + 1600, 1603, 3, 2, 2, 2, 1601, 1599, 3, 2, 2, 2, 1601, 1602, 3, 2, 2, 2, + 1602, 1619, 3, 2, 2, 2, 1603, 1601, 3, 2, 2, 2, 1604, 1606, 9, 22, 2, 2, + 1605, 1607, 9, 20, 2, 2, 1606, 1605, 3, 2, 2, 2, 1606, 1607, 3, 2, 2, 2, + 1607, 1609, 3, 2, 2, 2, 1608, 1610, 5, 528, 265, 2, 1609, 1608, 3, 2, 2, + 2, 1609, 1610, 3, 2, 2, 2, 1610, 1611, 3, 2, 2, 2, 1611, 1615, 5, 564, + 283, 2, 1612, 1614, 5, 66, 34, 2, 1613, 1612, 3, 2, 2, 2, 1614, 1617, 3, + 2, 2, 2, 1615, 1613, 3, 2, 2, 2, 1615, 1616, 3, 2, 2, 2, 1616, 1619, 3, + 2, 2, 2, 1617, 1615, 3, 2, 2, 2, 1618, 1590, 3, 2, 2, 2, 1618, 1604, 3, + 2, 2, 2, 1619, 93, 3, 2, 2, 2, 1620, 1622, 7, 376, 2, 2, 1621, 1623, 7, + 1054, 2, 2, 1622, 1621, 3, 2, 2, 2, 1622, 1623, 3, 2, 2, 2, 1623, 1624, + 3, 2, 2, 2, 1624, 1765, 5, 518, 260, 2, 1625, 1627, 7, 314, 2, 2, 1626, + 1628, 7, 1054, 2, 2, 1627, 1626, 3, 2, 2, 2, 1627, 1628, 3, 2, 2, 2, 1628, + 1629, 3, 2, 2, 2, 1629, 1765, 5, 534, 268, 2, 1630, 1632, 7, 315, 2, 2, + 1631, 1633, 7, 1054, 2, 2, 1632, 1631, 3, 2, 2, 2, 1632, 1633, 3, 2, 2, + 2, 1633, 1634, 3, 2, 2, 2, 1634, 1765, 5, 534, 268, 2, 1635, 1637, 7, 40, + 2, 2, 1636, 1635, 3, 2, 2, 2, 1636, 1637, 3, 2, 2, 2, 1637, 1641, 3, 2, + 2, 2, 1638, 1639, 7, 24, 2, 2, 1639, 1642, 7, 142, 2, 2, 1640, 1642, 7, + 774, 2, 2, 1641, 1638, 3, 2, 2, 2, 1641, 1640, 3, 2, 2, 2, 1642, 1644, + 3, 2, 2, 2, 1643, 1645, 7, 1054, 2, 2, 1644, 1643, 3, 2, 2, 2, 1644, 1645, + 3, 2, 2, 2, 1645, 1648, 3, 2, 2, 2, 1646, 1649, 5, 514, 258, 2, 1647, 1649, + 7, 40, 2, 2, 1648, 1646, 3, 2, 2, 2, 1648, 1647, 3, 2, 2, 2, 1649, 1765, + 3, 2, 2, 2, 1650, 1652, 9, 23, 2, 2, 1651, 1653, 7, 1054, 2, 2, 1652, 1651, + 3, 2, 2, 2, 1652, 1653, 3, 2, 2, 2, 1653, 1654, 3, 2, 2, 2, 1654, 1765, + 9, 24, 2, 2, 1655, 1657, 7, 40, 2, 2, 1656, 1655, 3, 2, 2, 2, 1656, 1657, + 3, 2, 2, 2, 1657, 1658, 3, 2, 2, 2, 1658, 1660, 7, 26, 2, 2, 1659, 1661, + 7, 1054, 2, 2, 1660, 1659, 3, 2, 2, 2, 1660, 1661, 3, 2, 2, 2, 1661, 1662, + 3, 2, 2, 2, 1662, 1765, 5, 516, 259, 2, 1663, 1665, 7, 339, 2, 2, 1664, + 1666, 7, 1054, 2, 2, 1665, 1664, 3, 2, 2, 2, 1665, 1666, 3, 2, 2, 2, 1666, + 1667, 3, 2, 2, 2, 1667, 1765, 7, 1078, 2, 2, 1668, 1670, 7, 344, 2, 2, + 1669, 1671, 7, 1054, 2, 2, 1670, 1669, 3, 2, 2, 2, 1670, 1671, 3, 2, 2, + 2, 1671, 1672, 3, 2, 2, 2, 1672, 1765, 9, 25, 2, 2, 1673, 1675, 7, 346, + 2, 2, 1674, 1676, 7, 1054, 2, 2, 1675, 1674, 3, 2, 2, 2, 1675, 1676, 3, + 2, 2, 2, 1676, 1677, 3, 2, 2, 2, 1677, 1765, 7, 1078, 2, 2, 1678, 1679, + 7, 357, 2, 2, 1679, 1681, 7, 364, 2, 2, 1680, 1682, 7, 1054, 2, 2, 1681, + 1680, 3, 2, 2, 2, 1681, 1682, 3, 2, 2, 2, 1682, 1683, 3, 2, 2, 2, 1683, + 1765, 7, 1078, 2, 2, 1684, 1686, 7, 362, 2, 2, 1685, 1687, 7, 1054, 2, + 2, 1686, 1685, 3, 2, 2, 2, 1686, 1687, 3, 2, 2, 2, 1687, 1688, 3, 2, 2, + 2, 1688, 1765, 9, 24, 2, 2, 1689, 1691, 7, 373, 2, 2, 1690, 1692, 7, 1054, + 2, 2, 1691, 1690, 3, 2, 2, 2, 1691, 1692, 3, 2, 2, 2, 1692, 1693, 3, 2, + 2, 2, 1693, 1765, 7, 1078, 2, 2, 1694, 1695, 7, 75, 2, 2, 1695, 1697, 7, + 364, 2, 2, 1696, 1698, 7, 1054, 2, 2, 1697, 1696, 3, 2, 2, 2, 1697, 1698, + 3, 2, 2, 2, 1698, 1699, 3, 2, 2, 2, 1699, 1765, 7, 1078, 2, 2, 1700, 1702, + 7, 418, 2, 2, 1701, 1703, 7, 1054, 2, 2, 1702, 1701, 3, 2, 2, 2, 1702, + 1703, 3, 2, 2, 2, 1703, 1704, 3, 2, 2, 2, 1704, 1765, 9, 26, 2, 2, 1705, + 1707, 7, 429, 2, 2, 1706, 1708, 7, 1054, 2, 2, 1707, 1706, 3, 2, 2, 2, + 1707, 1708, 3, 2, 2, 2, 1708, 1709, 3, 2, 2, 2, 1709, 1765, 5, 536, 269, + 2, 1710, 1712, 7, 462, 2, 2, 1711, 1713, 7, 1054, 2, 2, 1712, 1711, 3, + 2, 2, 2, 1712, 1713, 3, 2, 2, 2, 1713, 1714, 3, 2, 2, 2, 1714, 1765, 5, + 534, 268, 2, 1715, 1717, 7, 472, 2, 2, 1716, 1718, 7, 1054, 2, 2, 1717, + 1716, 3, 2, 2, 2, 1717, 1718, 3, 2, 2, 2, 1718, 1719, 3, 2, 2, 2, 1719, + 1765, 5, 534, 268, 2, 1720, 1722, 7, 498, 2, 2, 1721, 1723, 7, 1054, 2, + 2, 1722, 1721, 3, 2, 2, 2, 1722, 1723, 3, 2, 2, 2, 1723, 1724, 3, 2, 2, + 2, 1724, 1765, 9, 27, 2, 2, 1725, 1727, 7, 504, 2, 2, 1726, 1728, 7, 1054, + 2, 2, 1727, 1726, 3, 2, 2, 2, 1727, 1728, 3, 2, 2, 2, 1728, 1729, 3, 2, + 2, 2, 1729, 1765, 7, 1078, 2, 2, 1730, 1732, 7, 550, 2, 2, 1731, 1733, + 7, 1054, 2, 2, 1732, 1731, 3, 2, 2, 2, 1732, 1733, 3, 2, 2, 2, 1733, 1734, + 3, 2, 2, 2, 1734, 1765, 9, 28, 2, 2, 1735, 1737, 7, 577, 2, 2, 1736, 1738, + 7, 1054, 2, 2, 1737, 1736, 3, 2, 2, 2, 1737, 1738, 3, 2, 2, 2, 1738, 1739, + 3, 2, 2, 2, 1739, 1765, 9, 27, 2, 2, 1740, 1742, 7, 578, 2, 2, 1741, 1743, + 7, 1054, 2, 2, 1742, 1741, 3, 2, 2, 2, 1742, 1743, 3, 2, 2, 2, 1743, 1744, + 3, 2, 2, 2, 1744, 1765, 9, 27, 2, 2, 1745, 1747, 7, 579, 2, 2, 1746, 1748, + 7, 1054, 2, 2, 1747, 1746, 3, 2, 2, 2, 1747, 1748, 3, 2, 2, 2, 1748, 1749, + 3, 2, 2, 2, 1749, 1765, 5, 534, 268, 2, 1750, 1751, 7, 593, 2, 2, 1751, + 1753, 5, 528, 265, 2, 1752, 1754, 5, 96, 49, 2, 1753, 1752, 3, 2, 2, 2, + 1753, 1754, 3, 2, 2, 2, 1754, 1765, 3, 2, 2, 2, 1755, 1765, 5, 96, 49, + 2, 1756, 1758, 7, 166, 2, 2, 1757, 1759, 7, 1054, 2, 2, 1758, 1757, 3, + 2, 2, 2, 1758, 1759, 3, 2, 2, 2, 1759, 1760, 3, 2, 2, 2, 1760, 1761, 7, + 1063, 2, 2, 1761, 1762, 5, 562, 282, 2, 1762, 1763, 7, 1064, 2, 2, 1763, + 1765, 3, 2, 2, 2, 1764, 1620, 3, 2, 2, 2, 1764, 1625, 3, 2, 2, 2, 1764, + 1630, 3, 2, 2, 2, 1764, 1636, 3, 2, 2, 2, 1764, 1650, 3, 2, 2, 2, 1764, + 1656, 3, 2, 2, 2, 1764, 1663, 3, 2, 2, 2, 1764, 1668, 3, 2, 2, 2, 1764, + 1673, 3, 2, 2, 2, 1764, 1678, 3, 2, 2, 2, 1764, 1684, 3, 2, 2, 2, 1764, + 1689, 3, 2, 2, 2, 1764, 1694, 3, 2, 2, 2, 1764, 1700, 3, 2, 2, 2, 1764, + 1705, 3, 2, 2, 2, 1764, 1710, 3, 2, 2, 2, 1764, 1715, 3, 2, 2, 2, 1764, + 1720, 3, 2, 2, 2, 1764, 1725, 3, 2, 2, 2, 1764, 1730, 3, 2, 2, 2, 1764, + 1735, 3, 2, 2, 2, 1764, 1740, 3, 2, 2, 2, 1764, 1745, 3, 2, 2, 2, 1764, + 1750, 3, 2, 2, 2, 1764, 1755, 3, 2, 2, 2, 1764, 1756, 3, 2, 2, 2, 1765, + 95, 3, 2, 2, 2, 1766, 1767, 7, 582, 2, 2, 1767, 1768, 9, 18, 2, 2, 1768, + 97, 3, 2, 2, 2, 1769, 1770, 7, 119, 2, 2, 1770, 1771, 7, 18, 2, 2, 1771, + 1774, 5, 100, 51, 2, 1772, 1773, 7, 503, 2, 2, 1773, 1775, 5, 534, 268, + 2, 1774, 1772, 3, 2, 2, 2, 1774, 1775, 3, 2, 2, 2, 1775, 1783, 3, 2, 2, + 2, 1776, 1777, 7, 587, 2, 2, 1777, 1778, 7, 18, 2, 2, 1778, 1781, 5, 102, + 52, 2, 1779, 1780, 7, 588, 2, 2, 1780, 1782, 5, 534, 268, 2, 1781, 1779, + 3, 2, 2, 2, 1781, 1782, 3, 2, 2, 2, 1782, 1784, 3, 2, 2, 2, 1783, 1776, + 3, 2, 2, 2, 1783, 1784, 3, 2, 2, 2, 1784, 1796, 3, 2, 2, 2, 1785, 1786, + 7, 1063, 2, 2, 1786, 1791, 5, 104, 53, 2, 1787, 1788, 7, 1065, 2, 2, 1788, + 1790, 5, 104, 53, 2, 1789, 1787, 3, 2, 2, 2, 1790, 1793, 3, 2, 2, 2, 1791, + 1789, 3, 2, 2, 2, 1791, 1792, 3, 2, 2, 2, 1792, 1794, 3, 2, 2, 2, 1793, + 1791, 3, 2, 2, 2, 1794, 1795, 7, 1064, 2, 2, 1795, 1797, 3, 2, 2, 2, 1796, + 1785, 3, 2, 2, 2, 1796, 1797, 3, 2, 2, 2, 1797, 99, 3, 2, 2, 2, 1798, 1800, + 7, 93, 2, 2, 1799, 1798, 3, 2, 2, 2, 1799, 1800, 3, 2, 2, 2, 1800, 1801, + 3, 2, 2, 2, 1801, 1802, 7, 408, 2, 2, 1802, 1803, 7, 1063, 2, 2, 1803, + 1804, 5, 606, 304, 2, 1804, 1805, 7, 1064, 2, 2, 1805, 1844, 3, 2, 2, 2, + 1806, 1808, 7, 93, 2, 2, 1807, 1806, 3, 2, 2, 2, 1807, 1808, 3, 2, 2, 2, + 1808, 1809, 3, 2, 2, 2, 1809, 1813, 7, 85, 2, 2, 1810, 1811, 7, 308, 2, + 2, 1811, 1812, 7, 1054, 2, 2, 1812, 1814, 9, 29, 2, 2, 1813, 1810, 3, 2, + 2, 2, 1813, 1814, 3, 2, 2, 2, 1814, 1815, 3, 2, 2, 2, 1815, 1816, 7, 1063, + 2, 2, 1816, 1817, 5, 560, 281, 2, 1817, 1818, 7, 1064, 2, 2, 1818, 1844, + 3, 2, 2, 2, 1819, 1829, 7, 123, 2, 2, 1820, 1821, 7, 1063, 2, 2, 1821, + 1822, 5, 606, 304, 2, 1822, 1823, 7, 1064, 2, 2, 1823, 1830, 3, 2, 2, 2, + 1824, 1825, 7, 336, 2, 2, 1825, 1826, 7, 1063, 2, 2, 1826, 1827, 5, 560, + 281, 2, 1827, 1828, 7, 1064, 2, 2, 1828, 1830, 3, 2, 2, 2, 1829, 1820, + 3, 2, 2, 2, 1829, 1824, 3, 2, 2, 2, 1830, 1844, 3, 2, 2, 2, 1831, 1841, + 7, 435, 2, 2, 1832, 1833, 7, 1063, 2, 2, 1833, 1834, 5, 606, 304, 2, 1834, + 1835, 7, 1064, 2, 2, 1835, 1842, 3, 2, 2, 2, 1836, 1837, 7, 336, 2, 2, + 1837, 1838, 7, 1063, 2, 2, 1838, 1839, 5, 560, 281, 2, 1839, 1840, 7, 1064, + 2, 2, 1840, 1842, 3, 2, 2, 2, 1841, 1832, 3, 2, 2, 2, 1841, 1836, 3, 2, + 2, 2, 1842, 1844, 3, 2, 2, 2, 1843, 1799, 3, 2, 2, 2, 1843, 1807, 3, 2, + 2, 2, 1843, 1819, 3, 2, 2, 2, 1843, 1831, 3, 2, 2, 2, 1844, 101, 3, 2, + 2, 2, 1845, 1847, 7, 93, 2, 2, 1846, 1845, 3, 2, 2, 2, 1846, 1847, 3, 2, + 2, 2, 1847, 1848, 3, 2, 2, 2, 1848, 1849, 7, 408, 2, 2, 1849, 1850, 7, + 1063, 2, 2, 1850, 1851, 5, 606, 304, 2, 1851, 1852, 7, 1064, 2, 2, 1852, + 1867, 3, 2, 2, 2, 1853, 1855, 7, 93, 2, 2, 1854, 1853, 3, 2, 2, 2, 1854, + 1855, 3, 2, 2, 2, 1855, 1856, 3, 2, 2, 2, 1856, 1860, 7, 85, 2, 2, 1857, + 1858, 7, 308, 2, 2, 1858, 1859, 7, 1054, 2, 2, 1859, 1861, 9, 29, 2, 2, + 1860, 1857, 3, 2, 2, 2, 1860, 1861, 3, 2, 2, 2, 1861, 1862, 3, 2, 2, 2, + 1862, 1863, 7, 1063, 2, 2, 1863, 1864, 5, 560, 281, 2, 1864, 1865, 7, 1064, + 2, 2, 1865, 1867, 3, 2, 2, 2, 1866, 1846, 3, 2, 2, 2, 1866, 1854, 3, 2, + 2, 2, 1867, 103, 3, 2, 2, 2, 1868, 1869, 7, 119, 2, 2, 1869, 1870, 5, 528, + 265, 2, 1870, 1871, 7, 174, 2, 2, 1871, 1872, 7, 433, 2, 2, 1872, 1873, + 7, 596, 2, 2, 1873, 1874, 7, 1063, 2, 2, 1874, 1879, 5, 106, 54, 2, 1875, + 1876, 7, 1065, 2, 2, 1876, 1878, 5, 106, 54, 2, 1877, 1875, 3, 2, 2, 2, + 1878, 1881, 3, 2, 2, 2, 1879, 1877, 3, 2, 2, 2, 1879, 1880, 3, 2, 2, 2, + 1880, 1882, 3, 2, 2, 2, 1881, 1879, 3, 2, 2, 2, 1882, 1886, 7, 1064, 2, + 2, 1883, 1885, 5, 112, 57, 2, 1884, 1883, 3, 2, 2, 2, 1885, 1888, 3, 2, + 2, 2, 1886, 1884, 3, 2, 2, 2, 1886, 1887, 3, 2, 2, 2, 1887, 1900, 3, 2, + 2, 2, 1888, 1886, 3, 2, 2, 2, 1889, 1890, 7, 1063, 2, 2, 1890, 1895, 5, + 110, 56, 2, 1891, 1892, 7, 1065, 2, 2, 1892, 1894, 5, 110, 56, 2, 1893, + 1891, 3, 2, 2, 2, 1894, 1897, 3, 2, 2, 2, 1895, 1893, 3, 2, 2, 2, 1895, + 1896, 3, 2, 2, 2, 1896, 1898, 3, 2, 2, 2, 1897, 1895, 3, 2, 2, 2, 1898, + 1899, 7, 1064, 2, 2, 1899, 1901, 3, 2, 2, 2, 1900, 1889, 3, 2, 2, 2, 1900, + 1901, 3, 2, 2, 2, 1901, 2015, 3, 2, 2, 2, 1902, 1903, 7, 119, 2, 2, 1903, + 1904, 5, 528, 265, 2, 1904, 1905, 7, 174, 2, 2, 1905, 1906, 7, 433, 2, + 2, 1906, 1907, 7, 596, 2, 2, 1907, 1911, 5, 106, 54, 2, 1908, 1910, 5, + 112, 57, 2, 1909, 1908, 3, 2, 2, 2, 1910, 1913, 3, 2, 2, 2, 1911, 1909, + 3, 2, 2, 2, 1911, 1912, 3, 2, 2, 2, 1912, 1925, 3, 2, 2, 2, 1913, 1911, + 3, 2, 2, 2, 1914, 1915, 7, 1063, 2, 2, 1915, 1920, 5, 110, 56, 2, 1916, + 1917, 7, 1065, 2, 2, 1917, 1919, 5, 110, 56, 2, 1918, 1916, 3, 2, 2, 2, + 1919, 1922, 3, 2, 2, 2, 1920, 1918, 3, 2, 2, 2, 1920, 1921, 3, 2, 2, 2, + 1921, 1923, 3, 2, 2, 2, 1922, 1920, 3, 2, 2, 2, 1923, 1924, 7, 1064, 2, + 2, 1924, 1926, 3, 2, 2, 2, 1925, 1914, 3, 2, 2, 2, 1925, 1926, 3, 2, 2, + 2, 1926, 2015, 3, 2, 2, 2, 1927, 1928, 7, 119, 2, 2, 1928, 1929, 5, 528, + 265, 2, 1929, 1930, 7, 174, 2, 2, 1930, 1931, 7, 74, 2, 2, 1931, 1932, + 7, 1063, 2, 2, 1932, 1937, 5, 106, 54, 2, 1933, 1934, 7, 1065, 2, 2, 1934, + 1936, 5, 106, 54, 2, 1935, 1933, 3, 2, 2, 2, 1936, 1939, 3, 2, 2, 2, 1937, + 1935, 3, 2, 2, 2, 1937, 1938, 3, 2, 2, 2, 1938, 1940, 3, 2, 2, 2, 1939, + 1937, 3, 2, 2, 2, 1940, 1944, 7, 1064, 2, 2, 1941, 1943, 5, 112, 57, 2, + 1942, 1941, 3, 2, 2, 2, 1943, 1946, 3, 2, 2, 2, 1944, 1942, 3, 2, 2, 2, + 1944, 1945, 3, 2, 2, 2, 1945, 1958, 3, 2, 2, 2, 1946, 1944, 3, 2, 2, 2, + 1947, 1948, 7, 1063, 2, 2, 1948, 1953, 5, 110, 56, 2, 1949, 1950, 7, 1065, + 2, 2, 1950, 1952, 5, 110, 56, 2, 1951, 1949, 3, 2, 2, 2, 1952, 1955, 3, + 2, 2, 2, 1953, 1951, 3, 2, 2, 2, 1953, 1954, 3, 2, 2, 2, 1954, 1956, 3, + 2, 2, 2, 1955, 1953, 3, 2, 2, 2, 1956, 1957, 7, 1064, 2, 2, 1957, 1959, + 3, 2, 2, 2, 1958, 1947, 3, 2, 2, 2, 1958, 1959, 3, 2, 2, 2, 1959, 2015, + 3, 2, 2, 2, 1960, 1961, 7, 119, 2, 2, 1961, 1962, 5, 528, 265, 2, 1962, + 1963, 7, 174, 2, 2, 1963, 1964, 7, 74, 2, 2, 1964, 1965, 7, 1063, 2, 2, + 1965, 1970, 5, 108, 55, 2, 1966, 1967, 7, 1065, 2, 2, 1967, 1969, 5, 108, + 55, 2, 1968, 1966, 3, 2, 2, 2, 1969, 1972, 3, 2, 2, 2, 1970, 1968, 3, 2, + 2, 2, 1970, 1971, 3, 2, 2, 2, 1971, 1973, 3, 2, 2, 2, 1972, 1970, 3, 2, + 2, 2, 1973, 1977, 7, 1064, 2, 2, 1974, 1976, 5, 112, 57, 2, 1975, 1974, + 3, 2, 2, 2, 1976, 1979, 3, 2, 2, 2, 1977, 1975, 3, 2, 2, 2, 1977, 1978, + 3, 2, 2, 2, 1978, 1991, 3, 2, 2, 2, 1979, 1977, 3, 2, 2, 2, 1980, 1981, + 7, 1063, 2, 2, 1981, 1986, 5, 110, 56, 2, 1982, 1983, 7, 1065, 2, 2, 1983, + 1985, 5, 110, 56, 2, 1984, 1982, 3, 2, 2, 2, 1985, 1988, 3, 2, 2, 2, 1986, + 1984, 3, 2, 2, 2, 1986, 1987, 3, 2, 2, 2, 1987, 1989, 3, 2, 2, 2, 1988, + 1986, 3, 2, 2, 2, 1989, 1990, 7, 1064, 2, 2, 1990, 1992, 3, 2, 2, 2, 1991, + 1980, 3, 2, 2, 2, 1991, 1992, 3, 2, 2, 2, 1992, 2015, 3, 2, 2, 2, 1993, + 1994, 7, 119, 2, 2, 1994, 1998, 5, 528, 265, 2, 1995, 1997, 5, 112, 57, + 2, 1996, 1995, 3, 2, 2, 2, 1997, 2000, 3, 2, 2, 2, 1998, 1996, 3, 2, 2, + 2, 1998, 1999, 3, 2, 2, 2, 1999, 2012, 3, 2, 2, 2, 2000, 1998, 3, 2, 2, + 2, 2001, 2002, 7, 1063, 2, 2, 2002, 2007, 5, 110, 56, 2, 2003, 2004, 7, + 1065, 2, 2, 2004, 2006, 5, 110, 56, 2, 2005, 2003, 3, 2, 2, 2, 2006, 2009, + 3, 2, 2, 2, 2007, 2005, 3, 2, 2, 2, 2007, 2008, 3, 2, 2, 2, 2008, 2010, + 3, 2, 2, 2, 2009, 2007, 3, 2, 2, 2, 2010, 2011, 7, 1064, 2, 2, 2011, 2013, + 3, 2, 2, 2, 2012, 2001, 3, 2, 2, 2, 2012, 2013, 3, 2, 2, 2, 2013, 2015, + 3, 2, 2, 2, 2014, 1868, 3, 2, 2, 2, 2014, 1902, 3, 2, 2, 2, 2014, 1927, + 3, 2, 2, 2, 2014, 1960, 3, 2, 2, 2, 2014, 1993, 3, 2, 2, 2, 2015, 105, + 3, 2, 2, 2, 2016, 2020, 5, 546, 274, 2, 2017, 2020, 5, 606, 304, 2, 2018, + 2020, 7, 102, 2, 2, 2019, 2016, 3, 2, 2, 2, 2019, 2017, 3, 2, 2, 2, 2019, + 2018, 3, 2, 2, 2, 2020, 107, 3, 2, 2, 2, 2021, 2022, 7, 1063, 2, 2, 2022, + 2025, 5, 106, 54, 2, 2023, 2024, 7, 1065, 2, 2, 2024, 2026, 5, 106, 54, + 2, 2025, 2023, 3, 2, 2, 2, 2026, 2027, 3, 2, 2, 2, 2027, 2025, 3, 2, 2, + 2, 2027, 2028, 3, 2, 2, 2, 2028, 2029, 3, 2, 2, 2, 2029, 2030, 7, 1064, + 2, 2, 2030, 109, 3, 2, 2, 2, 2031, 2032, 7, 587, 2, 2, 2032, 2036, 5, 528, + 265, 2, 2033, 2035, 5, 112, 57, 2, 2034, 2033, 3, 2, 2, 2, 2035, 2038, + 3, 2, 2, 2, 2036, 2034, 3, 2, 2, 2, 2036, 2037, 3, 2, 2, 2, 2037, 111, + 3, 2, 2, 2, 2038, 2036, 3, 2, 2, 2, 2039, 2041, 7, 582, 2, 2, 2040, 2039, + 3, 2, 2, 2, 2040, 2041, 3, 2, 2, 2, 2041, 2042, 3, 2, 2, 2, 2042, 2044, + 7, 376, 2, 2, 2043, 2045, 7, 1054, 2, 2, 2044, 2043, 3, 2, 2, 2, 2044, + 2045, 3, 2, 2, 2, 2045, 2046, 3, 2, 2, 2, 2046, 2085, 5, 518, 260, 2, 2047, + 2049, 7, 339, 2, 2, 2048, 2050, 7, 1054, 2, 2, 2049, 2048, 3, 2, 2, 2, + 2049, 2050, 3, 2, 2, 2, 2050, 2051, 3, 2, 2, 2, 2051, 2085, 7, 1078, 2, + 2, 2052, 2053, 7, 357, 2, 2, 2053, 2055, 7, 364, 2, 2, 2054, 2056, 7, 1054, + 2, 2, 2055, 2054, 3, 2, 2, 2, 2055, 2056, 3, 2, 2, 2, 2056, 2057, 3, 2, + 2, 2, 2057, 2085, 7, 1078, 2, 2, 2058, 2059, 7, 75, 2, 2, 2059, 2061, 7, + 364, 2, 2, 2060, 2062, 7, 1054, 2, 2, 2061, 2060, 3, 2, 2, 2, 2061, 2062, + 3, 2, 2, 2, 2062, 2063, 3, 2, 2, 2, 2063, 2085, 7, 1078, 2, 2, 2064, 2066, + 7, 462, 2, 2, 2065, 2067, 7, 1054, 2, 2, 2066, 2065, 3, 2, 2, 2, 2066, + 2067, 3, 2, 2, 2, 2067, 2068, 3, 2, 2, 2, 2068, 2085, 5, 534, 268, 2, 2069, + 2071, 7, 472, 2, 2, 2070, 2072, 7, 1054, 2, 2, 2071, 2070, 3, 2, 2, 2, + 2071, 2072, 3, 2, 2, 2, 2072, 2073, 3, 2, 2, 2, 2073, 2085, 5, 534, 268, + 2, 2074, 2076, 7, 593, 2, 2, 2075, 2077, 7, 1054, 2, 2, 2076, 2075, 3, + 2, 2, 2, 2076, 2077, 3, 2, 2, 2, 2077, 2078, 3, 2, 2, 2, 2078, 2085, 5, + 528, 265, 2, 2079, 2081, 7, 484, 2, 2, 2080, 2082, 7, 1054, 2, 2, 2081, + 2080, 3, 2, 2, 2, 2081, 2082, 3, 2, 2, 2, 2082, 2083, 3, 2, 2, 2, 2083, + 2085, 5, 528, 265, 2, 2084, 2040, 3, 2, 2, 2, 2084, 2047, 3, 2, 2, 2, 2084, + 2052, 3, 2, 2, 2, 2084, 2058, 3, 2, 2, 2, 2084, 2064, 3, 2, 2, 2, 2084, + 2069, 3, 2, 2, 2, 2084, 2074, 3, 2, 2, 2, 2084, 2079, 3, 2, 2, 2, 2085, + 113, 3, 2, 2, 2, 2086, 2087, 7, 9, 2, 2, 2087, 2089, 9, 2, 2, 2, 2088, + 2090, 5, 528, 265, 2, 2089, 2088, 3, 2, 2, 2, 2089, 2090, 3, 2, 2, 2, 2090, + 2092, 3, 2, 2, 2, 2091, 2093, 5, 50, 26, 2, 2092, 2091, 3, 2, 2, 2, 2093, + 2094, 3, 2, 2, 2, 2094, 2092, 3, 2, 2, 2, 2094, 2095, 3, 2, 2, 2, 2095, + 2105, 3, 2, 2, 2, 2096, 2097, 7, 9, 2, 2, 2097, 2098, 9, 2, 2, 2, 2098, + 2099, 5, 528, 265, 2, 2099, 2100, 7, 608, 2, 2, 2100, 2101, 7, 357, 2, + 2, 2101, 2102, 7, 364, 2, 2, 2102, 2103, 7, 478, 2, 2, 2103, 2105, 3, 2, + 2, 2, 2104, 2086, 3, 2, 2, 2, 2104, 2096, 3, 2, 2, 2, 2105, 115, 3, 2, + 2, 2, 2106, 2108, 7, 9, 2, 2, 2107, 2109, 5, 52, 27, 2, 2108, 2107, 3, + 2, 2, 2, 2108, 2109, 3, 2, 2, 2, 2109, 2110, 3, 2, 2, 2, 2110, 2111, 7, + 382, 2, 2, 2111, 2115, 5, 502, 252, 2, 2112, 2113, 7, 110, 2, 2, 2113, + 2114, 7, 552, 2, 2, 2114, 2116, 5, 54, 28, 2, 2115, 2112, 3, 2, 2, 2, 2115, + 2116, 3, 2, 2, 2, 2116, 2123, 3, 2, 2, 2, 2117, 2118, 7, 110, 2, 2, 2118, + 2120, 7, 342, 2, 2, 2119, 2121, 7, 105, 2, 2, 2120, 2119, 3, 2, 2, 2, 2120, + 2121, 3, 2, 2, 2, 2121, 2122, 3, 2, 2, 2, 2122, 2124, 7, 512, 2, 2, 2123, + 2117, 3, 2, 2, 2, 2123, 2124, 3, 2, 2, 2, 2124, 2128, 3, 2, 2, 2, 2125, + 2126, 7, 129, 2, 2, 2126, 2127, 7, 161, 2, 2, 2127, 2129, 5, 502, 252, + 2, 2128, 2125, 3, 2, 2, 2, 2128, 2129, 3, 2, 2, 2, 2129, 2131, 3, 2, 2, + 2, 2130, 2132, 5, 62, 32, 2, 2131, 2130, 3, 2, 2, 2, 2131, 2132, 3, 2, + 2, 2, 2132, 2135, 3, 2, 2, 2, 2133, 2134, 7, 339, 2, 2, 2134, 2136, 7, + 1078, 2, 2, 2135, 2133, 3, 2, 2, 2, 2135, 2136, 3, 2, 2, 2, 2136, 2139, + 3, 2, 2, 2, 2137, 2138, 7, 368, 2, 2, 2138, 2140, 5, 350, 176, 2, 2139, + 2137, 3, 2, 2, 2, 2139, 2140, 3, 2, 2, 2, 2140, 117, 3, 2, 2, 2, 2141, + 2142, 7, 9, 2, 2, 2142, 2143, 7, 402, 2, 2, 2143, 2147, 5, 502, 252, 2, + 2144, 2146, 5, 72, 37, 2, 2145, 2144, 3, 2, 2, 2, 2146, 2149, 3, 2, 2, + 2, 2147, 2145, 3, 2, 2, 2, 2147, 2148, 3, 2, 2, 2, 2148, 119, 3, 2, 2, + 2, 2149, 2147, 3, 2, 2, 2, 2150, 2151, 7, 9, 2, 2, 2151, 2152, 7, 420, + 2, 2, 2152, 2153, 7, 547, 2, 2, 2153, 2154, 7, 724, 2, 2, 2154, 2155, 7, + 439, 2, 2, 2155, 2156, 7, 85, 2, 2, 2156, 121, 3, 2, 2, 2, 2157, 2158, + 7, 9, 2, 2, 2158, 2159, 7, 437, 2, 2, 2159, 2160, 7, 69, 2, 2, 2160, 2161, + 5, 528, 265, 2, 2161, 2162, 7, 7, 2, 2, 2162, 2163, 7, 603, 2, 2, 2163, + 2169, 7, 1078, 2, 2, 2164, 2166, 7, 416, 2, 2, 2165, 2167, 7, 1054, 2, + 2, 2166, 2165, 3, 2, 2, 2, 2166, 2167, 3, 2, 2, 2, 2167, 2168, 3, 2, 2, + 2, 2168, 2170, 5, 536, 269, 2, 2169, 2164, 3, 2, 2, 2, 2169, 2170, 3, 2, + 2, 2, 2170, 2172, 3, 2, 2, 2, 2171, 2173, 7, 618, 2, 2, 2172, 2171, 3, + 2, 2, 2, 2172, 2173, 3, 2, 2, 2, 2173, 2174, 3, 2, 2, 2, 2174, 2176, 7, + 376, 2, 2, 2175, 2177, 7, 1054, 2, 2, 2176, 2175, 3, 2, 2, 2, 2176, 2177, + 3, 2, 2, 2, 2177, 2178, 3, 2, 2, 2, 2178, 2179, 5, 518, 260, 2, 2179, 123, + 3, 2, 2, 2, 2180, 2181, 7, 9, 2, 2, 2181, 2182, 7, 121, 2, 2, 2182, 2186, + 5, 502, 252, 2, 2183, 2185, 5, 72, 37, 2, 2184, 2183, 3, 2, 2, 2, 2185, + 2188, 3, 2, 2, 2, 2186, 2184, 3, 2, 2, 2, 2186, 2187, 3, 2, 2, 2, 2187, + 125, 3, 2, 2, 2, 2188, 2186, 3, 2, 2, 2, 2189, 2190, 7, 9, 2, 2, 2190, + 2191, 7, 554, 2, 2, 2191, 2192, 5, 528, 265, 2, 2192, 2193, 7, 496, 2, + 2, 2193, 2194, 7, 1063, 2, 2, 2194, 2199, 5, 74, 38, 2, 2195, 2196, 7, + 1065, 2, 2, 2196, 2198, 5, 74, 38, 2, 2197, 2195, 3, 2, 2, 2, 2198, 2201, + 3, 2, 2, 2, 2199, 2197, 3, 2, 2, 2, 2199, 2200, 3, 2, 2, 2, 2200, 2202, + 3, 2, 2, 2, 2201, 2199, 3, 2, 2, 2, 2202, 2203, 7, 1064, 2, 2, 2203, 127, + 3, 2, 2, 2, 2204, 2206, 7, 9, 2, 2, 2205, 2207, 9, 3, 2, 2, 2206, 2205, + 3, 2, 2, 2, 2206, 2207, 3, 2, 2, 2, 2207, 2209, 3, 2, 2, 2, 2208, 2210, + 7, 73, 2, 2, 2209, 2208, 3, 2, 2, 2, 2209, 2210, 3, 2, 2, 2, 2210, 2211, + 3, 2, 2, 2, 2211, 2212, 7, 158, 2, 2, 2212, 2221, 5, 504, 253, 2, 2213, + 2218, 5, 134, 68, 2, 2214, 2215, 7, 1065, 2, 2, 2215, 2217, 5, 134, 68, + 2, 2216, 2214, 3, 2, 2, 2, 2217, 2220, 3, 2, 2, 2, 2218, 2216, 3, 2, 2, + 2, 2218, 2219, 3, 2, 2, 2, 2219, 2222, 3, 2, 2, 2, 2220, 2218, 3, 2, 2, + 2, 2221, 2213, 3, 2, 2, 2, 2221, 2222, 3, 2, 2, 2, 2222, 2224, 3, 2, 2, + 2, 2223, 2225, 5, 98, 50, 2, 2224, 2223, 3, 2, 2, 2, 2224, 2225, 3, 2, + 2, 2, 2225, 129, 3, 2, 2, 2, 2226, 2227, 7, 9, 2, 2, 2227, 2228, 7, 593, + 2, 2, 2228, 2229, 5, 528, 265, 2, 2229, 2230, 9, 30, 2, 2, 2230, 2231, + 7, 358, 2, 2, 2231, 2235, 7, 1078, 2, 2, 2232, 2233, 7, 416, 2, 2, 2233, + 2234, 7, 1054, 2, 2, 2234, 2236, 5, 536, 269, 2, 2235, 2232, 3, 2, 2, 2, + 2235, 2236, 3, 2, 2, 2, 2236, 2238, 3, 2, 2, 2, 2237, 2239, 7, 618, 2, + 2, 2238, 2237, 3, 2, 2, 2, 2238, 2239, 3, 2, 2, 2, 2239, 2240, 3, 2, 2, + 2, 2240, 2242, 7, 376, 2, 2, 2241, 2243, 7, 1054, 2, 2, 2242, 2241, 3, + 2, 2, 2, 2242, 2243, 3, 2, 2, 2, 2243, 2244, 3, 2, 2, 2, 2244, 2245, 5, + 518, 260, 2, 2245, 131, 3, 2, 2, 2, 2246, 2250, 7, 9, 2, 2, 2247, 2248, + 7, 308, 2, 2, 2248, 2249, 7, 1054, 2, 2, 2249, 2251, 9, 12, 2, 2, 2250, + 2247, 3, 2, 2, 2, 2250, 2251, 3, 2, 2, 2, 2251, 2253, 3, 2, 2, 2, 2252, + 2254, 5, 52, 27, 2, 2253, 2252, 3, 2, 2, 2, 2253, 2254, 3, 2, 2, 2, 2254, + 2258, 3, 2, 2, 2, 2255, 2256, 7, 147, 2, 2, 2256, 2257, 7, 553, 2, 2, 2257, + 2259, 9, 13, 2, 2, 2258, 2255, 3, 2, 2, 2, 2258, 2259, 3, 2, 2, 2, 2259, + 2260, 3, 2, 2, 2, 2260, 2261, 7, 615, 2, 2, 2261, 2266, 5, 502, 252, 2, + 2262, 2263, 7, 1063, 2, 2, 2263, 2264, 5, 560, 281, 2, 2264, 2265, 7, 1064, + 2, 2, 2265, 2267, 3, 2, 2, 2, 2266, 2262, 3, 2, 2, 2, 2266, 2267, 3, 2, + 2, 2, 2267, 2268, 3, 2, 2, 2, 2268, 2269, 7, 13, 2, 2, 2269, 2276, 5, 180, + 91, 2, 2270, 2272, 7, 178, 2, 2, 2271, 2273, 9, 14, 2, 2, 2272, 2271, 3, + 2, 2, 2, 2272, 2273, 3, 2, 2, 2, 2273, 2274, 3, 2, 2, 2, 2274, 2275, 7, + 25, 2, 2, 2275, 2277, 7, 112, 2, 2, 2276, 2270, 3, 2, 2, 2, 2276, 2277, + 3, 2, 2, 2, 2277, 133, 3, 2, 2, 2, 2278, 2285, 5, 94, 48, 2, 2279, 2281, + 7, 1065, 2, 2, 2280, 2279, 3, 2, 2, 2, 2280, 2281, 3, 2, 2, 2, 2281, 2282, + 3, 2, 2, 2, 2282, 2284, 5, 94, 48, 2, 2283, 2280, 3, 2, 2, 2, 2284, 2287, + 3, 2, 2, 2, 2285, 2283, 3, 2, 2, 2, 2285, 2286, 3, 2, 2, 2, 2286, 2645, + 3, 2, 2, 2, 2287, 2285, 3, 2, 2, 2, 2288, 2290, 7, 7, 2, 2, 2289, 2291, + 7, 27, 2, 2, 2290, 2289, 3, 2, 2, 2, 2290, 2291, 3, 2, 2, 2, 2291, 2292, + 3, 2, 2, 2, 2292, 2293, 5, 528, 265, 2, 2293, 2297, 5, 80, 41, 2, 2294, + 2298, 7, 396, 2, 2, 2295, 2296, 7, 306, 2, 2, 2296, 2298, 5, 528, 265, + 2, 2297, 2294, 3, 2, 2, 2, 2297, 2295, 3, 2, 2, 2, 2297, 2298, 3, 2, 2, + 2, 2298, 2645, 3, 2, 2, 2, 2299, 2301, 7, 7, 2, 2, 2300, 2302, 7, 27, 2, + 2, 2301, 2300, 3, 2, 2, 2, 2301, 2302, 3, 2, 2, 2, 2302, 2303, 3, 2, 2, + 2, 2303, 2304, 7, 1063, 2, 2, 2304, 2305, 5, 528, 265, 2, 2305, 2312, 5, + 80, 41, 2, 2306, 2307, 7, 1065, 2, 2, 2307, 2308, 5, 528, 265, 2, 2308, + 2309, 5, 80, 41, 2, 2309, 2311, 3, 2, 2, 2, 2310, 2306, 3, 2, 2, 2, 2311, + 2314, 3, 2, 2, 2, 2312, 2310, 3, 2, 2, 2, 2312, 2313, 3, 2, 2, 2, 2313, + 2315, 3, 2, 2, 2, 2314, 2312, 3, 2, 2, 2, 2315, 2316, 7, 1064, 2, 2, 2316, + 2645, 3, 2, 2, 2, 2317, 2318, 7, 7, 2, 2, 2318, 2320, 9, 20, 2, 2, 2319, + 2321, 5, 528, 265, 2, 2320, 2319, 3, 2, 2, 2, 2320, 2321, 3, 2, 2, 2, 2321, + 2323, 3, 2, 2, 2, 2322, 2324, 5, 64, 33, 2, 2323, 2322, 3, 2, 2, 2, 2323, + 2324, 3, 2, 2, 2, 2324, 2325, 3, 2, 2, 2, 2325, 2329, 5, 564, 283, 2, 2326, + 2328, 5, 66, 34, 2, 2327, 2326, 3, 2, 2, 2, 2328, 2331, 3, 2, 2, 2, 2329, + 2327, 3, 2, 2, 2, 2329, 2330, 3, 2, 2, 2, 2330, 2645, 3, 2, 2, 2, 2331, + 2329, 3, 2, 2, 2, 2332, 2337, 7, 7, 2, 2, 2333, 2335, 7, 29, 2, 2, 2334, + 2336, 5, 528, 265, 2, 2335, 2334, 3, 2, 2, 2, 2335, 2336, 3, 2, 2, 2, 2336, + 2338, 3, 2, 2, 2, 2337, 2333, 3, 2, 2, 2, 2337, 2338, 3, 2, 2, 2, 2338, + 2339, 3, 2, 2, 2, 2339, 2340, 7, 120, 2, 2, 2340, 2342, 7, 85, 2, 2, 2341, + 2343, 5, 528, 265, 2, 2342, 2341, 3, 2, 2, 2, 2342, 2343, 3, 2, 2, 2, 2343, + 2345, 3, 2, 2, 2, 2344, 2346, 5, 64, 33, 2, 2345, 2344, 3, 2, 2, 2, 2345, + 2346, 3, 2, 2, 2, 2346, 2347, 3, 2, 2, 2, 2347, 2351, 5, 564, 283, 2, 2348, + 2350, 5, 66, 34, 2, 2349, 2348, 3, 2, 2, 2, 2350, 2353, 3, 2, 2, 2, 2351, + 2349, 3, 2, 2, 2, 2351, 2352, 3, 2, 2, 2, 2352, 2645, 3, 2, 2, 2, 2353, + 2351, 3, 2, 2, 2, 2354, 2359, 7, 7, 2, 2, 2355, 2357, 7, 29, 2, 2, 2356, + 2358, 5, 528, 265, 2, 2357, 2356, 3, 2, 2, 2, 2357, 2358, 3, 2, 2, 2, 2358, + 2360, 3, 2, 2, 2, 2359, 2355, 3, 2, 2, 2, 2359, 2360, 3, 2, 2, 2, 2360, + 2361, 3, 2, 2, 2, 2361, 2363, 7, 167, 2, 2, 2362, 2364, 9, 20, 2, 2, 2363, + 2362, 3, 2, 2, 2, 2363, 2364, 3, 2, 2, 2, 2364, 2366, 3, 2, 2, 2, 2365, + 2367, 5, 528, 265, 2, 2366, 2365, 3, 2, 2, 2, 2366, 2367, 3, 2, 2, 2, 2367, + 2369, 3, 2, 2, 2, 2368, 2370, 5, 64, 33, 2, 2369, 2368, 3, 2, 2, 2, 2369, + 2370, 3, 2, 2, 2, 2370, 2371, 3, 2, 2, 2, 2371, 2375, 5, 564, 283, 2, 2372, + 2374, 5, 66, 34, 2, 2373, 2372, 3, 2, 2, 2, 2374, 2377, 3, 2, 2, 2, 2375, + 2373, 3, 2, 2, 2, 2375, 2376, 3, 2, 2, 2, 2376, 2645, 3, 2, 2, 2, 2377, + 2375, 3, 2, 2, 2, 2378, 2379, 7, 7, 2, 2, 2379, 2381, 9, 22, 2, 2, 2380, + 2382, 9, 20, 2, 2, 2381, 2380, 3, 2, 2, 2, 2381, 2382, 3, 2, 2, 2, 2382, + 2384, 3, 2, 2, 2, 2383, 2385, 5, 528, 265, 2, 2384, 2383, 3, 2, 2, 2, 2384, + 2385, 3, 2, 2, 2, 2385, 2386, 3, 2, 2, 2, 2386, 2390, 5, 564, 283, 2, 2387, + 2389, 5, 66, 34, 2, 2388, 2387, 3, 2, 2, 2, 2389, 2392, 3, 2, 2, 2, 2390, + 2388, 3, 2, 2, 2, 2390, 2391, 3, 2, 2, 2, 2391, 2645, 3, 2, 2, 2, 2392, + 2390, 3, 2, 2, 2, 2393, 2398, 7, 7, 2, 2, 2394, 2396, 7, 29, 2, 2, 2395, + 2397, 5, 528, 265, 2, 2396, 2395, 3, 2, 2, 2, 2396, 2397, 3, 2, 2, 2, 2397, + 2399, 3, 2, 2, 2, 2398, 2394, 3, 2, 2, 2, 2398, 2399, 3, 2, 2, 2, 2399, + 2400, 3, 2, 2, 2, 2400, 2401, 7, 63, 2, 2, 2401, 2403, 7, 85, 2, 2, 2402, + 2404, 5, 528, 265, 2, 2403, 2402, 3, 2, 2, 2, 2403, 2404, 3, 2, 2, 2, 2404, + 2405, 3, 2, 2, 2, 2405, 2406, 5, 564, 283, 2, 2406, 2407, 5, 86, 44, 2, + 2407, 2645, 3, 2, 2, 2, 2408, 2413, 7, 7, 2, 2, 2409, 2411, 7, 29, 2, 2, + 2410, 2412, 5, 528, 265, 2, 2411, 2410, 3, 2, 2, 2, 2411, 2412, 3, 2, 2, + 2, 2412, 2414, 3, 2, 2, 2, 2413, 2409, 3, 2, 2, 2, 2413, 2414, 3, 2, 2, + 2, 2414, 2415, 3, 2, 2, 2, 2415, 2416, 7, 25, 2, 2, 2416, 2417, 7, 1063, + 2, 2, 2417, 2418, 5, 606, 304, 2, 2418, 2419, 7, 1064, 2, 2, 2419, 2645, + 3, 2, 2, 2, 2420, 2422, 7, 308, 2, 2, 2421, 2423, 7, 1054, 2, 2, 2422, + 2421, 3, 2, 2, 2, 2422, 2423, 3, 2, 2, 2, 2423, 2424, 3, 2, 2, 2, 2424, + 2645, 9, 5, 2, 2, 2425, 2427, 7, 9, 2, 2, 2426, 2428, 7, 27, 2, 2, 2427, + 2426, 3, 2, 2, 2, 2427, 2428, 3, 2, 2, 2, 2428, 2429, 3, 2, 2, 2, 2429, + 2435, 5, 528, 265, 2, 2430, 2431, 7, 142, 2, 2, 2431, 2432, 7, 40, 2, 2, + 2432, 2436, 5, 576, 289, 2, 2433, 2434, 7, 49, 2, 2, 2434, 2436, 7, 40, + 2, 2, 2435, 2430, 3, 2, 2, 2, 2435, 2433, 3, 2, 2, 2, 2436, 2645, 3, 2, + 2, 2, 2437, 2439, 7, 23, 2, 2, 2438, 2440, 7, 27, 2, 2, 2439, 2438, 3, + 2, 2, 2, 2439, 2440, 3, 2, 2, 2, 2440, 2441, 3, 2, 2, 2, 2441, 2442, 5, + 528, 265, 2, 2442, 2443, 5, 528, 265, 2, 2443, 2447, 5, 80, 41, 2, 2444, + 2448, 7, 396, 2, 2, 2445, 2446, 7, 306, 2, 2, 2446, 2448, 5, 528, 265, + 2, 2447, 2444, 3, 2, 2, 2, 2447, 2445, 3, 2, 2, 2, 2447, 2448, 3, 2, 2, + 2, 2448, 2645, 3, 2, 2, 2, 2449, 2450, 7, 129, 2, 2, 2450, 2451, 7, 27, + 2, 2, 2451, 2452, 5, 528, 265, 2, 2452, 2453, 7, 161, 2, 2, 2453, 2454, + 5, 528, 265, 2, 2454, 2645, 3, 2, 2, 2, 2455, 2457, 7, 96, 2, 2, 2456, + 2458, 7, 1054, 2, 2, 2457, 2456, 3, 2, 2, 2, 2457, 2458, 3, 2, 2, 2, 2458, + 2459, 3, 2, 2, 2, 2459, 2645, 9, 6, 2, 2, 2460, 2462, 7, 474, 2, 2, 2461, + 2463, 7, 27, 2, 2, 2462, 2461, 3, 2, 2, 2, 2462, 2463, 3, 2, 2, 2, 2463, + 2464, 3, 2, 2, 2, 2464, 2465, 5, 528, 265, 2, 2465, 2469, 5, 80, 41, 2, + 2466, 2470, 7, 396, 2, 2, 2467, 2468, 7, 306, 2, 2, 2468, 2470, 5, 528, + 265, 2, 2469, 2466, 3, 2, 2, 2, 2469, 2467, 3, 2, 2, 2, 2469, 2470, 3, + 2, 2, 2, 2470, 2645, 3, 2, 2, 2, 2471, 2473, 7, 49, 2, 2, 2472, 2474, 7, + 27, 2, 2, 2473, 2472, 3, 2, 2, 2, 2473, 2474, 3, 2, 2, 2, 2474, 2475, 3, + 2, 2, 2, 2475, 2477, 5, 528, 265, 2, 2476, 2478, 7, 134, 2, 2, 2477, 2476, + 3, 2, 2, 2, 2477, 2478, 3, 2, 2, 2, 2478, 2645, 3, 2, 2, 2, 2479, 2480, + 7, 49, 2, 2, 2480, 2481, 9, 31, 2, 2, 2481, 2645, 5, 528, 265, 2, 2482, + 2483, 7, 49, 2, 2, 2483, 2484, 7, 120, 2, 2, 2484, 2645, 7, 85, 2, 2, 2485, + 2486, 7, 129, 2, 2, 2486, 2487, 9, 20, 2, 2, 2487, 2488, 5, 528, 265, 2, + 2488, 2489, 7, 161, 2, 2, 2489, 2490, 5, 528, 265, 2, 2490, 2645, 3, 2, + 2, 2, 2491, 2492, 7, 9, 2, 2, 2492, 2493, 7, 75, 2, 2, 2493, 2494, 5, 528, + 265, 2, 2494, 2495, 9, 32, 2, 2, 2495, 2645, 3, 2, 2, 2, 2496, 2497, 7, + 49, 2, 2, 2497, 2498, 9, 20, 2, 2, 2498, 2645, 5, 528, 265, 2, 2499, 2500, + 7, 49, 2, 2, 2500, 2501, 7, 63, 2, 2, 2501, 2502, 7, 85, 2, 2, 2502, 2645, + 5, 528, 265, 2, 2503, 2504, 7, 365, 2, 2, 2504, 2645, 7, 86, 2, 2, 2505, + 2506, 7, 372, 2, 2, 2506, 2645, 7, 86, 2, 2, 2507, 2509, 7, 129, 2, 2, + 2508, 2510, 9, 33, 2, 2, 2509, 2508, 3, 2, 2, 2, 2509, 2510, 3, 2, 2, 2, + 2510, 2513, 3, 2, 2, 2, 2511, 2514, 5, 528, 265, 2, 2512, 2514, 5, 502, + 252, 2, 2513, 2511, 3, 2, 2, 2, 2513, 2512, 3, 2, 2, 2, 2514, 2645, 3, + 2, 2, 2, 2515, 2516, 7, 115, 2, 2, 2516, 2517, 7, 18, 2, 2, 2517, 2645, + 5, 560, 281, 2, 2518, 2519, 7, 31, 2, 2, 2519, 2520, 7, 161, 2, 2, 2520, + 2521, 7, 24, 2, 2, 2521, 2522, 7, 142, 2, 2, 2522, 2525, 5, 514, 258, 2, + 2523, 2524, 7, 26, 2, 2, 2524, 2526, 5, 516, 259, 2, 2525, 2523, 3, 2, + 2, 2, 2525, 2526, 3, 2, 2, 2, 2526, 2645, 3, 2, 2, 2, 2527, 2529, 7, 40, + 2, 2, 2528, 2527, 3, 2, 2, 2, 2528, 2529, 3, 2, 2, 2, 2529, 2530, 3, 2, + 2, 2, 2530, 2531, 7, 24, 2, 2, 2531, 2532, 7, 142, 2, 2, 2532, 2533, 7, + 1054, 2, 2, 2533, 2537, 5, 514, 258, 2, 2534, 2535, 7, 26, 2, 2, 2535, + 2536, 7, 1054, 2, 2, 2536, 2538, 5, 516, 259, 2, 2537, 2534, 3, 2, 2, 2, + 2537, 2538, 3, 2, 2, 2, 2538, 2645, 3, 2, 2, 2, 2539, 2540, 7, 366, 2, + 2, 2540, 2645, 7, 593, 2, 2, 2541, 2542, 7, 414, 2, 2, 2542, 2645, 7, 593, + 2, 2, 2543, 2645, 7, 62, 2, 2, 2544, 2545, 9, 34, 2, 2, 2545, 2645, 7, + 612, 2, 2, 2546, 2547, 7, 7, 2, 2, 2547, 2548, 7, 119, 2, 2, 2548, 2549, + 7, 1063, 2, 2, 2549, 2554, 5, 104, 53, 2, 2550, 2551, 7, 1065, 2, 2, 2551, + 2553, 5, 104, 53, 2, 2552, 2550, 3, 2, 2, 2, 2553, 2556, 3, 2, 2, 2, 2554, + 2552, 3, 2, 2, 2, 2554, 2555, 3, 2, 2, 2, 2555, 2557, 3, 2, 2, 2, 2556, + 2554, 3, 2, 2, 2, 2557, 2558, 7, 1064, 2, 2, 2558, 2645, 3, 2, 2, 2, 2559, + 2560, 7, 49, 2, 2, 2560, 2561, 7, 119, 2, 2, 2561, 2645, 5, 560, 281, 2, + 2562, 2563, 7, 366, 2, 2, 2563, 2566, 7, 119, 2, 2, 2564, 2567, 5, 560, + 281, 2, 2565, 2567, 7, 8, 2, 2, 2566, 2564, 3, 2, 2, 2, 2566, 2565, 3, + 2, 2, 2, 2567, 2568, 3, 2, 2, 2, 2568, 2645, 7, 593, 2, 2, 2569, 2570, + 7, 414, 2, 2, 2570, 2573, 7, 119, 2, 2, 2571, 2574, 5, 560, 281, 2, 2572, + 2574, 7, 8, 2, 2, 2573, 2571, 3, 2, 2, 2, 2573, 2572, 3, 2, 2, 2, 2574, + 2575, 3, 2, 2, 2, 2575, 2645, 7, 593, 2, 2, 2576, 2577, 7, 601, 2, 2, 2577, + 2580, 7, 119, 2, 2, 2578, 2581, 5, 560, 281, 2, 2579, 2581, 7, 8, 2, 2, + 2580, 2578, 3, 2, 2, 2, 2580, 2579, 3, 2, 2, 2, 2581, 2645, 3, 2, 2, 2, + 2582, 2583, 7, 334, 2, 2, 2583, 2584, 7, 119, 2, 2, 2584, 2645, 5, 534, + 268, 2, 2585, 2586, 7, 529, 2, 2, 2586, 2587, 7, 119, 2, 2, 2587, 2588, + 5, 560, 281, 2, 2588, 2589, 7, 81, 2, 2, 2589, 2590, 7, 1063, 2, 2, 2590, + 2595, 5, 104, 53, 2, 2591, 2592, 7, 1065, 2, 2, 2592, 2594, 5, 104, 53, + 2, 2593, 2591, 3, 2, 2, 2, 2594, 2597, 3, 2, 2, 2, 2595, 2593, 3, 2, 2, + 2, 2595, 2596, 3, 2, 2, 2, 2596, 2598, 3, 2, 2, 2, 2597, 2595, 3, 2, 2, + 2, 2598, 2599, 7, 1064, 2, 2, 2599, 2645, 3, 2, 2, 2, 2600, 2601, 7, 385, + 2, 2, 2601, 2602, 7, 119, 2, 2, 2602, 2603, 5, 528, 265, 2, 2603, 2604, + 7, 178, 2, 2, 2604, 2605, 7, 158, 2, 2, 2605, 2608, 5, 504, 253, 2, 2606, + 2607, 9, 34, 2, 2, 2607, 2609, 7, 612, 2, 2, 2608, 2606, 3, 2, 2, 2, 2608, + 2609, 3, 2, 2, 2, 2609, 2645, 3, 2, 2, 2, 2610, 2611, 7, 11, 2, 2, 2611, + 2614, 7, 119, 2, 2, 2612, 2615, 5, 560, 281, 2, 2613, 2615, 7, 8, 2, 2, + 2614, 2612, 3, 2, 2, 2, 2614, 2613, 3, 2, 2, 2, 2615, 2645, 3, 2, 2, 2, + 2616, 2617, 7, 25, 2, 2, 2617, 2620, 7, 119, 2, 2, 2618, 2621, 5, 560, + 281, 2, 2619, 2621, 7, 8, 2, 2, 2620, 2618, 3, 2, 2, 2, 2620, 2619, 3, + 2, 2, 2, 2621, 2645, 3, 2, 2, 2, 2622, 2623, 7, 111, 2, 2, 2623, 2626, + 7, 119, 2, 2, 2624, 2627, 5, 560, 281, 2, 2625, 2627, 7, 8, 2, 2, 2626, + 2624, 3, 2, 2, 2, 2626, 2625, 3, 2, 2, 2, 2627, 2645, 3, 2, 2, 2, 2628, + 2629, 7, 520, 2, 2, 2629, 2632, 7, 119, 2, 2, 2630, 2633, 5, 560, 281, + 2, 2631, 2633, 7, 8, 2, 2, 2632, 2630, 3, 2, 2, 2, 2632, 2631, 3, 2, 2, + 2, 2633, 2645, 3, 2, 2, 2, 2634, 2635, 7, 530, 2, 2, 2635, 2638, 7, 119, + 2, 2, 2636, 2639, 5, 560, 281, 2, 2637, 2639, 7, 8, 2, 2, 2638, 2636, 3, + 2, 2, 2, 2638, 2637, 3, 2, 2, 2, 2639, 2645, 3, 2, 2, 2, 2640, 2641, 7, + 528, 2, 2, 2641, 2645, 7, 502, 2, 2, 2642, 2643, 7, 608, 2, 2, 2643, 2645, + 7, 502, 2, 2, 2644, 2278, 3, 2, 2, 2, 2644, 2288, 3, 2, 2, 2, 2644, 2299, + 3, 2, 2, 2, 2644, 2317, 3, 2, 2, 2, 2644, 2332, 3, 2, 2, 2, 2644, 2354, + 3, 2, 2, 2, 2644, 2378, 3, 2, 2, 2, 2644, 2393, 3, 2, 2, 2, 2644, 2408, + 3, 2, 2, 2, 2644, 2420, 3, 2, 2, 2, 2644, 2425, 3, 2, 2, 2, 2644, 2437, + 3, 2, 2, 2, 2644, 2449, 3, 2, 2, 2, 2644, 2455, 3, 2, 2, 2, 2644, 2460, + 3, 2, 2, 2, 2644, 2471, 3, 2, 2, 2, 2644, 2479, 3, 2, 2, 2, 2644, 2482, + 3, 2, 2, 2, 2644, 2485, 3, 2, 2, 2, 2644, 2491, 3, 2, 2, 2, 2644, 2496, + 3, 2, 2, 2, 2644, 2499, 3, 2, 2, 2, 2644, 2503, 3, 2, 2, 2, 2644, 2505, + 3, 2, 2, 2, 2644, 2507, 3, 2, 2, 2, 2644, 2515, 3, 2, 2, 2, 2644, 2518, + 3, 2, 2, 2, 2644, 2528, 3, 2, 2, 2, 2644, 2539, 3, 2, 2, 2, 2644, 2541, + 3, 2, 2, 2, 2644, 2543, 3, 2, 2, 2, 2644, 2544, 3, 2, 2, 2, 2644, 2546, + 3, 2, 2, 2, 2644, 2559, 3, 2, 2, 2, 2644, 2562, 3, 2, 2, 2, 2644, 2569, + 3, 2, 2, 2, 2644, 2576, 3, 2, 2, 2, 2644, 2582, 3, 2, 2, 2, 2644, 2585, + 3, 2, 2, 2, 2644, 2600, 3, 2, 2, 2, 2644, 2610, 3, 2, 2, 2, 2644, 2616, + 3, 2, 2, 2, 2644, 2622, 3, 2, 2, 2, 2644, 2628, 3, 2, 2, 2, 2644, 2634, + 3, 2, 2, 2, 2644, 2640, 3, 2, 2, 2, 2644, 2642, 3, 2, 2, 2, 2645, 135, + 3, 2, 2, 2, 2646, 2647, 7, 49, 2, 2, 2647, 2649, 9, 2, 2, 2, 2648, 2650, + 5, 582, 292, 2, 2649, 2648, 3, 2, 2, 2, 2649, 2650, 3, 2, 2, 2, 2650, 2651, + 3, 2, 2, 2, 2651, 2652, 5, 528, 265, 2, 2652, 137, 3, 2, 2, 2, 2653, 2654, + 7, 49, 2, 2, 2654, 2656, 7, 382, 2, 2, 2655, 2657, 5, 582, 292, 2, 2656, + 2655, 3, 2, 2, 2, 2656, 2657, 3, 2, 2, 2, 2657, 2658, 3, 2, 2, 2, 2658, + 2659, 5, 502, 252, 2, 2659, 139, 3, 2, 2, 2, 2660, 2661, 7, 49, 2, 2, 2661, + 2663, 7, 75, 2, 2, 2662, 2664, 9, 3, 2, 2, 2663, 2662, 3, 2, 2, 2, 2663, + 2664, 3, 2, 2, 2, 2664, 2665, 3, 2, 2, 2, 2665, 2666, 5, 528, 265, 2, 2666, + 2667, 7, 110, 2, 2, 2667, 2680, 5, 504, 253, 2, 2668, 2670, 7, 308, 2, + 2, 2669, 2671, 7, 1054, 2, 2, 2670, 2669, 3, 2, 2, 2, 2670, 2671, 3, 2, + 2, 2, 2671, 2672, 3, 2, 2, 2, 2672, 2679, 9, 5, 2, 2, 2673, 2675, 7, 96, + 2, 2, 2674, 2676, 7, 1054, 2, 2, 2675, 2674, 3, 2, 2, 2, 2675, 2676, 3, + 2, 2, 2, 2676, 2677, 3, 2, 2, 2, 2677, 2679, 9, 6, 2, 2, 2678, 2668, 3, + 2, 2, 2, 2678, 2673, 3, 2, 2, 2, 2679, 2682, 3, 2, 2, 2, 2680, 2678, 3, + 2, 2, 2, 2680, 2681, 3, 2, 2, 2, 2681, 141, 3, 2, 2, 2, 2682, 2680, 3, + 2, 2, 2, 2683, 2684, 7, 49, 2, 2, 2684, 2685, 7, 437, 2, 2, 2685, 2686, + 7, 69, 2, 2, 2686, 2687, 5, 528, 265, 2, 2687, 2688, 7, 376, 2, 2, 2688, + 2689, 7, 1054, 2, 2, 2689, 2690, 5, 518, 260, 2, 2690, 143, 3, 2, 2, 2, + 2691, 2692, 7, 49, 2, 2, 2692, 2694, 7, 121, 2, 2, 2693, 2695, 5, 582, + 292, 2, 2694, 2693, 3, 2, 2, 2, 2694, 2695, 3, 2, 2, 2, 2695, 2696, 3, + 2, 2, 2, 2696, 2697, 5, 502, 252, 2, 2697, 145, 3, 2, 2, 2, 2698, 2699, + 7, 49, 2, 2, 2699, 2701, 7, 402, 2, 2, 2700, 2702, 5, 582, 292, 2, 2701, + 2700, 3, 2, 2, 2, 2701, 2702, 3, 2, 2, 2, 2702, 2703, 3, 2, 2, 2, 2703, + 2704, 5, 502, 252, 2, 2704, 147, 3, 2, 2, 2, 2705, 2706, 7, 49, 2, 2, 2706, + 2708, 7, 554, 2, 2, 2707, 2709, 5, 582, 292, 2, 2708, 2707, 3, 2, 2, 2, + 2708, 2709, 3, 2, 2, 2, 2709, 2710, 3, 2, 2, 2, 2710, 2711, 5, 528, 265, + 2, 2711, 149, 3, 2, 2, 2, 2712, 2714, 7, 49, 2, 2, 2713, 2715, 7, 594, + 2, 2, 2714, 2713, 3, 2, 2, 2, 2714, 2715, 3, 2, 2, 2, 2715, 2716, 3, 2, + 2, 2, 2716, 2718, 7, 158, 2, 2, 2717, 2719, 5, 582, 292, 2, 2718, 2717, + 3, 2, 2, 2, 2718, 2719, 3, 2, 2, 2, 2719, 2720, 3, 2, 2, 2, 2720, 2722, + 5, 562, 282, 2, 2721, 2723, 9, 35, 2, 2, 2722, 2721, 3, 2, 2, 2, 2722, + 2723, 3, 2, 2, 2, 2723, 151, 3, 2, 2, 2, 2724, 2725, 7, 49, 2, 2, 2725, + 2726, 7, 593, 2, 2, 2726, 2732, 5, 528, 265, 2, 2727, 2729, 7, 376, 2, + 2, 2728, 2730, 7, 1054, 2, 2, 2729, 2728, 3, 2, 2, 2, 2729, 2730, 3, 2, + 2, 2, 2730, 2731, 3, 2, 2, 2, 2731, 2733, 5, 518, 260, 2, 2732, 2727, 3, + 2, 2, 2, 2732, 2733, 3, 2, 2, 2, 2733, 153, 3, 2, 2, 2, 2734, 2735, 7, + 49, 2, 2, 2735, 2737, 7, 163, 2, 2, 2736, 2738, 5, 582, 292, 2, 2737, 2736, + 3, 2, 2, 2, 2737, 2738, 3, 2, 2, 2, 2738, 2739, 3, 2, 2, 2, 2739, 2740, + 5, 502, 252, 2, 2740, 155, 3, 2, 2, 2, 2741, 2742, 7, 49, 2, 2, 2742, 2744, + 7, 615, 2, 2, 2743, 2745, 5, 582, 292, 2, 2744, 2743, 3, 2, 2, 2, 2744, + 2745, 3, 2, 2, 2, 2745, 2746, 3, 2, 2, 2, 2746, 2751, 5, 502, 252, 2, 2747, + 2748, 7, 1065, 2, 2, 2748, 2750, 5, 502, 252, 2, 2749, 2747, 3, 2, 2, 2, + 2750, 2753, 3, 2, 2, 2, 2751, 2749, 3, 2, 2, 2, 2751, 2752, 3, 2, 2, 2, + 2752, 2755, 3, 2, 2, 2, 2753, 2751, 3, 2, 2, 2, 2754, 2756, 9, 35, 2, 2, + 2755, 2754, 3, 2, 2, 2, 2755, 2756, 3, 2, 2, 2, 2756, 157, 3, 2, 2, 2, + 2757, 2758, 7, 129, 2, 2, 2758, 2759, 7, 158, 2, 2, 2759, 2764, 5, 160, + 81, 2, 2760, 2761, 7, 1065, 2, 2, 2761, 2763, 5, 160, 81, 2, 2762, 2760, + 3, 2, 2, 2, 2763, 2766, 3, 2, 2, 2, 2764, 2762, 3, 2, 2, 2, 2764, 2765, + 3, 2, 2, 2, 2765, 159, 3, 2, 2, 2, 2766, 2764, 3, 2, 2, 2, 2767, 2768, + 5, 504, 253, 2, 2768, 2769, 7, 161, 2, 2, 2769, 2770, 5, 504, 253, 2, 2770, + 161, 3, 2, 2, 2, 2771, 2773, 7, 601, 2, 2, 2772, 2774, 7, 158, 2, 2, 2773, + 2772, 3, 2, 2, 2, 2773, 2774, 3, 2, 2, 2, 2774, 2775, 3, 2, 2, 2, 2775, + 2776, 5, 504, 253, 2, 2776, 163, 3, 2, 2, 2, 2777, 2778, 7, 19, 2, 2, 2778, + 2785, 5, 502, 252, 2, 2779, 2782, 7, 1063, 2, 2, 2780, 2783, 5, 570, 286, + 2, 2781, 2783, 5, 566, 284, 2, 2782, 2780, 3, 2, 2, 2, 2782, 2781, 3, 2, + 2, 2, 2782, 2783, 3, 2, 2, 2, 2783, 2784, 3, 2, 2, 2, 2784, 2786, 7, 1064, + 2, 2, 2785, 2779, 3, 2, 2, 2, 2785, 2786, 3, 2, 2, 2, 2786, 165, 3, 2, + 2, 2, 2787, 2790, 5, 192, 97, 2, 2788, 2790, 5, 194, 98, 2, 2789, 2787, + 3, 2, 2, 2, 2789, 2788, 3, 2, 2, 2, 2790, 167, 3, 2, 2, 2, 2791, 2792, + 7, 368, 2, 2, 2792, 2793, 5, 566, 284, 2, 2793, 169, 3, 2, 2, 2, 2794, + 2799, 5, 196, 99, 2, 2795, 2799, 5, 198, 100, 2, 2796, 2799, 5, 200, 101, + 2, 2797, 2799, 5, 202, 102, 2, 2798, 2794, 3, 2, 2, 2, 2798, 2795, 3, 2, + 2, 2, 2798, 2796, 3, 2, 2, 2, 2798, 2797, 3, 2, 2, 2, 2799, 171, 3, 2, + 2, 2, 2800, 2802, 7, 79, 2, 2, 2801, 2803, 9, 36, 2, 2, 2802, 2801, 3, + 2, 2, 2, 2802, 2803, 3, 2, 2, 2, 2803, 2805, 3, 2, 2, 2, 2804, 2806, 7, + 73, 2, 2, 2805, 2804, 3, 2, 2, 2, 2805, 2806, 3, 2, 2, 2, 2806, 2808, 3, + 2, 2, 2, 2807, 2809, 7, 81, 2, 2, 2808, 2807, 3, 2, 2, 2, 2808, 2809, 3, + 2, 2, 2, 2809, 2810, 3, 2, 2, 2, 2810, 2817, 5, 504, 253, 2, 2811, 2812, + 7, 119, 2, 2, 2812, 2814, 7, 1063, 2, 2, 2813, 2815, 5, 560, 281, 2, 2814, + 2813, 3, 2, 2, 2, 2814, 2815, 3, 2, 2, 2, 2815, 2816, 3, 2, 2, 2, 2816, + 2818, 7, 1064, 2, 2, 2817, 2811, 3, 2, 2, 2, 2817, 2818, 3, 2, 2, 2, 2818, + 2835, 3, 2, 2, 2, 2819, 2820, 7, 1063, 2, 2, 2820, 2821, 5, 560, 281, 2, + 2821, 2822, 7, 1064, 2, 2, 2822, 2824, 3, 2, 2, 2, 2823, 2819, 3, 2, 2, + 2, 2823, 2824, 3, 2, 2, 2, 2824, 2825, 3, 2, 2, 2, 2825, 2836, 5, 184, + 93, 2, 2826, 2827, 7, 142, 2, 2, 2827, 2832, 5, 186, 94, 2, 2828, 2829, + 7, 1065, 2, 2, 2829, 2831, 5, 186, 94, 2, 2830, 2828, 3, 2, 2, 2, 2831, + 2834, 3, 2, 2, 2, 2832, 2830, 3, 2, 2, 2, 2832, 2833, 3, 2, 2, 2, 2833, + 2836, 3, 2, 2, 2, 2834, 2832, 3, 2, 2, 2, 2835, 2823, 3, 2, 2, 2, 2835, + 2826, 3, 2, 2, 2, 2836, 2849, 3, 2, 2, 2, 2837, 2838, 7, 110, 2, 2, 2838, + 2839, 7, 370, 2, 2, 2839, 2840, 7, 85, 2, 2, 2840, 2841, 7, 170, 2, 2, + 2841, 2846, 5, 186, 94, 2, 2842, 2843, 7, 1065, 2, 2, 2843, 2845, 5, 186, + 94, 2, 2844, 2842, 3, 2, 2, 2, 2845, 2848, 3, 2, 2, 2, 2846, 2844, 3, 2, + 2, 2, 2846, 2847, 3, 2, 2, 2, 2847, 2850, 3, 2, 2, 2, 2848, 2846, 3, 2, + 2, 2, 2849, 2837, 3, 2, 2, 2, 2849, 2850, 3, 2, 2, 2, 2850, 173, 3, 2, + 2, 2, 2851, 2852, 7, 95, 2, 2, 2852, 2854, 7, 357, 2, 2, 2853, 2855, 9, + 37, 2, 2, 2854, 2853, 3, 2, 2, 2, 2854, 2855, 3, 2, 2, 2, 2855, 2857, 3, + 2, 2, 2, 2856, 2858, 7, 436, 2, 2, 2857, 2856, 3, 2, 2, 2, 2857, 2858, + 3, 2, 2, 2, 2858, 2859, 3, 2, 2, 2, 2859, 2860, 7, 76, 2, 2, 2860, 2862, + 7, 1078, 2, 2, 2861, 2863, 9, 8, 2, 2, 2862, 2861, 3, 2, 2, 2, 2862, 2863, + 3, 2, 2, 2, 2863, 2864, 3, 2, 2, 2, 2864, 2865, 7, 81, 2, 2, 2865, 2866, + 7, 158, 2, 2, 2866, 2872, 5, 504, 253, 2, 2867, 2868, 7, 119, 2, 2, 2868, + 2869, 7, 1063, 2, 2, 2869, 2870, 5, 560, 281, 2, 2870, 2871, 7, 1064, 2, + 2, 2871, 2873, 3, 2, 2, 2, 2872, 2867, 3, 2, 2, 2, 2872, 2873, 3, 2, 2, + 2, 2873, 2877, 3, 2, 2, 2, 2874, 2875, 7, 24, 2, 2, 2875, 2876, 7, 142, + 2, 2, 2876, 2878, 5, 514, 258, 2, 2877, 2874, 3, 2, 2, 2, 2877, 2878, 3, + 2, 2, 2, 2878, 2885, 3, 2, 2, 2, 2879, 2881, 9, 38, 2, 2, 2880, 2882, 5, + 244, 123, 2, 2881, 2880, 3, 2, 2, 2, 2882, 2883, 3, 2, 2, 2, 2883, 2881, + 3, 2, 2, 2, 2883, 2884, 3, 2, 2, 2, 2884, 2886, 3, 2, 2, 2, 2885, 2879, + 3, 2, 2, 2, 2885, 2886, 3, 2, 2, 2, 2886, 2893, 3, 2, 2, 2, 2887, 2889, + 7, 94, 2, 2, 2888, 2890, 5, 246, 124, 2, 2889, 2888, 3, 2, 2, 2, 2890, + 2891, 3, 2, 2, 2, 2891, 2889, 3, 2, 2, 2, 2891, 2892, 3, 2, 2, 2, 2892, + 2894, 3, 2, 2, 2, 2893, 2887, 3, 2, 2, 2, 2893, 2894, 3, 2, 2, 2, 2894, + 2899, 3, 2, 2, 2, 2895, 2896, 7, 73, 2, 2, 2896, 2897, 5, 534, 268, 2, + 2897, 2898, 9, 39, 2, 2, 2898, 2900, 3, 2, 2, 2, 2899, 2895, 3, 2, 2, 2, + 2899, 2900, 3, 2, 2, 2, 2900, 2912, 3, 2, 2, 2, 2901, 2902, 7, 1063, 2, + 2, 2902, 2907, 5, 188, 95, 2, 2903, 2904, 7, 1065, 2, 2, 2904, 2906, 5, + 188, 95, 2, 2905, 2903, 3, 2, 2, 2, 2906, 2909, 3, 2, 2, 2, 2907, 2905, + 3, 2, 2, 2, 2907, 2908, 3, 2, 2, 2, 2908, 2910, 3, 2, 2, 2, 2909, 2907, + 3, 2, 2, 2, 2910, 2911, 7, 1064, 2, 2, 2911, 2913, 3, 2, 2, 2, 2912, 2901, + 3, 2, 2, 2, 2912, 2913, 3, 2, 2, 2, 2913, 2923, 3, 2, 2, 2, 2914, 2915, + 7, 142, 2, 2, 2915, 2920, 5, 186, 94, 2, 2916, 2917, 7, 1065, 2, 2, 2917, + 2919, 5, 186, 94, 2, 2918, 2916, 3, 2, 2, 2, 2919, 2922, 3, 2, 2, 2, 2920, + 2918, 3, 2, 2, 2, 2920, 2921, 3, 2, 2, 2, 2921, 2924, 3, 2, 2, 2, 2922, + 2920, 3, 2, 2, 2, 2923, 2914, 3, 2, 2, 2, 2923, 2924, 3, 2, 2, 2, 2924, + 175, 3, 2, 2, 2, 2925, 2926, 7, 95, 2, 2, 2926, 2928, 7, 625, 2, 2, 2927, + 2929, 9, 37, 2, 2, 2928, 2927, 3, 2, 2, 2, 2928, 2929, 3, 2, 2, 2, 2929, + 2931, 3, 2, 2, 2, 2930, 2932, 7, 436, 2, 2, 2931, 2930, 3, 2, 2, 2, 2931, + 2932, 3, 2, 2, 2, 2932, 2933, 3, 2, 2, 2, 2933, 2934, 7, 76, 2, 2, 2934, + 2936, 7, 1078, 2, 2, 2935, 2937, 9, 8, 2, 2, 2936, 2935, 3, 2, 2, 2, 2936, + 2937, 3, 2, 2, 2, 2937, 2938, 3, 2, 2, 2, 2938, 2939, 7, 81, 2, 2, 2939, + 2940, 7, 158, 2, 2, 2940, 2944, 5, 504, 253, 2, 2941, 2942, 7, 24, 2, 2, + 2942, 2943, 7, 142, 2, 2, 2943, 2945, 5, 514, 258, 2, 2944, 2941, 3, 2, + 2, 2, 2944, 2945, 3, 2, 2, 2, 2945, 2952, 3, 2, 2, 2, 2946, 2947, 7, 549, + 2, 2, 2947, 2948, 7, 412, 2, 2, 2948, 2949, 7, 18, 2, 2, 2949, 2950, 7, + 1056, 2, 2, 2950, 2951, 7, 1078, 2, 2, 2951, 2953, 7, 1055, 2, 2, 2952, + 2946, 3, 2, 2, 2, 2952, 2953, 3, 2, 2, 2, 2953, 2958, 3, 2, 2, 2, 2954, + 2955, 7, 73, 2, 2, 2955, 2956, 5, 534, 268, 2, 2956, 2957, 9, 39, 2, 2, + 2957, 2959, 3, 2, 2, 2, 2958, 2954, 3, 2, 2, 2, 2958, 2959, 3, 2, 2, 2, + 2959, 2971, 3, 2, 2, 2, 2960, 2961, 7, 1063, 2, 2, 2961, 2966, 5, 188, + 95, 2, 2962, 2963, 7, 1065, 2, 2, 2963, 2965, 5, 188, 95, 2, 2964, 2962, + 3, 2, 2, 2, 2965, 2968, 3, 2, 2, 2, 2966, 2964, 3, 2, 2, 2, 2966, 2967, + 3, 2, 2, 2, 2967, 2969, 3, 2, 2, 2, 2968, 2966, 3, 2, 2, 2, 2969, 2970, + 7, 1064, 2, 2, 2970, 2972, 3, 2, 2, 2, 2971, 2960, 3, 2, 2, 2, 2971, 2972, + 3, 2, 2, 2, 2972, 2982, 3, 2, 2, 2, 2973, 2974, 7, 142, 2, 2, 2974, 2979, + 5, 186, 94, 2, 2975, 2976, 7, 1065, 2, 2, 2976, 2978, 5, 186, 94, 2, 2977, + 2975, 3, 2, 2, 2, 2978, 2981, 3, 2, 2, 2, 2979, 2977, 3, 2, 2, 2, 2979, + 2980, 3, 2, 2, 2, 2980, 2983, 3, 2, 2, 2, 2981, 2979, 3, 2, 2, 2, 2982, + 2973, 3, 2, 2, 2, 2982, 2983, 3, 2, 2, 2, 2983, 177, 3, 2, 2, 2, 2984, + 2986, 7, 131, 2, 2, 2985, 2987, 9, 40, 2, 2, 2986, 2985, 3, 2, 2, 2, 2986, + 2987, 3, 2, 2, 2, 2987, 2989, 3, 2, 2, 2, 2988, 2990, 7, 81, 2, 2, 2989, + 2988, 3, 2, 2, 2, 2989, 2990, 3, 2, 2, 2, 2990, 2991, 3, 2, 2, 2, 2991, + 2997, 5, 504, 253, 2, 2992, 2993, 7, 119, 2, 2, 2993, 2994, 7, 1063, 2, + 2, 2994, 2995, 5, 560, 281, 2, 2995, 2996, 7, 1064, 2, 2, 2996, 2998, 3, + 2, 2, 2, 2997, 2992, 3, 2, 2, 2, 2997, 2998, 3, 2, 2, 2, 2998, 3015, 3, + 2, 2, 2, 2999, 3000, 7, 1063, 2, 2, 3000, 3001, 5, 560, 281, 2, 3001, 3002, + 7, 1064, 2, 2, 3002, 3004, 3, 2, 2, 2, 3003, 2999, 3, 2, 2, 2, 3003, 3004, + 3, 2, 2, 2, 3004, 3005, 3, 2, 2, 2, 3005, 3016, 5, 184, 93, 2, 3006, 3007, + 7, 142, 2, 2, 3007, 3012, 5, 186, 94, 2, 3008, 3009, 7, 1065, 2, 2, 3009, + 3011, 5, 186, 94, 2, 3010, 3008, 3, 2, 2, 2, 3011, 3014, 3, 2, 2, 2, 3012, + 3010, 3, 2, 2, 2, 3012, 3013, 3, 2, 2, 2, 3013, 3016, 3, 2, 2, 2, 3014, + 3012, 3, 2, 2, 2, 3015, 3003, 3, 2, 2, 2, 3015, 3006, 3, 2, 2, 2, 3016, + 179, 3, 2, 2, 2, 3017, 3019, 5, 228, 115, 2, 3018, 3020, 5, 190, 96, 2, + 3019, 3018, 3, 2, 2, 2, 3019, 3020, 3, 2, 2, 2, 3020, 3073, 3, 2, 2, 2, + 3021, 3023, 5, 224, 113, 2, 3022, 3024, 5, 190, 96, 2, 3023, 3022, 3, 2, + 2, 2, 3023, 3024, 3, 2, 2, 2, 3024, 3073, 3, 2, 2, 2, 3025, 3027, 5, 230, + 116, 2, 3026, 3028, 5, 234, 118, 2, 3027, 3026, 3, 2, 2, 2, 3028, 3029, + 3, 2, 2, 2, 3029, 3027, 3, 2, 2, 2, 3029, 3030, 3, 2, 2, 2, 3030, 3039, + 3, 2, 2, 2, 3031, 3033, 7, 166, 2, 2, 3032, 3034, 9, 41, 2, 2, 3033, 3032, + 3, 2, 2, 2, 3033, 3034, 3, 2, 2, 2, 3034, 3037, 3, 2, 2, 2, 3035, 3038, + 5, 228, 115, 2, 3036, 3038, 5, 224, 113, 2, 3037, 3035, 3, 2, 2, 2, 3037, + 3036, 3, 2, 2, 2, 3038, 3040, 3, 2, 2, 2, 3039, 3031, 3, 2, 2, 2, 3039, + 3040, 3, 2, 2, 2, 3040, 3042, 3, 2, 2, 2, 3041, 3043, 5, 208, 105, 2, 3042, + 3041, 3, 2, 2, 2, 3042, 3043, 3, 2, 2, 2, 3043, 3045, 3, 2, 2, 2, 3044, + 3046, 5, 256, 129, 2, 3045, 3044, 3, 2, 2, 2, 3045, 3046, 3, 2, 2, 2, 3046, + 3048, 3, 2, 2, 2, 3047, 3049, 5, 190, 96, 2, 3048, 3047, 3, 2, 2, 2, 3048, + 3049, 3, 2, 2, 2, 3049, 3073, 3, 2, 2, 2, 3050, 3052, 5, 226, 114, 2, 3051, + 3053, 5, 232, 117, 2, 3052, 3051, 3, 2, 2, 2, 3053, 3054, 3, 2, 2, 2, 3054, + 3052, 3, 2, 2, 2, 3054, 3055, 3, 2, 2, 2, 3055, 3061, 3, 2, 2, 2, 3056, + 3058, 7, 166, 2, 2, 3057, 3059, 9, 41, 2, 2, 3058, 3057, 3, 2, 2, 2, 3058, + 3059, 3, 2, 2, 2, 3059, 3060, 3, 2, 2, 2, 3060, 3062, 5, 224, 113, 2, 3061, + 3056, 3, 2, 2, 2, 3061, 3062, 3, 2, 2, 2, 3062, 3064, 3, 2, 2, 2, 3063, + 3065, 5, 208, 105, 2, 3064, 3063, 3, 2, 2, 2, 3064, 3065, 3, 2, 2, 2, 3065, + 3067, 3, 2, 2, 2, 3066, 3068, 5, 256, 129, 2, 3067, 3066, 3, 2, 2, 2, 3067, + 3068, 3, 2, 2, 2, 3068, 3070, 3, 2, 2, 2, 3069, 3071, 5, 190, 96, 2, 3070, + 3069, 3, 2, 2, 2, 3070, 3071, 3, 2, 2, 2, 3071, 3073, 3, 2, 2, 2, 3072, + 3017, 3, 2, 2, 2, 3072, 3021, 3, 2, 2, 2, 3072, 3025, 3, 2, 2, 2, 3072, + 3050, 3, 2, 2, 2, 3073, 181, 3, 2, 2, 2, 3074, 3077, 5, 204, 103, 2, 3075, + 3077, 5, 206, 104, 2, 3076, 3074, 3, 2, 2, 2, 3076, 3075, 3, 2, 2, 2, 3077, + 183, 3, 2, 2, 2, 3078, 3097, 5, 180, 91, 2, 3079, 3080, 9, 42, 2, 2, 3080, + 3082, 7, 1063, 2, 2, 3081, 3083, 5, 568, 285, 2, 3082, 3081, 3, 2, 2, 2, + 3082, 3083, 3, 2, 2, 2, 3083, 3084, 3, 2, 2, 2, 3084, 3093, 7, 1064, 2, + 2, 3085, 3086, 7, 1065, 2, 2, 3086, 3088, 7, 1063, 2, 2, 3087, 3089, 5, + 568, 285, 2, 3088, 3087, 3, 2, 2, 2, 3088, 3089, 3, 2, 2, 2, 3089, 3090, + 3, 2, 2, 2, 3090, 3092, 7, 1064, 2, 2, 3091, 3085, 3, 2, 2, 2, 3092, 3095, + 3, 2, 2, 2, 3093, 3091, 3, 2, 2, 2, 3093, 3094, 3, 2, 2, 2, 3094, 3097, + 3, 2, 2, 2, 3095, 3093, 3, 2, 2, 2, 3096, 3078, 3, 2, 2, 2, 3096, 3079, + 3, 2, 2, 2, 3097, 185, 3, 2, 2, 2, 3098, 3099, 5, 506, 254, 2, 3099, 3102, + 7, 1054, 2, 2, 3100, 3103, 5, 606, 304, 2, 3101, 3103, 7, 40, 2, 2, 3102, + 3100, 3, 2, 2, 2, 3102, 3101, 3, 2, 2, 2, 3103, 187, 3, 2, 2, 2, 3104, + 3107, 5, 528, 265, 2, 3105, 3107, 7, 1090, 2, 2, 3106, 3104, 3, 2, 2, 2, + 3106, 3105, 3, 2, 2, 2, 3107, 189, 3, 2, 2, 2, 3108, 3109, 7, 61, 2, 2, + 3109, 3115, 7, 170, 2, 2, 3110, 3111, 7, 96, 2, 2, 3111, 3112, 7, 74, 2, + 2, 3112, 3113, 7, 556, 2, 2, 3113, 3115, 7, 473, 2, 2, 3114, 3108, 3, 2, + 2, 2, 3114, 3110, 3, 2, 2, 2, 3115, 191, 3, 2, 2, 2, 3116, 3118, 7, 42, + 2, 2, 3117, 3119, 7, 98, 2, 2, 3118, 3117, 3, 2, 2, 2, 3118, 3119, 3, 2, + 2, 2, 3119, 3121, 3, 2, 2, 2, 3120, 3122, 7, 519, 2, 2, 3121, 3120, 3, + 2, 2, 2, 3121, 3122, 3, 2, 2, 2, 3122, 3124, 3, 2, 2, 2, 3123, 3125, 7, + 73, 2, 2, 3124, 3123, 3, 2, 2, 2, 3124, 3125, 3, 2, 2, 2, 3125, 3126, 3, + 2, 2, 2, 3126, 3127, 7, 64, 2, 2, 3127, 3133, 5, 504, 253, 2, 3128, 3129, + 7, 119, 2, 2, 3129, 3130, 7, 1063, 2, 2, 3130, 3131, 5, 560, 281, 2, 3131, + 3132, 7, 1064, 2, 2, 3132, 3134, 3, 2, 2, 2, 3133, 3128, 3, 2, 2, 2, 3133, + 3134, 3, 2, 2, 2, 3134, 3137, 3, 2, 2, 2, 3135, 3136, 7, 176, 2, 2, 3136, + 3138, 5, 606, 304, 2, 3137, 3135, 3, 2, 2, 2, 3137, 3138, 3, 2, 2, 2, 3138, + 3140, 3, 2, 2, 2, 3139, 3141, 5, 208, 105, 2, 3140, 3139, 3, 2, 2, 2, 3140, + 3141, 3, 2, 2, 2, 3141, 3144, 3, 2, 2, 2, 3142, 3143, 7, 92, 2, 2, 3143, + 3145, 5, 258, 130, 2, 3144, 3142, 3, 2, 2, 2, 3144, 3145, 3, 2, 2, 2, 3145, + 193, 3, 2, 2, 2, 3146, 3148, 7, 42, 2, 2, 3147, 3149, 7, 98, 2, 2, 3148, + 3147, 3, 2, 2, 2, 3148, 3149, 3, 2, 2, 2, 3149, 3151, 3, 2, 2, 2, 3150, + 3152, 7, 519, 2, 2, 3151, 3150, 3, 2, 2, 2, 3151, 3152, 3, 2, 2, 2, 3152, + 3154, 3, 2, 2, 2, 3153, 3155, 7, 73, 2, 2, 3154, 3153, 3, 2, 2, 2, 3154, + 3155, 3, 2, 2, 2, 3155, 3195, 3, 2, 2, 2, 3156, 3159, 5, 504, 253, 2, 3157, + 3158, 7, 1062, 2, 2, 3158, 3160, 7, 1046, 2, 2, 3159, 3157, 3, 2, 2, 2, + 3159, 3160, 3, 2, 2, 2, 3160, 3169, 3, 2, 2, 2, 3161, 3162, 7, 1065, 2, + 2, 3162, 3165, 5, 504, 253, 2, 3163, 3164, 7, 1062, 2, 2, 3164, 3166, 7, + 1046, 2, 2, 3165, 3163, 3, 2, 2, 2, 3165, 3166, 3, 2, 2, 2, 3166, 3168, + 3, 2, 2, 2, 3167, 3161, 3, 2, 2, 2, 3168, 3171, 3, 2, 2, 2, 3169, 3167, + 3, 2, 2, 2, 3169, 3170, 3, 2, 2, 2, 3170, 3172, 3, 2, 2, 2, 3171, 3169, + 3, 2, 2, 2, 3172, 3173, 7, 64, 2, 2, 3173, 3174, 5, 212, 107, 2, 3174, + 3196, 3, 2, 2, 2, 3175, 3176, 7, 64, 2, 2, 3176, 3179, 5, 504, 253, 2, + 3177, 3178, 7, 1062, 2, 2, 3178, 3180, 7, 1046, 2, 2, 3179, 3177, 3, 2, + 2, 2, 3179, 3180, 3, 2, 2, 2, 3180, 3189, 3, 2, 2, 2, 3181, 3182, 7, 1065, + 2, 2, 3182, 3185, 5, 504, 253, 2, 3183, 3184, 7, 1062, 2, 2, 3184, 3186, + 7, 1046, 2, 2, 3185, 3183, 3, 2, 2, 2, 3185, 3186, 3, 2, 2, 2, 3186, 3188, + 3, 2, 2, 2, 3187, 3181, 3, 2, 2, 2, 3188, 3191, 3, 2, 2, 2, 3189, 3187, + 3, 2, 2, 2, 3189, 3190, 3, 2, 2, 2, 3190, 3192, 3, 2, 2, 2, 3191, 3189, + 3, 2, 2, 2, 3192, 3193, 7, 173, 2, 2, 3193, 3194, 5, 212, 107, 2, 3194, + 3196, 3, 2, 2, 2, 3195, 3156, 3, 2, 2, 2, 3195, 3175, 3, 2, 2, 2, 3196, + 3199, 3, 2, 2, 2, 3197, 3198, 7, 176, 2, 2, 3198, 3200, 5, 606, 304, 2, + 3199, 3197, 3, 2, 2, 2, 3199, 3200, 3, 2, 2, 2, 3200, 195, 3, 2, 2, 2, + 3201, 3202, 7, 407, 2, 2, 3202, 3203, 5, 504, 253, 2, 3203, 3208, 7, 494, + 2, 2, 3204, 3206, 7, 13, 2, 2, 3205, 3204, 3, 2, 2, 2, 3205, 3206, 3, 2, + 2, 2, 3206, 3207, 3, 2, 2, 2, 3207, 3209, 5, 528, 265, 2, 3208, 3205, 3, + 2, 2, 2, 3208, 3209, 3, 2, 2, 2, 3209, 197, 3, 2, 2, 2, 3210, 3211, 7, + 407, 2, 2, 3211, 3212, 5, 504, 253, 2, 3212, 3213, 7, 124, 2, 2, 3213, + 3220, 5, 528, 265, 2, 3214, 3215, 5, 614, 308, 2, 3215, 3216, 7, 1063, + 2, 2, 3216, 3217, 5, 570, 286, 2, 3217, 3218, 7, 1064, 2, 2, 3218, 3221, + 3, 2, 2, 2, 3219, 3221, 9, 43, 2, 2, 3220, 3214, 3, 2, 2, 2, 3220, 3219, + 3, 2, 2, 2, 3221, 3224, 3, 2, 2, 2, 3222, 3223, 7, 176, 2, 2, 3223, 3225, + 5, 606, 304, 2, 3224, 3222, 3, 2, 2, 2, 3224, 3225, 3, 2, 2, 2, 3225, 3228, + 3, 2, 2, 2, 3226, 3227, 7, 92, 2, 2, 3227, 3229, 5, 258, 130, 2, 3228, + 3226, 3, 2, 2, 2, 3228, 3229, 3, 2, 2, 2, 3229, 199, 3, 2, 2, 2, 3230, + 3231, 7, 407, 2, 2, 3231, 3232, 5, 504, 253, 2, 3232, 3233, 7, 124, 2, + 2, 3233, 3236, 9, 44, 2, 2, 3234, 3235, 7, 176, 2, 2, 3235, 3237, 5, 606, + 304, 2, 3236, 3234, 3, 2, 2, 2, 3236, 3237, 3, 2, 2, 2, 3237, 3240, 3, + 2, 2, 2, 3238, 3239, 7, 92, 2, 2, 3239, 3241, 5, 258, 130, 2, 3240, 3238, + 3, 2, 2, 2, 3240, 3241, 3, 2, 2, 2, 3241, 201, 3, 2, 2, 2, 3242, 3243, + 7, 407, 2, 2, 3243, 3244, 5, 504, 253, 2, 3244, 3245, 7, 333, 2, 2, 3245, + 203, 3, 2, 2, 2, 3246, 3248, 7, 170, 2, 2, 3247, 3249, 7, 98, 2, 2, 3248, + 3247, 3, 2, 2, 2, 3248, 3249, 3, 2, 2, 2, 3249, 3251, 3, 2, 2, 2, 3250, + 3252, 7, 73, 2, 2, 3251, 3250, 3, 2, 2, 2, 3251, 3252, 3, 2, 2, 2, 3252, + 3253, 3, 2, 2, 2, 3253, 3258, 5, 504, 253, 2, 3254, 3256, 7, 13, 2, 2, + 3255, 3254, 3, 2, 2, 2, 3255, 3256, 3, 2, 2, 2, 3256, 3257, 3, 2, 2, 2, + 3257, 3259, 5, 528, 265, 2, 3258, 3255, 3, 2, 2, 2, 3258, 3259, 3, 2, 2, + 2, 3259, 3260, 3, 2, 2, 2, 3260, 3261, 7, 142, 2, 2, 3261, 3266, 5, 186, + 94, 2, 3262, 3263, 7, 1065, 2, 2, 3263, 3265, 5, 186, 94, 2, 3264, 3262, + 3, 2, 2, 2, 3265, 3268, 3, 2, 2, 2, 3266, 3264, 3, 2, 2, 2, 3266, 3267, + 3, 2, 2, 2, 3267, 3271, 3, 2, 2, 2, 3268, 3266, 3, 2, 2, 2, 3269, 3270, + 7, 176, 2, 2, 3270, 3272, 5, 606, 304, 2, 3271, 3269, 3, 2, 2, 2, 3271, + 3272, 3, 2, 2, 2, 3272, 3274, 3, 2, 2, 2, 3273, 3275, 5, 208, 105, 2, 3274, + 3273, 3, 2, 2, 2, 3274, 3275, 3, 2, 2, 2, 3275, 3277, 3, 2, 2, 2, 3276, + 3278, 5, 256, 129, 2, 3277, 3276, 3, 2, 2, 2, 3277, 3278, 3, 2, 2, 2, 3278, + 205, 3, 2, 2, 2, 3279, 3281, 7, 170, 2, 2, 3280, 3282, 7, 98, 2, 2, 3281, + 3280, 3, 2, 2, 2, 3281, 3282, 3, 2, 2, 2, 3282, 3284, 3, 2, 2, 2, 3283, + 3285, 7, 73, 2, 2, 3284, 3283, 3, 2, 2, 2, 3284, 3285, 3, 2, 2, 2, 3285, + 3286, 3, 2, 2, 2, 3286, 3287, 5, 212, 107, 2, 3287, 3288, 7, 142, 2, 2, + 3288, 3293, 5, 186, 94, 2, 3289, 3290, 7, 1065, 2, 2, 3290, 3292, 5, 186, + 94, 2, 3291, 3289, 3, 2, 2, 2, 3292, 3295, 3, 2, 2, 2, 3293, 3291, 3, 2, + 2, 2, 3293, 3294, 3, 2, 2, 2, 3294, 3298, 3, 2, 2, 2, 3295, 3293, 3, 2, + 2, 2, 3296, 3297, 7, 176, 2, 2, 3297, 3299, 5, 606, 304, 2, 3298, 3296, + 3, 2, 2, 2, 3298, 3299, 3, 2, 2, 2, 3299, 207, 3, 2, 2, 2, 3300, 3301, + 7, 115, 2, 2, 3301, 3302, 7, 18, 2, 2, 3302, 3307, 5, 210, 106, 2, 3303, + 3304, 7, 1065, 2, 2, 3304, 3306, 5, 210, 106, 2, 3305, 3303, 3, 2, 2, 2, + 3306, 3309, 3, 2, 2, 2, 3307, 3305, 3, 2, 2, 2, 3307, 3308, 3, 2, 2, 2, + 3308, 209, 3, 2, 2, 2, 3309, 3307, 3, 2, 2, 2, 3310, 3312, 5, 606, 304, + 2, 3311, 3313, 9, 45, 2, 2, 3312, 3311, 3, 2, 2, 2, 3312, 3313, 3, 2, 2, + 2, 3313, 211, 3, 2, 2, 2, 3314, 3319, 5, 214, 108, 2, 3315, 3316, 7, 1065, + 2, 2, 3316, 3318, 5, 214, 108, 2, 3317, 3315, 3, 2, 2, 2, 3318, 3321, 3, + 2, 2, 2, 3319, 3317, 3, 2, 2, 2, 3319, 3320, 3, 2, 2, 2, 3320, 213, 3, + 2, 2, 2, 3321, 3319, 3, 2, 2, 2, 3322, 3326, 5, 216, 109, 2, 3323, 3325, + 5, 222, 112, 2, 3324, 3323, 3, 2, 2, 2, 3325, 3328, 3, 2, 2, 2, 3326, 3324, + 3, 2, 2, 2, 3326, 3327, 3, 2, 2, 2, 3327, 3340, 3, 2, 2, 2, 3328, 3326, + 3, 2, 2, 2, 3329, 3330, 7, 1063, 2, 2, 3330, 3334, 5, 216, 109, 2, 3331, + 3333, 5, 222, 112, 2, 3332, 3331, 3, 2, 2, 2, 3333, 3336, 3, 2, 2, 2, 3334, + 3332, 3, 2, 2, 2, 3334, 3335, 3, 2, 2, 2, 3335, 3337, 3, 2, 2, 2, 3336, + 3334, 3, 2, 2, 2, 3337, 3338, 7, 1064, 2, 2, 3338, 3340, 3, 2, 2, 2, 3339, + 3322, 3, 2, 2, 2, 3339, 3329, 3, 2, 2, 2, 3340, 215, 3, 2, 2, 2, 3341, + 3347, 5, 504, 253, 2, 3342, 3343, 7, 119, 2, 2, 3343, 3344, 7, 1063, 2, + 2, 3344, 3345, 5, 560, 281, 2, 3345, 3346, 7, 1064, 2, 2, 3346, 3348, 3, + 2, 2, 2, 3347, 3342, 3, 2, 2, 2, 3347, 3348, 3, 2, 2, 2, 3348, 3353, 3, + 2, 2, 2, 3349, 3351, 7, 13, 2, 2, 3350, 3349, 3, 2, 2, 2, 3350, 3351, 3, + 2, 2, 2, 3351, 3352, 3, 2, 2, 2, 3352, 3354, 5, 528, 265, 2, 3353, 3350, + 3, 2, 2, 2, 3353, 3354, 3, 2, 2, 2, 3354, 3363, 3, 2, 2, 2, 3355, 3360, + 5, 218, 110, 2, 3356, 3357, 7, 1065, 2, 2, 3357, 3359, 5, 218, 110, 2, + 3358, 3356, 3, 2, 2, 2, 3359, 3362, 3, 2, 2, 2, 3360, 3358, 3, 2, 2, 2, + 3360, 3361, 3, 2, 2, 2, 3361, 3364, 3, 2, 2, 2, 3362, 3360, 3, 2, 2, 2, + 3363, 3355, 3, 2, 2, 2, 3363, 3364, 3, 2, 2, 2, 3364, 3382, 3, 2, 2, 2, + 3365, 3371, 5, 180, 91, 2, 3366, 3367, 7, 1063, 2, 2, 3367, 3368, 5, 180, + 91, 2, 3368, 3369, 7, 1064, 2, 2, 3369, 3371, 3, 2, 2, 2, 3370, 3365, 3, + 2, 2, 2, 3370, 3366, 3, 2, 2, 2, 3371, 3373, 3, 2, 2, 2, 3372, 3374, 7, + 13, 2, 2, 3373, 3372, 3, 2, 2, 2, 3373, 3374, 3, 2, 2, 2, 3374, 3375, 3, + 2, 2, 2, 3375, 3376, 5, 528, 265, 2, 3376, 3382, 3, 2, 2, 2, 3377, 3378, + 7, 1063, 2, 2, 3378, 3379, 5, 212, 107, 2, 3379, 3380, 7, 1064, 2, 2, 3380, + 3382, 3, 2, 2, 2, 3381, 3341, 3, 2, 2, 2, 3381, 3370, 3, 2, 2, 2, 3381, + 3377, 3, 2, 2, 2, 3382, 217, 3, 2, 2, 2, 3383, 3384, 9, 46, 2, 2, 3384, + 3387, 9, 20, 2, 2, 3385, 3386, 7, 61, 2, 2, 3386, 3388, 5, 220, 111, 2, + 3387, 3385, 3, 2, 2, 2, 3387, 3388, 3, 2, 2, 2, 3388, 3389, 3, 2, 2, 2, + 3389, 3390, 7, 1063, 2, 2, 3390, 3391, 5, 560, 281, 2, 3391, 3392, 7, 1064, + 2, 2, 3392, 219, 3, 2, 2, 2, 3393, 3399, 7, 84, 2, 2, 3394, 3395, 7, 115, + 2, 2, 3395, 3399, 7, 18, 2, 2, 3396, 3397, 7, 69, 2, 2, 3397, 3399, 7, + 18, 2, 2, 3398, 3393, 3, 2, 2, 2, 3398, 3394, 3, 2, 2, 2, 3398, 3396, 3, + 2, 2, 2, 3399, 221, 3, 2, 2, 2, 3400, 3402, 9, 47, 2, 2, 3401, 3400, 3, + 2, 2, 2, 3401, 3402, 3, 2, 2, 2, 3402, 3403, 3, 2, 2, 2, 3403, 3404, 7, + 84, 2, 2, 3404, 3412, 5, 216, 109, 2, 3405, 3406, 7, 110, 2, 2, 3406, 3413, + 5, 606, 304, 2, 3407, 3408, 7, 173, 2, 2, 3408, 3409, 7, 1063, 2, 2, 3409, + 3410, 5, 560, 281, 2, 3410, 3411, 7, 1064, 2, 2, 3411, 3413, 3, 2, 2, 2, + 3412, 3405, 3, 2, 2, 2, 3412, 3407, 3, 2, 2, 2, 3412, 3413, 3, 2, 2, 2, + 3413, 3445, 3, 2, 2, 2, 3414, 3415, 7, 157, 2, 2, 3415, 3418, 5, 216, 109, + 2, 3416, 3417, 7, 110, 2, 2, 3417, 3419, 5, 606, 304, 2, 3418, 3416, 3, + 2, 2, 2, 3418, 3419, 3, 2, 2, 2, 3419, 3445, 3, 2, 2, 2, 3420, 3422, 9, + 48, 2, 2, 3421, 3423, 7, 117, 2, 2, 3422, 3421, 3, 2, 2, 2, 3422, 3423, + 3, 2, 2, 2, 3423, 3424, 3, 2, 2, 2, 3424, 3425, 7, 84, 2, 2, 3425, 3433, + 5, 216, 109, 2, 3426, 3427, 7, 110, 2, 2, 3427, 3434, 5, 606, 304, 2, 3428, + 3429, 7, 173, 2, 2, 3429, 3430, 7, 1063, 2, 2, 3430, 3431, 5, 560, 281, + 2, 3431, 3432, 7, 1064, 2, 2, 3432, 3434, 3, 2, 2, 2, 3433, 3426, 3, 2, + 2, 2, 3433, 3428, 3, 2, 2, 2, 3434, 3445, 3, 2, 2, 2, 3435, 3440, 7, 104, + 2, 2, 3436, 3438, 9, 48, 2, 2, 3437, 3439, 7, 117, 2, 2, 3438, 3437, 3, + 2, 2, 2, 3438, 3439, 3, 2, 2, 2, 3439, 3441, 3, 2, 2, 2, 3440, 3436, 3, + 2, 2, 2, 3440, 3441, 3, 2, 2, 2, 3441, 3442, 3, 2, 2, 2, 3442, 3443, 7, + 84, 2, 2, 3443, 3445, 5, 216, 109, 2, 3444, 3401, 3, 2, 2, 2, 3444, 3414, + 3, 2, 2, 2, 3444, 3420, 3, 2, 2, 2, 3444, 3435, 3, 2, 2, 2, 3445, 223, + 3, 2, 2, 2, 3446, 3447, 7, 1063, 2, 2, 3447, 3448, 5, 228, 115, 2, 3448, + 3449, 7, 1064, 2, 2, 3449, 3455, 3, 2, 2, 2, 3450, 3451, 7, 1063, 2, 2, + 3451, 3452, 5, 224, 113, 2, 3452, 3453, 7, 1064, 2, 2, 3453, 3455, 3, 2, + 2, 2, 3454, 3446, 3, 2, 2, 2, 3454, 3450, 3, 2, 2, 2, 3455, 225, 3, 2, + 2, 2, 3456, 3457, 7, 1063, 2, 2, 3457, 3458, 5, 230, 116, 2, 3458, 3459, + 7, 1064, 2, 2, 3459, 3465, 3, 2, 2, 2, 3460, 3461, 7, 1063, 2, 2, 3461, + 3462, 5, 226, 114, 2, 3462, 3463, 7, 1064, 2, 2, 3463, 3465, 3, 2, 2, 2, + 3464, 3456, 3, 2, 2, 2, 3464, 3460, 3, 2, 2, 2, 3465, 227, 3, 2, 2, 2, + 3466, 3470, 7, 141, 2, 2, 3467, 3469, 5, 236, 119, 2, 3468, 3467, 3, 2, + 2, 2, 3469, 3472, 3, 2, 2, 2, 3470, 3468, 3, 2, 2, 2, 3470, 3471, 3, 2, + 2, 2, 3471, 3473, 3, 2, 2, 2, 3472, 3470, 3, 2, 2, 2, 3473, 3475, 5, 238, + 120, 2, 3474, 3476, 5, 242, 122, 2, 3475, 3474, 3, 2, 2, 2, 3475, 3476, + 3, 2, 2, 2, 3476, 3478, 3, 2, 2, 2, 3477, 3479, 5, 248, 125, 2, 3478, 3477, + 3, 2, 2, 2, 3478, 3479, 3, 2, 2, 2, 3479, 3481, 3, 2, 2, 2, 3480, 3482, + 5, 250, 126, 2, 3481, 3480, 3, 2, 2, 2, 3481, 3482, 3, 2, 2, 2, 3482, 3484, + 3, 2, 2, 2, 3483, 3485, 5, 252, 127, 2, 3484, 3483, 3, 2, 2, 2, 3484, 3485, + 3, 2, 2, 2, 3485, 3487, 3, 2, 2, 2, 3486, 3488, 5, 208, 105, 2, 3487, 3486, + 3, 2, 2, 2, 3487, 3488, 3, 2, 2, 2, 3488, 3490, 3, 2, 2, 2, 3489, 3491, + 5, 256, 129, 2, 3490, 3489, 3, 2, 2, 2, 3490, 3491, 3, 2, 2, 2, 3491, 3519, + 3, 2, 2, 2, 3492, 3496, 7, 141, 2, 2, 3493, 3495, 5, 236, 119, 2, 3494, + 3493, 3, 2, 2, 2, 3495, 3498, 3, 2, 2, 2, 3496, 3494, 3, 2, 2, 2, 3496, + 3497, 3, 2, 2, 2, 3497, 3499, 3, 2, 2, 2, 3498, 3496, 3, 2, 2, 2, 3499, + 3501, 5, 238, 120, 2, 3500, 3502, 5, 248, 125, 2, 3501, 3500, 3, 2, 2, + 2, 3501, 3502, 3, 2, 2, 2, 3502, 3504, 3, 2, 2, 2, 3503, 3505, 5, 250, + 126, 2, 3504, 3503, 3, 2, 2, 2, 3504, 3505, 3, 2, 2, 2, 3505, 3507, 3, + 2, 2, 2, 3506, 3508, 5, 252, 127, 2, 3507, 3506, 3, 2, 2, 2, 3507, 3508, + 3, 2, 2, 2, 3508, 3510, 3, 2, 2, 2, 3509, 3511, 5, 208, 105, 2, 3510, 3509, + 3, 2, 2, 2, 3510, 3511, 3, 2, 2, 2, 3511, 3513, 3, 2, 2, 2, 3512, 3514, + 5, 256, 129, 2, 3513, 3512, 3, 2, 2, 2, 3513, 3514, 3, 2, 2, 2, 3514, 3516, + 3, 2, 2, 2, 3515, 3517, 5, 242, 122, 2, 3516, 3515, 3, 2, 2, 2, 3516, 3517, + 3, 2, 2, 2, 3517, 3519, 3, 2, 2, 2, 3518, 3466, 3, 2, 2, 2, 3518, 3492, + 3, 2, 2, 2, 3519, 229, 3, 2, 2, 2, 3520, 3524, 7, 141, 2, 2, 3521, 3523, + 5, 236, 119, 2, 3522, 3521, 3, 2, 2, 2, 3523, 3526, 3, 2, 2, 2, 3524, 3522, + 3, 2, 2, 2, 3524, 3525, 3, 2, 2, 2, 3525, 3527, 3, 2, 2, 2, 3526, 3524, + 3, 2, 2, 2, 3527, 3529, 5, 238, 120, 2, 3528, 3530, 5, 248, 125, 2, 3529, + 3528, 3, 2, 2, 2, 3529, 3530, 3, 2, 2, 2, 3530, 3532, 3, 2, 2, 2, 3531, + 3533, 5, 250, 126, 2, 3532, 3531, 3, 2, 2, 2, 3532, 3533, 3, 2, 2, 2, 3533, + 3535, 3, 2, 2, 2, 3534, 3536, 5, 252, 127, 2, 3535, 3534, 3, 2, 2, 2, 3535, + 3536, 3, 2, 2, 2, 3536, 3538, 3, 2, 2, 2, 3537, 3539, 5, 208, 105, 2, 3538, + 3537, 3, 2, 2, 2, 3538, 3539, 3, 2, 2, 2, 3539, 3541, 3, 2, 2, 2, 3540, + 3542, 5, 256, 129, 2, 3541, 3540, 3, 2, 2, 2, 3541, 3542, 3, 2, 2, 2, 3542, + 231, 3, 2, 2, 2, 3543, 3545, 7, 166, 2, 2, 3544, 3546, 9, 41, 2, 2, 3545, + 3544, 3, 2, 2, 2, 3545, 3546, 3, 2, 2, 2, 3546, 3547, 3, 2, 2, 2, 3547, + 3548, 5, 226, 114, 2, 3548, 233, 3, 2, 2, 2, 3549, 3551, 7, 166, 2, 2, + 3550, 3552, 9, 41, 2, 2, 3551, 3550, 3, 2, 2, 2, 3551, 3552, 3, 2, 2, 2, + 3552, 3555, 3, 2, 2, 2, 3553, 3556, 5, 230, 116, 2, 3554, 3556, 5, 226, + 114, 2, 3555, 3553, 3, 2, 2, 2, 3555, 3554, 3, 2, 2, 2, 3556, 235, 3, 2, + 2, 2, 3557, 3566, 9, 49, 2, 2, 3558, 3566, 7, 71, 2, 2, 3559, 3566, 7, + 157, 2, 2, 3560, 3566, 7, 153, 2, 2, 3561, 3566, 7, 151, 2, 2, 3562, 3566, + 7, 571, 2, 2, 3563, 3566, 9, 50, 2, 2, 3564, 3566, 7, 152, 2, 2, 3565, + 3557, 3, 2, 2, 2, 3565, 3558, 3, 2, 2, 2, 3565, 3559, 3, 2, 2, 2, 3565, + 3560, 3, 2, 2, 2, 3565, 3561, 3, 2, 2, 2, 3565, 3562, 3, 2, 2, 2, 3565, + 3563, 3, 2, 2, 2, 3565, 3564, 3, 2, 2, 2, 3566, 237, 3, 2, 2, 2, 3567, + 3570, 7, 1046, 2, 2, 3568, 3570, 5, 240, 121, 2, 3569, 3567, 3, 2, 2, 2, + 3569, 3568, 3, 2, 2, 2, 3570, 3575, 3, 2, 2, 2, 3571, 3572, 7, 1065, 2, + 2, 3572, 3574, 5, 240, 121, 2, 3573, 3571, 3, 2, 2, 2, 3574, 3577, 3, 2, + 2, 2, 3575, 3573, 3, 2, 2, 2, 3575, 3576, 3, 2, 2, 2, 3576, 239, 3, 2, + 2, 2, 3577, 3575, 3, 2, 2, 2, 3578, 3579, 5, 502, 252, 2, 3579, 3580, 7, + 1062, 2, 2, 3580, 3581, 7, 1046, 2, 2, 3581, 3608, 3, 2, 2, 2, 3582, 3587, + 5, 506, 254, 2, 3583, 3585, 7, 13, 2, 2, 3584, 3583, 3, 2, 2, 2, 3584, + 3585, 3, 2, 2, 2, 3585, 3586, 3, 2, 2, 2, 3586, 3588, 5, 528, 265, 2, 3587, + 3584, 3, 2, 2, 2, 3587, 3588, 3, 2, 2, 2, 3588, 3608, 3, 2, 2, 2, 3589, + 3594, 5, 586, 294, 2, 3590, 3592, 7, 13, 2, 2, 3591, 3590, 3, 2, 2, 2, + 3591, 3592, 3, 2, 2, 2, 3592, 3593, 3, 2, 2, 2, 3593, 3595, 5, 528, 265, + 2, 3594, 3591, 3, 2, 2, 2, 3594, 3595, 3, 2, 2, 2, 3595, 3608, 3, 2, 2, + 2, 3596, 3597, 7, 1090, 2, 2, 3597, 3599, 7, 1037, 2, 2, 3598, 3596, 3, + 2, 2, 2, 3598, 3599, 3, 2, 2, 2, 3599, 3600, 3, 2, 2, 2, 3600, 3605, 5, + 606, 304, 2, 3601, 3603, 7, 13, 2, 2, 3602, 3601, 3, 2, 2, 2, 3602, 3603, + 3, 2, 2, 2, 3603, 3604, 3, 2, 2, 2, 3604, 3606, 5, 528, 265, 2, 3605, 3602, + 3, 2, 2, 2, 3605, 3606, 3, 2, 2, 2, 3606, 3608, 3, 2, 2, 2, 3607, 3578, + 3, 2, 2, 2, 3607, 3582, 3, 2, 2, 2, 3607, 3589, 3, 2, 2, 2, 3607, 3598, + 3, 2, 2, 2, 3608, 241, 3, 2, 2, 2, 3609, 3610, 7, 81, 2, 2, 3610, 3615, + 5, 188, 95, 2, 3611, 3612, 7, 1065, 2, 2, 3612, 3614, 5, 188, 95, 2, 3613, + 3611, 3, 2, 2, 2, 3614, 3617, 3, 2, 2, 2, 3615, 3613, 3, 2, 2, 2, 3615, + 3616, 3, 2, 2, 2, 3616, 3646, 3, 2, 2, 2, 3617, 3615, 3, 2, 2, 2, 3618, + 3619, 7, 81, 2, 2, 3619, 3620, 7, 369, 2, 2, 3620, 3646, 7, 1078, 2, 2, + 3621, 3622, 7, 81, 2, 2, 3622, 3623, 7, 118, 2, 2, 3623, 3627, 7, 1078, + 2, 2, 3624, 3625, 7, 24, 2, 2, 3625, 3626, 7, 142, 2, 2, 3626, 3628, 5, + 514, 258, 2, 3627, 3624, 3, 2, 2, 2, 3627, 3628, 3, 2, 2, 2, 3628, 3635, + 3, 2, 2, 2, 3629, 3631, 9, 38, 2, 2, 3630, 3632, 5, 244, 123, 2, 3631, + 3630, 3, 2, 2, 2, 3632, 3633, 3, 2, 2, 2, 3633, 3631, 3, 2, 2, 2, 3633, + 3634, 3, 2, 2, 2, 3634, 3636, 3, 2, 2, 2, 3635, 3629, 3, 2, 2, 2, 3635, + 3636, 3, 2, 2, 2, 3636, 3643, 3, 2, 2, 2, 3637, 3639, 7, 94, 2, 2, 3638, + 3640, 5, 246, 124, 2, 3639, 3638, 3, 2, 2, 2, 3640, 3641, 3, 2, 2, 2, 3641, + 3639, 3, 2, 2, 2, 3641, 3642, 3, 2, 2, 2, 3642, 3644, 3, 2, 2, 2, 3643, + 3637, 3, 2, 2, 2, 3643, 3644, 3, 2, 2, 2, 3644, 3646, 3, 2, 2, 2, 3645, + 3609, 3, 2, 2, 2, 3645, 3618, 3, 2, 2, 2, 3645, 3621, 3, 2, 2, 2, 3646, + 243, 3, 2, 2, 2, 3647, 3648, 7, 159, 2, 2, 3648, 3649, 7, 18, 2, 2, 3649, + 3660, 7, 1078, 2, 2, 3650, 3652, 7, 113, 2, 2, 3651, 3650, 3, 2, 2, 2, + 3651, 3652, 3, 2, 2, 2, 3652, 3653, 3, 2, 2, 2, 3653, 3654, 7, 54, 2, 2, + 3654, 3655, 7, 18, 2, 2, 3655, 3660, 7, 1078, 2, 2, 3656, 3657, 7, 55, + 2, 2, 3657, 3658, 7, 18, 2, 2, 3658, 3660, 7, 1078, 2, 2, 3659, 3647, 3, + 2, 2, 2, 3659, 3651, 3, 2, 2, 2, 3659, 3656, 3, 2, 2, 2, 3660, 245, 3, + 2, 2, 2, 3661, 3662, 7, 156, 2, 2, 3662, 3663, 7, 18, 2, 2, 3663, 3668, + 7, 1078, 2, 2, 3664, 3665, 7, 159, 2, 2, 3665, 3666, 7, 18, 2, 2, 3666, + 3668, 7, 1078, 2, 2, 3667, 3661, 3, 2, 2, 2, 3667, 3664, 3, 2, 2, 2, 3668, + 247, 3, 2, 2, 2, 3669, 3670, 7, 64, 2, 2, 3670, 3673, 5, 212, 107, 2, 3671, + 3672, 7, 176, 2, 2, 3672, 3674, 5, 606, 304, 2, 3673, 3671, 3, 2, 2, 2, + 3673, 3674, 3, 2, 2, 2, 3674, 249, 3, 2, 2, 2, 3675, 3676, 7, 69, 2, 2, + 3676, 3677, 7, 18, 2, 2, 3677, 3682, 5, 254, 128, 2, 3678, 3679, 7, 1065, + 2, 2, 3679, 3681, 5, 254, 128, 2, 3680, 3678, 3, 2, 2, 2, 3681, 3684, 3, + 2, 2, 2, 3682, 3680, 3, 2, 2, 2, 3682, 3683, 3, 2, 2, 2, 3683, 3687, 3, + 2, 2, 2, 3684, 3682, 3, 2, 2, 2, 3685, 3686, 7, 178, 2, 2, 3686, 3688, + 7, 546, 2, 2, 3687, 3685, 3, 2, 2, 2, 3687, 3688, 3, 2, 2, 2, 3688, 251, + 3, 2, 2, 2, 3689, 3690, 7, 70, 2, 2, 3690, 3691, 5, 606, 304, 2, 3691, + 253, 3, 2, 2, 2, 3692, 3694, 5, 606, 304, 2, 3693, 3695, 9, 45, 2, 2, 3694, + 3693, 3, 2, 2, 2, 3694, 3695, 3, 2, 2, 2, 3695, 255, 3, 2, 2, 2, 3696, + 3707, 7, 92, 2, 2, 3697, 3698, 5, 258, 130, 2, 3698, 3699, 7, 1065, 2, + 2, 3699, 3701, 3, 2, 2, 2, 3700, 3697, 3, 2, 2, 2, 3700, 3701, 3, 2, 2, + 2, 3701, 3702, 3, 2, 2, 2, 3702, 3708, 5, 258, 130, 2, 3703, 3704, 5, 258, + 130, 2, 3704, 3705, 7, 487, 2, 2, 3705, 3706, 5, 258, 130, 2, 3706, 3708, + 3, 2, 2, 2, 3707, 3700, 3, 2, 2, 2, 3707, 3703, 3, 2, 2, 2, 3708, 257, + 3, 2, 2, 2, 3709, 3713, 5, 534, 268, 2, 3710, 3713, 5, 512, 257, 2, 3711, + 3713, 5, 530, 266, 2, 3712, 3709, 3, 2, 2, 2, 3712, 3710, 3, 2, 2, 2, 3712, + 3711, 3, 2, 2, 2, 3713, 259, 3, 2, 2, 2, 3714, 3715, 7, 575, 2, 2, 3715, + 3724, 7, 598, 2, 2, 3716, 3721, 5, 282, 142, 2, 3717, 3718, 7, 1065, 2, + 2, 3718, 3720, 5, 282, 142, 2, 3719, 3717, 3, 2, 2, 2, 3720, 3723, 3, 2, + 2, 2, 3721, 3719, 3, 2, 2, 2, 3721, 3722, 3, 2, 2, 2, 3722, 3725, 3, 2, + 2, 2, 3723, 3721, 3, 2, 2, 2, 3724, 3716, 3, 2, 2, 2, 3724, 3725, 3, 2, + 2, 2, 3725, 261, 3, 2, 2, 2, 3726, 3728, 7, 316, 2, 2, 3727, 3729, 7, 621, + 2, 2, 3728, 3727, 3, 2, 2, 2, 3728, 3729, 3, 2, 2, 2, 3729, 263, 3, 2, + 2, 2, 3730, 3732, 7, 340, 2, 2, 3731, 3733, 7, 621, 2, 2, 3732, 3731, 3, + 2, 2, 2, 3732, 3733, 3, 2, 2, 2, 3733, 3739, 3, 2, 2, 2, 3734, 3736, 7, + 12, 2, 2, 3735, 3737, 7, 483, 2, 2, 3736, 3735, 3, 2, 2, 2, 3736, 3737, + 3, 2, 2, 2, 3737, 3738, 3, 2, 2, 2, 3738, 3740, 7, 325, 2, 2, 3739, 3734, + 3, 2, 2, 2, 3739, 3740, 3, 2, 2, 2, 3740, 3745, 3, 2, 2, 2, 3741, 3743, + 7, 483, 2, 2, 3742, 3741, 3, 2, 2, 2, 3742, 3743, 3, 2, 2, 2, 3743, 3744, + 3, 2, 2, 2, 3744, 3746, 7, 128, 2, 2, 3745, 3742, 3, 2, 2, 2, 3745, 3746, + 3, 2, 2, 2, 3746, 265, 3, 2, 2, 2, 3747, 3749, 7, 545, 2, 2, 3748, 3750, + 7, 621, 2, 2, 3749, 3748, 3, 2, 2, 2, 3749, 3750, 3, 2, 2, 2, 3750, 3756, + 3, 2, 2, 2, 3751, 3753, 7, 12, 2, 2, 3752, 3754, 7, 483, 2, 2, 3753, 3752, + 3, 2, 2, 2, 3753, 3754, 3, 2, 2, 2, 3754, 3755, 3, 2, 2, 2, 3755, 3757, + 7, 325, 2, 2, 3756, 3751, 3, 2, 2, 2, 3756, 3757, 3, 2, 2, 2, 3757, 3762, + 3, 2, 2, 2, 3758, 3760, 7, 483, 2, 2, 3759, 3758, 3, 2, 2, 2, 3759, 3760, + 3, 2, 2, 2, 3760, 3761, 3, 2, 2, 2, 3761, 3763, 7, 128, 2, 2, 3762, 3759, + 3, 2, 2, 2, 3762, 3763, 3, 2, 2, 2, 3763, 267, 3, 2, 2, 2, 3764, 3765, + 7, 551, 2, 2, 3765, 3766, 5, 528, 265, 2, 3766, 269, 3, 2, 2, 2, 3767, + 3769, 7, 545, 2, 2, 3768, 3770, 7, 621, 2, 2, 3769, 3768, 3, 2, 2, 2, 3769, + 3770, 3, 2, 2, 2, 3770, 3771, 3, 2, 2, 2, 3771, 3773, 7, 161, 2, 2, 3772, + 3774, 7, 551, 2, 2, 3773, 3772, 3, 2, 2, 2, 3773, 3774, 3, 2, 2, 2, 3774, + 3775, 3, 2, 2, 2, 3775, 3776, 5, 528, 265, 2, 3776, 271, 3, 2, 2, 2, 3777, + 3778, 7, 128, 2, 2, 3778, 3779, 7, 551, 2, 2, 3779, 3780, 5, 528, 265, + 2, 3780, 273, 3, 2, 2, 2, 3781, 3782, 7, 96, 2, 2, 3782, 3783, 7, 639, + 2, 2, 3783, 3788, 5, 284, 143, 2, 3784, 3785, 7, 1065, 2, 2, 3785, 3787, + 5, 284, 143, 2, 3786, 3784, 3, 2, 2, 2, 3787, 3790, 3, 2, 2, 2, 3788, 3786, + 3, 2, 2, 2, 3788, 3789, 3, 2, 2, 2, 3789, 275, 3, 2, 2, 2, 3790, 3788, + 3, 2, 2, 2, 3791, 3792, 7, 168, 2, 2, 3792, 3793, 7, 639, 2, 2, 3793, 277, + 3, 2, 2, 2, 3794, 3795, 7, 142, 2, 2, 3795, 3796, 7, 312, 2, 2, 3796, 3797, + 7, 1054, 2, 2, 3797, 3798, 9, 24, 2, 2, 3798, 279, 3, 2, 2, 2, 3799, 3801, + 7, 142, 2, 2, 3800, 3802, 9, 51, 2, 2, 3801, 3800, 3, 2, 2, 2, 3801, 3802, + 3, 2, 2, 2, 3802, 3803, 3, 2, 2, 2, 3803, 3804, 7, 598, 2, 2, 3804, 3809, + 5, 288, 145, 2, 3805, 3806, 7, 1065, 2, 2, 3806, 3808, 5, 288, 145, 2, + 3807, 3805, 3, 2, 2, 2, 3808, 3811, 3, 2, 2, 2, 3809, 3807, 3, 2, 2, 2, + 3809, 3810, 3, 2, 2, 2, 3810, 281, 3, 2, 2, 2, 3811, 3809, 3, 2, 2, 2, + 3812, 3813, 7, 178, 2, 2, 3813, 3814, 7, 347, 2, 2, 3814, 3820, 7, 562, + 2, 2, 3815, 3816, 7, 124, 2, 2, 3816, 3820, 7, 179, 2, 2, 3817, 3818, 7, + 124, 2, 2, 3818, 3820, 7, 493, 2, 2, 3819, 3812, 3, 2, 2, 2, 3819, 3815, + 3, 2, 2, 2, 3819, 3817, 3, 2, 2, 2, 3820, 283, 3, 2, 2, 2, 3821, 3826, + 5, 504, 253, 2, 3822, 3824, 7, 13, 2, 2, 3823, 3822, 3, 2, 2, 2, 3823, + 3824, 3, 2, 2, 2, 3824, 3825, 3, 2, 2, 2, 3825, 3827, 5, 528, 265, 2, 3826, + 3823, 3, 2, 2, 2, 3826, 3827, 3, 2, 2, 2, 3827, 3828, 3, 2, 2, 2, 3828, + 3829, 5, 286, 144, 2, 3829, 285, 3, 2, 2, 2, 3830, 3832, 7, 124, 2, 2, + 3831, 3833, 7, 436, 2, 2, 3832, 3831, 3, 2, 2, 2, 3832, 3833, 3, 2, 2, + 2, 3833, 3839, 3, 2, 2, 2, 3834, 3836, 7, 98, 2, 2, 3835, 3834, 3, 2, 2, + 2, 3835, 3836, 3, 2, 2, 2, 3836, 3837, 3, 2, 2, 2, 3837, 3839, 7, 179, + 2, 2, 3838, 3830, 3, 2, 2, 2, 3838, 3835, 3, 2, 2, 2, 3839, 287, 3, 2, + 2, 2, 3840, 3841, 7, 426, 2, 2, 3841, 3842, 7, 434, 2, 2, 3842, 3848, 5, + 290, 146, 2, 3843, 3844, 7, 124, 2, 2, 3844, 3848, 7, 179, 2, 2, 3845, + 3846, 7, 124, 2, 2, 3846, 3848, 7, 493, 2, 2, 3847, 3840, 3, 2, 2, 2, 3847, + 3843, 3, 2, 2, 2, 3847, 3845, 3, 2, 2, 2, 3848, 289, 3, 2, 2, 2, 3849, + 3850, 7, 732, 2, 2, 3850, 3857, 7, 124, 2, 2, 3851, 3852, 7, 124, 2, 2, + 3852, 3857, 7, 733, 2, 2, 3853, 3854, 7, 124, 2, 2, 3854, 3857, 7, 734, + 2, 2, 3855, 3857, 7, 735, 2, 2, 3856, 3849, 3, 2, 2, 2, 3856, 3851, 3, + 2, 2, 2, 3856, 3853, 3, 2, 2, 2, 3856, 3855, 3, 2, 2, 2, 3857, 291, 3, + 2, 2, 2, 3858, 3859, 7, 23, 2, 2, 3859, 3860, 7, 439, 2, 2, 3860, 3861, + 7, 161, 2, 2, 3861, 3866, 5, 310, 156, 2, 3862, 3863, 7, 1065, 2, 2, 3863, + 3865, 5, 310, 156, 2, 3864, 3862, 3, 2, 2, 2, 3865, 3868, 3, 2, 2, 2, 3866, + 3864, 3, 2, 2, 2, 3866, 3867, 3, 2, 2, 2, 3867, 3870, 3, 2, 2, 2, 3868, + 3866, 3, 2, 2, 2, 3869, 3871, 5, 318, 160, 2, 3870, 3869, 3, 2, 2, 2, 3870, + 3871, 3, 2, 2, 2, 3871, 293, 3, 2, 2, 2, 3872, 3873, 7, 23, 2, 2, 3873, + 3874, 7, 538, 2, 2, 3874, 3875, 7, 395, 2, 2, 3875, 3880, 5, 320, 161, + 2, 3876, 3877, 7, 1065, 2, 2, 3877, 3879, 5, 320, 161, 2, 3878, 3876, 3, + 2, 2, 2, 3879, 3882, 3, 2, 2, 2, 3880, 3878, 3, 2, 2, 2, 3880, 3881, 3, + 2, 2, 2, 3881, 295, 3, 2, 2, 2, 3882, 3880, 3, 2, 2, 2, 3883, 3884, 7, + 122, 2, 2, 3884, 3885, 9, 52, 2, 2, 3885, 3890, 7, 438, 2, 2, 3886, 3887, + 7, 161, 2, 2, 3887, 3891, 7, 1078, 2, 2, 3888, 3889, 7, 15, 2, 2, 3889, + 3891, 7, 1078, 2, 2, 3890, 3886, 3, 2, 2, 2, 3890, 3888, 3, 2, 2, 2, 3891, + 297, 3, 2, 2, 2, 3892, 3893, 7, 539, 2, 2, 3893, 3894, 7, 439, 2, 2, 3894, + 299, 3, 2, 2, 2, 3895, 3896, 7, 539, 2, 2, 3896, 3898, 7, 560, 2, 2, 3897, + 3899, 7, 8, 2, 2, 3898, 3897, 3, 2, 2, 2, 3898, 3899, 3, 2, 2, 2, 3899, + 3901, 3, 2, 2, 2, 3900, 3902, 5, 318, 160, 2, 3901, 3900, 3, 2, 2, 2, 3901, + 3902, 3, 2, 2, 2, 3902, 301, 3, 2, 2, 2, 3903, 3904, 7, 575, 2, 2, 3904, + 3913, 7, 560, 2, 2, 3905, 3910, 5, 324, 163, 2, 3906, 3907, 7, 1065, 2, + 2, 3907, 3909, 5, 324, 163, 2, 3908, 3906, 3, 2, 2, 2, 3909, 3912, 3, 2, + 2, 2, 3910, 3908, 3, 2, 2, 2, 3910, 3911, 3, 2, 2, 2, 3911, 3914, 3, 2, + 2, 2, 3912, 3910, 3, 2, 2, 2, 3913, 3905, 3, 2, 2, 2, 3913, 3914, 3, 2, + 2, 2, 3914, 3917, 3, 2, 2, 2, 3915, 3916, 7, 607, 2, 2, 3916, 3918, 5, + 326, 164, 2, 3917, 3915, 3, 2, 2, 2, 3917, 3918, 3, 2, 2, 2, 3918, 3922, + 3, 2, 2, 2, 3919, 3921, 5, 328, 165, 2, 3920, 3919, 3, 2, 2, 2, 3921, 3924, + 3, 2, 2, 2, 3922, 3920, 3, 2, 2, 2, 3922, 3923, 3, 2, 2, 2, 3923, 3926, + 3, 2, 2, 2, 3924, 3922, 3, 2, 2, 2, 3925, 3927, 5, 318, 160, 2, 3926, 3925, + 3, 2, 2, 2, 3926, 3927, 3, 2, 2, 2, 3927, 303, 3, 2, 2, 2, 3928, 3929, + 7, 581, 2, 2, 3929, 3938, 7, 560, 2, 2, 3930, 3935, 5, 324, 163, 2, 3931, + 3932, 7, 1065, 2, 2, 3932, 3934, 5, 324, 163, 2, 3933, 3931, 3, 2, 2, 2, + 3934, 3937, 3, 2, 2, 2, 3935, 3933, 3, 2, 2, 2, 3935, 3936, 3, 2, 2, 2, + 3936, 3939, 3, 2, 2, 2, 3937, 3935, 3, 2, 2, 2, 3938, 3930, 3, 2, 2, 2, + 3938, 3939, 3, 2, 2, 2, 3939, 305, 3, 2, 2, 2, 3940, 3941, 7, 575, 2, 2, + 3941, 3942, 7, 406, 2, 2, 3942, 307, 3, 2, 2, 2, 3943, 3944, 7, 581, 2, + 2, 3944, 3945, 7, 406, 2, 2, 3945, 309, 3, 2, 2, 2, 3946, 3947, 5, 312, + 157, 2, 3947, 3948, 7, 1054, 2, 2, 3948, 3949, 7, 1078, 2, 2, 3949, 3976, + 3, 2, 2, 2, 3950, 3951, 5, 314, 158, 2, 3951, 3952, 7, 1054, 2, 2, 3952, + 3953, 5, 534, 268, 2, 3953, 3976, 3, 2, 2, 2, 3954, 3955, 5, 316, 159, + 2, 3955, 3956, 7, 1054, 2, 2, 3956, 3957, 9, 24, 2, 2, 3957, 3976, 3, 2, + 2, 2, 3958, 3959, 7, 443, 2, 2, 3959, 3960, 7, 1054, 2, 2, 3960, 3976, + 7, 1081, 2, 2, 3961, 3962, 7, 413, 2, 2, 3962, 3963, 7, 1054, 2, 2, 3963, + 3972, 7, 1063, 2, 2, 3964, 3969, 5, 528, 265, 2, 3965, 3966, 7, 1065, 2, + 2, 3966, 3968, 5, 528, 265, 2, 3967, 3965, 3, 2, 2, 2, 3968, 3971, 3, 2, + 2, 2, 3969, 3967, 3, 2, 2, 2, 3969, 3970, 3, 2, 2, 2, 3970, 3973, 3, 2, + 2, 2, 3971, 3969, 3, 2, 2, 2, 3972, 3964, 3, 2, 2, 2, 3972, 3973, 3, 2, + 2, 2, 3973, 3974, 3, 2, 2, 2, 3974, 3976, 7, 1064, 2, 2, 3975, 3946, 3, + 2, 2, 2, 3975, 3950, 3, 2, 2, 2, 3975, 3954, 3, 2, 2, 2, 3975, 3958, 3, + 2, 2, 2, 3975, 3961, 3, 2, 2, 2, 3976, 311, 3, 2, 2, 2, 3977, 3978, 9, + 53, 2, 2, 3978, 313, 3, 2, 2, 2, 3979, 3980, 9, 54, 2, 2, 3980, 315, 3, + 2, 2, 2, 3981, 3982, 9, 55, 2, 2, 3982, 317, 3, 2, 2, 2, 3983, 3984, 7, + 61, 2, 2, 3984, 3985, 7, 327, 2, 2, 3985, 3986, 7, 1078, 2, 2, 3986, 319, + 3, 2, 2, 2, 3987, 3988, 7, 531, 2, 2, 3988, 3989, 7, 1054, 2, 2, 3989, + 3990, 7, 1063, 2, 2, 3990, 3991, 5, 560, 281, 2, 3991, 3992, 7, 1064, 2, + 2, 3992, 4037, 3, 2, 2, 2, 3993, 3994, 7, 533, 2, 2, 3994, 3995, 7, 1054, + 2, 2, 3995, 3996, 7, 1063, 2, 2, 3996, 3997, 5, 560, 281, 2, 3997, 3998, + 7, 1064, 2, 2, 3998, 4037, 3, 2, 2, 2, 3999, 4000, 7, 532, 2, 2, 4000, + 4001, 7, 1054, 2, 2, 4001, 4002, 7, 1063, 2, 2, 4002, 4003, 5, 562, 282, + 2, 4003, 4004, 7, 1064, 2, 2, 4004, 4037, 3, 2, 2, 2, 4005, 4006, 7, 534, + 2, 2, 4006, 4007, 7, 1054, 2, 2, 4007, 4008, 7, 1063, 2, 2, 4008, 4009, + 5, 562, 282, 2, 4009, 4010, 7, 1064, 2, 2, 4010, 4037, 3, 2, 2, 2, 4011, + 4012, 7, 536, 2, 2, 4012, 4013, 7, 1054, 2, 2, 4013, 4014, 7, 1063, 2, + 2, 4014, 4015, 5, 572, 287, 2, 4015, 4016, 7, 1064, 2, 2, 4016, 4037, 3, + 2, 2, 2, 4017, 4018, 7, 537, 2, 2, 4018, 4019, 7, 1054, 2, 2, 4019, 4020, + 7, 1063, 2, 2, 4020, 4021, 5, 572, 287, 2, 4021, 4022, 7, 1064, 2, 2, 4022, + 4037, 3, 2, 2, 2, 4023, 4024, 7, 535, 2, 2, 4024, 4025, 7, 1054, 2, 2, + 4025, 4026, 7, 1063, 2, 2, 4026, 4031, 5, 322, 162, 2, 4027, 4028, 7, 1065, + 2, 2, 4028, 4030, 5, 322, 162, 2, 4029, 4027, 3, 2, 2, 2, 4030, 4033, 3, + 2, 2, 2, 4031, 4029, 3, 2, 2, 2, 4031, 4032, 3, 2, 2, 2, 4032, 4034, 3, + 2, 2, 2, 4033, 4031, 3, 2, 2, 2, 4034, 4035, 7, 1064, 2, 2, 4035, 4037, + 3, 2, 2, 2, 4036, 3987, 3, 2, 2, 2, 4036, 3993, 3, 2, 2, 2, 4036, 3999, + 3, 2, 2, 2, 4036, 4005, 3, 2, 2, 2, 4036, 4011, 3, 2, 2, 2, 4036, 4017, + 3, 2, 2, 2, 4036, 4023, 3, 2, 2, 2, 4037, 321, 3, 2, 2, 2, 4038, 4039, + 7, 1063, 2, 2, 4039, 4040, 5, 504, 253, 2, 4040, 4041, 7, 1065, 2, 2, 4041, + 4042, 5, 504, 253, 2, 4042, 4043, 7, 1064, 2, 2, 4043, 323, 3, 2, 2, 2, + 4044, 4045, 9, 56, 2, 2, 4045, 325, 3, 2, 2, 2, 4046, 4047, 9, 57, 2, 2, + 4047, 4048, 7, 1054, 2, 2, 4048, 4065, 5, 330, 166, 2, 4049, 4050, 7, 445, + 2, 2, 4050, 4051, 7, 1054, 2, 2, 4051, 4052, 7, 1078, 2, 2, 4052, 4053, + 7, 1065, 2, 2, 4053, 4054, 7, 446, 2, 2, 4054, 4055, 7, 1054, 2, 2, 4055, + 4065, 5, 534, 268, 2, 4056, 4057, 7, 525, 2, 2, 4057, 4058, 7, 1054, 2, + 2, 4058, 4059, 7, 1078, 2, 2, 4059, 4060, 7, 1065, 2, 2, 4060, 4061, 7, + 526, 2, 2, 4061, 4062, 7, 1054, 2, 2, 4062, 4065, 5, 534, 268, 2, 4063, + 4065, 7, 569, 2, 2, 4064, 4046, 3, 2, 2, 2, 4064, 4049, 3, 2, 2, 2, 4064, + 4056, 3, 2, 2, 2, 4064, 4063, 3, 2, 2, 2, 4065, 327, 3, 2, 2, 2, 4066, + 4067, 7, 609, 2, 2, 4067, 4068, 7, 1054, 2, 2, 4068, 4079, 7, 1078, 2, + 2, 4069, 4070, 7, 504, 2, 2, 4070, 4071, 7, 1054, 2, 2, 4071, 4079, 7, + 1078, 2, 2, 4072, 4073, 7, 360, 2, 2, 4073, 4074, 7, 1054, 2, 2, 4074, + 4079, 7, 1078, 2, 2, 4075, 4076, 7, 507, 2, 2, 4076, 4077, 7, 1054, 2, + 2, 4077, 4079, 7, 1078, 2, 2, 4078, 4066, 3, 2, 2, 2, 4078, 4069, 3, 2, + 2, 2, 4078, 4072, 3, 2, 2, 2, 4078, 4075, 3, 2, 2, 2, 4079, 329, 3, 2, + 2, 2, 4080, 4085, 5, 520, 261, 2, 4081, 4082, 7, 1065, 2, 2, 4082, 4084, + 5, 520, 261, 2, 4083, 4081, 3, 2, 2, 2, 4084, 4087, 3, 2, 2, 2, 4085, 4083, + 3, 2, 2, 2, 4085, 4086, 3, 2, 2, 2, 4086, 4090, 3, 2, 2, 2, 4087, 4085, + 3, 2, 2, 2, 4088, 4090, 7, 1078, 2, 2, 4089, 4080, 3, 2, 2, 2, 4089, 4088, + 3, 2, 2, 2, 4090, 331, 3, 2, 2, 2, 4091, 4092, 7, 624, 2, 2, 4092, 4093, + 9, 58, 2, 2, 4093, 4095, 5, 522, 262, 2, 4094, 4096, 9, 59, 2, 2, 4095, + 4094, 3, 2, 2, 2, 4095, 4096, 3, 2, 2, 2, 4096, 333, 3, 2, 2, 2, 4097, + 4098, 7, 624, 2, 2, 4098, 4099, 7, 374, 2, 2, 4099, 4105, 5, 522, 262, + 2, 4100, 4103, 7, 589, 2, 2, 4101, 4102, 7, 61, 2, 2, 4102, 4104, 7, 471, + 2, 2, 4103, 4101, 3, 2, 2, 2, 4103, 4104, 3, 2, 2, 2, 4104, 4106, 3, 2, + 2, 2, 4105, 4100, 3, 2, 2, 2, 4105, 4106, 3, 2, 2, 2, 4106, 335, 3, 2, + 2, 2, 4107, 4108, 7, 624, 2, 2, 4108, 4109, 7, 511, 2, 2, 4109, 4110, 5, + 522, 262, 2, 4110, 337, 3, 2, 2, 2, 4111, 4112, 7, 624, 2, 2, 4112, 4113, + 7, 340, 2, 2, 4113, 4116, 5, 522, 262, 2, 4114, 4115, 7, 491, 2, 2, 4115, + 4117, 7, 505, 2, 2, 4116, 4114, 3, 2, 2, 2, 4116, 4117, 3, 2, 2, 2, 4117, + 339, 3, 2, 2, 2, 4118, 4119, 7, 624, 2, 2, 4119, 4120, 7, 545, 2, 2, 4120, + 4121, 5, 522, 262, 2, 4121, 341, 3, 2, 2, 2, 4122, 4123, 7, 624, 2, 2, + 4123, 4126, 7, 521, 2, 2, 4124, 4125, 7, 31, 2, 2, 4125, 4127, 5, 522, + 262, 2, 4126, 4124, 3, 2, 2, 2, 4126, 4127, 3, 2, 2, 2, 4127, 343, 3, 2, + 2, 2, 4128, 4129, 7, 511, 2, 2, 4129, 4130, 5, 528, 265, 2, 4130, 4133, + 7, 64, 2, 2, 4131, 4134, 7, 1078, 2, 2, 4132, 4134, 7, 1090, 2, 2, 4133, + 4131, 3, 2, 2, 2, 4133, 4132, 3, 2, 2, 2, 4134, 345, 3, 2, 2, 2, 4135, + 4136, 7, 641, 2, 2, 4136, 4139, 5, 528, 265, 2, 4137, 4138, 7, 173, 2, + 2, 4138, 4140, 5, 574, 288, 2, 4139, 4137, 3, 2, 2, 2, 4139, 4140, 3, 2, + 2, 2, 4140, 347, 3, 2, 2, 2, 4141, 4142, 9, 60, 2, 2, 4142, 4143, 7, 511, + 2, 2, 4143, 4144, 5, 528, 265, 2, 4144, 349, 3, 2, 2, 2, 4145, 4148, 5, + 352, 177, 2, 4146, 4148, 5, 6, 4, 2, 4147, 4145, 3, 2, 2, 2, 4147, 4146, + 3, 2, 2, 2, 4148, 351, 3, 2, 2, 2, 4149, 4150, 5, 528, 265, 2, 4150, 4151, + 7, 1074, 2, 2, 4151, 4153, 3, 2, 2, 2, 4152, 4149, 3, 2, 2, 2, 4152, 4153, + 3, 2, 2, 2, 4153, 4154, 3, 2, 2, 2, 4154, 4193, 7, 316, 2, 2, 4155, 4156, + 5, 372, 187, 2, 4156, 4157, 7, 1066, 2, 2, 4157, 4159, 3, 2, 2, 2, 4158, + 4155, 3, 2, 2, 2, 4159, 4162, 3, 2, 2, 2, 4160, 4158, 3, 2, 2, 2, 4160, + 4161, 3, 2, 2, 2, 4161, 4168, 3, 2, 2, 2, 4162, 4160, 3, 2, 2, 2, 4163, + 4164, 5, 374, 188, 2, 4164, 4165, 7, 1066, 2, 2, 4165, 4167, 3, 2, 2, 2, + 4166, 4163, 3, 2, 2, 2, 4167, 4170, 3, 2, 2, 2, 4168, 4166, 3, 2, 2, 2, + 4168, 4169, 3, 2, 2, 2, 4169, 4176, 3, 2, 2, 2, 4170, 4168, 3, 2, 2, 2, + 4171, 4172, 5, 376, 189, 2, 4172, 4173, 7, 1066, 2, 2, 4173, 4175, 3, 2, + 2, 2, 4174, 4171, 3, 2, 2, 2, 4175, 4178, 3, 2, 2, 2, 4176, 4174, 3, 2, + 2, 2, 4176, 4177, 3, 2, 2, 2, 4177, 4184, 3, 2, 2, 2, 4178, 4176, 3, 2, + 2, 2, 4179, 4180, 5, 378, 190, 2, 4180, 4181, 7, 1066, 2, 2, 4181, 4183, + 3, 2, 2, 2, 4182, 4179, 3, 2, 2, 2, 4183, 4186, 3, 2, 2, 2, 4184, 4182, + 3, 2, 2, 2, 4184, 4185, 3, 2, 2, 2, 4185, 4190, 3, 2, 2, 2, 4186, 4184, + 3, 2, 2, 2, 4187, 4189, 5, 382, 192, 2, 4188, 4187, 3, 2, 2, 2, 4189, 4192, + 3, 2, 2, 2, 4190, 4188, 3, 2, 2, 2, 4190, 4191, 3, 2, 2, 2, 4191, 4194, + 3, 2, 2, 2, 4192, 4190, 3, 2, 2, 2, 4193, 4160, 3, 2, 2, 2, 4193, 4194, + 3, 2, 2, 2, 4194, 4195, 3, 2, 2, 2, 4195, 4197, 7, 374, 2, 2, 4196, 4198, + 5, 528, 265, 2, 4197, 4196, 3, 2, 2, 2, 4197, 4198, 3, 2, 2, 2, 4198, 353, + 3, 2, 2, 2, 4199, 4202, 7, 21, 2, 2, 4200, 4203, 5, 528, 265, 2, 4201, + 4203, 5, 606, 304, 2, 4202, 4200, 3, 2, 2, 2, 4202, 4201, 3, 2, 2, 2, 4202, + 4203, 3, 2, 2, 2, 4203, 4205, 3, 2, 2, 2, 4204, 4206, 5, 384, 193, 2, 4205, + 4204, 3, 2, 2, 2, 4206, 4207, 3, 2, 2, 2, 4207, 4205, 3, 2, 2, 2, 4207, + 4208, 3, 2, 2, 2, 4208, 4215, 3, 2, 2, 2, 4209, 4211, 7, 51, 2, 2, 4210, + 4212, 5, 382, 192, 2, 4211, 4210, 3, 2, 2, 2, 4212, 4213, 3, 2, 2, 2, 4213, + 4211, 3, 2, 2, 2, 4213, 4214, 3, 2, 2, 2, 4214, 4216, 3, 2, 2, 2, 4215, + 4209, 3, 2, 2, 2, 4215, 4216, 3, 2, 2, 2, 4216, 4217, 3, 2, 2, 2, 4217, + 4218, 7, 374, 2, 2, 4218, 4219, 7, 21, 2, 2, 4219, 355, 3, 2, 2, 2, 4220, + 4221, 7, 72, 2, 2, 4221, 4222, 5, 606, 304, 2, 4222, 4224, 7, 160, 2, 2, + 4223, 4225, 5, 382, 192, 2, 4224, 4223, 3, 2, 2, 2, 4225, 4226, 3, 2, 2, + 2, 4226, 4224, 3, 2, 2, 2, 4226, 4227, 3, 2, 2, 2, 4227, 4231, 3, 2, 2, + 2, 4228, 4230, 5, 386, 194, 2, 4229, 4228, 3, 2, 2, 2, 4230, 4233, 3, 2, + 2, 2, 4231, 4229, 3, 2, 2, 2, 4231, 4232, 3, 2, 2, 2, 4232, 4240, 3, 2, + 2, 2, 4233, 4231, 3, 2, 2, 2, 4234, 4236, 7, 51, 2, 2, 4235, 4237, 5, 382, + 192, 2, 4236, 4235, 3, 2, 2, 2, 4237, 4238, 3, 2, 2, 2, 4238, 4236, 3, + 2, 2, 2, 4238, 4239, 3, 2, 2, 2, 4239, 4241, 3, 2, 2, 2, 4240, 4234, 3, + 2, 2, 2, 4240, 4241, 3, 2, 2, 2, 4241, 4242, 3, 2, 2, 2, 4242, 4243, 7, + 374, 2, 2, 4243, 4244, 7, 72, 2, 2, 4244, 357, 3, 2, 2, 2, 4245, 4246, + 7, 83, 2, 2, 4246, 4247, 5, 528, 265, 2, 4247, 359, 3, 2, 2, 2, 4248, 4249, + 7, 89, 2, 2, 4249, 4250, 5, 528, 265, 2, 4250, 361, 3, 2, 2, 2, 4251, 4252, + 5, 528, 265, 2, 4252, 4253, 7, 1074, 2, 2, 4253, 4255, 3, 2, 2, 2, 4254, + 4251, 3, 2, 2, 2, 4254, 4255, 3, 2, 2, 2, 4255, 4256, 3, 2, 2, 2, 4256, + 4258, 7, 97, 2, 2, 4257, 4259, 5, 382, 192, 2, 4258, 4257, 3, 2, 2, 2, + 4259, 4260, 3, 2, 2, 2, 4260, 4258, 3, 2, 2, 2, 4260, 4261, 3, 2, 2, 2, + 4261, 4262, 3, 2, 2, 2, 4262, 4263, 7, 374, 2, 2, 4263, 4265, 7, 97, 2, + 2, 4264, 4266, 5, 528, 265, 2, 4265, 4264, 3, 2, 2, 2, 4265, 4266, 3, 2, + 2, 2, 4266, 363, 3, 2, 2, 2, 4267, 4268, 5, 528, 265, 2, 4268, 4269, 7, + 1074, 2, 2, 4269, 4271, 3, 2, 2, 2, 4270, 4267, 3, 2, 2, 2, 4270, 4271, + 3, 2, 2, 2, 4271, 4272, 3, 2, 2, 2, 4272, 4274, 7, 130, 2, 2, 4273, 4275, + 5, 382, 192, 2, 4274, 4273, 3, 2, 2, 2, 4275, 4276, 3, 2, 2, 2, 4276, 4274, + 3, 2, 2, 2, 4276, 4277, 3, 2, 2, 2, 4277, 4278, 3, 2, 2, 2, 4278, 4279, + 7, 607, 2, 2, 4279, 4280, 5, 606, 304, 2, 4280, 4281, 7, 374, 2, 2, 4281, + 4283, 7, 130, 2, 2, 4282, 4284, 5, 528, 265, 2, 4283, 4282, 3, 2, 2, 2, + 4283, 4284, 3, 2, 2, 2, 4284, 365, 3, 2, 2, 2, 4285, 4286, 7, 135, 2, 2, + 4286, 4287, 5, 606, 304, 2, 4287, 367, 3, 2, 2, 2, 4288, 4289, 5, 528, + 265, 2, 4289, 4290, 7, 1074, 2, 2, 4290, 4292, 3, 2, 2, 2, 4291, 4288, + 3, 2, 2, 2, 4291, 4292, 3, 2, 2, 2, 4292, 4293, 3, 2, 2, 2, 4293, 4294, + 7, 177, 2, 2, 4294, 4295, 5, 606, 304, 2, 4295, 4297, 7, 368, 2, 2, 4296, + 4298, 5, 382, 192, 2, 4297, 4296, 3, 2, 2, 2, 4298, 4299, 3, 2, 2, 2, 4299, + 4297, 3, 2, 2, 2, 4299, 4300, 3, 2, 2, 2, 4300, 4301, 3, 2, 2, 2, 4301, + 4302, 7, 374, 2, 2, 4302, 4304, 7, 177, 2, 2, 4303, 4305, 5, 528, 265, + 2, 4304, 4303, 3, 2, 2, 2, 4304, 4305, 3, 2, 2, 2, 4305, 369, 3, 2, 2, + 2, 4306, 4307, 7, 333, 2, 2, 4307, 4322, 5, 528, 265, 2, 4308, 4313, 7, + 60, 2, 2, 4309, 4311, 7, 482, 2, 2, 4310, 4309, 3, 2, 2, 2, 4310, 4311, + 3, 2, 2, 2, 4311, 4312, 3, 2, 2, 2, 4312, 4314, 7, 64, 2, 2, 4313, 4310, + 3, 2, 2, 2, 4313, 4314, 3, 2, 2, 2, 4314, 4315, 3, 2, 2, 2, 4315, 4316, + 5, 528, 265, 2, 4316, 4317, 7, 81, 2, 2, 4317, 4318, 5, 560, 281, 2, 4318, + 4322, 3, 2, 2, 2, 4319, 4320, 7, 494, 2, 2, 4320, 4322, 5, 528, 265, 2, + 4321, 4306, 3, 2, 2, 2, 4321, 4308, 3, 2, 2, 2, 4321, 4319, 3, 2, 2, 2, + 4322, 371, 3, 2, 2, 2, 4323, 4324, 7, 39, 2, 2, 4324, 4325, 5, 560, 281, + 2, 4325, 4328, 5, 548, 275, 2, 4326, 4327, 7, 40, 2, 2, 4327, 4329, 5, + 606, 304, 2, 4328, 4326, 3, 2, 2, 2, 4328, 4329, 3, 2, 2, 2, 4329, 373, + 3, 2, 2, 2, 4330, 4331, 7, 39, 2, 2, 4331, 4332, 5, 528, 265, 2, 4332, + 4333, 7, 28, 2, 2, 4333, 4340, 7, 61, 2, 2, 4334, 4341, 5, 534, 268, 2, + 4335, 4337, 7, 149, 2, 2, 4336, 4338, 7, 613, 2, 2, 4337, 4336, 3, 2, 2, + 2, 4337, 4338, 3, 2, 2, 2, 4338, 4339, 3, 2, 2, 2, 4339, 4341, 7, 1078, + 2, 2, 4340, 4334, 3, 2, 2, 2, 4340, 4335, 3, 2, 2, 2, 4341, 375, 3, 2, + 2, 2, 4342, 4343, 7, 39, 2, 2, 4343, 4344, 5, 528, 265, 2, 4344, 4345, + 7, 36, 2, 2, 4345, 4346, 7, 61, 2, 2, 4346, 4347, 5, 180, 91, 2, 4347, + 377, 3, 2, 2, 2, 4348, 4349, 7, 39, 2, 2, 4349, 4350, 9, 61, 2, 2, 4350, + 4351, 7, 407, 2, 2, 4351, 4352, 7, 61, 2, 2, 4352, 4357, 5, 380, 191, 2, + 4353, 4354, 7, 1065, 2, 2, 4354, 4356, 5, 380, 191, 2, 4355, 4353, 3, 2, + 2, 2, 4356, 4359, 3, 2, 2, 2, 4357, 4355, 3, 2, 2, 2, 4357, 4358, 3, 2, + 2, 2, 4358, 4360, 3, 2, 2, 2, 4359, 4357, 3, 2, 2, 2, 4360, 4361, 5, 350, + 176, 2, 4361, 379, 3, 2, 2, 2, 4362, 4374, 5, 534, 268, 2, 4363, 4365, + 7, 149, 2, 2, 4364, 4366, 7, 613, 2, 2, 4365, 4364, 3, 2, 2, 2, 4365, 4366, + 3, 2, 2, 2, 4366, 4367, 3, 2, 2, 2, 4367, 4374, 7, 1078, 2, 2, 4368, 4374, + 5, 528, 265, 2, 4369, 4374, 7, 150, 2, 2, 4370, 4371, 7, 105, 2, 2, 4371, + 4374, 7, 400, 2, 2, 4372, 4374, 7, 148, 2, 2, 4373, 4362, 3, 2, 2, 2, 4373, + 4363, 3, 2, 2, 2, 4373, 4368, 3, 2, 2, 2, 4373, 4369, 3, 2, 2, 2, 4373, + 4370, 3, 2, 2, 2, 4373, 4372, 3, 2, 2, 2, 4374, 381, 3, 2, 2, 2, 4375, + 4378, 5, 20, 11, 2, 4376, 4378, 5, 6, 4, 2, 4377, 4375, 3, 2, 2, 2, 4377, + 4376, 3, 2, 2, 2, 4378, 4379, 3, 2, 2, 2, 4379, 4380, 7, 1066, 2, 2, 4380, + 383, 3, 2, 2, 2, 4381, 4384, 7, 175, 2, 2, 4382, 4385, 5, 546, 274, 2, + 4383, 4385, 5, 606, 304, 2, 4384, 4382, 3, 2, 2, 2, 4384, 4383, 3, 2, 2, + 2, 4385, 4386, 3, 2, 2, 2, 4386, 4388, 7, 160, 2, 2, 4387, 4389, 5, 382, + 192, 2, 4388, 4387, 3, 2, 2, 2, 4389, 4390, 3, 2, 2, 2, 4390, 4388, 3, + 2, 2, 2, 4390, 4391, 3, 2, 2, 2, 4391, 385, 3, 2, 2, 2, 4392, 4393, 7, + 52, 2, 2, 4393, 4394, 5, 606, 304, 2, 4394, 4396, 7, 160, 2, 2, 4395, 4397, + 5, 382, 192, 2, 4396, 4395, 3, 2, 2, 2, 4397, 4398, 3, 2, 2, 2, 4398, 4396, + 3, 2, 2, 2, 4398, 4399, 3, 2, 2, 2, 4399, 387, 3, 2, 2, 2, 4400, 4401, + 7, 9, 2, 2, 4401, 4402, 7, 609, 2, 2, 4402, 4407, 5, 406, 204, 2, 4403, + 4404, 7, 1065, 2, 2, 4404, 4406, 5, 406, 204, 2, 4405, 4403, 3, 2, 2, 2, + 4406, 4409, 3, 2, 2, 2, 4407, 4405, 3, 2, 2, 2, 4407, 4408, 3, 2, 2, 2, + 4408, 4455, 3, 2, 2, 2, 4409, 4407, 3, 2, 2, 2, 4410, 4411, 7, 9, 2, 2, + 4411, 4413, 7, 609, 2, 2, 4412, 4414, 5, 582, 292, 2, 4413, 4412, 3, 2, + 2, 2, 4413, 4414, 3, 2, 2, 2, 4414, 4415, 3, 2, 2, 2, 4415, 4420, 5, 408, + 205, 2, 4416, 4417, 7, 1065, 2, 2, 4417, 4419, 5, 408, 205, 2, 4418, 4416, + 3, 2, 2, 2, 4419, 4422, 3, 2, 2, 2, 4420, 4418, 3, 2, 2, 2, 4420, 4421, + 3, 2, 2, 2, 4421, 4437, 3, 2, 2, 2, 4422, 4420, 3, 2, 2, 2, 4423, 4435, + 7, 132, 2, 2, 4424, 4436, 7, 485, 2, 2, 4425, 4432, 5, 410, 206, 2, 4426, + 4428, 7, 12, 2, 2, 4427, 4426, 3, 2, 2, 2, 4427, 4428, 3, 2, 2, 2, 4428, + 4429, 3, 2, 2, 2, 4429, 4431, 5, 410, 206, 2, 4430, 4427, 3, 2, 2, 2, 4431, + 4434, 3, 2, 2, 2, 4432, 4430, 3, 2, 2, 2, 4432, 4433, 3, 2, 2, 2, 4433, + 4436, 3, 2, 2, 2, 4434, 4432, 3, 2, 2, 2, 4435, 4424, 3, 2, 2, 2, 4435, + 4425, 3, 2, 2, 2, 4436, 4438, 3, 2, 2, 2, 4437, 4423, 3, 2, 2, 2, 4437, + 4438, 3, 2, 2, 2, 4438, 4445, 3, 2, 2, 2, 4439, 4441, 7, 178, 2, 2, 4440, + 4442, 5, 412, 207, 2, 4441, 4440, 3, 2, 2, 2, 4442, 4443, 3, 2, 2, 2, 4443, + 4441, 3, 2, 2, 2, 4443, 4444, 3, 2, 2, 2, 4444, 4446, 3, 2, 2, 2, 4445, + 4439, 3, 2, 2, 2, 4445, 4446, 3, 2, 2, 2, 4446, 4451, 3, 2, 2, 2, 4447, + 4450, 5, 414, 208, 2, 4448, 4450, 5, 416, 209, 2, 4449, 4447, 3, 2, 2, + 2, 4449, 4448, 3, 2, 2, 2, 4450, 4453, 3, 2, 2, 2, 4451, 4449, 3, 2, 2, + 2, 4451, 4452, 3, 2, 2, 2, 4452, 4455, 3, 2, 2, 2, 4453, 4451, 3, 2, 2, + 2, 4454, 4400, 3, 2, 2, 2, 4454, 4410, 3, 2, 2, 2, 4455, 389, 3, 2, 2, + 2, 4456, 4457, 7, 32, 2, 2, 4457, 4458, 7, 609, 2, 2, 4458, 4463, 5, 408, + 205, 2, 4459, 4460, 7, 1065, 2, 2, 4460, 4462, 5, 408, 205, 2, 4461, 4459, + 3, 2, 2, 2, 4462, 4465, 3, 2, 2, 2, 4463, 4461, 3, 2, 2, 2, 4463, 4464, + 3, 2, 2, 2, 4464, 4511, 3, 2, 2, 2, 4465, 4463, 3, 2, 2, 2, 4466, 4467, + 7, 32, 2, 2, 4467, 4469, 7, 609, 2, 2, 4468, 4470, 5, 584, 293, 2, 4469, + 4468, 3, 2, 2, 2, 4469, 4470, 3, 2, 2, 2, 4470, 4471, 3, 2, 2, 2, 4471, + 4476, 5, 408, 205, 2, 4472, 4473, 7, 1065, 2, 2, 4473, 4475, 5, 408, 205, + 2, 4474, 4472, 3, 2, 2, 2, 4475, 4478, 3, 2, 2, 2, 4476, 4474, 3, 2, 2, + 2, 4476, 4477, 3, 2, 2, 2, 4477, 4493, 3, 2, 2, 2, 4478, 4476, 3, 2, 2, + 2, 4479, 4491, 7, 132, 2, 2, 4480, 4492, 7, 485, 2, 2, 4481, 4488, 5, 410, + 206, 2, 4482, 4484, 7, 12, 2, 2, 4483, 4482, 3, 2, 2, 2, 4483, 4484, 3, + 2, 2, 2, 4484, 4485, 3, 2, 2, 2, 4485, 4487, 5, 410, 206, 2, 4486, 4483, + 3, 2, 2, 2, 4487, 4490, 3, 2, 2, 2, 4488, 4486, 3, 2, 2, 2, 4488, 4489, + 3, 2, 2, 2, 4489, 4492, 3, 2, 2, 2, 4490, 4488, 3, 2, 2, 2, 4491, 4480, + 3, 2, 2, 2, 4491, 4481, 3, 2, 2, 2, 4492, 4494, 3, 2, 2, 2, 4493, 4479, + 3, 2, 2, 2, 4493, 4494, 3, 2, 2, 2, 4494, 4501, 3, 2, 2, 2, 4495, 4497, + 7, 178, 2, 2, 4496, 4498, 5, 412, 207, 2, 4497, 4496, 3, 2, 2, 2, 4498, + 4499, 3, 2, 2, 2, 4499, 4497, 3, 2, 2, 2, 4499, 4500, 3, 2, 2, 2, 4500, + 4502, 3, 2, 2, 2, 4501, 4495, 3, 2, 2, 2, 4501, 4502, 3, 2, 2, 2, 4502, + 4507, 3, 2, 2, 2, 4503, 4506, 5, 414, 208, 2, 4504, 4506, 5, 416, 209, + 2, 4505, 4503, 3, 2, 2, 2, 4505, 4504, 3, 2, 2, 2, 4506, 4509, 3, 2, 2, + 2, 4507, 4505, 3, 2, 2, 2, 4507, 4508, 3, 2, 2, 2, 4508, 4511, 3, 2, 2, + 2, 4509, 4507, 3, 2, 2, 2, 4510, 4456, 3, 2, 2, 2, 4510, 4466, 3, 2, 2, + 2, 4511, 391, 3, 2, 2, 2, 4512, 4513, 7, 49, 2, 2, 4513, 4515, 7, 609, + 2, 2, 4514, 4516, 5, 582, 292, 2, 4515, 4514, 3, 2, 2, 2, 4515, 4516, 3, + 2, 2, 2, 4516, 4517, 3, 2, 2, 2, 4517, 4522, 5, 510, 256, 2, 4518, 4519, + 7, 1065, 2, 2, 4519, 4521, 5, 510, 256, 2, 4520, 4518, 3, 2, 2, 2, 4521, + 4524, 3, 2, 2, 2, 4522, 4520, 3, 2, 2, 2, 4522, 4523, 3, 2, 2, 2, 4523, + 393, 3, 2, 2, 2, 4524, 4522, 3, 2, 2, 2, 4525, 4526, 7, 68, 2, 2, 4526, + 4531, 5, 418, 210, 2, 4527, 4528, 7, 1065, 2, 2, 4528, 4530, 5, 418, 210, + 2, 4529, 4527, 3, 2, 2, 2, 4530, 4533, 3, 2, 2, 2, 4531, 4529, 3, 2, 2, + 2, 4531, 4532, 3, 2, 2, 2, 4532, 4534, 3, 2, 2, 2, 4533, 4531, 3, 2, 2, + 2, 4534, 4536, 7, 110, 2, 2, 4535, 4537, 9, 62, 2, 2, 4536, 4535, 3, 2, + 2, 2, 4536, 4537, 3, 2, 2, 2, 4537, 4538, 3, 2, 2, 2, 4538, 4539, 5, 422, + 212, 2, 4539, 4540, 7, 161, 2, 2, 4540, 4545, 5, 408, 205, 2, 4541, 4542, + 7, 1065, 2, 2, 4542, 4544, 5, 408, 205, 2, 4543, 4541, 3, 2, 2, 2, 4544, + 4547, 3, 2, 2, 2, 4545, 4543, 3, 2, 2, 2, 4545, 4546, 3, 2, 2, 2, 4546, + 4562, 3, 2, 2, 2, 4547, 4545, 3, 2, 2, 2, 4548, 4560, 7, 132, 2, 2, 4549, + 4561, 7, 485, 2, 2, 4550, 4557, 5, 410, 206, 2, 4551, 4553, 7, 12, 2, 2, + 4552, 4551, 3, 2, 2, 2, 4552, 4553, 3, 2, 2, 2, 4553, 4554, 3, 2, 2, 2, + 4554, 4556, 5, 410, 206, 2, 4555, 4552, 3, 2, 2, 2, 4556, 4559, 3, 2, 2, + 2, 4557, 4555, 3, 2, 2, 2, 4557, 4558, 3, 2, 2, 2, 4558, 4561, 3, 2, 2, + 2, 4559, 4557, 3, 2, 2, 2, 4560, 4549, 3, 2, 2, 2, 4560, 4550, 3, 2, 2, + 2, 4561, 4563, 3, 2, 2, 2, 4562, 4548, 3, 2, 2, 2, 4562, 4563, 3, 2, 2, + 2, 4563, 4573, 3, 2, 2, 2, 4564, 4570, 7, 178, 2, 2, 4565, 4566, 7, 68, + 2, 2, 4566, 4569, 7, 112, 2, 2, 4567, 4569, 5, 412, 207, 2, 4568, 4565, + 3, 2, 2, 2, 4568, 4567, 3, 2, 2, 2, 4569, 4572, 3, 2, 2, 2, 4570, 4568, + 3, 2, 2, 2, 4570, 4571, 3, 2, 2, 2, 4571, 4574, 3, 2, 2, 2, 4572, 4570, + 3, 2, 2, 2, 4573, 4564, 3, 2, 2, 2, 4573, 4574, 3, 2, 2, 2, 4574, 395, + 3, 2, 2, 2, 4575, 4576, 7, 68, 2, 2, 4576, 4577, 7, 517, 2, 2, 4577, 4578, + 7, 110, 2, 2, 4578, 4579, 5, 510, 256, 2, 4579, 4580, 7, 161, 2, 2, 4580, + 4585, 5, 510, 256, 2, 4581, 4582, 7, 1065, 2, 2, 4582, 4584, 5, 510, 256, + 2, 4583, 4581, 3, 2, 2, 2, 4584, 4587, 3, 2, 2, 2, 4585, 4583, 3, 2, 2, + 2, 4585, 4586, 3, 2, 2, 2, 4586, 4591, 3, 2, 2, 2, 4587, 4585, 3, 2, 2, + 2, 4588, 4589, 7, 178, 2, 2, 4589, 4590, 7, 68, 2, 2, 4590, 4592, 7, 112, + 2, 2, 4591, 4588, 3, 2, 2, 2, 4591, 4592, 3, 2, 2, 2, 4592, 397, 3, 2, + 2, 2, 4593, 4594, 7, 129, 2, 2, 4594, 4595, 7, 609, 2, 2, 4595, 4600, 5, + 424, 213, 2, 4596, 4597, 7, 1065, 2, 2, 4597, 4599, 5, 424, 213, 2, 4598, + 4596, 3, 2, 2, 2, 4599, 4602, 3, 2, 2, 2, 4600, 4598, 3, 2, 2, 2, 4600, + 4601, 3, 2, 2, 2, 4601, 399, 3, 2, 2, 2, 4602, 4600, 3, 2, 2, 2, 4603, + 4604, 7, 136, 2, 2, 4604, 4609, 5, 418, 210, 2, 4605, 4606, 7, 1065, 2, + 2, 4606, 4608, 5, 418, 210, 2, 4607, 4605, 3, 2, 2, 2, 4608, 4611, 3, 2, + 2, 2, 4609, 4607, 3, 2, 2, 2, 4609, 4610, 3, 2, 2, 2, 4610, 4612, 3, 2, + 2, 2, 4611, 4609, 3, 2, 2, 2, 4612, 4614, 7, 110, 2, 2, 4613, 4615, 9, + 62, 2, 2, 4614, 4613, 3, 2, 2, 2, 4614, 4615, 3, 2, 2, 2, 4615, 4616, 3, + 2, 2, 2, 4616, 4617, 5, 422, 212, 2, 4617, 4618, 7, 64, 2, 2, 4618, 4623, + 5, 510, 256, 2, 4619, 4620, 7, 1065, 2, 2, 4620, 4622, 5, 510, 256, 2, + 4621, 4619, 3, 2, 2, 2, 4622, 4625, 3, 2, 2, 2, 4623, 4621, 3, 2, 2, 2, + 4623, 4624, 3, 2, 2, 2, 4624, 4644, 3, 2, 2, 2, 4625, 4623, 3, 2, 2, 2, + 4626, 4627, 7, 136, 2, 2, 4627, 4629, 7, 8, 2, 2, 4628, 4630, 7, 647, 2, + 2, 4629, 4628, 3, 2, 2, 2, 4629, 4630, 3, 2, 2, 2, 4630, 4631, 3, 2, 2, + 2, 4631, 4632, 7, 1065, 2, 2, 4632, 4633, 7, 68, 2, 2, 4633, 4634, 7, 112, + 2, 2, 4634, 4635, 7, 64, 2, 2, 4635, 4640, 5, 510, 256, 2, 4636, 4637, + 7, 1065, 2, 2, 4637, 4639, 5, 510, 256, 2, 4638, 4636, 3, 2, 2, 2, 4639, + 4642, 3, 2, 2, 2, 4640, 4638, 3, 2, 2, 2, 4640, 4641, 3, 2, 2, 2, 4641, + 4644, 3, 2, 2, 2, 4642, 4640, 3, 2, 2, 2, 4643, 4603, 3, 2, 2, 2, 4643, + 4626, 3, 2, 2, 2, 4644, 401, 3, 2, 2, 2, 4645, 4646, 7, 136, 2, 2, 4646, + 4647, 7, 517, 2, 2, 4647, 4648, 7, 110, 2, 2, 4648, 4649, 5, 510, 256, + 2, 4649, 4650, 7, 64, 2, 2, 4650, 4655, 5, 510, 256, 2, 4651, 4652, 7, + 1065, 2, 2, 4652, 4654, 5, 510, 256, 2, 4653, 4651, 3, 2, 2, 2, 4654, 4657, + 3, 2, 2, 2, 4655, 4653, 3, 2, 2, 2, 4655, 4656, 3, 2, 2, 2, 4656, 403, + 3, 2, 2, 2, 4657, 4655, 3, 2, 2, 2, 4658, 4659, 7, 142, 2, 2, 4659, 4662, + 7, 504, 2, 2, 4660, 4661, 7, 61, 2, 2, 4661, 4663, 5, 510, 256, 2, 4662, + 4660, 3, 2, 2, 2, 4662, 4663, 3, 2, 2, 2, 4663, 4664, 3, 2, 2, 2, 4664, + 4667, 7, 1054, 2, 2, 4665, 4668, 5, 600, 301, 2, 4666, 4668, 7, 1078, 2, + 2, 4667, 4665, 3, 2, 2, 2, 4667, 4666, 3, 2, 2, 2, 4668, 405, 3, 2, 2, + 2, 4669, 4670, 5, 510, 256, 2, 4670, 4671, 5, 414, 208, 2, 4671, 407, 3, + 2, 2, 2, 4672, 4673, 5, 510, 256, 2, 4673, 4674, 7, 412, 2, 2, 4674, 4675, + 7, 18, 2, 2, 4675, 4676, 7, 504, 2, 2, 4676, 4677, 7, 1078, 2, 2, 4677, + 4697, 3, 2, 2, 2, 4678, 4679, 5, 510, 256, 2, 4679, 4682, 7, 412, 2, 2, + 4680, 4681, 7, 178, 2, 2, 4681, 4683, 5, 526, 264, 2, 4682, 4680, 3, 2, + 2, 2, 4682, 4683, 3, 2, 2, 2, 4683, 4684, 3, 2, 2, 2, 4684, 4685, 7, 18, + 2, 2, 4685, 4686, 7, 1078, 2, 2, 4686, 4697, 3, 2, 2, 2, 4687, 4688, 5, + 510, 256, 2, 4688, 4689, 7, 412, 2, 2, 4689, 4690, 7, 178, 2, 2, 4690, + 4693, 5, 526, 264, 2, 4691, 4692, 7, 13, 2, 2, 4692, 4694, 7, 1078, 2, + 2, 4693, 4691, 3, 2, 2, 2, 4693, 4694, 3, 2, 2, 2, 4694, 4697, 3, 2, 2, + 2, 4695, 4697, 5, 510, 256, 2, 4696, 4672, 3, 2, 2, 2, 4696, 4678, 3, 2, + 2, 2, 4696, 4687, 3, 2, 2, 2, 4696, 4695, 3, 2, 2, 2, 4697, 409, 3, 2, + 2, 2, 4698, 4707, 7, 154, 2, 2, 4699, 4707, 7, 623, 2, 2, 4700, 4701, 7, + 330, 2, 2, 4701, 4707, 7, 1078, 2, 2, 4702, 4703, 7, 427, 2, 2, 4703, 4707, + 7, 1078, 2, 2, 4704, 4705, 7, 586, 2, 2, 4705, 4707, 7, 1078, 2, 2, 4706, + 4698, 3, 2, 2, 2, 4706, 4699, 3, 2, 2, 2, 4706, 4700, 3, 2, 2, 2, 4706, + 4702, 3, 2, 2, 2, 4706, 4704, 3, 2, 2, 2, 4707, 411, 3, 2, 2, 2, 4708, + 4709, 7, 461, 2, 2, 4709, 4717, 5, 534, 268, 2, 4710, 4711, 7, 464, 2, + 2, 4711, 4717, 5, 534, 268, 2, 4712, 4713, 7, 460, 2, 2, 4713, 4717, 5, + 534, 268, 2, 4714, 4715, 7, 465, 2, 2, 4715, 4717, 5, 534, 268, 2, 4716, + 4708, 3, 2, 2, 2, 4716, 4710, 3, 2, 2, 2, 4716, 4712, 3, 2, 2, 2, 4716, + 4714, 3, 2, 2, 2, 4717, 413, 3, 2, 2, 2, 4718, 4719, 7, 504, 2, 2, 4719, + 4726, 7, 387, 2, 2, 4720, 4727, 7, 40, 2, 2, 4721, 4727, 7, 481, 2, 2, + 4722, 4723, 7, 80, 2, 2, 4723, 4724, 5, 534, 268, 2, 4724, 4725, 7, 633, + 2, 2, 4725, 4727, 3, 2, 2, 2, 4726, 4720, 3, 2, 2, 2, 4726, 4721, 3, 2, + 2, 2, 4726, 4722, 3, 2, 2, 2, 4726, 4727, 3, 2, 2, 2, 4727, 415, 3, 2, + 2, 2, 4728, 4729, 7, 304, 2, 2, 4729, 4730, 9, 63, 2, 2, 4730, 417, 3, + 2, 2, 2, 4731, 4736, 5, 420, 211, 2, 4732, 4733, 7, 1063, 2, 2, 4733, 4734, + 5, 560, 281, 2, 4734, 4735, 7, 1064, 2, 2, 4735, 4737, 3, 2, 2, 2, 4736, + 4732, 3, 2, 2, 2, 4736, 4737, 3, 2, 2, 2, 4737, 419, 3, 2, 2, 2, 4738, + 4740, 7, 8, 2, 2, 4739, 4741, 7, 647, 2, 2, 4740, 4739, 3, 2, 2, 2, 4740, + 4741, 3, 2, 2, 2, 4741, 4818, 3, 2, 2, 2, 4742, 4744, 7, 9, 2, 2, 4743, + 4745, 7, 640, 2, 2, 4744, 4743, 3, 2, 2, 2, 4744, 4745, 3, 2, 2, 2, 4745, + 4818, 3, 2, 2, 2, 4746, 4754, 7, 32, 2, 2, 4747, 4748, 7, 594, 2, 2, 4748, + 4755, 7, 639, 2, 2, 4749, 4755, 7, 640, 2, 2, 4750, 4755, 7, 615, 2, 2, + 4751, 4755, 7, 609, 2, 2, 4752, 4755, 7, 593, 2, 2, 4753, 4755, 7, 544, + 2, 2, 4754, 4747, 3, 2, 2, 2, 4754, 4749, 3, 2, 2, 2, 4754, 4750, 3, 2, + 2, 2, 4754, 4751, 3, 2, 2, 2, 4754, 4752, 3, 2, 2, 2, 4754, 4753, 3, 2, + 2, 2, 4754, 4755, 3, 2, 2, 2, 4755, 4818, 3, 2, 2, 2, 4756, 4818, 7, 42, + 2, 2, 4757, 4759, 7, 49, 2, 2, 4758, 4760, 7, 544, 2, 2, 4759, 4758, 3, + 2, 2, 2, 4759, 4760, 3, 2, 2, 2, 4760, 4818, 3, 2, 2, 2, 4761, 4818, 7, + 382, 2, 2, 4762, 4818, 7, 641, 2, 2, 4763, 4818, 7, 642, 2, 2, 4764, 4765, + 7, 68, 2, 2, 4765, 4818, 7, 112, 2, 2, 4766, 4818, 7, 75, 2, 2, 4767, 4818, + 7, 79, 2, 2, 4768, 4769, 7, 96, 2, 2, 4769, 4818, 7, 639, 2, 2, 4770, 4818, + 7, 643, 2, 2, 4771, 4818, 7, 517, 2, 2, 4772, 4818, 7, 126, 2, 2, 4773, + 4818, 7, 644, 2, 2, 4774, 4775, 7, 538, 2, 2, 4775, 4818, 9, 64, 2, 2, + 4776, 4818, 7, 141, 2, 2, 4777, 4778, 7, 144, 2, 2, 4778, 4818, 9, 65, + 2, 2, 4779, 4818, 7, 645, 2, 2, 4780, 4818, 7, 646, 2, 2, 4781, 4818, 7, + 163, 2, 2, 4782, 4818, 7, 170, 2, 2, 4783, 4818, 7, 171, 2, 2, 4784, 4818, + 7, 648, 2, 2, 4785, 4818, 7, 649, 2, 2, 4786, 4818, 7, 650, 2, 2, 4787, + 4818, 7, 651, 2, 2, 4788, 4818, 7, 652, 2, 2, 4789, 4818, 7, 653, 2, 2, + 4790, 4818, 7, 654, 2, 2, 4791, 4818, 7, 655, 2, 2, 4792, 4818, 7, 656, + 2, 2, 4793, 4818, 7, 657, 2, 2, 4794, 4818, 7, 658, 2, 2, 4795, 4818, 7, + 659, 2, 2, 4796, 4818, 7, 660, 2, 2, 4797, 4818, 7, 661, 2, 2, 4798, 4818, + 7, 662, 2, 2, 4799, 4818, 7, 663, 2, 2, 4800, 4818, 7, 664, 2, 2, 4801, + 4818, 7, 665, 2, 2, 4802, 4818, 7, 666, 2, 2, 4803, 4818, 7, 667, 2, 2, + 4804, 4818, 7, 668, 2, 2, 4805, 4818, 7, 669, 2, 2, 4806, 4818, 7, 670, + 2, 2, 4807, 4818, 7, 671, 2, 2, 4808, 4818, 7, 672, 2, 2, 4809, 4818, 7, + 673, 2, 2, 4810, 4818, 7, 674, 2, 2, 4811, 4818, 7, 675, 2, 2, 4812, 4818, + 7, 1007, 2, 2, 4813, 4818, 7, 676, 2, 2, 4814, 4818, 7, 677, 2, 2, 4815, + 4818, 7, 678, 2, 2, 4816, 4818, 7, 679, 2, 2, 4817, 4738, 3, 2, 2, 2, 4817, + 4742, 3, 2, 2, 2, 4817, 4746, 3, 2, 2, 2, 4817, 4756, 3, 2, 2, 2, 4817, + 4757, 3, 2, 2, 2, 4817, 4761, 3, 2, 2, 2, 4817, 4762, 3, 2, 2, 2, 4817, + 4763, 3, 2, 2, 2, 4817, 4764, 3, 2, 2, 2, 4817, 4766, 3, 2, 2, 2, 4817, + 4767, 3, 2, 2, 2, 4817, 4768, 3, 2, 2, 2, 4817, 4770, 3, 2, 2, 2, 4817, + 4771, 3, 2, 2, 2, 4817, 4772, 3, 2, 2, 2, 4817, 4773, 3, 2, 2, 2, 4817, + 4774, 3, 2, 2, 2, 4817, 4776, 3, 2, 2, 2, 4817, 4777, 3, 2, 2, 2, 4817, + 4779, 3, 2, 2, 2, 4817, 4780, 3, 2, 2, 2, 4817, 4781, 3, 2, 2, 2, 4817, + 4782, 3, 2, 2, 2, 4817, 4783, 3, 2, 2, 2, 4817, 4784, 3, 2, 2, 2, 4817, + 4785, 3, 2, 2, 2, 4817, 4786, 3, 2, 2, 2, 4817, 4787, 3, 2, 2, 2, 4817, + 4788, 3, 2, 2, 2, 4817, 4789, 3, 2, 2, 2, 4817, 4790, 3, 2, 2, 2, 4817, + 4791, 3, 2, 2, 2, 4817, 4792, 3, 2, 2, 2, 4817, 4793, 3, 2, 2, 2, 4817, + 4794, 3, 2, 2, 2, 4817, 4795, 3, 2, 2, 2, 4817, 4796, 3, 2, 2, 2, 4817, + 4797, 3, 2, 2, 2, 4817, 4798, 3, 2, 2, 2, 4817, 4799, 3, 2, 2, 2, 4817, + 4800, 3, 2, 2, 2, 4817, 4801, 3, 2, 2, 2, 4817, 4802, 3, 2, 2, 2, 4817, + 4803, 3, 2, 2, 2, 4817, 4804, 3, 2, 2, 2, 4817, 4805, 3, 2, 2, 2, 4817, + 4806, 3, 2, 2, 2, 4817, 4807, 3, 2, 2, 2, 4817, 4808, 3, 2, 2, 2, 4817, + 4809, 3, 2, 2, 2, 4817, 4810, 3, 2, 2, 2, 4817, 4811, 3, 2, 2, 2, 4817, + 4812, 3, 2, 2, 2, 4817, 4813, 3, 2, 2, 2, 4817, 4814, 3, 2, 2, 2, 4817, + 4815, 3, 2, 2, 2, 4817, 4816, 3, 2, 2, 2, 4818, 421, 3, 2, 2, 2, 4819, + 4836, 7, 1046, 2, 2, 4820, 4821, 7, 1046, 2, 2, 4821, 4822, 7, 1062, 2, + 2, 4822, 4836, 7, 1046, 2, 2, 4823, 4824, 5, 528, 265, 2, 4824, 4825, 7, + 1062, 2, 2, 4825, 4826, 7, 1046, 2, 2, 4826, 4836, 3, 2, 2, 2, 4827, 4828, + 5, 528, 265, 2, 4828, 4829, 7, 1062, 2, 2, 4829, 4830, 5, 528, 265, 2, + 4830, 4836, 3, 2, 2, 2, 4831, 4832, 5, 528, 265, 2, 4832, 4833, 5, 532, + 267, 2, 4833, 4836, 3, 2, 2, 2, 4834, 4836, 5, 528, 265, 2, 4835, 4819, + 3, 2, 2, 2, 4835, 4820, 3, 2, 2, 2, 4835, 4823, 3, 2, 2, 2, 4835, 4827, + 3, 2, 2, 2, 4835, 4831, 3, 2, 2, 2, 4835, 4834, 3, 2, 2, 2, 4836, 423, + 3, 2, 2, 2, 4837, 4838, 5, 510, 256, 2, 4838, 4839, 7, 161, 2, 2, 4839, + 4840, 5, 510, 256, 2, 4840, 425, 3, 2, 2, 2, 4841, 4843, 7, 11, 2, 2, 4842, + 4844, 9, 66, 2, 2, 4843, 4842, 3, 2, 2, 2, 4843, 4844, 3, 2, 2, 2, 4844, + 4845, 3, 2, 2, 2, 4845, 4846, 7, 158, 2, 2, 4846, 4847, 5, 562, 282, 2, + 4847, 427, 3, 2, 2, 2, 4848, 4849, 7, 25, 2, 2, 4849, 4850, 7, 158, 2, + 2, 4850, 4854, 5, 562, 282, 2, 4851, 4853, 5, 436, 219, 2, 4852, 4851, + 3, 2, 2, 2, 4853, 4856, 3, 2, 2, 2, 4854, 4852, 3, 2, 2, 2, 4854, 4855, + 3, 2, 2, 2, 4855, 429, 3, 2, 2, 2, 4856, 4854, 3, 2, 2, 2, 4857, 4858, + 7, 328, 2, 2, 4858, 4859, 7, 158, 2, 2, 4859, 4861, 5, 562, 282, 2, 4860, + 4862, 9, 67, 2, 2, 4861, 4860, 3, 2, 2, 2, 4861, 4862, 3, 2, 2, 2, 4862, + 431, 3, 2, 2, 2, 4863, 4865, 7, 111, 2, 2, 4864, 4866, 9, 66, 2, 2, 4865, + 4864, 3, 2, 2, 2, 4865, 4866, 3, 2, 2, 2, 4866, 4867, 3, 2, 2, 2, 4867, + 4868, 9, 68, 2, 2, 4868, 4869, 5, 562, 282, 2, 4869, 433, 3, 2, 2, 2, 4870, + 4872, 7, 530, 2, 2, 4871, 4873, 9, 66, 2, 2, 4872, 4871, 3, 2, 2, 2, 4872, + 4873, 3, 2, 2, 2, 4873, 4874, 3, 2, 2, 2, 4874, 4875, 7, 158, 2, 2, 4875, + 4877, 5, 562, 282, 2, 4876, 4878, 7, 519, 2, 2, 4877, 4876, 3, 2, 2, 2, + 4877, 4878, 3, 2, 2, 2, 4878, 4880, 3, 2, 2, 2, 4879, 4881, 7, 389, 2, + 2, 4880, 4879, 3, 2, 2, 2, 4880, 4881, 3, 2, 2, 2, 4881, 4883, 3, 2, 2, + 2, 4882, 4884, 7, 610, 2, 2, 4883, 4882, 3, 2, 2, 2, 4883, 4884, 3, 2, + 2, 2, 4884, 435, 3, 2, 2, 2, 4885, 4886, 7, 61, 2, 2, 4886, 4893, 7, 608, + 2, 2, 4887, 4893, 7, 519, 2, 2, 4888, 4893, 7, 391, 2, 2, 4889, 4893, 7, + 466, 2, 2, 4890, 4893, 7, 389, 2, 2, 4891, 4893, 7, 326, 2, 2, 4892, 4885, + 3, 2, 2, 2, 4892, 4887, 3, 2, 2, 2, 4892, 4888, 3, 2, 2, 2, 4892, 4889, + 3, 2, 2, 2, 4892, 4890, 3, 2, 2, 2, 4892, 4891, 3, 2, 2, 2, 4893, 437, + 3, 2, 2, 2, 4894, 4896, 7, 32, 2, 2, 4895, 4897, 7, 307, 2, 2, 4896, 4895, + 3, 2, 2, 2, 4896, 4897, 3, 2, 2, 2, 4897, 4898, 3, 2, 2, 2, 4898, 4899, + 7, 402, 2, 2, 4899, 4900, 5, 528, 265, 2, 4900, 4901, 7, 543, 2, 2, 4901, + 4902, 9, 69, 2, 2, 4902, 4903, 7, 565, 2, 2, 4903, 4904, 7, 1078, 2, 2, + 4904, 439, 3, 2, 2, 2, 4905, 4906, 7, 419, 2, 2, 4906, 4907, 7, 506, 2, + 2, 4907, 4908, 5, 528, 265, 2, 4908, 4909, 7, 565, 2, 2, 4909, 4910, 7, + 1078, 2, 2, 4910, 441, 3, 2, 2, 2, 4911, 4912, 7, 605, 2, 2, 4912, 4913, + 7, 506, 2, 2, 4913, 4914, 5, 528, 265, 2, 4914, 443, 3, 2, 2, 2, 4915, + 4916, 7, 142, 2, 2, 4916, 4917, 5, 448, 225, 2, 4917, 4918, 9, 70, 2, 2, + 4918, 4926, 5, 606, 304, 2, 4919, 4920, 7, 1065, 2, 2, 4920, 4921, 5, 448, + 225, 2, 4921, 4922, 9, 70, 2, 2, 4922, 4923, 5, 606, 304, 2, 4923, 4925, + 3, 2, 2, 2, 4924, 4919, 3, 2, 2, 2, 4925, 4928, 3, 2, 2, 2, 4926, 4924, + 3, 2, 2, 2, 4926, 4927, 3, 2, 2, 2, 4927, 4967, 3, 2, 2, 2, 4928, 4926, + 3, 2, 2, 2, 4929, 4933, 7, 142, 2, 2, 4930, 4931, 7, 24, 2, 2, 4931, 4934, + 7, 142, 2, 2, 4932, 4934, 7, 774, 2, 2, 4933, 4930, 3, 2, 2, 2, 4933, 4932, + 3, 2, 2, 2, 4934, 4937, 3, 2, 2, 2, 4935, 4938, 5, 514, 258, 2, 4936, 4938, + 7, 40, 2, 2, 4937, 4935, 3, 2, 2, 2, 4937, 4936, 3, 2, 2, 2, 4938, 4967, + 3, 2, 2, 2, 4939, 4940, 7, 142, 2, 2, 4940, 4947, 7, 479, 2, 2, 4941, 4944, + 5, 514, 258, 2, 4942, 4943, 7, 26, 2, 2, 4943, 4945, 5, 516, 259, 2, 4944, + 4942, 3, 2, 2, 2, 4944, 4945, 3, 2, 2, 2, 4945, 4948, 3, 2, 2, 2, 4946, + 4948, 7, 40, 2, 2, 4947, 4941, 3, 2, 2, 2, 4947, 4946, 3, 2, 2, 2, 4948, + 4967, 3, 2, 2, 2, 4949, 4967, 5, 404, 203, 2, 4950, 4967, 5, 280, 141, + 2, 4951, 4967, 5, 278, 140, 2, 4952, 4953, 7, 142, 2, 2, 4953, 4954, 5, + 502, 252, 2, 4954, 4955, 9, 70, 2, 2, 4955, 4963, 5, 606, 304, 2, 4956, + 4957, 7, 1065, 2, 2, 4957, 4958, 5, 502, 252, 2, 4958, 4959, 9, 70, 2, + 2, 4959, 4960, 5, 606, 304, 2, 4960, 4962, 3, 2, 2, 2, 4961, 4956, 3, 2, + 2, 2, 4962, 4965, 3, 2, 2, 2, 4963, 4961, 3, 2, 2, 2, 4963, 4964, 3, 2, + 2, 2, 4964, 4967, 3, 2, 2, 2, 4965, 4963, 3, 2, 2, 2, 4966, 4915, 3, 2, + 2, 2, 4966, 4929, 3, 2, 2, 2, 4966, 4939, 3, 2, 2, 2, 4966, 4949, 3, 2, + 2, 2, 4966, 4950, 3, 2, 2, 2, 4966, 4951, 3, 2, 2, 2, 4966, 4952, 3, 2, + 2, 2, 4967, 445, 3, 2, 2, 2, 4968, 4969, 7, 144, 2, 2, 4969, 4970, 9, 52, + 2, 2, 4970, 5120, 7, 438, 2, 2, 4971, 4972, 7, 144, 2, 2, 4972, 4973, 9, + 71, 2, 2, 4973, 4976, 7, 383, 2, 2, 4974, 4975, 7, 74, 2, 2, 4975, 4977, + 7, 1078, 2, 2, 4976, 4974, 3, 2, 2, 2, 4976, 4977, 3, 2, 2, 2, 4977, 4980, + 3, 2, 2, 2, 4978, 4979, 7, 64, 2, 2, 4979, 4981, 5, 534, 268, 2, 4980, + 4978, 3, 2, 2, 2, 4980, 4981, 3, 2, 2, 2, 4981, 4989, 3, 2, 2, 2, 4982, + 4986, 7, 92, 2, 2, 4983, 4984, 5, 534, 268, 2, 4984, 4985, 7, 1065, 2, + 2, 4985, 4987, 3, 2, 2, 2, 4986, 4983, 3, 2, 2, 2, 4986, 4987, 3, 2, 2, + 2, 4987, 4988, 3, 2, 2, 2, 4988, 4990, 5, 534, 268, 2, 4989, 4982, 3, 2, + 2, 2, 4989, 4990, 3, 2, 2, 2, 4990, 5120, 3, 2, 2, 2, 4991, 4992, 7, 144, + 2, 2, 4992, 4994, 5, 450, 226, 2, 4993, 4995, 5, 452, 227, 2, 4994, 4993, + 3, 2, 2, 2, 4994, 4995, 3, 2, 2, 2, 4995, 5120, 3, 2, 2, 2, 4996, 4998, + 7, 144, 2, 2, 4997, 4999, 7, 401, 2, 2, 4998, 4997, 3, 2, 2, 2, 4998, 4999, + 3, 2, 2, 2, 4999, 5000, 3, 2, 2, 2, 5000, 5001, 9, 38, 2, 2, 5001, 5002, + 9, 72, 2, 2, 5002, 5005, 5, 504, 253, 2, 5003, 5004, 9, 72, 2, 2, 5004, + 5006, 5, 528, 265, 2, 5005, 5003, 3, 2, 2, 2, 5005, 5006, 3, 2, 2, 2, 5006, + 5008, 3, 2, 2, 2, 5007, 5009, 5, 452, 227, 2, 5008, 5007, 3, 2, 2, 2, 5008, + 5009, 3, 2, 2, 2, 5009, 5120, 3, 2, 2, 2, 5010, 5011, 7, 144, 2, 2, 5011, + 5012, 7, 32, 2, 2, 5012, 5014, 9, 2, 2, 2, 5013, 5015, 5, 584, 293, 2, + 5014, 5013, 3, 2, 2, 2, 5014, 5015, 3, 2, 2, 2, 5015, 5016, 3, 2, 2, 2, + 5016, 5120, 5, 528, 265, 2, 5017, 5018, 7, 144, 2, 2, 5018, 5019, 7, 32, + 2, 2, 5019, 5020, 9, 73, 2, 2, 5020, 5120, 5, 502, 252, 2, 5021, 5022, + 7, 144, 2, 2, 5022, 5023, 7, 32, 2, 2, 5023, 5024, 7, 609, 2, 2, 5024, + 5120, 5, 510, 256, 2, 5025, 5026, 7, 144, 2, 2, 5026, 5027, 7, 376, 2, + 2, 5027, 5028, 5, 518, 260, 2, 5028, 5029, 9, 74, 2, 2, 5029, 5120, 3, + 2, 2, 2, 5030, 5031, 7, 144, 2, 2, 5031, 5120, 5, 454, 228, 2, 5032, 5033, + 7, 144, 2, 2, 5033, 5034, 9, 75, 2, 2, 5034, 5038, 7, 92, 2, 2, 5035, 5036, + 5, 534, 268, 2, 5036, 5037, 7, 1065, 2, 2, 5037, 5039, 3, 2, 2, 2, 5038, + 5035, 3, 2, 2, 2, 5038, 5039, 3, 2, 2, 2, 5039, 5040, 3, 2, 2, 2, 5040, + 5120, 5, 534, 268, 2, 5041, 5042, 7, 144, 2, 2, 5042, 5043, 7, 273, 2, + 2, 5043, 5044, 7, 1063, 2, 2, 5044, 5045, 7, 1046, 2, 2, 5045, 5046, 7, + 1064, 2, 2, 5046, 5120, 9, 75, 2, 2, 5047, 5048, 7, 144, 2, 2, 5048, 5051, + 5, 456, 229, 2, 5049, 5050, 9, 72, 2, 2, 5050, 5052, 5, 528, 265, 2, 5051, + 5049, 3, 2, 2, 2, 5051, 5052, 3, 2, 2, 2, 5052, 5054, 3, 2, 2, 2, 5053, + 5055, 5, 452, 227, 2, 5054, 5053, 3, 2, 2, 2, 5054, 5055, 3, 2, 2, 2, 5055, + 5120, 3, 2, 2, 2, 5056, 5057, 7, 144, 2, 2, 5057, 5058, 9, 76, 2, 2, 5058, + 5059, 7, 335, 2, 2, 5059, 5120, 5, 502, 252, 2, 5060, 5061, 7, 144, 2, + 2, 5061, 5064, 7, 405, 2, 2, 5062, 5063, 7, 61, 2, 2, 5063, 5065, 5, 510, + 256, 2, 5064, 5062, 3, 2, 2, 2, 5064, 5065, 3, 2, 2, 2, 5065, 5120, 3, + 2, 2, 2, 5066, 5067, 7, 144, 2, 2, 5067, 5068, 9, 77, 2, 2, 5068, 5069, + 9, 72, 2, 2, 5069, 5072, 5, 504, 253, 2, 5070, 5071, 9, 72, 2, 2, 5071, + 5073, 5, 528, 265, 2, 5072, 5070, 3, 2, 2, 2, 5072, 5073, 3, 2, 2, 2, 5073, + 5076, 3, 2, 2, 2, 5074, 5075, 7, 176, 2, 2, 5075, 5077, 5, 606, 304, 2, + 5076, 5074, 3, 2, 2, 2, 5076, 5077, 3, 2, 2, 2, 5077, 5120, 3, 2, 2, 2, + 5078, 5079, 7, 144, 2, 2, 5079, 5080, 7, 494, 2, 2, 5080, 5083, 7, 639, + 2, 2, 5081, 5082, 9, 72, 2, 2, 5082, 5084, 5, 528, 265, 2, 5083, 5081, + 3, 2, 2, 2, 5083, 5084, 3, 2, 2, 2, 5084, 5086, 3, 2, 2, 2, 5085, 5087, + 5, 452, 227, 2, 5086, 5085, 3, 2, 2, 2, 5086, 5087, 3, 2, 2, 2, 5087, 5120, + 3, 2, 2, 2, 5088, 5089, 7, 144, 2, 2, 5089, 5090, 7, 515, 2, 2, 5090, 5095, + 5, 458, 230, 2, 5091, 5092, 7, 1065, 2, 2, 5092, 5094, 5, 458, 230, 2, + 5093, 5091, 3, 2, 2, 2, 5094, 5097, 3, 2, 2, 2, 5095, 5093, 3, 2, 2, 2, + 5095, 5096, 3, 2, 2, 2, 5096, 5101, 3, 2, 2, 2, 5097, 5095, 3, 2, 2, 2, + 5098, 5099, 7, 61, 2, 2, 5099, 5100, 7, 518, 2, 2, 5100, 5102, 5, 534, + 268, 2, 5101, 5098, 3, 2, 2, 2, 5101, 5102, 3, 2, 2, 2, 5102, 5103, 3, + 2, 2, 2, 5103, 5107, 7, 92, 2, 2, 5104, 5105, 5, 534, 268, 2, 5105, 5106, + 7, 1065, 2, 2, 5106, 5108, 3, 2, 2, 2, 5107, 5104, 3, 2, 2, 2, 5107, 5108, + 3, 2, 2, 2, 5108, 5109, 3, 2, 2, 2, 5109, 5110, 5, 534, 268, 2, 5110, 5120, + 3, 2, 2, 2, 5111, 5112, 7, 144, 2, 2, 5112, 5113, 7, 560, 2, 2, 5113, 5117, + 7, 580, 2, 2, 5114, 5115, 7, 61, 2, 2, 5115, 5116, 7, 327, 2, 2, 5116, + 5118, 7, 1078, 2, 2, 5117, 5114, 3, 2, 2, 2, 5117, 5118, 3, 2, 2, 2, 5118, + 5120, 3, 2, 2, 2, 5119, 4968, 3, 2, 2, 2, 5119, 4971, 3, 2, 2, 2, 5119, + 4991, 3, 2, 2, 2, 5119, 4996, 3, 2, 2, 2, 5119, 5010, 3, 2, 2, 2, 5119, + 5017, 3, 2, 2, 2, 5119, 5021, 3, 2, 2, 2, 5119, 5025, 3, 2, 2, 2, 5119, + 5030, 3, 2, 2, 2, 5119, 5032, 3, 2, 2, 2, 5119, 5041, 3, 2, 2, 2, 5119, + 5047, 3, 2, 2, 2, 5119, 5056, 3, 2, 2, 2, 5119, 5060, 3, 2, 2, 2, 5119, + 5066, 3, 2, 2, 2, 5119, 5078, 3, 2, 2, 2, 5119, 5088, 3, 2, 2, 2, 5119, + 5111, 3, 2, 2, 2, 5120, 447, 3, 2, 2, 2, 5121, 5132, 7, 1090, 2, 2, 5122, + 5132, 7, 1091, 2, 2, 5123, 5124, 7, 1067, 2, 2, 5124, 5126, 7, 1067, 2, + 2, 5125, 5123, 3, 2, 2, 2, 5125, 5126, 3, 2, 2, 2, 5126, 5127, 3, 2, 2, + 2, 5127, 5129, 9, 78, 2, 2, 5128, 5125, 3, 2, 2, 2, 5128, 5129, 3, 2, 2, + 2, 5129, 5130, 3, 2, 2, 2, 5130, 5132, 5, 528, 265, 2, 5131, 5121, 3, 2, + 2, 2, 5131, 5122, 3, 2, 2, 2, 5131, 5128, 3, 2, 2, 2, 5132, 449, 3, 2, + 2, 2, 5133, 5134, 7, 24, 2, 2, 5134, 5147, 7, 142, 2, 2, 5135, 5147, 7, + 777, 2, 2, 5136, 5147, 7, 38, 2, 2, 5137, 5147, 7, 140, 2, 2, 5138, 5139, + 7, 402, 2, 2, 5139, 5147, 7, 580, 2, 2, 5140, 5141, 7, 121, 2, 2, 5141, + 5147, 7, 580, 2, 2, 5142, 5144, 9, 51, 2, 2, 5143, 5142, 3, 2, 2, 2, 5143, + 5144, 3, 2, 2, 2, 5144, 5145, 3, 2, 2, 2, 5145, 5147, 9, 79, 2, 2, 5146, + 5133, 3, 2, 2, 2, 5146, 5135, 3, 2, 2, 2, 5146, 5136, 3, 2, 2, 2, 5146, + 5137, 3, 2, 2, 2, 5146, 5138, 3, 2, 2, 2, 5146, 5140, 3, 2, 2, 2, 5146, + 5143, 3, 2, 2, 2, 5147, 451, 3, 2, 2, 2, 5148, 5149, 7, 91, 2, 2, 5149, + 5153, 7, 1078, 2, 2, 5150, 5151, 7, 176, 2, 2, 5151, 5153, 5, 606, 304, + 2, 5152, 5148, 3, 2, 2, 2, 5152, 5150, 3, 2, 2, 2, 5153, 453, 3, 2, 2, + 2, 5154, 5156, 7, 582, 2, 2, 5155, 5154, 3, 2, 2, 2, 5155, 5156, 3, 2, + 2, 2, 5156, 5157, 3, 2, 2, 2, 5157, 5172, 7, 377, 2, 2, 5158, 5159, 7, + 439, 2, 2, 5159, 5172, 7, 580, 2, 2, 5160, 5172, 7, 508, 2, 2, 5161, 5172, + 7, 647, 2, 2, 5162, 5164, 7, 401, 2, 2, 5163, 5162, 3, 2, 2, 2, 5163, 5164, + 3, 2, 2, 2, 5164, 5165, 3, 2, 2, 2, 5165, 5172, 7, 514, 2, 2, 5166, 5172, + 7, 516, 2, 2, 5167, 5168, 7, 560, 2, 2, 5168, 5172, 7, 411, 2, 2, 5169, + 5172, 7, 311, 2, 2, 5170, 5172, 7, 353, 2, 2, 5171, 5155, 3, 2, 2, 2, 5171, + 5158, 3, 2, 2, 2, 5171, 5160, 3, 2, 2, 2, 5171, 5161, 3, 2, 2, 2, 5171, + 5163, 3, 2, 2, 2, 5171, 5166, 3, 2, 2, 2, 5171, 5167, 3, 2, 2, 2, 5171, + 5169, 3, 2, 2, 2, 5171, 5170, 3, 2, 2, 2, 5172, 455, 3, 2, 2, 2, 5173, + 5182, 7, 383, 2, 2, 5174, 5175, 7, 158, 2, 2, 5175, 5182, 7, 580, 2, 2, + 5176, 5178, 7, 401, 2, 2, 5177, 5176, 3, 2, 2, 2, 5177, 5178, 3, 2, 2, + 2, 5178, 5179, 3, 2, 2, 2, 5179, 5182, 7, 639, 2, 2, 5180, 5182, 7, 600, + 2, 2, 5181, 5173, 3, 2, 2, 2, 5181, 5174, 3, 2, 2, 2, 5181, 5177, 3, 2, + 2, 2, 5181, 5180, 3, 2, 2, 2, 5182, 457, 3, 2, 2, 2, 5183, 5196, 7, 8, + 2, 2, 5184, 5185, 7, 319, 2, 2, 5185, 5196, 7, 423, 2, 2, 5186, 5187, 7, + 352, 2, 2, 5187, 5196, 7, 591, 2, 2, 5188, 5196, 7, 355, 2, 2, 5189, 5196, + 7, 425, 2, 2, 5190, 5196, 7, 725, 2, 2, 5191, 5192, 7, 499, 2, 2, 5192, + 5196, 7, 392, 2, 2, 5193, 5196, 7, 567, 2, 2, 5194, 5196, 7, 590, 2, 2, + 5195, 5183, 3, 2, 2, 2, 5195, 5184, 3, 2, 2, 2, 5195, 5186, 3, 2, 2, 2, + 5195, 5188, 3, 2, 2, 2, 5195, 5189, 3, 2, 2, 2, 5195, 5190, 3, 2, 2, 2, + 5195, 5191, 3, 2, 2, 2, 5195, 5193, 3, 2, 2, 2, 5195, 5194, 3, 2, 2, 2, + 5196, 459, 3, 2, 2, 2, 5197, 5198, 7, 317, 2, 2, 5198, 5199, 7, 1078, 2, + 2, 5199, 461, 3, 2, 2, 2, 5200, 5201, 7, 323, 2, 2, 5201, 5202, 7, 75, + 2, 2, 5202, 5207, 5, 474, 238, 2, 5203, 5204, 7, 1065, 2, 2, 5204, 5206, + 5, 474, 238, 2, 5205, 5203, 3, 2, 2, 2, 5206, 5209, 3, 2, 2, 2, 5207, 5205, + 3, 2, 2, 2, 5207, 5208, 3, 2, 2, 2, 5208, 5217, 3, 2, 2, 2, 5209, 5207, + 3, 2, 2, 2, 5210, 5211, 7, 119, 2, 2, 5211, 5214, 7, 1063, 2, 2, 5212, + 5215, 5, 560, 281, 2, 5213, 5215, 7, 8, 2, 2, 5214, 5212, 3, 2, 2, 2, 5214, + 5213, 3, 2, 2, 2, 5215, 5216, 3, 2, 2, 2, 5216, 5218, 7, 1064, 2, 2, 5217, + 5210, 3, 2, 2, 2, 5217, 5218, 3, 2, 2, 2, 5218, 5219, 3, 2, 2, 2, 5219, + 5220, 7, 74, 2, 2, 5220, 5221, 5, 528, 265, 2, 5221, 463, 3, 2, 2, 2, 5222, + 5224, 7, 398, 2, 2, 5223, 5225, 9, 66, 2, 2, 5224, 5223, 3, 2, 2, 2, 5224, + 5225, 3, 2, 2, 2, 5225, 5226, 3, 2, 2, 2, 5226, 5231, 5, 476, 239, 2, 5227, + 5228, 7, 1065, 2, 2, 5228, 5230, 5, 476, 239, 2, 5229, 5227, 3, 2, 2, 2, + 5230, 5233, 3, 2, 2, 2, 5231, 5229, 3, 2, 2, 2, 5231, 5232, 3, 2, 2, 2, + 5232, 465, 3, 2, 2, 2, 5233, 5231, 3, 2, 2, 2, 5234, 5236, 7, 87, 2, 2, + 5235, 5237, 9, 80, 2, 2, 5236, 5235, 3, 2, 2, 2, 5236, 5237, 3, 2, 2, 2, + 5237, 5239, 3, 2, 2, 2, 5238, 5240, 5, 534, 268, 2, 5239, 5238, 3, 2, 2, + 2, 5240, 5241, 3, 2, 2, 2, 5241, 5239, 3, 2, 2, 2, 5241, 5242, 3, 2, 2, + 2, 5242, 467, 3, 2, 2, 2, 5243, 5244, 7, 95, 2, 2, 5244, 5245, 7, 75, 2, + 2, 5245, 5246, 7, 81, 2, 2, 5246, 5247, 7, 323, 2, 2, 5247, 5252, 5, 480, + 241, 2, 5248, 5249, 7, 1065, 2, 2, 5249, 5251, 5, 480, 241, 2, 5250, 5248, + 3, 2, 2, 2, 5251, 5254, 3, 2, 2, 2, 5252, 5250, 3, 2, 2, 2, 5252, 5253, + 3, 2, 2, 2, 5253, 469, 3, 2, 2, 2, 5254, 5252, 3, 2, 2, 2, 5255, 5256, + 7, 539, 2, 2, 5256, 5257, 7, 518, 2, 2, 5257, 5258, 7, 323, 2, 2, 5258, + 471, 3, 2, 2, 2, 5259, 5260, 7, 645, 2, 2, 5260, 473, 3, 2, 2, 2, 5261, + 5269, 5, 504, 253, 2, 5262, 5264, 9, 20, 2, 2, 5263, 5262, 3, 2, 2, 2, + 5263, 5264, 3, 2, 2, 2, 5264, 5265, 3, 2, 2, 2, 5265, 5266, 7, 1063, 2, + 2, 5266, 5267, 5, 560, 281, 2, 5267, 5268, 7, 1064, 2, 2, 5268, 5270, 3, + 2, 2, 2, 5269, 5263, 3, 2, 2, 2, 5269, 5270, 3, 2, 2, 2, 5270, 475, 3, + 2, 2, 2, 5271, 5290, 7, 363, 2, 2, 5272, 5290, 7, 411, 2, 2, 5273, 5275, + 9, 81, 2, 2, 5274, 5273, 3, 2, 2, 2, 5274, 5275, 3, 2, 2, 2, 5275, 5276, + 3, 2, 2, 2, 5276, 5290, 7, 438, 2, 2, 5277, 5290, 7, 495, 2, 2, 5278, 5290, + 7, 647, 2, 2, 5279, 5280, 7, 518, 2, 2, 5280, 5290, 7, 323, 2, 2, 5281, + 5290, 7, 580, 2, 2, 5282, 5290, 7, 611, 2, 2, 5283, 5287, 7, 639, 2, 2, + 5284, 5285, 7, 178, 2, 2, 5285, 5286, 7, 124, 2, 2, 5286, 5288, 7, 96, + 2, 2, 5287, 5284, 3, 2, 2, 2, 5287, 5288, 3, 2, 2, 2, 5288, 5290, 3, 2, + 2, 2, 5289, 5271, 3, 2, 2, 2, 5289, 5272, 3, 2, 2, 2, 5289, 5274, 3, 2, + 2, 2, 5289, 5277, 3, 2, 2, 2, 5289, 5278, 3, 2, 2, 2, 5289, 5279, 3, 2, + 2, 2, 5289, 5281, 3, 2, 2, 2, 5289, 5282, 3, 2, 2, 2, 5289, 5283, 3, 2, + 2, 2, 5290, 5302, 3, 2, 2, 2, 5291, 5292, 7, 524, 2, 2, 5292, 5294, 7, + 438, 2, 2, 5293, 5295, 5, 318, 160, 2, 5294, 5293, 3, 2, 2, 2, 5294, 5295, + 3, 2, 2, 2, 5295, 5302, 3, 2, 2, 2, 5296, 5297, 7, 639, 2, 2, 5297, 5299, + 5, 562, 282, 2, 5298, 5300, 5, 478, 240, 2, 5299, 5298, 3, 2, 2, 2, 5299, + 5300, 3, 2, 2, 2, 5300, 5302, 3, 2, 2, 2, 5301, 5289, 3, 2, 2, 2, 5301, + 5291, 3, 2, 2, 2, 5301, 5296, 3, 2, 2, 2, 5302, 477, 3, 2, 2, 2, 5303, + 5304, 7, 178, 2, 2, 5304, 5305, 7, 124, 2, 2, 5305, 5309, 7, 96, 2, 2, + 5306, 5307, 7, 61, 2, 2, 5307, 5309, 7, 388, 2, 2, 5308, 5303, 3, 2, 2, + 2, 5308, 5306, 3, 2, 2, 2, 5309, 479, 3, 2, 2, 2, 5310, 5318, 5, 504, 253, + 2, 5311, 5312, 7, 119, 2, 2, 5312, 5315, 7, 1063, 2, 2, 5313, 5316, 5, + 560, 281, 2, 5314, 5316, 7, 8, 2, 2, 5315, 5313, 3, 2, 2, 2, 5315, 5314, + 3, 2, 2, 2, 5316, 5317, 3, 2, 2, 2, 5317, 5319, 7, 1064, 2, 2, 5318, 5311, + 3, 2, 2, 2, 5318, 5319, 3, 2, 2, 2, 5319, 5327, 3, 2, 2, 2, 5320, 5322, + 9, 20, 2, 2, 5321, 5320, 3, 2, 2, 2, 5321, 5322, 3, 2, 2, 2, 5322, 5323, + 3, 2, 2, 2, 5323, 5324, 7, 1063, 2, 2, 5324, 5325, 5, 560, 281, 2, 5325, + 5326, 7, 1064, 2, 2, 5326, 5328, 3, 2, 2, 2, 5327, 5321, 3, 2, 2, 2, 5327, + 5328, 3, 2, 2, 2, 5328, 5331, 3, 2, 2, 2, 5329, 5330, 7, 73, 2, 2, 5330, + 5332, 7, 432, 2, 2, 5331, 5329, 3, 2, 2, 2, 5331, 5332, 3, 2, 2, 2, 5332, + 481, 3, 2, 2, 2, 5333, 5334, 9, 82, 2, 2, 5334, 5337, 5, 504, 253, 2, 5335, + 5338, 5, 528, 265, 2, 5336, 5338, 7, 1078, 2, 2, 5337, 5335, 3, 2, 2, 2, + 5337, 5336, 3, 2, 2, 2, 5337, 5338, 3, 2, 2, 2, 5338, 483, 3, 2, 2, 2, + 5339, 5343, 9, 82, 2, 2, 5340, 5341, 9, 83, 2, 2, 5341, 5342, 7, 1054, + 2, 2, 5342, 5344, 9, 84, 2, 2, 5343, 5340, 3, 2, 2, 2, 5343, 5344, 3, 2, + 2, 2, 5344, 5345, 3, 2, 2, 2, 5345, 5346, 5, 500, 251, 2, 5346, 485, 3, + 2, 2, 2, 5347, 5348, 7, 409, 2, 2, 5348, 5349, 7, 1078, 2, 2, 5349, 487, + 3, 2, 2, 2, 5350, 5351, 7, 172, 2, 2, 5351, 5352, 5, 528, 265, 2, 5352, + 489, 3, 2, 2, 2, 5353, 5361, 7, 145, 2, 2, 5354, 5356, 7, 149, 2, 2, 5355, + 5357, 7, 613, 2, 2, 5356, 5355, 3, 2, 2, 2, 5356, 5357, 3, 2, 2, 2, 5357, + 5358, 3, 2, 2, 2, 5358, 5362, 5, 538, 270, 2, 5359, 5362, 7, 1086, 2, 2, + 5360, 5362, 7, 1087, 2, 2, 5361, 5354, 3, 2, 2, 2, 5361, 5359, 3, 2, 2, + 2, 5361, 5360, 3, 2, 2, 2, 5362, 5372, 3, 2, 2, 2, 5363, 5364, 7, 142, + 2, 2, 5364, 5369, 5, 494, 248, 2, 5365, 5366, 7, 1065, 2, 2, 5366, 5368, + 5, 494, 248, 2, 5367, 5365, 3, 2, 2, 2, 5368, 5371, 3, 2, 2, 2, 5369, 5367, + 3, 2, 2, 2, 5369, 5370, 3, 2, 2, 2, 5370, 5373, 3, 2, 2, 2, 5371, 5369, + 3, 2, 2, 2, 5372, 5363, 3, 2, 2, 2, 5372, 5373, 3, 2, 2, 2, 5373, 491, + 3, 2, 2, 2, 5374, 5382, 7, 133, 2, 2, 5375, 5377, 7, 149, 2, 2, 5376, 5378, + 7, 613, 2, 2, 5377, 5376, 3, 2, 2, 2, 5377, 5378, 3, 2, 2, 2, 5378, 5379, + 3, 2, 2, 2, 5379, 5383, 5, 538, 270, 2, 5380, 5383, 7, 1086, 2, 2, 5381, + 5383, 7, 1087, 2, 2, 5382, 5375, 3, 2, 2, 2, 5382, 5380, 3, 2, 2, 2, 5382, + 5381, 3, 2, 2, 2, 5382, 5383, 3, 2, 2, 2, 5383, 5393, 3, 2, 2, 2, 5384, + 5385, 7, 142, 2, 2, 5385, 5390, 5, 494, 248, 2, 5386, 5387, 7, 1065, 2, + 2, 5387, 5389, 5, 494, 248, 2, 5388, 5386, 3, 2, 2, 2, 5389, 5392, 3, 2, + 2, 2, 5390, 5388, 3, 2, 2, 2, 5390, 5391, 3, 2, 2, 2, 5391, 5394, 3, 2, + 2, 2, 5392, 5390, 3, 2, 2, 2, 5393, 5384, 3, 2, 2, 2, 5393, 5394, 3, 2, + 2, 2, 5394, 493, 3, 2, 2, 2, 5395, 5396, 9, 85, 2, 2, 5396, 5401, 7, 1054, + 2, 2, 5397, 5402, 5, 538, 270, 2, 5398, 5402, 7, 1079, 2, 2, 5399, 5402, + 5, 512, 257, 2, 5400, 5402, 5, 530, 266, 2, 5401, 5397, 3, 2, 2, 2, 5401, + 5398, 3, 2, 2, 2, 5401, 5399, 3, 2, 2, 2, 5401, 5400, 3, 2, 2, 2, 5402, + 495, 3, 2, 2, 2, 5403, 5405, 7, 67, 2, 2, 5404, 5406, 9, 86, 2, 2, 5405, + 5404, 3, 2, 2, 2, 5405, 5406, 3, 2, 2, 2, 5406, 5407, 3, 2, 2, 2, 5407, + 5439, 7, 46, 2, 2, 5408, 5409, 5, 448, 225, 2, 5409, 5410, 7, 1054, 2, + 2, 5410, 5418, 9, 87, 2, 2, 5411, 5412, 7, 1065, 2, 2, 5412, 5413, 5, 448, + 225, 2, 5413, 5414, 7, 1054, 2, 2, 5414, 5415, 9, 87, 2, 2, 5415, 5417, + 3, 2, 2, 2, 5416, 5411, 3, 2, 2, 2, 5417, 5420, 3, 2, 2, 2, 5418, 5416, + 3, 2, 2, 2, 5418, 5419, 3, 2, 2, 2, 5419, 5440, 3, 2, 2, 2, 5420, 5418, + 3, 2, 2, 2, 5421, 5424, 7, 28, 2, 2, 5422, 5425, 5, 534, 268, 2, 5423, + 5425, 5, 448, 225, 2, 5424, 5422, 3, 2, 2, 2, 5424, 5423, 3, 2, 2, 2, 5425, + 5426, 3, 2, 2, 2, 5426, 5427, 5, 448, 225, 2, 5427, 5428, 7, 1054, 2, 2, + 5428, 5436, 5, 498, 250, 2, 5429, 5430, 7, 1065, 2, 2, 5430, 5431, 5, 448, + 225, 2, 5431, 5432, 7, 1054, 2, 2, 5432, 5433, 5, 498, 250, 2, 5433, 5435, + 3, 2, 2, 2, 5434, 5429, 3, 2, 2, 2, 5435, 5438, 3, 2, 2, 2, 5436, 5434, + 3, 2, 2, 2, 5436, 5437, 3, 2, 2, 2, 5437, 5440, 3, 2, 2, 2, 5438, 5436, + 3, 2, 2, 2, 5439, 5408, 3, 2, 2, 2, 5439, 5421, 3, 2, 2, 2, 5440, 497, + 3, 2, 2, 2, 5441, 5442, 9, 88, 2, 2, 5442, 499, 3, 2, 2, 2, 5443, 5449, + 5, 180, 91, 2, 5444, 5449, 5, 166, 84, 2, 5445, 5449, 5, 172, 87, 2, 5446, + 5449, 5, 178, 90, 2, 5447, 5449, 5, 182, 92, 2, 5448, 5443, 3, 2, 2, 2, + 5448, 5444, 3, 2, 2, 2, 5448, 5445, 3, 2, 2, 2, 5448, 5446, 3, 2, 2, 2, + 5448, 5447, 3, 2, 2, 2, 5449, 5454, 3, 2, 2, 2, 5450, 5451, 7, 61, 2, 2, + 5451, 5452, 7, 346, 2, 2, 5452, 5454, 5, 528, 265, 2, 5453, 5448, 3, 2, + 2, 2, 5453, 5450, 3, 2, 2, 2, 5454, 501, 3, 2, 2, 2, 5455, 5459, 5, 528, + 265, 2, 5456, 5460, 7, 1085, 2, 2, 5457, 5458, 7, 1062, 2, 2, 5458, 5460, + 5, 528, 265, 2, 5459, 5456, 3, 2, 2, 2, 5459, 5457, 3, 2, 2, 2, 5459, 5460, + 3, 2, 2, 2, 5460, 503, 3, 2, 2, 2, 5461, 5462, 5, 502, 252, 2, 5462, 505, + 3, 2, 2, 2, 5463, 5468, 5, 528, 265, 2, 5464, 5466, 5, 532, 267, 2, 5465, + 5467, 5, 532, 267, 2, 5466, 5465, 3, 2, 2, 2, 5466, 5467, 3, 2, 2, 2, 5467, + 5469, 3, 2, 2, 2, 5468, 5464, 3, 2, 2, 2, 5468, 5469, 3, 2, 2, 2, 5469, + 5476, 3, 2, 2, 2, 5470, 5471, 11, 2, 2, 2, 5471, 5473, 5, 532, 267, 2, + 5472, 5474, 5, 532, 267, 2, 5473, 5472, 3, 2, 2, 2, 5473, 5474, 3, 2, 2, + 2, 5474, 5476, 3, 2, 2, 2, 5475, 5463, 3, 2, 2, 2, 5475, 5470, 3, 2, 2, + 2, 5476, 507, 3, 2, 2, 2, 5477, 5480, 5, 528, 265, 2, 5478, 5480, 7, 1078, + 2, 2, 5479, 5477, 3, 2, 2, 2, 5479, 5478, 3, 2, 2, 2, 5480, 5485, 3, 2, + 2, 2, 5481, 5482, 7, 1063, 2, 2, 5482, 5483, 5, 534, 268, 2, 5483, 5484, + 7, 1064, 2, 2, 5484, 5486, 3, 2, 2, 2, 5485, 5481, 3, 2, 2, 2, 5485, 5486, + 3, 2, 2, 2, 5486, 5488, 3, 2, 2, 2, 5487, 5489, 9, 45, 2, 2, 5488, 5487, + 3, 2, 2, 2, 5488, 5489, 3, 2, 2, 2, 5489, 509, 3, 2, 2, 2, 5490, 5491, + 9, 89, 2, 2, 5491, 511, 3, 2, 2, 2, 5492, 5493, 9, 90, 2, 2, 5493, 513, + 3, 2, 2, 2, 5494, 5499, 7, 212, 2, 2, 5495, 5499, 5, 624, 313, 2, 5496, + 5499, 7, 1078, 2, 2, 5497, 5499, 7, 1075, 2, 2, 5498, 5494, 3, 2, 2, 2, + 5498, 5495, 3, 2, 2, 2, 5498, 5496, 3, 2, 2, 2, 5498, 5497, 3, 2, 2, 2, + 5499, 515, 3, 2, 2, 2, 5500, 5503, 5, 528, 265, 2, 5501, 5503, 7, 1078, + 2, 2, 5502, 5500, 3, 2, 2, 2, 5502, 5501, 3, 2, 2, 2, 5503, 517, 3, 2, + 2, 2, 5504, 5505, 9, 91, 2, 2, 5505, 519, 3, 2, 2, 2, 5506, 5507, 5, 534, + 268, 2, 5507, 5508, 7, 1051, 2, 2, 5508, 5509, 5, 534, 268, 2, 5509, 5510, + 7, 1051, 2, 2, 5510, 5511, 5, 534, 268, 2, 5511, 5512, 7, 1051, 2, 2, 5512, + 5513, 5, 534, 268, 2, 5513, 5514, 7, 1051, 2, 2, 5514, 5520, 5, 534, 268, + 2, 5515, 5516, 7, 1074, 2, 2, 5516, 5517, 5, 534, 268, 2, 5517, 5518, 7, + 1051, 2, 2, 5518, 5519, 5, 534, 268, 2, 5519, 5521, 3, 2, 2, 2, 5520, 5515, + 3, 2, 2, 2, 5521, 5522, 3, 2, 2, 2, 5522, 5520, 3, 2, 2, 2, 5522, 5523, + 3, 2, 2, 2, 5523, 521, 3, 2, 2, 2, 5524, 5531, 5, 524, 263, 2, 5525, 5526, + 7, 1065, 2, 2, 5526, 5529, 5, 524, 263, 2, 5527, 5528, 7, 1065, 2, 2, 5528, + 5530, 5, 534, 268, 2, 5529, 5527, 3, 2, 2, 2, 5529, 5530, 3, 2, 2, 2, 5530, + 5532, 3, 2, 2, 2, 5531, 5525, 3, 2, 2, 2, 5531, 5532, 3, 2, 2, 2, 5532, + 523, 3, 2, 2, 2, 5533, 5541, 7, 1078, 2, 2, 5534, 5541, 7, 1083, 2, 2, + 5535, 5537, 7, 1080, 2, 2, 5536, 5535, 3, 2, 2, 2, 5537, 5538, 3, 2, 2, + 2, 5538, 5536, 3, 2, 2, 2, 5538, 5539, 3, 2, 2, 2, 5539, 5541, 3, 2, 2, + 2, 5540, 5533, 3, 2, 2, 2, 5540, 5534, 3, 2, 2, 2, 5540, 5536, 3, 2, 2, + 2, 5541, 525, 3, 2, 2, 2, 5542, 5545, 5, 528, 265, 2, 5543, 5545, 7, 1078, + 2, 2, 5544, 5542, 3, 2, 2, 2, 5544, 5543, 3, 2, 2, 2, 5545, 527, 3, 2, + 2, 2, 5546, 5550, 5, 530, 266, 2, 5547, 5550, 7, 1087, 2, 2, 5548, 5550, + 7, 1075, 2, 2, 5549, 5546, 3, 2, 2, 2, 5549, 5547, 3, 2, 2, 2, 5549, 5548, + 3, 2, 2, 2, 5550, 529, 3, 2, 2, 2, 5551, 5561, 7, 1086, 2, 2, 5552, 5561, + 5, 624, 313, 2, 5553, 5561, 5, 626, 314, 2, 5554, 5561, 5, 518, 260, 2, + 5555, 5561, 5, 628, 315, 2, 5556, 5561, 5, 630, 316, 2, 5557, 5561, 5, + 632, 317, 2, 5558, 5561, 5, 634, 318, 2, 5559, 5561, 5, 636, 319, 2, 5560, + 5551, 3, 2, 2, 2, 5560, 5552, 3, 2, 2, 2, 5560, 5553, 3, 2, 2, 2, 5560, + 5554, 3, 2, 2, 2, 5560, 5555, 3, 2, 2, 2, 5560, 5556, 3, 2, 2, 2, 5560, + 5557, 3, 2, 2, 2, 5560, 5558, 3, 2, 2, 2, 5560, 5559, 3, 2, 2, 2, 5561, + 531, 3, 2, 2, 2, 5562, 5566, 7, 1085, 2, 2, 5563, 5564, 7, 1062, 2, 2, + 5564, 5566, 5, 528, 265, 2, 5565, 5562, 3, 2, 2, 2, 5565, 5563, 3, 2, 2, + 2, 5566, 533, 3, 2, 2, 2, 5567, 5568, 9, 92, 2, 2, 5568, 535, 3, 2, 2, + 2, 5569, 5572, 7, 1076, 2, 2, 5570, 5572, 5, 534, 268, 2, 5571, 5569, 3, + 2, 2, 2, 5571, 5570, 3, 2, 2, 2, 5572, 537, 3, 2, 2, 2, 5573, 5575, 7, + 1084, 2, 2, 5574, 5573, 3, 2, 2, 2, 5574, 5575, 3, 2, 2, 2, 5575, 5576, + 3, 2, 2, 2, 5576, 5579, 7, 1078, 2, 2, 5577, 5579, 7, 1077, 2, 2, 5578, + 5574, 3, 2, 2, 2, 5578, 5577, 3, 2, 2, 2, 5579, 5581, 3, 2, 2, 2, 5580, + 5582, 7, 1078, 2, 2, 5581, 5580, 3, 2, 2, 2, 5582, 5583, 3, 2, 2, 2, 5583, + 5581, 3, 2, 2, 2, 5583, 5584, 3, 2, 2, 2, 5584, 5597, 3, 2, 2, 2, 5585, + 5587, 7, 1084, 2, 2, 5586, 5585, 3, 2, 2, 2, 5586, 5587, 3, 2, 2, 2, 5587, + 5588, 3, 2, 2, 2, 5588, 5591, 7, 1078, 2, 2, 5589, 5591, 7, 1077, 2, 2, + 5590, 5586, 3, 2, 2, 2, 5590, 5589, 3, 2, 2, 2, 5591, 5594, 3, 2, 2, 2, + 5592, 5593, 7, 26, 2, 2, 5593, 5595, 5, 516, 259, 2, 5594, 5592, 3, 2, + 2, 2, 5594, 5595, 3, 2, 2, 2, 5595, 5597, 3, 2, 2, 2, 5596, 5578, 3, 2, + 2, 2, 5596, 5590, 3, 2, 2, 2, 5597, 539, 3, 2, 2, 2, 5598, 5599, 9, 93, + 2, 2, 5599, 541, 3, 2, 2, 2, 5600, 5602, 7, 1084, 2, 2, 5601, 5600, 3, + 2, 2, 2, 5601, 5602, 3, 2, 2, 2, 5602, 5603, 3, 2, 2, 2, 5603, 5604, 7, + 1080, 2, 2, 5604, 543, 3, 2, 2, 2, 5605, 5607, 7, 105, 2, 2, 5606, 5605, + 3, 2, 2, 2, 5606, 5607, 3, 2, 2, 2, 5607, 5608, 3, 2, 2, 2, 5608, 5609, + 9, 94, 2, 2, 5609, 545, 3, 2, 2, 2, 5610, 5623, 5, 538, 270, 2, 5611, 5623, + 5, 534, 268, 2, 5612, 5613, 7, 1051, 2, 2, 5613, 5623, 5, 534, 268, 2, + 5614, 5623, 5, 542, 272, 2, 5615, 5623, 5, 540, 271, 2, 5616, 5623, 7, + 1081, 2, 2, 5617, 5623, 7, 1083, 2, 2, 5618, 5620, 7, 105, 2, 2, 5619, + 5618, 3, 2, 2, 2, 5619, 5620, 3, 2, 2, 2, 5620, 5621, 3, 2, 2, 2, 5621, + 5623, 9, 94, 2, 2, 5622, 5610, 3, 2, 2, 2, 5622, 5611, 3, 2, 2, 2, 5622, + 5612, 3, 2, 2, 2, 5622, 5614, 3, 2, 2, 2, 5622, 5615, 3, 2, 2, 2, 5622, + 5616, 3, 2, 2, 2, 5622, 5617, 3, 2, 2, 2, 5622, 5619, 3, 2, 2, 2, 5623, + 547, 3, 2, 2, 2, 5624, 5626, 9, 95, 2, 2, 5625, 5627, 7, 224, 2, 2, 5626, + 5625, 3, 2, 2, 2, 5626, 5627, 3, 2, 2, 2, 5627, 5629, 3, 2, 2, 2, 5628, + 5630, 5, 554, 278, 2, 5629, 5628, 3, 2, 2, 2, 5629, 5630, 3, 2, 2, 2, 5630, + 5632, 3, 2, 2, 2, 5631, 5633, 7, 212, 2, 2, 5632, 5631, 3, 2, 2, 2, 5632, + 5633, 3, 2, 2, 2, 5633, 5640, 3, 2, 2, 2, 5634, 5635, 7, 24, 2, 2, 5635, + 5638, 7, 142, 2, 2, 5636, 5638, 7, 774, 2, 2, 5637, 5634, 3, 2, 2, 2, 5637, + 5636, 3, 2, 2, 2, 5638, 5639, 3, 2, 2, 2, 5639, 5641, 5, 514, 258, 2, 5640, + 5637, 3, 2, 2, 2, 5640, 5641, 3, 2, 2, 2, 5641, 5645, 3, 2, 2, 2, 5642, + 5643, 7, 26, 2, 2, 5643, 5646, 5, 516, 259, 2, 5644, 5646, 7, 212, 2, 2, + 5645, 5642, 3, 2, 2, 2, 5645, 5644, 3, 2, 2, 2, 5645, 5646, 3, 2, 2, 2, + 5646, 5756, 3, 2, 2, 2, 5647, 5648, 7, 211, 2, 2, 5648, 5650, 9, 96, 2, + 2, 5649, 5651, 5, 554, 278, 2, 5650, 5649, 3, 2, 2, 2, 5650, 5651, 3, 2, + 2, 2, 5651, 5653, 3, 2, 2, 2, 5652, 5654, 7, 212, 2, 2, 5653, 5652, 3, + 2, 2, 2, 5653, 5654, 3, 2, 2, 2, 5654, 5756, 3, 2, 2, 2, 5655, 5656, 7, + 480, 2, 2, 5656, 5658, 7, 209, 2, 2, 5657, 5659, 5, 554, 278, 2, 5658, + 5657, 3, 2, 2, 2, 5658, 5659, 3, 2, 2, 2, 5659, 5661, 3, 2, 2, 2, 5660, + 5662, 7, 212, 2, 2, 5661, 5660, 3, 2, 2, 2, 5661, 5662, 3, 2, 2, 2, 5662, + 5756, 3, 2, 2, 2, 5663, 5664, 7, 211, 2, 2, 5664, 5665, 9, 97, 2, 2, 5665, + 5667, 7, 224, 2, 2, 5666, 5668, 5, 554, 278, 2, 5667, 5666, 3, 2, 2, 2, + 5667, 5668, 3, 2, 2, 2, 5668, 5670, 3, 2, 2, 2, 5669, 5671, 7, 212, 2, + 2, 5670, 5669, 3, 2, 2, 2, 5670, 5671, 3, 2, 2, 2, 5671, 5756, 3, 2, 2, + 2, 5672, 5674, 9, 98, 2, 2, 5673, 5675, 5, 554, 278, 2, 5674, 5673, 3, + 2, 2, 2, 5674, 5675, 3, 2, 2, 2, 5675, 5677, 3, 2, 2, 2, 5676, 5678, 9, + 99, 2, 2, 5677, 5676, 3, 2, 2, 2, 5677, 5678, 3, 2, 2, 2, 5678, 5680, 3, + 2, 2, 2, 5679, 5681, 7, 181, 2, 2, 5680, 5679, 3, 2, 2, 2, 5680, 5681, + 3, 2, 2, 2, 5681, 5756, 3, 2, 2, 2, 5682, 5684, 7, 194, 2, 2, 5683, 5685, + 5, 556, 279, 2, 5684, 5683, 3, 2, 2, 2, 5684, 5685, 3, 2, 2, 2, 5685, 5687, + 3, 2, 2, 2, 5686, 5688, 9, 99, 2, 2, 5687, 5686, 3, 2, 2, 2, 5687, 5688, + 3, 2, 2, 2, 5688, 5690, 3, 2, 2, 2, 5689, 5691, 7, 181, 2, 2, 5690, 5689, + 3, 2, 2, 2, 5690, 5691, 3, 2, 2, 2, 5691, 5756, 3, 2, 2, 2, 5692, 5694, + 7, 195, 2, 2, 5693, 5695, 7, 196, 2, 2, 5694, 5693, 3, 2, 2, 2, 5694, 5695, + 3, 2, 2, 2, 5695, 5697, 3, 2, 2, 2, 5696, 5698, 5, 556, 279, 2, 5697, 5696, + 3, 2, 2, 2, 5697, 5698, 3, 2, 2, 2, 5698, 5700, 3, 2, 2, 2, 5699, 5701, + 9, 99, 2, 2, 5700, 5699, 3, 2, 2, 2, 5700, 5701, 3, 2, 2, 2, 5701, 5703, + 3, 2, 2, 2, 5702, 5704, 7, 181, 2, 2, 5703, 5702, 3, 2, 2, 2, 5703, 5704, + 3, 2, 2, 2, 5704, 5756, 3, 2, 2, 2, 5705, 5707, 9, 100, 2, 2, 5706, 5708, + 5, 558, 280, 2, 5707, 5706, 3, 2, 2, 2, 5707, 5708, 3, 2, 2, 2, 5708, 5710, + 3, 2, 2, 2, 5709, 5711, 9, 99, 2, 2, 5710, 5709, 3, 2, 2, 2, 5710, 5711, + 3, 2, 2, 2, 5711, 5713, 3, 2, 2, 2, 5712, 5714, 7, 181, 2, 2, 5713, 5712, + 3, 2, 2, 2, 5713, 5714, 3, 2, 2, 2, 5714, 5756, 3, 2, 2, 2, 5715, 5756, + 9, 101, 2, 2, 5716, 5718, 9, 102, 2, 2, 5717, 5719, 5, 554, 278, 2, 5718, + 5717, 3, 2, 2, 2, 5718, 5719, 3, 2, 2, 2, 5719, 5756, 3, 2, 2, 2, 5720, + 5721, 9, 103, 2, 2, 5721, 5723, 5, 550, 276, 2, 5722, 5724, 7, 212, 2, + 2, 5723, 5722, 3, 2, 2, 2, 5723, 5724, 3, 2, 2, 2, 5724, 5731, 3, 2, 2, + 2, 5725, 5726, 7, 24, 2, 2, 5726, 5729, 7, 142, 2, 2, 5727, 5729, 7, 774, + 2, 2, 5728, 5725, 3, 2, 2, 2, 5728, 5727, 3, 2, 2, 2, 5729, 5730, 3, 2, + 2, 2, 5730, 5732, 5, 514, 258, 2, 5731, 5728, 3, 2, 2, 2, 5731, 5732, 3, + 2, 2, 2, 5732, 5756, 3, 2, 2, 2, 5733, 5756, 9, 104, 2, 2, 5734, 5736, + 7, 217, 2, 2, 5735, 5737, 7, 209, 2, 2, 5736, 5735, 3, 2, 2, 2, 5736, 5737, + 3, 2, 2, 2, 5737, 5739, 3, 2, 2, 2, 5738, 5740, 7, 212, 2, 2, 5739, 5738, + 3, 2, 2, 2, 5739, 5740, 3, 2, 2, 2, 5740, 5747, 3, 2, 2, 2, 5741, 5742, + 7, 24, 2, 2, 5742, 5745, 7, 142, 2, 2, 5743, 5745, 7, 774, 2, 2, 5744, + 5741, 3, 2, 2, 2, 5744, 5743, 3, 2, 2, 2, 5745, 5746, 3, 2, 2, 2, 5746, + 5748, 5, 514, 258, 2, 5747, 5744, 3, 2, 2, 2, 5747, 5748, 3, 2, 2, 2, 5748, + 5751, 3, 2, 2, 2, 5749, 5750, 7, 26, 2, 2, 5750, 5752, 5, 516, 259, 2, + 5751, 5749, 3, 2, 2, 2, 5751, 5752, 3, 2, 2, 2, 5752, 5756, 3, 2, 2, 2, + 5753, 5754, 7, 217, 2, 2, 5754, 5756, 7, 213, 2, 2, 5755, 5624, 3, 2, 2, + 2, 5755, 5647, 3, 2, 2, 2, 5755, 5655, 3, 2, 2, 2, 5755, 5663, 3, 2, 2, + 2, 5755, 5672, 3, 2, 2, 2, 5755, 5682, 3, 2, 2, 2, 5755, 5692, 3, 2, 2, + 2, 5755, 5705, 3, 2, 2, 2, 5755, 5715, 3, 2, 2, 2, 5755, 5716, 3, 2, 2, + 2, 5755, 5720, 3, 2, 2, 2, 5755, 5733, 3, 2, 2, 2, 5755, 5734, 3, 2, 2, + 2, 5755, 5753, 3, 2, 2, 2, 5756, 549, 3, 2, 2, 2, 5757, 5758, 7, 1063, + 2, 2, 5758, 5763, 7, 1078, 2, 2, 5759, 5760, 7, 1065, 2, 2, 5760, 5762, + 7, 1078, 2, 2, 5761, 5759, 3, 2, 2, 2, 5762, 5765, 3, 2, 2, 2, 5763, 5761, + 3, 2, 2, 2, 5763, 5764, 3, 2, 2, 2, 5764, 5766, 3, 2, 2, 2, 5765, 5763, + 3, 2, 2, 2, 5766, 5767, 7, 1064, 2, 2, 5767, 551, 3, 2, 2, 2, 5768, 5770, + 9, 105, 2, 2, 5769, 5771, 5, 554, 278, 2, 5770, 5769, 3, 2, 2, 2, 5770, + 5771, 3, 2, 2, 2, 5771, 5794, 3, 2, 2, 2, 5772, 5774, 7, 208, 2, 2, 5773, + 5775, 5, 554, 278, 2, 5774, 5773, 3, 2, 2, 2, 5774, 5775, 3, 2, 2, 2, 5775, + 5782, 3, 2, 2, 2, 5776, 5777, 7, 24, 2, 2, 5777, 5780, 7, 142, 2, 2, 5778, + 5780, 7, 774, 2, 2, 5779, 5776, 3, 2, 2, 2, 5779, 5778, 3, 2, 2, 2, 5780, + 5781, 3, 2, 2, 2, 5781, 5783, 5, 514, 258, 2, 5782, 5779, 3, 2, 2, 2, 5782, + 5783, 3, 2, 2, 2, 5783, 5794, 3, 2, 2, 2, 5784, 5794, 9, 106, 2, 2, 5785, + 5787, 7, 200, 2, 2, 5786, 5788, 5, 556, 279, 2, 5787, 5786, 3, 2, 2, 2, + 5787, 5788, 3, 2, 2, 2, 5788, 5794, 3, 2, 2, 2, 5789, 5791, 9, 99, 2, 2, + 5790, 5792, 7, 192, 2, 2, 5791, 5790, 3, 2, 2, 2, 5791, 5792, 3, 2, 2, + 2, 5792, 5794, 3, 2, 2, 2, 5793, 5768, 3, 2, 2, 2, 5793, 5772, 3, 2, 2, + 2, 5793, 5784, 3, 2, 2, 2, 5793, 5785, 3, 2, 2, 2, 5793, 5789, 3, 2, 2, + 2, 5794, 553, 3, 2, 2, 2, 5795, 5796, 7, 1063, 2, 2, 5796, 5797, 5, 534, + 268, 2, 5797, 5798, 7, 1064, 2, 2, 5798, 555, 3, 2, 2, 2, 5799, 5800, 7, + 1063, 2, 2, 5800, 5801, 5, 534, 268, 2, 5801, 5802, 7, 1065, 2, 2, 5802, + 5803, 5, 534, 268, 2, 5803, 5804, 7, 1064, 2, 2, 5804, 557, 3, 2, 2, 2, + 5805, 5806, 7, 1063, 2, 2, 5806, 5809, 5, 534, 268, 2, 5807, 5808, 7, 1065, + 2, 2, 5808, 5810, 5, 534, 268, 2, 5809, 5807, 3, 2, 2, 2, 5809, 5810, 3, + 2, 2, 2, 5810, 5811, 3, 2, 2, 2, 5811, 5812, 7, 1064, 2, 2, 5812, 559, + 3, 2, 2, 2, 5813, 5818, 5, 528, 265, 2, 5814, 5815, 7, 1065, 2, 2, 5815, + 5817, 5, 528, 265, 2, 5816, 5814, 3, 2, 2, 2, 5817, 5820, 3, 2, 2, 2, 5818, + 5816, 3, 2, 2, 2, 5818, 5819, 3, 2, 2, 2, 5819, 561, 3, 2, 2, 2, 5820, + 5818, 3, 2, 2, 2, 5821, 5826, 5, 504, 253, 2, 5822, 5823, 7, 1065, 2, 2, + 5823, 5825, 5, 504, 253, 2, 5824, 5822, 3, 2, 2, 2, 5825, 5828, 3, 2, 2, + 2, 5826, 5824, 3, 2, 2, 2, 5826, 5827, 3, 2, 2, 2, 5827, 563, 3, 2, 2, + 2, 5828, 5826, 3, 2, 2, 2, 5829, 5830, 7, 1063, 2, 2, 5830, 5835, 5, 508, + 255, 2, 5831, 5832, 7, 1065, 2, 2, 5832, 5834, 5, 508, 255, 2, 5833, 5831, + 3, 2, 2, 2, 5834, 5837, 3, 2, 2, 2, 5835, 5833, 3, 2, 2, 2, 5835, 5836, + 3, 2, 2, 2, 5836, 5838, 3, 2, 2, 2, 5837, 5835, 3, 2, 2, 2, 5838, 5839, + 7, 1064, 2, 2, 5839, 565, 3, 2, 2, 2, 5840, 5845, 5, 606, 304, 2, 5841, + 5842, 7, 1065, 2, 2, 5842, 5844, 5, 606, 304, 2, 5843, 5841, 3, 2, 2, 2, + 5844, 5847, 3, 2, 2, 2, 5845, 5843, 3, 2, 2, 2, 5845, 5846, 3, 2, 2, 2, + 5846, 567, 3, 2, 2, 2, 5847, 5845, 3, 2, 2, 2, 5848, 5853, 5, 580, 291, + 2, 5849, 5850, 7, 1065, 2, 2, 5850, 5852, 5, 580, 291, 2, 5851, 5849, 3, + 2, 2, 2, 5852, 5855, 3, 2, 2, 2, 5853, 5851, 3, 2, 2, 2, 5853, 5854, 3, + 2, 2, 2, 5854, 569, 3, 2, 2, 2, 5855, 5853, 3, 2, 2, 2, 5856, 5861, 5, + 546, 274, 2, 5857, 5858, 7, 1065, 2, 2, 5858, 5860, 5, 546, 274, 2, 5859, + 5857, 3, 2, 2, 2, 5860, 5863, 3, 2, 2, 2, 5861, 5859, 3, 2, 2, 2, 5861, + 5862, 3, 2, 2, 2, 5862, 571, 3, 2, 2, 2, 5863, 5861, 3, 2, 2, 2, 5864, + 5869, 7, 1078, 2, 2, 5865, 5866, 7, 1065, 2, 2, 5866, 5868, 7, 1078, 2, + 2, 5867, 5865, 3, 2, 2, 2, 5868, 5871, 3, 2, 2, 2, 5869, 5867, 3, 2, 2, + 2, 5869, 5870, 3, 2, 2, 2, 5870, 573, 3, 2, 2, 2, 5871, 5869, 3, 2, 2, + 2, 5872, 5877, 7, 1090, 2, 2, 5873, 5874, 7, 1065, 2, 2, 5874, 5876, 7, + 1090, 2, 2, 5875, 5873, 3, 2, 2, 2, 5876, 5879, 3, 2, 2, 2, 5877, 5875, + 3, 2, 2, 2, 5877, 5878, 3, 2, 2, 2, 5878, 575, 3, 2, 2, 2, 5879, 5877, + 3, 2, 2, 2, 5880, 5891, 7, 107, 2, 2, 5881, 5883, 5, 612, 307, 2, 5882, + 5881, 3, 2, 2, 2, 5882, 5883, 3, 2, 2, 2, 5883, 5884, 3, 2, 2, 2, 5884, + 5891, 5, 546, 274, 2, 5885, 5891, 5, 578, 290, 2, 5886, 5887, 7, 1063, + 2, 2, 5887, 5888, 5, 606, 304, 2, 5888, 5889, 7, 1064, 2, 2, 5889, 5891, + 3, 2, 2, 2, 5890, 5880, 3, 2, 2, 2, 5890, 5882, 3, 2, 2, 2, 5890, 5885, + 3, 2, 2, 2, 5890, 5886, 3, 2, 2, 2, 5891, 5895, 3, 2, 2, 2, 5892, 5893, + 7, 110, 2, 2, 5893, 5894, 7, 170, 2, 2, 5894, 5896, 5, 578, 290, 2, 5895, + 5892, 3, 2, 2, 2, 5895, 5896, 3, 2, 2, 2, 5896, 577, 3, 2, 2, 2, 5897, + 5903, 9, 107, 2, 2, 5898, 5900, 7, 1063, 2, 2, 5899, 5901, 5, 534, 268, + 2, 5900, 5899, 3, 2, 2, 2, 5900, 5901, 3, 2, 2, 2, 5901, 5902, 3, 2, 2, + 2, 5902, 5904, 7, 1064, 2, 2, 5903, 5898, 3, 2, 2, 2, 5903, 5904, 3, 2, + 2, 2, 5904, 5912, 3, 2, 2, 2, 5905, 5906, 7, 295, 2, 2, 5906, 5908, 7, + 1063, 2, 2, 5907, 5909, 5, 534, 268, 2, 5908, 5907, 3, 2, 2, 2, 5908, 5909, + 3, 2, 2, 2, 5909, 5910, 3, 2, 2, 2, 5910, 5912, 7, 1064, 2, 2, 5911, 5897, + 3, 2, 2, 2, 5911, 5905, 3, 2, 2, 2, 5912, 579, 3, 2, 2, 2, 5913, 5916, + 5, 606, 304, 2, 5914, 5916, 7, 40, 2, 2, 5915, 5913, 3, 2, 2, 2, 5915, + 5914, 3, 2, 2, 2, 5916, 581, 3, 2, 2, 2, 5917, 5918, 7, 72, 2, 2, 5918, + 5919, 7, 56, 2, 2, 5919, 583, 3, 2, 2, 2, 5920, 5921, 7, 72, 2, 2, 5921, + 5922, 7, 105, 2, 2, 5922, 5923, 7, 56, 2, 2, 5923, 585, 3, 2, 2, 2, 5924, + 5942, 5, 588, 295, 2, 5925, 5942, 5, 596, 299, 2, 5926, 5927, 5, 598, 300, + 2, 5927, 5929, 7, 1063, 2, 2, 5928, 5930, 5, 602, 302, 2, 5929, 5928, 3, + 2, 2, 2, 5929, 5930, 3, 2, 2, 2, 5930, 5931, 3, 2, 2, 2, 5931, 5932, 7, + 1064, 2, 2, 5932, 5942, 3, 2, 2, 2, 5933, 5934, 5, 502, 252, 2, 5934, 5936, + 7, 1063, 2, 2, 5935, 5937, 5, 602, 302, 2, 5936, 5935, 3, 2, 2, 2, 5936, + 5937, 3, 2, 2, 2, 5937, 5938, 3, 2, 2, 2, 5938, 5939, 7, 1064, 2, 2, 5939, + 5942, 3, 2, 2, 2, 5940, 5942, 5, 600, 301, 2, 5941, 5924, 3, 2, 2, 2, 5941, + 5925, 3, 2, 2, 2, 5941, 5926, 3, 2, 2, 2, 5941, 5933, 3, 2, 2, 2, 5941, + 5940, 3, 2, 2, 2, 5942, 587, 3, 2, 2, 2, 5943, 5946, 9, 108, 2, 2, 5944, + 5945, 7, 1063, 2, 2, 5945, 5947, 7, 1064, 2, 2, 5946, 5944, 3, 2, 2, 2, + 5946, 5947, 3, 2, 2, 2, 5947, 6136, 3, 2, 2, 2, 5948, 5949, 7, 31, 2, 2, + 5949, 5950, 7, 1063, 2, 2, 5950, 5951, 5, 606, 304, 2, 5951, 5952, 7, 1065, + 2, 2, 5952, 5953, 5, 552, 277, 2, 5953, 5954, 7, 1064, 2, 2, 5954, 6136, + 3, 2, 2, 2, 5955, 5956, 7, 31, 2, 2, 5956, 5957, 7, 1063, 2, 2, 5957, 5958, + 5, 606, 304, 2, 5958, 5959, 7, 173, 2, 2, 5959, 5960, 5, 514, 258, 2, 5960, + 5961, 7, 1064, 2, 2, 5961, 6136, 3, 2, 2, 2, 5962, 5963, 7, 22, 2, 2, 5963, + 5964, 7, 1063, 2, 2, 5964, 5965, 5, 606, 304, 2, 5965, 5966, 7, 13, 2, + 2, 5966, 5967, 5, 552, 277, 2, 5967, 5968, 7, 1064, 2, 2, 5968, 6136, 3, + 2, 2, 2, 5969, 5970, 7, 174, 2, 2, 5970, 5971, 7, 1063, 2, 2, 5971, 5972, + 5, 506, 254, 2, 5972, 5973, 7, 1064, 2, 2, 5973, 6136, 3, 2, 2, 2, 5974, + 5975, 7, 21, 2, 2, 5975, 5977, 5, 606, 304, 2, 5976, 5978, 5, 590, 296, + 2, 5977, 5976, 3, 2, 2, 2, 5978, 5979, 3, 2, 2, 2, 5979, 5977, 3, 2, 2, + 2, 5979, 5980, 3, 2, 2, 2, 5980, 5983, 3, 2, 2, 2, 5981, 5982, 7, 51, 2, + 2, 5982, 5984, 5, 604, 303, 2, 5983, 5981, 3, 2, 2, 2, 5983, 5984, 3, 2, + 2, 2, 5984, 5985, 3, 2, 2, 2, 5985, 5986, 7, 374, 2, 2, 5986, 6136, 3, + 2, 2, 2, 5987, 5989, 7, 21, 2, 2, 5988, 5990, 5, 590, 296, 2, 5989, 5988, + 3, 2, 2, 2, 5990, 5991, 3, 2, 2, 2, 5991, 5989, 3, 2, 2, 2, 5991, 5992, + 3, 2, 2, 2, 5992, 5995, 3, 2, 2, 2, 5993, 5994, 7, 51, 2, 2, 5994, 5996, + 5, 604, 303, 2, 5995, 5993, 3, 2, 2, 2, 5995, 5996, 3, 2, 2, 2, 5996, 5997, + 3, 2, 2, 2, 5997, 5998, 7, 374, 2, 2, 5998, 6136, 3, 2, 2, 2, 5999, 6000, + 7, 208, 2, 2, 6000, 6001, 7, 1063, 2, 2, 6001, 6004, 5, 602, 302, 2, 6002, + 6003, 7, 173, 2, 2, 6003, 6005, 5, 514, 258, 2, 6004, 6002, 3, 2, 2, 2, + 6004, 6005, 3, 2, 2, 2, 6005, 6006, 3, 2, 2, 2, 6006, 6007, 7, 1064, 2, + 2, 6007, 6136, 3, 2, 2, 2, 6008, 6009, 7, 296, 2, 2, 6009, 6012, 7, 1063, + 2, 2, 6010, 6013, 5, 538, 270, 2, 6011, 6013, 5, 606, 304, 2, 6012, 6010, + 3, 2, 2, 2, 6012, 6011, 3, 2, 2, 2, 6013, 6014, 3, 2, 2, 2, 6014, 6017, + 7, 74, 2, 2, 6015, 6018, 5, 538, 270, 2, 6016, 6018, 5, 606, 304, 2, 6017, + 6015, 3, 2, 2, 2, 6017, 6016, 3, 2, 2, 2, 6018, 6019, 3, 2, 2, 2, 6019, + 6020, 7, 1064, 2, 2, 6020, 6136, 3, 2, 2, 2, 6021, 6022, 9, 109, 2, 2, + 6022, 6025, 7, 1063, 2, 2, 6023, 6026, 5, 538, 270, 2, 6024, 6026, 5, 606, + 304, 2, 6025, 6023, 3, 2, 2, 2, 6025, 6024, 3, 2, 2, 2, 6026, 6027, 3, + 2, 2, 2, 6027, 6030, 7, 64, 2, 2, 6028, 6031, 5, 534, 268, 2, 6029, 6031, + 5, 606, 304, 2, 6030, 6028, 3, 2, 2, 2, 6030, 6029, 3, 2, 2, 2, 6031, 6037, + 3, 2, 2, 2, 6032, 6035, 7, 61, 2, 2, 6033, 6036, 5, 534, 268, 2, 6034, + 6036, 5, 606, 304, 2, 6035, 6033, 3, 2, 2, 2, 6035, 6034, 3, 2, 2, 2, 6036, + 6038, 3, 2, 2, 2, 6037, 6032, 3, 2, 2, 2, 6037, 6038, 3, 2, 2, 2, 6038, + 6039, 3, 2, 2, 2, 6039, 6040, 7, 1064, 2, 2, 6040, 6136, 3, 2, 2, 2, 6041, + 6042, 7, 300, 2, 2, 6042, 6043, 7, 1063, 2, 2, 6043, 6046, 9, 110, 2, 2, + 6044, 6047, 5, 538, 270, 2, 6045, 6047, 5, 606, 304, 2, 6046, 6044, 3, + 2, 2, 2, 6046, 6045, 3, 2, 2, 2, 6046, 6047, 3, 2, 2, 2, 6047, 6048, 3, + 2, 2, 2, 6048, 6051, 7, 64, 2, 2, 6049, 6052, 5, 538, 270, 2, 6050, 6052, + 5, 606, 304, 2, 6051, 6049, 3, 2, 2, 2, 6051, 6050, 3, 2, 2, 2, 6052, 6053, + 3, 2, 2, 2, 6053, 6054, 7, 1064, 2, 2, 6054, 6136, 3, 2, 2, 2, 6055, 6056, + 7, 300, 2, 2, 6056, 6059, 7, 1063, 2, 2, 6057, 6060, 5, 538, 270, 2, 6058, + 6060, 5, 606, 304, 2, 6059, 6057, 3, 2, 2, 2, 6059, 6058, 3, 2, 2, 2, 6060, + 6061, 3, 2, 2, 2, 6061, 6064, 7, 64, 2, 2, 6062, 6065, 5, 538, 270, 2, + 6063, 6065, 5, 606, 304, 2, 6064, 6062, 3, 2, 2, 2, 6064, 6063, 3, 2, 2, + 2, 6065, 6066, 3, 2, 2, 2, 6066, 6067, 7, 1064, 2, 2, 6067, 6136, 3, 2, + 2, 2, 6068, 6069, 7, 1032, 2, 2, 6069, 6072, 7, 1063, 2, 2, 6070, 6073, + 5, 538, 270, 2, 6071, 6073, 5, 606, 304, 2, 6072, 6070, 3, 2, 2, 2, 6072, + 6071, 3, 2, 2, 2, 6073, 6080, 3, 2, 2, 2, 6074, 6075, 7, 13, 2, 2, 6075, + 6076, 9, 111, 2, 2, 6076, 6077, 7, 1063, 2, 2, 6077, 6078, 5, 534, 268, + 2, 6078, 6079, 7, 1064, 2, 2, 6079, 6081, 3, 2, 2, 2, 6080, 6074, 3, 2, + 2, 2, 6080, 6081, 3, 2, 2, 2, 6081, 6083, 3, 2, 2, 2, 6082, 6084, 5, 592, + 297, 2, 6083, 6082, 3, 2, 2, 2, 6083, 6084, 3, 2, 2, 2, 6084, 6085, 3, + 2, 2, 2, 6085, 6086, 7, 1064, 2, 2, 6086, 6136, 3, 2, 2, 2, 6087, 6088, + 7, 293, 2, 2, 6088, 6089, 7, 1063, 2, 2, 6089, 6090, 5, 60, 31, 2, 6090, + 6093, 7, 64, 2, 2, 6091, 6094, 5, 538, 270, 2, 6092, 6094, 5, 606, 304, + 2, 6093, 6091, 3, 2, 2, 2, 6093, 6092, 3, 2, 2, 2, 6094, 6095, 3, 2, 2, + 2, 6095, 6096, 7, 1064, 2, 2, 6096, 6136, 3, 2, 2, 2, 6097, 6098, 7, 832, + 2, 2, 6098, 6099, 7, 1063, 2, 2, 6099, 6100, 9, 112, 2, 2, 6100, 6101, + 7, 1065, 2, 2, 6101, 6102, 5, 538, 270, 2, 6102, 6103, 7, 1064, 2, 2, 6103, + 6136, 3, 2, 2, 2, 6104, 6105, 7, 246, 2, 2, 6105, 6106, 7, 1063, 2, 2, + 6106, 6107, 5, 606, 304, 2, 6107, 6108, 7, 1065, 2, 2, 6108, 6111, 5, 606, + 304, 2, 6109, 6110, 7, 542, 2, 2, 6110, 6112, 5, 552, 277, 2, 6111, 6109, + 3, 2, 2, 2, 6111, 6112, 3, 2, 2, 2, 6112, 6121, 3, 2, 2, 2, 6113, 6118, + 7, 108, 2, 2, 6114, 6118, 7, 378, 2, 2, 6115, 6116, 7, 40, 2, 2, 6116, + 6118, 5, 576, 289, 2, 6117, 6113, 3, 2, 2, 2, 6117, 6114, 3, 2, 2, 2, 6117, + 6115, 3, 2, 2, 2, 6118, 6119, 3, 2, 2, 2, 6119, 6120, 7, 110, 2, 2, 6120, + 6122, 7, 53, 2, 2, 6121, 6117, 3, 2, 2, 2, 6121, 6122, 3, 2, 2, 2, 6122, + 6131, 3, 2, 2, 2, 6123, 6128, 7, 108, 2, 2, 6124, 6128, 7, 378, 2, 2, 6125, + 6126, 7, 40, 2, 2, 6126, 6128, 5, 576, 289, 2, 6127, 6123, 3, 2, 2, 2, + 6127, 6124, 3, 2, 2, 2, 6127, 6125, 3, 2, 2, 2, 6128, 6129, 3, 2, 2, 2, + 6129, 6130, 7, 110, 2, 2, 6130, 6132, 7, 378, 2, 2, 6131, 6127, 3, 2, 2, + 2, 6131, 6132, 3, 2, 2, 2, 6132, 6133, 3, 2, 2, 2, 6133, 6134, 7, 1064, + 2, 2, 6134, 6136, 3, 2, 2, 2, 6135, 5943, 3, 2, 2, 2, 6135, 5948, 3, 2, + 2, 2, 6135, 5955, 3, 2, 2, 2, 6135, 5962, 3, 2, 2, 2, 6135, 5969, 3, 2, + 2, 2, 6135, 5974, 3, 2, 2, 2, 6135, 5987, 3, 2, 2, 2, 6135, 5999, 3, 2, + 2, 2, 6135, 6008, 3, 2, 2, 2, 6135, 6021, 3, 2, 2, 2, 6135, 6041, 3, 2, + 2, 2, 6135, 6055, 3, 2, 2, 2, 6135, 6068, 3, 2, 2, 2, 6135, 6087, 3, 2, + 2, 2, 6135, 6097, 3, 2, 2, 2, 6135, 6104, 3, 2, 2, 2, 6136, 589, 3, 2, + 2, 2, 6137, 6138, 7, 175, 2, 2, 6138, 6139, 5, 604, 303, 2, 6139, 6140, + 7, 160, 2, 2, 6140, 6141, 5, 604, 303, 2, 6141, 591, 3, 2, 2, 2, 6142, + 6143, 7, 434, 2, 2, 6143, 6148, 5, 594, 298, 2, 6144, 6145, 7, 1065, 2, + 2, 6145, 6147, 5, 594, 298, 2, 6146, 6144, 3, 2, 2, 2, 6147, 6150, 3, 2, + 2, 2, 6148, 6146, 3, 2, 2, 2, 6148, 6149, 3, 2, 2, 2, 6149, 6157, 3, 2, + 2, 2, 6150, 6148, 3, 2, 2, 2, 6151, 6152, 7, 434, 2, 2, 6152, 6153, 5, + 534, 268, 2, 6153, 6154, 7, 1051, 2, 2, 6154, 6155, 5, 534, 268, 2, 6155, + 6157, 3, 2, 2, 2, 6156, 6142, 3, 2, 2, 2, 6156, 6151, 3, 2, 2, 2, 6157, + 593, 3, 2, 2, 2, 6158, 6160, 5, 534, 268, 2, 6159, 6161, 9, 113, 2, 2, + 6160, 6159, 3, 2, 2, 2, 6160, 6161, 3, 2, 2, 2, 6161, 595, 3, 2, 2, 2, + 6162, 6163, 9, 114, 2, 2, 6163, 6165, 7, 1063, 2, 2, 6164, 6166, 9, 41, + 2, 2, 6165, 6164, 3, 2, 2, 2, 6165, 6166, 3, 2, 2, 2, 6166, 6167, 3, 2, + 2, 2, 6167, 6168, 5, 604, 303, 2, 6168, 6169, 7, 1064, 2, 2, 6169, 6219, + 3, 2, 2, 2, 6170, 6171, 7, 273, 2, 2, 6171, 6177, 7, 1063, 2, 2, 6172, + 6178, 7, 1046, 2, 2, 6173, 6175, 7, 8, 2, 2, 6174, 6173, 3, 2, 2, 2, 6174, + 6175, 3, 2, 2, 2, 6175, 6176, 3, 2, 2, 2, 6176, 6178, 5, 604, 303, 2, 6177, + 6172, 3, 2, 2, 2, 6177, 6174, 3, 2, 2, 2, 6178, 6179, 3, 2, 2, 2, 6179, + 6219, 7, 1064, 2, 2, 6180, 6181, 7, 273, 2, 2, 6181, 6182, 7, 1063, 2, + 2, 6182, 6183, 7, 47, 2, 2, 6183, 6184, 5, 602, 302, 2, 6184, 6185, 7, + 1064, 2, 2, 6185, 6219, 3, 2, 2, 2, 6186, 6187, 9, 115, 2, 2, 6187, 6189, + 7, 1063, 2, 2, 6188, 6190, 7, 8, 2, 2, 6189, 6188, 3, 2, 2, 2, 6189, 6190, + 3, 2, 2, 2, 6190, 6191, 3, 2, 2, 2, 6191, 6192, 5, 604, 303, 2, 6192, 6193, + 7, 1064, 2, 2, 6193, 6219, 3, 2, 2, 2, 6194, 6195, 7, 274, 2, 2, 6195, + 6197, 7, 1063, 2, 2, 6196, 6198, 7, 47, 2, 2, 6197, 6196, 3, 2, 2, 2, 6197, + 6198, 3, 2, 2, 2, 6198, 6199, 3, 2, 2, 2, 6199, 6210, 5, 602, 302, 2, 6200, + 6201, 7, 115, 2, 2, 6201, 6202, 7, 18, 2, 2, 6202, 6207, 5, 210, 106, 2, + 6203, 6204, 7, 1065, 2, 2, 6204, 6206, 5, 210, 106, 2, 6205, 6203, 3, 2, + 2, 2, 6206, 6209, 3, 2, 2, 2, 6207, 6205, 3, 2, 2, 2, 6207, 6208, 3, 2, + 2, 2, 6208, 6211, 3, 2, 2, 2, 6209, 6207, 3, 2, 2, 2, 6210, 6200, 3, 2, + 2, 2, 6210, 6211, 3, 2, 2, 2, 6211, 6214, 3, 2, 2, 2, 6212, 6213, 7, 143, + 2, 2, 6213, 6215, 7, 1078, 2, 2, 6214, 6212, 3, 2, 2, 2, 6214, 6215, 3, + 2, 2, 2, 6215, 6216, 3, 2, 2, 2, 6216, 6217, 7, 1064, 2, 2, 6217, 6219, + 3, 2, 2, 2, 6218, 6162, 3, 2, 2, 2, 6218, 6170, 3, 2, 2, 2, 6218, 6180, + 3, 2, 2, 2, 6218, 6186, 3, 2, 2, 2, 6218, 6194, 3, 2, 2, 2, 6219, 597, + 3, 2, 2, 2, 6220, 6244, 5, 636, 319, 2, 6221, 6244, 7, 681, 2, 2, 6222, + 6244, 7, 289, 2, 2, 6223, 6244, 7, 285, 2, 2, 6224, 6244, 7, 286, 2, 2, + 6225, 6244, 7, 287, 2, 2, 6226, 6244, 7, 290, 2, 2, 6227, 6244, 7, 291, + 2, 2, 6228, 6244, 7, 292, 2, 2, 6229, 6244, 7, 72, 2, 2, 6230, 6244, 7, + 79, 2, 2, 6231, 6244, 7, 288, 2, 2, 6232, 6244, 7, 294, 2, 2, 6233, 6244, + 7, 470, 2, 2, 6234, 6244, 7, 295, 2, 2, 6235, 6244, 7, 131, 2, 2, 6236, + 6244, 7, 297, 2, 2, 6237, 6244, 7, 298, 2, 2, 6238, 6244, 7, 299, 2, 2, + 6239, 6244, 7, 300, 2, 2, 6240, 6244, 7, 301, 2, 2, 6241, 6244, 7, 302, + 2, 2, 6242, 6244, 7, 303, 2, 2, 6243, 6220, 3, 2, 2, 2, 6243, 6221, 3, + 2, 2, 2, 6243, 6222, 3, 2, 2, 2, 6243, 6223, 3, 2, 2, 2, 6243, 6224, 3, + 2, 2, 2, 6243, 6225, 3, 2, 2, 2, 6243, 6226, 3, 2, 2, 2, 6243, 6227, 3, + 2, 2, 2, 6243, 6228, 3, 2, 2, 2, 6243, 6229, 3, 2, 2, 2, 6243, 6230, 3, + 2, 2, 2, 6243, 6231, 3, 2, 2, 2, 6243, 6232, 3, 2, 2, 2, 6243, 6233, 3, + 2, 2, 2, 6243, 6234, 3, 2, 2, 2, 6243, 6235, 3, 2, 2, 2, 6243, 6236, 3, + 2, 2, 2, 6243, 6237, 3, 2, 2, 2, 6243, 6238, 3, 2, 2, 2, 6243, 6239, 3, + 2, 2, 2, 6243, 6240, 3, 2, 2, 2, 6243, 6241, 3, 2, 2, 2, 6243, 6242, 3, + 2, 2, 2, 6244, 599, 3, 2, 2, 2, 6245, 6246, 9, 116, 2, 2, 6246, 6247, 7, + 1063, 2, 2, 6247, 6248, 5, 604, 303, 2, 6248, 6249, 7, 1064, 2, 2, 6249, + 601, 3, 2, 2, 2, 6250, 6255, 5, 546, 274, 2, 6251, 6255, 5, 506, 254, 2, + 6252, 6255, 5, 586, 294, 2, 6253, 6255, 5, 606, 304, 2, 6254, 6250, 3, + 2, 2, 2, 6254, 6251, 3, 2, 2, 2, 6254, 6252, 3, 2, 2, 2, 6254, 6253, 3, + 2, 2, 2, 6255, 6265, 3, 2, 2, 2, 6256, 6261, 7, 1065, 2, 2, 6257, 6262, + 5, 546, 274, 2, 6258, 6262, 5, 506, 254, 2, 6259, 6262, 5, 586, 294, 2, + 6260, 6262, 5, 606, 304, 2, 6261, 6257, 3, 2, 2, 2, 6261, 6258, 3, 2, 2, + 2, 6261, 6259, 3, 2, 2, 2, 6261, 6260, 3, 2, 2, 2, 6262, 6264, 3, 2, 2, + 2, 6263, 6256, 3, 2, 2, 2, 6264, 6267, 3, 2, 2, 2, 6265, 6263, 3, 2, 2, + 2, 6265, 6266, 3, 2, 2, 2, 6266, 603, 3, 2, 2, 2, 6267, 6265, 3, 2, 2, + 2, 6268, 6273, 5, 546, 274, 2, 6269, 6273, 5, 506, 254, 2, 6270, 6273, + 5, 586, 294, 2, 6271, 6273, 5, 606, 304, 2, 6272, 6268, 3, 2, 2, 2, 6272, + 6269, 3, 2, 2, 2, 6272, 6270, 3, 2, 2, 2, 6272, 6271, 3, 2, 2, 2, 6273, + 605, 3, 2, 2, 2, 6274, 6275, 8, 304, 1, 2, 6275, 6276, 9, 117, 2, 2, 6276, + 6286, 5, 606, 304, 6, 6277, 6278, 5, 608, 305, 2, 6278, 6280, 7, 82, 2, + 2, 6279, 6281, 7, 105, 2, 2, 6280, 6279, 3, 2, 2, 2, 6280, 6281, 3, 2, + 2, 2, 6281, 6282, 3, 2, 2, 2, 6282, 6283, 9, 118, 2, 2, 6283, 6286, 3, + 2, 2, 2, 6284, 6286, 5, 608, 305, 2, 6285, 6274, 3, 2, 2, 2, 6285, 6277, + 3, 2, 2, 2, 6285, 6284, 3, 2, 2, 2, 6286, 6293, 3, 2, 2, 2, 6287, 6288, + 12, 5, 2, 2, 6288, 6289, 5, 616, 309, 2, 6289, 6290, 5, 606, 304, 6, 6290, + 6292, 3, 2, 2, 2, 6291, 6287, 3, 2, 2, 2, 6292, 6295, 3, 2, 2, 2, 6293, + 6291, 3, 2, 2, 2, 6293, 6294, 3, 2, 2, 2, 6294, 607, 3, 2, 2, 2, 6295, + 6293, 3, 2, 2, 2, 6296, 6299, 8, 305, 1, 2, 6297, 6298, 7, 1090, 2, 2, + 6298, 6300, 7, 1037, 2, 2, 6299, 6297, 3, 2, 2, 2, 6299, 6300, 3, 2, 2, + 2, 6300, 6301, 3, 2, 2, 2, 6301, 6302, 5, 610, 306, 2, 6302, 6367, 3, 2, + 2, 2, 6303, 6304, 12, 10, 2, 2, 6304, 6305, 5, 614, 308, 2, 6305, 6306, + 5, 608, 305, 11, 6306, 6366, 3, 2, 2, 2, 6307, 6309, 12, 8, 2, 2, 6308, + 6310, 7, 105, 2, 2, 6309, 6308, 3, 2, 2, 2, 6309, 6310, 3, 2, 2, 2, 6310, + 6311, 3, 2, 2, 2, 6311, 6312, 7, 16, 2, 2, 6312, 6313, 5, 608, 305, 2, + 6313, 6314, 7, 12, 2, 2, 6314, 6315, 5, 608, 305, 9, 6315, 6366, 3, 2, + 2, 2, 6316, 6317, 12, 7, 2, 2, 6317, 6318, 7, 566, 2, 2, 6318, 6319, 7, + 91, 2, 2, 6319, 6366, 5, 608, 305, 8, 6320, 6322, 12, 5, 2, 2, 6321, 6323, + 7, 105, 2, 2, 6322, 6321, 3, 2, 2, 2, 6322, 6323, 3, 2, 2, 2, 6323, 6324, + 3, 2, 2, 2, 6324, 6325, 9, 119, 2, 2, 6325, 6366, 5, 608, 305, 6, 6326, + 6328, 12, 12, 2, 2, 6327, 6329, 7, 105, 2, 2, 6328, 6327, 3, 2, 2, 2, 6328, + 6329, 3, 2, 2, 2, 6329, 6330, 3, 2, 2, 2, 6330, 6331, 7, 74, 2, 2, 6331, + 6334, 7, 1063, 2, 2, 6332, 6335, 5, 180, 91, 2, 6333, 6335, 5, 566, 284, + 2, 6334, 6332, 3, 2, 2, 2, 6334, 6333, 3, 2, 2, 2, 6335, 6336, 3, 2, 2, + 2, 6336, 6337, 7, 1064, 2, 2, 6337, 6366, 3, 2, 2, 2, 6338, 6339, 12, 11, + 2, 2, 6339, 6340, 7, 82, 2, 2, 6340, 6366, 5, 544, 273, 2, 6341, 6342, + 12, 9, 2, 2, 6342, 6343, 5, 614, 308, 2, 6343, 6344, 9, 120, 2, 2, 6344, + 6345, 7, 1063, 2, 2, 6345, 6346, 5, 180, 91, 2, 6346, 6347, 7, 1064, 2, + 2, 6347, 6366, 3, 2, 2, 2, 6348, 6350, 12, 6, 2, 2, 6349, 6351, 7, 105, + 2, 2, 6350, 6349, 3, 2, 2, 2, 6350, 6351, 3, 2, 2, 2, 6351, 6352, 3, 2, + 2, 2, 6352, 6353, 7, 91, 2, 2, 6353, 6356, 5, 608, 305, 2, 6354, 6355, + 7, 380, 2, 2, 6355, 6357, 7, 1078, 2, 2, 6356, 6354, 3, 2, 2, 2, 6356, + 6357, 3, 2, 2, 2, 6357, 6366, 3, 2, 2, 2, 6358, 6359, 12, 3, 2, 2, 6359, + 6360, 7, 467, 2, 2, 6360, 6361, 7, 488, 2, 2, 6361, 6362, 7, 1063, 2, 2, + 6362, 6363, 5, 608, 305, 2, 6363, 6364, 7, 1064, 2, 2, 6364, 6366, 3, 2, + 2, 2, 6365, 6303, 3, 2, 2, 2, 6365, 6307, 3, 2, 2, 2, 6365, 6316, 3, 2, + 2, 2, 6365, 6320, 3, 2, 2, 2, 6365, 6326, 3, 2, 2, 2, 6365, 6338, 3, 2, + 2, 2, 6365, 6341, 3, 2, 2, 2, 6365, 6348, 3, 2, 2, 2, 6365, 6358, 3, 2, + 2, 2, 6366, 6369, 3, 2, 2, 2, 6367, 6365, 3, 2, 2, 2, 6367, 6368, 3, 2, + 2, 2, 6368, 609, 3, 2, 2, 2, 6369, 6367, 3, 2, 2, 2, 6370, 6371, 8, 306, + 1, 2, 6371, 6416, 5, 546, 274, 2, 6372, 6416, 5, 506, 254, 2, 6373, 6416, + 5, 586, 294, 2, 6374, 6416, 5, 512, 257, 2, 6375, 6376, 5, 612, 307, 2, + 6376, 6377, 5, 610, 306, 12, 6377, 6416, 3, 2, 2, 2, 6378, 6379, 7, 212, + 2, 2, 6379, 6416, 5, 610, 306, 11, 6380, 6381, 7, 1063, 2, 2, 6381, 6386, + 5, 606, 304, 2, 6382, 6383, 7, 1065, 2, 2, 6383, 6385, 5, 606, 304, 2, + 6384, 6382, 3, 2, 2, 2, 6385, 6388, 3, 2, 2, 2, 6386, 6384, 3, 2, 2, 2, + 6386, 6387, 3, 2, 2, 2, 6387, 6389, 3, 2, 2, 2, 6388, 6386, 3, 2, 2, 2, + 6389, 6390, 7, 1064, 2, 2, 6390, 6416, 3, 2, 2, 2, 6391, 6392, 7, 548, + 2, 2, 6392, 6393, 7, 1063, 2, 2, 6393, 6396, 5, 606, 304, 2, 6394, 6395, + 7, 1065, 2, 2, 6395, 6397, 5, 606, 304, 2, 6396, 6394, 3, 2, 2, 2, 6397, + 6398, 3, 2, 2, 2, 6398, 6396, 3, 2, 2, 2, 6398, 6399, 3, 2, 2, 2, 6399, + 6400, 3, 2, 2, 2, 6400, 6401, 7, 1064, 2, 2, 6401, 6416, 3, 2, 2, 2, 6402, + 6403, 7, 56, 2, 2, 6403, 6404, 7, 1063, 2, 2, 6404, 6405, 5, 180, 91, 2, + 6405, 6406, 7, 1064, 2, 2, 6406, 6416, 3, 2, 2, 2, 6407, 6408, 7, 1063, + 2, 2, 6408, 6409, 5, 180, 91, 2, 6409, 6410, 7, 1064, 2, 2, 6410, 6416, + 3, 2, 2, 2, 6411, 6412, 7, 80, 2, 2, 6412, 6413, 5, 606, 304, 2, 6413, + 6414, 5, 60, 31, 2, 6414, 6416, 3, 2, 2, 2, 6415, 6370, 3, 2, 2, 2, 6415, + 6372, 3, 2, 2, 2, 6415, 6373, 3, 2, 2, 2, 6415, 6374, 3, 2, 2, 2, 6415, + 6375, 3, 2, 2, 2, 6415, 6378, 3, 2, 2, 2, 6415, 6380, 3, 2, 2, 2, 6415, + 6391, 3, 2, 2, 2, 6415, 6402, 3, 2, 2, 2, 6415, 6407, 3, 2, 2, 2, 6415, + 6411, 3, 2, 2, 2, 6416, 6434, 3, 2, 2, 2, 6417, 6418, 12, 5, 2, 2, 6418, + 6419, 5, 618, 310, 2, 6419, 6420, 5, 610, 306, 6, 6420, 6433, 3, 2, 2, + 2, 6421, 6422, 12, 4, 2, 2, 6422, 6423, 5, 620, 311, 2, 6423, 6424, 5, + 610, 306, 5, 6424, 6433, 3, 2, 2, 2, 6425, 6426, 12, 3, 2, 2, 6426, 6427, + 5, 622, 312, 2, 6427, 6428, 5, 610, 306, 4, 6428, 6433, 3, 2, 2, 2, 6429, + 6430, 12, 14, 2, 2, 6430, 6431, 7, 26, 2, 2, 6431, 6433, 5, 516, 259, 2, + 6432, 6417, 3, 2, 2, 2, 6432, 6421, 3, 2, 2, 2, 6432, 6425, 3, 2, 2, 2, + 6432, 6429, 3, 2, 2, 2, 6433, 6436, 3, 2, 2, 2, 6434, 6432, 3, 2, 2, 2, + 6434, 6435, 3, 2, 2, 2, 6435, 611, 3, 2, 2, 2, 6436, 6434, 3, 2, 2, 2, + 6437, 6438, 9, 121, 2, 2, 6438, 613, 3, 2, 2, 2, 6439, 6454, 7, 1054, 2, + 2, 6440, 6454, 7, 1055, 2, 2, 6441, 6454, 7, 1056, 2, 2, 6442, 6443, 7, + 1056, 2, 2, 6443, 6454, 7, 1054, 2, 2, 6444, 6445, 7, 1055, 2, 2, 6445, + 6454, 7, 1054, 2, 2, 6446, 6447, 7, 1056, 2, 2, 6447, 6454, 7, 1055, 2, + 2, 6448, 6449, 7, 1057, 2, 2, 6449, 6454, 7, 1054, 2, 2, 6450, 6451, 7, + 1056, 2, 2, 6451, 6452, 7, 1054, 2, 2, 6452, 6454, 7, 1055, 2, 2, 6453, + 6439, 3, 2, 2, 2, 6453, 6440, 3, 2, 2, 2, 6453, 6441, 3, 2, 2, 2, 6453, + 6442, 3, 2, 2, 2, 6453, 6444, 3, 2, 2, 2, 6453, 6446, 3, 2, 2, 2, 6453, + 6448, 3, 2, 2, 2, 6453, 6450, 3, 2, 2, 2, 6454, 615, 3, 2, 2, 2, 6455, + 6463, 7, 12, 2, 2, 6456, 6457, 7, 1060, 2, 2, 6457, 6463, 7, 1060, 2, 2, + 6458, 6463, 7, 180, 2, 2, 6459, 6463, 7, 114, 2, 2, 6460, 6461, 7, 1059, + 2, 2, 6461, 6463, 7, 1059, 2, 2, 6462, 6455, 3, 2, 2, 2, 6462, 6456, 3, + 2, 2, 2, 6462, 6458, 3, 2, 2, 2, 6462, 6459, 3, 2, 2, 2, 6462, 6460, 3, + 2, 2, 2, 6463, 617, 3, 2, 2, 2, 6464, 6465, 7, 1056, 2, 2, 6465, 6472, + 7, 1056, 2, 2, 6466, 6467, 7, 1055, 2, 2, 6467, 6472, 7, 1055, 2, 2, 6468, + 6472, 7, 1060, 2, 2, 6469, 6472, 7, 1061, 2, 2, 6470, 6472, 7, 1059, 2, + 2, 6471, 6464, 3, 2, 2, 2, 6471, 6466, 3, 2, 2, 2, 6471, 6468, 3, 2, 2, + 2, 6471, 6469, 3, 2, 2, 2, 6471, 6470, 3, 2, 2, 2, 6472, 619, 3, 2, 2, + 2, 6473, 6474, 9, 122, 2, 2, 6474, 621, 3, 2, 2, 2, 6475, 6476, 7, 1051, + 2, 2, 6476, 6481, 7, 1055, 2, 2, 6477, 6478, 7, 1051, 2, 2, 6478, 6479, + 7, 1055, 2, 2, 6479, 6481, 7, 1055, 2, 2, 6480, 6475, 3, 2, 2, 2, 6480, + 6477, 3, 2, 2, 2, 6481, 623, 3, 2, 2, 2, 6482, 6483, 9, 123, 2, 2, 6483, + 625, 3, 2, 2, 2, 6484, 6485, 9, 124, 2, 2, 6485, 627, 3, 2, 2, 2, 6486, + 6487, 9, 125, 2, 2, 6487, 629, 3, 2, 2, 2, 6488, 6489, 9, 126, 2, 2, 6489, + 631, 3, 2, 2, 2, 6490, 6491, 9, 127, 2, 2, 6491, 633, 3, 2, 2, 2, 6492, + 6493, 9, 128, 2, 2, 6493, 635, 3, 2, 2, 2, 6494, 6495, 9, 129, 2, 2, 6495, + 637, 3, 2, 2, 2, 944, 639, 642, 648, 651, 654, 656, 661, 664, 667, 676, + 715, 727, 738, 755, 760, 772, 799, 808, 813, 819, 824, 828, 837, 840, 843, + 847, 854, 857, 862, 870, 875, 880, 883, 885, 897, 900, 904, 907, 911, 914, + 918, 921, 924, 928, 931, 935, 941, 947, 953, 960, 967, 973, 979, 988, 993, + 1009, 1016, 1020, 1030, 1034, 1038, 1042, 1046, 1051, 1054, 1057, 1060, + 1063, 1069, 1073, 1079, 1084, 1087, 1090, 1092, 1103, 1107, 1110, 1124, + 1127, 1131, 1134, 1138, 1141, 1145, 1148, 1152, 1155, 1158, 1162, 1165, + 1169, 1175, 1188, 1195, 1200, 1203, 1208, 1216, 1222, 1226, 1229, 1234, + 1237, 1241, 1244, 1248, 1251, 1259, 1261, 1268, 1274, 1282, 1285, 1292, + 1295, 1297, 1303, 1309, 1326, 1333, 1340, 1351, 1354, 1367, 1380, 1385, + 1401, 1409, 1419, 1425, 1435, 1438, 1443, 1456, 1463, 1470, 1472, 1479, + 1483, 1485, 1490, 1493, 1499, 1504, 1506, 1510, 1513, 1516, 1522, 1527, + 1529, 1534, 1541, 1543, 1550, 1555, 1559, 1562, 1570, 1578, 1580, 1588, + 1592, 1595, 1601, 1606, 1609, 1615, 1618, 1622, 1627, 1632, 1636, 1641, + 1644, 1648, 1652, 1656, 1660, 1665, 1670, 1675, 1681, 1686, 1691, 1697, + 1702, 1707, 1712, 1717, 1722, 1727, 1732, 1737, 1742, 1747, 1753, 1758, + 1764, 1774, 1781, 1783, 1791, 1796, 1799, 1807, 1813, 1829, 1841, 1843, + 1846, 1854, 1860, 1866, 1879, 1886, 1895, 1900, 1911, 1920, 1925, 1937, + 1944, 1953, 1958, 1970, 1977, 1986, 1991, 1998, 2007, 2012, 2014, 2019, + 2027, 2036, 2040, 2044, 2049, 2055, 2061, 2066, 2071, 2076, 2081, 2084, + 2089, 2094, 2104, 2108, 2115, 2120, 2123, 2128, 2131, 2135, 2139, 2147, + 2166, 2169, 2172, 2176, 2186, 2199, 2206, 2209, 2218, 2221, 2224, 2235, + 2238, 2242, 2250, 2253, 2258, 2266, 2272, 2276, 2280, 2285, 2290, 2297, + 2301, 2312, 2320, 2323, 2329, 2335, 2337, 2342, 2345, 2351, 2357, 2359, + 2363, 2366, 2369, 2375, 2381, 2384, 2390, 2396, 2398, 2403, 2411, 2413, + 2422, 2427, 2435, 2439, 2447, 2457, 2462, 2469, 2473, 2477, 2509, 2513, + 2525, 2528, 2537, 2554, 2566, 2573, 2580, 2595, 2608, 2614, 2620, 2626, + 2632, 2638, 2644, 2649, 2656, 2663, 2670, 2675, 2678, 2680, 2694, 2701, + 2708, 2714, 2718, 2722, 2729, 2732, 2737, 2744, 2751, 2755, 2764, 2773, + 2782, 2785, 2789, 2798, 2802, 2805, 2808, 2814, 2817, 2823, 2832, 2835, + 2846, 2849, 2854, 2857, 2862, 2872, 2877, 2883, 2885, 2891, 2893, 2899, + 2907, 2912, 2920, 2923, 2928, 2931, 2936, 2944, 2952, 2958, 2966, 2971, + 2979, 2982, 2986, 2989, 2997, 3003, 3012, 3015, 3019, 3023, 3029, 3033, + 3037, 3039, 3042, 3045, 3048, 3054, 3058, 3061, 3064, 3067, 3070, 3072, + 3076, 3082, 3088, 3093, 3096, 3102, 3106, 3114, 3118, 3121, 3124, 3133, + 3137, 3140, 3144, 3148, 3151, 3154, 3159, 3165, 3169, 3179, 3185, 3189, + 3195, 3199, 3205, 3208, 3220, 3224, 3228, 3236, 3240, 3248, 3251, 3255, + 3258, 3266, 3271, 3274, 3277, 3281, 3284, 3293, 3298, 3307, 3312, 3319, + 3326, 3334, 3339, 3347, 3350, 3353, 3360, 3363, 3370, 3373, 3381, 3387, + 3398, 3401, 3412, 3418, 3422, 3433, 3438, 3440, 3444, 3454, 3464, 3470, + 3475, 3478, 3481, 3484, 3487, 3490, 3496, 3501, 3504, 3507, 3510, 3513, + 3516, 3518, 3524, 3529, 3532, 3535, 3538, 3541, 3545, 3551, 3555, 3565, + 3569, 3575, 3584, 3587, 3591, 3594, 3598, 3602, 3605, 3607, 3615, 3627, + 3633, 3635, 3641, 3643, 3645, 3651, 3659, 3667, 3673, 3682, 3687, 3694, + 3700, 3707, 3712, 3721, 3724, 3728, 3732, 3736, 3739, 3742, 3745, 3749, + 3753, 3756, 3759, 3762, 3769, 3773, 3788, 3801, 3809, 3819, 3823, 3826, + 3832, 3835, 3838, 3847, 3856, 3866, 3870, 3880, 3890, 3898, 3901, 3910, + 3913, 3917, 3922, 3926, 3935, 3938, 3969, 3972, 3975, 4031, 4036, 4064, + 4078, 4085, 4089, 4095, 4103, 4105, 4116, 4126, 4133, 4139, 4147, 4152, + 4160, 4168, 4176, 4184, 4190, 4193, 4197, 4202, 4207, 4213, 4215, 4226, + 4231, 4238, 4240, 4254, 4260, 4265, 4270, 4276, 4283, 4291, 4299, 4304, + 4310, 4313, 4321, 4328, 4337, 4340, 4357, 4365, 4373, 4377, 4384, 4390, + 4398, 4407, 4413, 4420, 4427, 4432, 4435, 4437, 4443, 4445, 4449, 4451, + 4454, 4463, 4469, 4476, 4483, 4488, 4491, 4493, 4499, 4501, 4505, 4507, + 4510, 4515, 4522, 4531, 4536, 4545, 4552, 4557, 4560, 4562, 4568, 4570, + 4573, 4585, 4591, 4600, 4609, 4614, 4623, 4629, 4640, 4643, 4655, 4662, + 4667, 4682, 4693, 4696, 4706, 4716, 4726, 4736, 4740, 4744, 4754, 4759, + 4817, 4835, 4843, 4854, 4861, 4865, 4872, 4877, 4880, 4883, 4892, 4896, + 4926, 4933, 4937, 4944, 4947, 4963, 4966, 4976, 4980, 4986, 4989, 4994, + 4998, 5005, 5008, 5014, 5038, 5051, 5054, 5064, 5072, 5076, 5083, 5086, + 5095, 5101, 5107, 5117, 5119, 5125, 5128, 5131, 5143, 5146, 5152, 5155, + 5163, 5171, 5177, 5181, 5195, 5207, 5214, 5217, 5224, 5231, 5236, 5241, + 5252, 5263, 5269, 5274, 5287, 5289, 5294, 5299, 5301, 5308, 5315, 5318, + 5321, 5327, 5331, 5337, 5343, 5356, 5361, 5369, 5372, 5377, 5382, 5390, + 5393, 5401, 5405, 5418, 5424, 5436, 5439, 5448, 5453, 5459, 5466, 5468, + 5473, 5475, 5479, 5485, 5488, 5498, 5502, 5522, 5529, 5531, 5538, 5540, + 5544, 5549, 5560, 5565, 5571, 5574, 5578, 5583, 5586, 5590, 5594, 5596, + 5601, 5606, 5619, 5622, 5626, 5629, 5632, 5637, 5640, 5645, 5650, 5653, + 5658, 5661, 5667, 5670, 5674, 5677, 5680, 5684, 5687, 5690, 5694, 5697, + 5700, 5703, 5707, 5710, 5713, 5718, 5723, 5728, 5731, 5736, 5739, 5744, + 5747, 5751, 5755, 5763, 5770, 5774, 5779, 5782, 5787, 5791, 5793, 5809, + 5818, 5826, 5835, 5845, 5853, 5861, 5869, 5877, 5882, 5890, 5895, 5900, + 5903, 5908, 5911, 5915, 5929, 5936, 5941, 5946, 5979, 5983, 5991, 5995, + 6004, 6012, 6017, 6025, 6030, 6035, 6037, 6046, 6051, 6059, 6064, 6072, + 6080, 6083, 6093, 6111, 6117, 6121, 6127, 6131, 6135, 6148, 6156, 6160, + 6165, 6174, 6177, 6189, 6197, 6207, 6210, 6214, 6218, 6243, 6254, 6261, + 6265, 6272, 6280, 6285, 6293, 6299, 6309, 6322, 6328, 6334, 6350, 6356, + 6365, 6367, 6386, 6398, 6415, 6432, 6434, 6453, 6462, 6471, 6480, +} +var literalNames = []string{ + "", "", "", "", "", "'ADD'", "'ALL'", "'ALTER'", "'ALWAYS'", "'ANALYZE'", + "'AND'", "'AS'", "'ASC'", "'BEFORE'", "'BETWEEN'", "'BOTH'", "'BY'", "'CALL'", + "'CASCADE'", "'CASE'", "'CAST'", "'CHANGE'", "'CHARACTER'", "'CHECK'", + "'COLLATE'", "'COLUMN'", "'CONDITION'", "'CONSTRAINT'", "'CONTINUE'", "'CONVERT'", + "'CREATE'", "'CROSS'", "'CURRENT'", "'CURRENT_USER'", "'CURSOR'", "'DATABASE'", + "'DATABASES'", "'DECLARE'", "'DEFAULT'", "'DELAYED'", "'DELETE'", "'DESC'", + "'DESCRIBE'", "'DETERMINISTIC'", "'DIAGNOSTICS'", "'DISTINCT'", "'DISTINCTROW'", + "'DROP'", "'EACH'", "'ELSE'", "'ELSEIF'", "'EMPTY'", "'ENCLOSED'", "'ESCAPED'", + "'EXISTS'", "'EXIT'", "'EXPLAIN'", "'FALSE'", "'FETCH'", "'FOR'", "'FORCE'", + "'FOREIGN'", "'FROM'", "'FULLTEXT'", "'GENERATED'", "'GET'", "'GRANT'", + "'GROUP'", "'HAVING'", "'HIGH_PRIORITY'", "'IF'", "'IGNORE'", "'IN'", "'INDEX'", + "'INFILE'", "'INNER'", "'INOUT'", "'INSERT'", "'INTERVAL'", "'INTO'", "'IS'", + "'ITERATE'", "'JOIN'", "'KEY'", "'KEYS'", "'KILL'", "'LEADING'", "'LEAVE'", + "'LEFT'", "'LIKE'", "'LIMIT'", "'LINEAR'", "'LINES'", "'LOAD'", "'LOCK'", + "'LOOP'", "'LOW_PRIORITY'", "'MASTER_BIND'", "'MASTER_SSL_VERIFY_SERVER_CERT'", + "'MATCH'", "'MAXVALUE'", "'MODIFIES'", "'NATURAL'", "'NOT'", "'NO_WRITE_TO_BINLOG'", + "", "'NULL'", "'NUMBER'", "'ON'", "'OPTIMIZE'", "'OPTION'", "'OPTIONALLY'", + "'OR'", "'ORDER'", "'OUT'", "'OUTER'", "'OUTFILE'", "'PARTITION'", "'PRIMARY'", + "'PROCEDURE'", "'PURGE'", "'RANGE'", "'READ'", "'READS'", "'REFERENCES'", + "'REGEXP'", "'RELEASE'", "'RENAME'", "'REPEAT'", "'REPLACE'", "'REQUIRE'", + "'RESIGNAL'", "'RESTRICT'", "'RETURN'", "'REVOKE'", "'RIGHT'", "'RLIKE'", + "'SCHEMA'", "'SCHEMAS'", "'SELECT'", "'SET'", "'SEPARATOR'", "'SHOW'", + "'SIGNAL'", "'SPATIAL'", "'SQL'", "'SQLEXCEPTION'", "'SQLSTATE'", "'SQLWARNING'", + "'SQL_BIG_RESULT'", "'SQL_CALC_FOUND_ROWS'", "'SQL_SMALL_RESULT'", "'SSL'", + "'STACKED'", "'STARTING'", "'STRAIGHT_JOIN'", "'TABLE'", "'TERMINATED'", + "'THEN'", "'TO'", "'TRAILING'", "'TRIGGER'", "'TRUE'", "'UNDO'", "'UNION'", + "'UNIQUE'", "'UNLOCK'", "'UNSIGNED'", "'UPDATE'", "'USAGE'", "'USE'", "'USING'", + "'VALUES'", "'WHEN'", "'WHERE'", "'WHILE'", "'WITH'", "'WRITE'", "'XOR'", + "'ZEROFILL'", "'TINYINT'", "'SMALLINT'", "'MEDIUMINT'", "'MIDDLEINT'", + "'INT'", "'INT1'", "'INT2'", "'INT3'", "'INT4'", "'INT8'", "'INTEGER'", + "'BIGINT'", "'REAL'", "'DOUBLE'", "'PRECISION'", "'FLOAT'", "'FLOAT4'", + "'FLOAT8'", "'DECIMAL'", "'DEC'", "'NUMERIC'", "'DATE'", "'TIME'", "'TIMESTAMP'", + "'DATETIME'", "'YEAR'", "'CHAR'", "'VARCHAR'", "'NVARCHAR'", "'NATIONAL'", + "'BINARY'", "'VARBINARY'", "'TINYBLOB'", "'BLOB'", "'MEDIUMBLOB'", "'LONG'", + "'LONGBLOB'", "'TINYTEXT'", "'TEXT'", "'MEDIUMTEXT'", "'LONGTEXT'", "'ENUM'", + "'VARYING'", "'SERIAL'", "'YEAR_MONTH'", "'DAY_HOUR'", "'DAY_MINUTE'", + "'DAY_SECOND'", "'HOUR_MINUTE'", "'HOUR_SECOND'", "'MINUTE_SECOND'", "'SECOND_MICROSECOND'", + "'MINUTE_MICROSECOND'", "'HOUR_MICROSECOND'", "'DAY_MICROSECOND'", "'JSON_ARRAY'", + "'JSON_OBJECT'", "'JSON_QUOTE'", "'JSON_CONTAINS'", "'JSON_CONTAINS_PATH'", + "'JSON_EXTRACT'", "'JSON_KEYS'", "'JSON_OVERLAPS'", "'JSON_SEARCH'", "'JSON_VALUE'", + "'JSON_ARRAY_APPEND'", "'JSON_ARRAY_INSERT'", "'JSON_INSERT'", "'JSON_MERGE'", + "'JSON_MERGE_PATCH'", "'JSON_MERGE_PRESERVE'", "'JSON_REMOVE'", "'JSON_REPLACE'", + "'JSON_SET'", "'JSON_UNQUOTE'", "'JSON_DEPTH'", "'JSON_LENGTH'", "'JSON_TYPE'", + "'JSON_VALID'", "'JSON_TABLE'", "'JSON_SCHEMA_VALID'", "'JSON_SCHEMA_VALIDATION_REPORT'", + "'JSON_PRETTY'", "'JSON_STORAGE_FREE'", "'JSON_STORAGE_SIZE'", "'JSON_ARRAYAGG'", + "'JSON_OBJECTAGG'", "'AVG'", "'BIT_AND'", "'BIT_OR'", "'BIT_XOR'", "'COUNT'", + "'GROUP_CONCAT'", "'MAX'", "'MIN'", "'STD'", "'STDDEV'", "'STDDEV_POP'", + "'STDDEV_SAMP'", "'SUM'", "'VAR_POP'", "'VAR_SAMP'", "'VARIANCE'", "'CURRENT_DATE'", + "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'LOCALTIME'", "'CURDATE'", "'CURTIME'", + "'DATE_ADD'", "'DATE_SUB'", "'EXTRACT'", "'LOCALTIMESTAMP'", "'NOW'", "'POSITION'", + "'SUBSTR'", "'SUBSTRING'", "'SYSDATE'", "'TRIM'", "'UTC_DATE'", "'UTC_TIME'", + "'UTC_TIMESTAMP'", "'ACCOUNT'", "'ACTION'", "'AFTER'", "'AGGREGATE'", "'ALGORITHM'", + "'ANY'", "'AT'", "'AUTHORS'", "'AUTOCOMMIT'", "'AUTOEXTEND_SIZE'", "'AUTO_INCREMENT'", + "'AVG_ROW_LENGTH'", "'BEGIN'", "'BINLOG'", "'BIT'", "'BLOCK'", "'BOOL'", + "'BOOLEAN'", "'BTREE'", "'CACHE'", "'CASCADED'", "'CHAIN'", "'CHANGED'", + "'CHANNEL'", "'CHECKSUM'", "'PAGE_CHECKSUM'", "'CIPHER'", "'CLASS_ORIGIN'", + "'CLIENT'", "'CLOSE'", "'COALESCE'", "'CODE'", "'COLUMNS'", "'COLUMN_FORMAT'", + "'COLUMN_NAME'", "'COMMENT'", "'COMMIT'", "'COMPACT'", "'COMPLETION'", + "'COMPRESSED'", "'COMPRESSION'", "'CONCURRENT'", "'CONNECTION'", "'CONSISTENT'", + "'CONSTRAINT_CATALOG'", "'CONSTRAINT_SCHEMA'", "'CONSTRAINT_NAME'", "'CONTAINS'", + "'CONTEXT'", "'CONTRIBUTORS'", "'COPY'", "'CPU'", "'CURSOR_NAME'", "'DATA'", + "'DATAFILE'", "'DEALLOCATE'", "'DEFAULT_AUTH'", "'DEFINER'", "'DELAY_KEY_WRITE'", + "'DES_KEY_FILE'", "'DIRECTORY'", "'DISABLE'", "'DISCARD'", "'DISK'", "'DO'", + "'DUMPFILE'", "'DUPLICATE'", "'DYNAMIC'", "'ENABLE'", "'ENCRYPTION'", "'END'", + "'ENDS'", "'ENGINE'", "'ENGINES'", "'ERROR'", "'ERRORS'", "'ESCAPE'", "'EVEN'", + "'EVENT'", "'EVENTS'", "'EVERY'", "'EXCHANGE'", "'EXCLUSIVE'", "'EXPIRE'", + "'EXPORT'", "'EXTENDED'", "'EXTENT_SIZE'", "'FAST'", "'FAULTS'", "'FIELDS'", + "'FILE_BLOCK_SIZE'", "'FILTER'", "'FIRST'", "'FIXED'", "'FLUSH'", "'FOLLOWS'", + "'FOUND'", "'FULL'", "'FUNCTION'", "'GENERAL'", "'GLOBAL'", "'GRANTS'", + "'GROUP_REPLICATION'", "'HANDLER'", "'HASH'", "'HELP'", "'HOST'", "'HOSTS'", + "'IDENTIFIED'", "'IGNORE_SERVER_IDS'", "'IMPORT'", "'INDEXES'", "'INITIAL_SIZE'", + "'INPLACE'", "'INSERT_METHOD'", "'INSTALL'", "'INSTANCE'", "'INVISIBLE'", + "'INVOKER'", "'IO'", "'IO_THREAD'", "'IPC'", "'ISOLATION'", "'ISSUER'", + "'JSON'", "'KEY_BLOCK_SIZE'", "'LANGUAGE'", "'LAST'", "'LEAVES'", "'LESS'", + "'LEVEL'", "'LIST'", "'LOCAL'", "'LOGFILE'", "'LOGS'", "'MASTER'", "'MASTER_AUTO_POSITION'", + "'MASTER_CONNECT_RETRY'", "'MASTER_DELAY'", "'MASTER_HEARTBEAT_PERIOD'", + "'MASTER_HOST'", "'MASTER_LOG_FILE'", "'MASTER_LOG_POS'", "'MASTER_PASSWORD'", + "'MASTER_PORT'", "'MASTER_RETRY_COUNT'", "'MASTER_SSL'", "'MASTER_SSL_CA'", + "'MASTER_SSL_CAPATH'", "'MASTER_SSL_CERT'", "'MASTER_SSL_CIPHER'", "'MASTER_SSL_CRL'", + "'MASTER_SSL_CRLPATH'", "'MASTER_SSL_KEY'", "'MASTER_TLS_VERSION'", "'MASTER_USER'", + "'MAX_CONNECTIONS_PER_HOUR'", "'MAX_QUERIES_PER_HOUR'", "'MAX_ROWS'", "'MAX_SIZE'", + "'MAX_UPDATES_PER_HOUR'", "'MAX_USER_CONNECTIONS'", "'MEDIUM'", "'MEMBER'", + "'MERGE'", "'MESSAGE_TEXT'", "'MID'", "'MIGRATE'", "'MIN_ROWS'", "'MODE'", + "'MODIFY'", "'MUTEX'", "'MYSQL'", "'MYSQL_ERRNO'", "'NAME'", "'NAMES'", + "'NCHAR'", "'NEVER'", "'NEXT'", "'NO'", "'NODEGROUP'", "'NONE'", "'OFFLINE'", + "'OFFSET'", "'OF'", "'OJ'", "'OLD_PASSWORD'", "'ONE'", "'ONLINE'", "'ONLY'", + "'OPEN'", "'OPTIMIZER_COSTS'", "'OPTIONS'", "'OWNER'", "'PACK_KEYS'", "'PAGE'", + "'PARSER'", "'PARTIAL'", "'PARTITIONING'", "'PARTITIONS'", "'PASSWORD'", + "'PHASE'", "'PLUGIN'", "'PLUGIN_DIR'", "'PLUGINS'", "'PORT'", "'PRECEDES'", + "'PREPARE'", "'PRESERVE'", "'PREV'", "'PROCESSLIST'", "'PROFILE'", "'PROFILES'", + "'PROXY'", "'QUERY'", "'QUICK'", "'REBUILD'", "'RECOVER'", "'REDO_BUFFER_SIZE'", + "'REDUNDANT'", "'RELAY'", "'RELAY_LOG_FILE'", "'RELAY_LOG_POS'", "'RELAYLOG'", + "'REMOVE'", "'REORGANIZE'", "'REPAIR'", "'REPLICATE_DO_DB'", "'REPLICATE_DO_TABLE'", + "'REPLICATE_IGNORE_DB'", "'REPLICATE_IGNORE_TABLE'", "'REPLICATE_REWRITE_DB'", + "'REPLICATE_WILD_DO_TABLE'", "'REPLICATE_WILD_IGNORE_TABLE'", "'REPLICATION'", + "'RESET'", "'RESUME'", "'RETURNED_SQLSTATE'", "'RETURNING'", "'RETURNS'", + "'ROLE'", "'ROLLBACK'", "'ROLLUP'", "'ROTATE'", "'ROW'", "'ROWS'", "'ROW_FORMAT'", + "'SAVEPOINT'", "'SCHEDULE'", "'SECURITY'", "'SERVER'", "'SESSION'", "'SHARE'", + "'SHARED'", "'SIGNED'", "'SIMPLE'", "'SLAVE'", "'SLOW'", "'SNAPSHOT'", + "'SOCKET'", "'SOME'", "'SONAME'", "'SOUNDS'", "'SOURCE'", "'SQL_AFTER_GTIDS'", + "'SQL_AFTER_MTS_GAPS'", "'SQL_BEFORE_GTIDS'", "'SQL_BUFFER_RESULT'", "'SQL_CACHE'", + "'SQL_NO_CACHE'", "'SQL_THREAD'", "'START'", "'STARTS'", "'STATS_AUTO_RECALC'", + "'STATS_PERSISTENT'", "'STATS_SAMPLE_PAGES'", "'STATUS'", "'STOP'", "'STORAGE'", + "'STORED'", "'STRING'", "'SUBCLASS_ORIGIN'", "'SUBJECT'", "'SUBPARTITION'", + "'SUBPARTITIONS'", "'SUSPEND'", "'SWAPS'", "'SWITCHES'", "'TABLE_NAME'", + "'TABLESPACE'", "'TEMPORARY'", "'TEMPTABLE'", "'THAN'", "'TRADITIONAL'", + "'TRANSACTION'", "'TRANSACTIONAL'", "'TRIGGERS'", "'TRUNCATE'", "'UNDEFINED'", + "'UNDOFILE'", "'UNDO_BUFFER_SIZE'", "'UNINSTALL'", "'UNKNOWN'", "'UNTIL'", + "'UPGRADE'", "'USER'", "'USE_FRM'", "'USER_RESOURCES'", "'VALIDATION'", + "'VALUE'", "'VARIABLES'", "'VIEW'", "'VIRTUAL'", "'VISIBLE'", "'WAIT'", + "'WARNINGS'", "'WITHOUT'", "'WORK'", "'WRAPPER'", "'X509'", "'XA'", "'XML'", + "'EUR'", "'USA'", "'JIS'", "'ISO'", "'INTERNAL'", "'QUARTER'", "'MONTH'", + "'DAY'", "'HOUR'", "'MINUTE'", "'WEEK'", "'SECOND'", "'MICROSECOND'", "'TABLES'", + "'ROUTINE'", "'EXECUTE'", "'FILE'", "'PROCESS'", "'RELOAD'", "'SHUTDOWN'", + "'SUPER'", "'PRIVILEGES'", "'APPLICATION_PASSWORD_ADMIN'", "'AUDIT_ADMIN'", + "'BACKUP_ADMIN'", "'BINLOG_ADMIN'", "'BINLOG_ENCRYPTION_ADMIN'", "'CLONE_ADMIN'", + "'CONNECTION_ADMIN'", "'ENCRYPTION_KEY_ADMIN'", "'FIREWALL_ADMIN'", "'FIREWALL_USER'", + "'FLUSH_OPTIMIZER_COSTS'", "'FLUSH_STATUS'", "'FLUSH_TABLES'", "'FLUSH_USER_RESOURCES'", + "'GROUP_REPLICATION_ADMIN'", "'INNODB_REDO_LOG_ARCHIVE'", "'INNODB_REDO_LOG_ENABLE'", + "'NDB_STORED_USER'", "'PERSIST_RO_VARIABLES_ADMIN'", "'REPLICATION_APPLIER'", + "'REPLICATION_SLAVE_ADMIN'", "'RESOURCE_GROUP_ADMIN'", "'RESOURCE_GROUP_USER'", + "'ROLE_ADMIN'", "'SERVICE_CONNECTION_ADMIN'", "", "'SET_USER_ID'", "'SHOW_ROUTINE'", + "'SYSTEM_VARIABLES_ADMIN'", "'TABLE_ENCRYPTION_ADMIN'", "'VERSION_TOKEN_ADMIN'", + "'XA_RECOVER_ADMIN'", "'ARMSCII8'", "'ASCII'", "'BIG5'", "'CP1250'", "'CP1251'", + "'CP1256'", "'CP1257'", "'CP850'", "'CP852'", "'CP866'", "'CP932'", "'DEC8'", + "'EUCJPMS'", "'EUCKR'", "'GB2312'", "'GBK'", "'GEOSTD8'", "'GREEK'", "'HEBREW'", + "'HP8'", "'KEYBCS2'", "'KOI8R'", "'KOI8U'", "'LATIN1'", "'LATIN2'", "'LATIN5'", + "'LATIN7'", "'MACCE'", "'MACROMAN'", "'SJIS'", "'SWE7'", "'TIS620'", "'UCS2'", + "'UJIS'", "'UTF16'", "'UTF16LE'", "'UTF32'", "'UTF8'", "'UTF8MB3'", "'UTF8MB4'", + "'ARCHIVE'", "'BLACKHOLE'", "'CSV'", "'FEDERATED'", "'INNODB'", "'MEMORY'", + "'MRG_MYISAM'", "'MYISAM'", "'NDB'", "'NDBCLUSTER'", "'PERFORMANCE_SCHEMA'", + "'TOKUDB'", "'REPEATABLE'", "'COMMITTED'", "'UNCOMMITTED'", "'SERIALIZABLE'", + "'GEOMETRYCOLLECTION'", "'GEOMCOLLECTION'", "'GEOMETRY'", "'LINESTRING'", + "'MULTILINESTRING'", "'MULTIPOINT'", "'MULTIPOLYGON'", "'POINT'", "'POLYGON'", + "'ABS'", "'ACOS'", "'ADDDATE'", "'ADDTIME'", "'AES_DECRYPT'", "'AES_ENCRYPT'", + "'AREA'", "'ASBINARY'", "'ASIN'", "'ASTEXT'", "'ASWKB'", "'ASWKT'", "'ASYMMETRIC_DECRYPT'", + "'ASYMMETRIC_DERIVE'", "'ASYMMETRIC_ENCRYPT'", "'ASYMMETRIC_SIGN'", "'ASYMMETRIC_VERIFY'", + "'ATAN'", "'ATAN2'", "'BENCHMARK'", "'BIN'", "'BIT_COUNT'", "'BIT_LENGTH'", + "'BUFFER'", "'CATALOG_NAME'", "'CEIL'", "'CEILING'", "'CENTROID'", "'CHARACTER_LENGTH'", + "'CHARSET'", "'CHAR_LENGTH'", "'COERCIBILITY'", "'COLLATION'", "'COMPRESS'", + "'CONCAT'", "'CONCAT_WS'", "'CONNECTION_ID'", "'CONV'", "'CONVERT_TZ'", + "'COS'", "'COT'", "'CRC32'", "'CREATE_ASYMMETRIC_PRIV_KEY'", "'CREATE_ASYMMETRIC_PUB_KEY'", + "'CREATE_DH_PARAMETERS'", "'CREATE_DIGEST'", "'CROSSES'", "'DATEDIFF'", + "'DATE_FORMAT'", "'DAYNAME'", "'DAYOFMONTH'", "'DAYOFWEEK'", "'DAYOFYEAR'", + "'DECODE'", "'DEGREES'", "'DES_DECRYPT'", "'DES_ENCRYPT'", "'DIMENSION'", + "'DISJOINT'", "'ELT'", "'ENCODE'", "'ENCRYPT'", "'ENDPOINT'", "'ENVELOPE'", + "'EQUALS'", "'EXP'", "'EXPORT_SET'", "'EXTERIORRING'", "'EXTRACTVALUE'", + "'FIELD'", "'FIND_IN_SET'", "'FLOOR'", "'FORMAT'", "'FOUND_ROWS'", "'FROM_BASE64'", + "'FROM_DAYS'", "'FROM_UNIXTIME'", "'GEOMCOLLFROMTEXT'", "'GEOMCOLLFROMWKB'", + "'GEOMETRYCOLLECTIONFROMTEXT'", "'GEOMETRYCOLLECTIONFROMWKB'", "'GEOMETRYFROMTEXT'", + "'GEOMETRYFROMWKB'", "'GEOMETRYN'", "'GEOMETRYTYPE'", "'GEOMFROMTEXT'", + "'GEOMFROMWKB'", "'GET_FORMAT'", "'GET_LOCK'", "'GLENGTH'", "'GREATEST'", + "'GTID_SUBSET'", "'GTID_SUBTRACT'", "'HEX'", "'IFNULL'", "'INET6_ATON'", + "'INET6_NTOA'", "'INET_ATON'", "'INET_NTOA'", "'INSTR'", "'INTERIORRINGN'", + "'INTERSECTS'", "'ISCLOSED'", "'ISEMPTY'", "'ISNULL'", "'ISSIMPLE'", "'IS_FREE_LOCK'", + "'IS_IPV4'", "'IS_IPV4_COMPAT'", "'IS_IPV4_MAPPED'", "'IS_IPV6'", "'IS_USED_LOCK'", + "'LAST_INSERT_ID'", "'LCASE'", "'LEAST'", "'LENGTH'", "'LINEFROMTEXT'", + "'LINEFROMWKB'", "'LINESTRINGFROMTEXT'", "'LINESTRINGFROMWKB'", "'LN'", + "'LOAD_FILE'", "'LOCATE'", "'LOG'", "'LOG10'", "'LOG2'", "'LOWER'", "'LPAD'", + "'LTRIM'", "'MAKEDATE'", "'MAKETIME'", "'MAKE_SET'", "'MASTER_POS_WAIT'", + "'MBRCONTAINS'", "'MBRDISJOINT'", "'MBREQUAL'", "'MBRINTERSECTS'", "'MBROVERLAPS'", + "'MBRTOUCHES'", "'MBRWITHIN'", "'MD5'", "'MLINEFROMTEXT'", "'MLINEFROMWKB'", + "'MONTHNAME'", "'MPOINTFROMTEXT'", "'MPOINTFROMWKB'", "'MPOLYFROMTEXT'", + "'MPOLYFROMWKB'", "'MULTILINESTRINGFROMTEXT'", "'MULTILINESTRINGFROMWKB'", + "'MULTIPOINTFROMTEXT'", "'MULTIPOINTFROMWKB'", "'MULTIPOLYGONFROMTEXT'", + "'MULTIPOLYGONFROMWKB'", "'NAME_CONST'", "'NULLIF'", "'NUMGEOMETRIES'", + "'NUMINTERIORRINGS'", "'NUMPOINTS'", "'OCT'", "'OCTET_LENGTH'", "'ORD'", + "'OVERLAPS'", "'PERIOD_ADD'", "'PERIOD_DIFF'", "'PI'", "'POINTFROMTEXT'", + "'POINTFROMWKB'", "'POINTN'", "'POLYFROMTEXT'", "'POLYFROMWKB'", "'POLYGONFROMTEXT'", + "'POLYGONFROMWKB'", "'POW'", "'POWER'", "'QUOTE'", "'RADIANS'", "'RAND'", + "'RANDOM_BYTES'", "'RELEASE_LOCK'", "'REVERSE'", "'ROUND'", "'ROW_COUNT'", + "'RPAD'", "'RTRIM'", "'SEC_TO_TIME'", "'SESSION_USER'", "'SHA'", "'SHA1'", + "'SHA2'", "'SCHEMA_NAME'", "'SIGN'", "'SIN'", "'SLEEP'", "'SOUNDEX'", "'SQL_THREAD_WAIT_AFTER_GTIDS'", + "'SQRT'", "'SRID'", "'STARTPOINT'", "'STRCMP'", "'STR_TO_DATE'", "'ST_AREA'", + "'ST_ASBINARY'", "'ST_ASTEXT'", "'ST_ASWKB'", "'ST_ASWKT'", "'ST_BUFFER'", + "'ST_CENTROID'", "'ST_CONTAINS'", "'ST_CROSSES'", "'ST_DIFFERENCE'", "'ST_DIMENSION'", + "'ST_DISJOINT'", "'ST_DISTANCE'", "'ST_ENDPOINT'", "'ST_ENVELOPE'", "'ST_EQUALS'", + "'ST_EXTERIORRING'", "'ST_GEOMCOLLFROMTEXT'", "'ST_GEOMCOLLFROMTXT'", "'ST_GEOMCOLLFROMWKB'", + "'ST_GEOMETRYCOLLECTIONFROMTEXT'", "'ST_GEOMETRYCOLLECTIONFROMWKB'", "'ST_GEOMETRYFROMTEXT'", + "'ST_GEOMETRYFROMWKB'", "'ST_GEOMETRYN'", "'ST_GEOMETRYTYPE'", "'ST_GEOMFROMTEXT'", + "'ST_GEOMFROMWKB'", "'ST_INTERIORRINGN'", "'ST_INTERSECTION'", "'ST_INTERSECTS'", + "'ST_ISCLOSED'", "'ST_ISEMPTY'", "'ST_ISSIMPLE'", "'ST_LINEFROMTEXT'", + "'ST_LINEFROMWKB'", "'ST_LINESTRINGFROMTEXT'", "'ST_LINESTRINGFROMWKB'", + "'ST_NUMGEOMETRIES'", "'ST_NUMINTERIORRING'", "'ST_NUMINTERIORRINGS'", + "'ST_NUMPOINTS'", "'ST_OVERLAPS'", "'ST_POINTFROMTEXT'", "'ST_POINTFROMWKB'", + "'ST_POINTN'", "'ST_POLYFROMTEXT'", "'ST_POLYFROMWKB'", "'ST_POLYGONFROMTEXT'", + "'ST_POLYGONFROMWKB'", "'ST_SRID'", "'ST_STARTPOINT'", "'ST_SYMDIFFERENCE'", + "'ST_TOUCHES'", "'ST_UNION'", "'ST_WITHIN'", "'ST_X'", "'ST_Y'", "'SUBDATE'", + "'SUBSTRING_INDEX'", "'SUBTIME'", "'SYSTEM_USER'", "'TAN'", "'TIMEDIFF'", + "'TIMESTAMPADD'", "'TIMESTAMPDIFF'", "'TIME_FORMAT'", "'TIME_TO_SEC'", + "'TOUCHES'", "'TO_BASE64'", "'TO_DAYS'", "'TO_SECONDS'", "'UCASE'", "'UNCOMPRESS'", + "'UNCOMPRESSED_LENGTH'", "'UNHEX'", "'UNIX_TIMESTAMP'", "'UPDATEXML'", + "'UPPER'", "'UUID'", "'UUID_SHORT'", "'VALIDATE_PASSWORD_STRENGTH'", "'VERSION'", + "'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'", "'WEEKDAY'", "'WEEKOFYEAR'", "'WEIGHT_STRING'", + "'WITHIN'", "'YEARWEEK'", "'Y'", "'X'", "':='", "'+='", "'-='", "'*='", + "'/='", "'%='", "'&='", "'^='", "'|='", "'*'", "'/'", "'%'", "'+'", "'--'", + "'-'", "'DIV'", "'MOD'", "'='", "'>'", "'<'", "'!'", "'~'", "'|'", "'&'", + "'^'", "'.'", "'('", "')'", "','", "';'", "'@'", "'0'", "'1'", "'2'", "'''", + "'\"'", "'`'", "':'", +} +var symbolicNames = []string{ + "", "SPACE", "SPEC_MYSQL_COMMENT", "COMMENT_INPUT", "LINE_COMMENT", "ADD", + "ALL", "ALTER", "ALWAYS", "ANALYZE", "AND", "AS", "ASC", "BEFORE", "BETWEEN", + "BOTH", "BY", "CALL", "CASCADE", "CASE", "CAST", "CHANGE", "CHARACTER", + "CHECK", "COLLATE", "COLUMN", "CONDITION", "CONSTRAINT", "CONTINUE", "CONVERT", + "CREATE", "CROSS", "CURRENT", "CURRENT_USER", "CURSOR", "DATABASE", "DATABASES", + "DECLARE", "DEFAULT", "DELAYED", "DELETE", "DESC", "DESCRIBE", "DETERMINISTIC", + "DIAGNOSTICS", "DISTINCT", "DISTINCTROW", "DROP", "EACH", "ELSE", "ELSEIF", + "EMPTY", "ENCLOSED", "ESCAPED", "EXISTS", "EXIT", "EXPLAIN", "FALSE", "FETCH", + "FOR", "FORCE", "FOREIGN", "FROM", "FULLTEXT", "GENERATED", "GET", "GRANT", + "GROUP", "HAVING", "HIGH_PRIORITY", "IF", "IGNORE", "IN", "INDEX", "INFILE", + "INNER", "INOUT", "INSERT", "INTERVAL", "INTO", "IS", "ITERATE", "JOIN", + "KEY", "KEYS", "KILL", "LEADING", "LEAVE", "LEFT", "LIKE", "LIMIT", "LINEAR", + "LINES", "LOAD", "LOCK", "LOOP", "LOW_PRIORITY", "MASTER_BIND", "MASTER_SSL_VERIFY_SERVER_CERT", + "MATCH", "MAXVALUE", "MODIFIES", "NATURAL", "NOT", "NO_WRITE_TO_BINLOG", + "NULL_LITERAL", "NULL", "NUMBER", "ON", "OPTIMIZE", "OPTION", "OPTIONALLY", + "OR", "ORDER", "OUT", "OUTER", "OUTFILE", "PARTITION", "PRIMARY", "PROCEDURE", + "PURGE", "RANGE", "READ", "READS", "REFERENCES", "REGEXP", "RELEASE", "RENAME", + "REPEAT", "REPLACE", "REQUIRE", "RESIGNAL", "RESTRICT", "RETURN", "REVOKE", + "RIGHT", "RLIKE", "SCHEMA", "SCHEMAS", "SELECT", "SET", "SEPARATOR", "SHOW", + "SIGNAL", "SPATIAL", "SQL", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", "SQL_BIG_RESULT", + "SQL_CALC_FOUND_ROWS", "SQL_SMALL_RESULT", "SSL", "STACKED", "STARTING", + "STRAIGHT_JOIN", "TABLE", "TERMINATED", "THEN", "TO", "TRAILING", "TRIGGER", + "TRUE", "UNDO", "UNION", "UNIQUE", "UNLOCK", "UNSIGNED", "UPDATE", "USAGE", + "USE", "USING", "VALUES", "WHEN", "WHERE", "WHILE", "WITH", "WRITE", "XOR", + "ZEROFILL", "TINYINT", "SMALLINT", "MEDIUMINT", "MIDDLEINT", "INT", "INT1", + "INT2", "INT3", "INT4", "INT8", "INTEGER", "BIGINT", "REAL", "DOUBLE", + "PRECISION", "FLOAT", "FLOAT4", "FLOAT8", "DECIMAL", "DEC", "NUMERIC", + "DATE", "TIME", "TIMESTAMP", "DATETIME", "YEAR", "CHAR", "VARCHAR", "NVARCHAR", + "NATIONAL", "BINARY", "VARBINARY", "TINYBLOB", "BLOB", "MEDIUMBLOB", "LONG", + "LONGBLOB", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT", "ENUM", "VARYING", + "SERIAL", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", "HOUR_MINUTE", + "HOUR_SECOND", "MINUTE_SECOND", "SECOND_MICROSECOND", "MINUTE_MICROSECOND", + "HOUR_MICROSECOND", "DAY_MICROSECOND", "JSON_ARRAY", "JSON_OBJECT", "JSON_QUOTE", + "JSON_CONTAINS", "JSON_CONTAINS_PATH", "JSON_EXTRACT", "JSON_KEYS", "JSON_OVERLAPS", + "JSON_SEARCH", "JSON_VALUE", "JSON_ARRAY_APPEND", "JSON_ARRAY_INSERT", + "JSON_INSERT", "JSON_MERGE", "JSON_MERGE_PATCH", "JSON_MERGE_PRESERVE", + "JSON_REMOVE", "JSON_REPLACE", "JSON_SET", "JSON_UNQUOTE", "JSON_DEPTH", + "JSON_LENGTH", "JSON_TYPE", "JSON_VALID", "JSON_TABLE", "JSON_SCHEMA_VALID", + "JSON_SCHEMA_VALIDATION_REPORT", "JSON_PRETTY", "JSON_STORAGE_FREE", "JSON_STORAGE_SIZE", + "JSON_ARRAYAGG", "JSON_OBJECTAGG", "AVG", "BIT_AND", "BIT_OR", "BIT_XOR", + "COUNT", "GROUP_CONCAT", "MAX", "MIN", "STD", "STDDEV", "STDDEV_POP", "STDDEV_SAMP", + "SUM", "VAR_POP", "VAR_SAMP", "VARIANCE", "CURRENT_DATE", "CURRENT_TIME", + "CURRENT_TIMESTAMP", "LOCALTIME", "CURDATE", "CURTIME", "DATE_ADD", "DATE_SUB", + "EXTRACT", "LOCALTIMESTAMP", "NOW", "POSITION", "SUBSTR", "SUBSTRING", + "SYSDATE", "TRIM", "UTC_DATE", "UTC_TIME", "UTC_TIMESTAMP", "ACCOUNT", + "ACTION", "AFTER", "AGGREGATE", "ALGORITHM", "ANY", "AT", "AUTHORS", "AUTOCOMMIT", + "AUTOEXTEND_SIZE", "AUTO_INCREMENT", "AVG_ROW_LENGTH", "BEGIN", "BINLOG", + "BIT", "BLOCK", "BOOL", "BOOLEAN", "BTREE", "CACHE", "CASCADED", "CHAIN", + "CHANGED", "CHANNEL", "CHECKSUM", "PAGE_CHECKSUM", "CIPHER", "CLASS_ORIGIN", + "CLIENT", "CLOSE", "COALESCE", "CODE", "COLUMNS", "COLUMN_FORMAT", "COLUMN_NAME", + "COMMENT", "COMMIT", "COMPACT", "COMPLETION", "COMPRESSED", "COMPRESSION", + "CONCURRENT", "CONNECTION", "CONSISTENT", "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", + "CONSTRAINT_NAME", "CONTAINS", "CONTEXT", "CONTRIBUTORS", "COPY", "CPU", + "CURSOR_NAME", "DATA", "DATAFILE", "DEALLOCATE", "DEFAULT_AUTH", "DEFINER", + "DELAY_KEY_WRITE", "DES_KEY_FILE", "DIRECTORY", "DISABLE", "DISCARD", "DISK", + "DO", "DUMPFILE", "DUPLICATE", "DYNAMIC", "ENABLE", "ENCRYPTION", "END", + "ENDS", "ENGINE", "ENGINES", "ERROR", "ERRORS", "ESCAPE", "EVEN", "EVENT", + "EVENTS", "EVERY", "EXCHANGE", "EXCLUSIVE", "EXPIRE", "EXPORT", "EXTENDED", + "EXTENT_SIZE", "FAST", "FAULTS", "FIELDS", "FILE_BLOCK_SIZE", "FILTER", + "FIRST", "FIXED", "FLUSH", "FOLLOWS", "FOUND", "FULL", "FUNCTION", "GENERAL", + "GLOBAL", "GRANTS", "GROUP_REPLICATION", "HANDLER", "HASH", "HELP", "HOST", + "HOSTS", "IDENTIFIED", "IGNORE_SERVER_IDS", "IMPORT", "INDEXES", "INITIAL_SIZE", + "INPLACE", "INSERT_METHOD", "INSTALL", "INSTANCE", "INVISIBLE", "INVOKER", + "IO", "IO_THREAD", "IPC", "ISOLATION", "ISSUER", "JSON", "KEY_BLOCK_SIZE", + "LANGUAGE", "LAST", "LEAVES", "LESS", "LEVEL", "LIST", "LOCAL", "LOGFILE", + "LOGS", "MASTER", "MASTER_AUTO_POSITION", "MASTER_CONNECT_RETRY", "MASTER_DELAY", + "MASTER_HEARTBEAT_PERIOD", "MASTER_HOST", "MASTER_LOG_FILE", "MASTER_LOG_POS", + "MASTER_PASSWORD", "MASTER_PORT", "MASTER_RETRY_COUNT", "MASTER_SSL", "MASTER_SSL_CA", + "MASTER_SSL_CAPATH", "MASTER_SSL_CERT", "MASTER_SSL_CIPHER", "MASTER_SSL_CRL", + "MASTER_SSL_CRLPATH", "MASTER_SSL_KEY", "MASTER_TLS_VERSION", "MASTER_USER", + "MAX_CONNECTIONS_PER_HOUR", "MAX_QUERIES_PER_HOUR", "MAX_ROWS", "MAX_SIZE", + "MAX_UPDATES_PER_HOUR", "MAX_USER_CONNECTIONS", "MEDIUM", "MEMBER", "MERGE", + "MESSAGE_TEXT", "MID", "MIGRATE", "MIN_ROWS", "MODE", "MODIFY", "MUTEX", + "MYSQL", "MYSQL_ERRNO", "NAME", "NAMES", "NCHAR", "NEVER", "NEXT", "NO", + "NODEGROUP", "NONE", "OFFLINE", "OFFSET", "OF", "OJ", "OLD_PASSWORD", "ONE", + "ONLINE", "ONLY", "OPEN", "OPTIMIZER_COSTS", "OPTIONS", "OWNER", "PACK_KEYS", + "PAGE", "PARSER", "PARTIAL", "PARTITIONING", "PARTITIONS", "PASSWORD", + "PHASE", "PLUGIN", "PLUGIN_DIR", "PLUGINS", "PORT", "PRECEDES", "PREPARE", + "PRESERVE", "PREV", "PROCESSLIST", "PROFILE", "PROFILES", "PROXY", "QUERY", + "QUICK", "REBUILD", "RECOVER", "REDO_BUFFER_SIZE", "REDUNDANT", "RELAY", + "RELAY_LOG_FILE", "RELAY_LOG_POS", "RELAYLOG", "REMOVE", "REORGANIZE", + "REPAIR", "REPLICATE_DO_DB", "REPLICATE_DO_TABLE", "REPLICATE_IGNORE_DB", + "REPLICATE_IGNORE_TABLE", "REPLICATE_REWRITE_DB", "REPLICATE_WILD_DO_TABLE", + "REPLICATE_WILD_IGNORE_TABLE", "REPLICATION", "RESET", "RESUME", "RETURNED_SQLSTATE", + "RETURNING", "RETURNS", "ROLE", "ROLLBACK", "ROLLUP", "ROTATE", "ROW", + "ROWS", "ROW_FORMAT", "SAVEPOINT", "SCHEDULE", "SECURITY", "SERVER", "SESSION", + "SHARE", "SHARED", "SIGNED", "SIMPLE", "SLAVE", "SLOW", "SNAPSHOT", "SOCKET", + "SOME", "SONAME", "SOUNDS", "SOURCE", "SQL_AFTER_GTIDS", "SQL_AFTER_MTS_GAPS", + "SQL_BEFORE_GTIDS", "SQL_BUFFER_RESULT", "SQL_CACHE", "SQL_NO_CACHE", "SQL_THREAD", + "START", "STARTS", "STATS_AUTO_RECALC", "STATS_PERSISTENT", "STATS_SAMPLE_PAGES", + "STATUS", "STOP", "STORAGE", "STORED", "STRING", "SUBCLASS_ORIGIN", "SUBJECT", + "SUBPARTITION", "SUBPARTITIONS", "SUSPEND", "SWAPS", "SWITCHES", "TABLE_NAME", + "TABLESPACE", "TEMPORARY", "TEMPTABLE", "THAN", "TRADITIONAL", "TRANSACTION", + "TRANSACTIONAL", "TRIGGERS", "TRUNCATE", "UNDEFINED", "UNDOFILE", "UNDO_BUFFER_SIZE", + "UNINSTALL", "UNKNOWN", "UNTIL", "UPGRADE", "USER", "USE_FRM", "USER_RESOURCES", + "VALIDATION", "VALUE", "VARIABLES", "VIEW", "VIRTUAL", "VISIBLE", "WAIT", + "WARNINGS", "WITHOUT", "WORK", "WRAPPER", "X509", "XA", "XML", "EUR", "USA", + "JIS", "ISO", "INTERNAL", "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", + "WEEK", "SECOND", "MICROSECOND", "TABLES", "ROUTINE", "EXECUTE", "FILE", + "PROCESS", "RELOAD", "SHUTDOWN", "SUPER", "PRIVILEGES", "APPLICATION_PASSWORD_ADMIN", + "AUDIT_ADMIN", "BACKUP_ADMIN", "BINLOG_ADMIN", "BINLOG_ENCRYPTION_ADMIN", + "CLONE_ADMIN", "CONNECTION_ADMIN", "ENCRYPTION_KEY_ADMIN", "FIREWALL_ADMIN", + "FIREWALL_USER", "FLUSH_OPTIMIZER_COSTS", "FLUSH_STATUS", "FLUSH_TABLES", + "FLUSH_USER_RESOURCES", "GROUP_REPLICATION_ADMIN", "INNODB_REDO_LOG_ARCHIVE", + "INNODB_REDO_LOG_ENABLE", "NDB_STORED_USER", "PERSIST_RO_VARIABLES_ADMIN", + "REPLICATION_APPLIER", "REPLICATION_SLAVE_ADMIN", "RESOURCE_GROUP_ADMIN", + "RESOURCE_GROUP_USER", "ROLE_ADMIN", "SERVICE_CONNECTION_ADMIN", "SESSION_VARIABLES_ADMIN", + "SET_USER_ID", "SHOW_ROUTINE", "SYSTEM_VARIABLES_ADMIN", "TABLE_ENCRYPTION_ADMIN", + "VERSION_TOKEN_ADMIN", "XA_RECOVER_ADMIN", "ARMSCII8", "ASCII", "BIG5", + "CP1250", "CP1251", "CP1256", "CP1257", "CP850", "CP852", "CP866", "CP932", + "DEC8", "EUCJPMS", "EUCKR", "GB2312", "GBK", "GEOSTD8", "GREEK", "HEBREW", + "HP8", "KEYBCS2", "KOI8R", "KOI8U", "LATIN1", "LATIN2", "LATIN5", "LATIN7", + "MACCE", "MACROMAN", "SJIS", "SWE7", "TIS620", "UCS2", "UJIS", "UTF16", + "UTF16LE", "UTF32", "UTF8", "UTF8MB3", "UTF8MB4", "ARCHIVE", "BLACKHOLE", + "CSV", "FEDERATED", "INNODB", "MEMORY", "MRG_MYISAM", "MYISAM", "NDB", + "NDBCLUSTER", "PERFORMANCE_SCHEMA", "TOKUDB", "REPEATABLE", "COMMITTED", + "UNCOMMITTED", "SERIALIZABLE", "GEOMETRYCOLLECTION", "GEOMCOLLECTION", + "GEOMETRY", "LINESTRING", "MULTILINESTRING", "MULTIPOINT", "MULTIPOLYGON", + "POINT", "POLYGON", "ABS", "ACOS", "ADDDATE", "ADDTIME", "AES_DECRYPT", + "AES_ENCRYPT", "AREA", "ASBINARY", "ASIN", "ASTEXT", "ASWKB", "ASWKT", + "ASYMMETRIC_DECRYPT", "ASYMMETRIC_DERIVE", "ASYMMETRIC_ENCRYPT", "ASYMMETRIC_SIGN", + "ASYMMETRIC_VERIFY", "ATAN", "ATAN2", "BENCHMARK", "BIN", "BIT_COUNT", + "BIT_LENGTH", "BUFFER", "CATALOG_NAME", "CEIL", "CEILING", "CENTROID", + "CHARACTER_LENGTH", "CHARSET", "CHAR_LENGTH", "COERCIBILITY", "COLLATION", + "COMPRESS", "CONCAT", "CONCAT_WS", "CONNECTION_ID", "CONV", "CONVERT_TZ", + "COS", "COT", "CRC32", "CREATE_ASYMMETRIC_PRIV_KEY", "CREATE_ASYMMETRIC_PUB_KEY", + "CREATE_DH_PARAMETERS", "CREATE_DIGEST", "CROSSES", "DATEDIFF", "DATE_FORMAT", + "DAYNAME", "DAYOFMONTH", "DAYOFWEEK", "DAYOFYEAR", "DECODE", "DEGREES", + "DES_DECRYPT", "DES_ENCRYPT", "DIMENSION", "DISJOINT", "ELT", "ENCODE", + "ENCRYPT", "ENDPOINT", "ENVELOPE", "EQUALS", "EXP", "EXPORT_SET", "EXTERIORRING", + "EXTRACTVALUE", "FIELD", "FIND_IN_SET", "FLOOR", "FORMAT", "FOUND_ROWS", + "FROM_BASE64", "FROM_DAYS", "FROM_UNIXTIME", "GEOMCOLLFROMTEXT", "GEOMCOLLFROMWKB", + "GEOMETRYCOLLECTIONFROMTEXT", "GEOMETRYCOLLECTIONFROMWKB", "GEOMETRYFROMTEXT", + "GEOMETRYFROMWKB", "GEOMETRYN", "GEOMETRYTYPE", "GEOMFROMTEXT", "GEOMFROMWKB", + "GET_FORMAT", "GET_LOCK", "GLENGTH", "GREATEST", "GTID_SUBSET", "GTID_SUBTRACT", + "HEX", "IFNULL", "INET6_ATON", "INET6_NTOA", "INET_ATON", "INET_NTOA", + "INSTR", "INTERIORRINGN", "INTERSECTS", "ISCLOSED", "ISEMPTY", "ISNULL", + "ISSIMPLE", "IS_FREE_LOCK", "IS_IPV4", "IS_IPV4_COMPAT", "IS_IPV4_MAPPED", + "IS_IPV6", "IS_USED_LOCK", "LAST_INSERT_ID", "LCASE", "LEAST", "LENGTH", + "LINEFROMTEXT", "LINEFROMWKB", "LINESTRINGFROMTEXT", "LINESTRINGFROMWKB", + "LN", "LOAD_FILE", "LOCATE", "LOG", "LOG10", "LOG2", "LOWER", "LPAD", "LTRIM", + "MAKEDATE", "MAKETIME", "MAKE_SET", "MASTER_POS_WAIT", "MBRCONTAINS", "MBRDISJOINT", + "MBREQUAL", "MBRINTERSECTS", "MBROVERLAPS", "MBRTOUCHES", "MBRWITHIN", + "MD5", "MLINEFROMTEXT", "MLINEFROMWKB", "MONTHNAME", "MPOINTFROMTEXT", + "MPOINTFROMWKB", "MPOLYFROMTEXT", "MPOLYFROMWKB", "MULTILINESTRINGFROMTEXT", + "MULTILINESTRINGFROMWKB", "MULTIPOINTFROMTEXT", "MULTIPOINTFROMWKB", "MULTIPOLYGONFROMTEXT", + "MULTIPOLYGONFROMWKB", "NAME_CONST", "NULLIF", "NUMGEOMETRIES", "NUMINTERIORRINGS", + "NUMPOINTS", "OCT", "OCTET_LENGTH", "ORD", "OVERLAPS", "PERIOD_ADD", "PERIOD_DIFF", + "PI", "POINTFROMTEXT", "POINTFROMWKB", "POINTN", "POLYFROMTEXT", "POLYFROMWKB", + "POLYGONFROMTEXT", "POLYGONFROMWKB", "POW", "POWER", "QUOTE", "RADIANS", + "RAND", "RANDOM_BYTES", "RELEASE_LOCK", "REVERSE", "ROUND", "ROW_COUNT", + "RPAD", "RTRIM", "SEC_TO_TIME", "SESSION_USER", "SHA", "SHA1", "SHA2", + "SCHEMA_NAME", "SIGN", "SIN", "SLEEP", "SOUNDEX", "SQL_THREAD_WAIT_AFTER_GTIDS", + "SQRT", "SRID", "STARTPOINT", "STRCMP", "STR_TO_DATE", "ST_AREA", "ST_ASBINARY", + "ST_ASTEXT", "ST_ASWKB", "ST_ASWKT", "ST_BUFFER", "ST_CENTROID", "ST_CONTAINS", + "ST_CROSSES", "ST_DIFFERENCE", "ST_DIMENSION", "ST_DISJOINT", "ST_DISTANCE", + "ST_ENDPOINT", "ST_ENVELOPE", "ST_EQUALS", "ST_EXTERIORRING", "ST_GEOMCOLLFROMTEXT", + "ST_GEOMCOLLFROMTXT", "ST_GEOMCOLLFROMWKB", "ST_GEOMETRYCOLLECTIONFROMTEXT", + "ST_GEOMETRYCOLLECTIONFROMWKB", "ST_GEOMETRYFROMTEXT", "ST_GEOMETRYFROMWKB", + "ST_GEOMETRYN", "ST_GEOMETRYTYPE", "ST_GEOMFROMTEXT", "ST_GEOMFROMWKB", + "ST_INTERIORRINGN", "ST_INTERSECTION", "ST_INTERSECTS", "ST_ISCLOSED", + "ST_ISEMPTY", "ST_ISSIMPLE", "ST_LINEFROMTEXT", "ST_LINEFROMWKB", "ST_LINESTRINGFROMTEXT", + "ST_LINESTRINGFROMWKB", "ST_NUMGEOMETRIES", "ST_NUMINTERIORRING", "ST_NUMINTERIORRINGS", + "ST_NUMPOINTS", "ST_OVERLAPS", "ST_POINTFROMTEXT", "ST_POINTFROMWKB", "ST_POINTN", + "ST_POLYFROMTEXT", "ST_POLYFROMWKB", "ST_POLYGONFROMTEXT", "ST_POLYGONFROMWKB", + "ST_SRID", "ST_STARTPOINT", "ST_SYMDIFFERENCE", "ST_TOUCHES", "ST_UNION", + "ST_WITHIN", "ST_X", "ST_Y", "SUBDATE", "SUBSTRING_INDEX", "SUBTIME", "SYSTEM_USER", + "TAN", "TIMEDIFF", "TIMESTAMPADD", "TIMESTAMPDIFF", "TIME_FORMAT", "TIME_TO_SEC", + "TOUCHES", "TO_BASE64", "TO_DAYS", "TO_SECONDS", "UCASE", "UNCOMPRESS", + "UNCOMPRESSED_LENGTH", "UNHEX", "UNIX_TIMESTAMP", "UPDATEXML", "UPPER", + "UUID", "UUID_SHORT", "VALIDATE_PASSWORD_STRENGTH", "VERSION", "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", + "WEEKDAY", "WEEKOFYEAR", "WEIGHT_STRING", "WITHIN", "YEARWEEK", "Y_FUNCTION", + "X_FUNCTION", "VAR_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN", "MULT_ASSIGN", + "DIV_ASSIGN", "MOD_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "STAR", + "DIVIDE", "MODULE", "PLUS", "MINUSMINUS", "MINUS", "DIV", "MOD", "EQUAL_SYMBOL", + "GREATER_SYMBOL", "LESS_SYMBOL", "EXCLAMATION_SYMBOL", "BIT_NOT_OP", "BIT_OR_OP", + "BIT_AND_OP", "BIT_XOR_OP", "DOT", "LR_BRACKET", "RR_BRACKET", "COMMA", + "SEMI", "AT_SIGN", "ZERO_DECIMAL", "ONE_DECIMAL", "TWO_DECIMAL", "SINGLE_QUOTE_SYMB", + "DOUBLE_QUOTE_SYMB", "REVERSE_QUOTE_SYMB", "COLON_SYMB", "CHARSET_REVERSE_QOUTE_STRING", + "FILESIZE_LITERAL", "START_NATIONAL_STRING_LITERAL", "STRING_LITERAL", + "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "REAL_LITERAL", "NULL_SPEC_LITERAL", + "BIT_STRING", "STRING_CHARSET_NAME", "DOT_ID", "ID", "REVERSE_QUOTE_ID", + "STRING_USER_NAME", "IP_ADDRESS", "LOCAL_ID", "GLOBAL_ID", "ERROR_RECONGNIGION", +} + +var ruleNames = []string{ + "root", "sqlStatements", "sqlStatement", "emptyStatement", "ddlStatement", + "dmlStatement", "transactionStatement", "replicationStatement", "preparedStatement", + "compoundStatement", "administrationStatement", "utilityStatement", "createDatabase", + "createEvent", "createIndex", "createLogfileGroup", "createProcedure", + "createFunction", "createServer", "createTable", "createTablespaceInnodb", + "createTablespaceNdb", "createTrigger", "createView", "createDatabaseOption", + "ownerStatement", "scheduleExpression", "timestampValue", "intervalExpr", + "intervalType", "enableType", "indexType", "indexOption", "procedureParameter", + "functionParameter", "routineOption", "serverOption", "createDefinitions", + "createDefinition", "columnDefinition", "columnConstraint", "tableConstraint", + "referenceDefinition", "referenceAction", "referenceControlType", "indexColumnDefinition", + "tableOption", "tablespaceStorage", "partitionDefinitions", "partitionFunctionDefinition", + "subpartitionFunctionDefinition", "partitionDefinition", "partitionDefinerAtom", + "partitionDefinerVector", "subpartitionDefinition", "partitionOption", + "alterDatabase", "alterEvent", "alterFunction", "alterInstance", "alterLogfileGroup", + "alterProcedure", "alterServer", "alterTable", "alterTablespace", "alterView", + "alterSpecification", "dropDatabase", "dropEvent", "dropIndex", "dropLogfileGroup", + "dropProcedure", "dropFunction", "dropServer", "dropTable", "dropTablespace", + "dropTrigger", "dropView", "renameTable", "renameTableClause", "truncateTable", + "callStatement", "deleteStatement", "doStatement", "handlerStatement", + "insertStatement", "loadDataStatement", "loadXmlStatement", "replaceStatement", + "selectStatement", "updateStatement", "insertStatementValue", "updatedElement", + "assignmentField", "lockClause", "singleDeleteStatement", "multipleDeleteStatement", + "handlerOpenStatement", "handlerReadIndexStatement", "handlerReadStatement", + "handlerCloseStatement", "singleUpdateStatement", "multipleUpdateStatement", + "orderByClause", "orderByExpression", "tableSources", "tableSource", "tableSourceItem", + "indexHint", "indexHintType", "joinPart", "queryExpression", "queryExpressionNointo", + "querySpecification", "querySpecificationNointo", "unionParenthesis", "unionStatement", + "selectSpec", "selectElements", "selectElement", "selectIntoExpression", + "selectFieldsInto", "selectLinesInto", "fromClause", "groupByClause", "havingClause", + "groupByItem", "limitClause", "limitClauseAtom", "startTransaction", "beginWork", + "commitWork", "rollbackWork", "savepointStatement", "rollbackStatement", + "releaseStatement", "lockTables", "unlockTables", "setAutocommitStatement", + "setTransactionStatement", "transactionMode", "lockTableElement", "lockAction", + "transactionOption", "transactionLevel", "changeMaster", "changeReplicationFilter", + "purgeBinaryLogs", "resetMaster", "resetSlave", "startSlave", "stopSlave", + "startGroupReplication", "stopGroupReplication", "masterOption", "stringMasterOption", + "decimalMasterOption", "boolMasterOption", "channelOption", "replicationFilter", + "tablePair", "threadType", "untilOption", "connectionOption", "gtuidSet", + "xaStartTransaction", "xaEndTransaction", "xaPrepareStatement", "xaCommitWork", + "xaRollbackWork", "xaRecoverWork", "prepareStatement", "executeStatement", + "deallocatePrepare", "routineBody", "blockStatement", "caseStatement", + "ifStatement", "iterateStatement", "leaveStatement", "loopStatement", "repeatStatement", + "returnStatement", "whileStatement", "cursorStatement", "declareVariable", + "declareCondition", "declareCursor", "declareHandler", "handlerConditionValue", + "procedureSqlStatement", "caseAlternative", "elifAlternative", "alterUser", + "createUser", "dropUser", "grantStatement", "grantProxy", "renameUser", + "revokeStatement", "revokeProxy", "setPasswordStatement", "userSpecification", + "userAuthOption", "tlsOption", "userResourceOption", "userPasswordOption", + "userLockOption", "privelegeClause", "privilege", "privilegeLevel", "renameUserClause", + "analyzeTable", "checkTable", "checksumTable", "optimizeTable", "repairTable", + "checkTableOption", "createUdfunction", "installPlugin", "uninstallPlugin", + "setStatement", "showStatement", "variableClause", "showCommonEntity", + "showFilter", "showGlobalInfoClause", "showSchemaEntity", "showProfileType", + "binlogStatement", "cacheIndexStatement", "flushStatement", "killStatement", + "loadIndexIntoCache", "resetStatement", "shutdownStatement", "tableIndexes", + "flushOption", "flushTableOption", "loadedTableIndexes", "simpleDescribeStatement", + "fullDescribeStatement", "helpStatement", "useStatement", "signalStatement", + "resignalStatement", "signalConditionInformation", "diagnosticsStatement", + "diagnosticsConditionInformationName", "describeObjectClause", "fullId", + "tableName", "fullColumnName", "indexColumnName", "userName", "mysqlVariable", + "charsetName", "collationName", "engineName", "uuidSet", "xid", "xuidStringId", + "authPlugin", "uid", "simpleId", "dottedId", "decimalLiteral", "fileSizeLiteral", + "stringLiteral", "booleanLiteral", "hexadecimalLiteral", "nullNotnull", + "constant", "dataType", "collectionOptions", "convertedDataType", "lengthOneDimension", + "lengthTwoDimension", "lengthTwoOptionalDimension", "uidList", "tables", + "indexColumnNames", "expressions", "expressionsWithDefaults", "constants", + "simpleStrings", "userVariables", "defaultValue", "currentTimestamp", "expressionOrDefault", + "ifExists", "ifNotExists", "functionCall", "specificFunction", "caseFuncAlternative", + "levelsInWeightString", "levelInWeightListElement", "aggregateWindowedFunction", + "scalarFunctionName", "passwordFunctionClause", "functionArgs", "functionArg", + "expression", "predicate", "expressionAtom", "unaryOperator", "comparisonOperator", + "logicalOperator", "bitOperator", "mathOperator", "jsonOperator", "charsetNameBase", + "transactionLevelBase", "privilegesBase", "intervalTypeBase", "dataTypeBase", + "keywordsCanBeId", "functionNameBase", +} + +type MySqlParser struct { + *antlr.BaseParser +} + +// NewMySqlParser produces a new parser instance for the optional input antlr.TokenStream. +// +// The *MySqlParser instance produced may be reused by calling the SetInputStream method. +// The initial parser configuration is expensive to construct, and the object is not thread-safe; +// however, if used within a Golang sync.Pool, the construction cost amortizes well and the +// objects can be used in a thread-safe manner. +func NewMySqlParser(input antlr.TokenStream) *MySqlParser { + this := new(MySqlParser) + deserializer := antlr.NewATNDeserializer(nil) + deserializedATN := deserializer.DeserializeFromUInt16(parserATN) + decisionToDFA := make([]*antlr.DFA, len(deserializedATN.DecisionToState)) + for index, ds := range deserializedATN.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(ds, index) + } + this.BaseParser = antlr.NewBaseParser(input) + + this.Interpreter = antlr.NewParserATNSimulator(this, deserializedATN, decisionToDFA, antlr.NewPredictionContextCache()) + this.RuleNames = ruleNames + this.LiteralNames = literalNames + this.SymbolicNames = symbolicNames + this.GrammarFileName = "MySqlParser.g4" + + return this +} + +// MySqlParser tokens. +const ( + MySqlParserEOF = antlr.TokenEOF + MySqlParserSPACE = 1 + MySqlParserSPEC_MYSQL_COMMENT = 2 + MySqlParserCOMMENT_INPUT = 3 + MySqlParserLINE_COMMENT = 4 + MySqlParserADD = 5 + MySqlParserALL = 6 + MySqlParserALTER = 7 + MySqlParserALWAYS = 8 + MySqlParserANALYZE = 9 + MySqlParserAND = 10 + MySqlParserAS = 11 + MySqlParserASC = 12 + MySqlParserBEFORE = 13 + MySqlParserBETWEEN = 14 + MySqlParserBOTH = 15 + MySqlParserBY = 16 + MySqlParserCALL = 17 + MySqlParserCASCADE = 18 + MySqlParserCASE = 19 + MySqlParserCAST = 20 + MySqlParserCHANGE = 21 + MySqlParserCHARACTER = 22 + MySqlParserCHECK = 23 + MySqlParserCOLLATE = 24 + MySqlParserCOLUMN = 25 + MySqlParserCONDITION = 26 + MySqlParserCONSTRAINT = 27 + MySqlParserCONTINUE = 28 + MySqlParserCONVERT = 29 + MySqlParserCREATE = 30 + MySqlParserCROSS = 31 + MySqlParserCURRENT = 32 + MySqlParserCURRENT_USER = 33 + MySqlParserCURSOR = 34 + MySqlParserDATABASE = 35 + MySqlParserDATABASES = 36 + MySqlParserDECLARE = 37 + MySqlParserDEFAULT = 38 + MySqlParserDELAYED = 39 + MySqlParserDELETE = 40 + MySqlParserDESC = 41 + MySqlParserDESCRIBE = 42 + MySqlParserDETERMINISTIC = 43 + MySqlParserDIAGNOSTICS = 44 + MySqlParserDISTINCT = 45 + MySqlParserDISTINCTROW = 46 + MySqlParserDROP = 47 + MySqlParserEACH = 48 + MySqlParserELSE = 49 + MySqlParserELSEIF = 50 + MySqlParserEMPTY = 51 + MySqlParserENCLOSED = 52 + MySqlParserESCAPED = 53 + MySqlParserEXISTS = 54 + MySqlParserEXIT = 55 + MySqlParserEXPLAIN = 56 + MySqlParserFALSE = 57 + MySqlParserFETCH = 58 + MySqlParserFOR = 59 + MySqlParserFORCE = 60 + MySqlParserFOREIGN = 61 + MySqlParserFROM = 62 + MySqlParserFULLTEXT = 63 + MySqlParserGENERATED = 64 + MySqlParserGET = 65 + MySqlParserGRANT = 66 + MySqlParserGROUP = 67 + MySqlParserHAVING = 68 + MySqlParserHIGH_PRIORITY = 69 + MySqlParserIF = 70 + MySqlParserIGNORE = 71 + MySqlParserIN = 72 + MySqlParserINDEX = 73 + MySqlParserINFILE = 74 + MySqlParserINNER = 75 + MySqlParserINOUT = 76 + MySqlParserINSERT = 77 + MySqlParserINTERVAL = 78 + MySqlParserINTO = 79 + MySqlParserIS = 80 + MySqlParserITERATE = 81 + MySqlParserJOIN = 82 + MySqlParserKEY = 83 + MySqlParserKEYS = 84 + MySqlParserKILL = 85 + MySqlParserLEADING = 86 + MySqlParserLEAVE = 87 + MySqlParserLEFT = 88 + MySqlParserLIKE = 89 + MySqlParserLIMIT = 90 + MySqlParserLINEAR = 91 + MySqlParserLINES = 92 + MySqlParserLOAD = 93 + MySqlParserLOCK = 94 + MySqlParserLOOP = 95 + MySqlParserLOW_PRIORITY = 96 + MySqlParserMASTER_BIND = 97 + MySqlParserMASTER_SSL_VERIFY_SERVER_CERT = 98 + MySqlParserMATCH = 99 + MySqlParserMAXVALUE = 100 + MySqlParserMODIFIES = 101 + MySqlParserNATURAL = 102 + MySqlParserNOT = 103 + MySqlParserNO_WRITE_TO_BINLOG = 104 + MySqlParserNULL_LITERAL = 105 + MySqlParserNULL = 106 + MySqlParserNUMBER = 107 + MySqlParserON = 108 + MySqlParserOPTIMIZE = 109 + MySqlParserOPTION = 110 + MySqlParserOPTIONALLY = 111 + MySqlParserOR = 112 + MySqlParserORDER = 113 + MySqlParserOUT = 114 + MySqlParserOUTER = 115 + MySqlParserOUTFILE = 116 + MySqlParserPARTITION = 117 + MySqlParserPRIMARY = 118 + MySqlParserPROCEDURE = 119 + MySqlParserPURGE = 120 + MySqlParserRANGE = 121 + MySqlParserREAD = 122 + MySqlParserREADS = 123 + MySqlParserREFERENCES = 124 + MySqlParserREGEXP = 125 + MySqlParserRELEASE = 126 + MySqlParserRENAME = 127 + MySqlParserREPEAT = 128 + MySqlParserREPLACE = 129 + MySqlParserREQUIRE = 130 + MySqlParserRESIGNAL = 131 + MySqlParserRESTRICT = 132 + MySqlParserRETURN = 133 + MySqlParserREVOKE = 134 + MySqlParserRIGHT = 135 + MySqlParserRLIKE = 136 + MySqlParserSCHEMA = 137 + MySqlParserSCHEMAS = 138 + MySqlParserSELECT = 139 + MySqlParserSET = 140 + MySqlParserSEPARATOR = 141 + MySqlParserSHOW = 142 + MySqlParserSIGNAL = 143 + MySqlParserSPATIAL = 144 + MySqlParserSQL = 145 + MySqlParserSQLEXCEPTION = 146 + MySqlParserSQLSTATE = 147 + MySqlParserSQLWARNING = 148 + MySqlParserSQL_BIG_RESULT = 149 + MySqlParserSQL_CALC_FOUND_ROWS = 150 + MySqlParserSQL_SMALL_RESULT = 151 + MySqlParserSSL = 152 + MySqlParserSTACKED = 153 + MySqlParserSTARTING = 154 + MySqlParserSTRAIGHT_JOIN = 155 + MySqlParserTABLE = 156 + MySqlParserTERMINATED = 157 + MySqlParserTHEN = 158 + MySqlParserTO = 159 + MySqlParserTRAILING = 160 + MySqlParserTRIGGER = 161 + MySqlParserTRUE = 162 + MySqlParserUNDO = 163 + MySqlParserUNION = 164 + MySqlParserUNIQUE = 165 + MySqlParserUNLOCK = 166 + MySqlParserUNSIGNED = 167 + MySqlParserUPDATE = 168 + MySqlParserUSAGE = 169 + MySqlParserUSE = 170 + MySqlParserUSING = 171 + MySqlParserVALUES = 172 + MySqlParserWHEN = 173 + MySqlParserWHERE = 174 + MySqlParserWHILE = 175 + MySqlParserWITH = 176 + MySqlParserWRITE = 177 + MySqlParserXOR = 178 + MySqlParserZEROFILL = 179 + MySqlParserTINYINT = 180 + MySqlParserSMALLINT = 181 + MySqlParserMEDIUMINT = 182 + MySqlParserMIDDLEINT = 183 + MySqlParserINT = 184 + MySqlParserINT1 = 185 + MySqlParserINT2 = 186 + MySqlParserINT3 = 187 + MySqlParserINT4 = 188 + MySqlParserINT8 = 189 + MySqlParserINTEGER = 190 + MySqlParserBIGINT = 191 + MySqlParserREAL = 192 + MySqlParserDOUBLE = 193 + MySqlParserPRECISION = 194 + MySqlParserFLOAT = 195 + MySqlParserFLOAT4 = 196 + MySqlParserFLOAT8 = 197 + MySqlParserDECIMAL = 198 + MySqlParserDEC = 199 + MySqlParserNUMERIC = 200 + MySqlParserDATE = 201 + MySqlParserTIME = 202 + MySqlParserTIMESTAMP = 203 + MySqlParserDATETIME = 204 + MySqlParserYEAR = 205 + MySqlParserCHAR = 206 + MySqlParserVARCHAR = 207 + MySqlParserNVARCHAR = 208 + MySqlParserNATIONAL = 209 + MySqlParserBINARY = 210 + MySqlParserVARBINARY = 211 + MySqlParserTINYBLOB = 212 + MySqlParserBLOB = 213 + MySqlParserMEDIUMBLOB = 214 + MySqlParserLONG = 215 + MySqlParserLONGBLOB = 216 + MySqlParserTINYTEXT = 217 + MySqlParserTEXT = 218 + MySqlParserMEDIUMTEXT = 219 + MySqlParserLONGTEXT = 220 + MySqlParserENUM = 221 + MySqlParserVARYING = 222 + MySqlParserSERIAL = 223 + MySqlParserYEAR_MONTH = 224 + MySqlParserDAY_HOUR = 225 + MySqlParserDAY_MINUTE = 226 + MySqlParserDAY_SECOND = 227 + MySqlParserHOUR_MINUTE = 228 + MySqlParserHOUR_SECOND = 229 + MySqlParserMINUTE_SECOND = 230 + MySqlParserSECOND_MICROSECOND = 231 + MySqlParserMINUTE_MICROSECOND = 232 + MySqlParserHOUR_MICROSECOND = 233 + MySqlParserDAY_MICROSECOND = 234 + MySqlParserJSON_ARRAY = 235 + MySqlParserJSON_OBJECT = 236 + MySqlParserJSON_QUOTE = 237 + MySqlParserJSON_CONTAINS = 238 + MySqlParserJSON_CONTAINS_PATH = 239 + MySqlParserJSON_EXTRACT = 240 + MySqlParserJSON_KEYS = 241 + MySqlParserJSON_OVERLAPS = 242 + MySqlParserJSON_SEARCH = 243 + MySqlParserJSON_VALUE = 244 + MySqlParserJSON_ARRAY_APPEND = 245 + MySqlParserJSON_ARRAY_INSERT = 246 + MySqlParserJSON_INSERT = 247 + MySqlParserJSON_MERGE = 248 + MySqlParserJSON_MERGE_PATCH = 249 + MySqlParserJSON_MERGE_PRESERVE = 250 + MySqlParserJSON_REMOVE = 251 + MySqlParserJSON_REPLACE = 252 + MySqlParserJSON_SET = 253 + MySqlParserJSON_UNQUOTE = 254 + MySqlParserJSON_DEPTH = 255 + MySqlParserJSON_LENGTH = 256 + MySqlParserJSON_TYPE = 257 + MySqlParserJSON_VALID = 258 + MySqlParserJSON_TABLE = 259 + MySqlParserJSON_SCHEMA_VALID = 260 + MySqlParserJSON_SCHEMA_VALIDATION_REPORT = 261 + MySqlParserJSON_PRETTY = 262 + MySqlParserJSON_STORAGE_FREE = 263 + MySqlParserJSON_STORAGE_SIZE = 264 + MySqlParserJSON_ARRAYAGG = 265 + MySqlParserJSON_OBJECTAGG = 266 + MySqlParserAVG = 267 + MySqlParserBIT_AND = 268 + MySqlParserBIT_OR = 269 + MySqlParserBIT_XOR = 270 + MySqlParserCOUNT = 271 + MySqlParserGROUP_CONCAT = 272 + MySqlParserMAX = 273 + MySqlParserMIN = 274 + MySqlParserSTD = 275 + MySqlParserSTDDEV = 276 + MySqlParserSTDDEV_POP = 277 + MySqlParserSTDDEV_SAMP = 278 + MySqlParserSUM = 279 + MySqlParserVAR_POP = 280 + MySqlParserVAR_SAMP = 281 + MySqlParserVARIANCE = 282 + MySqlParserCURRENT_DATE = 283 + MySqlParserCURRENT_TIME = 284 + MySqlParserCURRENT_TIMESTAMP = 285 + MySqlParserLOCALTIME = 286 + MySqlParserCURDATE = 287 + MySqlParserCURTIME = 288 + MySqlParserDATE_ADD = 289 + MySqlParserDATE_SUB = 290 + MySqlParserEXTRACT = 291 + MySqlParserLOCALTIMESTAMP = 292 + MySqlParserNOW = 293 + MySqlParserPOSITION = 294 + MySqlParserSUBSTR = 295 + MySqlParserSUBSTRING = 296 + MySqlParserSYSDATE = 297 + MySqlParserTRIM = 298 + MySqlParserUTC_DATE = 299 + MySqlParserUTC_TIME = 300 + MySqlParserUTC_TIMESTAMP = 301 + MySqlParserACCOUNT = 302 + MySqlParserACTION = 303 + MySqlParserAFTER = 304 + MySqlParserAGGREGATE = 305 + MySqlParserALGORITHM = 306 + MySqlParserANY = 307 + MySqlParserAT = 308 + MySqlParserAUTHORS = 309 + MySqlParserAUTOCOMMIT = 310 + MySqlParserAUTOEXTEND_SIZE = 311 + MySqlParserAUTO_INCREMENT = 312 + MySqlParserAVG_ROW_LENGTH = 313 + MySqlParserBEGIN = 314 + MySqlParserBINLOG = 315 + MySqlParserBIT = 316 + MySqlParserBLOCK = 317 + MySqlParserBOOL = 318 + MySqlParserBOOLEAN = 319 + MySqlParserBTREE = 320 + MySqlParserCACHE = 321 + MySqlParserCASCADED = 322 + MySqlParserCHAIN = 323 + MySqlParserCHANGED = 324 + MySqlParserCHANNEL = 325 + MySqlParserCHECKSUM = 326 + MySqlParserPAGE_CHECKSUM = 327 + MySqlParserCIPHER = 328 + MySqlParserCLASS_ORIGIN = 329 + MySqlParserCLIENT = 330 + MySqlParserCLOSE = 331 + MySqlParserCOALESCE = 332 + MySqlParserCODE = 333 + MySqlParserCOLUMNS = 334 + MySqlParserCOLUMN_FORMAT = 335 + MySqlParserCOLUMN_NAME = 336 + MySqlParserCOMMENT = 337 + MySqlParserCOMMIT = 338 + MySqlParserCOMPACT = 339 + MySqlParserCOMPLETION = 340 + MySqlParserCOMPRESSED = 341 + MySqlParserCOMPRESSION = 342 + MySqlParserCONCURRENT = 343 + MySqlParserCONNECTION = 344 + MySqlParserCONSISTENT = 345 + MySqlParserCONSTRAINT_CATALOG = 346 + MySqlParserCONSTRAINT_SCHEMA = 347 + MySqlParserCONSTRAINT_NAME = 348 + MySqlParserCONTAINS = 349 + MySqlParserCONTEXT = 350 + MySqlParserCONTRIBUTORS = 351 + MySqlParserCOPY = 352 + MySqlParserCPU = 353 + MySqlParserCURSOR_NAME = 354 + MySqlParserDATA = 355 + MySqlParserDATAFILE = 356 + MySqlParserDEALLOCATE = 357 + MySqlParserDEFAULT_AUTH = 358 + MySqlParserDEFINER = 359 + MySqlParserDELAY_KEY_WRITE = 360 + MySqlParserDES_KEY_FILE = 361 + MySqlParserDIRECTORY = 362 + MySqlParserDISABLE = 363 + MySqlParserDISCARD = 364 + MySqlParserDISK = 365 + MySqlParserDO = 366 + MySqlParserDUMPFILE = 367 + MySqlParserDUPLICATE = 368 + MySqlParserDYNAMIC = 369 + MySqlParserENABLE = 370 + MySqlParserENCRYPTION = 371 + MySqlParserEND = 372 + MySqlParserENDS = 373 + MySqlParserENGINE = 374 + MySqlParserENGINES = 375 + MySqlParserERROR = 376 + MySqlParserERRORS = 377 + MySqlParserESCAPE = 378 + MySqlParserEVEN = 379 + MySqlParserEVENT = 380 + MySqlParserEVENTS = 381 + MySqlParserEVERY = 382 + MySqlParserEXCHANGE = 383 + MySqlParserEXCLUSIVE = 384 + MySqlParserEXPIRE = 385 + MySqlParserEXPORT = 386 + MySqlParserEXTENDED = 387 + MySqlParserEXTENT_SIZE = 388 + MySqlParserFAST = 389 + MySqlParserFAULTS = 390 + MySqlParserFIELDS = 391 + MySqlParserFILE_BLOCK_SIZE = 392 + MySqlParserFILTER = 393 + MySqlParserFIRST = 394 + MySqlParserFIXED = 395 + MySqlParserFLUSH = 396 + MySqlParserFOLLOWS = 397 + MySqlParserFOUND = 398 + MySqlParserFULL = 399 + MySqlParserFUNCTION = 400 + MySqlParserGENERAL = 401 + MySqlParserGLOBAL = 402 + MySqlParserGRANTS = 403 + MySqlParserGROUP_REPLICATION = 404 + MySqlParserHANDLER = 405 + MySqlParserHASH = 406 + MySqlParserHELP = 407 + MySqlParserHOST = 408 + MySqlParserHOSTS = 409 + MySqlParserIDENTIFIED = 410 + MySqlParserIGNORE_SERVER_IDS = 411 + MySqlParserIMPORT = 412 + MySqlParserINDEXES = 413 + MySqlParserINITIAL_SIZE = 414 + MySqlParserINPLACE = 415 + MySqlParserINSERT_METHOD = 416 + MySqlParserINSTALL = 417 + MySqlParserINSTANCE = 418 + MySqlParserINVISIBLE = 419 + MySqlParserINVOKER = 420 + MySqlParserIO = 421 + MySqlParserIO_THREAD = 422 + MySqlParserIPC = 423 + MySqlParserISOLATION = 424 + MySqlParserISSUER = 425 + MySqlParserJSON = 426 + MySqlParserKEY_BLOCK_SIZE = 427 + MySqlParserLANGUAGE = 428 + MySqlParserLAST = 429 + MySqlParserLEAVES = 430 + MySqlParserLESS = 431 + MySqlParserLEVEL = 432 + MySqlParserLIST = 433 + MySqlParserLOCAL = 434 + MySqlParserLOGFILE = 435 + MySqlParserLOGS = 436 + MySqlParserMASTER = 437 + MySqlParserMASTER_AUTO_POSITION = 438 + MySqlParserMASTER_CONNECT_RETRY = 439 + MySqlParserMASTER_DELAY = 440 + MySqlParserMASTER_HEARTBEAT_PERIOD = 441 + MySqlParserMASTER_HOST = 442 + MySqlParserMASTER_LOG_FILE = 443 + MySqlParserMASTER_LOG_POS = 444 + MySqlParserMASTER_PASSWORD = 445 + MySqlParserMASTER_PORT = 446 + MySqlParserMASTER_RETRY_COUNT = 447 + MySqlParserMASTER_SSL = 448 + MySqlParserMASTER_SSL_CA = 449 + MySqlParserMASTER_SSL_CAPATH = 450 + MySqlParserMASTER_SSL_CERT = 451 + MySqlParserMASTER_SSL_CIPHER = 452 + MySqlParserMASTER_SSL_CRL = 453 + MySqlParserMASTER_SSL_CRLPATH = 454 + MySqlParserMASTER_SSL_KEY = 455 + MySqlParserMASTER_TLS_VERSION = 456 + MySqlParserMASTER_USER = 457 + MySqlParserMAX_CONNECTIONS_PER_HOUR = 458 + MySqlParserMAX_QUERIES_PER_HOUR = 459 + MySqlParserMAX_ROWS = 460 + MySqlParserMAX_SIZE = 461 + MySqlParserMAX_UPDATES_PER_HOUR = 462 + MySqlParserMAX_USER_CONNECTIONS = 463 + MySqlParserMEDIUM = 464 + MySqlParserMEMBER = 465 + MySqlParserMERGE = 466 + MySqlParserMESSAGE_TEXT = 467 + MySqlParserMID = 468 + MySqlParserMIGRATE = 469 + MySqlParserMIN_ROWS = 470 + MySqlParserMODE = 471 + MySqlParserMODIFY = 472 + MySqlParserMUTEX = 473 + MySqlParserMYSQL = 474 + MySqlParserMYSQL_ERRNO = 475 + MySqlParserNAME = 476 + MySqlParserNAMES = 477 + MySqlParserNCHAR = 478 + MySqlParserNEVER = 479 + MySqlParserNEXT = 480 + MySqlParserNO = 481 + MySqlParserNODEGROUP = 482 + MySqlParserNONE = 483 + MySqlParserOFFLINE = 484 + MySqlParserOFFSET = 485 + MySqlParserOF = 486 + MySqlParserOJ = 487 + MySqlParserOLD_PASSWORD = 488 + MySqlParserONE = 489 + MySqlParserONLINE = 490 + MySqlParserONLY = 491 + MySqlParserOPEN = 492 + MySqlParserOPTIMIZER_COSTS = 493 + MySqlParserOPTIONS = 494 + MySqlParserOWNER = 495 + MySqlParserPACK_KEYS = 496 + MySqlParserPAGE = 497 + MySqlParserPARSER = 498 + MySqlParserPARTIAL = 499 + MySqlParserPARTITIONING = 500 + MySqlParserPARTITIONS = 501 + MySqlParserPASSWORD = 502 + MySqlParserPHASE = 503 + MySqlParserPLUGIN = 504 + MySqlParserPLUGIN_DIR = 505 + MySqlParserPLUGINS = 506 + MySqlParserPORT = 507 + MySqlParserPRECEDES = 508 + MySqlParserPREPARE = 509 + MySqlParserPRESERVE = 510 + MySqlParserPREV = 511 + MySqlParserPROCESSLIST = 512 + MySqlParserPROFILE = 513 + MySqlParserPROFILES = 514 + MySqlParserPROXY = 515 + MySqlParserQUERY = 516 + MySqlParserQUICK = 517 + MySqlParserREBUILD = 518 + MySqlParserRECOVER = 519 + MySqlParserREDO_BUFFER_SIZE = 520 + MySqlParserREDUNDANT = 521 + MySqlParserRELAY = 522 + MySqlParserRELAY_LOG_FILE = 523 + MySqlParserRELAY_LOG_POS = 524 + MySqlParserRELAYLOG = 525 + MySqlParserREMOVE = 526 + MySqlParserREORGANIZE = 527 + MySqlParserREPAIR = 528 + MySqlParserREPLICATE_DO_DB = 529 + MySqlParserREPLICATE_DO_TABLE = 530 + MySqlParserREPLICATE_IGNORE_DB = 531 + MySqlParserREPLICATE_IGNORE_TABLE = 532 + MySqlParserREPLICATE_REWRITE_DB = 533 + MySqlParserREPLICATE_WILD_DO_TABLE = 534 + MySqlParserREPLICATE_WILD_IGNORE_TABLE = 535 + MySqlParserREPLICATION = 536 + MySqlParserRESET = 537 + MySqlParserRESUME = 538 + MySqlParserRETURNED_SQLSTATE = 539 + MySqlParserRETURNING = 540 + MySqlParserRETURNS = 541 + MySqlParserROLE = 542 + MySqlParserROLLBACK = 543 + MySqlParserROLLUP = 544 + MySqlParserROTATE = 545 + MySqlParserROW = 546 + MySqlParserROWS = 547 + MySqlParserROW_FORMAT = 548 + MySqlParserSAVEPOINT = 549 + MySqlParserSCHEDULE = 550 + MySqlParserSECURITY = 551 + MySqlParserSERVER = 552 + MySqlParserSESSION = 553 + MySqlParserSHARE = 554 + MySqlParserSHARED = 555 + MySqlParserSIGNED = 556 + MySqlParserSIMPLE = 557 + MySqlParserSLAVE = 558 + MySqlParserSLOW = 559 + MySqlParserSNAPSHOT = 560 + MySqlParserSOCKET = 561 + MySqlParserSOME = 562 + MySqlParserSONAME = 563 + MySqlParserSOUNDS = 564 + MySqlParserSOURCE = 565 + MySqlParserSQL_AFTER_GTIDS = 566 + MySqlParserSQL_AFTER_MTS_GAPS = 567 + MySqlParserSQL_BEFORE_GTIDS = 568 + MySqlParserSQL_BUFFER_RESULT = 569 + MySqlParserSQL_CACHE = 570 + MySqlParserSQL_NO_CACHE = 571 + MySqlParserSQL_THREAD = 572 + MySqlParserSTART = 573 + MySqlParserSTARTS = 574 + MySqlParserSTATS_AUTO_RECALC = 575 + MySqlParserSTATS_PERSISTENT = 576 + MySqlParserSTATS_SAMPLE_PAGES = 577 + MySqlParserSTATUS = 578 + MySqlParserSTOP = 579 + MySqlParserSTORAGE = 580 + MySqlParserSTORED = 581 + MySqlParserSTRING = 582 + MySqlParserSUBCLASS_ORIGIN = 583 + MySqlParserSUBJECT = 584 + MySqlParserSUBPARTITION = 585 + MySqlParserSUBPARTITIONS = 586 + MySqlParserSUSPEND = 587 + MySqlParserSWAPS = 588 + MySqlParserSWITCHES = 589 + MySqlParserTABLE_NAME = 590 + MySqlParserTABLESPACE = 591 + MySqlParserTEMPORARY = 592 + MySqlParserTEMPTABLE = 593 + MySqlParserTHAN = 594 + MySqlParserTRADITIONAL = 595 + MySqlParserTRANSACTION = 596 + MySqlParserTRANSACTIONAL = 597 + MySqlParserTRIGGERS = 598 + MySqlParserTRUNCATE = 599 + MySqlParserUNDEFINED = 600 + MySqlParserUNDOFILE = 601 + MySqlParserUNDO_BUFFER_SIZE = 602 + MySqlParserUNINSTALL = 603 + MySqlParserUNKNOWN = 604 + MySqlParserUNTIL = 605 + MySqlParserUPGRADE = 606 + MySqlParserUSER = 607 + MySqlParserUSE_FRM = 608 + MySqlParserUSER_RESOURCES = 609 + MySqlParserVALIDATION = 610 + MySqlParserVALUE = 611 + MySqlParserVARIABLES = 612 + MySqlParserVIEW = 613 + MySqlParserVIRTUAL = 614 + MySqlParserVISIBLE = 615 + MySqlParserWAIT = 616 + MySqlParserWARNINGS = 617 + MySqlParserWITHOUT = 618 + MySqlParserWORK = 619 + MySqlParserWRAPPER = 620 + MySqlParserX509 = 621 + MySqlParserXA = 622 + MySqlParserXML = 623 + MySqlParserEUR = 624 + MySqlParserUSA = 625 + MySqlParserJIS = 626 + MySqlParserISO = 627 + MySqlParserINTERNAL = 628 + MySqlParserQUARTER = 629 + MySqlParserMONTH = 630 + MySqlParserDAY = 631 + MySqlParserHOUR = 632 + MySqlParserMINUTE = 633 + MySqlParserWEEK = 634 + MySqlParserSECOND = 635 + MySqlParserMICROSECOND = 636 + MySqlParserTABLES = 637 + MySqlParserROUTINE = 638 + MySqlParserEXECUTE = 639 + MySqlParserFILE = 640 + MySqlParserPROCESS = 641 + MySqlParserRELOAD = 642 + MySqlParserSHUTDOWN = 643 + MySqlParserSUPER = 644 + MySqlParserPRIVILEGES = 645 + MySqlParserAPPLICATION_PASSWORD_ADMIN = 646 + MySqlParserAUDIT_ADMIN = 647 + MySqlParserBACKUP_ADMIN = 648 + MySqlParserBINLOG_ADMIN = 649 + MySqlParserBINLOG_ENCRYPTION_ADMIN = 650 + MySqlParserCLONE_ADMIN = 651 + MySqlParserCONNECTION_ADMIN = 652 + MySqlParserENCRYPTION_KEY_ADMIN = 653 + MySqlParserFIREWALL_ADMIN = 654 + MySqlParserFIREWALL_USER = 655 + MySqlParserFLUSH_OPTIMIZER_COSTS = 656 + MySqlParserFLUSH_STATUS = 657 + MySqlParserFLUSH_TABLES = 658 + MySqlParserFLUSH_USER_RESOURCES = 659 + MySqlParserGROUP_REPLICATION_ADMIN = 660 + MySqlParserINNODB_REDO_LOG_ARCHIVE = 661 + MySqlParserINNODB_REDO_LOG_ENABLE = 662 + MySqlParserNDB_STORED_USER = 663 + MySqlParserPERSIST_RO_VARIABLES_ADMIN = 664 + MySqlParserREPLICATION_APPLIER = 665 + MySqlParserREPLICATION_SLAVE_ADMIN = 666 + MySqlParserRESOURCE_GROUP_ADMIN = 667 + MySqlParserRESOURCE_GROUP_USER = 668 + MySqlParserROLE_ADMIN = 669 + MySqlParserSERVICE_CONNECTION_ADMIN = 670 + MySqlParserSESSION_VARIABLES_ADMIN = 671 + MySqlParserSET_USER_ID = 672 + MySqlParserSHOW_ROUTINE = 673 + MySqlParserSYSTEM_VARIABLES_ADMIN = 674 + MySqlParserTABLE_ENCRYPTION_ADMIN = 675 + MySqlParserVERSION_TOKEN_ADMIN = 676 + MySqlParserXA_RECOVER_ADMIN = 677 + MySqlParserARMSCII8 = 678 + MySqlParserASCII = 679 + MySqlParserBIG5 = 680 + MySqlParserCP1250 = 681 + MySqlParserCP1251 = 682 + MySqlParserCP1256 = 683 + MySqlParserCP1257 = 684 + MySqlParserCP850 = 685 + MySqlParserCP852 = 686 + MySqlParserCP866 = 687 + MySqlParserCP932 = 688 + MySqlParserDEC8 = 689 + MySqlParserEUCJPMS = 690 + MySqlParserEUCKR = 691 + MySqlParserGB2312 = 692 + MySqlParserGBK = 693 + MySqlParserGEOSTD8 = 694 + MySqlParserGREEK = 695 + MySqlParserHEBREW = 696 + MySqlParserHP8 = 697 + MySqlParserKEYBCS2 = 698 + MySqlParserKOI8R = 699 + MySqlParserKOI8U = 700 + MySqlParserLATIN1 = 701 + MySqlParserLATIN2 = 702 + MySqlParserLATIN5 = 703 + MySqlParserLATIN7 = 704 + MySqlParserMACCE = 705 + MySqlParserMACROMAN = 706 + MySqlParserSJIS = 707 + MySqlParserSWE7 = 708 + MySqlParserTIS620 = 709 + MySqlParserUCS2 = 710 + MySqlParserUJIS = 711 + MySqlParserUTF16 = 712 + MySqlParserUTF16LE = 713 + MySqlParserUTF32 = 714 + MySqlParserUTF8 = 715 + MySqlParserUTF8MB3 = 716 + MySqlParserUTF8MB4 = 717 + MySqlParserARCHIVE = 718 + MySqlParserBLACKHOLE = 719 + MySqlParserCSV = 720 + MySqlParserFEDERATED = 721 + MySqlParserINNODB = 722 + MySqlParserMEMORY = 723 + MySqlParserMRG_MYISAM = 724 + MySqlParserMYISAM = 725 + MySqlParserNDB = 726 + MySqlParserNDBCLUSTER = 727 + MySqlParserPERFORMANCE_SCHEMA = 728 + MySqlParserTOKUDB = 729 + MySqlParserREPEATABLE = 730 + MySqlParserCOMMITTED = 731 + MySqlParserUNCOMMITTED = 732 + MySqlParserSERIALIZABLE = 733 + MySqlParserGEOMETRYCOLLECTION = 734 + MySqlParserGEOMCOLLECTION = 735 + MySqlParserGEOMETRY = 736 + MySqlParserLINESTRING = 737 + MySqlParserMULTILINESTRING = 738 + MySqlParserMULTIPOINT = 739 + MySqlParserMULTIPOLYGON = 740 + MySqlParserPOINT = 741 + MySqlParserPOLYGON = 742 + MySqlParserABS = 743 + MySqlParserACOS = 744 + MySqlParserADDDATE = 745 + MySqlParserADDTIME = 746 + MySqlParserAES_DECRYPT = 747 + MySqlParserAES_ENCRYPT = 748 + MySqlParserAREA = 749 + MySqlParserASBINARY = 750 + MySqlParserASIN = 751 + MySqlParserASTEXT = 752 + MySqlParserASWKB = 753 + MySqlParserASWKT = 754 + MySqlParserASYMMETRIC_DECRYPT = 755 + MySqlParserASYMMETRIC_DERIVE = 756 + MySqlParserASYMMETRIC_ENCRYPT = 757 + MySqlParserASYMMETRIC_SIGN = 758 + MySqlParserASYMMETRIC_VERIFY = 759 + MySqlParserATAN = 760 + MySqlParserATAN2 = 761 + MySqlParserBENCHMARK = 762 + MySqlParserBIN = 763 + MySqlParserBIT_COUNT = 764 + MySqlParserBIT_LENGTH = 765 + MySqlParserBUFFER = 766 + MySqlParserCATALOG_NAME = 767 + MySqlParserCEIL = 768 + MySqlParserCEILING = 769 + MySqlParserCENTROID = 770 + MySqlParserCHARACTER_LENGTH = 771 + MySqlParserCHARSET = 772 + MySqlParserCHAR_LENGTH = 773 + MySqlParserCOERCIBILITY = 774 + MySqlParserCOLLATION = 775 + MySqlParserCOMPRESS = 776 + MySqlParserCONCAT = 777 + MySqlParserCONCAT_WS = 778 + MySqlParserCONNECTION_ID = 779 + MySqlParserCONV = 780 + MySqlParserCONVERT_TZ = 781 + MySqlParserCOS = 782 + MySqlParserCOT = 783 + MySqlParserCRC32 = 784 + MySqlParserCREATE_ASYMMETRIC_PRIV_KEY = 785 + MySqlParserCREATE_ASYMMETRIC_PUB_KEY = 786 + MySqlParserCREATE_DH_PARAMETERS = 787 + MySqlParserCREATE_DIGEST = 788 + MySqlParserCROSSES = 789 + MySqlParserDATEDIFF = 790 + MySqlParserDATE_FORMAT = 791 + MySqlParserDAYNAME = 792 + MySqlParserDAYOFMONTH = 793 + MySqlParserDAYOFWEEK = 794 + MySqlParserDAYOFYEAR = 795 + MySqlParserDECODE = 796 + MySqlParserDEGREES = 797 + MySqlParserDES_DECRYPT = 798 + MySqlParserDES_ENCRYPT = 799 + MySqlParserDIMENSION = 800 + MySqlParserDISJOINT = 801 + MySqlParserELT = 802 + MySqlParserENCODE = 803 + MySqlParserENCRYPT = 804 + MySqlParserENDPOINT = 805 + MySqlParserENVELOPE = 806 + MySqlParserEQUALS = 807 + MySqlParserEXP = 808 + MySqlParserEXPORT_SET = 809 + MySqlParserEXTERIORRING = 810 + MySqlParserEXTRACTVALUE = 811 + MySqlParserFIELD = 812 + MySqlParserFIND_IN_SET = 813 + MySqlParserFLOOR = 814 + MySqlParserFORMAT = 815 + MySqlParserFOUND_ROWS = 816 + MySqlParserFROM_BASE64 = 817 + MySqlParserFROM_DAYS = 818 + MySqlParserFROM_UNIXTIME = 819 + MySqlParserGEOMCOLLFROMTEXT = 820 + MySqlParserGEOMCOLLFROMWKB = 821 + MySqlParserGEOMETRYCOLLECTIONFROMTEXT = 822 + MySqlParserGEOMETRYCOLLECTIONFROMWKB = 823 + MySqlParserGEOMETRYFROMTEXT = 824 + MySqlParserGEOMETRYFROMWKB = 825 + MySqlParserGEOMETRYN = 826 + MySqlParserGEOMETRYTYPE = 827 + MySqlParserGEOMFROMTEXT = 828 + MySqlParserGEOMFROMWKB = 829 + MySqlParserGET_FORMAT = 830 + MySqlParserGET_LOCK = 831 + MySqlParserGLENGTH = 832 + MySqlParserGREATEST = 833 + MySqlParserGTID_SUBSET = 834 + MySqlParserGTID_SUBTRACT = 835 + MySqlParserHEX = 836 + MySqlParserIFNULL = 837 + MySqlParserINET6_ATON = 838 + MySqlParserINET6_NTOA = 839 + MySqlParserINET_ATON = 840 + MySqlParserINET_NTOA = 841 + MySqlParserINSTR = 842 + MySqlParserINTERIORRINGN = 843 + MySqlParserINTERSECTS = 844 + MySqlParserISCLOSED = 845 + MySqlParserISEMPTY = 846 + MySqlParserISNULL = 847 + MySqlParserISSIMPLE = 848 + MySqlParserIS_FREE_LOCK = 849 + MySqlParserIS_IPV4 = 850 + MySqlParserIS_IPV4_COMPAT = 851 + MySqlParserIS_IPV4_MAPPED = 852 + MySqlParserIS_IPV6 = 853 + MySqlParserIS_USED_LOCK = 854 + MySqlParserLAST_INSERT_ID = 855 + MySqlParserLCASE = 856 + MySqlParserLEAST = 857 + MySqlParserLENGTH = 858 + MySqlParserLINEFROMTEXT = 859 + MySqlParserLINEFROMWKB = 860 + MySqlParserLINESTRINGFROMTEXT = 861 + MySqlParserLINESTRINGFROMWKB = 862 + MySqlParserLN = 863 + MySqlParserLOAD_FILE = 864 + MySqlParserLOCATE = 865 + MySqlParserLOG = 866 + MySqlParserLOG10 = 867 + MySqlParserLOG2 = 868 + MySqlParserLOWER = 869 + MySqlParserLPAD = 870 + MySqlParserLTRIM = 871 + MySqlParserMAKEDATE = 872 + MySqlParserMAKETIME = 873 + MySqlParserMAKE_SET = 874 + MySqlParserMASTER_POS_WAIT = 875 + MySqlParserMBRCONTAINS = 876 + MySqlParserMBRDISJOINT = 877 + MySqlParserMBREQUAL = 878 + MySqlParserMBRINTERSECTS = 879 + MySqlParserMBROVERLAPS = 880 + MySqlParserMBRTOUCHES = 881 + MySqlParserMBRWITHIN = 882 + MySqlParserMD5 = 883 + MySqlParserMLINEFROMTEXT = 884 + MySqlParserMLINEFROMWKB = 885 + MySqlParserMONTHNAME = 886 + MySqlParserMPOINTFROMTEXT = 887 + MySqlParserMPOINTFROMWKB = 888 + MySqlParserMPOLYFROMTEXT = 889 + MySqlParserMPOLYFROMWKB = 890 + MySqlParserMULTILINESTRINGFROMTEXT = 891 + MySqlParserMULTILINESTRINGFROMWKB = 892 + MySqlParserMULTIPOINTFROMTEXT = 893 + MySqlParserMULTIPOINTFROMWKB = 894 + MySqlParserMULTIPOLYGONFROMTEXT = 895 + MySqlParserMULTIPOLYGONFROMWKB = 896 + MySqlParserNAME_CONST = 897 + MySqlParserNULLIF = 898 + MySqlParserNUMGEOMETRIES = 899 + MySqlParserNUMINTERIORRINGS = 900 + MySqlParserNUMPOINTS = 901 + MySqlParserOCT = 902 + MySqlParserOCTET_LENGTH = 903 + MySqlParserORD = 904 + MySqlParserOVERLAPS = 905 + MySqlParserPERIOD_ADD = 906 + MySqlParserPERIOD_DIFF = 907 + MySqlParserPI = 908 + MySqlParserPOINTFROMTEXT = 909 + MySqlParserPOINTFROMWKB = 910 + MySqlParserPOINTN = 911 + MySqlParserPOLYFROMTEXT = 912 + MySqlParserPOLYFROMWKB = 913 + MySqlParserPOLYGONFROMTEXT = 914 + MySqlParserPOLYGONFROMWKB = 915 + MySqlParserPOW = 916 + MySqlParserPOWER = 917 + MySqlParserQUOTE = 918 + MySqlParserRADIANS = 919 + MySqlParserRAND = 920 + MySqlParserRANDOM_BYTES = 921 + MySqlParserRELEASE_LOCK = 922 + MySqlParserREVERSE = 923 + MySqlParserROUND = 924 + MySqlParserROW_COUNT = 925 + MySqlParserRPAD = 926 + MySqlParserRTRIM = 927 + MySqlParserSEC_TO_TIME = 928 + MySqlParserSESSION_USER = 929 + MySqlParserSHA = 930 + MySqlParserSHA1 = 931 + MySqlParserSHA2 = 932 + MySqlParserSCHEMA_NAME = 933 + MySqlParserSIGN = 934 + MySqlParserSIN = 935 + MySqlParserSLEEP = 936 + MySqlParserSOUNDEX = 937 + MySqlParserSQL_THREAD_WAIT_AFTER_GTIDS = 938 + MySqlParserSQRT = 939 + MySqlParserSRID = 940 + MySqlParserSTARTPOINT = 941 + MySqlParserSTRCMP = 942 + MySqlParserSTR_TO_DATE = 943 + MySqlParserST_AREA = 944 + MySqlParserST_ASBINARY = 945 + MySqlParserST_ASTEXT = 946 + MySqlParserST_ASWKB = 947 + MySqlParserST_ASWKT = 948 + MySqlParserST_BUFFER = 949 + MySqlParserST_CENTROID = 950 + MySqlParserST_CONTAINS = 951 + MySqlParserST_CROSSES = 952 + MySqlParserST_DIFFERENCE = 953 + MySqlParserST_DIMENSION = 954 + MySqlParserST_DISJOINT = 955 + MySqlParserST_DISTANCE = 956 + MySqlParserST_ENDPOINT = 957 + MySqlParserST_ENVELOPE = 958 + MySqlParserST_EQUALS = 959 + MySqlParserST_EXTERIORRING = 960 + MySqlParserST_GEOMCOLLFROMTEXT = 961 + MySqlParserST_GEOMCOLLFROMTXT = 962 + MySqlParserST_GEOMCOLLFROMWKB = 963 + MySqlParserST_GEOMETRYCOLLECTIONFROMTEXT = 964 + MySqlParserST_GEOMETRYCOLLECTIONFROMWKB = 965 + MySqlParserST_GEOMETRYFROMTEXT = 966 + MySqlParserST_GEOMETRYFROMWKB = 967 + MySqlParserST_GEOMETRYN = 968 + MySqlParserST_GEOMETRYTYPE = 969 + MySqlParserST_GEOMFROMTEXT = 970 + MySqlParserST_GEOMFROMWKB = 971 + MySqlParserST_INTERIORRINGN = 972 + MySqlParserST_INTERSECTION = 973 + MySqlParserST_INTERSECTS = 974 + MySqlParserST_ISCLOSED = 975 + MySqlParserST_ISEMPTY = 976 + MySqlParserST_ISSIMPLE = 977 + MySqlParserST_LINEFROMTEXT = 978 + MySqlParserST_LINEFROMWKB = 979 + MySqlParserST_LINESTRINGFROMTEXT = 980 + MySqlParserST_LINESTRINGFROMWKB = 981 + MySqlParserST_NUMGEOMETRIES = 982 + MySqlParserST_NUMINTERIORRING = 983 + MySqlParserST_NUMINTERIORRINGS = 984 + MySqlParserST_NUMPOINTS = 985 + MySqlParserST_OVERLAPS = 986 + MySqlParserST_POINTFROMTEXT = 987 + MySqlParserST_POINTFROMWKB = 988 + MySqlParserST_POINTN = 989 + MySqlParserST_POLYFROMTEXT = 990 + MySqlParserST_POLYFROMWKB = 991 + MySqlParserST_POLYGONFROMTEXT = 992 + MySqlParserST_POLYGONFROMWKB = 993 + MySqlParserST_SRID = 994 + MySqlParserST_STARTPOINT = 995 + MySqlParserST_SYMDIFFERENCE = 996 + MySqlParserST_TOUCHES = 997 + MySqlParserST_UNION = 998 + MySqlParserST_WITHIN = 999 + MySqlParserST_X = 1000 + MySqlParserST_Y = 1001 + MySqlParserSUBDATE = 1002 + MySqlParserSUBSTRING_INDEX = 1003 + MySqlParserSUBTIME = 1004 + MySqlParserSYSTEM_USER = 1005 + MySqlParserTAN = 1006 + MySqlParserTIMEDIFF = 1007 + MySqlParserTIMESTAMPADD = 1008 + MySqlParserTIMESTAMPDIFF = 1009 + MySqlParserTIME_FORMAT = 1010 + MySqlParserTIME_TO_SEC = 1011 + MySqlParserTOUCHES = 1012 + MySqlParserTO_BASE64 = 1013 + MySqlParserTO_DAYS = 1014 + MySqlParserTO_SECONDS = 1015 + MySqlParserUCASE = 1016 + MySqlParserUNCOMPRESS = 1017 + MySqlParserUNCOMPRESSED_LENGTH = 1018 + MySqlParserUNHEX = 1019 + MySqlParserUNIX_TIMESTAMP = 1020 + MySqlParserUPDATEXML = 1021 + MySqlParserUPPER = 1022 + MySqlParserUUID = 1023 + MySqlParserUUID_SHORT = 1024 + MySqlParserVALIDATE_PASSWORD_STRENGTH = 1025 + MySqlParserVERSION = 1026 + MySqlParserWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS = 1027 + MySqlParserWEEKDAY = 1028 + MySqlParserWEEKOFYEAR = 1029 + MySqlParserWEIGHT_STRING = 1030 + MySqlParserWITHIN = 1031 + MySqlParserYEARWEEK = 1032 + MySqlParserY_FUNCTION = 1033 + MySqlParserX_FUNCTION = 1034 + MySqlParserVAR_ASSIGN = 1035 + MySqlParserPLUS_ASSIGN = 1036 + MySqlParserMINUS_ASSIGN = 1037 + MySqlParserMULT_ASSIGN = 1038 + MySqlParserDIV_ASSIGN = 1039 + MySqlParserMOD_ASSIGN = 1040 + MySqlParserAND_ASSIGN = 1041 + MySqlParserXOR_ASSIGN = 1042 + MySqlParserOR_ASSIGN = 1043 + MySqlParserSTAR = 1044 + MySqlParserDIVIDE = 1045 + MySqlParserMODULE = 1046 + MySqlParserPLUS = 1047 + MySqlParserMINUSMINUS = 1048 + MySqlParserMINUS = 1049 + MySqlParserDIV = 1050 + MySqlParserMOD = 1051 + MySqlParserEQUAL_SYMBOL = 1052 + MySqlParserGREATER_SYMBOL = 1053 + MySqlParserLESS_SYMBOL = 1054 + MySqlParserEXCLAMATION_SYMBOL = 1055 + MySqlParserBIT_NOT_OP = 1056 + MySqlParserBIT_OR_OP = 1057 + MySqlParserBIT_AND_OP = 1058 + MySqlParserBIT_XOR_OP = 1059 + MySqlParserDOT = 1060 + MySqlParserLR_BRACKET = 1061 + MySqlParserRR_BRACKET = 1062 + MySqlParserCOMMA = 1063 + MySqlParserSEMI = 1064 + MySqlParserAT_SIGN = 1065 + MySqlParserZERO_DECIMAL = 1066 + MySqlParserONE_DECIMAL = 1067 + MySqlParserTWO_DECIMAL = 1068 + MySqlParserSINGLE_QUOTE_SYMB = 1069 + MySqlParserDOUBLE_QUOTE_SYMB = 1070 + MySqlParserREVERSE_QUOTE_SYMB = 1071 + MySqlParserCOLON_SYMB = 1072 + MySqlParserCHARSET_REVERSE_QOUTE_STRING = 1073 + MySqlParserFILESIZE_LITERAL = 1074 + MySqlParserSTART_NATIONAL_STRING_LITERAL = 1075 + MySqlParserSTRING_LITERAL = 1076 + MySqlParserDECIMAL_LITERAL = 1077 + MySqlParserHEXADECIMAL_LITERAL = 1078 + MySqlParserREAL_LITERAL = 1079 + MySqlParserNULL_SPEC_LITERAL = 1080 + MySqlParserBIT_STRING = 1081 + MySqlParserSTRING_CHARSET_NAME = 1082 + MySqlParserDOT_ID = 1083 + MySqlParserID = 1084 + MySqlParserREVERSE_QUOTE_ID = 1085 + MySqlParserSTRING_USER_NAME = 1086 + MySqlParserIP_ADDRESS = 1087 + MySqlParserLOCAL_ID = 1088 + MySqlParserGLOBAL_ID = 1089 + MySqlParserERROR_RECONGNIGION = 1090 +) + +// MySqlParser rules. +const ( + MySqlParserRULE_root = 0 + MySqlParserRULE_sqlStatements = 1 + MySqlParserRULE_sqlStatement = 2 + MySqlParserRULE_emptyStatement = 3 + MySqlParserRULE_ddlStatement = 4 + MySqlParserRULE_dmlStatement = 5 + MySqlParserRULE_transactionStatement = 6 + MySqlParserRULE_replicationStatement = 7 + MySqlParserRULE_preparedStatement = 8 + MySqlParserRULE_compoundStatement = 9 + MySqlParserRULE_administrationStatement = 10 + MySqlParserRULE_utilityStatement = 11 + MySqlParserRULE_createDatabase = 12 + MySqlParserRULE_createEvent = 13 + MySqlParserRULE_createIndex = 14 + MySqlParserRULE_createLogfileGroup = 15 + MySqlParserRULE_createProcedure = 16 + MySqlParserRULE_createFunction = 17 + MySqlParserRULE_createServer = 18 + MySqlParserRULE_createTable = 19 + MySqlParserRULE_createTablespaceInnodb = 20 + MySqlParserRULE_createTablespaceNdb = 21 + MySqlParserRULE_createTrigger = 22 + MySqlParserRULE_createView = 23 + MySqlParserRULE_createDatabaseOption = 24 + MySqlParserRULE_ownerStatement = 25 + MySqlParserRULE_scheduleExpression = 26 + MySqlParserRULE_timestampValue = 27 + MySqlParserRULE_intervalExpr = 28 + MySqlParserRULE_intervalType = 29 + MySqlParserRULE_enableType = 30 + MySqlParserRULE_indexType = 31 + MySqlParserRULE_indexOption = 32 + MySqlParserRULE_procedureParameter = 33 + MySqlParserRULE_functionParameter = 34 + MySqlParserRULE_routineOption = 35 + MySqlParserRULE_serverOption = 36 + MySqlParserRULE_createDefinitions = 37 + MySqlParserRULE_createDefinition = 38 + MySqlParserRULE_columnDefinition = 39 + MySqlParserRULE_columnConstraint = 40 + MySqlParserRULE_tableConstraint = 41 + MySqlParserRULE_referenceDefinition = 42 + MySqlParserRULE_referenceAction = 43 + MySqlParserRULE_referenceControlType = 44 + MySqlParserRULE_indexColumnDefinition = 45 + MySqlParserRULE_tableOption = 46 + MySqlParserRULE_tablespaceStorage = 47 + MySqlParserRULE_partitionDefinitions = 48 + MySqlParserRULE_partitionFunctionDefinition = 49 + MySqlParserRULE_subpartitionFunctionDefinition = 50 + MySqlParserRULE_partitionDefinition = 51 + MySqlParserRULE_partitionDefinerAtom = 52 + MySqlParserRULE_partitionDefinerVector = 53 + MySqlParserRULE_subpartitionDefinition = 54 + MySqlParserRULE_partitionOption = 55 + MySqlParserRULE_alterDatabase = 56 + MySqlParserRULE_alterEvent = 57 + MySqlParserRULE_alterFunction = 58 + MySqlParserRULE_alterInstance = 59 + MySqlParserRULE_alterLogfileGroup = 60 + MySqlParserRULE_alterProcedure = 61 + MySqlParserRULE_alterServer = 62 + MySqlParserRULE_alterTable = 63 + MySqlParserRULE_alterTablespace = 64 + MySqlParserRULE_alterView = 65 + MySqlParserRULE_alterSpecification = 66 + MySqlParserRULE_dropDatabase = 67 + MySqlParserRULE_dropEvent = 68 + MySqlParserRULE_dropIndex = 69 + MySqlParserRULE_dropLogfileGroup = 70 + MySqlParserRULE_dropProcedure = 71 + MySqlParserRULE_dropFunction = 72 + MySqlParserRULE_dropServer = 73 + MySqlParserRULE_dropTable = 74 + MySqlParserRULE_dropTablespace = 75 + MySqlParserRULE_dropTrigger = 76 + MySqlParserRULE_dropView = 77 + MySqlParserRULE_renameTable = 78 + MySqlParserRULE_renameTableClause = 79 + MySqlParserRULE_truncateTable = 80 + MySqlParserRULE_callStatement = 81 + MySqlParserRULE_deleteStatement = 82 + MySqlParserRULE_doStatement = 83 + MySqlParserRULE_handlerStatement = 84 + MySqlParserRULE_insertStatement = 85 + MySqlParserRULE_loadDataStatement = 86 + MySqlParserRULE_loadXmlStatement = 87 + MySqlParserRULE_replaceStatement = 88 + MySqlParserRULE_selectStatement = 89 + MySqlParserRULE_updateStatement = 90 + MySqlParserRULE_insertStatementValue = 91 + MySqlParserRULE_updatedElement = 92 + MySqlParserRULE_assignmentField = 93 + MySqlParserRULE_lockClause = 94 + MySqlParserRULE_singleDeleteStatement = 95 + MySqlParserRULE_multipleDeleteStatement = 96 + MySqlParserRULE_handlerOpenStatement = 97 + MySqlParserRULE_handlerReadIndexStatement = 98 + MySqlParserRULE_handlerReadStatement = 99 + MySqlParserRULE_handlerCloseStatement = 100 + MySqlParserRULE_singleUpdateStatement = 101 + MySqlParserRULE_multipleUpdateStatement = 102 + MySqlParserRULE_orderByClause = 103 + MySqlParserRULE_orderByExpression = 104 + MySqlParserRULE_tableSources = 105 + MySqlParserRULE_tableSource = 106 + MySqlParserRULE_tableSourceItem = 107 + MySqlParserRULE_indexHint = 108 + MySqlParserRULE_indexHintType = 109 + MySqlParserRULE_joinPart = 110 + MySqlParserRULE_queryExpression = 111 + MySqlParserRULE_queryExpressionNointo = 112 + MySqlParserRULE_querySpecification = 113 + MySqlParserRULE_querySpecificationNointo = 114 + MySqlParserRULE_unionParenthesis = 115 + MySqlParserRULE_unionStatement = 116 + MySqlParserRULE_selectSpec = 117 + MySqlParserRULE_selectElements = 118 + MySqlParserRULE_selectElement = 119 + MySqlParserRULE_selectIntoExpression = 120 + MySqlParserRULE_selectFieldsInto = 121 + MySqlParserRULE_selectLinesInto = 122 + MySqlParserRULE_fromClause = 123 + MySqlParserRULE_groupByClause = 124 + MySqlParserRULE_havingClause = 125 + MySqlParserRULE_groupByItem = 126 + MySqlParserRULE_limitClause = 127 + MySqlParserRULE_limitClauseAtom = 128 + MySqlParserRULE_startTransaction = 129 + MySqlParserRULE_beginWork = 130 + MySqlParserRULE_commitWork = 131 + MySqlParserRULE_rollbackWork = 132 + MySqlParserRULE_savepointStatement = 133 + MySqlParserRULE_rollbackStatement = 134 + MySqlParserRULE_releaseStatement = 135 + MySqlParserRULE_lockTables = 136 + MySqlParserRULE_unlockTables = 137 + MySqlParserRULE_setAutocommitStatement = 138 + MySqlParserRULE_setTransactionStatement = 139 + MySqlParserRULE_transactionMode = 140 + MySqlParserRULE_lockTableElement = 141 + MySqlParserRULE_lockAction = 142 + MySqlParserRULE_transactionOption = 143 + MySqlParserRULE_transactionLevel = 144 + MySqlParserRULE_changeMaster = 145 + MySqlParserRULE_changeReplicationFilter = 146 + MySqlParserRULE_purgeBinaryLogs = 147 + MySqlParserRULE_resetMaster = 148 + MySqlParserRULE_resetSlave = 149 + MySqlParserRULE_startSlave = 150 + MySqlParserRULE_stopSlave = 151 + MySqlParserRULE_startGroupReplication = 152 + MySqlParserRULE_stopGroupReplication = 153 + MySqlParserRULE_masterOption = 154 + MySqlParserRULE_stringMasterOption = 155 + MySqlParserRULE_decimalMasterOption = 156 + MySqlParserRULE_boolMasterOption = 157 + MySqlParserRULE_channelOption = 158 + MySqlParserRULE_replicationFilter = 159 + MySqlParserRULE_tablePair = 160 + MySqlParserRULE_threadType = 161 + MySqlParserRULE_untilOption = 162 + MySqlParserRULE_connectionOption = 163 + MySqlParserRULE_gtuidSet = 164 + MySqlParserRULE_xaStartTransaction = 165 + MySqlParserRULE_xaEndTransaction = 166 + MySqlParserRULE_xaPrepareStatement = 167 + MySqlParserRULE_xaCommitWork = 168 + MySqlParserRULE_xaRollbackWork = 169 + MySqlParserRULE_xaRecoverWork = 170 + MySqlParserRULE_prepareStatement = 171 + MySqlParserRULE_executeStatement = 172 + MySqlParserRULE_deallocatePrepare = 173 + MySqlParserRULE_routineBody = 174 + MySqlParserRULE_blockStatement = 175 + MySqlParserRULE_caseStatement = 176 + MySqlParserRULE_ifStatement = 177 + MySqlParserRULE_iterateStatement = 178 + MySqlParserRULE_leaveStatement = 179 + MySqlParserRULE_loopStatement = 180 + MySqlParserRULE_repeatStatement = 181 + MySqlParserRULE_returnStatement = 182 + MySqlParserRULE_whileStatement = 183 + MySqlParserRULE_cursorStatement = 184 + MySqlParserRULE_declareVariable = 185 + MySqlParserRULE_declareCondition = 186 + MySqlParserRULE_declareCursor = 187 + MySqlParserRULE_declareHandler = 188 + MySqlParserRULE_handlerConditionValue = 189 + MySqlParserRULE_procedureSqlStatement = 190 + MySqlParserRULE_caseAlternative = 191 + MySqlParserRULE_elifAlternative = 192 + MySqlParserRULE_alterUser = 193 + MySqlParserRULE_createUser = 194 + MySqlParserRULE_dropUser = 195 + MySqlParserRULE_grantStatement = 196 + MySqlParserRULE_grantProxy = 197 + MySqlParserRULE_renameUser = 198 + MySqlParserRULE_revokeStatement = 199 + MySqlParserRULE_revokeProxy = 200 + MySqlParserRULE_setPasswordStatement = 201 + MySqlParserRULE_userSpecification = 202 + MySqlParserRULE_userAuthOption = 203 + MySqlParserRULE_tlsOption = 204 + MySqlParserRULE_userResourceOption = 205 + MySqlParserRULE_userPasswordOption = 206 + MySqlParserRULE_userLockOption = 207 + MySqlParserRULE_privelegeClause = 208 + MySqlParserRULE_privilege = 209 + MySqlParserRULE_privilegeLevel = 210 + MySqlParserRULE_renameUserClause = 211 + MySqlParserRULE_analyzeTable = 212 + MySqlParserRULE_checkTable = 213 + MySqlParserRULE_checksumTable = 214 + MySqlParserRULE_optimizeTable = 215 + MySqlParserRULE_repairTable = 216 + MySqlParserRULE_checkTableOption = 217 + MySqlParserRULE_createUdfunction = 218 + MySqlParserRULE_installPlugin = 219 + MySqlParserRULE_uninstallPlugin = 220 + MySqlParserRULE_setStatement = 221 + MySqlParserRULE_showStatement = 222 + MySqlParserRULE_variableClause = 223 + MySqlParserRULE_showCommonEntity = 224 + MySqlParserRULE_showFilter = 225 + MySqlParserRULE_showGlobalInfoClause = 226 + MySqlParserRULE_showSchemaEntity = 227 + MySqlParserRULE_showProfileType = 228 + MySqlParserRULE_binlogStatement = 229 + MySqlParserRULE_cacheIndexStatement = 230 + MySqlParserRULE_flushStatement = 231 + MySqlParserRULE_killStatement = 232 + MySqlParserRULE_loadIndexIntoCache = 233 + MySqlParserRULE_resetStatement = 234 + MySqlParserRULE_shutdownStatement = 235 + MySqlParserRULE_tableIndexes = 236 + MySqlParserRULE_flushOption = 237 + MySqlParserRULE_flushTableOption = 238 + MySqlParserRULE_loadedTableIndexes = 239 + MySqlParserRULE_simpleDescribeStatement = 240 + MySqlParserRULE_fullDescribeStatement = 241 + MySqlParserRULE_helpStatement = 242 + MySqlParserRULE_useStatement = 243 + MySqlParserRULE_signalStatement = 244 + MySqlParserRULE_resignalStatement = 245 + MySqlParserRULE_signalConditionInformation = 246 + MySqlParserRULE_diagnosticsStatement = 247 + MySqlParserRULE_diagnosticsConditionInformationName = 248 + MySqlParserRULE_describeObjectClause = 249 + MySqlParserRULE_fullId = 250 + MySqlParserRULE_tableName = 251 + MySqlParserRULE_fullColumnName = 252 + MySqlParserRULE_indexColumnName = 253 + MySqlParserRULE_userName = 254 + MySqlParserRULE_mysqlVariable = 255 + MySqlParserRULE_charsetName = 256 + MySqlParserRULE_collationName = 257 + MySqlParserRULE_engineName = 258 + MySqlParserRULE_uuidSet = 259 + MySqlParserRULE_xid = 260 + MySqlParserRULE_xuidStringId = 261 + MySqlParserRULE_authPlugin = 262 + MySqlParserRULE_uid = 263 + MySqlParserRULE_simpleId = 264 + MySqlParserRULE_dottedId = 265 + MySqlParserRULE_decimalLiteral = 266 + MySqlParserRULE_fileSizeLiteral = 267 + MySqlParserRULE_stringLiteral = 268 + MySqlParserRULE_booleanLiteral = 269 + MySqlParserRULE_hexadecimalLiteral = 270 + MySqlParserRULE_nullNotnull = 271 + MySqlParserRULE_constant = 272 + MySqlParserRULE_dataType = 273 + MySqlParserRULE_collectionOptions = 274 + MySqlParserRULE_convertedDataType = 275 + MySqlParserRULE_lengthOneDimension = 276 + MySqlParserRULE_lengthTwoDimension = 277 + MySqlParserRULE_lengthTwoOptionalDimension = 278 + MySqlParserRULE_uidList = 279 + MySqlParserRULE_tables = 280 + MySqlParserRULE_indexColumnNames = 281 + MySqlParserRULE_expressions = 282 + MySqlParserRULE_expressionsWithDefaults = 283 + MySqlParserRULE_constants = 284 + MySqlParserRULE_simpleStrings = 285 + MySqlParserRULE_userVariables = 286 + MySqlParserRULE_defaultValue = 287 + MySqlParserRULE_currentTimestamp = 288 + MySqlParserRULE_expressionOrDefault = 289 + MySqlParserRULE_ifExists = 290 + MySqlParserRULE_ifNotExists = 291 + MySqlParserRULE_functionCall = 292 + MySqlParserRULE_specificFunction = 293 + MySqlParserRULE_caseFuncAlternative = 294 + MySqlParserRULE_levelsInWeightString = 295 + MySqlParserRULE_levelInWeightListElement = 296 + MySqlParserRULE_aggregateWindowedFunction = 297 + MySqlParserRULE_scalarFunctionName = 298 + MySqlParserRULE_passwordFunctionClause = 299 + MySqlParserRULE_functionArgs = 300 + MySqlParserRULE_functionArg = 301 + MySqlParserRULE_expression = 302 + MySqlParserRULE_predicate = 303 + MySqlParserRULE_expressionAtom = 304 + MySqlParserRULE_unaryOperator = 305 + MySqlParserRULE_comparisonOperator = 306 + MySqlParserRULE_logicalOperator = 307 + MySqlParserRULE_bitOperator = 308 + MySqlParserRULE_mathOperator = 309 + MySqlParserRULE_jsonOperator = 310 + MySqlParserRULE_charsetNameBase = 311 + MySqlParserRULE_transactionLevelBase = 312 + MySqlParserRULE_privilegesBase = 313 + MySqlParserRULE_intervalTypeBase = 314 + MySqlParserRULE_dataTypeBase = 315 + MySqlParserRULE_keywordsCanBeId = 316 + MySqlParserRULE_functionNameBase = 317 +) + +// IRootContext is an interface to support dynamic dispatch. +type IRootContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsRootContext differentiates from other interfaces. + IsRootContext() +} + +type RootContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRootContext() *RootContext { + var p = new(RootContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = MySqlParserRULE_root + return p +} + +func (*RootContext) IsRootContext() {} + +func NewRootContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RootContext { + var p = new(RootContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = MySqlParserRULE_root + + return p +} + +func (s *RootContext) GetParser() antlr.Parser { return s.parser } + +func (s *RootContext) EOF() antlr.TerminalNode { + return s.GetToken(MySqlParserEOF, 0) +} + +func (s *RootContext) SqlStatements() ISqlStatementsContext { + var t = s.GetTypedRuleContext(reflect.TypeOf((*ISqlStatementsContext)(nil)).Elem(), 0) + + if t == nil { + return nil + } + + return t.(ISqlStatementsContext) +} + +func (s *RootContext) MINUSMINUS() antlr.TerminalNode { + return s.GetToken(MySqlParserMINUSMINUS, 0) +} + +func (s *RootContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RootContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RootContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MySqlParserVisitor: + return t.VisitRoot(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *MySqlParser) Root() (localctx IRootContext) { + localctx = NewRootContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 0, MySqlParserRULE_root) + var _la int + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(637) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + if (((_la)&-(0x1f+1)) == 0 && ((uint64(1)< channel(HIDDEN); +SPEC_MYSQL_COMMENT: '/*!' .+? '*/' -> channel(MYSQLCOMMENT); +COMMENT_INPUT: '/*' .*? '*/' -> channel(HIDDEN); +LINE_COMMENT: ( + ('--' [ \t] | '#') ~[\r\n]* ('\r'? '\n' | EOF) + | '--' ('\r'? '\n' | EOF) + ) -> channel(HIDDEN); + + +// Keywords +// Common Keywords + +ADD: 'ADD'; +ALL: 'ALL'; +ALTER: 'ALTER'; +ALWAYS: 'ALWAYS'; +ANALYZE: 'ANALYZE'; +AND: 'AND'; +AS: 'AS'; +ASC: 'ASC'; +BEFORE: 'BEFORE'; +BETWEEN: 'BETWEEN'; +BOTH: 'BOTH'; +BY: 'BY'; +CALL: 'CALL'; +CASCADE: 'CASCADE'; +CASE: 'CASE'; +CAST: 'CAST'; +CHANGE: 'CHANGE'; +CHARACTER: 'CHARACTER'; +CHECK: 'CHECK'; +COLLATE: 'COLLATE'; +COLUMN: 'COLUMN'; +CONDITION: 'CONDITION'; +CONSTRAINT: 'CONSTRAINT'; +CONTINUE: 'CONTINUE'; +CONVERT: 'CONVERT'; +CREATE: 'CREATE'; +CROSS: 'CROSS'; +CURRENT: 'CURRENT'; +CURRENT_USER: 'CURRENT_USER'; +CURSOR: 'CURSOR'; +DATABASE: 'DATABASE'; +DATABASES: 'DATABASES'; +DECLARE: 'DECLARE'; +DEFAULT: 'DEFAULT'; +DELAYED: 'DELAYED'; +DELETE: 'DELETE'; +DESC: 'DESC'; +DESCRIBE: 'DESCRIBE'; +DETERMINISTIC: 'DETERMINISTIC'; +DIAGNOSTICS: 'DIAGNOSTICS'; +DISTINCT: 'DISTINCT'; +DISTINCTROW: 'DISTINCTROW'; +DROP: 'DROP'; +EACH: 'EACH'; +ELSE: 'ELSE'; +ELSEIF: 'ELSEIF'; +EMPTY: 'EMPTY'; +ENCLOSED: 'ENCLOSED'; +ESCAPED: 'ESCAPED'; +EXISTS: 'EXISTS'; +EXIT: 'EXIT'; +EXPLAIN: 'EXPLAIN'; +FALSE: 'FALSE'; +FETCH: 'FETCH'; +FOR: 'FOR'; +FORCE: 'FORCE'; +FOREIGN: 'FOREIGN'; +FROM: 'FROM'; +FULLTEXT: 'FULLTEXT'; +GENERATED: 'GENERATED'; +GET: 'GET'; +GRANT: 'GRANT'; +GROUP: 'GROUP'; +HAVING: 'HAVING'; +HIGH_PRIORITY: 'HIGH_PRIORITY'; +IF: 'IF'; +IGNORE: 'IGNORE'; +IN: 'IN'; +INDEX: 'INDEX'; +INFILE: 'INFILE'; +INNER: 'INNER'; +INOUT: 'INOUT'; +INSERT: 'INSERT'; +INTERVAL: 'INTERVAL'; +INTO: 'INTO'; +IS: 'IS'; +ITERATE: 'ITERATE'; +JOIN: 'JOIN'; +KEY: 'KEY'; +KEYS: 'KEYS'; +KILL: 'KILL'; +LEADING: 'LEADING'; +LEAVE: 'LEAVE'; +LEFT: 'LEFT'; +LIKE: 'LIKE'; +LIMIT: 'LIMIT'; +LINEAR: 'LINEAR'; +LINES: 'LINES'; +LOAD: 'LOAD'; +LOCK: 'LOCK'; +LOOP: 'LOOP'; +LOW_PRIORITY: 'LOW_PRIORITY'; +MASTER_BIND: 'MASTER_BIND'; +MASTER_SSL_VERIFY_SERVER_CERT: 'MASTER_SSL_VERIFY_SERVER_CERT'; +MATCH: 'MATCH'; +MAXVALUE: 'MAXVALUE'; +MODIFIES: 'MODIFIES'; +NATURAL: 'NATURAL'; +NOT: 'NOT'; +NO_WRITE_TO_BINLOG: 'NO_WRITE_TO_BINLOG'; +NULL_LITERAL: NULL; +NULL: 'NULL'; +NUMBER: 'NUMBER'; +ON: 'ON'; +OPTIMIZE: 'OPTIMIZE'; +OPTION: 'OPTION'; +OPTIONALLY: 'OPTIONALLY'; +OR: 'OR'; +ORDER: 'ORDER'; +OUT: 'OUT'; +OUTER: 'OUTER'; +OUTFILE: 'OUTFILE'; +PARTITION: 'PARTITION'; +PRIMARY: 'PRIMARY'; +PROCEDURE: 'PROCEDURE'; +PURGE: 'PURGE'; +RANGE: 'RANGE'; +READ: 'READ'; +READS: 'READS'; +REFERENCES: 'REFERENCES'; +REGEXP: 'REGEXP'; +RELEASE: 'RELEASE'; +RENAME: 'RENAME'; +REPEAT: 'REPEAT'; +REPLACE: 'REPLACE'; +REQUIRE: 'REQUIRE'; +RESIGNAL: 'RESIGNAL'; +RESTRICT: 'RESTRICT'; +RETURN: 'RETURN'; +REVOKE: 'REVOKE'; +RIGHT: 'RIGHT'; +RLIKE: 'RLIKE'; +SCHEMA: 'SCHEMA'; +SCHEMAS: 'SCHEMAS'; +SELECT: 'SELECT'; +SET: 'SET'; +SEPARATOR: 'SEPARATOR'; +SHOW: 'SHOW'; +SIGNAL: 'SIGNAL'; +SPATIAL: 'SPATIAL'; +SQL: 'SQL'; +SQLEXCEPTION: 'SQLEXCEPTION'; +SQLSTATE: 'SQLSTATE'; +SQLWARNING: 'SQLWARNING'; +SQL_BIG_RESULT: 'SQL_BIG_RESULT'; +SQL_CALC_FOUND_ROWS: 'SQL_CALC_FOUND_ROWS'; +SQL_SMALL_RESULT: 'SQL_SMALL_RESULT'; +SSL: 'SSL'; +STACKED: 'STACKED'; +STARTING: 'STARTING'; +STRAIGHT_JOIN: 'STRAIGHT_JOIN'; +TABLE: 'TABLE'; +TERMINATED: 'TERMINATED'; +THEN: 'THEN'; +TO: 'TO'; +TRAILING: 'TRAILING'; +TRIGGER: 'TRIGGER'; +TRUE: 'TRUE'; +UNDO: 'UNDO'; +UNION: 'UNION'; +UNIQUE: 'UNIQUE'; +UNLOCK: 'UNLOCK'; +UNSIGNED: 'UNSIGNED'; +UPDATE: 'UPDATE'; +USAGE: 'USAGE'; +USE: 'USE'; +USING: 'USING'; +VALUES: 'VALUES'; +WHEN: 'WHEN'; +WHERE: 'WHERE'; +WHILE: 'WHILE'; +WITH: 'WITH'; +WRITE: 'WRITE'; +XOR: 'XOR'; +ZEROFILL: 'ZEROFILL'; + + +// DATA TYPE Keywords + +TINYINT: 'TINYINT'; +SMALLINT: 'SMALLINT'; +MEDIUMINT: 'MEDIUMINT'; +MIDDLEINT: 'MIDDLEINT'; +INT: 'INT'; +INT1: 'INT1'; +INT2: 'INT2'; +INT3: 'INT3'; +INT4: 'INT4'; +INT8: 'INT8'; +INTEGER: 'INTEGER'; +BIGINT: 'BIGINT'; +REAL: 'REAL'; +DOUBLE: 'DOUBLE'; +PRECISION: 'PRECISION'; +FLOAT: 'FLOAT'; +FLOAT4: 'FLOAT4'; +FLOAT8: 'FLOAT8'; +DECIMAL: 'DECIMAL'; +DEC: 'DEC'; +NUMERIC: 'NUMERIC'; +DATE: 'DATE'; +TIME: 'TIME'; +TIMESTAMP: 'TIMESTAMP'; +DATETIME: 'DATETIME'; +YEAR: 'YEAR'; +CHAR: 'CHAR'; +VARCHAR: 'VARCHAR'; +NVARCHAR: 'NVARCHAR'; +NATIONAL: 'NATIONAL'; +BINARY: 'BINARY'; +VARBINARY: 'VARBINARY'; +TINYBLOB: 'TINYBLOB'; +BLOB: 'BLOB'; +MEDIUMBLOB: 'MEDIUMBLOB'; +LONG: 'LONG'; +LONGBLOB: 'LONGBLOB'; +TINYTEXT: 'TINYTEXT'; +TEXT: 'TEXT'; +MEDIUMTEXT: 'MEDIUMTEXT'; +LONGTEXT: 'LONGTEXT'; +ENUM: 'ENUM'; +VARYING: 'VARYING'; +SERIAL: 'SERIAL'; + + +// Interval type Keywords + +YEAR_MONTH: 'YEAR_MONTH'; +DAY_HOUR: 'DAY_HOUR'; +DAY_MINUTE: 'DAY_MINUTE'; +DAY_SECOND: 'DAY_SECOND'; +HOUR_MINUTE: 'HOUR_MINUTE'; +HOUR_SECOND: 'HOUR_SECOND'; +MINUTE_SECOND: 'MINUTE_SECOND'; +SECOND_MICROSECOND: 'SECOND_MICROSECOND'; +MINUTE_MICROSECOND: 'MINUTE_MICROSECOND'; +HOUR_MICROSECOND: 'HOUR_MICROSECOND'; +DAY_MICROSECOND: 'DAY_MICROSECOND'; + +// JSON keywords +JSON_ARRAY: 'JSON_ARRAY'; +JSON_OBJECT: 'JSON_OBJECT'; +JSON_QUOTE: 'JSON_QUOTE'; +JSON_CONTAINS: 'JSON_CONTAINS'; +JSON_CONTAINS_PATH: 'JSON_CONTAINS_PATH'; +JSON_EXTRACT: 'JSON_EXTRACT'; +JSON_KEYS: 'JSON_KEYS'; +JSON_OVERLAPS: 'JSON_OVERLAPS'; +JSON_SEARCH: 'JSON_SEARCH'; +JSON_VALUE: 'JSON_VALUE'; +JSON_ARRAY_APPEND: 'JSON_ARRAY_APPEND'; +JSON_ARRAY_INSERT: 'JSON_ARRAY_INSERT'; +JSON_INSERT: 'JSON_INSERT'; +JSON_MERGE: 'JSON_MERGE'; +JSON_MERGE_PATCH: 'JSON_MERGE_PATCH'; +JSON_MERGE_PRESERVE: 'JSON_MERGE_PRESERVE'; +JSON_REMOVE: 'JSON_REMOVE'; +JSON_REPLACE: 'JSON_REPLACE'; +JSON_SET: 'JSON_SET'; +JSON_UNQUOTE: 'JSON_UNQUOTE'; +JSON_DEPTH: 'JSON_DEPTH'; +JSON_LENGTH: 'JSON_LENGTH'; +JSON_TYPE: 'JSON_TYPE'; +JSON_VALID: 'JSON_VALID'; +JSON_TABLE: 'JSON_TABLE'; +JSON_SCHEMA_VALID: 'JSON_SCHEMA_VALID'; +JSON_SCHEMA_VALIDATION_REPORT: 'JSON_SCHEMA_VALIDATION_REPORT'; +JSON_PRETTY: 'JSON_PRETTY'; +JSON_STORAGE_FREE: 'JSON_STORAGE_FREE'; +JSON_STORAGE_SIZE: 'JSON_STORAGE_SIZE'; +JSON_ARRAYAGG: 'JSON_ARRAYAGG'; +JSON_OBJECTAGG: 'JSON_OBJECTAGG'; + +// Group function Keywords + +AVG: 'AVG'; +BIT_AND: 'BIT_AND'; +BIT_OR: 'BIT_OR'; +BIT_XOR: 'BIT_XOR'; +COUNT: 'COUNT'; +GROUP_CONCAT: 'GROUP_CONCAT'; +MAX: 'MAX'; +MIN: 'MIN'; +STD: 'STD'; +STDDEV: 'STDDEV'; +STDDEV_POP: 'STDDEV_POP'; +STDDEV_SAMP: 'STDDEV_SAMP'; +SUM: 'SUM'; +VAR_POP: 'VAR_POP'; +VAR_SAMP: 'VAR_SAMP'; +VARIANCE: 'VARIANCE'; + +// Common function Keywords + +CURRENT_DATE: 'CURRENT_DATE'; +CURRENT_TIME: 'CURRENT_TIME'; +CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'; +LOCALTIME: 'LOCALTIME'; +CURDATE: 'CURDATE'; +CURTIME: 'CURTIME'; +DATE_ADD: 'DATE_ADD'; +DATE_SUB: 'DATE_SUB'; +EXTRACT: 'EXTRACT'; +LOCALTIMESTAMP: 'LOCALTIMESTAMP'; +NOW: 'NOW'; +POSITION: 'POSITION'; +SUBSTR: 'SUBSTR'; +SUBSTRING: 'SUBSTRING'; +SYSDATE: 'SYSDATE'; +TRIM: 'TRIM'; +UTC_DATE: 'UTC_DATE'; +UTC_TIME: 'UTC_TIME'; +UTC_TIMESTAMP: 'UTC_TIMESTAMP'; + +// Keywords, but can be ID +// Common Keywords, but can be ID + +ACCOUNT: 'ACCOUNT'; +ACTION: 'ACTION'; +AFTER: 'AFTER'; +AGGREGATE: 'AGGREGATE'; +ALGORITHM: 'ALGORITHM'; +ANY: 'ANY'; +AT: 'AT'; +AUTHORS: 'AUTHORS'; +AUTOCOMMIT: 'AUTOCOMMIT'; +AUTOEXTEND_SIZE: 'AUTOEXTEND_SIZE'; +AUTO_INCREMENT: 'AUTO_INCREMENT'; +AVG_ROW_LENGTH: 'AVG_ROW_LENGTH'; +BEGIN: 'BEGIN'; +BINLOG: 'BINLOG'; +BIT: 'BIT'; +BLOCK: 'BLOCK'; +BOOL: 'BOOL'; +BOOLEAN: 'BOOLEAN'; +BTREE: 'BTREE'; +CACHE: 'CACHE'; +CASCADED: 'CASCADED'; +CHAIN: 'CHAIN'; +CHANGED: 'CHANGED'; +CHANNEL: 'CHANNEL'; +CHECKSUM: 'CHECKSUM'; +PAGE_CHECKSUM: 'PAGE_CHECKSUM'; +CIPHER: 'CIPHER'; +CLASS_ORIGIN: 'CLASS_ORIGIN'; +CLIENT: 'CLIENT'; +CLOSE: 'CLOSE'; +COALESCE: 'COALESCE'; +CODE: 'CODE'; +COLUMNS: 'COLUMNS'; +COLUMN_FORMAT: 'COLUMN_FORMAT'; +COLUMN_NAME: 'COLUMN_NAME'; +COMMENT: 'COMMENT'; +COMMIT: 'COMMIT'; +COMPACT: 'COMPACT'; +COMPLETION: 'COMPLETION'; +COMPRESSED: 'COMPRESSED'; +COMPRESSION: 'COMPRESSION'; +CONCURRENT: 'CONCURRENT'; +CONNECTION: 'CONNECTION'; +CONSISTENT: 'CONSISTENT'; +CONSTRAINT_CATALOG: 'CONSTRAINT_CATALOG'; +CONSTRAINT_SCHEMA: 'CONSTRAINT_SCHEMA'; +CONSTRAINT_NAME: 'CONSTRAINT_NAME'; +CONTAINS: 'CONTAINS'; +CONTEXT: 'CONTEXT'; +CONTRIBUTORS: 'CONTRIBUTORS'; +COPY: 'COPY'; +CPU: 'CPU'; +CURSOR_NAME: 'CURSOR_NAME'; +DATA: 'DATA'; +DATAFILE: 'DATAFILE'; +DEALLOCATE: 'DEALLOCATE'; +DEFAULT_AUTH: 'DEFAULT_AUTH'; +DEFINER: 'DEFINER'; +DELAY_KEY_WRITE: 'DELAY_KEY_WRITE'; +DES_KEY_FILE: 'DES_KEY_FILE'; +DIRECTORY: 'DIRECTORY'; +DISABLE: 'DISABLE'; +DISCARD: 'DISCARD'; +DISK: 'DISK'; +DO: 'DO'; +DUMPFILE: 'DUMPFILE'; +DUPLICATE: 'DUPLICATE'; +DYNAMIC: 'DYNAMIC'; +ENABLE: 'ENABLE'; +ENCRYPTION: 'ENCRYPTION'; +END: 'END'; +ENDS: 'ENDS'; +ENGINE: 'ENGINE'; +ENGINES: 'ENGINES'; +ERROR: 'ERROR'; +ERRORS: 'ERRORS'; +ESCAPE: 'ESCAPE'; +EVEN: 'EVEN'; +EVENT: 'EVENT'; +EVENTS: 'EVENTS'; +EVERY: 'EVERY'; +EXCHANGE: 'EXCHANGE'; +EXCLUSIVE: 'EXCLUSIVE'; +EXPIRE: 'EXPIRE'; +EXPORT: 'EXPORT'; +EXTENDED: 'EXTENDED'; +EXTENT_SIZE: 'EXTENT_SIZE'; +FAST: 'FAST'; +FAULTS: 'FAULTS'; +FIELDS: 'FIELDS'; +FILE_BLOCK_SIZE: 'FILE_BLOCK_SIZE'; +FILTER: 'FILTER'; +FIRST: 'FIRST'; +FIXED: 'FIXED'; +FLUSH: 'FLUSH'; +FOLLOWS: 'FOLLOWS'; +FOUND: 'FOUND'; +FULL: 'FULL'; +FUNCTION: 'FUNCTION'; +GENERAL: 'GENERAL'; +GLOBAL: 'GLOBAL'; +GRANTS: 'GRANTS'; +GROUP_REPLICATION: 'GROUP_REPLICATION'; +HANDLER: 'HANDLER'; +HASH: 'HASH'; +HELP: 'HELP'; +HOST: 'HOST'; +HOSTS: 'HOSTS'; +IDENTIFIED: 'IDENTIFIED'; +IGNORE_SERVER_IDS: 'IGNORE_SERVER_IDS'; +IMPORT: 'IMPORT'; +INDEXES: 'INDEXES'; +INITIAL_SIZE: 'INITIAL_SIZE'; +INPLACE: 'INPLACE'; +INSERT_METHOD: 'INSERT_METHOD'; +INSTALL: 'INSTALL'; +INSTANCE: 'INSTANCE'; +INVISIBLE: 'INVISIBLE'; +INVOKER: 'INVOKER'; +IO: 'IO'; +IO_THREAD: 'IO_THREAD'; +IPC: 'IPC'; +ISOLATION: 'ISOLATION'; +ISSUER: 'ISSUER'; +JSON: 'JSON'; +KEY_BLOCK_SIZE: 'KEY_BLOCK_SIZE'; +LANGUAGE: 'LANGUAGE'; +LAST: 'LAST'; +LEAVES: 'LEAVES'; +LESS: 'LESS'; +LEVEL: 'LEVEL'; +LIST: 'LIST'; +LOCAL: 'LOCAL'; +LOGFILE: 'LOGFILE'; +LOGS: 'LOGS'; +MASTER: 'MASTER'; +MASTER_AUTO_POSITION: 'MASTER_AUTO_POSITION'; +MASTER_CONNECT_RETRY: 'MASTER_CONNECT_RETRY'; +MASTER_DELAY: 'MASTER_DELAY'; +MASTER_HEARTBEAT_PERIOD: 'MASTER_HEARTBEAT_PERIOD'; +MASTER_HOST: 'MASTER_HOST'; +MASTER_LOG_FILE: 'MASTER_LOG_FILE'; +MASTER_LOG_POS: 'MASTER_LOG_POS'; +MASTER_PASSWORD: 'MASTER_PASSWORD'; +MASTER_PORT: 'MASTER_PORT'; +MASTER_RETRY_COUNT: 'MASTER_RETRY_COUNT'; +MASTER_SSL: 'MASTER_SSL'; +MASTER_SSL_CA: 'MASTER_SSL_CA'; +MASTER_SSL_CAPATH: 'MASTER_SSL_CAPATH'; +MASTER_SSL_CERT: 'MASTER_SSL_CERT'; +MASTER_SSL_CIPHER: 'MASTER_SSL_CIPHER'; +MASTER_SSL_CRL: 'MASTER_SSL_CRL'; +MASTER_SSL_CRLPATH: 'MASTER_SSL_CRLPATH'; +MASTER_SSL_KEY: 'MASTER_SSL_KEY'; +MASTER_TLS_VERSION: 'MASTER_TLS_VERSION'; +MASTER_USER: 'MASTER_USER'; +MAX_CONNECTIONS_PER_HOUR: 'MAX_CONNECTIONS_PER_HOUR'; +MAX_QUERIES_PER_HOUR: 'MAX_QUERIES_PER_HOUR'; +MAX_ROWS: 'MAX_ROWS'; +MAX_SIZE: 'MAX_SIZE'; +MAX_UPDATES_PER_HOUR: 'MAX_UPDATES_PER_HOUR'; +MAX_USER_CONNECTIONS: 'MAX_USER_CONNECTIONS'; +MEDIUM: 'MEDIUM'; +MEMBER: 'MEMBER'; +MERGE: 'MERGE'; +MESSAGE_TEXT: 'MESSAGE_TEXT'; +MID: 'MID'; +MIGRATE: 'MIGRATE'; +MIN_ROWS: 'MIN_ROWS'; +MODE: 'MODE'; +MODIFY: 'MODIFY'; +MUTEX: 'MUTEX'; +MYSQL: 'MYSQL'; +MYSQL_ERRNO: 'MYSQL_ERRNO'; +NAME: 'NAME'; +NAMES: 'NAMES'; +NCHAR: 'NCHAR'; +NEVER: 'NEVER'; +NEXT: 'NEXT'; +NO: 'NO'; +NODEGROUP: 'NODEGROUP'; +NONE: 'NONE'; +OFFLINE: 'OFFLINE'; +OFFSET: 'OFFSET'; +OF: 'OF'; +OJ: 'OJ'; +OLD_PASSWORD: 'OLD_PASSWORD'; +ONE: 'ONE'; +ONLINE: 'ONLINE'; +ONLY: 'ONLY'; +OPEN: 'OPEN'; +OPTIMIZER_COSTS: 'OPTIMIZER_COSTS'; +OPTIONS: 'OPTIONS'; +OWNER: 'OWNER'; +PACK_KEYS: 'PACK_KEYS'; +PAGE: 'PAGE'; +PARSER: 'PARSER'; +PARTIAL: 'PARTIAL'; +PARTITIONING: 'PARTITIONING'; +PARTITIONS: 'PARTITIONS'; +PASSWORD: 'PASSWORD'; +PHASE: 'PHASE'; +PLUGIN: 'PLUGIN'; +PLUGIN_DIR: 'PLUGIN_DIR'; +PLUGINS: 'PLUGINS'; +PORT: 'PORT'; +PRECEDES: 'PRECEDES'; +PREPARE: 'PREPARE'; +PRESERVE: 'PRESERVE'; +PREV: 'PREV'; +PROCESSLIST: 'PROCESSLIST'; +PROFILE: 'PROFILE'; +PROFILES: 'PROFILES'; +PROXY: 'PROXY'; +QUERY: 'QUERY'; +QUICK: 'QUICK'; +REBUILD: 'REBUILD'; +RECOVER: 'RECOVER'; +REDO_BUFFER_SIZE: 'REDO_BUFFER_SIZE'; +REDUNDANT: 'REDUNDANT'; +RELAY: 'RELAY'; +RELAY_LOG_FILE: 'RELAY_LOG_FILE'; +RELAY_LOG_POS: 'RELAY_LOG_POS'; +RELAYLOG: 'RELAYLOG'; +REMOVE: 'REMOVE'; +REORGANIZE: 'REORGANIZE'; +REPAIR: 'REPAIR'; +REPLICATE_DO_DB: 'REPLICATE_DO_DB'; +REPLICATE_DO_TABLE: 'REPLICATE_DO_TABLE'; +REPLICATE_IGNORE_DB: 'REPLICATE_IGNORE_DB'; +REPLICATE_IGNORE_TABLE: 'REPLICATE_IGNORE_TABLE'; +REPLICATE_REWRITE_DB: 'REPLICATE_REWRITE_DB'; +REPLICATE_WILD_DO_TABLE: 'REPLICATE_WILD_DO_TABLE'; +REPLICATE_WILD_IGNORE_TABLE: 'REPLICATE_WILD_IGNORE_TABLE'; +REPLICATION: 'REPLICATION'; +RESET: 'RESET'; +RESUME: 'RESUME'; +RETURNED_SQLSTATE: 'RETURNED_SQLSTATE'; +RETURNING: 'RETURNING'; +RETURNS: 'RETURNS'; +ROLE: 'ROLE'; +ROLLBACK: 'ROLLBACK'; +ROLLUP: 'ROLLUP'; +ROTATE: 'ROTATE'; +ROW: 'ROW'; +ROWS: 'ROWS'; +ROW_FORMAT: 'ROW_FORMAT'; +SAVEPOINT: 'SAVEPOINT'; +SCHEDULE: 'SCHEDULE'; +SECURITY: 'SECURITY'; +SERVER: 'SERVER'; +SESSION: 'SESSION'; +SHARE: 'SHARE'; +SHARED: 'SHARED'; +SIGNED: 'SIGNED'; +SIMPLE: 'SIMPLE'; +SLAVE: 'SLAVE'; +SLOW: 'SLOW'; +SNAPSHOT: 'SNAPSHOT'; +SOCKET: 'SOCKET'; +SOME: 'SOME'; +SONAME: 'SONAME'; +SOUNDS: 'SOUNDS'; +SOURCE: 'SOURCE'; +SQL_AFTER_GTIDS: 'SQL_AFTER_GTIDS'; +SQL_AFTER_MTS_GAPS: 'SQL_AFTER_MTS_GAPS'; +SQL_BEFORE_GTIDS: 'SQL_BEFORE_GTIDS'; +SQL_BUFFER_RESULT: 'SQL_BUFFER_RESULT'; +SQL_CACHE: 'SQL_CACHE'; +SQL_NO_CACHE: 'SQL_NO_CACHE'; +SQL_THREAD: 'SQL_THREAD'; +START: 'START'; +STARTS: 'STARTS'; +STATS_AUTO_RECALC: 'STATS_AUTO_RECALC'; +STATS_PERSISTENT: 'STATS_PERSISTENT'; +STATS_SAMPLE_PAGES: 'STATS_SAMPLE_PAGES'; +STATUS: 'STATUS'; +STOP: 'STOP'; +STORAGE: 'STORAGE'; +STORED: 'STORED'; +STRING: 'STRING'; +SUBCLASS_ORIGIN: 'SUBCLASS_ORIGIN'; +SUBJECT: 'SUBJECT'; +SUBPARTITION: 'SUBPARTITION'; +SUBPARTITIONS: 'SUBPARTITIONS'; +SUSPEND: 'SUSPEND'; +SWAPS: 'SWAPS'; +SWITCHES: 'SWITCHES'; +TABLE_NAME: 'TABLE_NAME'; +TABLESPACE: 'TABLESPACE'; +TEMPORARY: 'TEMPORARY'; +TEMPTABLE: 'TEMPTABLE'; +THAN: 'THAN'; +TRADITIONAL: 'TRADITIONAL'; +TRANSACTION: 'TRANSACTION'; +TRANSACTIONAL: 'TRANSACTIONAL'; +TRIGGERS: 'TRIGGERS'; +TRUNCATE: 'TRUNCATE'; +UNDEFINED: 'UNDEFINED'; +UNDOFILE: 'UNDOFILE'; +UNDO_BUFFER_SIZE: 'UNDO_BUFFER_SIZE'; +UNINSTALL: 'UNINSTALL'; +UNKNOWN: 'UNKNOWN'; +UNTIL: 'UNTIL'; +UPGRADE: 'UPGRADE'; +USER: 'USER'; +USE_FRM: 'USE_FRM'; +USER_RESOURCES: 'USER_RESOURCES'; +VALIDATION: 'VALIDATION'; +VALUE: 'VALUE'; +VARIABLES: 'VARIABLES'; +VIEW: 'VIEW'; +VIRTUAL: 'VIRTUAL'; +VISIBLE: 'VISIBLE'; +WAIT: 'WAIT'; +WARNINGS: 'WARNINGS'; +WITHOUT: 'WITHOUT'; +WORK: 'WORK'; +WRAPPER: 'WRAPPER'; +X509: 'X509'; +XA: 'XA'; +XML: 'XML'; + + +// Date format Keywords + +EUR: 'EUR'; +USA: 'USA'; +JIS: 'JIS'; +ISO: 'ISO'; +INTERNAL: 'INTERNAL'; + + +// Interval type Keywords + +QUARTER: 'QUARTER'; +MONTH: 'MONTH'; +DAY: 'DAY'; +HOUR: 'HOUR'; +MINUTE: 'MINUTE'; +WEEK: 'WEEK'; +SECOND: 'SECOND'; +MICROSECOND: 'MICROSECOND'; + + +// PRIVILEGES + +TABLES: 'TABLES'; +ROUTINE: 'ROUTINE'; +EXECUTE: 'EXECUTE'; +FILE: 'FILE'; +PROCESS: 'PROCESS'; +RELOAD: 'RELOAD'; +SHUTDOWN: 'SHUTDOWN'; +SUPER: 'SUPER'; +PRIVILEGES: 'PRIVILEGES'; +APPLICATION_PASSWORD_ADMIN: 'APPLICATION_PASSWORD_ADMIN'; +AUDIT_ADMIN: 'AUDIT_ADMIN'; +BACKUP_ADMIN: 'BACKUP_ADMIN'; +BINLOG_ADMIN: 'BINLOG_ADMIN'; +BINLOG_ENCRYPTION_ADMIN: 'BINLOG_ENCRYPTION_ADMIN'; +CLONE_ADMIN: 'CLONE_ADMIN'; +CONNECTION_ADMIN: 'CONNECTION_ADMIN'; +ENCRYPTION_KEY_ADMIN: 'ENCRYPTION_KEY_ADMIN'; +FIREWALL_ADMIN: 'FIREWALL_ADMIN'; +FIREWALL_USER: 'FIREWALL_USER'; +FLUSH_OPTIMIZER_COSTS: 'FLUSH_OPTIMIZER_COSTS'; +FLUSH_STATUS: 'FLUSH_STATUS'; +FLUSH_TABLES: 'FLUSH_TABLES'; +FLUSH_USER_RESOURCES: 'FLUSH_USER_RESOURCES'; +GROUP_REPLICATION_ADMIN: 'GROUP_REPLICATION_ADMIN'; +INNODB_REDO_LOG_ARCHIVE: 'INNODB_REDO_LOG_ARCHIVE'; +INNODB_REDO_LOG_ENABLE: 'INNODB_REDO_LOG_ENABLE'; +NDB_STORED_USER: 'NDB_STORED_USER'; +PERSIST_RO_VARIABLES_ADMIN: 'PERSIST_RO_VARIABLES_ADMIN'; +REPLICATION_APPLIER: 'REPLICATION_APPLIER'; +REPLICATION_SLAVE_ADMIN: 'REPLICATION_SLAVE_ADMIN'; +RESOURCE_GROUP_ADMIN: 'RESOURCE_GROUP_ADMIN'; +RESOURCE_GROUP_USER: 'RESOURCE_GROUP_USER'; +ROLE_ADMIN: 'ROLE_ADMIN'; +SERVICE_CONNECTION_ADMIN: 'SERVICE_CONNECTION_ADMIN'; +SESSION_VARIABLES_ADMIN: QUOTE_SYMB? 'SESSION_VARIABLES_ADMIN' QUOTE_SYMB?; +SET_USER_ID: 'SET_USER_ID'; +SHOW_ROUTINE: 'SHOW_ROUTINE'; +SYSTEM_VARIABLES_ADMIN: 'SYSTEM_VARIABLES_ADMIN'; +TABLE_ENCRYPTION_ADMIN: 'TABLE_ENCRYPTION_ADMIN'; +VERSION_TOKEN_ADMIN: 'VERSION_TOKEN_ADMIN'; +XA_RECOVER_ADMIN: 'XA_RECOVER_ADMIN'; + + +// Charsets + +ARMSCII8: 'ARMSCII8'; +ASCII: 'ASCII'; +BIG5: 'BIG5'; +CP1250: 'CP1250'; +CP1251: 'CP1251'; +CP1256: 'CP1256'; +CP1257: 'CP1257'; +CP850: 'CP850'; +CP852: 'CP852'; +CP866: 'CP866'; +CP932: 'CP932'; +DEC8: 'DEC8'; +EUCJPMS: 'EUCJPMS'; +EUCKR: 'EUCKR'; +GB2312: 'GB2312'; +GBK: 'GBK'; +GEOSTD8: 'GEOSTD8'; +GREEK: 'GREEK'; +HEBREW: 'HEBREW'; +HP8: 'HP8'; +KEYBCS2: 'KEYBCS2'; +KOI8R: 'KOI8R'; +KOI8U: 'KOI8U'; +LATIN1: 'LATIN1'; +LATIN2: 'LATIN2'; +LATIN5: 'LATIN5'; +LATIN7: 'LATIN7'; +MACCE: 'MACCE'; +MACROMAN: 'MACROMAN'; +SJIS: 'SJIS'; +SWE7: 'SWE7'; +TIS620: 'TIS620'; +UCS2: 'UCS2'; +UJIS: 'UJIS'; +UTF16: 'UTF16'; +UTF16LE: 'UTF16LE'; +UTF32: 'UTF32'; +UTF8: 'UTF8'; +UTF8MB3: 'UTF8MB3'; +UTF8MB4: 'UTF8MB4'; + + +// DB Engines + +ARCHIVE: 'ARCHIVE'; +BLACKHOLE: 'BLACKHOLE'; +CSV: 'CSV'; +FEDERATED: 'FEDERATED'; +INNODB: 'INNODB'; +MEMORY: 'MEMORY'; +MRG_MYISAM: 'MRG_MYISAM'; +MYISAM: 'MYISAM'; +NDB: 'NDB'; +NDBCLUSTER: 'NDBCLUSTER'; +PERFORMANCE_SCHEMA: 'PERFORMANCE_SCHEMA'; +TOKUDB: 'TOKUDB'; + + +// Transaction Levels + +REPEATABLE: 'REPEATABLE'; +COMMITTED: 'COMMITTED'; +UNCOMMITTED: 'UNCOMMITTED'; +SERIALIZABLE: 'SERIALIZABLE'; + + +// Spatial data types + +GEOMETRYCOLLECTION: 'GEOMETRYCOLLECTION'; +GEOMCOLLECTION: 'GEOMCOLLECTION'; +GEOMETRY: 'GEOMETRY'; +LINESTRING: 'LINESTRING'; +MULTILINESTRING: 'MULTILINESTRING'; +MULTIPOINT: 'MULTIPOINT'; +MULTIPOLYGON: 'MULTIPOLYGON'; +POINT: 'POINT'; +POLYGON: 'POLYGON'; + + +// Common function names + +ABS: 'ABS'; +ACOS: 'ACOS'; +ADDDATE: 'ADDDATE'; +ADDTIME: 'ADDTIME'; +AES_DECRYPT: 'AES_DECRYPT'; +AES_ENCRYPT: 'AES_ENCRYPT'; +AREA: 'AREA'; +ASBINARY: 'ASBINARY'; +ASIN: 'ASIN'; +ASTEXT: 'ASTEXT'; +ASWKB: 'ASWKB'; +ASWKT: 'ASWKT'; +ASYMMETRIC_DECRYPT: 'ASYMMETRIC_DECRYPT'; +ASYMMETRIC_DERIVE: 'ASYMMETRIC_DERIVE'; +ASYMMETRIC_ENCRYPT: 'ASYMMETRIC_ENCRYPT'; +ASYMMETRIC_SIGN: 'ASYMMETRIC_SIGN'; +ASYMMETRIC_VERIFY: 'ASYMMETRIC_VERIFY'; +ATAN: 'ATAN'; +ATAN2: 'ATAN2'; +BENCHMARK: 'BENCHMARK'; +BIN: 'BIN'; +BIT_COUNT: 'BIT_COUNT'; +BIT_LENGTH: 'BIT_LENGTH'; +BUFFER: 'BUFFER'; +CATALOG_NAME: 'CATALOG_NAME'; +CEIL: 'CEIL'; +CEILING: 'CEILING'; +CENTROID: 'CENTROID'; +CHARACTER_LENGTH: 'CHARACTER_LENGTH'; +CHARSET: 'CHARSET'; +CHAR_LENGTH: 'CHAR_LENGTH'; +COERCIBILITY: 'COERCIBILITY'; +COLLATION: 'COLLATION'; +COMPRESS: 'COMPRESS'; +CONCAT: 'CONCAT'; +CONCAT_WS: 'CONCAT_WS'; +CONNECTION_ID: 'CONNECTION_ID'; +CONV: 'CONV'; +CONVERT_TZ: 'CONVERT_TZ'; +COS: 'COS'; +COT: 'COT'; +CRC32: 'CRC32'; +CREATE_ASYMMETRIC_PRIV_KEY: 'CREATE_ASYMMETRIC_PRIV_KEY'; +CREATE_ASYMMETRIC_PUB_KEY: 'CREATE_ASYMMETRIC_PUB_KEY'; +CREATE_DH_PARAMETERS: 'CREATE_DH_PARAMETERS'; +CREATE_DIGEST: 'CREATE_DIGEST'; +CROSSES: 'CROSSES'; +DATEDIFF: 'DATEDIFF'; +DATE_FORMAT: 'DATE_FORMAT'; +DAYNAME: 'DAYNAME'; +DAYOFMONTH: 'DAYOFMONTH'; +DAYOFWEEK: 'DAYOFWEEK'; +DAYOFYEAR: 'DAYOFYEAR'; +DECODE: 'DECODE'; +DEGREES: 'DEGREES'; +DES_DECRYPT: 'DES_DECRYPT'; +DES_ENCRYPT: 'DES_ENCRYPT'; +DIMENSION: 'DIMENSION'; +DISJOINT: 'DISJOINT'; +ELT: 'ELT'; +ENCODE: 'ENCODE'; +ENCRYPT: 'ENCRYPT'; +ENDPOINT: 'ENDPOINT'; +ENVELOPE: 'ENVELOPE'; +EQUALS: 'EQUALS'; +EXP: 'EXP'; +EXPORT_SET: 'EXPORT_SET'; +EXTERIORRING: 'EXTERIORRING'; +EXTRACTVALUE: 'EXTRACTVALUE'; +FIELD: 'FIELD'; +FIND_IN_SET: 'FIND_IN_SET'; +FLOOR: 'FLOOR'; +FORMAT: 'FORMAT'; +FOUND_ROWS: 'FOUND_ROWS'; +FROM_BASE64: 'FROM_BASE64'; +FROM_DAYS: 'FROM_DAYS'; +FROM_UNIXTIME: 'FROM_UNIXTIME'; +GEOMCOLLFROMTEXT: 'GEOMCOLLFROMTEXT'; +GEOMCOLLFROMWKB: 'GEOMCOLLFROMWKB'; +GEOMETRYCOLLECTIONFROMTEXT: 'GEOMETRYCOLLECTIONFROMTEXT'; +GEOMETRYCOLLECTIONFROMWKB: 'GEOMETRYCOLLECTIONFROMWKB'; +GEOMETRYFROMTEXT: 'GEOMETRYFROMTEXT'; +GEOMETRYFROMWKB: 'GEOMETRYFROMWKB'; +GEOMETRYN: 'GEOMETRYN'; +GEOMETRYTYPE: 'GEOMETRYTYPE'; +GEOMFROMTEXT: 'GEOMFROMTEXT'; +GEOMFROMWKB: 'GEOMFROMWKB'; +GET_FORMAT: 'GET_FORMAT'; +GET_LOCK: 'GET_LOCK'; +GLENGTH: 'GLENGTH'; +GREATEST: 'GREATEST'; +GTID_SUBSET: 'GTID_SUBSET'; +GTID_SUBTRACT: 'GTID_SUBTRACT'; +HEX: 'HEX'; +IFNULL: 'IFNULL'; +INET6_ATON: 'INET6_ATON'; +INET6_NTOA: 'INET6_NTOA'; +INET_ATON: 'INET_ATON'; +INET_NTOA: 'INET_NTOA'; +INSTR: 'INSTR'; +INTERIORRINGN: 'INTERIORRINGN'; +INTERSECTS: 'INTERSECTS'; +ISCLOSED: 'ISCLOSED'; +ISEMPTY: 'ISEMPTY'; +ISNULL: 'ISNULL'; +ISSIMPLE: 'ISSIMPLE'; +IS_FREE_LOCK: 'IS_FREE_LOCK'; +IS_IPV4: 'IS_IPV4'; +IS_IPV4_COMPAT: 'IS_IPV4_COMPAT'; +IS_IPV4_MAPPED: 'IS_IPV4_MAPPED'; +IS_IPV6: 'IS_IPV6'; +IS_USED_LOCK: 'IS_USED_LOCK'; +LAST_INSERT_ID: 'LAST_INSERT_ID'; +LCASE: 'LCASE'; +LEAST: 'LEAST'; +LENGTH: 'LENGTH'; +LINEFROMTEXT: 'LINEFROMTEXT'; +LINEFROMWKB: 'LINEFROMWKB'; +LINESTRINGFROMTEXT: 'LINESTRINGFROMTEXT'; +LINESTRINGFROMWKB: 'LINESTRINGFROMWKB'; +LN: 'LN'; +LOAD_FILE: 'LOAD_FILE'; +LOCATE: 'LOCATE'; +LOG: 'LOG'; +LOG10: 'LOG10'; +LOG2: 'LOG2'; +LOWER: 'LOWER'; +LPAD: 'LPAD'; +LTRIM: 'LTRIM'; +MAKEDATE: 'MAKEDATE'; +MAKETIME: 'MAKETIME'; +MAKE_SET: 'MAKE_SET'; +MASTER_POS_WAIT: 'MASTER_POS_WAIT'; +MBRCONTAINS: 'MBRCONTAINS'; +MBRDISJOINT: 'MBRDISJOINT'; +MBREQUAL: 'MBREQUAL'; +MBRINTERSECTS: 'MBRINTERSECTS'; +MBROVERLAPS: 'MBROVERLAPS'; +MBRTOUCHES: 'MBRTOUCHES'; +MBRWITHIN: 'MBRWITHIN'; +MD5: 'MD5'; +MLINEFROMTEXT: 'MLINEFROMTEXT'; +MLINEFROMWKB: 'MLINEFROMWKB'; +MONTHNAME: 'MONTHNAME'; +MPOINTFROMTEXT: 'MPOINTFROMTEXT'; +MPOINTFROMWKB: 'MPOINTFROMWKB'; +MPOLYFROMTEXT: 'MPOLYFROMTEXT'; +MPOLYFROMWKB: 'MPOLYFROMWKB'; +MULTILINESTRINGFROMTEXT: 'MULTILINESTRINGFROMTEXT'; +MULTILINESTRINGFROMWKB: 'MULTILINESTRINGFROMWKB'; +MULTIPOINTFROMTEXT: 'MULTIPOINTFROMTEXT'; +MULTIPOINTFROMWKB: 'MULTIPOINTFROMWKB'; +MULTIPOLYGONFROMTEXT: 'MULTIPOLYGONFROMTEXT'; +MULTIPOLYGONFROMWKB: 'MULTIPOLYGONFROMWKB'; +NAME_CONST: 'NAME_CONST'; +NULLIF: 'NULLIF'; +NUMGEOMETRIES: 'NUMGEOMETRIES'; +NUMINTERIORRINGS: 'NUMINTERIORRINGS'; +NUMPOINTS: 'NUMPOINTS'; +OCT: 'OCT'; +OCTET_LENGTH: 'OCTET_LENGTH'; +ORD: 'ORD'; +OVERLAPS: 'OVERLAPS'; +PERIOD_ADD: 'PERIOD_ADD'; +PERIOD_DIFF: 'PERIOD_DIFF'; +PI: 'PI'; +POINTFROMTEXT: 'POINTFROMTEXT'; +POINTFROMWKB: 'POINTFROMWKB'; +POINTN: 'POINTN'; +POLYFROMTEXT: 'POLYFROMTEXT'; +POLYFROMWKB: 'POLYFROMWKB'; +POLYGONFROMTEXT: 'POLYGONFROMTEXT'; +POLYGONFROMWKB: 'POLYGONFROMWKB'; +POW: 'POW'; +POWER: 'POWER'; +QUOTE: 'QUOTE'; +RADIANS: 'RADIANS'; +RAND: 'RAND'; +RANDOM_BYTES: 'RANDOM_BYTES'; +RELEASE_LOCK: 'RELEASE_LOCK'; +REVERSE: 'REVERSE'; +ROUND: 'ROUND'; +ROW_COUNT: 'ROW_COUNT'; +RPAD: 'RPAD'; +RTRIM: 'RTRIM'; +SEC_TO_TIME: 'SEC_TO_TIME'; +SESSION_USER: 'SESSION_USER'; +SHA: 'SHA'; +SHA1: 'SHA1'; +SHA2: 'SHA2'; +SCHEMA_NAME: 'SCHEMA_NAME'; +SIGN: 'SIGN'; +SIN: 'SIN'; +SLEEP: 'SLEEP'; +SOUNDEX: 'SOUNDEX'; +SQL_THREAD_WAIT_AFTER_GTIDS: 'SQL_THREAD_WAIT_AFTER_GTIDS'; +SQRT: 'SQRT'; +SRID: 'SRID'; +STARTPOINT: 'STARTPOINT'; +STRCMP: 'STRCMP'; +STR_TO_DATE: 'STR_TO_DATE'; +ST_AREA: 'ST_AREA'; +ST_ASBINARY: 'ST_ASBINARY'; +ST_ASTEXT: 'ST_ASTEXT'; +ST_ASWKB: 'ST_ASWKB'; +ST_ASWKT: 'ST_ASWKT'; +ST_BUFFER: 'ST_BUFFER'; +ST_CENTROID: 'ST_CENTROID'; +ST_CONTAINS: 'ST_CONTAINS'; +ST_CROSSES: 'ST_CROSSES'; +ST_DIFFERENCE: 'ST_DIFFERENCE'; +ST_DIMENSION: 'ST_DIMENSION'; +ST_DISJOINT: 'ST_DISJOINT'; +ST_DISTANCE: 'ST_DISTANCE'; +ST_ENDPOINT: 'ST_ENDPOINT'; +ST_ENVELOPE: 'ST_ENVELOPE'; +ST_EQUALS: 'ST_EQUALS'; +ST_EXTERIORRING: 'ST_EXTERIORRING'; +ST_GEOMCOLLFROMTEXT: 'ST_GEOMCOLLFROMTEXT'; +ST_GEOMCOLLFROMTXT: 'ST_GEOMCOLLFROMTXT'; +ST_GEOMCOLLFROMWKB: 'ST_GEOMCOLLFROMWKB'; +ST_GEOMETRYCOLLECTIONFROMTEXT: 'ST_GEOMETRYCOLLECTIONFROMTEXT'; +ST_GEOMETRYCOLLECTIONFROMWKB: 'ST_GEOMETRYCOLLECTIONFROMWKB'; +ST_GEOMETRYFROMTEXT: 'ST_GEOMETRYFROMTEXT'; +ST_GEOMETRYFROMWKB: 'ST_GEOMETRYFROMWKB'; +ST_GEOMETRYN: 'ST_GEOMETRYN'; +ST_GEOMETRYTYPE: 'ST_GEOMETRYTYPE'; +ST_GEOMFROMTEXT: 'ST_GEOMFROMTEXT'; +ST_GEOMFROMWKB: 'ST_GEOMFROMWKB'; +ST_INTERIORRINGN: 'ST_INTERIORRINGN'; +ST_INTERSECTION: 'ST_INTERSECTION'; +ST_INTERSECTS: 'ST_INTERSECTS'; +ST_ISCLOSED: 'ST_ISCLOSED'; +ST_ISEMPTY: 'ST_ISEMPTY'; +ST_ISSIMPLE: 'ST_ISSIMPLE'; +ST_LINEFROMTEXT: 'ST_LINEFROMTEXT'; +ST_LINEFROMWKB: 'ST_LINEFROMWKB'; +ST_LINESTRINGFROMTEXT: 'ST_LINESTRINGFROMTEXT'; +ST_LINESTRINGFROMWKB: 'ST_LINESTRINGFROMWKB'; +ST_NUMGEOMETRIES: 'ST_NUMGEOMETRIES'; +ST_NUMINTERIORRING: 'ST_NUMINTERIORRING'; +ST_NUMINTERIORRINGS: 'ST_NUMINTERIORRINGS'; +ST_NUMPOINTS: 'ST_NUMPOINTS'; +ST_OVERLAPS: 'ST_OVERLAPS'; +ST_POINTFROMTEXT: 'ST_POINTFROMTEXT'; +ST_POINTFROMWKB: 'ST_POINTFROMWKB'; +ST_POINTN: 'ST_POINTN'; +ST_POLYFROMTEXT: 'ST_POLYFROMTEXT'; +ST_POLYFROMWKB: 'ST_POLYFROMWKB'; +ST_POLYGONFROMTEXT: 'ST_POLYGONFROMTEXT'; +ST_POLYGONFROMWKB: 'ST_POLYGONFROMWKB'; +ST_SRID: 'ST_SRID'; +ST_STARTPOINT: 'ST_STARTPOINT'; +ST_SYMDIFFERENCE: 'ST_SYMDIFFERENCE'; +ST_TOUCHES: 'ST_TOUCHES'; +ST_UNION: 'ST_UNION'; +ST_WITHIN: 'ST_WITHIN'; +ST_X: 'ST_X'; +ST_Y: 'ST_Y'; +SUBDATE: 'SUBDATE'; +SUBSTRING_INDEX: 'SUBSTRING_INDEX'; +SUBTIME: 'SUBTIME'; +SYSTEM_USER: 'SYSTEM_USER'; +TAN: 'TAN'; +TIMEDIFF: 'TIMEDIFF'; +TIMESTAMPADD: 'TIMESTAMPADD'; +TIMESTAMPDIFF: 'TIMESTAMPDIFF'; +TIME_FORMAT: 'TIME_FORMAT'; +TIME_TO_SEC: 'TIME_TO_SEC'; +TOUCHES: 'TOUCHES'; +TO_BASE64: 'TO_BASE64'; +TO_DAYS: 'TO_DAYS'; +TO_SECONDS: 'TO_SECONDS'; +UCASE: 'UCASE'; +UNCOMPRESS: 'UNCOMPRESS'; +UNCOMPRESSED_LENGTH: 'UNCOMPRESSED_LENGTH'; +UNHEX: 'UNHEX'; +UNIX_TIMESTAMP: 'UNIX_TIMESTAMP'; +UPDATEXML: 'UPDATEXML'; +UPPER: 'UPPER'; +UUID: 'UUID'; +UUID_SHORT: 'UUID_SHORT'; +VALIDATE_PASSWORD_STRENGTH: 'VALIDATE_PASSWORD_STRENGTH'; +VERSION: 'VERSION'; +WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS: 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'; +WEEKDAY: 'WEEKDAY'; +WEEKOFYEAR: 'WEEKOFYEAR'; +WEIGHT_STRING: 'WEIGHT_STRING'; +WITHIN: 'WITHIN'; +YEARWEEK: 'YEARWEEK'; +Y_FUNCTION: 'Y'; +X_FUNCTION: 'X'; + + + +// Operators +// Operators. Assigns + +VAR_ASSIGN: ':='; +PLUS_ASSIGN: '+='; +MINUS_ASSIGN: '-='; +MULT_ASSIGN: '*='; +DIV_ASSIGN: '/='; +MOD_ASSIGN: '%='; +AND_ASSIGN: '&='; +XOR_ASSIGN: '^='; +OR_ASSIGN: '|='; + + +// Operators. Arithmetics + +STAR: '*'; +DIVIDE: '/'; +MODULE: '%'; +PLUS: '+'; +MINUSMINUS: '--'; +MINUS: '-'; +DIV: 'DIV'; +MOD: 'MOD'; + + +// Operators. Comparation + +EQUAL_SYMBOL: '='; +GREATER_SYMBOL: '>'; +LESS_SYMBOL: '<'; +EXCLAMATION_SYMBOL: '!'; + + +// Operators. Bit + +BIT_NOT_OP: '~'; +BIT_OR_OP: '|'; +BIT_AND_OP: '&'; +BIT_XOR_OP: '^'; + + +// Constructors symbols + +DOT: '.'; +LR_BRACKET: '('; +RR_BRACKET: ')'; +COMMA: ','; +SEMI: ';'; +AT_SIGN: '@'; +ZERO_DECIMAL: '0'; +ONE_DECIMAL: '1'; +TWO_DECIMAL: '2'; +SINGLE_QUOTE_SYMB: '\''; +DOUBLE_QUOTE_SYMB: '"'; +REVERSE_QUOTE_SYMB: '`'; +COLON_SYMB: ':'; + +fragment QUOTE_SYMB + : SINGLE_QUOTE_SYMB | DOUBLE_QUOTE_SYMB | REVERSE_QUOTE_SYMB + ; + + + +// Charsets + +CHARSET_REVERSE_QOUTE_STRING: '`' CHARSET_NAME '`'; + + + +// File's sizes + + +FILESIZE_LITERAL: DEC_DIGIT+ ('K'|'M'|'G'|'T'); + + + +// Literal Primitives + + +START_NATIONAL_STRING_LITERAL: 'N' SQUOTA_STRING; +STRING_LITERAL: DQUOTA_STRING | SQUOTA_STRING | BQUOTA_STRING; +DECIMAL_LITERAL: DEC_DIGIT+; +HEXADECIMAL_LITERAL: 'X' '\'' (HEX_DIGIT HEX_DIGIT)+ '\'' + | '0X' HEX_DIGIT+; + +REAL_LITERAL: (DEC_DIGIT+)? '.' DEC_DIGIT+ + | DEC_DIGIT+ '.' EXPONENT_NUM_PART + | (DEC_DIGIT+)? '.' (DEC_DIGIT+ EXPONENT_NUM_PART) + | DEC_DIGIT+ EXPONENT_NUM_PART; +NULL_SPEC_LITERAL: '\\' 'N'; +BIT_STRING: BIT_STRING_L; +STRING_CHARSET_NAME: '_' CHARSET_NAME; + + + + +// Hack for dotID +// Prevent recognize string: .123somelatin AS ((.123), FLOAT_LITERAL), ((somelatin), ID) +// it must recoginze: .123somelatin AS ((.), DOT), (123somelatin, ID) + +DOT_ID: '.' ID_LITERAL; + + + +// Identifiers + +ID: ID_LITERAL; +// DOUBLE_QUOTE_ID: '"' ~'"'+ '"'; +REVERSE_QUOTE_ID: '`' ~'`'+ '`'; +STRING_USER_NAME: ( + SQUOTA_STRING | DQUOTA_STRING + | BQUOTA_STRING | ID_LITERAL + ) '@' + ( + SQUOTA_STRING | DQUOTA_STRING + | BQUOTA_STRING | ID_LITERAL + | IP_ADDRESS + ); +IP_ADDRESS: ( + [0-9]+ '.' [0-9.]+ + | [0-9A-F:]+ ':' [0-9A-F:]+ + ); +LOCAL_ID: '@' + ( + [A-Z0-9._$]+ + | SQUOTA_STRING + | DQUOTA_STRING + | BQUOTA_STRING + ); +GLOBAL_ID: '@' '@' + ( + [A-Z0-9._$]+ + | BQUOTA_STRING + ); + + +// Fragments for Literal primitives + +fragment CHARSET_NAME: ARMSCII8 | ASCII | BIG5 | BINARY | CP1250 + | CP1251 | CP1256 | CP1257 | CP850 + | CP852 | CP866 | CP932 | DEC8 | EUCJPMS + | EUCKR | GB2312 | GBK | GEOSTD8 | GREEK + | HEBREW | HP8 | KEYBCS2 | KOI8R | KOI8U + | LATIN1 | LATIN2 | LATIN5 | LATIN7 + | MACCE | MACROMAN | SJIS | SWE7 | TIS620 + | UCS2 | UJIS | UTF16 | UTF16LE | UTF32 + | UTF8 | UTF8MB3 | UTF8MB4; + +fragment EXPONENT_NUM_PART: 'E' [-+]? DEC_DIGIT+; +fragment ID_LITERAL: [A-Z_$0-9\u0080-\uFFFF]*?[A-Z_$\u0080-\uFFFF]+?[A-Z_$0-9\u0080-\uFFFF]*; +fragment DQUOTA_STRING: '"' ( '\\'. | '""' | ~('"'| '\\') )* '"'; +fragment SQUOTA_STRING: '\'' ('\\'. | '\'\'' | ~('\'' | '\\'))* '\''; +fragment BQUOTA_STRING: '`' ( '\\'. | '``' | ~('`'|'\\'))* '`'; +fragment HEX_DIGIT: [0-9A-F]; +fragment DEC_DIGIT: [0-9]; +fragment BIT_STRING_L: 'B' '\'' [01]+ '\''; + + + +// Last tokens must generate Errors + +ERROR_RECONGNIGION: . -> channel(ERRORCHANNEL); \ No newline at end of file diff --git a/toolkit/dbvendor/mysql/parser/grammar/MySqlParser.g4 b/toolkit/dbvendor/mysql/parser/grammar/MySqlParser.g4 new file mode 100644 index 00000000..6b0af634 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/grammar/MySqlParser.g4 @@ -0,0 +1,2590 @@ +// For more information please see https://github.com/antlr/grammars-v4/tree/master/sql/mysql/Positive-Technologies + +parser grammar MySqlParser; + +options { tokenVocab=MySqlLexer; } + + +// Top Level Description + +root + : sqlStatements? MINUSMINUS? EOF + ; + +sqlStatements + : (sqlStatement MINUSMINUS? SEMI? | emptyStatement)* + (sqlStatement (MINUSMINUS? SEMI)? | emptyStatement) + ; + +sqlStatement + : ddlStatement | dmlStatement | transactionStatement + | replicationStatement | preparedStatement + | administrationStatement | utilityStatement + ; + +emptyStatement + : SEMI + ; + +ddlStatement + : createDatabase | createEvent | createIndex + | createLogfileGroup | createProcedure | createFunction + | createServer | createTable | createTablespaceInnodb + | createTablespaceNdb | createTrigger | createView + | alterDatabase | alterEvent | alterFunction + | alterInstance | alterLogfileGroup | alterProcedure + | alterServer | alterTable | alterTablespace | alterView + | dropDatabase | dropEvent | dropIndex + | dropLogfileGroup | dropProcedure | dropFunction + | dropServer | dropTable | dropTablespace + | dropTrigger | dropView + | renameTable | truncateTable + ; + +dmlStatement + : selectStatement | insertStatement | updateStatement + | deleteStatement | replaceStatement | callStatement + | loadDataStatement | loadXmlStatement | doStatement + | handlerStatement + ; + +transactionStatement + : startTransaction + | beginWork | commitWork | rollbackWork + | savepointStatement | rollbackStatement + | releaseStatement | lockTables | unlockTables + ; + +replicationStatement + : changeMaster | changeReplicationFilter | purgeBinaryLogs + | resetMaster | resetSlave | startSlave | stopSlave + | startGroupReplication | stopGroupReplication + | xaStartTransaction | xaEndTransaction | xaPrepareStatement + | xaCommitWork | xaRollbackWork | xaRecoverWork + ; + +preparedStatement + : prepareStatement | executeStatement | deallocatePrepare + ; + +// remark: NOT INCLUDED IN sqlStatement, but include in body +// of routine's statements +compoundStatement + : blockStatement + | caseStatement | ifStatement | leaveStatement + | loopStatement | repeatStatement | whileStatement + | iterateStatement | returnStatement | cursorStatement + ; + +administrationStatement + : alterUser | createUser | dropUser | grantStatement + | grantProxy | renameUser | revokeStatement + | revokeProxy | analyzeTable | checkTable + | checksumTable | optimizeTable | repairTable + | createUdfunction | installPlugin | uninstallPlugin + | setStatement | showStatement | binlogStatement + | cacheIndexStatement | flushStatement | killStatement + | loadIndexIntoCache | resetStatement + | shutdownStatement + ; + +utilityStatement + : simpleDescribeStatement | fullDescribeStatement + | helpStatement | useStatement | signalStatement + | resignalStatement | diagnosticsStatement + ; + + +// Data Definition Language + +// Create statements + +createDatabase + : CREATE dbFormat=(DATABASE | SCHEMA) + ifNotExists? uid createDatabaseOption* + ; + +createEvent + : CREATE ownerStatement? EVENT ifNotExists? fullId + ON SCHEDULE scheduleExpression + (ON COMPLETION NOT? PRESERVE)? enableType? + (COMMENT STRING_LITERAL)? + DO routineBody + ; + +createIndex + : CREATE + intimeAction=(ONLINE | OFFLINE)? + indexCategory=(UNIQUE | FULLTEXT | SPATIAL)? + INDEX uid indexType? + ON tableName indexColumnNames + indexOption* + ( + ALGORITHM '='? algType=(DEFAULT | INPLACE | COPY) + | LOCK '='? + lockType=(DEFAULT | NONE | SHARED | EXCLUSIVE) + )* + ; + +createLogfileGroup + : CREATE LOGFILE GROUP uid + ADD UNDOFILE undoFile=STRING_LITERAL + (INITIAL_SIZE '='? initSize=fileSizeLiteral)? + (UNDO_BUFFER_SIZE '='? undoSize=fileSizeLiteral)? + (REDO_BUFFER_SIZE '='? redoSize=fileSizeLiteral)? + (NODEGROUP '='? uid)? + WAIT? + (COMMENT '='? comment=STRING_LITERAL)? + ENGINE '='? engineName + ; + +createProcedure + : CREATE ownerStatement? + PROCEDURE fullId + '(' procedureParameter? (',' procedureParameter)* ')' + routineOption* + routineBody + ; + +createFunction + : CREATE ownerStatement? + FUNCTION fullId + '(' functionParameter? (',' functionParameter)* ')' + RETURNS dataType + routineOption* + (routineBody | returnStatement) + ; + +createServer + : CREATE SERVER uid + FOREIGN DATA WRAPPER wrapperName=(MYSQL | STRING_LITERAL) + OPTIONS '(' serverOption (',' serverOption)* ')' + ; + +createTable + : CREATE TEMPORARY? TABLE ifNotExists? + tableName + ( + LIKE tableName + | '(' LIKE parenthesisTable=tableName ')' + ) #copyCreateTable + | CREATE TEMPORARY? TABLE ifNotExists? + tableName createDefinitions? + ( tableOption (','? tableOption)* )? + partitionDefinitions? keyViolate=(IGNORE | REPLACE)? + AS? selectStatement #queryCreateTable + | CREATE TEMPORARY? TABLE ifNotExists? + tableName createDefinitions + ( tableOption (','? tableOption)* )? + partitionDefinitions? #columnCreateTable + ; + +createTablespaceInnodb + : CREATE TABLESPACE uid + ADD DATAFILE datafile=STRING_LITERAL + (FILE_BLOCK_SIZE '=' fileBlockSize=fileSizeLiteral)? + (ENGINE '='? engineName)? + ; + +createTablespaceNdb + : CREATE TABLESPACE uid + ADD DATAFILE datafile=STRING_LITERAL + USE LOGFILE GROUP uid + (EXTENT_SIZE '='? extentSize=fileSizeLiteral)? + (INITIAL_SIZE '='? initialSize=fileSizeLiteral)? + (AUTOEXTEND_SIZE '='? autoextendSize=fileSizeLiteral)? + (MAX_SIZE '='? maxSize=fileSizeLiteral)? + (NODEGROUP '='? uid)? + WAIT? + (COMMENT '='? comment=STRING_LITERAL)? + ENGINE '='? engineName + ; + +createTrigger + : CREATE ownerStatement? + TRIGGER thisTrigger=fullId + triggerTime=(BEFORE | AFTER) + triggerEvent=(INSERT | UPDATE | DELETE) + ON tableName FOR EACH ROW + (triggerPlace=(FOLLOWS | PRECEDES) otherTrigger=fullId)? + routineBody + ; + +createView + : CREATE (OR REPLACE)? + ( + ALGORITHM '=' algType=(UNDEFINED | MERGE | TEMPTABLE) + )? + ownerStatement? + (SQL SECURITY secContext=(DEFINER | INVOKER))? + VIEW fullId ('(' uidList ')')? AS selectStatement + (WITH checkOption=(CASCADED | LOCAL)? CHECK OPTION)? + ; + +// details + +createDatabaseOption + : defaultToken=DEFAULT? (CHARACTER SET | CHARSET) '='? (charsetName | charsetDefault=DEFAULT) + | defaultToken=DEFAULT? COLLATE '='? collationName + ; + +ownerStatement + : DEFINER '=' (userName | CURRENT_USER ( '(' ')')?) + ; + +scheduleExpression + : AT timestampValue intervalExpr* #preciseSchedule + | EVERY (decimalLiteral | expression) intervalType + ( + STARTS startTimestamp=timestampValue + (startIntervals+=intervalExpr)* + )? + ( + ENDS endTimestamp=timestampValue + (endIntervals+=intervalExpr)* + )? #intervalSchedule + ; + +timestampValue + : CURRENT_TIMESTAMP + | stringLiteral + | decimalLiteral + | expression + ; + +intervalExpr + : '+' INTERVAL (decimalLiteral | expression) intervalType + ; + +intervalType + : intervalTypeBase + | YEAR | YEAR_MONTH | DAY_HOUR | DAY_MINUTE + | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND + | SECOND_MICROSECOND | MINUTE_MICROSECOND + | HOUR_MICROSECOND | DAY_MICROSECOND + ; + +enableType + : ENABLE | DISABLE | DISABLE ON SLAVE + ; + +indexType + : USING (BTREE | HASH) + ; + +indexOption + : KEY_BLOCK_SIZE '='? fileSizeLiteral + | indexType + | WITH PARSER uid + | COMMENT STRING_LITERAL + | INVISIBLE + | VISIBLE + ; + +procedureParameter + : direction=(IN | OUT | INOUT)? uid dataType + ; + +functionParameter + : uid dataType + ; + +routineOption + : COMMENT STRING_LITERAL #routineComment + | LANGUAGE SQL #routineLanguage + | NOT? DETERMINISTIC #routineBehavior + | ( + CONTAINS SQL | NO SQL | READS SQL DATA + | MODIFIES SQL DATA + ) #routineData + | SQL SECURITY context=(DEFINER | INVOKER) #routineSecurity + ; + +serverOption + : HOST STRING_LITERAL + | DATABASE STRING_LITERAL + | USER STRING_LITERAL + | PASSWORD STRING_LITERAL + | SOCKET STRING_LITERAL + | OWNER STRING_LITERAL + | PORT decimalLiteral + ; + +createDefinitions + : '(' createDefinition (',' createDefinition)* ')' + ; + +createDefinition + : uid columnDefinition #columnDeclaration + | tableConstraint #constraintDeclaration + | indexColumnDefinition #indexDeclaration + ; + +columnDefinition + : dataType columnConstraint* + ; + +columnConstraint + : nullNotnull #nullColumnConstraint + | DEFAULT defaultValue #defaultColumnConstraint + | (AUTO_INCREMENT | ON UPDATE currentTimestamp) #autoIncrementColumnConstraint + | PRIMARY? KEY #primaryKeyColumnConstraint + | UNIQUE KEY? #uniqueKeyColumnConstraint + | COMMENT STRING_LITERAL #commentColumnConstraint + | COLUMN_FORMAT colformat=(FIXED | DYNAMIC | DEFAULT) #formatColumnConstraint + | STORAGE storageval=(DISK | MEMORY | DEFAULT) #storageColumnConstraint + | referenceDefinition #referenceColumnConstraint + | COLLATE collationName #collateColumnConstraint + | (GENERATED ALWAYS)? AS '(' expression ')' (VIRTUAL | STORED)? #generatedColumnConstraint + | SERIAL DEFAULT VALUE #serialDefaultColumnConstraint + | (CONSTRAINT name=uid?)? + CHECK '(' expression ')' #checkColumnConstraint + ; + +tableConstraint + : (CONSTRAINT name=uid?)? + PRIMARY KEY index=uid? indexType? + indexColumnNames indexOption* #primaryKeyTableConstraint + | (CONSTRAINT name=uid?)? + UNIQUE indexFormat=(INDEX | KEY)? index=uid? + indexType? indexColumnNames indexOption* #uniqueKeyTableConstraint + | (CONSTRAINT name=uid?)? + FOREIGN KEY index=uid? indexColumnNames + referenceDefinition #foreignKeyTableConstraint + | (CONSTRAINT name=uid?)? + CHECK '(' expression ')' #checkTableConstraint + ; + +referenceDefinition + : REFERENCES tableName indexColumnNames? + (MATCH matchType=(FULL | PARTIAL | SIMPLE))? + referenceAction? + ; + +referenceAction + : ON DELETE onDelete=referenceControlType + ( + ON UPDATE onUpdate=referenceControlType + )? + | ON UPDATE onUpdate=referenceControlType + ( + ON DELETE onDelete=referenceControlType + )? + ; + +referenceControlType + : RESTRICT | CASCADE | SET NULL_LITERAL | NO ACTION + ; + +indexColumnDefinition + : indexFormat=(INDEX | KEY) uid? indexType? + indexColumnNames indexOption* #simpleIndexDeclaration + | (FULLTEXT | SPATIAL) + indexFormat=(INDEX | KEY)? uid? + indexColumnNames indexOption* #specialIndexDeclaration + ; + +tableOption + : ENGINE '='? engineName #tableOptionEngine + | AUTO_INCREMENT '='? decimalLiteral #tableOptionAutoIncrement + | AVG_ROW_LENGTH '='? decimalLiteral #tableOptionAverage + | DEFAULT? (CHARACTER SET | CHARSET) '='? (charsetName|DEFAULT) #tableOptionCharset + | (CHECKSUM | PAGE_CHECKSUM) '='? boolValue=('0' | '1') #tableOptionChecksum + | DEFAULT? COLLATE '='? collationName #tableOptionCollate + | COMMENT '='? STRING_LITERAL #tableOptionComment + | COMPRESSION '='? (STRING_LITERAL | ID) #tableOptionCompression + | CONNECTION '='? STRING_LITERAL #tableOptionConnection + | DATA DIRECTORY '='? STRING_LITERAL #tableOptionDataDirectory + | DELAY_KEY_WRITE '='? boolValue=('0' | '1') #tableOptionDelay + | ENCRYPTION '='? STRING_LITERAL #tableOptionEncryption + | INDEX DIRECTORY '='? STRING_LITERAL #tableOptionIndexDirectory + | INSERT_METHOD '='? insertMethod=(NO | FIRST | LAST) #tableOptionInsertMethod + | KEY_BLOCK_SIZE '='? fileSizeLiteral #tableOptionKeyBlockSize + | MAX_ROWS '='? decimalLiteral #tableOptionMaxRows + | MIN_ROWS '='? decimalLiteral #tableOptionMinRows + | PACK_KEYS '='? extBoolValue=('0' | '1' | DEFAULT) #tableOptionPackKeys + | PASSWORD '='? STRING_LITERAL #tableOptionPassword + | ROW_FORMAT '='? + rowFormat=( + DEFAULT | DYNAMIC | FIXED | COMPRESSED + | REDUNDANT | COMPACT | ID + ) #tableOptionRowFormat + | STATS_AUTO_RECALC '='? extBoolValue=(DEFAULT | '0' | '1') #tableOptionRecalculation + | STATS_PERSISTENT '='? extBoolValue=(DEFAULT | '0' | '1') #tableOptionPersistent + | STATS_SAMPLE_PAGES '='? decimalLiteral #tableOptionSamplePage + | TABLESPACE uid tablespaceStorage? #tableOptionTablespace + | tablespaceStorage #tableOptionTablespace + | UNION '='? '(' tables ')' #tableOptionUnion + ; + +tablespaceStorage + : STORAGE (DISK | MEMORY | DEFAULT) + ; + +partitionDefinitions + : PARTITION BY partitionFunctionDefinition + (PARTITIONS count=decimalLiteral)? + ( + SUBPARTITION BY subpartitionFunctionDefinition + (SUBPARTITIONS subCount=decimalLiteral)? + )? + ('(' partitionDefinition (',' partitionDefinition)* ')')? + ; + +partitionFunctionDefinition + : LINEAR? HASH '(' expression ')' #partitionFunctionHash + | LINEAR? KEY (ALGORITHM '=' algType=('1' | '2'))? + '(' uidList ')' #partitionFunctionKey + | RANGE ( '(' expression ')' | COLUMNS '(' uidList ')' ) #partitionFunctionRange + | LIST ( '(' expression ')' | COLUMNS '(' uidList ')' ) #partitionFunctionList + ; + +subpartitionFunctionDefinition + : LINEAR? HASH '(' expression ')' #subPartitionFunctionHash + | LINEAR? KEY (ALGORITHM '=' algType=('1' | '2'))? + '(' uidList ')' #subPartitionFunctionKey + ; + +partitionDefinition + : PARTITION uid VALUES LESS THAN + '(' + partitionDefinerAtom (',' partitionDefinerAtom)* + ')' + partitionOption* + ( '(' subpartitionDefinition (',' subpartitionDefinition)* ')' )? #partitionComparison + | PARTITION uid VALUES LESS THAN + partitionDefinerAtom partitionOption* + ( '(' subpartitionDefinition (',' subpartitionDefinition)* ')' )? #partitionComparison + | PARTITION uid VALUES IN + '(' + partitionDefinerAtom (',' partitionDefinerAtom)* + ')' + partitionOption* + ( '(' subpartitionDefinition (',' subpartitionDefinition)* ')' )? #partitionListAtom + | PARTITION uid VALUES IN + '(' + partitionDefinerVector (',' partitionDefinerVector)* + ')' + partitionOption* + ( '(' subpartitionDefinition (',' subpartitionDefinition)* ')' )? #partitionListVector + | PARTITION uid partitionOption* + ( '(' subpartitionDefinition (',' subpartitionDefinition)* ')' )? #partitionSimple + ; + +partitionDefinerAtom + : constant | expression | MAXVALUE + ; + +partitionDefinerVector + : '(' partitionDefinerAtom (',' partitionDefinerAtom)+ ')' + ; + +subpartitionDefinition + : SUBPARTITION uid partitionOption* + ; + +partitionOption + : STORAGE? ENGINE '='? engineName #partitionOptionEngine + | COMMENT '='? comment=STRING_LITERAL #partitionOptionComment + | DATA DIRECTORY '='? dataDirectory=STRING_LITERAL #partitionOptionDataDirectory + | INDEX DIRECTORY '='? indexDirectory=STRING_LITERAL #partitionOptionIndexDirectory + | MAX_ROWS '='? maxRows=decimalLiteral #partitionOptionMaxRows + | MIN_ROWS '='? minRows=decimalLiteral #partitionOptionMinRows + | TABLESPACE '='? tablespace=uid #partitionOptionTablespace + | NODEGROUP '='? nodegroup=uid #partitionOptionNodeGroup + ; + +// Alter statements + +alterDatabase + : ALTER dbFormat=(DATABASE | SCHEMA) uid? + createDatabaseOption+ #alterSimpleDatabase + | ALTER dbFormat=(DATABASE | SCHEMA) uid + UPGRADE DATA DIRECTORY NAME #alterUpgradeName + ; + +alterEvent + : ALTER ownerStatement? + EVENT fullId + (ON SCHEDULE scheduleExpression)? + (ON COMPLETION NOT? PRESERVE)? + (RENAME TO fullId)? enableType? + (COMMENT STRING_LITERAL)? + (DO routineBody)? + ; + +alterFunction + : ALTER FUNCTION fullId routineOption* + ; + +alterInstance + : ALTER INSTANCE ROTATE INNODB MASTER KEY + ; + +alterLogfileGroup + : ALTER LOGFILE GROUP uid + ADD UNDOFILE STRING_LITERAL + (INITIAL_SIZE '='? fileSizeLiteral)? + WAIT? ENGINE '='? engineName + ; + +alterProcedure + : ALTER PROCEDURE fullId routineOption* + ; + +alterServer + : ALTER SERVER uid OPTIONS + '(' serverOption (',' serverOption)* ')' + ; + +alterTable + : ALTER intimeAction=(ONLINE | OFFLINE)? + IGNORE? TABLE tableName + (alterSpecification (',' alterSpecification)*)? + partitionDefinitions? + ; + +alterTablespace + : ALTER TABLESPACE uid + objectAction=(ADD | DROP) DATAFILE STRING_LITERAL + (INITIAL_SIZE '=' fileSizeLiteral)? + WAIT? + ENGINE '='? engineName + ; + +alterView + : ALTER + ( + ALGORITHM '=' algType=(UNDEFINED | MERGE | TEMPTABLE) + )? + ownerStatement? + (SQL SECURITY secContext=(DEFINER | INVOKER))? + VIEW fullId ('(' uidList ')')? AS selectStatement + (WITH checkOpt=(CASCADED | LOCAL)? CHECK OPTION)? + ; + +// details + +alterSpecification + : tableOption (','? tableOption)* #alterByTableOption + | ADD COLUMN? uid columnDefinition (FIRST | AFTER uid)? #alterByAddColumn + | ADD COLUMN? + '(' + uid columnDefinition ( ',' uid columnDefinition)* + ')' #alterByAddColumns + | ADD indexFormat=(INDEX | KEY) uid? indexType? + indexColumnNames indexOption* #alterByAddIndex + | ADD (CONSTRAINT name=uid?)? PRIMARY KEY index=uid? + indexType? indexColumnNames indexOption* #alterByAddPrimaryKey + | ADD (CONSTRAINT name=uid?)? UNIQUE + indexFormat=(INDEX | KEY)? indexName=uid? + indexType? indexColumnNames indexOption* #alterByAddUniqueKey + | ADD keyType=(FULLTEXT | SPATIAL) + indexFormat=(INDEX | KEY)? uid? + indexColumnNames indexOption* #alterByAddSpecialIndex + | ADD (CONSTRAINT name=uid?)? FOREIGN KEY + indexName=uid? indexColumnNames referenceDefinition #alterByAddForeignKey + | ADD (CONSTRAINT name=uid?)? CHECK '(' expression ')' #alterByAddCheckTableConstraint + | ALGORITHM '='? algType=(DEFAULT | INPLACE | COPY) #alterBySetAlgorithm + | ALTER COLUMN? uid + (SET DEFAULT defaultValue | DROP DEFAULT) #alterByChangeDefault + | CHANGE COLUMN? oldColumn=uid + newColumn=uid columnDefinition + (FIRST | AFTER afterColumn=uid)? #alterByChangeColumn + | RENAME COLUMN oldColumn=uid TO newColumn=uid #alterByRenameColumn + | LOCK '='? lockType=(DEFAULT | NONE | SHARED | EXCLUSIVE) #alterByLock + | MODIFY COLUMN? + uid columnDefinition (FIRST | AFTER uid)? #alterByModifyColumn + | DROP COLUMN? uid RESTRICT? #alterByDropColumn + | DROP (CONSTRAINT | CHECK) uid #alterByDropConstraintCheck + | DROP PRIMARY KEY #alterByDropPrimaryKey + | RENAME indexFormat=(INDEX | KEY) uid TO uid #alterByRenameIndex + | ALTER INDEX uid (VISIBLE | INVISIBLE) #alterByAlterIndexVisibility + | DROP indexFormat=(INDEX | KEY) uid #alterByDropIndex + | DROP FOREIGN KEY uid #alterByDropForeignKey + | DISABLE KEYS #alterByDisableKeys + | ENABLE KEYS #alterByEnableKeys + | RENAME renameFormat=(TO | AS)? (uid | fullId) #alterByRename + | ORDER BY uidList #alterByOrder + | CONVERT TO CHARACTER SET charsetName + (COLLATE collationName)? #alterByConvertCharset + | DEFAULT? CHARACTER SET '=' charsetName + (COLLATE '=' collationName)? #alterByDefaultCharset + | DISCARD TABLESPACE #alterByDiscardTablespace + | IMPORT TABLESPACE #alterByImportTablespace + | FORCE #alterByForce + | validationFormat=(WITHOUT | WITH) VALIDATION #alterByValidate + | ADD PARTITION + '(' + partitionDefinition (',' partitionDefinition)* + ')' #alterByAddPartition + | DROP PARTITION uidList #alterByDropPartition + | DISCARD PARTITION (uidList | ALL) TABLESPACE #alterByDiscardPartition + | IMPORT PARTITION (uidList | ALL) TABLESPACE #alterByImportPartition + | TRUNCATE PARTITION (uidList | ALL) #alterByTruncatePartition + | COALESCE PARTITION decimalLiteral #alterByCoalescePartition + | REORGANIZE PARTITION uidList + INTO '(' + partitionDefinition (',' partitionDefinition)* + ')' #alterByReorganizePartition + | EXCHANGE PARTITION uid WITH TABLE tableName + (validationFormat=(WITH | WITHOUT) VALIDATION)? #alterByExchangePartition + | ANALYZE PARTITION (uidList | ALL) #alterByAnalyzePartition + | CHECK PARTITION (uidList | ALL) #alterByCheckPartition + | OPTIMIZE PARTITION (uidList | ALL) #alterByOptimizePartition + | REBUILD PARTITION (uidList | ALL) #alterByRebuildPartition + | REPAIR PARTITION (uidList | ALL) #alterByRepairPartition + | REMOVE PARTITIONING #alterByRemovePartitioning + | UPGRADE PARTITIONING #alterByUpgradePartitioning + ; + + +// Drop statements + +dropDatabase + : DROP dbFormat=(DATABASE | SCHEMA) ifExists? uid + ; + +dropEvent + : DROP EVENT ifExists? fullId + ; + +dropIndex + : DROP INDEX intimeAction=(ONLINE | OFFLINE)? + uid ON tableName + ( + ALGORITHM '='? algType=(DEFAULT | INPLACE | COPY) + | LOCK '='? + lockType=(DEFAULT | NONE | SHARED | EXCLUSIVE) + )* + ; + +dropLogfileGroup + : DROP LOGFILE GROUP uid ENGINE '=' engineName + ; + +dropProcedure + : DROP PROCEDURE ifExists? fullId + ; + +dropFunction + : DROP FUNCTION ifExists? fullId + ; + +dropServer + : DROP SERVER ifExists? uid + ; + +dropTable + : DROP TEMPORARY? TABLE ifExists? + tables dropType=(RESTRICT | CASCADE)? + ; + +dropTablespace + : DROP TABLESPACE uid (ENGINE '='? engineName)? + ; + +dropTrigger + : DROP TRIGGER ifExists? fullId + ; + +dropView + : DROP VIEW ifExists? + fullId (',' fullId)* dropType=(RESTRICT | CASCADE)? + ; + + +// Other DDL statements + +renameTable + : RENAME TABLE + renameTableClause (',' renameTableClause)* + ; + +renameTableClause + : tableName TO tableName + ; + +truncateTable + : TRUNCATE TABLE? tableName + ; + + +// Data Manipulation Language + +// Primary DML Statements + + +callStatement + : CALL fullId + ( + '(' (constants | expressions)? ')' + )? + ; + +deleteStatement + : singleDeleteStatement | multipleDeleteStatement + ; + +doStatement + : DO expressions + ; + +handlerStatement + : handlerOpenStatement + | handlerReadIndexStatement + | handlerReadStatement + | handlerCloseStatement + ; + +insertStatement + : INSERT + priority=(LOW_PRIORITY | DELAYED | HIGH_PRIORITY)? + IGNORE? INTO? tableName + (PARTITION '(' partitions=uidList? ')' )? + ( + ('(' columns=uidList ')')? insertStatementValue + | SET + setFirst=updatedElement + (',' setElements+=updatedElement)* + ) + ( + ON DUPLICATE KEY UPDATE + duplicatedFirst=updatedElement + (',' duplicatedElements+=updatedElement)* + )? + ; + +loadDataStatement + : LOAD DATA + priority=(LOW_PRIORITY | CONCURRENT)? + LOCAL? INFILE filename=STRING_LITERAL + violation=(REPLACE | IGNORE)? + INTO TABLE tableName + (PARTITION '(' uidList ')' )? + (CHARACTER SET charset=charsetName)? + ( + fieldsFormat=(FIELDS | COLUMNS) + selectFieldsInto+ + )? + ( + LINES + selectLinesInto+ + )? + ( + IGNORE decimalLiteral linesFormat=(LINES | ROWS) + )? + ( '(' assignmentField (',' assignmentField)* ')' )? + (SET updatedElement (',' updatedElement)*)? + ; + +loadXmlStatement + : LOAD XML + priority=(LOW_PRIORITY | CONCURRENT)? + LOCAL? INFILE filename=STRING_LITERAL + violation=(REPLACE | IGNORE)? + INTO TABLE tableName + (CHARACTER SET charset=charsetName)? + (ROWS IDENTIFIED BY '<' tag=STRING_LITERAL '>')? + ( IGNORE decimalLiteral linesFormat=(LINES | ROWS) )? + ( '(' assignmentField (',' assignmentField)* ')' )? + (SET updatedElement (',' updatedElement)*)? + ; + +replaceStatement + : REPLACE priority=(LOW_PRIORITY | DELAYED)? + INTO? tableName + (PARTITION '(' partitions=uidList ')' )? + ( + ('(' columns=uidList ')')? insertStatementValue + | SET + setFirst=updatedElement + (',' setElements+=updatedElement)* + ) + ; + +selectStatement + : querySpecification lockClause? #simpleSelect + | queryExpression lockClause? #parenthesisSelect + | querySpecificationNointo unionStatement+ + ( + UNION unionType=(ALL | DISTINCT)? + (querySpecification | queryExpression) + )? + orderByClause? limitClause? lockClause? #unionSelect + | queryExpressionNointo unionParenthesis+ + ( + UNION unionType=(ALL | DISTINCT)? + queryExpression + )? + orderByClause? limitClause? lockClause? #unionParenthesisSelect + ; + +updateStatement + : singleUpdateStatement | multipleUpdateStatement + ; + +// details + +insertStatementValue + : selectStatement + | insertFormat=(VALUES | VALUE) + '(' expressionsWithDefaults? ')' + (',' '(' expressionsWithDefaults? ')')* + ; + +updatedElement + : fullColumnName '=' (expression | DEFAULT) + ; + +assignmentField + : uid | LOCAL_ID + ; + +lockClause + : FOR UPDATE | LOCK IN SHARE MODE + ; + +// Detailed DML Statements + +singleDeleteStatement + : DELETE priority=LOW_PRIORITY? QUICK? IGNORE? + FROM tableName + (PARTITION '(' uidList ')' )? + (WHERE expression)? + orderByClause? (LIMIT limitClauseAtom)? + ; + +multipleDeleteStatement + : DELETE priority=LOW_PRIORITY? QUICK? IGNORE? + ( + tableName ('.' '*')? ( ',' tableName ('.' '*')? )* + FROM tableSources + | FROM + tableName ('.' '*')? ( ',' tableName ('.' '*')? )* + USING tableSources + ) + (WHERE expression)? + ; + +handlerOpenStatement + : HANDLER tableName OPEN (AS? uid)? + ; + +handlerReadIndexStatement + : HANDLER tableName READ index=uid + ( + comparisonOperator '(' constants ')' + | moveOrder=(FIRST | NEXT | PREV | LAST) + ) + (WHERE expression)? (LIMIT limitClauseAtom)? + ; + +handlerReadStatement + : HANDLER tableName READ moveOrder=(FIRST | NEXT) + (WHERE expression)? (LIMIT limitClauseAtom)? + ; + +handlerCloseStatement + : HANDLER tableName CLOSE + ; + +singleUpdateStatement + : UPDATE priority=LOW_PRIORITY? IGNORE? tableName (AS? uid)? + SET updatedElement (',' updatedElement)* + (WHERE expression)? orderByClause? limitClause? + ; + +multipleUpdateStatement + : UPDATE priority=LOW_PRIORITY? IGNORE? tableSources + SET updatedElement (',' updatedElement)* + (WHERE expression)? + ; + +// details + +orderByClause + : ORDER BY orderByExpression (',' orderByExpression)* + ; + +orderByExpression + : expression order=(ASC | DESC)? + ; + +tableSources + : tableSource (',' tableSource)* + ; + +tableSource + : tableSourceItem joinPart* #tableSourceBase + | '(' tableSourceItem joinPart* ')' #tableSourceNested + ; + +tableSourceItem + : tableName + (PARTITION '(' uidList ')' )? (AS? alias=uid)? + (indexHint (',' indexHint)* )? #atomTableItem + | ( + selectStatement + | '(' parenthesisSubquery=selectStatement ')' + ) + AS? alias=uid #subqueryTableItem + | '(' tableSources ')' #tableSourcesItem + ; + +indexHint + : indexHintAction=(USE | IGNORE | FORCE) + keyFormat=(INDEX|KEY) ( FOR indexHintType)? + '(' uidList ')' + ; + +indexHintType + : JOIN | ORDER BY | GROUP BY + ; + +joinPart + : (INNER | CROSS)? JOIN tableSourceItem + ( + ON expression + | USING '(' uidList ')' + )? #innerJoin + | STRAIGHT_JOIN tableSourceItem (ON expression)? #straightJoin + | (LEFT | RIGHT) OUTER? JOIN tableSourceItem + ( + ON expression + | USING '(' uidList ')' + ) #outerJoin + | NATURAL ((LEFT | RIGHT) OUTER?)? JOIN tableSourceItem #naturalJoin + ; + +// Select Statement's Details + +queryExpression + : '(' querySpecification ')' + | '(' queryExpression ')' + ; + +queryExpressionNointo + : '(' querySpecificationNointo ')' + | '(' queryExpressionNointo ')' + ; + +querySpecification + : SELECT selectSpec* selectElements selectIntoExpression? + fromClause? groupByClause? havingClause? orderByClause? limitClause? + | SELECT selectSpec* selectElements + fromClause? groupByClause? havingClause? orderByClause? limitClause? selectIntoExpression? + ; + +querySpecificationNointo + : SELECT selectSpec* selectElements + fromClause? groupByClause? havingClause? orderByClause? limitClause? + ; + +unionParenthesis + : UNION unionType=(ALL | DISTINCT)? queryExpressionNointo + ; + +unionStatement + : UNION unionType=(ALL | DISTINCT)? + (querySpecificationNointo | queryExpressionNointo) + ; + +// details + +selectSpec + : (ALL | DISTINCT | DISTINCTROW) + | HIGH_PRIORITY | STRAIGHT_JOIN | SQL_SMALL_RESULT + | SQL_BIG_RESULT | SQL_BUFFER_RESULT + | (SQL_CACHE | SQL_NO_CACHE) + | SQL_CALC_FOUND_ROWS + ; + +selectElements + : (star='*' | selectElement ) (',' selectElement)* + ; + +selectElement + : fullId '.' '*' #selectStarElement + | fullColumnName (AS? uid)? #selectColumnElement + | functionCall (AS? uid)? #selectFunctionElement + | (LOCAL_ID VAR_ASSIGN)? expression (AS? uid)? #selectExpressionElement + ; + +selectIntoExpression + : INTO assignmentField (',' assignmentField )* #selectIntoVariables + | INTO DUMPFILE STRING_LITERAL #selectIntoDumpFile + | ( + INTO OUTFILE filename=STRING_LITERAL + (CHARACTER SET charset=charsetName)? + ( + fieldsFormat=(FIELDS | COLUMNS) + selectFieldsInto+ + )? + ( + LINES selectLinesInto+ + )? + ) #selectIntoTextFile + ; + +selectFieldsInto + : TERMINATED BY terminationField=STRING_LITERAL + | OPTIONALLY? ENCLOSED BY enclosion=STRING_LITERAL + | ESCAPED BY escaping=STRING_LITERAL + ; + +selectLinesInto + : STARTING BY starting=STRING_LITERAL + | TERMINATED BY terminationLine=STRING_LITERAL + ; + +fromClause + : FROM tableSources + (WHERE whereExpr=expression)? + ; + +groupByClause + : GROUP BY + groupByItem (',' groupByItem)* + (WITH ROLLUP)? + ; + +havingClause + : HAVING havingExpr=expression + ; + +groupByItem + : expression order=(ASC | DESC)? + ; + +limitClause + : LIMIT + ( + (offset=limitClauseAtom ',')? limit=limitClauseAtom + | limit=limitClauseAtom OFFSET offset=limitClauseAtom + ) + ; + +limitClauseAtom + : decimalLiteral | mysqlVariable | simpleId + ; + + +// Transaction's Statements + +startTransaction + : START TRANSACTION (transactionMode (',' transactionMode)* )? + ; + +beginWork + : BEGIN WORK? + ; + +commitWork + : COMMIT WORK? + (AND nochain=NO? CHAIN)? + (norelease=NO? RELEASE)? + ; + +rollbackWork + : ROLLBACK WORK? + (AND nochain=NO? CHAIN)? + (norelease=NO? RELEASE)? + ; + +savepointStatement + : SAVEPOINT uid + ; + +rollbackStatement + : ROLLBACK WORK? TO SAVEPOINT? uid + ; + +releaseStatement + : RELEASE SAVEPOINT uid + ; + +lockTables + : LOCK TABLES lockTableElement (',' lockTableElement)* + ; + +unlockTables + : UNLOCK TABLES + ; + + +// details + +setAutocommitStatement + : SET AUTOCOMMIT '=' autocommitValue=('0' | '1') + ; + +setTransactionStatement + : SET transactionContext=(GLOBAL | SESSION)? TRANSACTION + transactionOption (',' transactionOption)* + ; + +transactionMode + : WITH CONSISTENT SNAPSHOT + | READ WRITE + | READ ONLY + ; + +lockTableElement + : tableName (AS? uid)? lockAction + ; + +lockAction + : READ LOCAL? | LOW_PRIORITY? WRITE + ; + +transactionOption + : ISOLATION LEVEL transactionLevel + | READ WRITE + | READ ONLY + ; + +transactionLevel + : REPEATABLE READ + | READ COMMITTED + | READ UNCOMMITTED + | SERIALIZABLE + ; + + +// Replication's Statements + +// Base Replication + +changeMaster + : CHANGE MASTER TO + masterOption (',' masterOption)* channelOption? + ; + +changeReplicationFilter + : CHANGE REPLICATION FILTER + replicationFilter (',' replicationFilter)* + ; + +purgeBinaryLogs + : PURGE purgeFormat=(BINARY | MASTER) LOGS + ( + TO fileName=STRING_LITERAL + | BEFORE timeValue=STRING_LITERAL + ) + ; + +resetMaster + : RESET MASTER + ; + +resetSlave + : RESET SLAVE ALL? channelOption? + ; + +startSlave + : START SLAVE (threadType (',' threadType)*)? + (UNTIL untilOption)? + connectionOption* channelOption? + ; + +stopSlave + : STOP SLAVE (threadType (',' threadType)*)? + ; + +startGroupReplication + : START GROUP_REPLICATION + ; + +stopGroupReplication + : STOP GROUP_REPLICATION + ; + +// details + +masterOption + : stringMasterOption '=' STRING_LITERAL #masterStringOption + | decimalMasterOption '=' decimalLiteral #masterDecimalOption + | boolMasterOption '=' boolVal=('0' | '1') #masterBoolOption + | MASTER_HEARTBEAT_PERIOD '=' REAL_LITERAL #masterRealOption + | IGNORE_SERVER_IDS '=' '(' (uid (',' uid)*)? ')' #masterUidListOption + ; + +stringMasterOption + : MASTER_BIND | MASTER_HOST | MASTER_USER | MASTER_PASSWORD + | MASTER_LOG_FILE | RELAY_LOG_FILE | MASTER_SSL_CA + | MASTER_SSL_CAPATH | MASTER_SSL_CERT | MASTER_SSL_CRL + | MASTER_SSL_CRLPATH | MASTER_SSL_KEY | MASTER_SSL_CIPHER + | MASTER_TLS_VERSION + ; +decimalMasterOption + : MASTER_PORT | MASTER_CONNECT_RETRY | MASTER_RETRY_COUNT + | MASTER_DELAY | MASTER_LOG_POS | RELAY_LOG_POS + ; + +boolMasterOption + : MASTER_AUTO_POSITION | MASTER_SSL + | MASTER_SSL_VERIFY_SERVER_CERT + ; + +channelOption + : FOR CHANNEL STRING_LITERAL + ; + +replicationFilter + : REPLICATE_DO_DB '=' '(' uidList ')' #doDbReplication + | REPLICATE_IGNORE_DB '=' '(' uidList ')' #ignoreDbReplication + | REPLICATE_DO_TABLE '=' '(' tables ')' #doTableReplication + | REPLICATE_IGNORE_TABLE '=' '(' tables ')' #ignoreTableReplication + | REPLICATE_WILD_DO_TABLE '=' '(' simpleStrings ')' #wildDoTableReplication + | REPLICATE_WILD_IGNORE_TABLE + '=' '(' simpleStrings ')' #wildIgnoreTableReplication + | REPLICATE_REWRITE_DB '=' + '(' tablePair (',' tablePair)* ')' #rewriteDbReplication + ; + +tablePair + : '(' firstTable=tableName ',' secondTable=tableName ')' + ; + +threadType + : IO_THREAD | SQL_THREAD + ; + +untilOption + : gtids=(SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS) + '=' gtuidSet #gtidsUntilOption + | MASTER_LOG_FILE '=' STRING_LITERAL + ',' MASTER_LOG_POS '=' decimalLiteral #masterLogUntilOption + | RELAY_LOG_FILE '=' STRING_LITERAL + ',' RELAY_LOG_POS '=' decimalLiteral #relayLogUntilOption + | SQL_AFTER_MTS_GAPS #sqlGapsUntilOption + ; + +connectionOption + : USER '=' conOptUser=STRING_LITERAL #userConnectionOption + | PASSWORD '=' conOptPassword=STRING_LITERAL #passwordConnectionOption + | DEFAULT_AUTH '=' conOptDefAuth=STRING_LITERAL #defaultAuthConnectionOption + | PLUGIN_DIR '=' conOptPluginDir=STRING_LITERAL #pluginDirConnectionOption + ; + +gtuidSet + : uuidSet (',' uuidSet)* + | STRING_LITERAL + ; + + +// XA Transactions + +xaStartTransaction + : XA xaStart=(START | BEGIN) xid xaAction=(JOIN | RESUME)? + ; + +xaEndTransaction + : XA END xid (SUSPEND (FOR MIGRATE)?)? + ; + +xaPrepareStatement + : XA PREPARE xid + ; + +xaCommitWork + : XA COMMIT xid (ONE PHASE)? + ; + +xaRollbackWork + : XA ROLLBACK xid + ; + +xaRecoverWork + : XA RECOVER (CONVERT xid)? + ; + + +// Prepared Statements + +prepareStatement + : PREPARE uid FROM + (query=STRING_LITERAL | variable=LOCAL_ID) + ; + +executeStatement + : EXECUTE uid (USING userVariables)? + ; + +deallocatePrepare + : dropFormat=(DEALLOCATE | DROP) PREPARE uid + ; + + +// Compound Statements + +routineBody + : blockStatement | sqlStatement + ; + +// details + +blockStatement + : (uid ':')? BEGIN + ( + (declareVariable SEMI)* + (declareCondition SEMI)* + (declareCursor SEMI)* + (declareHandler SEMI)* + procedureSqlStatement* + )? + END uid? + ; + +caseStatement + : CASE (uid | expression)? caseAlternative+ + (ELSE procedureSqlStatement+)? + END CASE + ; + +ifStatement + : IF expression + THEN thenStatements+=procedureSqlStatement+ + elifAlternative* + (ELSE elseStatements+=procedureSqlStatement+ )? + END IF + ; + +iterateStatement + : ITERATE uid + ; + +leaveStatement + : LEAVE uid + ; + +loopStatement + : (uid ':')? + LOOP procedureSqlStatement+ + END LOOP uid? + ; + +repeatStatement + : (uid ':')? + REPEAT procedureSqlStatement+ + UNTIL expression + END REPEAT uid? + ; + +returnStatement + : RETURN expression + ; + +whileStatement + : (uid ':')? + WHILE expression + DO procedureSqlStatement+ + END WHILE uid? + ; + +cursorStatement + : CLOSE uid #CloseCursor + | FETCH (NEXT? FROM)? uid INTO uidList #FetchCursor + | OPEN uid #OpenCursor + ; + +// details + +declareVariable + : DECLARE uidList dataType (DEFAULT expression)? + ; + +declareCondition + : DECLARE uid CONDITION FOR + ( decimalLiteral | SQLSTATE VALUE? STRING_LITERAL) + ; + +declareCursor + : DECLARE uid CURSOR FOR selectStatement + ; + +declareHandler + : DECLARE handlerAction=(CONTINUE | EXIT | UNDO) + HANDLER FOR + handlerConditionValue (',' handlerConditionValue)* + routineBody + ; + +handlerConditionValue + : decimalLiteral #handlerConditionCode + | SQLSTATE VALUE? STRING_LITERAL #handlerConditionState + | uid #handlerConditionName + | SQLWARNING #handlerConditionWarning + | NOT FOUND #handlerConditionNotfound + | SQLEXCEPTION #handlerConditionException + ; + +procedureSqlStatement + : (compoundStatement | sqlStatement) SEMI + ; + +caseAlternative + : WHEN (constant | expression) + THEN procedureSqlStatement+ + ; + +elifAlternative + : ELSEIF expression + THEN procedureSqlStatement+ + ; + +// Administration Statements + +// Account management statements + +alterUser + : ALTER USER + userSpecification (',' userSpecification)* #alterUserMysqlV56 + | ALTER USER ifExists? + userAuthOption (',' userAuthOption)* + ( + REQUIRE + (tlsNone=NONE | tlsOption (AND? tlsOption)* ) + )? + (WITH userResourceOption+)? + (userPasswordOption | userLockOption)* #alterUserMysqlV57 + ; + +createUser + : CREATE USER userAuthOption (',' userAuthOption)* #createUserMysqlV56 + | CREATE USER ifNotExists? + userAuthOption (',' userAuthOption)* + ( + REQUIRE + (tlsNone=NONE | tlsOption (AND? tlsOption)* ) + )? + (WITH userResourceOption+)? + (userPasswordOption | userLockOption)* #createUserMysqlV57 + ; + +dropUser + : DROP USER ifExists? userName (',' userName)* + ; + +grantStatement + : GRANT privelegeClause (',' privelegeClause)* + ON + privilegeObject=(TABLE | FUNCTION | PROCEDURE)? + privilegeLevel + TO userAuthOption (',' userAuthOption)* + ( + REQUIRE + (tlsNone=NONE | tlsOption (AND? tlsOption)* ) + )? + (WITH (GRANT OPTION | userResourceOption)* )? + ; + +grantProxy + : GRANT PROXY ON fromFirst=userName + TO toFirst=userName (',' toOther+=userName)* + (WITH GRANT OPTION)? + ; + +renameUser + : RENAME USER + renameUserClause (',' renameUserClause)* + ; + +revokeStatement + : REVOKE privelegeClause (',' privelegeClause)* + ON + privilegeObject=(TABLE | FUNCTION | PROCEDURE)? + privilegeLevel + FROM userName (',' userName)* #detailRevoke + | REVOKE ALL PRIVILEGES? ',' GRANT OPTION + FROM userName (',' userName)* #shortRevoke + ; + +revokeProxy + : REVOKE PROXY ON onUser=userName + FROM fromFirst=userName (',' fromOther+=userName)* + ; + +setPasswordStatement + : SET PASSWORD (FOR userName)? + '=' ( passwordFunctionClause | STRING_LITERAL) + ; + +// details + +userSpecification + : userName userPasswordOption + ; + +userAuthOption + : userName IDENTIFIED BY PASSWORD hashed=STRING_LITERAL #passwordAuthOption + | userName + IDENTIFIED (WITH authPlugin)? BY STRING_LITERAL #stringAuthOption + | userName + IDENTIFIED WITH authPlugin + (AS STRING_LITERAL)? #hashAuthOption + | userName #simpleAuthOption + ; + +tlsOption + : SSL + | X509 + | CIPHER STRING_LITERAL + | ISSUER STRING_LITERAL + | SUBJECT STRING_LITERAL + ; + +userResourceOption + : MAX_QUERIES_PER_HOUR decimalLiteral + | MAX_UPDATES_PER_HOUR decimalLiteral + | MAX_CONNECTIONS_PER_HOUR decimalLiteral + | MAX_USER_CONNECTIONS decimalLiteral + ; + +userPasswordOption + : PASSWORD EXPIRE + (expireType=DEFAULT + | expireType=NEVER + | expireType=INTERVAL decimalLiteral DAY + )? + ; + +userLockOption + : ACCOUNT lockType=(LOCK | UNLOCK) + ; + +privelegeClause + : privilege ( '(' uidList ')' )? + ; + +privilege + : ALL PRIVILEGES? + | ALTER ROUTINE? + | CREATE + (TEMPORARY TABLES | ROUTINE | VIEW | USER | TABLESPACE | ROLE)? + | DELETE | DROP (ROLE)? | EVENT | EXECUTE | FILE | GRANT OPTION + | INDEX | INSERT | LOCK TABLES | PROCESS | PROXY + | REFERENCES | RELOAD + | REPLICATION (CLIENT | SLAVE) + | SELECT + | SHOW (VIEW | DATABASES) + | SHUTDOWN | SUPER | TRIGGER | UPDATE | USAGE + | APPLICATION_PASSWORD_ADMIN | AUDIT_ADMIN | BACKUP_ADMIN | BINLOG_ADMIN | BINLOG_ENCRYPTION_ADMIN | CLONE_ADMIN + | CONNECTION_ADMIN | ENCRYPTION_KEY_ADMIN | FIREWALL_ADMIN | FIREWALL_USER | FLUSH_OPTIMIZER_COSTS + | FLUSH_STATUS | FLUSH_TABLES | FLUSH_USER_RESOURCES | GROUP_REPLICATION_ADMIN + | INNODB_REDO_LOG_ARCHIVE | INNODB_REDO_LOG_ENABLE | NDB_STORED_USER | PERSIST_RO_VARIABLES_ADMIN | REPLICATION_APPLIER + | REPLICATION_SLAVE_ADMIN | RESOURCE_GROUP_ADMIN | RESOURCE_GROUP_USER | ROLE_ADMIN + | SERVICE_CONNECTION_ADMIN + | SESSION_VARIABLES_ADMIN | SET_USER_ID | SHOW_ROUTINE | SYSTEM_USER | SYSTEM_VARIABLES_ADMIN + | TABLE_ENCRYPTION_ADMIN | VERSION_TOKEN_ADMIN | XA_RECOVER_ADMIN + ; + +privilegeLevel + : '*' #currentSchemaPriviLevel + | '*' '.' '*' #globalPrivLevel + | uid '.' '*' #definiteSchemaPrivLevel + | uid '.' uid #definiteFullTablePrivLevel + | uid dottedId #definiteFullTablePrivLevel2 + | uid #definiteTablePrivLevel + ; + +renameUserClause + : fromFirst=userName TO toFirst=userName + ; + +// Table maintenance statements + +analyzeTable + : ANALYZE actionOption=(NO_WRITE_TO_BINLOG | LOCAL)? + TABLE tables + ; + +checkTable + : CHECK TABLE tables checkTableOption* + ; + +checksumTable + : CHECKSUM TABLE tables actionOption=(QUICK | EXTENDED)? + ; + +optimizeTable + : OPTIMIZE actionOption=(NO_WRITE_TO_BINLOG | LOCAL)? + (TABLE | TABLES) tables + ; + +repairTable + : REPAIR actionOption=(NO_WRITE_TO_BINLOG | LOCAL)? + TABLE tables + QUICK? EXTENDED? USE_FRM? + ; + +// details + +checkTableOption + : FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED + ; + + +// Plugin and udf statements + +createUdfunction + : CREATE AGGREGATE? FUNCTION uid + RETURNS returnType=(STRING | INTEGER | REAL | DECIMAL) + SONAME STRING_LITERAL + ; + +installPlugin + : INSTALL PLUGIN uid SONAME STRING_LITERAL + ; + +uninstallPlugin + : UNINSTALL PLUGIN uid + ; + + +// Set and show statements + +setStatement + : SET variableClause ('=' | ':=') expression + (',' variableClause ('=' | ':=') expression)* #setVariable + | SET (CHARACTER SET | CHARSET) (charsetName | DEFAULT) #setCharset + | SET NAMES + (charsetName (COLLATE collationName)? | DEFAULT) #setNames + | setPasswordStatement #setPassword + | setTransactionStatement #setTransaction + | setAutocommitStatement #setAutocommit + | SET fullId ('=' | ':=') expression + (',' fullId ('=' | ':=') expression)* #setNewValueInsideTrigger + ; + +showStatement + : SHOW logFormat=(BINARY | MASTER) LOGS #showMasterLogs + | SHOW logFormat=(BINLOG | RELAYLOG) + EVENTS (IN filename=STRING_LITERAL)? + (FROM fromPosition=decimalLiteral)? + (LIMIT + (offset=decimalLiteral ',')? + rowCount=decimalLiteral + )? #showLogEvents + | SHOW showCommonEntity showFilter? #showObjectFilter + | SHOW FULL? columnsFormat=(COLUMNS | FIELDS) + tableFormat=(FROM | IN) tableName + (schemaFormat=(FROM | IN) uid)? showFilter? #showColumns + | SHOW CREATE schemaFormat=(DATABASE | SCHEMA) + ifNotExists? uid #showCreateDb + | SHOW CREATE + namedEntity=( + EVENT | FUNCTION | PROCEDURE + | TABLE | TRIGGER | VIEW + ) + fullId #showCreateFullIdObject + | SHOW CREATE USER userName #showCreateUser + | SHOW ENGINE engineName engineOption=(STATUS | MUTEX) #showEngine + | SHOW showGlobalInfoClause #showGlobalInfo + | SHOW errorFormat=(ERRORS | WARNINGS) + (LIMIT + (offset=decimalLiteral ',')? + rowCount=decimalLiteral + ) #showErrors + | SHOW COUNT '(' '*' ')' errorFormat=(ERRORS | WARNINGS) #showCountErrors + | SHOW showSchemaEntity + (schemaFormat=(FROM | IN) uid)? showFilter? #showSchemaFilter + | SHOW routine=(FUNCTION | PROCEDURE) CODE fullId #showRoutine + | SHOW GRANTS (FOR userName)? #showGrants + | SHOW indexFormat=(INDEX | INDEXES | KEYS) + tableFormat=(FROM | IN) tableName + (schemaFormat=(FROM | IN) uid)? (WHERE expression)? #showIndexes + | SHOW OPEN TABLES ( schemaFormat=(FROM | IN) uid)? + showFilter? #showOpenTables + | SHOW PROFILE showProfileType (',' showProfileType)* + (FOR QUERY queryCount=decimalLiteral)? + (LIMIT + (offset=decimalLiteral ',')? + rowCount=decimalLiteral + ) #showProfile + | SHOW SLAVE STATUS (FOR CHANNEL STRING_LITERAL)? #showSlaveStatus + ; + +// details + +variableClause + : LOCAL_ID | GLOBAL_ID | ( ('@' '@')? (GLOBAL | SESSION | LOCAL) )? uid + ; + +showCommonEntity + : CHARACTER SET | COLLATION | DATABASES | SCHEMAS + | FUNCTION STATUS | PROCEDURE STATUS + | (GLOBAL | SESSION)? (STATUS | VARIABLES) + ; + +showFilter + : LIKE STRING_LITERAL + | WHERE expression + ; + +showGlobalInfoClause + : STORAGE? ENGINES | MASTER STATUS | PLUGINS + | PRIVILEGES | FULL? PROCESSLIST | PROFILES + | SLAVE HOSTS | AUTHORS | CONTRIBUTORS + ; + +showSchemaEntity + : EVENTS | TABLE STATUS | FULL? TABLES | TRIGGERS + ; + +showProfileType + : ALL | BLOCK IO | CONTEXT SWITCHES | CPU | IPC | MEMORY + | PAGE FAULTS | SOURCE | SWAPS + ; + + +// Other administrative statements + +binlogStatement + : BINLOG STRING_LITERAL + ; + +cacheIndexStatement + : CACHE INDEX tableIndexes (',' tableIndexes)* + ( PARTITION '(' (uidList | ALL) ')' )? + IN schema=uid + ; + +flushStatement + : FLUSH flushFormat=(NO_WRITE_TO_BINLOG | LOCAL)? + flushOption (',' flushOption)* + ; + +killStatement + : KILL connectionFormat=(CONNECTION | QUERY)? + decimalLiteral+ + ; + +loadIndexIntoCache + : LOAD INDEX INTO CACHE + loadedTableIndexes (',' loadedTableIndexes)* + ; + +// remark reset (maser | slave) describe in replication's +// statements section +resetStatement + : RESET QUERY CACHE + ; + +shutdownStatement + : SHUTDOWN + ; + +// details + +tableIndexes + : tableName ( indexFormat=(INDEX | KEY)? '(' uidList ')' )? + ; + +flushOption + : ( + DES_KEY_FILE | HOSTS + | ( + BINARY | ENGINE | ERROR | GENERAL | RELAY | SLOW + )? LOGS + | OPTIMIZER_COSTS | PRIVILEGES | QUERY CACHE | STATUS + | USER_RESOURCES | TABLES (WITH READ LOCK)? + ) #simpleFlushOption + | RELAY LOGS channelOption? #channelFlushOption + | TABLES tables flushTableOption? #tableFlushOption + ; + +flushTableOption + : WITH READ LOCK + | FOR EXPORT + ; + +loadedTableIndexes + : tableName + ( PARTITION '(' (partitionList=uidList | ALL) ')' )? + ( indexFormat=(INDEX | KEY)? '(' indexList=uidList ')' )? + (IGNORE LEAVES)? + ; + + +// Utility Statements + + +simpleDescribeStatement + : command=(EXPLAIN | DESCRIBE | DESC) tableName + (column=uid | pattern=STRING_LITERAL)? + ; + +fullDescribeStatement + : command=(EXPLAIN | DESCRIBE | DESC) + ( + formatType=(EXTENDED | PARTITIONS | FORMAT ) + '=' + formatValue=(TRADITIONAL | JSON) + )? + describeObjectClause + ; + +helpStatement + : HELP STRING_LITERAL + ; + +useStatement + : USE uid + ; + +signalStatement + : SIGNAL ( ( SQLSTATE VALUE? stringLiteral ) | ID | REVERSE_QUOTE_ID ) + ( SET signalConditionInformation ( ',' signalConditionInformation)* )? + ; + +resignalStatement + : RESIGNAL ( ( SQLSTATE VALUE? stringLiteral ) | ID | REVERSE_QUOTE_ID )? + ( SET signalConditionInformation ( ',' signalConditionInformation)* )? + ; + +signalConditionInformation + : ( CLASS_ORIGIN + | SUBCLASS_ORIGIN + | MESSAGE_TEXT + | MYSQL_ERRNO + | CONSTRAINT_CATALOG + | CONSTRAINT_SCHEMA + | CONSTRAINT_NAME + | CATALOG_NAME + | SCHEMA_NAME + | TABLE_NAME + | COLUMN_NAME + | CURSOR_NAME + ) '=' ( stringLiteral | DECIMAL_LITERAL | mysqlVariable | simpleId ) + ; + +diagnosticsStatement + : GET ( CURRENT | STACKED )? DIAGNOSTICS ( + ( variableClause '=' ( NUMBER | ROW_COUNT ) ( ',' variableClause '=' ( NUMBER | ROW_COUNT ) )* ) + | ( CONDITION ( decimalLiteral | variableClause ) variableClause '=' diagnosticsConditionInformationName ( ',' variableClause '=' diagnosticsConditionInformationName )* ) + ) + ; + +diagnosticsConditionInformationName + : CLASS_ORIGIN + | SUBCLASS_ORIGIN + | RETURNED_SQLSTATE + | MESSAGE_TEXT + | MYSQL_ERRNO + | CONSTRAINT_CATALOG + | CONSTRAINT_SCHEMA + | CONSTRAINT_NAME + | CATALOG_NAME + | SCHEMA_NAME + | TABLE_NAME + | COLUMN_NAME + | CURSOR_NAME + ; + +// details + +describeObjectClause + : ( + selectStatement | deleteStatement | insertStatement + | replaceStatement | updateStatement + ) #describeStatements + | FOR CONNECTION uid #describeConnection + ; + + +// Common Clauses + +// DB Objects + +fullId + : uid (DOT_ID | '.' uid)? + ; + +tableName + : fullId + ; + +fullColumnName + : uid (dottedId dottedId? )? + | . dottedId dottedId? + ; + +indexColumnName + : (uid | STRING_LITERAL) ('(' decimalLiteral ')')? sortType=(ASC | DESC)? + ; + +userName + : STRING_USER_NAME | ID | STRING_LITERAL; + +mysqlVariable + : LOCAL_ID + | GLOBAL_ID + ; + +charsetName + : BINARY + | charsetNameBase + | STRING_LITERAL + | CHARSET_REVERSE_QOUTE_STRING + ; + +collationName + : uid | STRING_LITERAL; + +engineName + : ARCHIVE | BLACKHOLE | CSV | FEDERATED | INNODB | MEMORY + | MRG_MYISAM | MYISAM | NDB | NDBCLUSTER | PERFORMANCE_SCHEMA + | TOKUDB + | ID + | STRING_LITERAL | REVERSE_QUOTE_ID + ; + +uuidSet + : decimalLiteral '-' decimalLiteral '-' decimalLiteral + '-' decimalLiteral '-' decimalLiteral + (':' decimalLiteral '-' decimalLiteral)+ + ; + +xid + : globalTableUid=xuidStringId + ( + ',' qualifier=xuidStringId + (',' idFormat=decimalLiteral)? + )? + ; + +xuidStringId + : STRING_LITERAL + | BIT_STRING + | HEXADECIMAL_LITERAL+ + ; + +authPlugin + : uid | STRING_LITERAL + ; + +uid + : simpleId + //| DOUBLE_QUOTE_ID + | REVERSE_QUOTE_ID + | CHARSET_REVERSE_QOUTE_STRING + ; + +simpleId + : ID + | charsetNameBase + | transactionLevelBase + | engineName + | privilegesBase + | intervalTypeBase + | dataTypeBase + | keywordsCanBeId + | functionNameBase + ; + +dottedId + : DOT_ID + | '.' uid + ; + + +// Literals + +decimalLiteral + : DECIMAL_LITERAL | ZERO_DECIMAL | ONE_DECIMAL | TWO_DECIMAL + ; + +fileSizeLiteral + : FILESIZE_LITERAL | decimalLiteral; + +stringLiteral + : ( + STRING_CHARSET_NAME? STRING_LITERAL + | START_NATIONAL_STRING_LITERAL + ) STRING_LITERAL+ + | ( + STRING_CHARSET_NAME? STRING_LITERAL + | START_NATIONAL_STRING_LITERAL + ) (COLLATE collationName)? + ; + +booleanLiteral + : TRUE | FALSE; + +hexadecimalLiteral + : STRING_CHARSET_NAME? HEXADECIMAL_LITERAL; + +nullNotnull + : NOT? (NULL_LITERAL | NULL_SPEC_LITERAL) + ; + +constant + : stringLiteral | decimalLiteral + | '-' decimalLiteral + | hexadecimalLiteral | booleanLiteral + | REAL_LITERAL | BIT_STRING + | NOT? nullLiteral=(NULL_LITERAL | NULL_SPEC_LITERAL) + ; + + +// Data Types + +dataType + : typeName=( + CHAR | CHARACTER | VARCHAR | TINYTEXT | TEXT | MEDIUMTEXT | LONGTEXT + | NCHAR | NVARCHAR | LONG + ) + VARYING? + lengthOneDimension? binaryType=BINARY? + ((CHARACTER SET | CHARSET) charsetName)? + (COLLATE collationName | collateBinary=BINARY)? #stringDataType + | NATIONAL typeName=(VARCHAR | CHARACTER) + lengthOneDimension? BINARY? #nationalStringDataType + | NCHAR typeName=VARCHAR + lengthOneDimension? BINARY? #nationalStringDataType + | NATIONAL typeName=(CHAR | CHARACTER) VARYING + lengthOneDimension? BINARY? #nationalVaryingStringDataType + | typeName=( + TINYINT | SMALLINT | MEDIUMINT | INT | INTEGER | BIGINT + | MIDDLEINT | INT1 | INT2 | INT3 | INT4 | INT8 + ) + lengthOneDimension? (SIGNED | UNSIGNED)? ZEROFILL? #dimensionDataType + | typeName=REAL + lengthTwoDimension? (SIGNED | UNSIGNED)? ZEROFILL? #dimensionDataType + | typeName=DOUBLE PRECISION? + lengthTwoDimension? (SIGNED | UNSIGNED)? ZEROFILL? #dimensionDataType + | typeName=(DECIMAL | DEC | FIXED | NUMERIC | FLOAT | FLOAT4 | FLOAT8) + lengthTwoOptionalDimension? (SIGNED | UNSIGNED)? ZEROFILL? #dimensionDataType + | typeName=( + DATE | TINYBLOB | MEDIUMBLOB | LONGBLOB + | BOOL | BOOLEAN | SERIAL + ) #simpleDataType + | typeName=( + BIT | TIME | TIMESTAMP | DATETIME | BINARY + | VARBINARY | BLOB | YEAR + ) + lengthOneDimension? #dimensionDataType + | typeName=(ENUM | SET) + collectionOptions BINARY? + ((CHARACTER cs=SET | CHARSET) charsetName)? #collectionDataType + | typeName=( + GEOMETRYCOLLECTION | GEOMCOLLECTION | LINESTRING | MULTILINESTRING + | MULTIPOINT | MULTIPOLYGON | POINT | POLYGON | JSON | GEOMETRY + ) #spatialDataType + | typeName=LONG VARCHAR? + BINARY? + ((CHARACTER SET | CHARSET) charsetName)? + (COLLATE collationName)? #longVarcharDataType // LONG VARCHAR is the same as LONG + | LONG VARBINARY #longVarbinaryDataType + ; + +collectionOptions + : '(' STRING_LITERAL (',' STRING_LITERAL)* ')' + ; + +convertedDataType + : typeName=(BINARY| NCHAR) lengthOneDimension? + | typeName=CHAR lengthOneDimension? ((CHARACTER SET | CHARSET) charsetName)? + | typeName=(DATE | DATETIME | TIME | JSON) + | typeName=DECIMAL lengthTwoDimension? + | (SIGNED | UNSIGNED) INTEGER? + ; + +lengthOneDimension + : '(' decimalLiteral ')' + ; + +lengthTwoDimension + : '(' decimalLiteral ',' decimalLiteral ')' + ; + +lengthTwoOptionalDimension + : '(' decimalLiteral (',' decimalLiteral)? ')' + ; + + +// Common Lists + +uidList + : uid (',' uid)* + ; + +tables + : tableName (',' tableName)* + ; + +indexColumnNames + : '(' indexColumnName (',' indexColumnName)* ')' + ; + +expressions + : expression (',' expression)* + ; + +expressionsWithDefaults + : expressionOrDefault (',' expressionOrDefault)* + ; + +constants + : constant (',' constant)* + ; + +simpleStrings + : STRING_LITERAL (',' STRING_LITERAL)* + ; + +userVariables + : LOCAL_ID (',' LOCAL_ID)* + ; + + +// Common Expressons + +defaultValue + : (NULL_LITERAL | unaryOperator? constant | currentTimestamp | '(' expression ')') (ON UPDATE currentTimestamp)? + ; + +currentTimestamp + : + ( + (CURRENT_TIMESTAMP | LOCALTIME | LOCALTIMESTAMP) ('(' decimalLiteral? ')')? + | NOW '(' decimalLiteral? ')' + ) + ; + +expressionOrDefault + : expression | DEFAULT + ; + +ifExists + : IF EXISTS; + +ifNotExists + : IF NOT EXISTS; + + +// Functions + +functionCall + : specificFunction #specificFunctionCall + | aggregateWindowedFunction #aggregateFunctionCall + | scalarFunctionName '(' functionArgs? ')' #scalarFunctionCall + | fullId '(' functionArgs? ')' #udfFunctionCall + | passwordFunctionClause #passwordFunctionCall + ; + +specificFunction + : ( + CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP + | CURRENT_USER | LOCALTIME + ) ('(' ')')? #simpleFunctionCall + | CONVERT '(' expression separator=',' convertedDataType ')' #dataTypeFunctionCall + | CONVERT '(' expression USING charsetName ')' #dataTypeFunctionCall + | CAST '(' expression AS convertedDataType ')' #dataTypeFunctionCall + | VALUES '(' fullColumnName ')' #valuesFunctionCall + | CASE expression caseFuncAlternative+ + (ELSE elseArg=functionArg)? END #caseExpressionFunctionCall + | CASE caseFuncAlternative+ + (ELSE elseArg=functionArg)? END #caseFunctionCall + | CHAR '(' functionArgs (USING charsetName)? ')' #charFunctionCall + | POSITION + '(' + ( + positionString=stringLiteral + | positionExpression=expression + ) + IN + ( + inString=stringLiteral + | inExpression=expression + ) + ')' #positionFunctionCall + | (SUBSTR | SUBSTRING) + '(' + ( + sourceString=stringLiteral + | sourceExpression=expression + ) FROM + ( + fromDecimal=decimalLiteral + | fromExpression=expression + ) + ( + FOR + ( + forDecimal=decimalLiteral + | forExpression=expression + ) + )? + ')' #substrFunctionCall + | TRIM + '(' + positioinForm=(BOTH | LEADING | TRAILING) + ( + sourceString=stringLiteral + | sourceExpression=expression + )? + FROM + ( + fromString=stringLiteral + | fromExpression=expression + ) + ')' #trimFunctionCall + | TRIM + '(' + ( + sourceString=stringLiteral + | sourceExpression=expression + ) + FROM + ( + fromString=stringLiteral + | fromExpression=expression + ) + ')' #trimFunctionCall + | WEIGHT_STRING + '(' + (stringLiteral | expression) + (AS stringFormat=(CHAR | BINARY) + '(' decimalLiteral ')' )? levelsInWeightString? + ')' #weightFunctionCall + | EXTRACT + '(' + intervalType + FROM + ( + sourceString=stringLiteral + | sourceExpression=expression + ) + ')' #extractFunctionCall + | GET_FORMAT + '(' + datetimeFormat=(DATE | TIME | DATETIME) + ',' stringLiteral + ')' #getFormatFunctionCall + | JSON_VALUE + '(' expression + ',' expression + (RETURNING convertedDataType)? + ((NULL | ERROR | (DEFAULT defaultValue)) ON EMPTY)? + ((NULL | ERROR | (DEFAULT defaultValue)) ON ERROR)? + ')' #jsonValueFunctionCall + ; + +caseFuncAlternative + : WHEN condition=functionArg + THEN consequent=functionArg + ; + +levelsInWeightString + : LEVEL levelInWeightListElement + (',' levelInWeightListElement)* #levelWeightList + | LEVEL + firstLevel=decimalLiteral '-' lastLevel=decimalLiteral #levelWeightRange + ; + +levelInWeightListElement + : decimalLiteral orderType=(ASC | DESC | REVERSE)? + ; + +aggregateWindowedFunction + : (AVG | MAX | MIN | SUM) + '(' aggregator=(ALL | DISTINCT)? functionArg ')' + | COUNT '(' (starArg='*' | aggregator=ALL? functionArg) ')' + | COUNT '(' aggregator=DISTINCT functionArgs ')' + | ( + BIT_AND | BIT_OR | BIT_XOR | STD | STDDEV | STDDEV_POP + | STDDEV_SAMP | VAR_POP | VAR_SAMP | VARIANCE + ) '(' aggregator=ALL? functionArg ')' + | GROUP_CONCAT '(' + aggregator=DISTINCT? functionArgs + (ORDER BY + orderByExpression (',' orderByExpression)* + )? (SEPARATOR separator=STRING_LITERAL)? + ')' + ; + +scalarFunctionName + : functionNameBase + | ASCII | CURDATE | CURRENT_DATE | CURRENT_TIME + | CURRENT_TIMESTAMP | CURTIME | DATE_ADD | DATE_SUB + | IF | INSERT | LOCALTIME | LOCALTIMESTAMP | MID | NOW + | REPLACE | SUBSTR | SUBSTRING | SYSDATE | TRIM + | UTC_DATE | UTC_TIME | UTC_TIMESTAMP + ; + +passwordFunctionClause + : functionName=(PASSWORD | OLD_PASSWORD) '(' functionArg ')' + ; + +functionArgs + : (constant | fullColumnName | functionCall | expression) + ( + ',' + (constant | fullColumnName | functionCall | expression) + )* + ; + +functionArg + : constant | fullColumnName | functionCall | expression + ; + + +// Expressions, predicates + +// Simplified approach for expression +expression + : notOperator=(NOT | '!') expression #notExpression + | expression logicalOperator expression #logicalExpression + | predicate IS NOT? testValue=(TRUE | FALSE | UNKNOWN) #isExpression + | predicate #predicateExpression + ; + +predicate + : predicate NOT? IN '(' (selectStatement | expressions) ')' #inPredicate + | predicate IS nullNotnull #isNullPredicate + | left=predicate comparisonOperator right=predicate #binaryComparisonPredicate + | predicate comparisonOperator + quantifier=(ALL | ANY | SOME) '(' selectStatement ')' #subqueryComparisonPredicate + | predicate NOT? BETWEEN predicate AND predicate #betweenPredicate + | predicate SOUNDS LIKE predicate #soundsLikePredicate + | predicate NOT? LIKE predicate (ESCAPE STRING_LITERAL)? #likePredicate + | predicate NOT? regex=(REGEXP | RLIKE) predicate #regexpPredicate + | (LOCAL_ID VAR_ASSIGN)? expressionAtom #expressionAtomPredicate + | predicate MEMBER OF '(' predicate ')' #jsonMemberOfPredicate + ; + + +// Add in ASTVisitor nullNotnull in constant +expressionAtom + : constant #constantExpressionAtom + | fullColumnName #fullColumnNameExpressionAtom + | functionCall #functionCallExpressionAtom + | expressionAtom COLLATE collationName #collateExpressionAtom + | mysqlVariable #mysqlVariableExpressionAtom + | unaryOperator expressionAtom #unaryExpressionAtom + | BINARY expressionAtom #binaryExpressionAtom + | '(' expression (',' expression)* ')' #nestedExpressionAtom + | ROW '(' expression (',' expression)+ ')' #nestedRowExpressionAtom + | EXISTS '(' selectStatement ')' #existsExpressionAtom + | '(' selectStatement ')' #subqueryExpressionAtom + | INTERVAL expression intervalType #intervalExpressionAtom + | left=expressionAtom bitOperator right=expressionAtom #bitExpressionAtom + | left=expressionAtom mathOperator right=expressionAtom #mathExpressionAtom + | left=expressionAtom jsonOperator right=expressionAtom #jsonExpressionAtom + ; + +unaryOperator + : '!' | '~' | '+' | '-' | NOT + ; + +comparisonOperator + : '=' | '>' | '<' | '<' '=' | '>' '=' + | '<' '>' | '!' '=' | '<' '=' '>' + ; + +logicalOperator + : AND | '&' '&' | XOR | OR | '|' '|' + ; + +bitOperator + : '<' '<' | '>' '>' | '&' | '^' | '|' + ; + +mathOperator + : '*' | '/' | '%' | DIV | MOD | '+' | '-' | '--' + ; + +jsonOperator + : '-' '>' | '-' '>' '>' + ; + +// Simple id sets +// (that keyword, which can be id) + +charsetNameBase + : ARMSCII8 | ASCII | BIG5 | CP1250 | CP1251 | CP1256 | CP1257 + | CP850 | CP852 | CP866 | CP932 | DEC8 | EUCJPMS | EUCKR + | GB2312 | GBK | GEOSTD8 | GREEK | HEBREW | HP8 | KEYBCS2 + | KOI8R | KOI8U | LATIN1 | LATIN2 | LATIN5 | LATIN7 | MACCE + | MACROMAN | SJIS | SWE7 | TIS620 | UCS2 | UJIS | UTF16 + | UTF16LE | UTF32 | UTF8 | UTF8MB3 | UTF8MB4 + ; + +transactionLevelBase + : REPEATABLE | COMMITTED | UNCOMMITTED | SERIALIZABLE + ; + +privilegesBase + : TABLES | ROUTINE | EXECUTE | FILE | PROCESS + | RELOAD | SHUTDOWN | SUPER | PRIVILEGES + ; + +intervalTypeBase + : QUARTER | MONTH | DAY | HOUR + | MINUTE | WEEK | SECOND | MICROSECOND + ; + +dataTypeBase + : DATE | TIME | TIMESTAMP | DATETIME | YEAR | ENUM | TEXT + ; + +keywordsCanBeId + : ACCOUNT | ACTION | AFTER | AGGREGATE | ALGORITHM | ANY + | AT | AUDIT_ADMIN | AUTHORS | AUTOCOMMIT | AUTOEXTEND_SIZE + | AUTO_INCREMENT | AVG | AVG_ROW_LENGTH | BACKUP_ADMIN | BEGIN | BINLOG | BINLOG_ADMIN | BINLOG_ENCRYPTION_ADMIN | BIT | BIT_AND | BIT_OR | BIT_XOR + | BLOCK | BOOL | BOOLEAN | BTREE | CACHE | CASCADED | CHAIN | CHANGED + | CHANNEL | CHECKSUM | PAGE_CHECKSUM | CATALOG_NAME | CIPHER + | CLASS_ORIGIN | CLIENT | CLONE_ADMIN | CLOSE | COALESCE | CODE + | COLUMNS | COLUMN_FORMAT | COLUMN_NAME | COMMENT | COMMIT | COMPACT + | COMPLETION | COMPRESSED | COMPRESSION | CONCURRENT + | CONNECTION | CONNECTION_ADMIN | CONSISTENT | CONSTRAINT_CATALOG | CONSTRAINT_NAME + | CONSTRAINT_SCHEMA | CONTAINS | CONTEXT + | CONTRIBUTORS | COPY | COUNT | CPU | CURRENT | CURSOR_NAME + | DATA | DATAFILE | DEALLOCATE + | DEFAULT_AUTH | DEFINER | DELAY_KEY_WRITE | DES_KEY_FILE | DIAGNOSTICS | DIRECTORY + | DISABLE | DISCARD | DISK | DO | DUMPFILE | DUPLICATE + | DYNAMIC | ENABLE | ENCRYPTION | ENCRYPTION_KEY_ADMIN | END | ENDS | ENGINE | ENGINES + | ERROR | ERRORS | ESCAPE | EVEN | EVENT | EVENTS | EVERY + | EXCHANGE | EXCLUSIVE | EXPIRE | EXPORT | EXTENDED | EXTENT_SIZE | FAST | FAULTS + | FIELDS | FILE_BLOCK_SIZE | FILTER | FIREWALL_ADMIN | FIREWALL_USER | FIRST | FIXED | FLUSH + | FOLLOWS | FOUND | FULL | FUNCTION | GENERAL | GLOBAL | GRANTS | GROUP | GROUP_CONCAT + | GROUP_REPLICATION | GROUP_REPLICATION_ADMIN | HANDLER | HASH | HELP | HOST | HOSTS | IDENTIFIED + | IGNORE_SERVER_IDS | IMPORT | INDEXES | INITIAL_SIZE | INNODB_REDO_LOG_ARCHIVE + | INPLACE | INSERT_METHOD | INSTALL | INSTANCE | INTERNAL | INVOKER | IO + | IO_THREAD | IPC | ISOLATION | ISSUER | JSON | KEY_BLOCK_SIZE + | LANGUAGE | LAST | LEAVES | LESS | LEVEL | LIST | LOCAL + | LOGFILE | LOGS | MASTER | MASTER_AUTO_POSITION + | MASTER_CONNECT_RETRY | MASTER_DELAY + | MASTER_HEARTBEAT_PERIOD | MASTER_HOST | MASTER_LOG_FILE + | MASTER_LOG_POS | MASTER_PASSWORD | MASTER_PORT + | MASTER_RETRY_COUNT | MASTER_SSL | MASTER_SSL_CA + | MASTER_SSL_CAPATH | MASTER_SSL_CERT | MASTER_SSL_CIPHER + | MASTER_SSL_CRL | MASTER_SSL_CRLPATH | MASTER_SSL_KEY + | MASTER_TLS_VERSION | MASTER_USER + | MAX_CONNECTIONS_PER_HOUR | MAX_QUERIES_PER_HOUR + | MAX | MAX_ROWS | MAX_SIZE | MAX_UPDATES_PER_HOUR + | MAX_USER_CONNECTIONS | MEDIUM | MEMBER | MEMORY | MERGE | MESSAGE_TEXT + | MID | MIGRATE + | MIN | MIN_ROWS | MODE | MODIFY | MUTEX | MYSQL | MYSQL_ERRNO | NAME | NAMES + | NCHAR | NDB_STORED_USER | NEVER | NEXT | NO | NODEGROUP | NONE | NUMBER | OFFLINE | OFFSET + | OF | OJ | OLD_PASSWORD | ONE | ONLINE | ONLY | OPEN | OPTIMIZER_COSTS + | OPTIONS | ORDER | OWNER | PACK_KEYS | PAGE | PARSER | PARTIAL + | PARTITIONING | PARTITIONS | PASSWORD | PERSIST_RO_VARIABLES_ADMIN | PHASE | PLUGINS + | PLUGIN_DIR | PLUGIN | PORT | PRECEDES | PREPARE | PRESERVE | PREV + | PROCESSLIST | PROFILE | PROFILES | PROXY | QUERY | QUICK + | REBUILD | RECOVER | REDO_BUFFER_SIZE | REDUNDANT + | RELAY | RELAYLOG | RELAY_LOG_FILE | RELAY_LOG_POS | REMOVE + | REORGANIZE | REPAIR | REPLICATE_DO_DB | REPLICATE_DO_TABLE + | REPLICATE_IGNORE_DB | REPLICATE_IGNORE_TABLE + | REPLICATE_REWRITE_DB | REPLICATE_WILD_DO_TABLE + | REPLICATE_WILD_IGNORE_TABLE | REPLICATION | REPLICATION_APPLIER | REPLICATION_SLAVE_ADMIN | RESET + | RESOURCE_GROUP_ADMIN | RESOURCE_GROUP_USER | RESUME + | RETURNED_SQLSTATE | RETURNS | ROLE | ROLE_ADMIN | ROLLBACK | ROLLUP | ROTATE | ROW | ROWS + | ROW_FORMAT | SAVEPOINT | SCHEDULE | SCHEMA_NAME | SECURITY | SERIAL | SERVER + | SESSION | SESSION_VARIABLES_ADMIN | SET_USER_ID | SHARE | SHARED | SHOW_ROUTINE | SIGNED | SIMPLE | SLAVE + | SLOW | SNAPSHOT | SOCKET | SOME | SONAME | SOUNDS | SOURCE + | SQL_AFTER_GTIDS | SQL_AFTER_MTS_GAPS | SQL_BEFORE_GTIDS + | SQL_BUFFER_RESULT | SQL_CACHE | SQL_NO_CACHE | SQL_THREAD + | STACKED | START | STARTS | STATS_AUTO_RECALC | STATS_PERSISTENT + | STATS_SAMPLE_PAGES | STATUS | STD | STDDEV | STDDEV_POP | STDDEV_SAMP | STOP | STORAGE | STRING + | SUBCLASS_ORIGIN | SUBJECT | SUBPARTITION | SUBPARTITIONS | SUM | SUSPEND | SWAPS + | SWITCHES | SYSTEM_VARIABLES_ADMIN | TABLE_NAME | TABLESPACE | TABLE_ENCRYPTION_ADMIN + | TEMPORARY | TEMPTABLE | THAN | TRADITIONAL + | TRANSACTION | TRANSACTIONAL | TRIGGERS | TRUNCATE | UNDEFINED | UNDOFILE + | UNDO_BUFFER_SIZE | UNINSTALL | UNKNOWN | UNTIL | UPGRADE | USER | USE_FRM | USER_RESOURCES + | VALIDATION | VALUE | VAR_POP | VAR_SAMP | VARIABLES | VARIANCE | VERSION_TOKEN_ADMIN | VIEW | WAIT | WARNINGS | WITHOUT + | WORK | WRAPPER | X509 | XA | XA_RECOVER_ADMIN | XML + ; + +functionNameBase + : ABS | ACOS | ADDDATE | ADDTIME | AES_DECRYPT | AES_ENCRYPT + | AREA | ASBINARY | ASIN | ASTEXT | ASWKB | ASWKT + | ASYMMETRIC_DECRYPT | ASYMMETRIC_DERIVE + | ASYMMETRIC_ENCRYPT | ASYMMETRIC_SIGN | ASYMMETRIC_VERIFY + | ATAN | ATAN2 | BENCHMARK | BIN | BIT_COUNT | BIT_LENGTH + | BUFFER | CEIL | CEILING | CENTROID | CHARACTER_LENGTH + | CHARSET | CHAR_LENGTH | COERCIBILITY | COLLATION + | COMPRESS | CONCAT | CONCAT_WS | CONNECTION_ID | CONV + | CONVERT_TZ | COS | COT | COUNT | CRC32 + | CREATE_ASYMMETRIC_PRIV_KEY | CREATE_ASYMMETRIC_PUB_KEY + | CREATE_DH_PARAMETERS | CREATE_DIGEST | CROSSES | DATABASE | DATE + | DATEDIFF | DATE_FORMAT | DAY | DAYNAME | DAYOFMONTH + | DAYOFWEEK | DAYOFYEAR | DECODE | DEGREES | DES_DECRYPT + | DES_ENCRYPT | DIMENSION | DISJOINT | ELT | ENCODE + | ENCRYPT | ENDPOINT | ENVELOPE | EQUALS | EXP | EXPORT_SET + | EXTERIORRING | EXTRACTVALUE | FIELD | FIND_IN_SET | FLOOR + | FORMAT | FOUND_ROWS | FROM_BASE64 | FROM_DAYS + | FROM_UNIXTIME | GEOMCOLLFROMTEXT | GEOMCOLLFROMWKB + | GEOMETRYCOLLECTION | GEOMETRYCOLLECTIONFROMTEXT + | GEOMETRYCOLLECTIONFROMWKB | GEOMETRYFROMTEXT + | GEOMETRYFROMWKB | GEOMETRYN | GEOMETRYTYPE | GEOMFROMTEXT + | GEOMFROMWKB | GET_FORMAT | GET_LOCK | GLENGTH | GREATEST + | GTID_SUBSET | GTID_SUBTRACT | HEX | HOUR | IFNULL + | INET6_ATON | INET6_NTOA | INET_ATON | INET_NTOA | INSTR + | INTERIORRINGN | INTERSECTS | INVISIBLE + | ISCLOSED | ISEMPTY | ISNULL + | ISSIMPLE | IS_FREE_LOCK | IS_IPV4 | IS_IPV4_COMPAT + | IS_IPV4_MAPPED | IS_IPV6 | IS_USED_LOCK | LAST_INSERT_ID + | LCASE | LEAST | LEFT | LENGTH | LINEFROMTEXT | LINEFROMWKB + | LINESTRING | LINESTRINGFROMTEXT | LINESTRINGFROMWKB | LN + | LOAD_FILE | LOCATE | LOG | LOG10 | LOG2 | LOWER | LPAD + | LTRIM | MAKEDATE | MAKETIME | MAKE_SET | MASTER_POS_WAIT + | MBRCONTAINS | MBRDISJOINT | MBREQUAL | MBRINTERSECTS + | MBROVERLAPS | MBRTOUCHES | MBRWITHIN | MD5 | MICROSECOND + | MINUTE | MLINEFROMTEXT | MLINEFROMWKB | MOD| MONTH | MONTHNAME + | MPOINTFROMTEXT | MPOINTFROMWKB | MPOLYFROMTEXT + | MPOLYFROMWKB | MULTILINESTRING | MULTILINESTRINGFROMTEXT + | MULTILINESTRINGFROMWKB | MULTIPOINT | MULTIPOINTFROMTEXT + | MULTIPOINTFROMWKB | MULTIPOLYGON | MULTIPOLYGONFROMTEXT + | MULTIPOLYGONFROMWKB | NAME_CONST | NULLIF | NUMGEOMETRIES + | NUMINTERIORRINGS | NUMPOINTS | OCT | OCTET_LENGTH | ORD + | OVERLAPS | PERIOD_ADD | PERIOD_DIFF | PI | POINT + | POINTFROMTEXT | POINTFROMWKB | POINTN | POLYFROMTEXT + | POLYFROMWKB | POLYGON | POLYGONFROMTEXT | POLYGONFROMWKB + | POSITION| POW | POWER | QUARTER | QUOTE | RADIANS | RAND + | RANDOM_BYTES | RELEASE_LOCK | REVERSE | RIGHT | ROUND + | ROW_COUNT | RPAD | RTRIM | SECOND | SEC_TO_TIME + | SCHEMA | SESSION_USER | SESSION_VARIABLES_ADMIN + | SHA | SHA1 | SHA2 | SIGN | SIN | SLEEP + | SOUNDEX | SQL_THREAD_WAIT_AFTER_GTIDS | SQRT | SRID + | STARTPOINT | STRCMP | STR_TO_DATE | ST_AREA | ST_ASBINARY + | ST_ASTEXT | ST_ASWKB | ST_ASWKT | ST_BUFFER | ST_CENTROID + | ST_CONTAINS | ST_CROSSES | ST_DIFFERENCE | ST_DIMENSION + | ST_DISJOINT | ST_DISTANCE | ST_ENDPOINT | ST_ENVELOPE + | ST_EQUALS | ST_EXTERIORRING | ST_GEOMCOLLFROMTEXT + | ST_GEOMCOLLFROMTXT | ST_GEOMCOLLFROMWKB + | ST_GEOMETRYCOLLECTIONFROMTEXT + | ST_GEOMETRYCOLLECTIONFROMWKB | ST_GEOMETRYFROMTEXT + | ST_GEOMETRYFROMWKB | ST_GEOMETRYN | ST_GEOMETRYTYPE + | ST_GEOMFROMTEXT | ST_GEOMFROMWKB | ST_INTERIORRINGN + | ST_INTERSECTION | ST_INTERSECTS | ST_ISCLOSED | ST_ISEMPTY + | ST_ISSIMPLE | ST_LINEFROMTEXT | ST_LINEFROMWKB + | ST_LINESTRINGFROMTEXT | ST_LINESTRINGFROMWKB + | ST_NUMGEOMETRIES | ST_NUMINTERIORRING + | ST_NUMINTERIORRINGS | ST_NUMPOINTS | ST_OVERLAPS + | ST_POINTFROMTEXT | ST_POINTFROMWKB | ST_POINTN + | ST_POLYFROMTEXT | ST_POLYFROMWKB | ST_POLYGONFROMTEXT + | ST_POLYGONFROMWKB | ST_SRID | ST_STARTPOINT + | ST_SYMDIFFERENCE | ST_TOUCHES | ST_UNION | ST_WITHIN + | ST_X | ST_Y | SUBDATE | SUBSTRING_INDEX | SUBTIME + | SYSTEM_USER | TAN | TIME | TIMEDIFF | TIMESTAMP + | TIMESTAMPADD | TIMESTAMPDIFF | TIME_FORMAT | TIME_TO_SEC + | TOUCHES | TO_BASE64 | TO_DAYS | TO_SECONDS | UCASE + | UNCOMPRESS | UNCOMPRESSED_LENGTH | UNHEX | UNIX_TIMESTAMP + | UPDATEXML | UPPER | UUID | UUID_SHORT + | VALIDATE_PASSWORD_STRENGTH | VERSION | VISIBLE + | WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS | WEEK | WEEKDAY + | WEEKOFYEAR | WEIGHT_STRING | WITHIN | YEAR | YEARWEEK + | Y_FUNCTION | X_FUNCTION + | JSON_ARRAY | JSON_OBJECT | JSON_QUOTE | JSON_CONTAINS | JSON_CONTAINS_PATH + | JSON_EXTRACT | JSON_KEYS | JSON_OVERLAPS | JSON_SEARCH | JSON_VALUE + | JSON_ARRAY_APPEND | JSON_ARRAY_INSERT | JSON_INSERT | JSON_MERGE + | JSON_MERGE_PATCH | JSON_MERGE_PRESERVE | JSON_REMOVE | JSON_REPLACE + | JSON_SET | JSON_UNQUOTE | JSON_DEPTH | JSON_LENGTH | JSON_TYPE + | JSON_VALID | JSON_TABLE | JSON_SCHEMA_VALID | JSON_SCHEMA_VALIDATION_REPORT + | JSON_PRETTY | JSON_STORAGE_FREE | JSON_STORAGE_SIZE | JSON_ARRAYAGG + | JSON_OBJECTAGG + ; \ No newline at end of file diff --git a/toolkit/dbvendor/mysql/parser/parser/altertable_visitor.go b/toolkit/dbvendor/mysql/parser/parser/altertable_visitor.go new file mode 100644 index 00000000..d5c73a6e --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/altertable_visitor.go @@ -0,0 +1,93 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" + "strings" +) + +type AlterTable struct { + // Name describes the literal of table, this name can be specified as db_name.tbl_name, + // https://dev.mysql.com/doc/refman/8.0/en/create-table.html#create-table-name + Name string + Columns []*ColumnDeclaration +} + +// VisitAlterTable visits a parse tree produced by MySqlParser#alterTable. +func (v *visitor) VisitAlterTable(ctx *gen.AlterTableContext) interface{} { + v.trace("VisitAlterTable") + var ret AlterTable + tableName := ctx.TableName().GetText() + tableName = strings.Trim(tableName, "`") + tableName = strings.Trim(tableName, "'") + replacer := strings.NewReplacer("\r", "", "\n", "") + tableName = replacer.Replace(tableName) + ret.Name = tableName + for _, item := range ctx.AllAlterSpecification() { + data := v.visitAlterSpecification(item) + if data == nil { + continue + } + + switch r := data.(type) { + case *ColumnDeclaration: + ret.Columns = append(ret.Columns, r) + } + } + + return &ret +} + +// VisitCreateDefinition visits a parse tree produced by MySqlParser#createDefinition. +func (v *visitor) visitAlterSpecification(ctx gen.IAlterSpecificationContext) interface{} { + v.trace("VisitAlterSpecification") + switch tx := ctx.(type) { + case *gen.AlterByModifyColumnContext: + ret := v.getColumnDeclaration(tx) + ret.ColumnDefinition.Type = ModifyColumn + return &ret + case *gen.AlterByAddColumnContext: + ret := v.getColumnDeclaration(tx) + ret.ColumnDefinition.Type = AddColumn + return &ret + case *gen.AlterByDropColumnContext: + v.trace("*gen.AlterByDropColumnContext") + default: + v.trace("Not support " + tx.GetText()) + } + return nil +} + +type iAlterTableColumnContext interface { + Uid(i int) gen.IUidContext + ColumnDefinition() gen.IColumnDefinitionContext +} + +func (v *visitor) getColumnDeclaration(ctx iAlterTableColumnContext) ColumnDeclaration { + var ret ColumnDeclaration + ret.Name = v.visitUid(ctx.Uid(0)) + iDefinitionContext := ctx.ColumnDefinition() + definitionContext, ok := iDefinitionContext.(*gen.ColumnDefinitionContext) + if ok { + out := v.VisitColumnDefinition(definitionContext) + if cd, ok := out.(*ColumnDefinition); ok { + ret.ColumnDefinition = cd + } + } + return ret +} diff --git a/toolkit/dbvendor/mysql/parser/parser/casestream.go b/toolkit/dbvendor/mysql/parser/parser/casestream.go new file mode 100644 index 00000000..8f8d1e37 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/casestream.go @@ -0,0 +1,51 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "unicode" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +type CaseChangingStream struct { + antlr.CharStream + + upper bool +} + +// newCaseChangingStream returns a new CaseChangingStream that forces +// all tokens read from the underlying stream to be either upper case +// or lower case based on the upper argument. +func newCaseChangingStream(in antlr.CharStream, upper bool) *CaseChangingStream { + return &CaseChangingStream{in, upper} +} + +// LA gets the value of the symbol at offset from the current position +// from the underlying CharStream and converts it to either upper case +// or lower case. +func (is *CaseChangingStream) LA(offset int) int { + in := is.CharStream.LA(offset) + if in < 0 { + // Such as antlr.TokenEOF which is -1 + return in + } + if is.upper { + return int(unicode.ToUpper(rune(in))) + } + return int(unicode.ToLower(rune(in))) +} diff --git a/toolkit/dbvendor/mysql/parser/parser/columndefinition_test.go b/toolkit/dbvendor/mysql/parser/parser/columndefinition_test.go new file mode 100644 index 00000000..3e58afb3 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/columndefinition_test.go @@ -0,0 +1,86 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" +) + +func TestVisitor_VisitColumnDefinition(t *testing.T) { + p := NewParser(WithDebugMode(true)) + accept := func(p *gen.MySqlParser, visitor *visitor) interface{} { + definition := p.ColumnDefinition() + ctx := definition.(*gen.ColumnDefinitionContext) + return visitor.VisitColumnDefinition(ctx) + } + + v, err := p.testMysqlSyntax("test.sql", accept, `bigint(20) NOT NULL DEFAULT 'test default' PRIMARY KEY COMMENT 'test comment'`) + assert.Nil(t, err) + assert.NotNil(t, v) + columnDefinition := v.(*ColumnDefinition) + + assert.Equal(t, ColumnConstraint{ + NotNull: true, + HasDefaultValue: true, + Primary: true, + Comment: "test comment", + }, *columnDefinition.ColumnConstraint) + + v, err = p.testMysqlSyntax("test.sql", accept, `bigint(20) NULL KEY`) + assert.Nil(t, err) + assert.NotNil(t, v) + columnDefinition = v.(*ColumnDefinition) + + assert.Equal(t, ColumnConstraint{ + Key: true, + }, *columnDefinition.ColumnConstraint) + + v, err = p.testMysqlSyntax("test.sql", accept, `bigint(20) NULL AUTO_INCREMENT UNIQUE KEY`) + assert.Nil(t, err) + assert.NotNil(t, v) + columnDefinition = v.(*ColumnDefinition) + + assert.Equal(t, ColumnConstraint{ + AutoIncrement: true, + Unique: true, + HasDefaultValue: false, + }, *columnDefinition.ColumnConstraint) + + v, err = p.testMysqlSyntax("test.sql", accept, `bigint(20) NULL DEFAULT NULL AUTO_INCREMENT UNIQUE KEY`) + assert.Nil(t, err) + assert.NotNil(t, v) + columnDefinition = v.(*ColumnDefinition) + + assert.Equal(t, ColumnConstraint{ + AutoIncrement: true, + Unique: true, + }, *columnDefinition.ColumnConstraint) + + v, err = p.testMysqlSyntax("test.sql", accept, `varchar(20) DEFAULT '' AUTO_INCREMENT UNIQUE KEY`) + assert.Nil(t, err) + assert.NotNil(t, v) + columnDefinition = v.(*ColumnDefinition) + + assert.Equal(t, ColumnConstraint{ + HasDefaultValue: true, + AutoIncrement: true, + Unique: true, + }, *columnDefinition.ColumnConstraint) +} diff --git a/toolkit/dbvendor/mysql/parser/parser/columndefinition_visitor.go b/toolkit/dbvendor/mysql/parser/parser/columndefinition_visitor.go new file mode 100644 index 00000000..1f52172c --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/columndefinition_visitor.go @@ -0,0 +1,166 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "strings" + + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" +) + +type ColumnOpsType int + +const ( + _ ColumnOpsType = iota + AddColumn + ModifyColumn + DropColumn +) + +type ColumnDefinition struct { + DataType DataType + ColumnConstraint *ColumnConstraint + Type ColumnOpsType +} + +type ColumnConstraint struct { + NotNull bool + HasDefaultValue bool + AutoIncrement bool + Primary bool + Key bool + Unique bool + Comment string + // if HasDefaultValue is false, DefaultValue will be ignored + DefaultValue string +} + +type key bool +type primary bool + +// VisitColumnDefinition visits a parse tree produced by MySqlParser#columnDefinition. +func (v *visitor) VisitColumnDefinition(ctx *gen.ColumnDefinitionContext) interface{} { + v.trace("VisitColumnDefinition") + + var ( + constraint ColumnConstraint + out ColumnDefinition + ) + out.DataType = v.visitDataType(ctx.DataType()) + for _, e := range ctx.AllColumnConstraint() { + switch tx := e.(type) { + case *gen.NullColumnConstraintContext: + constraint.NotNull = v.visitNullColumnConstraint(tx) + case *gen.DefaultColumnConstraintContext: + constraint.DefaultValue, constraint.HasDefaultValue = v.visitDefaultColumnConstraint(tx) + case *gen.AutoIncrementColumnConstraintContext: + constraint.AutoIncrement = v.visitAutoIncrementColumnConstraint(tx) + case *gen.PrimaryKeyColumnConstraintContext: + ret := v.VisitPrimaryKeyColumnConstraint(tx) + if c, ok := ret.(*primary); ok { + constraint.Primary = bool(*c) + } else { + c := ret.(*key) + constraint.Key = bool(*c) + } + case *gen.UniqueKeyColumnConstraintContext: + constraint.Unique = v.visitUniqueKeyColumnConstraint(tx) + case *gen.CommentColumnConstraintContext: + constraint.Comment = v.visitCommentColumnConstraint(tx) + case *gen.ReferenceColumnConstraintContext: + v.panicWithExpr(tx.GetStart(), "Unsupported reference definition") + } + } + + out.ColumnConstraint = &constraint + return &out +} + +// visitNullColumnConstraint visits a parse tree produced by MySqlParser#nullColumnConstraint. +func (v *visitor) visitNullColumnConstraint(ctx *gen.NullColumnConstraintContext) bool { + v.trace("VisitNullColumnConstraint") + if ret, ok := ctx.NullNotnull().(*gen.NullNotnullContext); ok { + return v.visitNullNotnull(ret) + } + + return false +} + +// visitDefaultColumnConstraint visits a parse tree produced by MySqlParser#defaultColumnConstraint. +func (v *visitor) visitDefaultColumnConstraint(ctx *gen.DefaultColumnConstraintContext) (value string, ok bool) { + v.trace("VisitDefaultColumnConstraint") + value = ctx.DefaultValue().GetText() + text := ctx.DefaultValue().GetText() + text = strings.Trim(text, "`") + text = strings.Trim(text, "'") + replacer := strings.NewReplacer("\r", "", "\n", "") + text = replacer.Replace(text) + if strings.HasPrefix(strings.ToUpper(text), "NULL") { + return value, false + } + + return value, true +} + +// visitAutoIncrementColumnConstraint visits a parse tree produced by MySqlParser#autoIncrementColumnConstraint. +func (v *visitor) visitAutoIncrementColumnConstraint(_ *gen.AutoIncrementColumnConstraintContext) bool { + v.trace("VisitAutoIncrementColumnConstraint") + return true +} + +// VisitPrimaryKeyColumnConstraint visits a parse tree produced by MySqlParser#primaryKeyColumnConstraint. +func (v *visitor) VisitPrimaryKeyColumnConstraint(ctx *gen.PrimaryKeyColumnConstraintContext) interface{} { + v.trace("VisitPrimaryKeyColumnConstraint") + if ctx.PRIMARY() == nil { + var ret key + ret = true + return &ret + } + + var ret primary + ret = true + return &ret +} + +// visitUniqueKeyColumnConstraint visits a parse tree produced by MySqlParser#uniqueKeyColumnConstraint. +func (v *visitor) visitUniqueKeyColumnConstraint(_ *gen.UniqueKeyColumnConstraintContext) bool { + v.trace("VisitUniqueKeyColumnConstraint") + return true +} + +// visitCommentColumnConstraint visits a parse tree produced by MySqlParser#commentColumnConstraint. +func (v *visitor) visitCommentColumnConstraint(ctx *gen.CommentColumnConstraintContext) string { + v.trace("VisitCommentColumnConstraint") + value := parseTerminalNode( + ctx.STRING_LITERAL(), + withTrim("`"), + withTrim(`"`), + withTrim(`'`), + withReplacer(`\r`, "", `\n`, ""), + ) + return value +} + +// visitNullNotnull visits a parse tree produced by MySqlParser#nullNotnull. +func (v *visitor) visitNullNotnull(ctx *gen.NullNotnullContext) bool { + v.trace("VisitNullNotnull") + if ctx.NOT() != nil { + return true + } + + return false +} diff --git a/toolkit/dbvendor/mysql/parser/parser/createtable_test.go b/toolkit/dbvendor/mysql/parser/parser/createtable_test.go new file mode 100644 index 00000000..8e56f457 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/createtable_test.go @@ -0,0 +1,331 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "sort" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" +) + +func TestVisitor_VisitCreateTable(t *testing.T) { + p := NewParser(WithDebugMode(true)) + accept := func(p *gen.MySqlParser, visitor *visitor) interface{} { + ctx := p.CreateTable() + return visitor.visitCreateTable(ctx) + } + + t.Run("copyCreateTableContext", func(t *testing.T) { + _, err := p.testMysqlSyntax("test.sql", accept, + `create table new_t (like t1);`) + assert.Error(t, err) + }) + + t.Run("queryCreateTable", func(t *testing.T) { + _, err := p.testMysqlSyntax("test.sql", accept, + `CREATE TABLE test (a INT NOT NULL AUTO_INCREMENT,PRIMARY KEY (a), + KEY(b))ENGINE=InnoDB SELECT b,c FROM test2;`) + assert.Error(t, err) + }) + + t.Run("columnCreateTable_normal_case", func(t *testing.T) { + v, err := p.testMysqlSyntax("test.sql", accept, + "CREATE TABLE `user` (\n "+ + "`id` bigint NOT NULL AUTO_INCREMENT,\n "+ + "`number` varchar(255) NOT NULL DEFAULT '' COMMENT '学号',\n "+ + "`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '用户名称',\n "+ + " `password` varchar(255) NOT NULL DEFAULT '' COMMENT '用户密码',\n "+ + " `gender` char(5) NOT NULL COMMENT '男|女|未公开',\n "+ + "`create_time` timestamp NULL DEFAULT NULL,\n "+ + "`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n "+ + "PRIMARY KEY (`id`),\n "+ + "UNIQUE KEY `number_unique` (`number`) USING BTREE,\n "+ + "UNIQUE KEY `number_unique2` (`number`"+ + ") USING BTREE\n) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;") + assert.Nil(t, err) + table, ok := v.(*CreateTable) + assert.True(t, ok) + expected := &CreateTable{ + Name: "user", + Columns: []*ColumnDeclaration{ + { + Name: "id", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: BigInt}, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + AutoIncrement: true, + }, + }, + }, + { + Name: "number", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: VarChar}, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + Comment: "学号", + HasDefaultValue: true, + }, + }, + }, + { + Name: "name", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: VarChar}, + ColumnConstraint: &ColumnConstraint{ + Comment: "用户名称", + }, + }, + }, + { + Name: "password", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: VarChar}, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + Comment: "用户密码", + HasDefaultValue: true, + }, + }, + }, + { + Name: "gender", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: Char}, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + Comment: "男|女|未公开", + }, + }, + }, + { + Name: "create_time", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: Timestamp}, + ColumnConstraint: &ColumnConstraint{}, + }, + }, + { + Name: "update_time", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: Timestamp}, + ColumnConstraint: &ColumnConstraint{ + HasDefaultValue: true, + }, + }, + }, + }, + Constraints: []*TableConstraint{ + { + ColumnPrimaryKey: []string{"id"}, + }, + { + ColumnUniqueKey: []string{"number"}, + }, + { + ColumnUniqueKey: []string{"number"}, + }, + }, + } + assertCreateTableEqual(t, expected, table) + }) + + t.Run("columnCreateTable_every_case", func(t *testing.T) { + v, err := p.testMysqlSyntax("test.sql", accept, + `create table if not exists foo ( + id bigint(20) not null primary key auto_increment default 0 comment 'id', + class_id varchar not null default '' comment '班级id', + name char(10) not null key default '' comment '姓名', + mobile varchar(15) not null unique default '' comment '手机号', + gender enum('男','女') not null default '男' comment '性别', + flag boolean not null default 'false' comment '标志位', + document JSON NOT NULL, + location POINT comment '地理位置', + primary key ('id'), + key 'name_idx' ('name'), + unique key 'class_mobile_uni' ('class_id','mobile') + )`) + assert.Nil(t, err) + table, ok := v.(*CreateTable) + assert.True(t, ok) + assertCreateTableEqual(t, &CreateTable{ + Name: "foo", + Columns: []*ColumnDeclaration{ + { + Name: "id", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: BigInt}, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + HasDefaultValue: true, + AutoIncrement: true, + Primary: true, + Comment: "id", + }, + }, + }, + { + Name: "class_id", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: VarChar}, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + Comment: "班级id", + HasDefaultValue: true, + }, + }, + }, + { + Name: "name", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: Char}, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + Key: true, + Comment: "姓名", + HasDefaultValue: true, + }, + }, + }, + { + Name: "mobile", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: VarChar}, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + Unique: true, + Comment: "手机号", + HasDefaultValue: true, + }, + }, + }, + { + Name: "gender", + ColumnDefinition: &ColumnDefinition{ + DataType: &EnumSetDataType{ + tp: Enum, + value: []string{"男", "女"}, + }, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + HasDefaultValue: true, + Comment: "性别", + }, + }, + }, + { + Name: "flag", + ColumnDefinition: &ColumnDefinition{ + DataType: &EnumSetDataType{ + tp: Boolean, + }, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + HasDefaultValue: true, + Comment: "标志位", + }, + }, + }, + { + Name: "document", + ColumnDefinition: &ColumnDefinition{ + DataType: &EnumSetDataType{ + tp: Json, + }, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + }, + }, + }, + { + Name: "location", + ColumnDefinition: &ColumnDefinition{ + DataType: &EnumSetDataType{ + tp: Point, + }, + ColumnConstraint: &ColumnConstraint{ + Comment: "地理位置", + }, + }, + }, + }, + Constraints: []*TableConstraint{ + { + ColumnPrimaryKey: []string{"id"}, + }, + { + ColumnUniqueKey: []string{"class_id", "mobile"}, + }, + }, + }, table) + }) +} + +func TestGetTableFromCreateTable(t *testing.T) { + p := NewParser(WithDebugMode(true)) + accept := func(p *gen.MySqlParser, visitor *visitor) interface{} { + ctx := p.CreateTable() + return visitor.visitCreateTable(ctx) + } + v, err := p.testMysqlSyntax("test.sql", accept, + "CREATE TABLE `foo`.`bar` (\n "+ + "`id` bigint NOT NULL AUTO_INCREMENT,\n "+ + "PRIMARY KEY (`id`)\n"+ + ") USING BTREE\n) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;") + assert.Nil(t, err) + createTable, ok := v.(*CreateTable) + assert.True(t, ok) + assert.Equal(t, "foo`.`bar", createTable.Name) + table := createTable.Convert() + assert.Equal(t, "bar", table.Name) +} + +func assertCreateTableEqual(t *testing.T, expected, actual *CreateTable) { + assert.Equal(t, expected.Name, actual.Name) + assert.Equal(t, len(expected.Columns), len(actual.Columns)) + sort.SliceStable(expected.Columns, func(i, j int) bool { + return expected.Columns[i].Name < expected.Columns[j].Name + }) + sort.SliceStable(actual.Columns, func(i, j int) bool { + return actual.Columns[i].Name < actual.Columns[j].Name + }) + + for i, expectedColumn := range expected.Columns { + actualColumn := actual.Columns[i] + assert.Equal(t, expectedColumn.Name, actualColumn.Name) + assertColumnDefinition(t, expectedColumn.ColumnDefinition, actualColumn.ColumnDefinition) + } + + for i, expectedConstraint := range expected.Constraints { + actualConstraint := actual.Constraints[i] + assert.Equal(t, *expectedConstraint, *actualConstraint) + assert.Equal(t, expectedConstraint, actualConstraint) + } +} + +func assertColumnDefinition(t *testing.T, expected, actual *ColumnDefinition) { + assertDataType(t, expected.DataType, actual.DataType) + assert.Equal(t, *expected.ColumnConstraint, *actual.ColumnConstraint) +} + +func assertDataType(t *testing.T, expected, actual DataType) { + assert.Equal(t, expected.Type(), actual.Type()) + assert.Equal(t, expected.Value(), actual.Value()) +} diff --git a/toolkit/dbvendor/mysql/parser/parser/createtable_visitor.go b/toolkit/dbvendor/mysql/parser/parser/createtable_visitor.go new file mode 100644 index 00000000..b11d10b8 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/createtable_visitor.go @@ -0,0 +1,163 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "strings" + + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" +) + +type CreateTable struct { + // Name describes the literal of table, this name can be specified as db_name.tbl_name, + // https://dev.mysql.com/doc/refman/8.0/en/create-table.html#create-table-name + Name string + Columns []*ColumnDeclaration + Constraints []*TableConstraint +} + +type ColumnDeclaration struct { + Name string + ColumnDefinition *ColumnDefinition +} + +type createDefinition struct { + ColumnDeclaration *ColumnDeclaration + TableConstraint *TableConstraint +} + +// visitCreateTable visits a parse tree produced by MySqlParser#createTable. +func (v *visitor) visitCreateTable(ctx gen.ICreateTableContext) *CreateTable { + v.trace("VisitCreateTable") + switch tx := ctx.(type) { + case *gen.CopyCreateTableContext: + v.panicWithExpr(tx.GetStart(), + "Unsupported creating a table by copying from another table", + ) + case *gen.QueryCreateTableContext: + v.panicWithExpr(tx.GetStart(), + "Unsupported creating a table by querying from another table", + ) + case *gen.ColumnCreateTableContext: + return v.visitColumnCreateTable(tx) + } + + v.panicWithExpr(ctx.GetStart(), "Unknown creating a table") + return nil +} + +// visitColumnCreateTable visits a parse tree produced by MySqlParser#columnCreateTable. +func (v *visitor) visitColumnCreateTable(ctx *gen.ColumnCreateTableContext) *CreateTable { + v.trace("VisitColumnCreateTable") + var ret CreateTable + tableName := ctx.TableName().GetText() + tableName = strings.Trim(tableName, "`") + tableName = strings.Trim(tableName, "'") + replacer := strings.NewReplacer("\r", "", "\n", "") + tableName = replacer.Replace(tableName) + ret.Name = tableName + if ctx.CreateDefinitions() != nil { + if createDefinitionsContext, ok := ctx.CreateDefinitions().(*gen.CreateDefinitionsContext); ok { + definitions := v.visitCreateDefinitions(createDefinitionsContext) + v.convertCreateDefinition(definitions, &ret) + } + } + + return &ret +} + +// visitCreateDefinitions visits a parse tree produced by MySqlParser#createDefinitions. +func (v *visitor) visitCreateDefinitions(ctx *gen.CreateDefinitionsContext) []*createDefinition { + v.trace("VisitCreateDefinitions") + var ret []*createDefinition + for _, e := range ctx.AllCreateDefinition() { + data := v.VisitCreateDefinition(e) + if data == nil { + continue + } + + switch r := data.(type) { + case *ColumnDeclaration: + ret = append(ret, &createDefinition{ + ColumnDeclaration: r, + }) + case *TableConstraint: + ret = append(ret, &createDefinition{ + TableConstraint: r, + }) + } + } + return ret +} + +// VisitCreateDefinition visits a parse tree produced by MySqlParser#createDefinition. +func (v *visitor) VisitCreateDefinition(ctx gen.ICreateDefinitionContext) interface{} { + v.trace("VisitCreateDefinition") + switch tx := ctx.(type) { + case *gen.ColumnDeclarationContext: + var ret ColumnDeclaration + ret.Name = v.visitUid(tx.Uid()) + iDefinitionContext := tx.ColumnDefinition() + definitionContext, ok := iDefinitionContext.(*gen.ColumnDefinitionContext) + if ok { + out := v.VisitColumnDefinition(definitionContext) + if cd, ok := out.(*ColumnDefinition); ok { + ret.ColumnDefinition = cd + } + } + + return &ret + case *gen.ConstraintDeclarationContext: + if tx.TableConstraint() != nil { + return v.visitTableConstraint(tx.TableConstraint()) + } + } + + return nil +} + +func (v *visitor) convertCreateDefinition(list []*createDefinition, table *CreateTable) { + for _, e := range list { + if e.ColumnDeclaration != nil { + table.Columns = append(table.Columns, e.ColumnDeclaration) + } + if e.TableConstraint != nil { + table.Constraints = append(table.Constraints, e.TableConstraint) + } + } +} + +type Table struct { + Name string + Columns []*ColumnDeclaration + Constraints []*TableConstraint +} + +func (c *CreateTable) Convert() *Table { + var ret Table + ret.Name = onlyTableName(c.Name) + ret.Columns = c.Columns + ret.Constraints = c.Constraints + return &ret +} + +func onlyTableName(name string) string { + // antlr v4 parse talbe name `db_name`.`tbl_name` as string + // "db_name`.`tbl_name" + ss := strings.Split(name, "`.`") + return ss[len(ss)-1] +} diff --git a/toolkit/dbvendor/mysql/parser/parser/createtable_visitor_test.go b/toolkit/dbvendor/mysql/parser/parser/createtable_visitor_test.go new file mode 100644 index 00000000..7142c713 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/createtable_visitor_test.go @@ -0,0 +1,36 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import "testing" + +func Test_onlyTableName(t *testing.T) { + tests := []struct { + name string + want string + }{ + {"foo", "foo"}, + {"foo`.`bar", "bar"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := onlyTableName(tt.name); got != tt.want { + t.Errorf("onlyTableName() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/toolkit/dbvendor/mysql/parser/parser/datatype_test.go b/toolkit/dbvendor/mysql/parser/parser/datatype_test.go new file mode 100644 index 00000000..c52f8316 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/datatype_test.go @@ -0,0 +1,300 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" +) + +func TestVisitor_VisitDataType(t *testing.T) { + p := NewParser(WithDebugMode(true)) + accept := func(p *gen.MySqlParser, visitor *visitor) interface{} { + return visitor.visitDataType(p.DataType()) + } + + t.Run("stringDataType", func(t *testing.T) { + testData := map[string]int{ + `CHAR(10)`: Char, + `CHARACTER(10)`: Character, + `VARCHAR(10)`: VarChar, + `TINYTEXT`: TinyText, + `TEXT`: Text, + `MEDIUMTEXT`: MediumText, + `LONGTEXT`: LongText, + `NCHAR(20)`: NChar, + `NVARCHAR(20)`: NVarChar, + `LONG`: LongVarChar, + } + + for sql, dataType := range testData { + actual, err := p.testMysqlSyntax("test.sql", accept, sql) + assert.Nil(t, err) + assertTypeEqual(t, dataType, actual) + } + }) + + t.Run("nationalStringDataType", func(t *testing.T) { + testData := map[string]int{ + `NATIONAL VARCHAR(255)`: NVarChar, + `NATIONAL CHARACTER(255) BINARY`: NChar, + `NCHAR VARCHAR(255) BINARY`: NVarChar, + `NCHAR VARCHAR(200)`: NVarChar, + } + + for sql, dataType := range testData { + actual, err := p.testMysqlSyntax("test.sql", accept, sql) + assert.Nil(t, err) + assertTypeEqual(t, dataType, actual) + } + }) + + t.Run("nationalVaryingStringDataType", func(t *testing.T) { + testData := map[string]int{ + `NATIONAL CHAR VARYING (255)`: NVarChar, + `NATIONAL CHAR VARYING (255) BINARY`: NVarChar, + `NATIONAL CHARACTER VARYING (255)`: NVarChar, + `NATIONAL CHARACTER VARYING (255) BINARY`: NVarChar, + } + + for sql, dataType := range testData { + actual, err := p.testMysqlSyntax("test.sql", accept, sql) + assert.Nil(t, err) + assertTypeEqual(t, dataType, actual) + } + }) + + t.Run("dimensionDataType", func(t *testing.T) { + testData := map[string]int{ + `TINYINT(1)`: TinyInt, + `TINYINT(1) SIGNED`: TinyInt, + `TINYINT(1) UNSIGNED`: TinyInt, + `TINYINT(1) UNSIGNED ZEROFILL`: TinyInt, + `SMALLINT(10)`: SmallInt, + `SMALLINT(10) SIGNED`: SmallInt, + `SMALLINT(10) UNSIGNED`: SmallInt, + `SMALLINT(10) ZEROFILL`: SmallInt, + `MEDIUMINT(10)`: MediumInt, + `MEDIUMINT(10) SIGNED`: MediumInt, + `MEDIUMINT(10) UNSIGNED`: MediumInt, + `MEDIUMINT(10) ZEROFILL`: MediumInt, + `INT(10)`: Int, + `INT(10) SIGNED`: Int, + `INT(10) UNSIGNED`: Int, + `INT(10) ZEROFILL`: Int, + `INTEGER(10)`: Integer, + `INTEGER(10) SIGNED`: Integer, + `INTEGER(10) UNSIGNED`: Integer, + `INTEGER(10) ZEROFILL`: Integer, + `BIGINT(20)`: BigInt, + `BIGINT(20) SIGNED`: BigInt, + `BIGINT(20) UNSIGNED`: BigInt, + `BIGINT(20) ZEROFILL`: BigInt, + `MIDDLEINT(20)`: MiddleInt, + `MIDDLEINT(20) SIGNED`: MiddleInt, + `MIDDLEINT(20) UNSIGNED`: MiddleInt, + `MIDDLEINT(20) ZEROFILL`: MiddleInt, + `INT1(2)`: Int1, + `INT1(2) SIGNED`: Int1, + `INT1(2) UNSIGNED`: Int1, + `INT1(2) ZEROFILL`: Int1, + `INT2(2)`: Int2, + `INT2(2) SIGNED`: Int2, + `INT2(2) UNSIGNED`: Int2, + `INT2(2) ZEROFILL`: Int2, + `INT3(20)`: Int3, + `INT3(3) SIGNED`: Int3, + `INT3(3) UNSIGNED`: Int3, + `INT3(3) ZEROFILL`: Int3, + `INT4(4)`: Int4, + `INT4(4) SIGNED`: Int4, + `INT4(4) UNSIGNED`: Int4, + `INT4(4) ZEROFILL`: Int4, + `INT8(8)`: Int8, + `INT8(8) SIGNED`: Int8, + `INT8(8) UNSIGNED`: Int8, + `INT8(8) ZEROFILL`: Int8, + `REAL(8,10) ZEROFILL`: Real, + `REAL ZEROFILL`: Real, + `REAL SIGNED ZEROFILL`: Real, + `REAL UNSIGNED ZEROFILL`: Real, + `DOUBLE(8,10) ZEROFILL`: Double, + `DOUBLE PRECISION (8,10) ZEROFILL`: Double, + `DOUBLE ZEROFILL`: Double, + `DOUBLE SIGNED ZEROFILL`: Double, + `DOUBLE UNSIGNED ZEROFILL`: Double, + `DECIMAL(8,10) ZEROFILL`: Decimal, + `DECIMAL ZEROFILL`: Decimal, + `DECIMAL SIGNED ZEROFILL`: Decimal, + `DECIMAL UNSIGNED ZEROFILL`: Decimal, + `DEC(8,10) ZEROFILL`: Dec, + `DEC ZEROFILL`: Dec, + `DEC SIGNED ZEROFILL`: Dec, + `DEC UNSIGNED ZEROFILL`: Dec, + `FIXED(8,10) ZEROFILL`: Fixed, + `FIXED ZEROFILL`: Fixed, + `FIXED SIGNED ZEROFILL`: Fixed, + `FIXED UNSIGNED ZEROFILL`: Fixed, + `NUMERIC(8,10) ZEROFILL`: Numeric, + `NUMERIC ZEROFILL`: Numeric, + `NUMERIC SIGNED ZEROFILL`: Numeric, + `NUMERIC UNSIGNED ZEROFILL`: Numeric, + `FLOAT(8,10) ZEROFILL`: Float, + `FLOAT ZEROFILL`: Float, + `FLOAT SIGNED ZEROFILL`: Float, + `FLOAT UNSIGNED ZEROFILL`: Float, + `FLOAT4(8,10) ZEROFILL`: Float4, + `FLOAT4 ZEROFILL`: Float4, + `FLOAT4 SIGNED ZEROFILL`: Float4, + `FLOAT4 UNSIGNED ZEROFILL`: Float4, + `FLOAT8(8,10) ZEROFILL`: Float8, + `FLOAT8 ZEROFILL`: Float8, + `FLOAT8 SIGNED ZEROFILL`: Float8, + `FLOAT8 UNSIGNED ZEROFILL`: Float8, + `BIT`: Bit, + `BIT(1)`: Bit, + `TIME`: Time, + `TIMESTAMP`: Timestamp, + `DATETIME`: DateTime, + `BINARY`: Binary, + `VARBINARY`: VarBinary, + `BLOB`: Blob, + `YEAR`: Year, + } + + for sql, dataType := range testData { + actual, err := p.testMysqlSyntax("test.sql", accept, sql) + assert.Nil(t, err) + assertTypeEqual(t, dataType, actual) + } + + testData = map[string]int{ + `TINYINT(1) UNSIGNED`: TinyInt, + `SMALLINT UNSIGNED`: SmallInt, + `BIGINT UNSIGNED`: BigInt, + } + for sql, dataType := range testData { + actual, err := p.testMysqlSyntax("test.sql", accept, sql) + assert.Nil(t, err) + assertTypeEqual(t, dataType, actual, true) + } + }) + + t.Run("simpleDataType", func(t *testing.T) { + testData := map[string]int{ + `DATE`: Date, + `TINYBLOB`: TinyBlob, + `MEDIUMBLOB`: MediumBlob, + `LONGBLOB`: LongBlob, + `BOOL`: Bool, + `BOOLEAN`: Boolean, + `SERIAL`: Serial, + } + + for sql, dataType := range testData { + actual, err := p.testMysqlSyntax("test.sql", accept, sql) + assert.Nil(t, err) + assertTypeEqual(t, dataType, actual) + } + }) + + t.Run("collectionDataType", func(t *testing.T) { + testData := map[string]EnumSetDataType{ + `ENUM('1','2')`: { + tp: Enum, + value: []string{"1", "2"}, + }, + `SET('A','B')`: { + tp: Set, + value: []string{"A", "B"}, + }, + `SET('A','B') BINARY`: { + tp: Set, + value: []string{"A", "B"}, + }, + } + + for sql, e := range testData { + actual, err := p.testMysqlSyntax("test.sql", accept, sql) + assert.Nil(t, err) + assertEnumTypeEqual(t, e.tp, e.value, actual) + } + }) + + t.Run("spatialDataType", func(t *testing.T) { + testData := map[string]int{ + `GEOMETRYCOLLECTION`: GeometryCollection, + `GEOMCOLLECTION`: GeomCollection, + `LINESTRING`: LineString, + `MULTILINESTRING`: MultiLineString, + `MULTIPOINT`: MultiPoint, + `MULTIPOLYGON`: MultiPolygon, + `POINT`: Point, + `POLYGON`: Polygon, + `JSON`: Json, + `GEOMETRY`: Geometry, + } + + for sql, dataType := range testData { + actual, err := p.testMysqlSyntax("test.sql", accept, sql) + assert.Nil(t, err) + assertTypeEqual(t, dataType, actual) + } + }) + + t.Run("longVarcharDataType ", func(t *testing.T) { + testData := map[string]int{ + `LONG`: LongVarChar, + `LONG VARCHAR`: LongVarChar, + `LONG VARCHAR BINARY`: LongVarChar, + `LONG VARCHAR BINARY CHARACTER SET 'utf8'`: LongVarChar, + `LONG VARCHAR BINARY CHARSET 'utf8'`: LongVarChar, + } + + for sql, dataType := range testData { + actual, err := p.testMysqlSyntax("test.sql", accept, sql) + assert.Nil(t, err) + assertTypeEqual(t, dataType, actual) + } + }) + + t.Run("longVarbinaryDataType ", func(t *testing.T) { + testData := map[string]int{ + `LONG VARBINARY `: LongVarBinary, + } + + for sql, dataType := range testData { + actual, err := p.testMysqlSyntax("test.sql", accept, sql) + assert.Nil(t, err) + assertTypeEqual(t, dataType, actual) + } + }) +} + +func assertTypeEqual(t *testing.T, expected int, actual interface{}, unsigned ...bool) { + assert.Equal(t, expected, actual.(DataType).Type()) + if len(unsigned) > 0 { + assert.Equal(t, unsigned[0], actual.(DataType).Unsigned()) + } +} + +func assertEnumTypeEqual(t *testing.T, expectedType int, values []string, actual interface{}) { + assert.Equal(t, expectedType, actual.(DataType).Type()) + assert.Equal(t, values, actual.(DataType).Value()) +} diff --git a/toolkit/dbvendor/mysql/parser/parser/datatype_visitor.go b/toolkit/dbvendor/mysql/parser/parser/datatype_visitor.go new file mode 100644 index 00000000..d15be3d1 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/datatype_visitor.go @@ -0,0 +1,421 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" +) + +const ( + _ int = iota + LongVarBinary + LongVarChar + GeometryCollection + GeomCollection + LineString + MultiLineString + MultiPoint + MultiPolygon + Point + Polygon + Json + Geometry + Enum + Set + Bit + Time + Timestamp + DateTime + Binary + VarBinary + Blob + Year + Decimal + Dec + Fixed + Numeric + Float + Float4 + Float8 + Double + Real + TinyInt + SmallInt + MediumInt + Int + Integer + BigInt + MiddleInt + Int1 + Int2 + Int3 + Int4 + Int8 + Date + TinyBlob + MediumBlob + LongBlob + Bool + Boolean + Serial + NVarChar + NChar + Char + Character + VarChar + TinyText + Text + MediumText + LongText +) + +// DataType describes the data type and value of the column in table +type DataType interface { + Type() int + Unsigned() bool + // Value returns the values if the data type is Enum or Set + Value() []string + String() string +} + +var _ DataType = (*NormalDataType)(nil) +var _ DataType = (*EnumSetDataType)(nil) + +// NormalDataType describes the data type which not contains Enum and Set of column +type NormalDataType struct { + tp int + unsigned bool + text string +} + +func (n *NormalDataType) String() string { + return n.text +} + +// Unsigned returns true if the data type is unsigned. +func (n *NormalDataType) Unsigned() bool { + return n.unsigned +} + +// Type returns the data type of column +func (n *NormalDataType) Type() int { + return n.tp +} + +// Value returns nil default +func (n *NormalDataType) Value() []string { + return nil +} + +func with(tp int, unsigned bool, text string, value ...string) DataType { + if len(value) > 0 { + return &EnumSetDataType{ + tp: tp, + value: value, + } + } + return &NormalDataType{tp: tp, unsigned: unsigned, text: text} +} + +// EnumSetDataType describes the data type Enum and Set of column +type EnumSetDataType struct { + tp int + value []string + text string +} + +func (e *EnumSetDataType) String() string { + return e.text +} + +// Type returns the data type of column +func (e *EnumSetDataType) Type() int { + return e.tp +} + +// Unsigned returns true if the data type is unsigned. +func (e *EnumSetDataType) Unsigned() bool { + return false +} + +// Value returns the value of data type Enum and Set +func (e *EnumSetDataType) Value() []string { + return e.value +} + +// visitDataType visits data type by switch-case +func (v *visitor) visitDataType(ctx gen.IDataTypeContext) DataType { + v.trace("VisitDataType") + switch t := ctx.(type) { + case *gen.StringDataTypeContext: + return v.visitStringDataType(t) + case *gen.NationalStringDataTypeContext: + return v.visitNationalStringDataType(t) + case *gen.NationalVaryingStringDataTypeContext: + return v.visitNationalVaryingStringDataType(t) + case *gen.DimensionDataTypeContext: + return v.visitDimensionDataType(t) + case *gen.SimpleDataTypeContext: + return v.visitSimpleDataType(t) + case *gen.CollectionDataTypeContext: + return v.visitCollectionDataType(t) + case *gen.SpatialDataTypeContext: + return v.visitSpatialDataType(t) + case *gen.LongVarcharDataTypeContext: + return v.visitLongVarcharDataType(t) + case *gen.LongVarbinaryDataTypeContext: + return v.visitLongVarbinaryDataType(t) + } + + v.panicWithExpr(ctx.GetStart(), "invalid data type: "+ctx.GetText()) + return nil +} + +// visitStringDataType visits a parse tree produced by MySqlParser#stringDataType. +func (v *visitor) visitStringDataType(ctx *gen.StringDataTypeContext) DataType { + v.trace(`VisitStringDataType`) + text := parseToken(ctx.GetTypeName(), withUpperCase(), withTrim("`")) + switch text { + case `CHAR`: + return with(Char, false, text) + case `CHARACTER`: + return with(Character, false, text) + case `VARCHAR`: + return with(VarChar, false, text) + case `TINYTEXT`: + return with(TinyText, false, text) + case `TEXT`: + return with(Text, false, text) + case `MEDIUMTEXT`: + return with(MediumText, false, text) + case `LONGTEXT`: + return with(LongText, false, text) + case `NCHAR`: + return with(NChar, false, text) + case `NVARCHAR`: + return with(NVarChar, false, text) + case `LONG`: + return with(LongVarChar, false, text) + } + + v.panicWithExpr(ctx.GetTypeName(), "invalid data type: "+text) + return nil +} + +// visitNationalStringDataType visits a parse tree produced by MySqlParser#nationalVaryingStringDataType. +func (v *visitor) visitNationalStringDataType(ctx *gen.NationalStringDataTypeContext) DataType { + v.trace(`VisitNationalStringDataType`) + text := parseToken(ctx.GetTypeName(), withUpperCase(), withTrim("`")) + switch text { + case `VARCHAR`: + return with(NVarChar, false, text) + case `CHARACTER`: + return with(NChar, false, text) + } + + v.panicWithExpr(ctx.GetTypeName(), "invalid data type: "+text) + return nil +} + +// visitNationalVaryingStringDataType visits a parse tree produced by MySqlParser#nationalVaryingStringDataType. +func (v *visitor) visitNationalVaryingStringDataType(_ *gen.NationalVaryingStringDataTypeContext) DataType { + v.trace("VisitNationalVaryingStringDataType") + return with(NVarChar, false, "") +} + +// visitDimensionDataType visits a parse tree produced by MySqlParser#dimensionDataType. +func (v *visitor) visitDimensionDataType(ctx *gen.DimensionDataTypeContext) DataType { + v.trace("VisitDimensionDataType") + text := parseToken(ctx.GetTypeName(), withUpperCase(), withTrim("`")) + unsigned := ctx.UNSIGNED() != nil + switch text { + case `BIT`: + return with(Bit, unsigned, text) + case `TIME`: + return with(Time, unsigned, text) + case `TIMESTAMP`: + return with(Timestamp, unsigned, text) + case `DATETIME`: + return with(DateTime, unsigned, text) + case `BINARY`: + return with(Binary, unsigned, text) + case `VARBINARY`: + return with(VarBinary, unsigned, text) + case `BLOB`: + return with(Blob, unsigned, text) + case `YEAR`: + return with(Year, unsigned, text) + case `DECIMAL`: + return with(Decimal, unsigned, text) + case `DEC`: + return with(Dec, unsigned, text) + case `FIXED`: + return with(Fixed, unsigned, text) + case `NUMERIC`: + return with(Numeric, unsigned, text) + case `FLOAT`: + return with(Float, unsigned, text) + case `FLOAT4`: + return with(Float4, unsigned, text) + case `FLOAT8`: + return with(Float8, unsigned, text) + case `DOUBLE`: + return with(Double, unsigned, text) + case `REAL`: + return with(Real, unsigned, text) + case `TINYINT`: + return with(TinyInt, unsigned, text) + case `SMALLINT`: + return with(SmallInt, unsigned, text) + case `MEDIUMINT`: + return with(MediumInt, unsigned, text) + case `INT`: + return with(Int, unsigned, text) + case `INTEGER`: + return with(Integer, unsigned, text) + case `BIGINT`: + return with(BigInt, unsigned, text) + case `MIDDLEINT`: + return with(MiddleInt, unsigned, text) + case `INT1`: + return with(Int1, unsigned, text) + case `INT2`: + return with(Int2, unsigned, text) + case `INT3`: + return with(Int3, unsigned, text) + case `INT4`: + return with(Int4, unsigned, text) + case `INT8`: + return with(Int8, unsigned, text) + } + + v.panicWithExpr(ctx.GetTypeName(), "invalid data type: "+text) + return nil +} + +// visitSimpleDataType visits a parse tree produced by MySqlParser#simpleDataType. +func (v *visitor) visitSimpleDataType(ctx *gen.SimpleDataTypeContext) DataType { + v.trace("VisitSimpleDataType") + text := parseToken( + ctx.GetTypeName(), + withUpperCase(), + withTrim("`"), + ) + + switch text { + case `DATE`: + return with(Date, false, text) + case `TINYBLOB`: + return with(TinyBlob, false, text) + case `MEDIUMBLOB`: + return with(MediumBlob, false, text) + case `LONGBLOB`: + return with(LongBlob, false, text) + case `BOOL`: + return with(Bool, false, text) + case `BOOLEAN`: + return with(Boolean, false, text) + case `SERIAL`: + return with(Serial, false, text) + } + + v.panicWithExpr(ctx.GetTypeName(), "invalid data type: "+text) + return nil +} + +// visitCollectionDataType visits a parse tree produced by MySqlParser#collectionDataType. +func (v *visitor) visitCollectionDataType(ctx *gen.CollectionDataTypeContext) DataType { + v.trace("VisitCollectionDataType") + text := parseToken( + ctx.GetTypeName(), + withUpperCase(), + withTrim("`"), + ) + + var values []string + if ctx.CollectionOptions() != nil { + optionsCtx, ok := ctx.CollectionOptions().(*gen.CollectionOptionsContext) + if ok { + for _, e := range optionsCtx.AllSTRING_LITERAL() { + value := parseTerminalNode( + e, withTrim("`"), + withTrim(`"`), + withTrim(`'`), + ) + values = append(values, value) + } + } + } + + switch text { + case `ENUM`: + return with(Enum, false, text, values...) + case `SET`: + return with(Set, false, text, values...) + } + + v.panicWithExpr(ctx.GetTypeName(), "invalid data type: "+text) + return nil +} + +// visitSpatialDataType visits a parse tree produced by MySqlParser#spatialDataType. +func (v *visitor) visitSpatialDataType(ctx *gen.SpatialDataTypeContext) DataType { + v.trace("VisitSpatialDataType") + text := parseToken( + ctx.GetTypeName(), + withUpperCase(), + withTrim("`"), + ) + + switch text { + case `GEOMETRYCOLLECTION`: + return with(GeometryCollection, false, text) + case `GEOMCOLLECTION`: + return with(GeomCollection, false, text) + case `LINESTRING`: + return with(LineString, false, text) + case `MULTILINESTRING`: + return with(MultiLineString, false, text) + case `MULTIPOINT`: + return with(MultiPoint, false, text) + case `MULTIPOLYGON`: + return with(MultiPolygon, false, text) + case `POINT`: + return with(Point, false, text) + case `POLYGON`: + return with(Polygon, false, text) + case `JSON`: + return with(Json, false, text) + case `GEOMETRY`: + return with(Geometry, false, text) + } + + v.panicWithExpr(ctx.GetTypeName(), "invalid data type: "+text) + return nil +} + +// visitLongVarcharDataType visits a parse tree produced by MySqlParser#longVarcharDataType. +func (v *visitor) visitLongVarcharDataType(_ *gen.LongVarcharDataTypeContext) DataType { + v.trace("VisitLongVarcharDataType") + return with(LongVarChar, false, "") +} + +// visitLongVarbinaryDataType visits a parse tree produced by MySqlParser#longVarbinaryDataType. +func (v *visitor) visitLongVarbinaryDataType(_ *gen.LongVarbinaryDataTypeContext) DataType { + v.trace("VisitLongVarbinaryDataType") + return with(LongVarBinary, false, "") +} diff --git a/toolkit/dbvendor/mysql/parser/parser/parser.go b/toolkit/dbvendor/mysql/parser/parser/parser.go new file mode 100644 index 00000000..5e29a9d7 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/parser.go @@ -0,0 +1,210 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "fmt" + "github.com/pkg/errors" + "github.com/unionj-cloud/go-doudou/v2/toolkit/stringutils" + "io/ioutil" + "path/filepath" + + "github.com/antlr/antlr4/runtime/Go/antlr" + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/console" + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" +) + +var ( + empty []*Table +) + +// Parser is the syntax entry to parse sql as AST, you can use NewParser to create +// an instance with options, WithDebugMode option can parse sql with debug, WithLogger +// option can print logs while parsing. +type Parser struct { + antlr.DefaultErrorListener + debug bool + logger console.Console + prefix string +} + +// Option is the alias of function. +type Option func(p *Parser) + +// Acceptor is the alias of function +type Acceptor func(p *gen.MySqlParser, visitor *visitor) interface{} + +// NewParser creates an instance of Parser. +func NewParser(options ...Option) *Parser { + p := &Parser{} + for _, opt := range options { + opt(p) + } + + if p.logger == nil { + p.logger = console.NewColorConsole() + } + + return p +} + +// SyntaxError overrides SyntaxError from antlr.DefaultErrorListener, which could catch error from this function, and panic, +// the parser would catch the panic by testMysqlSyntax and returns. +func (p *Parser) SyntaxError(_ antlr.Recognizer, _ interface{}, line, column int, msg string, _ antlr.RecognitionException) { + str := fmt.Sprintf(`%s line %d:%d %s`, p.prefix, line, column, msg) + if p.debug { + p.logger.Error(str) + } + + panic(str) +} + +// WithDebugMode is a Parser option to set debug mode. +func WithDebugMode(debug bool) Option { + return func(p *Parser) { + p.debug = debug + } +} + +// WithConsole is a Parser option to set console. +func WithConsole(logger console.Console) Option { + return func(p *Parser) { + p.logger = logger + } +} + +func (p *Parser) From(filename string) (ret []*Table, err error) { + if !filepath.IsAbs(filename) { + return nil, fmt.Errorf("%s is not a valid path", filename) + } + + defer func() { + p := recover() + if p != nil { + switch e := p.(type) { + case error: + err = e + default: + err = fmt.Errorf("%+v", p) + } + } + }() + + bytes, err := ioutil.ReadFile(filename) + if err != nil { + return nil, err + } + + prefix := filepath.Base(filename) + p.prefix = prefix + inputStream := antlr.NewInputStream(string(bytes)) + caseChangingStream := newCaseChangingStream(inputStream, true) + lexer := gen.NewMySqlLexer(caseChangingStream) + lexer.RemoveErrorListeners() + tokens := antlr.NewCommonTokenStream(lexer, antlr.LexerDefaultTokenChannel) + mysqlParser := gen.NewMySqlParser(tokens) + mysqlParser.RemoveErrorListeners() + mysqlParser.AddErrorListener(p) + + visitor := &visitor{ + prefix: prefix, + debug: p.debug, + logger: p.logger, + } + v := mysqlParser.Root().Accept(visitor) + if v == nil { + return empty, nil + } + + createTables, ok := v.([]*CreateTable) + if !ok { + return empty, nil + } + + for _, e := range createTables { + ret = append(ret, e.Convert()) + } + + return +} + +// testMysqlSyntax tests the mysql syntax with unit test. +func (p *Parser) testMysqlSyntax(prefix string, acceptor Acceptor, sql string) (v interface{}, err error) { + defer func() { + p := recover() + if p != nil { + switch e := p.(type) { + case error: + err = e + default: + err = fmt.Errorf("%+v", p) + } + } + }() + + p.prefix = prefix + inputStream := antlr.NewInputStream(sql) + caseChangingStream := newCaseChangingStream(inputStream, true) + lexer := gen.NewMySqlLexer(caseChangingStream) + lexer.RemoveErrorListeners() + tokens := antlr.NewCommonTokenStream(lexer, antlr.LexerDefaultTokenChannel) + mysqlParser := gen.NewMySqlParser(tokens) + mysqlParser.RemoveErrorListeners() + mysqlParser.AddErrorListener(p) + + visitor := &visitor{ + prefix: prefix, + debug: p.debug, + logger: p.logger, + } + v = acceptor(mysqlParser, visitor) + return +} + +func (p *Parser) ParseDDL(sql string) (ret interface{}, err error) { + if stringutils.IsEmpty(sql) { + return nil, errors.New("Parameter sql should not be empty") + } + + defer func() { + p := recover() + if p != nil { + switch e := p.(type) { + case error: + err = e + default: + err = fmt.Errorf("%+v", p) + } + } + }() + + inputStream := antlr.NewInputStream(sql) + caseChangingStream := newCaseChangingStream(inputStream, true) + lexer := gen.NewMySqlLexer(caseChangingStream) + lexer.RemoveErrorListeners() + tokens := antlr.NewCommonTokenStream(lexer, antlr.LexerDefaultTokenChannel) + mysqlParser := gen.NewMySqlParser(tokens) + mysqlParser.RemoveErrorListeners() + mysqlParser.AddErrorListener(p) + + visitor := &visitor{ + debug: p.debug, + logger: p.logger, + } + ret = mysqlParser.Root().Accept(visitor) + return ret, nil +} diff --git a/toolkit/dbvendor/mysql/parser/parser/sqlstatement_test.go b/toolkit/dbvendor/mysql/parser/parser/sqlstatement_test.go new file mode 100644 index 00000000..765180bc --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/sqlstatement_test.go @@ -0,0 +1,115 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" +) + +func TestVisitor_VisitSqlStatements(t *testing.T) { + p := NewParser(WithDebugMode(true)) + accept := func(p *gen.MySqlParser, visitor *visitor) interface{} { + root := p.Root() + return root.Accept(visitor) + } + + t.Run("modifyColumn", func(t *testing.T) { + ret, err := p.testMysqlSyntax("test.sql", accept, `alter table my_test_table + + MODIFY REVIEW_COMMENTS TEXT(4000) null default '123' comment '审核意见' + , + MODIFY CREATE_USER VARCHAR(255) not null comment '创建人'`) + assert.Nil(t, err) + assert.NotNil(t, ret) + }) + + t.Run("addColumn", func(t *testing.T) { + _, err := p.testMysqlSyntax("test.sql", accept, `alter table my_test_table + + ADD CUSTOM_FIELD6 VARCHAR(255) null default null comment 'custom_field6' + , + ADD CUSTOM_FIELD5 VARCHAR(255) null default 'bbc' comment 'custom_field5'`) + assert.Nil(t, err) + }) + + t.Run("empty", func(t *testing.T) { + _, err := p.testMysqlSyntax("test.sql", accept, ``) + assert.Nil(t, err) + }) + + t.Run("createDatabase", func(t *testing.T) { + ret, err := p.testMysqlSyntax("test.sql", accept, "create database user") + assert.Nil(t, err) + assert.Equal(t, []*CreateTable(nil), ret) + }) + + t.Run("createSingleTable", func(t *testing.T) { + ret, err := p.testMysqlSyntax("test.sql", accept, ` + create table if not exists user( + id bigint(11) primary key not null default 0 comment '主键ID' + ) + `) + tables, ok := ret.([]*CreateTable) + assert.True(t, ok) + assert.Nil(t, err) + assert.Equal(t, 1, len(tables)) + assertCreateTableEqual(t, &CreateTable{ + Name: "user", + Columns: []*ColumnDeclaration{ + { + Name: "id", + ColumnDefinition: &ColumnDefinition{ + DataType: &NormalDataType{tp: BigInt}, + ColumnConstraint: &ColumnConstraint{ + NotNull: true, + HasDefaultValue: true, + AutoIncrement: false, + Primary: true, + Comment: "主键ID", + }, + }, + }, + }, + }, tables[0]) + }) + + t.Run("ddlWithOtherSql", func(t *testing.T) { + ret, err := p.testMysqlSyntax("test.sql", accept, ` + -- ddl create table + create table if not exists user( + id bigint(11) primary key not null comment 'id' + ) + -- ddl create database + create database foo; + -- dml select + select * from bar; + -- dml update + update foo set bar = 'test'; + -- dml insert + insert into foo ('id','name') values ('1','bar'); + `) + assert.Nil(t, err) + assert.NotNil(t, ret) + tables, ok := ret.([]*CreateTable) + assert.True(t, ok) + assert.Equal(t, 1, len(tables)) + assert.Equal(t, "user", tables[0].Name) + }) +} diff --git a/toolkit/dbvendor/mysql/parser/parser/sqlstatement_visitor.go b/toolkit/dbvendor/mysql/parser/parser/sqlstatement_visitor.go new file mode 100644 index 00000000..cf5bdbbc --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/sqlstatement_visitor.go @@ -0,0 +1,68 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" + +// VisitRoot visits a parse tree produced by MySqlParser#root. +func (v *visitor) VisitRoot(ctx *gen.RootContext) interface{} { + v.trace("VisitRoot") + if ctx.SqlStatements() != nil { + return ctx.SqlStatements().Accept(v) + } + + return nil +} + +// VisitSqlStatements visits a parse tree produced by MySqlParser#sqlStatements. +func (v *visitor) VisitSqlStatements(ctx *gen.SqlStatementsContext) interface{} { + v.trace("VisitSqlStatements") + var tables []interface{} + for _, e := range ctx.AllSqlStatement() { + table := e.Accept(v) + if table == nil { + continue + } + + tables = append(tables, table) + } + + return tables +} + +// VisitSqlStatement visits a parse tree produced by MySqlParser#sqlStatement. +func (v *visitor) VisitSqlStatement(ctx *gen.SqlStatementContext) interface{} { + v.trace("VisitSqlStatement") + if ctx.DdlStatement() != nil { + return ctx.DdlStatement().Accept(v) + } + + return nil +} + +// VisitDdlStatement visits a parse tree produced by MySqlParser#ddlStatement. +func (v *visitor) VisitDdlStatement(ctx *gen.DdlStatementContext) interface{} { + v.trace("VisitDdlStatement") + if ctx.CreateTable() != nil { + return v.visitCreateTable(ctx.CreateTable()) + } + if ctx.AlterTable() != nil { + return ctx.AlterTable().Accept(v) + } + + return nil +} diff --git a/toolkit/dbvendor/mysql/parser/parser/tableconstraint_test.go b/toolkit/dbvendor/mysql/parser/parser/tableconstraint_test.go new file mode 100644 index 00000000..7aebd159 --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/tableconstraint_test.go @@ -0,0 +1,74 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "sort" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" +) + +func TestVisitor_VisitTableConstraint(t *testing.T) { + p := NewParser(WithDebugMode(true)) + accept := func(p *gen.MySqlParser, visitor *visitor) interface{} { + ctx := p.TableConstraint() + return visitor.visitTableConstraint(ctx) + } + + t.Run("uniqueKeyTableConstraint", func(t *testing.T) { + v, err := p.testMysqlSyntax("test.sql", accept, "UNIQUE INDEX `data_UNIQUE` (`data` ASC)") + assert.Nil(t, err) + tc, ok := v.(*TableConstraint) + assert.True(t, ok) + assertEqualStringSlice(t, []string{"data"}, tc.ColumnUniqueKey) + + v, err = p.testMysqlSyntax("test.sql", accept, "UNIQUE INDEX `data_UNIQUE` (`data` ASC) INVISIBLE VISIBLE") + assert.Nil(t, err) + tc, ok = v.(*TableConstraint) + assert.True(t, ok) + assertEqualStringSlice(t, []string{"data"}, tc.ColumnUniqueKey) + + v, err = p.testMysqlSyntax("test.sql", accept, "UNIQUE INDEX `data_UNIQUE` (`data` ASC) INVISIBLE VISIBLE") + assert.Nil(t, err) + tc, ok = v.(*TableConstraint) + assert.True(t, ok) + assertEqualStringSlice(t, []string{"data"}, tc.ColumnUniqueKey) + + v, err = p.testMysqlSyntax("test.sql", accept, "UNIQUE INDEX `data_UNIQUE` (`column1` ASC, `column2`) INVISIBLE VISIBLE") + assert.Nil(t, err) + tc, ok = v.(*TableConstraint) + assert.True(t, ok) + assertEqualStringSlice(t, []string{"column1", "column2"}, tc.ColumnUniqueKey) + }) + + t.Run("primaryKeyTableConstraint", func(t *testing.T) { + v, err := p.testMysqlSyntax("test.sql", accept, "PRIMARY KEY (`description_id`)") + assert.Nil(t, err) + tc, ok := v.(*TableConstraint) + assert.True(t, ok) + assertEqualStringSlice(t, []string{"description_id"}, tc.ColumnPrimaryKey) + }) + +} + +func assertEqualStringSlice(t *testing.T, expected, actual []string) { + sort.Strings(expected) + sort.Strings(actual) + assert.Equal(t, expected, actual) +} diff --git a/toolkit/dbvendor/mysql/parser/parser/tableconstraint_visitor.go b/toolkit/dbvendor/mysql/parser/parser/tableconstraint_visitor.go new file mode 100644 index 00000000..6cb505bb --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/tableconstraint_visitor.go @@ -0,0 +1,98 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "strings" + + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" +) + +type TableConstraint struct { + // ColumnPrimaryKey describes the name of columns + ColumnPrimaryKey []string + // ColumnUniqueKey describes the name of columns + ColumnUniqueKey []string +} + +// visitTableConstraint visits a parse tree produced by MySqlParser#tableConstraint. +func (v *visitor) visitTableConstraint(ctx gen.ITableConstraintContext) *TableConstraint { + v.trace("VisitTableConstraint") + var ret TableConstraint + switch tx := ctx.(type) { + case *gen.PrimaryKeyTableConstraintContext: + if tx.IndexColumnNames() != nil { + indexColumnNamesCtx, ok := tx.IndexColumnNames().(*gen.IndexColumnNamesContext) + if ok { + ret.ColumnPrimaryKey = v.visitIndexColumnNames(indexColumnNamesCtx) + } + } + case *gen.UniqueKeyTableConstraintContext: + if tx.IndexColumnNames() != nil { + indexColumnNamesCtx, ok := tx.IndexColumnNames().(*gen.IndexColumnNamesContext) + if ok { + ret.ColumnUniqueKey = v.visitIndexColumnNames(indexColumnNamesCtx) + } + } + case *gen.ForeignKeyTableConstraintContext: + v.panicWithExpr(tx.GetStart(), "Unsupported foreign key constraint") + } + + return &ret +} + +// visitIndexColumnNames visits a parse tree produced by MySqlParser#indexColumnNames. +func (v *visitor) visitIndexColumnNames(ctx *gen.IndexColumnNamesContext) []string { + v.trace("VisitIndexColumnNames") + var columns []string + for _, e := range ctx.AllIndexColumnName() { + indexCtx, ok := e.(*gen.IndexColumnNameContext) + if !ok { + continue + } + + columns = append(columns, v.visitIndexColumnName(indexCtx)) + } + + return columns +} + +// visitIndexColumnName visits a parse tree produced by MySqlParser#indexColumnName. +func (v *visitor) visitIndexColumnName(ctx *gen.IndexColumnNameContext) string { + v.trace("VisitIndexColumnName") + var column string + if ctx.Uid() != nil { + column = v.visitUid(ctx.Uid()) + } else { + column = parseTerminalNode( + ctx.STRING_LITERAL(), + withTrim("`"), + withTrim("'"), + withReplacer("\r", "", "\n", ""), + ) + } + + return column +} + +func (v *visitor) visitUid(ctx gen.IUidContext) string { + str := ctx.GetText() + str = strings.Trim(str, "`") + str = strings.Trim(str, "'") + str = strings.NewReplacer("\r", "", "\n", "").Replace(str) + return str +} diff --git a/toolkit/dbvendor/mysql/parser/parser/token.go b/toolkit/dbvendor/mysql/parser/parser/token.go new file mode 100644 index 00000000..8e6bb2ed --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/token.go @@ -0,0 +1,67 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "strings" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +// Token is an abstraction from each lexical element, literal, etc. +type Token interface { + GetLine() int + GetColumn() int + GetText() string + SetText(s string) +} + +type parseOption func(text string) string + +func parseToken(t antlr.Token, option ...parseOption) string { + text := t.GetText() + for _, o := range option { + text = o(text) + } + return text +} + +func parseTerminalNode(t antlr.TerminalNode, option ...parseOption) string { + text := t.GetText() + for _, o := range option { + text = o(text) + } + return text +} + +func withTrim(c string) parseOption { + return func(text string) string { + return strings.Trim(text, c) + } +} + +func withUpperCase() parseOption { + return func(text string) string { + return strings.ToUpper(text) + } +} + +func withReplacer(oldnew ...string) parseOption { + return func(text string) string { + return strings.NewReplacer(oldnew...).Replace(text) + } +} diff --git a/toolkit/dbvendor/mysql/parser/parser/visitor.go b/toolkit/dbvendor/mysql/parser/parser/visitor.go new file mode 100644 index 00000000..8684c78d --- /dev/null +++ b/toolkit/dbvendor/mysql/parser/parser/visitor.go @@ -0,0 +1,56 @@ +/* + * MIT License + * + * Copyright (c) 2021 zeromicro + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + */ + +package parser + +import ( + "fmt" + + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/console" + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor/mysql/parser/gen" +) + +type visitor struct { + gen.BaseMySqlParserVisitor + prefix string + debug bool + logger console.Console +} + +func (v *visitor) trace(msg ...interface{}) { + if v.debug { + v.logger.Debug("Visit Trace: " + fmt.Sprint(msg...)) + } +} + +func (v *visitor) panicWithExpr(expr Token, msg string) { + if len(v.prefix) == 0 { + err := fmt.Errorf("%v:%v %s", expr.GetLine(), expr.GetColumn(), msg) + if v.debug { + v.logger.Error(err) + } + + panic(err) + return + } + + err := fmt.Errorf("%v line %v:%v %s", v.prefix, expr.GetLine(), expr.GetColumn(), msg) + if v.debug { + v.logger.Error(err) + } + + panic(err) +} diff --git a/toolkit/dbvendor/mysql/template.go b/toolkit/dbvendor/mysql/template.go new file mode 100644 index 00000000..d7343dfa --- /dev/null +++ b/toolkit/dbvendor/mysql/template.go @@ -0,0 +1,58 @@ +package mysql + +var ( + createTable = `CREATE TABLE ` + "`" + `{{.Name}}` + "`" + ` ( +{{- range $co := .Columns }} +` + "`" + `{{$co.Name}}` + "`" + ` {{$co.Type}} {{if $co.Nullable}}NULL{{else}}NOT NULL{{end}}{{if $co.Autoincrement}} AUTO_INCREMENT{{end}}{{if $co.Default}} DEFAULT {{$co.Default}}{{end}}{{if $co.Extra}} {{$co.Extra}}{{end}}, +{{- end }} +PRIMARY KEY (` + "`" + `{{.Pk}}` + "`" + `))` + + dropTable = `DROP TABLE ` + "`" + `{{.Name}}` + "`;" + + alterTable = `{{define "change"}} +ALTER TABLE ` + "`" + `{{.Table}}` + "`" + ` +CHANGE COLUMN ` + "`" + `{{if .OldName}}{{.OldName}}{{else}}{{.Name}}{{end}}` + "`" + ` ` + "`" + `{{.Name}}` + "`" + ` {{.Type}} {{if .Nullable}}NULL{{else}}NOT NULL{{end}}{{if .Autoincrement}} AUTO_INCREMENT{{end}}{{if .Default}} DEFAULT {{.Default}}{{end}}{{if .Extra}} {{.Extra}}{{end}}; +{{end}} + +{{define "add"}} +ALTER TABLE ` + "`" + `{{.Table}}` + "`" + ` +ADD COLUMN ` + "`" + `{{.Name}}` + "`" + ` {{.Type}} {{if .Nullable}}NULL{{else}}NOT NULL{{end}}{{if .Autoincrement}} AUTO_INCREMENT{{end}}{{if .Default}} DEFAULT {{.Default}}{{end}}{{if .Extra}} {{.Extra}}{{end}}; +{{end}} + +{{define "drop"}} +ALTER TABLE ` + "`" + `{{.Table}}` + "`" + ` +DROP COLUMN ` + "`" + `{{.Name}}` + "`" + `; +{{end}} +` + + insertInto = `INSERT INTO ` + "`" + `{{.Schema}}` + "`" + `.` + "`" + `{{.TableName}}` + "`" + ` +({{- range $i, $co := .InsertColumns}} +{{- if $i}},{{end}} +` + "`" + `{{$co.Name}}` + "`" + ` +{{- end }}) +VALUES ({{- range $i, $co := .InsertColumns}} + {{- if $i}},{{end}} + ? + {{- end }}); +` + + updateTable = `UPDATE ` + "`" + `{{.Schema}}` + "`" + `.` + "`" + `{{.TableName}}` + "`" + ` +SET + {{- range $i, $co := .UpdateColumns}} + {{- if $i}},{{end}} + ` + "`" + `{{$co.Name}}` + "`" + `=? + {{- end }} +WHERE + ` + "`" + `{{.Pk.Name}}` + "`" + ` =?; +` + + deleteFrom = `DELETE FROM ` + "`" + `{{.Schema}}` + "`" + `.` + "`" + `{{.TableName}}` + "`" + ` +WHERE + ` + "`" + `{{.Pk.Name}}` + "`" + ` =?; +` + + selectFromById = `SELECT * FROM ` + "`" + `{{.Schema}}` + "`" + `.` + "`" + `{{.TableName}}` + "`" + ` +WHERE + ` + "`" + `{{.Pk.Name}}` + "`" + ` =?; +` +) diff --git a/toolkit/dbvendor/placeholder.go b/toolkit/dbvendor/placeholder.go new file mode 100644 index 00000000..208e04dd --- /dev/null +++ b/toolkit/dbvendor/placeholder.go @@ -0,0 +1,114 @@ +package dbvendor + +import ( + "bytes" + "fmt" + "strings" +) + +// PlaceholderFormat is the interface that wraps the ReplacePlaceholders method. +// +// ReplacePlaceholders takes a SQL statement and replaces each question mark +// placeholder with a (possibly different) SQL placeholder. +type PlaceholderFormat interface { + ReplacePlaceholders(sql string) (string, error) +} + +type placeholderDebugger interface { + debugPlaceholder() string +} + +var ( + // Question is a PlaceholderFormat instance that leaves placeholders as + // question marks. + Question = questionFormat{} + + // Dollar is a PlaceholderFormat instance that replaces placeholders with + // dollar-prefixed positional placeholders (e.g. $1, $2, $3). + Dollar = dollarFormat{} + + // Colon is a PlaceholderFormat instance that replaces placeholders with + // colon-prefixed positional placeholders (e.g. :1, :2, :3). + Colon = colonFormat{} + + // AtP is a PlaceholderFormat instance that replaces placeholders with + // "@p"-prefixed positional placeholders (e.g. @p1, @p2, @p3). + AtP = atpFormat{} +) + +type questionFormat struct{} + +func (questionFormat) ReplacePlaceholders(sql string) (string, error) { + return sql, nil +} + +func (questionFormat) debugPlaceholder() string { + return "?" +} + +type dollarFormat struct{} + +func (dollarFormat) ReplacePlaceholders(sql string) (string, error) { + return replacePositionalPlaceholders(sql, "$") +} + +func (dollarFormat) debugPlaceholder() string { + return "$" +} + +type colonFormat struct{} + +func (colonFormat) ReplacePlaceholders(sql string) (string, error) { + return replacePositionalPlaceholders(sql, ":") +} + +func (colonFormat) debugPlaceholder() string { + return ":" +} + +type atpFormat struct{} + +func (atpFormat) ReplacePlaceholders(sql string) (string, error) { + return replacePositionalPlaceholders(sql, "@p") +} + +func (atpFormat) debugPlaceholder() string { + return "@p" +} + +// Placeholders returns a string with count ? placeholders joined with commas. +func Placeholders(count int) string { + if count < 1 { + return "" + } + + return strings.Repeat(",?", count)[1:] +} + +func replacePositionalPlaceholders(sql, prefix string) (string, error) { + buf := &bytes.Buffer{} + i := 0 + for { + p := strings.Index(sql, "?") + if p == -1 { + break + } + + if len(sql[p:]) > 1 && sql[p:p+2] == "??" { // escape ?? => ? + buf.WriteString(sql[:p]) + buf.WriteString("?") + if len(sql[p:]) == 1 { + break + } + sql = sql[p+2:] + } else { + i++ + buf.WriteString(sql[:p]) + fmt.Fprintf(buf, "%s%d", prefix, i) + sql = sql[p+1:] + } + } + + buf.WriteString(sql) + return buf.String(), nil +} diff --git a/toolkit/dbvendor/placeholder_test.go b/toolkit/dbvendor/placeholder_test.go new file mode 100644 index 00000000..2a717018 --- /dev/null +++ b/toolkit/dbvendor/placeholder_test.go @@ -0,0 +1,67 @@ +package dbvendor + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestQuestion(t *testing.T) { + sql := "x = ? AND y = ?" + s, _ := Question.ReplacePlaceholders(sql) + assert.Equal(t, sql, s) +} + +func TestDollar(t *testing.T) { + sql := "x = ? AND y = ?" + s, _ := Dollar.ReplacePlaceholders(sql) + assert.Equal(t, "x = $1 AND y = $2", s) +} + +func TestColon(t *testing.T) { + sql := "x = ? AND y = ?" + s, _ := Colon.ReplacePlaceholders(sql) + assert.Equal(t, "x = :1 AND y = :2", s) +} + +func TestAtp(t *testing.T) { + sql := "x = ? AND y = ?" + s, _ := AtP.ReplacePlaceholders(sql) + assert.Equal(t, "x = @p1 AND y = @p2", s) +} + +func TestPlaceholders(t *testing.T) { + assert.Equal(t, Placeholders(2), "?,?") +} + +func TestEscapeDollar(t *testing.T) { + sql := "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ??| array['?'] AND enabled = ?" + s, _ := Dollar.ReplacePlaceholders(sql) + assert.Equal(t, "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ?| array['$1'] AND enabled = $2", s) +} + +func TestEscapeColon(t *testing.T) { + sql := "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ??| array['?'] AND enabled = ?" + s, _ := Colon.ReplacePlaceholders(sql) + assert.Equal(t, "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ?| array[':1'] AND enabled = :2", s) +} + +func TestEscapeAtp(t *testing.T) { + sql := "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ??| array['?'] AND enabled = ?" + s, _ := AtP.ReplacePlaceholders(sql) + assert.Equal(t, "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ?| array['@p1'] AND enabled = @p2", s) +} + +func BenchmarkPlaceholdersArray(b *testing.B) { + var count = b.N + placeholders := make([]string, count) + for i := 0; i < count; i++ { + placeholders[i] = "?" + } + var _ = strings.Join(placeholders, ",") +} + +func BenchmarkPlaceholdersStrings(b *testing.B) { + Placeholders(b.N) +} diff --git a/toolkit/dbvendor/postgres/columnenum.go b/toolkit/dbvendor/postgres/columnenum.go new file mode 100644 index 00000000..377da7a8 --- /dev/null +++ b/toolkit/dbvendor/postgres/columnenum.go @@ -0,0 +1,28 @@ +package postgres + +const ( + BitType = "VARBIT(255)" + TextType = "TEXT" + BlobType = "BYTEA" + DateType = "DATE" + DatetimeType = "TIMESTAMP" + DatetimeTZType = "TIMESTAMPTZ" + DecimalType = "DECIMAL" + DoubleType = "FLOAT8" + FloatType = "FLOAT4" + GeometryType = "POINT" + MediumintType = "INTEGER" + JSONType = "JSON" + IntType = "INTEGER" + SerialType = "SERIAL" + BigSerialType = "BIGSERIAL" + LongtextType = "TEXT" + LongblobType = "BYTEA" + BigintType = "BIGINT" + MediumtextType = "TEXT" + MediumblobType = "BYTEA" + SmallintType = "INTEGER" + TinyintType = "SMALLINT" + VarcharType = "VARCHAR" + BoolType = "BOOLEAN" +) diff --git a/toolkit/dbvendor/postgres/postgres.go b/toolkit/dbvendor/postgres/postgres.go new file mode 100644 index 00000000..f68b383e --- /dev/null +++ b/toolkit/dbvendor/postgres/postgres.go @@ -0,0 +1,202 @@ +package postgres + +import ( + "context" + "database/sql" + "github.com/unionj-cloud/go-doudou/v2/toolkit/dbvendor" + "fmt" + "github.com/pkg/errors" + "github.com/unionj-cloud/go-doudou/v2/framework/database" + "gorm.io/gorm" +) + +func init() { + dbvendor.Registry.Register(database.DriverPostgres, &Vendor{}) +} + +var _ dbvendor.IVendor = (*Vendor)(nil) + +type Vendor struct { +} + +func (v *Vendor) ToColumnType(goType string, autoincrementing bool) string { + switch goType { + case "int", "int16", "int32": + if autoincrementing { + return SerialType + } + return IntType + case "int64": + if autoincrementing { + return BigSerialType + } + return BigintType + case "float32": + return FloatType + case "float64": + return DoubleType + case "string": + return VarcharType + case "text": + return LongtextType + case "bool", "int8": + return TinyintType + case "time.Time": + return DatetimeType + case "decimal.Decimal": + return "decimal(6,2)" + case "types.JSONText": + return JSONType + } + panic(fmt.Sprintf("no available type %s", goType)) +} + +func (v *Vendor) CreateTable(ctx context.Context, db *gorm.DB, t dbvendor.Table) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.String(createTable, createTable, t, nil); err != nil { + return err + } + return db.WithContext(ctx).Exec(statement).Error +} + +func (v *Vendor) DropTable(ctx context.Context, db *gorm.DB, t dbvendor.Table) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.String(dropTable, dropTable, t, nil); err != nil { + return err + } + return db.WithContext(ctx).Exec(statement).Error +} + +func (v *Vendor) ChangeColumn(ctx context.Context, db *gorm.DB, col dbvendor.Column) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.StringBlock(alterTable, alterTable, "change", col, nil); err != nil { + return err + } + return db.WithContext(ctx).Exec(statement).Error +} + +func (v *Vendor) AddColumn(ctx context.Context, db *gorm.DB, col dbvendor.Column) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.StringBlock(alterTable, alterTable, "add", col, nil); err != nil { + return err + } + return db.WithContext(ctx).Exec(statement).Error +} + +func (v *Vendor) DropColumn(ctx context.Context, db *gorm.DB, col dbvendor.Column) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.StringBlock(alterTable, alterTable, "drop", col, nil); err != nil { + return err + } + return db.WithContext(ctx).Exec(statement).Error +} + +func (v *Vendor) Insert(ctx context.Context, db *gorm.DB, dml dbvendor.DMLSchema, args ...interface{}) (int64, error) { + var ( + statement string + err error + ) + if statement, err = v.GetInsertStatement(dml); err != nil { + return 0, errors.WithStack(err) + } + sqlDB, err := db.DB() + if err != nil { + return 0, errors.WithStack(err) + } + var id int64 + if err = sqlDB.QueryRowContext(ctx, statement, args...).Scan(&id); err != nil { + return 0, errors.WithStack(err) + } + return id, nil +} + +func (v *Vendor) GetInsertStatement(dml dbvendor.DMLSchema) (statement string, err error) { + if statement, err = dbvendor.String(insertInto, insertInto, dml, dbvendor.Dollar); err != nil { + return "", errors.WithStack(err) + } + return statement, nil +} + +func (v *Vendor) GetUpdateStatement(dml dbvendor.DMLSchema) (statement string, err error) { + if statement, err = dbvendor.String(updateTable, updateTable, dml, dbvendor.Dollar); err != nil { + return "", errors.WithStack(err) + } + return statement, nil +} + +func (v *Vendor) Update(ctx context.Context, db *gorm.DB, dml dbvendor.DMLSchema, args ...interface{}) error { + var ( + statement string + err error + ) + if statement, err = v.GetUpdateStatement(dml); err != nil { + return errors.WithStack(err) + } + sqlDB, err := db.DB() + if err != nil { + return errors.WithStack(err) + } + _, err = sqlDB.ExecContext(ctx, statement, args...) + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (v *Vendor) Delete(ctx context.Context, db *gorm.DB, dml dbvendor.DMLSchema, args ...interface{}) error { + var ( + statement string + err error + ) + if statement, err = dbvendor.String(deleteFrom, deleteFrom, dml, dbvendor.Dollar); err != nil { + return errors.WithStack(err) + } + sqlDB, err := db.DB() + if err != nil { + return errors.WithStack(err) + } + _, err = sqlDB.ExecContext(ctx, statement, args...) + if err != nil { + return errors.WithStack(err) + } + return nil +} + +func (v *Vendor) SelectById(ctx context.Context, db *gorm.DB, dml dbvendor.DMLSchema, args ...interface{}) (map[string]interface{}, error) { + var ( + statement string + err error + rows *sql.Rows + ) + if statement, err = dbvendor.String(selectFromById, selectFromById, dml, dbvendor.Dollar); err != nil { + return nil, errors.WithStack(err) + } + sqlDB, err := db.DB() + if err != nil { + return nil, errors.WithStack(err) + } + if rows, err = sqlDB.QueryContext(ctx, statement, args...); err != nil { + return nil, errors.WithStack(err) + } + result := make([]map[string]interface{}, 0) + dbvendor.Scan(rows, &result) + if len(result) == 0 { + return nil, errors.WithStack(sql.ErrNoRows) + } + return result[0], nil +} diff --git a/toolkit/dbvendor/postgres/template.go b/toolkit/dbvendor/postgres/template.go new file mode 100644 index 00000000..354f802e --- /dev/null +++ b/toolkit/dbvendor/postgres/template.go @@ -0,0 +1,82 @@ +package postgres + +var ( + createTable = `CREATE TABLE "{{.Name}}" ( +{{- range $co := .Columns }} +"{{$co.Name}}" {{$co.Type}} {{if $co.Nullable}}NULL{{else}}NOT NULL{{end}}{{if $co.Default}} DEFAULT {{$co.Default}}{{end}}, +{{- end }} +PRIMARY KEY ("{{.Pk}}")) +{{- if .Inherited }} +INHERITS ({{.Inherited}}) +{{- end }}; + +{{- if not .Inherited }} +CREATE OR REPLACE FUNCTION update_updated_at_column() +RETURNS TRIGGER AS $$ +BEGIN + IF row(NEW.*) IS DISTINCT FROM row(OLD.*) THEN + NEW.updated_at = now(); + RETURN NEW; + ELSE + RETURN OLD; + END IF; +END; +$$ language 'plpgsql'; + +CREATE TRIGGER update_{{.Name}}_updated_at BEFORE UPDATE ON {{.Name}} FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column(); +ALTER TABLE "{{.Name}}" ALTER created_at TYPE timestamptz USING created_at AT TIME ZONE 'Asia/Shanghai'; +ALTER TABLE "{{.Name}}" ALTER updated_at TYPE timestamptz USING updated_at AT TIME ZONE 'Asia/Shanghai'; +{{- end }} +` + + dropTable = `DROP TABLE "{{.Name}}";` + + alterTable = `{{define "change"}} +{{if .OldName}}ALTER TABLE {{if .TablePrefix }}"{{.TablePrefix}}".{{end}}"{{.Table}}" RENAME COLUMN "{{.OldName}}" TO "{{.Name}}";{{end}} +ALTER TABLE {{if .TablePrefix }}"{{.TablePrefix}}".{{end}}"{{.Table}}" ALTER COLUMN "{{.Name}}" TYPE {{.Type}}; +ALTER TABLE {{if .TablePrefix }}"{{.TablePrefix}}".{{end}}"{{.Table}}" ALTER COLUMN "{{.Name}}" {{if .Nullable}}DROP{{else}}SET{{end}} NOT NULL; +ALTER TABLE {{if .TablePrefix }}"{{.TablePrefix}}".{{end}}"{{.Table}}" ALTER COLUMN "{{.Name}}" {{if .Default}}SET DEFAULT {{.Default}}{{else}}DROP DEFAULT{{end}}; +COMMENT ON COLUMN {{if .TablePrefix }}"{{.TablePrefix}}".{{end}}"{{.Table}}"."{{.Name}}" IS {{if .Comment}}'{{.Comment}}'{{else}}''{{end}}; +{{end}} + +{{define "add"}} +ALTER TABLE {{if .TablePrefix }}"{{.TablePrefix}}".{{end}}"{{.Table}}" ADD COLUMN "{{.Name}}" {{.Type}} {{if .Nullable}}NULL{{else}}NOT NULL{{end}} {{if .Default}}DEFAULT {{.Default}}{{end}}; +COMMENT ON COLUMN {{if .TablePrefix }}"{{.TablePrefix}}".{{end}}"{{.Table}}"."{{.Name}}" IS {{if .Comment}}'{{.Comment}}'{{else}}''{{end}}; +{{end}} + +{{define "drop"}} +ALTER TABLE {{if .TablePrefix }}"{{.TablePrefix}}".{{end}}"{{.Table}}" DROP COLUMN "{{.Name}}"; +{{end}} +` + + insertInto = `INSERT INTO {{if .TablePrefix }}"{{.TablePrefix}}".{{end}}"{{.TableName}}" +({{- range $i, $co := .InsertColumns}} +{{- if $i}},{{end}} +"{{$co.Name}}" +{{- end }}) +VALUES ({{- range $i, $co := .InsertColumns}} + {{- if $i}},{{end}} + ? + {{- end }}) RETURNING "{{.Pk.Name}}"; +` + + updateTable = `UPDATE {{if .TablePrefix }}"{{.TablePrefix}}".{{end}}"{{.TableName}}" +SET + {{- range $i, $co := .UpdateColumns}} + {{- if $i}},{{end}} + "{{$co.Name}}"=? + {{- end }} +WHERE + "{{.Pk.Name}}"=?; +` + + deleteFrom = `DELETE FROM {{if .TablePrefix }}"{{.TablePrefix}}".{{end}}"{{.TableName}}" +WHERE + "{{.Pk.Name}}"=?; +` + + selectFromById = `SELECT * FROM "{{.TableName}}" +WHERE + "{{.Pk.Name}}"=?; +` +) From 0173c44b8303e7065fac4a8861c05b92f0e1fbc9 Mon Sep 17 00:00:00 2001 From: wubin1989 <328454505@qq.com> Date: Wed, 27 Dec 2023 23:34:23 +0800 Subject: [PATCH 2/2] v2.2.2 --- version/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version/version.go b/version/version.go index cd23109f..0ebed9fd 100644 --- a/version/version.go +++ b/version/version.go @@ -1,3 +1,3 @@ package version -const Release = "v2.2.1" +const Release = "v2.2.2"