.

Создание сетевой игры (курсовая)

Язык: русский
Формат: курсова
Тип документа: Word Doc
0 1751
Скачать документ

Федеральное агенство образования

Южно-Уральский Государственный Университет

Факультет экономики и управления

Кафедра информатики

Курсовая работа

по дисциплине “Локальные сети”

СОЗДАНИЕ СЕТЕВОЙ ИГРЫ

“КОСТИ”

Выполнили:

Студенты группы ЭиУ-423

Захезин С.М.

Капацина Д.

Давидович И.

Проверил:

Сартасов Е.М.

Челябинск, 2006

Аннотация

Создание сетевой игры «Кости». Игра ведется до 21 очка, работа сделанна
на 5 протоколах.

Введение

Правила игры

Один из игроков является сервером, другой – клиентом. Для начала игры
необходимо выбрать протокол, по которому будет установлена связь.
Длительность игры зависит от набранных очков и желания играков.

Протоколы

IPX

Протокол IPX предоставляет возможность программам, запущенным на рабочих
станциях, обмениваться пакетами данных без подтверждения. В сети Novell
NetWare наиболее быстрая передача данных при наиболее экономном
использовании памяти реализуется именно протоколом IPX. Протоколы SPX и
NETBIOS сделаны на базе IPX и поэтому требуют дополнительных ресурсов.

Формат пакета IPX

Формат передаваемых по сети пакетов представлен на рис. 2.

picscalex1000100090000039c42010000005b96000000001610000026060f002220574d
464301000000000001006132000000000b00000000200000343601003456010001000000
6c00000000000000000000003e0200000a0100000000000000000000d53e00001a1d0000
20454d4600000100345601000c0000000100000000000000000000000000000090060000
1a040000d601000025010000000000000000000000000000f02b07008878040046000000
2c00000020000000454d462b014001001c000000100000000210c0db0100000060000000
6000000046000000e4270000d8270000454d462b224004000c000000000000001e400900
0c00000000000000244001000c000000000000003040020010000000040000000000803f
214007000c000000000000000840000530270000242700000210c0db0100000000000000
0000000000000000000000000100000089504e470d0a1a0a0000000d494844520000023f
0000010b08030000000171172300000300504c54450000000000400000800000ff002000
0020400020800020ff0040000040400040800040ff0060000060400060800060ff008000
0080400080800080ff00a00000a04000a08000a0ff00c00000c04000c08000c0ff00ff00
00ff4000ff8000ffff2000002000402000802000ff2020002020402020802020ff204000
2040402040802040ff2060002060402060802060ff2080002080402080802080ff20a000
20a04020a08020a0ff20c00020c04020c08020c0ff20ff0020ff4020ff8020ffff400000
4000404000804000ff4020004020404020804020ff4040004040404040804040ff406000
4060404060804060ff4080004080404080804080ff40a00040a04040a08040a0ff40c000
40c04040c08040c0ff40ff0040ff4040ff8040ffff6000006000406000806000ff602000
6020406020806020ff6040006040406040806040ff6060006060406060806060ff608000
6080406080806080ff60a00060a04060a08060a0ff60c00060c04060c08060c0ff60ff00
60ff4060ff8060ffff8000008000408000808000ff8020008020408020808020ff804000
8040408040808040ff8060008060408060808060ff8080008080408080808080ff80a000
80a04080a08080a0ff80c00080c04080c08080c0ff80ff0080ff4080ff8080ffffa00000
a00040a00080a000ffa02000a02040a02080a020ffa04000a04040a04080a040ffa06000
a06040a06080a060ffa08000a08040a08080a080ffa0a000a0a040a0a080a0a0ffa0c000
a0c040a0c080a0c0ffa0ff00a0ff40a0ff80a0ffffc00000c00040c00080c000ffc02000
c02040c02080c020ffc04000c04040c04080c040ffc06000c06040c06080c060ffc08000
c08040c08080c080ffc0a000c0a040c0a080c0a0ffc0c000c0c040c0c080c0c0ffc0ff00
c0ff40c0ff80c0ffffff0000ff0040ff0080ff00ffff2000ff2040ff2080ff20ffff4000
ff4040ff4080ff40ffff6000ff6040ff6080ff60ffff8000ff8040ff8080ff80ffffa000
ffa040ffa080ffa0ffffc000ffc040ffc080ffc0ffffff00ffff40ffff80ffffff1c19a3
3000000001624b47440088051d480000000c636d50504a436d7030373132000000034800
73bc0000239c49444154785eed9d0996a3380c40fbc275993a4c5d6fc6da252fac8660e2
bc992e02deb03e920812fef7dffccc19383e03fffefbb7fb73bcb759f36d3390f8699cd2
bfe681b7cdc13c9fe33330f9393e77b3e67f49fb4cfd3339383e03939fe373376b4efd33
1938370353ff9c9bbf6faf3d223f7fbfe9f30792fbfbc33ff5cfe2c16f977baff31f909f
5ffac1ea374d01fddbfc0162e160aff9fbf676c6e3e72fb1f3f343004d7e3ecdef78fc24
7412394011f2938c19d930dd902d2a07160e0c1e14a22ff40fecc4239f96c0d8fd0fc70f
81f3df7f0909e00714d13f6003377e0012b46e690bf849b6ee970ea9bafaa163b0f3074c
21d4a97ea01bea0baac31fdca6afb0879efd605dd9a0035cd455b112545b3ba42fd20d6f
e01f6dd935ff3cd646e4c7240eec2406d28e84c35f2287b7109bf43ffe4dbb7fffd27136
77cc0f56c47f5a1ac8e4ca20093fca851216376afc2855012f4412476668128e089c6dba
269fc5d088fc98c019981f6424e9248208b67e809f044d028af6902cd206f343da6bc985
02f5221224bdc3420e7a8514921c11dd230a261c205aac115751a82271904ef29b939f5e
970d2919fe2810a084d287140adfd3a3a130d396b60a7e0a17dcdb16b54dc49ed82df926
464ac0523a980042c25b2bde93ab276b5ea1215a093746b1f938bbd7c41e6b6744fd8333
0aac1810c00ffc2a94dce9c80f96fdfd056fc715a78a2bb770323524c045fda34c05fd13
aa90c3244809ff7625108e54054bba4d5448a2d28ec9f9aa5ac3f1037349460935021b24
b251706b455b60a4c0ed81b274a3c51e91b75aabfc88c057f9a9db2fcf8f335baab082e1
137553c013c1bd8a83a3ed8ec70fdd5f916932830477f5ea4993dfccf75fe85683ff0cfa
e71f6822f17ad6f9316fc53bb96280a23dd27b26efe51858483b8368ba846c1cab25b592
aa7cb857773b7654ce57d51b8f9fff8005f66c8c1fbe7f5777c7cc13dd68897f0d3f3dee
e08784cb5e51d4216866d4476275a880b0dfe3f8913d8a17193d6bc1c3c54a474c5a70a3
ae42e150bb03f28376aa7cee653bcba3b2a7ef23b1ae1ec943fde335a886e467eda46e3a
de979f9b06ddb99bc9cff109edc88f58b1e383f950cdc9cf8726fe25dd4e7e5e22c80f9d
06dd43ecfb7c68a8b3db07cec0e4e78142196848d37e0d24ac070e75f2f340a10c34a4c9
cf40c27ae050273f0f14ca40439afc0c24ac070e753c7e763dc3da51b8e3afc90f94f355
431a8f1f8c645eff503a463bba39b4c0cfc6d75b9d25b219782d3f1487b88d9f619f3e7d
1ee7a1f991942f08ddb034b0148398fe8380328c58b5bcb0d66c6f53689f97d513473032
3f9af2656960189c08b18614634639181a119d0b40e3c2248acb22c45cd81847c14b658d
e512a3c7e1833eb542a3c2a0123f1ce22ddc83db72cc9508f59e884b31a681f9b1942f20
84f232782bc51c429c2ac4b04a8258451a22c62c2f42205a48d98ab9160482e3a7ccf1a2
8854093d8cb1ac0eda189b380240e3f263295f79183dba3ee2ff60466135c754c391b3b8
64e54755856ca0404310b31111f8292b84fc0dd08b025d505ba1de08f8587e51a9995ab7
399b6e7fae3b79b9ffb294afc00f24b77b7e24639006e40d049d87c85d558a012256a6a2
4e9c2661cd823ac5356f4e95f6a3c858ccb3d6d0491dcc191b57ff58cad70e7e3cd6abfc
a00325d49980bd5a628e08426f88dcbc1a3fd2a01c74ac70a1c7e679b5f4c190fcc0fd16
272ae30f843e0d8c33e0d57e45fd13f8098e4ea97f0c07535279120ef16314b16fbc6abf
4266997a3daec7ebf477df9687e487b4bea57c8534303c887984e83fb7f9b1db20146021
45cbbaf26ead692db56152d53c23346622a850c3fbd0a5eb13eaf515f445ad0dcc8fa57c
394a7e5316bcb8ce78ffbec04f9ebea537d27cc72dfe8cf77fdc21b563aac76c4ff084d4
cfd206bd27e4dc23bbd3bf48dafd9b1d8f1f3707651e189a334e815f7a37e2fa4436fc58
d12aaa5dd65b7a7589a1f929250389cb94c67cf633f9d934832fe307744f177c364dde2c
34e0ef3f6b423b67b6d65a9fc7e30cbc4dff4cf9de3b034bf93b8d914cd7f15e113dbab7
99fff568f13c7e706dfbf5d017a63d7e46bf6b80939fef9277efb39dfcf49ed1ef6a6ff2
f35df2ee7db6939fde33fa5ded0dc70fc56e54df80785072b69cd88e06762496ed6875bc
a2c3f14381f1e9737ae11c4ecc70cb89d5c4d748dfe8d0ff01587c20c981ea1754f9627e
e831bd5f4eac36bff63efb70f433fc40c4c905109c6872387ed2b98a4831ed0bd7f5b2e5
2c755397fcb285c142b13fce10f3cb89555ae25245571fe2e784a4afa93a323f98dc85eb
33f13377cbf6724b7ee126ac60a0af1da77afc95af685c4e2c2b02fac9e791a5ae5c1b8b
2b67c630430e5493f0300d5c04914ae28f2a160d22a347032876dea040358a969463e110
1cc132b2817f2d3f49ebc7fc33edc102d8a4591f085723706c7ed2c20428620e864e274b
79607ec92f5bfc0b0f628828d4a30cb16c391f57845ab23c32e88a3bc036dafc48386c88
88b524a1903c26fc34c25d5dce18746afc784a62ee59c98f25a7318ba11943dd855ffb53
587c1031383f3013fca204599500b2bdb225bf102759c10029c07a1c26ad20d432ca340e
1faae405ea26c1f2ca44139860827620be908b32138369d1bc4389e1d7687d4b49cc72cb
0afd83578c8e951b08d1dd19dc929ee603b41be66f6c7e48f44995b85551305b90529bf5
050a149548de3207d51b3f1aac9817c196fc7b18ca366456d5d238c3617ac6599ba037d0
8a904234f158b83dee13b5c31b9ce0a321d7d2b47611376438253f79c37a263242e6d39f
5985a117f0837918b62a0a659b8625bfc0dab4f94159d8d27386d80e7efccc2a0be23be4
ca45f70b1d41082bfcc40c21f39a82d9f29693dd25a77f58e5790d97e11bc7e0e02e081a
9f1f322ab62a13da2fb7e417af6059da1e4dd390e5c416ed17a8ba9df64b459af92d266a
96b3ea9878edabfe516da39966a67fb00a4b313a5c4e7b790349f632b37eb985b51ebd42
7da5fec144afcc7ec525bfe01742d4301c5acfbe2f6588f9e5c46a19652e8facd2466546
5941f0455b717d040b365b0c8f69ad804df06ec9ce798ba6b75bda4fb181f651eeb7b8ba
def4117c7ec8aa7acceb7eb7fe615f4757f512ab9326bbb1c2b7dc3b916977cb89d922e0
2e6f0c4b4915f7ca98f5fb77a74dc4c3099404475b5d68673bd4f7d0bb696a926fb3f54e
5ebd9cb0c16652748f983ac5853457fc85406c9afe62f0c6fbf7fca2af3e8be29df80311
2f16563c34e3036e7fedb95a08c8eff9e0adaabc324fa4a9e00cce9566ae3d3ca2ffb367
4606fe9db86d36e4c89261d9334927ca4e7e4e4cdeb5551f40c7fa09be9d9ff5199825ce
ccc0e4e7cceccdbace9957af5e36e6eccc19589b81c9cfda0ccde34b3330edd7e4e3cc0c
4c7ececcdeac3bf9990c9c9981c9cf99d99b75273f93813333301e3fcbd95fadbcacfe69
636766fd3d75c7e34712c0f8a168268acaf32e4cbbe89736f61ed9f7389371f98170d4f2
53e107e3c4263f3d68a9cc773bbafea1cfef68fd0b4adbb2dc2ed9a2541d0cb9e0742fce
e072aff5c583b04658facf960dc34cb2f9d9390343ea9f748ef0a25e97f9a53960b01b8f
692c186770293f10e94cf1ae9c2e061c6a5c585da751141585f6612c9f0fabb26f128d85
215a5c3a945f0946df29bb27141f941f542a2ef38bc3df31b742f109195ca67f24410c30
f88586287a3e6482e5a27161a8217c1489c2c212222a11a616471aebbeecb56e43f24357
7c5ae38b96c8957caf5f5cf08242a15da8bba43bcb5f20266d434db0753137ac714dbba8
e2057e84a61832eaf831dc9ea03b7a8c61587e20b94b33bfec25074c16009256c2405b95
f303fac9d27d586349619dd3686a8401ced7128de3feb2b72831c974c4ec9c053e3fd4ad
3c08d390fcc88f3c9af995f19344e45607cbf9211d85b1f5e0fa705a464a80175fba3295
ca4f96fe10ec17265490fd629b66acc88e85f93e28c1cf561b921f9e32cbfca22d502a64
8dc4a2f9e554540fd11a07484ec80d5b7a2514f323ce4d5dff3823e752d52d4146936d3e
2bf2aebd0fce8f647e71e616e526cb0f3e9cee45195cf6da177ae50f99172842fef3f2b2
2b7233c58e72839fcc8766d73af3bda7fdea0af0eec6e8f71ffcd05d37b2809b6293d0b9
d61478c9653223c73f1eb9c5bdad707d3ccc0f9b2bbde38afe8fba3b565abd2801f06d77
f0e3e91f2f6067724aeb63a95af9922af41310eaaa666ed86eaebfb3c2d8fc1c92d99f2c
1036706ed8a113bfa2d217f2032e0f3eab98fc9c27ea0bf9393f69b3059d81c9cf84e1cc
0c2ce5eff0fdc4e93f67c637eb3e7b06f6e77ff977adf9736bed7fd903c3678bf3f6d1b5
edd75e4e263fb70bef011d4e7e1e2084818730f91958780f18fae4e70142187808939f81
85f780a18fc7cfa6c5bff869d88155ba0e547980183f3684f1f8e14c1c8c3fac7c28a382
9fb0bb67f550b4b1965768653ed4d8c5e2b0fcf033ace264294a03204b87327e1a6b794d
7e762113a7abf9f3de537fff4126206d02d7adf0095ca0786c552f5e06c315a26368a0ec
9fb878182caea20964c767f57b6a0ea97f403cf4105df3b6c8aa614a0fa81efc833164a4
859036b67cf4a6710c714dffd04ecae380062c81ac84c02209edfdda58ca277bf1fbbdad
b6c590a152942833179246a723e5fc5f8968841e3878565ffa6d55b21adc1a8fa0522c1b
b1c5bd91d6def319961f8c01837fe2825fbc5e9761e492bbe8183085eb80a1350376fcaa
6096405699451789ca22e009a7706adda7f241b6e49b6eb8386895978534c6f2dc80adde
c4b0fa10c8b286a226d52f4b4f1b961f90be2579d9825feaffc02e66255924dc8dffa4fd
1041f60f3307cb55c12481ac76115a80bc6cb15620bdc2b464d1adba3bd2171235f22444
5bfac9c1a78c0a95125f6dc3125cad846f5969567da9e5b2b16dd740c3f203aac7257969
00b3f223a6acc804a3f4af7f188548a5fdaa6062ce640ad5faa89109d7b461605600ab8a
215083e02d949066b3afd0658ac84a9afd32f5c636504c9fd782d9007818ddd3d386e507
34884bf2d205bf8c1ff229ca4c3080e7df1f793b0d7e1a5e40b8d025130c548f9a874c35
388ef89a37b6b05e29e5063f422f76c0ce50d03fa65c7c51cffa25e96943f293ee9ef0fe
8bac0fbe4a4317fc72fc509e9715625a6037248ae17d1cb6c09e10aea82309645bed17c3
633eb4e5c3132b99fd52d7c439c441a315d6487ce748880391b510bb5a72202a404195bb
d72ade9d3223f672fb45a6807f26443b640b7e51b697dd78f9e42ece044b75b104e7fdc4
55c14c2b959318bd04747a481bb87b231188d92d8128f77fd4e98e4a0b258ced1a56c1cd
3667cba31a6a58d5ccb332475f3b75c39236b6e3a3a9b695c96a29f19dfb7bc78ff15d38
2dbfe5dd1ec482ef6e891fbab12a32c1f0d60db2e0ad05523cac7f9889257ef4fe9d65cc
d7338bc7fb4c7abbed378262324d2259abc11d571da6fa872e1fa38e0763bbea6446074d
3c21b397fe3784cd048d67bfe2a9f9242f5de62b3ffb76261840d6fb8957e3fada2c92ed
97f289267b551d9d9f5ef3d0b19d0bf8e938bace4d4d7e3a4fa8dd52f56a986d55afe6fa
b633f9e93b9fdfd6dae4e7db24def77cefc8ff62c77ff39fbe67385bbb7206eee0a73efe
e6a3defefee79513f8e56d5f6fbf5a9c4c7ede80dee4e70d52fcdc394c7e3e37f76fe879
f2f306297eee1c263f9f9bfb37f43c1e3fa7f3bff2b721be418c1f3b87f1f8e1e7ef47f2
bf7096217ef563d3fdba8e87e5e748fed7e4a73bbf43f27330ff2b4d5e4a4e65fdb32517
b5fb6cbfafc141f9c160ac8df95f96e285ab8461f4d8f2825f20668d0193682dfaa51e09
2837dc6e0bd3f2415e2e98d0852dbb30526d416ab9bf1a17c881cf215a4da3c934a8acd8
b810db61f9d99eff05a4698a176eb9c4b1d6d45a089f04fa71c01ee08308f90d12beec76
8b5f28361bf9b186421fdcfa892cb0ab101a969f03f95f79bad8523a7c1eac9cc51173e4
b360434a49bfc52dfda6a1a204136815d960f15a8950c903abdc5adf4e8bf9a33ec2f52a
7c6e887feefdfc8b429b31f5746bfe17a77869b28eafe86636862de74438d972fc717cd0
ebbee9a60619fb6078618ff82193c45d07c22c2adfab40536432408b9a26931734631c63
7f8c86d53f6086b6e67f55f9595ef0cb92ac5478625b42328449a4e007a4a9d236b13336
048ffc57e89f68c858d7901e32c728e45f18b46aedf20ba23f3e63ea9f03f95f3573b761
c12fa78472db02fef461fbc538c51cb09a8d7404c66455d7b7b75f44a48135f54f7ed1c8
5b340ee47f41ca29ad7ec15bf80a98ea27cfc0128fb95028669e493b981344c649eeb682
5065bf191c1a8432aaceb8377c41f1598ecfa62cb00b540f8fb845e85ebfa557f9b57cb1
a3f95fe9748bfbf7f60fd17217ae4193a0a937ddbf07eb81521632a4ad222755856bfc14
395deaed8887a3f7ed3261343c23d8a177153d7c1bd0bc026b077a71d2277eec70fed7c6
b42fb9bada7ee26ed91c3529cd09db3d828e15c6f39f3b9efc86a69ec4cf86e1de5e64f2
b375ca8faa8dadedaf9413dbd9a9b95ecd4c7e7acde477b633f9f94eb9f73aeb23f93bf5
be7bf9d56bf75fbdce7cb6d363068ef0a3f7b4176df438afd9c63d33b0df7e4dfd708f64
c6e865f233869c9e3acac9cf532533c6b8263f63c8e9a9a39cfc3c5532638c6b3c7e36e5
7fe1c22ab09e4af5d3fb8d876388fa92518ec7cfa6fc2f7cd2ce4bf494f35659e36ba663
1cc36b587e56f3bf7e00347acb6ffea9ecdfb234d8b1197e77ad21f959cfff22d593af11
266b7db935be58eff0b261ef96f5156737283f1807bc90ff4547f193a57fd1ea5fb8f245
524ef4fe71591aac35c179e0988b34e4982d8d4ae600658a1b2bea7188971eb05866ecda
c7144ae019ecd67149541b96e548b11036e623ae39b851e3ccb21a2e94fa0458c3f2b321
ffeb071d684089d2bf386503d788537c68fd305e36ac3e918a8b6c94617e5ec684421ef0
aa9188ee80a54b080b385c458987e3f891b62dd94c226425ca51bf873068a6b07f7ec6b0
fc2ce77f817a81cfaf5b2185d3bfd2ea18b2c6975b3d65c1ffd18850db90285117ed6c3a
42f9092049ba97ea9310d9ca3c90d622e84def54f87151aa191a394fd25fa506737e42fb
1c895ffdf4f3af4df95f60b768f91d5ba1c91041b4926e2a96060b8642bea8f8343a9975
845f30a226e312246ad245396b883d89ddf82105c62648ad958d202a22a7f14ced68c434
2b34d75c545f67001a56ff0001cdfcafdf1f7cbd0ba0d6e427cdaaabbfa47f22482a631f
d15eb55febfc001f2c706996f40ea3c4867041b7b9fc1e02533d31699b79b5f01a254c8b
9e0068487e56f3bfd0a7212b90272da7d5e3c0ffd15553792de69df68b932ad45559e6c7
fb260dfba5c4448e18a69260b59c8e061d84ed337d17ddaa4c911d0768487ec8b75959ff
0b5eb4c1b758bcc217277de91acb3e0d8c9706ab4e245dd6cecf88f2515166d689aae4f5
741f1a282b201e0fd92de38636f9a3625703e49274c4aa8a1e8af64bd388ac8637754709
1a969fe5f5bf78f153cc0f947b74de4a15912b2450d70fb37bedca4cb21f12dd10c683ed
4245c695fb77214c1c1bba1058e066acc4a4b9a3199b3214f38abd35553be60f1719650e
bda3f48ce83fc7736de67fb9fcae4a196d647169b0e3d30a350da9ac9de68193fd5dd4ee
e2a8c6d33fe726f9c6dab7f373e3b9398bda3a4d73d8efb97c3e71f697f6792f3fe6fd5c
7a5279e353ffdc3addafeb6cf2f33a91de7a4277e4efdc7a42b3b35b67e0083ff5014e7f
e956c13da4b3fdf6abc5c9e4e72122bd7518939f5ba7fb759d4d7e5e27d25b4f68f273eb
74bfaeb311f9594acd59101067ed1c48de3950e575a0344e683c7e96537316e4068fdfd3
618e3f93825b12775a791cdf02c9c2798ec74f92ff426ace323ff04821e3674be2cee4a7
39ade3f1534dcd410b23fffc61dcbc2a16d980580d4ab580d908893ba1baab0b4fe75363
2edf67aa9c380323f25349cde14831cccd413b45560ee27f34fc073730e4c7ed95b79153
4da896fea19d09426eccf27d263ed90c8cc70ff190a5e6787efefd2465a4b93ab041e1ac
4405f1a37b297107f6618e0f5a336047177c82c634df27c7c7851e6a4818969168518ed1
d200343e284167143cc65164d4980b448b472dd64c5af37f250a0d1a900635de2d04456b
0f9562d9c8b5441cbf9f85f1f8a9a5e6908581d066ce9fd25c1d97a203cca472cc4a2a8f
b0e03fb026212e6c901de4a008c9f729b48ff123b1aa5a0344c1e2b04056c247a4a41b1a
5b5a06114a054bdad0d62c34960b39005da0ab44a9866eb5594b54a39159c4a28b5d5c88
541c909f4a6a4ee0076eb2d42b8e4b3c890e2a127790ab9f7fb0df656c50b3ac216a2ff3
507e74b27dfa961c35613ad5e44565fc9838bcf8a2b40542ebdcf1c30d6428798642947d
88b38618fe9cc1788594e67b387eaaa939cbfcf04a4d68b8c88615893b004fd24ee83a59
c64fe0470c8bd7e562539c76e0841a679762be9785b59afdf0b1edda8dea2aa79d28b5c7
70e2f07c3a29561f4ee261786dfda354b3f27406d08fb68407559619dc5860ef73d29b9e
9f56537324229e73db71a5143268b481f757c80f2515babd440bec86bc1e28e24c9eea1f
caf769db2f152a8bd14c011b2c0b87d6f9f6ae8e69901dfcc06845b33059c29753236a32
5593f269781b270df13e634276b438198e1f3441456a4eda879e30e756202c94e3ce1b7a
e30e55f570dacb893bd00094e53b36cef8317ecc227a886af6cb32b94488cbf6cb11a09b
e22179c728982d5544911fffcd9c78cbef3073e5b1b6b360ca9d1573daec1dfa47eea362
6a0eea0ff69f5d660fffde9c8e89fea1db2cb9abe7f72b1050e84b6365bde577fcb0639e
e9683525621d4001c8bd90ccfd92ff1c5c67cf8fb9d9b9fdd2aeb02f01413ace4a9b53ec
297126901b299c7141498c5bc3bc8ca77fd01ae9cb5964b37c44a57bea2b352d26ee6c5c
dc29c88ab8f4ff4b4e994b0423c1793fc3b93976ad67c5cce141fbc4f5d57f12372777b9
a5a7ec9e4a8c93aa456bc87b424e6b3a4f2d574223f25355a40fde69de448f41f66dedec
88263f676770bd7e5f89f76d6d7df4cb25263f676770bd7e5f89f76d6d7df4939fb37334
ebb76760ea9f49c799193892bfc3eef8657fce9ccfac7bef0cdcc14ffd8c6efabdfadee9
fcbadeaeb75f7b9f83341fa87c9d6c4638e1c9cf08527aee18273fcf95cd08239bfc8c20
a5e78e71447e2ec8ffd2076acf95d43347361e3f9df3bf502c10bffa4cf93c7d54e3f103
413a1cffb36f7229f227cfff9afcec9bc5acf478fcf4cdff4ad391d62964fdb32517f5d4
6cbfaff288fc74c8ffca1675c2e831f7a2e8f7c9f9aa331a8f9f2ef95fc994598a176e51
ca583dcc19273f447d51886125104c42c35c9510e7852dc93f16c1451d84f0519638f521
6db8502fe9dcfff54d58d0572821a7d2e931fe78fcf4cdffca97c768a6c38748511715aa
01876183f061283c163eded4676db4f8c9db90863526b6083c253a5d2ca336510cb58352
1a909f3ef95f902f4f31f6b4858bf9a44feb4ecc04225b2efe9369f152abe777857c89c8
0f4a82446cba210f498d1aab1145af4d6428293faa04cf03341c3fbdf2bfaafc70a6984c
abda27b525defc387ed056588a0e1577164237596d4804b36a13a48d5ae00d0ba70e91ec
ae8675115ad52654edf1e82c365b95e017f2d331ffabb68461fb555120d0a08432fd1389
a9f1232d682b5e9b303c21c34618cc741610000026060f002220574d4643010000000000
01000000000000000b0000000020000034160100345601009faa1db690a7b2c04e22349c
fee99dffc5f961e43f73da576d4e4de82dfb05feb4d73b55dbd3f27f78bf4381344d6936
89cc68c87cab91266d428da3d8da93e0884a6e864bec8dbbe8557e357e83dea3d125ff2b
4d02fe9cedefdf1b3f44d35d90aa15fd560061f380871c00a185ac29e1c775a146b0c8cb
f19dc771e1913024b37e713f0178fa339efeb930ff6b29ed2bbb834663b6edfe5d9873f7
debc8bf738c5153518692006d2e936d425e2435123728b5faa2c69c29ace193d03d188fc
9c39dfd375e5ba6d4fdcee2e8ea8822375760f6c4385c9cf8649f245263f61c2263f3bf9
b1e21f55011feddc4dd9e4e7303fb322ba712d927bdd4fed6d67f5fe6bcaed4133407efc
be4f7df87b3969959ffc3c088fd5a11ce1671f6dfb4baf0e7a1678cc0cecb75f533f3c46
780f18c8e4e70142187808939f8185f780a14f7e1e2084818730223f07f3bf70cd145cf7
a0f6996b7c1da2783c7e0ee77f2d57acacd134d331d6911a8f9f33f95f0b8963157eb62c
0db63ec3ef2e311e3f87f3bfaa15752130b7c657581aecdde23f7d7623f27330ff2bfd90
a9af8da618348a81a660345be34bde1e4e654ecff0bb1b188f9f73f95ff9c261107988af
9dd735be340d8c9606ab8a3f0f1c7391862e968bd9737163453d0efdd228312920316312
69486161163b62a3f2c163fa30c1c59785a6b511087f93c0b358025ade71e18cc7cfe1fc
af5a455d272ccd19ad7ee1564f69e782e11cc33fbca162ce425651cc24f522e0d501416d
f9f056567c1c574832adf2937558f665e39451486b3e3a3f94da139f38203f47f3bfd2bc
e12271bccaa04bffd26b8e56e29134b0163f1a096a1b12e76c41a666f84ca601248b82af
06c3131814a96a9ba4775cdb598795bea4829424ee5d3dddd42b22f6b1688087e3e770fe
57b5a22122dabc581a8c45e65c21159fbbda79536d8297b162d3d8307e5435481285f143
0a8c46c19b5eb759983c1ff7a0b17e1363c9296652c5ec1837f86afd7338ffab5a51d709
03ff074b144b8395975f851f4120d73a7625abf929371c3fc08710c26a82cae36eaf42bc
26cab59eef02959868166ec43525f1f6514b6dbf71184eff9ccaff2a170ed375c274e541
4b03e3a5c10a806af68b654b925471392510b0c940885647f91172149e0a3f193ab125cf
9c83cfd3a4f91a3cbeac8145db45ccd925130b3f36beeb68fe172f7e1a13c76867bacbe2
7f288f90160cb3dc996c1a51002205716cab928cfaa75a4fdb42ab640db3f3c3c68a9590
374e0aa7f25cf3d5835bae8d39ffc7c00a5cb5b028a662387e8eafff555b388cd6b60c9f
c5a5c1486ae20d99432282d723daa4bba4abf5f02266c7467c118593901095c40e901799
3599d9caa249a99c5b3beedc287cb5ffb3aa519f5ba079496fbcd6f79cd9054d56bb1fd0
7eed99c647959dfc387ff05192196330939fc9cf18a4de37ca69bfee9beb37f6f4c4fc1d
ba09b19f72df38ef6f39a723fc1c3ff7f17e2b387eaedf51f35efb35f9791b55939fb749
f4def399fcdc3bdf6feb6df2f33689de7b3ee3f1034fa7e6725df752d2ee6d3c7ee8f13b
3d20b7cfccd53a4ad4b92765c3f293ad33f075b95a5b42bcc24f68fc7c5de203e85142d1
8ac6706cc4b1033f7e44ad6d1e4d8ffbf7a47f52203305bb6bf6167cc7d4e46fd1431a4a
b424e72cce0381817fa44e604944d48cfbaaf6749a1fff3b716b5b7beec60f5e3a7f96bd
c5b95a9acdb5f1ea19b6980b195b380737ddf03bb1c61a2a2ae7cfbf173f1494e400aa3e
7fe8c80fbe329e73b57effe35c2dfd5ebf564c9f4b70551109c6e7c0276327e57668f818
5fa945664d300adaa7ecd5f0adb8217aa16297685798d08c9fe2c4cc3a59f49af2230a48
c3d62c208ec5183b5b5671e764ea1f54b5b6adff737d513b68bf30cfe60f969e84734f96
8cfc1ffb5e3b679d4ace88d19041969d2977996ad5f67e87ab2dd3ad26412a9811104a2c
de15a1545c9c3d292b1306c8ae6cd189d9a9d8d7a2babf9a3936d687cbb331d3e66d4c59
67afe48796acf84b59398e1ffbbec88fcbdb6261b8e04dd9938bd9d48522c1a205b8b8bf
c246c49c89121bdd435054ec5211ddbcc04fac4ec87aac5891c960ed94fcc9fae4b02574
98dc933aa162b3f8aa2c9dfb2eb1faac7fd0ffc15c891fd33ff65d4edc9b03bd68f5c22c
f7f8c072b940ad0d96089f994fd2528398ab7e7f2dbbea2859a9d4ac9ca162a26ae89f6c
b7e8a64c4d3ad8bdf663d0d2206fd43f61baeef29fd3ef87a8752857cbf48ffbbe41ff78
3350da9b226fca76786583c1efac7fe86f76ffe2d456ccc33229993ecb2bb7f98922762d
3822d4d4e9351ef972df4031093f7636abda87cfbe5aae791f97292caf665adbaa0d1a23
dada1754e7df0ff9f6eb073d674c5b4faf46807fe4cebeecca691b148cdc3b98dda0bb14
c260cd7e31370c8dd592df59587acdf616f809d351b75f811f1b74dc2dfa87feca4999b1
2dce912e865bf5cf0646ad48869e1e38c00fbe188352b5f09720b401ee7b655c76bda950
71b6fc9405c60a873aca12b92bf889b3df6eaf4ea85357fea22bfc22ec57a6339e98edd6
b3137e9c2fae97871412e3fa767e0218ee49183e135b7c3216f53551a3be4db84906d524
ee49fc4bf2456cf452258e04253d2c25e950f4b9c2555eadec2e291ba33b77dd299df398
e88f283ff74df4a2bf56a51177b2c255d3578d17e6e9df7f6ed73fbb3a5c295ce8c37845
9fefea447b2d5d5d0eea4427a7cf70f213a6b0b7288eb7b71d9ff0e3d36920763630f9d9
3961b37876c1f5f069b74eea9d7d6d1dd32c776606be5bff9c99b959975ced3b75c29d7d
4df9de310347f2bfe4e7cc3bfede3107b38fe333f03fdeb777d8673212e8000000004945
4e44ae42608200000840010824000000180000000210c0db010000000300000000000000
00000000000000001b40000040000000340000000100000002000000000000bf000000bf
00c00f440080854303000000000000b3000000b3ffbf0f44000000b3000000b3ff7f8543
2100000008000000620000000c00000001000000150000000c0000000400000015000000
0c0000000400000051000000ec2c010000000000000000003e0200000a01000000000000
0000000000000000000000003f0200000b010000500000003c0000008c000000602c0100
000000002000cc003f0200000b010000280000003f0200000b0100000100040000000000
000000000000000000000000050000000000000000000000ffffff0080a0a00080808000
406060001000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000001111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
111111111111111111111101111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
111111111111111111111101111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
111111111111111111111101111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
111111111111111111111101111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111011111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
111111111111111111111101111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111011111111111111110111111101
111111111111111111111111111111111111111111111111111111111111111111111101
111111011111111111111111111111111111111111111111111111110111111111111111
111111111111111111111111111011111110111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
111111111111111111111101111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111011111111111111110111111101
111111111111111111111111111111111111111111111111111111111111111111111101
111111011111111111111111111111111111111111111111111111111011111111111111
111111111111111111111111111011111110111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
111111111111111111111101111111111111111111111111111111222111111112211122
211111111111111111111111111011111011110000111010000111110000110000000001
000000011000000110000000111100001110111011101100000011011110000111111100
000000010000000110111101110111101110000001101111000011110011111111100001
111101111111111100001111111000000000111000011111111100000111111110011110
000111111111100001111000000011001111011110111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
111111111111111111111101111111111111111114000000311114000040411100001400
004041111111111111111111111011111011101111011001110011101111011011111011
001100111011110110011001111011110110110001101101111011011101111011111110
111110110011001110111101110111101110111101101110111101110011111111011100
111101111111111001100111111101111101110111001111111001110011111110011101
110011111111011100111001100111000111011110111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
100000111111100000111111100000111111111111111011111111111111111111111001
111111111111111111111101111111111111111114000000002120043400411200432004
340041111111111111111111111011111011001111001011111011001111001001111011
011110111011110110111101110011110010110101101101111011011001111001111110
011110110111101110111101110111101110111101101100111100111111111110011110
111101111111110011110111111100111101100111101111111011111011111110011011
111011111110011110111011110111010111011110111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
000000011111000000011111000000011111111111111011111111111111111111111001
111111111111111111111101111111111111111114002224004120031100411300212003
110041111111111111111111111011111011001111111011111011001111111101111011
100010111011110111000101110011111110110110101101111011011001111111111111
011110111000101110111101110111101110111101101100111111111111111110111110
111101111111110011110111111110111101101111101111111111111011000000001011
111011111110111110111100010111011011011110111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
000000001111000000001111000000011111111111111011111111111111111111111001
111111111111111111111101111111111111111114001111000214003340411300211400
334041111111111000011111111011111011000000011011111011000000011101111011
111100111000000111111001110000000110101110101100000111011000000011111111
011110111111001110000001110000001110000011101100000001111111111110111110
111101111111110111110111111110111101101111101111111111111011011110011011
111011111110111110111111100111011001011110111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111110
000000001110000000001110000000001111111111111011111111111111111111111001
111111111111111111111101111111111111111114001111400211234400411300211123
440041111111111111111111111011111011001111011011111011001111011101111011
011110111011110110111101110011110110101110001101111111011001111011111111
011110110111101110111101110111101110111111101100111101111111111110011110
111101111111110111110111111110111101100111101111111001110011101110011000
110011111110011110111011110111011101011110111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111110
000000001110000000001110000000001111111111111011111111111111111111111001
111111111111111111111101111111111111111114001111300213321100411300211332
110041111111111111111111111011111011101110011001110011101110011101111011
001110111011110110011101111011100110001111001101111111011101110011111111
011110110011101110111101110111101110111111101110111001111111111111011100
111101111111110111110111111110111101110111001111111000000011110110011011
001111111110011100111001110111011110011110111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
000000001111000000001111000000011111111111111011111111111111111111111001
111111111111111111111101111111111111111114001111400214002200313400431400
220031111111111111111111111000000011110000111010000111110000111100000011
100001111000000111000011111100001110011111001101111111011110000111111111
000000111000011110111101110111101110111111101111000011111111111111100001
100000001111110011110111111110000001111000011111111000000111110110011001
111101111110100001111100001111011110010000000111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
000000011111000000011111000000011111111111111011111111111111111111111001
111111111111111111111101111111111111111114001111000212000004114000001200
000411111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111110011110111111111111111111111111111111101111111111010011001
111011111110011111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
110001111111110001111111110001111111111111111011111111111111111111111001
111111111111111111111101111111111111111114001124004111123321112400321112
332111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111011100111111111111111111111111111111101111111111100011100
111011111111000111111111111111110001111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
111111111111111111111101111111111111111114000000002111111111111300211111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111100001111111111111111111111111111111100000011111110011110
000111111111100000111111111111101110111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
111111111111111111111101111111111111111114000000421111111111111233211111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111110111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
111111111111111111111101111111111111111112222221111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111011111111111111111111111001
11111111111111111610000026060f002220574d46430100000000000100000000000000
0b0000000020000034f60000345601001111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111011111111111111111111111101111111111111111111
111111111111111111111111111111111111111111111111111111111111111011111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111011111111111111111111111101111111111111111111
111111111111111111111111111111111111111111111111111111111111111011111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111011111111111111111111111101111111111111111111
111111111111111111111111111111111111111111111111111111111111111011111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111112222111111122
221111122211111111111111122211111122221111112222111111122221111112221111
111111111112222111111221111111111111111111111000011111000011101111001110
000111110111111111011111011010000111110000111011111101000011100000001101
110111011011101110110000001101111111111100001111101111011111011010000111
000000011000000110011110111101111110000110011110111001110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111140000041111400
004111300044041100311111400003111400004211140000041111400004111140000311
003110002140000421110000111111111111111111110111001110111001101110111101
111011110111111111011111011001110011101110011011111100111001100110011101
100011011011000110110111101101111111111011100111101111011111011001110011
001100111011110110001110111101111101111011001110111101110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400040003114003
300411000340041100311114003300314003300411400040003114003300411400330031
003130021400330041120043111111111111111111100111101100111101101101111001
111001110111111111011111011011111011001111011011111101111101101111011101
101011011011010110110111101101111111110011110111101111011111011011111011
011110111011110110101110111101111001111001101110111110110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111112004111000120031
130021003110041100311120031140420031122212004111000120031130022003114041
003200412003112221130021111111111111111111101111111101111101101011111001
111111110111111111011111011011111011011111011011111101111101110001011101
101101011011011010110111101101111111110111110111101111011111011011111011
100010111011110110110110111101111001111111101110111100000111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111113442111400130021
120031003114041100311130021111130043333323442111400130021120033002111111
000000113004333332130021111111100001111111101111111101111101100011111000
000011110111111111011111011011111011011111011011111101111101111110011101
011101011010111010110000011101100001110111110111101111011111011011111011
111100111000000110110010111101111000000011101110111001110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111230000130021
120031003114041100311130021111130044440021111230000130021120033002111111
000002113004444002130021111111111111111111100111101100111101101001111001
111011110111111111011111011011111011001111011011111101111101101111011101
011100011010111000110111111101111111110011110111101111011111011011111011
011110111011110110111010111101111001111011101110111011110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111130000003120031
130021003114041100011120031134320031130021130000003120031130022003113431
004004112003113002130021111111111111111111110111001110111001101100111101
110011110111111111011111011001110011101110011011111100111001100111011100
011110011000111100110111111101111111111011100111101111011111011001110011
001110111011110110111100111101111101110011101110111001110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400004321110002
200011003114041100042214002300314002200411400004321110002200011400230031
003300311400220041340043111111111111111111111000011111000011101110011110
000110000000111111000000011010000111110000111000001101000011110000111100
111110011001111100110111111101111111111100001100000001000000011010000111
100001111000000110111100100000001110000111100000111100000111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111000211111112400
000211003114041100400312000004111400004111000211111112400000211200000411
003130031140000411400000111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111004111004111123
321111222112221122223211123321111123321111004111004111123321111112332111
003112221112332111240032111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400440003111111
111111111111111111111111111111111111111111400440003111111111111111111111
003111111111111111130021111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111200000041111111
111111111111111111111111111111111111111111200000041111111111111111111111
003111111111111111123321111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111112333211111111
111111111111111111111111111111111111111111112333211111111111111111111111
222111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
1610000026060f002220574d464301000000000001000000000000000b00000000200000
34d600003456010011111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010000000000000000000000000000000
000000000000000000011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111011111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111110111111101011111
111111111111111111111111111111111111111111111111111111111111111111101111
111111111111111111111111111111111111111111111110111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111110111111101011111
111111111111111111111111111111111111111111111111111111111111111111101111
111111111111111111111111111111111111111111111110111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111222211111112222111112221111111111111112221111112222111111111111111111
222211111122111111112222111111111111111111111111000000010000000001010000
111110000111110000111111111100001111101111000000011011110111000000001001
111011001111011111111111000011111011110111110110100001110000000110000001
100111101111011111100001100111101110011101111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
114000004111140000411130004404110031111140000311140000421140011120001114
000041112000040021140000421111111111111111111111001100111011111011001110
011101111011101110011111111011100111101111001100111011110111011111011000
111011000111011111111110111001111011110111110110011100110011001110111101
100011101111011111011110110011101111011101111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
140004000311400330041100034004110031111400330031400330041140011140001140
033004114003300021400330041111111111111111111111011110111001111011011111
011001111001001111011111110011110111101111011110111011110111011111011010
111011010111011111111100111101111011110111110110111110110111101110111101
101011101111011110011110011011101111101101111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
200411100012003113002100311004110031112003114042003112221140011300001200
311300220031130022003112221111111111111111111111100010111101111011011111
011001111111011111111111110111111111101111100010111011110111011111011011
011011011011011111111101111101111011110111110110111110111000101110111101
101101101111011110011111111011101111000001111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
344211140013002112003100311404110031113002111113004333332140011000001300
211200330021120023004333332111111111000011111111111100111101111011011111
011000000011011111111111110111111111101111111100111000000111011111011011
001011011001011000011101111101111011110111110110111110111111001110000001
101100101111011110000000111011101110011101111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111123000013002112003100311404110031113002111113004444002140014000001300
211200330021120023004444002111111111111111111111011110111101111011011111
011001111011001111011111110011110111101111011110111011110111011111011011
101011011101011111111100111101111011110111110110111110110111101110111101
101110101111011110011110111011101110111101111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
113000000312003113002100311404110001112003113432003113002140020034001200
311300220031130022003113002111111111111111111111001110111101111011001110
011101110011101110011111111011100111101111001110111011110111011111011011
110011011110011111111110111001111011110111110110011100110011101110111101
101111001111011111011100111011101110011101111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
140000432111000220001100311404110004221400230031400220041140000014001100
022000110002200021400220041111111111111111111111100001111100000011010000
111110000111110000111111111100001100000001100001111011110111011111011011
110011011110011111111111000011000000010000000110100001111000011110000001
101111001000000011100001111000001111000001111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
100021111111240000021100311404110040031200000411140000411140000214001124
000002112000040021140000411111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
100411100411112332111122211222112222321112332111112332111140004114001111
233211111133220021112332111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
140044000311111111111111111111111111111111111111111111111140001114001111
111111111111120021111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
120000004111111111111111111111111111111111111111111111111140031114001111
111111111111120021111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111233321111111111111111111111111111111111111111111111111122211112221111
111111111111112211111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111111011111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111111011111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111111011111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111110111111111111111111111111111111111111
111111111111111111111111111111111111111110111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111010111111111111111111111110011111
111111111111111110011111111111111111111110011111111111111610000026060f00
2220574d464301000000000001000000000000000b0000000020000034b6000034560100
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111011111111111111111111
111111111111111111111111111111111111111111111111111111111011111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111011111111111111111111
111111111111111111111111111111111111111111111111111111111011111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111122221111111222211111222111111111111111222111111222211
111111111111111122221111112211111111111111111222211111111111111111111111
111111111111101111011111000011101110111011110000111010000111111111100001
111100001111101111001111011111111100001111101111011111011010000111000000
011000000110011110111101111110000110011110111001110111111101111101100000
001101111001110000111110111100000001111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111400000411114000041113000440411003111114000031114000042
114001112000111400004211100001140021300311114000041110031111003110001111
111111111111101111011110111001101100011011101111011001110011111111011100
111011110111101111000111011111111011100111101111011111011001110011001100
111011110110001110111101111101111011001110111101110111111101111101100110
011101110111101111011110111100110011111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111114000400031140033004110003400411003111140033003140033004
114001114000114003300411200431100031400411140033004110031111003130021111
111111111111101111011100111101101101011011001111001011111011111110011110
110011110011101111010111011111110011110111101111011111011011111011011110
111011110110101110111101111001111001101110111110110111111101111101101111
011101101111001111001110111101111011111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111120041110001200311300210031100411003111200311404200311222
114001130000120031122211300211300041000011200311300210031111003200411111
111111111111101111011101111101101101101011001111111011111011111110111111
110011111111101111011011011111110111110111101111011111011011111011100010
111011110110110110111101111001111111101110111100000111111101111101110001
011101011111001111111110111110001011111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111134421114001300211200310031140411003111300211111300433333
214001100000130043333321300211404002040031300211200310031111000000111111
100001111111100000011101111101101011101011000000011011111011111110111111
110000000111101111011001011111110111110111101111011111011011111011111100
111000000110110010111101111000000011101110111001110111111101111101111110
011100011111000000011110111111110011111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111112300001300211200310031140411003111300211111300444400
214001400000130044440021300211003404030041300211200310031111000002111111
111111111111101111011100111101101011100011001111011011111011111110011110
110011110111101111011101011111110011110111101111011111011011111011011110
111011110110111010111101111001111011101110111011110111111101111101101111
011101001111001111011110111101111011111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111300000031200311300210031140411000111200311343200311300
214002003400120031130021300212002300024001200311300210001111004004111111
111111111111101111011110111001100011110011101110011001110011111111011100
111011100111101111011110011111111011100111101111011111011001110011001110
111011110110111100111101111101110011101110111001110111111101111101100111
011101100111101110011110111100111011111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111114000043211100022000110031140411000422140023003140022004
114000001400114002200413400434001200013002100022000110004221003300311111
111111111111101111011111000011100111110011110000111010000111111111100001
111100001100000001011110011111111100001100000001000000011010000111100001
111000000110111100100000001110000111100000111100000111111100000001110000
111101110011110000110000000110000111111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111110002111111124000002110031140411004003120000041114000041
114000021400111400004114000000041100412004124000002110040031003130031111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111110041110041111233211112221122211222232111233211111233211
114000411400111123321112400322221122211222111233211112222321003112221111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111114004400031111111111111111111111111111111111111111111111
114000111400111111111111300211111111111111111111111111111111003111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111112000000411111111111111111111111111111111111111111111111
114003111400111111111111233211111111111111111111111111111111003111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111123332111111111111111111111111111111111111111111111111
112221111222111111111111111111111111111111111111111111111111222111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101000000000000000
000000000000000000000000000000000001111111111111111111111001111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000001111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111101111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111101111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111101111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111011111111111111111111111101111
111111111111111111111111111111111111111111111111111111111111111111111111
111111110001111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111101111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111011111111111111111111111101111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111101111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111101111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111122221111112221111112211112222111111122221
111112221111111111111112222111111221111111111111111111111111111111111111
111111111111111111111111111111111111111111011111111111111111111111101111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111100111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111101111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111114000000311111400004211300000311100001140000041111400004
111140000311003110002140000421110000111111111111111111111111000011111000
011101111001110000111110111111111011111011010000111110000111011111101000
011100000001101110111011011101110110000001101111111110111110111100001100
111101111100111111110111000000011110111111000011001111011100111011111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111101111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111114000000002114003300412004240021200431400040003114003300
411400330031003130021400330041120043111111111111111111111110111001110111
001101110111101111011110111111111011111011001110011101110011011111100111
001100110011101100011011011000110110111101101111111110111110111011100110
011101111100011111110111001100111110111110111101100111011110111011111111
111111111111111111111111111111111111111111111111111111101011111111111111
111111111001111111111111111111111101111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111114002224004120031122212331120031300212004111000120031130
022003114041003200412003112221130021111111111111111111111100111101100111
10110110111100111100111011111111101111101610000026060f002220574d46430100
0000000001000000000000000b0000000020000034960000345601001101111101100111
101101111110111110110111101110110101101101101011011011110110111111111011
111011001111011101110111100101111111011101111011111011110011110011011101
111101101111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111400111100023004333332113340002130021344
211140013002112003300211111100000011300433333213002111111111111111111111
110111111110111110110101111100111111111011111111101111101101111101101111
101101111110111110111000101110110110101101101101011011110110111111111011
111011011111011101110111101101110000011110001011111011110011111111011101
111000001111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111400111140023004444002140000421130021111
123000013002112003300211111100000211300444400213002111111111110000111111
110111111110111110110001111100000001111011111111101111101101111101101111
101101111110111110111111001110101110101101011101011000001110110000111011
111011011111011101110111101100110111011111110011111011110000000111011101
110011101111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111400111130022003113002200311111130021113
000000312003113002200311343100400411200311300213002111111111111111111111
110011110110011110110100111100111101111011111111101111101101111101100111
101101111110111110110111101110101110001101011100011011111110111111111011
111011001111011101110111001110110111011101111011111011110011110111011101
110111101111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111400111140021400220041200324001340043140
000432111000220001140023003100330031140022004134004311111111111111111111
111011100111011100110110011110111001111011111111101111101100111001110111
001101111110011100110011101110001111001100011110011011111110111111111011
111011101110011101110111011110110111011100111011111011111011100111011101
110011101111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111400111100021140000411140000031400000100
021111111240000021120000041100313003114000041140000011111111111111111111
111100001111100001110111001111000011000000011111100000001101000011111000
011100000110100001111000011110011111001100111110011011111110111111111000
000011110000111100000110011110010111011110000111000000011100001111000001
111000001111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111400112400411112332111112333211240032100
411100411112332111111233211100311222111233211124003211111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111400000000211111111111111111111130021140
044000311111111111111111111100311111111111111113002111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111400000042111111111111111111111123321120
000004111111111111111111111100311111111111111112332111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111222222111111111111111111111111111111111
233321111111111111111111111122211111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
100000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
100000000000000000000000000000000000000000000000000111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111011111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111100011111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
111111101011111111111111111111111111111111111111111111111111111111111111
111111111101111111111111111111111111111111111111111111111111111111011111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111112222111111222111111221111
111111111111222211111122111111112222111111111111111111111111111111111110
111111101011111111111111111111111111111111111111111111111111111111111111
111111111101111111111111111111111111111111111111111111111111111111001111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111400000031111140000421130000031110000140
011120001114000041112000040021140000421111111111111111111111111000000010
000000001010000111110000111110000111111111100001111101111000000011011110
111000000001001111011001111011111111101111101111000011001111011111001111
111101110000000111101111110000110011110111001110111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111400000000211400330041200424002120043140
011140001140033004114003300021400330041111111111111111111111111001100111
011111011001110011101111011101110011111111011100111101111001100111011110
111011111011000111011000111011111111101111101110111001100111011111000111
111101110011001111101111101111011001110111101110111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111400222400412003112221233112003130021140
011300001200311300220031130022003112221111111111111111111111111011110111
001111011011111011001111001001111011111110011110111101111011110111011110
111011111011010111011010111011111111101111101100111101110111011110010111
111101110111101111101111001111001101110111110110111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111400111100023004333332113340002130021140
011000001300211200330021120023004333332111111111111111111111111100010111
101111011011111011001111111011111111111110111111111101111100010111011110
111011111011011011011011011011111111101111101101111101110111011110110111
000001111000101111101111001111111101110111100000111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111400111140023004444002140000421130021140
014000001300211200330021120023004444002111111111111000011111111111100111
101111011011111011000000011011111111111110111111111101111111100111000000
111011111011011001011011001011000011101111101101111101110111011110110011
011101111111001111101111000000011101110111001110111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111400111130022003113002200311111130021140
020034001200311300220031130022003113002111111111111111111111111011110111
101111011011111011001111011001111011111110011110111101111011110111011110
111011111011011101011011101011111111101111101100111101110111011100111011
011101110111101111101111001111011101110111011110111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
101111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
110111111111111111111111111111111400111140021400220041200324001340043140
000014001100022000110002200021400220041111111111111111111111111001110111
101111011001110011101110011101110011111111011100111101111001110111011110
111011111011011110011011110011111111101111101110111001110111011101111011
011101110011101111101111101110011101110111001110111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111110
1011111111111111111111111610000026060f002220574d464301000000000001000000
000000000b00000000200000347600003456010010011111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111111011111111111111111111111111111140011110002114000041114
000003140000014000021400112400000211200004002114000041111111111111111111
111111110000111110000001101000011111000011111000011111111110000110000000
110000111101111011101111101101111001101111001111111110000000111100001111
000001100111100101110111100001110000000111000011110000011110000011111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111111011111111111111111111111111111140011240041111233211111
233321124003214000411400111123321111113322002111233211111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111111011111111111111111111111111111140000000021111111111111
111111113002114000111400111111111111111112002111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111111011111111111111111111111111111140000004211111111111111
111111112332114003111400111111111111111112002111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111111011111111111111111111111111111122222211111111111111111
111111111111112221111222111111111111111111221111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111111011111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111111011111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111111011111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111111011111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111110011111111111111111111110011111
111111111111111111011111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000011111111111111111111110011111
111111111111111111011111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000011111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111011111
111111111111111111111111111111111111111111111111111111111111111111111111
110001111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111011111
111111111111111111111111111111111111111111111111111111111111111111111111
111101111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111222211111
122211111122111111111111111122221111112211111111111111111222211111111111
111111111111111111111111111111111111111111111111111111111111111111011111
111111111111111111111111111111111111111111111111111111111111111111111111
111100111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111140000003111114000042113
000003111000014001112000111400004211100001140021300311114000041110031111
003110001111111111111111111101111011111000011101110111011110000111010000
111111111100001111100001111101111001111011111110111110111100001100111101
111100111111110111000000011110111111000011001111011100111011111110111110
110000000110111100111000011111011110000000111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111140000000021140033004120
042400212004314001114000114003300411200431100031400411140033004110031111
003130021111111111111111111101111011110111001101100011011101111011001110
011111111011100111011110111101111000111011111110111110111011100110011101
111100011111110111001100111110111110111101100111011110111011111110111110
110011001110111011110111101111011110011001111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111140022240041200311222123
311200313002114001130000120031122211300211300041000011200311300210031111
003200411111111111111111111101111011100111101101101011011001111001011111
011111110011110110011110011101111010111011111110111110110011110111011101
111001011111110111011110111110111100111100110111011111011011111110111110
110111101110110111100111100111011110111101111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111140011110002300433333211
334000213002114001100000130043333321300211404002040031300211200310031111
000000111111111111111111111101111011101111101101101101011001111111011111
011111110111111110011111111101111011011011111110111110110111110111011101
111011011100000111100010111110111100111111110111011110000011111110111110
111000101110101111100111111111011111000101111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111140011114002300444400214
000042113002114001400000130044440021300211003404030041300211200310031111
000002111111111100001111111100000011101111101101011101011000000011011111
011111110111111110000000111101111011001011111110111110110111110111011101
111011001101110111111100111110111100000001110111011100111011111110111110
111111001110001111100000001111011111111001111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111140011113002200311300220
031111113002114002003400120031130021300212002300024001200311300210001111
004004111111111111111111111101111011100111101101011100011001111011011111
011111110011110110011110111101111011101011111110111110110011110111011101
110011101101110111011110111110111100111101110111011101111011111110111110
110111101110100111100111101111011110111101111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111140011114002140022004120
032400134004314000001400114002200413400434001200013002100022000110004221
003300311111111111111111111101111011110111001100011110011101110011001110
011111111011100111011100111101111011110011111110111110111011100111011101
110111101101110111001110111110111110111001110111011100111011111110111110
110011101110110011110111001111011110011101111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111140011110002114000041114
000003140000014000021400111400004114000000041100412004124000002110040031
003130031111111111111111111101111011111000011100111110011110000111010000
111111111100001111100001100000001011110011111110000000111100001111000001
100111100101110111100001110000000111000011110000011110000011111110000000
111000011110111001111000011000000011000011111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111140011240041111233211111
233321124003214000411400111123321112400322221122211222111233211112222321
003112221111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111140000000021111111111111
111111113002114000111400111111111111300211111111111111111111111111111111
003111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111140000004211111111111111
111111112332114003111400111111111111233211111111111111111111111111111111
003111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111010111111111111111111111110011111111111111111111110011111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111122222211111111111111111
111111111111112221111222111111111111111111111111111111111111111111111111
222111111610000026060f002220574d464301000000000001000000000000000b000000
002000003456000034560100111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111001111111111111
111111111001111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111001111111111111
111111111001111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111001111111111111
111111111001111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111001111111111111
111111111001111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111001111111111111
111111111001111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101000000000000000000000000001111111111111
111111111001111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000001111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111130002111100311
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111123004111100311
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111112221111111122211111111111111122221111112211111111111111400211100312
211111122221111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111114001111
111140000404111400003110031100021400004211100001113002111111400311100400
002111400004211111111111111111111111110111100111101101111101111111011111
011000000011011110011100001111101111000000011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111114001111
111200434004114003300310031300214003300411200431113002111112000411100033
000114003300411111111111111111111111110111100011101101111101111111011111
011001100111011101111011110111101111001100111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111114001111
111200311004120031140410032004120031122211300211113002111113000011100411
200320031122211111111111111111111111110111101011101101111101111111011111
011011110111011011110011110011101111011110111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111114002221
111140033404130021111110000001130043333321300211113002111110040031100311
100330043333321111111111111111111111110111101101101101111101111111011111
011100010111010111110011111111101111100010111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111114000000
421112344004130021111110000021130044440021300211113002111130034041100311
100330044440021111111111000011111111110111101100101101111101111111011111
011111100111000111110000000111101111111100111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111114000000
002133211004120031134310040041120031130021300211113002111140013001100311
200320031130021111111111111111111111110111101110101101111101111111011111
011011110111010011110011110111101111011110111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111114001124
003140022003114002300310033003114002200413400431113002111200412003100032
400114002200411111111111111111111111110111101111001101111101111111011111
011001110111011001111011100111101111001110111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111114001113
003120000041112000004110031300311400004114000001113002111400211004100400
003111400004111111111111111111111110000000101111001100000001111111000000
011100001111011100111100001100000001100001111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111114001114
003111233211111123321110031122211123321112400321113002111222111222122123
321111123321111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111114000000
002111111111111111111110031111111111111111300214000000003111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111114000000
021111111111111111111110031111111111111111233214000000003111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111112222222
111111111111111111111112221111111111111111111112222222222111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101011111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111116100000
26060f002220574d464301000000000001000000000000000b0000000020000034360000
345601001111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110100000000000000000000000
000111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110100000000000000000000000
000111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111100311111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111100311111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111110111111111111111111111111101111111011111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111222111111111111111111222111100312211111122221
111111111111221111122221111111222211111111111111112211111111111222211111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111110111111111111111111111111101111111011111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111113002111100311114000040411003114041130000031100400002111400004
111003111110000112400000211114000041110031140411100001003111114000041110
031111111111111111111111111100001111111011111000011111011111111011100111
101101111001111110111110110100001111100001110011110100000000011100001110
111101110111101110000001101001111001111110111011101111000011111000011111
011111100001110000001111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111113002111100311120043400411003114041200424002100033000114003300
411003111120043120000000021140033004110031140411200431003111140033004110
031111111111111111111111111011100111111011110111101111011111111011100011
101101110111111110111110110011100111011100110001110110111110111011110110
111101110111101110111101101100110011111110110001101110111001110111001111
011111011100110111101111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111113002111100311120031100411003114041233112003100411200320031130
021003111130021100041120001200311300210031140411300211003111200311300210
031111111111111111111111110011110111111011100111100111011111111011101011
101101101111111110111110110111110110011110110101110110011110110011110010
111101110111101110111101101110100111111110110101101100111101100111101111
011110011110110111101111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111113002111100311114003340411003114041113340002100311100330021120
031003111130021200011114002300211200310031140411300211003111300211200310
031111111111111111111111110111111110000011100111111111011110000011101101
101101011111111110111110110111110110111110110110110111011110110011111110
111101110111101110111101101110001111111110110110101101111101101111111111
011110111110110111101111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111113002111100311111234400411003114041140000421100311100330021120
031003111130021200411111111300211200310031140411300211003111300211200310
031111111111110000111111110111111110111011100000001111011110111011101100
101100011111111110111110110111110110111110110110010111011110110000000110
000001110000001110000011101111001111111110101110101101111101101111111111
011110111110110000001111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111113002111100011113321100411003114041200311111100311200320031130
021000111130021200311111111200311300210031140411300211000111200311300210
031111111111111111111111110011110110111011100111101111011110111011101110
101101001111111110111110110111110110011110110111010111011110110011110110
111101110111101110111111101110001111111110101110001100111101100111101111
011110011110110111101111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111113002111100042214002200311000220041200324001100032400110002200
011000422340043200411111111100022000110002200413400431000422100022000110
031111111111111111111111111011100110111011110111001111011110111011101111
001101100111111110111110110011100111011100110111100111011110111011100110
111101110111101110111111101100110111111110001111001110111001110111001111
011111011100110111101111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111113002111100400312000004111004000021140000031100400003112400000
211004003400000200011113331124000002110040000214000001004003124000002110
031111111111111111111111111100001110111011111000011000000010111011101111
001101110011111110000000110100001111100001110111100111000000111100001110
111101110111101110111111101001110011111110011111001111000011111000011000
000011100001110000001111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111113002111122223211123321111222233211112333211122123321111123321
111222232240032140031120001111233211112222332112400321222232111233211110
031111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111114000000003111111111111111111111111111111111111111111111111111111
111111111130021120004400031111111111111111111111300211111111111111111110
031111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111100011111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111114000000003111111111111111111111111111111111111111111111111111111
111111111123321113000000311111111111111111111111233211111111111111111110
031111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111011101111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111112222222222111111111111111111111111111111111111111111111111111111
111111111111111111233332111111111111111111111111111111111111111111111112
221111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110100000000000000000000000
000000000000000000000000000111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110100000000000000000000000
000111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111110101111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111122111111610000026060f002220574d
464301000000000001000000000000000b00000000200000341600003456010011111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111130000411111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111300330041111111111
111111111111111111111111111111111111111111111111111111110011111111111111
111111101111111011111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111222211111111111111222113002111221111
111111111111111111111111111111111111111111111111111111110011111111111111
111111101111111011111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111140000000114000042110031140411134443002110000100
311404111111111111111111111100001111100001111000000000000000000001100111
011111100000000000111101110011110110111101110000000111111101111101100000
001101111001110000111110111100000001111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111140000000140033004110031140411400000002120043100
311404111111111111111111111011100111011100111011110111101100110011110111
011111110111110110011101110001110110111101110011001111111101111101100110
011101110111101111011110111100110011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111140022222200311222110031140412004114002130021100
311404111111111111111111110011110110011110111011110111101101111011111011
011111110011110111011101110101110110111101110111101111111101111101101111
011101101111001111001110111101111011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111140011111300433333210031140412002112002130021100
311404111111111111111111110111110110111110111011110111101110001011110000
011111111011110111011101110110110110111101111000101111111101111101110001
011101011111001111111110111110001011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111140011111300444400210031140412002112002130021100
311404111111110000111111110111110110111110111011110111101111110011100111
011111111011110111011101110110010110000001111111001111111101111101111110
011100011111000000011110111111110011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111140011111200311300210031140412003113002130021100
411404111111111111111111110011110110011110111011110111101101111011101111
011111111011110111011101110111010110111101110111101111111101111101101111
011101001111001111011110111101111011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111140011111140022004110002200411000220002340043100
023004111111111111111111111011100110011100111011110111101100111011100111
011111111011110111011101110111100110111101110011101111111101111101100111
011101100111101110011110111100111011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111140011111114000041110040000211200004002400000100
400002111111111111111111111100001110100001111011110111101110000111110000
011111111000000111000001110111100110111101111000011111111100000001110000
111101110011110000110000000110000111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111140011111111233211112222332111112321221240032100
323321111111111111111111111111111110011111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111140011111111111111111111111111111111111130021100
311111111111111111111111111111111111000111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111140011111111111111111111111111111111111123321100
311111111111111111111111111111111111100000111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111122211111111111111111111111111111111111111111122
211111111111111111111111111111111111111110111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010000000
000000000000000000000000000000000000000000011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010000000
000000000000000000000000000000000000000000011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111101111111111111111111111111111111111111111111111111111
111111111111111111111100011111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111101111111111111111111111111111111111111111111111111111
111111111111111111111111011111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111122221111111111111111122221111112221111111111
111112221111122211111111111111111111111111111111111111111111111111111111
111111111111111111101111111111111111111111111111111111111111111111111111
111111111111111111111111001111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111010111111
111111111111111110011111111111111111111111011111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111112400000211100311404111400004211140000311003110
002300000311300044041100311003110031111111111111111111111101111001110000
111011110111110111101000011111000011001111011100000011011110111000000011
001110111111111000011111001111011101110110111011101100000001111111111111
11111111111111111111111111111111300b000026060f005616574d4643010000000000
01000000000000000b000000341600000000000034560100111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111112000000002110031140411400330041
140033003100313002200424002100034004110031100311003111111111111111111111
110111011110111001101111011111011110011100111011100110011101110111101101
111011100110011110111011111111011100111100011101100011011011000110110011
001111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111110004112000110031140412003112221
200311404100320041233112003100311004110031100311003111111111111111111111
110110111100111101101111011111011110111110110011110111011101110111101101
111011101111011111011011111110011110111001011101101011011011010110110111
101111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111120001111400210031140413004333332
300211111100000011113340002100311404110031100311003111111111111111111111
110101111101111101101111011111011110111110110111110111011101110111101101
111011110001011110000011111110111111111011011101101101011011011010111000
101111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111120041111111110031140413004444002
300211111100000211140000421100311404110031100311003111111111110000111111
110001111101111101100000011111011110111110110111110111011101110000011100
000011111110011100111011111110111111111011001101011101011010111010111111
001111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111120031111111110041140412003113002
200311343100400411200311111100311404110031100411003111111111111111111111
110100111100111101101111011111011110111110110011110111011101110111111101
111011101111011101111011111110011110110011101101011100011010111000110111
101111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111120041111111110002300411400220041
140023003100330031200324001100311404110002300023003111111111111111111111
110110011110111001101111011111011110011100111011100111011101110111111101
111011100111011100111011111111011100110111101100011110011000111100110011
101111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111120001111333110040000211140000411
120000041100313003140000031100311404110040004300041111111111111111111111
110111001111000011101111011000000010100001111100001111000001110111111101
111011110000111110000011111111100001100111100100111110011001111100111000
011111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111114003112000110032332111112332111
111233211100311222112333211122211222112212331123311111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111112000440003110031111111111111111
111111111100311111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111300000031110031111111111111111
111111111100311111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111123333211112221111111111111111
111111111122211111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101011111111111111111111111001111111111111111111111101111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101000000000000000000000000000000000000000000000000001111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111101111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111104c0000006400000000000000000000003e0200000a0100000000000000000000
3f0200000b0100002900aa0000000000000000000000803f00000000000000000000803f
000000000000000000000000000000000000000000000000000000000000000022000000
0c000000ffffffff460000001c00000010000000454d462b024000000c00000000000000
0e000000140000000000000010000000140000000400000003010800050000000b020000
0000050000000c020b013f02030000001e00040000000701040004000000070104005b96
0000410b2000cc000b013f02000000000b013f0200000000280000003f0200000b010000
0100040000000000000000000000000000000000050000000000000000000000ffffff00
80a0a0008080800040606000100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111101111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111101111111111
111111011111110111111111111111111111111111111111111111111111111111111111
111111111111110111111101111111111111111111111111111111111111111111111111
011111111111111111111111111111111111111111101111111011111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111101111111111
111111011111110111111111111111111111111111111111111111111111111111111111
111111111111110111111101111111111111111111111111111111111111111111111111
101111111111111111111111111111111111111111101111111011111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111122
211111111221112221111111111111111111111111101111101111000011101000011111
000011000000000100000001100000011000000011110000111011101110110000001101
111000011111110000000001000000011011110111011110111000000110111100001111
001111111110000111110111111111110000111111100000000011100001111111110000
011111111001111000011111111110000111100000001100111101111011111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111400000031111400
004041110000140000404111111111111111111111101111101110111101100111001110
111101101111101100110011101111011001100111101111011011000110110111101101
110111101111111011111011001100111011110111011110111011110110111011110111
001111111101110011110111111111100110011111110111110111011100111111100111
001111111001110111001111111101110011100110011100011101111011111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111110000011111110000011111110000011111111111111101111111111
111111111111100111111111111111111111110111111111111111111400000000212004
340041120043200434004111111111111111111111101111101100111100101111101100
111100100111101101111011101111011011110111001111001011010110110111101101
100111100111111001111011011110111011110111011110111011110110110011110011
111111111001111011110111111111001111011111110011110110011110111111101111
101111111001101111101111111001111011101111011101011101111011111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111100000001111100000001111100000001111111111111101111111111
111111111111100111111111111111111111110111111111111111111400222400412003
110041130021200311004111111111111111111111101111101100111111101111101100
111111110111101110001011101111011100010111001111111011011010110111101101
100111111111111101111011100010111011110111011110111011110110110011111111
111111111011111011110111111111001111011111111011110110111110111111111111
101100000000101111101111111011111011110001011101101101111011111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111100000000111100000000111100000001111111111111101111111111
111111111111100111111111111111111111110111111111111111111400111100021400
334041130021140033404111111111100001111111101111101100000001101111101100
000001110111101111110011100000011111100111000000011010111010110000011101
100000001111111101111011111100111000000111000000111000001110110000000111
111111111011111011110111111111011111011111111011110110111110111111111111
101101111001101111101111111011111011111110011101100101111011111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111000000000111000000000111000000000111111111111101111111111
111111111111100111111111111111111111110111111111111111111400111140021123
440041130021112344004111111111111111111111101111101100111101101111101100
111101110111101101111011101111011011110111001111011010111000110111111101
100111101111111101111011011110111011110111011110111011111110110011110111
111111111001111011110111111111011111011111111011110110011110111111100111
001110111001100011001111111001111011101111011101110101111011111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111000000000111000000000111000000000111111111111101111111111
111111111111100111111111111111111111110111111111111111111400111130021332
110041130021133211004111111111111111111111101111101110111001100111001110
111001110111101100111011101111011001110111101110011000111100110111111101
110111001111111101111011001110111011110111011110111011111110111011100111
111111111101110011110111111111011111011111111011110111011100111111100000
001111011001101100111111111001110011100111011101111001111011111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111100000000111100000000111100000001111111111111101111111111
111111111111100111111111111111111111110111111111111111111400111140021400
220031340043140022003111111111111111111111100000001111000011101000011111
000011110000001110000111100000011100001111110000111001111100110111111101
111000011111111100000011100001111011110111011110111011111110111100001111
111111111110000110000000111111001111011111111000000111100001111111100000
011111011001100111110111111010000111110000111101111001000000011111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111100000001111100000001111100000001111111111111101111111111
111111111111100111111111111111111111110111111111111111111400111100021200
000411400000120000041111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111001111011111111111111111111111111111110111
111111101001100111101111111001111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111000111111111000111111111000111111111111111101111111111
111111111111100111111111111111111111110111111111111111111400112400411112
332111240032111233211111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101110011111111111111111111111111111110111
111111110001110011101111111100011111111111111111000111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111400000000211111
111111130021111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111110000111111111111111111111111111111110000
001111111001111000011111111110000011111111111110111011111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111400000042111111
111111123321111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111011111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111222222111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000111111111111111111111111111111111111111111111111111111111101111111111
111111111111100111111111111111111111110111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111011111111111111111111111101111111111111111111
111111111111111111111111111111111111111111111111111111111111111011111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111011111111111111111111111101111111111111111111
111111111111111111111111111111111111111111111111111111111111111011111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111011111111111111111111111101111111111111111111
111111111111111111111111111111111111111111111111111111111111111011111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111112222111111122
221111122211111111111111122211111122221111112222111111122221111112221111
111111111112222111111221111111111111111111111000011111000011101111001110
000111110111111111011111011010000111110000111011111101000011100000001101
110111011011101110110000001101111111111100001111101111011111011010000111
000000011000000110011110111101111110000110011110111001110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111140000041111400
004111300044041100311111400003111400004211140000041111400004111140000311
003110002140000421110000111111111111111111110111001110111001101110111101
111011110111111111011111011001110011101110011011111100111001100110011101
100011011011000110110111101101111111111011100111101111011111011001110011
001100111011110110001110111101111101111011001110111101110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400040003114003
300411000340041100311114003300314003300411400040003114003300411400330031
003130021400330041120043111111111111111111100111101100111101101101111001
111001110111111111011111011011111011001111011011111101111101101111011101
101011011011010110110111101101111111110011110111101111011111011011111011
011110111011110110101110111101111001111001101110111110110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111112004111000120031
130021003110041100311120031140420031122212004111000120031130022003114041
003200412003112221130021111111111111111111101111111101111101101011111001
111111110111111111011111011011111011011111011011111101111101110001011101
101101011011011010110111101101111111110111110111101111011111011011111011
100010111011110110110110111101111001111111101110111100000111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111113442111400130021
120031003114041100311130021111130043333323442111400130021120033002111111
000000113004333332130021111111100001111111101111111101111101100011111000
000011110111111111011111011011111011011111011011111101111101111110011101
011101011010111010110000011101100001110111110111101111011111011011111011
111100111000000110110010111101111000000011101110111001110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111230000130021
120031003114041100311130021111130044440021111230000130021120033002111111
000002113004444002130021111111111111111111100111101100111101101001111001
111011110111111111011111011011111011001111011011111101111101101111011101
011100011010111000110111111101111111110011110111101111011111011011111011
011110111011110110111010111101111001111011101110111011110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111130000003120031
130021003114041100011120031134320031130021130000003120031130022003113431
004004112003113002130021111111111111111111110111001110111001101100111101
110011110111111111011111011001110011101110011011111100111001100111011100
011110011000111100110111111101111111111011100111101111011111011001110011
001110111011110110111100111101111101110011101110111001110111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400004321110002
200011003114041100042214002300314002200411400004321110002200011400230031
003300311400220041340043111111111111111111111000011111000011101110011110
000110000000111111000000011010000111110000111000001101000011110000111100
111110011001111100110111111101111111111100001100000001000000011010000111
100001111000000110111100100000001110000111100000111100000111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111000211111112400
000211003114041100400312000004111400004111000211111112400000211200000411
003130031140000411400000111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111004111004111123
321111222112221122223211123321111123321111004111004111123321111112332111
003112221112332111240032111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400440003111111
111111111111111111111111111111111111111111400440003111111111111111111111
003111111111111111130021111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111200000041111111
111111111111111111111111111111111111111111200000041111111111111111111111
003111111111111111123321111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111112333211111111
111111111111111111111111111111111111111111112333211111111111111111111111
222111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111101111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111101111111010111111111111111111111
111111111111111111111111111111111111111111111111111011111111111111111111
111111111111111111111111111111101111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111101111111010111111111111111111111
111111111111111111111111111111111111111111111111111011111111111111111111
111111111111111111111111111111101111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111112222111111122
221111122211111111111111122211111122221111111111111111112222111111221111
111122221111111111111111111111110000000100000000010100001111100001111100
001111111111000011111011110000000110111101110000000010011110110011110111
111111110000111110111101111101101000011100000001100000011001111011110111
111000011001111011100111011111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111140000041111400
004111300044041100311111400003111400004211400111200011140000411120000400
211400004211111111111111111111110011001110111110110011100111011110111011
100111111110111001111011110011001110111101110111110110001110110001110111
111111101110011110111101111101100111001100110011101111011000111011110111
110111101100111011110111011111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400040003114003
300411000340041100311114003300314003300411400111400011400330041140033000
214003300411111111111111111111110111101110011110110111110110011110010011
110111111100111101111011110111101110111101110111110110101110110101110111
111111001111011110111101111101101111101101111011101111011010111011110111
100111100110111011111011011111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111112004111000120031
130021003110041100311120031140420031122211400113000012003113002200311300
220031122211111111111111111111111000101111011110110111110110011111110111
111111111101111111111011111000101110111101110111110110110110110110110111
111111011111011110111101111101101111101110001011101111011011011011110111
100111111110111011110000011111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111113442111400130021
120031003114041100311130021111130043333321400110000013002112003300211200
230043333321111111110000111111111111001111011110110111110110000000110111
111111111101111111111011111111001110000001110111110110110010110110010110
000111011111011110111101111101101111101111110011100000011011001011110111
100000001110111011100111011111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111230000130021
120031003114041100311130021111130044440021400140000013002112003300211200
230044440021111111111111111111110111101111011110110111110110011110110011
110111111100111101111011110111101110111101110111110110111010110111010111
111111001111011110111101111101101111101101111011101111011011101011110111
100111101110111011101111011111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111130000003120031
130021003114041100011120031134320031130021400200340012003113002200311300
220031130021111111111111111111110011101111011110110011100111011100111011
100111111110111001111011110011101110111101110111110110111100110111100111
111111101110011110111101111101100111001100111011101111011011110011110111
110111001110111011100111011111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400004321110002
200011003114041100042214002300314002200411400000140011000220001100022000
214002200411111111111111111111111000011111000000110100001111100001111100
001111111111000011000000011000011110111101110111110110111100110111100111
111111110000110000000100000001101000011110000111100000011011110010000000
111000011110000011110000011111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111000211111112400
000211003114041100400312000004111400004111400002140011240000021120000400
211400004111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111004111004111123
321111222112221122223211123321111123321111400041140011112332111111332200
211123321111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400440003111111
111111111111111111111111111111111111111111400011140011111111111111111200
211111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111200000041111111
111111111111111111111111111111111111111111400311140011111111111111111200
211111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111112333211111111
111111111111111111111111111111111111111111222111122211111111111111111122
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111101111111111111111111111111111111111111111111111111111
111111111111111111111111101111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111101111111111111111111111111111111111111111111111111111
111111111111111111111111101111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111101111111111111111111111111111111111111111111111111111
111111111111111111111111101111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111112222111111122
221111122211111111111111122211111122221111111111111111112222111111221111
111111111111122221111111111111111111111111111111111110111101111100001110
111011101111000011101000011111111110000111110000111110111100111101111111
110000111110111101111101101000011100000001100000011001111011110111111000
011001111011100111011111110111110110000000110111100111000011111011110000
000111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111140000041111400
004111300044041100311111400003111400004211400111200011140000421110000114
002130031111400004111003111100311000111111111111111110111101111011100110
110001101110111101100111001111111101110011101111011110111100011101111111
101110011110111101111101100111001100110011101111011000111011110111110111
101100111011110111011111110111110110011001110111011110111101111011110011
001111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400040003114003
300411000340041100311114003300314003300411400111400011400330041120043110
003140041114003300411003111100313002111111111111111110111101110011110110
110101101100111100101111101111111001111011001111001110111101011101111111
001111011110111101111101101111101101111011101111011010111011110111100111
100110111011111011011111110111110110111101110110111100111100111011110111
101111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111112004111000120031
130021003110041100311120031140420031122211400113000012003112221130021130
004100001120031130021003111100320041111111111111111110111101110111110110
110110101100111111101111101111111011111111001111111110111101101101111111
011111011110111101111101101111101110001011101111011011011011110111100111
111110111011110000011111110111110111000101110101111100111111111011111000
101111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111113442111400130021
120031003114041100311130021111130043333321400110000013004333332130021140
400204003130021120031003111100000011111110000111111110000001110111110110
101110101100000001101111101111111011111111000000011110111101100101111111
011111011110111101111101101111101111110011100000011011001011110111100000
001110111011100111011111110111110111111001110001111100000001111011111111
001111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111230000130021
120031003114041100311130021111130044440021400140000013004444002130021100
340403004130021120031003111100000211111111111111111110111101110011110110
101110001100111101101111101111111001111011001111011110111101110101111111
001111011110111101111101101111101101111011101111011011101011110111100111
101110111011101111011111110111110110111101110100111100111101111011110111
101111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111130000003120031
130021003114041100011120031134320031130021400200340012003113002130021200
230002400120031130021000111100400411111111111111111110111101111011100110
001111001110111001100111001111111101110011101110011110111101111001111111
101110011110111101111101100111001100111011101111011011110011110111110111
001110111011100111011111110111110110011101110110011110111001111011110011
101111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400004321110002
200011003114041100042214002300314002200411400000140011400220041340043400
120001300210002200011000422100330031111111111111111110111101111100001110
011111001111000011101000011111111110000111110000110000000101111001111111
110000110000000100000001101000011110000111100000011011110010000000111000
011110000011110000011111110000000111000011110111001111000011000000011000
011111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111000211111112400
000211003114041100400312000004111400004111400002140011140000411400000004
110041200412400000211004003100313003111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111004111004111123
321111222112221122223211123321111123321111400041140011112332111240032222
112221122211123321111222232100311222111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400440003111111
111111111111111111111111111111111111111111400011140011111111111130021111
111111111111111111111111111100311111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111200000041111111
111111111111111111111111111111111111111111400311140011111111111123321111
111111111111111111111111111100311111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111112333211111111
111111111111111111111111111111111111111111222111122211111111111111111111
111111111111111111111111111122211111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111101111111111111111111111110111111111111111111111111111111111111
111111111111111111111111111111111111111111111111000111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111101111111111111111111111110111111111111111111111111111111111111
111111111111111111111111111111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111112
222111111222111111221111222211111112222111111222111111111111111222211111
122111111111111111111111111111111111111111111111111111111111111111111111
111111111101111111111111111111111110111111111111111111111111111111111111
111111111111111111111111111111111111111111111111110011111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400000031111140
000421130000031110000114000004111140000411114000031100311000214000042111
000011111111111111111111111100001111100001110111100111000011111011111111
101111101101000011111000011101111110100001110000000110111011101101110111
011000000110111111111011111011110000110011110111110011111111011100000001
111011111100001100111101110011101111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400000000211400
330041200424002120043140004000311400330041140033003100313002140033004112
004311111111111111111111111011100111011100110111011110111101111011111111
101111101100111001110111001101111110011100110011001110110001101101100011
011011110110111111111011111011101110011001110111110001111111011100110011
111011111011110110011101111011101111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400222400412003
112221233112003130021200411100012003113002200311404100320041200311222113
002111111111111111111111110011110110011110110110111100111100111011111111
101111101101111101100111101101111110111110110111101110110101101101101011
011011110110111111111011111011001111011101110111100101111111011101111011
111011110011110011011101111101101111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111100023004
333332113340002130021344211140013002112003300211111100000011300433333213
002111111111111111111111110111111110111110110101111100111111111011111111
101111101101111101101111101101111110111110111000101110110110101101101101
011011110110111111111011111011011111011101110111101101110000011110001011
111011110011111111011101111000001111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111140023004
444002140000421130021111123000013002112003300211111100000211300444400213
002111111111110000111111110111111110111110110001111100000001111011111111
101111101101111101101111101101111110111110111111001110101110101101011101
011000001110110000111011111011011111011101110111101100110111011111110011
111011110000000111011101110011101111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111130022003
113002200311111130021113000000312003113002200311343100400411200311300213
002111111111111111111111110011110110011110110100111100111101111011111111
101111101101111101100111101101111110111110110111101110101110001101011100
011011111110111111111011111011001111011101110111001110110111011101111011
111011110011110111011101110111101111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111140021400
220041200324001340043140000432111000220001140023003100330031140022004134
004311111111111111111111111011100111011100110110011110111001111011111111
101111101100111001110111001101111110011100110011101110001111001100011110
011011111110111111111011111011101110011101110111011110110111011100111011
111011111011100111011101110011101111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111100021140
000411140000031400000100021111111240000021120000041100313003114000041140
000011111111111111111111111100001111100001110111001111000011000000011111
100000001101000011111000011100000110100001111000011110011111001100111110
011011111110111111111000000011110000111100000110011110010111011110000111
000000011100001111000001111000001111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400112400411112
332111112333211240032100411100411112332111111233211100311222111233211124
003211111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400000000211111
111111111111111130021140044000311111111111111111111100311111111111111113
002111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400000042111111
111111111111111123321120000004111111111111111111111100311111111111111112
332111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111222222111111111
111111111111111111111111233321111111111111111111111122211111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111100011111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110111111101011111111111111111111111111111111111111
111111111111111111111111111111111101111111111111111111111111111111111111
111111111111111111011111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111112
222111111222111111221111111111111111222211111122111111112222111111111111
111111111111111111111110111111101011111111111111111111111111111111111111
111111111111111111111111111111111101111111111111111111111111111111111111
111111111111111111001111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400000031111140
000421130000031110000140011120001114000041112000040021140000421111111111
111111111111111000000010000000001010000111110000111110000111111111100001
111101111000000011011110111000000001001111011001111011111111101111101111
000011001111011111001111111101110000000111101111110000110011110111001110
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400000000211400
330041200424002120043140011140001140033004114003300021400330041111111111
111111111111111001100111011111011001110011101111011101110011111111011100
111101111001100111011110111011111011000111011000111011111111101111101110
111001100111011111000111111101110011001111101111101111011001110111101110
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400222400412003
112221233112003130021140011300001200311300220031130022003112221111111111
111111111111111011110111001111011011111011001111001001111011111110011110
111101111011110111011110111011111011010111011010111011111111101111101100
111101110111011110010111111101110111101111101111001111001101110111110110
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400111100023004
333332113340002130021140011000001300211200330021120023004333332111111111
111111111111111100010111101111011011111011001111111011111111111110111111
111101111100010111011110111011111011011011011011011011111111101111101101
111101110111011110110111000001111000101111101111001111111101110111100000
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400111140023004
444002140000421130021140014000001300211200330021120023004444002111111111
111000011111111111100111101111011011111011000000011011111111111110111111
111101111111100111000000111011111011011001011011001011000011101111101101
111101110111011110110011011101111111001111101111000000011101110111001110
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400111130022003
113002200311111130021140020034001200311300220031130022003113002111111111
111111111111111011110111101111011011111011001111011001111011111110011110
111101111011110111011110111011111011011101011011101011111111101111101100
111101110111011100111011011101110111101111101111001111011101110111011110
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400111140021400
220041200324001340043140000014001100022000110002200021400220041111111111
111111111111111001110111101111011001110011101110011101110011111111011100
111101111001110111011110111011111011011110011011110011111111101111101110
111001110111011101111011011101110011101111101111101110011101110111001110
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400111100021140
000411140000031400000140000214001124000002112000040021140000411111111111
111111111111111100001111100000011010000111110000111110000111111111100001
100000001100001111011110111011111011011110011011110011111111100000001111
000011110000011001111001011101111000011100000001110000111100000111100000
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400112400411112
332111112333211240032140004114001111233211111133220021112332111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400000000211111
111111111111111130021140001114001111111111111111120021111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111400000042111111
111111111111111123321140031114001111111111111111120021111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111222222111111111
111111111111111111111122211112221111111111111111112211111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111100111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000111111111111111111111
100111111111111111111111110111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111100011111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111011111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111112
222111111222111111221111111111111111222211111122111111111111111112222111
111111111111111111111111111111111111111111111111111111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111001111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400000031111140
000421130000031110000140011120001114000042111000011400213003111140000411
100311110031100011111111111111111111011110111110000111011101110111100001
110100001111111111000011111000011111011110011110111111101111101111000011
001111011111001111111101110000000111101111110000110011110111001110111111
101111101100000001101111001110000111110111100000001111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400000000211400
330041200424002120043140011140001140033004112004311000314004111400330041
100311110031300211111111111111111111011110111101110011011000110111011110
110011100111111110111001110111101111011110001110111111101111101110111001
100111011111000111111101110011001111101111101111011001110111101110111111
101111101100110011101110111101111011110111100110011111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400222400412003
112221233112003130021140011300001200311222113002113000410000112003113002
100311110032004111111111111111111111011110111001111011011010110110011110
010111110111111100111101100111100111011110101110111111101111101100111101
110111011110010111111101110111101111101111001111001101110111110110111111
101111101101111011101101111001111001110111101111011111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400111100023004
333332113340002130021140011000001300433333213002114040020400313002112003
100311110000001111111111111111111111011110111011111011011011010110011111
110111110111111101111111100111111111011110110110111111101111101101111101
110111011110110111000001111000101111101111001111111101110111100000111111
101111101110001011101011111001111111110111110001011111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400111140023004
444002140000421130021140014000001300444400213002110034040300413002112003
100311110000021111111111000011111111000000111011111011010111010110000000
110111110111111101111111100000001111011110110010111111101111101101111101
110111011110110011011101111111001111101111000000011101110111001110111111
101111101111110011100011111000000011110111111110011111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400111130022003
113002200311111130021140020034001200311300213002120023000240012003113002
100011110040041111111111111111111111011110111001111011010111000110011110
110111110111111100111101100111101111011110111010111111101111101100111101
110111011100111011011101110111101111101111001111011101110111011110111111
101111101101111011101001111001111011110111101111011111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400111140021400
220041200324001340043140000014001140022004134004340012000130021000220001
100042210033003111111111111111111111011110111101110011000111100111011100
110011100111111110111001110111001111011110111100111111101111101110111001
110111011101111011011101110011101111101111101110011101110111001110111111
101111101100111011101100111101110011110111100111011111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400111100021140
000411140000031400000140000214001114000041140000000411004120041240000021
100400310031300311111111111111111111011110111110000111001111100111100001
110100001111111111000011111000011000000010111100111111100000001111000011
110000011001111001011101111000011100000001110000111100000111100000111111
100000001110000111101110011110000110000000110000111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400112400411112
332111112333211240032140004114001111233211124003222211222112221112332111
122223210031122211111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400000000211111
111111111111111130021140001114001111111111113002111111111111111111111111
111111110031111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111400000042111111
111111111111111123321140031114001111111111112332111111111111111111111111
111111110031111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111222222111111111
111111111111111111111122211112221111111111111111111111111111111111111111
111111112221111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000111111111111111111111
100111111111111111111111100111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111113000211110031111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111112300411110031111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111222
111111112221111111111111112222111111221111111111111140021110031221111112
222111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111111114000
040411140000311003110002140000421110000111300211111140031110040000211140
000421111111111111111111111111011110011110110111110111111101111101100000
001101111001110000111110111100000001111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111111120043
400411400330031003130021400330041120043111300211111200041110003300011400
330041111111111111111111111111011110001110110111110111111101111101100110
011101110111101111011110111100110011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111111120031
100412003114041003200412003112221130021111300211111300001110041120032003
112221111111111111111111111111011110101110110111110111111101111101101111
011101101111001111001110111101111011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400222111114003
340413002111111000000113004333332130021111300211111004003110031110033004
333332111111111111111111111111011110110110110111110111111101111101110001
011101011111001111111110111110001011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400000042111234
400413002111111000002113004444002130021111300211113003404110031110033004
444002111111111100001111111111011110110010110111110111111101111101111110
011100011111000000011110111111110011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400000000213321
100412003113431004004112003113002130021111300211114001300110031120032003
113002111111111111111111111111011110111010110111110111111101111101101111
011101001111001111011110111101111011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400112400314002
200311400230031003300311400220041340043111300211120041200310003240011400
220041111111111111111111111111011110111100110111110111111101111101100111
011101100111101110011110111100111011111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111300312000
004111200000411003130031140000411400000111300211140021100410040000311140
000411111111111111111111111000000010111100110000000111111100000001110000
111101110011110000110000000110000111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111400311123
321111112332111003112221112332111240032111300211122211122212212332111112
332111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400000000211111
111111111111111003111111111111111130021400000000311111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400000002111111
111111111111111003111111111111111123321400000000311111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111222222211111111
111111111111111222111111111111111111111222222222211111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111100311111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111100311111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
110111111111111111111111111101111111011111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111222111111111111111111222111100312211111122221111111111111221111122221
111111222211111111111111112211111111111222211111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
110111111111111111111111111101111111011111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111113002111100311
114000040411003114041130000031100400002111400004111003111110000112400000
211114000041110031140411100001003111114000041110031111111111111111111111
111100001111111011111000011111011111111011100111101101111001111110111110
110100001111100001110011110100000000011100001110111101110111101110000001
101001111001111110111011101111000011111000011111011111100001110000001111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111113002111100311
120043400411003114041200424002100033000114003300411003111120043120000000
021140033004110031140411200431003111140033004110031111111111111111111111
111011100111111011110111101111011111111011100011101101110111111110111110
110011100111011100110001110110111110111011110110111101110111101110111101
101100110011111110110001101110111001110111001111011111011100110111101111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111113002111100311
120031100411003114041233112003100411200320031130021003111130021100041120
001200311300210031140411300211003111200311300210031111111111111111111111
110011110111111011100111100111011111111011101011101101101111111110111110
110111110110011110110101110110011110110011110010111101110111101110111101
101110100111111110110101101100111101100111101111011110011110110111101111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111113002111100311
114003340411003114041113340002100311100330021120031003111130021200011114
002300211200310031140411300211003111300211200310031111111111111111111111
110111111110000011100111111111011110000011101101101101011111111110111110
110111110110111110110110110111011110110011111110111101110111101110111101
101110001111111110110110101101111101101111111111011110111110110111101111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111113002111100311
111234400411003114041140000421100311100330021120031003111130021200411111
111300211200310031140411300211003111300211200310031111111111110000111111
110111111110111011100000001111011110111011101100101100011111111110111110
110111110110111110110110010111011110110000000110000001110000001110000011
101111001111111110101110101101111101101111111111011110111110110000001111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111113002111100011
113321100411003114041200311111100311200320031130021000111130021200311111
111200311300210031140411300211000111200311300210031111111111111111111111
110011110110111011100111101111011110111011101110101101001111111110111110
110111110110011110110111010111011110110011110110111101110111101110111111
101110001111111110101110001100111101100111101111011110011110110111101111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111113002111100042
214002200311000220041200324001100032400110002200011000422340043200411111
111100022000110002200413400431000422100022000110031111111111111111111111
111011100110111011110111001111011110111011101111001101100111111110111110
110011100111011100110111100111011110111011100110111101110111101110111111
101100110111111110001111001110111001110111001111011111011100110111101111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111113002111100400
312000004111004000021140000031100400003112400000211004003400000200011113
331124000002110040000214000001004003124000002110031111111111111111111111
111100001110111011111000011000000010111011101111001101110011111110000000
110100001111100001110111100111000000111100001110111101110111101110111111
101001110011111110011111001111000011111000011000000011100001110000001111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111113002111122223
211123321111222233211112333211122123321111123321111222232240032140031120
001111233211112222332112400321222232111233211110031111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111114000000003111111
111111111111111111111111111111111111111111111111111111111130021120004400
031111111111111111111111300211111111111111111110031111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111100011111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111114000000003111111
111111111111111111111111111111111111111111111111111111111123321113000000
311111111111111111111111233211111111111111111110031111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111011101111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111112222222222111111
111111111111111111111111111111111111111111111111111111111111111111233332
111111111111111111111111111111111111111111111112221111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111110111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111112211111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111300004111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111113003300411111111111111111111111111111111111111111111111111
111111111111111100111111111111111111111011111110111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111112222
111111111111112221130021112211111111111111111111111111111111111111111111
111111111111111100111111111111111111111011111110111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400000001140000
421100311404111344430021100001003114041111111111111111111111000011111000
011110000000000000000000011001110111111000000000001111011100111101101111
011100000001111111011111011000000011011110011100001111101111000000011111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400000001400330
041100311404114000000021200431003114041111111111111111111110111001110111
001110111101111011001100111101110111111101111101100111011100011101101111
011100110011111111011111011001100111011101111011110111101111001100111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400222222003112
221100311404120041140021300211003114041111111111111111111100111101100111
101110111101111011011110111110110111111100111101110111011101011101101111
011101111011111111011111011011110111011011110011110011101111011110111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111113004333
332100311404120021120021300211003114041111111111111111111101111101101111
101110111101111011100010111100000111111110111101110111011101101101101111
011110001011111111011111011100010111010111110011111111101111100010111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111113004444
002100311404120021120021300211003114041111111100001111111101111101101111
101110111101111011111100111001110111111110111101110111011101100101100000
011111110011111111011111011111100111000111110000000111101111111100111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111112003113
002100311404120031130021300211004114041111111111111111111100111101100111
101110111101111011011110111011110111111110111101110111011101110101101111
011101111011111111011111011011110111010011110011110111101111011110111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111111400220
041100022004110002200023400431000230041111111111111111111110111001100111
001110111101111011001110111001110111111110111101110111011101111001101111
011100111011111111011111011001110111011001111011100111101111001110111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111111140000
411100400002112000040024000001004000021111111111111111111111000011101000
011110111101111011100001111100000111111110000001110000011101111001101111
011110000111111111000000011100001111011100111100001100000001100001111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111111112332
111122223321111123212212400321003233211111111111111111111111111111100111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111111111111
111111111111111111111111300211003111111111111111111111111111111111110001
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400111111111111
111111111111111111111111233211003111111111111111111111111111111111111000
001111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111222111111111111
111111111111111111111111111111222111111111111111111111111111111111111111
101111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111011111111111111111111
111111111111111111111111111111111111111111111111111111000111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111011111111111111111111
111111111111111111111111111111111111111111111111111111110111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111222211111111
111111111222211111122211111111111111122211111222111111111111111111111111
111111111111111111111111111111111111111111111111111011111111111111111111
111111111111111111111111111111111111111111111111111111110011111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111124000002111003
114041114000042111400003110031100023000003113000440411003110031100311111
111111111111111111011110011100001110111101111101111010000111110000110011
110111000000110111101110000000110011101111111110000111110011110111011101
101110111011000000011111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111200000000211003
114041140033004114003300310031300220042400210003400411003110031100311111
111111111111111111011101111011100110111101111101111001110011101110011001
110111011110110111101110011001111011101111111101110011110001110110001101
101100011011001100111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111000411200011003
114041200311222120031140410032004123311200310031100411003110031100311111
111111111111111111011011110011110110111101111101111011111011001111011101
110111011110110111101110111101111101101111111001111011100101110110101101
101101011011011110111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111112000111140021003
114041300433333230021111110000001111334000210031140411003110031100311111
111111111111111111010111110111110110111101111101111011111011011111011101
110111011110110111101111000101111000001111111011111111101101110110110101
101101101011100010111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111112004111111111003
114041300444400230021111110000021114000042110031140411003110031100311111
111111000011111111000111110111110110000001111101111011111011011111011101
110111000001110000001111111001110011101111111011111111101100110101110101
101011101011111100111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111112003111111111004
114041200311300220031134310040041120031111110031140411003110041100311111
111111111111111111010011110011110110111101111101111011111011001111011101
110111011111110111101110111101110111101111111001111011001110110101110001
101011100011011110111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111112004111111111000
230041140022004114002300310033003120032400110031140411000230002300311111
111111111111111111011001111011100110111101111101111001110011101110011101
110111011111110111101110011101110011101111111101110011011110110001111001
100011110011001110111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111112000111133311004
000021114000041112000004110031300314000003110031140411004000430004111111
111111111111111111011100111100001110111101100000001010000111110000111100
000111011111110111101111000011111000001111111110000110011110010011111001
100111110011100001111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111400311200011003
233211111233211111123321110031122211233321112221122211221233112331111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111200044000311003
111111111111111111111111110031111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111130000003111003
111111111111111111111111110031111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111112333321111222
111111111111111111111111112221111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110101111111111111111111111100111111111111111111111
110111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110100000000000000000000000000000000000000000000000
000111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111110111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111100c00000040092900aa000000000000000b013f0200000000
040000002701ffff030000000000

Рис. 2. Структура пакета IPX

Пакет можно разделить на две части – заголовок и передаваемые данные.
Все поля, представленные на рис. 2, кроме последнего (Data),
представляют собой заголовок пакета. Заголовок пакета выполняет ту же
роль, что и конверт обычного письма – там располагается адрес
назначения, обратный адрес и некоторая служебная информация.

Особенностью формата пакета является то, что все поля заголовка содержат
значения в перевернутом формате, т. е. по младшему адресу записывается
старший байт данных, а не младший, как это принято в процессорах фирмы
Intel. Поэтому перед записью значений в многобайтовые поля заголовка
необходимо выполнить соответствующее преобразование. Представление
данных в заголовке пакета соответствует, например, формату целых числел
в компьютере IBM-370 (серия ЕС ЭВМ). .

Работа с драйвером IPX/SPX

Первое, что должна сделать программа, желающая работать в сети с
протоколом IPX или SPX, – проверить, установлен ли драйвер
соответствующего протокола. Затем необходимо получить адрес вызова этого
драйвера – точку входа API (Application Programm Interface – интерфейс
для приложений). В дальнейшем программа вызывает драйвер при помощи
команды межсегментного вызова процедуры по адресу точки входа API
драйвера IPX/SPX.

Схема “клиент-сервер”

Обычно в сети одна из рабочих станций принимает запросы на выполнение
каких-либо действий от других рабочих станций. Так как станция
обслуживает запросы, она называется сервером (serve – обслуживать,
server – обслуживающее устройство). Выполнив запрос, сервер посылает
ответ в запросившую станцию, которая называется клиентом.

В сети может быть много серверов и много клиентов. Одни и те же клиенты
могут посылать запросы разным серверам.

Говоря более строго, сервером или клиентом является не рабочая станция,
а запущенная на ней программа. В мультизадачной среде разные программы,
запущенные одновременно на одной и той же рабочей станции могут являться
и клиентами, и серверами.

Программа-сервер, выполнив очередной запрос, переходит в состояние
ожидания. Она ждет прихода пакета данных от программы-клиента. В
зависимости от содержимого этого пакета программа-сервер может выполнять
различные действия, в соответствии с логикой работы программы. Например,
она может принять от программы-клиента дополнительные пакеты данных или
передать свои пакеты.

Сервер и клиент при необходимости на какое-то время или навсегда могут
поменяться местами, изменив свое назначение на противоположное.

Для того, чтобы создавать программы-серверы и программы-клиенты, нам
необходимо научиться выполнять две задачи:

· инициализацию сервера и клиента;

o прием и передачу пакетов данных.

Инициализация сервера и клиента

Для инициализации программ сервера и клиента, работающих на базе IPX,
недостаточно убедиться в наличии соответствующего драйвера и получить
точку входа в его API. Необходимо выполнить некоторые подготовительные
действия для того, чтобы программа могла принимать и передавать пакеты
данных. Прежде всего необходимо, чтобы программа-сервер или
программа-клиент идентифицировали себя в сети при помощи механизма
сокетов. Динамически распределяемые сокеты выдаются программам как бы
во временное пользование (на время их работы) по специальному запросу.
Перед началом работы программа должна запросить сокет у протокола IPX, а
перед завершением – освободить его. При реализации схемы обмена данными
“клиент-сервер” сервер обычно принимает пакеты на сокете, значение
которого известно программам-клиентам. Сами же программы-клиенты могут
использовать либо то же самое значение сокета, либо получать свой сокет
динамически. Клиент может сообщить серверу свой сокет просто передав его
в пакете данных (так как мы предполагаем, что сокет сервера известен
программе-клиенту). После определения сокета необходимо узнать сетевой
адрес станций-получателей. Для того чтобы клиент мог послать запрос
серверу, необходимо кроме сокета сервера знать его сетевой адрес – номер
сети и адрес рабочей станции в сети.

Прием и передача пакетов данных

Рассмотрим теперь процедуру приема пакетов данных средствами IPX.

Прием и передачу пакетов выполняет сетевой адаптер, работающий с
использованием прерываний. Прикладные программы не работают напрямую с
драйвером сетевого адаптера. Все свои запросы на прием и передачу
пакетов они направляют драйверу IPX (программа ipx.exe или ipxodi.exe),
который, в свою очередь, обращается к драйверу сетевого адаптера.

Для приема или передачи пакета прикладная программа должна подготовить
пакет данных, сформировав его заголовок, и построить так называемый блок
управления событием ECB (Event Control Block). В блоке ECB задается
адресная информация для передачи пакета, адрес самого передаваемого
пакета в оперативной памяти и некоторая другая информация.

Подготовив блок ECB, прикладная программа передает его адрес
соответствующей функции IPX для выполнения операции приема или передачи
пакета.

Функции IPX, принимающие или передающие пакет, не выполняют ожидания
завершения операции, а сразу возвращают управление вызвавшей их
программе. Прием или передача выполняются сетевым адаптером автономно и
асинхронно по отношению к программе, вызвавшей функцию IPX для передачи
данных. После того, как операция передачи данных завершилась, в
соответствующем поле блока ECB устанавливается признак. Программа может
периодически проверять ECB для обнаружения признака завершения операции.

TCP/IP

Рассмотрим работу семейства протоколов TCP/IP при обмене данными между
двумя процессами telnet, выполняющимися на двух разных хостах, входящих
в две разные сети, соединенные посредством маршрутизатора.

Работа протокола TCP

Протокол верхнего уровня (приложений/процессов) разделяет данные на
кусочки (это процесс называется инкапсуляцией) и каждому кусочку
добавляет заголовок. То, что получается в результате, называется
TCP-сегментом.

TCP-сегментЗаголовок

TCP-сегментаДанные

Модули протокола TCP обмениваются TCP-сегментами.

Протокол TCP обеспечивает надежную дуплексную передачу с
предварительной установкой связи и с разрывом соединения.

Надежная – осуществляется контроль получения данных. Сегмент, на данные
которого не пришло подтверждения через определенное время, посылается
снова.

Дуплексная – значит, передача в две стороны, туда и обратно, передача
только в дону сторону называется симплексной.

Формат заголовка TCP-сегмента

Формат заголовка TCP-сегмента (заголовок состоит из 32-битных слов):

0 (бит)481216202428 31Source PortDestination PortSequence
NumberAcknowledgement NumberOffsetReservedFlagsWindowChecksumUrgent
PointOptionsPadding

· Source Port и Destination Port – это адреса процессов (отправителя и
получателя соответственно). Грубо говоря, это просто числовые
идентификаторы, которые присвоены процессам-протоколам верхнего уровня.
Некоторые протоколы верхнего уровня имеют стандартные значения номеров
портов:

Номер портаПроцесс20ftp-data (передача данных по ftp)21fpt
(команды)23telnet25smtp70gopher80www-httpи т.д.

· Sequence Number – порядковый номер первого октета сегмента в потоке
данных.

· Acknowledgement Number – количество полученных октетов данных

· Window – сколько октетов адресат готов принять

· Offset – начало данных сегмента

· Flags – управляющие флаги, используемые для установки и разрыва связи,
для подтверждения получения данных, для передачи экстренных данных.

· Checksum – контрольная сумма: все байты заголовка суммируются
отправителем и результат помещается в это поле. По получению адресат
также суммирует все байты заголовка и сравнивает с этим числом. Если
значения равны, значит, все в порядке.

· Urgent Point – определяет положение экстренных данных внутри сегмента.

Pipe

Канал – средство обмена информацией между процессами с одновременной
синхронизацией, реализующей дисциплину FIFO (первый вошел – первый
вышел), то есть прочитанные сообщения удаляются.

Канал – файл специального типа, особенности:

– время существования канала ограниченно временем работы процесса

– размер канала ограничен количеством блоков, доступных для прямой
адресации (то есть на диске он не создается, а существует только в
буферах ввода-вывода).

– Используется только для общения между родственными процессами
(поскольку родственники наследуют все открытые файлы предка).

Создание

Создает канал системный вызов pipe:

int fd[2];

pipe(int *fd);

fd[0] – дескриптор файла для ввода

fd[1] – дескриптор файла для вывода

Но файловый дескриптор – локальная для процесса характеристика, как
могут два разных процесса использовать один файловый дескриптор? Для
этого должна возникнуть такая ситуация

А это возможно только в том случае, если ПР1 и ПР2 являются
родственниками – ведь потомок полностью наследует u-area предка, в том
числе и таблицу файловых дескрипторов. Значит, либо ПР1 должен быть
потомком ПР2, либо наоборот, либо они оба должны быть потомками третьего
процесса

NetBios

Протокол NetBios работает на трех уровнях семиуровневой модели OSI:
сетевом уровне, транспортном уровне и на уровне каналов связи. Уровень
каналов связи обеспечивает механизм обмена сообщениями между
программами, работающими на станциях в рамках канала связи или сессии.
NETBIOS может обеспечить интерфейс более высокого уровня, чем протоколы
IPX и SPX.

Протокол NETBIOS поддерживается в сетях IBM (IBM PC LAN), Novell
NetWare, Microsoft Windows for Workgroups и в других сетях. К сожалению,
нет единого стандарта на протокол NETBIOS, поэтому в сетевом программном
обеспечении разных фирм используются разные интерфейсы для вызова команд
NETBIOS.

С нашей точки зрения, наибольший интерес представляет применение NETBIOS
в сетях Novell NetWare и Microsoft Windows for Workgroups. Мы рассмотрим
основные возможности NETBIOS, связанные с передачей данных между
рабочими станциями в пределах одного логического сегмента сети.
Использовать NETBIOS проще, чем IPX или SPX. Однако, так как в среде
Novell NetWare нужен специальный эмулятор NETBIOS, эффективность работы
программы может снизиться. Кроме того, для эмулятора нужна
дополнительная память, так как он реализован в виде резидентной
программы.

Адресация станций и программ

Для идентификации рабочей станции протоколы IPX и SPX используют номер
сети, адрес станции в сети и сокет. Адрес станции определяется на
аппаратном уровне и представляет собой число длиной 6 байт. Номер сети
занимает 4 байта. Сокеты выделяются динамически драйвером протокола IPX
или могут быть получены в Novell.

Протокол NETBIOS использует другой механизм адресации станций и
программ. Для адресации станции используются имена размером 16 байт.
Каждая станция имеет одно постоянное имя (permanent name), которое
образуется из аппаратного адреса добавлением к нему слева десяти нулевых
байт. Кроме постоянного имени протокол NETBIOS позволяет добавлять (и
удалять) обычные имена и групповые имена. Обычные имена служат для
идентификации рабочей станции, групповые могут служить для посылки
пакетов одновременно нескольким станциям в сети. Постоянное имя удалить
нельзя, так как оно полностью определяется аппаратным обеспечением
станции.

При добавлении обычного имени протокол NETBIOS опрашивает всю сеть для
проверки уникальности имени. Групповое имя может быть одинаковое на
нескольких станциях, поэтому при добавлении группового имени опрос сети
не выполняется.

После добавления нового имени этому имени присваивается так называемый
номер имени (name number), который используется для передачи данных по
сети.

Сравнивая методы адресации, используемые протоколами IPX/SPX и NETBIOS,
нетрудно заметить, что метод адресации протокола NETBIOS более удобен.
Вы можете адресовать данные не только одной станции (как в IPX и SPX)
или всем станциям сразу (как в IPX), но и группам станций, имеющим
одинаковое групповое имя. Это может быть удобно, если в сети работают
несколько групп пользователей, которые интенсивно обмениваются данными
между собой.

Другим преимуществом схемы адресации протокола NETBIOS перед схемой
адресации протоколов IPX/SPX можно считать отсутствие необходимости
получать в фирме Novell свой собственный номер сокета для идентификации
вашего программного обеспечения. Вы можете придумать свое собственное
уникальное групповое имя, включающее, например, название программы и
вашей фирмы, и использовать его для работы по схеме клиент-сервер.

MailSlot

Канал Mailslot создается серверным процессом с помощью специально
предназначенной для этого функции CreateMailslot. После создания
серверный процесс получает идентификатор канала Mailslot. Пользуясь этим
идентификатором, сервер может читать сообщения, посылаемые в канал
клиентскими процессами. Однако сервер не может выполнять над каналом
Mailslot операцию записи, так как этот канал предназначен только для
односторонней передачи данных – от клиента к серверу. При ошибке
функцией CreateMailslot aica?auaaony cia/aiea INVALID_HANDLE_VALUE. Eiae
ioeaee iiaeii ii?aaeaeeoue i?e iiiiue ooieoeee GetLastError.

I?aaeaea /ai i?enooieoue e ?aaioa n eaiaeii Mailslot, eeeaioneee
i?ioeann aeieaeai aai ioe?uoue. Aeey auiieiaiey yoie iia?aoeee neaaeoao
eniieueciaaoue ooieoeeth CreateFile. Caienue niiauaiee a eaiae Mailslot
auiieiyao eeeaioneee i?ioeann, aucuaay aeey yoiai ooieoeeth WriteFile.

Na?aa?iue i?ioeann iiaeao /eoaoue niiauaiey ec nicaeaiiiai ei eaiaea
Mailslot i?e iiiiue ooieoeee ReadFile. Caiaoei, /oi ia?aae auiieiaieai
iia?aoeee /oaiey neaaeoao i?iaa?eoue ninoiyiea eaiaea Mailslot. Anee a
iai iao niiauaiee, oi ooieoeeth ReadFile aucuaaoue ia neaaeoao. Aeey
i?iaa?ee ninoiyiey eaiaea au aeieaeiu ainiieueciaaoueny ooieoeeae
GetMailslotInfo. N iiiiuueth ooieoeee SetMailslotInfo na?aa?iue i?ioeann
iiaeao eciaieoue a?aiy iaeeaeaiey aeey eaiaea Mailslot oaea iinea aai
nicaeaiey.

Enoiaeieee

Main.cpp

#include

#include

#include

#pragma hdrstop

#include “Main.h”

#include “Podkluch.h”

#include “GameParam.h”

#include “About.h”

//———————————————————————-
—–

#pragma package(smart_init)

#pragma link “LMDCustomBevelPanel”

#pragma link “LMDCustomControl”

#pragma link “LMDCustomPanel”

#pragma link “LMDSimplePanel”

#pragma link “LMDBackPanel”

#pragma link “LMDCustomParentPanel”

#pragma link “LMDBaseControl”

#pragma link “LMDBaseGraphicControl”

#pragma link “LMDBaseLabel”

#pragma link “LMDControl”

#pragma link “LMDCustomSimpleLabel”

#pragma link “LMDSimpleLabel”

#pragma link “lmdcont”

#pragma link “LMDCustomComponent”

#pragma link “LMDCustomStatusBar”

#pragma link “LMDStatusBar”

#pragma link “LMDCustomPanelFill”

#pragma link “LMDPanelFill”

#pragma link “LMDCustomScrollBox”

#pragma link “LMDListBox”

#pragma link “LMDCustomFormFill”

#pragma link “LMDFormFill”

#pragma link “LMDWndProcComponent”

#pragma link “LMDBaseShape”

#pragma link “LMDShapeControl”

#pragma link “LMDCustomLabel”

#pragma link “LMDDrawEdge”

#pragma link “LMDLabel”

#pragma link “LMDBaseImage”

#pragma link “LMDCustomGroupBox”

#pragma link “LMDCustomLImage”

#pragma link “LMDGraphicControl”

#pragma link “LMDGroupBox”

#pragma link “LMDLImage”

#pragma link “LMDBaseGraphicButton”

#pragma link “LMDCustomShapeButton”

#pragma link “LMDShapeButton”

#pragma resource “*.dfm”

TMainForm *MainForm;

extern bool IsServer;

extern AnsiString Protocoli[];

extern int KolKub;

extern int MaxOch;

extern int choosenProt;

extern AnsiString ServerHostName;

extern AnsiString ServerHostIP;

extern bool IsHostName;

extern bool IsIgrayut;

extern int NomHoda;

extern int MyCurOch;

extern int MyWholeOch;

extern int HisWholeOch;

extern bool IsYaFixed;

extern bool IsHeFixed;

extern int HisWinPoPartiam;

extern int MyWinPoPartiam;

extern int NomPartia;

int *MasPriem;

//———————————————————————-
—–

__fastcall TMainForm::TMainForm(TComponent* Owner)

: TForm(Owner)

//———————————————————————-
—–

void __fastcall TMainForm::FormCreate(TObject *Sender)

FirstTimeShow=true;

IsVisitApplicationBox=false;

//———————————————————————-
—–

void __fastcall TMainForm::FormActivate(TObject *Sender)

if(FirstTimeShow)

FirstTimeShow=false;

InterfaceBezIgri();

menuBeginClick(this);

//———————————————————————-
—–

void __fastcall TMainForm::menuBeginClick(TObject *Sender)

if (IsIgrayut)

menuStopClick(this);

if (IsIgrayut) return;

if (UstanParametrov()) //aucia 2-o oi?i aeey onoaiiaee
ia?aiao?ia

//—-iiaeeeth/aiea—-

switch(choosenProt)

case 0:

IPXConnect();

break;

case 1:

TCPIPConnect();

break;

case 2:

NetBiosConnect();

break;

case 3:

MailSlotConnect();

break;

case 4:

PipeConnect();

break;

if(IsServer) lbStat->Caption=”Iaeeaeaaony niaaeeiaiea n
eeeaioii…”;

//———————————————————————-
—–

bool __fastcall TMainForm::UstanParametrov(void)

int md1,md2;

for(;;)

md1=FormParamConnect->ShowModal();

FormParamConnect->Close();

if (md1==mrOk)

if (IsServer)

md2=FormGameParam->ShowModal();

if (md2==mrOk) return 1;

else continue;

else return 1;

else return 0;

void __fastcall TMainForm::OtobrazhDannihSopernika(int *MasPriem)

Graphics::TBitmap *Bitmap2 = new Graphics::TBitmap();

AnsiString strCat;

if(IsServer)

strCat=”_2″;

else

strCat=””;

if(KolKub==1)

Bitmap2->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(MasPriem[3])+strCat);

Kubiki2[0]->Picture->Bitmap=Bitmap2;

Kubiki2[0]->Left=MasPriem[4];

Kubiki2[0]->Top=MasPriem[5];

Kubiki2[0]->Visible=true;

else if (KolKub==2)

Bitmap2->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(MasPriem[3])+strCat);

Kubiki2[0]->Picture->Bitmap=Bitmap2;

Kubiki2[0]->Left=MasPriem[4];

Kubiki2[0]->Top=MasPriem[5];

Kubiki2[0]->Visible=true;

Bitmap2->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(MasPriem[6])+strCat);

Kubiki2[1]->Picture->Bitmap=Bitmap2;

Kubiki2[1]->Left=MasPriem[7];

Kubiki2[1]->Top=MasPriem[8];

Kubiki2[1]->Visible=true;

else if (KolKub==3)

Bitmap2->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(MasPriem[3])+strCat);

Kubiki2[0]->Picture->Bitmap=Bitmap2;

Kubiki2[0]->Left=MasPriem[4];

Kubiki2[0]->Top=MasPriem[5];

Kubiki2[0]->Visible=true;

Bitmap2->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(MasPriem[6])+strCat);

Kubiki2[1]->Picture->Bitmap=Bitmap2;

Kubiki2[1]->Left=MasPriem[7];

Kubiki2[1]->Top=MasPriem[8];

Kubiki2[1]->Visible=true;

Bitmap2->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(MasPriem[9])+strCat);

Kubiki2[2]->Picture->Bitmap=Bitmap2;

Kubiki2[2]->Left=MasPriem[10];

Kubiki2[2]->Top=MasPriem[11];

Kubiki2[2]->Visible=true;

else

Bitmap2->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(MasPriem[3])+strCat);

Kubiki2[0]->Picture->Bitmap=Bitmap2;

Kubiki2[0]->Left=MasPriem[4];

Kubiki2[0]->Top=MasPriem[5];

Kubiki2[0]->Visible=true;

Bitmap2->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(MasPriem[6])+strCat);

Kubiki2[1]->Picture->Bitmap=Bitmap2;

Kubiki2[1]->Left=MasPriem[7];

Kubiki2[1]->Top=MasPriem[8];

Kubiki2[1]->Visible=true;

Bitmap2->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(MasPriem[9])+strCat);

Kubiki2[2]->Picture->Bitmap=Bitmap2;

Kubiki2[2]->Left=MasPriem[10];

Kubiki2[2]->Top=MasPriem[11];

Kubiki2[2]->Visible=true;

Bitmap2->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(MasPriem[12])+strCat);

Kubiki2[3]->Picture->Bitmap=Bitmap2;

Kubiki2[3]->Left=MasPriem[13];

Kubiki2[3]->Top=MasPriem[14];

Kubiki2[3]->Visible=true;

HisWholeOch=MasPriem[2];

lbHisWholeOch->Caption=IntToStr(MasPriem[2]);

delete Bitmap2;

//———–i?eoee aeaiiua
niia?ieea——————————————–

void __fastcall TMainForm::Priem(int *MasPriem)

if(MasPriem[0]==0) //ia?aue ioaao na?aa?a eeeaioo

AnsiString mess;

mess=”Aao niia?iee aua?ae neaaeothuea ia?aiao?u ea?u:nEiee/anoai
eoaeeia: “+IntToStr(MasPriem[1])+”nIaeneiaeueiia eiee/anoai i/eia:
“+IntToStr(MasPriem[2]);

IsVisitApplicationBox=true;

Application->MessageBoxA(mess.c_str(),”Ia?aiao?u ea?u”,MB_OK);

KolKub=MasPriem[1];

MaxOch=MasPriem[2];

InterfaceBeginNewGame();

ChangeInterfacePerehodHoda(0);

IsVisitApplicationBox=false;

else if (MasPriem[0]==1) //niia?iee a?inee

shapeBrosil->Brush->Color=0x0000CE00;

OtobrazhDannihSopernika(MasPriem);

if(!IsServer)

NomHoda++;

enum TypeDannihForTabl DannieForTabl;

DannieForTabl=hebrosil;

ZapolnTabl(DannieForTabl);

if(IsYaFixed && HisWholeOch>MyWholeOch && HisWholeOch<=MaxOch) ViProigrali(); else if (HisWholeOch>MaxOch)

lbHisWholeOch->Font->Color=clRed;

ViViigrali();

else if(IsYaFixed && HisWholeOch<=MyWholeOch) ChangeInterfacePerehodHoda(0); else ChangeInterfacePerehodHoda(1); else if (MasPriem[0]==2) //niia?iee caoeene?iaae IsHeFixed=true; lbHisWholeOch->Font->Color=clRed;

shapeFixed->Brush->Color=0x000000CE;

if(!IsServer)

NomHoda++;

enum TypeDannihForTabl DannieForTabl;

DannieForTabl=hefixed;

ZapolnTabl(DannieForTabl);

if(IsYaFixed && MyWholeOch==HisWholeOch)

Nichia();

else if(MyWholeOch>HisWholeOch)

ViViigrali();

else

ChangeInterfacePerehodHoda(1);

else if (MasPriem[0]==3) //niia?iee ?aci?aae niaaeeiaiea

IsVisitApplicationBox=true;

Application->MessageBoxA(“Aao niia?iee ?aci?aae niaaeeiaiea.nEa?a
ieii/aia.”,”?ac?ua niaaeeiaiey”,MB_OK);

switch(choosenProt)

case 0:

IPXCloseConnection();

break;

case 1:

TCPIPCloseConnection();

break;

case 2:

NetBiosCloseConnection();

break;

case 3:

MailSlotCloseConnection();

break;

case 4:

PipeCloseConnection();

break;

for (int i=0;i<KolKub;i++) delete Kubiki1[i]; delete Kubiki2[i]; IsIgrayut=false; InterfaceBezIgri(); IsVisitApplicationBox=false; delete [] MasPriem; //—————-i?ioeaaeo?a caiieiaiey oaaeeoeu———————————- void __fastcall TMainForm::ZapolnTabl(enum TypeDannihForTabl DannieForTabl) if(IsServer) if(DannieForTabl==yabrosil) listboxOchki->Items->Add(” “+IntToStr(NomHoda)+”;
“+IntToStr(MyCurOch));

listboxOchki->TopIndex=NomHoda-1;

if(NomHoda==9)

listboxOchki->Width=236;

listboxOchki->Left=14;

else if (DannieForTabl==yafixed)

listboxOchki->Items->Add(” “+IntToStr(NomHoda)+”;
0″);

listboxOchki->TopIndex=NomHoda-1;

if(NomHoda==9)

listboxOchki->Width=236;

listboxOchki->Left=14;

else if (DannieForTabl==hebrosil)

listboxOchki->SetItemPart(NomHoda-1,2,”
“+IntToStr(MasPriem[1]));

listboxOchki->TopIndex=NomHoda-1;

else

listboxOchki->SetItemPart(NomHoda-1,2,” 0″);

listboxOchki->TopIndex=NomHoda-1;

else

if(DannieForTabl==yabrosil)

listboxOchki->SetItemPart(NomHoda-1,1,”
“+IntToStr(MyCurOch));

listboxOchki->TopIndex=NomHoda-1;

else if (DannieForTabl==yafixed)

listboxOchki->SetItemPart(NomHoda-1,1,” 0″);

listboxOchki->TopIndex=NomHoda-1;

else if (DannieForTabl==hebrosil)

listboxOchki->Items->Add(” “+ IntToStr(NomHoda)+”;;
“+IntToStr(MasPriem[1]));

listboxOchki->TopIndex=NomHoda-1;

if(NomHoda==9)

listboxOchki->Width=236;

listboxOchki->Left=14;

else

listboxOchki->Items->Add(” “+ IntToStr(NomHoda)+”;;
0″);

listboxOchki->TopIndex=NomHoda-1;

if(NomHoda==9)

listboxOchki->Width=236;

listboxOchki->Left=14;

//——————————?acoeueoaou—————————–
———

void __fastcall TMainForm::ViProigrali(void)

IsVisitApplicationBox=true;

HisWinPoPartiam++;

Application->MessageBoxA(“Au i?iea?aee!nEa?aai
aeaeueoa!”,”Ii?aaeaiea”,MB_OK+MB_ICONEXCLAMATION);

InterfaceIgraemDalshe();

IsVisitApplicationBox=false;

//———————————

void __fastcall TMainForm::ViViigrali(void)

IsVisitApplicationBox=true;

MyWinPoPartiam++;

Application->MessageBoxA(“Au auea?aee!nEa?aai
aeaeueoa!”,”Iiaaaea!!”,MB_OK+MB_ICONEXCLAMATION);

InterfaceIgraemDalshe();

IsVisitApplicationBox=false;

//———————————-

void __fastcall TMainForm::Nichia(void)

IsVisitApplicationBox=true;

MyWinPoPartiam++;

HisWinPoPartiam++;

Application->MessageBoxA(“Au nua?aee aie/ueth!nEa?aai
aeaeueoa!”,”Ie/uey”,MB_OK+MB_ICONEXCLAMATION);

InterfaceIgraemDalshe();

IsVisitApplicationBox=false;

//———————————————————————-
——

void __fastcall TMainForm::menuOProgrClick(TObject *Sender)

FormAbout->ShowModal();

//—————————-Eioa?oaenu——————————–
——-

void __fastcall TMainForm::InterfaceBezIgri(void)

MyWholeOch=0;

HisWholeOch=0;

MyCurOch=0;

NomHoda=0;

IsYaFixed=false;

IsHeFixed=false;

NomPartia=0;

MyWinPoPartiam=0;

HisWinPoPartiam=0;

ServerHostName=””;

ServerHostIP=””;

IsIgrayut=false;

menuStop->Enabled=false;

panParam->Visible=false;

lbNomPartia->Visible=false;

panSchetPoPartiam->Visible=false;

gbPole1->Top=15;

gbPole2->Top=15;

gbTabl->Top=15;

this->Height=400;

this->Caption=”Ea?iaia iiea”;

btBrosit->Enabled=false;

btFix->Enabled=false;

btBrosit->Color=clCream;

btFix->Color=clCream;

shapeBrosil->Brush->Color=clSilver;

shapeFixed->Brush->Color=clSilver;

shapeBrosil->Caption->Font->Color=clWhite;

shapeFixed->Caption->Font->Color=clWhite;

lbMyWholeOch->Caption=”0″;

lbHisWholeOch->Caption=”0″;

lbMaxOch2->Caption=””;

listboxOchki->Clear();

listboxOchki->Width=218;

listboxOchki->Left=23;

AnsiString tmp=AnsiQuotedStr(“Ea?a->Ia/aoue iiaoth ea?o”,'”‘);

lbStat->Caption=”Aeey ia/aea iiaie ea?u auaa?aoa ioieo iaith “+tmp;

//————————————————————–

void __fastcall TMainForm::InterfaceBeginNewGame(void)

menuStop->Enabled=true;

if(IsServer)

Caption=Caption+” Na?aa?”;

imStolServer->Parent=panPole1;

imStolClient->Parent=panPole2;

else

Caption=Caption+” Eeeaio”;

imStolClient->Parent=panPole1;

imStolServer->Parent=panPole2;

for (int i=0;i<KolKub;i++) Kubiki1[i] = new TImage(this); Kubiki1[i]->Parent=panPole1;

Kubiki1[i]->Transparent=true;

Kubiki2[i] = new TImage(this);

Kubiki2[i]->Parent=panPole2;

Kubiki2[i]->Transparent=true;

panParam->Visible=true;

lbNomPartia->Visible=true;

panSchetPoPartiam->Visible=true;

gbPole1->Top=80;

gbTabl->Top=80;

gbPole2->Top=80;

this->Height=470;

lbKolKub->Caption=IntToStr(KolKub);

lbMaxOch->Caption=IntToStr(MaxOch);

lbMaxOch2->Caption=IntToStr(MaxOch);

lbNomPartia->Caption=”Ia?oey ? 1″;

lbSchetPoPartiam->Caption=”0 : 0″;

NomPartia=1;

IsIgrayut=true;

//———————————————————

void __fastcall TMainForm::ChangeInterfacePerehodHoda(bool HozhuYa)

if(HozhuYa)

btBrosit->Enabled=true;

btFix->Enabled=true;

btBrosit->Color=clCream;

btFix->Color=clCream;

shapeBrosil->Caption->Font->Color=clWhite;

shapeFixed->Caption->Font->Color=clWhite;

lbStat->Caption=”Oaie oiae…”;

if (MyWholeOch>MaxOch-KolKub)

IsVisitApplicationBox=true;

Application->MessageBoxA(“Aaeeinoaaiii aa?iue aa?eaio aeey Aan
nae/an – caoeene?iaaoue
i/ee!”,”I?aaeoi?aaeaeaiea”,MB_OK+MB_ICONEXCLAMATION);

IsVisitApplicationBox=false;

else

btBrosit->Enabled=false;

btFix->Enabled=false;

shapeBrosil->Brush->Color=clSilver;

shapeFixed->Brush->Color=clSilver;

shapeBrosil->Caption->Font->Color=clBlack;

shapeFixed->Caption->Font->Color=clBlack;

lbStat->Caption=”Oiae niia?ieea…”;

//———————————————————————
—–

void __fastcall TMainForm::InterfaceIgraemDalshe(void)

NomPartia++;

MyWholeOch=0;

HisWholeOch=0;

MyCurOch=0;

NomHoda=0;

IsYaFixed=false;

IsHeFixed=false;

IsIgrayut=true;

lbNomPartia->Caption=”Ia?oey ? “+IntToStr(NomPartia);

lbSchetPoPartiam->Caption=IntToStr(MyWinPoPartiam)+” :
“+IntToStr(HisWinPoPartiam);

listboxOchki->Clear();

listboxOchki->Width=218;

listboxOchki->Left=23;

lbMyWholeOch->Caption=”0″;

lbHisWholeOch->Caption=”0”;

lbMyWholeOch->Font->Color=clGreen;

lbHisWholeOch->Font->Color=clGreen;

btBrosit->Color=clCream;

btFix->Color=clCream;

shapeBrosil->Brush->Color=clSilver;

shapeFixed->Brush->Color=clSilver;

for (int i=0;i<KolKub;i++) Kubiki1[i]->Visible=false;

Kubiki2[i]->Visible=false;

if(IsServer)

ChangeInterfacePerehodHoda(1);

else

ChangeInterfacePerehodHoda(0);

//———————–Caaa?oaiea
ea?u—————————————

void __fastcall TMainForm::menuStopClick(TObject *Sender)

IsVisitApplicationBox=true;

if(Application->MessageBoxA(“Au aeaenoaeoaeueii oioeoa caaa?oeoue
ea?o?”,”Caaa?oaiea ea?u”,MB_YESNO)==IDYES)

for (int i=0;i<KolKub;i++)

delete Kubiki1[i];

delete Kubiki2[i];

switch(choosenProt)

case 0:

IPXSend(“3;”);

IPXCloseConnection();

break;

case 1:

TCPIPSend(“3;”);

TCPIPCloseConnection();

break;

case 2:

NetBiosSend(“3;”);

NetBiosCloseConnection();

break;

case 3:

MailSlotSend(“3;”);

MailSlotCloseConnection();

break;

case 4:

PipeSend(“3;”);

PipeCloseConnection();

break;

IsIgrayut=false;

InterfaceBezIgri();

IsVisitApplicationBox=false;

//———————————————————————-
—–

void __fastcall TMainForm::menuQuitClick(TObject *Sender)

Close();

//———————————————————————-
—–

void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool
&CanClose)

if (IsIgrayut)

menuStopClick(this);

if(IsIgrayut) CanClose=false;

//——————-neoaeaaiua ooieoeee i?aia?aciaaiey
oeiia———————

char* __fastcall TMainForm::DannieToChar(int Type, int MyCurOch, int
MyWholeOch,

int ZnachKub1,int XKub1,int YKub1,

int ZnachKub2,int XKub2,int YKub2,

int ZnachKub3,int XKub3,int YKub3,

int ZnachKub4,int XKub4,int YKub4

)

AnsiString
strTmp=IntToStr(Type)+”;”+IntToStr(MyCurOch)+”;”+IntToStr(MyWholeOch)+”;
“+

IntToStr(ZnachKub1)+”;”+IntToStr(XKub1)+”;”+IntToStr(YKub1)+”;”+

IntToStr(ZnachKub2)+”;”+IntToStr(XKub2)+”;”+IntToStr(YKub2)+”;”+

IntToStr(ZnachKub3)+”;”+IntToStr(XKub3)+”;”+IntToStr(YKub3)+”;”+

IntToStr(ZnachKub4)+”;”+IntToStr(XKub4)+”;”+IntToStr(YKub4)+”;”;

return strTmp.c_str();

//———————————————————————-
—–

int* __fastcall TMainForm::CharToMas(char* charPriem)

AnsiString strPriem=charPriem;

MasPriem=new int[15];

int y=0;

int PrevDelim=0;

int CurDelim;

for(int i=1;i<=strPriem.Length();i++) if(IsDelimiter(“;”,strPriem,i)) MasPriem[y++]=StrToInt(MidStr(strPriem,PrevDelim+1,i-PrevDelim-1)); PrevDelim=i; return MasPriem; //A?ineoue————————————————————– ————- //Caeiai/eoue———————————————————– ————— void __fastcall TMainForm::btBrosit2Click(TObject *Sender) Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap(); char strSend[70]; AnsiString strCat; if(IsServer) NomHoda++; strCat=””; else strCat=”_2″; if(KolKub==1) int ZnachKub, XKub, YKub ; randomize(); ZnachKub = random(6)+1; XKub=random(126)+14; YKub=random(126)+14; Bitmap1->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(ZnachKub)+strCat);

Kubiki1[0]->Picture->Bitmap=Bitmap1;

Kubiki1[0]->Left=XKub;

Kubiki1[0]->Top=YKub;

Kubiki1[0]->Visible=true;

MyCurOch=ZnachKub;

MyWholeOch=MyWholeOch+MyCurOch;

strcpy(strSend,DannieToChar(1, MyCurOch, MyWholeOch, ZnachKub, XKub,
YKub));

else if (KolKub==2)

int ZnachKub1, XKub1, YKub1, ZnachKub2, XKub2, YKub2;

randomize();

ZnachKub1 = random(6)+1;

XKub1=random(126)+14;

YKub1=random(52)+14;

Bitmap1->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(ZnachKub1)+strCat);

Kubiki1[0]->Picture->Bitmap=Bitmap1;

Kubiki1[0]->Left=XKub1;

Kubiki1[0]->Top=YKub1;

Kubiki1[0]->Visible=true;

ZnachKub2 = random(6)+1;

XKub2=random(126)+14;

YKub2=random(52)+88;

Bitmap1->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(ZnachKub2)+strCat);

Kubiki1[1]->Picture->Bitmap=Bitmap1;

Kubiki1[1]->Left=XKub2;

Kubiki1[1]->Top=YKub2;

Kubiki1[1]->Visible=true;

MyCurOch=ZnachKub1+ZnachKub2;

MyWholeOch=MyWholeOch+MyCurOch;

strcpy(strSend,DannieToChar(1, MyCurOch, MyWholeOch, ZnachKub1, XKub1,
YKub1, ZnachKub2, XKub2, YKub2));

else if (KolKub==3)

int ZnachKub1, XKub1, YKub1, ZnachKub2, XKub2, YKub2, ZnachKub3,
XKub3, YKub3;

randomize();

ZnachKub1 = random(6)+1;

XKub1=random(126)+14;

YKub1=random(27)+14;

Bitmap1->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(ZnachKub1)+strCat);

Kubiki1[0]->Picture->Bitmap=Bitmap1;

Kubiki1[0]->Left=XKub1;

Kubiki1[0]->Top=YKub1;

Kubiki1[0]->Visible=true;

ZnachKub2 = random(6)+1;

XKub2=random(126)+14;

YKub2=random(27)+63;

Bitmap1->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(ZnachKub2)+strCat);

Kubiki1[1]->Picture->Bitmap=Bitmap1;

Kubiki1[1]->Left=XKub2;

Kubiki1[1]->Top=YKub2;

Kubiki1[1]->Visible=true;

ZnachKub3 = random(6)+1;

XKub3=random(126)+14;

YKub3=random(28)+112;

Bitmap1->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(ZnachKub3)+strCat);

Kubiki1[2]->Picture->Bitmap=Bitmap1;

Kubiki1[2]->Left=XKub3;

Kubiki1[2]->Top=YKub3;

Kubiki1[2]->Visible=true;

MyCurOch=ZnachKub1+ZnachKub2+ZnachKub3;

MyWholeOch=MyWholeOch+MyCurOch;

strcpy(strSend,DannieToChar(1, MyCurOch, MyWholeOch, ZnachKub1, XKub1,
YKub1, ZnachKub2, XKub2, YKub2, ZnachKub3, XKub3, YKub3));

else

int ZnachKub1, XKub1, YKub1, ZnachKub2, XKub2, YKub2, ZnachKub3,
XKub3, YKub3, ZnachKub4, XKub4, YKub4;

randomize();

ZnachKub1 = random(6)+1;

XKub1=random(52)+14;

YKub1=random(52)+14;

Bitmap1->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(ZnachKub1)+strCat);

Kubiki1[0]->Picture->Bitmap=Bitmap1;

Kubiki1[0]->Left=XKub1;

Kubiki1[0]->Top=YKub1;

Kubiki1[0]->Visible=true;

ZnachKub2 = random(6)+1;

XKub2=random(52)+88;

YKub2=random(52)+14;

Bitmap1->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(ZnachKub2)+strCat);

Kubiki1[1]->Picture->Bitmap=Bitmap1;

Kubiki1[1]->Left=XKub2;

Kubiki1[1]->Top=YKub2;

Kubiki1[1]->Visible=true;

ZnachKub3 = random(6)+1;

XKub3=random(52)+14;

YKub3=random(52)+88;

Bitmap1->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(ZnachKub3)+strCat);

Kubiki1[2]->Picture->Bitmap=Bitmap1;

Kubiki1[2]->Left=XKub3;

Kubiki1[2]->Top=YKub3;

Kubiki1[2]->Visible=true;

ZnachKub4 = random(6)+1;

XKub4=random(52)+88;

YKub4=random(52)+88;

Bitmap1->LoadFromResourceName((unsigned
int)HInstance,”KUB”+IntToStr(ZnachKub4)+strCat);

Kubiki1[3]->Picture->Bitmap=Bitmap1;

Kubiki1[3]->Left=XKub4;

Kubiki1[3]->Top=YKub4;

Kubiki1[3]->Visible=true;

MyCurOch=ZnachKub1+ZnachKub2+ZnachKub3+ZnachKub4;

MyWholeOch=MyWholeOch+MyCurOch;

strcpy(strSend,DannieToChar(1, MyCurOch, MyWholeOch, ZnachKub1, XKub1,
YKub1, ZnachKub2, XKub2, YKub2,ZnachKub3, XKub3, YKub3, ZnachKub4,
XKub4, YKub4));

switch(choosenProt)

case 0:

IPXSend(strSend);

break;

case 1:

TCPIPSend(AnsiString(strSend));

break;

case 2:

NetBiosSend(strSend);

break;

case 3:

MailSlotSend(strSend);

break;

case 4:

PipeSend(strSend);

break;

enum TypeDannihForTabl DannieForTabl;

DannieForTabl=yabrosil;

ZapolnTabl(DannieForTabl);

lbMyWholeOch->Caption=MyWholeOch;

if (MyWholeOch>MaxOch)

lbMyWholeOch->Font->Color=clRed;

ViProigrali();

else if(IsHeFixed && MyWholeOch>HisWholeOch && MyWholeOch<=MaxOch)

ViViigrali();

else if(IsHeFixed && MyWholeOch<=HisWholeOch) ChangeInterfacePerehodHoda(1); else ChangeInterfacePerehodHoda(0); delete Bitmap1; //———————————————————————- —– void __fastcall TMainForm::btFix2Click(TObject *Sender) IsYaFixed=true; if(IsServer) NomHoda++; btFix->Color=clRed;

btBrosit->Color=clCream;

lbMyWholeOch->Font->Color=clRed;

switch(choosenProt)

case 0:

IPXSend(“2;”);

break;

case 1:

TCPIPSend(“2;”);

break;

case 2:

NetBiosSend(“2;”);

break;

case 3:

MailSlotSend(“2;”);

break;

case 4:

PipeSend(“2;”);

break;

enum TypeDannihForTabl DannieForTabl;

DannieForTabl=yafixed;

ZapolnTabl(DannieForTabl);

if(IsHeFixed && MyWholeOch==HisWholeOch)

Nichia();

else if(MyWholeOch<HisWholeOch)

ViProigrali();

else

ChangeInterfacePerehodHoda(0);

//———————————————————————-
—–

Ipx.cpp

//———————————————————————-
—–

#pragma hdrstop

#include

#include

#include “IPX.h”

#include “Main.h”

#include “Podkluch.h”

//———————————————————————-
—–

#pragma package(smart_init)

#define IPX_SERVER_SOCKET 0x4504

#define IPX_CLIENT_SOCKET 0x4514

#define WSA_NETEVENT (WM_USER+2)

SOCKET IPXSocket;

sockaddr_ipx CallAddress;

sockaddr_ipx OurAddress;

extern bool IsServer;

extern int KolKub;

extern int MaxOch;

//———————–Iiaeeeth/aiea———————————-
———-

void __fastcall TMainForm::IPXConnect(void)

WSADATA WSAData;

int rc, OptVal=1;

rc = WSAStartup(MAKEWORD(2,0), &WSAData);

if (rc != 0)

Application->MessageBox(“Ioeaea eieoeeaeecaoeee
WSAStartup”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

IPXSocket = socket(AF_IPX, SOCK_DGRAM, NSPROTO_IPX);

if (IPXSocket == INVALID_SOCKET)

Application->MessageBox(“I?ioieie IPX ia
onoaiiaeai”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

memset(&OurAddress, 0, sizeof(OurAddress));

OurAddress.sa_family = AF_IPX;

if(IsServer)

OurAddress.sa_socket = htons((unsigned
short)(IPX_SERVER_SOCKET));

else

OurAddress.sa_socket = htons((unsigned
short)(IPX_CLIENT_SOCKET));

if (bind(IPXSocket, (LPSOCKADDR)&OurAddress, sizeof(sockaddr_ipx))
== SOCKET_ERROR)

Application->MessageBox(“Aae?aniay ioeaea
IPX”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(IPXSocket);

IPXSocket = INVALID_SOCKET;

Application->Terminate();

rc = setsockopt(IPXSocket, SOL_SOCKET, SO_BROADCAST, (char
*)&OptVal, sizeof(OptVal));

if (rc == SOCKET_ERROR)

rc = WSAGetLastError();

Application->MessageBox(“Ioeaea
setsockopt”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(IPXSocket);

IPXSocket = INVALID_SOCKET;

Application->Terminate();

if(!IsServer)

memset(&CallAddress, 0, sizeof(CallAddress));

CallAddress.sa_family = AF_IPX;

CallAddress.sa_socket = htons(IPX_SERVER_SOCKET);

CallAddress.sa_nodenum[0] = 0xff;

CallAddress.sa_nodenum[1] = 0xff;

CallAddress.sa_nodenum[2] = 0xff;

CallAddress.sa_nodenum[3] = 0xff;

CallAddress.sa_nodenum[4] = 0xff;

CallAddress.sa_nodenum[5] = 0xff;

rc = sendto(IPXSocket, “connect”, 8, 0, (PSOCKADDR)&CallAddress,
sizeof(SOCKADDR));

if (rc == SOCKET_ERROR)

rc = WSAGetLastError();

Application->MessageBox(“Ioeaea sendto
IPX”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(IPXSocket);

IPXSocket = INVALID_SOCKET;

Application->Terminate();

rc = WSAAsyncSelect(IPXSocket, Handle, WSA_NETEVENT, FD_READ);

if (rc != 0)

Application->MessageBox(“Ioeaea
WSAAsyncSelect”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(IPXSocket);

IPXSocket = INVALID_SOCKET;

Application->Terminate();

WindowProc = IPXWndProc;

//——————————i?eai———————————–
—-

void __fastcall TMainForm::IPXWndProc(Messages::TMessage &Message)

int rc, l=sizeof(CallAddress);

char Buf[80];

if (Message.Msg == WSA_NETEVENT)

if (Message.LParam == FD_READ)

rc = recvfrom((SOCKET)Message.WParam, Buf, sizeof(Buf)-1, 0,
(PSOCKADDR)&CallAddress, &l);

if (rc == SOCKET_ERROR)

rc = WSAGetLastError();

Application->MessageBox(“Ioeaea recvfrom
IPX”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(IPXSocket);

IPXSocket = INVALID_SOCKET;

Application->Terminate();

if (rc >= 1)

if(!strcmp(Buf,”connect”))

char *strPered=DannieToChar(0,KolKub,MaxOch);

IPXSend(strPered);

InterfaceBeginNewGame();

ChangeInterfacePerehodHoda(1);

else

if(IsVisitApplicationBox) return;

Priem(CharToMas(Buf));

WndProc(Message);

//————————-ioi?aaea————————————-
——–

void __fastcall TMainForm::IPXSend (char* Buf)

int rc;

rc = sendto(IPXSocket, Buf, strlen(Buf)+1, 0,
(PSOCKADDR)&CallAddress, sizeof(SOCKADDR));

if (rc == SOCKET_ERROR)

rc = WSAGetLastError();

Application->MessageBox(“Ioeaea sendto
IPX”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(IPXSocket);

IPXSocket = INVALID_SOCKET;

Application->Terminate();

//————————-?ac?ua—————————————
——

void __fastcall TMainForm::IPXCloseConnection(void)

closesocket(IPXSocket);

WSACleanup();

TCP.cpp

//———————————————————————-
—–

#pragma hdrstop

#include “TCPIP.h”

#include “Main.h”

#include “Podkluch.h”

//———————————————————————-
—–

#pragma package(smart_init)

extern bool IsServer;

extern bool IsHostName;

extern AnsiString ServerHostName;

extern AnsiString ServerHostIP;

extern int KolKub;

extern int MaxOch;

//———-Iiaeeeth/aiea———————————————–
—-

void __fastcall TMainForm::TCPIPConnect(void)

if (IsServer==true)

ClientSocket1->Close();

ServerSocket1->Open();

else

ServerSocket1->Close();

if (IsHostName)

ClientSocket1->Host=ServerHostName;

else

ClientSocket1->Host=ServerHostIP;

ClientSocket1->Open();

//———Accept——————————————————-
——–

void __fastcall TMainForm::ServerSocket1Accept(TObject *Sender,

TCustomWinSocket *Socket)

char *strPered=DannieToChar(0,KolKub,MaxOch);

TCPIPSend(AnsiString(strPered));

InterfaceBeginNewGame();

ChangeInterfacePerehodHoda(1);

//———-Ioi?aaea—————————————————-
——–

void __fastcall TMainForm::TCPIPSend(AnsiString strSend)

if(IsServer)

ServerSocket1->Socket->Connections[0]->SendText(strSend);

else

ClientSocket1->Socket->SendText(strSend);

//————-Iieo/aiea————————————————
——–

void __fastcall TMainForm::ServerSocket1ClientRead(TObject *Sender,

TCustomWinSocket *Socket)

if(IsVisitApplicationBox) return;

AnsiString strPriem=Socket->ReceiveText();

Priem(CharToMas(strPriem.c_str()));

//———————————————————————-
—–

void __fastcall TMainForm::ServerSocket1ClientConnect(TObject *Sender,

TCustomWinSocket *Socket)

//

//———————————————————————-
—–

void __fastcall TMainForm::ClientSocket1Connect(TObject *Sender,

TCustomWinSocket *Socket)

//StatusBar1->Panels->Items[0]->Text = “Connect to: ” +
Socket->RemoteHost;

//———————————————————————-
—–

void __fastcall TMainForm::ServerSocket1Listen(TObject *Sender,

TCustomWinSocket *Socket)

//StatusBar1->Panels->Items[0]->Text=”Listening…”;

//————–?ac?ua
niaaeeiaiey——————————————-

void __fastcall TMainForm::TCPIPCloseConnection(void)

ServerSocket1->Close();

ClientSocket1->Close();

//———–Ia?aaioea
ioeaie—————————————————

void __fastcall TMainForm::ClientSocket1Error(TObject *Sender,

TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)

if(ErrorEvent==eeConnect)

ErrorCode=0;

Application->MessageBox(“Ia oaeaeinue inouanoaeoue niaaeeiaiea n
na?aa?ii.nOaaaeeoanue, /oi na?aa? iaeeaeaao cai?ina
eeeaioa.”,”Ioeaea”,MB_OK+MB_ICONHAND);

else

Application->MessageBox(“Ioeaea TCP/IP”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

void __fastcall TMainForm::ServerSocket1ClientError(TObject *Sender,

TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)

//

//———————————————————————-
——-

Netbios.cpp

//———————————————————————-
—–

#pragma hdrstop

#include

#include

#include

#include “NetBios.h”

#include “Main.h”

#include “Podkluch.h”

#define NETBIOS_SERVER_NAME “Kosti Server ”

#define NETBIOS_CLIENT_NAME “Kosti Client ”

#define WSA_ACCEPT (WM_USER + 1)

#define WSA_NETEVENT (WM_USER+2)

//———————————————————————-
—–

#pragma package(smart_init)

SOCKET NetBiosSocket;

sockaddr_nb OurAddress;

sockaddr_nb CallAddress;

extern bool IsServer;

extern int KolKub;

extern int MaxOch;

//—————————-Iiaeeeth/aiea—————————–
———-

void __fastcall TMainForm::NetBiosConnect(void)

WSADATA WSAData;

int rc;

rc = WSAStartup(MAKEWORD(2,0), &WSAData);

if (rc != 0)

Application->MessageBox(“Ioeaea eieoeeaeecaoeee
WSAStartup”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

int Lana;

for (Lana=0;Lana<1000;Lana++) NetBiosSocket = socket(AF_NETBIOS, SOCK_SEQPACKET, -Lana); if (NetBiosSocket == INVALID_SOCKET) continue; memset(&OurAddress, 0, sizeof(OurAddress)); OurAddress.snb_family = AF_NETBIOS; OurAddress.snb_type = NETBIOS_UNIQUE_NAME; if(IsServer) strcpy(OurAddress.snb_name,NETBIOS_SERVER_NAME); else strcpy(OurAddress.snb_name,NETBIOS_CLIENT_NAME); if (bind(NetBiosSocket, (LPSOCKADDR)&OurAddress, sizeof(sockaddr_nb)) == SOCKET_ERROR) closesocket(NetBiosSocket); NetBiosSocket = INVALID_SOCKET; continue; else break; if(Lana==1000) Application->MessageBox(“Ia ii?aaeaeaia
Lana”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

if(IsServer)

if(listen(NetBiosSocket, 1) == SOCKET_ERROR )

Application->MessageBox(“Listen
Error”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(NetBiosSocket);

Application->Terminate();

rc = WSAAsyncSelect(NetBiosSocket, Handle, WSA_ACCEPT,
FD_ACCEPT);

if (rc != 0)

Application->MessageBox(“Ioeaea
WSAAsyncSelect”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(NetBiosSocket);

NetBiosSocket = INVALID_SOCKET;

Application->Terminate();

else

memset(&CallAddress, 0, sizeof(CallAddress));

CallAddress.snb_family = AF_NETBIOS;

CallAddress.snb_type = NETBIOS_UNIQUE_NAME;

strcpy(CallAddress.snb_name,NETBIOS_SERVER_NAME);

if(connect(NetBiosSocket , (PSOCKADDR )&CallAddress,
sizeof(CallAddress)) < 0) Application->MessageBox(“Connect
Error”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(NetBiosSocket);

Application->Terminate();

rc = WSAAsyncSelect(NetBiosSocket, Handle, WSA_NETEVENT,
FD_READ);

if (rc != 0)

Application->MessageBox(“Ioeaea
WSAAsyncSelect”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(NetBiosSocket);

NetBiosSocket = INVALID_SOCKET;

Application->Terminate();

WindowProc = NetBiosWndProc;

//——————-I?eai e
accept———————————————

void __fastcall TMainForm::NetBiosWndProc(Messages::TMessage &Message)

int rc;

char Buf[80];

if (Message.Msg == WSA_NETEVENT)

if (Message.LParam == FD_READ)

rc = recv((SOCKET)Message.WParam, Buf, sizeof(Buf)-1, 0);

if (rc == SOCKET_ERROR)

rc = WSAGetLastError();

Application->MessageBox(“Ioeaea recv
NetBios”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(NetBiosSocket);

NetBiosSocket = INVALID_SOCKET;

Application->Terminate();

if (rc >= 1)

if(IsVisitApplicationBox) return;

Priem(CharToMas(Buf));

else if(Message.Msg == WSA_ACCEPT)

if(Message.LParam == FD_ACCEPT)

int sizeCallAddress = sizeof(CallAddress);

NetBiosSocket = accept (NetBiosSocket, (LPSOCKADDR
)&CallAddress, (int FAR *)&sizeCallAddress);

if(NetBiosSocket == INVALID_SOCKET)

Application->MessageBox(“Ioeaea
Accept”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

char *strPered=DannieToChar(0,KolKub,MaxOch);

NetBiosSend(strPered);

InterfaceBeginNewGame();

ChangeInterfacePerehodHoda(1);

rc = WSAAsyncSelect(NetBiosSocket, Handle, WSA_NETEVENT,
FD_READ);

if (rc != 0)

Application->MessageBox(“Ioeaea
WSAAsyncSelect”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(NetBiosSocket);

NetBiosSocket = INVALID_SOCKET;

Application->Terminate();

WndProc(Message);

//——————-ioi?aaea——————————————-
——–

void __fastcall TMainForm::NetBiosSend(char *Buf)

int rc;

rc = send(NetBiosSocket, Buf, strlen(Buf)+1, 0);

if (rc == SOCKET_ERROR)

rc = WSAGetLastError();

Application->MessageBox(“Ioeaea sendto
NetBios”,”Ioeaea”,MB_OK+MB_ICONHAND);

closesocket(NetBiosSocket);

NetBiosSocket = INVALID_SOCKET;

Application->Terminate();

//—————-?ac?ua————————————————
——-

void __fastcall TMainForm::NetBiosCloseConnection(void)

closesocket(NetBiosSocket);

WSACleanup();

//———————————————————————-
—–

Pipe.cpp

//———————————————————————-
—–

#pragma hdrstop

#include

#include

#include

#include “Pipe.h”

#include “Main.h”

#include “Podkluch.h”

//———————————————————————-
—–

#pragma package(smart_init)

HANDLE PipeReceiveHandle, PipeSendHandle;

extern bool IsServer;

extern AnsiString ServerHostName;

extern int KolKub;

extern int MaxOch;

//———————–iiaeeeth/aiea———————————-
———-

void __fastcall TMainForm::PipeConnect(void)

if(IsServer)

PipeReceiveHandle = CreateNamedPipe(“.pipepipe_s”,
PIPE_ACCESS_INBOUND,

PIPE_TYPE_BYTE|PIPE_NOWAIT, PIPE_UNLIMITED_INSTANCES,

1000, 1000, 5000, NULL);

if (PipeReceiveHandle == INVALID_HANDLE_VALUE)

Application->MessageBox(“Ioeaea i?e nicaeaiee pipe ia
na?aa?a”,”Ioeaea”,MB_OK+MB_ICONHAND);

TimerPipe->Enabled = false;

Application->Terminate();

TimerPipe->Enabled = true;

else

PipeReceiveHandle = CreateNamedPipe(“.pipepipe_c”,
PIPE_ACCESS_INBOUND,

PIPE_TYPE_BYTE|PIPE_NOWAIT, PIPE_UNLIMITED_INSTANCES,

1000, 1000, 5000, NULL);

if (PipeReceiveHandle == INVALID_HANDLE_VALUE)

Application->MessageBox(“Ioeaea i?e nicaeaiee pipe ia
eeeaioa”,”Ioeaea”,MB_OK+MB_ICONHAND);

TimerPipe->Enabled = false;

Application->Terminate();

TimerPipe->Enabled = true;

char Buf[100];

sprintf(Buf, “%spipepipe_s”, ServerHostName.c_str());

PipeSendHandle = CreateFile(Buf, GENERIC_WRITE, FILE_SHARE_READ,
NULL, OPEN_EXISTING, 0, NULL);

if (PipeSendHandle == INVALID_HANDLE_VALUE)

int rc;

rc=GetLastError(); //5 51

Application->MessageBox(“Ioeaea i?e iiaeeeth/aiee e pipe ia
na?aa?a”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

char CompName[50];

unsigned long cnl = 50;

GetComputerName(CompName, &cnl);

int i=StrLen(CompName);

if(i>=50)

CompName[49]=’0′;

unsigned long cbWritten;

char BufExchange[100];

strcpy(BufExchange,”connect;”);

strcat(BufExchange,CompName);

WriteFile(PipeSendHandle, BufExchange, i+9, &cbWritten, NULL);

//—————i?eai e accept————————————–

void __fastcall TMainForm::TimerPipeTimer(TObject *Sender)

int Rc;

DWORD cbRead;

DWORD cbWritten;

char Buf[100];

ConnectNamedPipe(PipeReceiveHandle, NULL);

Rc = GetLastError();

if (Rc == ERROR_PIPE_CONNECTED) //535

if (ReadFile(PipeReceiveHandle, Buf, sizeof(Buf)-1, &cbRead, NULL))

if(LeftStr(AnsiString(Buf),7)==”connect”)

char *Buftmp;

char BufConnect[150];

Buftmp=AnsiStrScan(Buf,’;’);

Buftmp++;

sprintf(BufConnect, “%spipepipe_c”, Buftmp);

PipeSendHandle = CreateFile(BufConnect, GENERIC_WRITE,
FILE_SHARE_READ, NULL,

OPEN_EXISTING, 0, NULL);

if (PipeSendHandle == INVALID_HANDLE_VALUE)

Application->MessageBox(“Ioeaea i?e iiaeeeth/aiee e pipe
ia eeeaioa”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

char *strPered=DannieToChar(0,KolKub,MaxOch);

PipeSend(strPered);

InterfaceBeginNewGame();

ChangeInterfacePerehodHoda(1);

else

if(IsVisitApplicationBox) return;

Priem(CharToMas(Buf));

//—————–ioi?aaea———————————————
——–

void __fastcall TMainForm::PipeSend (char* Buf)

unsigned long cbWritten=0;

WriteFile(PipeSendHandle, Buf, strlen(Buf)+1, &cbWritten,NULL);

//——————-?ac?ua
niaaeeiaiey—————————————–

void __fastcall TMainForm::PipeCloseConnection(void)

CloseHandle(PipeSendHandle);

CloseHandle(PipeReceiveHandle);

TimerPipe->Enabled = false;

Mailslot.cpp

//———————————————————————-
—–

#pragma hdrstop

#include

#include

#include

#include “MailSlot.h”

#include “Podkluch.h”

#include “Main.h”

//———————————————————————-
——–

#pragma package(smart_init)

HANDLE ReceiveMailslotHandle, SendMailslotHandle;

int HisPrevNomMessage=0;

int MyCurrNomMessage=0;

extern bool IsServer;

extern AnsiString ServerHostName;

extern int KolKub;

extern int MaxOch;

//———————–iiaeeeth/aiea———————————-
———-

void __fastcall TMainForm::MailSlotConnect(void)

if(IsServer)

ReceiveMailslotHandle = CreateMailslot(“.mailslotmsserver”, 0,
MAILSLOT_WAIT_FOREVER, NULL);

if (ReceiveMailslotHandle == INVALID_HANDLE_VALUE)

Application->MessageBox(“Ioeaea i?e nicaeaiee
mailslot”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

TimerMailSlot->Enabled = true;

else

ReceiveMailslotHandle = CreateMailslot(“.mailslotmsclient”, 0,
MAILSLOT_WAIT_FOREVER, NULL);

if (ReceiveMailslotHandle == INVALID_HANDLE_VALUE)

Application->MessageBox(“Ioeaea i?e nicaeaiee
mailslot”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

TimerMailSlot->Enabled = true;

char BufConnect[70];

sprintf(BufConnect, “%smailslotmsserver” , ServerHostName.c_str());

SendMailslotHandle = CreateFile(BufConnect, GENERIC_WRITE,
FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);

if (SendMailslotHandle == INVALID_HANDLE_VALUE)

Application->MessageBox(“Ioeaea i?e ioe?uoee
mailslot”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

char CompName[50];

unsigned long cnl = 50;

GetComputerName(CompName, &cnl);

int i=StrLen(CompName);

if(i>=50)

CompName[49]=’0′;

unsigned long cbWritten;

char BufExchange[50];

MyCurrNomMessage=1;

strcpy(BufExchange,”1;”);

strcat(BufExchange,CompName);

WriteFile(SendMailslotHandle,BufExchange, strlen(BufExchange)+1,
&cbWritten, NULL);

//———————–i?eai e
accept—————————————–

void __fastcall TMainForm::TimerMailSlotTimer(TObject *Sender)

if(IsVisitApplicationBox) return;

int rc;

unsigned long cbMessages, cbMsgNumber, cbRead;

char *BufExchange;

rc = GetMailslotInfo(ReceiveMailslotHandle, NULL, &cbMessages,
&cbMsgNumber, NULL);

if (!rc)

Application->MessageBox(“Ioeaea
GetMailslotInfo”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

if (cbMsgNumber == 0) return;

BufExchange = new char[cbMessages];

ZeroMemory(BufExchange, cbMessages);

if (ReadFile(ReceiveMailslotHandle, BufExchange, cbMessages, &cbRead,
NULL))

int HisCurrNomMessage;

char Buftmp[150];

strcpy(Buftmp,BufExchange);

HisCurrNomMessage=atoi(strtok(BufExchange,”;”));

if(HisCurrNomMessage>HisPrevNomMessage)

HisPrevNomMessage=HisCurrNomMessage;

char *Buf;

Buf=AnsiStrScan(Buftmp,’;’);

Buf++;

if(IsServer && HisCurrNomMessage==1)

char BufConnect[100];

sprintf(BufConnect, “%smailslotmsclient” , Buf);

SendMailslotHandle = CreateFile(BufConnect, GENERIC_WRITE,
FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);

if (SendMailslotHandle == INVALID_HANDLE_VALUE)

Application->MessageBox(“Ioeaea i?e ioe?uoee
mailslot”,”Ioeaea”,MB_OK+MB_ICONHAND);

Application->Terminate();

char *strPered=DannieToChar(0,KolKub,MaxOch);

MailSlotSend(strPered);

InterfaceBeginNewGame();

ChangeInterfacePerehodHoda(1);

else

Priem(CharToMas(Buf));

delete [] BufExchange;

//————————ioi?aaea————————————–
——–

void __fastcall TMainForm::MailSlotSend(char *Buf)

unsigned long cbWritten;

char BufExchange[100];

MyCurrNomMessage++;

itoa(MyCurrNomMessage,BufExchange,10);

strcat(BufExchange,”;”);

strcat(BufExchange,Buf);

WriteFile(SendMailslotHandle, BufExchange, strlen(BufExchange)+1,
&cbWritten, NULL);

//———————-?ac?ua
niaaeeiaiey—————————————

void __fastcall TMainForm::MailSlotCloseConnection(void)

CloseHandle(SendMailslotHandle);

CloseHandle(ReceiveMailslotHandle);

TimerMailSlot->Enabled = false;

MyCurrNomMessage=0;

HisPrevNomMessage=0;

Нашли опечатку? Выделите и нажмите CTRL+Enter

Похожие документы
Обсуждение

Оставить комментарий

avatar
  Подписаться  
Уведомление о
Заказать реферат
UkrReferat.com. Всі права захищені. 2000-2019