#Convoy builder P.Rendell 19/11/2010
#Builds the Turing Machine stack constructor from a list of gliders

from glife.base import *
from operator import itemgetter
import time

rule("b3/s23")

#-----------------------------------------------------------   
p360kickback = pattern("""
116b2o$112b4ob2o$112b6o$113b4o27bo$142bo3bo$112b3o32bo$112bobo27bo4bo$
112bo2bo27b5o$113b2o$141bobo$140bo2bo$137b2o2bobo$116b4o17b2o2b2o$115b
6o20b2ob5o$115b4ob2o26bo$119b2o14b2o4bo6bo$134bobo5b2o3bo$136bo16b2o$
78bo50b2o20b2ob2o$76bo3bo44b4ob2o19b4o$81bo43b6o21b2o$76bo4bo44b4o$77b
5o$141bo2bo21b4o$93bo46bo4bo9bo9bo3bo$94b2o24b2o17bo5bo10b2o11bo$93b2o
23b2ob2o15bo3b2obo7b3o5b2o2bo2bo$118b4o17bo12b3o6b3o$119b2o20bo11b3o5b
2o2bo2bo$136bo3bo15b2o11bo$107b2o25b7o14bo9bo3bo$101b3o3b2o9bo14bobo2b
3o25b4o$101b3o14b2o12b2o5bo2bobo$100bo3bo12bob2o12b2o5bo2b2o$100b4o13b
obo14b2o17b5o$101b3o13b2o19bo13bo4bo$90b5o42b2o18bo$89bo4bo57bo3bo$94b
o14bo2bo34b2o5bo$89bo3bo19bo6b2o23b2ob2o$91bo17bo3bo4b2ob2o22b4o$110b
4o4b4o24b2o5b2o5bo2bo$119b2o31b4o8bo$152b2ob2o3bo3bo$154b2o5b4o3$132bo
2bo8bo$136bo5bo2bo13b2o$132bo3bo5bo3bo11b2ob2o$133b4o5bo3bo12bo2bo$
120b2o20bo3bo12bo2bo$118bo4bo19bobo3b2o9b2o$124bo19bo4b2o$118bo5bo$
119b6o35bo2bo$164bo$160bo3bo$135b2o24b4o$134bobo15b2o$136bo13b2ob2o$
150b4o$151b2o3$165b4o$164bo3bo$141b3obo14bo7bo$141b2o2b2o8b7o2bo2bo$
147bo6bo2b3ob2o$142b2o2bo8b7o2bo2bo$142bo17bo7bo$118bo18b2o2bo22bo3bo$
94b2o23b2o15bobo26b4o$92bo4bo20b2o15b2o2b5o$98bo37b2o5b2o$92bo5bo38bo
4b2o8b5o$93b6o39b5o8bo4bo$139b4o13bo$119bo20bo10bo3bo$119bo4b2o20b2o5b
o$118b2o2b2ob2o17b2ob2o$118b3ob4o18b4o$114b2obo3b4o20b2o$114b5obo$117b
2ob2o$119bo$119b2ob2o$120b5o$120b3ob2o$123b2o23$b2o$2o$2bo!
""")
p360kickback = p360kickback(0,-113)

p360boatpairA = pattern("""
5$456b2o5b4o$454b2ob2o3bo3bo$454b4o8bo$455b2o5bo2bo2$461bo$435b4o17bo
3bo2bo$434bo3bo16b2o7bo$438bo17b2o6bo$434bo2bo19b2o4b2o$441bobo18bo$
421b6o14bo2bo14b2o$420bo5bo$426bo15b3o$420bo4bo8b3o26b4o$422b2o12bo25b
o3bo$435bo17b2o11bo$452b4o6bo2bo$452b2ob2o$454b2o3$466bo2bo$443b3o24bo
$445bo7b2o11bo3bo$444bo10bo11b4o$450bo7b2o2b3o$449bo8b2o2b3o$437bo12bo
7b2o2b3o$436bobo16bo11b4o$429bo23b2o11bo3bo$428b2o3bo36bo$427bo2bobobo
20bo10bo2bo$395b6o27b2o23bo3bo$394bo5bo31bo25bo$400bo52bo4bo$394bo4bo
54b5o$396b2o27b2o20b2o$421b7o18b4o$405bo14bob4ob2o17b2ob2o$405bo16bo3b
2o20b2o$405bo11b2o$417b2o2b2o$421b3o$421b2o2$425b2o$409b4o9b3ob2o$408b
6o8b5o$408b4ob2o8b3o$412b2o3$439b5o$414bo23bo4bo$413b2o28bo$413bobo21b
o4bo$440bo$413bo19bo4b2o$432bo5bo2bo$432bo10bo$415b2o18bo2bo5bo$411b4o
b2o21b2o3bo$411b6o20b2o2b4o$412b4o32b2o$422b4o6b3o12b4o$421b6o7bo12b2o
b2o$421b4ob2o5bo15b2o$373b5o47b2o$372bo4bo67bo$377bo66bobo14bo2bo$372b
o3bo13bobo53bo18bo$374bo16b2o22b2o27bo4bo11bo3bo$391bo22b4o22bo8bo12b
4o$414b2ob2o21b3obo8b2o2b3o$393bo22b2o22bo2b2o8b2o2b3o$392b2o49b2o8b2o
2b3o$439b2o8bo12b4o$391b2o43bob3o8bo11bo3bo$413b2o20b2ob2o25bo$407b3o
3bobo18b2o4bo9bo10bo2bo$404b3o6bob2o18b2o3b2o6bo3bo$387bo16bo9b2o20b5o
12bo$385bo3bo14b3o7bo22b3o8bo4bo$390bo47bo10b5o$385bo4bo51b2o$386b5o
24b2o24b4o$406b4o4b4o23b2ob2o$267bo137bo3bo4b2ob2o24b2o$267bobo139bo6b
2o$267b2o136bo2bo42b2o5b4o$449b2ob2o3bo3bo$449b4o8bo$450b2o5bo2bo2$
455b2o$430b4o5bob2o11b5o$429bo3bo3bo5bo10bo4bo$433bo9bo10b3o2bo$429bo
2bo4bo5bo11bo2b2o$438bo3bo2b2o9b2o$416b6o4b3o10b3o3b2o$415bo5bo6bo$
421bo5bo$415bo4bo37b4o$417b2o38bo3bo$448b2o11bo$447b4o6bo2bo$447b2ob2o
$449b2o$435b3o$437bo$436bo24bo2bo$465bo$446b4o11bo3bo$445b3o2bo11b4o$
444b3o6b2o2b3o$447bo5b2o2b3o$453b2o2b3o$444bob2o2bo11b4o$443bob2ob2o
11bo3bo$443b2o20bo$450bo10bo2bo$390b6o52bo3bo$389bo5bo57bo$336bobo56bo
52bo4bo$337b2o50bo4bo14bobo37b5o$337bo53b2o17b2o8b2o20b2o$410bo5b7o18b
4o$415bob4ob2o17b2ob2o$417bo3b2o20b2o2$410b2o4b2o$416b3o$416b2o2$420b
2o$417b3ob2o$417b5o$418b3o19b4o$439b6o$439b4ob2o$443b2o3$6bo433bo29b5o
$5b2o434b2o26bo4bo$5bobo432bo2bo30bo$441b2o25bo4bo$471bo$2b3o461bo2b2o
$2bo462bo3bo2bo$3bo462bo7bo$446b2o18bo2bo5bo$442b4ob2o21b2o3bo$442b6o
20b2o2b4o$443b4o15b3o14b2o$453b4o7bo13b4o$452b6o5bo14b2ob2o$452b4ob2o
21b2o$404b5o47b2o$403bo4bo$408bo83bo2bo$403bo3bo88bo$405bo14bobo23b2o
21b4o11bo7bo3bo$196b2o223b2o22b4o19bo4bo8b3o3bo4b4o$196bobo222bo23b2ob
2o17b2o5bo7b2o5b2o$198bo225bo22b2o19bo3bo8bo6b3o$198b2o223b2o57b2o5b2o
$468bobo11b3o3bo4b4o$422b2o39b3o3bo14bo7bo3bo$444b2o16b2o3b4o25bo$438b
3o3bobo14b2o4b5o9bo10bo2bo$435b3o6bob2o14bo6bob2o6bo3bo$418bo16bo9b2o
16bo3bo16bo$416bo3bo14b3o7bo19bo13bo4bo$421bo43bo14b5o$416bo4bo44bo6b
2o$417b5o24b2o24b4o$437b4o4b4o23b2ob2o$436bo3bo4b2ob2o24b2o$440bo6b2o$
402bobo31bo2bo41b2o5b4o$403b2o74b2ob2o3bo3bo$403bo75b4o8bo$480b2o5bo2b
o2$478bo$460b4o13b2o8b2o$459bo3bo12bo9bo2bo$463bo13b5o4bo2bo$459bo2bo
15b4o3b2ob2o$481bo4b2o$446b6o$445bo5bo12bobo$451bo13b2o$445bo4bo14b2o
21b4o$447b2o38bo3bo$478b2o11bo$462b3o12b4o6bo2bo$464bo12b2ob2o$463bo
15b2o2$475bo$474bobo14bo2bo$476bo18bo$474bo4bo11bo3bo$470bo8bo12b4o$
470b3obo8b2o2b3o$470bo2b2o8b2o2b3o$473b2o8b2o2b3o$469b2o8bo12b4o$466bo
b3o8bo11bo3bo$465b2ob2o25bo$464b2o4bo9bo10bo2bo$420b6o39b2o3b2o6bo3bo$
419bo5bo40b5o12bo$425bo41b3o8bo4bo$419bo4bo43bo10b5o$421b2o27b2o20b2o$
446b7o18b4o$445bob4ob2o17b2ob2o$447bo3b2o20b2o$442b2o$442b2o2b2o$446b
3o$446b2o2$450b2o$447b3ob2o$447b5o$448b3o4$276bo$275b2o$275bobo!

""")
p360boatpairA = p360boatpairA[2](-4,-150)


#------------------------------------------------------------------------
stackbase = pattern("""
1337b2o$1337bo$1328bo6bobo$1328bobo4b2o8bo$1329bobo13b3o$1329bo2bo15bo
$1329bobo15b2o$1317b2o9bobo$1316bobo9bo$1316bo20b2o$1315b2o20bobo$
1337bo$1347b2o3b2o$1347bo5bo2$1348bo3bo$1349b3o$1344b3o$1322bo21bo$
1320b2o23bo$1321b2o13b2o$1336bo$1334bobo15b2o$1334b2o16bo$1353b3o$
1355bo8$1307bo$1305b2o$1306b2o5$1328bo$1298bobo27b2o$1298b2o27bobo$
1299bo5$1292bo27b2o$1290b2o29b2o$1291b2o13b2o12bo$1306bo$1304bobo$
1304b2o10$1277bo$1275b2o$1276b2o5$1298bo$1268bobo27b2o$1268b2o27bobo$
1269bo5$1262bo$1260b2o$1261b2o13b2o$1276bo$1274bobo$1274b2o10$1247bo
27b2o$1245b2o29b2o$1246b2o27bo5$1268bo$1238bobo27b2o$1238b2o27bobo$
1239bo5$1232bo$1230b2o$1231b2o13b2o$1246bo$1244bobo$1244b2o2$1253bo$
1223bobo27b2o$1223b2o27bobo$1224bo5$1217bo27b2o$1215b2o29b2o$1216b2o
27bo5$1238bo$1208bobo27b2o$1208b2o27bobo$1209bo5$1202bo$1200b2o$1201b
2o13b2o$1216bo$1214bobo$1214b2o2$1223bo$1193bobo27b2o$1193b2o27bobo$
1194bo5$1187bo27b2o$1185b2o29b2o$1186b2o27bo6$1178bobo$1178b2o$1179bo
5$1172bo27b2o$1170b2o29b2o$1171b2o13b2o12bo$1186bo$1184bobo$1184b2o2$
1193bo$1163bobo27b2o$1163b2o27bobo$1164bo5$1157bo27b2o$1155b2o29b2o$
1156b2o27bo6$1148bobo$1148b2o$1149bo5$1142bo27b2o$1140b2o29b2o$1141b2o
13b2o12bo$1156bo$1154bobo$1154b2o2$1163bo$1133bobo27b2o$1133b2o27bobo$
1134bo5$1127bo27b2o$1125b2o29b2o$1126b2o27bo6$1118bobo$1118b2o$1119bo
5$1112bo27b2o$1110b2o29b2o$1111b2o13b2o12bo$1126bo$1124bobo$1124b2o2$
1133bo$1103bobo27b2o$1103b2o27bobo$1104bo5$1097bo27b2o$1095b2o29b2o$
1096b2o27bo5$1118bo$1088bobo27b2o$1088b2o27bobo$1089bo5$1110b2o$1111b
2o$1096b2o12bo$1096bo$1094bobo$1094b2o2$1103bo$1073bobo27b2o$1073b2o
27bobo$1074bo5$1067bo27b2o$1065b2o29b2o$1066b2o27bo$499bo$499b3o$502bo
$501b2o$1088bo$1058bobo27b2o$1058b2o27bobo$1059bo2$551b2o$551bo$542bo
6bobo$542bobo4b2o529b2o$543bobo535b2o$530b2o11bo2bo519b2o12bo$530b2o
11bobo520bo$542bobo519bobo$542bo521b2o3$542bobo498bobo$542b2o499b2o$
543bo500bo5$1037bo27b2o$1035b2o29b2o$581b2o453b2o27bo$581b2o$523bo$
523b4o$513b2o9b4o$513b2o9bo2bo530bo$518bo5b4o500bobo27b2o$463b2o53bo4b
4o5b2o494b2o27bobo$455bo7bo2bo56bo8bobo494bo$454bo3b2o7bo9bobo54bo$
454bo5bo6bo7bo3bo54b2o$455b5o7bo7bo12b2o$463bo2bo7bo4bo8b2o83b3o3b5o$
463b2o10bo97bo4bob3obo465b2o$443bo31bo3bo94bo4bo3bo467b2o$441b3o22bobo
8bobo100b3o453b2o12bo$440bo25b2o113bo454bo$440b2o25bo566bobo$558b2o
474b2o$558b3o22b2o$544bo15b2obo5b2o12bo$542bobo4b3o8bo2bo5b2o13b3o426b
obo$460bo74b2o4bobo16b2obo22bo426b2o$458b2o75b2o3bo2bo7bo2b2o2b3o453bo
$459b2o80bobo7bo3bo2b2o$542bobo6bo2bo$544bo8b2o2$1007bo27b2o$1005b2o
29b2o$451bobo108bo443b2o27bo$451b2o107bobo10b2o$452bo108b2o9b3o$569bob
2o9b2o$557b2o10bo2bo4bo5bo$557b2o10bob2o5bo449bo$546b2o6b2o6b2o8b3o3bo
3bo415bobo27b2o$445bo44b2o54b2o5b3o5bo2bo8b2o5bo417b2o27bobo$443b2o45b
obo16b2o43b2o6b2o435bo$444b2o44bo18b2o46b2o$557b2o3$571b2o419bo27b2o$
508b3o60bobo416b2o29b2o$436bobo58b3o8b3o60bo419b2o13b2o12bo$436b2o59bo
9bo3bo494bo$437bo60bo505bobo$506b2o3b2o491b2o2$496bo$496b2o485bobo$
495bobo7b2o476b2o$505bobo476bo$505bo3$505bo$488b2o487bo27b2o$489b2o
484b2o29b2o$488bo52bobo432b2o27bo$541b2o$506b3o33bo$505bo3bo$504bo5bo$
481bo22bo5bo487bo$481b2o24bo460bobo27b2o$480bobo22bo3bo458b2o27bobo$
506b3o460bo$507bo$641b2o$641bo$507b2o123bo6bobo$507b2o123bobo4b2o321bo
27b2o$633bobo324b2o29b2o$406bobo211b2o11bo2bo324b2o13b2o12bo$406b2o
212b2o11bobo340bo$407bo224bobo339bobo$632bo341b2o2$466bo516bo$466b2o
485bobo27b2o$400bo64bobo485b2o27bobo$398b2o554bo$399b2o4$458b2o515b2o$
459b2o515b2o$458bo52bobo157b2o302bo$511b2o158b2o$512bo100bo$613b4o$
603b2o9b4o$451bo151b2o9bo2bo350bo$451b2o155bo5b4o320bobo27b2o$385bo64b
obo100b2o53bo4b4o5b2o314b2o27bobo$383b2o160bo7bo2bo56bo8bobo314bo$384b
2o158bo3b2o7bo9bobo54bo$544bo5bo6bo7bo3bo54b2o$545b5o7bo7bo12b2o$553bo
2bo7bo4bo8b2o89b5o$443b2o108b2o10bo102bob3obo257bo27b2o$444b2o87bo31bo
3bo99bo3bo256b2o29b2o$376bobo64bo87b3o22bobo8bobo100b3o258b2o13b2o12bo
$376b2o152bo25b2o113bo274bo$305bo71bo152b2o25bo386bobo$305b3o340b2o
294b2o$308bo339b3o22b2o$307b2o127bo197bo15b2obo5b2o12bo279bo$436b2o
194bobo4b3o8bo2bo5b2o13b3o246bobo27b2o$435bobo112bo74b2o4bobo16b2obo
22bo246b2o27bobo$548b2o75b2o3bo2bo7bo2b2o2b3o273bo$549b2o80bobo7bo3bo
2b2o$632bobo6bo2bo$309b3o322bo8b2o$308bo3bo$428b2o77bo437b2o$307bo5bo
115b2o77bo437b2o$307b2o3b2o114bo77b3o32bobo108bo292bo$541b2o107bobo10b
2o$542bo108b2o9b3o$310bo348bob2o9b2o$309bobo335b2o10bo2bo4bo5bo$309bob
o109bo89bo135b2o10bob2o5bo269bo$309bo111b2o88b2o123b2o6b2o6b2o8b3o3bo
3bo235bobo27b2o$309bo29bo80bobo87bobo22bo100b2o5b3o5bo2bo8b2o5bo237b2o
27bobo$309bo2bo25b4o191b2o64b2o43b2o6b2o255bo$310b2o25b2obobo3b2o186b
2o63b2o46b2o$336b3obo2bo2b2o299b2o$277bo59b2obobo$277b3o47b2o9b4o$280b
o45bobo10bo73b2o487bo27b2o$279b2o17b2o26bo87b2o182b3o299b2o29b2o$297bo
2bo24b2o86bo112bobo69b3o300b2o13b2o12bo$300bo225b2o69bo3bo314bo$300bo
226bo386bobo$298bobo295b2o3b2o311b2o$298bobo$286b2o11bo106bo179bo336bo
$286bobo117b2o178b2o335b2o$286bo118bobo112bo64bobo7b2o325bobo$296b2o3b
2o215b2o75bobo$296bo5bo216b2o74bo2$297bo3bo$298b3o33b2o259bo$293b3o37b
obo62b2o178b2o335b2o$293bo39bo65b2o178b2o335b2o$294bo37b2o64bo112bobo
64bo336bo$279b2o230b2o$279b2o231bo83b3o$301b2o292bo3bo$301bo292bo5bo$
277bo24b3o86bo89bo112bo5bo307bo$278bo13bo11bo86b2o88b2o114bo85b3o192bo
bo27b2o$278bo13b2o96bobo87bobo22bo89bo3bo83bo194b2o27bobo$291bobo209b
2o91b3o85bo194bo$319b2o183b2o91bo$276b2o3b2o36b2o$279bo$276bo5bo314b2o
$277b2ob2o101b2o107bo70b2o32b2o273bo27b2o$278bobo3b2o98b2o107bo70b2o
304b2o29b2o$279bo5b2o96bo107b3o69bo307b2o13b2o12bo$279bo4bo601bo$884bo
bo$884b2o2$276b2o39b2o3b2o52bo179bo336bo$277bo98b2o178b2o335b2o$274b3o
41bo3bo52bobo112bo64bobo334bobo$274bo9b3o32b3o166b2o$284bo34b3o167b2o$
285bo3$368b2o487bo27b2o$369b2o484b2o29b2o$292b2o24bo5bo43bo112bobo372b
2o27bo$292bobo22b3o5bo155b2o$292bo24b3o3b3o19b2o135bo$345b2o$315b2o3b
2o$315b2o3b2o39bo89bo89bo336bo$361b2o88b2o88b2o170b3o132bobo27b2o$360b
obo87bobo22bo64bobo100b2o68bo134b2o27bobo$299b3o16bo13bo140b2o160bo7bo
2bo67bo134bo$299bo17bobo10bobo141b2o158bo3b2o7bo9bobo$300bo18b2o10b2o
301bo5bo6bo7bo3bo$319b2o25bo288b5o7bo7bo12b2o$318b3o24b3o295bo2bo7bo4b
o8b2o$317bobo24b5o4b2o178b2o108b2o10bo186bo$317b2o24b2o3b2o4b2o178b2o
87bo31bo3bo180b2o$307b2o30bo13bo179bo87b3o22bobo8bobo181b2o13b2o$307bo
bo30bo279bo25b2o208bo$307bo30b3o54bo224b2o25bo206bobo$345b3o47b3o456b
2o$398bo$345b2o50b2o127bo336bo$345b2o179b2o335b2o$346bo178bobo127b2o
205bobo$314b3o21bobo314bobo$314bo23b2o315bo$315bo23bo$399b3o$342b3o53b
o3bo$341bo3bo172b2o307bo27b2o$340bo5bo50bo5bo115b2o304b2o29b2o$322b2o
8bo7b2obob2o50b2o3b2o47bobo64bo112bobo192b2o27bo$322bobo5b2o119b2o178b
2o$322bo8b2o119bo179bo$343bo56bo362b2o$319bo22bobo54bobo361bo$314bo4b
4o19bobo16b2o36bobo327b2o24b2o3b2obo84bo$314bo5b4o19bo17bobo35bo330bo
12b3o2bo5bo3bo3bo85b2o$309b2o9bo2bo37bo37bo29bo15bo39b3o137bo104bobo6b
o3bo9bo93bobo$309b2o9b4o18b2o55bo2bo25b4o11b2o40bo137b2o64b2o40b2o4bob
o4bo8bo3bo2bo$319b4o5b2o12b2o56b2o25b2obobo3b2o6b2o40bo137b2o63b2o44b
2o16bo5bo$319bo8bobo95b3obo2bo2b2o297b2o17bo3bo$330bo96b2obobo302b2o
18b2o$330b2o85b2o9b4o305bobo$368b3o45bobo10bo73b2o234bo$368bo19b2o26bo
87b2o182b3o$369bo17bo2bo24b2o19bobo64bo112bobo69b3o135b2o$390bo45b2o
178b2o69bo3bo134bo$390bo46bo179bo206bobo$388bobo295b2o3b2o131b2o$388bo
bo$376b2o11bo106bo179bo156bo$376bobo117b2o178b2o125bobo27b2o$376bo53bo
64bobo112bo64bobo7b2o116b2o27bobo$386b2o3b2o35b2o178b2o75bobo116bo$
386bo5bo36b2o178b2o74bo2$387bo3bo$388b3o33b2o259bo$383b3o37bobo62b2o
137bo40b2o127bo27b2o$383bo39bo65b2o137bo40b2o124b2o29b2o$384bo37b2o64b
o137b3o39bo127b2o27bo$369b2o$369b2o315b3o$391b2o292bo3bo76b2o$391bo
292bo5bo75bobo$367bo24b3o86bo202bo5bo75bo51bo$368bo13bo11bo86b2o204bo
130b2o$368bo13b2o96bobo112bo89bo3bo127bobo$381bobo209b2o91b3o$409b2o
183b2o91bo$366b2o3b2o36b2o$369bo403b3o$366bo5bo314b2o84bo$367b2ob2o
101b2o178b2o32b2o85bo$368bobo3b2o98b2o178b2o113bobo$369bo5b2o96bo112bo
bo64bo115bo2bo23b2o$369bo4bo211b2o184b2o22bo$587bo182bo3b2o10bo7bobo$
772b2o12b4o4b2o$762b2o5bo2bo14b4o$366b2o39b2o3b2o52bo294bobo5bobo15bo
2bo$367bo98b2o293bo18bo6b4o$364b3o41bo3bo52bobo122b3o167b2o16bobo5b4o$
364bo9b3o32b3o178bo188b2o5bo$374bo34b3o179bo$375bo396bo$760b2o10b2o$
760b2o9bobo$458b2o178b2o123b2o12b2o8bo$459b2o178b2o122b3o10bo3bo7bo$
382b2o24bo5bo43bo112bobo64bo124b2o10bo5bo4b3o20b2o$382bobo22b3o5bo155b
2o180b2o5b2o13bo3bo2bo26bo$382bo24b3o3b3o19b2o135bo179bobo5b2o13bo21bo
bo7bobo$435b2o315bo23bo3bo3bo10bo3bo7b2o$405b2o3b2o339b2o24b2o3b2obo9b
o$405b2o3b2o39bo179bo153bo8bo4bo$451b2o178b2o152b2o8bo$450bobo112bo64b
obo156b2o4bo3bo$389b3o16bo13bo140b2o223bobo6bobo$389bo17bobo10bobo141b
2o222bo$390bo18b2o10b2o364b2o$409b2o25bo$408b3o24b3o$407bobo24b5o4b2o
178b2o$407b2o24b2o3b2o4b2o178b2o$397b2o30bo13bo112bobo64bo$397bobo30bo
125b2o$397bo30b3o54bo71bo$435b3o47b3o$488bo$435b2o50b2o127bo$435b2o
179b2o$436bo113bo64bobo$404b3o21bobo117b2o$404bo23b2o119b2o$405bo23bo$
489b3o$432b3o53bo3bo$431bo3bo7b3o$430bo5bo6bo43bo5bo$412b2o8bo7b2obob
2o7bo42b2o3b2o47bobo$412bobo5b2o119b2o$412bo8b2o119bo$433bo56bo$409bo
22bobo54bobo$404bo4b4o19bobo16b2o36bobo$404bo5b4o19bo17bobo35bo$399b2o
9bo2bo37bo37bo29bo15bo39b3o$399b2o9b4o18b2o55bo2bo25b4o11b2o40bo$409b
4o5b2o12b2o56b2o25b2obobo3b2o6b2o40bo$409bo8bobo95b3obo2bo2b2o$420bo
96b2obobo$420b2o85b2o9b4o$458b3o45bobo10bo73b2o$458bo19b2o26bo87b2o$
459bo17bo2bo24b2o86bo$480bo$480bo$478bobo$478bobo$466b2o11bo106bo$466b
obo117b2o$466bo53bo64bobo$476b2o3b2o35b2o$476bo5bo36b2o2$477bo3bo$478b
3o33b2o$513bobo62b2o$513bo65b2o$512b2o64bo$459b2o$459b2o$481b2o$481bo$
457bo24b3o86bo$458bo13bo11bo86b2o$458bo13b2o96bobo$471bobo$499b2o$456b
2o3b2o36b2o$459bo$456bo5bo$457b2ob2o101b2o$458bobo3b2o98b2o$459bo5b2o
96bo$459bo4bo4$456b2o39b2o3b2o52bo$457bo98b2o$454b3o41bo3bo52bobo$454b
o9b3o32b3o$464bo34b3o$465bo3$548b2o$549b2o$472b2o24bo5bo43bo$472bobo
22b3o5bo$472bo24b3o3b3o19b2o$525b2o$495b2o3b2o$495b2o3b2o39bo$541b2o$
540bobo$479b3o16bo13bo$479bo17bobo10bobo$480bo18b2o10b2o$499b2o25bo$
498b3o24b3o$497bobo24b5o4b2o$497b2o24b2o3b2o4b2o$487b2o30bo13bo$487bob
o30bo$487bo30b3o$525b3o2$525b2o$525b2o$526bo$494b3o21bobo$494bo23b2o$
495bo23bo2$522b3o$521bo3bo7b3o43bo$520bo5bo6bo43b3o$502b2o8bo7b2obob2o
7bo41bo$502bobo5b2o64b2o$502bo8b2o$523bo$499bo22bobo$494bo4b4o19bobo
16b2o$494bo5b4o19bo17bobo$489b2o9bo2bo37bo25bo3b2o3b2o$489b2o9b4o18b2o
41b3o3b2o3b2o$499b4o5b2o12b2o40bo$499bo8bobo53b2o7b3o$510bo62b3o$510b
2o62bo$548b3o$548bo$549bo$559b2o3b2o$562bo$559bo5bo6bo$560b2ob2o5b2o$
556b2o3bobo7b2o$556bobo3bo$556bo5bo12b3o$574bo3bo$573bo5bo$567bo5bo5bo
$568bo7bo$559bo6b3o5bo3bo$559b2o14bo$558bobo15bo2bo$579bo$578bo$579b3o
$562b2o3b2o6bo5bo$563b5o5bobo9bo$551b2o10b2ob2o6b2o7b3o$552b2o9b2ob2o
14bo$551bo12b3o15b2o4$562b2o16bo$563bo9bobo2b2ob2o$560b3o10b2o$560bo
13bo2bo5bo2$577b2obob2o3$567bo$536b2o27b2o$537b2o27b2o$536bo2$577b2o$
578bo$575b3o$529bo28bobo14bo$529b2o27b2o$528bobo28bo5$552bo24b3o$521b
2o27b2o$522b2o27b2o29b3o$521bo4$532b2o$514bo18bo9bobo$514b2o14b3o10b2o
$513bobo14bo13bo5$537bo$506b2o27b2o$507b2o27b2o$506bo5$499bo28bobo$
499b2o27b2o$498bobo28bo5$522bo$491b2o27b2o$492b2o27b2o$491bo4$502b2o$
484bo18bo9bobo$484b2o14b3o10b2o$483bobo14bo13bo5$507bo$476b2o27b2o$
477b2o27b2o$476bo5$469bo28bobo$469b2o27b2o$468bobo28bo5$492bo$461b2o
27b2o$462b2o27b2o$461bo4$472b2o$454bo18bo9bobo$454b2o14b3o10b2o$453bob
o14bo13bo6$446b2o$447b2o$446bo5$439bo28bobo$439b2o27b2o$438bobo28bo5$
462bo$460b2o$461b2o5$442b2o$424bo18bo9bobo$424b2o14b3o10b2o$423bobo14b
o13bo5$447bo$416b2o27b2o$417b2o27b2o$416bo5$438bobo$438b2o$439bo5$432b
o$401b2o27b2o$402b2o27b2o$401bo4$412b2o$394bo18bo9bobo$394b2o14b3o10b
2o$393bobo14bo13bo5$417bo$386b2o27b2o$387b2o27b2o$386bo5$379bo28bobo$
379b2o27b2o$378bobo28bo5$402bo$371b2o27b2o$372b2o27b2o$371bo4$382b2o$
364bo18bo9bobo$364b2o14b3o10b2o$363bobo14bo13bo5$387bo$385b2o$386b2o6$
349bo28bobo$349b2o27b2o$348bobo28bo5$372bo$341b2o27b2o$342b2o27b2o$
341bo4$352b2o$334bo18bo9bobo$334b2o14b3o10b2o$333bobo14bo13bo5$357bo$
326b2o27b2o$327b2o27b2o$326bo5$319bo28bobo$319b2o27b2o$318bobo28bo5$
342bo$311b2o27b2o$312b2o27b2o$311bo4$322b2o$304bo18bo9bobo$304b2o14b3o
10b2o$303bobo14bo13bo6$296b2o$297b2o$296bo5$289bo28bobo$289b2o27b2o$
288bobo28bo5$312bo$310b2o$311b2o5$292b2o$274bo18bo9bobo$274b2o14b3o10b
2o$273bobo14bo13bo5$297bo$266b2o27b2o$267b2o27b2o$266bo5$259bo28bobo$
259b2o27b2o$258bobo28bo5$282bo$251b2o27b2o$252b2o27b2o$251bo4$262b2o$
244bo18bo9bobo$244b2o14b3o10b2o$243bobo14bo13bo5$267bo$236b2o27b2o$
237b2o27b2o$236bo5$229bo28bobo$229b2o27b2o$228bobo28bo5$252bo$221b2o
27b2o$222b2o27b2o$221bo4$232b2o$214bo18bo9bobo$214b2o14b3o10b2o$213bob
o14bo13bo5$237bo$206b2o27b2o$207b2o27b2o$206bo5$199bo28bobo$199b2o27b
2o$198bobo28bo5$222bo$191b2o27b2o$192b2o27b2o$191bo4$202b2o$184bo18bo
9bobo$184b2o14b3o10b2o$183bobo14bo13bo5$207bo$176b2o27b2o$177b2o27b2o$
176bo5$169bo28bobo$169b2o27b2o$168bobo28bo6$161b2o$162b2o$161bo4$172b
2o$154bo18bo9bobo$154b2o14b3o10b2o$153bobo14bo13bo5$177bo$146b2o27b2o$
147b2o27b2o$146bo5$139bo28bobo$139b2o27b2o$138bobo28bo6$131b2o$132b2o$
131bo4$142b2o$124bo18bo$124b2o14b3o$123bobo14bo5$147bo$116b2o27b2o$
117b2o27b2o$116bo5$109bo28bobo$109b2o27b2o$108bobo28bo5$132bo$101b2o
27b2o$102b2o27b2o$101bo4$112b2o$94bo18bo9bobo$94b2o14b3o10b2o$93bobo
14bo13bo5$117bo$86b2o27b2o$87b2o27b2o$86bo5$79bo28bobo$79b2o27b2o$78bo
bo28bo5$102bo$71b2o27b2o$72b2o27b2o$71bo4$82b2o$64bo18bo9bobo$64b2o14b
3o10b2o$63bobo14bo13bo6$56b2o$57b2o$56bo5$49bo$49b2o$48bobo5$72bo$41b
2o27b2o$42b2o27b2o$41bo4$52b2o$34bo18bo9bobo$34b2o14b3o10b2o$33bobo14b
o13bo6$26b2o$27b2o$10bo15bo$8b3o$7bo$7b2o2$19bo28bobo$19b2o27b2o$18bob
o28bo5$42bo$2b2o3b2o31b2o$4b3o34b2o$3bo3bo$4bobo$5bo2$22b2o$2b2o19bo9b
obo$3bo16b3o10b2o$3o17bo13bo$o4$27bo$25b2o$17b2o7b2o$3b2o12bobo$4bo12b
o$4bobo5b2o$5b2o5bo2bo$16bo$16bo$16bo$12bo2bo6b2o$12b2o8bobo$24bo$24b
2o!
""")

#--------------------------------------------------------------------------------------------------------------------------------
LeftData=[[-2608, 3689, 2, (-1, 0, 0, 1), 'glider'],\
[-894, 1973, 1, (-1, 0, 0, 1), 'boatpair'],\
[-898, 1960, 1, (-1, 0, 0, 1), 'glider'],\
[-2591, 3678, 0, (-1, 0, 0, 1), 'glider'],\
[-2595, 3688, 0, (-1, 0, 0, 1), 'glider'],\
[-876, 1940, 0, (-1, 0, 0, 1), 'glider'],\
[-872, 1987, 0, (-1, 0, 0, 1), 'glider'],\
[-2578, 3686, 1, (-1, 0, 0, 1), 'glider'],\
[-544, 1596, 3, (0, -1, 1, 0), 'glider'],\
[-539, 1592, 5, (0, -1, 1, 0), 'glider'],\
[-527, 1631, 5, (0, -1, 1, 0), 'glider'],\
[-524, 1589, 5, (0, -1, 1, 0), 'glider'],\
[-518, 1584, 3, (0, -1, 1, 0), 'glider'],\
[-753, 1819, 3, (0, -1, 1, 0), 'glider'],\
[-785, 1820, 4, (0, -1, 1, 0), 'glider'],\
[-786, 1833, 2, (0, -1, 1, 0), 'glider'],\
[-787, 1851, 1, (-1, 0, 0, 1), 'glider'],\
[-783, 1846, 3, (-1, 0, 0, 1), 'glider'],\
[-683, 1736, 2, (0, -1, 1, 0), 'glider'],\
[-714, 1732, 2, (0, -1, 1, 0), 'glider'],\
[-2573, 3598, 3, (0, -1, 1, 0), 'glider'],\
[-2575, 3635, 0, (-1, 0, 0, 1), 'glider'],\
[-830, 1881, 3, (0, -1, 1, 0), 'glider'],\
[-818, 1882, 3, (0, -1, 1, 0), 'glider'],\
[-1159, 2214, 2, (0, -1, 1, 0), 'glider'],\
[-2582, 3642, 4, (0, -1, 1, 0), 'glider'],\
[-741, 1857, 1, (-1, 0, 0, 1), 'glider'],\
[-745, 1806, 0, (-1, 0, 0, 1), 'glider'],\
[-687, 1751, 0, (-1, 0, 0, 1), 'glider'],\
[-681, 1745, 3, (-1, 0, 0, 1), 'glider'],\
[-675, 1791, 3, (-1, 0, 0, 1), 'glider'],\
[-711, 1773, 3, (-1, 0, 0, 1), 'glider'],\
[-670, 1734, 2, (-1, 0, 0, 1), 'glider'],\
[-666, 1815, 2, (-1, 0, 0, 1), 'glider'],\
[-2543, 3685, 5, (0, -1, 1, 0), 'glider'],\
[-397, 1479, 5, (0, -1, 1, 0), 'glider'],\
[-403, 1489, 2, (0, -1, 1, 0), 'glider'],\
[-412, 1504, 2, (0, -1, 1, 0), 'glider'],\
[-2577, 3674, 2, (0, -1, 1, 0), 'glider'],\
[-737, 1789, 5, (0, -1, 1, 0), 'glider'],\
[-802, 1789, 2, (0, -1, 1, 0), 'glider'],\
[-836, 1826, 4, (0, -1, 1, 0), 'glider'],\
[-774, 1827, 4, (0, -1, 1, 0), 'glider'],\
[-2638, 3632, 5, (0, -1, 1, 0), 'glider'],\
[-2647, 3646, 5, (0, -1, 1, 0), 'glider'],\
[-1041, 2049, 4, (0, -1, 1, 0), 'glider'],\
[-987, 2050, 4, (0, -1, 1, 0), 'glider'],\
[-986, 2016, 3, (-1, 0, 0, 1), 'glider'],\
[-985, 2026, 3, (-1, 0, 0, 1), 'glider'],\
[-956, 2021, 1, (-1, 0, 0, 1), 'glider'],\
[-952, 2016, 3, (-1, 0, 0, 1), 'glider'],\
[-2610, 3644, 0, (-1, 0, 0, 1), 'glider'],\
[-2645, 3659, 3, (-1, 0, 0, 1), 'glider'],\
[-485, 1537, 2, (0, -1, 1, 0), 'glider'],\
[-549, 1538, 3, (0, -1, 1, 0), 'glider'],\
[-731, 1724, 5, (0, -1, 1, 0), 'glider'],\
[-673, 1725, 5, (0, -1, 1, 0), 'glider'],\
[-742, 1739, 2, (0, -1, 1, 0), 'glider'],\
[-2620, 3622, 4, (0, -1, 1, 0), 'glider'],\
[-699, 1749, 2, (-1, 0, 0, 1), 'glider'],\
[-694, 1743, 0, (-1, 0, 0, 1), 'glider'],\
[-756, 1743, 0, (-1, 0, 0, 1), 'glider'],\
[-755, 1767, 0, (-1, 0, 0, 1), 'glider'],\
[-457, 1487, 2, (0, -1, 1, 0), 'glider'],\
[-370, 1399, 1, (-1, 0, 0, 1), 'glider'],\
[-373, 1424, 3, (0, -1, 1, 0), 'glider'],\
[-344, 1384, 0, (-1, 0, 0, 1), 'glider'],\
[-340, 1379, 2, (-1, 0, 0, 1), 'glider'],\
[-375, 1414, 4, (0, -1, 1, 0), 'glider'],\
[-399, 1408, 4, (0, -1, 1, 0), 'glider'],\
[-470, 1465, 5, (0, -1, 1, 0), 'glider'],\
[-417, 1469, 4, (0, -1, 1, 0), 'glider'],\
[-370, 1357, 5, (0, -1, 1, 0), 'glider'],\
[-330, 1310, 2, (0, -1, 1, 0), 'glider'],\
[-287, 1310, 4, (0, -1, 1, 0), 'glider'],\
[-381, 1342, 3, (0, -1, 1, 0), 'glider'],\
[-376, 1338, 5, (0, -1, 1, 0), 'glider'],\
[-339, 1335, 2, (-1, 0, 0, 1), 'glider'],\
[-334, 1329, 0, (-1, 0, 0, 1), 'glider'],\
[-416, 1481, 5, (0, -1, 1, 0), 'glider'],\
[-448, 1475, 5, (0, -1, 1, 0), 'glider'],\
[-599, 1663, 0, (-1, 0, 0, 1), 'glider'],\
[-595, 1658, 2, (-1, 0, 0, 1), 'glider'],\
[-688, 1656, 2, (-1, 0, 0, 1), 'glider'],\
[-586, 1653, 2, (-1, 0, 0, 1), 'glider'],\
[-581, 1647, 0, (-1, 0, 0, 1), 'glider'],\
[-2618, 3760, 3, (-1, 0, 0, 1), 'glider'],\
[-1645, 2722, 1, (-1, 0, 0, 1), 'glider'],\
[-1197, 2270, 4, (0, -1, 1, 0), 'glider'],\
[-1191, 2265, 2, (0, -1, 1, 0), 'glider'],\
[-1264, 2341, 3, (-1, 0, 0, 1), 'glider'],\
[-1260, 2334, 1, (-1, 0, 0, 1), 'glider'],\
[-1618, 2693, 3, (0, -1, 1, 0), 'glider'],\
[-1613, 2689, 5, (0, -1, 1, 0), 'glider'],\
[-1358, 2434, 3, (0, -1, 1, 0), 'glider'],\
[-1353, 2430, 5, (0, -1, 1, 0), 'glider'],\
[-1373, 2449, 0, (-1, 0, 0, 1), 'glider'],\
[-1558, 2635, 2, (-1, 0, 0, 1), 'glider'],\
[-1293, 2369, 2, (0, -1, 1, 0), 'glider'],\
[-1288, 2365, 4, (0, -1, 1, 0), 'glider'],\
[-1328, 2404, 5, (0, -1, 1, 0), 'glider'],\
[-1322, 2399, 3, (0, -1, 1, 0), 'glider'],\
[-1049, 2125, 3, (0, -1, 1, 0), 'glider'],\
[-1044, 2121, 5, (0, -1, 1, 0), 'glider'],\
[-1074, 2149, 3, (0, -1, 1, 0), 'glider'],\
[-1069, 2145, 5, (0, -1, 1, 0), 'glider'],\
[-1091, 2166, 2, (0, -1, 1, 0), 'glider'],\
[-1086, 2162, 4, (0, -1, 1, 0), 'glider'],\
[-1033, 2108, 2, (0, -1, 1, 0), 'glider'],\
[-1028, 2104, 4, (0, -1, 1, 0), 'glider'],\
[-1175, 2250, 2, (0, -1, 1, 0), 'glider'],\
[-1170, 2246, 4, (0, -1, 1, 0), 'glider'],\
[-1130, 2206, 2, (0, -1, 1, 0), 'glider'],\
[-1125, 2202, 4, (0, -1, 1, 0), 'glider'],\
[-1150, 2226, 3, (0, -1, 1, 0), 'glider'],\
[-1145, 2222, 5, (0, -1, 1, 0), 'glider'],\
[-1007, 2083, 3, (0, -1, 1, 0), 'glider'],\
[-1002, 2079, 5, (0, -1, 1, 0), 'glider'],\
[-1851, 2918, 1, (-1, 0, 0, 1), 'glider'],\
[-1807, 2881, 2, (0, -1, 1, 0), 'glider'],\
[-1802, 2877, 4, (0, -1, 1, 0), 'glider'],\
[-1828, 2898, 0, (-1, 0, 0, 1), 'glider'],\
[-1791, 2867, 2, (-1, 0, 0, 1), 'glider'],\
[-1786, 2861, 0, (-1, 0, 0, 1), 'glider'],\
[-1700, 2776, 3, (0, -1, 1, 0), 'glider'],\
[-1695, 2772, 5, (0, -1, 1, 0), 'glider'],\
[-1897, 2962, 1, (-1, 0, 0, 1), 'glider'],\
[-1875, 2938, 4, (0, -1, 1, 0), 'glider'],\
[-1869, 2933, 2, (0, -1, 1, 0), 'glider'],\
[-1720, 2795, 5, (0, -1, 1, 0), 'glider'],\
[-1714, 2790, 3, (0, -1, 1, 0), 'glider'],\
[-1638, 2713, 5, (0, -1, 1, 0), 'glider'],\
[-1632, 2708, 3, (0, -1, 1, 0), 'glider'],\
[-966, 2042, 5, (0, -1, 1, 0), 'glider'],\
[-960, 2037, 3, (0, -1, 1, 0), 'glider'],\
[-985, 2060, 5, (0, -1, 1, 0), 'glider'],\
[-979, 2055, 3, (0, -1, 1, 0), 'glider'],\
[-2229, 3357, 3, (0, -1, 1, 0), 'glider'],\
[-1550, 2626, 4, (0, -1, 1, 0), 'glider'],\
[-1544, 2621, 2, (0, -1, 1, 0), 'glider'],\
[-1459, 2534, 2, (0, -1, 1, 0), 'glider'],\
[-1454, 2530, 4, (0, -1, 1, 0), 'glider'],\
[-1479, 2552, 2, (0, -1, 1, 0), 'glider'],\
[-1474, 2548, 4, (0, -1, 1, 0), 'glider'],\
[-2230, 3292, 5, (0, -1, 1, 0), 'glider'],\
[-2224, 3287, 3, (0, -1, 1, 0), 'glider'],\
[-2002, 3065, 3, (-1, 0, 0, 1), 'glider'],\
[-1997, 3059, 1, (-1, 0, 0, 1), 'glider'],\
[-1982, 3045, 3, (-1, 0, 0, 1), 'glider'],\
[-1977, 3039, 1, (-1, 0, 0, 1), 'glider'],\
[-1504, 2579, 1, (-1, 0, 0, 1), 'glider'],\
[-1500, 2574, 3, (-1, 0, 0, 1), 'glider'],\
[-1527, 2603, 1, (-1, 0, 0, 1), 'glider'],\
[-1523, 2598, 3, (-1, 0, 0, 1), 'glider'],\
[-947, 2024, 1, (-1, 0, 0, 1), 'glider'],\
[-943, 2019, 3, (-1, 0, 0, 1), 'glider'],\
[-2209, 3273, 0, (-1, 0, 0, 1), 'glider'],\
[-2205, 3268, 2, (-1, 0, 0, 1), 'glider'],\
[-929, 2006, 3, (-1, 0, 0, 1), 'glider'],\
[-924, 2000, 1, (-1, 0, 0, 1), 'glider'],\
[-907, 1983, 3, (-1, 0, 0, 1), 'glider'],\
[-902, 1977, 1, (-1, 0, 0, 1), 'glider'],\
[-2019, 3083, 0, (-1, 0, 0, 1), 'glider'],\
[-2015, 3078, 2, (-1, 0, 0, 1), 'glider']]



UpData =[[1850, -788, 5, (1, 0, 0, -1), 'glider'],\
[1845, -782, 3, (1, 0, 0, -1), 'glider'],\
[1822, -758, 4, (1, 0, 0, -1), 'glider'],\
[1817, -752, 2, (1, 0, 0, -1), 'glider'],\
[1489, -437, 3, (0, 1, -1, 0), 'glider'],\
[1498, -433, 1, (0, 1, -1, 0), 'glider'],\
[1761, -695, 3, (0, 1, -1, 0), 'glider'],\
[1755, -690, 1, (0, 1, -1, 0), 'glider'],\
[1768, -716, 1, (0, 1, -1, 0), 'glider'],\
[1784, -720, 5, (1, 0, 0, -1), 'glider'],\
[1673, -620, 2, (0, 1, -1, 0), 'glider'],\
[1667, -615, 0, (0, 1, -1, 0), 'glider'],\
[3545, -2480, 3, (1, 0, 0, -1), 'glider'],\
[1798, -734, 3, (0, 1, -1, 0), 'glider'],\
[1792, -729, 1, (0, 1, -1, 0), 'glider'],\
[1713, -652, 4, (1, 0, 0, -1), 'glider'],\
[1708, -646, 2, (1, 0, 0, -1), 'glider'],\
[1677, -613, 4, (1, 0, 0, -1), 'glider'],\
[1672, -607, 2, (1, 0, 0, -1), 'glider'],\
[1664, -600, 3, (1, 0, 0, -1), 'glider'],\
[1660, -595, 5, (1, 0, 0, -1), 'glider'],\
[1692, -630, 3, (1, 0, 0, -1), 'glider'],\
[1688, -625, 5, (1, 0, 0, -1), 'glider'],\
[1649, -585, 2, (1, 0, 0, -1), 'glider'],\
[1645, -580, 4, (1, 0, 0, -1), 'glider'],\
[1422, -345, 2, (0, 1, -1, 0), 'glider'],\
[1426, -335, 3, (0, 1, -1, 0), 'glider'],\
[1698, -646, 1, (0, 1, -1, 0), 'glider'],\
[1693, -642, 3, (0, 1, -1, 0), 'glider'],\
[1725, -672, 0, (0, 1, -1, 0), 'glider'],\
[1720, -668, 2, (0, 1, -1, 0), 'glider'],\
[1924, -861, 0, (0, 1, -1, 0), 'glider'],\
[1919, -857, 2, (0, 1, -1, 0), 'glider'],\
[1911, -846, 5, (1, 0, 0, -1), 'glider'],\
[1483, -431, 2, (0, 1, -1, 0), 'glider'],\
[1477, -426, 0, (0, 1, -1, 0), 'glider'],\
[1660, -608, 1, (0, 1, -1, 0), 'glider'],\
[1655, -604, 3, (0, 1, -1, 0), 'glider'],\
[1679, -629, 2, (1, 0, 0, -1), 'glider'],\
[1485, -460, 3, (0, 1, -1, 0), 'glider'],\
[1387, -363, 2, (1, 0, 0, -1), 'glider'],\
[1415, -364, 3, (0, 1, -1, 0), 'glider'],\
[1409, -359, 1, (0, 1, -1, 0), 'glider'],\
[1371, -331, 4, (1, 0, 0, -1), 'glider'],\
[1367, -374, 4, (1, 0, 0, -1), 'glider'],\
[3568, -2568, 5, (1, 0, 0, -1), 'glider'],\
[1393, -378, 0, (0, 1, -1, 0), 'glider'],\
[1388, -349, 0, (0, 1, -1, 0), 'glider'],\
[1383, -345, 2, (0, 1, -1, 0), 'glider'],\
[1432, -380, 0, (0, 1, -1, 0), 'glider'],\
[1427, -376, 2, (0, 1, -1, 0), 'glider'],\
[1335, -343, 0, (0, 1, -1, 0), 'glider'],\
[1349, -363, 0, (0, 1, -1, 0), 'glider'],\
[1326, -303, 0, (0, 1, -1, 0), 'glider'],\
[1321, -299, 2, (0, 1, -1, 0), 'glider'],\
[1352, -391, 3, (0, 1, -1, 0), 'glider'],\
[1395, -387, 3, (0, 1, -1, 0), 'glider'],\
[3556, -2555, 2, (0, 1, -1, 0), 'glider'],\
[1317, -321, 2, (1, 0, 0, -1), 'glider'],\
[1313, -342, 2, (1, 0, 0, -1), 'glider'],\
[1456, -419, 1, (0, 1, -1, 0), 'glider'],\
[1447, -382, 1, (0, 1, -1, 0), 'glider'],\
[1442, -378, 3, (0, 1, -1, 0), 'glider'],\
[1594, -530, 4, (1, 0, 0, -1), 'glider'],\
[1590, -523, 2, (1, 0, 0, -1), 'glider'],\
[3842, -2706, 0, (0, 1, -1, 0), 'glider'],\
[3079, -2002, 5, (1, 0, 0, -1), 'glider'],\
[3074, -1996, 3, (1, 0, 0, -1), 'glider'],\
[3142, -1996, 3, (1, 0, 0, -1), 'glider'],\
[3141, -2012, 3, (1, 0, 0, -1), 'glider'],\
[3827, -2691, 0, (0, 1, -1, 0), 'glider'],\
[3842, -2694, 2, (0, 1, -1, 0), 'glider'],\
[2627, -1554, 0, (0, 1, -1, 0), 'glider'],\
[2720, -1550, 0, (0, 1, -1, 0), 'glider'],\
[3840, -2677, 3, (0, 1, -1, 0), 'glider'],\
[2687, -1610, 3, (1, 0, 0, -1), 'glider'],\
[2683, -1605, 5, (1, 0, 0, -1), 'glider'],\
[2762, -1603, 5, (1, 0, 0, -1), 'glider'],\
[2674, -1600, 5, (1, 0, 0, -1), 'glider'],\
[2669, -1594, 3, (1, 0, 0, -1), 'glider'],\
[2987, -1912, 3, (0, 1, -1, 0), 'glider'],\
[3024, -1912, 0, (0, 1, -1, 0), 'glider'],\
[3091, -1973, 0, (0, 1, -1, 0), 'glider'],\
[2739, -1663, 3, (0, 1, -1, 0), 'glider'],\
[2783, -1660, 1, (0, 1, -1, 0), 'glider'],\
[2757, -1681, 4, (1, 0, 0, -1), 'glider'],\
[2752, -1675, 2, (1, 0, 0, -1), 'glider'],\
[2937, -1860, 2, (1, 0, 0, -1), 'glider'],\
[2933, -1855, 4, (1, 0, 0, -1), 'glider'],\
[2969, -1855, 4, (1, 0, 0, -1), 'glider'],\
[2968, -1865, 4, (1, 0, 0, -1), 'glider'],\
[3774, -2664, 3, (1, 0, 0, -1), 'glider'],\
[2767, -1622, 3, (0, 1, -1, 0), 'glider'],\
[2702, -1626, 2, (0, 1, -1, 0), 'glider'],\
[2786, -1649, 1, (0, 1, -1, 0), 'glider'],\
[2726, -1650, 1, (0, 1, -1, 0), 'glider'],\
[2809, -1675, 4, (1, 0, 0, -1), 'glider'],\
[3812, -2673, 4, (1, 0, 0, -1), 'glider'],\
[2548, -1377, 0, (0, 1, -1, 0), 'glider'],\
[2458, -1382, 3, (0, 1, -1, 0), 'glider'],\
[2465, -1390, 3, (0, 1, -1, 0), 'glider'],\
[2547, -1387, 1, (0, 1, -1, 0), 'glider'],\
[2486, -1411, 2, (0, 1, -1, 0), 'glider'],\
[2432, -1357, 2, (0, 1, -1, 0), 'glider'],\
[2543, -1353, 2, (0, 1, -1, 0), 'glider'],\
[3831, -2648, 5, (1, 0, 0, -1), 'glider'],\
[2544, -1469, 2, (0, 1, -1, 0), 'glider'],\
[2608, -1470, 3, (0, 1, -1, 0), 'glider'],\
[2503, -1427, 2, (0, 1, -1, 0), 'glider'],\
[2571, -1424, 0, (0, 1, -1, 0), 'glider'],\
[2527, -1451, 3, (0, 1, -1, 0), 'glider'],\
[2388, -1312, 3, (0, 1, -1, 0), 'glider'],\
[2497, -1308, 3, (0, 1, -1, 0), 'glider'],\
[3815, -2633, 4, (1, 0, 0, -1), 'glider'],\
[3213, -2141, 4, (1, 0, 0, -1), 'glider'],\
[3198, -2111, 2, (0, 1, -1, 0), 'glider'],\
[3186, -2112, 2, (0, 1, -1, 0), 'glider'],\
[3202, -2132, 4, (1, 0, 0, -1), 'glider'],\
[3197, -2126, 2, (1, 0, 0, -1), 'glider'],\
[3165, -2089, 2, (1, 0, 0, -1), 'glider'],\
[3161, -2130, 2, (1, 0, 0, -1), 'glider'],\
[3732, -2694, 3, (1, 0, 0, -1), 'glider'],\
[3085, -2009, 3, (0, 1, -1, 0), 'glider'],\
[3102, -2005, 3, (0, 1, -1, 0), 'glider'],\
[3293, -2223, 4, (1, 0, 0, -1), 'glider'],\
[3273, -2210, 0, (0, 1, -1, 0), 'glider'],\
[3286, -2208, 2, (0, 1, -1, 0), 'glider'],\
[3378, -2299, 2, (1, 0, 0, -1), 'glider'],\
[3799, -2715, 3, (1, 0, 0, -1), 'glider'],\
[3154, -2079, 1, (0, 1, -1, 0), 'glider'],\
[3173, -2077, 3, (0, 1, -1, 0), 'glider'],\
[3062, -1987, 1, (0, 1, -1, 0), 'glider'],\
[3103, -1983, 1, (0, 1, -1, 0), 'glider'],\
[3798, -2685, 2, (0, 1, -1, 0), 'glider'],\
[3812, -2713, 1, (0, 1, -1, 0), 'glider'],\
[2315, -1180, 2, (0, 1, -1, 0), 'glider'],\
[2260, -1184, 1, (0, 1, -1, 0), 'glider'],\
[2285, -1210, 1, (0, 1, -1, 0), 'glider'],\
[2330, -1208, 3, (0, 1, -1, 0), 'glider'],\
[2357, -1234, 3, (1, 0, 0, -1), 'glider'],\
[2880, -1804, 0, (0, 1, -1, 0), 'glider'],\
[2908, -1805, 1, (0, 1, -1, 0), 'glider'],\
[2772, -1697, 2, (0, 1, -1, 0), 'glider'],\
[2806, -1694, 0, (0, 1, -1, 0), 'glider'],\
[2794, -1721, 2, (0, 1, -1, 0), 'glider'],\
[3538, -2476, 1, (0, 1, -1, 0), 'glider'],\
[3326, -2263, 3, (1, 0, 0, -1), 'glider'],\
[3327, -2271, 4, (1, 0, 0, -1), 'glider'],\
[3295, -2255, 3, (1, 0, 0, -1), 'glider'],\
[3296, -2233, 3, (1, 0, 0, -1), 'glider'],\
[3311, -2267, 4, (1, 0, 0, -1), 'glider'],\
[3531, -2482, 2, (1, 0, 0, -1), 'glider'],\
[2804, -1784, 2, (1, 0, 0, -1), 'glider'],\
[2809, -1734, 5, (1, 0, 0, -1), 'glider'],\
[2840, -1764, 5, (1, 0, 0, -1), 'glider'],\
[2837, -1804, 3, (1, 0, 0, -1), 'glider'],\
[3138, -2106, 3, (0, 1, -1, 0), 'glider'],\
[2228, -1202, 3, (1, 0, 0, -1), 'glider'],\
[2228, -1151, 5, (1, 0, 0, -1), 'glider'],\
[3484, -2420, 4, (1, 0, 0, -1), 'glider'],\
[2204, -1191, 5, (1, 0, 0, -1), 'glider'],\
[2201, -1124, 3, (1, 0, 0, -1), 'glider'],\
[2193, -1117, 3, (1, 0, 0, -1), 'glider'],\
[2187, -1199, 3, (1, 0, 0, -1), 'glider'],\
[3396, -2332, 4, (1, 0, 0, -1), 'glider'],\
[3392, -2363, 4, (1, 0, 0, -1), 'glider'],\
[3897, -2689, 3, (1, 0, 0, -1), 'glider']]


#---------------------------------------------------c convoy -----------------------------------------
class convoy:
   def __init__(self, name):
      self.name=name
      self.list=[]
      
      
   def add(self,Ptype,x,y,r,ori):
      self.list.append([x,y,r,ori,Ptype])

   def getP(self):
      patt = pattern()
      for [x,y,r,ori,Ptype] in self.list:
         patt += glider[r](x,y,ori)
      return patt

   def getR(self):
      patt = pattern()
      
      #  process list after sorting by y then x
      if self.name=="left":
         for [x,y,r,ori,Ptype] in sorted(self.list, key=itemgetter(1,0), reverse=True):
            if Ptype=='glider':
               step=71
               patt = patt[step*4](-step,step)
               patt += p360kickback[r](x,y,flip_x)
            else:
               step=190
               patt = patt[step*4](-step,step)
               patt += p360boatpairA[r](x,y,flip_x)
      else:
         step=71
         for [x,y,r,ori,Ptype] in sorted(self.list, key=itemgetter(0,1), reverse=True):
            patt = patt[step*4](step,-step)
            patt += p360kickback[r](x,y,rccw)
      return patt      

#===================================================================================================================
     
starttime = time.time()     
Lconvoy=convoy("left")
Uconvoy=convoy("up")

for line in LeftData:
   Lconvoy.add(line[4],line[0],line[1],line[2],line[3])
for line in UpData:
   Uconvoy.add(line[4],line[0],line[1],line[2],line[3])

all = Lconvoy.getR()(0,0)+Uconvoy.getR()(0,0)
all += stackbase[14](259,171)
all.display ("TM stack constructor took %.2f seconds."%(time.time()-starttime))
      
# --------------------------------------------------
