diff --git a/.gitignore b/.gitignore index c3ac6d46..f0516acf 100644 --- a/.gitignore +++ b/.gitignore @@ -42,7 +42,7 @@ /src/lua/proto/code.lua /src/lua/proto/enum.lua /src/lua/struct/excel.lua -/src/pycli/proto +/pycli/proto # Codeblocks *.layout *.depend diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f5f6248..cfea12d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,7 +126,6 @@ add_definitions(-DSQUICK_LOG_OPEN_STDOUT) # Log stdout print add_subdirectory(src/struct) add_subdirectory(src/squick) add_subdirectory(src/node) -add_subdirectory(src/tools/sqkcli) add_subdirectory(src/tutorial) diff --git a/src/pycli/batch.sh b/pycli/batch.sh old mode 100755 new mode 100644 similarity index 100% rename from src/pycli/batch.sh rename to pycli/batch.sh diff --git a/src/pycli/logic.py b/pycli/logic.py similarity index 100% rename from src/pycli/logic.py rename to pycli/logic.py diff --git a/pycli/login.cookie b/pycli/login.cookie new file mode 100644 index 00000000..efd3100c --- /dev/null +++ b/pycli/login.cookie @@ -0,0 +1,2 @@ +#LWP-Cookies-2.0 +Set-Cookie3: Session="eyJhY2NvdW50IjoicHljbGlfMSIsImFjY291bnRfaWQiOiIwLTE3MjI0OTEwODU5NzcwMDAwMDAiLCJsb2dpbl90aW1lIjoxNzIyNDkxMDg1LCJ0b2tlbiI6IjQ4ODk0MzE5ZWFiNDExNjlkZmJjY2EwZjhkNmVkMmZiZDczMWJmYTUxYWViNjRhMmFmZjI3NzgzMTZiNzRjMjIifQ=="; path="/"; domain="127.0.0.1"; path_spec; expires="2024-08-15 05:44:45Z"; version=0 diff --git a/src/pycli/main.py b/pycli/main.py similarity index 100% rename from src/pycli/main.py rename to pycli/main.py diff --git a/src/pycli/protocol.py b/pycli/protocol.py similarity index 100% rename from src/pycli/protocol.py rename to pycli/protocol.py diff --git a/src/pycli/requirements.txt b/pycli/requirements.txt similarity index 100% rename from src/pycli/requirements.txt rename to pycli/requirements.txt diff --git a/resource/excel/Group.xlsx b/resource/excel/Group.xlsx deleted file mode 100644 index 59dab188..00000000 Binary files a/resource/excel/Group.xlsx and /dev/null differ diff --git a/resource/excel/Object.xlsx b/resource/excel/Object.xlsx deleted file mode 100644 index 8661662f..00000000 Binary files a/resource/excel/Object.xlsx and /dev/null differ diff --git a/resource/excel/Player.xlsx b/resource/excel/Player.xlsx deleted file mode 100644 index 4f1ff835..00000000 Binary files a/resource/excel/Player.xlsx and /dev/null differ diff --git a/resource/excel/Scene.xlsx b/resource/excel/Scene.xlsx deleted file mode 100644 index 1eb10cb6..00000000 Binary files a/resource/excel/Scene.xlsx and /dev/null differ diff --git a/resource/excel/common/IObject.xlsx b/resource/excel/common/IObject.xlsx deleted file mode 100644 index d95586bd..00000000 Binary files a/resource/excel/common/IObject.xlsx and /dev/null differ diff --git a/resource/excel/example/Property.xlsx b/resource/excel/example/Property.xlsx deleted file mode 100644 index fa41e721..00000000 Binary files a/resource/excel/example/Property.xlsx and /dev/null differ diff --git a/resource/excel/example/Record.xlsx b/resource/excel/example/Record.xlsx deleted file mode 100644 index 637423b2..00000000 Binary files a/resource/excel/example/Record.xlsx and /dev/null differ diff --git a/resource/db/clickhouse/admin_log.sql b/script/db/clickhouse/admin_log.sql similarity index 100% rename from resource/db/clickhouse/admin_log.sql rename to script/db/clickhouse/admin_log.sql diff --git a/resource/db/clickhouse/node_log.sql b/script/db/clickhouse/node_log.sql similarity index 100% rename from resource/db/clickhouse/node_log.sql rename to script/db/clickhouse/node_log.sql diff --git a/resource/db/clickhouse/player_log.sql b/script/db/clickhouse/player_log.sql similarity index 100% rename from resource/db/clickhouse/player_log.sql rename to script/db/clickhouse/player_log.sql diff --git a/resource/db/mysql/admin.sql b/script/db/mysql/admin.sql similarity index 100% rename from resource/db/mysql/admin.sql rename to script/db/mysql/admin.sql diff --git a/resource/db/mysql/player.sql b/script/db/mysql/player.sql similarity index 100% rename from resource/db/mysql/player.sql rename to script/db/mysql/player.sql diff --git a/src/proto/game.proto b/src/lua/proto/proto.lua similarity index 50% rename from src/proto/game.proto rename to src/lua/proto/proto.lua index 1e639048..5a9d0ca4 100644 --- a/src/proto/game.proto +++ b/src/lua/proto/proto.lua @@ -1,8 +1,61 @@ -// 描述: 房间、匹配、副本 +---------------------------------------------------------------------------------- +-- don't edit it, generated from .proto files by tools +---------------------------------------------------------------------------------- + +proto_code = [[ +// 描述: 基础定义 // 使用: 服务器, 客户端 syntax = "proto3"; package rpc; -import "base.proto"; + +message Vector2 { + float x = 1; + float y = 2; +} + +message Vector3 { + float x = 1; + float y = 2; + float z = 3; +} + +message Vector4 { + float x = 1; + float y = 2; + float z = 3; + float w = 4; +} + +enum ErrorCode { + ErrCommonSucc = 0; + ErrCommonFaild = 1; +} + + +message PlayerData { + string account = 1; + string account_id = 2; + uint64 uid = 3; + string name = 4; + int32 level = 5; + string ip = 6; + int32 area = 7; + int32 created_time = 8; + int32 last_login_time = 9; + int32 last_offline_time = 10; + string platform = 11; +} + +message OnlineTable { + int64 uid = 1; +} + +message PlayerTable { + int64 uid = 1; // index + PlayerData data = 2; +} +// 描述: 房间、匹配、副本 +// 使用: 服务器, 客户端 // 20000 ~ 22000 enum GameBaseRPC { @@ -183,3 +236,137 @@ message AckRoomGamePlayStart { message ReqRoomCreateRobot { int32 amount = 1; } message AckRoomCreateRobot { int32 code = 1; } +// Generated by the res/Tools/proto/gen_msgid.py. DO NOT EDIT! +// Update time: 2024-09-25 19:07:51 + +enum MsgId { + MsgIdZero = 0; + IdReqConnectProxy = 8003; // message: rpc.ReqConnectProxy desc: Request to connect the proxy + IdAckConnectProxy = 8004; // message: rpc.AckConnectProxy desc: Request to connect the proxy response + IdReqDisconnectProxy = 8005; // message: rpc.ReqDisconnectProxy desc: + IdAckDisconnectProxy = 8007; // message: rpc.AckDisconnectProxy desc: + IdReqHeartBeat = 8008; // message: rpc.ReqHeartBeat desc: + IdAckHeartBeat = 8009; // message: rpc.AckHeartBeat desc: + IdAckKickOff = 8010; // message: rpc.AckKickOff desc: + IdReqPlayerEnter = 12004; // message: rpc.ReqPlayerEnter desc: + IdAckPlayerEnter = 12005; // message: rpc.AckPlayerEnter desc: + IdReqPlayerLeave = 12006; // message: rpc.ReqPlayerLeave desc: + IdAckPlayerLeave = 12007; // message: rpc.AckPlayerLeave desc: + IdReqPlayerData = 12008; // message: rpc.ReqPlayerData desc: + IdAckPlayerData = 12009; // message: rpc.AckPlayerData desc: + IdTReqConfig = 14900; // message: rpc.TReqConfig desc: + IdTAckConfig = 14901; // message: rpc.TAckConfig desc: + IdTReqDb = 14902; // message: rpc.TReqDb desc: + IdTAckDb = 14903; // message: rpc.TAckDb desc: +}// 描述: 玩家RPC +// 使用: 服务器,客户端 + +// PlayerRPC 12000 ~ 15000 + +message ReqPlayerEnter { // msg_id=12004; + string account = 1; + string account_id = 2; + string ip = 3; + int32 proxy_node = 4; + int32 login_node = 5; + int32 protocol = 6; + int32 area = 7; + int32 platform = 8; + int64 proxy_sock = 9; +} + +message AckPlayerEnter { // msg_id=12005; + int32 code = 1; + int64 proxy_sock = 2; + PlayerData data = 3; +} + +message ReqPlayerLeave { // msg_id=12006; +} + +message AckPlayerLeave { // msg_id=12007; +} + +message ReqPlayerData { // msg_id=12008; +} + +message AckPlayerData { // msg_id=12009; + int32 code = 1; + PlayerData data = 2; +} + + +message TReqConfig { // msg_id=14900; + int32 index = 1; + int64 req_time = 2; + bytes data = 3; +} + +message TAckConfig { // msg_id=14901; + int32 index = 1; + int64 req_time = 2; + bytes data = 3; +} + +message TReqDb { // msg_id=14902; + int32 index = 1; + int64 req_time = 2; + bytes data = 3; +} + +message TAckDb { // msg_id=14903; + int32 index = 1; + int64 req_time = 2; + bytes data = 3; +}// Desc: 8000 ~ 10000 + +message ReqConnectProxy { // msg_id=8003; desc=Request to connect the proxy; + string account_id = 1; + string key = 2; + int32 login_node = 3; + uint64 signatrue = 4; +} + +message AckConnectProxy { // msg_id=8004; desc=Request to connect the proxy response; + int32 code = 1; +} + +message ReqDisconnectProxy { // msg_id=8005; +} +message AckDisconnectProxy { // msg_id=8007; + int32 code = 1; +} + +message ReqHeartBeat { // msg_id=8008; + int32 index = 1; +} + +message AckHeartBeat { // msg_id=8009; + int32 index = 1; +} + +message AckKickOff { // msg_id=8010; + int64 time = 1; +}// 各服务器之间的通信RPC + +// Servers RPC 50000 ~ 50200 +enum TestRPC { + TEST_RPC_NONE = 0; + + REQ_TEST_PROXY = 50000; + ACK_TEST_PROXY = 50001; + + REQ_TEST_GAMEPLAY = 50002; + ACK_TEST_GAMEPLAY = 50003; + + REQ_TEST_PLAYER_DATA_READ = 50004; + REQ_TEST_PLAYER_DATA_WRITE = 50005; +} + +message Test { + int32 index = 1; + int64 req_time = 2; + bytes data = 3; +} + +]] \ No newline at end of file diff --git a/src/proto/base.proto b/src/proto/base.proto deleted file mode 100644 index 2a567b59..00000000 --- a/src/proto/base.proto +++ /dev/null @@ -1,42 +0,0 @@ -// 描述: 基础定义 -// 使用: 服务器, 客户端 -syntax = "proto3"; -package rpc; - -message Vector2 { - float x = 1; - float y = 2; -} - -message Vector3 { - float x = 1; - float y = 2; - float z = 3; -} - -message Vector4 { - float x = 1; - float y = 2; - float z = 3; - float w = 4; -} - -enum ErrorCode { - ErrCommonSucc = 0; - ErrCommonFaild = 1; -} - - -message PlayerData { - string account = 1; - string account_id = 2; - uint64 uid = 3; - string name = 4; - int32 level = 5; - string ip = 6; - int32 area = 7; - int32 created_time = 8; - int32 last_login_time = 9; - int32 last_offline_time = 10; - string platform = 11; -} diff --git a/src/proto/db_table.proto b/src/proto/db_table.proto deleted file mode 100644 index e82fb594..00000000 --- a/src/proto/db_table.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; -package rpc; -import "base.proto"; - -message OnlineTable { - int64 uid = 1; -} - -message PlayerTable { - int64 uid = 1; // index - PlayerData data = 2; -} diff --git a/src/proto/n_backstage.proto b/src/proto/n_backstage.proto deleted file mode 100644 index f4dfa1fd..00000000 --- a/src/proto/n_backstage.proto +++ /dev/null @@ -1,2 +0,0 @@ -syntax = "proto3"; -package rpc; \ No newline at end of file diff --git a/src/proto/n_cklog.proto b/src/proto/n_cklog.proto deleted file mode 100644 index 4cdcad19..00000000 --- a/src/proto/n_cklog.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; -package rpc; -import "base.proto"; - -// CKLog -message NCkLogPlayerLogin { // msg_id=52000; - int32 login_time = 1; -} - diff --git a/src/proto/n_db_proxy.proto b/src/proto/n_db_proxy.proto deleted file mode 100644 index 16f1a61d..00000000 --- a/src/proto/n_db_proxy.proto +++ /dev/null @@ -1,291 +0,0 @@ -// desc: msg_id range (30000 ~ 35000) -syntax = "proto3"; -package rpc; - -// Proxy DB code -enum DbProxyCode { - DB_PROXY_CODE_REDIS_SUCCESS = 0; - DB_PROXY_CODE_REDIS_PROTO_ERROR = 1; - DB_PROXY_CODE_REDIS_EXCEPTION = 2; - DB_PROXY_CODE_REDIS_NO_KEY = 3; - - DB_PROXY_CODE_MONGO_SUCCESS = 500; - DB_PROXY_CODE_MONGO_PROTO_ERROR = 501; - DB_PROXY_CODE_MONGO_EXCEPTION = 502; - - DB_PROXY_CODE_MYSQL_SUCCESS = 1000; - DB_PROXY_CODE_MYSQL_PROTO_ERROR = 1001; - DB_PROXY_CODE_MYSQL_EXCEPTION = 1002; - - DB_PROXY_CODE_CLICKHOUSE_SUCCESS = 1500; - DB_PROXY_CODE_CLICKHOUSE_PROTO_ERROR = 1501; - DB_PROXY_CODE_CLICKHOUSE_EXCEPTION = 1502; -} - -enum ClickhouseDataType { - ClickHouseDataTypeNone = 0; - ClickHouseDataTypeUInt8 = 1; - ClickHouseDataTypeUInt16 = 2; - ClickHouseDataTypeUInt32 = 3; - ClickHouseDataTypeUInt64 = 4; - - ClickHouseDataTypeInt8 = 5; - ClickHouseDataTypeInt16 = 6; - ClickHouseDataTypeInt32 = 7; - ClickHouseDataTypeInt64 = 8; - ClickHouseDataTypeInt128 = 9; - - ClickHouseDataTypeFloat32 = 10; - ClickHouseDataTypeFloat64 = 11; - - ClickHouseDataTypeString = 12; -} - -enum MysqlDataType { - MysqlDataTypeNone = 0; - MysqlDataTypeNumber = 1; - MysqlDataTypeString = 2; -} - -message Data { - int32 type = 1; - bytes value = 2; -} - -message List { - int32 type = 1; - repeated bytes values = 2; -} - -message ClickhouseData { - string field = 1; - int32 type = 2; - repeated bytes values = 3; -} - -message MysqlData { - string field = 1; - int32 type = 2; - repeated bytes values = 3; -} - -message NReqRedisGet { // msg_id=30003; - int32 query_id = 1; - string key = 2; -} - -message NAckRedisGet { // msg_id=30004; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; - bytes value = 4; -} - -message NReqRedisSet { // msg_id=30005; - int32 query_id = 1; - string key = 2; - bytes value = 3; - int64 ttl = 4; -} - -message NAckRedisSet { // msg_id=30006; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; -} - -message NReqRedisHGet { // msg_id=30007; - int32 query_id = 1; - string key = 2; - string field = 3; -} - -message NAckRedisHGet { // msg_id=30008; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; - bytes value = 4; -} - -message NReqRedisHSet { // msg_id=30009; - int32 query_id = 1; - string key = 2; - string field = 3; - bytes value = 4; - int64 ttl = 5; -} - -message NAckRedisHSet { // msg_id=30010; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; -} - -message NReqClickhouseExecute { // msg_id=30100; - int32 query_id = 1; - string sql = 2; -} - -message NAckClickhouseExecute { // msg_id=30101; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; -} - -message NReqClickhouseSelect { // msg_id=30102; - int32 query_id = 1; - string sql = 2; -} - -message NAckClickhouseSelect { // msg_id=30103; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; - repeated ClickhouseData data = 4; -} - -message NReqClickhouseInsert { // msg_id=30104; - int32 query_id = 1; - string database = 2; - string table = 3; - repeated ClickhouseData data = 4; -} - -message NAckClickhouseInsert { // msg_id=30105; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; -} - -// Insert one -message NReqMongoInsert { // msg_id=30200; - int32 query_id = 1; - string db = 2; - string collection = 3; - string insert_json = 4; -} - -message NAckMongoInsert { // msg_id=30201; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; - string inserted_id = 4; // Inserted Object ID -} - -// Find many -message NReqMongoFind { // msg_id=30202; - int32 query_id = 1; - string db = 2; - string collection = 3; - string condition_json = 4; - int32 limit = 5; - int32 skip = 6; - string sort_json = 7; -} - -message NAckMongoFind { // msg_id=30203; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; - int32 matched_count = 4; - repeated string result_json = 5; -} - -// Default: Update many -message NReqMongoUpdate { // msg_id=30204; - int32 query_id = 1; - string db = 2; - string collection = 3; - string condition_json = 4; - string update_json = 5; -} - -message NAckMongoUpdate { // msg_id=30205; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; - int32 matched_count = 4; - int32 modified_count = 5; - int32 upserted_count = 6; -} - -// Default: Delete many -message NReqMongoDelete { // msg_id=30206; - int32 query_id = 1; - string db = 2; - string collection = 3; - string condition_json = 4; -} - -message NAckMongoDelete { // msg_id=30207; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; - int32 deleted_count = 4; -} - -// Create index -message NReqMongoCreateIndex { // msg_id=30208; - int32 query_id = 1; - string db = 2; - string collection = 3; - string condition_json = 4; -} - -message NAckMongoCreateIndex { // msg_id=30209; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; - string result_json = 4; -} - -message NReqMysqlExecute { // msg_id=30300; - int32 query_id = 1; - string sql = 2; -} - -message NAckMysqlExecute { // msg_id=30301; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; -} - -message NReqMysqlSelect { // msg_id=30302; - int32 query_id = 1; - string sql = 2; -} - -message NAckMysqlSelect { // msg_id=30303; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; - repeated MysqlData data = 4; -} - -message NReqMysqlInsert { // msg_id=30304; - int32 query_id = 1; - string database = 2; - string table = 3; - repeated MysqlData data = 4; -} - -message NAckMysqlInsert { // msg_id=30305; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; -} - -message NReqMysqlUpdate { // msg_id=30306; - int32 query_id = 1; - string database = 2; - string table = 3; - repeated MysqlData data = 4; - string where = 5; - int32 limit = 6; -} - -message NAckMysqlUpdate { // msg_id=30307; - int32 code = 1; - bytes msg = 2; - int32 query_id = 3; -} diff --git a/src/proto/n_game_mgr.proto b/src/proto/n_game_mgr.proto deleted file mode 100644 index 3d2a3cad..00000000 --- a/src/proto/n_game_mgr.proto +++ /dev/null @@ -1,79 +0,0 @@ -// 描述: 游戏管理器 -// 使用: 服务器 -syntax = "proto3"; -package rpc; -import "game.proto"; -// GameplayManagerRPC RPC 500 ~ 600 -enum GameplayManagerRPC { - NGAMEPLAY_MANAGER_RPC_NONE = 0; - - // GAME_PLAY Manager API - // GAME_PLAY 管理服 接口 - REQ_GAMEPLAY_CREATE = 500; // 创建 GAME_PLAY 对战服实例 - ACK_GAMEPLAY_CREATE = 501; - REQ_GAMEPLAY_DESTROY = 502; - ACK_GAMEPLAY_DESTROY = 503; - REQ_GAMEPLAY_LIST = 504; // - ACK_GAMEPLAY_LIST = 505; - - // Game Play Manager API - // Game Play 接口, 由Game Play -> Game Play Manager -> Game - // 在Game Play游戏中,以Game服务器为主,Game - // Play服务器只负责当前对局网络同步和数据结算,不做其他逻辑功能 - REQ_GAMEPLAY_STATUS = 506; - ACK_GAMEPLAY_STATUS = 507; - REQ_GAMEPLAY_DATA = 508; // 创建完毕Game Play服务器后, Game - // Play服务器向Game服务器初始化对战服数据和各玩家数据 - ACK_GAMEPLAY_DATA = 509; - REQ_GAMEPLAY_PREPARED = 510; // Game Play服务器初始化数据完成 - ACK_GAMEPLAY_PREPARED = 511; - REQ_GAMEPLAY_OVER = 512; - ACK_GAMEPLAY_OVER = 513; -} - -// --------------------------------------------------------- -// GamePlay服务器在GamePlay Manager服务器上 请求连接 Game Server -// ACK_CONNECT_GAME_SERVER = 61; -message ReqGameplayConnectGameServer { - int32 id = 1; - bytes key = 2; - bytes name = 3; - int32 game_id = 6; -} - -// -message AckGameplayConnectGameServer { int32 code = 1; } - -// 在Game服务器上请求 GamePlay Manager 服务器创建GamePlay服务器实例 -message ReqGameplayCreate { - int32 id = 1; - bytes key = 2; - int32 game_id = 3; - RoomDetails room = 4; - // repeated PlayerData players = 5; -} - -// 不用 GamePlay Manager 不用响应也行 -message AckGameplayCreate { int32 code = 1; } - -message AckGameplayDestroyed {} - -message ReqGameplayData { - int32 id = 1; // instance id - bytes key = 2; -} - -// 发送每个玩家的数据 -message AckGameplayData {} - -// 初始化数据完成,广播所有玩家加入游戏 -message ReqGameplayPrepared { - int32 code = 1; // Game Play服务器状态, 0 正常, 1 不正常 - int32 id = 2; // instance id - bytes key = 3; - bytes ip = 5; // Game Play 服务器IP - int32 port = 6; // Game Play 服务器端口 - bytes name = 7; // Game Play 服务器名称 -} - -message AckGameplayPrepared { int32 code = 1; } diff --git a/src/proto/n_master.proto b/src/proto/n_master.proto deleted file mode 100644 index 1b1d49e9..00000000 --- a/src/proto/n_master.proto +++ /dev/null @@ -1,127 +0,0 @@ -// Desc: Master RPC 500 ~ 1000 -syntax = "proto3"; -import "n_node.proto"; -package rpc; - -enum NodeState { - NodeStateCrash = 0; - NodeStateNormal = 1; - NodeStateBusy = 2; - NodeStateFrie = 3; -} - -enum NodeType { - ST_NONE = 0; // NONE - ST_MASTER = 1; // - ST_WEB = 2; // - ST_WORLD = 3; // - ST_DB_PROXY = 4; // - ST_PROXY = 5; // - ST_PLAYER = 6; - ST_GAME_MGR = 7; // - ST_GAME = 8; // - ST_MICRO = 9; // Micro - ST_CDN = 10; // CDN - ST_BACKSTAGE = 11; // Backstage - ST_GLOBAL = 12; // Global - ST_ROOM = 13; // Room - ST_MATCH = 14; // Match - ST_GM = 15; // GM - ST_MAX = 16; -} - -message Node { - int32 id = 1; - bytes name = 2; - bytes ip = 3; - int32 port = 4; - int32 max_online = 5; - int32 cpu_count = 6; - NodeState state = 7; - int32 type = 8; - int32 area = 9; - int32 connections = 10; - int32 workload = 11; - bytes key = 12; - bytes public_ip = 13; - int32 update_time = 14; - repeated int32 added_node_id_list = 15; - int32 ws_port = 16; - int32 http_port = 17; - int32 https_port = 18; - int32 net_client_connections = 19; -} - -message NReqNodeRegister { // msg_id=500; - repeated int32 listen_type_list = 1; // set bind type, When new same type node connect to master, it will ntf self node. - Node node = 2; -} - -message NAckNodeRegister { // msg_id=501; - int32 code = 1; - repeated Node node_add_list = 2; -} - -message NReqNodeUnregister { // msg_id=502; - int32 id = 1; -} - -message NAckNodeUnregister { // msg_id=503; - int32 code = 1; -} - -message NReqMinWorkloadNodeInfo { // msg_id=504; - repeated int32 type_list = 1; -} - -message NAckMinWorkloadNodeInfo { // msg_id=505; - repeated Node list = 1; -} - -message NReqNodeInfo { // msg_id=506; - repeated int32 id_list = 1; -} - -message NAckNodeInfo { // msg_id=507; - repeated Node list = 1; -} - -message NNtfNodeReport { // msg_id=508; desc=Report current node status; - int32 id = 1; - repeated Node list = 2; -} - -message NNtfNodeAdd { // msg_id=509; - repeated Node node_list = 1; -} - -message NNtfNodeRemove { // msg_id=510; - repeated Node node_list = 1; -} - -message NNtfNodeMsgForward { // msg_id=511; - bytes data = 1; -} - -message NReqAllNodesInfo { // msg_id=512; -} - -message NAckAllNodesInfo { // msg_id=513; - repeated Node node_list = 1; -} - -enum ReloadType { - ReloadTypeAll = 0; - ReloadNodeConfig = 1; - ReloadExcelConfig = 2; - ReloadNodeScript = 3; -} - -message NReqReload { // msg_id=514; - ReloadType type = 1; -} - -message NAckReload { // msg_id=515; - NErrorCode code = 1; - ReloadType type = 2; -} \ No newline at end of file diff --git a/src/proto/n_node.proto b/src/proto/n_node.proto deleted file mode 100644 index e45bf185..00000000 --- a/src/proto/n_node.proto +++ /dev/null @@ -1,35 +0,0 @@ -// Desc: Node RPC 0 ~ 500 -syntax = "proto3"; -package rpc; - -// only be used in inner node -message MsgBase { - int32 id = 1; // sender node id - int32 msg_id = 2; // real msg id - int64 uid = 3; // player uid - int64 req_id = 4; // request id - bytes msg_data = 5; // data -} - -message NNtfNodeHeartBeat { // msg_id=1; - int32 index = 1; -} - -enum NErrorCode { - NErrCommonSucc = 0; - NErrCommonFaild = 1; -} - -message NReqExecuteLua { // msg_id=10; - int32 node_id = 1; - int32 type = 2; - string script = 3; -} - -message NAckExecuteLua { // msg_id=11; - NErrorCode code = 1; - int32 node_id = 2; - int32 type = 3; - string output = 4; -} - diff --git a/src/proto/n_player.proto b/src/proto/n_player.proto deleted file mode 100644 index 011533fe..00000000 --- a/src/proto/n_player.proto +++ /dev/null @@ -1,15 +0,0 @@ -// Desc: PlayerRPC 12000 ~ 15000 -syntax = "proto3"; -package rpc; - -enum PlayerOfflineReason { - PLAYER_OFFLINE_REASON_NONE = 0; // Unknown - PLAYER_OFFLINE_REASON_QUIT = 1; // Quit normal - PLAYER_OFFLINE_REQSON_TIMEOUT = 2; // Heartbeat timeout -} - -message NNtfPlayerOffline { // msg_id=12001; - bytes player_id = 1; - int32 proxy_id = 2; - int32 reason = 3; // Offline reason -} \ No newline at end of file diff --git a/src/proto/n_web.proto b/src/proto/n_web.proto deleted file mode 100644 index 1042fc19..00000000 --- a/src/proto/n_web.proto +++ /dev/null @@ -1,18 +0,0 @@ -// Desc: Web rpc, 6000 ~ 7000 -syntax = "proto3"; -package rpc; - -message NReqConnectProxyVerify { // msg_id=6000;desc=Verify the connection for client connecting proxy; - int64 session = 1; - string account_id = 2; - string key = 3; - int32 proxy_node = 4; -} - -message NAckConnectProxyVerify { // msg_id=6001; - int64 session = 1; - int32 code = 2; - int32 area_id = 3; - string account_id = 4; - string account = 5; -} diff --git a/src/proto/n_world.proto b/src/proto/n_world.proto deleted file mode 100644 index 9fca50a4..00000000 --- a/src/proto/n_world.proto +++ /dev/null @@ -1,2 +0,0 @@ -syntax = "proto3"; -package rpc; diff --git a/src/proto/player.proto b/src/proto/player.proto deleted file mode 100644 index d02949fb..00000000 --- a/src/proto/player.proto +++ /dev/null @@ -1,64 +0,0 @@ -// 描述: 玩家RPC -// 使用: 服务器,客户端 -syntax = "proto3"; -package rpc; -import "base.proto"; - -// PlayerRPC 12000 ~ 15000 - -message ReqPlayerEnter { // msg_id=12004; - string account = 1; - string account_id = 2; - string ip = 3; - int32 proxy_node = 4; - int32 login_node = 5; - int32 protocol = 6; - int32 area = 7; - int32 platform = 8; - int64 proxy_sock = 9; -} - -message AckPlayerEnter { // msg_id=12005; - int32 code = 1; - int64 proxy_sock = 2; - PlayerData data = 3; -} - -message ReqPlayerLeave { // msg_id=12006; -} - -message AckPlayerLeave { // msg_id=12007; -} - -message ReqPlayerData { // msg_id=12008; -} - -message AckPlayerData { // msg_id=12009; - int32 code = 1; - PlayerData data = 2; -} - - -message TReqConfig { // msg_id=14900; - int32 index = 1; - int64 req_time = 2; - bytes data = 3; -} - -message TAckConfig { // msg_id=14901; - int32 index = 1; - int64 req_time = 2; - bytes data = 3; -} - -message TReqDb { // msg_id=14902; - int32 index = 1; - int64 req_time = 2; - bytes data = 3; -} - -message TAckDb { // msg_id=14903; - int32 index = 1; - int64 req_time = 2; - bytes data = 3; -} \ No newline at end of file diff --git a/src/proto/proxy.proto b/src/proto/proxy.proto deleted file mode 100644 index db6a6757..00000000 --- a/src/proto/proxy.proto +++ /dev/null @@ -1,33 +0,0 @@ -// Desc: 8000 ~ 10000 -syntax = "proto3"; -package rpc; -import "base.proto"; - -message ReqConnectProxy { // msg_id=8003; desc=Request to connect the proxy; - string account_id = 1; - string key = 2; - int32 login_node = 3; - uint64 signatrue = 4; -} - -message AckConnectProxy { // msg_id=8004; desc=Request to connect the proxy response; - int32 code = 1; -} - -message ReqDisconnectProxy { // msg_id=8005; -} -message AckDisconnectProxy { // msg_id=8007; - int32 code = 1; -} - -message ReqHeartBeat { // msg_id=8008; - int32 index = 1; -} - -message AckHeartBeat { // msg_id=8009; - int32 index = 1; -} - -message AckKickOff { // msg_id=8010; - int64 time = 1; -} \ No newline at end of file diff --git a/src/proto/readme.md b/src/proto/readme.md deleted file mode 100644 index bfa0667f..00000000 --- a/src/proto/readme.md +++ /dev/null @@ -1,25 +0,0 @@ -# RPC 范围 - -0 ~ 500 : server.proto - -500 ~ 600 : game_mgr.proto - -6000 ~ 7000: login.proto - -8000 ~ 10000 : proxy.proto - -10000 ~ 12000 : player_base.proto - -10000 ~ 30000 : lobby.proto - -30000 ~ 32000 : micro.proto - -32000 ~ 35000 : game.proto - -40000 ~ 45000 : db_proxy.proto - -45000 ~ 46000 : game_manager.proto - -50000 ~ 50200 : test.proto - -52000 - 62000 : cklog.proto diff --git a/src/proto/test.proto b/src/proto/test.proto deleted file mode 100644 index 5e1a7cd0..00000000 --- a/src/proto/test.proto +++ /dev/null @@ -1,23 +0,0 @@ -// 各服务器之间的通信RPC -syntax = "proto3"; -package rpc; - -// Servers RPC 50000 ~ 50200 -enum TestRPC { - TEST_RPC_NONE = 0; - - REQ_TEST_PROXY = 50000; - ACK_TEST_PROXY = 50001; - - REQ_TEST_GAMEPLAY = 50002; - ACK_TEST_GAMEPLAY = 50003; - - REQ_TEST_PLAYER_DATA_READ = 50004; - REQ_TEST_PLAYER_DATA_WRITE = 50005; -} - -message Test { - int32 index = 1; - int64 req_time = 2; - bytes data = 3; -} diff --git a/src/proto/web.proto b/src/proto/web.proto deleted file mode 100644 index f4dfa1fd..00000000 --- a/src/proto/web.proto +++ /dev/null @@ -1,2 +0,0 @@ -syntax = "proto3"; -package rpc; \ No newline at end of file diff --git a/src/squick/plugin/config/class_module.cc b/src/squick/plugin/config/class_module.cc index 5dac78c7..b446f80e 100644 --- a/src/squick/plugin/config/class_module.cc +++ b/src/squick/plugin/config/class_module.cc @@ -6,11 +6,11 @@ #include #include #include -ClassModule::ClassModule() { mConfigFileName = "config/struct/Root.xml"; } +ClassModule::ClassModule() { mConfigFileName = "res/XlsxXML/Root.xml"; } ClassModule::ClassModule(IPluginManager *p) { pm_ = p; - mConfigFileName = "config/struct/Root.xml"; + mConfigFileName = "res/XlsxXML/Root.xml"; #ifdef DEBUG std::cout << "Using [" << pm_->GetWorkPath() << "/" + mConfigFileName << "]" << std::endl; @@ -218,7 +218,7 @@ bool ClassModule::AddClassInclude(const char *pstrClassFilePath, std::shared_ptr } ////////////////////////////////////////////////////////////////////////// - std::string strFile = pm_->GetWorkPath() + "/" + pstrClassFilePath; + std::string strFile = pstrClassFilePath; std::string content; pm_->GetFileContent(strFile, content); @@ -320,15 +320,21 @@ bool ClassModule::Load(rapidxml::xml_node<> *attrNode, std::shared_ptr p const char *pstrPath = attrNode->first_attribute("Path")->value(); const char *pstrInstancePath = attrNode->first_attribute("InstancePath")->value(); + std::string realPath = pm_->GetWorkPath() + "/res/XlsxXML/"; + realPath += pstrPath; + + std::string realInstancePath = pm_->GetWorkPath() + "/res/XlsxXML/"; + realInstancePath += pstrInstancePath; + // printf( "-----------------------------------------------------\n"); // printf( "%s:\n", pstrLogicClassName ); std::shared_ptr pClass(new Class(pstrLogicClassName)); AddElement(pstrLogicClassName, pClass); pClass->SetParent(pParentClass); - pClass->SetInstancePath(pstrInstancePath); + pClass->SetInstancePath(realInstancePath); - AddClass(pstrPath, pClass); + AddClass(realPath.c_str(), pClass); for (rapidxml::xml_node<> *pDataNode = attrNode->first_node(); pDataNode; pDataNode = pDataNode->next_sibling()) { // her children diff --git a/src/squick/plugin/config/class_module.cc~ b/src/squick/plugin/config/class_module.cc~ new file mode 100644 index 00000000..14231cf6 --- /dev/null +++ b/src/squick/plugin/config/class_module.cc~ @@ -0,0 +1,405 @@ + +#include "class_module.h" +#include "plugin.h" +#include "third_party/rapidxml/rapidxml.hpp" +#include "third_party/rapidxml/rapidxml_print.hpp" +#include +#include +#include +ClassModule::ClassModule() { mConfigFileName = "res/XlsxXML/Struct/Root.xml"; } + +ClassModule::ClassModule(IPluginManager *p) { + pm_ = p; + mConfigFileName = "res/XlsxXML/Root.xml"; + +#ifdef DEBUG + std::cout << "Using [" << pm_->GetWorkPath() << "/" + mConfigFileName << "]" << std::endl; +#endif + + if (!this->mbBackup) { + for (int i = 0; i < CONFIG_DATA_THREADS_CAN_BE_USED_CNT; ++i) { + ThreadClassModule threadElement; + threadElement.used = false; + threadElement.classModule = new ClassModule(); + threadElement.classModule->mbBackup = true; + threadElement.classModule->pm_ = pm_; + + threadElement.classModule->Awake(); + threadElement.classModule->Start(); + threadElement.classModule->AfterStart(); + + mThreadClasses.push_back(threadElement); + } + } +} + +ClassModule::~ClassModule() { ClearAll(); } + +bool ClassModule::Awake() { + for (int i = 0; i < mThreadClasses.size(); ++i) { + mThreadClasses[i].classModule->Awake(); + } + + Load(); + + return true; +} + +bool ClassModule::Start() { + for (int i = 0; i < mThreadClasses.size(); ++i) { + mThreadClasses[i].classModule->Start(); + } + return true; +} + +bool ClassModule::Destroy() { + for (int i = 0; i < mThreadClasses.size(); ++i) { + mThreadClasses[i].classModule->Destroy(); + } + + ClearAll(); + + return true; +} + +// Get a free class module for find +IClassModule *ClassModule::GetThreadClassModule() { + std::thread::id threadID = std::this_thread::get_id(); + + for (int i = 0; i < mThreadClasses.size(); ++i) { + if (mThreadClasses[i].used) { + if (mThreadClasses[i].threadID == threadID) { + return mThreadClasses[i].classModule; + } + } else { + // init for this thread + mThreadClasses[i].used = true; + mThreadClasses[i].threadID = threadID; + return mThreadClasses[i].classModule; + } + } + return nullptr; +} + +DATA_TYPE ClassModule::ComputerType(const char *pstrTypeName, SquickData &var) { + if (0 == strcmp(pstrTypeName, "int")) { + var.SetInt(NULL_INT); + return var.GetType(); + } else if (0 == strcmp(pstrTypeName, "string")) { + var.SetString(""); + return var.GetType(); + } else if (0 == strcmp(pstrTypeName, "float")) { + var.SetFloat(NULL_FLOAT); + return var.GetType(); + } else if (0 == strcmp(pstrTypeName, "object")) { + var.SetObject(NULL_OBJECT); + return var.GetType(); + } else if (0 == strcmp(pstrTypeName, "vector2")) { + var.SetVector2(NULL_VECTOR2); + return var.GetType(); + } else if (0 == strcmp(pstrTypeName, "vector3")) { + var.SetVector3(NULL_VECTOR3); + return var.GetType(); + } + + return TDATA_UNKNOWN; +} + +bool ClassModule::AddProperties(rapidxml::xml_node<> *pPropertyRootNode, std::shared_ptr pClass) { + for (rapidxml::xml_node<> *pPropertyNode = pPropertyRootNode->first_node(); pPropertyNode; pPropertyNode = pPropertyNode->next_sibling()) { + if (pPropertyNode) { + const char *propertyName = pPropertyNode->first_attribute("Id")->value(); + if (pClass->GetPropertyManager()->GetElement(propertyName)) { + // error + SQUICK_ASSERT(0, propertyName, __FILE__, __FUNCTION__); + continue; + } + + const char *pstrType = pPropertyNode->first_attribute("Type")->value(); + + SquickData varProperty; + if (TDATA_UNKNOWN == ComputerType(pstrType, varProperty)) { + // std::cout << "error:" << pClass->GetTypeName() << " " << pClass->GetInstancePath() << ": " << propertyName << " type error!!!" << std::endl; + + SQUICK_ASSERT(0, propertyName, __FILE__, __FUNCTION__); + } + + // printf( " Property:%s[%s]\n", propertyName, pstrType ); + + std::shared_ptr xProperty = pClass->GetPropertyManager()->AddProperty(Guid(), propertyName, varProperty.GetType()); + } + } + + return true; +} + +bool ClassModule::AddRecords(rapidxml::xml_node<> *pRecordRootNode, std::shared_ptr pClass) { + for (rapidxml::xml_node<> *pRecordNode = pRecordRootNode->first_node(); pRecordNode; pRecordNode = pRecordNode->next_sibling()) { + if (pRecordNode) { + const char *pstrRecordName = pRecordNode->first_attribute("Id")->value(); + + if (pClass->GetRecordManager()->GetElement(pstrRecordName)) { + // error + // file << pClass->mstrType << ":" << pstrRecordName << std::endl; + // assert(0); + SQUICK_ASSERT(0, pstrRecordName, __FILE__, __FUNCTION__); + continue; + } + + const char *pstrRow = pRecordNode->first_attribute("Row")->value(); + const char *pstrCol = pRecordNode->first_attribute("Col")->value(); + + + std::string strView; + if (pRecordNode->first_attribute("View") != NULL) { + strView = pRecordNode->first_attribute("View")->value(); + } + + std::shared_ptr recordVar(new DataList()); + std::shared_ptr recordTag(new DataList()); + + for (rapidxml::xml_node<> *recordColNode = pRecordNode->first_node(); recordColNode; recordColNode = recordColNode->next_sibling()) { + // const char* pstrColName = recordColNode->first_attribute( "Id" )->value(); + SquickData TData; + const char *pstrColType = recordColNode->first_attribute("Type")->value(); + if (TDATA_UNKNOWN == ComputerType(pstrColType, TData)) { + // assert(0); + SQUICK_ASSERT(0, pstrRecordName, __FILE__, __FUNCTION__); + } + + recordVar->Append(TData); + ////////////////////////////////////////////////////////////////////////// + if (recordColNode->first_attribute("Tag") != NULL) { + const char *pstrTag = recordColNode->first_attribute("Tag")->value(); + recordTag->Add(pstrTag); + } else { + recordTag->Add(""); + } + } + + std::shared_ptr xRecord = pClass->GetRecordManager()->AddRecord(Guid(), pstrRecordName, recordVar, recordTag, atoi(pstrRow)); + + } + } + + return true; +} + +bool ClassModule::AddComponents(rapidxml::xml_node<> *pComponentRootNode, std::shared_ptr pClass) { + /* +for (rapidxml::xml_node<>* pComponentNode = pComponentRootNode->first_node(); pComponentNode; pComponentNode = pComponentNode->next_sibling()) +{ + if (pComponentNode) + { + const char* componentName = pComponentNode->first_attribute("Name")->value(); + const char* strLanguage = pComponentNode->first_attribute("Language")->value(); + const char* strEnable = pComponentNode->first_attribute("Enable")->value(); + bool bEnable = lexical_cast(strEnable); + if (bEnable) + { + if (pClass->GetComponentManager()->GetElement(componentName)) + { + //error + SQUICK_ASSERT(0, componentName, __FILE__, __FUNCTION__); + continue; + } + std::shared_ptr xComponent(new IComponent(Guid(), componentName)); + pClass->GetComponentManager()->AddComponent(componentName, xComponent); + } + } +} + */ + return true; +} + +bool ClassModule::AddClassInclude(const char *pstrClassFilePath, std::shared_ptr pClass) { + if (pClass->Find(pstrClassFilePath)) { + return false; + } + + ////////////////////////////////////////////////////////////////////////// + std::string strFile = pm_->GetWorkPath() + "/res/XlsxXML" + pstrClassFilePath; + std::string content; + pm_->GetFileContent(strFile, content); + + rapidxml::xml_document<> xDoc; + xDoc.parse<0>((char *)content.c_str()); + ////////////////////////////////////////////////////////////////////////// + + // support for unlimited layer class inherits + rapidxml::xml_node<> *root = xDoc.first_node(); + + rapidxml::xml_node<> *pRropertyRootNode = root->first_node("Propertys"); + if (pRropertyRootNode) { + AddProperties(pRropertyRootNode, pClass); + } + + ////////////////////////////////////////////////////////////////////////// + // and record + rapidxml::xml_node<> *pRecordRootNode = root->first_node("Records"); + if (pRecordRootNode) { + AddRecords(pRecordRootNode, pClass); + } + + rapidxml::xml_node<> *pComponentRootNode = root->first_node("Components"); + if (pComponentRootNode) { + AddComponents(pComponentRootNode, pClass); + } + + // pClass->mvIncludeFile.push_back( pstrClassFilePath ); + // and include file + rapidxml::xml_node<> *pIncludeRootNode = root->first_node("Includes"); + if (pIncludeRootNode) { + for (rapidxml::xml_node<> *includeNode = pIncludeRootNode->first_node(); includeNode; includeNode = includeNode->next_sibling()) { + const char *pstrIncludeFile = includeNode->first_attribute("Id")->value(); + // std::vector::iterator it = std::find( pClass->mvIncludeFile.begin(), pClass->mvIncludeFile..end(), pstrIncludeFile ); + + if (AddClassInclude(pstrIncludeFile, pClass)) { + pClass->Add(pstrIncludeFile); + } + } + } + + return true; +} + +bool ClassModule::AddClass(const char *pstrClassFilePath, std::shared_ptr pClass) { + std::shared_ptr pParent = pClass->GetParent(); + while (pParent) { + // inherited some properties form class of parent + std::string fileName = ""; + pParent->First(fileName); + while (!fileName.empty()) { + if (pClass->Find(fileName)) { + fileName.clear(); + continue; + } + + if (AddClassInclude(fileName.c_str(), pClass)) { + pClass->Add(fileName); + } + + fileName.clear(); + pParent->Next(fileName); + } + + pParent = pParent->GetParent(); + } + + ////////////////////////////////////////////////////////////////////////// + if (AddClassInclude(pstrClassFilePath, pClass)) { + pClass->Add(pstrClassFilePath); + } + + // file.close(); + + return true; +} + +bool ClassModule::AddClass(const std::string &className, const std::string &strParentName) { + std::shared_ptr pParentClass = GetElement(strParentName); + std::shared_ptr pChildClass = GetElement(className); + if (!pChildClass) { + pChildClass = std::shared_ptr(new Class(className)); + AddElement(className, pChildClass); + // pChildClass = CreateElement( className ); + + pChildClass->SetTypeName(""); + pChildClass->SetInstancePath(""); + + if (pParentClass) { + pChildClass->SetParent(pParentClass); + } + } + + return true; +} + +bool ClassModule::Load(rapidxml::xml_node<> *attrNode, std::shared_ptr pParentClass) { + const char *pstrLogicClassName = attrNode->first_attribute("Id")->value(); + const char *pstrPath = attrNode->first_attribute("Path")->value(); + const char *pstrInstancePath = attrNode->first_attribute("InstancePath")->value(); + + // printf( "-----------------------------------------------------\n"); + // printf( "%s:\n", pstrLogicClassName ); + + std::shared_ptr pClass(new Class(pstrLogicClassName)); + AddElement(pstrLogicClassName, pClass); + pClass->SetParent(pParentClass); + pClass->SetInstancePath(pstrInstancePath); + + AddClass(pstrPath, pClass); + + for (rapidxml::xml_node<> *pDataNode = attrNode->first_node(); pDataNode; pDataNode = pDataNode->next_sibling()) { + // her children + Load(pDataNode, pClass); + } + // printf( "-----------------------------------------------------\n"); + return true; +} + +bool ClassModule::Load() { + ////////////////////////////////////////////////////////////////////////// + std::string strFile = pm_->GetWorkPath() + "/" + mConfigFileName; + std::string content; + pm_->GetFileContent(strFile, content); + + rapidxml::xml_document<> xDoc; + xDoc.parse<0>((char *)content.c_str()); + ////////////////////////////////////////////////////////////////////////// + // support for unlimited layer class inherits + rapidxml::xml_node<> *root = xDoc.first_node(); + for (rapidxml::xml_node<> *attrNode = root->first_node(); attrNode; attrNode = attrNode->next_sibling()) { + Load(attrNode, NULL); + } + + for (int i = 0; i < mThreadClasses.size(); ++i) { + mThreadClasses[i].classModule->Load(); + } + + return true; +} + +bool ClassModule::Save() { return true; } + +std::shared_ptr ClassModule::GetClassPropertyManager(const std::string &className) { + std::shared_ptr pClass = GetElement(className); + if (pClass) { + return pClass->GetPropertyManager(); + } + + return NULL; +} + +std::shared_ptr ClassModule::GetClassRecordManager(const std::string &className) { + std::shared_ptr pClass = GetElement(className); + if (pClass) { + return pClass->GetRecordManager(); + } + + return NULL; +} + +bool ClassModule::Clear() { return true; } + +bool ClassModule::AddClassCallBack(const std::string &className, const CLASS_EVENT_FUNCTOR_PTR &cb) { + std::shared_ptr pClass = GetElement(className); + if (nullptr == pClass) { + return false; + } + + return pClass->AddClassCallBack(cb); +} + +bool ClassModule::DoEvent(const Guid &objectID, const std::string &className, const CLASS_OBJECT_EVENT classEvent, const DataList &valueList) { + std::shared_ptr pClass = GetElement(className); + if (nullptr == pClass) { + return false; + } + + return pClass->DoEvent(objectID, classEvent, valueList); +} + +bool ClassModule::AfterStart() { return true; } + +IClassModule *ClassModule::GetThreadClassModule(const int index) { return mThreadClasses[index].classModule; } diff --git a/src/squick/plugin/config/element_module.cc b/src/squick/plugin/config/element_module.cc index d9ef7946..595a0a26 100644 --- a/src/squick/plugin/config/element_module.cc +++ b/src/squick/plugin/config/element_module.cc @@ -121,7 +121,7 @@ bool ElementModule::Load() { continue; } ////////////////////////////////////////////////////////////////////////// - std::string strFile = pm_->GetWorkPath() + "/" + strInstancePath; + std::string strFile = strInstancePath; std::string content; pm_->GetFileContent(strFile, content); #ifdef DEBUG diff --git a/src/squick/plugin/lua/lua_pb_module.cc b/src/squick/plugin/lua/lua_pb_module.cc index 76036575..9c7089a9 100644 --- a/src/squick/plugin/lua/lua_pb_module.cc +++ b/src/squick/plugin/lua/lua_pb_module.cc @@ -1,19 +1,19 @@ #include "lua_pb_module.h" bool LuaPBModule::Awake() { - mSourceTree.MapPath("", "../src/proto"); + mSourceTree.MapPath("", "../res/Proto"); m_pImporter = new google::protobuf::compiler::Importer(&mSourceTree, &mErrorCollector); m_pFactory = new google::protobuf::DynamicMessageFactory(); mnTime = pm_->GetNowTime(); - + m_log_ = this->pm_->FindModule(); return true; } bool LuaPBModule::Start() { return true; } bool LuaPBModule::AfterStart() { - m_log_ = this->pm_->FindModule(); + return true; } @@ -40,9 +40,8 @@ bool LuaPBModule::ImportProtoFile(const std::string &strFile) { if (!pDesc) { LOG_ERROR("Unknow protobuf file to import struct name: %v", strFile); }; - ret = true; - } catch (exception e) { + } catch (...) { } return ret; } diff --git a/src/squick/plugin/net/pb_log_module.cc b/src/squick/plugin/net/pb_log_module.cc index c1064613..7244c286 100644 --- a/src/squick/plugin/net/pb_log_module.cc +++ b/src/squick/plugin/net/pb_log_module.cc @@ -3,7 +3,7 @@ bool PbLogModule::Awake() { m_log_ = pm_->FindModule(); - source_tree_.MapPath("", "../src/proto"); + source_tree_.MapPath("", "../res/Proto"); importer_ = new google::protobuf::compiler::Importer(&source_tree_, &error_collector_); factory_ = new google::protobuf::DynamicMessageFactory(); ImportProtoFiles(); diff --git a/src/tools/sqkcli/CMakeLists.txt b/src/tools/sqkcli/CMakeLists.txt deleted file mode 100644 index 7d6e7f99..00000000 --- a/src/tools/sqkcli/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -add_subdirectory(core) - -set(ProjectName "sqkcli") -file(GLOB soruces *.cc) -file(GLOB headers *.h) - -add_executable(${ProjectName} ${soruces} ${headers}) - -if (APPLE) - -elseif(UNIX) -target_link_libraries( ${ProjectName} -pthread libprotobuf.so) -else() - target_link_libraries(${ProjectName} libprotobufd.dll) -endif() - -LinkStruct(${ProjectName}) -LinkCore(${ProjectName}) -SquickOut(${ProjectName} "tools/sqkcli" ${SQUICK_BUILD_EXE_PATH} "sqkcli") diff --git a/src/tools/sqkcli/chat/ws_chat.html b/src/tools/sqkcli/chat/ws_chat.html deleted file mode 100644 index c2a3bb68..00000000 --- a/src/tools/sqkcli/chat/ws_chat.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - -

Squick WebSocket Chat Demo

- Server: - - -
- Message: -
- -
- Input: - - - - diff --git a/src/tools/sqkcli/core/CMakeLists.txt b/src/tools/sqkcli/core/CMakeLists.txt deleted file mode 100644 index 68f2dc29..00000000 --- a/src/tools/sqkcli/core/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -set(ProjectName "sqkcli_core") -file(GLOB soruces *.cc) -file(GLOB headers *.h) -add_library(${ProjectName} SHARED ${soruces} ${headers}) -LinkStruct(${ProjectName}) -LinkCore(${ProjectName}) -SquickOut(${ProjectName} "tools/sqkcli/plugin" ${SQUICK_BUILD_PLUGIN_SQKCLI_PATH} "core") \ No newline at end of file diff --git a/src/tools/sqkcli/core/i_tester_module.h b/src/tools/sqkcli/core/i_tester_module.h deleted file mode 100644 index d5b0cb8e..00000000 --- a/src/tools/sqkcli/core/i_tester_module.h +++ /dev/null @@ -1,7 +0,0 @@ - -#pragma once - -#include -namespace tester::core { -class ITesterModule : public IModule {}; -} // namespace tester::core \ No newline at end of file diff --git a/src/tools/sqkcli/core/main.cc b/src/tools/sqkcli/core/main.cc deleted file mode 100644 index 503450ce..00000000 --- a/src/tools/sqkcli/core/main.cc +++ /dev/null @@ -1,69 +0,0 @@ -#include -#include -#include -#include - -void BasicPluginLoader(IPluginManager *pm_) { - // 可自行设定加载的插件 -} - -void MidWareLoader(IPluginManager *pm_) { - // 可自行设定加载的中间件插件 -} - -int main(int argc, char *argv[]) { - // std::cout << "__cplusplus:" << __cplusplus << std::endl; - - // 强制加载squick_struct依赖 - void *libLoad = (void *)&rpc::_Vector3_default_instance_; - - // std::cout << libLoad << std::endl; - - std::vector> serverList; // 服务器列表 - - std::string strArgvList; - for (int i = 0; i < argc; i++) { - strArgvList += " "; - strArgvList += argv[i]; - } - - if (argc == 1) // 如果没加参数运行 - { - std::cout << "<< Squick tester Help >>\n" - "Usage: plugin=plugin_file server=server_name id=server_id [-d]\n" - "Introduce:\n" - " plugin: Set your plugin file to load\n" - " server: Your server name, logger module will use it to log\n" - " id : Set your server id, using it to load server configure informations\n" - " -d : Run server in background\n" - "Examples: ./squick plugin=test.xml server=defualt id=1\n"; - "\n"; - - serverList.push_back(std::shared_ptr(new PluginServer(strArgvList + " type=master id=1"))); - } else { - serverList.push_back(std::shared_ptr(new PluginServer(strArgvList))); - } - - for (auto item : serverList) { - item->SetBasicWareLoader(BasicPluginLoader); - item->SetMidWareLoader(MidWareLoader); - item->Start(); - } - - //////////////// - uint64_t nIndex = 0; - while (true) { - nIndex++; - - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - for (auto item : serverList) { - item->Update(); - } - } - - for (auto item : serverList) { - item->Final(); - } - serverList.clear(); - return 0; -} \ No newline at end of file diff --git a/src/tools/sqkcli/core/plugin.cc b/src/tools/sqkcli/core/plugin.cc deleted file mode 100644 index dbdbf1b1..00000000 --- a/src/tools/sqkcli/core/plugin.cc +++ /dev/null @@ -1,22 +0,0 @@ - -#include "plugin.h" -#include "test_module.h" -#include "tester_module.h" -namespace tester::core { - -SQUICK_EXPORT void SquickPluginLoad(IPluginManager *pm){CREATE_PLUGIN(pm, Plugin)}; - -SQUICK_EXPORT void SquickPluginUnload(IPluginManager *pm){DESTROY_PLUGIN(pm, Plugin)}; - -const int Plugin::GetPluginVersion() { return 0; } - -const std::string Plugin::GetPluginName() { return GET_CLASS_NAME(Plugin); } - -void Plugin::Install() { - REGISTER_MODULE(pm_, ITesterModule, TesterModule) - // REGISTER_MODULE(pm_, ITestModule, TestModule) -} - -void Plugin::Uninstall() { UNREGISTER_MODULE(pm_, ITesterModule, TesterModule); } - -} // namespace tester::core \ No newline at end of file diff --git a/src/tools/sqkcli/core/plugin.h b/src/tools/sqkcli/core/plugin.h deleted file mode 100644 index e90c4f94..00000000 --- a/src/tools/sqkcli/core/plugin.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include -namespace tester::core { -class Plugin : public IPlugin { - public: - Plugin(IPluginManager *p) { pm_ = p; } - virtual const int GetPluginVersion(); - - virtual const std::string GetPluginName(); - - virtual void Install(); - - virtual void Uninstall(); -}; - -} // namespace tester::core \ No newline at end of file diff --git a/src/tools/sqkcli/core/test_module.cc b/src/tools/sqkcli/core/test_module.cc deleted file mode 100644 index 75dd6e9f..00000000 --- a/src/tools/sqkcli/core/test_module.cc +++ /dev/null @@ -1,143 +0,0 @@ - - -#include "test_module.h" - -bool TestModule::Awake() { - int argc = 0; - char *c = new char[1]; - //::testing::GTEST_FLAG(output) = "xml:hello.xml"; - //::testing::StartGoogleTest(&argc, &c); - std::cout << "Running" << std::endl; - std::list xModules = pm_->Modules(); // Get all moduels - for (auto it : xModules) { - IModule *pModule = it; - IModule *pTestModule = pm_->FindTestModule(pModule->name_); - if (nullptr != pTestModule) { - pTestModule->Awake(); - } else { - } - } - - return true; -} - -bool TestModule::Start() { - // find all plugins and all modules, then check whether they have a tester - // if any module have't a tester for it then can not start the application - // this is a rule for Squick's world to keep high quality code under TDD - - std::list xModules = pm_->Modules(); - for (auto it : xModules) { - IModule *pModule = it; - IModule *pTestModule = pm_->FindTestModule(pModule->name_); - // pTestModule->Start(); - } - - return true; -} - -bool TestModule::AfterStart() { - std::list xModules = pm_->Modules(); - for (auto it : xModules) { - IModule *pModule = it; - IModule *pTestModule = pm_->FindTestModule(pModule->name_); - pTestModule->AfterStart(); - } - - return true; -} - -bool TestModule::CheckConfig() { - std::list xModules = pm_->Modules(); - for (auto it : xModules) { - IModule *pModule = it; - IModule *pTestModule = pm_->FindTestModule(pModule->name_); - pTestModule->CheckConfig(); - } - - return true; -} - -bool TestModule::ReadyUpdate() { - std::list xModules = pm_->Modules(); - for (auto it : xModules) { - IModule *pModule = it; - IModule *pTestModule = pm_->FindTestModule(pModule->name_); - pTestModule->ReadyUpdate(); - } - - return true; -} - -bool TestModule::Update() { - std::list xModules = pm_->Modules(); - for (auto it : xModules) { - IModule *pModule = it; - IModule *pTestModule = pm_->FindTestModule(pModule->name_); - pTestModule->Update(); - } - - return true; -} - -bool TestModule::BeforeDestroy() { - std::list xModules = pm_->Modules(); - for (auto it : xModules) { - IModule *pModule = it; - IModule *pTestModule = pm_->FindTestModule(pModule->name_); - pTestModule->BeforeDestroy(); - } - - return true; -} - -bool TestModule::Destroy() { - std::list xModules = pm_->Modules(); - for (auto it : xModules) { - IModule *pModule = it; - IModule *pTestModule = pm_->FindTestModule(pModule->name_); - pTestModule->Destroy(); - } - - return true; -} - -bool TestModule::Finalize() { - std::list xModules = pm_->Modules(); - for (auto it : xModules) { - IModule *pModule = it; - IModule *pTestModule = pm_->FindTestModule(pModule->name_); - pTestModule->Finalize(); - } - - return true; -} - -bool TestModule::OnReloadPlugin() { - std::list xModules = pm_->Modules(); - for (auto it : xModules) { - IModule *pModule = it; - IModule *pTestModule = pm_->FindTestModule(pModule->name_); - pTestModule->OnReloadPlugin(); - } - - return true; -} - -int TestModule::Factorial(int n) { - if (1 == n) { - return 1; - } - - return n * Factorial(n - 1); -} - -// Test -/* -TEST(FactorialTest, HandlesPositiveInput) { - EXPECT_EQ(1, this->Factorial(1)); - EXPECT_EQ(2, this->Factorial(2)); - EXPECT_EQ(6, this->Factorial(3)); - EXPECT_EQ(40320, this->Factorial(8)); -} -*/ \ No newline at end of file diff --git a/src/tools/sqkcli/core/test_module.h b/src/tools/sqkcli/core/test_module.h deleted file mode 100644 index 526e2fff..00000000 --- a/src/tools/sqkcli/core/test_module.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once -#include - -class ITestModule : public IModule {}; - -class TestModule : public ITestModule { - public: - TestModule(IPluginManager *p) { - is_update_ = true; - pm_ = p; - } - - virtual ~TestModule(){}; - - virtual bool Awake(); - virtual bool Start(); - virtual bool AfterStart(); - virtual bool CheckConfig(); - virtual bool ReadyUpdate(); - virtual bool Update(); - virtual bool BeforeDestroy(); - virtual bool Destroy(); - virtual bool Finalize(); - virtual bool OnReloadPlugin(); - - protected: - int Factorial(int n); - - private: -}; diff --git a/src/tools/sqkcli/core/tester_module.cc b/src/tools/sqkcli/core/tester_module.cc deleted file mode 100644 index 8a93d309..00000000 --- a/src/tools/sqkcli/core/tester_module.cc +++ /dev/null @@ -1,162 +0,0 @@ - -#include "tester_module.h" -#include "plugin.h" -#include -namespace tester::core { -bool TesterModule::Start() { - // PluginServer::FindParameterValue() - - std::cout << "Squick Tester\n"; - - m_net_ = pm_->FindModule(); - m_log_ = pm_->FindModule(); - m_element_ = pm_->FindModule(); - m_class_ = pm_->FindModule(); - m_net_client_ = pm_->FindModule(); - - return true; -} - -bool TesterModule::AfterStart() { - - string test_type = pm_->FindParameterValue("test="); - if (pm_->FindParameterValue("hide=") == "true") { - is_hide_ = true; - } - - std::cout << test_type << std::endl; - if (test_type == "proxy") { - node_type_ = rpc::ST_PROXY; - ProxyNodeTestInit(); - }else if (test_type == "player") { - node_type_ = rpc::ST_PLAYER; - PlayerNodeTestInit(); - } - return true; -} - -void TesterModule::ProxyNodeTestInit() { - std::cout << "Test proxy node\n"; - m_net_client_->AddReceiveCallBack(rpc::ST_PROXY, rpc::ACK_TEST_PROXY, this, &TesterModule::TestProxyTransferSpeed_Ack); - m_net_client_->AddEventCallBack(rpc::ST_PROXY, this, &TesterModule::OnClientSocketEvent); - - ConnectData s; - s.id = 1; // Just for test - s.type = rpc::ST_PROXY; - s.ip = pm_->GetArg("ip=", "127.0.0.1"); - s.port = pm_->GetArg("port=", 10501); - s.name = "test"; - s.buffer_size = 0; - m_net_client_->AddNode(s); -} - -void TesterModule::PlayerNodeTestInit() { - std::cout << "Test player node\n"; - m_net_client_->AddReceiveCallBack(rpc::ST_PLAYER, rpc::IdTAckConfig, this, &TesterModule::TAckConfig); - m_net_client_->AddEventCallBack(rpc::ST_PLAYER, this, &TesterModule::OnClientSocketEvent); - - ConnectData s; - s.id = 1; // Just for test - s.type = rpc::ST_PLAYER; - s.ip = pm_->GetArg("ip=", "127.0.0.1"); - s.port = pm_->GetArg("port=", 10401); - s.name = "player node test"; - s.buffer_size = 0; - m_net_client_->AddNode(s); -} - -void TesterModule::TestProxyTransferSpeed_Req() { - rpc::Test test; - test.set_index(test_req_index_); - test.set_data(test_req_data_); - test.set_req_time(SquickGetTimeMSEx()); - m_net_client_->SendPBToAllNodeByType(rpc::ST_PROXY, rpc::TestRPC::REQ_TEST_PROXY, test, 0); - test_req_index_++; - test_req_data_ = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"; -} - -void TesterModule::TestProxyTransferSpeed_Ack(const socket_t sock, const int msg_id, const char *msg, const uint32_t len) { - uint64_t uid; - rpc::Test ack; - if (!INetModule::ReceivePB(msg_id, msg, len, ack, uid)) { - std::cout << "Error\n"; - } - - INT64 now_time = SquickGetTimeMSEx(); - static INT64 last_ack_time = 0; - static int last_index = 0; - - if (now_time - last_ack_time > 10000000) { - - if (!is_hide_) - std::cout << "TransferSpeed:" - << "\n req_times: " << ack.index() - last_index << " times/10 second \n last_req_ack_time: " << (now_time - ack.req_time()) / 1000.0f - << " ms " << std::endl; - - last_index = ack.index(); - last_ack_time = now_time; - } -} - -void TesterModule::TReqConfig() { - rpc::TReqConfig test; - test.set_index(test_req_index_); - test.set_data(test_req_data_); - test.set_req_time(SquickGetTimeMSEx()); - m_net_client_->SendPBToAllNode(rpc::IdTReqConfig, test, 0); - - test_req_index_++; - test_req_data_ = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"; -} - -void TesterModule::TAckConfig(const socket_t sock, const int msg_id, const char* msg, const uint32_t len) { - uint64_t uid; - rpc::TAckConfig ack; - if (!INetModule::ReceivePB(msg_id, msg, len, ack, uid)) { - std::cout << "Error\n"; - } - - INT64 now_time = SquickGetTimeMSEx(); - static INT64 last_ack_time = 0; - static int last_index = 0; - - if (now_time - last_ack_time > 10000000) { - - if (!is_hide_) - std::cout << "TestConfig:" - << "\n req_times: " << ack.index() - last_index << " times/10 second \n last_req_ack_time: " << (now_time - ack.req_time()) / 1000.0f - << " ms " << std::endl; - - last_index = ack.index(); - last_ack_time = now_time; - } -} - -void TesterModule::OnClientSocketEvent(const socket_t sock, const SQUICK_NET_EVENT eEvent, INet *pNet) { - if (eEvent & SQUICK_NET_EVENT_EOF) { - } else if (eEvent & SQUICK_NET_EVENT_ERROR) { - } else if (eEvent & SQUICK_NET_EVENT_TIMEOUT) { - } else if (eEvent & SQUICK_NET_EVENT_CONNECTED) { - std::cout << "Start to test ...\n"; - is_connected_ = true; - } -} - -bool TesterModule::Destroy() { return true; } - -bool TesterModule::Update() { - if (is_connected_) { - switch (node_type_) { - case rpc::ST_PROXY: { - TestProxyTransferSpeed_Req(); - } break; - case rpc::ST_PLAYER: { - TReqConfig(); - }break; - - } - } - return true; -} - -} // namespace tester::core diff --git a/src/tools/sqkcli/core/tester_module.h b/src/tools/sqkcli/core/tester_module.h deleted file mode 100644 index 937e85c0..00000000 --- a/src/tools/sqkcli/core/tester_module.h +++ /dev/null @@ -1,54 +0,0 @@ -#pragma once - -#include "i_tester_module.h" -#include -#include -#include - -namespace tester::core { - -class TesterModule : public ITesterModule { - - public: - TesterModule(IPluginManager *p) { - pm_ = p; - is_update_ = true; - } - - virtual bool Start(); - virtual bool AfterStart(); - virtual bool Destroy(); - virtual bool Update(); - - protected: - void ProxyNodeTestInit(); - void PlayerNodeTestInit(); - void TestProxyTransferSpeed_Req(); - void TestProxyTransferSpeed_Ack(const socket_t sock, const int msg_id, const char *msg, const uint32_t len); - void TReqConfig(); - void TAckConfig(const socket_t sock, const int msg_id, const char* msg, const uint32_t len); - void OnClientSocketEvent(const socket_t sock, const SQUICK_NET_EVENT eEvent, INet *pNet); - - private: - rpc::NodeType node_type_ = rpc::NodeType::ST_NONE; - bool is_connected_ = false; - - int test_req_index_ = 0; - string test_req_data_; - - INT64 req_time_ = 0; - - int test_ack_index_ = 0; - string test_ack_data_; - - bool is_hide_ = false; - // IKe - - IElementModule *m_element_; - IClassModule *m_class_; - ILogModule *m_log_; - INetModule *m_net_; - INetClientModule *m_net_client_; -}; - -} // namespace tester::core \ No newline at end of file diff --git a/src/tools/sqkcli/main.cc b/src/tools/sqkcli/main.cc deleted file mode 100644 index 7b56731c..00000000 --- a/src/tools/sqkcli/main.cc +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include -#include -#include - -void BasicPluginLoader(IPluginManager *pm_) { - // 可自行设定加载的插件 -} - -void MidWareLoader(IPluginManager *pm_) { - // 可自行设定加载的中间件插件 -} - -int main(int argc, char *argv[]) { - // std::cout << "__cplusplus:" << __cplusplus << std::endl; - - // 强制加载squick_struct依赖 - void *libLoad = (void *)&rpc::_Vector3_default_instance_; - - // std::cout << libLoad << std::endl; - - std::vector> serverList; // 服务器列表 - - std::string strArgvList; - for (int i = 0; i < argc; i++) { - strArgvList += " "; - strArgvList += argv[i]; - } - - if (argc == 1) // 如果没加参数运行 - { - // std::cout << "<< Sqkcli Help >>\n" - // "Usage: plugin=plugin_file server=server_name id=server_id [-d]\n" - // "Introduce:\n" - // " plugin: Set your plugin file to load\n" - // " server: Your server name, logger module will use it to log\n" - // " id : Set your server id, using it to load server configure informations\n" - // " -d : Run server in background\n" - // "Examples: ./squick plugin=test.xml server=defualt id=1\n"; - // "\n"; - serverList.push_back(std::shared_ptr(new PluginServer(strArgvList + " type=sqkcli test=proxy id=100000"))); - } else { - serverList.push_back(std::shared_ptr(new PluginServer(strArgvList))); - } - - for (auto item : serverList) { - item->SetBasicWareLoader(BasicPluginLoader); - item->SetMidWareLoader(MidWareLoader); - item->Start(); - } - - //////////////// - uint64_t nIndex = 0; - while (true) { - nIndex++; - - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - for (auto item : serverList) { - item->Update(); - } - } - - //////////////// - for (auto item : serverList) { - item->Final(); - } - - serverList.clear(); - - return 0; -} \ No newline at end of file diff --git a/src/tools/sqkctl/CMakeLists.txt b/src/tools/sqkctl/CMakeLists.txt deleted file mode 100644 index f6879944..00000000 --- a/src/tools/sqkctl/CMakeLists.txt +++ /dev/null @@ -1,132 +0,0 @@ -set(ProjectName "sqkctl") - -include_directories( - minizip - tinyxml2 - zlib) - -set(SolutionDir ${PROJECT_SOURCE_DIR}/../../..) -set(CMAKE_CXX_STANDARD 17) - -include_directories( - ${SolutionDir} - ${SolutionDir}/src/ - ${SolutionDir}/third_party/ - ${SolutionDir}/third_party/build/include - ${SolutionDir}/third_party/zlib - ) - -file(GLOB sqkctl_cc *.cc) -file(GLOB sqkctl_h *.h) - - -file(GLOB sqkctl_excel_minizip_c ${SolutionDir}/third_party/minizip/ioapi.c ${SolutionDir}/third_party/minizip/ioapi_mem.c ${SolutionDir}/third_party/minizip/unzip.c) -file(GLOB sqkctl_excel_minizip_h ${SolutionDir}/third_party/minizip/*.h) -source_group("minizip" FILES ${sqkctl_excel_minizip_c}) -source_group("minizip" FILES ${sqkctl_excel_minizip_h}) - - -file(GLOB sqkctl_excel_zlib_c ${SolutionDir}/third_party/zlib/*.c) -file(GLOB sqkctl_excel_zlib_h ${SolutionDir}/third_party/zlib/*.h) -source_group("zlib" FILES ${sqkctl_excel_zlib_c}) -source_group("zlib" FILES ${sqkctl_excel_zlib_h}) - - -file(GLOB sqkctl_third_party_common_hpp ${SolutionDir}/third_party/common/*.hpp) -source_group("common" FILES ${sqkctl_third_party_common_hpp}) - -file(GLOB sqkctl_excel_cc ./excel/*.cc) -file(GLOB sqkctl_excel_h ./excel/*.h) -source_group("excel" FILES ${sqkctl_excel_cc}) -source_group("excel" FILES ${sqkctl_excel_h}) - - -file(GLOB sqkctl_init_cc ./init/*.cc) -file(GLOB sqkctl_init_h ./init/*.h) -source_group("init" FILES ${sqkctl_init_cc}) -source_group("init" FILES ${sqkctl_init_h}) - -file(GLOB sqkctl_diff_cc ./diff/*.cc) -file(GLOB sqkctl_diff_h ./diff/*.h) -source_group("diff" FILES ${sqkctl_diff_cc}) -source_group("diff" FILES ${sqkctl_diff_h}) - -file(GLOB sqkctl_add_cc ./add/*.cc) -file(GLOB sqkctl_add_h ./add/*.h) -source_group("add" FILES ${sqkctl_add_cc}) -source_group("add" FILES ${sqkctl_add_h}) - -file(GLOB sqkctl_patch_cc ./patch/*.cc) -file(GLOB sqkctl_patch_h ./patch/*.h) -source_group("patch" FILES ${sqkctl_patch_cc}) -source_group("patch" FILES ${sqkctl_patch_h}) - - -file(GLOB sqkctl_update_cc ./update/*.cc) -file(GLOB sqkctl_update_h ./update/*.h) -source_group("update" FILES ${sqkctl_update_cc}) -source_group("update" FILES ${sqkctl_update_h}) - -file(GLOB sqkctl_pull_cc ./pull/*.cc) -file(GLOB sqkctl_pull_h ./pull/*.h) -source_group("pull" FILES ${sqkctl_pull_cc}) -source_group("pull" FILES ${sqkctl_pull_h}) - - -add_executable(${ProjectName} - ${sqkctl_cc} - ${sqkctl_h} - - ${sqkctl_excel_cc} - ${sqkctl_excel_h} - ${sqkctl_excel_minizip_c} - ${sqkctl_excel_minizip_h} - ${sqkctl_excel_zlib_c} - ${sqkctl_excel_zlib_h} - - ${sqkctl_init_h} - ${sqkctl_init_cc} - - ${sqkctl_diff_h} - ${sqkctl_diff_cc} - - ${sqkctl_add_h} - ${sqkctl_add_cc} - - ${sqkctl_patch_h} - ${sqkctl_patch_cc} - - ${sqkctl_third_party_common_hpp} - ) - - -# 工程输出 -macro(SquickOut proName outFolder outPath outName) -set_target_properties( ${proName} PROPERTIES OUTPUT_NAME ${outName} ) -set_target_properties( ${proName} PROPERTIES PREFIX "") -set_target_properties( ${proName} PROPERTIES - FOLDER ${outFolder} - RUNTIME_OUTPUT_DIRECTORY ${outPath} - RUNTIME_OUTPUT_DIRECTORY ${outPath} - ARCHIVE_OUTPUT_DIRECTORY ${outPath} - ARCHIVE_OUTPUT_DIRECTORY ${outPath} - LIBRARY_OUTPUT_DIRECTORY ${outPath} - LIBRARY_OUTPUT_DIRECTORY ${outPath} - RUNTIME_OUTPUT_DIRECTORY_DEBUG ${outPath} - RUNTIME_OUTPUT_DIRECTORY_RELEASE ${outPath} - ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${outPath} - ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${outPath} - LIBRARY_OUTPUT_DIRECTORY_DEBUG ${outPath} - LIBRARY_OUTPUT_DIRECTORY_RELEASE ${outPath} -) -endmacro(SquickOut) - -if (UNIX) - SET ( CMAKE_CXX_FLAGS "-g" ) -endif() - -SquickOut(${ProjectName} ${ProjectName} ${SolutionDir}/tools/bin ${ProjectName}) -add_definitions( - -D_CRT_SECURE_NO_WARNINGS - -D_CRT_NONSTDC_NO_DEPRECATE -) diff --git a/src/tools/sqkctl/add/add.h b/src/tools/sqkctl/add/add.h deleted file mode 100644 index 4ee47ebb..00000000 --- a/src/tools/sqkctl/add/add.h +++ /dev/null @@ -1,130 +0,0 @@ -#pragma once -#include "../squick_files.h" -#include -#include -#include -using namespace nlohmann; -using namespace std; -namespace sqkctl::add { - -class Add { - public: - int Exec() { - - ifstream file; - file.open("base.json", ios::in); - if (!file.is_open()) { - cout << " Open base.json file failed!\n"; - return 1; - } - - json baseFiles; - try { - baseFiles = json::parse(file); - } catch (json::exception e) { - cout << e.what() << endl; - return 2; - } - - map baseFilesMap; - json bfiles = baseFiles["files"]; - for (auto jf : bfiles) { - std::string md5 = jf["md5"]; - std::string path = jf["path"]; - // std::cout << "path: " << path << " md5: " << md5 << std::endl; - baseFilesMap[path] = md5; - } - - // get current squick dir files - map currentFilesMap; - string squick_path = "squick"; - auto cfiles = SquickFiles::GetFiles(squick_path); - for (auto fn : cfiles) { - currentFilesMap[fn] = md5file(fn.c_str()); - } - - // Calc - map addedFilesMap; // 增量文件 - map reducedFilesMap; // 减量文件 - map changedFilesMap; // 改变的文件 - - for (auto &f : baseFilesMap) { - auto iter = currentFilesMap.find(f.first); - if (iter == currentFilesMap.end()) { - // not found - reducedFilesMap[f.first] = f.second; - continue; - } - - if (iter->second != f.second) { - changedFilesMap[iter->first] = iter->second; - } - } - - // 计算增量文件 - for (auto &f : currentFilesMap) { - auto iter = baseFilesMap.find(f.first); - if (iter == baseFilesMap.end()) { - // not found - addedFilesMap[f.first] = f.second; - } - } - - // ----------- above code from diff.h - // 在执行Clean的时候,先将files下的所有文件做一个备份,防止在更新squick所有文件的时候,将files目录下的所有文件给删除了。 - SquickFiles::BackupFiles(); - - // 清除 - SquickFiles::CleanFiles(); - - json record; - json recordAdded; - cout << " Added files: " << addedFilesMap.size() << endl; - for (auto f : addedFilesMap) { - json jf; - jf["path"] = f.first; - jf["md5"] = f.second; - recordAdded.push_back(jf); - cout << " " << f.first << endl; - SquickFiles::CopySquickToFiles(f.first); - } - - // record["added"] = recordAdded; - - json recordReduced; - cout << "\n\n Reduced files: " << reducedFilesMap.size() << endl; - for (auto f : reducedFilesMap) { - json jf; - jf["path"] = f.first; - jf["md5"] = f.second; - recordReduced.push_back(jf); - cout << " " << f.first << endl; - } - record["reduced"] = recordReduced; - - cout << "\n\n Changed files: " << changedFilesMap.size() << endl; - json recordChanged; - for (auto f : changedFilesMap) { - json jf; - jf["path"] = f.first; - jf["md5"] = f.second; - recordChanged.push_back(jf); - cout << " " << f.first << endl; - - SquickFiles::CopySquickToFiles(f.first); - } - // record["changed"] = recordChanged; - - fstream base; - base.open("changed.json", ios::out); - std::string outContent = record.dump(); - base.write(outContent.c_str(), outContent.size()); - base.close(); - - cout << " Add files to files directory finished!\n"; - return 0; - } - - private: -}; -} // namespace sqkctl::add diff --git a/src/tools/sqkctl/diff/diff.h b/src/tools/sqkctl/diff/diff.h deleted file mode 100644 index aa3d7204..00000000 --- a/src/tools/sqkctl/diff/diff.h +++ /dev/null @@ -1,123 +0,0 @@ -#pragma once -#include "../squick_files.h" -#include -#include -#include -using namespace nlohmann; -using namespace std; -namespace sqkctl::diff { - -class Diff { - public: - int Exec() { - - ifstream file; - file.open("base.json", ios::in); - if (!file.is_open()) { - cout << " Open base.json file failed!\n"; - return 1; - } - - json baseFiles; - try { - baseFiles = json::parse(file); - } catch (json::exception e) { - cout << e.what() << endl; - return 2; - } - - map baseFilesMap; - json bfiles = baseFiles["files"]; - for (auto jf : bfiles) { - std::string md5 = jf["md5"]; - std::string path = jf["path"]; - // std::cout << "path: " << path << " md5: " << md5 << std::endl; - baseFilesMap[path] = md5; - } - - // get current squick dir files - map currentSquickFilesMap; - string squick_path = "squick"; - auto cfiles = SquickFiles::GetFiles(squick_path); - for (auto fn : cfiles) { - currentSquickFilesMap[fn] = md5file(fn.c_str()); - } - - // Get files - // 计算 - map currentFilesMap; - auto files = Files::GetFileListInFolder("files"); - for (auto fn : files) { - string filepath = fn; - Files::StringReplace(filepath, "\\", "/"); - Files::StringReplace(filepath, "files/", ""); - currentFilesMap[filepath] = md5file(fn.c_str()); - } - - // 基于base - map addedFilesMap; // 增量文件 - map reducedFilesMap; // 减量文件 - map changedFilesMap; // 改变的文件 - - // 基于拥有files之后 - // map unaddedFilesMap; // 未增加的文件 - map unpatchedFilesMap; // 未打patch的文件 - - for (auto &f : baseFilesMap) { - auto iter = currentSquickFilesMap.find(f.first); - if (iter == currentSquickFilesMap.end()) { - // not found - reducedFilesMap[f.first] = f.second; - continue; - } - - if (iter->second != f.second) { - changedFilesMap[iter->first] = iter->second; - } - } - - // 计算增量文件 - for (auto &f : currentSquickFilesMap) { - auto iter = baseFilesMap.find(f.first); - if (iter == baseFilesMap.end()) { - // not found - addedFilesMap[f.first] = f.second; - } - } - - // 计算未打patch的文件,在files里找squick的文件 - for (auto &f : currentFilesMap) { - auto iter = currentSquickFilesMap.find(f.first); - if (iter == currentSquickFilesMap.end()) { - unpatchedFilesMap[f.first] = f.second; - continue; - } - if (iter->second != f.second) { - unpatchedFilesMap[iter->first] = iter->second; - } - } - - // 显示 - cout << " Added files: " << addedFilesMap.size() << endl; - for (auto f : addedFilesMap) { - cout << " " << f.first << endl; - } - - cout << "\n\n Reduced files: " << reducedFilesMap.size() << endl; - for (auto f : reducedFilesMap) { - cout << " " << f.first << endl; - } - - cout << "\n\n Changed files: " << changedFilesMap.size() << endl; - for (auto f : changedFilesMap) { - cout << " " << f.first << endl; - } - - cout << "\n\n Unpatched files in files directory: " << unpatchedFilesMap.size() << endl; - for (auto f : unpatchedFilesMap) { - cout << " " << f.first << endl; - } - return 0; - } -}; -} // namespace sqkctl::diff diff --git a/src/tools/sqkctl/excel/config_generator.cc b/src/tools/sqkctl/excel/config_generator.cc deleted file mode 100644 index f046c73a..00000000 --- a/src/tools/sqkctl/excel/config_generator.cc +++ /dev/null @@ -1,534 +0,0 @@ - -/* - -*/ -#include "config_generator.h" -#include "utf8_to_gbk.h" -#include - -// #include "config_generator.h" - -namespace sqkctl { -Test::Test() {} - -ConfigGenerator::ConfigGenerator(const std::string &excelPath, const std::string &outPath) { - mxGenerators.push_back(new CPPGenerator(excelPath, outPath)); - mxGenerators.push_back(new CSGenerator(excelPath, outPath)); - mxGenerators.push_back(new IniGenerator(excelPath, outPath)); - mxGenerators.push_back(new LogicClassGenerator(excelPath, outPath)); - mxGenerators.push_back(new StructGenerator(excelPath, outPath)); - mxGenerators.push_back(new LuaGenerator(excelPath, outPath)); - - strExcelIniPath = excelPath; - strXMLStructPath = outPath + "/struct"; - strXMLIniPath = outPath + "/ini"; - this->outPath = outPath; -} - -ConfigGenerator::~ConfigGenerator() {} - -bool ConfigGenerator::LoadDataFromExcel() { - LoadDataFromExcel(strExcelIniPath + "/common/IObject.xlsx", "IObject"); - - auto fileList = Files::GetFileListInFolder(strExcelIniPath, 1); - - /////////////////////////////////// - - for (auto filePath : fileList) { - Files::StringReplace(filePath, "\\", "/"); - Files::StringReplace(filePath, "//", "/"); - // std::cout << "Open Excel : " << filePath << std::endl; - if ((int)(filePath.find("$")) != -1) { - continue; - } - - auto strExt = Files::GetFileNameExtByPath(filePath); - if (strExt != ".xlsx") { - continue; - } - - auto fileName = Files::GetFileNameByPath(filePath); - if (fileName == "IObject") { - continue; - } - if (fileName == "Include") { - continue; - } - if (!LoadDataFromExcel(filePath, fileName)) { - std::cout << "Create " + fileName + " failed!" << std::endl; - continue; - } - } - - // auto sideFolderList = GetFolderListInFolder(strExcelIniPath); - - ProcessParts(); - ProcessIncludeFiles(); - ProcessRefFiles(); - - return true; -} - -bool ConfigGenerator::LoadDataFromExcel(const std::string &filePath, const std::string &fileName) { - if (mxClassData.find(fileName) != mxClassData.end()) { - std::cout << filePath << " exist!!!" << std::endl; - return false; - } - - std::cout << filePath << std::endl; - - ClassData *pClassData = new ClassData(); - pClassData->xStructData.className = fileName; - mxClassData[pClassData->xStructData.className] = pClassData; - - pClassData->filePath = filePath; - Files::StringReplace(pClassData->filePath, Files::GetFileNameExtByPath(filePath), ""); - - pClassData->fileFolder = pClassData->filePath; - Files::StringReplace(pClassData->fileFolder, fileName, ""); - /////////////////////////////////////// - // load - - mini_excel_reader::ExcelFile *xExcel = new mini_excel_reader::ExcelFile(); - if (!xExcel->open(filePath.c_str())) { - std::cout << "can't open" << filePath << std::endl; - return false; - } - - std::vector &sheets = xExcel->sheets(); - for (mini_excel_reader::Sheet &sh : sheets) { - LoadDataFromExcel(sh, pClassData); - } - - // load parts - - auto fileList = Files::GetFileListInFolder(pClassData->filePath, 0); - for (auto filePath : fileList) { - Files::StringReplace(filePath, "\\", "/"); - Files::StringReplace(filePath, "//", "/"); - - std::string fileName = Files::GetFileNameByPath(filePath); - if (!fileName.empty()) { - std::string compareName = fileName; - transform(compareName.begin(), compareName.end(), compareName.begin(), ::tolower); - - if (compareName == "include") { - LoadIncludeExcel(pClassData, filePath, fileName); - } else if (compareName == "ref") { - pClassData->ref.push_back(fileName); - } else { - pClassData->parts.push_back(fileName); - } - } - } - - return true; -} - -bool ConfigGenerator::LoadIncludeExcel(ClassData *pClassData, const std::string &strFile, const std::string &fileName) { - mini_excel_reader::ExcelFile *xExcel = new mini_excel_reader::ExcelFile(); - if (!xExcel->open(strFile.c_str())) { - std::cout << "can't open" << strFile << std::endl; - return false; - } - - std::vector &sheets = xExcel->sheets(); - for (mini_excel_reader::Sheet &sh : sheets) { - LoadDataFromExcel(sh, pClassData); - } - - return true; -} - -bool ConfigGenerator::LoadDataFromExcel(mini_excel_reader::Sheet &sheet, ClassData *pClassData) { - const mini_excel_reader::Range &dim = sheet.getDimension(); - - std::string strSheetName = sheet.getName(); - transform(strSheetName.begin(), strSheetName.end(), strSheetName.begin(), ::tolower); - - if (strSheetName.find("property") != std::string::npos) { - LoadDataAndProcessProperty(sheet, pClassData); - LoadIniData(sheet, pClassData); - } else if (strSheetName.find("component") != std::string::npos) { - LoadDataAndProcessComponent(sheet, pClassData); - } else if (strSheetName.find("record") != std::string::npos) { - LoadDataAndProcessRecord(sheet, pClassData); - } else if (strSheetName.find("include") != std::string::npos) { - LoadDataAndProcessIncludes(sheet, pClassData); - } else if (strSheetName.find("ref") != std::string::npos) { - LoadDataAndProcessRef(sheet, pClassData); - } else { - std::cout << pClassData->xStructData.className << " " << strSheetName << std::endl; - assert(0); - } - - return true; -} - -bool ConfigGenerator::LoadIniData(mini_excel_reader::Sheet &sheet, ClassData *pClassData) { - const mini_excel_reader::Range &dim = sheet.getDimension(); - std::string strSheetName = sheet.getName(); - transform(strSheetName.begin(), strSheetName.end(), strSheetName.begin(), ::tolower); - - std::map PropertyIndex; // col index - for (int c = dim.firstCol + 1; c <= dim.lastCol; c++) { - mini_excel_reader::Cell *cell = sheet.getCell(dim.firstRow, c); - if (cell) { - PropertyIndex[cell->value] = c; - } - } - //////////// - for (int r = dim.firstRow + nPropertyHeight; r <= dim.lastRow; r++) { - mini_excel_reader::Cell *pIDCell = sheet.getCell(r, dim.firstCol); - if (pIDCell && !pIDCell->value.empty()) { - ClassElement::ElementData *pIniObject = new ClassElement::ElementData(); - pClassData->xIniData.xElementList[pIDCell->value] = pIniObject; - - for (std::map::iterator itProperty = PropertyIndex.begin(); itProperty != PropertyIndex.end(); ++itProperty) { - std::string propertyName = itProperty->first; - int col = itProperty->second; - - mini_excel_reader::Cell *cell = sheet.getCell(r, col); - if (cell) { - pIniObject->xPropertyList[propertyName] = cell->value; - } else { - pIniObject->xPropertyList[propertyName] = ""; - } - } - } - } - - return false; -} - -bool ConfigGenerator::LoadDataAndProcessProperty(mini_excel_reader::Sheet &sheet, ClassData *pClassData) { - const mini_excel_reader::Range &dim = sheet.getDimension(); - std::string strSheetName = sheet.getName(); - transform(strSheetName.begin(), strSheetName.end(), strSheetName.begin(), ::tolower); - - std::map descIndex; // row index - std::map PropertyIndex; // col index - for (int r = dim.firstRow + 1; r <= dim.firstRow + nPropertyHeight - 1; r++) { - mini_excel_reader::Cell *cell = sheet.getCell(r, dim.firstCol); - if (cell) { - descIndex[cell->value] = r; - } - } - - for (int c = dim.firstCol + 1; c <= dim.lastCol; c++) { - mini_excel_reader::Cell *cell = sheet.getCell(dim.firstRow, c); - if (cell) { - PropertyIndex[cell->value] = c; - } - } - //////////// - - for (std::map::iterator itProperty = PropertyIndex.begin(); itProperty != PropertyIndex.end(); ++itProperty) { - std::string propertyName = itProperty->first; - int col = itProperty->second; - - //////////// - ClassProperty *pClassProperty = new ClassProperty(); - pClassData->xStructData.xPropertyList[propertyName] = pClassProperty; - - //////////// - for (std::map::iterator itDesc = descIndex.begin(); itDesc != descIndex.end(); ++itDesc) { - std::string descName = itDesc->first; - int row = itDesc->second; - - mini_excel_reader::Cell *pCell = sheet.getCell(row, col); - if (pCell) { - std::string descValue = pCell->value; - - pClassProperty->descList[descName] = descValue; - } - } - } - - return false; -} - -bool ConfigGenerator::LoadDataAndProcessComponent(mini_excel_reader::Sheet &sheet, ClassData *pClassData) { - const mini_excel_reader::Range &dim = sheet.getDimension(); - std::string strSheetName = sheet.getName(); - transform(strSheetName.begin(), strSheetName.end(), strSheetName.begin(), ::tolower); - - std::vector colNames; - for (int c = dim.firstCol; c <= dim.lastCol; c++) { - mini_excel_reader::Cell *cell = sheet.getCell(dim.firstRow, c); - if (cell) { - colNames.push_back(cell->value); - } - } - for (int r = dim.firstRow + 1; r <= dim.lastRow; r++) { - std::string testValue = ""; - mini_excel_reader::Cell *cell = sheet.getCell(r, dim.firstCol); - if (cell) { - testValue = cell->value; - } - if (testValue == "") { - continue; - } - // auto componentNode = structDoc.allocate_node(rapidxml::node_element, "Component", NULL); - // componentNodes->append_node(componentNode); - std::string strType = ""; - for (int c = dim.firstCol; c <= dim.lastCol; c++) { - std::string name = colNames[c - 1]; - std::string value = ""; - mini_excel_reader::Cell *cell = sheet.getCell(r, c); - if (cell) { - std::string valueCell = cell->value; - transform(valueCell.begin(), valueCell.end(), valueCell.begin(), ::toupper); - if (valueCell == "TRUE" || valueCell == "FALSE") { - value = valueCell == "TRUE" ? "1" : "0"; - } else { - value = cell->value; - } - - if (name == "Type") { - strType = value; - } - } - // componentNode->append_attribute(structDoc.allocate_attribute(NewChar(name), NewChar(value))); - } - } - return false; -} - -bool ConfigGenerator::LoadDataAndProcessRecord(mini_excel_reader::Sheet &sheet, ClassData *pClassData) { - const mini_excel_reader::Range &dim = sheet.getDimension(); - std::string strSheetName = sheet.getName(); - transform(strSheetName.begin(), strSheetName.end(), strSheetName.begin(), ::tolower); - - for (int nIndex = 0; nIndex < 100; nIndex++) { - int nStartRow = nIndex * nRecordHeight + 1; - int nEndRow = (nIndex + 1) * nRecordHeight; - - mini_excel_reader::Cell *pTestCell = sheet.getCell(nStartRow, dim.firstCol); - if (pTestCell) { - mini_excel_reader::Cell *pNameCell = sheet.getCell(nStartRow, dim.firstCol + 1); - std::string recordName = pNameCell->value; - - //////////// - - ClassRecord *pClassRecord = new ClassRecord(); - pClassData->xStructData.xRecordList[recordName] = pClassRecord; - //////////// - - for (int r = nStartRow + 1; r <= nStartRow + nRecordDescHeight; r++) { - mini_excel_reader::Cell *cellDesc = sheet.getCell(r, dim.firstCol); - mini_excel_reader::Cell *cellValue = sheet.getCell(r, dim.firstCol + 1); - - pClassRecord->descList[cellDesc->value] = cellValue->value; - } - - int nRecordCol = atoi(pClassRecord->descList["Col"].c_str()); - for (int c = dim.firstCol; c <= nRecordCol; c++) { - int r = nStartRow + nRecordDescHeight + 1; - mini_excel_reader::Cell *pCellColName = sheet.getCell(r, c); - mini_excel_reader::Cell *pCellColType = sheet.getCell(r + 1, c); - mini_excel_reader::Cell *pCellColDesc = sheet.getCell(r + 2, c); - - ClassRecord::RecordColDesc *pRecordColDesc = new ClassRecord::RecordColDesc(); - pRecordColDesc->index = c - 1; - pRecordColDesc->type = pCellColType->value; - if (pCellColDesc) { - pRecordColDesc->desc = pCellColDesc->value; - } - - pClassRecord->colList[pCellColName->value] = pRecordColDesc; - } - } - } - - return true; -} - -bool ConfigGenerator::LoadDataAndProcessIncludes(mini_excel_reader::Sheet &sheet, ClassData *pClassData) { - const mini_excel_reader::Range &dim = sheet.getDimension(); - std::string strSheetName = sheet.getName(); - transform(strSheetName.begin(), strSheetName.end(), strSheetName.begin(), ::tolower); - - for (int r = dim.firstRow; r <= dim.lastRow; r++) { - mini_excel_reader::Cell *cell = sheet.getCell(r, dim.firstCol); - if (cell) { - std::string valueCell = cell->value; - bool included = false; - for (std::string fileName : pClassData->includes) { - if (valueCell == fileName) { - included = true; - break; - } - } - - if (!included) { - pClassData->includes.push_back(valueCell); - } - } - } - - return true; -} - -bool ConfigGenerator::LoadDataAndProcessRef(mini_excel_reader::Sheet &sheet, ClassData *pClassData) { - const mini_excel_reader::Range &dim = sheet.getDimension(); - std::string strSheetName = sheet.getName(); - transform(strSheetName.begin(), strSheetName.end(), strSheetName.begin(), ::tolower); - - for (int r = dim.firstRow; r <= dim.lastRow; r++) { - mini_excel_reader::Cell *cell = sheet.getCell(r, dim.firstCol); - if (cell) { - std::string valueCell = cell->value; - bool included = false; - for (std::string fileName : pClassData->ref) { - if (valueCell == fileName) { - included = true; - break; - } - } - - if (!included) { - pClassData->ref.push_back(valueCell); - } - } - } - - return true; -} - -bool ConfigGenerator::GenerateData() { - for (auto generator : mxGenerators) { - generator->Generate(mxClassData); - } - - return false; -} - -void ConfigGenerator::SetUTF8(const bool b) { bConvertIntoUTF8 = b; } - -void ConfigGenerator::PrintData() { - for (auto data : mxClassData) { - PrintData(data.second); - } -} - -void ConfigGenerator::PrintData(ClassData *data) { - std::cout << "------------"; - std::cout << "Class Name:" << data->xStructData.className << std::endl; - std::cout << "File Path:" << data->filePath << std::endl; - std::cout << "File Folder:" << data->fileFolder << std::endl; - std::cout << "Be Included:" << data->beIncluded << std::endl; - - std::cout << "File Include:" << std::endl; - for (auto file : data->includes) { - std::cout << file << std::endl; - } - - std::cout << "Be Parted:" << data->beParted << std::endl; - - std::cout << "File Parents:" << std::endl; - for (auto file : data->parents) { - std::cout << file << std::endl; - } - - std::cout << "File Parts:" << std::endl; - for (auto file : data->parts) { - std::cout << file << std::endl; - } - - std::cout << "Ref:" << data->ref.size() << std::endl; - std::cout << "File Ref:" << std::endl; - for (auto file : data->ref) { - std::cout << file << std::endl; - } -} - -void ConfigGenerator::ProcessParts() { - std::vector parentObjects; - for (auto classData : mxClassData) { - if (classData.second->parts.size() > 0) { - parentObjects.push_back(classData.second); - } - } - - for (auto parentObject : parentObjects) { - for (auto className : parentObject->parts) { - auto it = mxClassData.find(className); - ClassData *partialClass = it->second; - if (partialClass) { - partialClass->beParted = true; - for (auto property : partialClass->xStructData.xPropertyList) { - parentObject->xStructData.xPropertyList[property.first] = property.second; - } - - for (auto record : partialClass->xStructData.xRecordList) { - parentObject->xStructData.xRecordList[record.first] = record.second; - } - - for (auto element : partialClass->xIniData.xElementList) { - parentObject->xIniData.xElementList[element.first] = element.second; - } - - // partial class doesnt need to generate Ini xml file - partialClass->xIniData.xElementList.clear(); - } - } - } -} - -void ConfigGenerator::ProcessIncludeFiles() { - std::vector parentObjects; - for (auto classData : mxClassData) { - if (classData.second->includes.size() > 0) { - parentObjects.push_back(classData.second); - } - } - - for (auto parentObject : parentObjects) { - for (auto className : parentObject->includes) { - auto it = mxClassData.find(className); - ClassData *subClass = it->second; - - if (subClass) { - subClass->beIncluded = true; - subClass->parents.push_back(parentObject->xStructData.className); - - for (auto property : subClass->xStructData.xPropertyList) { - // parentObject->xStructData.xPropertyList.insert(std::make_pair(property.first, property.second)); - } - - for (auto record : subClass->xStructData.xRecordList) { - // parentObject->xStructData.xRecordList.insert(std::make_pair(record.first, record.second)); - } - } - } - } -} - -void ConfigGenerator::ProcessRefFiles() { - std::vector parentObjects; - for (auto classData : mxClassData) { - if (classData.second->ref.size() > 0) { - parentObjects.push_back(classData.second); - } - } - - for (auto parentObject : parentObjects) { - for (auto className : parentObject->ref) { - auto it = mxClassData.find(className); - ClassData *subClass = it->second; - - if (subClass) { - for (auto property : subClass->xStructData.xPropertyList) { - parentObject->xStructData.xPropertyList.insert(std::make_pair(property.first, property.second)); - } - - for (auto record : subClass->xStructData.xRecordList) { - parentObject->xStructData.xRecordList.insert(std::make_pair(record.first, record.second)); - } - } - } - } -} - -} // namespace sqkctl diff --git a/src/tools/sqkctl/excel/config_generator.h b/src/tools/sqkctl/excel/config_generator.h deleted file mode 100644 index 36c3ab8c..00000000 --- a/src/tools/sqkctl/excel/config_generator.h +++ /dev/null @@ -1,63 +0,0 @@ -#pragma once - -#include "cpp_generator.h" -#include "cs_generator.h" -#include "ini_generator.h" -#include "logic_class_generator.h" -#include "lua_generator.h" -#include "mini_excel_reader.h" -#include "struct_generator.h" -#include "third_party/common/lexical_cast.hpp" -#include - -namespace sqkctl { -class Test { - public: - Test(); -}; - -class ConfigGenerator { - public: - ConfigGenerator(const std::string &excelPath, const std::string &out_path); - virtual ~ConfigGenerator(); - bool LoadDataFromExcel(); - void SetUTF8(const bool b); - bool GenerateData(); - void PrintData(); - void PrintData(ClassData *data); - - private: - bool LoadDataFromExcel(const std::string &filePath, const std::string &fileName); - bool LoadIncludeExcel(ClassData *pClassData, const std::string &strFile, const std::string &fileName); - - bool LoadDataFromExcel(mini_excel_reader::Sheet &sheet, ClassData *pClassData); - - bool LoadIniData(mini_excel_reader::Sheet &sheet, ClassData *pClassData); - bool LoadDataAndProcessProperty(mini_excel_reader::Sheet &sheet, ClassData *pClassData); - bool LoadDataAndProcessComponent(mini_excel_reader::Sheet &sheet, ClassData *pClassData); - bool LoadDataAndProcessRecord(mini_excel_reader::Sheet &sheet, ClassData *pClassData); - bool LoadDataAndProcessIncludes(mini_excel_reader::Sheet &sheet, ClassData *pClassData); - bool LoadDataAndProcessRef(mini_excel_reader::Sheet &sheet, ClassData *pClassData); - - void ProcessParts(); - void ProcessIncludeFiles(); - void ProcessRefFiles(); - - private: - bool bConvertIntoUTF8 = false; - - // Excel base header attr line define - const int nPropertyHeight = 3; // property line - const int nRecordHeight = 6; // record line - const int nRecordDescHeight = 2; // record line - - std::string outPath; - std::string strExcelIniPath; // = "../excel/"; - std::string strXMLStructPath; // = "../struct/"; - std::string strXMLIniPath; // = "../ini/"; - - std::map mxClassData; - std::vector mxGenerators; -}; - -} // namespace sqkctl diff --git a/src/tools/sqkctl/excel/config_generator_data.h b/src/tools/sqkctl/excel/config_generator_data.h deleted file mode 100644 index 30e4d9f7..00000000 --- a/src/tools/sqkctl/excel/config_generator_data.h +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once - -#include -#include -namespace sqkctl { -class ClassProperty { - public: - ClassProperty() {} - - std::map descList; // tag, value - std::string name; - std::string type; -}; - -class ClassRecord { - public: - ClassRecord() {} - - struct RecordColDesc { - int index; - std::string type; - std::string desc; - }; - - std::string className; - std::map descList; // tag, value - std::map colList; // tag, desc -}; - -class ClassStruct { - public: - ClassStruct() {} - std::string className; - std::map xPropertyList; // key, desc - std::map xRecordList; // name, desc -}; - -class ClassElement { - public: - ClassElement() {} - - class ElementData { - public: - std::map xPropertyList; - }; - - std::map xElementList; // key, iniList -}; - -class ClassData { - public: - ClassStruct xStructData; - ClassElement xIniData; - bool beIncluded = false; - bool beParted = false; - std::string filePath; - std::string fileFolder; - std::list includes; - std::list parts; - std::list ref; - std::list parents; -}; - -} // namespace sqkctl \ No newline at end of file diff --git a/src/tools/sqkctl/excel/cpp_generator.h b/src/tools/sqkctl/excel/cpp_generator.h deleted file mode 100644 index 64adb69f..00000000 --- a/src/tools/sqkctl/excel/cpp_generator.h +++ /dev/null @@ -1,181 +0,0 @@ -#pragma once - -#include "i_generator.h" - -namespace sqkctl { -class CPPGenerator : public IGenerator { - public: - CPPGenerator(const std::string &excelPath, const std::string &outPath) { SetPath(excelPath, outPath); } - - virtual bool Generate(const std::map &classData) override { - FILE *hppWriter = fopen((outPath + "/excel/excel.h").c_str(), "w"); - - std::string strFileHead; - - strFileHead = strFileHead + "// -------------------------------------------------------------------------\n" + - "// @FileName : excel.h\n" + "// @Author : I0gan\n" + "// @Module : Excel\n" + - "// -------------------------------------------------------------------------\n\n" + "#ifndef SQUICK_PR_NAME_HPP\n" + - "#define SQUICK_PR_NAME_HPP\n\n" + "#include \n" + "namespace excel\n{\n"; - - fwrite(strFileHead.c_str(), strFileHead.length(), 1, hppWriter); - ///////////////////////////////////////////////////// - - ClassData *pBaseObject = classData.at("IObject"); - std::string instanceField = "\n"; - - for (std::map::const_iterator it = classData.begin(); it != classData.end(); ++it) { - const std::string &className = it->first; - ClassData *pClassDta = it->second; - - if (pClassDta->beIncluded || pClassDta->beParted || className == "Include") { - continue; - } - - // cpp - std::string strPropertyInfo; - - strPropertyInfo += "\tclass " + className + "\n\t{\n\tpublic:\n"; - strPropertyInfo += "\t\t//Class name\n\t"; - strPropertyInfo += "\tstatic const std::string& ThisName(){ static std::string x = \"" + className + "\"; return x; };"; - - instanceField += "\tconst std::string " + className + "::ThisName = \"" + className + "\";\n"; - - if (className != "IObject") { - // add base class properties - strPropertyInfo += "\t\t// IObject\n"; - - for (std::map::iterator itProperty = pBaseObject->xStructData.xPropertyList.begin(); - itProperty != pBaseObject->xStructData.xPropertyList.end(); ++itProperty) { - const std::string &propertyName = itProperty->first; - ClassProperty *pClassProperty = itProperty->second; - - strPropertyInfo += "\t\tstatic const std::string& " + propertyName + "(){ static std::string x = \"" + propertyName + "\"; return x; };"; - strPropertyInfo += "// " + pClassProperty->descList["Type"] + "\n"; - - instanceField += "\tconst std::string " + className + "::" + propertyName + " = \"" + propertyName + "\";\n"; - } - } - - strPropertyInfo += "\t\t// Property\n"; - for (std::map::iterator itProperty = pClassDta->xStructData.xPropertyList.begin(); - itProperty != pClassDta->xStructData.xPropertyList.end(); ++itProperty) { - const std::string &propertyName = itProperty->first; - ClassProperty *pClassProperty = itProperty->second; - - strPropertyInfo += "\t\tstatic const std::string& " + propertyName + "(){ static std::string x = \"" + propertyName + "\"; return x; };"; - strPropertyInfo += "// " + pClassProperty->descList["Type"] + "\n"; - - instanceField += "\tconst std::string " + className + "::" + propertyName + " = \"" + propertyName + "\";\n"; - } - - // include property, come from - - for (std::string item : pClassDta->includes) { - auto includeClass = classData.at(item); - - strPropertyInfo += "\t\t// Include Property, come from " + includeClass->xStructData.className + " \n"; - - for (std::map::iterator itProperty = includeClass->xStructData.xPropertyList.begin(); - itProperty != includeClass->xStructData.xPropertyList.end(); ++itProperty) { - const std::string &propertyName = itProperty->first; - ClassProperty *pClassProperty = itProperty->second; - - strPropertyInfo += "\t\tstatic const std::string& " + propertyName + "(){ static std::string x = \"" + propertyName + "\"; return x; };"; - strPropertyInfo += "// " + pClassProperty->descList["Type"] + "\n"; - - instanceField += "\tconst std::string " + className + "::" + propertyName + " = \"" + propertyName + "\";\n"; - } - } - - fwrite(strPropertyInfo.c_str(), strPropertyInfo.length(), 1, hppWriter); - - // record - std::string strRecordInfo = ""; - strRecordInfo += "\t\t// Record\n"; - - for (std::map::iterator itRecord = pClassDta->xStructData.xRecordList.begin(); - itRecord != pClassDta->xStructData.xRecordList.end(); ++itRecord) { - const std::string &recordName = itRecord->first; - ClassRecord *pClassRecord = itRecord->second; - - std::cout << "save for cpp ---> " << className << "::" << recordName << std::endl; - - strRecordInfo += "\t\tclass " + recordName + "\n\t\t{\n\t\tpublic:\n"; - strRecordInfo += "\t\t\t//Class name\n\t"; - strRecordInfo += "\t\tstatic const std::string& ThisName(){ static std::string x = \"" + recordName + "\"; return x; };\n"; - - instanceField += "\tconst std::string " + className + "::" + recordName + "::ThisName = \"" + recordName + "\";\n"; - - // col - for (int i = 0; i < pClassRecord->colList.size(); ++i) { - for (std::map::iterator itCol = pClassRecord->colList.begin(); - itCol != pClassRecord->colList.end(); ++itCol) { - const std::string &colTag = itCol->first; - ClassRecord::RecordColDesc *pRecordColDesc = itCol->second; - - if (pRecordColDesc->index == i) { - strRecordInfo += - "\t\t\tstatic const int " + colTag + " = " + std::to_string(pRecordColDesc->index) + ";//" + pRecordColDesc->type + "\n"; - } - } - } - - strRecordInfo += "\n\t\t};\n"; - } - - // include record - - for (std::string item : pClassDta->includes) { - auto includeClass = classData.at(item); - - strPropertyInfo += "\t\t// Include Record, come from " + includeClass->xStructData.className + " \n"; - - for (std::map::iterator itRecord = includeClass->xStructData.xRecordList.begin(); - itRecord != includeClass->xStructData.xRecordList.end(); ++itRecord) { - const std::string &recordName = itRecord->first; - ClassRecord *pClassRecord = itRecord->second; - - strRecordInfo += "\t\tclass " + recordName + "\n\t\t{\n\t\tpublic:\n"; - strRecordInfo += "\t\t\t//Class name\n\t"; - strRecordInfo += "\t\tstatic const std::string& ThisName(){ static std::string x = \"" + recordName + "\"; return x; };\n"; - - instanceField += "\tconst std::string " + className + "::" + recordName + "::ThisName = \"" + recordName + "\";\n"; - - // col - for (int i = 0; i < pClassRecord->colList.size(); ++i) { - for (std::map::iterator itCol = pClassRecord->colList.begin(); - itCol != pClassRecord->colList.end(); ++itCol) { - const std::string &colTag = itCol->first; - ClassRecord::RecordColDesc *pRecordColDesc = itCol->second; - - if (pRecordColDesc->index == i) { - strRecordInfo += - "\t\t\tstatic const int " + colTag + " = " + std::to_string(pRecordColDesc->index) + ";//" + pRecordColDesc->type + "\n"; - } - } - } - - strRecordInfo += "\n\t\t};\n"; - } - } - - fwrite(strRecordInfo.c_str(), strRecordInfo.length(), 1, hppWriter); - - std::string strHppEnumInfo = ""; - - std::string strClassEnd; - strClassEnd += "\n\t};\n"; - - fwrite(strClassEnd.c_str(), strClassEnd.length(), 1, hppWriter); - } - - // fwrite(instanceField.c_str(), instanceField.length(), 1, hppWriter); - - std::string strFileEnd = "\n}\n#endif"; - fwrite(strFileEnd.c_str(), strFileEnd.length(), 1, hppWriter); - fclose(hppWriter); - - return false; - } -}; -} // namespace sqkctl \ No newline at end of file diff --git a/src/tools/sqkctl/excel/cs_generator.h b/src/tools/sqkctl/excel/cs_generator.h deleted file mode 100644 index 3ce9fa63..00000000 --- a/src/tools/sqkctl/excel/cs_generator.h +++ /dev/null @@ -1,166 +0,0 @@ -#pragma once - -#include "i_generator.h" -namespace sqkctl { -class CSGenerator : public IGenerator { - public: - CSGenerator(const std::string &excelPath, const std::string &outPath) { SetPath(excelPath, outPath); } - - virtual bool Generate(const std::map &classData) override { - FILE *csWriter = fopen((outPath + "/excel/Excel.cs").c_str(), "w"); - - std::string strFileHead = "// -------------------------------------------------------------------------\n"; - strFileHead = strFileHead + "// @FileName : Excel.cs\n" + "// @Author : I0gan\n" + - "// @Module : Excel\n" + "// -------------------------------------------------------------------------\n\n" + - "using System;\n" - //+ "using System.Collections.Concurrent;\n" - + "using System.Collections.Generic;\n" + "using System.Linq;\n" + "using System.Text;\n" + - "using System.Threading;\n" - //+ "using System.Threading.Tasks;\n\n" - + "namespace Excel\n{\n"; - - fwrite(strFileHead.c_str(), strFileHead.length(), 1, csWriter); - ///////////////////////////////////////////////////// - - ClassData *pBaseObject = classData.at("IObject"); - for (std::map::const_iterator it = classData.begin(); it != classData.end(); ++it) { - const std::string &className = it->first; - ClassData *pClassDta = it->second; - - if (pClassDta->beIncluded || pClassDta->beParted || className == "Include") { - continue; - } - - // cs - std::string strPropertyInfo; - - strPropertyInfo += "\tpublic class " + className + "\n\t{\n"; - strPropertyInfo += "\t\t//Class name\n\t"; - strPropertyInfo += "\tpublic static readonly String ThisName = \"" + className + "\";\n"; - - if (className != "IObject") { - // add base class properties - strPropertyInfo += "\t\t// IObject\n"; - - for (std::map::iterator itProperty = pBaseObject->xStructData.xPropertyList.begin(); - itProperty != pBaseObject->xStructData.xPropertyList.end(); ++itProperty) { - const std::string &propertyName = itProperty->first; - ClassProperty *pClassProperty = itProperty->second; - - strPropertyInfo += "\t\tpublic static readonly String " + propertyName + " = \"" + propertyName + "\";"; - strPropertyInfo += "// " + pClassProperty->descList["Type"] + "\n"; - } - } - - strPropertyInfo += "\t\t// Property\n"; - for (std::map::iterator itProperty = pClassDta->xStructData.xPropertyList.begin(); - itProperty != pClassDta->xStructData.xPropertyList.end(); ++itProperty) { - const std::string &propertyName = itProperty->first; - ClassProperty *pClassProperty = itProperty->second; - - strPropertyInfo += "\t\tpublic static readonly String " + propertyName + " = \"" + propertyName + "\";"; - strPropertyInfo += "// " + pClassProperty->descList["Type"] + "\n"; - } - - // include property, come from - - for (std::string item : pClassDta->includes) { - auto includeClass = classData.at(item); - - strPropertyInfo += "\t\t// Include Property, come from " + includeClass->xStructData.className + " \n"; - - for (std::map::iterator itProperty = includeClass->xStructData.xPropertyList.begin(); - itProperty != includeClass->xStructData.xPropertyList.end(); ++itProperty) { - const std::string &propertyName = itProperty->first; - ClassProperty *pClassProperty = itProperty->second; - - strPropertyInfo += "\t\tpublic static readonly String " + propertyName + " = \"" + propertyName + "\";"; - strPropertyInfo += "// " + pClassProperty->descList["Type"] + "\n"; - } - } - - fwrite(strPropertyInfo.c_str(), strPropertyInfo.length(), 1, csWriter); - - // record - std::string strRecordInfo = ""; - strRecordInfo += "\t\t// Record\n"; - - for (std::map::iterator itRecord = pClassDta->xStructData.xRecordList.begin(); - itRecord != pClassDta->xStructData.xRecordList.end(); ++itRecord) { - const std::string &recordName = itRecord->first; - ClassRecord *pClassRecord = itRecord->second; - - std::cout << "save for cs ---> " << className << "::" << recordName << std::endl; - - strRecordInfo += "\t\tpublic class " + recordName + "\n\t\t{\n"; - strRecordInfo += "\t\t\t//Class name\n\t"; - strRecordInfo += "\t\tpublic static readonly String ThisName = \"" + recordName + "\";\n"; - - // col - for (int i = 0; i < pClassRecord->colList.size(); ++i) { - for (std::map::iterator itCol = pClassRecord->colList.begin(); - itCol != pClassRecord->colList.end(); ++itCol) { - const std::string &colTag = itCol->first; - ClassRecord::RecordColDesc *pRecordColDesc = itCol->second; - - if (pRecordColDesc->index == i) { - strRecordInfo += - "\t\t\tpublic const int " + colTag + " = " + std::to_string(pRecordColDesc->index) + ";//" + pRecordColDesc->type + "\n"; - } - } - } - - strRecordInfo += "\n\t\t}\n"; - } - // include record - - for (std::string item : pClassDta->includes) { - auto includeClass = classData.at(item); - - strPropertyInfo += "\t\t// Include Record, come from " + includeClass->xStructData.className + " \n"; - - for (std::map::iterator itRecord = includeClass->xStructData.xRecordList.begin(); - itRecord != includeClass->xStructData.xRecordList.end(); ++itRecord) { - const std::string &recordName = itRecord->first; - ClassRecord *pClassRecord = itRecord->second; - - strRecordInfo += "\t\tpublic class " + recordName + "\n\t\t{\n"; - strRecordInfo += "\t\t\t//Class name\n\t"; - strRecordInfo += "\t\tpublic static readonly String ThisName = \"" + recordName + "\";\n"; - - // col - for (int i = 0; i < pClassRecord->colList.size(); ++i) { - for (std::map::iterator itCol = pClassRecord->colList.begin(); - itCol != pClassRecord->colList.end(); ++itCol) { - const std::string &colTag = itCol->first; - ClassRecord::RecordColDesc *pRecordColDesc = itCol->second; - - if (pRecordColDesc->index == i) { - strRecordInfo += - "\t\t\tpublic const int " + colTag + " = " + std::to_string(pRecordColDesc->index) + ";//" + pRecordColDesc->type + "\n"; - } - } - } - - strRecordInfo += "\n\t\t}\n"; - } - } - - fwrite(strRecordInfo.c_str(), strRecordInfo.length(), 1, csWriter); - - std::string strHppEnumInfo = ""; - - std::string strClassEnd; - strClassEnd += "\n\t}\n"; - - fwrite(strClassEnd.c_str(), strClassEnd.length(), 1, csWriter); - } - - std::string strFileEnd = "\n}"; - fwrite(strFileEnd.c_str(), strFileEnd.length(), 1, csWriter); - fclose(csWriter); - - return false; - } -}; -} // namespace sqkctl diff --git a/src/tools/sqkctl/excel/i_generator.h b/src/tools/sqkctl/excel/i_generator.h deleted file mode 100644 index c8720977..00000000 --- a/src/tools/sqkctl/excel/i_generator.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "../files.h" -#include "config_generator_data.h" - -#if PLATFORM == PLATFORM_WIN -#include -#endif - -namespace sqkctl { -class IGenerator { - public: - void SetPath(const std::string &excelPath, const std::string &outPath) { - - this->outPath = outPath; - strXMLStructPath = outPath + "/struct/"; - strXMLIniPath = outPath + "/ini/"; - strExcelIniPath = excelPath; - } - - virtual bool Generate(const std::map &classData) = 0; - - std::string strExcelIniPath; - std::string strXMLStructPath; - std::string strXMLIniPath; - std::string outPath; -}; - -} // namespace sqkctl diff --git a/src/tools/sqkctl/excel/ini_generator.h b/src/tools/sqkctl/excel/ini_generator.h deleted file mode 100644 index 782aa8bc..00000000 --- a/src/tools/sqkctl/excel/ini_generator.h +++ /dev/null @@ -1,75 +0,0 @@ - -#pragma once - -#include "i_generator.h" - -namespace sqkctl { -class IniGenerator : public IGenerator { - public: - IniGenerator(const std::string &excelPath, const std::string &outPath) { SetPath(excelPath, outPath); } - - virtual bool Generate(const std::map &classData) override { - strXMLIniPath = outPath + "/ini"; - ClassData *pBaseObject = classData.at("IObject"); - for (std::map::const_iterator it = classData.begin(); it != classData.end(); ++it) { - const std::string &className = it->first; - ClassData *pClassDta = it->second; - - if (pClassDta->beIncluded || pClassDta->beParted || className == "Include") { - continue; - } - - std::cout << "save for ini ---> " << className << std::endl; - - std::string path = pClassDta->filePath; - Files::StringReplace(path, strExcelIniPath, ""); - std::string fileName = strXMLIniPath + path + ".xml"; - - FILE *iniWriter = fopen(fileName.c_str(), "w+"); - if (iniWriter == nullptr) { - std::string folder = pClassDta->fileFolder; - Files::StringReplace(folder, strExcelIniPath, ""); - std::string fileFolder = strXMLIniPath + folder; - -#if PLATFORM == PLATFORM_WIN - mkdir(fileFolder.c_str()); -#else - mkdir(fileFolder.c_str(), 0777); -#endif - - iniWriter = fopen(fileName.c_str(), "w+"); - } - if (iniWriter) { - std::string strFileHead = "\n\n"; - fwrite(strFileHead.c_str(), strFileHead.length(), 1, iniWriter); - - for (std::map::iterator itElement = pClassDta->xIniData.xElementList.begin(); - itElement != pClassDta->xIniData.xElementList.end(); ++itElement) { - - const std::string &strElementName = itElement->first; - ClassElement::ElementData *pIniData = itElement->second; - - std::string strElementData = "\t::iterator itProperty = pIniData->xPropertyList.begin(); itProperty != pIniData->xPropertyList.end(); - ++itProperty) { - const std::string &strKey = itProperty->first; - const std::string &value = itProperty->second; - strElementData += strKey + "=\"" + value + "\" "; - } - strElementData += "/>\n"; - - fwrite(strElementData.c_str(), strElementData.length(), 1, iniWriter); - } - - std::string strFileEnd = ""; - fwrite(strFileEnd.c_str(), strFileEnd.length(), 1, iniWriter); - } else { - std::cout << "save for ini error!!!!!---> " << fileName << std::endl; - } - fclose(iniWriter); - } - - return false; - } -}; -} // namespace sqkctl diff --git a/src/tools/sqkctl/excel/logic_class_generator.h b/src/tools/sqkctl/excel/logic_class_generator.h deleted file mode 100644 index 95c0f52e..00000000 --- a/src/tools/sqkctl/excel/logic_class_generator.h +++ /dev/null @@ -1,59 +0,0 @@ -#pragma once - -#include "i_generator.h" -namespace sqkctl { -class LogicClassGenerator : public IGenerator { - - public: - LogicClassGenerator(const std::string &excelPath, const std::string &outPath) { SetPath(excelPath, outPath); } - - virtual bool Generate(const std::map &classData) override { - std::string fileName = strXMLStructPath + "Root.xml"; - - FILE *iniWriter = fopen(fileName.c_str(), "w"); - - std::string strFileHead = "\n\n"; - fwrite(strFileHead.c_str(), strFileHead.length(), 1, iniWriter); - - ClassData *pBaseObject = classData.at("IObject"); - - std::string strElementData; - strElementData += "\txStructData.className + "\"\t"; - - std::string path = pBaseObject->filePath; - Files::StringReplace(path, strExcelIniPath, ""); - - strElementData += "Path=\"config/struct" + path + ".xml\"\t"; - strElementData += "InstancePath=\"config/ini" + path + ".xml\"\t>\n"; // 已修复bug - - for (std::map::const_iterator it = classData.begin(); it != classData.end(); ++it) { - const std::string &className = it->first; - ClassData *pClassDta = it->second; - if (className == "IObject") { - continue; - } - - if (it->second->beIncluded || it->second->beParted) { - continue; - } - - strElementData += "\t\txStructData.className + "\"\t"; - - std::string path = pClassDta->filePath; - Files::StringReplace(path, strExcelIniPath, ""); - - strElementData += "Path=\"config/struct" + path + ".xml\"\t"; - strElementData += "InstancePath=\"config/ini" + path + ".xml\"\t/>\n"; - } - - strElementData += "\t\n"; - fwrite(strElementData.c_str(), strElementData.length(), 1, iniWriter); - - std::string strFileEnd = ""; - fwrite(strFileEnd.c_str(), strFileEnd.length(), 1, iniWriter); - fclose(iniWriter); - - return false; - } -}; -} // namespace sqkctl diff --git a/src/tools/sqkctl/excel/lua_generator.h b/src/tools/sqkctl/excel/lua_generator.h deleted file mode 100644 index dd1c34db..00000000 --- a/src/tools/sqkctl/excel/lua_generator.h +++ /dev/null @@ -1,151 +0,0 @@ -#pragma once - -#include "i_generator.h" - -namespace sqkctl { -class LuaGenerator : public IGenerator { - public: - LuaGenerator(const std::string &excelPath, const std::string &outPath) { SetPath(excelPath, outPath); } - - virtual bool Generate(const std::map &classData) override { - FILE *hppWriter = fopen((outPath + "/excel/excel.lua").c_str(), "w"); - - std::string strFileHead; - - strFileHead = "-- -------------------------------------------------------------------------\n" - "-- @FileName : excel.h\n" - "-- @Author : I0gan\n" - "-- @Module : Excel\n" - "-- -------------------------------------------------------------------------\n" - "-- Do not edit it, generated from excel files by sqkctl tools\n" - "Excel = {\n"; - - fwrite(strFileHead.c_str(), strFileHead.length(), 1, hppWriter); - - ClassData *pBaseObject = classData.at("IObject"); - for (std::map::const_iterator it = classData.begin(); it != classData.end(); ++it) { - const std::string &className = it->first; - ClassData *pClassDta = it->second; - - if (pClassDta->beIncluded || pClassDta->beParted || className == "Include") { - continue; - } - - // lua - std::string strPropertyInfo; - strPropertyInfo += "\t" + className + "= {\n"; - strPropertyInfo += "\t\t--Class name\n\t"; - strPropertyInfo += "\tThisName=\"" + className + "\",\n"; - - if (className != "IObject") { - // add base class properties - strPropertyInfo += "\t\t-- IObject\n"; - - for (std::map::iterator itProperty = pBaseObject->xStructData.xPropertyList.begin(); - itProperty != pBaseObject->xStructData.xPropertyList.end(); ++itProperty) { - const std::string &propertyName = itProperty->first; - ClassProperty *pClassProperty = itProperty->second; - strPropertyInfo += "\t\t" + propertyName + "=\"" + propertyName + "\","; - strPropertyInfo += "-- " + pClassProperty->descList["Type"] + "\n"; - } - } - - strPropertyInfo += "\t\t-- Property\n"; - for (std::map::iterator itProperty = pClassDta->xStructData.xPropertyList.begin(); - itProperty != pClassDta->xStructData.xPropertyList.end(); ++itProperty) { - const std::string &propertyName = itProperty->first; - ClassProperty *pClassProperty = itProperty->second; - - strPropertyInfo += "\t\t" + propertyName + "=\"" + propertyName + "\","; - strPropertyInfo += "-- " + pClassProperty->descList["Type"] + "\n"; - } - - // include property, come from - - for (std::string item : pClassDta->includes) { - auto includeClass = classData.at(item); - - strPropertyInfo += "\t\t-- Include Property, come from " + includeClass->xStructData.className + " \n"; - - for (std::map::iterator itProperty = includeClass->xStructData.xPropertyList.begin(); - itProperty != includeClass->xStructData.xPropertyList.end(); ++itProperty) { - const std::string &propertyName = itProperty->first; - ClassProperty *pClassProperty = itProperty->second; - - strPropertyInfo += "\t\t" + propertyName + "=\"" + propertyName + "\","; - strPropertyInfo += "-- " + pClassProperty->descList["Type"] + "\n"; - } - } - - fwrite(strPropertyInfo.c_str(), strPropertyInfo.length(), 1, hppWriter); - - // record - std::string strRecordInfo = ""; - strRecordInfo += "\t\t-- Record\n"; - - for (std::map::iterator itRecord = pClassDta->xStructData.xRecordList.begin(); - itRecord != pClassDta->xStructData.xRecordList.end(); ++itRecord) { - const std::string &recordName = itRecord->first; - ClassRecord *pClassRecord = itRecord->second; - - std::cout << "save for lua ---> " << className << "::" << recordName << std::endl; - - strRecordInfo += "\t\t" + recordName + "={\n"; - strRecordInfo += "\t\t\t-- Class name\n\t"; - strRecordInfo += "\t\tThisName=\"" + recordName + "\",\n"; - // col - for (int i = 0; i < pClassRecord->colList.size(); ++i) { - for (std::map::iterator itCol = pClassRecord->colList.begin(); - itCol != pClassRecord->colList.end(); ++itCol) { - const std::string &colTag = itCol->first; - ClassRecord::RecordColDesc *pRecordColDesc = itCol->second; - - if (pRecordColDesc->index == i) { - strRecordInfo += "\t\t\t" + colTag + "=" + std::to_string(pRecordColDesc->index) + ",--" + pRecordColDesc->type + "\n"; - } - } - } - strRecordInfo += "\n\t\t};\n"; - } - - // include record - for (std::string item : pClassDta->includes) { - auto includeClass = classData.at(item); - - strPropertyInfo += "\t\t-- Include Record, come from " + includeClass->xStructData.className + " \n"; - - for (std::map::iterator itRecord = includeClass->xStructData.xRecordList.begin(); - itRecord != includeClass->xStructData.xRecordList.end(); ++itRecord) { - const std::string &recordName = itRecord->first; - ClassRecord *pClassRecord = itRecord->second; - - strRecordInfo += "\t\t" + recordName + "={\n"; - strRecordInfo += "\t\t\t--Class name\n\t"; - strRecordInfo += "\t\tThisName=\"" + recordName + "\",\n"; - // col - for (int i = 0; i < pClassRecord->colList.size(); ++i) { - for (std::map::iterator itCol = pClassRecord->colList.begin(); - itCol != pClassRecord->colList.end(); ++itCol) { - const std::string &colTag = itCol->first; - ClassRecord::RecordColDesc *pRecordColDesc = itCol->second; - - if (pRecordColDesc->index == i) { - strRecordInfo += "\t\t\t" + colTag + "=" + std::to_string(pRecordColDesc->index) + ",--" + pRecordColDesc->type + "\n"; - } - } - } - strRecordInfo += "\n\t\t};\n"; - } - } - fwrite(strRecordInfo.c_str(), strRecordInfo.length(), 1, hppWriter); - std::string strClassEnd; - strClassEnd += "\n\t},\n"; - fwrite(strClassEnd.c_str(), strClassEnd.length(), 1, hppWriter); - } - std::string strFileEnd = "\n}"; - fwrite(strFileEnd.c_str(), strFileEnd.length(), 1, hppWriter); - fclose(hppWriter); - return false; - } -}; -} // namespace sqkctl \ No newline at end of file diff --git a/src/tools/sqkctl/excel/mini_excel_reader.cc b/src/tools/sqkctl/excel/mini_excel_reader.cc deleted file mode 100644 index 4bac4bc3..00000000 --- a/src/tools/sqkctl/excel/mini_excel_reader.cc +++ /dev/null @@ -1,340 +0,0 @@ -#include "mini_excel_reader.h" -#include "third_party/minizip/unzip.h" -#include -#include -#include -#include -#include -#include - -#ifndef PATH_MAX -#define PATH_MAX 260 -#endif -namespace sqkctl::mini_excel_reader { - -struct ZipEntryInfo { - unz_file_pos pos; - uLong uncompressed_size; -}; - -class Zip { - public: - ~Zip(); - - bool open(const char *file); - bool openXML(const char *filename, rapidxml::xml_document<> &doc); - - private: - char *getFileData(const char *filename, unsigned long &size); - std::map _files; - unzFile _zipFile; -}; - -Zip::~Zip() { unzClose(_zipFile); } - -bool Zip::open(const char *file) { - _zipFile = unzOpen(file); - - if (!_zipFile) - return false; - - char szCurrentFileName[PATH_MAX]; - unz_file_info64 fileInfo; - - int err = unzGoToFirstFile2(_zipFile, &fileInfo, szCurrentFileName, sizeof(szCurrentFileName) - 1, nullptr, 0, nullptr, 0); - while (err == UNZ_OK) { - unz_file_pos posInfo; - if (unzGetFilePos(_zipFile, &posInfo) == UNZ_OK) { - std::string currentFileName = szCurrentFileName; - - ZipEntryInfo entry; - entry.pos = posInfo; - entry.uncompressed_size = (uLong)fileInfo.uncompressed_size; - _files[currentFileName] = entry; - } - // std::cout << file << " loading: " << szCurrentFileName << " " << err << std::endl; - err = unzGoToNextFile2(_zipFile, &fileInfo, szCurrentFileName, sizeof(szCurrentFileName) - 1, nullptr, 0, nullptr, 0); - - } - - return true; -} - -char *Zip::getFileData(const char *filename, unsigned long &size) { - char *pBuffer = NULL; - - auto it = _files.find(filename); - - if (it == _files.end()) - return NULL; - - ZipEntryInfo fileInfo = it->second; - - int nRet = unzGoToFilePos(_zipFile, &fileInfo.pos); - if (UNZ_OK != nRet) - return NULL; - - nRet = unzOpenCurrentFile(_zipFile); - if (UNZ_OK != nRet) - return NULL; - - pBuffer = new char[fileInfo.uncompressed_size]; - unzReadCurrentFile(_zipFile, pBuffer, fileInfo.uncompressed_size); - - size = fileInfo.uncompressed_size; - unzCloseCurrentFile(_zipFile); - - return pBuffer; -} - -bool Zip::openXML(const char *filename, rapidxml::xml_document<> &doc) { - unsigned long size = 0; - char *data = getFileData(filename, size); - - if (!data) - return false; - - char *pData = new char[size + 1]; - strncpy(pData, data, size); - pData[size] = 0; - doc.parse<0>(pData); - - if (data) - delete[] data; - // if (pData) - // delete[] pData; - - return true; -} - -Sheet::~Sheet() { - for (unsigned i = 0; i < _cells.size(); i++) { - if (_cells[i]) { - delete _cells[i]; - } - } - _cells.clear(); -} - -Cell *Sheet::getCell(int row, int col) { - if (row < _dimension.firstRow || row > _dimension.lastRow) - return nullptr; - if (col < _dimension.firstCol || col > _dimension.lastCol) - return nullptr; - - return _cells[toIndex(row, col)]; -} - -int Sheet::toIndex(int row, int col) { return (row - 1) * (_dimension.lastCol - _dimension.firstCol + 1) + (col - _dimension.firstCol); } - -void ExcelFile::readWorkBook(const char *filename) { - rapidxml::xml_document<> doc; - - _zip->openXML(filename, doc); - - rapidxml::xml_node<> *e = doc.first_node("workbook"); - e = e->first_node("sheets"); - e = e->first_node("sheet"); - - while (e) { - Sheet s; - - s._name = e->first_attribute("name")->value(); - s._rid = e->first_attribute("r:id")->value(); - s._sheetId = lexical_cast(e->first_attribute("sheetId")->value()); - s._visible = (e->first_attribute("state") && !strcmp(e->first_attribute("state")->value(), "hidden")); - - e = e->next_sibling("sheet"); - - _sheets.push_back(s); - } -} - -void ExcelFile::readWorkBookRels(const char *filename) { - rapidxml::xml_document<> doc; - - _zip->openXML(filename, doc); - rapidxml::xml_node<> *e = doc.first_node("Relationships"); - e = e->first_node("Relationship"); - - while (e) { - const char *rid = e->first_attribute("Id")->value(); - - for (Sheet &sheet : _sheets) { - if (sheet._rid == rid) { - sheet._path = "xl/" + std::string(e->first_attribute("Target")->value()); - - break; - } - } - - e = e->next_sibling("Relationship"); - } -} - -void ExcelFile::readSharedStrings(const char *filename) { - rapidxml::xml_document<> doc; - - if (!_zip->openXML(filename, doc)) - return; - - rapidxml::xml_node<> *e = doc.first_node("sst"); - e = e->first_node("si"); - - rapidxml::xml_node<> *t, *r; - int i = 0; - - while (e) { - t = e->first_node("t"); - i++; - if (t) { - const char *text = t->value(); - _sharedString.push_back(text ? text : ""); - } else { - r = e->first_node("r"); - std::string value; - while (r) { - t = r->first_node("t"); - value += t->value(); - r = r->next_sibling("r"); - } - _sharedString.push_back(value); - } - e = e->next_sibling("si"); - } -} - -void ExcelFile::readStyles(const char *filename) { - rapidxml::xml_document<> doc; - - _zip->openXML(filename, doc); -} - -void ExcelFile::parseCell(const std::string &value, int &row, int &col) { - int index = 0; - col = 0; - - int arr[10]; - - while (index < (int)value.length()) { - if (isdigit(value[index])) - break; - arr[index] = value[index] - 'A' + 1; - index++; - } - - for (int i = 0; i < index; i++) { - col += (int)(arr[i] * pow(26, index - i - 1)); - } - - row = atoi(value.c_str() + index); -} - -void ExcelFile::parseRange(const std::string &value, Range &range) { - size_t index = value.find_first_of(':'); - - if (index != std::string::npos) { - parseCell(value.substr(0, index), range.firstRow, range.firstCol); - parseCell(value.substr(index + 1), range.lastRow, range.lastCol); - } else { - parseCell(value, range.firstRow, range.firstCol); - range.lastCol = range.firstCol; - range.lastRow = range.firstRow; - } -} - -void ExcelFile::readSheet(Sheet &sh) { - rapidxml::xml_document<> doc; - rapidxml::xml_node<> *root, *row, *c, *v, *d; - - _zip->openXML(sh._path.c_str(), doc); - - root = doc.first_node("worksheet"); - - d = root->first_node("dimension"); - if (d) - parseRange(d->first_attribute("ref")->value(), sh._dimension); - - row = root->first_node("sheetData"); - row = row->first_node("row"); - - int vecsize = (sh._dimension.lastCol - sh._dimension.firstCol + 1) * (sh._dimension.lastRow - sh._dimension.firstRow + 1); - - sh._cells.resize(vecsize); - - while (row) { - int rowIdx = lexical_cast(row->first_attribute("r")->value()); - c = row->first_node("c"); - - while (c) { - int colIdx = 0; - parseCell(c->first_attribute("r")->value(), rowIdx, colIdx); - int index = sh.toIndex(rowIdx, colIdx); - - const char *s, *t; - - v = c->first_node("v"); - - Cell *cell = new Cell; - - if (v) { - s = v->value(); - if (c->first_attribute("t")) { - t = c->first_attribute("t")->value(); - if (!strcmp(t, "s")) { - cell->value = (char *)_sharedString[atoi(s)].c_str(); - cell->type = "string"; - } else if (!strcmp(t, "b")) { - if (!strcmp(s, "0")) { - cell->value = "FALSE"; - } else { - cell->value = "TRUE"; - } - cell->type = "bool"; - } - } else { - cell->type = "unknow"; - cell->value = (char *)s; - } - } - sh._cells[index] = cell; - c = c->next_sibling("c"); - } - - row = row->next_sibling("row"); - } -} - -ExcelFile::~ExcelFile() { - if (_zip) - delete _zip; -} - -bool ExcelFile::open(const char *filename) { - _zip = new Zip(); - - if (!_zip->open(filename)) - return false; - - readWorkBook("xl/workbook.xml"); - readWorkBookRels("xl/_rels/workbook.xml.rels"); - readSharedStrings("xl/sharedStrings.xml"); - readStyles("styles.xml"); - - for (auto &s : _sheets) { - readSheet(s); - } - - return true; -} - -Sheet *ExcelFile::getSheet(const char *name) { - for (Sheet &sh : _sheets) { - if (sh._name == name) - return &sh; - } - - return nullptr; -} - -} // namespace sqkctl::mini_excel_reader diff --git a/src/tools/sqkctl/excel/mini_excel_reader.h b/src/tools/sqkctl/excel/mini_excel_reader.h deleted file mode 100644 index 5c81808b..00000000 --- a/src/tools/sqkctl/excel/mini_excel_reader.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef _TINYXLSX_H_ -#define _TINYXLSX_H_ -#include "third_party/common/lexical_cast.hpp" -#include "third_party/rapidxml/rapidxml.hpp" -#include "third_party/rapidxml/rapidxml_iterators.hpp" -#include "third_party/rapidxml/rapidxml_print.hpp" -#include "third_party/rapidxml/rapidxml_utils.hpp" -#include -#include -#include - -namespace sqkctl::mini_excel_reader { -struct Cell { - std::string value; - std::string type; -}; - -struct Range { - int firstRow; - int lastRow; - int firstCol; - int lastCol; -}; - -class Sheet { - public: - ~Sheet(); - - bool visible() { return _visible; } - const std::string &getName() { return _name; } - Range &getDimension() { return _dimension; } - - Cell *getCell(int row, int col); - - private: - friend class ExcelFile; - - int toIndex(int row, int col); - - int _sheetId; - bool _visible; - Range _dimension; - - std::string _rid; - std::string _path; - std::string _name; - - std::vector _cells; -}; - -class Zip; - -class ExcelFile { - public: - ~ExcelFile(); - bool open(const char *filename); - - Sheet *getSheet(const char *name); - std::vector &sheets() { return _sheets; } - - private: - void readWorkBook(const char *filename); - void readWorkBookRels(const char *filename); - void readSharedStrings(const char *filename); - void readStyles(const char *filename); - void readSheet(Sheet &sh); - - void parseCell(const std::string &value, int &row, int &col); - void parseRange(const std::string &value, Range &range); - - std::vector _sharedString; - std::vector _sheets; - Zip *_zip; -}; -} // namespace sqkctl::mini_excel_reader - -#endif diff --git a/src/tools/sqkctl/excel/struct_generator.h b/src/tools/sqkctl/excel/struct_generator.h deleted file mode 100644 index 58eb63a6..00000000 --- a/src/tools/sqkctl/excel/struct_generator.h +++ /dev/null @@ -1,148 +0,0 @@ -#pragma once - -#if PLATFORM == PLATFORM_WIN -#include -#endif -#include "i_generator.h" -namespace sqkctl { -class StructGenerator : public IGenerator { - - public: - StructGenerator(const std::string &excelPath, const std::string &outPath) { SetPath(excelPath, outPath); } - - virtual bool Generate(const std::map &classData) override { - ClassData *pBaseObject = classData.at("IObject"); - - for (std::map::const_iterator it = classData.begin(); it != classData.end(); ++it) { - if (it->second->beParted) { - continue; - } - - const std::string &className = it->first; - ClassData *pClassDta = it->second; - - std::cout << "save for struct ---> " << className << std::endl; - std::string path = pClassDta->filePath; - Files::StringReplace(path, strExcelIniPath, ""); - std::string fileName = strXMLStructPath + path + ".xml"; - - FILE *structWriter = fopen(fileName.c_str(), "w+"); - if (structWriter == nullptr) { - std::string folder = pClassDta->fileFolder; - Files::StringReplace(folder, strExcelIniPath, ""); - std::string fileFolder = strXMLStructPath + folder; - -#if PLATFORM == PLATFORM_WIN - mkdir(fileFolder.c_str()); -#else - mkdir(fileFolder.c_str(), 0777); -#endif - - structWriter = fopen(fileName.c_str(), "w+"); - } - - if (structWriter) { - std::string strFileHead = "\n\n"; - fwrite(strFileHead.c_str(), strFileHead.length(), 1, structWriter); - ///////////////////////// - std::string strFilePropertyBegin = "\t\n"; - fwrite(strFilePropertyBegin.c_str(), strFilePropertyBegin.length(), 1, structWriter); - - for (std::map::iterator itProperty = pClassDta->xStructData.xPropertyList.begin(); - itProperty != pClassDta->xStructData.xPropertyList.end(); ++itProperty) { - const std::string &propertyName = itProperty->first; - ClassProperty *xPropertyData = itProperty->second; - - std::string strElementData = "\t\t::iterator itDesc = xPropertyData->descList.begin(); itDesc != xPropertyData->descList.end(); - ++itDesc) { - const std::string &strKey = itDesc->first; - const std::string &value = itDesc->second; - strElementData += strKey + "=\"" + value + "\" "; - } - strElementData += "/>\n"; - fwrite(strElementData.c_str(), strElementData.length(), 1, structWriter); - } - - std::string strFilePropertyEnd = "\t\n"; - fwrite(strFilePropertyEnd.c_str(), strFilePropertyEnd.length(), 1, structWriter); - ////////////////////////////// - - std::string strFileRecordBegin = "\t\n"; - fwrite(strFileRecordBegin.c_str(), strFileRecordBegin.length(), 1, structWriter); - - for (std::map::iterator itRecord = pClassDta->xStructData.xRecordList.begin(); - itRecord != pClassDta->xStructData.xRecordList.end(); ++itRecord) { - const std::string &recordName = itRecord->first; - ClassRecord *xRecordData = itRecord->second; - - // for desc - std::string strElementData = "\t\t::iterator itDesc = xRecordData->descList.begin(); itDesc != xRecordData->descList.end(); ++itDesc) { - const std::string &strKey = itDesc->first; - const std::string &value = itDesc->second; - strElementData += strKey + "=\"" + value + "\"\t "; - } - strElementData += ">\n"; - - // for col list - for (int i = 0; i < xRecordData->colList.size(); ++i) { - for (std::map::iterator itDesc = xRecordData->colList.begin(); - itDesc != xRecordData->colList.end(); ++itDesc) { - const std::string &strKey = itDesc->first; - const ClassRecord::RecordColDesc *pRecordColDesc = itDesc->second; - - if (pRecordColDesc->index == i) { - strElementData += "\t\t\ttype + "\"\tTag=\"" + strKey + "\"/>"; - if (!pRecordColDesc->desc.empty()) { - strElementData += "\n"; - } else { - strElementData += "\n"; - } - } - } - } - - strElementData += "\t\t\n"; - fwrite(strElementData.c_str(), strElementData.length(), 1, structWriter); - } - - std::string strFileRecordEnd = "\t\n"; - fwrite(strFileRecordEnd.c_str(), strFileRecordEnd.length(), 1, structWriter); - - ///////////////////////////////// - - std::string strFileIncludeBegin = "\t\n"; - fwrite(strFileIncludeBegin.c_str(), strFileIncludeBegin.length(), 1, structWriter); - - std::string strFileIncludeBody; - for (auto item : pClassDta->includes) { - auto includeClass = classData.at(item); - - std::string path = includeClass->filePath; - Files::StringReplace(path, strExcelIniPath, ""); - std::string fileName = "config/struct" + path + ".xml"; - - strFileIncludeBody += "\t\t"; - strFileIncludeBody += "\n"; - } - - fwrite(strFileIncludeBody.c_str(), strFileIncludeBody.length(), 1, structWriter); - - std::string strFileIncludeEnd = "\t\n"; - fwrite(strFileIncludeEnd.c_str(), strFileIncludeEnd.length(), 1, structWriter); - - ///////////////////////////////// - std::string strFileEnd = ""; - fwrite(strFileEnd.c_str(), strFileEnd.length(), 1, structWriter); - } else { - std::cout << "save for struct error!!!!!---> " << fileName << std::endl; - } - - fclose(structWriter); - } - - return false; - } -}; -} // namespace sqkctl diff --git a/src/tools/sqkctl/excel/utf8_to_gbk.h b/src/tools/sqkctl/excel/utf8_to_gbk.h deleted file mode 100644 index 0b21fd96..00000000 --- a/src/tools/sqkctl/excel/utf8_to_gbk.h +++ /dev/null @@ -1,7524 +0,0 @@ -#pragma once - -#ifdef _cplusplus -extern "C" { -#endif - -#include -#include -#include - -int Utf8ToUnicode(char *utf8char, int *unicode, int *len, size_t leaveLen); - -int Utf8ToGbk(char *strutf8, char *strgbk); - -int GbkToUtf8(char *strgbk, char *strutf8); - -bool IsTextUTF8(const char *str, size_t length); - -static const uint32_t uni2gbk[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41448, 0, 0, 41452, 41383, 0, 0, 0, 0, 0, 0, 0, - 41443, 41408, 0, 0, 0, 0, 0, 41380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41409, 0, 0, 0, 0, - 0, 0, 0, 0, 43172, 43170, 0, 0, 0, 0, 0, 0, 43176, 43174, 43194, 0, 43180, 43178, 0, 0, 0, 0, - 43184, 43182, 0, 0, 0, 41410, 0, 43188, 43186, 0, 43193, 0, 0, 0, 0, 43169, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43173, 0, 0, 0, 0, 0, 0, 0, 43175, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43177, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43197, 0, 0, 0, 43198, 0, - 0, 0, 0, 43181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 43171, 0, 43179, 0, 43183, 0, 43187, 0, 43189, 0, 43190, 0, 43191, 0, 43192, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43195, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43200, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 41382, 0, 41381, 43072, 43073, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 43074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42657, 42658, 42659, 42660, 42661, 42662, 42663, 42664, 42665, 42666, 42667, - 42668, 42669, 42670, 42671, 42672, 42673, 0, 42674, 42675, 42676, 42677, 42678, 42679, 42680, 0, 0, 0, 0, 0, 0, 0, 42689, - 42690, 42691, 42692, 42693, 42694, 42695, 42696, 42697, 42698, 42699, 42700, 42701, 42702, 42703, 42704, 42705, 0, 42706, 42707, 42708, 42709, 42710, - 42711, 42712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42919, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 42913, 42914, 42915, 42916, 42917, 42918, 42920, 42921, 42922, 42923, 42924, 42925, 42926, 42927, 42928, 42929, - 42930, 42931, 42932, 42933, 42934, 42935, 42936, 42937, 42938, 42939, 42940, 42941, 42942, 42943, 42944, 42945, 42961, 42962, 42963, 42964, 42965, 42966, - 42968, 42969, 42970, 42971, 42972, 42973, 42974, 42975, 42976, 42977, 42978, 42979, 42980, 42981, 42982, 42983, 42984, 42985, 42986, 42987, 42988, 42989, - 42990, 42991, 42992, 42993, 0, 42967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43356, 0, 0, 43075, 41386, 43076, 41388, 0, 41390, 41391, 0, 0, 41392, 41393, 0, 0, 0, 0, 0, 0, - 0, 43077, 41389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41451, 0, 41444, 41445, 0, 43078, 0, 0, 0, 0, - 0, 41465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 41446, 0, 43079, 0, 0, 0, 43080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 41453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 41713, 41714, 41715, 41716, 41717, 41718, 41719, 41720, 41721, 41722, 41723, 41724, 0, 0, - 0, 0, 41633, 41634, 41635, 41636, 41637, 41638, 41639, 41640, 41641, 41642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41467, 41468, 41466, 41469, 0, 0, 43081, 43082, 43083, 43084, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 41418, 0, 0, 0, 0, 0, 0, 41415, 0, 41414, 0, 0, 0, 43085, 0, 0, 0, 0, 41420, 0, 0, 41432, - 41438, 43086, 41423, 0, 0, 43087, 0, 41422, 0, 41412, 41413, 41417, 41416, 41426, 0, 0, 41427, 0, 0, 0, 0, 0, - 41440, 41439, 41411, 41419, 0, 0, 0, 0, 0, 41431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41430, 0, - 0, 0, 41429, 0, 0, 0, 0, 0, 43088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 41433, 41428, 0, 0, 41436, 41437, 43089, 43090, 0, 0, 0, 0, 0, 0, 41434, 41435, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 43154, 0, 0, 0, 41425, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 41421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 43091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 41424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 41689, 41690, 41691, 41692, 41693, 41694, 41695, 41696, 41697, 41698, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 41669, 41670, 41671, 41672, 41673, 41674, 41675, 41676, 41677, 41678, 41679, 41680, 41681, 41682, 41683, 41684, 41685, 41686, - 41687, 41688, 41649, 41650, 41651, 41652, 41653, 41654, 41655, 41656, 41657, 41658, 41659, 41660, 41661, 41662, 41663, 41664, 41665, 41666, 41667, 41668, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43428, 43429, 43430, 43431, 43432, 43433, 43434, 43435, 43436, 43437, - 43438, 43439, 43440, 43441, 43442, 43443, 43444, 43445, 43446, 43447, 43448, 43449, 43450, 43451, 43452, 43453, 43454, 43455, 43456, 43457, 43458, 43459, - 43460, 43461, 43462, 43463, 43464, 43465, 43466, 43467, 43468, 43469, 43470, 43471, 43472, 43473, 43474, 43475, 43476, 43477, 43478, 43479, 43480, 43481, - 43482, 43483, 43484, 43485, 43486, 43487, 43488, 43489, 43490, 43491, 43492, 43493, 43494, 43495, 43496, 43497, 43498, 43499, 43500, 43501, 43502, 43503, - 0, 0, 0, 0, 43092, 43093, 43094, 43095, 43096, 43097, 43098, 43099, 43100, 43101, 43102, 43103, 43104, 43105, 43106, 43107, 43108, 43109, - 43110, 43111, 43112, 43113, 43114, 43115, 43116, 43117, 43118, 43119, 43120, 43121, 43122, 43123, 43124, 43125, 43126, 43127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 43128, 43129, 43130, 43131, 43132, 43133, 43134, 43136, 43137, 43138, 43139, 43140, 43141, - 43142, 43143, 0, 0, 0, 43144, 43145, 43146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41462, 41461, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41464, 41463, 0, 0, 0, 0, 0, 0, - 0, 0, 43147, 43148, 0, 0, 0, 0, 0, 0, 0, 0, 41460, 41459, 0, 0, 0, 41456, 0, 0, 41458, 41457, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43149, 43150, 43151, 43152, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 41455, 41454, 0, 0, 43153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 41442, 0, 41441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41377, 41378, 41379, 41384, 0, 41385, 43365, 43414, 41396, 41397, - 41398, 41399, 41400, 41401, 41402, 41403, 41406, 41407, 43155, 41470, 41394, 41395, 41404, 41405, 0, 0, 0, 0, 0, 43156, 43157, 0, - 0, 43328, 43329, 43330, 43331, 43332, 43333, 43334, 43335, 43336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42145, 42146, 42147, 42148, 42149, 42150, 42151, 42152, 42153, 42154, 42155, - 42156, 42157, 42158, 42159, 42160, 42161, 42162, 42163, 42164, 42165, 42166, 42167, 42168, 42169, 42170, 42171, 42172, 42173, 42174, 42175, 42176, 42177, - 42178, 42179, 42180, 42181, 42182, 42183, 42184, 42185, 42186, 42187, 42188, 42189, 42190, 42191, 42192, 42193, 42194, 42195, 42196, 42197, 42198, 42199, - 42200, 42201, 42202, 42203, 42204, 42205, 42206, 42207, 42208, 42209, 42210, 42211, 42212, 42213, 42214, 42215, 42216, 42217, 42218, 42219, 42220, 42221, - 42222, 42223, 42224, 42225, 42226, 42227, 0, 0, 0, 0, 0, 0, 0, 43361, 43362, 43366, 43367, 0, 0, 42401, 42402, 42403, - 42404, 42405, 42406, 42407, 42408, 42409, 42410, 42411, 42412, 42413, 42414, 42415, 42416, 42417, 42418, 42419, 42420, 42421, 42422, 42423, 42424, 42425, - 42426, 42427, 42428, 42429, 42430, 42431, 42432, 42433, 42434, 42435, 42436, 42437, 42438, 42439, 42440, 42441, 42442, 42443, 42444, 42445, 42446, 42447, - 42448, 42449, 42450, 42451, 42452, 42453, 42454, 42455, 42456, 42457, 42458, 42459, 42460, 42461, 42462, 42463, 42464, 42465, 42466, 42467, 42468, 42469, - 42470, 42471, 42472, 42473, 42474, 42475, 42476, 42477, 42478, 42479, 42480, 42481, 42482, 42483, 42484, 42485, 42486, 0, 0, 0, 0, 0, - 43360, 43363, 43364, 0, 0, 0, 0, 0, 0, 43205, 43206, 43207, 43208, 43209, 43210, 43211, 43212, 43213, 43214, 43215, 43216, 43217, - 43218, 43219, 43220, 43221, 43222, 43223, 43224, 43225, 43226, 43227, 43228, 43229, 43230, 43231, 43232, 43233, 43234, 43235, 43236, 43237, 43238, 43239, - 43240, 43241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 41701, 41702, 41703, 41704, 41705, 41706, 41707, 41708, 41709, 41710, 0, 0, 0, 0, 0, 0, - 0, 43354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 43337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43338, 43339, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43340, 43341, 43342, 0, 0, 43343, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 43344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43345, 0, 0, 43346, - 43347, 0, 0, 43348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53947, 46753, 33088, 50911, 33089, 33090, 33091, 52722, - 54729, 51453, 51663, 53186, 55458, 45755, 54251, 33092, 55460, 46067, 33093, 55208, 51154, 55463, 51904, 33094, 51184, 45563, 53941, 46292, 46763, 52159, - 55465, 33095, 33096, 33097, 46762, 33098, 49597, 53711, 33099, 51621, 55469, 33100, 47350, 53694, 58332, 54992, 33101, 33102, 47073, 33103, 46254, 33104, - 49625, 33105, 55484, 33106, 52712, 46500, 52906, 55031, 33107, 49398, 48857, 55471, 33108, 33109, 33110, 50379, 33111, 48835, 33112, 55473, 50100, 53989, - 33113, 54958, 52954, 54695, 47861, 47014, 49366, 33114, 50873, 50642, 51143, 33115, 47572, 33116, 46027, 53970, 33117, 33118, 55487, 48837, 50930, 53938, - 53168, 53223, 33119, 33120, 33121, 33122, 51945, 33123, 33124, 55488, 33125, 33126, 33127, 33128, 33129, 33130, 49906, 49874, 33131, 51433, 33132, 33133, - 33134, 33135, 33136, 33137, 33138, 33139, 33140, 33141, 51116, 33142, 33143, 33144, 33145, 33146, 33147, 33148, 49611, 33149, 54248, 54777, 33150, 51906, - 46846, 55457, 54234, 49143, 33152, 54470, 48037, 55489, 52965, 48814, 33153, 33154, 55464, 33155, 53703, 53417, 33156, 33157, 33158, 55485, 55791, 52726, - 49082, 33159, 48571, 47781, 53984, 45818, 47840, 50358, 33160, 53229, 48809, 52644, 49601, 33161, 33162, 33163, 51159, 55793, 33164, 55796, 33165, 33166, - 33167, 33168, 51403, 55529, 33169, 33170, 33171, 53978, 51890, 51402, 55532, 55530, 55494, 48630, 50893, 46064, 33172, 55531, 48625, 48617, 33173, 51412, - 46291, 33174, 33175, 49880, 33176, 45782, 55248, 51915, 52219, 54732, 47286, 53193, 33177, 33178, 33179, 55770, 55536, 51114, 33180, 55534, 33181, 46330, - 49646, 53972, 33182, 33183, 55533, 33184, 53959, 55535, 50119, 33185, 33186, 33187, 53750, 33188, 55001, 55538, 33189, 55541, 48382, 48347, 33190, 33191, - 33192, 51406, 33193, 47069, 33194, 47042, 33195, 50931, 33196, 33197, 33198, 33199, 33200, 33201, 33202, 55544, 53953, 33203, 33204, 52969, 48319, 47100, - 47013, 53469, 33205, 33206, 33207, 33208, 33209, 55002, 54213, 48111, 48097, 55537, 33210, 33211, 51617, 52912, 46251, 33212, 55539, 33213, 51659, 55542, - 49879, 55543, 33214, 33215, 52913, 55545, 33216, 33217, 33218, 45742, 47552, 33219, 55715, 33220, 45289, 33221, 49638, 33222, 51692, 33223, 52165, 33224, - 52166, 55716, 33225, 33226, 33227, 33228, 33229, 46568, 33230, 33231, 46507, 33232, 33233, 33234, 33235, 33236, 33237, 52923, 46541, 55201, 55284, 54227, - 33238, 52453, 33239, 47822, 33240, 55714, 55772, 54240, 55549, 47088, 55287, 55550, 55546, 55713, 50403, 33241, 33242, 54198, 55540, 55773, 33243, 55547, - 33244, 50661, 33245, 33246, 49360, 33247, 33248, 53744, 45275, 33249, 33250, 48337, 55718, 33251, 55717, 33252, 33253, 33254, 33255, 55724, 55726, 33256, - 55723, 51897, 33257, 33258, 33259, 55721, 54966, 33260, 33261, 33262, 46046, 55720, 33263, 49405, 33264, 51916, 33265, 55722, 33266, 55719, 33267, 33268, - 55728, 33269, 33270, 46769, 33271, 33272, 33273, 47529, 33274, 53952, 33275, 33276, 53184, 33277, 33278, 49858, 33344, 48580, 54764, 45792, 51144, 49131, - 55725, 33345, 55727, 33346, 52970, 47854, 33347, 33348, 33349, 33350, 33351, 51158, 33352, 33353, 33354, 33355, 33356, 33357, 33358, 33359, 33360, 45539, - 33361, 33362, 33363, 46297, 46829, 55732, 33364, 33365, 33366, 33367, 49057, 33368, 33369, 33370, 55774, 51150, 49406, 55736, 33371, 33372, 33373, 33374, - 33375, 52183, 47101, 33376, 55733, 33377, 55735, 45475, 54241, 55737, 33378, 53445, 33379, 55734, 33380, 33381, 55729, 33382, 55730, 49577, 55731, 33383, - 33384, 48371, 53470, 47273, 33385, 48867, 33386, 55741, 33387, 33388, 33389, 33390, 55738, 33391, 45235, 33392, 33393, 33394, 55746, 33395, 33396, 33397, - 33398, 33399, 33400, 33401, 33402, 33403, 33404, 33405, 33406, 33408, 55748, 45494, 33409, 55743, 33410, 33411, 46521, 33412, 48883, 33413, 33414, 33415, - 52424, 47858, 53968, 33416, 55747, 33417, 33418, 48616, 33419, 45995, 33420, 33421, 33422, 55749, 48875, 33423, 55750, 55739, 50399, 33424, 55742, 55745, - 55744, 33425, 33426, 33427, 33428, 33429, 33430, 33431, 33432, 33433, 33434, 33435, 54702, 33436, 54965, 33437, 51171, 33438, 33439, 33440, 33441, 55752, - 33442, 33443, 33444, 48345, 55754, 33445, 33446, 33447, 55740, 33448, 55755, 50859, 33449, 33450, 33451, 33452, 33453, 55753, 33454, 33455, 33456, 33457, - 55286, 33458, 52643, 33459, 33460, 33461, 33462, 33463, 33464, 33465, 33466, 48545, 33467, 33468, 33469, 33470, 33471, 33472, 55756, 33473, 33474, 33475, - 33476, 33477, 33478, 33479, 33480, 33481, 50620, 52661, 33482, 33483, 33484, 55757, 33485, 33486, 55751, 45989, 49150, 33487, 33488, 33489, 33490, 47285, - 33491, 33492, 49404, 33493, 33494, 33495, 33496, 45304, 33497, 33498, 33499, 33500, 33501, 33502, 33503, 33504, 33505, 33506, 33507, 33508, 33509, 33510, - 33511, 33512, 33513, 33514, 33515, 33516, 33517, 46326, 33518, 55758, 33519, 55759, 46242, 55760, 33520, 33521, 46303, 33522, 33523, 33524, 33525, 33526, - 45249, 33527, 33528, 33529, 33530, 33531, 33532, 33533, 55761, 51637, 33534, 33600, 33601, 33602, 33603, 33604, 33605, 33606, 33607, 33608, 33609, 33610, - 33611, 33612, 33613, 33614, 33615, 33616, 33617, 53233, 33618, 33619, 33620, 33621, 33622, 33623, 55762, 33624, 33625, 33626, 49605, 33627, 33628, 33629, - 33630, 33631, 33632, 33633, 33634, 33635, 33636, 33637, 55766, 51630, 33638, 33639, 33640, 33641, 55765, 55764, 55767, 33642, 33643, 33644, 33645, 52187, - 33646, 48553, 33647, 33648, 33649, 33650, 33651, 50855, 33652, 33653, 33654, 33655, 33656, 33657, 33658, 33659, 33660, 33661, 55763, 55768, 33662, 33664, - 33665, 55769, 33666, 33667, 33668, 33669, 33670, 33671, 51429, 33672, 33673, 33674, 33675, 33676, 33677, 33678, 33679, 33680, 33681, 33682, 33683, 33684, - 33685, 49372, 33686, 33687, 33688, 33689, 33690, 33691, 33692, 33693, 33694, 33695, 33696, 33697, 33698, 33699, 33700, 33701, 33702, 33703, 33704, 33705, - 33706, 33707, 33708, 33709, 33710, 33711, 33712, 33713, 33714, 46841, 55459, 54474, 33715, 54442, 53462, 46052, 54743, 33716, 53192, 47586, 33717, 49099, - 33718, 50146, 33719, 33720, 33721, 46802, 33722, 33723, 52675, 55790, 55792, 33724, 33725, 33726, 46515, 33727, 46773, 33728, 33729, 33730, 33731, 33732, - 48804, 33733, 33734, 51435, 33735, 33736, 51371, 33737, 33738, 45259, 47531, 49657, 55778, 33739, 49340, 47538, 33740, 47576, 53451, 45560, 50916, 48863, - 46564, 55240, 33741, 53752, 48358, 51934, 33742, 33743, 48317, 55782, 55527, 33744, 33745, 50394, 33746, 33747, 47316, 51389, 33748, 33749, 45793, 54489, - 33750, 33751, 33752, 33753, 50096, 33754, 33755, 50145, 55970, 51423, 33756, 53428, 33757, 48892, 50601, 33758, 33759, 33760, 47578, 33761, 55971, 33762, - 54441, 55972, 33763, 33764, 33765, 33766, 33767, 55803, 46764, 33768, 33769, 47083, 45561, 55804, 46053, 48886, 33770, 49142, 53937, 49380, 33771, 33772, - 33773, 46771, 55806, 55805, 33774, 33775, 48827, 33776, 33777, 33778, 50912, 33779, 55228, 55969, 33780, 49593, 33781, 46578, 49640, 33782, 33783, 48373, - 33784, 46293, 33785, 33786, 33787, 33788, 33789, 33790, 33856, 33857, 33858, 49629, 33859, 50429, 33860, 33861, 48312, 47026, 33862, 33863, 47087, 33864, - 33865, 33866, 33867, 33868, 33869, 55788, 33870, 50878, 33871, 49069, 48075, 33872, 33873, 46538, 33874, 56265, 53463, 33875, 52665, 45244, 46070, 48119, - 56266, 47791, 33876, 54500, 46518, 46579, 55510, 51408, 33877, 33878, 47062, 51152, 55511, 33879, 49071, 33880, 33881, 56251, 55512, 33882, 33883, 53452, - 48046, 33884, 33885, 33886, 60350, 49616, 49653, 54514, 47317, 46260, 33887, 46069, 33888, 33889, 51646, 33890, 33891, 33892, 50640, 33893, 33894, 33895, - 50649, 49403, 33896, 45552, 33897, 55513, 47566, 33898, 46525, 33899, 33900, 55514, 33901, 33902, 54982, 52130, 51375, 51634, 46284, 49100, 33903, 47604, - 33904, 55515, 55516, 46823, 48321, 52458, 33905, 33906, 33907, 33908, 33909, 33910, 53239, 33911, 55517, 51120, 33912, 33913, 47568, 48547, 33914, 33915, - 52446, 33916, 50890, 33917, 33918, 33920, 33921, 33922, 55520, 33923, 55518, 33924, 33925, 55519, 33926, 33927, 33928, 45310, 33929, 48871, 33930, 51875, - 48372, 33931, 33932, 33933, 33934, 47281, 33935, 33936, 47342, 33937, 33938, 33939, 33940, 33941, 33942, 33943, 33944, 33945, 33946, 55522, 33947, 48587, - 33948, 55524, 55523, 33949, 33950, 33951, 33952, 33953, 50684, 33954, 33955, 33956, 33957, 33958, 33959, 33960, 55525, 33961, 33962, 55526, 33963, 33964, - 33965, 33966, 33967, 33968, 33969, 49574, 33970, 51376, 45292, 47526, 48339, 52977, 56253, 49619, 33971, 33972, 33973, 33974, 46767, 55034, 50604, 48601, - 56254, 56255, 33975, 33976, 33977, 49400, 48802, 49357, 33978, 33979, 33980, 33981, 33982, 33983, 33984, 33985, 33986, 33987, 56256, 51910, 33988, 33989, - 33990, 45738, 33991, 33992, 33993, 54210, 33994, 50147, 33995, 53675, 33996, 33997, 33998, 33999, 56258, 34000, 49365, 34001, 34002, 34003, 56259, 34004, - 49073, 34005, 34006, 34007, 34008, 34009, 34010, 50364, 34011, 34012, 34013, 34014, 51162, 34015, 34016, 34017, 34018, 34019, 34020, 34021, 34022, 34023, - 34024, 34025, 56260, 34026, 34027, 34028, 34029, 34030, 34031, 34032, 34033, 55784, 51671, 34034, 34035, 34036, 47540, 52976, 54472, 34037, 34038, 34039, - 34040, 45308, 46290, 34041, 53465, 34042, 34043, 34044, 34045, 55785, 34046, 57035, 55787, 34112, 34113, 34114, 34115, 55472, 48047, 45489, 34116, 46039, - 55502, 34117, 34118, 54481, 34119, 34120, 48563, 49135, 34121, 53179, 34122, 34123, 55504, 34124, 34125, 34126, 47051, 34127, 34128, 34129, 55505, 34130, - 34131, 34132, 34133, 34134, 34135, 34136, 34137, 34138, 34139, 50853, 51192, 53949, 34140, 34141, 55506, 50404, 34142, 51886, 34143, 51111, 34144, 55462, - 34145, 51709, 52967, 48092, 45291, 34146, 34147, 34148, 48042, 53421, 34149, 45488, 55268, 55231, 34150, 46501, 49908, 50383, 34151, 34152, 45737, 34153, - 45751, 34154, 45541, 57266, 54716, 49064, 49836, 55509, 49841, 34155, 55508, 52948, 34156, 56032, 34157, 52928, 34158, 34159, 55476, 50094, 54177, 52899, - 34160, 48308, 51380, 49873, 34161, 48877, 53430, 34162, 56033, 34163, 34164, 34165, 34166, 51172, 34167, 34168, 45991, 34169, 46834, 52476, 49402, 34170, - 34171, 49399, 34172, 53689, 53729, 55495, 34173, 34174, 34176, 34177, 34178, 34179, 34180, 45790, 34181, 34182, 49381, 34183, 47857, 34184, 34185, 55496, - 34186, 54445, 34187, 34188, 53217, 55497, 34189, 55498, 53187, 34190, 46072, 48839, 34191, 34192, 34193, 34194, 55499, 34195, 34196, 34197, 34198, 34199, - 34200, 34201, 56268, 34202, 34203, 34204, 34205, 51365, 34206, 34207, 34208, 53208, 34209, 51454, 45774, 34210, 34211, 34212, 34213, 34214, 54230, 45798, - 48304, 54225, 52139, 47028, 34215, 34216, 34217, 47010, 34218, 34219, 51941, 34220, 51361, 51932, 45540, 53488, 34221, 50641, 34222, 34223, 34224, 56261, - 46590, 34225, 34226, 49114, 47557, 48868, 49645, 34227, 57270, 57269, 54971, 48592, 54745, 45256, 46755, 49097, 52392, 57267, 51895, 54226, 34228, 55503, - 53942, 47813, 52158, 52414, 34229, 57271, 46576, 57268, 34230, 34231, 34232, 54261, 34233, 46036, 47351, 34234, 57274, 34235, 47823, 48298, 46581, 34236, - 52652, 50171, 47859, 49396, 52674, 53234, 57272, 53189, 34237, 49856, 57273, 49904, 34238, 34239, 34240, 48893, 34241, 49631, 52684, 54007, 47053, 57281, - 34242, 57284, 34243, 34244, 47089, 45257, 46806, 47060, 34245, 47788, 52477, 49108, 52145, 50932, 34246, 54952, 57285, 34247, 52962, 46003, 34248, 34249, - 52988, 46261, 34250, 52935, 47856, 34251, 52961, 34252, 53693, 34253, 34254, 57280, 34255, 34256, 46324, 34257, 46026, 34258, 47334, 57275, 34259, 34260, - 34261, 34262, 50373, 34263, 57276, 57277, 57278, 50619, 57279, 57282, 54449, 57283, 34264, 51130, 52952, 34265, 34266, 34267, 34268, 34269, 50392, 34270, - 57290, 34271, 57295, 34272, 55004, 34273, 34274, 34275, 34276, 34277, 34278, 34279, 34280, 57289, 57306, 52918, 34281, 47815, 57294, 57288, 50654, 34282, - 34283, 51691, 47860, 50172, 34284, 34285, 48855, 34286, 57286, 34287, 57293, 34288, 50648, 34289, 34290, 34291, 34292, 54694, 47821, 34293, 48844, 54205, - 47296, 34294, 55012, 34295, 57287, 47550, 49063, 34296, 34297, 49660, 57291, 57292, 34298, 57296, 34299, 34300, 34301, 34302, 34368, 57307, 57317, 34369, - 57303, 57302, 55241, 57315, 57316, 58859, 53927, 57298, 34370, 49065, 34371, 54491, 34372, 49096, 57300, 34373, 34374, 34375, 53196, 34376, 34377, 57309, - 34378, 53706, 34379, 57310, 45223, 50871, 57299, 34380, 47845, 34381, 46815, 52699, 47614, 54485, 34382, 34383, 57311, 53228, 45221, 57319, 57297, 53702, - 57301, 57304, 57305, 57308, 34384, 48041, 34385, 57312, 57313, 34386, 57314, 57318, 57320, 54196, 34387, 34388, 34389, 34390, 34391, 47335, 50614, 57322, - 51674, 49576, 50372, 34392, 34393, 49118, 53240, 34394, 34395, 34396, 54748, 57326, 34397, 34398, 34399, 34400, 34401, 34402, 45752, 34403, 47839, 57324, - 34404, 56257, 34405, 53732, 34406, 34407, 34408, 34409, 52212, 46269, 34410, 45222, 34411, 34412, 34413, 34414, 34415, 57329, 52422, 57330, 34416, 34417, - 57325, 34418, 34419, 34420, 34421, 34422, 34423, 57321, 34424, 34425, 34426, 34427, 57323, 34428, 57327, 57328, 48061, 34429, 34430, 57331, 34432, 34433, - 57332, 34434, 48035, 34435, 51931, 52904, 57511, 45994, 34436, 57510, 34437, 34438, 34439, 57505, 34440, 34441, 34442, 34443, 57342, 34444, 52697, 57340, - 34445, 57338, 34446, 49104, 55236, 34447, 51660, 34448, 34449, 57336, 45217, 34450, 34451, 34452, 34453, 34454, 57341, 34455, 34456, 34457, 34458, 57339, - 57506, 34459, 34460, 34461, 34462, 34463, 57512, 34464, 34465, 34466, 34467, 47048, 34468, 34469, 50849, 51638, 49330, 57333, 34470, 34471, 50622, 34472, - 55492, 57337, 50422, 34473, 34474, 34475, 34476, 34477, 34478, 57507, 57508, 57509, 53413, 34479, 34480, 57524, 52452, 34481, 57521, 34482, 49062, 57519, - 52921, 57515, 51654, 34483, 34484, 49326, 57518, 47853, 47792, 57513, 34485, 34486, 34487, 57334, 34488, 57523, 34489, 34490, 57528, 34491, 34492, 34493, - 46253, 57529, 34494, 34495, 53170, 47816, 34496, 57520, 34497, 34498, 34499, 34500, 34501, 34502, 34503, 53498, 34504, 34505, 34506, 34507, 34508, 34509, - 34510, 34511, 34512, 57516, 34513, 54523, 34514, 57335, 34515, 50663, 34516, 57517, 34517, 54263, 34518, 57526, 57527, 34519, 34520, 34521, 34522, 34523, - 57540, 53473, 34524, 34525, 34526, 57532, 34527, 34528, 57545, 57546, 34529, 34530, 34531, 57534, 57514, 51620, 57537, 34532, 57522, 34533, 34534, 34535, - 34536, 34537, 51912, 57539, 34538, 57525, 34539, 52939, 34540, 52163, 57549, 57542, 57538, 34541, 57547, 34542, 57530, 57535, 57536, 34543, 34544, 57541, - 34545, 34546, 57543, 57544, 34547, 57548, 34548, 57531, 34549, 34550, 34551, 34552, 34553, 52180, 57557, 34554, 57558, 57554, 34555, 34556, 34557, 34558, - 34624, 34625, 57552, 48334, 34626, 34627, 57553, 34628, 47298, 55493, 34629, 34630, 34631, 34632, 34633, 34634, 34635, 34636, 53482, 34637, 34638, 49903, - 34639, 34640, 57551, 57533, 34641, 34642, 34643, 57556, 57555, 34644, 34645, 57559, 34646, 34647, 34648, 34649, 57564, 57560, 34650, 34651, 34652, 55030, - 46000, 34653, 55276, 34654, 52155, 34655, 34656, 57562, 34657, 52987, 34658, 34659, 34660, 47833, 34661, 34662, 34663, 34664, 34665, 34666, 34667, 34668, - 34669, 34670, 34671, 34672, 57569, 57565, 53933, 34673, 34674, 34675, 34676, 34677, 57570, 34678, 34679, 57563, 57561, 57567, 34680, 34681, 57568, 34682, - 34683, 34684, 34685, 34686, 57566, 34688, 57572, 34689, 34690, 34691, 50935, 55468, 54507, 57574, 51913, 34692, 34693, 34694, 34695, 57573, 34696, 34697, - 34698, 34699, 47297, 34700, 34701, 34702, 34703, 57575, 57576, 34704, 34705, 34706, 34707, 34708, 34709, 34710, 34711, 57577, 57571, 34712, 34713, 34714, - 34715, 34716, 34717, 34718, 47807, 52455, 34719, 34720, 34721, 57578, 34722, 34723, 34724, 34725, 34726, 34727, 34728, 34729, 34730, 34731, 34732, 34733, - 34734, 34735, 34736, 53241, 34737, 34738, 34739, 34740, 34741, 34742, 34743, 34744, 34745, 34746, 34747, 57579, 34748, 34749, 34750, 34751, 34752, 34753, - 34754, 51394, 34755, 34756, 34757, 34758, 48576, 34759, 34760, 34761, 34762, 34763, 34764, 34765, 34766, 34767, 34768, 34769, 34770, 34771, 50386, 34772, - 34773, 34774, 34775, 34776, 34777, 34778, 34779, 34780, 57580, 34781, 34782, 57581, 34783, 34784, 51188, 52164, 34785, 57582, 48088, 55478, 54002, 57583, - 52677, 34786, 46810, 34787, 34788, 34789, 34790, 34791, 34792, 57585, 34793, 54448, 34794, 34795, 49319, 46289, 34796, 34797, 52903, 57584, 34798, 34799, - 34800, 57586, 47564, 34801, 34802, 47610, 52668, 57587, 34803, 34804, 34805, 50900, 57588, 34806, 54450, 34807, 51366, 57590, 57589, 34808, 34809, 34810, - 34811, 34812, 34813, 34814, 34880, 34881, 34882, 34883, 34884, 34885, 34886, 34887, 34888, 34889, 57591, 34890, 34891, 52673, 34892, 34893, 34894, 51877, - 34895, 34896, 34897, 34898, 54490, 56279, 56281, 34899, 56280, 47591, 56284, 56285, 46552, 34900, 34901, 56282, 34902, 34903, 34904, 34905, 34906, 56283, - 45985, 56287, 34907, 34908, 48120, 34909, 54967, 34910, 56288, 34911, 34912, 34913, 34914, 48889, 34915, 34916, 47035, 34917, 56272, 52398, 49074, 48053, - 55288, 49107, 34918, 34919, 34920, 34921, 34922, 49129, 34923, 34924, 48353, 52403, 56286, 45267, 52971, 47064, 55225, 50882, 34925, 34926, 49316, 34927, - 52409, 34928, 56295, 56289, 50874, 56291, 34929, 56296, 34930, 50679, 34931, 34932, 34933, 56298, 34934, 34935, 56297, 49088, 34936, 34937, 34938, 56294, - 56293, 34939, 34940, 34941, 34942, 34944, 46265, 49324, 49826, 56290, 56292, 34945, 34946, 34947, 34948, 53453, 56301, 34949, 34950, 34951, 34952, 34953, - 49373, 56306, 34954, 34955, 34956, 34957, 34958, 34959, 34960, 46818, 34961, 34962, 34963, 34964, 56307, 56274, 47544, 54443, 56300, 34965, 49105, 56304, - 34966, 56273, 34967, 46566, 34968, 56299, 49125, 34969, 34970, 34971, 56302, 34972, 56305, 34973, 34974, 34975, 56313, 34976, 34977, 34978, 34979, 34980, - 34981, 34982, 34983, 34984, 47521, 45219, 34985, 34986, 34987, 34988, 34989, 34990, 34991, 49905, 34992, 34993, 46023, 56303, 34994, 34995, 56312, 34996, - 50898, 56308, 34997, 34998, 56309, 56311, 56310, 34999, 35000, 56318, 35001, 54258, 45754, 35002, 35003, 35004, 56317, 35005, 35006, 35007, 35008, 35009, - 35010, 35011, 35012, 56484, 35013, 56315, 35014, 35015, 35016, 35017, 56314, 35018, 35019, 35020, 56316, 50656, 48121, 35021, 35022, 56483, 35023, 35024, - 56485, 35025, 52419, 35026, 35027, 35028, 46801, 56768, 35029, 35030, 35031, 56481, 35032, 56482, 35033, 35034, 35035, 51125, 35036, 35037, 35038, 46825, - 35039, 35040, 35041, 56487, 35042, 35043, 35044, 35045, 56486, 35046, 56489, 45476, 35047, 35048, 46540, 35049, 35050, 35051, 35052, 35053, 49072, 35054, - 35055, 35056, 35057, 35058, 53727, 35059, 35060, 35061, 35062, 46786, 35063, 35064, 35065, 35066, 35067, 35068, 35069, 35070, 35136, 35137, 35138, 35139, - 35140, 35141, 56488, 35142, 35143, 35144, 35145, 35146, 35147, 35148, 52218, 60403, 35149, 35150, 35151, 52188, 35152, 35153, 52222, 35154, 35155, 35156, - 52417, 35157, 35158, 35159, 35160, 35161, 51451, 35162, 35163, 35164, 35165, 35166, 35167, 56490, 35168, 35169, 35170, 35171, 35172, 52462, 56491, 35173, - 35174, 35175, 35176, 35177, 35178, 35179, 35180, 35181, 35182, 35183, 35184, 35185, 35186, 35187, 35188, 35189, 56275, 35190, 56495, 56492, 35191, 48819, - 35192, 51963, 35193, 35194, 35195, 56493, 35196, 35197, 35198, 35200, 35201, 35202, 35203, 35204, 51658, 50361, 35205, 35206, 35207, 35208, 35209, 51133, - 56494, 35210, 35211, 35212, 54518, 53478, 35213, 35214, 35215, 35216, 35217, 35218, 35219, 35220, 50347, 46805, 35221, 35222, 35223, 35224, 35225, 35226, - 35227, 35228, 35229, 35230, 35231, 35232, 35233, 35234, 35235, 35236, 35237, 35238, 56276, 35239, 35240, 35241, 35242, 45530, 35243, 35244, 35245, 56277, - 35246, 35247, 35248, 35249, 35250, 35251, 35252, 35253, 35254, 35255, 35256, 56278, 35257, 35258, 35259, 47806, 35260, 35261, 35262, 35263, 35264, 35265, - 35266, 35267, 35268, 35269, 35270, 35271, 35272, 35273, 51392, 35274, 35275, 35276, 35277, 35278, 35279, 51903, 51401, 35280, 55219, 35281, 51705, 35282, - 35283, 49095, 35284, 35285, 47864, 35286, 35287, 53948, 35288, 35289, 35290, 35291, 35292, 35293, 35294, 35295, 58042, 35296, 46246, 35297, 35298, 45496, - 35299, 35300, 35301, 35302, 35303, 47284, 35304, 53188, 35305, 35306, 35307, 35308, 55783, 53158, 52706, 35309, 35310, 55789, 46816, 35311, 53945, 35312, - 35313, 47547, 35314, 35315, 35316, 35317, 58041, 58039, 35318, 46323, 35319, 52460, 52395, 47090, 35320, 55474, 53739, 47803, 35321, 51879, 35322, 35323, - 52663, 35324, 35325, 53956, 49124, 48336, 46817, 35326, 57029, 35392, 35393, 35394, 35395, 57030, 56252, 35396, 53721, 35397, 35398, 50918, 50382, 47086, - 35399, 47068, 35400, 35401, 49148, 55264, 35402, 50933, 35403, 35404, 45500, 57032, 48561, 52439, 57034, 35405, 57033, 35406, 35407, 35408, 35409, 35410, - 46572, 35411, 51677, 35412, 35413, 45250, 35414, 35415, 35416, 35417, 35418, 35419, 35420, 35421, 35422, 35423, 35424, 35425, 35426, 50606, 50603, 35427, - 50380, 35428, 48361, 52221, 35429, 35430, 35431, 47811, 35432, 35433, 35434, 58873, 51431, 58874, 52733, 35435, 55217, 47294, 49896, 35436, 51409, 35437, - 35438, 58875, 35439, 35440, 35441, 35442, 46794, 48331, 35443, 35444, 53757, 59041, 35445, 50158, 35446, 35447, 35448, 35449, 59044, 35450, 35451, 35452, - 35453, 58878, 59045, 52695, 35454, 35456, 47041, 58876, 58877, 59043, 35457, 35458, 50397, 59048, 35459, 35460, 59047, 35461, 35462, 35463, 35464, 35465, - 35466, 50115, 35467, 50910, 35468, 35469, 59050, 35470, 35471, 35472, 35473, 35474, 35475, 35476, 50359, 35477, 35478, 35479, 59042, 51900, 35480, 35481, - 35482, 35483, 48611, 47555, 59046, 53461, 52911, 35484, 35485, 59049, 59056, 35486, 53926, 35487, 48554, 59053, 35488, 35489, 35490, 35491, 35492, 59055, - 35493, 49361, 35494, 35495, 53964, 35496, 35497, 35498, 48295, 35499, 35500, 35501, 35502, 35503, 35504, 35505, 35506, 35507, 35508, 35509, 35510, 59057, - 35511, 54006, 35512, 35513, 35514, 55243, 35515, 52734, 35516, 52702, 49830, 59051, 59052, 48575, 59054, 59059, 35517, 35518, 59058, 35519, 35520, 35521, - 35522, 59062, 35523, 59064, 35524, 35525, 35526, 35527, 50415, 35528, 35529, 35530, 50376, 35531, 35532, 48874, 51695, 35533, 35534, 59063, 35535, 46832, - 35536, 35537, 35538, 50148, 35539, 35540, 35541, 35542, 35543, 35544, 35545, 54249, 59060, 35546, 59061, 35547, 51362, 35548, 35549, 35550, 35551, 35552, - 59069, 35553, 35554, 35555, 59065, 35556, 35557, 35558, 35559, 35560, 50885, 35561, 35562, 52721, 59067, 35563, 35564, 35565, 35566, 35567, 35568, 35569, - 35570, 35571, 35572, 59068, 35573, 35574, 35575, 35576, 48105, 35577, 35578, 35579, 35580, 35581, 35582, 35648, 59070, 35649, 35650, 35651, 35652, 59066, - 35653, 35654, 49335, 35655, 35656, 35657, 35658, 35659, 35660, 35661, 35662, 35663, 54180, 59071, 51700, 59075, 35664, 35665, 59076, 35666, 35667, 35668, - 35669, 53494, 35670, 35671, 35672, 35673, 35674, 35675, 35676, 35677, 35678, 35679, 35680, 35681, 35682, 35683, 35684, 35685, 35686, 35687, 50109, 35688, - 35689, 35690, 35691, 35692, 35693, 35694, 50116, 59074, 35695, 35696, 35697, 35698, 35699, 35700, 35701, 35702, 35703, 35704, 35705, 35706, 35707, 35708, - 59073, 35709, 35710, 35712, 35713, 35714, 35715, 35716, 59079, 53169, 35717, 60404, 35718, 35719, 59082, 35720, 35721, 35722, 35723, 35724, 59077, 35725, - 35726, 48350, 51625, 35727, 35728, 35729, 35730, 35731, 35732, 48309, 35733, 35734, 53203, 35735, 35736, 35737, 35738, 35739, 59080, 35740, 59081, 35741, - 59086, 35742, 59088, 35743, 35744, 35745, 59089, 35746, 35747, 35748, 59083, 46549, 35749, 59084, 35750, 35751, 59087, 35752, 35753, 50395, 35754, 59078, - 35755, 35756, 35757, 35758, 35759, 59085, 35760, 35761, 35762, 35763, 35764, 35765, 35766, 35767, 35768, 35769, 35770, 35771, 35772, 35773, 35774, 35775, - 35776, 35777, 35778, 35779, 35780, 35781, 35782, 59090, 35783, 35784, 35785, 35786, 35787, 35788, 35789, 35790, 35791, 35792, 35793, 35794, 59092, 59091, - 35795, 35796, 35797, 35798, 35799, 35800, 35801, 35802, 35803, 35804, 35805, 35806, 35807, 35808, 35809, 35810, 35811, 35812, 35813, 35814, 35815, 35816, - 35817, 35818, 35819, 35820, 59093, 35821, 55800, 35822, 35823, 59094, 35824, 35825, 35826, 35827, 35828, 35829, 35830, 35831, 59095, 35832, 35833, 35834, - 35835, 35836, 35837, 35838, 35904, 35905, 35906, 35907, 35908, 35909, 35910, 35911, 55251, 59101, 35912, 59102, 49111, 54480, 35913, 55254, 46310, 52207, - 59098, 55491, 55246, 53410, 35914, 50127, 35915, 35916, 59103, 48318, 47554, 59099, 53671, 35917, 35918, 47778, 49871, 35919, 55467, 35920, 35921, 35922, - 51947, 58862, 35923, 59100, 35924, 47093, 35925, 35926, 35927, 35928, 51430, 35929, 35930, 50421, 35931, 35932, 58802, 50430, 35933, 52220, 58803, 54700, - 35934, 54254, 51928, 45234, 35935, 52174, 52714, 35936, 35937, 47850, 35938, 35939, 35940, 58805, 35941, 58804, 35942, 55258, 47577, 55014, 46760, 52720, - 53963, 45478, 51893, 35943, 46056, 51699, 49101, 53499, 51922, 58806, 48066, 35944, 35945, 35946, 53212, 47532, 35947, 35948, 35949, 35950, 54487, 35951, - 35952, 47782, 53735, 53244, 48338, 35953, 58807, 51421, 35954, 35955, 35956, 49133, 45558, 52190, 35957, 35958, 48325, 35959, 48324, 54010, 50140, 49116, - 35960, 35961, 35962, 35963, 47291, 35964, 35965, 35966, 50114, 35968, 47790, 54434, 35969, 35970, 35971, 35972, 35973, 35974, 35975, 35976, 35977, 51166, - 50351, 45804, 35978, 47569, 35979, 35980, 58811, 49608, 35981, 35982, 54703, 35983, 35984, 35985, 35986, 35987, 58812, 35988, 58814, 35989, 35990, 35991, - 35992, 35993, 35994, 35995, 46311, 46804, 52162, 53680, 46524, 35996, 35997, 51929, 35998, 47074, 35999, 36000, 51684, 36001, 48555, 36002, 36003, 52926, - 55280, 36004, 36005, 36006, 36007, 53409, 36008, 51673, 36009, 36010, 46843, 59096, 48354, 36011, 46014, 36012, 51664, 36013, 59097, 45986, 36014, 36015, - 36016, 36017, 57036, 36018, 54216, 57037, 36019, 53922, 36020, 36021, 36022, 36023, 57038, 36024, 36025, 36026, 36027, 48845, 36028, 36029, 57039, 36030, - 36031, 36032, 51884, 54012, 46047, 58858, 50401, 48801, 52914, 50418, 48854, 50856, 45795, 36033, 36034, 48851, 36035, 36036, 51196, 52459, 48620, 52957, - 36037, 36038, 51898, 50881, 58860, 53436, 36039, 36040, 36041, 54713, 36042, 36043, 36044, 58861, 36045, 36046, 36047, 36048, 51956, 36049, 52672, 49861, - 36050, 58863, 36051, 49860, 58864, 36052, 36053, 36054, 36055, 36056, 36057, 36058, 58872, 52685, 36059, 51645, 36060, 36061, 36062, 36063, 36064, 36065, - 36066, 53977, 57768, 36067, 36068, 36069, 36070, 54252, 36071, 52202, 50929, 36072, 36073, 36074, 36075, 36076, 57772, 36077, 36078, 36079, 57767, 57769, - 36080, 36081, 57770, 57775, 36082, 36083, 45805, 36084, 57771, 47322, 57773, 57774, 57776, 46522, 57777, 36085, 36086, 36087, 36088, 36089, 57779, 57784, - 36090, 36091, 36092, 36093, 36094, 53714, 36160, 57782, 57781, 49643, 36161, 36162, 36163, 57783, 36164, 54464, 36165, 57778, 36166, 57786, 45238, 36167, - 36168, 36169, 36170, 57780, 36171, 49145, 36172, 57785, 36173, 36174, 57787, 36175, 36176, 36177, 36178, 36179, 36180, 57790, 36181, 36182, 36183, 36184, - 36185, 36186, 57788, 36187, 36188, 36189, 36190, 36191, 36192, 54981, 36193, 36194, 36195, 36196, 36197, 36198, 36199, 53183, 36200, 36201, 57789, 57791, - 49869, 36202, 46827, 36203, 54264, 36204, 36205, 51149, 36206, 36207, 47077, 36208, 36209, 36210, 36211, 36212, 36213, 36214, 36215, 36216, 36217, 48894, - 36218, 36219, 36220, 36221, 36222, 36224, 57792, 57793, 36225, 36226, 57799, 46055, 36227, 36228, 36229, 36230, 36231, 36232, 50921, 36233, 36234, 36235, - 36236, 36237, 46302, 36238, 53698, 36239, 36240, 36241, 36242, 57800, 36243, 36244, 57798, 36245, 36246, 36247, 36248, 36249, 57797, 36250, 57795, 57794, - 36251, 45504, 36252, 36253, 36254, 54712, 57796, 36255, 36256, 36257, 36258, 36259, 57803, 36260, 36261, 36262, 36263, 36264, 36265, 36266, 36267, 57804, - 57802, 36268, 36269, 36270, 36271, 36272, 36273, 36274, 36275, 61434, 36276, 36277, 57811, 57810, 51126, 36278, 36279, 36280, 36281, 36282, 36283, 36284, - 36285, 36286, 36287, 36288, 57801, 36289, 36290, 57806, 36291, 57808, 36292, 36293, 36294, 36295, 36296, 36297, 36298, 36299, 36300, 36301, 36302, 57812, - 36303, 57809, 57805, 36304, 36305, 57807, 36306, 36307, 36308, 36309, 57813, 36310, 36311, 36312, 36313, 36314, 36315, 36316, 36317, 36318, 36319, 36320, - 36321, 36322, 57814, 36323, 36324, 36325, 36326, 36327, 36328, 36329, 36330, 36331, 36332, 36333, 36334, 36335, 36336, 36337, 36338, 36339, 36340, 36341, - 36342, 36343, 36344, 57815, 36345, 36346, 36347, 57816, 36348, 36349, 36350, 36416, 36417, 36418, 36419, 36420, 36421, 36422, 36423, 36424, 36425, 36426, - 36427, 36428, 36429, 36430, 36431, 36432, 36433, 36434, 36435, 36436, 36437, 57818, 36438, 36439, 36440, 36441, 36442, 36443, 36444, 36445, 36446, 36447, - 36448, 36449, 36450, 57819, 36451, 36452, 36453, 36454, 36455, 36456, 36457, 52897, 36458, 36459, 36460, 36461, 36462, 36463, 36464, 36465, 36466, 36467, - 36468, 36469, 36470, 59357, 36471, 46248, 55005, 36472, 36473, 53682, 46002, 36474, 36475, 47524, 55283, 51145, 48862, 47534, 36476, 52951, 36477, 36478, - 45806, 56271, 36480, 48314, 53969, 52168, 45261, 36481, 36482, 53231, 36483, 36484, 36485, 36486, 36487, 55779, 48621, 36488, 36489, 45522, 51920, 45756, - 36490, 52135, 47019, 36491, 51878, 36492, 36493, 36494, 53155, 36495, 36496, 57592, 54730, 57595, 36497, 36498, 57594, 50625, 52475, 36499, 49585, 57593, - 55011, 45743, 54980, 46555, 36500, 36501, 36502, 36503, 36504, 36505, 36506, 36507, 46328, 54945, 36508, 36509, 36510, 36511, 36512, 53167, 45295, 36513, - 36514, 57596, 36515, 36516, 36517, 36518, 36519, 57761, 45987, 36520, 36521, 57597, 57598, 50097, 36522, 36523, 36524, 36525, 50141, 36526, 57762, 47097, - 36527, 36528, 36529, 36530, 36531, 36532, 48079, 36533, 36534, 36535, 36536, 36537, 36538, 36539, 57763, 50363, 36540, 36541, 36542, 36543, 36544, 57764, - 36545, 36546, 57765, 36547, 36548, 57766, 46257, 36549, 36550, 36551, 36552, 36553, 36554, 36555, 36556, 36557, 36558, 36559, 36560, 36561, 36562, 36563, - 47305, 50877, 50410, 36564, 45730, 36565, 53458, 36566, 59355, 48067, 54231, 54212, 36567, 47587, 58063, 36568, 36569, 36570, 55215, 36571, 51180, 45523, - 36572, 36573, 46258, 58065, 36574, 36575, 36576, 53490, 49838, 58064, 36577, 49122, 54182, 46551, 58066, 46570, 36578, 50157, 47357, 36579, 47278, 36580, - 50643, 47055, 58068, 36581, 36582, 36583, 36584, 58067, 46792, 55289, 36585, 36586, 36587, 36588, 36589, 52645, 36590, 36591, 36592, 36593, 36594, 58072, - 36595, 58070, 51964, 49077, 54201, 58069, 36596, 36597, 36598, 36599, 58071, 36600, 36601, 36602, 36603, 36604, 36605, 36606, 36672, 36673, 36674, 49582, - 49352, 36675, 36676, 36677, 36678, 36679, 36680, 58075, 58074, 49322, 36681, 36682, 49614, 36683, 36684, 36685, 36686, 58076, 36687, 36688, 36689, 36690, - 36691, 36692, 36693, 36694, 36695, 36696, 36697, 36698, 58077, 36699, 58078, 36700, 36701, 36702, 36703, 36704, 36705, 36706, 36707, 36708, 56264, 36709, - 53715, 52642, 36710, 36711, 48552, 36712, 36713, 36714, 57027, 55461, 49066, 56269, 53996, 50938, 50602, 36715, 36716, 36717, 57028, 36718, 45527, 57262, - 36719, 36720, 36721, 51901, 36722, 57265, 36723, 47533, 36724, 54013, 36725, 47269, 47851, 36726, 36727, 46042, 36728, 36729, 36730, 46556, 54725, 36731, - 36732, 36733, 36734, 50134, 53202, 48033, 36736, 58867, 58866, 36737, 36738, 58868, 36739, 52708, 36740, 51445, 36741, 36742, 36743, 36744, 36745, 36746, - 36747, 46511, 51135, 36748, 58870, 36749, 36750, 36751, 60592, 36752, 36753, 36754, 36755, 36756, 36757, 36758, 36759, 36760, 36761, 36762, 36763, 36764, - 36765, 36766, 58854, 36767, 47593, 46513, 36768, 49852, 58856, 58855, 58857, 36769, 36770, 36771, 36772, 53965, 36773, 36774, 36775, 57834, 53454, 36776, - 52654, 36777, 53733, 36778, 36779, 45770, 45547, 36780, 45554, 50669, 36781, 36782, 54723, 54192, 36783, 57820, 36784, 36785, 36786, 57821, 36787, 53979, - 36788, 46009, 45515, 36789, 36790, 36791, 52729, 54775, 57822, 36792, 48822, 46333, 36793, 57823, 47836, 57824, 48050, 49865, 57825, 36794, 36795, 36796, - 53484, 36797, 52669, 36798, 36799, 57826, 36800, 46531, 50631, 57827, 36801, 36802, 57828, 36803, 36804, 36805, 36806, 54265, 36807, 36808, 36809, 36810, - 36811, 36812, 57829, 36813, 53677, 36814, 36815, 57830, 52898, 36816, 36817, 36818, 36819, 36820, 36821, 57831, 36822, 46530, 36823, 36824, 36825, 36826, - 57832, 48085, 36827, 36828, 36829, 36830, 36831, 53444, 58080, 45528, 53988, 36832, 36833, 58081, 36834, 36835, 48329, 51404, 36836, 58083, 60670, 60669, - 57263, 36837, 36838, 36839, 58082, 54974, 52732, 50086, 36840, 36841, 36842, 58307, 36843, 36844, 54994, 58087, 36845, 36846, 58088, 36847, 36848, 54215, - 36849, 36850, 58092, 49132, 36851, 58093, 58085, 36852, 36853, 46016, 36854, 36855, 36856, 50414, 36857, 36858, 58094, 36859, 36860, 53443, 36861, 47862, - 58089, 47070, 48051, 52396, 52171, 58084, 58086, 58090, 58091, 36862, 36928, 36929, 58103, 36930, 36931, 58100, 54517, 58099, 36932, 36933, 50605, 36934, - 54778, 50626, 45760, 36935, 36936, 58095, 36937, 58098, 49583, 52156, 36938, 36939, 46497, 58105, 36940, 36941, 36942, 48305, 58097, 53460, 54457, 58101, - 47574, 58102, 36943, 36944, 36945, 51155, 36946, 36947, 36948, 36949, 36950, 58096, 36951, 36952, 36953, 36954, 36955, 55260, 60833, 36956, 36957, 58104, - 36958, 60837, 58110, 51921, 36959, 36960, 36961, 36962, 36963, 36964, 36965, 49589, 36966, 48080, 36967, 36968, 49110, 36969, 47843, 36970, 36971, 52129, - 36972, 36973, 36974, 60838, 60835, 36975, 36976, 60834, 36977, 36978, 36979, 36980, 48086, 60839, 53492, 36981, 36982, 60836, 47838, 46839, 58273, 46770, - 52465, 47527, 36983, 53154, 51105, 36984, 36985, 49106, 36986, 36987, 46833, 36988, 58106, 58107, 58109, 58108, 50389, 58274, 36989, 54209, 36990, 36992, - 36993, 58279, 51140, 36994, 36995, 36996, 36997, 53156, 36998, 36999, 58281, 47799, 37000, 37001, 37002, 37003, 58280, 37004, 48090, 37005, 58275, 37006, - 37007, 37008, 58276, 58282, 37009, 58278, 37010, 52978, 54214, 37011, 37012, 48060, 37013, 37014, 54467, 37015, 50426, 37016, 37017, 60840, 53500, 58277, - 37018, 50165, 37019, 58285, 45487, 37020, 58290, 37021, 37022, 37023, 48322, 37024, 37025, 58284, 46527, 37026, 37027, 37028, 37029, 37030, 37031, 37032, - 37033, 51177, 58288, 37034, 37035, 37036, 48810, 52719, 37037, 37038, 37039, 37040, 37041, 48115, 37042, 37043, 37044, 52456, 37045, 37046, 58287, 37047, - 58289, 37048, 53159, 58286, 37049, 52905, 48093, 37050, 37051, 37052, 37053, 37054, 46571, 48869, 45778, 46029, 37055, 45497, 58283, 45777, 46508, 47583, - 46824, 37056, 37057, 53227, 58295, 37058, 48076, 37059, 37060, 51399, 53450, 37061, 37062, 37063, 37064, 37065, 58296, 46062, 37066, 37067, 37068, 37069, - 60841, 37070, 54266, 54244, 37071, 37072, 37073, 60842, 58297, 53986, 37074, 37075, 37076, 37077, 37078, 58293, 37079, 37080, 37081, 37082, 54238, 37083, - 37084, 37085, 37086, 47312, 58291, 37087, 37088, 58294, 47071, 37089, 58292, 49314, 37090, 37091, 37092, 58298, 37093, 37094, 37095, 37096, 37097, 37098, - 37099, 37100, 37101, 37102, 37103, 37104, 37105, 37106, 37107, 37108, 37109, 37110, 37111, 54456, 37112, 37113, 37114, 37115, 37116, 37117, 37118, 37184, - 46280, 37185, 58299, 37186, 48069, 37187, 51703, 37188, 37189, 51685, 37190, 37191, 37192, 50365, 37193, 37194, 37195, 37196, 37197, 37198, 37199, 60843, - 37200, 37201, 37202, 37203, 49917, 37204, 37205, 37206, 37207, 48091, 49070, 37208, 37209, 37210, 37211, 37212, 37213, 37214, 52927, 37215, 37216, 37217, - 37218, 58300, 37219, 49078, 37220, 37221, 37222, 37223, 37224, 37225, 37226, 37227, 37228, 37229, 37230, 37231, 37232, 37233, 37234, 37235, 37236, 37237, - 37238, 45551, 37239, 37240, 54519, 37241, 37242, 37243, 37244, 37245, 58302, 37246, 37248, 37249, 37250, 37251, 37252, 37253, 37254, 60845, 37255, 37256, - 37257, 37258, 37259, 37260, 37261, 37262, 37263, 58303, 47785, 60844, 37264, 37265, 58301, 37266, 37267, 37268, 37269, 37270, 37271, 37272, 37273, 37274, - 37275, 58304, 37276, 37277, 37278, 37279, 37280, 37281, 47798, 37282, 37283, 37284, 46766, 37285, 37286, 37287, 37288, 37289, 53432, 37290, 45251, 60846, - 37291, 37292, 37293, 37294, 37295, 60847, 49345, 37296, 58305, 37297, 37298, 37299, 37300, 37301, 37302, 37303, 37304, 37305, 37306, 37307, 37308, 37309, - 37310, 37311, 37312, 37313, 50611, 37314, 37315, 37316, 37317, 37318, 37319, 37320, 37321, 37322, 37323, 37324, 37325, 37326, 37327, 58306, 37328, 37329, - 37330, 37331, 37332, 37333, 37334, 37335, 37336, 56498, 37337, 37338, 37339, 37340, 37341, 37342, 60848, 37343, 47338, 37344, 52972, 60071, 53479, 51961, - 51414, 53175, 46025, 52946, 48612, 37345, 37346, 58334, 48114, 60072, 54717, 37347, 50909, 60073, 37348, 37349, 37350, 60074, 37351, 60076, 60075, 37352, - 60078, 60077, 37353, 37354, 37355, 37356, 48600, 37357, 60079, 37358, 49854, 37359, 37360, 37361, 37362, 46273, 46327, 37363, 37364, 48039, 37365, 37366, - 37367, 37368, 37369, 60646, 60645, 47039, 52217, 45538, 37370, 60647, 37371, 37372, 37373, 51656, 60648, 60649, 37374, 51926, 57040, 45765, 54522, 37440, - 37441, 50891, 45255, 46322, 51411, 37442, 37443, 37444, 52688, 37445, 37446, 49080, 37447, 37448, 37449, 37450, 37451, 37452, 37453, 49115, 37454, 37455, - 51108, 54964, 37456, 49321, 57041, 51624, 53743, 50596, 45287, 46006, 51397, 37457, 37458, 45282, 37459, 37460, 47094, 37461, 37462, 50682, 37463, 37464, - 46835, 37465, 54738, 46032, 48316, 37466, 37467, 37468, 45997, 37469, 37470, 37471, 37472, 48881, 45265, 37473, 37474, 37475, 37476, 37477, 37478, 53974, - 51939, 55205, 37479, 52662, 46774, 49081, 54747, 37480, 47271, 50647, 37481, 37482, 37483, 57042, 49113, 49877, 51136, 37484, 48036, 45480, 37485, 37486, - 50666, 37487, 37488, 50683, 52391, 37489, 37490, 37491, 37492, 45479, 37493, 37494, 37495, 46550, 37496, 37497, 37498, 50344, 37499, 57043, 53690, 46057, - 37500, 50162, 37501, 37502, 47095, 37504, 55028, 46499, 45808, 50356, 50409, 49325, 57044, 37505, 45288, 50628, 49632, 37506, 47573, 37507, 48860, 52696, - 45262, 37508, 52687, 57046, 48848, 55230, 57045, 54736, 45277, 37509, 37510, 50402, 37511, 37512, 49827, 48368, 37513, 54197, 49337, 50593, 45734, 54513, - 37514, 37515, 49320, 51907, 57047, 54780, 37516, 47536, 37517, 51373, 52137, 37518, 57049, 49085, 37519, 37520, 37521, 37522, 50868, 55207, 51888, 50371, - 37523, 46038, 47570, 37524, 37525, 37526, 37527, 54968, 60156, 45236, 37528, 37529, 37530, 37531, 49126, 37532, 37533, 52468, 37534, 37535, 37536, 37537, - 52698, 37538, 37539, 37540, 54975, 49870, 37541, 52942, 52386, 53422, 50387, 46514, 57048, 54773, 48311, 48083, 37542, 37543, 45220, 37544, 50610, 46316, - 37545, 37546, 37547, 54769, 37548, 37549, 60157, 37550, 37551, 37552, 37553, 37554, 37555, 57050, 52646, 37556, 37557, 52716, 37558, 37559, 37560, 37561, - 52966, 57052, 37562, 52657, 49318, 37563, 37564, 55229, 37565, 57051, 45254, 47796, 51667, 50419, 48872, 37566, 37567, 37568, 37569, 45750, 37570, 37571, - 37572, 37573, 37574, 37575, 37576, 37577, 49356, 52208, 37578, 48369, 48059, 46519, 37579, 37580, 37581, 50677, 37582, 57062, 37583, 37584, 37585, 57059, - 48861, 37586, 37587, 57055, 37588, 37589, 37590, 37591, 46263, 48605, 37592, 37593, 57056, 50413, 37594, 37595, 37596, 37597, 53190, 37598, 46560, 37599, - 37600, 37601, 37602, 46814, 51930, 46580, 57061, 37603, 54726, 37604, 57057, 52429, 50942, 37605, 50629, 37606, 37607, 37608, 53940, 37609, 48882, 37610, - 37611, 37612, 37613, 37614, 37615, 37616, 49875, 37617, 52413, 46008, 37618, 48595, 37619, 49112, 52678, 53722, 46315, 37620, 57060, 57053, 57063, 37621, - 60158, 37622, 37623, 49840, 57058, 37624, 37625, 54976, 46503, 37626, 45812, 37627, 57064, 37628, 57074, 37629, 37630, 37696, 37697, 37698, 57069, 37699, - 57073, 37700, 37701, 51424, 37702, 37703, 37704, 55265, 57071, 50152, 52449, 37705, 45797, 37706, 37707, 37708, 53950, 37709, 37710, 37711, 37712, 37713, - 37714, 37715, 57070, 37716, 57067, 52949, 37717, 46247, 37718, 37719, 37720, 37721, 37722, 49067, 48830, 37723, 37724, 48594, 37725, 37726, 37727, 37728, - 57065, 37729, 54446, 37730, 57054, 37731, 57066, 37732, 37733, 37734, 37735, 49343, 37736, 57068, 45811, 47337, 49831, 37737, 37738, 48577, 37739, 37740, - 37741, 37742, 37743, 57077, 57080, 37744, 37745, 45739, 46244, 37746, 37747, 46314, 51622, 37748, 37749, 37750, 37751, 37752, 37753, 57078, 52177, 37754, - 47331, 37755, 57079, 57082, 37756, 37757, 37758, 37760, 57081, 37761, 37762, 37763, 52418, 37764, 45281, 46318, 37765, 37766, 37767, 37768, 37769, 37770, - 58810, 37771, 37772, 37773, 37774, 37775, 53423, 37776, 37777, 45803, 37778, 60321, 37779, 57076, 37780, 37781, 51683, 57075, 45274, 53921, 45559, 37782, - 52399, 37783, 37784, 37785, 37786, 37787, 37788, 37789, 57072, 37790, 52132, 37791, 37792, 37793, 54698, 37794, 37795, 37796, 37797, 37798, 57083, 37799, - 37800, 37801, 37802, 37803, 37804, 37805, 37806, 46301, 37807, 50342, 37808, 37809, 37810, 57085, 37811, 37812, 37813, 37814, 37815, 37816, 37817, 37818, - 37819, 37820, 50174, 50337, 57249, 37821, 37822, 37823, 37824, 37825, 37826, 37827, 49612, 37828, 57084, 48879, 37829, 50866, 37830, 37831, 37832, 37833, - 37834, 37835, 37836, 37837, 37838, 46021, 51446, 37839, 37840, 52154, 57086, 37841, 37842, 57252, 37843, 37844, 37845, 37846, 55218, 37847, 37848, 37849, - 37850, 37851, 46007, 37852, 37853, 37854, 37855, 49603, 37856, 37857, 51147, 45733, 46313, 37858, 55211, 37859, 37860, 37861, 37862, 50412, 37863, 57250, - 57251, 37864, 57253, 37865, 47795, 37866, 37867, 37868, 57254, 37869, 49374, 37870, 37871, 51651, 37872, 37873, 37874, 37875, 37876, 37877, 37878, 45785, - 51174, 37879, 57255, 37880, 51164, 37881, 37882, 37883, 37884, 57256, 60322, 37885, 37886, 37952, 37953, 37954, 52179, 37955, 37956, 37957, 57258, 37958, - 57257, 37959, 45761, 37960, 37961, 37962, 37963, 37964, 37965, 37966, 37967, 37968, 37969, 37970, 37971, 37972, 37973, 37974, 37975, 37976, 37977, 37978, - 37979, 37980, 37981, 37982, 37983, 37984, 50634, 37985, 37986, 37987, 37988, 37989, 37990, 37991, 37992, 57259, 37993, 37994, 37995, 37996, 37997, 37998, - 37999, 38000, 54492, 38001, 38002, 38003, 38004, 38005, 51393, 38006, 38007, 38008, 38009, 38010, 38011, 38012, 38013, 38014, 38016, 38017, 38018, 57260, - 38019, 38020, 38021, 38022, 38023, 48880, 38024, 38025, 57261, 54951, 38026, 38027, 38028, 38029, 60087, 60342, 51925, 38030, 55548, 47300, 38031, 47525, - 38032, 38033, 47045, 54782, 38034, 38035, 38036, 38037, 38038, 47562, 38039, 38040, 53415, 62669, 38041, 38042, 46544, 38043, 38044, 50164, 38045, 48840, - 38046, 38047, 38048, 60343, 45245, 38049, 38050, 48588, 38051, 49586, 38052, 45526, 45992, 38053, 38054, 38055, 47314, 51618, 38056, 38057, 46808, 38058, - 38059, 38060, 38061, 60344, 48820, 38062, 38063, 38064, 51965, 38065, 51139, 38066, 54779, 38067, 38068, 47091, 38069, 38070, 38071, 38072, 38073, 38074, - 38075, 38076, 38077, 38078, 38079, 38080, 38081, 38082, 38083, 52932, 38084, 38085, 38086, 54699, 45555, 38087, 38088, 38089, 60595, 45279, 38090, 60597, - 38091, 38092, 38093, 46775, 38094, 49615, 38095, 62970, 53425, 38096, 38097, 54757, 38098, 52947, 38099, 38100, 48623, 46050, 38101, 47275, 38102, 54710, - 38103, 60861, 38104, 46799, 38105, 52153, 53442, 38106, 38107, 38108, 38109, 38110, 38111, 38112, 38113, 47037, 38114, 38115, 60598, 51881, 38116, 38117, - 38118, 50644, 38119, 60601, 60600, 49859, 60599, 38120, 38121, 38122, 38123, 53501, 60602, 38124, 60603, 55269, 38125, 38126, 60604, 38127, 38128, 38129, - 60605, 50924, 38130, 38131, 38132, 38133, 38134, 38135, 38136, 38137, 52958, 38138, 48328, 38139, 38140, 51413, 46505, 48841, 54972, 54503, 38141, 38142, - 53678, 53489, 60088, 60089, 60090, 47797, 38208, 38209, 38210, 38211, 51889, 49141, 38212, 38213, 52730, 38214, 38215, 38216, 38217, 38218, 60096, 38219, - 45242, 60094, 38220, 38221, 49317, 38222, 38223, 38224, 60091, 38225, 45821, 38226, 50167, 48104, 38227, 38228, 38229, 53975, 52980, 60095, 38230, 38231, - 38232, 60092, 38233, 38234, 38235, 60099, 38236, 53447, 54195, 38237, 38238, 38239, 38240, 46266, 38241, 50113, 55282, 38242, 38243, 38244, 38245, 54737, - 38246, 51911, 38247, 60101, 38248, 38249, 60100, 60103, 60102, 38250, 38251, 38252, 38253, 38254, 55015, 38255, 53204, 38256, 38257, 60107, 38258, 48078, - 38259, 38260, 38261, 38262, 38263, 38264, 38265, 48634, 51662, 38266, 38267, 60108, 38268, 38269, 51641, 53246, 60106, 54478, 60109, 60111, 38270, 38272, - 52717, 38273, 38274, 38275, 38276, 60105, 38277, 60110, 38278, 38279, 52974, 38280, 48094, 38281, 46015, 38282, 38283, 38284, 38285, 38286, 50901, 48816, - 52986, 38287, 38288, 38289, 51175, 38290, 48807, 60112, 38291, 38292, 54983, 38293, 38294, 38295, 49600, 38296, 38297, 38298, 54493, 38299, 60113, 38300, - 38301, 53182, 38302, 38303, 38304, 38305, 60114, 38306, 38307, 38308, 38309, 51950, 38310, 38311, 38312, 38313, 50607, 45237, 38314, 38315, 38316, 38317, - 38318, 60116, 38319, 38320, 38321, 38322, 38323, 38324, 38325, 38326, 38327, 60115, 62687, 38328, 38329, 38330, 38331, 38332, 50362, 38333, 38334, 38335, - 38336, 38337, 45481, 38338, 38339, 38340, 38341, 58847, 38342, 38343, 38344, 38345, 60117, 38346, 38347, 38348, 38349, 38350, 38351, 38352, 38353, 38354, - 38355, 38356, 38357, 38358, 38359, 38360, 38361, 38362, 38363, 38364, 38365, 38366, 38367, 38368, 38369, 38370, 38371, 51951, 38372, 60118, 60119, 50904, - 38373, 38374, 38375, 38376, 38377, 38378, 38379, 38380, 60120, 38381, 38382, 60121, 38383, 38384, 38385, 38386, 38387, 38388, 54459, 38389, 51194, 53943, - 47356, 38390, 38391, 60098, 38392, 45788, 38393, 38394, 49916, 38395, 54520, 52454, 55278, 38396, 38397, 38398, 38464, 38465, 38466, 38467, 54466, 54224, - 60355, 50675, 38468, 47102, 38469, 38470, 60372, 38471, 38472, 38473, 52151, 60382, 38474, 49354, 38475, 38476, 38477, 52731, 38478, 45999, 38479, 50906, - 38480, 38481, 38482, 38483, 38484, 38485, 60412, 38486, 50366, 38487, 52916, 50345, 45502, 54525, 38488, 51957, 38489, 55020, 38490, 38491, 50899, 46820, - 38492, 38493, 38494, 38495, 48122, 38496, 38497, 53472, 38498, 38499, 51633, 38500, 54483, 51368, 38501, 38502, 47307, 38503, 59582, 51644, 38504, 38505, - 59579, 38506, 49390, 53459, 45764, 46309, 38507, 59580, 38508, 38509, 54728, 38510, 38511, 38512, 38513, 38514, 46789, 38515, 59581, 51960, 47324, 52469, - 38516, 38517, 38518, 49332, 38519, 38520, 53742, 59583, 59586, 38521, 38522, 47804, 38523, 45485, 48604, 38524, 60093, 59587, 38525, 59590, 38526, 59595, - 38528, 38529, 38530, 38531, 59596, 38532, 52169, 45285, 38533, 48299, 38534, 38535, 47545, 38536, 38537, 59585, 38538, 52727, 38539, 59594, 38540, 38541, - 38542, 38543, 52982, 38544, 38545, 38546, 38547, 54765, 38548, 49622, 59588, 38549, 50102, 38550, 47611, 54950, 59592, 38551, 38552, 38553, 51936, 54502, - 38554, 59584, 38555, 59589, 59591, 38556, 51129, 47075, 38557, 59593, 38558, 49117, 59602, 38559, 38560, 59607, 38561, 59605, 48348, 48335, 59611, 38562, - 38563, 38564, 38565, 38566, 38567, 38568, 38569, 59614, 38570, 59610, 45562, 38571, 38572, 38573, 38574, 38575, 38576, 38577, 38578, 38579, 38580, 45272, - 50355, 47308, 50914, 51390, 51425, 38581, 38582, 38583, 59599, 59604, 59606, 38584, 47601, 59608, 55285, 38585, 50427, 38586, 59612, 38587, 38588, 45801, - 38589, 38590, 38591, 59601, 38592, 38593, 48365, 38594, 38595, 49090, 59597, 55033, 38596, 49656, 45809, 38597, 38598, 38599, 38600, 38601, 38602, 38603, - 38604, 59615, 38605, 51905, 59609, 38606, 38607, 38608, 38609, 54692, 38610, 45546, 54715, 59598, 59600, 46768, 59603, 38611, 59613, 49336, 38612, 51959, - 38613, 52136, 38614, 38615, 50908, 49397, 38616, 38617, 38618, 38619, 38620, 59625, 38621, 38622, 38623, 53411, 38624, 38625, 38626, 38627, 38628, 38629, - 38630, 59634, 55018, 38631, 38632, 38633, 38634, 38635, 38636, 38637, 59616, 59617, 38638, 38639, 38640, 53753, 47819, 47353, 38641, 38642, 47345, 54484, - 59631, 38643, 59630, 59628, 47600, 52434, 59622, 52902, 49138, 38644, 45240, 59633, 59632, 38645, 55232, 38646, 59620, 38647, 52649, 51619, 38648, 48056, - 48603, 59626, 38649, 38650, 38651, 38652, 38653, 38654, 38720, 38721, 38722, 38723, 59618, 59619, 59621, 46517, 59623, 51141, 59627, 59629, 48560, 55214, - 38724, 59640, 38725, 38726, 38727, 38728, 38729, 38730, 38731, 38732, 59637, 38733, 52656, 59638, 38734, 38735, 38736, 38737, 38738, 38739, 38740, 38741, - 38742, 49594, 38743, 59624, 38744, 50103, 45296, 38745, 38746, 38747, 38748, 38749, 38750, 38751, 38752, 59636, 38753, 38754, 38755, 59639, 38756, 38757, - 38758, 47523, 38759, 38760, 38761, 38762, 38763, 38764, 38765, 38766, 38767, 38768, 51666, 38769, 38770, 38771, 50126, 52960, 49382, 38772, 38773, 38774, - 38775, 52211, 38776, 52445, 53429, 38777, 38778, 51937, 38779, 59635, 38780, 38781, 38782, 38784, 38785, 38786, 38787, 38788, 38789, 38790, 48364, 38791, - 59641, 38792, 38793, 38794, 38795, 38796, 38797, 50142, 38798, 50917, 38799, 47607, 38800, 38801, 38802, 38803, 45300, 38804, 38805, 55256, 38806, 38807, - 48300, 38808, 50671, 38809, 38810, 38811, 38812, 38813, 52420, 38814, 38815, 59814, 38816, 38817, 38818, 38819, 38820, 38821, 38822, 38823, 38824, 38825, - 51629, 38826, 59810, 49378, 38827, 38828, 38829, 49091, 38830, 38831, 38832, 59646, 47575, 38833, 59643, 38834, 38835, 38836, 38837, 59812, 38838, 38839, - 38840, 53966, 38841, 38842, 38843, 38844, 38845, 59811, 38846, 54962, 55221, 38847, 59815, 38848, 48567, 38849, 38850, 38851, 38852, 38853, 38854, 38855, - 38856, 38857, 38858, 38859, 38860, 59644, 59645, 38861, 38862, 38863, 59809, 38864, 38865, 38866, 38867, 38868, 38869, 38870, 38871, 52694, 38872, 38873, - 53932, 38874, 38875, 38876, 59826, 38877, 38878, 38879, 38880, 59817, 38881, 38882, 38883, 46250, 38884, 46267, 38885, 38886, 59819, 38887, 38888, 38889, - 38890, 38891, 38892, 38893, 38894, 38895, 38896, 38897, 38898, 38899, 38900, 38901, 38902, 38903, 53416, 38904, 38905, 59813, 38906, 38907, 46078, 38908, - 38909, 59820, 49379, 38910, 59818, 38976, 38977, 59833, 38978, 38979, 59832, 38980, 38981, 38982, 38983, 59822, 38984, 38985, 59642, 38986, 38987, 59816, - 38988, 38989, 38990, 38991, 38992, 49068, 59825, 59834, 38993, 38994, 49829, 38995, 38996, 38997, 59823, 38998, 47301, 38999, 59821, 39000, 54236, 59828, - 59829, 59831, 39001, 39002, 39003, 59847, 39004, 39005, 39006, 39007, 39008, 39009, 49350, 59845, 39010, 39011, 59824, 39012, 39013, 59835, 45297, 39014, - 39015, 39016, 39017, 39018, 39019, 39020, 39021, 39022, 39023, 59836, 54693, 39024, 39025, 59838, 39026, 59839, 39027, 39028, 39029, 59841, 39030, 39031, - 49649, 39032, 39033, 51382, 39034, 39035, 39036, 59837, 39037, 39038, 39040, 39041, 39042, 59842, 39043, 39044, 39045, 39046, 39047, 39048, 39049, 39050, - 59843, 39051, 59827, 39052, 59830, 39053, 48049, 39054, 39055, 39056, 59840, 39057, 39058, 39059, 39060, 39061, 39062, 48375, 39063, 39064, 39065, 59844, - 59846, 39066, 39067, 39068, 39069, 39070, 39071, 39072, 39073, 39074, 39075, 39076, 39077, 59850, 39078, 39079, 39080, 39081, 59854, 39082, 39083, 39084, - 39085, 39086, 39087, 39088, 39089, 39090, 39091, 45787, 39092, 59848, 39093, 39094, 39095, 39096, 39097, 39098, 39099, 39100, 39101, 39102, 47022, 39103, - 39104, 39105, 39106, 39107, 39108, 39109, 39110, 39111, 39112, 39113, 39114, 59851, 59852, 39115, 39116, 39117, 39118, 39119, 39120, 54721, 39121, 50339, - 39122, 39123, 39124, 39125, 39126, 39127, 59864, 39128, 47841, 39129, 39130, 39131, 39132, 59849, 39133, 54179, 39134, 39135, 39136, 59860, 39137, 39138, - 39139, 39140, 39141, 39142, 39143, 59863, 59856, 39144, 39145, 39146, 39147, 39148, 59855, 39149, 39150, 51137, 39151, 39152, 39153, 39154, 39155, 39156, - 39157, 39158, 59858, 39159, 39160, 39161, 39162, 39163, 39164, 39165, 59865, 46024, 39166, 59859, 39232, 39233, 39234, 39235, 39236, 53232, 39237, 39238, - 39239, 59853, 39240, 39241, 39242, 39243, 39244, 39245, 39246, 39247, 39248, 39249, 39250, 46071, 39251, 39252, 39253, 39254, 39255, 39256, 39257, 59862, - 39258, 39259, 59866, 39260, 39261, 39262, 52404, 39263, 39264, 39265, 53165, 39266, 39267, 39268, 39269, 39270, 39271, 39272, 39273, 39274, 59861, 39275, - 59868, 59867, 39276, 39277, 39278, 39279, 39280, 59870, 39281, 39282, 39283, 39284, 39285, 39286, 39287, 39288, 59857, 39289, 39290, 39291, 39292, 39293, - 39294, 39296, 39297, 59869, 39298, 59871, 50122, 39299, 39300, 39301, 39302, 39303, 39304, 39305, 39306, 39307, 39308, 39309, 39310, 39311, 39312, 39313, - 39314, 39315, 39316, 39317, 39318, 39319, 39320, 39321, 39322, 39323, 39324, 39325, 39326, 39327, 39328, 39329, 39330, 39331, 39332, 39333, 39334, 39335, - 39336, 39337, 39338, 39339, 39340, 39341, 39342, 39343, 39344, 39345, 39346, 39347, 39348, 39349, 39350, 39351, 39352, 39353, 39354, 39355, 39356, 39357, - 39358, 39359, 39360, 39361, 39362, 39363, 39364, 39365, 39366, 39367, 39368, 39369, 39370, 39371, 39372, 39373, 39374, 39375, 39376, 39377, 39378, 39379, - 39380, 39381, 39382, 39383, 39384, 39385, 39386, 39387, 39388, 39389, 39390, 39391, 39392, 39393, 39394, 39395, 39396, 39397, 39398, 39399, 39400, 39401, - 39402, 39403, 39404, 39405, 39406, 39407, 39408, 39409, 39410, 39411, 39412, 39413, 51127, 46286, 48054, 53440, 60579, 39414, 39415, 50615, 39416, 39417, - 39418, 39419, 39420, 39421, 39422, 39488, 39489, 39490, 54267, 39491, 39492, 39493, 39494, 60580, 39495, 60581, 50907, 39496, 39497, 39498, 49134, 39499, - 39500, 39501, 39502, 60582, 39503, 39504, 60583, 53418, 39505, 51128, 39506, 39507, 47336, 39508, 39509, 39510, 39511, 39512, 39513, 39514, 39515, 39516, - 39517, 39518, 39519, 60584, 39520, 39521, 39522, 39523, 39524, 39525, 39526, 39527, 54969, 54781, 46283, 45757, 52964, 50919, 39528, 39529, 52705, 39530, - 39531, 39532, 39533, 39534, 39535, 39536, 39537, 39538, 39539, 39540, 39541, 39542, 39543, 46325, 39544, 52160, 48351, 39545, 39546, 39547, 39548, 59874, - 59875, 53738, 59877, 39549, 46329, 59876, 39550, 53683, 51938, 45776, 39552, 59880, 39553, 39554, 39555, 39556, 59878, 59879, 39557, 39558, 54963, 39559, - 39560, 39561, 59881, 59882, 39562, 39563, 39564, 39565, 39566, 59883, 39567, 39568, 39569, 39570, 39571, 39572, 39573, 39574, 59884, 39575, 39576, 39577, - 39578, 39579, 39580, 39581, 39582, 60591, 50617, 46798, 39583, 54003, 39584, 39585, 39586, 39587, 39588, 39589, 39590, 46574, 39591, 48089, 60593, 39592, - 39593, 53987, 39594, 39595, 39596, 39597, 39598, 52963, 39599, 50360, 39600, 50111, 39601, 39602, 46782, 55481, 45512, 45519, 45521, 50686, 39603, 45520, - 39604, 50091, 39605, 39606, 39607, 39608, 39609, 54705, 39610, 39611, 39612, 39613, 39614, 39615, 39616, 39617, 60324, 47809, 39618, 39619, 39620, 52410, - 39621, 39622, 39623, 60325, 39624, 60327, 39625, 39626, 39627, 60328, 39628, 39629, 39630, 60326, 39631, 39632, 39633, 39634, 39635, 39636, 39637, 60329, - 60331, 60330, 39638, 39639, 39640, 39641, 39642, 60332, 39643, 51919, 55477, 50161, 39644, 50085, 50936, 60333, 50378, 39645, 60334, 60335, 60336, 47061, - 39646, 39647, 39648, 47098, 39649, 60337, 51170, 39650, 60339, 39651, 47780, 53749, 45233, 60338, 60340, 39652, 39653, 39654, 46506, 49864, 51176, 39655, - 60341, 39656, 52142, 58335, 39657, 39658, 54208, 39659, 39660, 39661, 39662, 55771, 39663, 39664, 52641, 54957, 51187, 39665, 39666, 39667, 55776, 48099, - 39668, 47802, 58338, 39669, 39670, 39671, 39672, 39673, 53163, 39674, 39675, 39676, 58336, 51655, 39677, 47801, 39678, 39744, 39745, 53684, 58337, 51434, - 47535, 48557, 46040, 52955, 39746, 39747, 52416, 39748, 39749, 39750, 58344, 58345, 52724, 39751, 39752, 39753, 39754, 39755, 52397, 39756, 48307, 39757, - 58346, 39758, 58347, 39759, 39760, 53466, 39761, 39762, 39763, 50939, 47066, 39764, 39765, 51167, 53962, 52950, 39766, 58340, 58348, 39767, 51698, 46017, - 39768, 39769, 58343, 39770, 39771, 50915, 58341, 39772, 39773, 60851, 58342, 39774, 39775, 39776, 39777, 51635, 39778, 50662, 39779, 39780, 39781, 47541, - 39782, 50107, 39783, 58339, 50621, 49572, 49881, 45783, 39784, 58349, 48038, 50349, 39785, 58352, 48858, 39786, 39787, 58363, 58357, 47827, 39788, 39789, - 39790, 39791, 47056, 54221, 39792, 54990, 54739, 47553, 54708, 53720, 39793, 39794, 39795, 39796, 53433, 51190, 39797, 39798, 39799, 51370, 45748, 39800, - 50138, 39801, 39802, 39803, 58350, 39804, 39805, 58364, 58351, 47016, 58359, 58356, 39806, 39808, 39809, 47034, 39810, 39811, 50594, 39812, 58358, 50653, - 45736, 50940, 39813, 50400, 39814, 39815, 55202, 39816, 49377, 58361, 39817, 39818, 58362, 58365, 52393, 58355, 39819, 54206, 39820, 45507, 60852, 58353, - 58354, 39821, 58360, 53434, 50883, 54515, 58366, 39822, 39823, 48608, 39824, 39825, 58535, 39826, 39827, 58534, 39828, 39829, 39830, 53747, 58531, 39831, - 58537, 39832, 39833, 39834, 51447, 39835, 39836, 39837, 39838, 53172, 39839, 58536, 58542, 49893, 39840, 39841, 46772, 39842, 39843, 39844, 39845, 39846, - 39847, 48626, 39848, 58530, 39849, 39850, 47849, 58538, 39851, 39852, 58540, 39853, 39854, 46845, 55006, 58546, 39855, 58541, 39856, 39857, 39858, 58529, - 39859, 48110, 52701, 51106, 50633, 39860, 39861, 49655, 39862, 58532, 39863, 51123, 48556, 48573, 58533, 39864, 55239, 45794, 39865, 58539, 48323, 58543, - 39866, 48107, 58544, 50600, 58545, 39867, 39868, 39869, 39870, 54755, 49059, 39871, 58554, 39872, 58551, 39873, 58555, 39874, 39875, 58557, 39876, 39877, - 50902, 39878, 39879, 47814, 49355, 39880, 39881, 39882, 47265, 58548, 39883, 39884, 39885, 39886, 54433, 39887, 39888, 47779, 48638, 39889, 39890, 39891, - 58556, 39892, 39893, 39894, 39895, 39896, 52671, 39897, 39898, 50425, 39899, 39900, 53243, 51686, 39901, 39902, 54207, 39903, 53201, 39904, 39905, 58547, - 39906, 58552, 58553, 52457, 39907, 39908, 39909, 39910, 39911, 52430, 39912, 49364, 58549, 49584, 58550, 52944, 39913, 48065, 46547, 39914, 51443, 48551, - 54727, 51628, 47266, 58570, 39915, 39916, 58572, 53700, 39917, 39918, 53946, 39919, 39920, 47789, 39921, 39922, 47828, 39923, 39924, 39925, 39926, 39927, - 39928, 58563, 46573, 39929, 39930, 39931, 55245, 58560, 53245, 58559, 39932, 39933, 39934, 49628, 52426, 40000, 40001, 40002, 40003, 51943, 40004, 40005, - 40006, 40007, 50391, 40008, 52436, 58568, 40009, 40010, 40011, 58567, 58561, 40012, 58564, 46509, 40013, 40014, 54233, 40015, 58566, 40016, 40017, 40018, - 40019, 54009, 46307, 40020, 48052, 40021, 40022, 51694, 40023, 46270, 40024, 40025, 40026, 48108, 40027, 53709, 40028, 52461, 60853, 40029, 40030, 40031, - 40032, 40033, 40034, 40035, 40036, 51173, 40037, 40038, 40039, 40040, 54440, 40041, 58571, 55253, 58562, 40042, 48549, 58565, 40043, 40044, 54246, 40045, - 58569, 51704, 40046, 40047, 58558, 40048, 40049, 54245, 40050, 40051, 51198, 46793, 40052, 54524, 45747, 58583, 40053, 40054, 40055, 52930, 40056, 58573, - 40057, 52924, 40058, 47323, 40059, 40060, 58582, 40061, 49098, 40062, 40064, 40065, 54222, 40066, 50156, 40067, 40068, 40069, 40070, 40071, 40072, 40073, - 40074, 50632, 58584, 40075, 40076, 40077, 40078, 40079, 40080, 40081, 40082, 52676, 58575, 40083, 40084, 40085, 40086, 58580, 58581, 40087, 47870, 40088, - 53222, 40089, 40090, 54719, 40091, 40092, 40093, 58578, 40094, 40095, 40096, 40097, 40098, 40099, 40100, 40101, 40102, 40103, 40104, 58576, 40105, 40106, - 58574, 40107, 40108, 40109, 40110, 40111, 40112, 40113, 40114, 40115, 40116, 40117, 40118, 40119, 40120, 40121, 52709, 51882, 40122, 40123, 40124, 49315, - 40125, 48550, 58579, 40126, 40127, 47304, 40128, 40129, 40130, 40131, 40132, 58599, 54452, 40133, 40134, 40135, 40136, 40137, 40138, 40139, 58587, 40140, - 40141, 40142, 49647, 40143, 40144, 58601, 40145, 40146, 53991, 40147, 40148, 58591, 40149, 58592, 40150, 40151, 53162, 40152, 40153, 40154, 40155, 52189, - 40156, 58586, 58577, 40157, 58597, 40158, 51420, 58595, 40159, 40160, 50407, 58594, 40161, 58593, 40162, 40163, 40164, 46076, 58600, 40165, 40166, 40167, - 40168, 46561, 40169, 40170, 40171, 55244, 40172, 40173, 40174, 58598, 40175, 48044, 40176, 55250, 52431, 60408, 40177, 58596, 40178, 40179, 47606, 40180, - 40181, 40182, 54989, 58585, 58588, 49914, 58590, 40183, 49867, 49348, 49872, 40184, 45557, 52402, 40185, 40186, 40187, 40188, 40189, 40190, 40256, 40257, - 40258, 40259, 46542, 40260, 40261, 40262, 40263, 58607, 40264, 40265, 40266, 40267, 40268, 40269, 40270, 40271, 50863, 40272, 40273, 40274, 50913, 40275, - 40276, 58613, 40277, 40278, 40279, 40280, 40281, 49833, 40282, 40283, 40284, 49388, 53725, 58606, 40285, 40286, 40287, 40288, 40289, 40290, 40291, 40292, - 40293, 40294, 50350, 40295, 40296, 40297, 58605, 40298, 40299, 40300, 40301, 58614, 58612, 49918, 40302, 58589, 40303, 58608, 40304, 51966, 40305, 54724, - 40306, 40307, 58609, 40308, 40309, 40310, 40311, 40312, 40313, 40314, 53754, 40315, 40316, 40317, 40318, 40320, 40321, 40322, 58603, 58604, 40323, 40324, - 40325, 58610, 40326, 52907, 40327, 40328, 40329, 40330, 40331, 40332, 40333, 40334, 40335, 40336, 50635, 40337, 40338, 40339, 51121, 40340, 49850, 40341, - 40342, 40343, 58602, 40344, 40345, 40346, 49610, 40347, 40348, 40349, 40350, 40351, 40352, 52406, 46001, 40353, 40354, 40355, 58619, 40356, 58611, 40357, - 40358, 40359, 58618, 40360, 58621, 40361, 58620, 40362, 40363, 40364, 40365, 40366, 40367, 40368, 46030, 40369, 40370, 40371, 46010, 58615, 40372, 40373, - 58617, 58616, 50668, 40374, 40375, 40376, 40377, 40378, 40379, 40380, 40381, 40382, 40383, 40384, 40385, 40386, 49341, 40387, 40388, 40389, 40390, 54504, - 40391, 40392, 40393, 40394, 40395, 58786, 40396, 40397, 40398, 40399, 40400, 40401, 40402, 40403, 40404, 40405, 40406, 45252, 40407, 40408, 58788, 40409, - 40410, 58787, 40411, 40412, 40413, 40414, 40415, 40416, 48292, 40417, 58789, 40418, 40419, 40420, 40421, 40422, 40423, 58785, 40424, 40425, 40426, 40427, - 40428, 40429, 40430, 58622, 45556, 40431, 40432, 40433, 40434, 40435, 40436, 40437, 40438, 40439, 40440, 40441, 58792, 40442, 58793, 58790, 40443, 40444, - 40445, 40446, 40512, 40513, 40514, 40515, 40516, 40517, 40518, 40519, 58791, 58794, 40520, 40521, 40522, 40523, 40524, 40525, 40526, 40527, 40528, 40529, - 40530, 40531, 40532, 40533, 40534, 40535, 40536, 40537, 40538, 40539, 40540, 40541, 40542, 40543, 40544, 40545, 40546, 40547, 40548, 40549, 40550, 40551, - 40552, 50905, 40553, 40554, 40555, 40556, 40557, 40558, 40559, 40560, 58795, 58797, 40561, 40562, 40563, 40564, 40565, 40566, 40567, 58796, 40568, 40569, - 40570, 40571, 40572, 40573, 40574, 40576, 40577, 40578, 40579, 40580, 40581, 40582, 40583, 40584, 40585, 58799, 40586, 40587, 40588, 58798, 40589, 40590, - 40591, 40592, 40593, 40594, 40595, 40596, 40597, 40598, 40599, 40600, 40601, 40602, 40603, 40604, 40605, 40606, 47584, 40607, 40608, 58800, 40609, 40610, - 40611, 40612, 40613, 40614, 40615, 40616, 40617, 40618, 40619, 40620, 40621, 40622, 58801, 40623, 40624, 40625, 40626, 40627, 40628, 40629, 40630, 40631, - 40632, 40633, 40634, 48112, 60641, 50160, 40635, 46534, 48082, 40636, 40637, 40638, 40639, 49641, 54510, 40640, 48836, 40641, 40642, 40643, 55238, 40644, - 54486, 45779, 60606, 40645, 40646, 40647, 40648, 60097, 40649, 40650, 40651, 49839, 46262, 40652, 40653, 40654, 53719, 40655, 40656, 40657, 46004, 40658, - 51378, 49083, 60608, 40659, 40660, 54987, 40661, 40662, 60607, 60609, 40663, 40664, 40665, 40666, 40667, 40668, 40669, 40670, 40671, 40672, 40673, 40674, - 40675, 60613, 48870, 52415, 50650, 48828, 40676, 60614, 40677, 45566, 40678, 40679, 40680, 60612, 54696, 46563, 40681, 60610, 49590, 46051, 40682, 40683, - 60611, 52152, 49347, 52478, 40684, 40685, 40686, 40687, 49618, 40688, 60616, 40689, 40690, 40691, 40692, 40693, 40694, 40695, 40696, 40697, 40698, 40699, - 40700, 40701, 47846, 49363, 40702, 55026, 40768, 40769, 40770, 53708, 40771, 40772, 40773, 40774, 49086, 40775, 47027, 51669, 60615, 48098, 40776, 52428, - 48637, 51400, 40777, 53161, 40778, 40779, 40780, 40781, 40782, 40783, 40784, 52713, 40785, 50667, 40786, 40787, 40788, 47081, 40789, 40790, 40791, 40792, - 40793, 40794, 40795, 40796, 40797, 40798, 40799, 53705, 47800, 40800, 40801, 40802, 40803, 40804, 60617, 40805, 40806, 60618, 40807, 48064, 60619, 40808, - 60642, 45498, 47065, 40809, 40810, 40811, 40812, 40813, 40814, 40815, 40816, 40817, 40818, 40819, 48569, 40820, 40821, 40822, 40823, 40824, 40825, 40826, - 40827, 60620, 53734, 60621, 40828, 40829, 40830, 40832, 51387, 40833, 40834, 40835, 40836, 40837, 40838, 40839, 40840, 40841, 40842, 40843, 40844, 40845, - 40846, 60625, 40847, 40848, 40849, 40850, 60627, 40851, 48077, 40852, 48357, 40853, 40854, 40855, 40856, 40857, 40858, 40859, 40860, 40861, 40862, 40863, - 40864, 40865, 60623, 40866, 51639, 40867, 40868, 40869, 40870, 40871, 50106, 40872, 60643, 54741, 60624, 40873, 40874, 40875, 40876, 40877, 55027, 40878, - 40879, 40880, 60626, 60622, 40881, 40882, 40883, 40884, 60628, 40885, 60629, 40886, 40887, 51647, 40888, 40889, 40890, 40891, 40892, 40893, 53160, 40894, - 40895, 40896, 40897, 40898, 53468, 40899, 40900, 40901, 40902, 53676, 40903, 40904, 40905, 40906, 51419, 40907, 40908, 40909, 60630, 52981, 40910, 40911, - 40912, 40913, 40914, 51948, 60634, 40915, 40916, 40917, 40918, 40919, 40920, 40921, 60633, 40922, 40923, 40924, 45246, 40925, 40926, 40927, 40928, 40929, - 40930, 60631, 40931, 60632, 40932, 40933, 40934, 60644, 40935, 40936, 40937, 40938, 40939, 40940, 40941, 40942, 40943, 51388, 40944, 40945, 40946, 40947, - 40948, 40949, 40950, 40951, 40952, 40953, 49607, 40954, 40955, 40956, 40957, 40958, 60636, 53728, 41024, 41025, 41026, 41027, 41028, 41029, 41030, 41031, - 41032, 41033, 60635, 41034, 41035, 41036, 41037, 54511, 41038, 60637, 41039, 41040, 41041, 41042, 41043, 41044, 56262, 41045, 41046, 41047, 41048, 41049, - 41050, 41051, 41052, 41053, 41054, 60638, 41055, 41056, 41057, 41058, 41059, 41060, 41061, 41062, 41063, 41064, 41065, 41066, 45484, 41067, 41068, 41069, - 41070, 41071, 41072, 41073, 41074, 41075, 41076, 41077, 41078, 41079, 41080, 41081, 41082, 41083, 41084, 41085, 41086, 41088, 41089, 60639, 41090, 41091, - 41092, 41093, 41094, 41095, 41096, 41097, 41098, 41099, 60640, 41100, 55206, 41101, 50624, 41102, 41103, 41104, 60348, 45230, 41105, 41106, 41107, 48884, - 47288, 53935, 45270, 46585, 41108, 55475, 41109, 52140, 41110, 58333, 41111, 41112, 41113, 41114, 41115, 41116, 41117, 50860, 45286, 41118, 41119, 41120, - 50630, 60345, 41121, 41122, 41123, 41124, 60346, 41125, 41126, 41127, 60347, 41128, 41129, 53696, 41130, 50595, 41131, 60146, 41132, 50354, 41133, 50357, - 49358, 41134, 41135, 41136, 60147, 50369, 41137, 52975, 41138, 41139, 41140, 41141, 60144, 60148, 41142, 41143, 51708, 41144, 41145, 51107, 41146, 41147, - 41148, 52440, 52990, 41149, 41150, 41151, 60149, 60150, 53164, 49383, 41152, 41153, 60151, 41154, 41155, 41156, 41157, 41158, 46783, 60152, 41159, 60153, - 41160, 60154, 41161, 41162, 60155, 41163, 41164, 41165, 41166, 41167, 41168, 41169, 41170, 41171, 41172, 41173, 41174, 60145, 41175, 41176, 41177, 41178, - 41179, 41180, 41181, 41182, 41183, 41184, 41185, 41186, 51374, 57835, 41187, 47032, 57836, 41188, 41189, 41190, 57837, 41191, 55220, 57838, 57839, 54220, - 41192, 41193, 41194, 41195, 41196, 41197, 41198, 57841, 49137, 57840, 46546, 41199, 41200, 41201, 45495, 41202, 41203, 41204, 41205, 57843, 57842, 41206, - 47868, 41207, 57844, 41208, 41209, 41210, 41211, 47543, 41212, 48849, 41213, 41214, 43584, 43585, 50428, 43586, 47837, 48582, 43587, 43588, 43589, 43590, - 43591, 43592, 57845, 57847, 43593, 43594, 46784, 53185, 51880, 57846, 54776, 54268, 57848, 57852, 57849, 43595, 43596, 57850, 49386, 43597, 57854, 58017, - 49351, 43598, 43599, 43600, 43601, 57851, 43602, 57853, 43603, 43604, 43605, 43606, 43607, 43608, 58021, 43609, 43610, 43611, 49620, 43612, 43613, 43614, - 43615, 58019, 43616, 58024, 45822, 58018, 43617, 43618, 43619, 50125, 45762, 58023, 58022, 43620, 43621, 58020, 58025, 43622, 43623, 58027, 43624, 43625, - 43626, 53449, 55021, 50088, 58028, 43627, 53207, 43628, 43629, 58030, 43630, 43631, 47855, 43632, 43633, 59872, 58029, 58026, 43634, 43635, 43636, 43637, - 48043, 54451, 43638, 43639, 43640, 43641, 43642, 43643, 43644, 43645, 43646, 43648, 43649, 43650, 43651, 58032, 43652, 43653, 58031, 43654, 59873, 43655, - 43656, 43657, 43658, 58033, 43659, 43660, 43661, 43662, 43663, 43664, 43665, 43666, 58034, 43667, 43668, 43669, 43670, 43671, 43672, 43673, 43674, 43675, - 43676, 43677, 58035, 52385, 43678, 58036, 43679, 43680, 43840, 43841, 43842, 43843, 43844, 43845, 43846, 43847, 43848, 43849, 43850, 43851, 58037, 43852, - 43853, 43854, 43855, 43856, 53502, 43857, 43858, 49866, 43859, 54257, 43860, 52725, 43861, 43862, 59360, 43863, 43864, 59361, 43865, 43866, 43867, 43868, - 48833, 43869, 43870, 43871, 43872, 49898, 43873, 43874, 43875, 59364, 43876, 43877, 59363, 43878, 43879, 43880, 43881, 43882, 43883, 52710, 43884, 50101, - 43885, 43886, 59362, 48055, 53206, 43887, 49633, 59369, 43888, 43889, 43890, 59368, 43891, 43892, 59380, 45731, 43893, 43894, 43895, 43896, 59370, 43897, - 59366, 43898, 43899, 43900, 43901, 43902, 59372, 59371, 51642, 43904, 43905, 54756, 43906, 59365, 47017, 59367, 43907, 43908, 43909, 43910, 43911, 43912, - 43913, 59374, 43914, 43915, 43916, 43917, 59379, 43918, 55017, 43919, 43920, 43921, 43922, 59373, 43923, 59378, 43924, 59377, 43925, 43926, 43927, 45280, - 43928, 43929, 43930, 43931, 59381, 43932, 43933, 43934, 43935, 43936, 44096, 44097, 44098, 44099, 44100, 44101, 44102, 44103, 44104, 44105, 44106, 51186, - 44107, 49349, 49389, 44108, 44109, 49648, 59376, 44110, 44111, 44112, 44113, 59382, 52214, 44114, 44115, 44116, 44117, 44118, 44119, 44120, 44121, 44122, - 59554, 59553, 44123, 44124, 44125, 44126, 44127, 44128, 55233, 44129, 44130, 59386, 59385, 44131, 59387, 44132, 59383, 44133, 59390, 44134, 59389, 44135, - 59388, 44136, 44137, 49621, 51161, 50685, 50627, 44138, 44139, 44140, 44141, 44142, 51181, 44143, 44144, 44145, 44146, 59555, 44147, 44148, 44149, 44150, - 44151, 44152, 44153, 44154, 44155, 44156, 44157, 44158, 44160, 44161, 44162, 44163, 44164, 44165, 44166, 59558, 44167, 59557, 44168, 59559, 47863, 59384, - 59556, 44169, 51440, 51626, 44170, 44171, 44172, 44173, 44174, 44175, 44176, 44177, 44178, 44179, 44180, 44181, 44182, 59561, 44183, 44184, 47589, 44185, - 44186, 44187, 44188, 44189, 53758, 59560, 44190, 44191, 44192, 44352, 44353, 44354, 59562, 44355, 59565, 59566, 44356, 49575, 44357, 44358, 44359, 59567, - 44360, 44361, 44362, 59568, 44363, 44364, 59564, 44365, 59572, 44366, 44367, 44368, 44369, 44370, 44371, 44372, 44373, 44374, 44375, 44376, 59563, 44377, - 59569, 44378, 44379, 44380, 44381, 44382, 44383, 44384, 44385, 59573, 59570, 59571, 44386, 44387, 44388, 44389, 44390, 44391, 44392, 44393, 44394, 44395, - 44396, 44397, 44398, 44399, 44400, 44401, 59575, 44402, 44403, 44404, 44405, 44406, 44407, 44408, 44409, 44410, 44411, 44412, 44413, 44414, 44416, 44417, - 44418, 44419, 44420, 44421, 44422, 44423, 44424, 44425, 59574, 44426, 44427, 44428, 44429, 44430, 44431, 44432, 44433, 44434, 47567, 44435, 61612, 44436, - 61613, 44437, 50864, 45290, 51391, 44438, 52703, 44439, 44440, 44441, 44442, 44443, 44444, 44445, 52941, 60081, 44446, 44447, 44448, 44608, 60082, 44609, - 50879, 46281, 44610, 44611, 44612, 44613, 44614, 44615, 44616, 60083, 44617, 44618, 44619, 44620, 54759, 44621, 44622, 44623, 44624, 44625, 44626, 44627, - 44628, 56825, 44629, 60084, 44630, 60085, 44631, 60086, 44632, 44633, 44634, 44635, 47306, 57264, 51701, 44636, 52464, 44637, 44638, 51706, 44639, 44640, - 44641, 44642, 44643, 51707, 44644, 44645, 54211, 52134, 44646, 47270, 61614, 45506, 44647, 58808, 52463, 54217, 48343, 51690, 44648, 46567, 44649, 50384, - 46569, 44650, 61102, 48045, 44651, 44652, 59358, 44653, 61103, 44654, 44655, 44656, 44657, 45993, 44658, 44659, 61106, 44660, 44661, 61105, 48615, 44662, - 61104, 52919, 44663, 44664, 44665, 44666, 50639, 44667, 44668, 44669, 44670, 49652, 56270, 61107, 53491, 44672, 44673, 44674, 44675, 44676, 44677, 44678, - 44679, 49876, 50920, 44680, 44681, 44682, 47020, 44683, 44684, 44685, 44686, 44687, 44688, 44689, 61108, 44690, 46059, 44691, 44692, 44693, 48123, 61109, - 44694, 44695, 44696, 44697, 44698, 59356, 44699, 44700, 44701, 61110, 44702, 44703, 48558, 44704, 44864, 44865, 44866, 61922, 44867, 44868, 44869, 51944, - 44870, 53961, 61658, 44871, 61659, 44872, 61660, 49606, 44873, 47341, 48846, 44874, 44875, 61662, 44876, 50609, 61661, 53745, 44877, 61664, 45260, 48618, - 44878, 44879, 44880, 44881, 44882, 53983, 61663, 44883, 46255, 47080, 61670, 61669, 50851, 61665, 61666, 46275, 44884, 44885, 61667, 54766, 44886, 44887, - 52443, 48850, 48306, 44888, 44889, 44890, 61672, 61671, 61668, 45729, 44891, 54946, 54200, 48823, 51372, 44892, 44893, 61674, 44894, 44895, 44896, 44897, - 53751, 44898, 54988, 47835, 61673, 44899, 46779, 44900, 44901, 52660, 44902, 44903, 50854, 44904, 44905, 44906, 49569, 61675, 61678, 44907, 61677, 61680, - 61676, 44908, 48062, 61679, 44909, 44910, 44911, 44912, 52405, 61682, 44913, 44914, 46037, 44915, 44916, 44917, 44918, 45524, 44919, 44920, 61683, 44921, - 44922, 61684, 61686, 46305, 44923, 61681, 44924, 61687, 44925, 44926, 44928, 44929, 61690, 44930, 61688, 44931, 44932, 44933, 61685, 44934, 44935, 44936, - 44937, 61693, 44938, 61689, 61692, 61694, 44939, 61857, 44940, 44941, 44942, 52929, 61860, 44943, 61859, 44944, 49654, 61691, 51933, 44945, 44946, 46321, - 45553, 52401, 44947, 61862, 44948, 44949, 61863, 44950, 44951, 61868, 54734, 61865, 44952, 44953, 51379, 44954, 44955, 44956, 61858, 44957, 61867, 61864, - 61861, 44958, 44959, 61866, 44960, 45120, 45121, 45122, 45123, 45124, 45125, 45126, 45225, 61869, 45127, 45128, 45129, 45130, 45131, 45132, 61871, 45133, - 61873, 45134, 45135, 45136, 45137, 45138, 61872, 45139, 61870, 45140, 45141, 45142, 45143, 53666, 45144, 45145, 45146, 45147, 45148, 45149, 45150, 61874, - 45151, 45152, 45153, 61875, 45154, 45155, 45156, 45157, 45158, 45159, 45160, 45161, 47599, 45162, 45163, 46535, 45164, 45271, 45273, 45165, 45166, 45167, - 54509, 45168, 46532, 45169, 48596, 48074, 61607, 45170, 45171, 47326, 45172, 45173, 61608, 45174, 45175, 45224, 45176, 61609, 45177, 45178, 52718, 45179, - 45180, 61610, 45181, 45182, 45184, 45185, 45186, 45187, 45188, 45189, 45190, 45191, 61611, 45192, 45193, 45194, 45195, 45196, 45197, 45198, 45199, 45200, - 50852, 45201, 45202, 55013, 61924, 45203, 61925, 45204, 45205, 45206, 45207, 45208, 45209, 45210, 45211, 45212, 45213, 50163, 45214, 45215, 54235, 45216, - 45376, 54993, 50664, 45377, 54191, 45378, 53990, 45379, 45380, 61121, 45243, 54709, 53710, 48352, 47824, 45381, 49144, 45382, 47303, 46529, 50636, 45383, - 45384, 51874, 45385, 45386, 45387, 50123, 45388, 45389, 45390, 45391, 45392, 61122, 45393, 45394, 45395, 45396, 45397, 45398, 45399, 45400, 50367, 46754, - 45401, 60908, 50084, 45402, 54961, 45403, 45404, 45405, 53216, 60911, 45406, 45407, 50638, 45408, 46812, 45409, 45410, 51873, 45411, 45412, 60909, 45413, - 45414, 60912, 60913, 50108, 45415, 49076, 45416, 60910, 45417, 45418, 45419, 45420, 45421, 45422, 45423, 45424, 45425, 45426, 45427, 60916, 60914, 45428, - 45429, 45430, 45431, 54758, 50143, 45432, 60915, 45433, 45434, 45435, 60918, 45436, 54691, 53667, 45437, 45438, 45440, 60917, 45441, 50128, 45442, 45443, - 45444, 45445, 45446, 60919, 49140, 48876, 60920, 45447, 52471, 45448, 53723, 45449, 45450, 45451, 55237, 54774, 45452, 60924, 45453, 45454, 45455, 60923, - 45456, 45457, 45458, 45459, 45460, 45461, 45462, 45463, 60921, 60922, 45464, 45465, 45466, 45467, 45468, 45469, 45470, 45471, 60925, 48806, 45472, 45632, - 45633, 45634, 45635, 52143, 61089, 46781, 45636, 61090, 50368, 45637, 60926, 45638, 45639, 48606, 45767, 45640, 45641, 45642, 45643, 45644, 45645, 45646, - 45647, 45648, 45649, 45650, 45651, 46787, 45652, 45653, 45654, 61093, 55482, 61091, 61094, 45655, 45656, 45657, 50153, 46066, 45658, 45659, 45660, 45661, - 45662, 45663, 61095, 61092, 53177, 45664, 45665, 61096, 49911, 45666, 45667, 45668, 45669, 45670, 45671, 45672, 45673, 45674, 45675, 45676, 45677, 61097, - 61098, 45678, 57003, 45679, 45680, 50867, 45681, 51142, 45682, 55029, 46537, 45683, 52146, 45684, 45685, 45686, 61099, 45687, 45688, 52651, 45689, 61100, - 45690, 45691, 45692, 45693, 45694, 54704, 45696, 61101, 45697, 63172, 45698, 45699, 45700, 45701, 45702, 45703, 45704, 45705, 45706, 45707, 45708, 45709, - 45710, 56263, 45711, 45712, 45713, 45714, 45715, 45716, 45717, 45718, 45719, 46243, 45720, 45721, 45722, 50092, 61926, 45723, 45724, 45725, 45726, 45727, - 51896, 53971, 45728, 54954, 45888, 61426, 45889, 48856, 45890, 48579, 61427, 46796, 45227, 45891, 45892, 45893, 45894, 51887, 45895, 45896, 60854, 45897, - 60855, 45898, 45899, 45900, 45901, 52985, 47023, 49139, 60856, 49899, 51632, 45902, 45903, 45904, 45905, 45906, 45907, 60857, 45908, 45909, 50934, 49075, - 45910, 45911, 45912, 60860, 50680, 45913, 53712, 45914, 55209, 60858, 60859, 45915, 53730, 45916, 60863, 60864, 45917, 60868, 45918, 45919, 45920, 60872, - 45921, 60870, 60878, 54760, 45922, 60873, 45923, 45924, 60871, 60862, 45925, 45926, 50665, 45927, 45928, 45929, 50886, 45930, 45931, 51689, 54482, 60865, - 60866, 60867, 60869, 45932, 49401, 45933, 46241, 45934, 45935, 45936, 45937, 47592, 45938, 60880, 45939, 45940, 45941, 45942, 60881, 45943, 60874, 45944, - 60879, 45945, 52984, 45946, 45947, 52150, 60876, 60877, 45948, 45949, 45950, 45952, 45953, 53237, 45954, 45955, 45956, 45957, 45958, 45959, 45960, 45961, - 45962, 45963, 45964, 45965, 60882, 49650, 54194, 60875, 51383, 45966, 45967, 45968, 45969, 45970, 45971, 45972, 45973, 48367, 45974, 45975, 45976, 45977, - 50672, 45978, 45979, 45980, 45981, 45982, 45983, 45984, 46144, 46145, 46146, 60886, 46147, 46575, 46148, 46149, 49845, 45229, 52201, 46150, 46151, 45486, - 46152, 60884, 46153, 46154, 46155, 52715, 46562, 46156, 60885, 60883, 60887, 46157, 46158, 46586, 46159, 60888, 46160, 60889, 46161, 60892, 46162, 45516, - 46163, 46164, 46165, 46166, 46167, 46168, 46169, 46170, 50678, 48366, 60890, 52412, 45802, 46171, 46172, 46173, 46174, 60891, 46175, 46176, 46177, 46178, - 50411, 46179, 46180, 46277, 46181, 46182, 46183, 45301, 46184, 46185, 46186, 60895, 49370, 46312, 46187, 46188, 46189, 46190, 50637, 46191, 46192, 46193, - 60893, 49092, 46194, 46195, 46196, 60894, 46197, 46198, 46199, 46200, 46201, 46202, 46203, 46204, 46205, 46206, 46208, 46209, 46210, 46211, 50341, 46212, - 46213, 46214, 60896, 46215, 46216, 46217, 46218, 46219, 60897, 46220, 60899, 46221, 46222, 49623, 46223, 46224, 48071, 46225, 46226, 46227, 46228, 46229, - 46230, 48568, 46231, 46232, 46233, 60898, 46234, 46235, 46236, 46237, 46238, 46239, 46240, 46400, 46401, 46402, 46403, 46404, 46405, 60900, 46406, 46407, - 46408, 46409, 46410, 46411, 46412, 46413, 46414, 46415, 60902, 46416, 46417, 46418, 46419, 46420, 60901, 46421, 46422, 46423, 46424, 46425, 46426, 46427, - 46428, 46429, 46430, 46431, 46432, 46433, 46434, 46435, 60903, 46436, 46437, 46438, 46439, 46440, 51902, 60650, 49393, 46441, 51687, 46442, 60651, 50926, - 46443, 46444, 46445, 46446, 60652, 46447, 50925, 60653, 46448, 46449, 46450, 46451, 46452, 46453, 46454, 46455, 46456, 60656, 46457, 46458, 55270, 60659, - 46459, 46460, 60657, 60654, 60655, 55203, 51697, 52206, 60660, 46461, 60658, 46462, 46464, 53225, 46465, 60662, 50865, 46466, 46467, 46468, 46469, 48320, - 46470, 60661, 46471, 46472, 46473, 46474, 46475, 46476, 46477, 46523, 48118, 46478, 60663, 46479, 46480, 46481, 46482, 46483, 55799, 48635, 46484, 46485, - 49851, 60664, 46486, 46487, 46488, 46489, 60665, 46490, 46491, 46492, 46493, 47267, 46494, 46495, 46496, 46656, 46657, 46658, 46659, 46660, 46661, 46662, - 60666, 46663, 46664, 46665, 46666, 46667, 46668, 46669, 46670, 46671, 46672, 46673, 46674, 60667, 46675, 46676, 46677, 46678, 46679, 46680, 46681, 46682, - 46683, 46684, 46685, 60668, 46686, 46687, 46688, 46689, 46690, 54253, 55470, 49387, 46691, 51165, 47820, 46692, 53475, 52157, 46693, 52666, 46694, 46695, - 47313, 46696, 46697, 45564, 46698, 51183, 46699, 54998, 46700, 46701, 46702, 49094, 50155, 46703, 46704, 61429, 46705, 46706, 50136, 46707, 46708, 46709, - 46710, 46711, 46712, 55266, 46713, 46714, 46715, 61431, 46035, 46716, 51160, 53741, 46717, 54984, 46718, 61432, 46720, 61430, 46721, 48125, 46022, 46722, - 46723, 46724, 46725, 46726, 46727, 46728, 48597, 46729, 46730, 53958, 46731, 48096, 46732, 46733, 53153, 46734, 61436, 61435, 46735, 46736, 61433, 46737, - 46738, 46739, 46740, 46028, 46741, 51668, 52144, 46742, 46743, 46744, 46745, 46746, 61438, 46747, 46748, 45278, 46749, 46750, 54985, 46751, 46752, 46912, - 61437, 46913, 46061, 46914, 46915, 63189, 46916, 46917, 46918, 46919, 46920, 46921, 46922, 46923, 46924, 46925, 46926, 46927, 46928, 46929, 46930, 52936, - 46931, 46932, 46933, 61602, 46934, 61601, 46935, 46526, 48346, 48124, 46936, 47333, 46937, 46938, 46939, 46940, 46941, 46942, 50370, 46943, 46944, 46945, - 46946, 46947, 46948, 46949, 46950, 46951, 46952, 61603, 46953, 46954, 46955, 46956, 46957, 52203, 46958, 46959, 46960, 46961, 46962, 46963, 46964, 46965, - 46966, 46967, 46968, 46969, 46970, 46971, 46972, 46973, 46974, 46976, 46977, 46978, 46979, 46980, 46981, 46982, 61606, 46983, 46984, 46985, 53672, 46986, - 48831, 51182, 61878, 61879, 49109, 46987, 46988, 46989, 46990, 46249, 61880, 52667, 46991, 51156, 54701, 46992, 61881, 46993, 61882, 46994, 46995, 46996, - 46997, 51151, 46998, 46999, 47000, 53924, 54991, 47001, 47002, 61883, 48593, 46256, 48829, 47003, 47004, 47005, 46300, 52945, 47006, 49119, 61885, 47007, - 47008, 47168, 47169, 49146, 61884, 47170, 61887, 47171, 47172, 47173, 61886, 61888, 47174, 47175, 47176, 47177, 47178, 61889, 47179, 47180, 47181, 47182, - 47183, 47184, 47185, 47186, 47187, 47188, 47189, 49662, 47190, 47191, 47192, 47193, 47194, 47195, 47196, 47197, 47198, 47199, 47200, 49570, 47201, 47202, - 47203, 47204, 47205, 47206, 47207, 47208, 47209, 47210, 51962, 47211, 47212, 54718, 47213, 47214, 47215, 47216, 48826, 48825, 54722, 47217, 47218, 49058, - 47219, 52655, 61877, 47220, 47221, 47222, 47223, 47224, 47225, 48607, 47226, 46795, 47227, 47228, 47229, 47230, 47232, 47233, 47234, 47235, 47236, 55025, - 62403, 47237, 47238, 62404, 47239, 47309, 47240, 47241, 47242, 62406, 62407, 47243, 45258, 47244, 62405, 47245, 62409, 52209, 47246, 47247, 47248, 62411, - 47249, 53414, 47250, 47251, 45514, 62408, 47252, 47253, 47254, 62415, 47255, 46545, 47256, 47257, 62423, 47258, 62418, 47259, 47260, 47261, 62420, 62419, - 47099, 47262, 45503, 47263, 62414, 62410, 46554, 47264, 62416, 47424, 47425, 62417, 47426, 62421, 47427, 47428, 47429, 47430, 62413, 47431, 48355, 47432, - 49661, 47433, 62422, 47434, 47435, 47436, 47437, 47438, 47439, 62426, 47440, 62412, 47441, 46536, 47442, 48622, 62428, 47443, 47444, 47012, 49136, 55038, - 52658, 47445, 46320, 47446, 45791, 47447, 62424, 47448, 62425, 51640, 47449, 62429, 47450, 47451, 62430, 47452, 62433, 47453, 47454, 47455, 47456, 47457, - 47458, 47459, 47460, 47461, 47462, 47463, 62431, 47464, 47465, 62435, 62434, 47466, 47467, 62427, 47468, 49130, 47469, 46063, 47470, 62432, 47471, 47472, - 51113, 47473, 48370, 47474, 47475, 47476, 47477, 62443, 47478, 47479, 47480, 47481, 47482, 47483, 47484, 47551, 47485, 47486, 62436, 47488, 47489, 47490, - 45741, 48126, 47491, 52195, 47492, 47493, 47494, 47495, 62445, 62441, 47496, 47497, 47498, 47580, 62446, 47499, 47500, 47501, 62437, 62438, 62442, 49889, - 62444, 62447, 62440, 48381, 47502, 47503, 47504, 53220, 47505, 47506, 62448, 47507, 47508, 47509, 62439, 47510, 47511, 47512, 47513, 47514, 47515, 47516, - 47517, 62450, 47518, 47519, 47520, 47680, 55213, 50858, 47681, 47682, 47683, 47684, 62451, 47685, 47686, 47687, 47688, 62449, 47689, 49832, 47690, 47691, - 47692, 47693, 47694, 47325, 62453, 47695, 47696, 62452, 47697, 47698, 47699, 46299, 47700, 47701, 47702, 62454, 62455, 47703, 47704, 47705, 62456, 47706, - 47707, 47708, 49338, 47709, 47710, 49385, 47711, 47712, 47713, 47714, 47715, 50673, 47716, 47717, 47718, 47719, 62459, 47720, 62458, 47721, 47722, 47723, - 47724, 47725, 47726, 47727, 47728, 46296, 47729, 47730, 47731, 62462, 62457, 47732, 47733, 62460, 47734, 47735, 47736, 47737, 47738, 47739, 62461, 47740, - 47741, 47742, 47744, 47745, 47746, 47747, 47748, 62625, 47749, 47750, 47751, 47752, 47753, 47754, 62627, 48073, 47755, 47756, 62626, 47757, 47758, 47759, - 47760, 47761, 47762, 47763, 47764, 47765, 47766, 47767, 47768, 47769, 62628, 47770, 47771, 47772, 47773, 47774, 47775, 45758, 62630, 62629, 47776, 47936, - 47937, 47938, 47939, 47940, 47941, 47942, 47943, 47944, 47945, 48302, 47946, 47947, 47948, 47949, 47950, 47951, 47952, 47953, 47954, 47955, 47956, 47957, - 47958, 47959, 47960, 47961, 47962, 47963, 47964, 47965, 47966, 47967, 47968, 47969, 47970, 47971, 47972, 47973, 47974, 47975, 47976, 47977, 47978, 47979, - 47980, 47981, 47982, 50135, 55777, 47983, 47984, 47985, 47986, 47987, 47988, 49376, 62668, 55249, 47989, 47990, 47991, 47992, 47993, 47994, 47995, 47996, - 47997, 47998, 48000, 47067, 48001, 48002, 48003, 48004, 48005, 48006, 48007, 62670, 49571, 48008, 48009, 50889, 48010, 46294, 54707, 48011, 48012, 48013, - 62672, 62671, 62673, 52186, 48014, 48015, 62674, 48016, 54465, 55008, 48017, 48018, 48019, 48020, 47072, 48021, 48022, 48023, 49592, 48024, 48025, 49595, - 62675, 48812, 48026, 48027, 48028, 48029, 48030, 46306, 48031, 48032, 62676, 62677, 48811, 48192, 48193, 62678, 48194, 48195, 48196, 62683, 48197, 62679, - 62682, 48198, 47869, 48199, 62680, 62681, 48200, 48201, 48202, 48203, 48204, 48205, 48206, 47330, 52423, 62684, 48207, 45786, 48208, 48209, 50131, 48210, - 48211, 54499, 49079, 48212, 48213, 48214, 48215, 48216, 48217, 48218, 62685, 48219, 48220, 48221, 48222, 48223, 48224, 50612, 48225, 48226, 48227, 48228, - 48229, 48230, 48231, 48232, 62697, 48233, 48234, 53173, 48235, 48236, 48237, 48238, 48239, 48240, 48241, 48242, 48243, 48244, 48245, 48246, 48247, 48248, - 52937, 48249, 48250, 48251, 48252, 48253, 48254, 48256, 48257, 48258, 48259, 48260, 48261, 48262, 48263, 48264, 48265, 48266, 48267, 48268, 48269, 48270, - 52184, 48271, 52215, 48272, 48273, 48274, 48275, 48628, 48276, 48277, 48278, 55247, 48279, 48280, 48281, 49371, 48282, 48283, 48284, 48285, 48286, 48287, - 48288, 48448, 48449, 48450, 48451, 48452, 48453, 48454, 48455, 48456, 48457, 48458, 48459, 48460, 48461, 48462, 48463, 48464, 48465, 48466, 48467, 48468, - 48469, 48470, 48471, 48472, 48473, 48474, 48475, 48476, 48477, 48478, 48479, 48480, 48481, 48482, 48483, 48484, 48485, 48486, 48487, 48488, 48489, 48490, - 48491, 48492, 48493, 48494, 48495, 48496, 48497, 48498, 48499, 48500, 48501, 48502, 53493, 48503, 48504, 48505, 48506, 48507, 48508, 48509, 48510, 62698, - 48512, 48513, 48514, 48515, 48516, 48517, 48518, 48519, 48520, 48521, 48522, 48523, 48524, 48525, 48526, 48527, 48528, 48529, 48530, 48531, 48532, 48533, - 48534, 48535, 48536, 48537, 48538, 48539, 48540, 48541, 48542, 48543, 48544, 48704, 48705, 48706, 48707, 48708, 48709, 48710, 48711, 48712, 48713, 48714, - 48715, 48716, 62699, 48717, 48718, 48719, 48720, 48721, 48722, 48723, 62700, 48724, 48725, 48726, 48727, 48728, 48729, 48730, 48731, 48732, 48733, 48734, - 48735, 48736, 48737, 48738, 48739, 48740, 48741, 48742, 48743, 48744, 48745, 48746, 48747, 48748, 48749, 48750, 48751, 48752, 48753, 48754, 48755, 48756, - 48757, 48758, 48759, 48760, 48761, 48762, 48763, 48764, 48765, 48766, 48768, 48769, 48770, 48771, 48772, 48773, 48774, 48775, 48776, 48777, 48778, 48779, - 48780, 48781, 48782, 48783, 48784, 48785, 48786, 48787, 48788, 48789, 48790, 48791, 48792, 48793, 48794, 48795, 48796, 48797, 48798, 48799, 48800, 48960, - 48961, 48962, 48963, 48964, 48965, 48966, 48967, 48968, 48969, 48970, 48971, 48972, 48973, 48974, 48975, 48976, 48977, 48978, 48979, 48980, 48981, 48982, - 48983, 48984, 48985, 48986, 48987, 48988, 48989, 48990, 48991, 48992, 48993, 48994, 48995, 48996, 48997, 48998, 48999, 49000, 49001, 49002, 49003, 49004, - 49005, 49006, 49007, 49008, 49009, 49010, 49011, 49012, 49013, 49014, 49015, 49016, 49017, 49018, 49019, 49020, 49021, 49022, 49024, 63459, 49025, 49026, - 49027, 49028, 49029, 47025, 49030, 49031, 49032, 49033, 49034, 62701, 49035, 49036, 49037, 49038, 49039, 49040, 49041, 49042, 49043, 49044, 49045, 49046, - 49047, 49048, 49049, 49050, 49051, 49052, 49053, 49054, 49055, 49056, 49216, 49217, 49218, 49219, 49220, 49221, 49222, 49223, 49224, 49225, 49226, 49227, - 49228, 49229, 49230, 49231, 49232, 49233, 49234, 49235, 49236, 49237, 49238, 49239, 49240, 49241, 49242, 49243, 49244, 49245, 49246, 49247, 49248, 49249, - 49250, 49251, 55275, 49252, 49253, 49254, 49255, 49256, 49257, 49258, 49259, 49260, 49261, 49262, 49263, 49264, 49265, 49266, 49267, 49268, 49269, 49270, - 49271, 49272, 49273, 49274, 49275, 62702, 49276, 49277, 49278, 59129, 48832, 59130, 47852, 59131, 53195, 59132, 54460, 48310, 59133, 59134, 48333, 51410, - 52915, 59297, 49280, 46271, 59298, 51636, 47321, 50377, 49281, 55261, 49882, 47063, 54973, 52934, 47044, 49282, 49283, 50598, 59299, 53215, 59300, 59301, - 59302, 49591, 55273, 51696, 53176, 54959, 54997, 59303, 45293, 59304, 59305, 51676, 53999, 48813, 59306, 45299, 51422, 48609, 59307, 51398, 49284, 59308, - 48102, 47352, 53668, 59309, 49895, 48888, 48586, 52659, 59310, 59311, 48878, 53477, 49285, 52199, 52432, 48332, 59312, 48296, 53495, 59313, 49286, 53496, - 59314, 59315, 46274, 59316, 59317, 51710, 52908, 50144, 59319, 45505, 46065, 49287, 59320, 59321, 55259, 54720, 59322, 49868, 55226, 59323, 59324, 59325, - 48362, 50149, 49346, 59326, 59327, 48297, 49288, 59328, 59329, 59318, 46800, 59330, 49289, 59331, 59332, 48058, 46558, 49862, 45536, 59333, 54453, 59334, - 47295, 59336, 59335, 47084, 49290, 59337, 45816, 59338, 59339, 59340, 59341, 59342, 59343, 59344, 54183, 52213, 59345, 59346, 59347, 59348, 51657, 59349, - 59350, 59351, 59352, 59353, 48585, 59354, 62398, 49291, 47319, 49292, 51377, 49293, 49294, 49295, 49296, 49297, 49298, 49299, 62399, 49300, 62400, 62401, - 49301, 49302, 49303, 49304, 49305, 49306, 49307, 49308, 49309, 49310, 47582, 52728, 49311, 49312, 55528, 47793, 49472, 49886, 61111, 49473, 47011, 49474, - 49475, 49476, 49477, 61113, 49478, 61112, 45269, 49479, 49480, 49481, 49482, 49483, 61115, 54742, 55279, 49484, 49485, 49486, 54979, 49487, 49488, 61117, - 51952, 49489, 61116, 49490, 49491, 49492, 49493, 61118, 49494, 49495, 49496, 49497, 61120, 49498, 49499, 61119, 49500, 49501, 49502, 49503, 49504, 49505, - 49506, 49507, 53746, 49508, 51132, 49509, 50112, 49510, 49511, 49512, 49513, 49514, 47329, 49515, 49516, 49517, 49518, 49519, 49639, 49520, 49521, 62662, - 53471, 62663, 49522, 53211, 49523, 49524, 51386, 49525, 49526, 62664, 49527, 49528, 49529, 49530, 49531, 49532, 49533, 62665, 62666, 49534, 62667, 49536, - 49537, 49538, 49539, 49540, 55802, 47358, 49541, 49542, 58865, 54256, 49543, 62688, 49544, 52940, 49545, 49546, 49547, 46049, 49548, 49549, 49550, 49551, - 61876, 49552, 53998, 49553, 62689, 49554, 49555, 49556, 49557, 49558, 53224, 62690, 49559, 49560, 51148, 49561, 49562, 49563, 49564, 49565, 49566, 46548, - 46308, 62692, 49567, 49568, 49728, 62691, 62693, 49729, 49730, 62694, 49731, 49732, 49733, 49734, 62695, 49735, 47794, 45247, 49736, 62696, 49737, 49738, - 49739, 49740, 49741, 49742, 49743, 47021, 53997, 49744, 49745, 49746, 53931, 49359, 49747, 49084, 60323, 54751, 60104, 49748, 49749, 49750, 49751, 61939, - 46840, 52131, 49752, 49753, 50381, 49754, 61927, 49755, 61928, 47355, 61929, 47812, 54469, 45266, 49756, 49757, 61930, 49758, 49759, 49760, 61931, 49761, - 61932, 49762, 49763, 61933, 61934, 61935, 61937, 61936, 50645, 49764, 49765, 49766, 49767, 49768, 49769, 61938, 49770, 46842, 49771, 61940, 53934, 57031, - 52170, 49772, 49773, 46044, 49774, 46498, 49775, 47522, 49776, 49777, 50420, 61941, 49778, 49779, 61942, 49780, 49781, 49782, 49604, 49659, 54960, 61943, - 49783, 49784, 49785, 49786, 61944, 49787, 49578, 49788, 49789, 49790, 50872, 49792, 48859, 49793, 49794, 49795, 49796, 49797, 49798, 49799, 49800, 49801, - 49802, 49803, 49804, 49805, 49806, 61945, 46287, 49807, 49808, 49809, 49810, 49811, 49812, 61946, 49813, 49814, 49815, 49816, 49817, 49818, 49819, 49820, - 49821, 49822, 49823, 49824, 49984, 60850, 60849, 49985, 49986, 52192, 53982, 49987, 52161, 54744, 49988, 51426, 49989, 49375, 48289, 49990, 49991, 49992, - 49993, 49994, 49995, 60353, 49996, 49997, 53412, 49998, 55010, 49999, 46791, 47320, 60352, 47310, 50000, 60351, 45990, 47561, 54955, 50001, 47092, 47050, - 50002, 50003, 50004, 48359, 47038, 60358, 50005, 60359, 45241, 49103, 50006, 60357, 54269, 50007, 60360, 50008, 50009, 60361, 50010, 50011, 47054, 50012, - 60354, 60356, 51702, 54999, 54733, 53426, 60367, 52920, 60368, 50013, 46504, 50014, 50015, 50016, 50017, 50018, 45491, 60370, 52389, 50019, 50020, 50021, - 50022, 50023, 50024, 50025, 50646, 60371, 50026, 60369, 50655, 60366, 51876, 60373, 45307, 50027, 50028, 47866, 50029, 50030, 55479, 61923, 50031, 60362, - 60363, 60364, 60365, 60374, 59072, 60377, 50032, 49128, 53960, 60375, 60380, 47340, 60376, 50033, 48570, 50034, 53464, 50035, 45239, 50036, 60381, 50396, - 50037, 50038, 50039, 50040, 54956, 50041, 50042, 50043, 46304, 50044, 50045, 49910, 48313, 50046, 50048, 60378, 60379, 54496, 50922, 50388, 60383, 50599, - 55797, 50049, 45745, 50050, 60388, 50051, 48581, 50052, 50053, 50054, 60386, 50055, 50056, 50057, 50058, 50059, 50060, 50061, 50062, 50063, 50064, 50065, - 50066, 50067, 60387, 50068, 50069, 47276, 50070, 52689, 60389, 50071, 50072, 50073, 60385, 50074, 49587, 50075, 50076, 50077, 50078, 50079, 50850, 50080, - 50240, 50241, 50242, 50243, 50244, 50245, 52467, 50246, 60390, 50247, 49328, 53944, 60391, 50248, 50249, 50250, 47279, 47277, 50251, 60392, 51131, 52723, - 50252, 50253, 50254, 60394, 60395, 50255, 50256, 50257, 50258, 50259, 60397, 50260, 50261, 50262, 50263, 53448, 50264, 60402, 50265, 60398, 50266, 50267, - 50268, 60401, 51449, 50269, 53756, 60396, 50270, 50271, 60393, 50272, 50273, 50274, 50275, 47289, 53209, 50405, 60399, 60400, 52442, 52680, 45298, 50276, - 60406, 50277, 50278, 50279, 50280, 50281, 60405, 50282, 45746, 50283, 50284, 50285, 50286, 47328, 50287, 60407, 50288, 50289, 50290, 50291, 50292, 50293, - 45548, 50294, 50295, 52421, 50340, 53157, 50296, 50297, 50298, 50299, 50300, 60409, 50301, 50302, 60578, 50304, 50674, 50305, 60410, 50306, 50307, 50308, - 50309, 50310, 50311, 50312, 50313, 51653, 50314, 50315, 50316, 50317, 50318, 50319, 58079, 60414, 50320, 50321, 50322, 50323, 52686, 60577, 45531, 54199, - 50324, 50325, 53980, 50326, 50327, 50328, 60413, 50329, 60411, 50330, 50331, 50332, 50333, 50334, 50335, 50336, 50496, 50497, 50498, 50499, 50500, 50501, - 50502, 50503, 50504, 50505, 50506, 50507, 50508, 50509, 50510, 46012, 50511, 50512, 50513, 60080, 50514, 50515, 55252, 50516, 62635, 46068, 50517, 50518, - 50519, 50520, 50521, 54977, 54978, 50522, 50523, 50524, 50525, 50526, 50527, 54761, 48842, 50528, 62631, 50529, 53928, 62632, 62633, 50530, 62634, 48843, - 54239, 50531, 50532, 50533, 50534, 50535, 51680, 51681, 50536, 50537, 62402, 50538, 51942, 50539, 52466, 50540, 50541, 50542, 50543, 50544, 50545, 58038, - 52148, 50546, 52968, 55003, 50547, 62637, 62638, 62639, 50548, 50549, 50550, 50551, 62642, 50552, 47805, 62643, 45283, 62640, 50553, 62641, 48546, 45781, - 50554, 62646, 62647, 46822, 45744, 53199, 62644, 46252, 50555, 62645, 50556, 50557, 62648, 50558, 50560, 50561, 50562, 50563, 62649, 50564, 50565, 52647, - 50566, 62650, 50567, 62651, 50568, 50569, 50570, 62652, 50571, 50572, 50573, 50574, 50575, 50576, 50577, 50578, 52178, 50579, 62653, 50580, 50581, 50582, - 50583, 62654, 50584, 50585, 50586, 50587, 50588, 50589, 50590, 50591, 62655, 50592, 50752, 50753, 50754, 50755, 62686, 49596, 48360, 50756, 51627, 53726, - 58869, 50757, 50758, 50759, 50760, 56499, 53973, 50761, 50762, 56500, 45228, 56501, 50763, 50764, 48602, 50765, 56505, 50766, 50767, 50768, 55490, 50769, - 56503, 54259, 50770, 51670, 56506, 56502, 50771, 56507, 50082, 50772, 50773, 50774, 50775, 56508, 56517, 56509, 50776, 50777, 52959, 54949, 50778, 56527, - 50779, 56525, 50780, 50781, 56530, 48614, 49835, 50782, 56504, 56523, 56526, 56510, 47058, 45253, 56519, 53438, 56513, 48040, 50783, 47036, 56524, 50784, - 50785, 56518, 56511, 51163, 50786, 50787, 50788, 53695, 56512, 50789, 50790, 56522, 50791, 50792, 56528, 50793, 50794, 52909, 56514, 50795, 56515, 56520, - 56521, 45780, 56529, 52181, 50796, 54455, 56539, 56543, 52390, 56550, 50797, 50151, 56540, 50798, 50799, 49089, 56537, 50800, 45306, 47542, 56549, 56531, - 50801, 56516, 56534, 51444, 49120, 50802, 50803, 50804, 50805, 51643, 50806, 50807, 50808, 45501, 50809, 54178, 50810, 50811, 56538, 50812, 50813, 56533, - 50814, 50875, 50816, 56542, 50817, 50818, 50819, 50820, 50821, 55234, 50095, 47030, 51153, 50089, 56546, 56536, 56555, 56532, 50822, 50823, 56541, 50824, - 48805, 56535, 50825, 56544, 50826, 50827, 56547, 56548, 50828, 56568, 50829, 50830, 56545, 56738, 56551, 50831, 50832, 50833, 50834, 50835, 50836, 50837, - 50838, 50839, 50840, 48363, 46276, 50841, 50842, 50083, 45799, 56570, 50843, 56562, 50844, 56559, 50845, 56572, 56558, 54000, 45800, 50846, 51415, 51427, - 56571, 50847, 56557, 50848, 51008, 51009, 56567, 51010, 51011, 56565, 51012, 51013, 48803, 56564, 51014, 45789, 51015, 51016, 51017, 51018, 51019, 56563, - 48374, 56552, 48068, 51020, 49395, 51021, 51022, 51023, 51024, 51025, 48340, 56553, 56554, 51026, 56561, 56566, 56569, 46516, 51027, 51417, 48103, 56574, - 56573, 54187, 56737, 56739, 56741, 54001, 56740, 56742, 56743, 53929, 51028, 51029, 51030, 51031, 51032, 51033, 51034, 47817, 56745, 51035, 51036, 56758, - 56753, 56756, 51037, 51038, 51039, 51040, 51041, 51042, 51043, 56752, 50894, 51044, 51045, 49394, 51046, 51047, 51048, 51049, 51631, 51050, 51051, 51052, - 56556, 56750, 51053, 51054, 51055, 51056, 56759, 51057, 51058, 56560, 56751, 51059, 56760, 51060, 56748, 51061, 51062, 51063, 51064, 51065, 51066, 51067, - 56761, 56755, 56749, 50346, 51068, 51069, 51070, 51072, 56744, 49331, 49579, 56746, 56747, 51073, 56754, 48113, 56757, 54184, 56762, 51074, 56763, 50087, - 51075, 51076, 56786, 56764, 51077, 51078, 51079, 56785, 51080, 47549, 51081, 51082, 48853, 51083, 48890, 51084, 51085, 47818, 51086, 51087, 51088, 51089, - 56778, 51090, 56773, 51091, 56767, 51092, 51093, 51094, 45771, 56771, 51095, 56779, 45732, 56789, 51096, 51097, 51098, 56766, 51099, 51100, 51101, 50896, - 56784, 51102, 51103, 51104, 51264, 51265, 56788, 49634, 47046, 51266, 51267, 51268, 51269, 51270, 56782, 56783, 51271, 51272, 51273, 56772, 51274, 51275, - 51276, 56765, 51277, 56781, 52433, 51278, 56777, 51279, 51280, 51281, 51282, 56770, 50120, 50876, 52910, 56780, 51283, 56776, 51284, 51285, 51286, 51287, - 51288, 51289, 56769, 51290, 51291, 51292, 56774, 49884, 51293, 51294, 51295, 51296, 51297, 51298, 54185, 54186, 56787, 53236, 51448, 51299, 51300, 51301, - 51302, 51303, 51304, 51305, 51306, 56806, 51307, 51308, 51309, 51310, 51311, 51312, 56775, 51313, 51314, 51315, 56800, 49892, 51316, 51317, 51318, 51319, - 51320, 51321, 51322, 51323, 56801, 51324, 51325, 51326, 51328, 51329, 51330, 51331, 51332, 51333, 51334, 56791, 51335, 51336, 51337, 51338, 51339, 55032, - 51340, 56793, 56792, 47344, 56790, 51341, 51342, 51343, 51344, 50895, 51345, 46765, 51346, 51347, 51348, 51349, 51350, 56802, 51351, 47865, 54497, 56807, - 51352, 51353, 51354, 46288, 51355, 56794, 51356, 49147, 56803, 51357, 56799, 51358, 56797, 51359, 51360, 51520, 51521, 51522, 51523, 51524, 46553, 51525, - 51526, 51527, 51528, 56795, 56796, 56798, 51529, 48559, 56804, 51530, 56805, 51531, 51532, 51533, 51534, 51535, 51536, 51537, 51538, 56821, 51539, 50121, - 51540, 51541, 52194, 51542, 51543, 51544, 51545, 56818, 51546, 51547, 51548, 51549, 51550, 51551, 51552, 51553, 51554, 51555, 51556, 51557, 51558, 55521, - 51559, 51560, 50897, 51561, 56820, 51562, 51563, 51564, 54772, 56819, 56816, 51565, 51566, 56812, 51567, 56815, 51568, 56808, 51569, 51570, 53486, 51571, - 51572, 51573, 51574, 51416, 56814, 51575, 51576, 56809, 51577, 51578, 56810, 52210, 51579, 56813, 51580, 51581, 45517, 51582, 51584, 51585, 51586, 51587, - 51588, 49334, 51589, 48315, 56817, 51590, 51591, 56823, 51592, 56822, 56811, 51593, 51594, 51595, 51596, 51597, 50670, 51598, 51599, 51600, 56827, 51601, - 51602, 51603, 51604, 51605, 51606, 51607, 51608, 51609, 51610, 51611, 56996, 51612, 51613, 56995, 51614, 51615, 51616, 51776, 51777, 51778, 51779, 51780, - 51781, 51782, 51783, 51784, 56824, 51785, 51786, 51787, 51788, 50159, 51789, 49915, 51790, 51791, 51792, 54753, 51793, 51794, 52917, 51795, 51796, 51797, - 51798, 56829, 51799, 45772, 51800, 51801, 51802, 51803, 51804, 51805, 51806, 51807, 51808, 50408, 51935, 51809, 51810, 51811, 51812, 51813, 51814, 51815, - 51816, 51817, 51818, 51134, 56826, 56828, 56830, 56994, 45226, 45518, 51819, 51820, 51821, 51822, 51823, 57004, 51824, 51825, 51826, 51827, 56998, 48566, - 51439, 51828, 51829, 51830, 51831, 51832, 51833, 51834, 51835, 51836, 51837, 51838, 56993, 51840, 51841, 56997, 51842, 51843, 51844, 51845, 57001, 51846, - 51847, 51848, 51849, 51850, 57000, 51851, 51852, 51853, 56999, 51854, 51855, 51856, 51857, 51858, 51859, 51860, 51861, 51862, 57005, 51863, 54476, 51864, - 51865, 51866, 51867, 57011, 57002, 57006, 51868, 51869, 49369, 51870, 51871, 51872, 52032, 52033, 45473, 57014, 52034, 57009, 52035, 52036, 52037, 52038, - 52039, 52040, 52041, 57010, 52042, 52043, 52044, 52045, 52046, 52047, 52048, 52049, 52050, 52051, 52052, 53670, 57013, 52053, 52054, 52055, 52056, 52057, - 52058, 52059, 57007, 52060, 52061, 52062, 57008, 52063, 53437, 52064, 52065, 52066, 57012, 51949, 57017, 52067, 52068, 52069, 52070, 52071, 52072, 57016, - 52073, 57015, 52074, 52075, 52076, 52077, 52078, 52079, 52080, 57019, 52081, 52082, 52083, 52084, 52085, 52086, 52087, 48613, 52088, 52089, 52090, 52091, - 52092, 45784, 50154, 52093, 52094, 57018, 52096, 50618, 52097, 52098, 52099, 52100, 52101, 52102, 57020, 52103, 52104, 52105, 52106, 52107, 52108, 52109, - 52441, 52110, 52111, 52112, 52113, 47018, 52114, 52115, 52116, 52117, 52118, 52119, 52120, 52121, 52122, 52123, 52124, 52125, 52126, 52127, 52128, 52288, - 52289, 54501, 52290, 52291, 52292, 57021, 52293, 52294, 52295, 52296, 52297, 57023, 52298, 52299, 52300, 52301, 52302, 52303, 52304, 52305, 52306, 52307, - 52308, 50338, 52309, 52310, 52311, 52312, 57025, 52313, 52314, 52315, 52316, 52317, 52318, 52319, 52320, 52321, 52322, 52323, 52324, 52325, 52326, 52327, - 52328, 57022, 52329, 57024, 52330, 52331, 52332, 52333, 52334, 52335, 52336, 52337, 52338, 52339, 52340, 52341, 52342, 52343, 54714, 52344, 52345, 52346, - 57026, 52347, 52348, 52349, 52350, 52352, 52353, 52354, 52355, 52356, 52357, 52358, 52359, 52360, 52361, 52362, 52363, 62126, 48034, 49842, 50608, 49863, - 52364, 52365, 62127, 52366, 52367, 52368, 52369, 52370, 53481, 52371, 52372, 52373, 54237, 52374, 52375, 52376, 60349, 52377, 52378, 52379, 52380, 52381, - 52382, 52383, 52384, 46054, 62128, 52544, 62129, 52545, 52546, 51885, 52547, 52548, 52549, 52550, 52551, 52552, 52553, 47847, 62131, 62133, 62132, 52196, - 53178, 62130, 51892, 53967, 49900, 52554, 52555, 52556, 52557, 52558, 52559, 52560, 52931, 62136, 45302, 62135, 52561, 52562, 52563, 52564, 52565, 62142, - 52566, 45775, 52567, 52568, 52569, 52570, 52571, 52572, 53697, 62138, 52573, 52574, 52575, 52576, 52577, 62140, 54505, 52578, 52579, 62139, 62134, 62143, - 62141, 52580, 62137, 52581, 52582, 62151, 62148, 62150, 52583, 52584, 62154, 62146, 62144, 52585, 52586, 52587, 62149, 52588, 52589, 52590, 52591, 52592, - 55035, 52593, 52594, 52595, 62145, 52596, 51193, 51679, 52597, 62152, 47558, 46512, 52598, 52599, 62147, 62153, 62160, 62166, 52600, 52601, 48087, 52602, - 52603, 52604, 62165, 52700, 52605, 55019, 52606, 52608, 62162, 62164, 52609, 52610, 52611, 52612, 47346, 52613, 52614, 52615, 52616, 62155, 52617, 52618, - 52619, 62158, 49913, 52620, 54749, 62156, 62157, 62159, 62163, 52621, 52622, 52623, 62169, 54204, 52624, 52625, 52626, 52627, 46826, 52628, 51953, 52629, - 47076, 62167, 52630, 52631, 52632, 62168, 62170, 62173, 62171, 52633, 52634, 62172, 52635, 52636, 52637, 52638, 53713, 62161, 52639, 52681, 52640, 52943, - 54953, 52800, 62179, 52801, 50139, 52802, 62176, 52803, 52804, 49327, 62188, 62174, 52805, 62177, 52806, 52807, 52808, 62184, 52809, 52810, 52811, 52812, - 62178, 52813, 52814, 62183, 52815, 52816, 62182, 52817, 52818, 62185, 52819, 52820, 52821, 62175, 52822, 52823, 62180, 62186, 52824, 52825, 52826, 52827, - 52828, 52829, 52830, 54188, 62181, 45813, 52831, 52832, 62194, 52833, 53419, 52834, 52835, 52836, 52837, 62197, 52838, 52839, 52840, 48072, 52841, 62201, - 52842, 52843, 52844, 52845, 52846, 52847, 62192, 52848, 52849, 62198, 62200, 62202, 52850, 52851, 52852, 52853, 52854, 52855, 52856, 52857, 62195, 52858, - 62193, 52859, 52860, 52861, 47867, 52862, 46587, 52864, 52865, 52866, 52867, 62191, 62199, 62189, 62190, 52868, 52869, 52870, 62187, 62374, 52871, 62371, - 52872, 52873, 62370, 52874, 52875, 62196, 52876, 51418, 52877, 52878, 52879, 52880, 52881, 62203, 52882, 52883, 52884, 62373, 52885, 52886, 52887, 52888, - 52889, 52890, 52891, 50168, 52892, 52893, 52894, 52895, 52896, 53056, 53057, 53058, 62205, 53059, 53060, 62375, 62377, 62372, 53061, 62204, 53062, 53063, - 53064, 62379, 53065, 62378, 53066, 53067, 53068, 53069, 49885, 53070, 53071, 62382, 53072, 53073, 62384, 53074, 53075, 53076, 53077, 53078, 62369, 53079, - 53080, 53081, 62385, 62380, 53082, 53083, 53084, 53085, 53086, 62383, 62206, 62381, 53087, 53088, 53089, 53090, 53091, 53092, 53093, 62386, 53094, 53095, - 53096, 53097, 62388, 53098, 53099, 53100, 53101, 62376, 53102, 53103, 53104, 53105, 62387, 53106, 53107, 53108, 62389, 53109, 53110, 53111, 53112, 53113, - 53114, 53115, 53116, 53117, 53118, 53431, 53120, 53121, 53122, 53123, 62392, 53124, 53125, 53126, 53127, 55801, 53128, 53129, 53130, 53131, 53132, 53133, - 62393, 53134, 53135, 53136, 53137, 53138, 53139, 53140, 53141, 62391, 53142, 51428, 62390, 53143, 53144, 53145, 53146, 62394, 53147, 53148, 53149, 53150, - 53151, 62395, 46272, 53152, 53312, 53313, 53314, 53315, 53316, 53317, 53318, 53319, 53320, 53321, 53322, 53323, 53324, 53325, 61123, 53326, 53327, 53328, - 53329, 53330, 53331, 62396, 53332, 53333, 62397, 53334, 53335, 53336, 53674, 53337, 53338, 53339, 62636, 53446, 53340, 53341, 53342, 53343, 53344, 53345, - 53456, 53724, 53346, 53347, 53348, 53349, 53350, 53351, 53198, 53352, 53353, 48598, 53354, 53699, 53355, 53356, 53357, 53358, 53359, 53360, 53361, 47842, - 57833, 53954, 61890, 45753, 53362, 53363, 45549, 61891, 53364, 51648, 46020, 53365, 55794, 53366, 52133, 53367, 61892, 53368, 53369, 53370, 53371, 54996, - 53372, 53373, 53374, 53376, 53377, 61893, 62656, 61894, 53378, 54444, 61895, 53379, 45248, 62657, 53380, 53381, 62658, 53382, 53383, 46332, 53384, 50651, - 53385, 53386, 53387, 53388, 52411, 53389, 53390, 53391, 53476, 53392, 53393, 53394, 53395, 53396, 52704, 53397, 53398, 53399, 53400, 53401, 61896, 53402, - 55795, 53403, 53404, 53405, 53406, 53407, 53408, 45499, 53568, 53166, 53569, 53570, 53571, 47268, 53572, 53573, 53574, 53575, 53576, 61898, 53577, 53578, - 53579, 53580, 61899, 53581, 53582, 53583, 53584, 45763, 49617, 53585, 53586, 55216, 61897, 53587, 53588, 61900, 53589, 53590, 53591, 53592, 61902, 53593, - 53594, 53595, 55798, 53596, 53985, 54435, 53597, 53598, 62659, 51385, 53599, 53600, 53601, 53602, 53603, 62660, 53604, 53605, 61901, 61903, 49123, 61904, - 53606, 53607, 61908, 53608, 53609, 53610, 53611, 53612, 53613, 53614, 61910, 61905, 53615, 51665, 50657, 53616, 53617, 53618, 49891, 47612, 53619, 53620, - 61907, 53621, 61909, 53622, 53623, 53624, 47571, 53625, 53626, 53627, 53628, 53629, 53630, 53632, 61915, 53633, 53634, 53635, 53636, 53637, 47830, 53638, - 45309, 61913, 53639, 53640, 53641, 53642, 53643, 61912, 61906, 61914, 53644, 53645, 53646, 53647, 53648, 61911, 53649, 53650, 53651, 51436, 53652, 53653, - 53654, 53655, 52682, 61917, 53656, 53657, 53658, 53659, 58813, 53660, 53661, 53662, 61916, 53663, 61918, 53664, 53824, 53825, 53826, 53827, 53828, 53829, - 53830, 53831, 53832, 61919, 53833, 53834, 53221, 53835, 53836, 53837, 53838, 53839, 53840, 53841, 53842, 53843, 53844, 53845, 53846, 53847, 53848, 53849, - 53850, 53851, 53852, 53853, 53854, 53855, 53856, 53857, 53858, 53859, 62661, 48627, 53860, 53861, 53862, 53863, 53864, 53865, 61920, 53866, 53867, 53868, - 53869, 53870, 53871, 53872, 53873, 53874, 53875, 53876, 53877, 53878, 53879, 53880, 53881, 53882, 53883, 53884, 53885, 61921, 53886, 53888, 53889, 52983, - 53890, 53930, 53891, 61947, 53892, 53893, 47282, 53894, 53895, 53896, 53897, 53898, 53899, 53900, 53901, 53902, 53903, 53904, 53905, 53906, 53907, 53908, - 53909, 53910, 53911, 53912, 53913, 53914, 53915, 53916, 53917, 53918, 53919, 53920, 54080, 54081, 54082, 54083, 54084, 54085, 54086, 54087, 54088, 54089, - 54090, 54091, 54092, 54093, 54094, 54095, 54096, 54097, 54098, 54099, 54100, 54101, 54102, 54103, 54104, 54105, 54106, 54107, 54108, 54109, 54110, 48379, - 47579, 54111, 47590, 50137, 51923, 60136, 49344, 48885, 60137, 60138, 60139, 54112, 60140, 60141, 60142, 60143, 48583, 54113, 54114, 54115, 62971, 54116, - 54117, 54118, 62973, 54119, 62974, 54120, 62972, 54121, 54122, 54123, 54124, 48610, 54125, 63137, 46245, 54126, 54127, 54128, 54129, 63138, 54130, 54131, - 54132, 63139, 54133, 54134, 54135, 60594, 54136, 54137, 54138, 54139, 54140, 54141, 54142, 54144, 54145, 54146, 54147, 54148, 53716, 54149, 54150, 54151, - 54152, 54153, 54154, 55786, 54155, 54156, 54157, 54158, 54159, 54160, 54161, 54162, 54163, 54164, 54165, 54166, 54167, 54168, 54169, 54170, 54171, 54172, - 54173, 54174, 54175, 54176, 54336, 54337, 54338, 54339, 54340, 54341, 54342, 54343, 54344, 54345, 54346, 54347, 54348, 54349, 54350, 54351, 54352, 54353, - 54354, 54355, 54356, 54357, 54358, 54359, 54360, 54361, 54362, 54363, 54364, 54365, 54366, 54367, 63140, 54368, 54369, 54370, 54371, 54372, 54373, 54374, - 54375, 54376, 61114, 54377, 54378, 54379, 54380, 54381, 54382, 54383, 54384, 54385, 54386, 54387, 54388, 54389, 54390, 54391, 54392, 54393, 54394, 54395, - 54396, 54397, 54398, 54400, 54401, 54402, 54403, 54404, 54405, 54406, 54407, 54408, 54409, 54410, 54411, 54412, 54413, 54414, 54415, 54416, 54417, 54418, - 54419, 54420, 54421, 54422, 54423, 54424, 54425, 54706, 54426, 54427, 54428, 54429, 54430, 54431, 54432, 54592, 54593, 54594, 54595, 54596, 54597, 54598, - 54599, 54270, 52444, 54600, 54601, 54602, 54603, 54604, 54605, 54606, 54607, 51908, 54608, 54609, 54610, 54611, 54612, 54613, 54614, 54615, 54616, 54617, - 54618, 54619, 54620, 54621, 54622, 54623, 54624, 54625, 54626, 54627, 54628, 54629, 54630, 54631, 54632, 54633, 54634, 54635, 54636, 54637, 54638, 54639, - 54640, 54641, 54642, 54643, 54644, 54645, 54646, 54647, 54648, 54649, 54650, 54651, 54652, 54653, 54654, 54656, 54657, 54658, 54659, 54660, 54661, 54662, - 54663, 54664, 54665, 54666, 54667, 54668, 54669, 54670, 54671, 54672, 54673, 54674, 54675, 54676, 54677, 54678, 54679, 54680, 54681, 54682, 54683, 54684, - 54685, 54686, 54687, 54688, 54848, 54849, 54850, 54851, 54852, 54853, 54854, 54855, 54856, 54857, 54858, 54859, 54860, 54861, 54862, 54863, 54864, 54865, - 54866, 54867, 54868, 54869, 54870, 54871, 54872, 54873, 54874, 54875, 54876, 54877, 54878, 54879, 54880, 54881, 54882, 58816, 54883, 54884, 54885, 54886, - 54887, 54888, 54889, 54890, 54891, 54892, 54893, 54894, 54895, 54896, 54897, 54898, 54899, 54900, 54901, 54902, 54903, 54904, 54905, 54906, 54907, 54908, - 54909, 54910, 54912, 54913, 63141, 54914, 54915, 54916, 54917, 54918, 54919, 54920, 54921, 54922, 54923, 54924, 54925, 54926, 54927, 54928, 54929, 54930, - 54931, 54932, 54933, 54934, 54935, 54936, 54937, 54938, 54939, 54940, 54941, 54942, 54943, 54944, 55104, 55105, 55106, 55107, 55108, 55109, 55110, 55111, - 55112, 55113, 55114, 55115, 55116, 55117, 55118, 55119, 55120, 55121, 55122, 55123, 55124, 55125, 55126, 55127, 55128, 55129, 55130, 55131, 55132, 55133, - 55134, 55135, 48815, 55136, 55137, 55138, 55139, 55140, 50857, 55141, 55142, 55143, 55144, 55145, 55146, 55147, 55148, 55149, 55150, 55151, 55152, 55153, - 55154, 55155, 55156, 55157, 55158, 55159, 55160, 55161, 55162, 55163, 55164, 55165, 55166, 55168, 55169, 55170, 55171, 55172, 55173, 55174, 55175, 55176, - 55177, 55178, 55179, 55180, 55181, 55182, 55183, 55184, 55185, 55186, 55187, 55188, 55189, 55190, 55191, 55192, 55973, 48326, 46761, 47292, 51407, 48293, - 55974, 55975, 52438, 51395, 55976, 50941, 55193, 53685, 53993, 53686, 48327, 55194, 48562, 48100, 55977, 55978, 53704, 55979, 53485, 46831, 49883, 55195, - 52175, 47085, 51688, 47043, 48887, 54948, 55980, 55981, 50880, 55271, 51894, 55196, 54697, 52191, 54767, 55982, 55007, 46282, 55984, 55983, 55197, 53995, - 55985, 55986, 55987, 51924, 55988, 51883, 55989, 55990, 46031, 55023, 55991, 48048, 46510, 55992, 55993, 47598, 53679, 53992, 55994, 47299, 53226, 45807, - 55995, 55996, 55198, 48619, 52956, 54255, 55997, 52979, 55998, 54229, 48101, 55999, 52149, 52176, 56000, 51179, 55022, 56001, 50613, 46785, 56002, 47052, - 49102, 56003, 56004, 52141, 56005, 46583, 56006, 49602, 55227, 56007, 52408, 55199, 53994, 50353, 56008, 46589, 48081, 56009, 53427, 56010, 56011, 52925, - 56012, 56013, 56014, 45815, 56017, 56015, 53736, 56016, 50133, 56018, 55200, 56019, 56020, 56021, 53435, 53925, 45305, 56022, 51115, 56023, 48631, 50081, - 56024, 56025, 50173, 52407, 56026, 56027, 49342, 50903, 56028, 56029, 51124, 56030, 56031, 47560, 55360, 55361, 55362, 55363, 55364, 55365, 55366, 55367, - 55368, 48109, 55369, 55370, 55371, 55372, 46777, 62712, 55373, 62713, 55374, 55375, 52707, 55376, 55377, 55378, 55379, 55380, 55381, 55382, 55383, 62905, - 55384, 55385, 55386, 55387, 60384, 55388, 55389, 55390, 55391, 55392, 55393, 53235, 48063, 55394, 55395, 55396, 55397, 55398, 55399, 55400, 47808, 54437, - 55401, 55402, 55403, 55404, 55405, 55406, 55407, 57817, 55408, 55409, 55410, 55411, 62964, 45482, 45810, 55412, 55413, 55414, 55415, 55416, 55417, 55418, - 62965, 55419, 55420, 62967, 55421, 55422, 55424, 47825, 62966, 55425, 50098, 55426, 55427, 55428, 55429, 55430, 55431, 55432, 62969, 55433, 55434, 55435, - 62968, 55436, 55437, 55438, 55439, 55440, 55441, 55442, 55443, 55444, 55445, 55446, 55447, 55448, 55449, 55450, 55451, 55452, 55453, 55454, 55455, 55456, - 55616, 55617, 55618, 55619, 55620, 55621, 55622, 55623, 55624, 55625, 55626, 55627, 55628, 55629, 55630, 55631, 55632, 55633, 55634, 55635, 55636, 55637, - 55638, 55639, 55640, 55641, 55642, 55643, 55644, 55645, 55646, 55647, 55648, 55649, 55650, 55651, 55652, 55653, 55654, 55655, 55656, 55657, 55658, 55659, - 55660, 55661, 55662, 55663, 55664, 55665, 55666, 55667, 55668, 55669, 55670, 55671, 55672, 55673, 55674, 55675, 55676, 55677, 55678, 55680, 55681, 55682, - 55683, 55684, 55685, 55686, 55687, 55688, 55689, 55690, 55691, 55692, 55693, 55694, 55695, 55696, 55697, 55698, 55699, 55700, 55701, 55702, 55703, 55704, - 55705, 55706, 55707, 55708, 55709, 55710, 55711, 55712, 55872, 55873, 55874, 55875, 55876, 55877, 55878, 55879, 55880, 55881, 55882, 55883, 55884, 55885, - 55886, 45492, 54762, 47290, 55887, 47537, 45766, 54512, 53197, 45276, 54731, 48117, 54986, 47031, 52400, 50870, 45537, 47546, 55036, 47585, 47009, 48378, - 60122, 60123, 52473, 47603, 60124, 46331, 50099, 47057, 47832, 60125, 54516, 60126, 48342, 48095, 60127, 49630, 49848, 54495, 55242, 60128, 60129, 60132, - 60130, 60131, 51678, 47283, 46788, 60133, 51946, 51661, 46285, 55888, 55889, 58073, 50658, 60134, 49333, 55890, 55224, 60135, 55212, 51452, 55507, 55501, - 54494, 55891, 54521, 51652, 54190, 47315, 46048, 55892, 51682, 62710, 55893, 55894, 55895, 47829, 55896, 62711, 55897, 55898, 55263, 55899, 55900, 62705, - 47280, 54740, 47311, 50928, 55901, 55902, 55903, 55904, 55905, 55906, 55907, 55908, 55909, 46019, 55910, 55911, 62706, 45996, 55912, 55913, 55914, 55915, - 54461, 51191, 55916, 55917, 55918, 55919, 55920, 62708, 55921, 55922, 62707, 55923, 55924, 55925, 55926, 55927, 55928, 55929, 55930, 55931, 55932, 52427, - 55933, 55934, 55936, 51364, 55937, 55938, 55939, 55940, 55941, 55942, 55943, 55944, 55945, 55946, 55947, 55948, 55949, 62709, 55950, 55267, 50623, 62912, - 55951, 55952, 62907, 55953, 62915, 55954, 62914, 55955, 54970, 62913, 55956, 55957, 55958, 54462, 62916, 55959, 62924, 55960, 55961, 55962, 55963, 45263, - 46584, 55964, 62921, 62922, 55965, 50652, 55966, 55967, 55968, 56128, 62917, 62918, 56129, 56130, 62919, 62923, 56131, 48864, 62920, 47354, 56132, 56133, - 56134, 62928, 62931, 56135, 56136, 56137, 49127, 56138, 47602, 62908, 62925, 56139, 56140, 49847, 56141, 56142, 56143, 52472, 56144, 48377, 56145, 62926, - 62927, 62929, 46821, 62930, 56146, 62933, 56147, 56148, 56149, 56150, 56151, 56152, 56153, 62909, 56154, 56155, 56156, 62932, 54203, 56157, 46060, 56158, - 56159, 52388, 56160, 56161, 56162, 56163, 62934, 56164, 56165, 56166, 56167, 56168, 56169, 56170, 56171, 62935, 48865, 62936, 56172, 56173, 52447, 62939, - 56174, 56175, 56176, 56177, 56178, 45768, 55257, 56179, 62937, 56180, 62938, 62940, 56181, 62946, 56182, 56183, 56184, 62944, 56185, 56186, 56187, 62943, - 62941, 56188, 56189, 62945, 56190, 56192, 62942, 62948, 62949, 56193, 52451, 56194, 56195, 58815, 46520, 62947, 62952, 52387, 56196, 56197, 56198, 56199, - 56200, 62950, 62951, 56201, 56202, 56203, 56204, 56205, 56206, 62910, 56207, 56208, 56209, 56210, 56211, 56212, 56213, 56214, 56215, 56216, 56217, 56218, - 45508, 56219, 56220, 62911, 56221, 56222, 46533, 45796, 56223, 62956, 62953, 56224, 46807, 56384, 62957, 56385, 62954, 56386, 56387, 56388, 56389, 56390, - 62955, 56391, 56392, 46298, 56393, 54506, 56394, 56395, 56396, 62958, 56397, 46073, 56398, 56399, 56400, 56401, 56402, 56403, 56404, 62959, 62961, 56405, - 56406, 56407, 62960, 56408, 56409, 56410, 56411, 56412, 56413, 56414, 62962, 56415, 62963, 56416, 56417, 56418, 56419, 56420, 56421, 56422, 56423, 56424, - 56425, 56426, 56427, 51693, 47530, 56428, 56429, 51195, 56430, 56431, 46819, 56432, 56433, 56434, 56435, 56436, 56437, 56438, 52425, 56439, 56440, 56441, - 56442, 56443, 56444, 56445, 56446, 56448, 56449, 56450, 56451, 56452, 56453, 56454, 56455, 56456, 56457, 56458, 60070, 56459, 56460, 56461, 56462, 56463, - 56464, 56465, 56466, 56467, 56468, 56469, 56470, 56471, 56472, 56473, 56474, 56475, 56476, 56477, 56478, 56479, 56480, 56640, 56641, 56642, 56643, 56644, - 56645, 56646, 56647, 56648, 56649, 56650, 56651, 56652, 56653, 56654, 56655, 56656, 56657, 56658, 56659, 56660, 56661, 56662, 56663, 56664, 56665, 56666, - 56667, 56668, 56669, 56670, 56671, 56672, 56673, 56674, 56675, 56676, 56677, 56678, 56679, 56680, 56681, 56682, 56683, 56684, 56685, 56686, 56687, 56688, - 56689, 56690, 56691, 56692, 56693, 56694, 56695, 56696, 56697, 56698, 56699, 56700, 56701, 56702, 56704, 56705, 56706, 56707, 56708, 56709, 56710, 56711, - 56712, 56713, 56714, 56715, 56716, 56717, 56718, 56719, 56720, 56721, 56722, 56723, 56724, 56725, 56726, 56727, 56728, 56729, 56730, 56731, 56732, 56733, - 56734, 56735, 56736, 56896, 56897, 56898, 56899, 56900, 56901, 56902, 56903, 56904, 56905, 56906, 56907, 56908, 56909, 56910, 56911, 56912, 56913, 56914, - 56915, 56916, 56917, 56918, 56919, 56920, 56921, 56922, 56923, 56924, 56925, 56926, 56927, 56928, 46005, 54526, 47596, 53497, 56929, 59885, 55210, 59886, - 49878, 51437, 47844, 59887, 59888, 59889, 55009, 59890, 59891, 59893, 59892, 59894, 59895, 51169, 59896, 54488, 59897, 48590, 56930, 59898, 59899, 48591, - 59900, 47272, 49598, 59901, 45490, 48084, 47605, 59902, 56931, 60065, 60066, 60067, 47096, 48301, 56932, 51940, 57550, 54447, 53181, 54711, 60068, 54750, - 60069, 53441, 47548, 56933, 46279, 45529, 56934, 56935, 56936, 49329, 56937, 56938, 56939, 56940, 45542, 45543, 56941, 45544, 56942, 56943, 56944, 56945, - 46013, 51432, 56946, 56947, 56948, 56949, 58817, 56950, 56951, 45535, 56952, 56953, 56954, 49609, 46319, 56955, 56956, 51112, 54232, 56957, 50937, 53688, - 56958, 47613, 49909, 56960, 56961, 56962, 56963, 56964, 54189, 56965, 54475, 48636, 56966, 58818, 47029, 58819, 56967, 56968, 48057, 54754, 56969, 48632, - 54454, 52901, 49580, 46041, 56970, 56971, 52470, 56972, 58822, 58820, 58824, 56973, 58826, 58823, 46543, 50888, 56974, 46588, 58821, 56975, 51958, 56976, - 56977, 58825, 56978, 56979, 56980, 50132, 45509, 48291, 56981, 56982, 56983, 55223, 56984, 56985, 52683, 52173, 51914, 52435, 58828, 58827, 50406, 56986, - 56987, 53665, 53687, 58829, 56988, 58832, 56989, 52664, 55024, 58831, 46557, 56990, 52670, 56991, 58833, 46778, 56992, 57152, 52648, 47588, 57153, 51909, - 46033, 52185, 54508, 58834, 47082, 57154, 57155, 57156, 58830, 57157, 57158, 57159, 57160, 57161, 57162, 58837, 46334, 58838, 57163, 57164, 57165, 57166, - 57167, 58835, 58836, 57168, 53981, 57169, 57170, 49887, 45510, 57171, 54242, 57172, 57173, 46813, 52204, 57174, 58839, 57175, 57176, 54262, 57177, 57178, - 57179, 57180, 57181, 45545, 57182, 46836, 58842, 58840, 58841, 46528, 57183, 57184, 57185, 53957, 58844, 57186, 57187, 58846, 57188, 57189, 57190, 57191, - 57192, 57193, 58845, 51122, 57194, 53923, 57195, 57196, 58843, 57197, 57198, 57199, 57200, 54498, 54746, 57201, 57202, 57203, 57204, 57205, 58848, 55281, - 57206, 57207, 57208, 57209, 57210, 57211, 57212, 58849, 57213, 45532, 53755, 57214, 58850, 58852, 57216, 57217, 57218, 57219, 58851, 57220, 57221, 58853, - 57222, 57223, 57224, 57225, 57226, 53976, 57227, 46539, 57228, 59359, 57229, 56053, 57230, 56056, 57231, 56054, 57232, 56055, 57233, 57234, 57235, 56058, - 53455, 50375, 57236, 57237, 45294, 57238, 57239, 57240, 53424, 57241, 56057, 57242, 54218, 47786, 56226, 51185, 57243, 56060, 56059, 51675, 56061, 57244, - 56225, 55262, 56062, 49626, 57245, 57246, 56229, 57247, 57248, 54260, 57408, 57409, 56231, 56228, 57410, 56232, 57411, 57412, 48572, 57413, 57414, 57415, - 49353, 56227, 56230, 54947, 57416, 56233, 57417, 57418, 57419, 56237, 57420, 57421, 57422, 56238, 56236, 47810, 57423, 57424, 57425, 49060, 56235, 57426, - 57427, 57428, 56234, 54471, 45759, 57429, 57430, 56239, 57431, 47609, 57432, 56240, 57433, 57434, 57435, 57436, 46011, 57437, 57438, 57439, 46502, 57440, - 57441, 57442, 57443, 46780, 56241, 57444, 57445, 57446, 46837, 57447, 56242, 57448, 57449, 57450, 57451, 57452, 57453, 57454, 57455, 57456, 57457, 57458, - 57459, 57460, 57461, 57462, 57463, 57464, 57465, 57466, 57467, 45513, 57468, 57469, 57470, 57472, 56244, 57473, 57474, 57475, 56243, 56245, 57476, 57477, - 57478, 57479, 57480, 57481, 57482, 57483, 57484, 57485, 57486, 56247, 57487, 56246, 57488, 57489, 57490, 57491, 57492, 57493, 57494, 56248, 57495, 57496, - 57497, 57498, 57499, 57500, 57501, 57502, 57503, 56249, 57504, 57664, 56250, 57665, 57666, 54223, 62714, 51189, 55235, 50660, 62716, 62717, 62715, 57667, - 48838, 57668, 57669, 57670, 57671, 53487, 57672, 57673, 47059, 57674, 57675, 54477, 52394, 57676, 57677, 62882, 62881, 47784, 62718, 52182, 57678, 57679, - 57680, 62884, 49362, 57681, 46058, 57682, 52650, 62885, 62883, 48564, 62888, 57683, 62889, 48589, 50104, 49121, 52193, 62890, 57684, 57685, 57686, 62886, - 62887, 50416, 57687, 57688, 57689, 57690, 57691, 62892, 57692, 46268, 57693, 55277, 57694, 46295, 62891, 62894, 57695, 57696, 62893, 62895, 53457, 57697, - 57698, 57699, 57700, 57701, 57702, 57703, 50129, 51369, 57704, 57705, 57706, 57707, 57708, 57709, 62896, 62897, 57710, 57711, 57712, 57713, 57714, 57715, - 62898, 57716, 57717, 62899, 62900, 62901, 57718, 57719, 57720, 57721, 62903, 62902, 57722, 57723, 57724, 57725, 62904, 57726, 57728, 57729, 57730, 57731, - 57732, 57733, 57734, 57735, 57736, 57737, 57738, 45769, 57739, 54228, 51917, 57740, 49391, 55000, 53936, 49599, 57741, 48624, 57742, 57743, 57744, 57745, - 57746, 57747, 57748, 57749, 57750, 57751, 47274, 57752, 57753, 57754, 57755, 57756, 57757, 57758, 57759, 57760, 57920, 57921, 57922, 57923, 57924, 57925, - 57926, 57927, 57928, 57929, 57930, 57931, 57932, 57933, 57934, 57935, 57936, 57937, 57938, 57939, 57940, 57941, 57942, 57943, 57944, 57945, 57946, 57947, - 57948, 57949, 57950, 57951, 57952, 57953, 57954, 57955, 57956, 57957, 57958, 57959, 57960, 57961, 57962, 57963, 57964, 57965, 57966, 57967, 57968, 57969, - 57970, 57971, 57972, 57973, 57974, 57975, 57976, 57977, 57978, 57979, 57980, 57981, 57982, 57984, 57985, 57986, 57987, 57988, 57989, 57990, 57991, 57992, - 57993, 57994, 57995, 57996, 57997, 57998, 57999, 58000, 58001, 58002, 58003, 58004, 58005, 58006, 58007, 58008, 58009, 58010, 58011, 58012, 58013, 58014, - 58015, 58016, 58176, 58177, 58178, 58179, 58180, 58181, 58182, 58183, 58184, 58185, 58186, 58187, 58188, 58189, 58190, 58191, 58192, 58193, 58194, 58195, - 58196, 58197, 58198, 58199, 58200, 58201, 58202, 58203, 58204, 58205, 58206, 58207, 58208, 58209, 58210, 58211, 58212, 58213, 58214, 58215, 58216, 58217, - 58218, 58219, 58220, 58221, 48376, 58222, 58223, 58224, 58225, 58226, 58227, 58228, 58229, 58230, 58231, 58232, 58233, 58234, 58235, 58236, 58237, 58238, - 58240, 58241, 58242, 58243, 58244, 58245, 58246, 58247, 63174, 58248, 58249, 58250, 58251, 58252, 58253, 58254, 58255, 58256, 58257, 58258, 58259, 58260, - 58261, 58262, 58263, 58264, 58265, 58266, 58267, 58268, 58269, 58270, 58271, 58272, 58432, 58433, 58434, 58435, 58436, 58437, 63175, 58438, 58439, 58440, - 58441, 58442, 58443, 58444, 58445, 58446, 58447, 58448, 58449, 58450, 58451, 58452, 58453, 58454, 58455, 58456, 58457, 58458, 58459, 58460, 58461, 58462, - 63176, 58463, 58464, 58465, 58466, 58467, 58468, 58469, 58470, 58471, 58472, 58473, 58474, 58475, 58476, 58477, 58478, 58479, 58480, 58481, 58482, 58483, - 58484, 58485, 58486, 58487, 58488, 58489, 58490, 58491, 58492, 58493, 58494, 58496, 58497, 58498, 58499, 58500, 58501, 58502, 58503, 58504, 58505, 58506, - 58507, 58508, 58509, 58510, 58511, 58512, 58513, 58514, 58515, 58516, 58517, 58518, 58519, 58520, 58521, 58522, 58523, 58524, 58525, 58526, 58527, 58528, - 58688, 58689, 58690, 58691, 58692, 58693, 58694, 58695, 58696, 58697, 58698, 58699, 58700, 58701, 58702, 58703, 58704, 58705, 58706, 58707, 58708, 58709, - 58710, 58711, 58712, 58713, 58714, 58715, 58716, 58717, 58718, 58719, 58720, 58721, 58722, 58723, 58724, 58725, 58726, 58727, 58728, 58729, 58730, 58731, - 58732, 58733, 58734, 58735, 58736, 58737, 58738, 58739, 63177, 58740, 58741, 58742, 58743, 58744, 58745, 58746, 58747, 58748, 58749, 58750, 58752, 58753, - 58754, 58755, 58756, 58757, 58758, 58759, 58760, 58761, 58762, 58763, 58764, 58765, 58766, 58767, 58768, 58769, 58770, 58771, 58772, 58773, 58774, 58775, - 58776, 58777, 58778, 58779, 58780, 58781, 58782, 58783, 63178, 58784, 58944, 58945, 58946, 58947, 58948, 58949, 58950, 58951, 58952, 58953, 58954, 58955, - 58956, 58957, 58958, 58959, 58960, 58961, 58962, 58963, 58964, 58965, 58966, 58967, 58968, 58969, 58970, 58971, 58972, 58973, 58974, 58975, 58976, 58977, - 58978, 63180, 58979, 58980, 58981, 58982, 58983, 58984, 58985, 58986, 58987, 58988, 58989, 58990, 58991, 58992, 58993, 58994, 58995, 58996, 58997, 58998, - 58999, 59000, 59001, 59002, 59003, 59004, 59005, 59006, 59008, 59009, 59010, 59011, 59012, 59013, 59014, 59015, 59016, 59017, 59018, 59019, 59020, 59021, - 59022, 59023, 59024, 59025, 59026, 59027, 59028, 59029, 59030, 59031, 59032, 59033, 59034, 59035, 59036, 59037, 63179, 59038, 59039, 59040, 59200, 59201, - 59202, 59203, 59204, 59205, 59206, 59207, 63465, 59208, 59209, 59210, 59211, 59212, 59213, 59214, 59215, 59216, 59217, 59218, 59219, 59220, 59221, 59222, - 59223, 59224, 59225, 59226, 59227, 59228, 59229, 59230, 59231, 59232, 59233, 59234, 59235, 59236, 59237, 59238, 59239, 59240, 59241, 59242, 59243, 59244, - 59245, 59246, 59247, 59248, 59249, 59250, 59251, 59252, 59253, 59254, 59255, 59256, 59257, 59258, 59259, 59260, 59261, 59262, 59264, 59265, 59266, 59267, - 59268, 59269, 59270, 59271, 59272, 59273, 59274, 59275, 59276, 59277, 59278, 59279, 59280, 59281, 59282, 59283, 59284, 59285, 59286, 59287, 59288, 59289, - 59290, 59291, 59292, 59293, 59294, 59295, 59296, 59456, 59457, 59458, 59459, 59460, 59461, 59462, 59463, 59464, 59465, 59466, 59467, 59468, 59469, 59470, - 63181, 59471, 59472, 59473, 59474, 59475, 59476, 59477, 59478, 59479, 59480, 59481, 59482, 59483, 59484, 59485, 59486, 59487, 59488, 59489, 59490, 59491, - 59492, 59493, 59494, 59495, 59496, 59497, 59498, 59499, 59500, 59501, 59502, 59503, 59504, 59505, 59506, 59507, 59508, 59509, 59510, 59511, 59512, 59513, - 59514, 63182, 59515, 59516, 59517, 59518, 59520, 59521, 59522, 59523, 59524, 59525, 59526, 59527, 59528, 59529, 59530, 59531, 59532, 59533, 59534, 59535, - 59536, 59537, 59538, 59539, 59540, 61124, 61125, 61126, 54763, 46756, 61128, 61127, 61129, 61130, 51109, 61131, 61132, 59541, 47024, 46582, 61133, 61135, - 59542, 61134, 59543, 47302, 61136, 61137, 61138, 46811, 45998, 54995, 50374, 45493, 47318, 61139, 61140, 54463, 51157, 48891, 52953, 47539, 61142, 61141, - 61144, 61143, 50597, 61145, 61146, 51118, 61147, 51119, 61148, 45735, 61149, 61150, 61151, 61152, 61153, 55274, 61154, 61155, 48344, 61156, 54219, 52474, - 45740, 49637, 61157, 51110, 50093, 59544, 61158, 61159, 61160, 61161, 61162, 61163, 61164, 59545, 61165, 61166, 61167, 59546, 59547, 61168, 61169, 61170, - 61172, 61171, 59548, 61173, 52653, 49857, 61174, 61175, 61176, 54689, 61177, 53171, 61178, 61179, 59549, 61180, 61181, 61345, 61182, 61346, 47349, 50170, - 61347, 61348, 48578, 53951, 45817, 61349, 61350, 61351, 54008, 61352, 55037, 61353, 50892, 59550, 61354, 61355, 49588, 61356, 53242, 52216, 61358, 61357, - 46074, 47608, 61359, 61360, 53474, 61361, 61362, 47078, 53439, 61363, 61364, 61365, 51441, 52448, 61366, 61367, 61368, 61369, 61370, 54752, 61371, 46317, - 50090, 61372, 59551, 61373, 61374, 61375, 59552, 52989, 61376, 49888, 46264, 55222, 48629, 59712, 53191, 61379, 61377, 61378, 61380, 46759, 48380, 48866, - 50124, 61381, 61382, 59713, 61383, 61391, 61384, 61385, 61386, 51138, 61425, 46797, 61387, 59714, 61388, 61389, 46790, 50110, 61390, 59715, 61392, 61393, - 61394, 54770, 59716, 61395, 50423, 59717, 61396, 50424, 61397, 61398, 47332, 45303, 61399, 61400, 61401, 59718, 61402, 61403, 61404, 61405, 59719, 61406, - 48821, 61409, 61407, 61408, 59720, 61410, 61411, 49613, 61412, 61413, 61414, 61415, 61416, 61417, 61418, 61419, 61420, 49368, 59721, 61421, 49581, 61422, - 61423, 61424, 59722, 59723, 53218, 59724, 59725, 59726, 59727, 59728, 59729, 59730, 59731, 45988, 59732, 59733, 59734, 59735, 59736, 59737, 59738, 59739, - 59740, 59741, 59742, 59743, 59744, 59745, 59746, 59747, 59748, 59749, 59750, 59751, 59752, 59753, 59754, 59755, 59756, 59757, 59758, 59759, 59760, 59761, - 59762, 59763, 59764, 59765, 59766, 59767, 59768, 59769, 59770, 59771, 59772, 59773, 59774, 59776, 59777, 59778, 59779, 59780, 59781, 59782, 59783, 59784, - 59785, 59786, 59787, 59788, 59789, 59790, 59791, 59792, 59793, 59794, 59795, 59796, 59797, 59798, 59799, 59800, 59801, 59802, 59803, 59804, 59805, 59806, - 59807, 59808, 59968, 59969, 59970, 59971, 59972, 59973, 59974, 59975, 59976, 59977, 59978, 59979, 59980, 59981, 59982, 59983, 59984, 59985, 59986, 59987, - 59988, 59989, 59990, 59991, 59992, 59993, 59994, 59995, 50117, 58309, 51649, 58310, 59996, 45525, 52938, 46259, 51442, 58311, 53200, 58312, 48356, 58313, - 58314, 50118, 54690, 50390, 47595, 52933, 58315, 50166, 58316, 59997, 47015, 47347, 47826, 58317, 58318, 54468, 58319, 59998, 58320, 53707, 58321, 58322, - 58323, 58324, 53718, 58325, 45819, 49339, 58326, 59999, 49323, 58327, 58328, 58329, 60000, 58330, 58331, 60001, 47287, 56034, 60002, 46803, 60003, 56036, - 56035, 60004, 60005, 60006, 60007, 60008, 60009, 60010, 56038, 60011, 60012, 60013, 51438, 60014, 60015, 56037, 47040, 53748, 54005, 54771, 48599, 60016, - 60017, 60018, 60019, 55272, 56040, 56039, 60020, 45218, 52691, 60021, 56041, 60022, 47293, 48330, 49853, 49828, 46018, 56042, 60023, 49834, 50352, 48565, - 60024, 60025, 53214, 60026, 60027, 60028, 56043, 51650, 60029, 60030, 60032, 60033, 60034, 45533, 60035, 60036, 60037, 56044, 60038, 46776, 54458, 60039, - 46077, 60040, 60041, 56045, 54473, 53205, 50659, 60042, 56046, 60043, 60044, 60045, 60046, 60047, 56047, 60048, 56048, 49642, 52437, 53213, 60049, 60050, - 60051, 60052, 60053, 60054, 60055, 60056, 60057, 60058, 60059, 60060, 60061, 54247, 49825, 60062, 56049, 60063, 60064, 52197, 60224, 56050, 60225, 52198, - 54014, 60226, 60227, 60228, 47348, 60229, 60230, 56051, 45231, 53174, 60231, 60232, 54735, 60233, 60234, 60235, 60236, 60237, 60238, 60239, 60240, 60241, - 60242, 52205, 60243, 60244, 60245, 60246, 60247, 60248, 60249, 60250, 56052, 60251, 60252, 58308, 60253, 60254, 49573, 60255, 60256, 63167, 60257, 60258, - 63168, 63169, 50385, 60259, 51384, 53731, 60260, 60261, 53467, 53701, 48303, 47565, 60262, 61428, 60263, 60264, 46278, 54202, 63170, 46075, 60265, 60266, - 63171, 60267, 60268, 46577, 60269, 60270, 60271, 60272, 60273, 60274, 60275, 60276, 60277, 60278, 63173, 60279, 60280, 60281, 60282, 60283, 60284, 60285, - 54250, 63143, 53673, 60286, 60288, 60289, 60290, 63145, 60291, 60292, 60293, 63144, 60294, 60295, 49635, 49367, 60296, 45474, 60297, 60298, 60299, 60300, - 52973, 60301, 53480, 63147, 60302, 60303, 53238, 60304, 63146, 54768, 63148, 50105, 60305, 60306, 60307, 48116, 63150, 63149, 60308, 60309, 60310, 50398, - 60311, 60312, 49624, 60313, 60314, 60315, 60316, 60317, 52138, 60318, 53180, 60319, 60320, 60480, 60481, 60482, 60483, 60484, 60485, 60486, 60487, 60488, - 63151, 60489, 60490, 63152, 60491, 60492, 63153, 60493, 49846, 60494, 60495, 60496, 60497, 60498, 45268, 50681, 60499, 60500, 60501, 60502, 63154, 60503, - 60504, 60505, 60506, 60507, 60508, 60509, 60510, 60511, 60512, 60513, 60514, 60515, 60516, 60517, 60518, 60519, 60520, 60521, 51168, 63142, 60522, 60523, - 48824, 60524, 60525, 48818, 60526, 46565, 60527, 60528, 47047, 60529, 49087, 50130, 50150, 60530, 60531, 55500, 60532, 60533, 60534, 47343, 60535, 60536, - 60537, 60538, 60539, 60540, 60541, 60542, 60544, 48633, 53669, 60545, 45264, 60546, 60547, 60548, 60549, 60550, 63408, 60551, 60552, 60553, 60554, 60555, - 60556, 60557, 60558, 63409, 60559, 60560, 60561, 60562, 60563, 53420, 60564, 45232, 60565, 60566, 60567, 63410, 63411, 60568, 63412, 60569, 60570, 60571, - 51146, 60572, 60573, 60574, 60575, 60576, 60736, 60737, 48847, 60738, 60739, 63415, 60740, 60741, 60742, 60743, 60744, 60745, 60746, 63414, 60747, 45534, - 60748, 63413, 60749, 60750, 63416, 60751, 63417, 60752, 60753, 60754, 60755, 60756, 60757, 60758, 60759, 60760, 60761, 60762, 60763, 60764, 60765, 60766, - 60767, 60768, 60769, 60770, 60771, 60772, 60773, 60774, 60775, 60776, 60777, 60778, 60779, 60780, 60781, 60782, 60783, 60784, 60785, 60786, 60787, 60788, - 60789, 60790, 60791, 60792, 60793, 60794, 60795, 60796, 60797, 60798, 60800, 60801, 52900, 51405, 60802, 47787, 59576, 59577, 59578, 48834, 60803, 60804, - 60805, 60806, 60807, 54004, 60808, 54479, 51672, 60809, 60810, 60811, 60812, 60813, 60814, 60815, 60816, 60817, 60818, 60819, 60820, 60821, 60822, 60823, - 60824, 60825, 60826, 60827, 60828, 60829, 60830, 60831, 60832, 60992, 60993, 60994, 60995, 60996, 60997, 60998, 60999, 61000, 61001, 61002, 61003, 61004, - 61005, 61006, 61007, 61008, 61009, 61010, 61011, 61012, 61013, 61014, 61015, 61016, 61017, 61018, 61019, 61020, 61021, 61022, 61023, 61024, 61025, 61026, - 61027, 61028, 61029, 61030, 61031, 61032, 61033, 61034, 61035, 61036, 61037, 61038, 61039, 61040, 61041, 61042, 61043, 61044, 61045, 61046, 61047, 61048, - 61049, 61050, 61051, 61052, 61053, 61054, 61056, 61057, 61058, 61059, 61060, 61061, 61062, 61063, 61064, 61065, 61066, 61067, 61068, 61069, 61070, 61071, - 61072, 61073, 61074, 61075, 61076, 61077, 61078, 61079, 61080, 61081, 61082, 61083, 61084, 61085, 61086, 61087, 61088, 61248, 61249, 61250, 61251, 61252, - 61253, 53939, 46757, 51178, 61948, 53230, 52147, 53483, 59375, 52711, 47563, 46809, 61949, 45284, 52172, 61950, 54436, 49837, 49644, 50884, 48817, 62113, - 48341, 61254, 62114, 62115, 61255, 62116, 53955, 50869, 61256, 52679, 62117, 61257, 54193, 49093, 52450, 61258, 62118, 62119, 53717, 46830, 62120, 62121, - 46559, 62122, 62123, 61259, 45820, 62124, 62125, 51367, 61260, 61261, 61262, 61263, 61264, 61265, 61266, 61267, 61268, 61269, 61270, 61271, 61272, 61273, - 61274, 61275, 61276, 61277, 61278, 61279, 61280, 61281, 61282, 61283, 61284, 61285, 61286, 61287, 61288, 61289, 61290, 61291, 61292, 61293, 61294, 61295, - 61296, 61297, 47079, 61298, 61299, 60585, 60586, 60587, 61300, 60588, 61301, 61302, 50862, 60589, 60590, 61303, 61304, 61305, 47049, 51891, 61306, 61307, - 61308, 61309, 61310, 61312, 61313, 58040, 63439, 61314, 61315, 61316, 61317, 61318, 61319, 61320, 61321, 61322, 61323, 61324, 61325, 61326, 61327, 61328, - 61329, 61330, 61331, 61332, 61333, 61334, 61335, 61336, 61337, 61338, 61339, 61340, 61341, 61342, 61343, 61344, 61504, 61505, 61506, 61507, 61508, 63440, - 61509, 61510, 45773, 61511, 61512, 61513, 61514, 61515, 61516, 61517, 61518, 61519, 61520, 61521, 61522, 61523, 61524, 61525, 61526, 61527, 61528, 61529, - 61530, 61531, 61532, 61533, 61534, 61535, 61536, 61537, 61538, 61539, 63441, 61540, 61541, 61542, 61543, 61544, 61545, 61546, 61547, 61548, 61549, 61550, - 61551, 61552, 61553, 61554, 61555, 61556, 61557, 61558, 61559, 61560, 61561, 61562, 61563, 61564, 61565, 61566, 61568, 61569, 61570, 61571, 61572, 61573, - 61574, 61575, 61576, 61577, 63443, 63442, 61578, 61579, 61580, 61581, 61582, 61583, 61584, 61585, 61586, 61587, 61588, 61589, 61590, 58043, 61591, 48290, - 61592, 58044, 58045, 58046, 58047, 58048, 58049, 47033, 54011, 48548, 51918, 45477, 52167, 61593, 58050, 46844, 51396, 58051, 61594, 61595, 48584, 61596, - 45565, 58052, 61597, 46838, 58053, 50393, 61598, 61599, 58054, 53210, 47581, 58055, 49313, 61600, 58056, 45814, 61760, 58057, 61761, 49651, 58058, 58059, - 49912, 58060, 58061, 58062, 51927, 55480, 55781, 53219, 61762, 61763, 61764, 61765, 61766, 61767, 61768, 61769, 61770, 61771, 61772, 61605, 61773, 61774, - 56496, 61775, 61776, 61777, 61778, 61779, 61780, 61781, 61782, 61783, 61784, 61785, 61786, 61787, 61788, 61789, 61790, 61791, 61792, 61793, 61794, 61795, - 61796, 61797, 61798, 61799, 61800, 61801, 61802, 61803, 61804, 61805, 61806, 61807, 61808, 61809, 61810, 61811, 61812, 61813, 61814, 61815, 61816, 61817, - 61818, 61819, 61820, 61821, 61822, 61824, 61825, 61826, 61827, 61828, 61829, 61830, 61831, 61832, 61833, 61834, 61835, 61836, 61837, 61838, 61839, 61840, - 61841, 61842, 61843, 61844, 61845, 61846, 61847, 61848, 61849, 61850, 61851, 61852, 61853, 61854, 61855, 61856, 62016, 62017, 62018, 62019, 62020, 62021, - 62022, 62023, 62024, 62025, 62026, 62027, 62028, 62029, 62030, 62031, 62032, 62033, 62034, 62035, 62036, 62037, 62038, 62039, 62040, 62041, 62042, 62043, - 62044, 62045, 62046, 62047, 62048, 62049, 62050, 62051, 62052, 62053, 62054, 62055, 62056, 62057, 62058, 62059, 62060, 62061, 62062, 62063, 62064, 62065, - 62066, 62067, 62068, 62069, 62070, 62071, 62072, 62073, 62074, 62075, 62076, 62077, 62078, 62080, 62081, 62082, 62083, 62084, 62085, 62086, 62087, 62088, - 62089, 62090, 62091, 62092, 62093, 62094, 62095, 62096, 62097, 62098, 62099, 62100, 62101, 62102, 62103, 62104, 62105, 62106, 62107, 62108, 62109, 62110, - 62111, 62112, 62272, 62273, 62274, 62275, 62276, 62277, 62278, 62279, 62280, 62281, 62282, 62283, 62284, 62285, 62286, 62287, 62288, 62289, 49901, 54438, - 52692, 53681, 46043, 51197, 62290, 45749, 49855, 59104, 51899, 59105, 59106, 48852, 59107, 55204, 52693, 59109, 48349, 59108, 59110, 59111, 49902, 62291, - 48574, 59112, 49894, 47783, 59113, 62292, 59114, 46034, 53737, 62293, 62294, 49061, 59115, 50927, 59116, 59117, 62295, 62296, 59118, 50861, 59119, 62297, - 51623, 59120, 59121, 59122, 58809, 59123, 59124, 49890, 59125, 59126, 55016, 59127, 62298, 59128, 47559, 62299, 62300, 62301, 62302, 62303, 62304, 62305, - 63419, 63418, 62306, 62307, 62308, 62309, 63422, 63420, 47777, 62310, 63423, 62311, 63424, 62312, 62313, 62314, 63426, 63425, 63428, 62315, 62316, 63427, - 62317, 62318, 62319, 62320, 62321, 63429, 63430, 62322, 62323, 62324, 62325, 63431, 62326, 52200, 62327, 62328, 62329, 62330, 47327, 62331, 62332, 62333, - 62334, 62336, 62337, 63444, 62338, 63445, 62339, 62340, 62341, 62342, 63446, 62343, 62344, 62345, 62346, 63448, 62347, 63450, 62348, 63447, 62349, 62350, - 62351, 62352, 62353, 62354, 62355, 62356, 62357, 63451, 62358, 63449, 62359, 62360, 62361, 62362, 62363, 62364, 62365, 55255, 62366, 62367, 62368, 62528, - 63452, 62529, 62530, 62531, 62532, 62533, 62534, 63453, 62535, 62536, 62537, 63454, 62538, 62539, 62540, 62541, 62542, 62543, 62544, 62545, 62546, 62547, - 62548, 63455, 62549, 62550, 62551, 63456, 62552, 62553, 62554, 62555, 62556, 62557, 62558, 62559, 62560, 62561, 62562, 56267, 62563, 62564, 55466, 62565, - 62566, 62567, 62568, 62569, 62570, 62571, 62572, 58871, 47597, 62573, 62574, 62575, 62576, 49149, 48106, 63433, 50887, 63432, 62577, 63434, 63436, 63435, - 62578, 62579, 62580, 63437, 62581, 52922, 62582, 63438, 62583, 62584, 50343, 62585, 62586, 62587, 62588, 62589, 62590, 62592, 62593, 62594, 62595, 62596, - 62597, 62598, 62599, 62600, 62601, 62602, 62603, 62604, 62605, 62606, 62607, 62608, 62609, 62610, 62611, 62612, 62613, 62614, 62615, 62616, 62617, 62618, - 62619, 62620, 62621, 62622, 62623, 62624, 62784, 62785, 62786, 62787, 62788, 62789, 62790, 62791, 62792, 62793, 62794, 62795, 62796, 62797, 62798, 62799, - 62800, 62801, 62802, 62803, 62804, 62805, 62806, 62807, 62808, 62809, 62810, 62811, 62812, 62813, 62814, 62815, 62816, 62817, 62818, 62819, 62820, 62821, - 62822, 62823, 62824, 62825, 62826, 62827, 62828, 62829, 62830, 62831, 62832, 62833, 62834, 62835, 62836, 62837, 62838, 62839, 62840, 62841, 62842, 62843, - 62844, 62845, 62846, 62848, 62849, 62850, 62851, 62852, 62853, 62854, 62855, 62856, 62857, 62858, 62859, 62860, 62861, 62862, 62863, 62864, 62865, 62866, - 62867, 62868, 62869, 62870, 62871, 62872, 62873, 62874, 62875, 62876, 62877, 62878, 62879, 62880, 63040, 63041, 63042, 63043, 63044, 63045, 63046, 63047, - 63048, 63049, 63050, 63051, 63052, 63053, 63054, 63055, 63056, 63057, 63058, 63059, 63060, 63061, 63062, 63063, 63064, 63065, 63066, 63067, 63068, 63069, - 63070, 63071, 63072, 63073, 63074, 63075, 63076, 63077, 63078, 63079, 63080, 63081, 63082, 63083, 63084, 63085, 63086, 63087, 63088, 63089, 63090, 63091, - 63092, 63093, 63094, 63095, 63096, 63097, 63098, 63099, 63100, 63101, 63102, 63104, 63105, 63106, 63107, 63108, 63109, 63110, 63111, 63112, 63113, 63114, - 63115, 63116, 63117, 63118, 63119, 63120, 63121, 63122, 63123, 63124, 63125, 63126, 63127, 63128, 63129, 63130, 63131, 63132, 63133, 63134, 63135, 63136, - 63296, 63297, 63298, 63299, 63300, 63301, 63302, 63303, 63304, 63305, 63306, 63307, 63308, 63309, 63310, 63311, 63312, 63313, 63314, 63315, 63316, 63317, - 63318, 63319, 63320, 63321, 63322, 63323, 63324, 63325, 63326, 63327, 63328, 63329, 63330, 63331, 63332, 63333, 63334, 63335, 63336, 63337, 63338, 63339, - 63340, 63341, 63342, 63343, 63344, 63345, 63346, 63347, 63348, 63349, 63350, 63351, 63352, 63353, 63354, 63355, 63356, 63357, 63358, 63360, 54243, 63361, - 63362, 63183, 63363, 49843, 63184, 63364, 63365, 63185, 63186, 63187, 63188, 63366, 63367, 63190, 63368, 45483, 63191, 63369, 63192, 63193, 63194, 63370, - 63195, 63196, 63371, 63372, 63373, 63374, 63197, 63198, 53194, 63375, 63199, 63200, 63201, 63202, 63203, 63204, 49392, 63205, 63206, 63207, 63208, 63209, - 63376, 63210, 63377, 63211, 63212, 63378, 63213, 63214, 63215, 63216, 63217, 63218, 63219, 63220, 48808, 63379, 63221, 63222, 63223, 63224, 63380, 63381, - 63382, 63383, 63384, 51450, 63225, 63226, 63227, 63228, 63385, 63386, 63229, 63230, 63393, 63394, 63395, 63396, 63397, 63387, 63388, 63398, 63399, 63400, - 45550, 63401, 63402, 63403, 63389, 63390, 63404, 63405, 49627, 63406, 63391, 63392, 63407, 63552, 63553, 63554, 63555, 63556, 63557, 63558, 63559, 63560, - 63561, 63562, 63563, 63564, 63565, 63566, 63567, 63568, 63569, 63570, 63571, 63572, 63573, 63574, 63575, 63576, 63577, 63578, 63579, 63580, 63581, 63582, - 63583, 63584, 63585, 63586, 63587, 63588, 63589, 63590, 63591, 63592, 63593, 63594, 63595, 63596, 63597, 63598, 63599, 63600, 63601, 63602, 63603, 63604, - 63605, 63606, 63607, 63608, 63609, 63610, 63611, 63612, 63613, 63614, 63616, 63617, 63618, 63619, 63620, 63621, 63622, 63623, 63624, 63625, 63626, 63627, - 63628, 63629, 63630, 63631, 63632, 63633, 63634, 63635, 63636, 63637, 63638, 63639, 63640, 63641, 63642, 63643, 63644, 63645, 63646, 63647, 63648, 63808, - 63809, 63810, 63811, 63812, 63813, 63814, 63815, 63816, 63817, 63818, 63819, 63820, 63821, 63822, 63823, 63824, 63825, 63826, 63827, 63828, 63829, 63830, - 63831, 63832, 63833, 63834, 63835, 63836, 63837, 63838, 63839, 63840, 63841, 63842, 63843, 63844, 63845, 63846, 63847, 63848, 63849, 63850, 63851, 63852, - 63853, 63854, 63855, 63856, 63857, 63858, 63859, 63860, 63861, 63862, 63863, 63864, 63865, 63866, 63867, 63868, 63869, 63870, 63872, 63873, 63874, 63875, - 63876, 63877, 63878, 63879, 63880, 63881, 63882, 63883, 63884, 63885, 63886, 63887, 63888, 63889, 63890, 63891, 63892, 63893, 63894, 63895, 63896, 63897, - 63898, 63899, 63900, 63901, 63902, 63903, 63904, 64064, 64065, 64066, 64067, 64068, 64069, 64070, 64071, 64072, 64073, 64074, 64075, 64076, 64077, 64078, - 64079, 64080, 64081, 64082, 64083, 64084, 64085, 64086, 64087, 64088, 64089, 64090, 64091, 64092, 64093, 64094, 64095, 64096, 64097, 64098, 64099, 64100, - 64101, 64102, 64103, 64104, 64105, 64106, 64107, 64108, 64109, 64110, 64111, 64112, 64113, 64114, 64115, 64116, 64117, 64118, 64119, 64120, 64121, 64122, - 64123, 64124, 64125, 64126, 64128, 64129, 64130, 64131, 64132, 64133, 64134, 64135, 64136, 64137, 64138, 64139, 64140, 64141, 64142, 64143, 64144, 64145, - 64146, 64147, 64148, 64149, 64150, 64151, 64152, 64153, 64154, 64155, 64156, 64157, 64158, 64159, 64160, 64320, 64321, 64322, 64323, 64324, 64325, 64326, - 64327, 64328, 64329, 64330, 64331, 64332, 64333, 64334, 64335, 64336, 64337, 64338, 64339, 64340, 64341, 64342, 64343, 64344, 64345, 64346, 64347, 50417, - 61615, 48294, 61616, 50169, 64348, 50616, 53691, 64349, 61617, 61618, 61619, 61620, 61621, 53692, 64350, 53740, 64351, 61623, 61622, 54439, 64352, 52690, - 61624, 61626, 61625, 61627, 61628, 64353, 64354, 47339, 61629, 47848, 64355, 61630, 61631, 48873, 61632, 46828, 61633, 61634, 61635, 61636, 51381, 61637, - 61638, 64356, 61639, 50676, 64357, 61640, 64358, 64359, 64360, 61641, 64361, 61642, 63421, 64362, 61643, 61644, 61645, 64363, 61646, 64364, 64365, 64366, - 64367, 61647, 47831, 64368, 61648, 61649, 61650, 61651, 61652, 61653, 61654, 61656, 64369, 64370, 54181, 61655, 64371, 61657, 64372, 64373, 64374, 64375, - 64376, 64377, 64378, 64379, 64380, 64381, 62906, 49849, 64382, 64384, 63460, 64385, 64386, 64387, 64388, 63461, 63462, 64389, 64390, 63463, 64391, 64392, - 64393, 64394, 64395, 64396, 63464, 49844, 64397, 64398, 64399, 64400, 64401, 64402, 64403, 64404, 64405, 63466, 64406, 63467, 64407, 64408, 64409, 64410, - 64411, 64412, 49907, 64413, 64414, 64415, 64416, 64576, 64577, 64578, 64579, 64580, 64581, 64582, 64583, 64584, 62704, 64585, 64586, 64587, 62703, 64588, - 64589, 49897, 64590, 63457, 63458, 64591, 64592, 64593, 64594, 64595, 48070, 64596, 64597, 64598, 64599, 55780, 64600, 64601, 64602, 51954, 49384, 61604, - 64603, 47834, 64604, 64605, 51117, 64606, 64607, 64608, 50348, 64609, 64610, 63468, 63469, 63470, 64611, 63472, 63471, 64612, 63473, 64613, 64614, 63476, - 64615, 63475, 64616, 63474, 63477, 64617, 64618, 64619, 64620, 63478, 64621, 64622, 64623, 64624, 64625, 64626, 64627, 64628, 64629, 60905, 64630, 60906, - 60907, 64631, 63164, 64632, 64633, 64634, 64635, 64636, 64637, 64638, 64640, 64641, 64642, 64643, 64644, 63165, 64645, 63166, 46758, 64646, 55486, 64647, - 64648, 47556, 64649, 64650, 64651, 55483, 64652, 56497, 64653, 64654, 64655, 64656, 64657, 64658, 51955, 64659, 63479, 64660, 64661, 64662, 64663, 64664, - 64665, 64666, 64667, 64668, 63480, 64669, 64670, 63481, 64671, 64672, 64832, 64833, 64834, 64835, 64836, 63483, 64837, 63482, 64838, 45511, 64839, 63484, - 63485, 64840, 64841, 64842, 64843, 64844, 63486, 64845, 64846, 64847, 64848, 64849, 64850, 64851, 64852, 64853, 64854, 64855, 50923, 60596, 64856, 64857, - 64858, 64859, 64860, 64861, 64862, 64863, 64864, 64865, 64866, 64867, 64868, 64869, 64870, 64871, 64872, 64873, 64874, 64875, 64876, 64877, 64878, 64879, - 64880, 64881, 64882, 64883, 64884, 64885, 64886, 64887, 64888, 64889, 64890, 64891, 64892, 64893, 64894, 64896, 64897, 64898, 64899, 64900, 64901, 46045, - 63155, 64902, 64903, 63156, 49636, 63157, 63158, 63159, 63160, 63161, 63162, 51363, 63163, 64904, 64905, 64906, 64907, 64908, 64909, 64910, 64911, 64912, - 64913, 64914, 64915, 49658, 47528, 60904, 64916, 64917, 64918, 47594, 55775, 64919, 64920, 64921, 64922, 64923, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64925, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64926, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64927, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65088, 65089, 65090, 65091, 0, 65092, 0, 65093, - 65094, 0, 0, 0, 65095, 0, 0, 0, 0, 0, 0, 65096, 65097, 65098, 0, 65099, 65100, 0, 0, 65101, 65102, 65103, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43349, 42738, 0, 42740, - 42741, 42720, 42721, 42736, 42737, 42722, 42723, 42734, 42735, 42726, 42727, 42724, 42725, 42728, 42729, 42730, 42731, 0, 0, 0, 0, 43368, - 43369, 43370, 43371, 43372, 43373, 43374, 43375, 43376, 43377, 0, 43378, 43379, 43380, 43381, 0, 43382, 43383, 43384, 43385, 43386, 43387, 43388, - 43389, 43390, 43392, 43393, 43394, 43395, 43396, 0, 43397, 43398, 43399, 43400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 41889, 41890, 41891, 41447, 41893, 41894, 41895, 41896, 41897, 41898, 41899, 41900, 41901, 41902, 41903, - 41904, 41905, 41906, 41907, 41908, 41909, 41910, 41911, 41912, 41913, 41914, 41915, 41916, 41917, 41918, 41919, 41920, 41921, 41922, 41923, 41924, 41925, - 41926, 41927, 41928, 41929, 41930, 41931, 41932, 41933, 41934, 41935, 41936, 41937, 41938, 41939, 41940, 41941, 41942, 41943, 41944, 41945, 41946, 41947, - 41948, 41949, 41950, 41951, 41952, 41953, 41954, 41955, 41956, 41957, 41958, 41959, 41960, 41961, 41962, 41963, 41964, 41965, 41966, 41967, 41968, 41969, - 41970, 41971, 41972, 41973, 41974, 41975, 41976, 41977, 41978, 41979, 41980, 41981, 41387, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41449, 41450, 43350, 41982, 43351, 41892, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -static const uint32_t gbk2utf8[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14989442, 14989444, - 14989445, 14989446, 14989455, 14989458, 14989463, 14989471, 14989472, 14989473, 14989475, 14989478, 14989481, 14989486, 14989487, 14989489, 14989491, - 14989493, 14989495, 14989500, 14989696, 14989697, 14989698, 14989700, 14989702, 14989706, 14989713, 14989717, 14989719, 14989722, 14989723, 14989730, - 14989731, 14989732, 14989733, 14989735, 14989736, 14989738, 14989739, 14989740, 14989741, 14989742, 14989743, 14989746, 14989748, 14989749, 14989750, - 14989751, 14989752, 14989753, 14989754, 14989755, 14989756, 14989757, 14989759, 14989952, 14989953, 14989954, 14989955, 14989956, 14989957, 14989959, - 14989962, 0, 14989968, 14989974, 14989975, 14989977, 14989980, 14989981, 14989982, 14989987, 14989994, 14989999, 14990000, 14990001, 14990004, - 14990006, 14990007, 14990008, 14990009, 14990012, 14990013, 14990014, 14990216, 14990220, 14990223, 14990224, 14990226, 14990234, 14990235, 14990236, - 14990240, 14990242, 14990246, 14990247, 14990249, 14990253, 14990254, 14990255, 14990257, 14990260, 14990264, 14990265, 14990266, 14990268, 14990270, - 14990464, 14990466, 14990467, 14990468, 14990469, 14990470, 14990471, 14990472, 14990475, 14990476, 14990482, 14990483, 14990484, 14990485, 14990486, - 14990492, 14990493, 14990497, 14990499, 14990504, 14990505, 14990508, 14990509, 14990510, 14990513, 14990515, 14990517, 14990519, 14990521, 14990523, - 14990526, 14990527, 14990720, 14990721, 14990722, 14990724, 14990725, 14990727, 14990728, 14990729, 14990730, 14990731, 14990732, 14990738, 14990740, - 14990742, 14990753, 14990754, 14990758, 14990760, 14990762, 14990763, 14990765, 14990766, 14990769, 14990770, 14990773, 14990775, 14990776, 14990777, - 14990778, 14990781, 14990976, 14990977, 14990978, 14990981, 14990982, 14990983, 14990986, 14990988, 14990990, 14990992, 14990994, 14990995, 14990997, - 14990998, 14991000, 14991001, 14991002, 14991004, 14991006, 14991007, 14991009, 14991010, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14991012, - 14991019, 14991021, 14991024, 14991025, 14991026, 14991027, 14991028, 14991030, 14991031, 14991032, 14991033, 14991034, 14991035, 14991036, 14991037, - 14991038, 14991232, 14991233, 14991234, 14991238, 14991239, 14991240, 14991241, 14991243, 14991244, 14991245, 14991250, 14991251, 14991252, 14991253, - 14991254, 14991257, 14991259, 14991264, 14991266, 14991268, 14991269, 14991271, 14991275, 14991276, 14991280, 14991282, 14991284, 14991285, 14991286, - 14991287, 14991289, 14991291, 14991292, 14991293, 14991295, 15040640, 15040641, 15040642, 15040643, 15040644, 15040645, 15040646, 15040647, 15040648, - 15040649, 15040650, 0, 15040651, 15040654, 15040656, 15040657, 15040659, 15040661, 15040662, 15040663, 15040667, 15040669, 15040670, 15040672, - 15040674, 15040675, 15040676, 15040679, 15040683, 15040687, 15040688, 15040689, 15040690, 15040691, 15040692, 15040693, 15040694, 15040695, 15040696, - 15040697, 15040699, 15040701, 15040703, 15040896, 15040897, 15040898, 15040900, 15040901, 15040902, 15040905, 15040906, 15040907, 15040909, 15040912, - 15040913, 15040914, 15040915, 15040916, 15040918, 15040919, 15040920, 15040921, 15040923, 15040925, 15040926, 15040927, 15040928, 15040929, 15040930, - 15040931, 15040932, 15040934, 15040935, 15040936, 15040937, 15040938, 15040939, 15040941, 15040942, 15040943, 15040944, 15040945, 15040946, 15040947, - 15040948, 15040949, 15040952, 15040953, 15040954, 15040956, 15040957, 15041153, 15041154, 15041155, 15041156, 15041158, 15041159, 15041161, 15041162, - 15041163, 15041164, 15041166, 15041167, 15041168, 15041169, 15041170, 15041171, 15041172, 15041173, 15041174, 15041175, 15041176, 15041177, 15041178, - 15041179, 15041180, 15041181, 15041182, 15041183, 15041184, 15041185, 15041186, 15041188, 15041190, 15041194, 15041195, 15041197, 15041198, 15041199, - 15041200, 15041201, 15041203, 15041204, 15041205, 15041206, 15041207, 15041208, 15041209, 15041212, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15041213, 15041214, 15041215, 15041408, 15041409, 15041410, 15041411, 15041412, 15041413, 15041414, 15041415, 15041416, 15041417, 15041418, 15041419, - 15041420, 15041421, 15041422, 15041424, 15041425, 15041426, 15041427, 15041428, 15041429, 15041431, 15041432, 15041433, 15041435, 15041436, 15041437, - 15041438, 15041439, 15041440, 15041441, 15041442, 15041443, 15041444, 15041445, 15041448, 15041449, 15041450, 15041451, 15041455, 15041456, 15041457, - 15041458, 15041460, 15041462, 15041463, 15041464, 15041465, 15041466, 15041468, 15041469, 15041470, 15041471, 15041664, 15041665, 15041666, 15041667, - 15041668, 15041669, 15041672, 0, 15041673, 15041674, 15041676, 15041677, 15041678, 15041679, 15041680, 15041681, 15041683, 15041684, 15041685, - 15041686, 15041687, 15041688, 15041689, 15041690, 15041691, 15041692, 15041693, 15041694, 15041695, 15041696, 15041698, 15041699, 15041700, 15041701, - 15041702, 15041703, 15041704, 15041705, 15041706, 15041707, 15041708, 15041709, 15041710, 15041711, 15041712, 15041713, 15041714, 15041715, 15041716, - 15041717, 15041718, 15041719, 15041720, 15041721, 15041722, 15041723, 15041724, 15041725, 15041726, 15041922, 15041927, 15041930, 15041932, 15041934, - 15041935, 15041936, 15041938, 15041939, 15041943, 15041944, 15041945, 15041947, 15041949, 15041950, 15041951, 15041952, 15041953, 15041955, 15041956, - 15041958, 15041959, 15041961, 15041962, 15041967, 15041970, 15041978, 15041982, 15041983, 15042179, 15042180, 15042182, 15042183, 15042186, 15042187, - 15042190, 15042191, 15042192, 15042193, 15042195, 15042196, 15042200, 15042202, 15042205, 15042206, 15042207, 15042209, 15042211, 15042214, 15042215, - 15042216, 15042217, 15042218, 15042221, 15042222, 15042228, 15042232, 15042233, 15042234, 15042238, 15042239, 15042433, 15042434, 15042435, 15042437, - 15042440, 15042442, 15042445, 15042446, 15042448, 15042450, 15042451, 15042452, 15042453, 15042454, 15042455, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15042456, 15042457, 15042458, 15042460, 15042462, 15042463, 15042466, 15042467, 15042469, 15042470, 15042471, 15042472, 15042473, 15042474, - 15042476, 15042478, 15042481, 15042482, 15042484, 15042487, 15042494, 15042692, 15042693, 15042697, 15042699, 15042700, 15042703, 15042704, 15042707, - 15042708, 15042709, 15042716, 15042718, 15042719, 15042721, 15042722, 15042723, 15042725, 15042726, 15042727, 15042730, 15042732, 15042735, 15042737, - 15042738, 15042740, 15042741, 15042748, 15042750, 15042948, 15042949, 15042950, 15042951, 15042952, 15042953, 15042955, 15042958, 15042959, 15042962, - 15042963, 15042965, 15042967, 15042968, 0, 15042969, 15042970, 15042971, 15042973, 15042975, 15042976, 15042978, 15042979, 15042980, 15042982, - 15042984, 15042987, 15042988, 15042989, 15042990, 15042992, 15042993, 15042995, 15042996, 15042997, 15042998, 15042999, 15043000, 15043001, 15043002, - 15043003, 15043004, 15043006, 15043200, 15043203, 15043204, 15043205, 15043206, 15043207, 15043209, 15043210, 15043211, 15043212, 15043213, 15043214, - 15043215, 15043217, 15043218, 15043220, 15043221, 15043222, 15043223, 15043224, 15043225, 15043226, 15043228, 15043236, 15043237, 15043238, 15043239, - 15043246, 15043247, 15043248, 15043252, 15043253, 15043254, 15043255, 15043256, 15043257, 15043258, 15043259, 15043260, 15043261, 15043456, 15043457, - 15043458, 15043460, 15043461, 15043462, 15043464, 15043466, 15043468, 15043469, 15043470, 15043471, 15043473, 15043475, 15043476, 15043477, 15043479, - 15043481, 15043482, 15043483, 15043484, 15043485, 15043486, 15043488, 15043489, 15043490, 15043491, 15043493, 15043494, 15043495, 15043496, 15043497, - 15043498, 15043499, 15043500, 15043501, 15043502, 15043503, 15043505, 15043506, 15043507, 15043508, 15043509, 15043510, 15043511, 15043512, 15043515, - 15043516, 15043517, 15043713, 15043714, 15043715, 15043716, 15043719, 15043721, 15043722, 15043723, 15043724, 15043726, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15043729, 15043730, 15043731, 15043732, 15043736, 15043739, 15043740, 15043742, 15043743, 15043746, 15043748, 15043749, 15043751, - 15043752, 15043753, 15043755, 15043756, 15043757, 15043759, 15043760, 15043761, 15043762, 15043763, 15043764, 15043765, 15043766, 15043767, 15043768, - 15043772, 15043773, 15043968, 15043970, 15043972, 15043974, 15043979, 15043980, 15043981, 15043984, 15043988, 15043992, 15043993, 15043995, 15043997, - 15044005, 15044008, 15044010, 15044012, 15044013, 15044018, 15044022, 15044025, 15044027, 15044028, 15044029, 15044030, 15044224, 15044225, 15044227, - 15044231, 15044232, 15044234, 15044238, 15044239, 0, 15044240, 15044241, 15044242, 15044243, 15044244, 15044246, 15044247, 15044249, 15044251, - 15044252, 15044254, 15044256, 15044257, 15044260, 15044263, 15044266, 15044267, 15044268, 15044269, 15044271, 15044272, 15044273, 15044274, 15044275, - 15044276, 15044277, 15044279, 15044280, 15044281, 15044282, 15044284, 15044285, 15044286, 15044480, 15044483, 15044484, 15044485, 15044486, 15044487, - 15044494, 15044495, 15044496, 15044498, 15044499, 15044501, 15044506, 15044508, 15044509, 15044510, 15044513, 15044514, 15044519, 15044532, 15044538, - 15044542, 15044543, 15044736, 15044738, 15044741, 15044743, 15044747, 15044756, 15044760, 15044761, 15044762, 15044764, 15044770, 15044772, 15044773, - 15044778, 15044784, 15044787, 15044790, 15044791, 15044794, 15044797, 15044799, 15044993, 15044994, 15044996, 15044997, 15044999, 15045001, 15045004, - 15045005, 15045006, 15045007, 15045009, 15045018, 15045021, 15045022, 15045023, 15045024, 15045025, 15045027, 15045029, 15045031, 15045033, 15045034, - 15045035, 15045036, 15045037, 15045038, 15045039, 15045040, 15045044, 15045049, 15045050, 15045054, 15045055, 15045249, 15045251, 15045253, 15045255, - 15045256, 15045257, 15045258, 15045261, 15045265, 15045267, 15045271, 15045272, 15045276, 15045278, 15045279, 15045280, 15045281, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15045282, 15045285, 15045294, 15045296, 15045298, 15045301, 15045302, 15045303, 15045305, 15045306, 15045308, 15045310, - 15045507, 15045509, 15045514, 15045515, 15045526, 15045528, 15045531, 15045536, 15045537, 15045538, 15045539, 15045540, 15045547, 15045548, 15045551, - 15045552, 15045553, 15045556, 15045557, 15045558, 15045559, 15045560, 15045561, 15045563, 15045566, 15045760, 15045762, 15045763, 15045764, 15045765, - 15045768, 15045770, 15045771, 15045772, 15045773, 15045774, 15045778, 15045779, 15045781, 15045782, 15045783, 15045784, 15045785, 15045786, 15045788, - 15045789, 15045790, 15045791, 15045793, 15045797, 15045798, 0, 15045800, 15045801, 15045803, 15045805, 15045810, 15045812, 15045813, 15045814, - 15045816, 15045817, 15045818, 15045819, 15045821, 15046016, 15046018, 15046021, 15046023, 15046024, 15046027, 15046028, 15046029, 15046030, 15046031, - 15046033, 15046034, 15046035, 15046036, 15046039, 15046040, 15046041, 15046042, 15046043, 15046045, 15046046, 15046047, 15046048, 15046050, 15046051, - 15046056, 15046057, 15046059, 15046063, 15046064, 15046065, 15046066, 15046067, 15046068, 15046073, 15046074, 15046077, 15046079, 15046277, 15046278, - 15046284, 15046285, 15046286, 15046288, 15046290, 15046291, 15046293, 15046294, 15046295, 15046298, 15046299, 15046302, 15046304, 15046305, 15046306, - 15046307, 15046308, 15046309, 15046310, 15046312, 15046313, 15046314, 15046315, 15046316, 15046317, 15046318, 15046319, 15046320, 15046322, 15046324, - 15046326, 15046328, 15046330, 15046332, 15046335, 15046528, 15046529, 15046530, 15046531, 15046534, 15046535, 15046536, 15046538, 15046539, 15046542, - 15046543, 15046544, 15046549, 15046551, 15046552, 15046553, 15046554, 15046555, 15046558, 15046560, 15046562, 15046567, 15046569, 15046573, 15046574, - 15046576, 15046577, 15046580, 15046582, 15046584, 15046585, 15046586, 15046587, 15046588, 15046591, 15046786, 15046787, 15046788, 15046789, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15046790, 15046791, 15046794, 15046795, 15046797, 15046800, 15046801, 15046802, 15046803, 15046804, 15046805, - 15046806, 15046807, 15046809, 15046810, 15046812, 15046813, 15046816, 15046817, 15046818, 15046821, 15046822, 15046824, 15046825, 15046826, 15046827, - 15046830, 15046831, 15046832, 15046835, 15046837, 15046839, 15046840, 15046842, 15046844, 15046845, 15046846, 15047040, 15047041, 15047042, 15047043, - 15047044, 15047045, 15047046, 15047047, 15047048, 15047049, 15047050, 15047051, 15047055, 15047056, 15047057, 15047058, 15047059, 15047061, 15047062, - 15047066, 15047067, 15047069, 15047070, 15047071, 15047072, 15047073, 0, 15047075, 15047077, 15047078, 15047079, 15047085, 15047086, 15047087, - 15047088, 15047090, 15047091, 15047092, 15047093, 15047095, 15047096, 15047097, 15047098, 15047101, 15047102, 15047103, 15047296, 15047297, 15047298, - 15047299, 15047300, 15047303, 15047304, 15047305, 15047306, 15047307, 15047308, 15047309, 15047312, 15047313, 15047314, 15047316, 15047317, 15047318, - 15047319, 15047320, 15047321, 15047322, 15047323, 15047324, 15047325, 15047326, 15047327, 15047328, 15047329, 15047330, 15047332, 15047333, 15047334, - 15047335, 15047336, 15047337, 15047338, 15047339, 15047340, 15047341, 15047342, 15047344, 15047345, 15047346, 15047347, 15047348, 15047349, 15047350, - 15047352, 15047353, 15047354, 15047355, 15047357, 15047358, 15047359, 15047552, 15047553, 15047554, 15047555, 15047556, 15047557, 15047558, 15047559, - 15047560, 15047561, 15047563, 15047564, 15047565, 15047566, 15047567, 15047568, 15047569, 15047570, 15047571, 15047573, 15047574, 15047576, 15047577, - 15047580, 15047587, 15047589, 15047590, 15047591, 15047592, 15047593, 15047594, 15047596, 15047598, 15047599, 15047602, 15047603, 15047606, 15047607, - 15047608, 15047611, 15047612, 15047808, 15047809, 15047810, 15047813, 15047815, 15047819, 15047820, 15047821, 15047822, 15047823, 15047824, 15047825, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15047826, 15047827, 15047828, 15047829, 15047830, 15047831, 15047832, 15047833, 15047834, 15047835, - 15047837, 15047838, 15047840, 15047841, 15047842, 15047844, 15047845, 15047846, 15047847, 15047851, 15047857, 15047858, 15047860, 15047861, 15047862, - 15047863, 15047864, 15047868, 15047869, 15047871, 15048065, 15048067, 15048068, 15048069, 15048070, 15048072, 15048073, 15048075, 15048082, 15048083, - 15048084, 15048085, 15048086, 15048088, 15048089, 15048098, 15048099, 15048101, 15048103, 15048108, 15048110, 15048112, 15048113, 15048114, 15048116, - 15048117, 15048120, 15048121, 15048122, 15048125, 15048126, 15048127, 15048320, 0, 15048321, 15048327, 15048328, 15048329, 15048330, 15048333, - 15048334, 15048335, 15048336, 15048337, 15048340, 15048341, 15048342, 15048343, 15048344, 15048345, 15048346, 15048348, 15048349, 15048350, 15048351, - 15048357, 15048360, 15048362, 15048364, 15048367, 15048368, 15048369, 15048371, 15048373, 15048374, 15048375, 15048377, 15048378, 15048379, 15048380, - 15048381, 15048382, 15048383, 15048576, 15048577, 15048580, 15048581, 15048582, 15048583, 15048584, 15048585, 15048586, 15048588, 15048589, 15048592, - 15048593, 15048595, 15048598, 15048599, 15048603, 15048604, 15048606, 15048609, 15048610, 15048611, 15048613, 15048614, 15048615, 15048616, 15048617, - 15048618, 15048619, 15048620, 15048622, 15048624, 15048625, 15048626, 15048627, 15048629, 15048630, 15048631, 15048635, 15048636, 15048638, 15048639, - 15048833, 15048835, 15048836, 15048837, 15048840, 15048841, 15048842, 15048844, 15048846, 15048847, 15048848, 15048850, 15048851, 15048852, 15048854, - 15048855, 15048856, 15048858, 15048859, 15048860, 15048861, 15048863, 15048866, 15048867, 15048869, 15048870, 15048871, 15048872, 15048873, 15048875, - 15048876, 15048877, 15048878, 15048879, 15048881, 15048882, 15048883, 15048884, 15048886, 15048887, 15048888, 15048889, 15048890, 15048891, 15048892, - 15048893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15048894, 15048895, 15049088, 15049089, 15049090, 15049091, 15049093, 15049094, 15049095, - 15049096, 15049097, 15049098, 15049099, 15049102, 15049103, 15049104, 15049106, 15049107, 15049109, 15049110, 15049111, 15049113, 15049114, 15049115, - 15049116, 15049117, 15049119, 15049120, 15049121, 15049122, 15049123, 15049124, 15049126, 15049127, 15049128, 15049129, 15049130, 15049133, 15049134, - 15049135, 15049136, 15049137, 15049138, 15049139, 15049140, 15049141, 15049142, 15049143, 15049144, 15049145, 15049146, 15049147, 15049148, 15049149, - 15049151, 15049346, 15049348, 15049350, 15049351, 15049352, 15049354, 15049355, 15049356, 0, 15049357, 15049358, 15049359, 15049360, 15049361, - 15049364, 15049365, 15049366, 15049367, 15049368, 15049371, 15049372, 15049373, 15049376, 15049377, 15049378, 15049379, 15049380, 15049381, 15049382, - 15049383, 15049386, 15049387, 15049388, 15049389, 15049390, 15049391, 15049392, 15049393, 15049394, 15049395, 15049396, 15049397, 15049398, 15049399, - 15049400, 15049401, 15049402, 15049403, 15049405, 15049406, 15049407, 15049600, 15049602, 15049603, 15049604, 15049606, 15049607, 15049608, 15049609, - 15049610, 15049611, 15049612, 15049613, 15049614, 15049615, 15049616, 15049618, 15049619, 15049620, 15049622, 15049623, 15049624, 15049625, 15049626, - 15049627, 15049628, 15049629, 15049630, 15049631, 15049632, 15049633, 15049634, 15049635, 15049637, 15049638, 15049639, 15049640, 15049641, 15049642, - 15049645, 15049647, 15049649, 15049650, 15049652, 15049653, 15049655, 15049656, 15049658, 15049659, 15049660, 15049661, 15049662, 15049663, 15049856, - 15049857, 15049859, 15049861, 15049862, 15049864, 15049865, 15049866, 15049867, 15049868, 15049870, 15049872, 15049873, 15049874, 15049875, 15049879, - 15049880, 15049883, 15049885, 15049886, 15049888, 15049889, 15049890, 15049891, 15049894, 15049896, 15049900, 15049904, 15049906, 15049907, 15049909, - 15049910, 15049915, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15049917, 15049918, 15049919, 15050112, 15050115, 15050117, 15050118, 15050122, - 15050124, 15050125, 15050128, 15050130, 15050131, 15050137, 15050139, 15050140, 15050141, 15050142, 15050143, 15050145, 15050147, 15050148, 15050150, - 15050151, 15050152, 15050153, 15050154, 15050155, 15050156, 15050157, 15050158, 15050159, 15050160, 15050161, 15050162, 15050165, 15050167, 15050170, - 15050171, 15050172, 15050174, 15050175, 15050368, 15050373, 15050377, 15050379, 15050380, 15050382, 15050383, 15050384, 15050385, 15050388, 15050389, - 15050392, 15050394, 15050395, 15050396, 15050397, 15050399, 15050400, 15050401, 15050402, 15050406, 0, 15050407, 15050412, 15050413, 15050416, - 15050417, 15050419, 15050420, 15050421, 15050422, 15050423, 15050424, 15050426, 15050428, 15050429, 15050431, 15050624, 15050625, 15050626, 15050627, - 15050628, 15050629, 15050631, 15050632, 15050633, 15050636, 15050637, 15050638, 15050639, 15050645, 15050646, 15050649, 15050651, 15050654, 15050655, - 15050656, 15050657, 15050658, 15050660, 15050662, 15050663, 15050665, 15050666, 15050667, 15050669, 15050670, 15050671, 15050672, 15050673, 15050674, - 15050675, 15050676, 15050677, 15050678, 15050679, 15050680, 15050682, 15050684, 15050685, 15050686, 15050880, 15050882, 15050890, 15050891, 15050893, - 15050894, 15050895, 15050896, 15050898, 15050900, 15050901, 15050902, 15050903, 15050905, 15050906, 15050907, 15050909, 15050910, 15050913, 15050914, - 15050916, 15050918, 15050919, 15050920, 15050922, 15050923, 15050924, 15050925, 15050926, 15050927, 15050928, 15050931, 15050933, 15050935, 15050936, - 15050937, 15050938, 15050939, 15050941, 15050942, 15050943, 15051137, 15051138, 15051139, 15051140, 15051141, 15051143, 15051144, 15051147, 15051148, - 15051149, 15051150, 15051151, 15051152, 15051153, 15051154, 15051155, 15051156, 15051158, 15051159, 15051160, 15051161, 15051163, 15051164, 15051165, - 15051166, 15051167, 15051168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15051169, 15051171, 15051172, 15051173, 15051174, 15051176, 15051177, - 15051179, 15051180, 15051181, 15051182, 15051183, 15051184, 15051185, 15051186, 15051187, 15051192, 15051193, 15051195, 15051196, 15051197, 15051198, - 15051392, 15051393, 15051394, 15051395, 15051396, 15051397, 15051398, 15051399, 15051400, 15051401, 15051402, 15051403, 15051404, 15051405, 15051406, - 15051407, 15051408, 15051409, 15051411, 15051412, 15051413, 15051414, 15051415, 15051416, 15051417, 15051420, 15051421, 15051422, 15051423, 15051424, - 15051425, 15051426, 15051427, 15051428, 15051429, 15051430, 15051431, 15051432, 15051433, 15051435, 15051436, 0, 15051437, 15051438, 15051439, - 15051440, 15051441, 15051444, 15051446, 15051447, 15051449, 15051450, 15051451, 15051452, 15051453, 15051455, 15051648, 15051651, 15051652, 15051653, - 15051654, 15051655, 15051656, 15051658, 15051659, 15051661, 15051662, 15051663, 15051664, 15051665, 15051667, 15051669, 15051671, 15051673, 15051674, - 15051675, 15051677, 15051678, 15051679, 15051682, 15051684, 15051685, 15051687, 15051688, 15051690, 15051692, 15051693, 15051694, 15051695, 15051696, - 15051698, 15051699, 15051700, 15051701, 15051702, 15051703, 15051704, 15051705, 15051706, 15051707, 15051708, 15051709, 15051710, 15051711, 15051904, - 15051905, 15051906, 15051907, 15051908, 15051909, 15051910, 15051911, 15051912, 15051914, 15051915, 15051916, 15051917, 15051918, 15051919, 15051920, - 15051921, 15051922, 15051923, 15051924, 15051925, 15051928, 15051929, 15051930, 15051931, 15051932, 15051933, 15051934, 15051935, 15051936, 15051937, - 15051938, 15051939, 15051940, 15051941, 15051942, 15051943, 15051944, 15051945, 15051946, 15051947, 15051948, 15051949, 15051950, 15051951, 15051952, - 15051953, 15051955, 15051957, 15051958, 15051960, 15051961, 15051962, 15051963, 15051964, 15051965, 15051966, 15051967, 15052161, 15052162, 15052163, - 15052164, 15052165, 15052166, 15052167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15052168, 15052169, 15052170, 15052171, 15052172, 15052173, - 15052174, 15052175, 15052178, 15052182, 15052190, 15052192, 15052193, 15052199, 15052200, 15052203, 15052205, 15052206, 15052207, 15052210, 15052212, - 15052214, 15052215, 15052216, 15052217, 15052219, 15052220, 15052222, 15052223, 15052418, 15052422, 15052426, 15052429, 15052430, 15052432, 15052433, - 15052434, 15052436, 15052438, 15052447, 15052455, 15052456, 15052457, 15052460, 15052461, 15052462, 15052463, 15052465, 15052466, 15052471, 15052474, - 15052475, 15052476, 15052672, 15052673, 15052675, 15052680, 15052681, 15052682, 15052683, 15052685, 15052686, 15052687, 0, 15052689, 15052692, - 15052693, 15052694, 15052695, 15052696, 15052697, 15052698, 15052699, 15052700, 15052704, 15052706, 15052707, 15052710, 15052711, 15052713, 15052714, - 15052715, 15052716, 15052717, 15052719, 15052721, 15052722, 15052723, 15052724, 15052725, 15052726, 15052727, 15052733, 15052734, 15052928, 15052930, - 15052931, 15052933, 15052935, 15052936, 15052939, 15052940, 15052941, 15052942, 15052944, 15052946, 15052947, 15052951, 15052953, 15052955, 15052958, - 15052959, 15052960, 15052961, 15052963, 15052966, 15052968, 15052969, 15052970, 15052971, 15052973, 15052974, 15052975, 15052976, 15052978, 15052979, - 15052981, 15052982, 15052983, 15053187, 15053188, 15053190, 15053191, 15053196, 15053197, 15053202, 15053203, 15053204, 15053206, 15053207, 15053208, - 15053210, 15053211, 15053212, 15053213, 15053215, 15053218, 15053220, 15053223, 15053224, 15053225, 15053226, 15053227, 15053228, 15053229, 15053232, - 15053234, 15053235, 15053236, 15053237, 15053238, 15053239, 15053240, 15053243, 15053244, 15053245, 15053246, 15053440, 15053443, 15053444, 15053445, - 15053446, 15053447, 15053449, 15053450, 15053451, 15053454, 15053455, 15053458, 15053459, 15053461, 15053469, 15053470, 15053471, 15053472, 15053473, - 15053476, 15053477, 15053478, 15053479, 15053480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15053482, 15053486, 15053487, 15053488, 15053490, - 15053492, 15053494, 15053497, 15053498, 15053499, 15053500, 15053502, 15053696, 15053698, 15053699, 15053701, 15053702, 15053703, 15053704, 15053705, - 15053706, 15053708, 15053709, 15053710, 15053711, 15053712, 15053713, 15053715, 15053716, 15053717, 15053718, 15053719, 15053720, 15053722, 15053723, - 15053724, 15053725, 15053726, 15053727, 15053728, 15053730, 15053731, 15053735, 15053737, 15053739, 15053740, 15053742, 15053743, 15053745, 15053746, - 15053747, 15053748, 15053749, 15053750, 15053751, 15053752, 15053753, 15053754, 15053756, 15053757, 15053758, 15053759, 15053952, 0, 15053953, - 15053956, 15053957, 15053960, 15053961, 15053962, 15053963, 15053964, 15053965, 15053967, 15053968, 15053969, 15053970, 15053971, 15053973, 15053975, - 15053976, 15053977, 15053978, 15053980, 15053981, 15053983, 15053984, 15053985, 15053986, 15053987, 15053989, 15053992, 15053994, 15053995, 15053996, - 15053999, 15054000, 15054001, 15054002, 15054003, 15054005, 15054006, 15054007, 15054008, 15054009, 15054010, 15054011, 15054012, 15054015, 15054208, - 15054209, 15054210, 15054211, 15054212, 15054213, 15054214, 15054216, 15054217, 15054221, 15054222, 15054223, 15054224, 15054225, 15054226, 15054227, - 15054228, 15054229, 15054230, 15054231, 15054233, 15054234, 15054236, 15054238, 15054239, 15054240, 15054241, 15054242, 15054243, 15054244, 15054245, - 15054246, 15054247, 15054248, 15054250, 15054253, 15054254, 15054256, 15054257, 15054258, 15054259, 15054261, 15054262, 15054263, 15054264, 15054265, - 15054266, 15054267, 15054268, 15054269, 15054270, 15054271, 15054464, 15054465, 15054467, 15054468, 15054469, 15054470, 15054471, 15054472, 15054473, - 15054474, 15054475, 15054476, 15054477, 15054478, 15054479, 15054480, 15054481, 15054482, 15054483, 15054484, 15054485, 15054486, 15054487, 15054488, - 15054490, 15054491, 15054492, 15054494, 15054495, 15054496, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15054497, 15054498, 15054499, 15054500, - 15054501, 15054502, 15054503, 15054504, 15054505, 15054506, 15054507, 15054508, 15054509, 15054510, 15054511, 15054512, 15054513, 15054514, 15054515, - 15054516, 15054517, 15054518, 15054520, 15054521, 15054522, 15054523, 15054524, 15054525, 15054526, 15054527, 15054720, 15054721, 15054722, 15054723, - 15054724, 15054726, 15054727, 15054728, 15054729, 15054730, 15054731, 15054732, 15054734, 15054735, 15054736, 15054737, 15054738, 15054739, 15054740, - 15054741, 15054742, 15054743, 15054744, 15054745, 15054746, 15054748, 15054751, 15054752, 15054755, 15054756, 15054762, 15054764, 15054765, 0, - 15054768, 15054773, 15054774, 15054776, 15054777, 15054778, 15054779, 15054780, 15054783, 15054976, 15054980, 15054983, 15054985, 15054986, 15054987, - 15054989, 15054990, 15054994, 15054995, 15054999, 15055006, 15055007, 15055008, 15055009, 15055010, 15055011, 15055012, 15055013, 15055016, 15055017, - 15055018, 15055019, 15055020, 15055023, 15055024, 15055026, 15055027, 15055028, 15055029, 15055030, 15055033, 15055034, 15055038, 15055039, 15055232, - 15055233, 15055235, 15055238, 15055239, 15055240, 15055241, 15055242, 15055243, 15055245, 15055246, 15055247, 15055248, 15055249, 15055250, 15055251, - 15055254, 15055255, 15055256, 15055257, 15055258, 15055260, 15055261, 15055263, 15055264, 15055267, 15055268, 15055269, 15055270, 15055271, 15055272, - 15055273, 15055274, 15055275, 15055276, 15055277, 15055278, 15055279, 15055280, 15055281, 15055285, 15055287, 15055289, 15055294, 15055489, 15055490, - 15055491, 15055493, 15055496, 15055497, 15055500, 15055501, 15055502, 15055506, 15055512, 15055515, 15055517, 15055521, 15055522, 15055523, 15055524, - 15055528, 15055529, 15055530, 15055531, 15055532, 15055534, 15055535, 15055536, 15055537, 15055538, 15055540, 15055546, 15055547, 15055548, 15055549, - 15055551, 15055744, 15055745, 15055746, 15055747, 15055748, 15055749, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15055750, 15055751, 15055752, - 15055755, 15055756, 15055757, 15055758, 15055759, 15055760, 15055764, 15055765, 15055767, 15055768, 15055769, 15055770, 15055772, 15055773, 15055774, - 15055775, 15055776, 15055777, 15055778, 15055779, 15055780, 15055781, 15055782, 15055783, 15055785, 15055787, 15055788, 15055789, 15055790, 15055791, - 15055792, 15055793, 15055794, 15055795, 15055797, 15055800, 15055801, 15055803, 15055804, 15055805, 15056005, 15056006, 15056007, 15056009, 15056012, - 15056013, 15056014, 15056016, 15056018, 15056020, 15056022, 15056025, 15056026, 15056028, 15056029, 15056030, 15056033, 15056034, 15056035, 15056036, - 0, 15056040, 15056043, 15056044, 15056046, 15056048, 15056050, 15056051, 15056052, 15056053, 15056054, 15056055, 15056056, 15056059, 15056061, - 15056062, 15056063, 15056257, 15056258, 15056259, 15056260, 15056261, 15056262, 15056263, 15056264, 15056265, 15056266, 15056267, 15056268, 15056269, - 15056270, 15056271, 15056273, 15056276, 15056281, 15056282, 15056283, 15056284, 15056286, 15056287, 15056288, 15056291, 15056293, 15056295, 15056296, - 15056299, 15056302, 15056303, 15056306, 15056308, 15056309, 15056310, 15056312, 15056314, 15056317, 15056318, 15056319, 15056515, 15056518, 15056525, - 15056526, 15056527, 15056529, 15056531, 15056532, 15056534, 15056538, 15056539, 15056541, 15056542, 15056543, 15056544, 15056546, 15056547, 15056548, - 15056549, 15056550, 15056551, 15056553, 15056555, 15056556, 15056559, 15056560, 15056561, 15056562, 15056563, 15056564, 15056566, 15056568, 15056569, - 15056570, 15056571, 15056574, 15056575, 15056768, 15056769, 15056770, 15056775, 15056776, 15056778, 15056779, 15056782, 15056787, 15056788, 15056789, - 15056794, 15056795, 15056796, 15056798, 15056799, 15056802, 15056803, 15056805, 15056806, 15056808, 15056809, 15056812, 15056815, 15056816, 15056818, - 15056819, 15056820, 15056822, 15056823, 15056825, 15056826, 15056828, 15106183, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15106184, 15106185, - 15106187, 15106188, 15106192, 15106193, 15106195, 15106199, 15106200, 15106202, 15106206, 15106207, 15106210, 15106211, 15106212, 15106220, 15106221, - 15106222, 15106224, 15106225, 15106226, 15106227, 15106228, 15106230, 15106231, 15106232, 15106233, 15106234, 15106237, 15106238, 15106432, 15106436, - 15106437, 15106438, 15106439, 15106440, 15106441, 15106442, 15106444, 15106446, 15106447, 15106449, 15106451, 15106452, 15106454, 15106455, 15106456, - 15106459, 15106460, 15106462, 15106463, 15106464, 15106465, 15106469, 15106470, 15106478, 15106481, 15106482, 15106484, 15106485, 15106487, 15106494, - 15106688, 0, 15106689, 15106690, 15106693, 15106694, 15106695, 15106696, 15106698, 15106699, 15106702, 15106703, 15106704, 15106705, 15106707, - 15106709, 15106711, 15106712, 15106713, 15106716, 15106718, 15106721, 15106722, 15106724, 15106725, 15106727, 15106729, 15106730, 15106734, 15106736, - 15106739, 15106741, 15106742, 15106743, 15106745, 15106746, 15106749, 15106750, 15106751, 15106944, 15106945, 15106946, 15106947, 15106948, 15106951, - 15106952, 15106953, 15106956, 15106957, 15106958, 15106959, 15106960, 15106962, 15106963, 15106964, 15106966, 15106967, 15106969, 15106971, 15106974, - 15106977, 15106978, 15106979, 15106980, 15106981, 15106986, 15106993, 15106994, 15106997, 15106999, 15107000, 15107003, 15107004, 15107005, 15107006, - 15107007, 15107202, 15107203, 15107204, 15107205, 15107207, 15107210, 15107211, 15107212, 15107216, 15107217, 15107218, 15107219, 15107220, 15107222, - 15107223, 15107224, 15107225, 15107227, 15107228, 15107229, 15107230, 15107233, 15107234, 15107237, 15107240, 15107241, 15107242, 15107244, 15107245, - 15107246, 15107247, 15107248, 15107249, 15107250, 15107251, 15107252, 15107253, 15107254, 15107255, 15107256, 15107257, 15107258, 15107259, 15107260, - 15107261, 15107262, 15107456, 15107457, 15107458, 15107459, 15107460, 15107461, 15107462, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15107463, - 15107465, 15107467, 15107469, 15107471, 15107472, 15107474, 15107475, 15107476, 15107478, 15107479, 15107480, 15107481, 15107482, 15107483, 15107484, - 15107486, 15107487, 15107488, 15107489, 15107491, 15107492, 15107493, 15107494, 15107497, 15107498, 15107499, 15107500, 15107501, 15107502, 15107503, - 15107505, 15107506, 15107507, 15107508, 15107510, 15107512, 15107513, 15107514, 15107515, 15107516, 15107517, 15107518, 15107519, 15107712, 15107713, - 15107714, 15107715, 15107716, 15107717, 15107718, 15107719, 15107720, 15107721, 15107722, 15107724, 15107725, 15107727, 15107728, 15107729, 15107730, - 15107731, 15107733, 0, 15107734, 15107735, 15107736, 15107737, 15107738, 15107739, 15107740, 15107742, 15107743, 15107744, 15107745, 15107746, - 15107747, 15107748, 15107749, 15107750, 15107754, 15107755, 15107757, 15107758, 15107759, 15107760, 15107761, 15107762, 15107763, 15107764, 15107765, - 15107766, 15107768, 15107769, 15107770, 15107771, 15107772, 15107773, 15107775, 15107968, 15107969, 15107971, 15107972, 15107973, 15107974, 15107975, - 15107977, 15107980, 15107981, 15107982, 15107983, 15107984, 15107987, 15107989, 15107990, 15107991, 15107992, 15107993, 15107994, 15107995, 15107996, - 15107997, 15107998, 15107999, 15108000, 15108001, 15108002, 15108003, 15108004, 15108005, 15108007, 15108008, 15108009, 15108010, 15108011, 15108012, - 15108013, 15108014, 15108015, 15108016, 15108017, 15108018, 15108019, 15108020, 15108022, 15108023, 15108024, 15108025, 15108026, 15108027, 15108028, - 15108029, 15108030, 15108224, 15108225, 15108226, 15108227, 15108228, 15108229, 15108231, 15108233, 15108243, 15108244, 15108249, 15108252, 15108253, - 15108254, 15108256, 15108259, 15108262, 15108263, 15108264, 15108265, 15108267, 15108269, 15108271, 15108272, 15108273, 15108274, 15108277, 15108278, - 15108280, 15108281, 15108282, 15108283, 15108284, 15108482, 15108484, 15108485, 15108486, 15108490, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15108495, 15108496, 15108501, 15108502, 15108503, 15108505, 15108506, 15108508, 15108509, 15108510, 15108511, 15108512, 15108513, 15108514, 15108516, - 15108517, 15108520, 15108529, 15108530, 15108532, 15108533, 15108535, 15108536, 15108538, 15108539, 15108541, 15108737, 15108738, 15108739, 15108741, - 15108742, 15108743, 15108744, 15108747, 15108748, 15108749, 15108750, 15108751, 15108752, 15108756, 15108761, 15108764, 15108765, 15108766, 15108771, - 15108774, 15108775, 15108777, 15108778, 15108781, 15108782, 15108783, 15108784, 15108786, 15108787, 15108788, 15108790, 15108791, 15108792, 15108794, - 15108798, 15108992, 15108993, 0, 15108995, 15109003, 15109007, 15109009, 15109013, 15109021, 15109022, 15109024, 15109025, 15109028, 15109034, - 15109035, 15109040, 15109042, 15109045, 15109048, 15109049, 15109050, 15109051, 15109248, 15109251, 15109252, 15109253, 15109254, 15109258, 15109259, - 15109260, 15109261, 15109263, 15109264, 15109266, 15109267, 15109268, 15109269, 15109271, 15109272, 15109273, 15109276, 15109286, 15109287, 15109289, - 15109292, 15109293, 15109294, 15109296, 15109297, 15109299, 15109300, 15109301, 15109302, 15109303, 15109304, 15109307, 15109308, 15109310, 15109311, - 15109504, 15109505, 15109508, 15109511, 15109512, 15109514, 15109521, 15109522, 15109523, 15109524, 15109526, 15109527, 15109528, 15109529, 15109530, - 15109531, 15109532, 15109533, 15109536, 15109540, 15109541, 15109542, 15109544, 15109546, 15109547, 15109548, 15109551, 15109552, 15109554, 15109555, - 15109556, 15109557, 15109560, 15109561, 15109564, 15109565, 15109566, 15109567, 15109761, 15109763, 15109764, 15109765, 15109766, 15109771, 15109773, - 15109777, 15109779, 15109780, 15109781, 15109783, 15109785, 15109786, 15109787, 15109788, 15109789, 15109790, 15109791, 15109793, 15109796, 15109798, - 15109803, 15109807, 15109809, 15109810, 15109813, 15109814, 15109817, 15109819, 15109821, 15109823, 15110016, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15110017, 15110018, 15110019, 15110021, 15110023, 15110024, 15110026, 15110027, 15110028, 15110033, 15110035, 15110036, 15110037, 15110039, - 15110040, 15110041, 15110042, 15110043, 15110044, 15110045, 15110047, 15110050, 15110052, 15110053, 15110054, 15110055, 15110056, 15110059, 15110060, - 15110062, 15110063, 15110064, 15110065, 15110067, 15110069, 15110071, 15110073, 15110074, 15110075, 15110076, 15110078, 15110275, 15110276, 15110278, - 15110279, 15110280, 15110281, 15110282, 15110285, 15110286, 15110289, 15110290, 15110293, 15110294, 15110295, 15110296, 15110297, 15110298, 15110301, - 15110303, 15110306, 15110307, 15110308, 0, 15110309, 15110311, 15110312, 15110313, 15110315, 15110318, 15110319, 15110320, 15110321, 15110322, - 15110323, 15110325, 15110326, 15110327, 15110328, 15110329, 15110331, 15110332, 15110334, 15110528, 15110530, 15110531, 15110537, 15110539, 15110540, - 15110541, 15110542, 15110543, 15110544, 15110545, 15110547, 15110549, 15110550, 15110551, 15110553, 15110554, 15110555, 15110556, 15110557, 15110559, - 15110560, 15110561, 15110562, 15110563, 15110564, 15110565, 15110566, 15110568, 15110570, 15110571, 15110572, 15110574, 15110575, 15110576, 15110577, - 15110578, 15110579, 15110580, 15110581, 15110582, 15110583, 15110587, 15110588, 15110589, 15110590, 15110591, 15110784, 15110785, 15110787, 15110790, - 15110792, 15110793, 15110794, 15110795, 15110796, 15110797, 15110798, 15110799, 15110800, 15110803, 15110804, 15110807, 15110808, 15110810, 15110811, - 15110812, 15110813, 15110815, 15110816, 15110817, 15110818, 15110819, 15110821, 15110822, 15110823, 15110824, 15110826, 15110827, 15110831, 15110833, - 15110834, 15110835, 15110836, 15110838, 15110841, 15110843, 15110845, 15110846, 15110847, 15111041, 15111043, 15111044, 15111046, 15111047, 15111048, - 15111049, 15111050, 15111051, 15111052, 15111055, 15111057, 15111059, 15111060, 15111061, 15111062, 15111065, 15111066, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15111067, 15111068, 15111069, 15111071, 15111072, 15111073, 15111075, 15111077, 15111079, 15111080, 15111081, 15111082, 15111083, - 15111084, 15111085, 15111086, 15111087, 15111088, 15111089, 15111090, 15111091, 15111092, 15111093, 15111094, 15111095, 15111096, 15111097, 15111098, - 15111099, 15111100, 15111101, 15111102, 15111103, 15111297, 15111298, 15111299, 15111300, 15111301, 15111302, 15111303, 15111304, 15111306, 15111307, - 15111308, 15111309, 15111310, 15111311, 15111312, 15111313, 15111315, 15111316, 15111317, 15111318, 15111319, 15111321, 15111322, 15111323, 15111324, - 15111325, 15111326, 15111327, 15111328, 15111329, 0, 15111330, 15111331, 15111332, 15111334, 15111335, 15111336, 15111337, 15111338, 15111340, - 15111341, 15111344, 15111345, 15111346, 15111347, 15111351, 15111354, 15111356, 15111357, 15111552, 15111553, 15111554, 15111555, 15111556, 15111558, - 15111559, 15111562, 15111563, 15111565, 15111566, 15111568, 15111570, 15111571, 15111572, 15111575, 15111576, 15111578, 15111580, 15111583, 15111584, - 15111585, 15111588, 15111589, 15111591, 15111592, 15111593, 15111594, 15111597, 15111598, 15111599, 15111601, 15111603, 15111605, 15111606, 15111608, - 15111609, 15111610, 15111611, 15111612, 15111613, 15111614, 15111615, 15111808, 15111809, 15111810, 15111811, 15111812, 15111813, 15111814, 15111816, - 15111817, 15111818, 15111821, 15111822, 15111823, 15111826, 15111828, 15111829, 15111830, 15111832, 15111834, 15111837, 15111838, 15111840, 15111842, - 15111843, 15111846, 15111848, 15111850, 15111852, 15111854, 15111857, 15111858, 15111859, 15111860, 15111861, 15111862, 15111863, 15111864, 15111866, - 15111867, 15111870, 15111871, 15112064, 15112066, 15112071, 15112072, 15112073, 15112074, 15112077, 15112080, 15112081, 15112083, 15112084, 15112085, - 15112088, 15112089, 15112090, 15112091, 15112092, 15112093, 15112094, 15112095, 15112097, 15112099, 15112100, 15112106, 15112107, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15112114, 15112115, 15112116, 15112117, 15112120, 15112121, 15112123, 15112124, 15112125, 15112126, 15112127, 15112321, - 15112324, 15112325, 15112327, 15112328, 15112329, 15112331, 15112333, 15112336, 15112337, 15112338, 15112342, 15112343, 15112344, 15112346, 15112347, - 15112348, 15112350, 15112353, 15112354, 15112355, 15112356, 15112358, 15112361, 15112362, 15112363, 15112364, 15112366, 15112368, 15112370, 15112371, - 15112375, 15112376, 15112377, 15112378, 15112379, 15112381, 15112383, 15112576, 15112578, 15112580, 15112581, 15112582, 15112583, 15112584, 15112585, - 15112586, 15112589, 15112590, 15112592, 15112593, 15112600, 0, 15112601, 15112603, 15112604, 15112605, 15112606, 15112608, 15112610, 15112611, - 15112613, 15112615, 15112617, 15112618, 15112619, 15112620, 15112621, 15112625, 15112626, 15112627, 15112629, 15112632, 15112633, 15112635, 15112636, - 15112637, 15112639, 15112832, 15112833, 15112835, 15112837, 15112838, 15112840, 15112841, 15112842, 15112843, 15112845, 15112846, 15112847, 15112848, - 15112850, 15112851, 15112852, 15112853, 15112856, 15112857, 15112858, 15112859, 15112860, 15112862, 15112863, 15112864, 15112865, 15112866, 15112867, - 15112868, 15112869, 15112870, 15112873, 15112874, 15112875, 15112876, 15112877, 15112879, 15112880, 15112881, 15112882, 15112883, 15112885, 15112886, - 15112887, 15112888, 15112890, 15112891, 15112892, 15112893, 15112895, 15113088, 15113089, 15113090, 15113091, 15113092, 15113093, 15113094, 15113095, - 15113096, 15113097, 15113098, 15113099, 15113100, 15113101, 15113102, 15113103, 15113104, 15113105, 15113106, 15113107, 15113108, 15113109, 15113110, - 15113111, 15113112, 15113114, 15113118, 15113119, 15113120, 15113121, 15113122, 15113123, 15113124, 15113125, 15113127, 15113128, 15113130, 15113131, - 15113132, 15113133, 15113134, 15113135, 15113137, 15113141, 15113142, 15113144, 15113146, 15113147, 15113149, 15113345, 15113346, 15113347, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15113348, 15113349, 15113350, 15113351, 15113356, 15113358, 15113359, 15113361, 15113362, 15113363, 15113366, - 15113368, 15113369, 15113370, 15113372, 15113374, 15113376, 15113377, 15113378, 15113379, 15113380, 15113381, 15113383, 15113385, 15113390, 15113392, - 15113394, 15113395, 15113398, 15113399, 15113400, 15113401, 15113403, 15113404, 15113406, 15113407, 15113601, 15113604, 15113605, 15113607, 15113610, - 15113611, 15113613, 15113618, 15113620, 15113621, 15113623, 15113624, 15113625, 15113626, 15113627, 15113629, 15113634, 15113635, 15113636, 15113638, - 15113639, 15113643, 15113644, 15113646, 15113649, 15113652, 15113654, 0, 15113656, 15113657, 15113658, 15113659, 15113661, 15113856, 15113858, - 15113859, 15113861, 15113862, 15113864, 15113866, 15113868, 15113869, 15113870, 15113871, 15113873, 15113874, 15113875, 15113876, 15113878, 15113881, - 15113883, 15113887, 15113888, 15113889, 15113892, 15113894, 15113897, 15113900, 15113902, 15113905, 15113906, 15113908, 15113913, 15113914, 15113915, - 15113916, 15113917, 15113918, 15113919, 15114112, 15114114, 15114117, 15114118, 15114119, 15114120, 15114121, 15114122, 15114123, 15114124, 15114125, - 15114126, 15114133, 15114134, 15114135, 15114139, 15114143, 15114145, 15114147, 15114148, 15114150, 15114151, 15114152, 15114154, 15114155, 15114157, - 15114158, 15114162, 15114165, 15114166, 15114167, 15114168, 15114169, 15114170, 15114171, 15114172, 15114174, 15114369, 15114370, 15114371, 15114372, - 15114374, 15114381, 15114384, 15114386, 15114388, 15114389, 15114392, 15114393, 15114394, 15114395, 15114396, 15114398, 15114399, 15114400, 15114402, - 15114403, 15114404, 15114405, 15114406, 15114407, 15114408, 15114411, 15114412, 15114413, 15114414, 15114415, 15114416, 15114417, 15114420, 15114421, - 15114422, 15114426, 15114427, 15114431, 15114631, 15114635, 15114637, 15114639, 15114642, 15114646, 15114647, 15114648, 15114649, 15114650, 15114651, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15114652, 15114653, 15114654, 15114655, 15114666, 15114668, 15114669, 15114670, 15114671, 15114672, - 15114673, 15114674, 15114675, 15114677, 15114680, 15114681, 15114682, 15114683, 15114684, 15114685, 15114686, 15114687, 15114880, 15114882, 15114884, - 15114887, 15114888, 15114889, 15114890, 15114891, 15114892, 15114893, 15114894, 15114896, 15114897, 15114898, 15114900, 15114901, 15114902, 15114904, - 15114905, 15114906, 15114907, 15114908, 15114909, 15114910, 15114911, 15114912, 15114913, 15114915, 15114916, 15114917, 15114921, 15114922, 15114923, - 15114924, 15114926, 15114929, 15114930, 15114932, 15114934, 15114935, 15114936, 0, 15114937, 15114938, 15114939, 15114940, 15114941, 15114942, - 15114943, 15115137, 15115139, 15115140, 15115141, 15115142, 15115143, 15115144, 15115146, 15115148, 15115150, 15115151, 15115152, 15115153, 15115155, - 15115156, 15115158, 15115159, 15115161, 15115163, 15115164, 15115165, 15115166, 15115167, 15115169, 15115170, 15115172, 15115173, 15115174, 15115175, - 15115176, 15115177, 15115178, 15115179, 15115180, 15115181, 15115183, 15115186, 15115187, 15115188, 15115190, 15115191, 15115192, 15115195, 15115197, - 15115198, 15115199, 15115392, 15115394, 15115395, 15115396, 15115398, 15115399, 15115400, 15115401, 15115402, 15115404, 15115407, 15115409, 15115411, - 15115412, 15115413, 15115414, 15115415, 15115416, 15115417, 15115418, 15115419, 15115420, 15115421, 15115422, 15115425, 15115426, 15115427, 15115429, - 15115430, 15115431, 15115432, 15115433, 15115434, 15115435, 15115436, 15115438, 15115439, 15115441, 15115442, 15115443, 15115445, 15115446, 15115447, - 15115448, 15115450, 15115451, 15115452, 15115454, 15115648, 15115649, 15115651, 15115652, 15115653, 15115654, 15115655, 15115656, 15115657, 15115658, - 15115659, 15115660, 15115661, 15115662, 15115663, 15115664, 15115665, 15115666, 15115667, 15115669, 15115670, 15115672, 15115673, 15115675, 15115676, - 15115679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15115681, 15115682, 15115684, 15115685, 15115687, 15115688, 15115689, 15115690, 15115692, - 15115693, 15115695, 15115696, 15115698, 15115699, 15115700, 15115701, 15115702, 15115706, 15115707, 15115709, 15115710, 15115711, 15115905, 15115907, - 15115909, 15115914, 15115915, 15115916, 15115918, 15115919, 15115920, 15115921, 15115922, 15115923, 15115926, 15115927, 15115929, 15115930, 15115933, - 15115934, 15115935, 15115936, 15115937, 15115938, 15115939, 15115940, 15115941, 15115942, 15115945, 15115946, 15115948, 15115950, 15115951, 15115952, - 15115954, 15115955, 15115957, 15115958, 15115960, 15115961, 15115962, 15115964, 15115965, 0, 15115966, 15115967, 15116160, 15116162, 15116163, - 15116164, 15116165, 15116166, 15116167, 15116168, 15116169, 15116171, 15116173, 15116175, 15116177, 15116178, 15116179, 15116181, 15116182, 15116183, - 15116184, 15116185, 15116186, 15116188, 15116189, 15116190, 15116193, 15116194, 15116195, 15116196, 15116197, 15116198, 15116199, 15116200, 15116201, - 15116202, 15116203, 15116204, 15116206, 15116207, 15116208, 15116209, 15116211, 15116212, 15116213, 15116214, 15116215, 15116216, 15116217, 15116218, - 15116219, 15116220, 15116222, 15116416, 15116417, 15116418, 15116419, 15116420, 15116421, 15116422, 15116423, 15116424, 15116425, 15116427, 15116428, - 15116429, 15116430, 15116431, 15116432, 15116433, 15116434, 15116435, 15116436, 15116437, 15116438, 15116441, 15116442, 15116443, 15116444, 15116445, - 15116446, 15116448, 15116450, 15116451, 15116452, 15116453, 15116454, 15116455, 15116457, 15116459, 15116460, 15116461, 15116462, 15116464, 15116466, - 15116467, 15116468, 15116470, 15116471, 15116472, 15116473, 15116474, 15116475, 15116476, 15116479, 15116672, 15116673, 15116674, 15116675, 15116677, - 15116678, 15116680, 15116681, 15116682, 15116683, 15116684, 15116685, 15116686, 15116687, 15116689, 15116690, 15116691, 15116692, 15116693, 15116694, - 15116695, 15116698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15116700, 15116701, 15116702, 15116703, 15116704, 15116706, 15116707, 15116708, - 15116710, 15116711, 15116712, 15116713, 15116714, 15116715, 15116716, 15116717, 15116718, 15116719, 15116720, 15116722, 15116723, 15116724, 15116725, - 15116726, 15116727, 15116728, 15116730, 15116731, 15116733, 15116734, 15116735, 15116929, 15116930, 15116931, 15116933, 15116934, 15116935, 15116936, - 15116937, 15116938, 15116939, 15116940, 15116941, 15116943, 15116946, 15116947, 15116948, 15116949, 15116950, 15116952, 15116953, 15116954, 15116955, - 15116956, 15116957, 15116958, 15116959, 15116961, 15116962, 15116963, 15116964, 15116965, 15116966, 0, 15116967, 15116968, 15116970, 15116973, - 15116974, 15116975, 15116976, 15116977, 15116978, 15116979, 15116980, 15116981, 15116982, 15116983, 15116984, 15116985, 15116986, 15116987, 15116988, - 15116989, 15116990, 15116991, 15117184, 15117185, 15117186, 15117187, 15117188, 15117189, 15117190, 15117191, 15117192, 15117193, 15117194, 15117195, - 15117196, 15117197, 15117198, 15117199, 15117200, 15117201, 15117202, 15117203, 15117204, 15117205, 15117206, 15117207, 15117208, 15117209, 15117210, - 15117211, 15117212, 15117213, 15117214, 15117215, 15117216, 15117217, 15117218, 15117219, 15117220, 15117221, 15117222, 15117223, 15117224, 15117225, - 15117226, 15117227, 15117228, 15117229, 15117230, 15117231, 15117232, 15117233, 15117234, 15117235, 15117236, 15117237, 15117238, 15117239, 15117240, - 15117241, 15117242, 15117243, 15117244, 15117245, 15117246, 15117247, 15117440, 15117441, 15117442, 15117443, 15117444, 15117445, 15117446, 15117447, - 15117448, 15117449, 15117450, 15117451, 15117452, 15117453, 15117454, 15117455, 15117456, 15117457, 15117458, 15117459, 15117460, 15117461, 15117462, - 15117463, 15117464, 15117465, 15117466, 15117467, 15117468, 15117469, 15117470, 15117471, 15117477, 15117478, 15117480, 15117481, 15117482, 15117483, - 15117484, 15117485, 15117486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15117487, 15117488, 15117489, 15117491, 15117492, 15117493, 15117494, - 15117496, 15117499, 15117500, 15117501, 15117503, 15117696, 15117697, 15117698, 15117700, 15117701, 15117704, 15117706, 15117707, 15117709, 15117710, - 15117711, 15117712, 15117713, 15117714, 15117715, 15117716, 15117717, 15117718, 15117719, 15117720, 15117722, 15117723, 15117724, 15117725, 15117726, - 15117727, 15117728, 15117729, 15117736, 15117737, 15117739, 15117740, 15117741, 15117742, 15117743, 15117744, 15117745, 15117746, 15117747, 15117748, - 15117749, 15117750, 15117751, 15117752, 15117754, 15117757, 15117758, 15117759, 15117952, 15117957, 15117960, 0, 15117964, 15117966, 15117967, - 15117968, 15117969, 15117972, 15117973, 15117975, 15117976, 15117977, 15117980, 15117981, 15117982, 15117983, 15117984, 15117986, 15117987, 15117988, - 15117989, 15117990, 15117991, 15117992, 15117993, 15117995, 15117996, 15117997, 15117998, 15117999, 15118000, 15118001, 15118002, 15118006, 15118008, - 15118009, 15118010, 15118011, 15118012, 15118013, 15118014, 15118208, 15118211, 15118212, 15118214, 15118215, 15118216, 15118217, 15118218, 15118220, - 15118222, 15118224, 15118225, 15118232, 15118234, 15118236, 15118237, 15118238, 15118239, 15118240, 15118242, 15118243, 15118244, 15118245, 15118246, - 15118247, 15118248, 15118249, 15118252, 15118253, 15118254, 15118256, 15118257, 15118258, 15118260, 15118262, 15118263, 15118264, 15118266, 15118267, - 15118268, 15118270, 15118271, 15118464, 15118465, 15118466, 15118467, 15118468, 15118472, 15118473, 15118474, 15118475, 15118476, 15118478, 15118482, - 15118487, 15118492, 15118493, 15118494, 15118496, 15118499, 15118501, 15118507, 15118508, 15118509, 15118513, 15118515, 15118518, 15118519, 15118521, - 15118522, 15118523, 15118524, 15118526, 15118527, 15118723, 15118724, 15118725, 15118728, 15118731, 15118732, 15118733, 15118734, 15118735, 15118737, - 15118738, 15118739, 15118742, 15118744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15118745, 15118746, 15118754, 15118755, 15118757, 15118758, - 15118759, 15118763, 15118764, 15118765, 15118766, 15118767, 15118769, 15118771, 15118773, 15118775, 15118776, 15118778, 15118779, 15118780, 15118783, - 15118976, 15118980, 15118983, 15118986, 15118987, 15118989, 15118990, 15118993, 15118994, 15118997, 15118998, 15118999, 15119000, 15119002, 15119004, - 15119005, 15119006, 15119008, 15119010, 15119016, 15119020, 15119023, 15119024, 15119028, 15119029, 15119030, 15119031, 15119034, 15119232, 15119233, - 15119234, 15119235, 15119238, 15119239, 15119240, 15119243, 15119245, 15119246, 15119247, 15119249, 15119250, 15119256, 0, 15119257, 15119258, - 15119260, 15119261, 15119263, 15119268, 15119270, 15119271, 15119273, 15119276, 15119277, 15119282, 15119284, 15119289, 15119295, 15119488, 15119490, - 15119491, 15119493, 15119494, 15119496, 15119497, 15119498, 15119501, 15119503, 15119504, 15119505, 15119507, 15119508, 15119509, 15119510, 15119512, - 15119516, 15119517, 15119519, 15119520, 15119521, 15119522, 15119523, 15119524, 15119526, 15119528, 15119529, 15119532, 15119533, 15119535, 15119536, - 15119540, 15119542, 15119543, 15119544, 15119546, 15119551, 15119744, 15119746, 15119748, 15119753, 15119756, 15119760, 15119765, 15119766, 15119767, - 15119768, 15119771, 15119773, 15119775, 15119777, 15119778, 15119780, 15119781, 15119783, 15119784, 15119787, 15119788, 15119789, 15119792, 15119793, - 15119794, 15119795, 15119797, 15119798, 15119801, 15119802, 15119803, 15119805, 15119806, 15119807, 15120000, 15120001, 15120003, 15120004, 15120006, - 15120007, 15120010, 15120011, 15120013, 15120015, 15120016, 15120018, 15120022, 15120023, 15120024, 15120025, 15120026, 15120028, 15120034, 15120037, - 15120044, 15120045, 15120048, 15120049, 15120051, 15120052, 15120054, 15120055, 15120057, 15120058, 15120059, 15120060, 15120061, 15120062, 15120257, - 15120258, 15120259, 15120264, 15120265, 15120266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15120269, 15120270, 15120271, 15120272, 15120274, - 15120275, 15120276, 15120277, 15120279, 15120282, 15120283, 15120284, 15120287, 15120290, 15120291, 15120293, 15120295, 15120296, 15120297, 15120298, - 15120301, 15120303, 15120304, 15120306, 15120308, 15120309, 15120310, 15120312, 15120314, 15120317, 15120318, 15120319, 15120512, 15120513, 15120514, - 15120515, 15120516, 15120518, 15120519, 15120520, 15120521, 15120523, 15120527, 15120530, 15120531, 15120533, 15120536, 15120537, 15120539, 15120540, - 15120542, 15120543, 15120546, 15120550, 15120551, 15120552, 15120554, 15120556, 15120558, 15120560, 15120561, 15120563, 15120565, 0, 15120566, - 15120567, 15120569, 15120571, 15120572, 15120573, 15120574, 15120575, 15120768, 15120769, 15120770, 15120773, 15120774, 15120775, 15120776, 15120777, - 15120778, 15120779, 15120780, 15120783, 15120784, 15120785, 15120786, 15120789, 15120791, 15120793, 15120794, 15120796, 15120797, 15120798, 15120800, - 15120801, 15120802, 15120803, 15120804, 15120805, 15120806, 15120807, 15120808, 15120809, 15120810, 15120812, 15120813, 15120815, 15120816, 15120817, - 15120818, 15120819, 15120820, 15120821, 15120822, 15120823, 15120824, 15120825, 15120826, 15120827, 15120828, 15120829, 15121024, 15121025, 15121026, - 15121028, 15121031, 15121032, 15121034, 15121035, 15121036, 15121037, 15121038, 15121041, 15121042, 15121043, 15121044, 15121045, 15121046, 15121047, - 15121049, 15121050, 15121051, 15121053, 15121054, 15121056, 15121057, 15121059, 15121060, 15121062, 15121064, 15121065, 15121067, 15121068, 15121069, - 15121070, 15121072, 15121075, 15121077, 15121080, 15121081, 15121084, 15121086, 15121087, 15121280, 15121283, 15121284, 15121285, 15121286, 15121288, - 15121289, 15121290, 15121292, 15121293, 15121294, 15121296, 15121298, 15121302, 15121304, 15121305, 15121307, 15121308, 15121309, 15121315, 15121319, - 15121322, 15121323, 15121324, 15121325, 15121326, 15121327, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15121328, 15121329, 15121330, 15121331, - 15121333, 15121334, 15121335, 15121336, 15121338, 15121339, 15121340, 15121341, 15121342, 15121343, 15121536, 15121537, 15121539, 15121540, 15121541, - 15121543, 15121544, 15121546, 15121547, 15121548, 15121549, 15121550, 15121552, 15121553, 15121554, 15121558, 15121559, 15121560, 15121561, 15121562, - 15121563, 15121564, 15121565, 15121566, 15121567, 15121569, 15121570, 15121571, 15121573, 15121574, 15121575, 15121576, 15121580, 15121582, 15121584, - 15121586, 15121588, 15121589, 15121591, 15121592, 15121593, 15121594, 15121595, 15121596, 15121597, 15121599, 15121792, 15121793, 15121794, 0, - 15121795, 15121796, 15121797, 15121800, 15121801, 15121802, 15121804, 15121806, 15121807, 15121808, 15121809, 15121810, 15121811, 15121812, 15121813, - 15121814, 15121815, 15121817, 15121818, 15121819, 15121821, 15121823, 15121824, 15121825, 15121827, 15121828, 15121829, 15121831, 15121832, 15121833, - 15121834, 15121835, 15121836, 15121839, 15121840, 15121841, 15121843, 15121845, 15121846, 15121847, 15121849, 15121851, 15121853, 15121854, 15121855, - 15122048, 15122049, 15122050, 15122051, 15122053, 15122054, 15122055, 15122058, 15122059, 15122063, 15122064, 15122065, 15122066, 15122067, 15122068, - 15122069, 15122070, 15122071, 15122072, 15122073, 15122074, 15122075, 15122077, 15122078, 15122079, 15122080, 15122082, 15122083, 15122084, 15122085, - 15122086, 15122088, 15122089, 15122090, 15122091, 15122092, 15122093, 15122094, 15122095, 15122096, 15122097, 15122098, 15122100, 15122101, 15122103, - 15122104, 15122106, 15122107, 15122108, 15122109, 15122110, 15122111, 15122305, 15122307, 15122308, 15122309, 15122310, 15122311, 15122312, 15122314, - 15122315, 15122316, 15122317, 15122318, 15122319, 15122320, 15122323, 15122324, 15122325, 15122326, 15122327, 15122328, 15122329, 15122330, 15122331, - 15122332, 15122333, 15122335, 15122338, 15122339, 15122340, 15122341, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15122342, 15122343, 15122344, - 15122345, 15122346, 15122347, 15122348, 15122349, 15122352, 15122353, 15122354, 15122355, 15122356, 15122357, 15122358, 15122359, 15122360, 15122361, - 15122362, 15122363, 15122364, 15122365, 15122366, 15122367, 15171712, 15171713, 15171714, 15171715, 15171716, 15171717, 15171718, 15171719, 15171720, - 15171721, 15171722, 15171723, 15171724, 15171725, 15171726, 15171727, 15171728, 15171730, 15171731, 15171732, 15171733, 15171734, 15171735, 15171736, - 15171737, 15171740, 15171741, 15171742, 15171743, 15171744, 15171745, 15171746, 15171748, 15171749, 15171750, 15171751, 15171752, 15171753, 15171754, - 0, 15171755, 15171756, 15171757, 15171758, 15171759, 15171760, 15171761, 15171762, 15171763, 15171764, 15171766, 15171767, 15171768, 15171770, - 15171771, 15171772, 15171773, 15171774, 15171775, 15171968, 15171969, 15171970, 15171971, 15171972, 15171973, 15171974, 15171975, 15171976, 15171977, - 15171978, 15171979, 15171981, 15171982, 15171984, 15171985, 15171986, 15171987, 15171988, 15171989, 15171990, 15171991, 15171992, 15171993, 15171994, - 15171995, 15171996, 15171997, 15171999, 15172000, 15172001, 15172002, 15172003, 15172004, 15172005, 15172006, 15172007, 15172008, 15172009, 15172010, - 15172014, 15172017, 15172018, 15172019, 15172020, 15172023, 15172025, 15172026, 15172027, 15172029, 15172225, 15172226, 15172227, 15172228, 15172230, - 15172231, 15172232, 15172235, 15172236, 15172237, 15172239, 15172240, 15172241, 15172243, 15172247, 15172248, 15172250, 15172251, 15172254, 15172255, - 15172256, 15172257, 15172258, 15172259, 15172260, 15172261, 15172262, 15172263, 15172264, 15172265, 15172266, 15172272, 15172274, 15172276, 15172277, - 15172278, 15172282, 15172286, 15172287, 15172484, 15172485, 15172486, 15172487, 15172489, 15172491, 15172492, 15172493, 15172494, 15172495, 15172496, - 15172497, 15172498, 15172499, 15172500, 15172501, 15172502, 15172503, 15172506, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15172508, 15172509, - 15172510, 15172512, 15172513, 15172514, 15172515, 15172517, 15172522, 15172526, 15172528, 15172529, 15172530, 15172531, 15172532, 15172533, 15172534, - 15172536, 15172538, 15172539, 15172540, 15172542, 15172543, 15172736, 15172737, 15172738, 15172739, 15172740, 15172741, 15172742, 15172743, 15172744, - 15172747, 15172748, 15172749, 15172750, 15172751, 15172753, 15172754, 15172756, 15172759, 15172763, 15172764, 15172765, 15172766, 15172767, 15172768, - 15172769, 15172770, 15172771, 15172772, 15172773, 15172775, 15172776, 15172777, 15172778, 15172779, 15172780, 15172781, 15172782, 15172786, 15172787, - 15172788, 0, 15172789, 15172791, 15172792, 15172793, 15172794, 15172795, 15172796, 15172797, 15172798, 15172799, 15172992, 15172993, 15172994, - 15172995, 15172996, 15172998, 15172999, 15173000, 15173001, 15173003, 15173005, 15173007, 15173008, 15173009, 15173010, 15173011, 15173012, 15173013, - 15173014, 15173015, 15173016, 15173017, 15173018, 15173019, 15173021, 15173023, 15173024, 15173025, 15173026, 15173027, 15173029, 15173033, 15173034, - 15173035, 15173036, 15173037, 15173039, 15173040, 15173041, 15173044, 15173045, 15173046, 15173047, 15173049, 15173051, 15173052, 15173054, 15173055, - 15173248, 15173249, 15173250, 15173251, 15173253, 15173254, 15173255, 15173256, 15173257, 15173259, 15173260, 15173261, 15173262, 15173264, 15173265, - 15173266, 15173267, 15173269, 15173270, 15173271, 15173274, 15173275, 15173276, 15173277, 15173278, 15173281, 15173282, 15173283, 15173284, 15173285, - 15173286, 15173287, 15173289, 15173290, 15173291, 15173293, 15173294, 15173295, 15173296, 15173297, 15173298, 15173300, 15173302, 15173303, 15173304, - 15173306, 15173307, 15173308, 15173309, 15173310, 15173311, 15173504, 15173505, 15173506, 15173508, 15173509, 15173510, 15173511, 15173512, 15173513, - 15173514, 15173515, 15173516, 15173517, 15173519, 15173520, 15173521, 15173522, 15173523, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15173526, - 15173527, 15173528, 15173529, 15173530, 15173531, 15173532, 15173533, 15173534, 15173535, 15173537, 15173538, 15173539, 15173540, 15173542, 15173544, - 15173545, 15173546, 15173547, 15173548, 15173549, 15173551, 15173552, 15173553, 15173554, 15173555, 15173556, 15173557, 15173558, 15173559, 15173560, - 15173562, 15173563, 15173564, 15173565, 15173566, 15173567, 15173760, 15173761, 15173762, 15173763, 15173764, 15173765, 15173767, 15173768, 15173769, - 15173770, 15173771, 15173772, 15173773, 15173774, 15173775, 15173776, 15173777, 15173778, 15173779, 15173780, 15173781, 15173782, 15173783, 15173784, - 15173785, 15173786, 0, 15173787, 15173788, 15173790, 15173791, 15173792, 15173793, 15173794, 15173795, 15173796, 15173797, 15173798, 15173799, - 15173801, 15173803, 15173805, 15173806, 15173807, 15173810, 15173811, 15173812, 15173818, 15173820, 15173822, 15174016, 15174017, 15174018, 15174019, - 15174020, 15174021, 15174022, 15174025, 15174026, 15174027, 15174030, 15174031, 15174032, 15174033, 15174035, 15174036, 15174037, 15174039, 15174040, - 15174042, 15174044, 15174046, 15174048, 15174051, 15174052, 15174053, 15174056, 15174058, 15174059, 15174060, 15174061, 15174064, 15174065, 15174067, - 15174068, 15174070, 15174071, 15174072, 15174075, 15174076, 15174077, 15174274, 15174275, 15174277, 15174278, 15174279, 15174280, 15174281, 15174284, - 15174286, 15174288, 15174289, 15174291, 15174292, 15174293, 15174294, 15174295, 15174296, 15174297, 15174298, 15174299, 15174300, 15174301, 15174302, - 15174304, 15174305, 15174306, 15174307, 15174308, 15174309, 15174310, 15174311, 15174312, 15174313, 15174314, 15174315, 15174318, 15174321, 15174322, - 15174323, 15174325, 15174330, 15174331, 15174332, 15174333, 15174334, 15174335, 15174528, 15174533, 15174534, 15174535, 15174537, 15174538, 15174539, - 15174540, 15174543, 15174545, 15174547, 15174548, 15174549, 15174550, 15174552, 15174554, 15174555, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 14909568, 14909569, 14909570, 49847, 52105, 52103, 49832, 14909571, - 14909573, 14844052, 15711646, 14844054, 14844070, 14844056, 14844057, 14844060, 14844061, 14909588, 14909589, 14909576, 14909577, 14909578, 14909579, - 14909580, 14909581, 14909582, 14909583, 14909590, 14909591, 14909584, 14909585, 49841, 50071, 50103, 14846134, 14846119, 14846120, 14846097, - 14846095, 14846122, 14846121, 14846088, 14846135, 14846106, 14846629, 14846117, 14846112, 14847122, 14846617, 14846123, 14846126, 14846369, 14846348, - 14846344, 14846141, 14846109, 14846368, 14846382, 14846383, 14846372, 14846373, 14846110, 14846133, 14846132, 14850434, 14850432, 49840, 14844082, - 14844083, 14845059, 15711364, 49828, 15712160, 15712161, 14844080, 49831, 14845078, 14850182, 14850181, 14849931, 14849935, 14849934, 14849927, - 14849926, 14849697, 14849696, 14849715, 14849714, 14844091, 14845586, 14845584, 14845585, 14845587, 14909587, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14845360, 14845361, 14845362, 14845363, 14845364, 14845365, 14845366, - 14845367, 14845368, 14845369, 0, 0, 0, 0, 0, 0, 14848648, 14848649, 14848650, 14848651, 14848652, 14848653, - 14848654, 14848655, 14848656, 14848657, 14848658, 14848659, 14848660, 14848661, 14848662, 14848663, 14848664, 14848665, 14848666, 14848667, 14848436, - 14848437, 14848438, 14848439, 14848440, 14848441, 14848442, 14848443, 14848444, 14848445, 14848446, 14848447, 14848640, 14848641, 14848642, 14848643, - 14848644, 14848645, 14848646, 14848647, 14848416, 14848417, 14848418, 14848419, 14848420, 14848421, 14848422, 14848423, 14848424, 14848425, 0, - 0, 14911648, 14911649, 14911650, 14911651, 14911652, 14911653, 14911654, 14911655, 14911656, 14911657, 0, 0, 14845344, 14845345, - 14845346, 14845347, 14845348, 14845349, 14845350, 14845351, 14845352, 14845353, 14845354, 14845355, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15711361, 15711362, 15711363, 15712165, 15711365, 15711366, - 15711367, 15711368, 15711369, 15711370, 15711371, 15711372, 15711373, 15711374, 15711375, 15711376, 15711377, 15711378, 15711379, 15711380, 15711381, - 15711382, 15711383, 15711384, 15711385, 15711386, 15711387, 15711388, 15711389, 15711390, 15711391, 15711392, 15711393, 15711394, 15711395, 15711396, - 15711397, 15711398, 15711399, 15711400, 15711401, 15711402, 15711403, 15711404, 15711405, 15711406, 15711407, 15711408, 15711409, 15711410, 15711411, - 15711412, 15711413, 15711414, 15711415, 15711416, 15711417, 15711418, 15711419, 15711420, 15711421, 15711422, 15711423, 15711616, 15711617, 15711618, - 15711619, 15711620, 15711621, 15711622, 15711623, 15711624, 15711625, 15711626, 15711627, 15711628, 15711629, 15711630, 15711631, 15711632, 15711633, - 15711634, 15711635, 15711636, 15711637, 15711638, 15711639, 15711640, 15711641, 15711642, 15711643, 15711644, 15711645, 15712163, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14909825, 14909826, 14909827, 14909828, 14909829, - 14909830, 14909831, 14909832, 14909833, 14909834, 14909835, 14909836, 14909837, 14909838, 14909839, 14909840, 14909841, 14909842, 14909843, 14909844, - 14909845, 14909846, 14909847, 14909848, 14909849, 14909850, 14909851, 14909852, 14909853, 14909854, 14909855, 14909856, 14909857, 14909858, 14909859, - 14909860, 14909861, 14909862, 14909863, 14909864, 14909865, 14909866, 14909867, 14909868, 14909869, 14909870, 14909871, 14909872, 14909873, 14909874, - 14909875, 14909876, 14909877, 14909878, 14909879, 14909880, 14909881, 14909882, 14909883, 14909884, 14909885, 14909886, 14909887, 14910080, 14910081, - 14910082, 14910083, 14910084, 14910085, 14910086, 14910087, 14910088, 14910089, 14910090, 14910091, 14910092, 14910093, 14910094, 14910095, 14910096, - 14910097, 14910098, 14910099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14910113, 14910114, 14910115, 14910116, - 14910117, 14910118, 14910119, 14910120, 14910121, 14910122, 14910123, 14910124, 14910125, 14910126, 14910127, 14910128, 14910129, 14910130, 14910131, - 14910132, 14910133, 14910134, 14910135, 14910136, 14910137, 14910138, 14910139, 14910140, 14910141, 14910142, 14910143, 14910336, 14910337, 14910338, - 14910339, 14910340, 14910341, 14910342, 14910343, 14910344, 14910345, 14910346, 14910347, 14910348, 14910349, 14910350, 14910351, 14910352, 14910353, - 14910354, 14910355, 14910356, 14910357, 14910358, 14910359, 14910360, 14910361, 14910362, 14910363, 14910364, 14910365, 14910366, 14910367, 14910368, - 14910369, 14910370, 14910371, 14910372, 14910373, 14910374, 14910375, 14910376, 14910377, 14910378, 14910379, 14910380, 14910381, 14910382, 14910383, - 14910384, 14910385, 14910386, 14910387, 14910388, 14910389, 14910390, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52881, 52882, 52883, - 52884, 52885, 52886, 52887, 52888, 52889, 52890, 52891, 52892, 52893, 52894, 52895, 52896, 52897, 52899, - 52900, 52901, 52902, 52903, 52904, 52905, 0, 0, 0, 0, 0, 0, 0, 0, 52913, - 52914, 52915, 52916, 52917, 52918, 52919, 52920, 52921, 52922, 52923, 52924, 52925, 52926, 52927, 53120, - 53121, 53123, 53124, 53125, 53126, 53127, 53128, 53129, 0, 0, 0, 0, 0, 0, 0, - 15710389, 15710390, 15710393, 15710394, 15710399, 15710592, 15710397, 15710398, 15710593, 15710594, 15710595, 15710596, 0, 0, 15710395, - 15710396, 15710391, 15710392, 15710385, 0, 15710387, 15710388, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53392, 53393, - 53394, 53395, 53396, 53397, 53377, 53398, 53399, 53400, 53401, 53402, 53403, 53404, 53405, 53406, 53407, - 53408, 53409, 53410, 53411, 53412, 53413, 53414, 53415, 53416, 53417, 53418, 53419, 53420, 53421, 53422, - 53423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 53424, 53425, 53426, 53427, 53428, 53429, 53649, 53430, 53431, 53432, 53433, 53434, 53435, 53436, - 53437, 53438, 53439, 53632, 53633, 53634, 53635, 53636, 53637, 53638, 53639, 53640, 53641, 53642, 53643, - 53644, 53645, 53646, 53647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 52106, 52107, 52121, 14844051, 14844053, 14844069, 14844085, 14845061, - 14845065, 14845590, 14845591, 14845592, 14845593, 14846101, 14846111, 14846115, 14846354, 14846374, 14846375, 14846655, 14849424, 14849425, 14849426, - 14849427, 14849428, 14849429, 14849430, 14849431, 14849432, 14849433, 14849434, 14849435, 14849436, 14849437, 14849438, 14849439, 14849440, 14849441, - 14849442, 14849443, 14849444, 14849445, 14849446, 14849447, 14849448, 14849449, 14849450, 14849451, 14849452, 14849453, 14849454, 14849455, 14849456, - 14849457, 14849458, 14849459, 14849665, 14849666, 14849667, 14849668, 14849669, 14849670, 14849671, 0, 14849672, 14849673, 14849674, 14849675, - 14849676, 14849677, 14849678, 14849679, 14849683, 14849684, 14849685, 14849724, 14849725, 14849954, 14849955, 14849956, 14849957, 14850185, 14846613, - 14909586, 14909597, 14909598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50305, - 50081, 51086, 50080, 50323, 50089, 50331, 50088, 50347, 50093, 51088, 50092, 50573, 50099, 51090, 50098, - 50603, 50106, 51092, 50105, 51094, 51096, 51098, 51100, 50108, 50090, 51601, 0, 50564, 50568, 0, - 51617, 0, 0, 0, 0, 14910597, 14910598, 14910599, 14910600, 14910601, 14910602, 14910603, 14910604, 14910605, 14910606, - 14910607, 14910608, 14910609, 14910610, 14910611, 14910612, 14910613, 14910614, 14910615, 14910616, 14910617, 14910618, 14910619, 14910620, 14910621, - 14910622, 14910623, 14910624, 14910625, 14910626, 14910627, 14910628, 14910629, 14910630, 14910631, 14910632, 14910633, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14909601, 14909602, 14909603, 14909604, 14909605, 14909606, 14909607, - 14909608, 14909609, 14912163, 14913166, 14913167, 14913180, 14913181, 14913182, 14913185, 14913412, 14913422, 14913425, 14913426, 14913429, 15710384, - 15712162, 15712164, 0, 14845089, 14911665, 0, 14844048, 0, 0, 0, 14910396, 14910107, 14910108, 14910397, 14910398, - 14909574, 14910109, 14910110, 15710601, 15710602, 15710603, 15710604, 15710605, 15710606, 15710607, 15710608, 15710609, 15710610, 15710612, 15710613, - 15710614, 15710615, 15710617, 15710618, 15710619, 15710620, 15710621, 15710622, 15710623, 15710624, 15710625, 0, 15710626, 15710627, 15710628, - 15710629, 15710630, 15710632, 15710633, 15710634, 15710635, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 14909575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14849152, 14849153, 14849154, 14849155, 14849156, 14849157, 14849158, 14849159, 14849160, 14849161, 14849162, 14849163, - 14849164, 14849165, 14849166, 14849167, 14849168, 14849169, 14849170, 14849171, 14849172, 14849173, 14849174, 14849175, 14849176, 14849177, 14849178, - 14849179, 14849180, 14849181, 14849182, 14849183, 14849184, 14849185, 14849186, 14849187, 14849188, 14849189, 14849190, 14849191, 14849192, 14849193, - 14849194, 14849195, 14849196, 14849197, 14849198, 14849199, 14849200, 14849201, 14849202, 14849203, 14849204, 14849205, 14849206, 14849207, 14849208, - 14849209, 14849210, 14849211, 14849212, 14849213, 14849214, 14849215, 14849408, 14849409, 14849410, 14849411, 14849412, 14849413, 14849414, 14849415, - 14849416, 14849417, 14849418, 14849419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15174556, 15174557, 15174559, 15174562, 15174563, 15174564, - 15174565, 15174566, 15174567, 15174570, 15174571, 15174581, 15174582, 15174585, 15174589, 15174590, 15174591, 15174784, 15174786, 15174788, 15174789, - 15174790, 15174791, 15174792, 15174793, 15174795, 15174796, 15174797, 15174799, 15174800, 15174801, 15174802, 15174804, 15174808, 15174809, 15174810, - 15174815, 15174816, 15174819, 15174820, 15174822, 15174823, 15174824, 15174829, 15174831, 15174832, 15174834, 15174835, 15174837, 15174838, 15174842, - 15174843, 15174844, 15174845, 15175040, 15175041, 15175042, 15175043, 15175044, 15175045, 15175046, 15175047, 15175048, 0, 15175049, 15175050, - 15175051, 15175052, 15175054, 15175055, 15175057, 15175059, 15175060, 15175061, 15175062, 15175064, 15175065, 15175066, 15175067, 15175068, 15175069, - 15175070, 15175071, 15175073, 15175074, 15175075, 15175076, 15175077, 15175078, 15175079, 15175080, 15175081, 15175082, 15175083, 15175086, 15175088, - 15175089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15175090, 15175091, 15175092, 15175093, 15175094, - 15175095, 15175096, 15175097, 15175098, 15175099, 15175100, 15175101, 15175103, 15175296, 15175297, 15175298, 15175299, 15175301, 15175302, 15175304, - 15175306, 15175308, 15175309, 15175311, 15175312, 15175314, 15175315, 15175316, 15175317, 15175319, 15175320, 15175321, 15175322, 15175324, 15175325, - 15175326, 15175328, 15175329, 15175331, 15175332, 15175333, 15175334, 15175335, 15175336, 15175338, 15175340, 15175341, 15175345, 15175348, 15175349, - 15175350, 15175352, 15175353, 15175356, 15175357, 15175358, 15175359, 15175553, 15175555, 15175556, 15175557, 15175558, 15175559, 0, 15175563, - 15175564, 15175566, 15175570, 15175571, 15175572, 15175573, 15175574, 15175575, 15175576, 15175578, 15175579, 15175580, 15175581, 15175583, 15175585, - 15175586, 15175587, 15175588, 15175590, 15175592, 15175594, 15175595, 15175596, 15175598, 15175599, 15175600, 15175601, 15175603, 15175604, 15175605, - 15175606, 15175607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15175608, 15175609, 15175610, 15175611, - 15175612, 15175613, 15175614, 15175615, 15175808, 15175809, 15175810, 15175812, 15175815, 15175816, 15175819, 15175820, 15175821, 15175822, 15175825, - 15175826, 15175827, 15175828, 15175829, 15175830, 15175831, 15175832, 15175833, 15175836, 15175837, 15175838, 15175839, 15175840, 15175841, 15175843, - 15175844, 15175847, 15175849, 15175851, 15175853, 15175855, 15175857, 15175858, 15175863, 15175864, 15175865, 15175866, 15175867, 15175869, 15175870, - 15175871, 15176064, 15176066, 15176067, 15176068, 15176069, 15176070, 15176071, 15176072, 15176073, 15176074, 15176075, 15176076, 15176077, 0, - 15176078, 15176079, 15176080, 15176081, 15176082, 15176083, 15176084, 15176086, 15176088, 15176093, 15176096, 15176097, 15176098, 15176099, 15176100, - 15176101, 15176102, 15176103, 15176104, 15176105, 15176106, 15176107, 15176108, 15176110, 15176111, 15176113, 15176114, 15176115, 15176116, 15176117, - 15176120, 15176121, 15176122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15176123, 15176124, 15176125, - 15176127, 15176322, 15176324, 15176325, 15176326, 15176328, 15176329, 15176330, 15176332, 15176333, 15176335, 15176337, 15176338, 15176339, 15176340, - 15176341, 15176342, 15176343, 15176344, 15176345, 15176346, 15176347, 15176349, 15176351, 15176352, 15176353, 15176354, 15176355, 15176356, 15176357, - 15176358, 15176362, 15176363, 15176364, 15176365, 15176366, 15176367, 15176368, 15176369, 15176370, 15176371, 15176372, 15176373, 15176374, 15176375, - 15176376, 15176377, 15176379, 15176380, 15176381, 15176382, 15176383, 15176576, 15176577, 15176578, 15176579, 15176580, 15176581, 15176582, 15176583, - 0, 15176584, 15176585, 15176586, 15176587, 15176588, 15176589, 15176590, 15176591, 15176592, 15176593, 15176595, 15176596, 15176597, 15176598, - 15176599, 15176600, 15176601, 15176602, 15176603, 15176605, 15176607, 15176609, 15176613, 15176615, 15176616, 15176617, 15176618, 15176619, 15176620, - 15176621, 15176624, 15176625, 15176626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15176627, 15176629, - 15176632, 15176633, 15176634, 15176635, 15176636, 15176637, 15176638, 15176832, 15176833, 15176834, 15176835, 15176837, 15176838, 15176839, 15176840, - 15176841, 15176842, 15176843, 15176844, 15176846, 15176848, 15176850, 15176852, 15176853, 15176854, 15176855, 15176859, 15176861, 15176862, 15176864, - 15176865, 15176866, 15176867, 15176868, 15176870, 15176871, 15176874, 15176878, 15176884, 15176886, 15176889, 15176892, 15176893, 15176895, 15177089, - 15177090, 15177091, 15177092, 15177094, 15177095, 15177097, 15177098, 15177101, 15177104, 15177105, 15177106, 15177107, 15177109, 15177110, 15177111, - 15177112, 0, 15177117, 15177118, 15177119, 15177120, 15177121, 15177122, 15177123, 15177124, 15177127, 15177128, 15177129, 15177131, 15177132, - 15177133, 15177134, 15177135, 15177136, 15177137, 15177139, 15177141, 15177142, 15177143, 15177146, 15177147, 15177148, 15177149, 15177150, 15177344, - 15177345, 15177346, 15177348, 15177349, 15177351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15177352, - 15177353, 15177354, 15177356, 15177357, 15177358, 15177360, 15177363, 15177365, 15177368, 15177371, 15177372, 15177374, 15177378, 15177382, 15177383, - 15177384, 15177385, 15177386, 15177389, 15177398, 15177399, 15177402, 15177403, 15177407, 15177600, 15177601, 15177606, 15177611, 15177612, 15177614, - 15177615, 15177616, 15177617, 15177619, 15177623, 15177625, 15177626, 15177628, 15177629, 15177631, 15177632, 15177633, 15177637, 15177641, 15177644, - 15177645, 15177646, 15177647, 15177650, 15177651, 15177653, 15177654, 15177655, 15177656, 15177658, 15177659, 15177661, 15177662, 15177858, 15177860, - 15177862, 15177863, 0, 15177864, 15177865, 15177867, 15177869, 15177870, 15177871, 15177873, 15177874, 15177875, 15177876, 15177878, 15177882, - 15177884, 15177885, 15177886, 15177889, 15177891, 15177895, 15177896, 15177900, 15177902, 15177903, 15177905, 15177906, 15177910, 15177911, 15177913, - 15177914, 15177915, 15177917, 15178113, 15178114, 15178116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15178117, 15178118, 15178119, 15178120, 15178121, 15178122, 15178123, 15178126, 15178127, 15178128, 15178129, 15178130, 15178131, 15178133, 15178135, - 15178136, 15178137, 15178138, 15178139, 15178141, 15178143, 15178144, 15178145, 15178146, 15178148, 15178149, 15178150, 15178151, 15178152, 15178153, - 15178154, 15178156, 15178157, 15178158, 15178160, 15178161, 15178162, 15178163, 15178164, 15178165, 15178166, 15178167, 15178169, 15178170, 15178172, - 15178175, 15178368, 15178369, 15178371, 15178373, 15178377, 15178378, 15178380, 15178381, 15178383, 15178384, 15178386, 15178388, 15178389, 15178391, - 15178392, 15178394, 15178395, 0, 15178396, 15178397, 15178398, 15178399, 15178400, 15178401, 15178402, 15178403, 15178405, 15178406, 15178407, - 15178408, 15178409, 15178410, 15178411, 15178412, 15178413, 15178415, 15178416, 15178419, 15178421, 15178422, 15178423, 15178424, 15178425, 15178426, - 15178427, 15178428, 15178429, 15178430, 15178624, 15178625, 15178627, 15046026, 15308991, 15048579, 15109288, 15045518, 15045769, 15045504, 15178385, - 15178124, 15242428, 15179694, 15239614, 15180429, 15173809, 15309464, 15310477, 15118504, 15052425, 14991290, 15109257, 15112855, 15053496, 15238074, - 15114632, 15237806, 15112322, 15178638, 15042489, 15111574, 15173292, 15187889, 15245956, 15041202, 15050149, 15107978, 15122099, 15239853, 15109516, - 15108498, 15044525, 15044775, 15182982, 15041963, 15177380, 15054772, 15109012, 15251339, 15310262, 15108746, 15237273, 15048093, 15310008, 15187362, - 15173816, 15178173, 15114127, 15178174, 15110534, 14990768, 15250597, 15109020, 15181975, 15111825, 15175597, 15110316, 15108531, 15239340, 15311489, - 15113663, 15174024, 15108526, 15109004, 14990516, 15176611, 15043978, 15043230, 15186826, 15303334, 15055022, 15114886, 15115932, 15238784, 15186833, - 15115154, 15180677, 15243916, 15308177, 15041165, 15249572, 15240094, 15238046, 15043717, 15246482, 15042981, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15178628, 15178631, 15178633, 15178635, 15178636, 15178643, 15178645, 15178649, 15178650, 15178652, 15178653, 15178654, 15178656, 15178657, - 15178658, 15178659, 15178660, 15178662, 15178663, 15178664, 15178665, 15178666, 15178667, 15178668, 15178669, 15178672, 15178675, 15178677, 15178678, - 15178679, 15178682, 15178683, 15178685, 15178687, 15178880, 15178882, 15178883, 15178885, 15178886, 15178890, 15178892, 15178894, 15178895, 15178896, - 15178897, 15178898, 15178899, 15178900, 15178901, 15178902, 15178903, 15178904, 15178907, 15178908, 15178909, 15178910, 15178913, 15178915, 15178916, - 15178917, 15178919, 15178922, 15178923, 0, 15178924, 15178926, 15178928, 15178929, 15178930, 15178931, 15178932, 15178937, 15178939, 15178941, - 15178942, 15178943, 15179138, 15179140, 15179141, 15179142, 15179144, 15179145, 15179146, 15179147, 15179148, 15179149, 15179150, 15179151, 15179154, - 15179155, 15179156, 15179157, 15179158, 15179159, 15179160, 15179161, 15179164, 15242884, 15309753, 14991261, 15048865, 15312305, 15052445, 15108785, - 15108773, 15112884, 15249849, 15315597, 15173766, 15113647, 15180433, 15106738, 15043985, 15043735, 15253128, 15238028, 15250589, 15307425, 15040653, - 15174536, 15049863, 15106987, 15172761, 15245995, 15050132, 15240111, 15113388, 15183016, 15053993, 15186871, 15176877, 15119285, 15251878, 15253432, - 15302844, 15318203, 15118228, 15303833, 15182996, 15056316, 15180455, 15242134, 15242429, 15118229, 15118233, 15118230, 15054977, 15055495, 15177657, - 15308717, 15111581, 15056010, 15056773, 15253151, 15049601, 15239042, 15303103, 15309211, 15310509, 15253177, 15187094, 15250604, 15108481, 14991039, - 15044504, 15043998, 15253160, 15253161, 15253163, 15303053, 15114375, 15056298, 15238808, 15245736, 15315862, 15107723, 15042731, 15177898, 15056300, - 15111820, 15122322, 15121320, 15052478, 15110536, 15041973, 15042224, 15114116, 14989465, 15181705, 15312316, 15172275, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15179165, 15179166, 15179167, 15179168, 15179172, 15179175, 15179177, 15179178, 15179181, 15179182, 15179183, 15179184, 15179185, - 15179186, 15179187, 15179188, 15179189, 15179190, 15179191, 15179192, 15179194, 15179195, 15179196, 15179393, 15179394, 15179395, 15179398, 15179399, - 15179400, 15179401, 15179402, 15179403, 15179407, 15179408, 15179411, 15179412, 15179413, 15179414, 15179415, 15179416, 15179417, 15179418, 15179419, - 15179420, 15179421, 15179422, 15179425, 15179427, 15179428, 15179430, 15179432, 15179435, 15179437, 15179438, 15179439, 15179441, 15179442, 15179444, - 15179446, 15179447, 15179448, 15179449, 15179450, 0, 15179452, 15179454, 15179648, 15179649, 15179650, 15179651, 15179652, 15179653, 15179654, - 15179655, 15179656, 15179657, 15179658, 15179659, 15179660, 15179662, 15179663, 15179664, 15179665, 15179666, 15179667, 15179668, 15179669, 15179670, - 15179672, 15179673, 15179674, 15179677, 15179678, 15179679, 15179680, 15179681, 15179684, 15177605, 15055286, 15175355, 15241120, 15110829, 15109032, - 15307445, 15119266, 15043994, 15043459, 15110287, 15307650, 15183508, 14990511, 15055003, 15239350, 15238294, 15238794, 15120548, 15119242, 15313331, - 15109525, 15043996, 15045562, 15245733, 15048608, 14989453, 15054979, 15117733, 15184063, 15303592, 15106198, 15111078, 15174812, 15246209, 15113616, - 15108493, 15250594, 15179180, 15251625, 15304583, 15056297, 15241116, 15242401, 15312016, 15044482, 15243925, 15117963, 15106989, 15106984, 15172031, - 15240077, 15239345, 14990227, 15119015, 15243151, 15111053, 15184793, 15116221, 15113145, 15240585, 15044245, 15183254, 14991015, 15042188, 15119755, - 15053186, 15251885, 15110034, 15044489, 15240364, 15240374, 15114149, 15180468, 15110333, 15052703, 15053460, 15054766, 15249319, 15108998, 15114164, - 15249850, 15110272, 15109818, 15244681, 15312523, 15249559, 15187104, 15307698, 14989991, 15308944, 15311524, 15112332, 15174806, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15179686, 15179688, 15179690, 15179695, 15179696, 15179697, 15179698, 15179700, 15179701, 15179703, 15179705, 15179706, - 15179707, 15179708, 15179907, 15179908, 15179909, 15179910, 15179911, 15179912, 15179914, 15179915, 15179918, 15179919, 15179920, 15179923, 15179925, - 15179929, 15179931, 15179934, 15179936, 15179937, 15179938, 15179940, 15179944, 15179946, 15179947, 15179950, 15179951, 15179953, 15179954, 15179955, - 15179957, 15179958, 15179965, 15179967, 15180161, 15180162, 15180163, 15180164, 15180166, 15180168, 15180169, 15180170, 15180171, 15180173, 15180175, - 15180177, 15180179, 15180180, 15180184, 15180185, 15180186, 0, 15180187, 15180188, 15180190, 15180191, 15180192, 15180193, 15180194, 15180195, - 15180196, 15180197, 15180198, 15180199, 15180200, 15180201, 15180207, 15180208, 15180209, 15180210, 15180211, 15180212, 15180213, 15180214, 15180216, - 15180217, 15180218, 15180219, 15180221, 15180222, 15180223, 15180416, 15180417, 15180418, 15180419, 15047866, 15052957, 15055032, 15308223, 15040959, - 15237792, 15044226, 15111582, 15177093, 15045809, 15040673, 15251077, 15108740, 15307422, 15113373, 15046834, 15121838, 15054754, 15044789, 15172242, - 15252902, 15108527, 15110820, 15109795, 15056315, 15122056, 15303604, 15239075, 15253168, 15052952, 15112616, 15056817, 15118985, 15309192, 15251073, - 15245740, 15110801, 15181744, 15048590, 15116697, 15108240, 15045000, 14989720, 15181963, 15106985, 15122052, 15249306, 15108543, 15302814, 15313547, - 15181732, 15044739, 15177652, 15109249, 15043737, 15118752, 15253407, 15056027, 15313328, 15237307, 15318463, 14990984, 15052986, 15250852, 15187845, - 15111845, 15172285, 15041925, 15042226, 15243691, 15053959, 15052448, 15108797, 15304108, 15177140, 15251596, 15181984, 15107201, 15183289, 14990215, - 15186872, 15179397, 14989457, 15239085, 15042717, 15042490, 15116721, 15044264, 15252103, 15307908, 15309711, 15121281, 15309220, 15115674, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15180420, 15180421, 15180422, 15180424, 15180426, 15180427, 15180431, 15180432, 15180434, 15180436, 15180437, - 15180438, 15180441, 15180445, 15180446, 15180448, 15180450, 15180452, 15180454, 15180456, 15180457, 15180458, 15180459, 15180460, 15180461, 15180462, - 15180463, 15180469, 15180470, 15180471, 15180472, 15180474, 15180475, 15180476, 15180477, 15180479, 15180672, 15180674, 15180675, 15180676, 15180678, - 15180679, 15180680, 15180684, 15180685, 15180686, 15180687, 15180689, 15180690, 15180691, 15180694, 15180695, 15180696, 15180698, 15180699, 15180700, - 15180701, 15180702, 15180703, 15180704, 15180705, 15180706, 15180707, 0, 15180708, 15180709, 15180710, 15180711, 15180713, 15180714, 15180715, - 15180717, 15180718, 15180719, 15180720, 15180721, 15180723, 15180725, 15180726, 15180728, 15180729, 15180731, 15180732, 15180733, 15180734, 15180735, - 15180928, 15180930, 15180931, 15180932, 15180934, 15180935, 15180936, 15180937, 15180938, 15180939, 15180940, 15180160, 15041192, 15179671, 15110288, - 15247270, 15049860, 15110051, 15054749, 15182271, 15115453, 14990496, 15239353, 15046296, 14989490, 15177390, 15182487, 15055266, 15055498, 15308719, - 15042715, 15044793, 15172234, 15109558, 15307940, 15048322, 15112357, 15115455, 15304327, 15045767, 15120307, 15186607, 15245474, 15108275, 15186864, - 15177397, 15240360, 15180673, 15309708, 15253150, 15107464, 15176631, 15249293, 15117732, 15042746, 15250832, 15117473, 15237546, 15241649, 15047601, - 15043718, 14990222, 14989467, 15042449, 15184535, 15304331, 15184007, 14991235, 15251903, 15183777, 15182492, 15110567, 15053972, 15041196, 15238278, - 15177857, 15184569, 15120300, 15187872, 15113617, 15052184, 15052728, 15180683, 15110830, 15110291, 15109802, 15109291, 15307929, 15110317, 15253182, - 15183252, 15177897, 15108499, 15049895, 15044998, 15117753, 15041187, 15108276, 15055014, 15117958, 14990243, 15250615, 15245963, 15056517, 15302830, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15180941, 15180942, 15180943, 15180944, 15180945, 15180946, 15180948, 15180949, 15180950, 15180951, - 15180952, 15180953, 15180954, 15180955, 15180956, 15180957, 15180959, 15180960, 15180961, 15180962, 15180963, 15180965, 15180966, 15180967, 15180968, - 15180969, 15180970, 15180971, 15180972, 15180973, 15180974, 15180975, 15180976, 15180977, 15180978, 15180979, 15180981, 15180982, 15180983, 15180984, - 15180985, 15180989, 15180991, 15181186, 15181187, 15181188, 15181189, 15181191, 15181194, 15181195, 15181196, 15181197, 15181198, 15181199, 15181200, - 15181201, 15181202, 15181204, 15181205, 15181208, 15181209, 15181217, 15181219, 0, 15181220, 15181222, 15181225, 15181226, 15181227, 15181228, - 15181230, 15181232, 15181233, 15181234, 15181235, 15181236, 15181237, 15181238, 15181241, 15181243, 15181244, 15181245, 15181246, 15181247, 15181442, - 15181443, 15181446, 15181447, 15181448, 15181449, 15181451, 15181452, 15181453, 15181454, 15181456, 15181457, 15181458, 15106208, 15237309, 15108997, - 14989497, 15043989, 15303608, 15109816, 15238022, 15112102, 15118510, 14990726, 15106990, 15120289, 15249310, 15056057, 15244171, 15056275, 15109281, - 15041946, 15240609, 15114659, 15042688, 15109539, 15251848, 15040658, 15053467, 15181239, 15052732, 15042736, 15182011, 15106748, 15303059, 15178647, - 15056567, 15056535, 15178372, 15251884, 15172015, 15178171, 15183241, 15179434, 15042483, 15303315, 15048868, 14990734, 15121332, 15253418, 15111564, - 15183003, 15174532, 15120036, 15187871, 15051681, 15108789, 15055509, 15047856, 15241858, 15183020, 15055005, 15056031, 15302802, 15187092, 15311520, - 15109762, 15121287, 15180440, 15172281, 15041976, 15310235, 15048363, 15176885, 14990723, 15176888, 15055511, 15106982, 15050144, 15120256, 15118015, - 15180425, 15044540, 15309717, 15042443, 15042689, 15109769, 15044746, 15307411, 15249539, 15251340, 15173817, 15180447, 15244726, 15253421, 15249549, - 15044512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15181459, 15181460, 15181461, 15181462, 15181463, 15181464, 15181465, 15181467, 15181468, - 15181469, 15181470, 15181471, 15181472, 15181473, 15181474, 15181475, 15181476, 15181477, 15181478, 15181480, 15181481, 15181482, 15181483, 15181484, - 15181485, 15181486, 15181487, 15181488, 15181489, 15181490, 15181492, 15181493, 15181494, 15181495, 15181496, 15181500, 15181503, 15181698, 15181700, - 15181701, 15181703, 15181704, 15181706, 15181708, 15181710, 15181711, 15181712, 15181715, 15181716, 15181718, 15181719, 15181721, 15181722, 15181723, - 15181724, 15181725, 15181726, 15181728, 15181729, 15181730, 15181733, 15181736, 15181738, 0, 15181740, 15181742, 15181745, 15181746, 15181747, - 15181748, 15181749, 15181750, 15181751, 15181753, 15181754, 15181756, 15181758, 15181759, 15181953, 15181956, 15181957, 15181959, 15181960, 15181961, - 15181962, 15181964, 15181967, 15181968, 15181969, 15181970, 15181971, 15181973, 15181974, 15181976, 15181977, 15181979, 15181980, 14989441, 15178671, - 15044526, 15307401, 15311286, 15318158, 15307949, 15052442, 15249058, 14989474, 14989468, 15042220, 15241635, 15107970, 15043240, 15114379, 14990999, - 15106475, 15042235, 15119518, 15041948, 15108758, 15111831, 15309217, 15249798, 15302807, 15177624, 15303613, 15179171, 15118226, 15174282, 15174572, - 15249339, 15048885, 15179193, 15250828, 15113628, 15308160, 15237786, 15055526, 15120545, 15050386, 15182767, 15179693, 15307963, 15118005, 15111853, - 15187086, 15048838, 15041937, 15308959, 15052729, 15049385, 15044776, 15251890, 15111590, 15311295, 15047588, 15307421, 15178686, 15303041, 15109767, - 15045510, 15049882, 15049914, 15048347, 15252146, 15113397, 15251386, 15239349, 15042945, 15106992, 15048853, 15244222, 15053736, 15317381, 14991236, - 15311517, 15249081, 15050917, 15106486, 15044228, 15108540, 15303055, 15303810, 15312319, 15106473, 15237260, 15041727, 15237299, 15052948, 15312309, - 15119537, 14989964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15181981, 15181983, 15181985, 15181986, 15181988, 15181989, 15181990, 15181991, - 15181992, 15181993, 15181994, 15181995, 15181996, 15181997, 15181998, 15181999, 15182000, 15182001, 15182002, 15182004, 15182005, 15182006, 15182008, - 15182010, 15182014, 15182208, 15182209, 15182210, 15182211, 15182212, 15182213, 15182215, 15182216, 15182217, 15182218, 15182219, 15182220, 15182221, - 15182222, 15182223, 15182224, 15182226, 15182227, 15182228, 15182229, 15182230, 15182232, 15182233, 15182234, 15182235, 15182236, 15182237, 15182238, - 15182239, 15182240, 15182241, 15182242, 15182243, 15182244, 15182245, 15182246, 15182247, 15182248, 0, 15182249, 15182250, 15182251, 15182252, - 15182253, 15182254, 15182255, 15182257, 15182258, 15182259, 15182261, 15182267, 15182268, 15182269, 15182270, 15182466, 15182469, 15182471, 15182473, - 15182474, 15182475, 15182476, 15182478, 15182479, 15182480, 15182483, 15182484, 15182489, 15182490, 15182491, 15182494, 15182497, 15182498, 15250608, - 15044497, 15187354, 15183247, 14990480, 14989711, 15308928, 15119253, 15175568, 15243177, 15054982, 15177130, 15187899, 15116426, 15179710, 15307410, - 15186305, 15042465, 15172518, 15044493, 15253396, 15240323, 15250601, 15174319, 15312301, 15119259, 15048074, 15239859, 15111865, 15237802, 15108287, - 15308978, 15050408, 14990271, 15249087, 15186618, 15111358, 15241138, 15310238, 15046049, 15311774, 15237797, 15043754, 15249341, 15044768, 15237818, - 15055519, 15119032, 15250617, 15239852, 15304090, 15044777, 15118491, 15042694, 15186615, 15048095, 15172762, 15118782, 15184521, 15050123, 14990269, - 15056831, 15107236, 15184554, 14989488, 15052929, 15113899, 15244418, 15053744, 15307915, 15311758, 15177391, 15172541, 15302818, 15042223, 15187101, - 15249085, 15050121, 15042468, 14990747, 15044774, 15049899, 15111607, 15237796, 15052213, 15108534, 15108994, 15253136, 15055237, 15118495, 15183014, - 14990479, 14991256, 15113357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15182499, 15182500, 15182503, 15182505, 15182506, 15182507, 15182510, - 15182511, 15182512, 15182513, 15182514, 15182516, 15182517, 15182518, 15182519, 15182520, 15182521, 15182522, 15182523, 15182524, 15182525, 15182526, - 15182720, 15182721, 15182722, 15182723, 15182724, 15182725, 15182726, 15182727, 15182728, 15182729, 15182730, 15182732, 15182733, 15182734, 15182735, - 15182736, 15182737, 15182738, 15182739, 15182740, 15182741, 15182743, 15182744, 15182746, 15182747, 15182748, 15182749, 15182753, 15182754, 15182756, - 15182759, 15182760, 15182761, 15182762, 15182763, 15182764, 15182766, 15182768, 15182769, 15182770, 15182771, 0, 15182772, 15182773, 15182774, - 15182775, 15182776, 15182779, 15182780, 15182782, 15182976, 15182977, 15182978, 15182981, 15182983, 15182985, 15182988, 15182989, 15182990, 15182992, - 15182994, 15182995, 15182998, 15182999, 15183000, 15183002, 15183004, 15183005, 15183007, 15183009, 15183010, 15183011, 15183015, 15183017, 15183021, - 15119790, 15120042, 15181455, 15246001, 15056023, 15176875, 15108762, 15253125, 14991279, 15304604, 15111847, 15238319, 15238545, 15055516, 15238544, - 15250868, 15042991, 15246982, 15250827, 15049869, 15041157, 14990232, 15308956, 15173814, 15238585, 15250591, 15052684, 15249059, 15309188, 15050375, - 15187098, 15045264, 15047094, 15046798, 15249317, 15111353, 15115906, 15307417, 15178646, 15121033, 15055282, 15176856, 15113606, 15114129, 15182783, - 15237789, 15250870, 15107231, 15181702, 15111586, 15250851, 15042184, 15042714, 15307426, 15187128, 15237787, 15186610, 15053463, 15120559, 15113632, - 15183769, 15178379, 15313816, 15238799, 15187604, 15184789, 15110302, 15308176, 15182015, 15045002, 15045541, 15117708, 15110273, 15108232, 15317181, - 15238067, 15177369, 15042994, 15310249, 15241627, 15114428, 15244196, 15308929, 15309460, 15307692, 14989482, 15044740, 15186841, 15114425, 15251359, - 15237269, 15113140, 15055514, 15187641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15183023, 15183024, 15183026, 15183028, 15183029, 15183030, - 15183031, 15183033, 15183035, 15183037, 15183039, 15183232, 15183233, 15183234, 15183235, 15183236, 15183238, 15183240, 15183242, 15183245, 15183246, - 15183251, 15183253, 15183255, 15183257, 15183260, 15183262, 15183263, 15183265, 15183267, 15183268, 15183269, 15183270, 15183271, 15183272, 15183273, - 15183274, 15183275, 15183276, 15183277, 15183279, 15183280, 15183283, 15183284, 15183286, 15183288, 15183290, 15183292, 15183293, 15183295, 15183489, - 15183490, 15183491, 15183492, 15183494, 15183495, 15183496, 15183497, 15183498, 15183499, 15183500, 15183502, 15183503, 0, 15183505, 15183506, - 15183507, 15183510, 15183512, 15183513, 15183514, 15183515, 15183518, 15183519, 15183520, 15183523, 15183524, 15183525, 15183534, 15183535, 15183536, - 15183538, 15183539, 15183541, 15183542, 15183543, 15183545, 15183546, 15183547, 15183548, 15183549, 15183550, 15183551, 15183744, 15183746, 15183747, - 15183748, 15048578, 15237311, 15114903, 15054757, 15111355, 15043231, 15106477, 15318682, 14991003, 15252140, 15041964, 15052459, 15056019, 15054761, - 15118750, 15109041, 15250593, 15041969, 15307433, 15043518, 15119007, 15240095, 15174551, 15048354, 15113860, 15250605, 15049887, 15253148, 15241095, - 15045269, 15183501, 14990512, 15119037, 15052196, 15050641, 15318163, 15044516, 15244170, 15313576, 15249591, 15237793, 15111557, 15311294, 15047610, - 15309703, 15042734, 15176604, 15042960, 15052705, 15109250, 15246466, 14989718, 15109008, 15106218, 15115194, 15041971, 15052440, 15042208, 15247234, - 15183521, 15312518, 15187344, 15106991, 15171980, 15250607, 15041929, 15055295, 15302811, 15176112, 15247236, 15047853, 15180165, 15056274, 15318687, - 15308730, 15252904, 15314108, 15249313, 15178168, 15114626, 15114140, 15251370, 15250613, 15042749, 15253130, 15121306, 15115149, 15307909, 15303597, - 15047613, 15113884, 15246265, 15253383, 15045512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15183749, 15183752, 15183753, 15183754, 15183755, - 15183757, 15183758, 15183759, 15183760, 15183762, 15183764, 15183765, 15183766, 15183767, 15183768, 15183771, 15183772, 15183774, 15183775, 15183776, - 15183778, 15183779, 15183780, 15183783, 15183784, 15183785, 15183787, 15183788, 15183789, 15183791, 15183792, 15183794, 15183795, 15183796, 15183797, - 15183798, 15183800, 15183801, 15183802, 15183803, 15183805, 15183807, 15184000, 15184001, 15184002, 15184003, 15184004, 15184005, 15184006, 15184008, - 15184009, 15184010, 15184013, 15184014, 15184016, 15184017, 15184018, 15184019, 15184020, 15184021, 15184023, 15184024, 15184025, 0, 15184026, - 15184027, 15184028, 15184029, 15184030, 15184032, 15184033, 15184034, 15184035, 15184036, 15184037, 15184040, 15184041, 15184043, 15184044, 15184045, - 15184046, 15184047, 15184048, 15184049, 15184050, 15184051, 15184052, 15184053, 15184054, 15184055, 15184057, 15184058, 15184059, 15184060, 15184061, - 15184062, 15184258, 15313592, 15052201, 15119799, 15118502, 14989989, 15052467, 15313543, 15304099, 15107752, 15303343, 15310761, 15044779, 15120053, - 15052690, 15042493, 15046282, 15187349, 15187888, 15110844, 15109517, 15112113, 15107774, 15106701, 15172746, 15118743, 15118729, 15049903, 15113645, - 15239338, 15049621, 15047310, 15249834, 15118251, 15303581, 15050173, 15237271, 15044535, 15119785, 15045045, 15046301, 15240631, 15241103, 15114424, - 15181502, 15045260, 14990741, 15044744, 15178642, 15250057, 15308930, 15119027, 15120056, 15250859, 15246480, 15317412, 15250618, 15046847, 15317905, - 15177621, 15056520, 15174560, 15106472, 15045564, 14989992, 15116458, 15245729, 15106450, 15252912, 15045508, 15172504, 15243705, 15317183, 15119530, - 15052431, 15056024, 15186594, 15046281, 14991023, 15174836, 15044796, 15044250, 15040665, 15044750, 15045052, 14989710, 15056829, 15176090, 15049654, - 15241643, 15238049, 15244724, 15174544, 15184778, 15120790, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15184259, 15184260, 15184261, 15184262, - 15184263, 15184264, 15184265, 15184266, 15184267, 15184268, 15184270, 15184271, 15184272, 15184273, 15184274, 15184275, 15184276, 15184277, 15184278, - 15184279, 15184280, 15184281, 15184282, 15184283, 15184284, 15184285, 15184286, 15184287, 15184288, 15184289, 15184290, 15184291, 15184292, 15184293, - 15184294, 15184295, 15184296, 15184297, 15184298, 15184299, 15184300, 15184301, 15184302, 15184303, 15184304, 15184305, 15184306, 15184309, 15184310, - 15184311, 15184312, 15184313, 15184314, 15184318, 15184319, 15184512, 15184513, 15184514, 15184515, 15184516, 15184517, 15184518, 15184519, 0, - 15184520, 15184522, 15184523, 15184524, 15184525, 15184526, 15184527, 15184528, 15184531, 15184532, 15184534, 15184537, 15184538, 15184539, 15184544, - 15184545, 15184547, 15184550, 15184551, 15184552, 15184553, 15184555, 15184556, 15184557, 15184559, 15184560, 15184564, 15184565, 15184566, 15184567, - 15184568, 15184570, 15184571, 15056039, 15243662, 15045804, 15108772, 14989970, 15119018, 15108279, 15239857, 15045527, 15043982, 15174846, 15121297, - 15176891, 15042706, 15043734, 15249309, 15116176, 15056522, 15106176, 15120302, 15048079, 15117474, 15175343, 15114643, 15253400, 15187091, 15109538, - 15106723, 15045796, 15177642, 15249826, 15172757, 15120035, 15052454, 15055291, 15240594, 15107468, 15317892, 15180730, 15244695, 15184039, 15178375, - 15042480, 15106998, 15173004, 15112579, 15055244, 15106445, 15249550, 15172016, 15109285, 15253129, 15056573, 15106466, 15244180, 15047582, 15118209, - 15106708, 15107495, 15043977, 15106976, 15112614, 15250623, 15181757, 14990490, 15172521, 15118727, 15249075, 15249330, 15186840, 15240612, 15112335, - 15051162, 15314306, 15119761, 15120311, 15249793, 15119547, 14990489, 15172011, 15240887, 15108246, 15106961, 15309965, 15250599, 15181240, 15042491, - 15047870, 15048634, 15113402, 15177144, 15182013, 15181743, 15183509, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15184575, 15184768, 15184770, - 15184771, 15184772, 15184774, 15184777, 15184779, 15184782, 15184783, 15184784, 15184785, 15184786, 15184787, 15184788, 15184792, 15184794, 15184795, - 15184797, 15184798, 15184801, 15184802, 15184803, 15184804, 15184805, 15184806, 15184807, 15184809, 15184810, 15184811, 15184812, 15184813, 15184814, - 15184816, 15184817, 15184818, 15184819, 15184820, 15184821, 15184822, 15184823, 15184825, 15184826, 15184828, 15184829, 15184830, 15184831, 15185024, - 15185025, 15185026, 15185027, 15185028, 15185029, 15185030, 15185031, 15185032, 15185033, 15185035, 15185036, 15185037, 15185038, 15185039, 15185040, - 0, 15185041, 15185042, 15185043, 15185044, 15185045, 15185046, 15185047, 15185048, 15185049, 15185050, 15185051, 15185052, 15185053, 15185054, - 15185055, 15185057, 15185059, 15185060, 15185061, 15185062, 15185064, 15185065, 15185066, 15185068, 15185069, 15185070, 15185072, 15185073, 15185074, - 15185075, 15185076, 15185077, 15185078, 15237772, 15312293, 15253433, 15122304, 15249061, 15317153, 15050668, 15186857, 15187081, 15044745, 15113857, - 15115160, 15253137, 15184269, 15309702, 15044490, 15106213, 15177406, 15118770, 15044019, 15051657, 15186599, 15109284, 15042464, 15238282, 15054769, - 15242143, 15108736, 15042176, 15052195, 14990478, 15181229, 15042946, 15106744, 15119758, 15052676, 15052674, 15249057, 15249072, 15112098, 15056780, - 15309189, 15050387, 15186855, 15186602, 15046793, 15113911, 15049913, 14990771, 15052470, 15043232, 15240602, 15311498, 15250622, 15176882, 15307454, - 15040903, 15182012, 14990263, 15113910, 15313342, 15051649, 15117756, 15178641, 15048090, 15052950, 15183034, 15308724, 15173006, 15041980, 15237801, - 15239600, 15050168, 15187076, 15240359, 15115136, 15114156, 15180465, 15180215, 15109027, 15109537, 15183488, 14991277, 15042986, 15042447, 15240592, - 15116187, 15305140, 15251381, 15250609, 15247233, 15307950, 15183533, 14990262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15185079, 15185080, - 15185081, 15185082, 15185083, 15185084, 15185085, 15185086, 15185087, 15185280, 15185281, 15185282, 15185283, 15185284, 15185285, 15185286, 15185287, - 15185288, 15185289, 15185290, 15185291, 15185292, 15185293, 15185294, 15185295, 15185296, 15185297, 15185298, 15185299, 15185300, 15185301, 15185302, - 15185303, 15185304, 15185305, 15185306, 15185307, 15185308, 15185309, 15185310, 15185311, 15185312, 15185313, 15185314, 15185315, 15185316, 15185317, - 15185318, 15185319, 15185320, 15185321, 15185322, 15185323, 15185324, 15185325, 15185327, 15185328, 15185329, 15185330, 15185331, 15185332, 15185333, - 15185334, 0, 15185336, 15185337, 15185338, 15185339, 15185340, 15185341, 15185342, 15185343, 15185536, 15185537, 15185538, 15185539, 15185540, - 15185541, 15185542, 15185543, 15185544, 15185545, 15185546, 15185547, 15185548, 15185549, 15185550, 15185551, 15185552, 15185553, 15185554, 15185555, - 15185556, 15185557, 15185558, 15185559, 15185560, 15040933, 15239344, 15042961, 15312303, 15120528, 15121029, 15120039, 15055802, 15041461, 15050652, - 15052934, 15119750, 15118751, 15177350, 15241867, 15114664, 15050134, 15249074, 15043744, 15304113, 15309197, 15242633, 15115410, 15180929, 15172774, - 15238070, 14989988, 15303562, 15119751, 15313540, 15050887, 15047356, 15110277, 15307696, 15179691, 14991013, 15238298, 15174561, 15247250, 15312314, - 15187124, 15186846, 15043007, 15111577, 15304117, 15252927, 15253123, 15044523, 15182486, 15110061, 15109797, 15178374, 15181752, 15245719, 15308982, - 15108266, 15043243, 15239810, 15114644, 15113648, 15109559, 15179179, 15182765, 15119489, 15186835, 15247267, 15050640, 15108242, 15243145, 15239845, - 15177100, 15040671, 14990219, 15177381, 15249323, 15053194, 15054782, 15183243, 15111844, 15304593, 14990218, 15119525, 15246751, 15185063, 15307942, - 14990213, 15249576, 15253403, 15310259, 15112587, 15181441, 15253393, 15172524, 15119800, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15185561, - 15185562, 15185563, 15185564, 15185565, 15185566, 15185567, 15185568, 15185569, 15185570, 15185571, 15185572, 15185573, 15185575, 15185576, 15185577, - 15185578, 15185579, 15185580, 15185581, 15185583, 15185584, 15185585, 15185586, 15185587, 15185588, 15185589, 15185590, 15185591, 15185592, 15185593, - 15185594, 15185595, 15185596, 15185597, 15185598, 15185599, 15185792, 15185793, 15185794, 15185795, 15185796, 15185797, 15185798, 15185799, 15185800, - 15185801, 15185802, 15185803, 15185804, 15185805, 15185806, 15185807, 15185808, 15185809, 15185810, 15185811, 15185812, 15185813, 15185814, 15185815, - 15185816, 15185817, 0, 15185818, 15185819, 15185820, 15185821, 15185822, 15185823, 15185824, 15185825, 15185826, 15185827, 15185828, 15185829, - 15185830, 15185831, 15185832, 15185833, 15185834, 15185835, 15185836, 15185837, 15185838, 15185839, 15185840, 15185841, 15185842, 15185843, 15185844, - 15185845, 15185846, 15185847, 15185848, 15185849, 15185850, 15052989, 15043250, 15240582, 15041954, 15240334, 15179163, 15112630, 15315640, 14989996, - 15106954, 15184574, 15184563, 15186831, 14989973, 15248806, 15112623, 15311496, 15310233, 15049347, 15111596, 15308188, 15056516, 15177609, 15310230, - 15182751, 15182750, 15042432, 15172271, 15182488, 15110058, 15182262, 15186592, 15175318, 15310765, 14989701, 15172024, 14989725, 15304082, 15044265, - 15111569, 15112103, 15239100, 15239301, 15045262, 15052977, 15177370, 15310496, 15109016, 15174553, 15177405, 15053189, 15313337, 15241098, 15053184, - 15045248, 15179689, 14989502, 15119022, 15237530, 15109010, 15109550, 15054760, 15041975, 15251357, 15251614, 15307951, 14991281, 15044517, 15106983, - 15172268, 15042983, 15109520, 15317379, 15050911, 15040678, 15178935, 15044023, 15186850, 15110789, 15111339, 15108745, 15109784, 15040660, 15173813, - 15247241, 15042227, 15249280, 15186845, 15048071, 15241100, 15307431, 15042203, 15044763, 15053755, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15185851, 15185852, 15185853, 15185854, 15185855, 15186048, 15186049, 15186050, 15186051, 15186052, 15186053, 15186054, 15186055, 15186056, 15186057, - 15186058, 15186059, 15186060, 15186061, 15186062, 15186063, 15186064, 15186065, 15186066, 15186067, 15186068, 15186069, 15186070, 15186071, 15186072, - 15186073, 15186074, 15186075, 15186076, 15186077, 15186078, 15186079, 15186080, 15186081, 15186082, 15186083, 15186084, 15186085, 15186086, 15186087, - 15186088, 15186089, 15186090, 15186091, 15186092, 15186093, 15186094, 15186095, 15186096, 15186097, 15186098, 15186099, 15186100, 15186101, 15186102, - 15186103, 15186104, 15186105, 0, 15186106, 15186108, 15186109, 15186110, 15186111, 15186304, 15186306, 15186307, 15186308, 15186309, 15186310, - 15186312, 15186313, 15186314, 15186315, 15186316, 15186317, 15186318, 15186319, 15186320, 15186321, 15186322, 15186323, 15186324, 15186325, 15186326, - 15186327, 15186328, 15186329, 15186330, 15186331, 15186332, 15186333, 14991242, 15182755, 15119770, 15303585, 15313551, 15046272, 15045270, 15044001, - 15045295, 15056000, 15110057, 15115703, 15042479, 15107496, 15042698, 15048874, 15043480, 15048078, 15179917, 15178891, 15055543, 15107511, 15184800, - 15108507, 15108759, 14989986, 15172245, 15237251, 15109047, 15172516, 15310240, 15048119, 15240091, 15114159, 15115189, 15180693, 15311511, 15181713, - 15049651, 15045299, 15044527, 15120564, 15041931, 15042747, 15052450, 15249342, 15237807, 15046019, 15048358, 15106483, 15048081, 15044781, 15182266, - 15106448, 15052180, 15109799, 15108768, 15044515, 15108515, 15052679, 15113903, 15045549, 15182495, 15240102, 15304119, 15055507, 15246244, 15049912, - 15048366, 15109262, 15251368, 15238063, 15048087, 15183287, 14991017, 15056811, 15052477, 15117502, 15043745, 15183248, 15174530, 15114630, 15179711, - 15178934, 15112119, 15042229, 14989967, 15178644, 15053503, 15182501, 15241653, 15050126, 15314305, 15041152, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15186334, 15186335, 15186336, 15186337, 15186338, 15186339, 15186340, 15186341, 15186342, 15186343, 15186344, 15186345, 15186346, 15186347, - 15186348, 15186349, 15186350, 15186351, 15186352, 15186353, 15186354, 15186355, 15186356, 15186357, 15186358, 15186359, 15186360, 15186361, 15186362, - 15186363, 15186364, 15186365, 15186366, 15186367, 15186560, 15186561, 15186563, 15186564, 15186565, 15186566, 15186567, 15186568, 15186569, 15186570, - 15186571, 15186572, 15186573, 15186574, 15186575, 15186576, 15186577, 15186578, 15186579, 15186580, 15186581, 15186582, 15186583, 15186584, 15186585, - 15186586, 15186588, 15186589, 15186590, 0, 15186606, 15186612, 15186619, 15186620, 15186838, 15186852, 15186860, 15186873, 15187082, 15187088, - 15187102, 15187127, 15187129, 15187131, 15187132, 15187133, 15187134, 15187135, 15187328, 15187329, 15187331, 15187334, 15187335, 15187336, 15187337, - 15187338, 15187339, 15187340, 15187341, 15187342, 15187343, 15187346, 15187347, 15312520, 15107239, 15121027, 15048100, 15112326, 15109510, 15047600, - 15109036, 15108521, 15055763, 15308948, 15048323, 15109001, 15046279, 15244449, 15238538, 15253155, 15046054, 15240881, 15113637, 15250838, 15242141, - 15051178, 15114383, 15109030, 15183790, 15308945, 15041968, 15122076, 15249584, 15110077, 15247240, 15107986, 15187078, 15172482, 15121317, 15175813, - 15115924, 15174588, 15055754, 15303566, 15113367, 15119786, 15109534, 15043251, 15174050, 15237249, 14990764, 15050661, 15304106, 15172505, 15120029, - 15043474, 14989712, 15309751, 15308205, 15242686, 15180682, 15185071, 15041697, 15048338, 15111042, 15237771, 15184315, 15119274, 15115185, 15115678, - 15042231, 15044248, 15114920, 15174273, 15317902, 15183793, 15174584, 15181499, 15121555, 15175814, 15113614, 15304588, 15315620, 15180988, 15240841, - 15240596, 15044751, 15114391, 14989501, 15044233, 15043249, 15179966, 15044230, 15042729, 15041160, 14990987, 14991248, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15187350, 15187353, 15187355, 15187356, 15187357, 15187358, 15187360, 15187363, 15187364, 15187365, 15187366, 15187367, 15187371, - 15187372, 15187373, 15187375, 15187376, 15187379, 15187381, 15187382, 15187383, 15187384, 15187386, 15187387, 15187388, 15187389, 15187391, 15187584, - 15187586, 15187587, 15187588, 15187589, 15187590, 15187591, 15187592, 15187593, 15187595, 15187597, 15187599, 15187600, 15187601, 15187602, 15187603, - 15187605, 15187606, 15187607, 15187608, 15187609, 15187611, 15187612, 15187616, 15187618, 15187619, 15187621, 15187622, 15187624, 15187625, 15187626, - 15187627, 15187628, 15187629, 15187630, 15187633, 0, 15187635, 15187636, 15187637, 15187638, 15187639, 15187642, 15187643, 15187646, 15187840, - 15187842, 15187843, 15187844, 15187846, 15187847, 15187848, 15187849, 15187851, 15187853, 15187855, 15187856, 15187857, 15187858, 15187859, 15187862, - 15187863, 15187865, 15187866, 15187867, 15187868, 15187869, 15187870, 15187874, 15187875, 15177634, 15182731, 15184530, 15119013, 15309494, 15043227, - 15176323, 15045545, 14991273, 15237524, 15240882, 15253406, 15308208, 15055753, 15106204, 15120031, 15055000, 15111579, 15238328, 15307710, 15106443, - 15172284, 15186819, 15184558, 15042441, 15114881, 15184561, 15239599, 14989476, 15253126, 15304591, 15112638, 14989998, 15249541, 15110825, 15237514, - 15041434, 15177367, 15173518, 15052709, 15253181, 15121830, 14989958, 15110786, 15308195, 15055766, 15111833, 15042711, 15246210, 15172488, 15043235, - 15174798, 15175859, 15113879, 15180727, 15309974, 14989492, 15303355, 15315870, 15120267, 15042459, 15250817, 15044765, 15109006, 15175346, 15241137, - 15309750, 15318660, 15307651, 14990518, 15187610, 15042444, 15172021, 15309237, 15053485, 15311494, 15044518, 14990244, 15121052, 15175817, 15115956, - 15180203, 15312527, 15177113, 15042712, 15177892, 15119745, 15114163, 15041965, 15318681, 15237515, 15045273, 15183036, 15182527, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15187876, 15187879, 15187880, 15187882, 15187883, 15187884, 15187885, 15187887, 15187890, 15187892, 15187893, 15187894, - 15187895, 15187896, 15187897, 15187898, 15187901, 15187902, 15187903, 15237250, 15237255, 15237256, 15237257, 15237258, 15237262, 15237263, 15237265, - 15237267, 15237274, 15237275, 15237277, 15237278, 15237279, 15237281, 15237283, 15237284, 15237291, 15237292, 15237293, 15237294, 15237295, 15237296, - 15237298, 15237300, 15237305, 15237306, 15237308, 15237310, 15237504, 15237505, 15237508, 15237509, 15237511, 15237512, 15237513, 15237518, 15237519, - 15237520, 15237521, 15237523, 15237525, 15237526, 15237527, 0, 15237529, 15237531, 15237532, 15237533, 15237534, 15237535, 15237536, 15237537, - 15237538, 15237539, 15237540, 15237541, 15237542, 15237543, 15237544, 15237547, 15237548, 15237549, 15237550, 15237551, 15237552, 15237554, 15237555, - 15237556, 15237557, 15237558, 15237559, 15237560, 15237561, 15237562, 15237563, 15237564, 15237565, 15309446, 15048324, 15109026, 15309191, 15115708, - 15050884, 15110274, 15183763, 15121551, 15309195, 15239846, 15044002, 15311493, 15055504, 15172233, 15109811, 15044004, 15243663, 15315585, 15317651, - 15180428, 15310002, 15251375, 15250818, 15317439, 15121822, 15181444, 15056277, 15309190, 15108270, 15313332, 15044757, 15307677, 14991011, 15112069, - 15053221, 15053217, 15187093, 15243665, 15118511, 15056523, 15175303, 15121316, 15186879, 15053734, 15109275, 15052202, 15121318, 15044021, 14989745, - 15109792, 15177125, 15108769, 15252910, 14990502, 14990225, 15119014, 15186614, 15249082, 15241373, 15244986, 15187351, 15302843, 15307939, 15183529, - 15313569, 15246264, 15241405, 15119515, 15313542, 15186844, 15050376, 15317691, 15175323, 15179905, 15243906, 15313324, 15313538, 15046811, 15044759, - 15048587, 14989744, 15317670, 15043990, 15253384, 15238281, 15179410, 15312530, 15244206, 15121313, 15242387, 15113148, 15107490, 15121579, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15237566, 15237761, 15237762, 15237765, 15237768, 15237770, 15237773, 15237774, 15237775, 15237776, 15237777, - 15237778, 15237780, 15237781, 15237783, 15237785, 15237790, 15237795, 15237798, 15237799, 15237800, 15237804, 15237808, 15237811, 15237813, 15237814, - 15237816, 15237817, 15237819, 15238021, 15238023, 15238024, 15238025, 15238026, 15238027, 15238031, 15238032, 15238033, 15238034, 15238035, 15238036, - 15238037, 15238040, 15238047, 15238048, 15238050, 15238051, 15238054, 15238062, 15238069, 15238071, 15238073, 15238075, 15238078, 15238079, 15238272, - 15238273, 15238275, 15238276, 15238277, 15238279, 15238280, 15238283, 0, 15238284, 15238293, 15238295, 15238297, 15238299, 15238300, 15238301, - 15238303, 15238304, 15238305, 15238306, 15238307, 15238308, 15238309, 15238310, 15238311, 15238312, 15238313, 15238314, 15238315, 15238317, 15238318, - 15238320, 15238323, 15238324, 15238325, 15238327, 15238329, 15238330, 15238331, 15238332, 15238333, 15238335, 15249577, 15239826, 15240363, 15178674, - 15118483, 15056793, 15240893, 15174827, 15240325, 15307930, 15118235, 15179675, 15307654, 15044015, 15240322, 15042194, 15055037, 15250060, 15250616, - 14989704, 15175339, 15113882, 15114885, 15304118, 15309961, 15173028, 15119009, 15178889, 15051410, 15308161, 15118223, 15187598, 15112359, 15052688, - 15050425, 15051418, 15308712, 15308727, 14990252, 15241356, 15241881, 15116972, 15178655, 15307952, 15174811, 15114918, 15052191, 15178927, 15304346, - 15310241, 15184796, 15253431, 15249564, 15056037, 15184307, 15181720, 15247237, 15119244, 15244444, 15052678, 15055234, 15115145, 15178912, 15186869, - 15042197, 15041933, 15043465, 15050921, 15187077, 15310242, 15240087, 15110031, 15179396, 15243152, 15181714, 15120570, 15055513, 15050393, 15242385, - 15172013, 15118481, 15108799, 15178431, 15111567, 15106735, 15308733, 15112334, 15244959, 15317155, 15307693, 15044749, 15045053, 15249580, 15110584, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15238528, 15238529, 15238530, 15238531, 15238532, 15238533, 15238535, 15238537, 15238541, 15238542, - 15238543, 15238546, 15238550, 15238551, 15238552, 15238555, 15238556, 15238557, 15238558, 15238559, 15238561, 15238562, 15238563, 15238564, 15238566, - 15238568, 15238570, 15238571, 15238572, 15238575, 15238578, 15238579, 15238581, 15238582, 15238583, 15238584, 15238785, 15238787, 15238788, 15238789, - 15238790, 15238791, 15238793, 15238795, 15238796, 15238797, 15238798, 15238800, 15238802, 15238803, 15238804, 15238805, 15238806, 15238807, 15238809, - 15238810, 15238814, 15238815, 15238816, 15238817, 15238818, 15238820, 15238821, 0, 15238823, 15238825, 15238827, 15238828, 15238829, 15238830, - 15238831, 15238832, 15238833, 15238834, 15238836, 15238837, 15238838, 15238839, 15238840, 15238841, 15238844, 15238845, 15238846, 15238847, 15239044, - 15239045, 15239047, 15239048, 15239049, 15239051, 15239053, 15239054, 15239055, 15239056, 15239057, 15239058, 15239059, 15110585, 15243409, 15116449, - 15238812, 15180712, 15110569, 15314324, 15108793, 15113387, 15240875, 15049384, 15317912, 15119019, 15121568, 15052702, 15309196, 15249547, 15174047, - 15114128, 15108999, 15174049, 14989993, 15050630, 15118221, 15049363, 15112878, 15055253, 15043487, 15107477, 15113384, 15178670, 15179174, 15174055, - 15182214, 15109055, 15045546, 15045008, 15307424, 15303331, 15050908, 15186611, 15118486, 14989699, 15050166, 15237264, 15050120, 15043991, 15176887, - 15309502, 15047562, 15109280, 15238289, 15106492, 15308729, 15120278, 15045026, 15312513, 15042181, 15051689, 15238077, 15050414, 15309971, 15040682, - 15119269, 15052988, 15109023, 14990752, 15043775, 15238587, 15302790, 15121082, 15242411, 15109000, 15055284, 15180478, 15110837, 15109563, 15056821, - 15050904, 15304127, 15317151, 15052991, 15109519, 15237506, 15052221, 15046062, 15308170, 15308173, 15120005, 15106728, 15114144, 15174558, 15042461, - 15052417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15239060, 15239061, 15239062, 15239063, 15239064, 15239065, 15239066, 15239067, 15239068, - 15239069, 15239070, 15239071, 15239072, 15239073, 15239074, 15239076, 15239077, 15239078, 15239080, 15239081, 15239083, 15239086, 15239087, 15239088, - 15239089, 15239090, 15239093, 15239094, 15239095, 15239096, 15239097, 15239098, 15239101, 15239103, 15239299, 15239303, 15239304, 15239305, 15239306, - 15239307, 15239310, 15239311, 15239313, 15239315, 15239317, 15239318, 15239319, 15239320, 15239321, 15239322, 15239325, 15239328, 15239332, 15239333, - 15239334, 15239335, 15239337, 15239342, 15239346, 15239354, 15239356, 15239357, 15239359, 0, 15239552, 15239553, 15239554, 15239555, 15239557, - 15239558, 15239560, 15239562, 15239564, 15239565, 15239566, 15239568, 15239569, 15239570, 15239571, 15239572, 15239573, 15239574, 15239575, 15239577, - 15239579, 15239580, 15239581, 15239582, 15239584, 15239585, 15239586, 15239587, 15239588, 15239589, 15239590, 15239591, 15239593, 15109031, 15119262, - 15174043, 15108525, 15307438, 15186621, 15238291, 15119763, 15042204, 15056004, 15050164, 15043242, 15106194, 15050163, 15112854, 15243664, 15177375, - 15109290, 15108006, 15184815, 15249338, 15045542, 15117479, 15317157, 15118004, 15243157, 15045013, 15040950, 15119012, 15046058, 15251124, 15173804, - 15054997, 15106197, 15175862, 15109005, 15109778, 15174028, 15056536, 15120771, 15119550, 15111296, 15121816, 15178648, 15180688, 15178684, 15177108, - 15042724, 15044507, 14989715, 15055518, 15112065, 15237290, 15238038, 15108763, 15045254, 15042728, 15172270, 15245965, 15251345, 15119265, 15045048, - 15238042, 15048633, 15246260, 15250836, 15309226, 15304077, 14990761, 15119003, 15046327, 15178630, 15179952, 15108776, 15172537, 15122062, 15056301, - 15242156, 15115162, 15180220, 15183799, 15238824, 15113355, 15317391, 15109543, 15180464, 15048111, 15179922, 15310009, 15108537, 15108779, 15043208, - 15175861, 15118231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15239594, 15239595, 15239596, 15239597, 15239601, 15239605, 15239606, 15239607, - 15239608, 15239611, 15239612, 15239808, 15239809, 15239811, 15239813, 15239814, 15239815, 15239817, 15239820, 15239824, 15239827, 15239828, 15239829, - 15239830, 15239834, 15239835, 15239838, 15239840, 15239842, 15239843, 15239847, 15239858, 15239861, 15239862, 15239866, 15239867, 15239868, 15239871, - 15240064, 15240066, 15240067, 15240069, 15240070, 15240073, 15240080, 15240086, 15240089, 15240090, 15240093, 15240098, 15240103, 15240104, 15240105, - 15240106, 15240108, 15240109, 15240110, 15240112, 15240114, 15240115, 15240117, 15240118, 15240120, 0, 15240122, 15240124, 15240125, 15240126, - 15240127, 15240320, 15240330, 15240331, 15240333, 15240336, 15240338, 15240339, 15240342, 15240344, 15240345, 15240349, 15240350, 15240351, 15240352, - 15240353, 15240354, 15240355, 15240356, 15240357, 15240358, 15240361, 15240362, 15240366, 15240368, 15240370, 15240375, 15240379, 15240381, 15046052, - 15238334, 15177394, 15178414, 15043769, 15177630, 15041467, 15053185, 15248812, 15183751, 15040911, 15174023, 15313559, 15311768, 15121538, 15176610, - 15181224, 15110791, 15179429, 15109052, 15311505, 15250603, 15045505, 15237528, 14989714, 15048106, 15240121, 15241357, 15055283, 15042477, 15176630, - 15249284, 15053199, 15048097, 15119292, 15311495, 15051142, 15179956, 15314308, 15253419, 15184533, 15042966, 15108497, 15307706, 14990214, 15240838, - 15241633, 15241129, 15241906, 15048596, 15113396, 15047811, 15112622, 15119782, 15249585, 15113117, 15171729, 15113375, 15117498, 15114390, 15108250, - 15050427, 14989443, 15042436, 15121542, 15114130, 15118991, 15041974, 15115147, 15050119, 15117735, 15177126, 15053966, 15238288, 15318416, 15112087, - 15181192, 15181185, 15313553, 15250871, 15053442, 14989726, 14990465, 15044783, 15050129, 15179916, 15047080, 15118484, 15253380, 15056003, 15118781, - 15119267, 15249067, 15109776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15240382, 15240383, 15240577, 15240578, 15240580, 15240581, 15240584, - 15240586, 15240587, 15240588, 15240589, 15240590, 15240595, 15240597, 15240598, 15240599, 15240600, 15240601, 15240605, 15240610, 15240624, 15240625, - 15240626, 15240627, 15240628, 15240629, 15240630, 15240633, 15240634, 15240638, 15240639, 15240832, 15240833, 15240834, 15240835, 15240836, 15240839, - 15240840, 15240842, 15240843, 15240844, 15240845, 15240847, 15240848, 15240849, 15240852, 15240853, 15240854, 15240855, 15240857, 15240858, 15240861, - 15240863, 15240865, 15240866, 15240867, 15240868, 15240869, 15240870, 15240871, 15240876, 15240877, 15240878, 0, 15240879, 15240885, 15240891, - 15240894, 15240895, 15241090, 15241091, 15241092, 15241094, 15241096, 15241097, 15241099, 15241101, 15241102, 15241104, 15241105, 15241106, 15241107, - 15241109, 15241111, 15241113, 15241114, 15241115, 15241118, 15241122, 15241123, 15241124, 15241126, 15241127, 15241128, 15241131, 15241132, 15241133, - 15106480, 15119549, 15174069, 15108518, 15307406, 15307653, 15043971, 15253377, 15183294, 14990239, 15249574, 14989758, 15317908, 15307441, 15307443, - 15042957, 15121820, 15303075, 15119749, 15249588, 15048849, 15054220, 15117472, 15117705, 15113898, 15045019, 15238548, 15187596, 15049369, 15242423, - 15056058, 15108770, 15116679, 15307961, 15111602, 15106692, 15114661, 15179431, 14989716, 14991016, 15054759, 15310488, 15110828, 15187864, 15053741, - 14991247, 15182477, 15042695, 15240324, 14989460, 15106223, 15182467, 15307430, 14991029, 14990002, 15181734, 15175860, 15043492, 15239865, 15111058, - 15181501, 15052701, 15118977, 15310226, 15252923, 15118498, 15040702, 15044031, 15120517, 15111054, 15112628, 15118512, 15106949, 15311287, 15249335, - 15055494, 15175868, 15182263, 15181707, 14989464, 15303345, 15175811, 15118722, 15047578, 15304075, 15119237, 15251083, 15043770, 15244166, 15113138, - 15252143, 15053192, 15313329, 15120544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15241134, 15241135, 15241139, 15241140, 15241141, 15241142, - 15241143, 15241146, 15241147, 15241148, 15241150, 15241151, 15241344, 15241346, 15241349, 15241351, 15241352, 15241353, 15241354, 15241360, 15241362, - 15241363, 15241364, 15241365, 15241366, 15241367, 15241369, 15241370, 15241371, 15241374, 15241375, 15241376, 15241377, 15241378, 15241379, 15241385, - 15241386, 15241387, 15241388, 15241389, 15241390, 15241391, 15241392, 15241394, 15241395, 15241396, 15241397, 15241398, 15241399, 15241401, 15241402, - 15241403, 15241406, 15241407, 15241600, 15241601, 15241602, 15241603, 15241604, 15241605, 15241607, 15241608, 15241609, 0, 15241610, 15241611, - 15241612, 15241613, 15241614, 15241615, 15241616, 15241618, 15241619, 15241620, 15241621, 15241622, 15241624, 15241629, 15241630, 15241631, 15241632, - 15241634, 15241636, 15241637, 15241638, 15241639, 15241640, 15241642, 15241646, 15241647, 15241648, 15241650, 15241652, 15241655, 15241657, 15241659, - 15241660, 15044502, 15050934, 15318667, 15251107, 15044283, 15047816, 15311527, 15113603, 15304347, 15119241, 15041960, 15177610, 15109043, 15174316, - 15042744, 15043229, 15187130, 15172244, 15177912, 15044020, 15317386, 15115959, 15180206, 15309696, 15246233, 15187620, 15172790, 15173507, 15042185, - 15114131, 15176612, 15049636, 15111320, 15047351, 15249065, 15312310, 15108528, 15186837, 15107001, 15172525, 15049644, 14990209, 14990010, 15056781, - 15310759, 14990267, 15249060, 15042691, 15050378, 15186603, 15108500, 14990221, 15112101, 15108238, 15240376, 15242121, 15240611, 15244941, 15173268, - 15121078, 15052473, 15186834, 15042199, 15110025, 15114132, 15237769, 15240377, 15245461, 15041682, 15052218, 15050370, 15253169, 14989747, 15118749, - 15041957, 15246501, 15252911, 15308974, 15242634, 15176094, 15307920, 15308720, 15120038, 15240101, 15056049, 15110802, 15119506, 15241384, 15238574, - 15315843, 15049118, 15250843, 14989449, 15044481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15241661, 15241662, 15241663, 15241856, 15241857, - 15241859, 15241860, 15241861, 15241862, 15241866, 15241869, 15241871, 15241872, 15241873, 15241874, 15241875, 15241876, 15241877, 15241878, 15241880, - 15241882, 15241883, 15241885, 15241886, 15241887, 15241888, 15241890, 15241891, 15241892, 15241893, 15241894, 15241895, 15241896, 15241897, 15241898, - 15241899, 15241900, 15241901, 15241902, 15241904, 15241905, 15241907, 15241909, 15241910, 15241911, 15241915, 15241916, 15241918, 15242112, 15242114, - 15242115, 15242117, 15242118, 15242119, 15242120, 15242123, 15242124, 15242126, 15242127, 15242130, 15242132, 15242133, 15242135, 0, 15242136, - 15242137, 15242138, 15242139, 15242140, 15242142, 15242145, 15242146, 15242148, 15242151, 15242152, 15242153, 15242154, 15242155, 15242157, 15242158, - 15242159, 15242161, 15242162, 15242163, 15242164, 15242165, 15242166, 15242167, 15242168, 15242169, 15242170, 15242171, 15242173, 15242174, 15242368, - 15242369, 15242370, 14990494, 15111587, 15114641, 15046547, 14989479, 15110292, 15313562, 15108523, 15051650, 15176095, 15239602, 15120041, 15115182, - 15041447, 15240846, 15179906, 15113600, 15042745, 15119001, 15186609, 15041211, 15046053, 15173022, 15183259, 15112594, 15175562, 15240107, 15113609, - 15053233, 15042720, 15173053, 15245739, 15308714, 15309205, 15111045, 15250849, 15238835, 15046276, 15118741, 15108487, 15187118, 15049362, 14990500, - 15046022, 15250831, 15112588, 14989450, 15052954, 15246259, 15114914, 15109518, 15181965, 15172519, 15239821, 15043514, 15310774, 15052945, 15045544, - 15303349, 15186829, 15050146, 15250826, 15244167, 15239308, 15239309, 15250854, 15110532, 15052932, 15107473, 15120009, 15180990, 15249086, 15179959, - 15176883, 15045051, 14990520, 15252139, 15120305, 15050912, 15186821, 15181214, 15118984, 15052449, 15051190, 15176858, 15237822, 15107470, 15120535, - 15049648, 15176863, 15176869, 15174066, 15043975, 15186867, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15242371, 15242372, 15242373, 15242374, - 15242375, 15242376, 15242377, 15242378, 15242379, 15242381, 15242382, 15242383, 15242384, 15242386, 15242388, 15242389, 15242390, 15242392, 15242393, - 15242395, 15242396, 15242397, 15242398, 15242400, 15242402, 15242403, 15242404, 15242405, 15242406, 15242407, 15242408, 15242409, 15242410, 15242413, - 15242414, 15242415, 15242416, 15242417, 15242418, 15242419, 15242420, 15242421, 15242422, 15242430, 15242431, 15242624, 15242625, 15242626, 15242628, - 15242629, 15242630, 15242631, 15242635, 15242636, 15242637, 15242638, 15242639, 15242640, 15242641, 15242642, 15242643, 15242644, 15242645, 0, - 15242647, 15242648, 15242650, 15242651, 15242652, 15242653, 15242655, 15242656, 15242657, 15242658, 15242659, 15242661, 15242662, 15242663, 15242665, - 15242666, 15242667, 15242668, 15242669, 15242670, 15242671, 15242672, 15242673, 15242675, 15242677, 15242678, 15242679, 15242680, 15242684, 15242685, - 15242687, 15242880, 15242881, 15178881, 15178651, 15042985, 15238044, 15047843, 15054984, 15049905, 15174574, 15111869, 15120831, 15249303, 15052984, - 15243697, 15043969, 15179699, 15109054, 15112118, 14990208, 15311775, 15243904, 15052446, 15249286, 15044530, 15179682, 14990783, 15053198, 15313334, - 15050635, 15056015, 15180986, 15049643, 14989462, 15114175, 14989963, 15109037, 15248019, 15302813, 15043263, 15112367, 15046556, 15047084, 15302786, - 14990229, 14990989, 15304586, 15312304, 15118479, 15054978, 15106435, 15052452, 15247238, 15249301, 15111350, 15108491, 15312534, 15052424, 15052735, - 15109768, 15045806, 15044503, 15177894, 15041981, 15242412, 15113890, 15114931, 15117962, 15108754, 15253139, 15044500, 15239314, 15120273, 15177359, - 14989734, 15250830, 15052208, 15173279, 15242927, 15112849, 15113113, 15187378, 15244416, 15317901, 15318176, 15053214, 15113391, 15253424, 15114385, - 15113631, 15108237, 15182742, 15049349, 15055542, 15111600, 15121585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15242882, 15242883, 15242886, - 15242888, 15242889, 15242890, 15242891, 15242892, 15242893, 15242894, 15242896, 15242897, 15242898, 15242899, 15242900, 15242901, 15242902, 15242903, - 15242904, 15242905, 15242906, 15242909, 15242910, 15242911, 15242912, 15242913, 15242914, 15242915, 15242917, 15242918, 15242919, 15242921, 15242923, - 15242924, 15242925, 15242929, 15242930, 15242931, 15242932, 15242933, 15242934, 15242936, 15242938, 15242939, 15242940, 15242941, 15242942, 15242943, - 15243136, 15243138, 15243139, 15243140, 15243141, 15243142, 15243143, 15243144, 15243146, 15243147, 15243148, 15243149, 15243150, 15243153, 15243154, - 0, 15243156, 15243158, 15243159, 15243160, 15243161, 15243162, 15243163, 15243165, 15243166, 15243167, 15243168, 15243169, 15243170, 15243171, - 15243173, 15243174, 15243175, 15243176, 15243178, 15243179, 15243180, 15243181, 15243182, 15243183, 15243184, 15243185, 15243186, 15243187, 15243188, - 15243189, 15243190, 15243191, 15243192, 15106453, 15042743, 15237261, 15110548, 15245744, 15176873, 15054981, 15114387, 15109044, 15309980, 15044492, - 15173821, 15249537, 15118516, 15179169, 15181966, 15044782, 15179436, 15311290, 15239324, 15249332, 15180181, 15113364, 15172481, 15111855, 15110805, - 15046838, 15106205, 15181697, 15044536, 14989469, 15117755, 15237766, 15052730, 15046563, 15047579, 14990522, 14990524, 15312306, 15054771, 15113662, - 15237304, 15106178, 15311490, 15302785, 15052427, 15249084, 15249333, 15110300, 15239576, 15111070, 15046589, 15240079, 15304101, 14991255, 15185056, - 15302815, 15184543, 15041459, 15049105, 15121071, 15052479, 15249289, 15237763, 15304120, 15241884, 15183511, 15243709, 15309451, 15309455, 15186853, - 15313811, 15180430, 15053441, 15182231, 15303042, 15309479, 15181215, 15052185, 15109535, 15182987, 15242129, 15114925, 15045766, 15187113, 15175824, - 15185058, 15307905, 15108480, 15049100, 14990230, 15052419, 15050169, 15049108, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15243193, 15243194, - 15243196, 15243197, 15243198, 15243392, 15243393, 15243394, 15243395, 15243396, 15243398, 15243399, 15243400, 15243401, 15243402, 15243403, 15243404, - 15243405, 15243406, 15243407, 15243408, 15243410, 15243411, 15243412, 15243413, 15243415, 15243416, 15243417, 15243418, 15243419, 15243420, 15243421, - 15243422, 15243423, 15243424, 15243425, 15243426, 15243427, 15243428, 15243429, 15243430, 15243432, 15243434, 15243435, 15243436, 15243437, 15243438, - 15243439, 15243440, 15243441, 15243442, 15243443, 15243444, 15243445, 15243446, 15243447, 15243449, 15243450, 15243451, 15243453, 15243454, 15243455, - 15243648, 0, 15243649, 15243650, 15243651, 15243652, 15243653, 15243654, 15243655, 15243656, 15243657, 15243658, 15243659, 15243660, 15243666, - 15243667, 15243669, 15243670, 15243671, 15243672, 15243673, 15243675, 15243676, 15243677, 15243679, 15243680, 15243681, 15243683, 15243684, 15243685, - 15243686, 15243687, 15243688, 15243689, 15243690, 15175085, 15109278, 15251851, 15251599, 15238030, 15240084, 15108780, 15044528, 15119280, 15304094, - 15049898, 15106177, 15118768, 15048077, 15110538, 15250602, 15177899, 15121321, 15048091, 15116928, 15177648, 15121837, 15249581, 15249544, 15048102, - 15118255, 15245970, 15180467, 15109794, 15044537, 15172269, 15118756, 15049112, 15110314, 15048834, 15115168, 15238811, 15045776, 15184790, 15040664, - 15252154, 15120268, 15251103, 15172523, 15109775, 15120027, 15121300, 15186854, 15241348, 15114627, 15302787, 15120280, 15309238, 15249064, 15050135, - 15174073, 15243172, 15238590, 15177404, 15248010, 15114927, 15042964, 15251618, 15307921, 15110032, 15311512, 15251844, 15046076, 14990739, 15113151, - 15047311, 15106965, 15120021, 15042947, 15053193, 15049897, 15120315, 15049131, 15176880, 15176860, 15106476, 15239316, 15238534, 15109265, 15113633, - 15253410, 15178938, 15251379, 15250612, 15307649, 15054998, 15044229, 15044780, 15172483, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15243693, - 15243695, 15243696, 15243698, 15243699, 15243700, 15243701, 15243702, 15243703, 15243704, 15243907, 15243908, 15243909, 15243910, 15243911, 15243912, - 15243913, 15243918, 15243919, 15243920, 15243921, 15243922, 15243924, 15243926, 15243927, 15243928, 15243929, 15243930, 15243931, 15243934, 15243935, - 15243936, 15243937, 15243938, 15243941, 15243942, 15243947, 15243949, 15243950, 15243954, 15243955, 15243959, 15243960, 15243961, 15243963, 15243964, - 15243965, 15243966, 15243967, 15244161, 15244162, 15244163, 15244165, 15244168, 15244172, 15244173, 15244178, 15244179, 15244181, 15244182, 15244183, - 15244186, 15244188, 0, 15244189, 15244192, 15244193, 15244194, 15244195, 15244197, 15244198, 15244199, 15244200, 15244202, 15244203, 15244204, - 15244207, 15244213, 15244214, 15244215, 15244218, 15244219, 15244220, 15244221, 15244223, 15244417, 15244420, 15244421, 15244422, 15244427, 15244428, - 15244430, 15244431, 15244432, 15244433, 15244436, 15244438, 15118720, 15055799, 15040924, 14989997, 15055533, 15109306, 15239559, 15302810, 15114640, - 15304110, 15179443, 15044748, 15307676, 15056292, 15182757, 15114678, 15109509, 15183250, 15186847, 15177627, 15040951, 15108757, 15049908, 15302799, - 15042488, 15181699, 15182465, 15047614, 15056530, 15302804, 15120002, 15053216, 15047839, 15044752, 15041940, 15120781, 15047586, 15109800, 15311507, - 15238591, 15244437, 15246506, 15302784, 15044766, 15053231, 15239040, 15109014, 15108504, 15238321, 15317173, 15309184, 15313326, 15313340, 15115437, - 15050405, 15109011, 15045822, 15109270, 15045511, 15244185, 15119548, 15050883, 15176614, 15245980, 15117738, 15049878, 15249804, 15056047, 15120830, - 15175337, 15311293, 14989496, 15172535, 15052428, 15180439, 15109309, 15112602, 15178390, 15106955, 15052443, 15051145, 14989447, 15238549, 15118762, - 15175307, 14989985, 15113865, 15187345, 15056512, 15112122, 15113371, 15056792, 15050372, 15050881, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15244441, 15244443, 15244445, 15244447, 15244448, 15244452, 15244454, 15244455, 15244456, 15244458, 15244459, 15244460, 15244461, 15244463, 15244464, - 15244466, 15244467, 15244469, 15244470, 15244472, 15244473, 15244474, 15244476, 15244477, 15244672, 15244673, 15244674, 15244675, 15244676, 15244677, - 15244678, 15244682, 15244683, 15244685, 15244687, 15244688, 15244689, 15244690, 15244692, 15244693, 15244694, 15244696, 15244698, 15244699, 15244700, - 15244701, 15244702, 15244703, 15244705, 15244706, 15244710, 15244711, 15244712, 15244713, 15244714, 15244715, 15244716, 15244717, 15244719, 15244721, - 15244722, 15244723, 15244725, 0, 15244727, 15244728, 15244729, 15244730, 15244735, 15244928, 15244929, 15244932, 15244934, 15244935, 15244937, - 15244938, 15244940, 15244942, 15244943, 15244944, 15244945, 15244946, 15244948, 15244949, 15244950, 15244952, 15244953, 15244954, 15244955, 15244956, - 15244957, 15244958, 15244960, 15244961, 15244962, 15244963, 15244964, 15054733, 15056558, 15044017, 15310758, 15253405, 15114629, 15047604, 15045807, - 15106975, 14989498, 15121805, 15186868, 15240071, 15241358, 15050644, 14990495, 14990506, 15052990, 15186604, 15113386, 15242394, 15045043, 15177103, - 15238019, 15046274, 15314319, 14990733, 15120557, 15249555, 15052937, 15107504, 15044011, 15177887, 15120553, 15243914, 15111815, 15308731, 15186617, - 15044795, 15182003, 15185034, 15308718, 15046561, 15187841, 15176622, 15109277, 15244439, 15120033, 15182493, 15108241, 15111841, 15044007, 15110049, - 15118979, 15054763, 15045020, 15307432, 14989708, 15118753, 15249324, 15053195, 15112096, 15239836, 15114919, 15044798, 15044788, 15118219, 15117734, - 14989972, 15109506, 15043976, 15239326, 14990477, 14991022, 15048094, 15108234, 15309758, 15112612, 15174057, 15043519, 15043233, 15106719, 15249327, - 15112340, 15173273, 15113872, 15246783, 15180178, 15179709, 15112624, 15046843, 15044792, 15307937, 15174074, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15244965, 15244966, 15244967, 15244969, 15244970, 15244974, 15244976, 15244977, 15244978, 15244980, 15244982, 15244983, 15244984, 15244985, - 15244987, 15244988, 15244990, 15244991, 15245185, 15245186, 15245187, 15245188, 15245189, 15245191, 15245192, 15245193, 15245196, 15245197, 15245198, - 15245199, 15245200, 15245204, 15245205, 15245206, 15245207, 15245208, 15245209, 15245210, 15245212, 15245213, 15245214, 15245215, 15245217, 15245218, - 15245219, 15245220, 15245222, 15245223, 15245224, 15245225, 15245227, 15245228, 15245229, 15245231, 15245232, 15245233, 15245234, 15245235, 15245236, - 15245237, 15245238, 15245239, 15245240, 0, 15245242, 15245243, 15245244, 15245245, 15245247, 15245440, 15245441, 15245442, 15245444, 15245445, - 15245446, 15245447, 15245448, 15245449, 15245451, 15245452, 15245453, 15245454, 15245455, 15245456, 15245457, 15245458, 15245460, 15245463, 15245464, - 15245465, 15245466, 15245468, 15245469, 15245470, 15245471, 15245472, 15245475, 15181952, 15106479, 15054988, 15106697, 15238813, 15049877, 15106972, - 15173252, 15172527, 15121066, 15118736, 15174272, 15116932, 15245997, 15055021, 14989728, 15051443, 15046300, 15307683, 15119511, 15184827, 15309465, - 15108239, 15186822, 15179406, 15243710, 15043747, 15309982, 15253142, 15112839, 15053729, 14991008, 15174573, 14989451, 15044262, 15049871, 15044755, - 15109760, 15307944, 15041928, 14990233, 15315612, 15186596, 15045304, 15250596, 15245716, 15239351, 15308722, 15120014, 15056038, 15051660, 15112382, - 15309225, 15175344, 15174830, 15044287, 15238586, 15312517, 15187617, 15052458, 15309239, 15309200, 15186623, 15178680, 15044258, 15308214, 15312537, - 15183537, 15246724, 15120792, 14989729, 15187860, 15181221, 15249318, 15106995, 15045517, 14989995, 15311289, 15054775, 15116705, 15041423, 15044753, - 15249825, 15241383, 15180189, 15309956, 15042954, 15045550, 15047331, 15307904, 15120008, 15052469, 15120262, 15112595, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15245476, 15245477, 15245478, 15245479, 15245480, 15245481, 15245482, 15245483, 15245484, 15245485, 15245486, 15245487, 15245488, - 15245489, 15245491, 15245492, 15245493, 15245494, 15245495, 15245496, 15245498, 15245499, 15245501, 15245502, 15245503, 15245697, 15245698, 15245699, - 15245702, 15245703, 15245704, 15245705, 15245706, 15245707, 15245710, 15245711, 15245712, 15245713, 15245714, 15245715, 15245717, 15245718, 15245720, - 15245722, 15245723, 15245724, 15245725, 15245726, 15245727, 15245728, 15245734, 15245735, 15245738, 15245741, 15245743, 15245745, 15245747, 15245748, - 15245749, 15245750, 15245752, 15245753, 15245754, 0, 15245755, 15245756, 15245952, 15245955, 15245958, 15245959, 15245961, 15245962, 15245964, - 15245966, 15245967, 15245968, 15245969, 15245971, 15245972, 15245973, 15245975, 15245976, 15245977, 15245978, 15245979, 15245981, 15245982, 15245983, - 15245984, 15245985, 15245987, 15245989, 15245990, 15245991, 15245992, 15245993, 15245994, 15052943, 15052189, 15114401, 15237782, 15046072, 15182993, - 15111560, 15115668, 14989979, 15117703, 15244686, 15310475, 15043983, 15109279, 15110330, 15303338, 15111836, 15238017, 15249552, 15042201, 15114928, - 15044024, 15245241, 15107976, 15119236, 15119291, 15249570, 15053201, 15242922, 15239855, 15307916, 15117475, 15253147, 15111856, 15056827, 15056771, - 14991265, 15245701, 15112351, 15238565, 15174825, 15107002, 15041972, 15042705, 15048331, 15056290, 15303330, 15245708, 15304338, 15055288, 15113615, - 15106215, 15050643, 15041924, 15042486, 15238072, 15043720, 15118777, 15309700, 15173258, 14990481, 14991278, 15187614, 15113405, 15046533, 15307912, - 15181696, 15245974, 15186851, 15049375, 15108236, 15309952, 15243674, 15046808, 15311291, 15056528, 15249080, 15242116, 15304087, 15044505, 15112109, - 15055503, 15177116, 15106468, 15185326, 15051199, 15186858, 15186861, 15252905, 15046311, 15052451, 15106732, 15112075, 15175300, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15245996, 15245998, 15245999, 15246000, 15246002, 15246003, 15246004, 15246005, 15246006, 15246008, 15246009, 15246010, - 15246011, 15246013, 15246014, 15246015, 15246208, 15246211, 15246212, 15246215, 15246216, 15246218, 15246219, 15246220, 15246221, 15246223, 15246224, - 15246225, 15246227, 15246230, 15246231, 15246234, 15246235, 15246236, 15246237, 15246238, 15246240, 15246241, 15246246, 15246247, 15246249, 15246250, - 15246251, 15246252, 15246253, 15246254, 15246255, 15246258, 15246261, 15246262, 15246263, 15246266, 15246267, 15246269, 15246271, 15246464, 15246465, - 15246467, 15246468, 15246469, 15246470, 15246471, 15246472, 0, 15246473, 15246475, 15246476, 15246477, 15246478, 15246479, 15246481, 15246484, - 15246485, 15246486, 15246487, 15246488, 15246492, 15246493, 15246494, 15246495, 15246496, 15246498, 15246499, 15246500, 15246502, 15246503, 15246504, - 15246505, 15246508, 15246509, 15246510, 15246511, 15246513, 15246514, 15246515, 15246517, 15246519, 15302793, 15178147, 15178921, 15186842, 15310260, - 15242907, 15052198, 15182260, 15309738, 15245696, 15043467, 15173263, 15056554, 15112108, 15249314, 15052731, 15313327, 15054753, 15117961, 15118747, - 15249069, 15249071, 15302794, 15253381, 15044235, 15108796, 15317158, 15317165, 15044992, 14989483, 15239869, 15174041, 15243932, 15053974, 15245721, - 15120047, 15309701, 15045521, 14989978, 15249078, 15172745, 15045309, 15308937, 15172511, 15120313, 15178640, 14989477, 15179924, 15244434, 15053481, - 15055798, 15247488, 15311516, 15308942, 15172238, 15119039, 15050116, 15109801, 15178940, 15245709, 15121556, 15239603, 15048880, 15173525, 15044236, - 15179930, 15309697, 15045761, 15056294, 15172784, 15052468, 15249562, 15313548, 15117955, 15049902, 15317167, 15181735, 15113640, 15108524, 14990767, - 15177377, 15187594, 15119499, 15308979, 15118503, 14990256, 15177618, 15041979, 15114423, 15121598, 15303296, 15238576, 15050390, 15176118, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15246520, 15246521, 15246522, 15246523, 15246524, 15246525, 15246526, 15246527, 15246720, 15246722, 15246723, - 15246725, 15246726, 15246727, 15246728, 15246729, 15246730, 15246731, 15246732, 15246733, 15246734, 15246735, 15246736, 15246737, 15246738, 15246739, - 15246740, 15246741, 15246742, 15246743, 15246744, 15246745, 15246746, 15246747, 15246748, 15246749, 15246752, 15246753, 15246754, 15246755, 15246756, - 15246757, 15246759, 15246760, 15246761, 15246762, 15246763, 15246764, 15246765, 15246766, 15246767, 15246768, 15246769, 15246770, 15246771, 15246772, - 15246773, 15246774, 15246775, 15246776, 15246777, 15246778, 15246780, 0, 15246781, 15246782, 15246976, 15246978, 15246980, 15246981, 15246983, - 15246984, 15246985, 15246986, 15246987, 15246988, 15246989, 15246990, 15246991, 15246992, 15246993, 15246994, 15246995, 15246996, 15246997, 15246998, - 15246999, 15247000, 15247001, 15247002, 15247003, 15247004, 15247005, 15247006, 15247007, 15247008, 15247009, 15110535, 15052967, 15303077, 15182481, - 15249571, 15050650, 15045292, 15239296, 15240623, 15246977, 15237248, 15115440, 15047054, 15237302, 15173815, 15304590, 15042230, 14989727, 15311285, - 15109782, 14989466, 15044534, 15113139, 15238539, 15049884, 15120050, 14989440, 15049657, 15043771, 15110038, 15307697, 14991005, 14990474, 15245731, - 15311504, 15049911, 15303063, 15181755, 14990250, 15238064, 15177361, 15118978, 15052444, 15050664, 15056285, 15115397, 15243905, 15040666, 15054770, - 14989721, 15179683, 14990245, 15239610, 15108753, 15112339, 15303313, 15053241, 14990015, 15056313, 15239046, 15302840, 15237764, 15177387, 14989990, - 15246228, 15107215, 15118213, 15056774, 14989705, 15178634, 15121058, 15249315, 15249070, 15249546, 15249297, 15056002, 15187900, 15187852, 15186830, - 15240373, 15240619, 15047584, 15118007, 15310771, 15308980, 15050683, 15044767, 15307702, 15120299, 15052677, 15312302, 15052985, 15056021, 15309456, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15247010, 15247011, 15247012, 15247013, 15247014, 15247015, 15247016, 15247017, 15247018, 15247019, - 15247020, 15247021, 15247022, 15247023, 15247024, 15247025, 15247026, 15247027, 15247028, 15247029, 15247030, 15247031, 15247032, 15247033, 15247034, - 15247035, 15247036, 15247037, 15247038, 15247039, 15247232, 15247235, 15247245, 15247251, 15247252, 15247253, 15247255, 15247256, 15247257, 15247259, - 15247261, 15247263, 15247264, 15247265, 15247266, 15247268, 15247271, 15247272, 15247273, 15247274, 15247276, 15247277, 15247278, 15247280, 15247281, - 15247282, 15247284, 15247285, 15247286, 15247287, 15247288, 15247289, 15247290, 0, 15247291, 15247292, 15247293, 15247294, 15247295, 15247489, - 15247490, 15247491, 15247492, 15247493, 15247494, 15247496, 15247497, 15247498, 15247499, 15247500, 15247501, 15247502, 15247503, 15247504, 15247505, - 15247506, 15247507, 15247508, 15247509, 15247510, 15247511, 15247512, 15247513, 15247514, 15247515, 15247516, 15247517, 15044016, 15240113, 15116465, - 15051188, 15317424, 15055508, 15187112, 15240889, 15241380, 15241381, 15240615, 15244679, 15253390, 15250850, 15178632, 15056305, 15311510, 15180204, - 15112352, 15045535, 15109029, 14990755, 15239043, 15177608, 15055544, 15309709, 15251594, 15244217, 15045263, 15119283, 15120012, 15118520, 15106495, - 15043463, 15176872, 15055293, 14990488, 15106720, 15056807, 15052964, 15176881, 15303342, 15307648, 15174329, 15119033, 15120568, 15304073, 15113353, - 15044491, 15044531, 14990737, 15304585, 15249329, 15044488, 15055292, 15253378, 15120292, 14989966, 15178626, 15115910, 15243678, 15107226, 15239302, - 14990745, 14991262, 15302846, 15315388, 15107209, 15120541, 15120532, 15309445, 14989960, 15050929, 15309736, 14989454, 15053247, 15181497, 15052423, - 15249325, 15187645, 15175305, 15048607, 15239819, 15303553, 15044737, 15303047, 15046331, 15053738, 15056545, 15107208, 15117490, 15174577, 15237810, - 15248009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15247518, 15247519, 15247520, 15247521, 15247522, 15247523, 15247524, 15247525, 15247526, - 15247527, 15247528, 15247529, 15247530, 15247531, 15247532, 15247533, 15247534, 15247535, 15247536, 15247537, 15247538, 15247539, 15247540, 15247541, - 15247542, 15247543, 15247544, 15247545, 15247546, 15247547, 15247548, 15247549, 15247551, 15247744, 15247745, 15247746, 15247747, 15247748, 15247749, - 15247750, 15247751, 15247753, 15247754, 15247755, 15247756, 15247757, 15247758, 15247759, 15247760, 15247761, 15247762, 15247763, 15247764, 15247765, - 15247766, 15247767, 15247768, 15247769, 15247770, 15247771, 15247772, 15247773, 15247774, 0, 15247775, 15247776, 15247777, 15247778, 15247779, - 15247780, 15247781, 15247782, 15247783, 15247784, 15247785, 15247786, 15247787, 15247788, 15247789, 15247790, 15247791, 15247792, 15247793, 15247794, - 15247795, 15247796, 15247797, 15247798, 15247799, 15247800, 15247802, 15247803, 15247804, 15247805, 15247806, 15247807, 15248000, 15119796, 15052691, - 15246229, 15311492, 15249835, 15313325, 15317171, 15120522, 15042212, 15041923, 15048355, 15245953, 15044255, 15110068, 15253141, 15047597, 15045016, - 15047814, 15174847, 15121040, 15187096, 15253404, 15240081, 15107263, 15106216, 15309218, 15113136, 15186598, 15251082, 15251331, 15307429, 15053491, - 15184548, 15113352, 15106726, 15308933, 15237272, 14989969, 15303591, 15043712, 15309224, 15041921, 15253392, 15242676, 15304093, 15112597, 15310773, - 15052181, 15043741, 15179960, 15113602, 15114429, 15045513, 15172030, 15052464, 15252925, 15042189, 15047848, 15045297, 15111314, 15112834, 15250846, - 15250819, 15238287, 15241644, 15303085, 15184799, 15042495, 15243195, 15113891, 15112105, 15122081, 15243940, 15252097, 15047082, 15302816, 15178370, - 15172022, 15173541, 15250595, 15109033, 15042713, 15119293, 15250620, 15106190, 15049374, 15107726, 15113150, 15250848, 15108494, 15046323, 15120547, - 15113389, 15252903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15248001, 15248002, 15248003, 15248004, 15248005, 15248006, 15248007, 15248008, - 15248011, 15248012, 15248013, 15248014, 15248015, 15248016, 15248017, 15248018, 15248020, 15248021, 15248022, 15248023, 15248024, 15248025, 15248026, - 15248027, 15248028, 15248029, 15248030, 15248031, 15248032, 15248033, 15248034, 15248035, 15248036, 15248037, 15248038, 15248039, 15248040, 15248041, - 15248042, 15248043, 15248044, 15248045, 15248046, 15248047, 15248048, 15248049, 15248050, 15248051, 15248052, 15248053, 15248054, 15248055, 15248056, - 15248057, 15248058, 15248059, 15248060, 15248061, 15248062, 15248063, 15248256, 15248257, 15248258, 0, 15248259, 15248260, 15248261, 15248262, - 15248263, 15248264, 15248265, 15248266, 15248267, 15248268, 15248269, 15248270, 15248271, 15248272, 15248273, 15248274, 15248275, 15248276, 15248277, - 15248278, 15248279, 15248280, 15248281, 15248282, 15248283, 15248284, 15248285, 15248286, 15248287, 15248288, 15248289, 15248290, 15248291, 15307681, - 15308728, 15178920, 15114373, 15115944, 15045259, 14989709, 15172280, 15249288, 15110552, 15111819, 15052421, 15182468, 15040698, 15052712, 15179451, - 15118241, 15247801, 15184536, 15119038, 15178639, 15111849, 15253143, 15053997, 15053205, 15243448, 15114376, 15044000, 15108248, 15182745, 15120795, - 15186877, 15116447, 15182752, 15056304, 15121587, 15056032, 15109772, 15120040, 15113622, 14989448, 15054992, 15250598, 14990231, 15238016, 15177908, - 15309468, 15109019, 15112365, 15108542, 15119036, 15250869, 15173031, 15187369, 15041926, 15237767, 15044524, 15303086, 15108760, 15045554, 15244208, - 15253145, 15237253, 15307927, 15242391, 15253401, 15119769, 15175565, 15111839, 15178911, 15176836, 15179943, 15239099, 15250590, 15307400, 14991014, - 15113877, 15177401, 15249290, 15309959, 15109295, 15308167, 15308981, 15241912, 15109283, 15179137, 15056513, 15174576, 14989961, 15106196, 15111604, - 15109039, 15117731, 15111359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15248292, 15248293, 15248294, 15248295, 15248296, 15248297, 15248298, - 15248299, 15248300, 15248301, 15248302, 15248303, 15248304, 15248305, 15248306, 15248307, 15248308, 15248309, 15248310, 15248311, 15248312, 15248313, - 15248314, 15248315, 15248316, 15248317, 15248318, 15248319, 15248512, 15248513, 15248514, 15248515, 15248516, 15248517, 15248518, 15248520, 15248521, - 15248522, 15248523, 15248524, 15248525, 15248526, 15248527, 15248528, 15248529, 15248530, 15248531, 15248532, 15248533, 15248534, 15248535, 15248536, - 15248537, 15248538, 15248539, 15248540, 15248541, 15248542, 15248543, 15248544, 15248545, 15248546, 15248547, 0, 15248548, 15248549, 15248551, - 15248552, 15248553, 15248554, 15248555, 15248556, 15248557, 15248558, 15248559, 15248560, 15248561, 15248562, 15248563, 15248564, 15248565, 15248566, - 15248567, 15248568, 15248569, 15248570, 15248571, 15248572, 15248573, 15248574, 15248575, 15248768, 15248769, 15248770, 15248771, 15248772, 15248773, - 15055015, 15177607, 15303569, 15249281, 15239837, 15113885, 15111343, 15044785, 15244440, 15179685, 15237794, 15238274, 15118721, 14989707, 15186823, - 15237516, 15178676, 15115405, 15117974, 15108519, 15040700, 14990980, 15048064, 15109255, 15117730, 15251134, 15044522, 15112104, 15186616, 15056791, - 15109274, 15109815, 15239091, 15239092, 15187374, 15055004, 15053721, 15042742, 15112634, 15181737, 15181978, 15250600, 15172249, 15177620, 15121310, - 15119035, 15182482, 14989485, 15178629, 15056800, 15307423, 15245751, 15186824, 15181709, 15237823, 15304589, 14990258, 14990487, 15239327, 15045032, - 15054750, 15119538, 15249292, 15184549, 15252916, 15237784, 15055002, 15045266, 15178417, 15052441, 15112380, 15313572, 15175584, 15114410, 15244187, - 15113393, 15174826, 15249336, 15249307, 15302800, 15182777, 15172507, 15173038, 15108996, 15179433, 15046833, 14989499, 15241623, 15114161, 15043241, - 15244160, 15250606, 15307704, 15183249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15248774, 15248775, 15248776, 15248777, 15248778, 15248779, - 15248780, 15248781, 15248782, 15248783, 15248784, 15248785, 15248786, 15248787, 15248788, 15248789, 15248790, 15248791, 15248792, 15248793, 15248794, - 15248795, 15248796, 15248797, 15248798, 15248799, 15248800, 15248801, 15248802, 15248803, 15248804, 15248805, 15248807, 15248808, 15248809, 15248810, - 15248811, 15248813, 15248814, 15248815, 15248816, 15248817, 15248818, 15248819, 15248820, 15248821, 15248822, 15248823, 15248824, 15248825, 15248826, - 15248827, 15248828, 15248829, 15248830, 15248831, 15249024, 15249025, 15249026, 15249027, 15249028, 15249029, 15249030, 0, 15249031, 15249032, - 15249033, 15249034, 15249035, 15249036, 15249037, 15249038, 15249039, 15249040, 15249041, 15249042, 15249043, 15249044, 15249045, 15249046, 15249047, - 15249048, 15249049, 15249050, 15249051, 15249052, 15249053, 15249054, 15249055, 15249068, 15249073, 15249083, 15249287, 15249296, 15249322, 15249545, - 15249566, 14990735, 15119272, 15181213, 15313339, 15108755, 15173802, 15109053, 14989459, 15179926, 15252908, 15110832, 15250842, 15183750, 15114665, - 15055492, 15246213, 15050374, 15110814, 15049646, 15174326, 15115406, 15307941, 15253437, 15250840, 15048096, 15187072, 15249542, 15042438, 15109513, - 15109017, 15043987, 15114636, 15175842, 15240321, 15304076, 15046020, 15179136, 15172028, 15119754, 15041977, 15045288, 15250820, 15050687, 15121291, - 15120260, 15052188, 15185067, 14990228, 15184317, 15121299, 15052176, 15239082, 15120525, 15052183, 15314051, 15115157, 15251626, 15052439, 15186876, - 15106235, 15186613, 15303353, 15250864, 15050127, 15110029, 15181727, 15251123, 15043986, 15112079, 15181206, 15249285, 15308987, 15186820, 15307451, - 15186562, 15046836, 15304329, 15113344, 15187370, 15052938, 15303093, 15112360, 15054758, 14990736, 15114142, 15040922, 14990748, 15048080, 15055527, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15249592, 15249593, 15249594, 15249595, 15249596, - 15249597, 15249598, 15249599, 15249792, 15249794, 15249795, 15249796, 15249797, 15249800, 15249802, 15249803, 15249805, 15249806, 15249807, 15249808, - 15249809, 15249810, 15249811, 15249812, 15249814, 15249815, 15249816, 15249817, 15249819, 15249820, 15249821, 15249822, 15249823, 15249824, 15249827, - 15249828, 15249829, 15249830, 15249831, 15249832, 15249833, 15249836, 15249837, 15249838, 15249839, 15249840, 15249841, 15249842, 15249844, 15249845, - 15249846, 15249847, 15249851, 15249852, 15249853, 15249854, 15249855, 15250048, 15250049, 15250051, 15250052, 15250054, 15250055, 0, 15250056, - 15250059, 15250061, 15250062, 15250063, 15250064, 15250065, 15250066, 15250067, 15250069, 15250070, 15250071, 15250073, 15250074, 15250075, 15250076, - 15250077, 15250078, 15250079, 15250080, 15250081, 15250082, 15250083, 15250084, 15250085, 15250086, 15250087, 15250088, 15250089, 15250090, 15250091, - 15250092, 15250093, 14989965, 14989452, 15041920, 14989456, 15055807, 15043973, 14989461, 14989976, 14989470, 15314098, 15052204, 15047081, 14989480, - 15181498, 14989503, 15043733, 14989703, 15049901, 15173819, 15044014, 15118480, 15047583, 15238052, 15312535, 15118227, 15179198, 15318167, 14989494, - 14989983, 15318160, 14989724, 14989737, 14989971, 15239816, 15052187, 15046060, 15046799, 14990212, 15044237, 15044253, 15044259, 15044261, 15044270, - 15310245, 15250845, 15043738, 15044533, 15043750, 15043758, 15043774, 15250844, 15044006, 15044003, 15042690, 15042696, 15042702, 15042733, 15042739, - 15042751, 15042944, 15042956, 15042974, 15042977, 15042972, 15241903, 15043005, 15043202, 15043201, 15043216, 15043219, 15042178, 15187348, 14990011, - 14990211, 14990217, 14990210, 14990248, 14990241, 14990251, 14990238, 14990491, 14990259, 14990498, 14990756, 14990261, 14990501, 14990503, 14990473, - 14990507, 14990750, 14990759, 15111352, 14990746, 14990749, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15250094, 15250095, 15250096, 15250097, - 15250098, 15250099, 15250100, 15250101, 15250102, 15250103, 15250104, 15250105, 15250106, 15250107, 15250108, 15250109, 15250110, 15250111, 15250304, - 15250305, 15250306, 15250307, 15250308, 15250309, 15250310, 15250311, 15250312, 15250313, 15250314, 15250315, 15250316, 15250317, 15250318, 15250319, - 15250320, 15250321, 15250322, 15250323, 15250324, 15250325, 15250326, 15250327, 15250328, 15250329, 15250330, 15250331, 15250332, 15250333, 15250334, - 15250335, 15250336, 15250337, 15250338, 15250339, 15250340, 15250341, 15250342, 15250343, 15250344, 15250345, 15250346, 15250347, 15250348, 0, - 15250349, 15250350, 15250351, 15250352, 15250353, 15250354, 15250355, 15250356, 15250357, 15250358, 15250359, 15250360, 15250361, 15250362, 15250363, - 15250364, 15250365, 15250366, 15250367, 15250560, 15250561, 15250562, 15250563, 15250564, 15250565, 15250566, 15250567, 15250568, 15250569, 15250570, - 15250571, 15250572, 15250573, 14990751, 14990743, 14990514, 14990525, 14990774, 14990772, 14990993, 14990985, 14990979, 14990991, 14990782, 14990779, - 14991018, 14990780, 14991020, 14990996, 14991270, 14991272, 14991274, 14991237, 14991258, 14991267, 14991260, 14991249, 14991263, 14991288, 15040681, - 15040908, 14991283, 15040684, 15040655, 15040686, 15040685, 14991294, 15040668, 15040652, 15040677, 15040680, 15040958, 15040899, 15040917, 15040904, - 15040910, 15040940, 15040955, 15041189, 15041191, 15041193, 15041210, 15041430, 15041670, 15041453, 15041452, 15041446, 15041454, 15041671, 15041675, - 14990237, 15118525, 14990744, 14990757, 14991246, 15318688, 15118726, 15184308, 15041966, 15054781, 15317897, 15312536, 15042177, 15049876, 15043513, - 15043725, 15247495, 15043728, 15042475, 15049881, 15041941, 14989984, 15041942, 14990003, 15245742, 15245988, 14990005, 15238292, 15246226, 15181440, - 15051956, 15245443, 15187640, 15042219, 15042225, 15042237, 15042236, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15250574, 15250575, 15250576, - 15250577, 15250578, 15250579, 15250580, 15250581, 15250582, 15250583, 15250584, 15250585, 15250586, 15250587, 15250588, 15250592, 15250833, 15250834, - 15250839, 15250847, 15250853, 15250856, 15250857, 15250858, 15250860, 15250862, 15250863, 15250865, 15250866, 15250872, 15250873, 15250874, 15250875, - 15250876, 15250877, 15250878, 15250879, 15251072, 15251074, 15251075, 15251078, 15251079, 15251080, 15251081, 15251084, 15251085, 15251086, 15251087, - 15251088, 15251090, 15251091, 15251093, 15251094, 15251095, 15251096, 15251097, 15251098, 15251099, 15251100, 15251101, 15251102, 15251104, 15251105, - 0, 15251106, 15251108, 15251109, 15251110, 15251111, 15251112, 15251113, 15251114, 15251115, 15251116, 15251117, 15251118, 15251119, 15251120, - 15251122, 15251126, 15251127, 15251129, 15251131, 15251133, 15251328, 15251329, 15251330, 15251333, 15251335, 15251336, 15251337, 15251338, 15251341, - 15251344, 15251346, 15251347, 15251348, 15042439, 15042198, 15042210, 15042213, 15249056, 15249062, 15249063, 15249066, 15249076, 15249077, 15249079, - 15249282, 15249283, 15249291, 15249295, 15249294, 15249298, 15249299, 15249300, 15249302, 15249304, 15249305, 15249308, 15249311, 15249312, 15249316, - 15249320, 15249321, 15249326, 15249328, 15249331, 15249334, 15249337, 15249340, 15249343, 15249536, 15249538, 15249540, 15249543, 15249548, 15249551, - 15249553, 15249554, 15249556, 15249557, 15249558, 15249561, 15249563, 15249560, 15249565, 15249567, 15249568, 15249569, 15249573, 15249575, 15249578, - 15249579, 15249582, 15249583, 15249586, 15249587, 15249589, 15249590, 15044009, 15044026, 15308957, 15308962, 15308961, 15308977, 15308970, 15308989, - 15308988, 15309186, 15309193, 15309204, 15309215, 15309223, 15309228, 15309234, 15309236, 15309448, 15309453, 15309463, 15309488, 15303319, 15303323, - 15303325, 15303321, 15303340, 15303329, 15303348, 15303347, 15303350, 15303354, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15251349, 15251352, - 15251353, 15251356, 15251360, 15251361, 15251362, 15251365, 15251366, 15251367, 15251369, 15251373, 15251374, 15251376, 15251377, 15251378, 15251380, - 15251382, 15251388, 15251390, 15251391, 15251584, 15251585, 15251586, 15251587, 15251588, 15251590, 15251591, 15251592, 15251595, 15251597, 15251598, - 15251600, 15251601, 15251602, 15251603, 15251605, 15251606, 15251607, 15251608, 15251609, 15251610, 15251611, 15251612, 15251616, 15251617, 15251620, - 15251621, 15251622, 15251623, 15251624, 15251627, 15251629, 15251632, 15251634, 15251635, 15251636, 15251638, 15251639, 15251640, 15251643, 15251644, - 15251646, 0, 15251647, 15251843, 15251845, 15251846, 15251852, 15251853, 15251854, 15251855, 15251856, 15251859, 15251860, 15251861, 15251862, - 15251863, 15251864, 15251866, 15251867, 15251868, 15251869, 15251870, 15251871, 15251872, 15251873, 15251874, 15251875, 15251876, 15251877, 15251879, - 15251880, 15251882, 15251883, 15251886, 15251889, 15303352, 15303344, 15303567, 15303557, 15303358, 15303568, 15303556, 15303559, 15303571, 15303590, - 15303586, 15303580, 15303575, 15303579, 15303595, 15303599, 15303614, 15303812, 15303842, 15303838, 15303843, 15303857, 15303855, 15303865, 15304067, - 15304070, 15042701, 15050114, 15043234, 15043244, 15043245, 15043262, 15045567, 15043472, 15043478, 15043504, 15044511, 15173550, 15179661, 15055796, - 15042485, 15042492, 15314095, 15044278, 15056001, 15177114, 15054767, 15048076, 15048361, 15048353, 15049150, 15049404, 15049605, 15049617, 15047849, - 15047852, 15047850, 15047859, 15047865, 15047854, 15047855, 15048092, 15047867, 15048066, 15048105, 15048325, 15048107, 15048326, 15048124, 15048123, - 15048104, 15048109, 15048118, 15048115, 15048365, 15048356, 15048332, 15048370, 15048591, 15048359, 15048372, 15048339, 15048352, 15048597, 15048600, - 15048602, 15048601, 15048594, 15048376, 15048628, 15048623, 15048632, 15048612, 15048605, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15251891, - 15251893, 15251895, 15251896, 15251897, 15251898, 15251899, 15251901, 15251902, 15252096, 15252098, 15252099, 15252100, 15252102, 15252104, 15252105, - 15252106, 15252107, 15252108, 15252109, 15252110, 15252113, 15252114, 15252115, 15252117, 15252118, 15252119, 15252120, 15252121, 15252122, 15252123, - 15252125, 15252127, 15252128, 15252129, 15252130, 15252131, 15252132, 15252133, 15252134, 15252135, 15252136, 15252137, 15252138, 15252141, 15252142, - 15252144, 15252145, 15252147, 15252148, 15252149, 15252150, 15252151, 15252152, 15252153, 15252155, 15252156, 15252157, 15252158, 15252159, 15252352, - 15252353, 15252354, 0, 15252355, 15252356, 15252357, 15252358, 15252359, 15252360, 15252361, 15252362, 15252363, 15252364, 15252365, 15252367, - 15252368, 15252369, 15252370, 15252371, 15252372, 15252373, 15252374, 15252375, 15252376, 15252377, 15252378, 15252379, 15252380, 15252381, 15252382, - 15252383, 15252384, 15252385, 15252386, 15252387, 15252388, 15048843, 15048845, 15048637, 15048621, 15048832, 15048862, 15048857, 15049092, 15048864, - 15049125, 15049132, 15049345, 15049353, 15049370, 15049344, 15312552, 15318169, 15108031, 15239609, 15239613, 15239615, 15239823, 15239818, 15239848, - 15239812, 15239822, 15239825, 15239831, 15239833, 15239851, 15239864, 15239870, 15239856, 15240072, 15240074, 15240099, 15239832, 15239863, 15239854, - 15240075, 15240076, 15240065, 15239849, 15239860, 15239841, 15239850, 15239839, 15240068, 15240078, 15239844, 15240097, 15240329, 15240119, 15240100, - 15240335, 15240327, 15240092, 15240116, 15240082, 15240088, 15240332, 15240123, 15240083, 15240337, 15240346, 15240326, 15240340, 15240341, 15240096, - 15240085, 15240348, 15240593, 15240603, 15240604, 15240328, 15240850, 15240380, 15240372, 15240369, 15240859, 15240606, 15240367, 15240591, 15240583, - 15240579, 15240607, 15240576, 15240343, 15240608, 15240365, 15240378, 15240371, 15240614, 15240613, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15252389, 15252390, 15252391, 15252392, 15252393, 15252394, 15252395, 15252396, 15252397, 15252398, 15252399, 15252400, 15252401, 15252402, 15252403, - 15252404, 15252405, 15252406, 15252407, 15252408, 15252409, 15252410, 15252411, 15252412, 15252413, 15252414, 15252415, 15252608, 15252609, 15252610, - 15252611, 15252612, 15252613, 15252614, 15252615, 15252616, 15252617, 15252618, 15252619, 15252620, 15252621, 15252622, 15252623, 15252624, 15252625, - 15252626, 15252627, 15252628, 15252629, 15252630, 15252631, 15252632, 15252633, 15252634, 15252635, 15252636, 15252637, 15252638, 15252639, 15252640, - 15252641, 15252642, 15252643, 0, 15252644, 15252645, 15252646, 15252647, 15252648, 15252649, 15252650, 15252651, 15252652, 15252653, 15252654, - 15252655, 15252656, 15252657, 15252658, 15252659, 15252660, 15252661, 15252662, 15252663, 15252664, 15252665, 15252666, 15252667, 15252668, 15252669, - 15252670, 15252671, 15252864, 15252865, 15252866, 15252867, 15252868, 15240616, 15240347, 15240617, 15240620, 15240618, 15240621, 15240622, 15240880, - 15240632, 15240883, 15240884, 15240864, 15240874, 15240851, 15240860, 15240837, 15240636, 15240886, 15240873, 15240637, 15240888, 15240635, 15240856, - 15240862, 15240872, 15240890, 15240892, 15241089, 15241345, 15241125, 15241112, 15048839, 15241368, 15241355, 15241117, 15241149, 15241110, 15241372, - 15241400, 15241361, 15241350, 15241108, 15241119, 15241359, 15241347, 15241144, 15241145, 15241130, 15241093, 15241088, 15241382, 15241136, 15241121, - 15241628, 15241617, 15241626, 15241625, 15241651, 15241863, 15241864, 15241658, 15241865, 15241656, 15241404, 15241606, 15241641, 15241654, 15241868, - 15241870, 15241393, 15241645, 15242113, 15242125, 15242128, 15242150, 15241917, 15242131, 15242122, 15241919, 15241914, 15242144, 15241889, 15241913, - 15241908, 15241879, 15242149, 15242147, 15242380, 15176845, 15242424, 15242160, 15242425, 15242399, 15242426, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15252869, 15252870, 15252871, 15252872, 15252873, 15252874, 15252875, 15252876, 15252877, 15252878, 15252879, 15252880, 15252881, 15252882, - 15252883, 15252884, 15252885, 15252886, 15252887, 15252888, 15252889, 15252890, 15252891, 15252892, 15252893, 15252894, 15252895, 15252896, 15252897, - 15252898, 15252899, 15252900, 15252901, 15252906, 15253120, 15253132, 15253138, 15253149, 15253152, 15253153, 15253154, 15253156, 15253157, 15253158, - 15253159, 15253162, 15253164, 15253165, 15253166, 15253167, 15253170, 15253171, 15253172, 15253173, 15253175, 15253176, 15253178, 15253179, 15253180, - 15253183, 15253376, 15253379, 15253382, 0, 15253385, 15253386, 15253387, 15253388, 15253389, 15253391, 15253394, 15253398, 15253399, 15253402, - 15253408, 15253409, 15253411, 15253415, 15253420, 15253423, 15253425, 15253426, 15253428, 15253429, 15253430, 15253434, 15253435, 15253436, 15253438, - 15253439, 15302791, 15302792, 15302796, 15302798, 15302803, 15302805, 15302808, 15242646, 15242427, 15242175, 15242172, 15242649, 15242632, 15242664, - 15242660, 15242654, 15242682, 15179426, 15242627, 15242674, 15242683, 15242916, 15242920, 15242887, 15242895, 15242681, 15242926, 15242908, 15242885, - 15242937, 15242935, 15242928, 15243155, 15243137, 15243164, 15243199, 15243431, 15243397, 15243433, 15243414, 15243452, 15055806, 15056008, 15049916, - 15050113, 15237303, 15050133, 15050138, 15050136, 15043727, 15052962, 15052965, 15052972, 15052980, 15108492, 15108522, 15108767, 15108795, 15109002, - 15109018, 15109015, 15109038, 15109282, 15109046, 15109305, 15109515, 15109507, 15109805, 15110070, 15109553, 15109562, 15109774, 15109812, 15109549, - 15109804, 15109770, 15109545, 15109806, 15109820, 15110066, 15110072, 15110048, 15110079, 15110020, 15110046, 15110030, 15110546, 15110022, 15109822, - 15110533, 15110529, 15110283, 15110299, 15110304, 15110284, 15110310, 15110305, 15110558, 15110788, 15110573, 15110806, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15302809, 15302812, 15302819, 15302820, 15302821, 15302823, 15302824, 15302825, 15302826, 15302827, 15302828, 15302832, 15302833, - 15302834, 15302835, 15302836, 15302839, 15302841, 15302842, 15302845, 15302847, 15303040, 15303043, 15303045, 15303046, 15303048, 15303049, 15303050, - 15303051, 15303052, 15303054, 15303060, 15303061, 15303062, 15303065, 15303066, 15303068, 15303069, 15303070, 15303071, 15303072, 15303073, 15303076, - 15303078, 15303079, 15303081, 15303082, 15303083, 15303084, 15303087, 15303088, 15303089, 15303090, 15303091, 15303094, 15303095, 15303096, 15303097, - 15303098, 15303099, 15303100, 15303102, 15303297, 0, 15303300, 15303301, 15303302, 15303303, 15303305, 15303306, 15303308, 15303309, 15303310, - 15303311, 15303312, 15303314, 15303316, 15303318, 15303320, 15303322, 15303324, 15303326, 15303327, 15303328, 15303332, 15303333, 15303335, 15303336, - 15303337, 15303339, 15303341, 15303346, 15303351, 15303356, 15303357, 15303359, 15303552, 15110586, 15110839, 15110840, 15110809, 15110842, 15111040, - 15111056, 15111063, 15111076, 15111074, 15111305, 15111333, 15111342, 15056011, 15056786, 15176857, 15056017, 15043999, 15044529, 15044541, 15044521, - 15044520, 15044539, 15044754, 15044758, 15044742, 15045003, 15045010, 15045011, 15045012, 15045014, 15044995, 15044769, 15045015, 15045017, 15044771, - 15044786, 15045250, 15045268, 15045047, 15045041, 15045028, 15045274, 15045275, 15045252, 15045046, 15045030, 15045277, 15045520, 15045293, 15045506, - 15045300, 15045522, 15045287, 15045286, 15045523, 15045524, 15045042, 15045283, 15045525, 15045307, 15045311, 15045516, 15045529, 15045530, 15045532, - 15045289, 15045290, 15045284, 15045533, 15045519, 15045534, 15045787, 15045543, 15045792, 15045565, 15045780, 15045555, 15045794, 15045795, 15045775, - 15045777, 15045799, 15045802, 15046055, 15046287, 15046325, 15046025, 15046061, 15046017, 15046037, 15045823, 15046032, 15045820, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15303554, 15303555, 15303558, 15303560, 15303561, 15303563, 15303564, 15303565, 15303570, 15303572, 15303573, 15303574, - 15303576, 15303577, 15303578, 15303582, 15303583, 15303584, 15303587, 15303588, 15303589, 15303593, 15303594, 15303596, 15303598, 15303600, 15303601, - 15303602, 15303603, 15303605, 15303606, 15303607, 15303609, 15303610, 15303611, 15303612, 15303615, 15303808, 15303809, 15303811, 15303813, 15303814, - 15303815, 15303816, 15303817, 15303818, 15303819, 15303820, 15303821, 15303822, 15303823, 15303824, 15303825, 15303826, 15303827, 15303828, 15303829, - 15303830, 15303831, 15303832, 15303834, 15303835, 15303836, 0, 15303837, 15303839, 15303840, 15303841, 15303844, 15303845, 15303846, 15303847, - 15303848, 15303849, 15303850, 15303851, 15303852, 15303853, 15303854, 15303856, 15303858, 15303859, 15303860, 15303861, 15303862, 15303863, 15303864, - 15303866, 15303867, 15303868, 15303869, 15303870, 15303871, 15304064, 15304065, 15304066, 15304068, 15045815, 15046038, 15046069, 15046070, 15046071, - 15045811, 15045808, 15046044, 15046283, 15046546, 15046275, 15046321, 15046329, 15046280, 15046273, 15046303, 15046078, 15046550, 15046289, 15046075, - 15046559, 15046333, 15046334, 15046292, 15046297, 15046570, 15046583, 15046537, 15046815, 15046545, 15046571, 15046572, 15046548, 15046566, 15046557, - 15046532, 15046575, 15046565, 15046578, 15046579, 15046540, 15046541, 15046568, 15046581, 15046564, 15253140, 15046814, 15046792, 15046796, 15046785, - 15046820, 15046819, 15046590, 15046784, 15046823, 15046829, 15047064, 15046841, 15047063, 15046828, 15047053, 15047074, 15047065, 15047068, 15047052, - 15047060, 15047302, 15047076, 15047089, 15047083, 15047099, 15047100, 15047301, 15047315, 15047343, 15047572, 15047575, 15047581, 15047585, 15047605, - 15047595, 15047609, 15047615, 15047812, 15047818, 15047817, 15047836, 15054991, 15055001, 15054996, 15054993, 15055025, 15055035, 15055036, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15304069, 15304071, 15304072, 15304081, 15304083, 15304084, 15304085, 15304086, 15304088, 15304089, 15304091, - 15304092, 15304095, 15304096, 15304102, 15304103, 15304104, 15304107, 15304109, 15304115, 15304122, 15304123, 15304124, 15304320, 15304321, 15304322, - 15304323, 15304324, 15304326, 15304328, 15304330, 15304334, 15304335, 15304339, 15304340, 15304341, 15304342, 15304343, 15304344, 15304345, 15304348, - 15304349, 15304350, 15304351, 15304352, 15304353, 15304356, 15304357, 15304358, 15304359, 15304360, 15304361, 15304363, 15304364, 15304368, 15304369, - 15304370, 15304371, 15304374, 15304375, 15304376, 15304377, 15304379, 0, 15304380, 15304381, 15304382, 15304383, 15304576, 15304577, 15304578, - 15304579, 15304580, 15304581, 15304582, 15304584, 15304587, 15304592, 15304594, 15304595, 15304596, 15304597, 15304598, 15304599, 15304600, 15304601, - 15304602, 15304603, 15304605, 15304606, 15304607, 15304608, 15304609, 15304610, 15304611, 15304612, 15304613, 15055031, 15055236, 15055252, 15055259, - 15055262, 15055265, 15053452, 15053242, 15053453, 15053456, 15053462, 15053448, 15053464, 15053465, 15053457, 15053466, 15053468, 15053493, 15053474, - 15053501, 15053484, 15053483, 15053489, 15053475, 15053697, 15053495, 15053700, 15053714, 15053732, 15053707, 15053733, 15053954, 15053955, 15053991, - 15053990, 15053998, 15053988, 15053982, 15053958, 15053979, 15054232, 15054014, 15054004, 15054013, 15054252, 15054235, 15054255, 15054237, 15054251, - 15054219, 15054218, 15054249, 15054260, 15054466, 15054489, 15054493, 15249843, 15054519, 15054725, 15056307, 15056311, 15056514, 15056519, 15056521, - 15056524, 15056533, 15056537, 15056540, 15056552, 15056557, 15056565, 15056572, 15245730, 15056289, 15174317, 15174320, 15174324, 15174327, 15174328, - 15174531, 15174529, 15174542, 15174541, 15174546, 15174568, 15174575, 15174569, 15174578, 15174580, 15174583, 15174785, 15174579, 15174787, 15174586, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15304614, 15304615, 15304616, 15304617, 15304618, 15304619, 15304620, 15304621, 15304622, 15304623, - 15304624, 15304625, 15304626, 15304627, 15304628, 15304629, 15304630, 15304631, 15304632, 15304633, 15304634, 15304635, 15304636, 15304637, 15304638, - 15304639, 15304832, 15304833, 15304834, 15304835, 15304836, 15304837, 15304838, 15304839, 15304840, 15304841, 15304842, 15304843, 15304844, 15304845, - 15304846, 15304847, 15304848, 15304849, 15304850, 15304851, 15304852, 15304853, 15304854, 15304855, 15304856, 15304857, 15304858, 15304859, 15304860, - 15304861, 15304862, 15304863, 15304864, 15304865, 15304866, 15304867, 15304868, 0, 15304869, 15304870, 15304871, 15304872, 15304873, 15304874, - 15304875, 15304876, 15304877, 15304878, 15304879, 15304880, 15304881, 15304882, 15304883, 15304884, 15304885, 15304886, 15304887, 15304888, 15304889, - 15304890, 15304891, 15304892, 15304893, 15304894, 15304895, 15305088, 15305089, 15305090, 15305091, 15305092, 15305093, 15174587, 15174807, 15174803, - 15174817, 15174794, 15174814, 15174813, 15174805, 15174818, 15174841, 15174821, 15174828, 15174840, 15174833, 15175056, 15175053, 15175063, 15175072, - 15175084, 15175087, 15175102, 15239323, 15049893, 15311783, 15049892, 15049858, 15312291, 15312295, 15312296, 15312297, 15312298, 15312299, 15312300, - 15312308, 15312311, 15312317, 15312512, 15312516, 15312519, 15312522, 15312525, 15312528, 15312529, 15312531, 15312532, 15312533, 15055488, 15055505, - 15055499, 15055510, 15055525, 15055520, 15055545, 15055541, 15055550, 15055539, 15250835, 15055762, 15055761, 15055771, 15055784, 15055786, 15238842, - 15056772, 15056777, 15056790, 15056783, 15106179, 15056814, 15106180, 15056801, 15056804, 15056830, 15106181, 15106182, 15056810, 15056813, 15056824, - 15106201, 15106229, 15106214, 15106203, 15106191, 15106189, 15106217, 15106219, 15106186, 15106239, 15106209, 15106488, 15106489, 15106491, 15106490, - 15106434, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15305094, 15305095, 15305096, 15305097, 15305098, 15305099, 15305100, 15305101, 15305102, - 15305103, 15305104, 15305105, 15305106, 15305107, 15305108, 15305109, 15305110, 15305111, 15305112, 15305113, 15305114, 15305115, 15305116, 15305117, - 15305118, 15305119, 15305120, 15305121, 15305122, 15305123, 15305124, 15305125, 15305126, 15305127, 15305128, 15305129, 15305130, 15305131, 15305132, - 15305133, 15305134, 15305135, 15305136, 15305137, 15305138, 15305139, 15305141, 15305142, 15305143, 15305144, 15305145, 15305146, 15305147, 15305148, - 15305149, 15305150, 15305151, 15305344, 15305345, 15305346, 15305347, 15305348, 15305349, 0, 15305350, 15305351, 15305352, 15305353, 15305354, - 15305355, 15305356, 15305357, 15305359, 15305360, 15305361, 15305362, 15305363, 15305364, 15305365, 15305366, 15305367, 15305368, 15305369, 15305370, - 15305371, 15305372, 15305373, 15305374, 15305375, 15305376, 15305377, 15305378, 15305379, 15305380, 15305381, 15305382, 15305383, 15106474, 15106493, - 15106710, 15106714, 15106733, 15106717, 15106691, 15106706, 15106700, 15106715, 15106988, 15106747, 15106737, 15106973, 15106968, 15106950, 15106970, - 15106740, 15107232, 15107238, 15107221, 15107235, 15106996, 15107200, 15107214, 15107243, 15107466, 15107509, 15107756, 15107732, 15107751, 15107767, - 15107988, 15108021, 15056797, 15309491, 15308713, 15308715, 15308721, 15308723, 15308725, 15308726, 15308732, 15308734, 15308931, 15308932, 15308934, - 15308936, 15308938, 15308939, 15308940, 15308941, 15308943, 15308946, 15308949, 15308950, 15308951, 15308953, 15308954, 14989484, 15173823, 15108245, - 15118517, 15118740, 15118748, 15118730, 15119011, 15118981, 15118992, 15118996, 15118988, 15118760, 15118761, 15118772, 15118774, 15118982, 15119017, - 15119248, 15119252, 15119021, 15119287, 15119288, 15119281, 15119255, 15119026, 15119264, 15119254, 15119290, 15119275, 15119278, 15119025, 15119251, - 15119279, 15119294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15305384, 15305385, 15305386, 15305387, 15305388, 15305389, 15305391, 15305392, - 15305393, 15305394, 15305395, 15305396, 15305397, 15305398, 15305399, 15305400, 15305401, 15305402, 15305403, 15305404, 15305405, 15305406, 15305407, - 15305600, 15305601, 15305602, 15305603, 15305604, 15305605, 15305606, 15305607, 15305609, 15305610, 15305611, 15305612, 15305613, 15305614, 15305615, - 15305616, 15305617, 15305618, 15305619, 15305620, 15305621, 15305622, 15305623, 15305624, 15305625, 15305626, 15305627, 15305628, 15305629, 15305630, - 15305631, 15305632, 15305633, 15305634, 15305635, 15305636, 15305637, 15305638, 15305639, 15305640, 0, 15305641, 15305642, 15305643, 15305644, - 15305645, 15305646, 15305647, 15305648, 15305649, 15305650, 15305651, 15305652, 15305653, 15305654, 15305655, 15305656, 15305657, 15305658, 15305659, - 15305660, 15305661, 15305662, 15305663, 15305856, 15305857, 15305858, 15305859, 15305860, 15305861, 15305862, 15305863, 15305864, 15305865, 15119545, - 15119527, 15119500, 15119747, 15119752, 15119495, 15119492, 15119513, 15119502, 15119531, 15119757, 15119534, 15119541, 15119514, 15119759, 15119762, - 15119764, 15119539, 15120017, 15119791, 15120030, 15120032, 15119774, 15120019, 15120020, 15119772, 15119776, 15119804, 15119779, 15120538, 15120263, - 15120261, 15120286, 15120526, 15120063, 15120288, 15120529, 15120294, 15120285, 15120281, 15120534, 15120043, 15120524, 15120046, 15120555, 15120814, - 15120782, 15120811, 15121074, 15120799, 15121030, 15120787, 15120788, 15120562, 15120549, 15120772, 15121311, 15121073, 15121048, 15121312, 15121581, - 15121314, 15121061, 15121063, 15121085, 15121083, 15121079, 15121303, 15121076, 15121295, 15121039, 15121282, 15121055, 15121826, 15121798, 15121799, - 15121572, 15121557, 15121337, 15121583, 15121590, 15121803, 15121844, 15121578, 15121545, 15121577, 15122057, 15122061, 15122060, 15121848, 15121842, - 15121852, 15121850, 15122321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15305866, 15305867, 15305868, 15305869, 15305870, 15305871, 15305872, - 15305873, 15305874, 15305875, 15305876, 15305877, 15305878, 15305879, 15305880, 15305881, 15305882, 15305883, 15305884, 15305885, 15305886, 15305887, - 15305888, 15305889, 15305890, 15305891, 15305892, 15305893, 15305894, 15305895, 15305896, 15305897, 15305898, 15305899, 15305900, 15305901, 15305902, - 15305903, 15305904, 15305905, 15305906, 15305907, 15305908, 15305909, 15305910, 15305911, 15305912, 15305913, 15305914, 15305915, 15305916, 15305917, - 15305919, 15306112, 15306113, 15306114, 15306115, 15306116, 15306117, 15306118, 15306119, 15306120, 15306121, 0, 15306122, 15306123, 15306124, - 15306125, 15306126, 15306127, 15306128, 15306129, 15306130, 15306131, 15306132, 15306133, 15306134, 15306135, 15306136, 15306137, 15306138, 15306139, - 15306140, 15306141, 15306142, 15306143, 15306144, 15306145, 15306146, 15306147, 15306148, 15306149, 15306150, 15306151, 15306152, 15306153, 15306155, - 15122313, 15122087, 15122105, 15122102, 15122306, 15122337, 15122350, 15122334, 15122336, 15122351, 15171738, 15171747, 15171739, 15171769, 15171765, - 15171983, 15171998, 15052416, 15052420, 15052437, 15052435, 15052453, 15052472, 15176879, 15313566, 15110324, 15052708, 15052718, 15246512, 15052720, - 15251847, 15248519, 15253174, 15253395, 15253397, 15253413, 15253422, 15253412, 15253417, 15253414, 15253427, 15253416, 15302789, 15302788, 15302795, - 15302822, 15302801, 15302797, 15302806, 15302817, 15302837, 15302838, 15302829, 15302831, 15303044, 15303057, 15303058, 15303056, 15303080, 15303064, - 15303074, 15303067, 15112889, 15303092, 15303101, 15303298, 15303304, 15303299, 15303307, 15056272, 15056279, 15056278, 15056280, 15052987, 15045291, - 15053200, 15053209, 15052209, 15053219, 15053222, 15187644, 15056042, 15056041, 15056045, 15239604, 15056060, 15314107, 15053230, 15050369, 15050371, - 15050381, 15050409, 15050410, 15050403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15306156, 15306157, 15306158, 15306159, 15306160, 15306161, - 15306162, 15306163, 15306164, 15306165, 15306166, 15306167, 15306168, 15306169, 15306170, 15306171, 15306172, 15306173, 15306174, 15306175, 15306368, - 15306369, 15306370, 15306371, 15306372, 15306373, 15306374, 15306375, 15306376, 15306377, 15306378, 15306379, 15306380, 15306381, 15306382, 15306384, - 15306385, 15306386, 15306387, 15306388, 15306389, 15306390, 15306391, 15306392, 15306393, 15306394, 15306395, 15306396, 15306397, 15306398, 15306399, - 15306400, 15306401, 15306402, 15306403, 15306404, 15306405, 15306406, 15306407, 15306408, 15306409, 15306410, 15306411, 0, 15306412, 15306413, - 15306414, 15306415, 15306416, 15306417, 15306418, 15306419, 15306420, 15306421, 15306422, 15306423, 15306424, 15306425, 15306426, 15306427, 15306428, - 15306429, 15306430, 15306431, 15306624, 15306625, 15306626, 15306627, 15306628, 15306629, 15306630, 15306631, 15306632, 15306633, 15306635, 15306636, - 15306637, 15050391, 15050634, 15050411, 15050398, 15050404, 15050642, 15050418, 15050415, 15050647, 15050430, 15050885, 15050886, 15050653, 15050888, - 15050659, 15050648, 15050681, 15050892, 15050889, 15050930, 15050932, 15050897, 15050915, 15050899, 15051136, 15051175, 15051146, 15051157, 15050940, - 15051170, 15051189, 15238060, 15051434, 15051419, 15051191, 15051194, 15051454, 15051691, 15051442, 15051666, 15051668, 15051448, 15051680, 15051683, - 15051697, 15051670, 15051686, 15051672, 15051676, 15051913, 15051927, 15051926, 15051954, 15051959, 15052160, 15052949, 15052956, 15052186, 15052197, - 15052211, 15052177, 15052179, 15052194, 15313333, 15313335, 15313336, 15313338, 15313343, 15313341, 15313536, 15313537, 15313541, 15313544, 15313546, - 15313552, 15313554, 15313555, 15313558, 15313560, 15313563, 15313564, 15313565, 15313567, 15313568, 15313570, 15313571, 15313573, 15313575, 15186591, - 15186593, 15186595, 15186597, 15186600, 15186601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15306638, 15306639, 15306640, 15306641, 15306642, - 15306643, 15306644, 15306645, 15306647, 15306648, 15306649, 15306650, 15306651, 15306652, 15306653, 15306654, 15306655, 15306656, 15306657, 15306658, - 15306659, 15306660, 15306661, 15306662, 15306663, 15306664, 15306665, 15306666, 15306667, 15306668, 15306669, 15306670, 15306671, 15306672, 15306673, - 15306674, 15306675, 15306676, 15306677, 15306678, 15306679, 15306680, 15306681, 15306682, 15306683, 15306684, 15306685, 15306686, 15306687, 15306880, - 15306881, 15306882, 15306883, 15306884, 15306885, 15306886, 15306887, 15306888, 15306889, 15306890, 15306891, 15306892, 15306893, 0, 15306894, - 15306895, 15306896, 15306897, 15306898, 15306899, 15306900, 15306901, 15306902, 15306903, 15306904, 15306905, 15306906, 15306907, 15306908, 15306909, - 15306910, 15306911, 15306912, 15306913, 15306914, 15306915, 15306916, 15306917, 15306918, 15306919, 15306920, 15306921, 15306922, 15306923, 15306924, - 15306925, 15306926, 15186605, 15186608, 15186622, 15186816, 15186817, 15186818, 15186825, 15186827, 15186828, 15186832, 15186836, 15186839, 15186843, - 15186848, 15186849, 15186856, 15186859, 15186862, 15186863, 15186865, 15186866, 15187085, 15186870, 15186874, 15186875, 15186878, 15187073, 15187074, - 15187075, 15187079, 15187080, 15187083, 15187084, 15187087, 15187089, 15187090, 15187095, 15187097, 15187100, 15187099, 15187103, 15187105, 15187106, - 15187107, 15187108, 15187109, 15187110, 15187111, 15187114, 15187115, 15187116, 15187117, 15187119, 15187120, 15187121, 15187122, 15187123, 15187125, - 15055290, 15177151, 15054747, 15176894, 15303317, 15175310, 15175313, 15175342, 15175330, 15175327, 15175567, 15175554, 15175569, 15175351, 15175347, - 15175552, 15175561, 15175560, 15175589, 15175577, 15311292, 15175818, 15175593, 15175591, 15175582, 15175354, 15175602, 15175823, 15175850, 15176091, - 15175846, 15175845, 15175848, 15175856, 15175854, 15175852, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15306927, 15306928, 15306929, 15306930, - 15306931, 15306932, 15306933, 15306934, 15306935, 15306936, 15306937, 15306938, 15306939, 15306940, 15306941, 15306943, 15307136, 15307137, 15307138, - 15307139, 15307140, 15307141, 15307142, 15307143, 15307144, 15307145, 15307146, 15307147, 15307148, 15307149, 15307150, 15307151, 15307152, 15307153, - 15307154, 15307155, 15307156, 15307157, 15307158, 15307159, 15307160, 15307161, 15307162, 15307163, 15307164, 15307165, 15307166, 15307167, 15307168, - 15307169, 15307170, 15307171, 15307172, 15307173, 15307174, 15307175, 15307176, 15307177, 15307178, 15307180, 15307181, 15307182, 15307183, 0, - 15307184, 15307185, 15307186, 15307187, 15307188, 15307189, 15307190, 15307191, 15307192, 15307193, 15307194, 15307195, 15307196, 15307197, 15307198, - 15307199, 15307392, 15307393, 15307394, 15307395, 15307396, 15307409, 15307414, 15307416, 15307655, 15307663, 15307667, 15307668, 15307674, 15307686, - 15307707, 15307932, 15307936, 15175835, 15175834, 15176065, 15176092, 15176087, 15176085, 15176089, 15176119, 15176109, 15176126, 15176348, 15176334, - 15176320, 15176321, 15176327, 15176331, 15176350, 15176360, 15176361, 15176336, 15176359, 15176594, 15176378, 15310762, 15310763, 15310764, 15113612, - 15113619, 15113630, 15113608, 15113641, 15113893, 15113863, 15113642, 15113651, 15113880, 15113895, 15113653, 15113896, 15113886, 15113901, 15113867, - 15113655, 15113660, 15114160, 15114377, 15114136, 15114378, 15114153, 15113904, 15114380, 15114137, 15113909, 15114138, 15113907, 15114141, 15114368, - 15114115, 15113912, 15114146, 15114382, 15114113, 15114173, 15114418, 15114419, 15114656, 15114657, 15114638, 15114658, 15114628, 15114660, 15114883, - 15114397, 15114645, 15114662, 15114625, 15114663, 15114624, 15114430, 15114634, 15114633, 15114409, 15114933, 15114895, 15114676, 15114679, 15114899, - 15114667, 15115138, 15115694, 15115196, 15115423, 15115424, 15115193, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15307943, 15307955, 15307965, - 15308163, 15308168, 15308171, 15308181, 15308186, 15308192, 15308206, 15308212, 15308213, 15308215, 15308216, 15308217, 15308218, 15308219, 15308220, - 15308221, 15308222, 15308416, 15308417, 15308418, 15308419, 15308420, 15308421, 15308422, 15308423, 15308424, 15308425, 15308426, 15308427, 15308428, - 15308429, 15308430, 15308431, 15308432, 15308433, 15308434, 15308435, 15308436, 15308437, 15308438, 15308439, 15308440, 15308441, 15308442, 15308443, - 15308444, 15308445, 15308446, 15308447, 15308448, 15308449, 15308450, 15308451, 15308452, 15308453, 15308454, 15308455, 15308456, 15308457, 15308458, - 0, 15308459, 15308460, 15308461, 15308462, 15308463, 15308464, 15308465, 15308466, 15308467, 15308468, 15308469, 15308470, 15308471, 15308472, - 15308473, 15308474, 15308475, 15308476, 15308477, 15308478, 15308479, 15308672, 15308673, 15308674, 15308675, 15308676, 15308677, 15308678, 15308679, - 15308680, 15308681, 15308682, 15308683, 15115428, 15115184, 15115403, 15115393, 15115671, 15115171, 15115408, 15115697, 15115449, 15115680, 15115650, - 15115677, 15115908, 15115691, 15115904, 15115928, 15115704, 15115444, 15116172, 15115911, 15115912, 15116174, 15115913, 15115686, 15115683, 15115705, - 15115931, 15115943, 15115963, 15115947, 15115949, 15116180, 15115953, 15116161, 15116170, 15116191, 15115925, 15116192, 15115917, 15116223, 15116463, - 15116205, 15116439, 15116440, 15116709, 15116210, 15116676, 15116478, 15116960, 15116688, 15116699, 15116469, 15116942, 15116729, 15116477, 15116456, - 15116696, 15116732, 15116945, 15116944, 15116969, 15116951, 15116971, 15174839, 15175058, 15117953, 15117954, 15117959, 15117956, 15117970, 15117971, - 15117965, 15117978, 15117979, 15117985, 15117994, 15252907, 15252909, 15252913, 15252914, 15252915, 15252917, 15252918, 15252920, 15252919, 15252921, - 15252922, 15252924, 15252926, 15253121, 15253122, 15253124, 15253127, 15253131, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15308684, 15308685, - 15308686, 15308687, 15308688, 15308689, 15308690, 15308691, 15308692, 15308693, 15308694, 15308695, 15308696, 15308697, 15308698, 15308699, 15308700, - 15308701, 15308702, 15308703, 15308704, 15308705, 15308706, 15308707, 15308708, 15308709, 15308710, 15308711, 15308716, 15308735, 15308935, 15308947, - 15308952, 15308955, 15308958, 15308960, 15308963, 15308964, 15308965, 15308966, 15308967, 15308968, 15308969, 15308971, 15308972, 15308973, 15308975, - 15308976, 15308983, 15308984, 15308985, 15308986, 15308990, 15309185, 15309187, 15309194, 15309198, 15309199, 15309201, 15309202, 15309203, 15309206, - 15309207, 0, 15309208, 15309209, 15309210, 15309212, 15309213, 15309214, 15309216, 15309219, 15309221, 15309222, 15309227, 15309229, 15309230, - 15309231, 15309232, 15309233, 15309235, 15309240, 15309241, 15309242, 15309243, 15309244, 15309245, 15309246, 15309247, 15309440, 15309441, 15309442, - 15309443, 15309444, 15309447, 15309449, 15309450, 15253133, 15253134, 15253135, 15253144, 15253146, 15252366, 15108235, 15108247, 15108251, 15108255, - 15108258, 15108257, 15108261, 15108260, 15108268, 15239079, 15176623, 15176628, 15176639, 15176847, 15176849, 15176851, 15111348, 15112110, 15112111, - 15112112, 15112330, 15112345, 15113650, 15112323, 15112341, 15112320, 15172229, 15113143, 15112349, 15112372, 15112369, 15112374, 15112373, 15237254, - 15112607, 15112596, 15112577, 15112591, 15112598, 15112609, 15112599, 15112631, 15112836, 15112844, 15112871, 15112861, 15112894, 15113115, 15113116, - 15113126, 15113129, 15250610, 15250611, 15250614, 15250619, 15250621, 15250816, 15250821, 15250822, 15250824, 15250825, 15250823, 15250829, 15250837, - 15250841, 15247239, 15247242, 15247243, 15247244, 15247246, 15247247, 15247248, 15247249, 15174062, 15174303, 15174045, 15174054, 15174063, 15174078, - 15174079, 15174276, 15174283, 15174285, 15174287, 15174290, 15109256, 15109298, 15109808, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15309452, - 15309454, 15309457, 15309458, 15309459, 15309461, 15309462, 15309466, 15309467, 15309469, 15309470, 15309471, 15309472, 15309473, 15309474, 15309475, - 15309476, 15309477, 15309478, 15309480, 15309481, 15309482, 15309483, 15309484, 15309485, 15309486, 15309487, 15309489, 15309490, 15309492, 15309493, - 15309495, 15309496, 15309498, 15309499, 15309503, 15309698, 15309699, 15309704, 15309706, 15309707, 15309712, 15309713, 15309715, 15309716, 15309718, - 15309719, 15309720, 15309721, 15309722, 15309723, 15309724, 15309725, 15309726, 15309727, 15309729, 15309730, 15309731, 15309732, 15309733, 15309734, - 15309735, 15309739, 0, 15309740, 15309741, 15309742, 15309744, 15309745, 15309746, 15309748, 15309749, 15309752, 15309754, 15309755, 15309756, - 15309757, 15309759, 15309954, 15309955, 15309957, 15309962, 15309963, 15309964, 15309968, 15309969, 15309970, 15309972, 15309973, 15309975, 15309976, - 15309977, 15309978, 15309979, 15309981, 15309983, 15309984, 15110335, 15111064, 15237252, 15118250, 15118259, 15118269, 15118261, 15118265, 15118469, - 15118471, 15118470, 15118477, 15118485, 15118488, 15118489, 15118490, 15118497, 15118505, 15118500, 15118506, 15118514, 15111349, 15111573, 15111595, - 15174029, 15174034, 15174038, 15173808, 15243682, 15042710, 15237791, 15237788, 15237779, 15237820, 15113354, 15237821, 15237809, 15237803, 15237805, - 15237812, 15237815, 15238055, 15238056, 15238057, 15238058, 15238043, 15238018, 15238020, 15238041, 15238029, 15238039, 15113360, 15238045, 15238059, - 15238065, 15238068, 15238061, 15238285, 15238286, 15238066, 15238076, 15113365, 15238290, 15249818, 15238326, 15238302, 15238316, 15238296, 15238322, - 15238536, 15238540, 15238547, 15238580, 15238553, 15238554, 15238577, 15238560, 15238569, 15238588, 15238589, 15238573, 15238567, 15049101, 15051445, - 15238792, 15238786, 15238801, 15121301, 15238819, 15238826, 15239052, 15113382, 15239050, 15238843, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15309985, 15309986, 15309987, 15309988, 15309989, 15309990, 15309991, 15309992, 15309993, 15309995, 15309996, 15309998, 15309999, 15310001, 15310003, - 15310004, 15310005, 15310006, 15310007, 15310010, 15310011, 15310012, 15310013, 15310015, 15310208, 15310209, 15310210, 15310211, 15310212, 15310213, - 15310214, 15310215, 15310216, 15310217, 15310218, 15310219, 15310220, 15310221, 15310222, 15310223, 15310224, 15310225, 15310228, 15310229, 15310231, - 15310232, 15310234, 15310236, 15310237, 15310239, 15310243, 15310244, 15310246, 15310247, 15310248, 15310250, 15310251, 15310252, 15310253, 15310254, - 15310255, 15310256, 15310257, 0, 15310258, 15310261, 15310263, 15310264, 15310265, 15310266, 15310267, 15310269, 15310270, 15310271, 15310464, - 15310465, 15310466, 15310467, 15310468, 15310470, 15310471, 15310472, 15310473, 15310474, 15310476, 15310478, 15310479, 15310480, 15310483, 15310485, - 15310486, 15310487, 15310489, 15310490, 15310491, 15310492, 15310493, 15239041, 15238822, 15117476, 15117495, 15117497, 15117699, 15117702, 15117721, - 15311761, 15311762, 15311763, 15311765, 15311769, 15311770, 15118003, 15056256, 15118210, 15247283, 15111824, 15318417, 15111827, 15111868, 15112070, - 15112068, 15112067, 15112076, 15112078, 15112082, 15112086, 15172224, 15172252, 15172246, 15172253, 15172283, 15172480, 15172279, 15172267, 15172273, - 15172520, 15172490, 15172752, 15172755, 15172758, 15172783, 15172785, 15173043, 15173020, 15173032, 15172997, 15173042, 15173002, 15173048, 15173050, - 15173272, 15173299, 15173301, 15173288, 15173280, 15173536, 15173524, 15173543, 15173561, 15173789, 15173800, 15172012, 15172760, 15173030, 15173305, - 15108286, 15108285, 15108483, 15108488, 15108489, 15180987, 15181184, 15181190, 15181193, 15181211, 15181212, 15181203, 15181210, 15181218, 15181207, - 15181216, 15181231, 15181223, 15181242, 15181445, 15181450, 15181466, 15181479, 15181491, 15056785, 15056784, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15310494, 15310495, 15310497, 15310498, 15310500, 15310501, 15310502, 15310503, 15310504, 15310505, 15310506, 15310508, 15310510, 15310512, - 15310513, 15310515, 15310517, 15310518, 15310519, 15310520, 15310521, 15310522, 15310523, 15310524, 15310525, 15310526, 15310527, 15310720, 15310721, - 15310722, 15310723, 15310724, 15310725, 15310726, 15310727, 15310728, 15310729, 15310730, 15310731, 15310732, 15310733, 15310734, 15310735, 15310736, - 15310737, 15310738, 15310739, 15310740, 15310741, 15310742, 15310743, 15310744, 15310745, 15310746, 15310747, 15310748, 15310749, 15310750, 15310751, - 15310752, 15310753, 15310754, 15310755, 0, 15310756, 15310757, 15310760, 15310766, 15310767, 15310768, 15310769, 15310770, 15310772, 15310775, - 15310776, 15310777, 15310778, 15310779, 15310780, 15310781, 15310782, 15310783, 15310976, 15310977, 15310978, 15310979, 15310980, 15310981, 15310982, - 15310983, 15310984, 15310985, 15310986, 15310987, 15310988, 15310989, 15310990, 15106236, 15106461, 15106458, 15106471, 15106433, 15106457, 15106467, - 15106731, 15107206, 15107213, 15107485, 15107753, 15107741, 15107979, 15107985, 15108230, 15237760, 15237567, 15118995, 15119286, 15120316, 15179702, - 15179704, 15179904, 15179913, 15179927, 15179928, 15179921, 15111851, 15179949, 15179932, 15179933, 15179961, 15179962, 15179963, 15179935, 15179964, - 15179941, 15179948, 15179939, 15179945, 15180174, 15180205, 15180182, 15180183, 15179942, 15180176, 15180167, 15180172, 15180202, 15180443, 15180435, - 15180442, 15180423, 15180444, 15180449, 15180451, 15180466, 15180473, 15180453, 15180692, 15180697, 15180681, 15180716, 15180722, 15180933, 15180724, - 15180947, 15180964, 15180958, 15180980, 15318683, 15317945, 15317947, 15317948, 15178673, 15178884, 15178893, 15178681, 15178887, 15178888, 15178906, - 15178914, 15178905, 15178925, 15178918, 15178933, 15178936, 15179152, 15179153, 15179143, 15179139, 15179162, 15179176, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15310991, 15310992, 15310993, 15310994, 15310995, 15310996, 15310997, 15310998, 15310999, 15311000, 15311001, 15311002, 15311003, - 15311004, 15311005, 15311006, 15311007, 15311008, 15311009, 15311010, 15311011, 15311012, 15311013, 15311014, 15311015, 15311016, 15311017, 15311018, - 15311019, 15311020, 15311021, 15311022, 15311023, 15311024, 15311025, 15311026, 15311027, 15311028, 15311029, 15311030, 15311031, 15311032, 15311033, - 15311034, 15311035, 15311036, 15311037, 15311038, 15311039, 15311232, 15311233, 15311234, 15311235, 15311236, 15311237, 15311238, 15311239, 15311240, - 15311241, 15311242, 15311243, 15311244, 15311245, 0, 15311246, 15311247, 15311248, 15311249, 15311250, 15311251, 15311252, 15311253, 15311254, - 15311255, 15311256, 15311257, 15311258, 15311259, 15311260, 15311261, 15311262, 15311263, 15311264, 15311265, 15311266, 15311267, 15311268, 15311269, - 15311270, 15311271, 15311272, 15311273, 15311274, 15311275, 15311276, 15311277, 15311278, 15179170, 15179173, 15179199, 15179405, 15179197, 15179392, - 15179404, 15179409, 15179423, 15179424, 15179440, 15179445, 15179453, 15176890, 15177088, 15177102, 15177099, 15177096, 15177115, 15177138, 15177145, - 15177347, 15187352, 15187361, 15187359, 15247752, 15187368, 15187380, 15187377, 15187385, 15187585, 15187390, 15178637, 15178661, 15245490, 15307397, - 15307398, 15307399, 15307403, 15307402, 15307404, 15307405, 15307407, 15307408, 15307412, 15307415, 15307413, 15307418, 15307419, 15307420, 15307427, - 15307428, 15307435, 15307434, 15307437, 15307436, 15307439, 15307440, 15307442, 15307444, 15307446, 15307447, 15307448, 15307449, 15307450, 15307452, - 15307453, 15307455, 15307652, 15307656, 15307657, 15307658, 15307659, 15307660, 15307661, 15307662, 15307664, 15307665, 15307666, 15307669, 15307670, - 15307671, 15307673, 15307672, 15307675, 15307678, 15307679, 15307680, 15307682, 15307684, 15307685, 15307687, 15307688, 15307690, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15311279, 15311280, 15311281, 15311282, 15311283, 15311284, 15311499, 15311502, 15311506, 15311509, 15311513, 15311523, - 15311528, 15311529, 15311530, 15311531, 15311532, 15311533, 15311534, 15311535, 15311536, 15311537, 15311538, 15311539, 15311540, 15311541, 15311542, - 15311543, 15311544, 15311545, 15311546, 15311547, 15311548, 15311549, 15311550, 15311551, 15311744, 15311745, 15311746, 15311747, 15311748, 15311749, - 15311750, 15311751, 15311752, 15311753, 15311754, 15311755, 15311756, 15311757, 15311759, 15311760, 15311764, 15311766, 15311767, 15311771, 15311772, - 15311773, 15311776, 15311777, 15311778, 15311779, 15311780, 0, 15311781, 15311782, 15311785, 15311786, 15311787, 15311788, 15311789, 15311790, - 15311791, 15311792, 15311793, 15311794, 15311795, 15311796, 15311797, 15311798, 15311799, 15311800, 15311801, 15311802, 15311803, 15311804, 15311805, - 15311806, 15311807, 15312000, 15312001, 15312002, 15312003, 15312004, 15312005, 15312006, 15312007, 15307689, 15307691, 15307694, 15307695, 15307699, - 15307700, 15307701, 15307703, 15307705, 15307708, 15307709, 15307711, 15307907, 15307906, 15307910, 15307911, 15307913, 15307914, 15307917, 15307918, - 15307919, 15307922, 15307923, 15307924, 15307925, 15307926, 15307928, 15307931, 15307933, 15307934, 15307935, 15307938, 15307946, 15307947, 15307945, - 15307948, 15307953, 15307954, 15307956, 15307958, 15307959, 15307960, 15307964, 15307966, 15307967, 15308162, 15307957, 15308164, 15308165, 15308166, - 15308169, 15308172, 15308174, 15308175, 15308178, 15308179, 15308180, 15308182, 15308183, 15308184, 15308185, 15308187, 15308190, 15308191, 15308189, - 15308193, 15308194, 15308196, 15308197, 15308198, 15308199, 15308200, 15308201, 15308202, 15308203, 15308204, 15308207, 15308209, 15308210, 15308211, - 15307962, 15179687, 15179692, 15309705, 15181717, 15181741, 15181731, 15181739, 15181958, 15054215, 15181955, 15181954, 15181982, 15181972, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15312008, 15312009, 15312010, 15312011, 15312012, 15312014, 15312015, 15312017, 15312018, 15312019, 15312020, - 15312021, 15312022, 15312023, 15312024, 15312025, 15312026, 15312027, 15312028, 15312029, 15312030, 15312031, 15312032, 15312033, 15312034, 15312035, - 15312036, 15312037, 15312038, 15312039, 15312040, 15312041, 15312042, 15312043, 15312044, 15312045, 15312047, 15312048, 15312049, 15312050, 15312051, - 15312052, 15312053, 15312054, 15312055, 15312056, 15312057, 15312058, 15312059, 15312060, 15312061, 15312062, 15312063, 15312256, 15312257, 15312258, - 15312259, 15312260, 15312261, 15312262, 15312263, 15312264, 15312265, 0, 15312266, 15312267, 15312268, 15312269, 15312270, 15312271, 15312272, - 15312273, 15312274, 15312275, 15312278, 15312279, 15312280, 15312281, 15312282, 15312283, 15312284, 15312285, 15312286, 15312287, 15312288, 15312289, - 15312290, 15312292, 15312294, 15312307, 15312312, 15312313, 15312315, 15312318, 15312514, 15312515, 15312521, 15182009, 15182007, 15182225, 15317903, - 15312549, 15182256, 15178376, 15178382, 15178387, 15178393, 15178404, 15176606, 15176608, 15176876, 15317152, 15317154, 15317160, 15317161, 15317162, - 15317163, 15317164, 15317170, 15317169, 15317174, 15317176, 15317175, 15317177, 15317178, 15317182, 15317377, 15317378, 15317380, 15317382, 15317383, - 15317384, 15317385, 15317387, 15317388, 15317390, 15317393, 15317397, 15317399, 15317402, 15317403, 15317404, 15317406, 15317411, 15317414, 15317415, - 15317416, 15317417, 15317418, 15317419, 15317420, 15317425, 15317421, 15317427, 15177362, 15177364, 15177366, 15177376, 15177373, 15177388, 15177379, - 15177395, 15177396, 15177400, 15177604, 15177393, 15177392, 15177603, 15177602, 15177622, 15177613, 15177635, 15177640, 15177638, 15177636, 15177643, - 15177639, 15177859, 15177649, 15177660, 15177663, 15177872, 15177856, 15177861, 15177868, 15177879, 15177866, 15177893, 15177880, 15177877, 15177881, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15312524, 15312526, 15312538, 15312539, 15312540, 15312541, 15312542, 15312543, 15312544, 15312545, - 15312546, 15312547, 15312548, 15312550, 15312551, 15312553, 15312554, 15312555, 15312556, 15312557, 15312558, 15312559, 15312560, 15312561, 15312562, - 15312563, 15312564, 15312565, 15312566, 15312567, 15312568, 15312569, 15312570, 15312571, 15312572, 15312573, 15312574, 15312575, 15312768, 15312769, - 15312770, 15312771, 15312772, 15312773, 15312774, 15312775, 15312776, 15312777, 15312778, 15312779, 15312780, 15312781, 15312782, 15312783, 15312784, - 15312785, 15312786, 15312787, 15312788, 15312789, 15312790, 15312791, 15312792, 0, 15312793, 15312794, 15312795, 15312796, 15312797, 15312798, - 15312799, 15312800, 15312801, 15312802, 15312803, 15312804, 15312805, 15312806, 15312807, 15312808, 15312809, 15312810, 15312811, 15312812, 15312813, - 15312814, 15312815, 15312816, 15312817, 15312818, 15312819, 15312820, 15312821, 15312822, 15312823, 15312824, 15312825, 15177883, 15177916, 15177890, - 15177888, 15178112, 15177901, 15177904, 15177919, 15177909, 15178115, 15177918, 15177907, 15178125, 15178142, 15178132, 15178140, 15178134, 15178155, - 15178159, 15187850, 15182758, 15182264, 15182265, 15182464, 15182470, 15182472, 15182485, 15182502, 15182496, 15182508, 15182504, 15182509, 15182515, - 15245732, 15245737, 15245746, 15245757, 15245759, 15245954, 15245986, 15246214, 15246007, 15246012, 15246217, 15246242, 15246222, 15246243, 15246245, - 15246257, 15246490, 15246268, 15246248, 15246270, 15246256, 15246497, 15246489, 15246483, 15246491, 15246474, 15246516, 15246507, 15246518, 15246721, - 15246758, 15246779, 15177355, 15238053, 15178418, 15178420, 15179676, 15237266, 15237268, 15237270, 15237276, 15237280, 15237282, 15237285, 15237286, - 15237287, 15237289, 15237288, 15237297, 15237259, 15237301, 15237507, 15237510, 15237517, 15237522, 15237545, 15237553, 15246979, 15311288, 15311488, - 15311491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15312826, 15312827, 15312828, 15312829, 15312830, 15312831, 15313024, 15313025, 15313026, - 15313027, 15313028, 15313029, 15313030, 15313031, 15313032, 15313033, 15313034, 15313035, 15313036, 15313037, 15313038, 15313039, 15313040, 15313041, - 15313042, 15313043, 15313044, 15313045, 15313046, 15313047, 15313048, 15313049, 15313050, 15313051, 15313052, 15313053, 15313054, 15313055, 15313056, - 15313057, 15313058, 15313059, 15313060, 15313061, 15313062, 15313063, 15313064, 15313065, 15313066, 15313067, 15313068, 15313069, 15313070, 15313071, - 15313072, 15313073, 15313074, 15313075, 15313076, 15313077, 15313078, 15313079, 15313080, 0, 15313081, 15313082, 15313083, 15313084, 15313085, - 15313086, 15313087, 15313280, 15313281, 15313282, 15313283, 15313284, 15313285, 15313286, 15313287, 15313288, 15313289, 15313290, 15313291, 15313292, - 15313293, 15313294, 15313295, 15313296, 15313297, 15313298, 15313299, 15313300, 15313301, 15313302, 15313303, 15313304, 15313305, 15311497, 15311500, - 15311501, 15311503, 15311508, 15311514, 15311515, 15311518, 15311519, 15311521, 15311522, 15311525, 15311526, 15243661, 15243668, 15243692, 15243694, - 15243711, 15243706, 15243708, 15243707, 15243944, 15243917, 15243915, 15243948, 15243933, 15243943, 15243939, 15243946, 15243923, 15243945, 15243958, - 15244164, 15243957, 15244174, 15243952, 15243962, 15243953, 15243951, 15244169, 15244175, 15243956, 15244201, 15244209, 15244210, 15244205, 15244211, - 15244176, 15244435, 15244190, 15244212, 15244191, 15244184, 15244177, 15244419, 15244423, 15244216, 15244424, 15244426, 15244429, 15244425, 15244451, - 15244475, 15244446, 15244453, 15244462, 15244442, 15244478, 15244680, 15244468, 15244465, 15244457, 15244471, 15244479, 15244930, 15244450, 15244733, - 15244734, 15244731, 15244704, 15244720, 15244684, 15244718, 15244939, 15244691, 15244707, 15244732, 15244708, 15244697, 15244709, 15244947, 15244975, - 15244968, 15245202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15313306, 15313307, 15313308, 15313309, 15313310, 15313311, 15313312, 15313313, - 15313314, 15313315, 15313316, 15313317, 15313318, 15313319, 15313320, 15313321, 15313322, 15313323, 15313330, 15313539, 15313545, 15313549, 15313550, - 15313556, 15313557, 15313561, 15313574, 15313577, 15313578, 15313579, 15313580, 15313581, 15313582, 15313583, 15313586, 15313587, 15313588, 15313589, - 15313593, 15313595, 15313597, 15313598, 15313599, 15313795, 15313796, 15313798, 15313799, 15313800, 15313801, 15313802, 15313805, 15313806, 15313807, - 15313808, 15313810, 15313812, 15313813, 15313814, 15313815, 15313817, 15313818, 15313819, 15313820, 0, 15313821, 15313822, 15313824, 15313826, - 15313827, 15313828, 15313829, 15313831, 15313832, 15313833, 15313834, 15313836, 15313838, 15313840, 15313841, 15313842, 15313843, 15313844, 15313845, - 15313846, 15313847, 15313848, 15313850, 15313852, 15313853, 15313854, 15313855, 15314048, 15314049, 15314050, 15314052, 15314053, 15314054, 15245190, - 15244936, 15244933, 15244973, 15244951, 15244931, 15244971, 15245221, 15244972, 15244981, 15244979, 15245195, 15245203, 15244989, 15245201, 15245184, - 15245194, 15245211, 15245226, 15245216, 15245230, 15245462, 15245459, 15245246, 15245450, 15245467, 15245473, 15245497, 15245500, 15187126, 15187330, - 15187332, 15187333, 15239312, 15182778, 15182781, 15182984, 15182979, 15182980, 15182997, 15182986, 15183019, 15182991, 15183239, 15183032, 15183018, - 15183001, 15183022, 15183025, 15183008, 15183013, 15183012, 15183027, 15183038, 15183006, 15183256, 15183258, 15183237, 15183285, 15183244, 15183261, - 15183264, 15183278, 15183291, 15183266, 15183282, 15183281, 15183504, 15183526, 15183527, 15183544, 15183532, 15183517, 15183528, 15183493, 15183530, - 15183516, 15183522, 15183531, 15183540, 15183761, 15183745, 15183756, 15183773, 15183770, 15183781, 15183782, 15183786, 15184012, 15183806, 15183804, - 15184015, 15184022, 15184011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15314055, 15314057, 15314058, 15314059, 15314060, 15314061, 15314062, - 15314064, 15314065, 15314066, 15314068, 15314069, 15314070, 15314071, 15314072, 15314073, 15314074, 15314075, 15314076, 15314077, 15314078, 15314080, - 15314081, 15314082, 15314084, 15314085, 15314086, 15314087, 15314088, 15314089, 15314090, 15314091, 15314092, 15314093, 15314094, 15314096, 15314097, - 15314099, 15314100, 15314101, 15314102, 15314103, 15314104, 15314105, 15314106, 15314109, 15314110, 15314111, 15314304, 15314310, 15314314, 15314315, - 15314316, 15314318, 15314320, 15314322, 15314323, 15314325, 15314326, 15314327, 15314328, 15314329, 15314330, 0, 15314331, 15314332, 15314333, - 15314334, 15314335, 15314336, 15314337, 15314338, 15314339, 15314340, 15314341, 15314342, 15314343, 15314344, 15314345, 15314346, 15314347, 15314348, - 15314349, 15314350, 15314351, 15314352, 15314353, 15314354, 15314355, 15314356, 15314357, 15314358, 15314359, 15314360, 15314361, 15314362, 15314363, - 15184031, 15184042, 15184038, 15184056, 15184257, 15184256, 15239102, 15239297, 15239298, 15239300, 15239084, 15245700, 15239329, 15239330, 15239331, - 15239341, 15239343, 15239336, 15239339, 15239352, 15239355, 15239347, 15239348, 15239358, 15239556, 15239561, 15239563, 15239567, 15239578, 15239583, - 15239592, 15245758, 15245957, 15245960, 15246232, 15246239, 15246750, 15187613, 15187615, 15187623, 15187631, 15187632, 15187634, 15184316, 15111561, - 15184529, 15184541, 15184540, 15184542, 15184546, 15184562, 15184572, 15184573, 15184769, 15184775, 15184780, 15184781, 15184776, 15184773, 15184791, - 15184808, 15239598, 15112872, 15187647, 15187854, 15187861, 15187877, 15187873, 15187878, 15187881, 15187886, 15187891, 15184824, 15185335, 15185574, - 15185582, 15186311, 15186587, 15317688, 15317684, 15250867, 15251076, 15251092, 15251089, 15251121, 15250855, 15250861, 15249799, 15249801, 15304074, - 15304080, 15304078, 15304079, 15304100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15314364, 15314365, 15314366, 15314367, 15314560, 15314561, - 15314562, 15314563, 15314564, 15314565, 15314566, 15314567, 15314568, 15314569, 15314570, 15314571, 15314572, 15314573, 15314574, 15314575, 15314576, - 15314577, 15314578, 15314579, 15314580, 15314581, 15314582, 15314583, 15314584, 15314585, 15314586, 15314587, 15314588, 15314589, 15314590, 15314591, - 15314592, 15314593, 15314594, 15314595, 15314596, 15314597, 15314598, 15314599, 15314600, 15314601, 15314602, 15314603, 15314604, 15314605, 15314606, - 15314607, 15314608, 15314609, 15314610, 15314611, 15314612, 15314613, 15314614, 15314615, 15314616, 15314617, 15314618, 0, 15314619, 15314620, - 15314621, 15314622, 15314623, 15314816, 15314817, 15314818, 15314819, 15314820, 15314821, 15314822, 15314823, 15314824, 15314825, 15314826, 15314827, - 15314828, 15314829, 15314830, 15314831, 15314832, 15314833, 15314834, 15314835, 15314836, 15314837, 15314838, 15314839, 15314840, 15314841, 15314842, - 15314843, 15304098, 15304097, 15304112, 15304105, 15304111, 15304125, 15304126, 15304114, 15304116, 15304121, 15304332, 15304325, 15304336, 15304333, - 15304337, 15304354, 15304355, 15304362, 15304365, 15304366, 15304367, 15304373, 15304372, 15304378, 15249813, 15317438, 15251128, 15251371, 15251589, - 15251865, 15251881, 15251125, 15251135, 15251132, 15251130, 15251332, 15251350, 15251351, 15251354, 15251358, 15251342, 15251343, 15251355, 15251334, - 15251372, 15251383, 15251384, 15251363, 15251385, 15251387, 15251364, 15251593, 15251389, 15251604, 15251613, 15251615, 15251628, 15251630, 15251619, - 15251631, 15251642, 15251840, 15251641, 15251637, 15251645, 15251633, 15251849, 15251841, 15251842, 15251857, 15251858, 15251850, 15251888, 15251894, - 15251900, 15251887, 15251892, 15252101, 15252111, 15252116, 15252112, 15252124, 15252126, 15249848, 15250050, 15250058, 15250053, 15250072, 15250068, - 15111835, 15247254, 15247262, 15247258, 15247260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15314844, 15314845, 15314846, 15314847, 15314848, - 15314849, 15314850, 15314851, 15314852, 15314853, 15314854, 15314855, 15314856, 15314857, 15314858, 15314859, 15314860, 15314861, 15314862, 15314863, - 15314864, 15314865, 15314866, 15314867, 15314868, 15314869, 15314870, 15314871, 15314872, 15314873, 15314874, 15314875, 15314876, 15314877, 15314878, - 15314879, 15315072, 15315073, 15315074, 15315075, 15315076, 15315077, 15315078, 15315079, 15315080, 15315081, 15315082, 15315083, 15315084, 15315085, - 15315086, 15315087, 15315088, 15315089, 15315090, 15315091, 15315092, 15315093, 15315094, 15315095, 15315096, 15315097, 15315098, 0, 15315099, - 15315100, 15315101, 15315102, 15315103, 15315104, 15315105, 15315106, 15315107, 15315108, 15315109, 15315110, 15315111, 15315112, 15315113, 15315114, - 15315115, 15315116, 15315117, 15315118, 15315119, 15315120, 15315121, 15315122, 15315123, 15315124, 15315125, 15315126, 15315127, 15315128, 15315129, - 15315130, 15315131, 15247269, 15247275, 15247279, 15247550, 15248550, 15310227, 15309737, 15309747, 15309743, 15309958, 15309953, 15309960, 15309967, - 15309966, 15309994, 15309997, 15310000, 15310014, 15318656, 15318659, 15318661, 15318662, 15318663, 15318664, 15318665, 15318666, 15318668, 15317950, - 15318155, 15318157, 15309497, 15309500, 15309501, 15309710, 15309714, 15179455, 15309728, 15305358, 15305390, 15305608, 15305918, 15306154, 15306634, - 15306383, 15306942, 15307179, 15315391, 15315586, 15315589, 15315590, 15315591, 15315592, 15181987, 15315595, 15315598, 15315600, 15315601, 15315602, - 15315604, 15315605, 15315610, 15315611, 15315614, 15315615, 15315616, 15315617, 15315618, 15315619, 15315621, 15315622, 15315623, 15315624, 15315625, - 15315627, 15315629, 15315630, 15315632, 15315633, 15315634, 15315635, 15315636, 15315637, 15315638, 15315639, 15315642, 15315643, 15315644, 15315645, - 15315844, 15315845, 15315846, 15315847, 15315850, 15315851, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15315132, 15315133, 15315134, 15315135, - 15315328, 15315329, 15315330, 15315331, 15315332, 15315333, 15315334, 15315335, 15315336, 15315337, 15315338, 15315339, 15315340, 15315341, 15315342, - 15315343, 15315344, 15315345, 15315346, 15315347, 15315348, 15315349, 15315350, 15315351, 15315352, 15315353, 15315354, 15315355, 15315356, 15315357, - 15315358, 15315359, 15315360, 15315361, 15315362, 15315363, 15315364, 15315365, 15315366, 15315367, 15315368, 15315369, 15315370, 15315371, 15315372, - 15315373, 15315374, 15315375, 15315376, 15315377, 15315378, 15315379, 15315380, 15315381, 15315382, 15315383, 15315384, 15315385, 15315386, 0, - 15315387, 15315389, 15315390, 15315584, 15315587, 15315588, 15315593, 15315594, 15315596, 15315599, 15315603, 15315606, 15315607, 15315608, 15315609, - 15315613, 15315626, 15315628, 15315631, 15315641, 15315646, 15315647, 15315840, 15315841, 15315842, 15315848, 15315849, 15315857, 15315858, 15315866, - 15315867, 15315872, 15315873, 15315852, 15315853, 15315854, 15315855, 15315856, 15315859, 15315860, 15315861, 15315863, 15315864, 15315865, 15315868, - 15315869, 15315871, 15315874, 15310268, 15310469, 15310481, 15310482, 15310484, 15310511, 15310507, 15310499, 15310514, 15310516, 15313585, 15313584, - 15313591, 15317400, 15313590, 15313594, 15313596, 15313793, 15313792, 15313797, 15313794, 15313803, 15313804, 15313809, 15314309, 15314307, 15314311, - 15314313, 15314312, 15314317, 15314321, 15311784, 15312013, 15312046, 15312277, 15312276, 15313823, 15313825, 15313830, 15313839, 15313835, 15313851, - 15313837, 15313849, 15314056, 15314063, 15314067, 15314079, 15314083, 15317693, 15317694, 15186107, 15317634, 15317639, 15317640, 15317643, 15317650, - 15306646, 15317661, 15317663, 15317915, 15317916, 15317917, 15317920, 15317919, 15317922, 15317929, 15317927, 15317925, 15317930, 15317935, 15318178, - 15318188, 15318191, 15318201, 15318199, 15318205, 15318206, 15318404, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15315875, 15315876, 15315877, - 15315878, 15315879, 15315880, 15315881, 15315882, 15315883, 15315884, 15315885, 15315886, 15315887, 15315888, 15315889, 15315890, 15315891, 15315892, - 15315893, 15315894, 15315895, 15315896, 15315897, 15315898, 15315899, 15315900, 15315901, 15315902, 15315903, 15316096, 15316097, 15316098, 15316099, - 15316100, 15316101, 15316102, 15316103, 15316104, 15316105, 15316106, 15316107, 15316108, 15316109, 15316110, 15316111, 15316112, 15316113, 15316114, - 15316115, 15316116, 15316117, 15316118, 15316119, 15316120, 15316121, 15316122, 15316123, 15316124, 15316125, 15316126, 15316127, 15316128, 15316129, - 0, 15316130, 15316131, 15316132, 15316133, 15316134, 15316135, 15316136, 15316137, 15316138, 15316139, 15316140, 15316141, 15316142, 15316143, - 15316144, 15316145, 15316146, 15316147, 15316148, 15316149, 15316150, 15316151, 15316152, 15316153, 15316154, 15316155, 15316156, 15316157, 15316158, - 15316159, 15316352, 15316353, 15316354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15316355, 15316356, - 15316357, 15316358, 15316359, 15316360, 15316361, 15316362, 15316363, 15316364, 15316365, 15316366, 15316367, 15316368, 15316369, 15316370, 15316371, - 15316372, 15316373, 15316374, 15316375, 15316376, 15316377, 15316378, 15316379, 15316380, 15316381, 15316382, 15316383, 15316384, 15316385, 15316386, - 15316387, 15316388, 15316389, 15316390, 15316391, 15316392, 15316393, 15316394, 15316395, 15316396, 15316397, 15316398, 15316399, 15316400, 15316401, - 15316402, 15316403, 15316404, 15316405, 15316406, 15316407, 15316408, 15316409, 15316410, 15316411, 15316412, 15316413, 15316414, 15316415, 15316608, - 15316609, 0, 15316610, 15316611, 15316612, 15316613, 15316614, 15316615, 15316616, 15316617, 15316618, 15316619, 15316620, 15316621, 15316622, - 15316623, 15316624, 15316625, 15316626, 15316627, 15316628, 15316629, 15316630, 15316631, 15316632, 15316633, 15316634, 15316635, 15316636, 15316637, - 15316638, 15316639, 15316640, 15316641, 15316642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15316643, - 15316644, 15316645, 15316646, 15316647, 15316648, 15316649, 15316650, 15316651, 15316652, 15316653, 15316654, 15316655, 15316656, 15316657, 15316658, - 15316659, 15316660, 15316661, 15316662, 15316663, 15316664, 15316665, 15316666, 15316667, 15316668, 15316669, 15316670, 15316671, 15316864, 15316865, - 15316866, 15316867, 15316868, 15316869, 15316870, 15316871, 15316872, 15316873, 15316874, 15316875, 15316876, 15316877, 15316878, 15316879, 15316880, - 15316881, 15316882, 15316883, 15316884, 15316885, 15316886, 15316887, 15316888, 15316889, 15316890, 15316891, 15316892, 15316893, 15316894, 15316895, - 15316896, 15316897, 0, 15316898, 15316899, 15316900, 15316901, 15316902, 15316903, 15316904, 15316905, 15316906, 15316907, 15316908, 15316909, - 15316910, 15316911, 15316912, 15316913, 15316914, 15316915, 15316916, 15316917, 15316918, 15316919, 15316920, 15316921, 15316922, 15316923, 15316924, - 15316925, 15316926, 15316927, 15317120, 15317121, 15317122, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15317123, 15317124, 15317125, 15317126, 15317127, 15317128, 15317129, 15317130, 15317131, 15317132, 15317133, 15317134, 15317135, 15317136, 15317137, - 15317138, 15317139, 15317140, 15317141, 15317142, 15317143, 15317144, 15317145, 15317146, 15317147, 15317148, 15317149, 15317150, 15317156, 15317159, - 15317166, 15317168, 15317172, 15317179, 15317180, 15317376, 15317389, 15317392, 15317394, 15317395, 15317396, 15317398, 15317401, 15317405, 15317407, - 15317408, 15317409, 15317410, 15317413, 15317422, 15317423, 15317426, 15317428, 15317429, 15317430, 15317431, 15317432, 15317433, 15317434, 15317435, - 15317436, 15317437, 15317632, 0, 15317633, 15317635, 15317636, 15317637, 15317638, 15317641, 15317642, 15317644, 15317645, 15317646, 15317647, - 15317648, 15317649, 15317652, 15317653, 15317654, 15317655, 15317656, 15317657, 15317658, 15317659, 15317660, 15317662, 15317664, 15317665, 15317666, - 15317667, 15317668, 15317669, 15317671, 15317672, 15317673, 15317674, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15317675, 15317676, 15317677, 15317678, 15317679, 15317680, 15317681, 15317682, 15317683, 15317685, 15317686, 15317687, 15317689, 15317690, - 15317692, 15317695, 15317888, 15317889, 15317890, 15317891, 15317893, 15317894, 15317895, 15317896, 15317898, 15317899, 15317900, 15317904, 15317906, - 15317907, 15317909, 15317910, 15317911, 15317913, 15317914, 15317918, 15317921, 15317923, 15317924, 15317926, 15317928, 15317931, 15317932, 15317933, - 15317934, 15317936, 15317937, 15317938, 15317939, 15317940, 15317941, 15317942, 15317943, 15317944, 15317946, 15317949, 15317951, 15318144, 15318145, - 15318146, 15318147, 15318148, 15318149, 0, 15318150, 15318151, 15318152, 15318153, 15318154, 15318156, 15318159, 15318161, 15318162, 15318164, - 15318165, 15318166, 15318168, 15318170, 15318171, 15318172, 15318173, 15318174, 15318175, 15318177, 15318179, 15318180, 15318181, 15318182, 15318183, - 15318184, 15318185, 15318186, 15318187, 15318189, 15318190, 15318192, 15318193, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15318194, 15318195, 15318196, 15318197, 15318198, 15318200, 15318202, 15318204, 15318207, 15318400, 15318401, 15318402, 15318403, - 15318405, 15318406, 15318407, 15318408, 15318409, 15318410, 15318411, 15318412, 15318413, 15318414, 15318415, 15318418, 15318419, 15318420, 15318421, - 15318422, 15318423, 15318424, 15318425, 15318426, 15318427, 15318428, 15318429, 15318430, 15318431, 15318432, 15318433, 15318434, 15318435, 15318436, - 15318437, 15318438, 15318439, 15318440, 15318441, 15318442, 15318443, 15318444, 15318445, 15318446, 15318447, 15318448, 15318449, 15318450, 15318451, - 15318452, 15318453, 15318454, 15318455, 15318456, 0, 15318457, 15318458, 15318459, 15318460, 15318461, 15318462, 15318657, 15318658, 15318669, - 15318670, 15318671, 15318672, 15318673, 15318674, 15318675, 15318676, 15318677, 15318678, 15318679, 15318680, 15318684, 15318685, 15318686, 15318689, - 15318690, 15318691, 15318692, 15318693, 15705260, 15705529, 15705749, 15706023, 15706033, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15706252, 15706253, 15706254, 15706255, 15706257, 15706259, 15706260, 15706264, 15706271, 15706272, 15706273, 15706275, - 15706276, 15706279, 15706280, 15706281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - -int Utf8ToUnicode(char *utf8char, int *unicode, int *len, size_t leaveLen) { - char cTmp = *utf8char; - if ((cTmp & 0xF8) == 0xF0) { - if (leaveLen < 4 || (((*(utf8char + 1)) & 0xC0) != 0x80) || (((*(utf8char + 2)) & 0xC0) != 0x80) || (((*(utf8char + 3)) & 0xC0) != 0x80)) { - return 2; - } - *len = 4; - *unicode |= (cTmp & 0x07); - *unicode <<= 6; - - cTmp = *(utf8char + 1); - *unicode |= (cTmp & 0x3F); - *unicode <<= 6; - - cTmp = *(utf8char + 2); - *unicode |= (cTmp & 0x3F); - *unicode <<= 6; - - cTmp = *(utf8char + 3); - *unicode |= (cTmp & 0x3F); - } else if ((cTmp & 0xF0) == 0xE0) { - if (leaveLen < 3 || (((*(utf8char + 1)) & 0xC0) != 0x80) || (((*(utf8char + 2)) & 0xC0) != 0x80)) { - return 2; - } - *len = 3; - *unicode |= (cTmp & 0x0F); - *unicode <<= 6; - - cTmp = *(utf8char + 1); - *unicode |= (cTmp & 0x3F); - *unicode <<= 6; - - cTmp = *(utf8char + 2); - *unicode |= (cTmp & 0x3F); - } else if ((cTmp & 0xE0) == 0xC0) { - if (leaveLen < 2 || (((*(utf8char + 1)) & 0xC0) != 0x80)) { - return 2; - } - *len = 2; - *unicode |= (cTmp & 0x1F); - *unicode <<= 6; - - cTmp = *(utf8char + 1); - *unicode |= (cTmp & 0x3F); - } else if ((cTmp & 0x80) == 0x00) { - *len = 1; - *unicode = cTmp; - } else { - return 1; - } - return 0; -} - -int Utf8ToGbk(char *strutf8, char *strgbk) { - uint32_t gbk; - int unicode = 0, lenTmp; - size_t strUtf8Len = strlen(strutf8), indexUtf8 = 0, indexGbk = 0; - - while (strUtf8Len > indexUtf8) { - unicode = 0; - lenTmp = 0; - if (Utf8ToUnicode(strutf8 + indexUtf8, &unicode, &lenTmp, strUtf8Len - indexUtf8)) { - indexUtf8++; - continue; - } - if (unicode >= sizeof uni2gbk / sizeof *uni2gbk) { - } else { - gbk = uni2gbk[unicode]; - if (lenTmp > 1) - strgbk[indexGbk++] = gbk >> 8; - strgbk[indexGbk++] = gbk & 0xFF; - } - indexUtf8 += lenTmp; - } - strgbk[indexGbk] = 0; - return 0; -} - -int GbkToUtf8(char *strgbk, char *strutf8) { - uint32_t iUtf8, cTmp; - size_t strGbkLen = strlen(strgbk), indexUtf8 = 0, indexGbk = 0; - - while (strGbkLen > indexGbk) { - cTmp = (*(strgbk + (indexGbk++))) & 0xFF; - if (cTmp < 0x80) { - iUtf8 = gbk2utf8[cTmp]; - strutf8[indexUtf8++] = iUtf8; - } else { - if ((strGbkLen - indexGbk) < 1) { - break; - } - cTmp <<= 8; - cTmp |= ((*(strgbk + (indexGbk++))) & 0xFF); - iUtf8 = gbk2utf8[cTmp]; - if (iUtf8 < 0xD192) { - strutf8[indexUtf8++] = iUtf8 >> 8; - strutf8[indexUtf8++] = iUtf8 & 0xFF; - } else { - strutf8[indexUtf8++] = iUtf8 >> 16; - strutf8[indexUtf8++] = (iUtf8 >> 8) & 0xFF; - strutf8[indexUtf8++] = iUtf8 & 0xFF; - } - } - } - strutf8[indexUtf8] = '\0'; - return 0; -} - -bool IsTextUTF8(const char *str, size_t length) { - int i; - int nBytes = 0; - unsigned char chr; - bool bAllAscii = true; - for (i = 0; i < length; i++) { - chr = *(str + i); - if ((chr & 0x80) != 0) - bAllAscii = false; - if (nBytes == 0) { - if (chr >= 0x80) { - if (chr >= 0xFC && chr <= 0xFD) - nBytes = 6; - else if (chr >= 0xF8) - nBytes = 5; - else if (chr >= 0xF0) - nBytes = 4; - else if (chr >= 0xE0) - nBytes = 3; - else if (chr >= 0xC0) - nBytes = 2; - else { - return false; - } - nBytes--; - } - } else { - if ((chr & 0xC0) != 0x80) { - return false; - } - nBytes--; - } - } - - if (nBytes > 0) { - return false; - } - - if (bAllAscii) { - return false; - } - return true; -} - -#ifdef _cplusplus -} -#endif diff --git a/src/tools/sqkctl/files.h b/src/tools/sqkctl/files.h deleted file mode 100644 index 411c0646..00000000 --- a/src/tools/sqkctl/files.h +++ /dev/null @@ -1,171 +0,0 @@ -#pragma once - -#include "third_party/common/lexical_cast.hpp" -#include -#include -#include - -#if PLATFORM != PLATFORM_WIN -#include -#include -#include -#elif PLATFORM == PLATFORM_WIN -#include -#include -#endif - -namespace sqkctl { -class Files { - public: - static void StringReplace(std::string &strBig, const std::string &strsrc, const std::string &strdst) { - std::string::size_type pos = 0; - std::string::size_type srclen = strsrc.size(); - std::string::size_type dstlen = strdst.size(); - - while ((pos = strBig.find(strsrc, pos)) != std::string::npos) { - strBig.replace(pos, srclen, strdst); - pos += dstlen; - } - } - - static bool IsStartWith(const std::string &str, const std::string &substr) { - if (substr.size() > str.size()) { - return false; - } - size_t size = substr.size(); - for (int i = 0; i < size; ++i) { - if (str[i] != substr[i]) { - return false; - } - } - - return true; - } - - static bool IsInclude(const std::string &str, const std::string &substr) { return false; } - - static std::string GetFileNameByPath(const std::string &filePath) { - std::string fileName = filePath.substr(filePath.find_last_of('/') + 1, filePath.find_last_of('.') - filePath.find_last_of('/') - 1); - return fileName; - } - - static std::string GetFilePathByPath(const std::string &filePath) { - int pos = filePath.find_last_of('/'); - if (pos < 0) { - return "."; - } - std::string path = filePath.substr(0, pos); - return path; - } - - static std::string GetFileNameExtByPath(const std::string &filePath) { - std::string ext = filePath.substr(filePath.find_last_of('.'), filePath.length() - filePath.find_last_of('.')); - return ext; - } - - static std::vector GetFileListInFolder(std::string folderPath, int depth = 5) { - depth--; - - std::vector result; -#if PLATFORM == PLATFORM_WIN - _finddata_t FileInfo; - std::string strfind = folderPath + "\\*"; - long long Handle = _findfirst(strfind.c_str(), &FileInfo); - if (Handle == -1L) { - // std::cerr << "can not match the folder path:" << folderPath << std::endl; - return result; - } - do { - - if (FileInfo.attrib & _A_SUBDIR) { - - if ((strcmp(FileInfo.name, ".") != 0) && (strcmp(FileInfo.name, "..") != 0)) { - std::string newPath = folderPath + "\\" + FileInfo.name; - if (depth >= 0) { - std::vector childResult = GetFileListInFolder(newPath, depth); - result.insert(result.end(), childResult.begin(), childResult.end()); - } - } - } else { - - std::string filename = (folderPath + "\\" + FileInfo.name); - result.push_back(filename); - } - } while (_findnext(Handle, &FileInfo) == 0); - - _findclose(Handle); -#else - DIR *pDir; - struct dirent *ent; - char childpath[512]; - char absolutepath[512]; - pDir = opendir(folderPath.c_str()); - if (pDir) { - memset(childpath, 0, sizeof(childpath)); - while ((ent = readdir(pDir)) != NULL) { - if (ent->d_type & DT_DIR) { - if ((strcmp(ent->d_name, ".") != 0) && (strcmp(ent->d_name, "..") != 0)) { - sprintf(absolutepath, "%s/%s", folderPath.c_str(), ent->d_name); - if (depth >= 0) { - std::vector childResult = GetFileListInFolder(absolutepath, depth); - result.insert(result.end(), childResult.begin(), childResult.end()); - } - } - } else { - sprintf(absolutepath, "%s/%s", folderPath.c_str(), ent->d_name); - result.push_back(absolutepath); - } - } - - sort(result.begin(), result.end()); - } -#endif - return result; - } - - static std::vector GetFolderListInFolder(std::string folderPath) { - std::vector result; -#if PLATFORM == PLATFORM_WIN - _finddata_t FileInfo; - std::string strfind = folderPath + "\\*"; - long long Handle = _findfirst(strfind.c_str(), &FileInfo); - if (Handle == -1L) { - std::cerr << "can not match the folder path" << std::endl; - return result; - } - do { - - if (FileInfo.attrib & _A_SUBDIR) { - if ((strcmp(FileInfo.name, ".") != 0) && (strcmp(FileInfo.name, "..") != 0)) { - std::string newPath = folderPath + "\\" + FileInfo.name; - result.push_back(FileInfo.name); - } - } - - } while (_findnext(Handle, &FileInfo) == 0); - - _findclose(Handle); -#else - DIR *pDir; - struct dirent *ent; - char childpath[512]; - char absolutepath[512]; - pDir = opendir(folderPath.c_str()); - memset(childpath, 0, sizeof(childpath)); - while ((ent = readdir(pDir)) != NULL) { - if (ent->d_type & DT_DIR) { - if ((strcmp(ent->d_name, ".") != 0) && (strcmp(ent->d_name, "..") != 0)) { - sprintf(absolutepath, "%s/%s", folderPath.c_str(), ent->d_name); - - result.push_back(ent->d_name); - } - } - } - - sort(result.begin(), result.end()); -#endif - return result; - } -}; - -} // namespace sqkctl diff --git a/src/tools/sqkctl/init/init.h b/src/tools/sqkctl/init/init.h deleted file mode 100644 index 2affe5fd..00000000 --- a/src/tools/sqkctl/init/init.h +++ /dev/null @@ -1,143 +0,0 @@ -#pragma once - -#include "../squick_files.h" -#include -#include -#include -#include -using namespace nlohmann; -using namespace std; -namespace sqkctl::init { -class Init { - public: - Init() { std::cout << "Init\n"; } - - ~Init() {} - - bool IsEmptyFolder() { - auto allfiles = Files::GetFileListInFolder(".", 1); - return allfiles.size() == 0; - } - - // White - int Exec() { - // 校验当前文件夹下是否为空 - - if (!IsEmptyFolder()) { - cout << "Current folder is not empty\n"; - return 1; - } - - cout << "Start to copy squick files into here\n"; - - json j_all; - json j_files; - - const char *squick_install_path = getenv("squick_path"); - if (squick_install_path == NULL) { - cout << " Squick path is not set\n"; - return 2; - } - - const char *squick_version = getenv("squick_version"); - if (squick_version == NULL) { - squick_version = "1.0.0"; - } - - cout << " Squick install path: " << squick_install_path << std::endl; - -#if PLATFORM == PLATFORM_WIN - system("mkdir squick"); - string copy_cmd = "xcopy /s /e /y /h " + std::string(squick_install_path) + " squick"; -#else - string copy_cmd = "cp -r " + std::string(squick_install_path) + " ./squick"; -#endif - system(copy_cmd.c_str()); - - j_all["version"] = squick_version; - string squick_path = "squick"; - auto files = SquickFiles::GetFiles(squick_path); - for (auto file : files) { - json jf; - jf["path"] = file; - jf["md5"] = md5file(file.c_str()); - j_files.push_back(jf); - } - - j_all["files"] = j_files; - - fstream base; - base.open("base.json", ios::out); - std::string outContent = j_all.dump(); - base.write(outContent.c_str(), outContent.size()); - base.close(); - - fstream gitignore_file; - gitignore_file.open(".gitignore", ios::out); - std::string gitignore_file_content = - R"(/backup -sqkctl -sqkctl.exe -)"; - gitignore_file.write(gitignore_file_content.c_str(), gitignore_file_content.size()); - gitignore_file.close(); - - // submodule - fstream submodule_file; - submodule_file.open(".gitmodules", ios::out); - std::string submodule_file_content = - R"([submodule "squick"] - path = squick - url = https://github.com/pwnsky/squick.git -)"; - submodule_file.write(submodule_file_content.c_str(), submodule_file_content.size()); - submodule_file.close(); - - // readme - fstream readme_file; - readme_file.open("README.md", ios::out); - std::string readme_file_content = - R"( -# Squick Project - -## 1 拉取项目 - -``` -git clone https://xxx.com/xxx/xxx.git -cd server -git submodule init -git submodule update -``` - - -## 2 安装编译squick - -请查看 https://github.com/pwnsky/squick/tree/main#%E5%AE%89%E8%A3%85 - -将所有文件编译完毕后,拷贝sqkctl文件到项目根目录下 - -``` -cp {project_path}/squick/tools/bin/sqkctl {project_path} -``` - - - -## 3 恢复工程文件 - -在安装好squick之后,采用工具sqkctl恢复全部文件,执行命令如下: - -``` -cd {project_path} -sqkctl patch -``` - -)"; - - readme_file.write(readme_file_content.c_str(), readme_file_content.size()); - readme_file.close(); - return 0; - } - - private: -}; -} // namespace sqkctl::init diff --git a/src/tools/sqkctl/main.cc b/src/tools/sqkctl/main.cc deleted file mode 100644 index 2d9d8bc7..00000000 --- a/src/tools/sqkctl/main.cc +++ /dev/null @@ -1,77 +0,0 @@ -#include "excel/config_generator.h" -#include -#include -#include - -#include "add/add.h" -#include "diff/diff.h" -#include "init/init.h" -#include "patch/patch.h" -#include - -using namespace sqkctl; - -void help() { - std::cout << "Usague: sqkctl [cmd] [arg1] [arg2] ...\n" - << " excel: \n" - << " init \n" - << " diff \n" - << " add \n" - << " patch \n" - << " pull \n" - << " update \n" - << " version \n" - << " Examples: \n" - << " sqkctl excel ../resource/excel ../config \n"; -} - -int main(int argc, const char *argv[]) { - if (argc < 2) { - help(); - return 1; - } - - const std::string cmd = argv[1]; - - if (cmd == "excel") { - if (argc < 4) { - help(); - return 1; - } - std::string excelPath = argv[2]; - std::string outPath = argv[3]; - std::cout << "Excel path: " << excelPath << std::endl; - std::cout << "Out path: " << outPath << std::endl; - auto t1 = SquickGetTimeMS(); - - ConfigGenerator fp(excelPath, outPath); - fp.SetUTF8(false); // set it true to convert UTF8 to GBK which is to show Chinese words in Squick - fp.LoadDataFromExcel(); - fp.PrintData(); - fp.GenerateData(); - auto t2 = SquickGetTimeMS(); - std::cout << "Total costed time: " << (t2 - t1) << " ms" << std::endl; - } else if (cmd == "init") { - init::Init i; - i.Exec(); - } else if (cmd == "diff") { - diff::Diff d; - d.Exec(); - } else if (cmd == "update") { - - } else if (cmd == "version") { - - } else if (cmd == "add") { - add::Add a; - a.Exec(); - } else if (cmd == "patch") { - patch::Patch p; - p.Exec(); - } else if (cmd == "pull") { - - } else { - help(); - } - std::cout << "sqkctl exit 0\n"; - return 0; -} diff --git a/src/tools/sqkctl/patch/patch.h b/src/tools/sqkctl/patch/patch.h deleted file mode 100644 index 823867b5..00000000 --- a/src/tools/sqkctl/patch/patch.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include "../squick_files.h" -#include -#include -#include -#include -using namespace nlohmann; -using namespace std; -namespace sqkctl::patch { -class Patch { - public: - Patch() {} - - ~Patch() {} - - int Exec() { - // Patch时直接复制 - auto files = Files::GetFileListInFolder("files"); - for (auto file : files) { - - SquickFiles::CopyFilesToSquick(file); - } - - return 0; - } -}; -} // namespace sqkctl::patch \ No newline at end of file diff --git a/src/tools/sqkctl/reset/reset.h b/src/tools/sqkctl/reset/reset.h deleted file mode 100644 index e69de29b..00000000 diff --git a/src/tools/sqkctl/squick_files.h b/src/tools/sqkctl/squick_files.h deleted file mode 100644 index 9b22d9e7..00000000 --- a/src/tools/sqkctl/squick_files.h +++ /dev/null @@ -1,134 +0,0 @@ -#pragma once -#include "files.h" -#include -#include - -namespace sqkctl { -class SquickFiles { - public: - // 过滤后的文件 - static std::vector GetFiles(const std::string &squick_path) { - std::vector result; - auto files = Files::GetFileListInFolder(squick_path, 5); - // 黑名单过滤 - for (auto &file : files) { - Files::StringReplace(file, "\\", "/"); - Files::StringReplace(file, "//", "/"); - - if (Files::IsStartWith(file, squick_path + "/third_party")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/.git")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/bin")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/cache")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/client")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/deploy")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/src/www/admin/node_modules")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/src/www/admin/dist")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/src/www/server/build")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/.vscode")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/tools/bin")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/config/ini")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/config/struct")) { - continue; - } else if (Files::IsStartWith(file, squick_path + "/src/squick/struct/")) { - int pos = file.find("."); - if (pos > 0) { - string sub = file.substr(pos, file.length() - pos); // PB文件 - if (sub.find("pb") > 0) { - continue; - } - } - } - result.push_back(file); - } - return result; - } - - // - static void CleanFiles() { - // files目录下的所有文件 -#if PLATFORM == PLATFORM_WIN - system("del /f /q /s files\\*"); - system("del /f /q /s changed.json"); -#else - system("rm -rf files/*"); - system("rm -rf changed.json"); -#endif - } - - // 将改动的文件从squick复制到files - static void CopySquickToFiles(const std::string &file) { - // 将文件复制到 files 下 - string cmd = ""; - string targetPath = "files/" + Files::GetFilePathByPath(file); - string sourcePath = file; - - sourcePath = "\"" + sourcePath + "\""; - targetPath = "\"" + targetPath + "\""; -#if PLATFORM == PLATFORM_WIN - Files::StringReplace(targetPath, "/", "\\"); - Files::StringReplace(sourcePath, "/", "\\"); - cmd = "mkdir " + targetPath; - system(cmd.c_str()); - cmd = "copy " + sourcePath + " " + targetPath; - // cout << " cmd: " << cmd << "\n"; - system(cmd.c_str()); -#else - cmd = "mkdir -p " + targetPath; - system(cmd.c_str()); - cmd = "cp " + sourcePath + " " + targetPath; - system(cmd.c_str()); -#endif - } - - // 将改动的文件从files复制到squick - static void CopyFilesToSquick(const std::string &file) { - - string filepath = file; - Files::StringReplace(filepath, "\\", "/"); - Files::StringReplace(filepath, "files/squick/", ""); - - string cmd = ""; - string targetPath = "squick/" + Files::GetFilePathByPath(filepath); - string sourcePath = "files/squick/" + filepath; - - sourcePath = "\"" + sourcePath + "\""; - targetPath = "\"" + targetPath + "\""; -#if PLATFORM == PLATFORM_WIN - Files::StringReplace(targetPath, "/", "\\"); - Files::StringReplace(sourcePath, "/", "\\"); - cmd = "mkdir " + targetPath; - system(cmd.c_str()); - cmd = "copy " + sourcePath + " " + targetPath; - // cout << " cmd: " << cmd << "\n"; - system(cmd.c_str()); -#else - cmd = "mkdir -p " + targetPath; - system(cmd.c_str()); - cmd = "cp " + sourcePath + " " + targetPath; - system(cmd.c_str()); -#endif - } - - static void BackupFiles() { -#if PLATFORM == PLATFORM_WIN - system("mkdir backup"); - system("xcopy /s /e /y files backup"); -#else - system("mkdir -p backup"); - system("cp -r files/squick backup"); -#endif - } -}; -} // namespace sqkctl \ No newline at end of file diff --git a/tools/build_squick.bat b/tools/build.bat similarity index 100% rename from tools/build_squick.bat rename to tools/build.bat diff --git a/tools/build_squick.sh b/tools/build.sh old mode 100755 new mode 100644 similarity index 100% rename from tools/build_squick.sh rename to tools/build.sh diff --git a/tools/build_sqkctl.bat b/tools/build_sqkctl.bat deleted file mode 100644 index 3a174e69..00000000 --- a/tools/build_sqkctl.bat +++ /dev/null @@ -1,22 +0,0 @@ -@echo off -rem Author: i0gan -rem Email : l418894113@gmail.com -rem Date : 2023-01-04 -rem Github: https://github.com/pwnsky/squick -rem Description: Build sqkctl tools - -set build_version="release" -set project_path=%~dp0\.. -set build_path=%project_path%\cache - -cd %project_path% -mkdir %build_path%\sqkctl -cd %build_path%\sqkctl -cmake %project_path%\src\tools\sqkctl -cmake --build . - -if "%1"=="no_pause" ( - echo continue -) else ( - pause -) \ No newline at end of file diff --git a/tools/build_sqkctl.sh b/tools/build_sqkctl.sh deleted file mode 100755 index 60b5d35a..00000000 --- a/tools/build_sqkctl.sh +++ /dev/null @@ -1,21 +0,0 @@ -#! /bin/bash -# Author: i0gan -# Email : l418894113@gmail.com -# Date : 2022-11-27 -# Github: https://github.com/pwnsky/squick -# Description: Build sqkctl tools -cd $(dirname $0) -source common.sh - -echo "build_path: " $build_path -echo "project_path: " $project_path -# 编译工具 -cd ${project_path} -mkdir -p "${build_path}/sqkctl" -cd "${build_path}/sqkctl" -pwd - -log_info "Start to build sqkctl tools" - -cmake ${project_path}/src/tools/sqkctl -time make -j $(nproc) diff --git a/tools/clean_squick.bat b/tools/clean.bat similarity index 100% rename from tools/clean_squick.bat rename to tools/clean.bat diff --git a/tools/clean_squick.sh b/tools/clean.sh old mode 100755 new mode 100644 similarity index 100% rename from tools/clean_squick.sh rename to tools/clean.sh diff --git a/tools/generate_deploy.bat b/tools/gen_deploy.bat similarity index 95% rename from tools/generate_deploy.bat rename to tools/gen_deploy.bat index 51e3510f..b41c8f9a 100644 --- a/tools/generate_deploy.bat +++ b/tools/gen_deploy.bat @@ -1,36 +1,36 @@ -@echo off -rem Author: i0gan -rem Email : l418894113@gmail.com -rem Date : 2023-03-10 -rem Github: https://github.com/pwnsky/squick -rem Description: Generate Windows deploy files - -del /f /q /s ..\deploy - -cd .. -mkdir deploy\bin -mkdir deploy\config -mkdir deploy\src\proto -mkdir deploy\src\lua -mkdir deploy\data\logs -mkdir deploy\data\crash - -xcopy /s /e /y bin deploy\bin -echo d | xcopy /s /e /y script deploy\script -xcopy /s /e /y config deploy\config -xcopy /s /e /y src\proto deploy\src\proto -xcopy /s /e /y src\lua deploy\src\lua - -cd deploy\bin -del /f /q /s *.pdb -del /f /q /s *.exp -del /f /q /s *.lib - -cd.. -del /f /q /s *.sh - -if "%1"=="no_pause" ( - echo continue -) else ( - pause -) +@echo off +rem Author: i0gan +rem Email : l418894113@gmail.com +rem Date : 2023-03-10 +rem Github: https://github.com/pwnsky/squick +rem Description: Generate Windows deploy files + +del /f /q /s ..\deploy + +cd .. +mkdir deploy\bin +mkdir deploy\config +mkdir deploy\src\proto +mkdir deploy\src\lua +mkdir deploy\data\logs +mkdir deploy\data\crash + +xcopy /s /e /y bin deploy\bin +echo d | xcopy /s /e /y script deploy\script +xcopy /s /e /y config deploy\config +xcopy /s /e /y src\proto deploy\src\proto +xcopy /s /e /y src\lua deploy\src\lua + +cd deploy\bin +del /f /q /s *.pdb +del /f /q /s *.exp +del /f /q /s *.lib + +cd.. +del /f /q /s *.sh + +if "%1"=="no_pause" ( + echo continue +) else ( + pause +) diff --git a/tools/generate_deploy.sh b/tools/gen_deploy.sh old mode 100755 new mode 100644 similarity index 100% rename from tools/generate_deploy.sh rename to tools/gen_deploy.sh diff --git a/tools/generate_k8s_deploy.sh b/tools/gen_k8s_deploy.sh old mode 100755 new mode 100644 similarity index 100% rename from tools/generate_k8s_deploy.sh rename to tools/gen_k8s_deploy.sh diff --git a/tools/generate_vs_project.bat b/tools/gen_sln.bat similarity index 81% rename from tools/generate_vs_project.bat rename to tools/gen_sln.bat index ae48eb08..86640568 100644 --- a/tools/generate_vs_project.bat +++ b/tools/gen_sln.bat @@ -8,11 +8,14 @@ rem Description: Generate visual studio project set build_version="debug" set project_path= %~dp0\.. set build_path=%project_path%\cache - mkdir %build_path% rem Gen config files -call "proto2code.bat" no_pause -call "generate_config.bat" no_pause + +cd %project_path%\res +call ".\GenProtoCode.bat" server +call ".\ExportTable.bat" server + +cd %project_path%\tools call "init_runtime_dll.bat" no_pause rem cmake diff --git a/tools/generate_config.bat b/tools/generate_config.bat deleted file mode 100644 index 44ec1421..00000000 --- a/tools/generate_config.bat +++ /dev/null @@ -1,53 +0,0 @@ -@echo off -rem Author: i0gan -rem Email : l418894113@gmail.com -rem Date : 2022-11-27 -rem Github: https://github.com/pwnsky/squick -rem Description: Generate configuration files - -set config_path=..\config -set config_path_gen=../config -set excel_path=..\resource\excel -set excel_path_gen=../resource/excel -set struct_path=..\src\struct -set lua_struct_path=..\src\lua\struct -set client_config_path=..\client -set lua_src_path=..\src\lua - -mkdir %config_path%\excel -mkdir %config_path%\struct -mkdir %config_path%\ini - -.\bin\sqkctl excel %excel_path_gen% %config_path_gen% -if %errorlevel% equ 0 ( - echo "Excel to config succ" -) else ( - echo "Excel to config Failed!" - pause - exit 1 -) - -rem copy to server -copy ..\config\excel\excel.h %struct_path% -mkdir %lua_struct_path% -copy ..\config\excel\excel.lua %lua_struct_path% - -rem copy to client -mkdir %client_config_path%\ini -mkdir %client_config_path%\excel -mkdir %client_config_path%\struct -mkdir %client_config_path%\lua -mkdir %client_config_path%\csharp - - -xcopy /s /e /y %config_path%\ini %client_config_path%\ini -xcopy /s /e /y %config_path%\struct %client_config_path%\struct - -xcopy /s /e /y %config_path%\excel %client_config_path%\excel -rd /s/q %config_path%\excel - -if "%1"=="no_pause" ( - echo continue -) else ( - pause -) \ No newline at end of file diff --git a/tools/generate_config.sh b/tools/generate_config.sh deleted file mode 100755 index 1cd15d9a..00000000 --- a/tools/generate_config.sh +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/bash -# Author: i0gan -# Email : l418894113@gmail.com -# Date : 2022-11-27 -# Github: https://github.com/pwnsky/squick -# Description: Generate configuration files -cd $(dirname $0) -config_path="../config" -struct_path="../src/struct" -lua_struct_path="../src/lua/struct" -client_config_path="../client" -excel_path='../resource/excel' - - -bash ./clean_config.sh -# 生成配置文件 -mkdir -p $config_path/excel -mkdir -p $config_path/struct -mkdir -p $config_path/ini - -./bin/sqkctl excel $excel_path $config_path -cp -a $config_path/excel/excel.h $struct_path -cp -a $config_path/excel/excel.lua $lua_struct_path - -mkdir -p $client_config_path/ini -mkdir -p $client_config_path/excel -mkdir -p $client_config_path/struct - -cp -a $config_path/ini $client_config_path -cp -a $config_path/struct $client_config_path -cp -a $config_path/excel $client_config_path - -rm -rf $config_path/excel diff --git a/tools/proto/gen_msgid.py b/tools/proto/gen_msgid.py deleted file mode 100644 index a5159aad..00000000 --- a/tools/proto/gen_msgid.py +++ /dev/null @@ -1,152 +0,0 @@ -#! /usr/bin/python3 -# encoding=utf-8 -import os -import collections -import time -from datetime import datetime -parser_result = {} -all_proto_files = [] - -project_path = '../..' -current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") - -file_desc='''// Generated by the tools/proto/gen_msgid.py. DO NOT EDIT! -// Update time: ''' + str(current_time) + "\n" - -# Generate msg_id.proto -def generate_proto_file(): - with open(project_path + '/src/proto/msg_id.proto', 'w+', encoding='utf-8') as out: - out.write(file_desc) - out.write(''' -syntax = "proto3"; -package rpc; -enum MsgId { - MsgIdZero = 0; -''') - for msg_id, value in parser_result.items(): - if value["is_node_proto"]: - continue - name = value["name"] - desc = value["desc"] - sp = name.split(".") - package_name = sp[0] - message_name = sp[1] - print("msg_id: " + str(msg_id) + " msg_name: " + name) - line = " Id" + message_name + " = " + str(msg_id) + "; // message: " + name + " desc: " + desc + "\n" - out.write(line) - out.write("}") - -# Generate n_msg_id.proto -def generate_node_proto_file(): - with open(project_path + '/src/proto/n_msg_id.proto', 'w+', encoding='utf-8') as out: - out.write(file_desc) - out.write(''' -syntax = "proto3"; -package rpc; -enum NMsgId { - NMsgIdZero = 0; -''') - for msg_id, value in parser_result.items(): - if value["is_node_proto"] == False: - continue - name = value["name"] - desc = value["desc"] - sp = name.split(".") - package_name = sp[0] - message_name = sp[1] - line = " Id" + message_name + " = " + str(msg_id) + "; // message: " + name + " desc: " + desc + "\n" - out.write(line) - out.write("}") - -# Generate msg_id.h & msg_id.cc -def generate_cpp_file(): - with open(project_path + '/src/struct/msg_id.cc', 'w+', encoding='utf-8') as cc_file: - cc_file.write(file_desc) - cc_code = '#include "msg_id.h"\n' - cc_code += 'std::vector GetAllProtoFiles() {\n return {' - for file_name in all_proto_files: - cc_code += '"' + file_name + '", ' - cc_code += "};\n}\n\n" - # - cc_code += 'std::string GetMessageNameByID(int msg_id) {\n' - cc_code += " switch(msg_id) {\n" - for msg_id, value in parser_result.items(): - name = value["name"] - desc = value["desc"] - cc_code += " case " + str(msg_id) + ': return "' + name + '";\n' - cc_code += " default: return \"\";\n }\n" - cc_code += " return \"\";\n}\n" - cc_file.write(cc_code) - - with open(project_path + '/src/struct/msg_id.h', 'w+', encoding='utf-8') as h_file: - h_file.write(file_desc) - h_file.write(''' -#pragma once -#include -#include -#include -SQUICK_CPP_EXPORT std::vector GetAllProtoFiles(); -SQUICK_CPP_EXPORT std::string GetMessageNameByID(int msg_id); -''') - -def parse_proto(f, is_node_proto): - print('parse file:' + f) - with open(f, 'r', encoding='utf-8') as inp: - message_name = '' - parse_message_name = True - parse_package = True - for line in inp.readlines(): - if parse_package is True: - pos = line.find('package') - if pos >= 0: - package_name = line[pos + len('package'): line.find(';')] - package_name = package_name.strip() - parse_package = False - i = 0 - while i < 1: # Just do once - i += 1 - # msg name - msg_name_start_pos = line.find('message') - if msg_name_start_pos < 0: - break - msg_name_end_pos = line.find(' {') - if msg_name_end_pos < 0: - break - msg_name = package_name + "." + line[msg_name_start_pos + len('message ') : msg_name_end_pos] - - # msg_id - msg_id_start_pos = line.find('msg_id=') - if msg_id_start_pos < 0: - break - msg_id_end_pos = line.find(';') - if msg_id_end_pos < 0: - break - message_id = line[msg_id_start_pos + len('msg_id=') : msg_id_end_pos] - print("msg name: [" + msg_name + "] msg_id=[" + message_id + "]") - - # msg desc - msg_desc = '' - sub_line = line[msg_id_end_pos + 1:-1] - msg_desc_start_pos = sub_line.find('desc=') - if msg_desc_start_pos >= 0: - msg_desc_end_pos = sub_line.find(';') - if msg_desc_end_pos >= 0: - msg_desc = sub_line[msg_desc_start_pos + len('desc=') : msg_desc_end_pos] - - parser_result[int(message_id)] = { "name" : msg_name, "desc" : msg_desc, "is_node_proto" : is_node_proto} - -for root, dirs, files in os.walk(project_path + '/src/proto/'): - for f in files: - if f.endswith('.proto'): - is_node_proto = False - if f.startswith('n_'): - is_node_proto = True - parse_proto(os.path.join(root, f), is_node_proto) - all_proto_files.append(f.split('/').pop()) - -# sort msg_id -parser_result = dict(sorted(parser_result.items())) - -generate_proto_file() -generate_node_proto_file() -generate_cpp_file() \ No newline at end of file diff --git a/tools/proto/proto_enum_to_lua.py b/tools/proto/proto_enum_to_lua.py deleted file mode 100644 index 09961464..00000000 --- a/tools/proto/proto_enum_to_lua.py +++ /dev/null @@ -1,111 +0,0 @@ -#! /usr/bin/python3 -# encoding=utf-8 -import os -import collections -import time -parser_result = {} -package_list = {} -project_path = '../..' -# -def generate_lua_file(path): - with open(path, 'w+', encoding='utf-8') as out: - out.write('''---------------------------------------------------------------------------------- --- don't edit it, generated from .proto files by tools ----------------------------------------------------------------------------------- - -''') - for p, es in package_list.items(): - for e, k in es.items(): - out.write(e + ' = {\n') - enum_value_str = ' ' - this_line_str = enum_value_str - sortedx = collections.OrderedDict(sorted(k.items(), key=lambda x: int(x[1], 0))) - for _k,_v in sortedx.items(): - tmp_str = _k + ' = ' + _v + ', ' - if len(this_line_str) + len(tmp_str) >= 100: - tmp_str = '\n ' + tmp_str - this_line_str = tmp_str - else: - this_line_str += tmp_str - enum_value_str += tmp_str - out.write(enum_value_str) - out.write('\n}\n\n') - -def add_enum_value(p, e, n, v): - p = p.strip() - e = e.strip() - n = n.strip() - v = v.strip() - k = p # package name不写进去了 - '''k = '' - if k != '': - k = k + '.' - if e != '': - k = k + e + '.' - k = k + n''' - k = n - - if k.startswith('//'): - return - k = k.replace(e + '_', '') - if p not in package_list: - package_list[p] = {} - if e not in package_list[p]: - package_list[p][e] = {} - - package_list[p][e][k] = v - print('enum =' + k + ', value=' + v) - -def parse_proto(f): - print('parse file:' + f) - with open(f, 'r', encoding='utf-8') as inp: - parse_package = True - package_name = '' - enum_name = '' - parse_enum_name = False - for line in inp.readlines(): - if parse_package is True: - pos = line.find('package') - if pos >= 0: - package_name = line[pos + len('package'): line.find(';')] - package_name = package_name.strip() - parse_package = False - parse_enum_name = True - elif parse_enum_name: - pos = line.find('enum') - if pos >= 0: - enum_name = line[pos + len('enum') : line.find('{')] - parse_enum_name = False - else: - tmp = line.strip() - if len(tmp) == 0: - continue - if tmp[0] == '}': - parse_enum_name = True - else: - if line.find('=') > 0: - values = line.split('=') - name = values[0].strip() - v = values[1] - v = v[: v.find(';')] - - add_enum_value(package_name, enum_name, name, v.strip()) - - -for root, dirs, files in os.walk(project_path + '/src/proto/'): - for f in files: - if f.endswith('.proto'): - parse_proto(os.path.join(root, f)) - -generate_lua_file(project_path + '/src/lua/proto/enum.lua') - - -parser_result = {} -package_list = {} -# generate the client -for root, dirs, files in os.walk(project_path + '/src/proto/'): - for f in files: - if f.endswith('.proto') and f.startswith("n_") == False: - parse_proto(os.path.join(root, f)) - -generate_lua_file(project_path + '/client/proto/lua/enum.lua') \ No newline at end of file diff --git a/tools/proto/proto_to_lua_str.py b/tools/proto/proto_to_lua_str.py deleted file mode 100644 index 8585109a..00000000 --- a/tools/proto/proto_to_lua_str.py +++ /dev/null @@ -1,51 +0,0 @@ -#! /usr/bin/python3 -# Gen proto files to lua files, just for client -import os -import collections - -parser_result = {} - -package_list = {} -proto_str = "" -is_find_package = False -is_find_syntax = False -variable_name = "proto_code" -project_path = '../..' -def generate_lua_file(): - with open( project_path + '/client/proto/lua/proto.lua', 'w+', encoding='utf-8') as out: - out.write('''---------------------------------------------------------------------------------- --- don't edit it, generated from .proto files by tools ----------------------------------------------------------------------------------- - -''') - out.write(variable_name + " = [[\n" + proto_str + "\n]]") - - -def parse_proto(f): - global proto_str, is_find_package, is_find_syntax - print('parse file:' + f) - with open(f, 'r', encoding='utf-8') as inp: - for line in inp.readlines(): - pos = line.find('package') - if pos >= 0: - if is_find_package == False: - proto_str += line - is_find_package = True - continue - pos = line.find('syntax') - if pos >= 0: - if is_find_syntax == False: - proto_str += line - is_find_syntax = True - continue - pos = line.find('import') - if pos >= 0: - continue - proto_str += line - -for root, dirs, files in os.walk(project_path + '/src/proto/'): - for f in files: - file_name = os.path.basename(f) - if f.endswith('.proto') and f.startswith("n_") == False: - parse_proto(os.path.join(root, f)) -generate_lua_file() diff --git a/tools/proto2code.bat b/tools/proto2code.bat deleted file mode 100644 index 7bc19f5c..00000000 --- a/tools/proto2code.bat +++ /dev/null @@ -1,61 +0,0 @@ -@echo off -rem Author: i0gan -rem Email : l418894113@gmail.com -rem Date : 2023-01-04 -rem Github: https://github.com/pwnsky/squick -rem Description: Generate proto code - - -set proto_bin=..\third_party\build\bin\protoc -set proto_path="..\src\proto" -set cpp_out_path="..\src\struct" -set csharp_out_path="..\client\proto\csharp" -set python_out_path="..\src\pycli\proto" -set lua_out_path="" - -mkdir %csharp_out_path% -mkdir %python_out_path% - -rem Client's lua proto path -mkdir ..\client\proto\lua - -cd proto -python gen_msgid.py -python proto_enum_to_lua.py -python proto_to_lua_str.py -cd .. - -for %%f in (%proto_path%\*.proto) do ( - %proto_bin% --csharp_out=%csharp_out_path% --proto_path=%proto_path% %%f - if %ERRORLEVEL% neq 0 ( - pause - exit /b %ERRORLEVEL% - ) -) - -for %%f in (%proto_path%\*.proto) do ( - %proto_bin% --python_out=%python_out_path% --proto_path=%proto_path% %%f - if %ERRORLEVEL% neq 0 ( - pause - exit /b %ERRORLEVEL% - ) -) - -rem windows dll于linux so有所区别,windows在需要声明导出函数,才能让其他dll或程序进行调用 参考 https://www.cnblogs.com/zhongpan/p/8378825.html -for %%f in (%proto_path%\*.proto) do ( - %proto_bin% --cpp_out=dllexport_decl="WIN_DLL_EXPORT":%cpp_out_path% --proto_path=%proto_path% %%f - if %ERRORLEVEL% neq 0 ( - pause - exit /b %ERRORLEVEL% - ) -) - -rem 删除多余的proto -del /f /q /s %csharp_out_path%\N*.cs -echo "Proto to code succ" - -if "%1"=="no_pause" ( - echo continue -) else ( - pause -) diff --git a/tools/proto2code.sh b/tools/proto2code.sh deleted file mode 100755 index 8634f26d..00000000 --- a/tools/proto2code.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -# Author: i0gan -# Email : l418894113@gmail.com -# Date : 2022-10-01 -# Github: https://github.com/pwnsky/squick -# Description: Install development environment on linux -cd $(dirname $0) -source common.sh -export LD_LIBRARY_PATH=`realpath ../third_party/build/bin`:`realpath ../third_party/build/lib`:`realpath ../third_party/build/protobuf` -echo $LD_LIBRARY_PATH - -proto_bin='../third_party/build/bin/protoc' -proto_path="../src/proto" -cpp_out_path="../src/struct" -csharp_out_path='../client/proto/csharp' -python_out_path='../src/pycli/proto' -lua_out_path="../client/proto/lua" - -mkdir -p $csharp_out_path -mkdir -p $python_out_path -mkdir -p $lua_out_path - -# 生成Lua文件 -cd proto -python3 gen_msgid.py -check_err -python3 proto_enum_to_lua.py -check_err -python3 proto_to_lua_str.py -check_err -cd .. - -proto_files=$proto_path/*.proto -for f in $proto_files -do - echo $f - $proto_bin --cpp_out=$cpp_out_path --proto_path=$proto_path $f - check_err - $proto_bin --csharp_out=$csharp_out_path --proto_path=$proto_path $f - check_err - $proto_bin --python_out=$python_out_path --proto_path=$proto_path $f - check_err -done - -# remove nodes rpc files -rm $csharp_out_path/N*.cs - -check_err