From 87d88a28697b9bc87dc3e1f76b45dd5fc7547f0e Mon Sep 17 00:00:00 2001
From: Sean Paeglis <s.paeglis@student.unimelb.edu.au>
Date: Tue, 2 Apr 2019 13:51:07 +1100
Subject: [PATCH] updated2

---
 Board.py                         |  82 ++++++++------
 Piece.py                         |   4 +-
 __pycache__/Board.cpython-36.pyc | Bin 1975 -> 2401 bytes
 __pycache__/Piece.cpython-36.pyc | Bin 413 -> 413 bytes
 game.py                          | 156 ++++++++++++++++++++++-----
 input2.json                      |   5 +
 input3.json                      |   5 +
 input4.json                      |   5 +
 input5.json                      |   7 ++
 out.txt                          |  80 ++++++++++++++
 out1.txt                         | 176 +++++++++++++++++++++++++++++++
 out2.txt                         |   0
 out5.txt                         | 112 ++++++++++++++++++++
 out6.txt                         | 176 +++++++++++++++++++++++++++++++
 14 files changed, 747 insertions(+), 61 deletions(-)
 create mode 100644 input2.json
 create mode 100644 input3.json
 create mode 100644 input4.json
 create mode 100644 input5.json
 create mode 100644 out.txt
 create mode 100644 out1.txt
 create mode 100644 out2.txt
 create mode 100644 out5.txt
 create mode 100644 out6.txt

diff --git a/Board.py b/Board.py
index 68574d3..15f7968 100644
--- a/Board.py
+++ b/Board.py
@@ -1,46 +1,60 @@
 import Tile
 class Board:
+    exit_tiles = [(3,-3), (3,-2), (3,-1), (3,0)]
+    """
     directions = ['l', 'tl', 'tr', 'r', 'br', 'bl']
     moves = {'l':(-1,0), 'tl':(0,-1), 'tr':(1,-1), 'r':(1,0),
             'br':(0,1), 'bl':(-1,1)}
-    tiles = [[None for i in range(7)] for j in range(7)]
+            """
+    moves = [(-1,0), (0,-1), (1,-1), (1,0), (0,1), (-1,1)]
     def __init__(self):
-        r = -3
-        for q in range(0, 4):
-            self.new_tile(q,r)
-        r = -2
-        for q in range(-1, 4):
-            self.new_tile(q,r)
-        r = -1
-        for q in range(-2, 4):
-            self.new_tile(q,r)
-        r = 0
-        for q in range(-3, 4):
-            self.new_tile(q,r)
-        r = 1
-        for q in range(-3, 3):
-            self.new_tile(q,r)
-        r = 2
-        for q in range(-3, 2):
-            self.new_tile(q,r)
-        r = 3
-        for q in range(-3, 1):
-            self.new_tile(q,r)
+        self.tiles = [[None for i in range(7)] for j in range(7)]
+        self.tiles[0][0] = 0
+        self.tiles[0][1] = 0
+        self.tiles[0][2] = 0
+        self.tiles[1][0] = 0
+        self.tiles[1][1] = 0
+        self.tiles[2][0] = 0
+        self.tiles[4][6] = 0
+        self.tiles[5][5] = 0
+        self.tiles[5][6] = 0
+        self.tiles[6][4] = 0
+        self.tiles[6][5] = 0
+        self.tiles[6][6] = 0
+        self.pieces = []
+        self.g = 0
+        self.f = 0
+        self.parent = None
+    
+    def getMoves(self):
+        valid_moves = []
+        for piece in self.pieces:
+            if piece.pos in self.exit_tiles:
+                return piece
+            p_r = piece.pos[1]+3
+            p_q = piece.pos[0]+3
+            for move in self.moves:
+                if p_r + move[1] > 6 or p_r + move[1] < 0 or p_q + move[0] > 6 or p_q + move[0] < 0:
+                    continue
 
-    def new_tile(self, q, r):
-        tile = Tile.Tile((q,r))
-        self.tiles[r+3][q+3] = tile
+                if self.tiles[p_r + move[1]][p_q + move[0]] is None:
+                    valid_moves.append(((p_q-3, p_r-3),(p_q-3 + move[0], p_r-3 + move[1])))
+
+                elif p_r + move[1]*2 <= 6 and p_r + move[1]*2 >= 0 and p_q + move[0]*2 <= 6 and p_q + move[0]*2 >= 0:
+                    if self.tiles[p_r + move[1]*2][p_q + move[0]*2] is None:
+                        valid_moves.append(((p_q-3, p_r-3),(p_q-3 + move[0]*2, p_r-3 + move[1]*2)))
+        
+        return valid_moves
 
     def move(self, t_from, t_to):
-        tile_from = self.tiles[t_from[1]+3][t_from[0]+3]
-        tile_to = self.tiles[t_to[1]+3][t_to[0]+3]
-        tile_from.piece.pos = t_to
-        tile_to.piece = tile_from.piece
-        tile_from.piece = None
+        piece = self.tiles[t_from[1]+3][t_from[0]+3]
+        self.tiles[t_from[1]+3][t_from[0]+3] = None
+        self.tiles[t_to[1]+3][t_to[0]+3] = piece
+        self.tiles[t_to[1]+3][t_to[0]+3].pos = t_to
 
     def distance(self, start, end):
-        q1 = start.pos[0]
-        q2 = end.pos[0]
-        r1 = start.pos[1]
-        r2 = end.pos[1]
+        q1 = start[0]
+        q2 = end[0]
+        r1 = start[1]
+        r2 = end[1]
         return (abs(q1 - q2) + abs(q1 + r1 - q2 - r2) + abs(r1 - r2))/2
diff --git a/Piece.py b/Piece.py
index 3ef6405..9331642 100644
--- a/Piece.py
+++ b/Piece.py
@@ -1,4 +1,4 @@
 class Piece:
-    def __init__(self, pos):
+    def __init__(self, pos, colour):
         self.pos = pos
-        self.visited = [self.pos]
+        self.colour = colour
diff --git a/__pycache__/Board.cpython-36.pyc b/__pycache__/Board.cpython-36.pyc
index a0bf57e25c327c443cf9549e5232aef0d9d72a62..f9e8f3375bc235d21baf8a21e37f29b5d1235765 100644
GIT binary patch
literal 2401
zcmXr!<>lH{yC5cygMr~O0}^0nU|?`yU|=YgVqjoMVMt-jVTfXIXGmd6VQyhaVQyxM
zVoYHSX3%7L3DV@33?gBe9j4cVfq@~FA&N1DA&M!5KSeM_I7K9#C5kykEJY$kDn&X)
zCPgltEs7<DHHEE(A&NDHJ%yu%A&M=9Gli>#A&NbPJB6o(A&Mh~H<&?F{uZlKeqvF|
zOOVrEGBGePykulxU?>6+$sht`J%|R$JA<5l1LSnZ6s8u25|EP_T^O1fYZ&4gQ&?&k
zvKUiXBpFgzY#5MutSCG-IFA)YC5VSm$%Z1wF3FI>0oTVV$&kW{!b8Y$NHV0b!{tCc
zgh~*P!-gT9p@t!z3FN+bW-!T;0uo_OVF+f><nn`i8Wa|+3=9mxAWzFNFn~42iq$fL
z;tlM1re?6`Co&bX1T$zdqv!+$7g(nNOeY6OCsZw?-%18erdv#U2Dcb9i`YN`4kCVO
z>1X8Urs@}`Cg$k}6y>KECFbU4=B4X9dg>Px<!7ZPm*|6IORu2v7ne;=W^qY!er|ys
zH^_+~_p&im=|U95$7kkcmc+;F+2rIWC*~B}=^>OOF<*jGl_ujY)}q9`^i)lzA`t%;
zV-~_qMVuhlaWOD3Alsru*p?!YdT=@_0tI6c3n*=Y36NJ`g2Xi0ig*|p7;dqaWagw6
z-(oAsOifNLzQve+i!tpMTR~z`YF>#Z<1Lor)SNUl7v183`4Hr^VkK}g6=CGV0ofQq
zu!;}W+3*+xxrl>-fdQPrH!y<Yx|VSQW5tphhAajbh6#+ZGisS?n6ema7_ykM*@{$Z
zn1UHV{1iq>h7=}ohFWGYj~U8inZQ_)Qp1qN4AvV_%UZ)+!wOO>&XB^A%~I@z#AnWC
zDE6vhsbNiFmSlj-BlyhO3`LU)y=oY;SP;4-84x-o8B!RsIf~xYFlMpVu%s|aFw`)E
z$TTJ>4{9<*6y}aJrZlEzMn;B0xLZ<KMIiPw7NLtVXR{W;-H4(N>Q1N_L>-b#A>s(v
z!uVhpd*OF6L@lzbAtDHuhcguNg)`KEN=!CCNGb#6J4mAA2c=t3dedYp5(1?%=7Rj<
zTU@CXnI-X%^v0T-UzS>2BnXmZODrfz%}dc_D-vU1V2I)_OU%hki3cmV#R^WBQOpJL
zMIfT^77IumBSEI8miU4Ulm+ERP=Ud~$igVV$iv72PLu+S4vb7pN{kjv0gPIVZcMPm
z2-B7faylp(gWL?l;KW$Rz`y`Xgf)zy<O51-k_<JBpris}*D`}juPl%lG$|s>+c4BH
zgLN|@>1KlIwqdAY!YwNaD$_w_A`5!ZYBGVttVn`^fkBf65@2j4@o7c*xlt@7@g@01
zGN7;rWhzJ@fr}7Ouo!}Z29(hl80EmQiVKn>K>-R608kkO4}btr0DwIY%3~mJ)Uwnt
zrZ7n|)UwtvfoZl9kT+Q*7@8TuELL%b8WstL8a9xKI710T4J(YD!YmE-5~xmtBpHxZ
znvA!Y6O)QH*}=ZK#adjFSX6S0IW;dOimA{rimA{jimAvjimAv5;v=x%K;F8=k&;<l
zl9-pAY7X)ns4!w+<bXn06vLGGz5M(C|9?%UB2ZKpDT4~ce@Fr<Ac6l#0;-?@hN=d;
z7b*avAc-8r(quxgi=YCa(iMdb(hgIIED2H%4hBt5P?4IKn420Oe~T+VJ~uz5GzY}y
ziH|QVP0WGF6iI?&7Swtv5(lwB$-D>@vqhj17%6Pv0aOI4mq54}RMc}Y@~{aoatL#X
iaIk@8G?}7ULNaqw!5nP*Z*kZ_oMH#^LNUlB4n_d1n90Hb

literal 1975
zcmXr!<>h+4Wk!q(D+9x01|-1Dz`)?Zz`#%}#lXOj!jQt4!w|*b&XB^C!ra1;!raUh
z#hAhv%%I8g5~Rs58AQS`J4|l^0|P@ULlk2QLljdABS>!wOA2cWTRK}5bBcJ1WQuf(
zOp0uZd<y3rwkVbqt`zPThE&!Ro@PcDhGxbnwiMnJz7~ck_7wgUffj}+jugQZp%#WH
z&J^Jkkrsw1t`yN=22F)qtWNofMJcx!b8az}fN;?*#-dwHNg$l_l97Rdp$J51vK4_m
zRm1`kU<DCuAOhsrA`S)yhGdW;kQbO37#KkE&LHp0F)%QsGt@A|iq$fLf}w?>gdv3q
z;=qYag)G4gn#?FVL3RX#bPB+9a)5L~)iV06WYA=~#iVC&i!rl^3*-P0@k>iTBR@A)
zzc@89Pd}h2KfNe1H#ajcUEk4Dzn~~TD>b=9AM8oJg34c9HaVHaCCT}@1$H1G6ocH$
z#!w{<QGk%tLoi>0e5uKJi?t{*FFjS0sfe3_f#DWo7QzKZydbymF)%P7n<;>9W)VMf
zNP+wc3QllHF)%VPq_EX8R>*-u2$V!z7-9u#nQ9oa7;Bhn7@L_G843l$8B*AxYB+GH
zF$rf#;e@K;!l5Q2oFRn?s)iefnwoHi6jrDjo)pGrCM@n*5YCXo0#(DC!h%)Jk#L3-
zMyMLT6jrQiUW7BGFa$Gb^83961qwL9y#xi#OHk|-aWXJ4y!`wB|Noc&K*az5|Nj?>
zg92O(M2KP%noLEY^mB_NFSR_rBr_*fllc})acWLl5h!|YF&3i5+%1my_{_Y_lK6N~
zOc!f`(lH|oqX44-5o8q~B${DHB!j#FG6CcP5C+Gu1_J{_2}2e`4Py;c8dEc4EprVs
zByLj}#Tg_SY8XMZ4I~_x{ECDa7(hv#B_uN^^%g7055<}+MUo)Dg31(#M_54OXnrY@
zU|?VX<-1~#-3*L;j4%hn0t4<qP&NfQ7VN+<1_p*2ume*VB^gqfppIgOv1>ujWvF37
zl4VLk$g<Qh)i7r<#)HWkmUzY#h8kuN2`c6Mz)=YH6F6=)nTupWS%|eDGc`H&7IQ&<
zu_i0nb5U$1@o7c*xlt@7@g@0DoFETE1lYmMl6*Ap-eSqkFH2Pd6&awSfPqntQI3&=
zk%O^{3lc3LX}FI;(F+O|u#Y1^K4#2f0QsnvxrPbKVyOX%F-bDivVz4xEVdHH8s-`n
z35I4yFpE{30mQ3e1Br+;lrYw?!q_Ry(x9Zw;s^FA#N#61$ShI-`I$K}saTU8?Acqa
z#U+VFCAXMU^HQRi3Js%}3XP(eiVUNeij2^`$&r#-T#}fVoT`cNDi<RJ!Xg-^#1EW1
zG?~B@#2KLMqRE6{gQYZ?AkKqIa)J^Us2GPS1PeeVK@?cECO0Uz<R#{&#>d~{ijU9D
zPbtj-v3cU-3riDoATm*0DVas7$t9WjdBstzpg1T7XGw6p7fFL`0;SU;MG#9BM1W!s
z&C^Ao+z-OVpxn&CD8R_U$i*nc$RW<b!od!f)nqD?0qF**LedR33{)oH;;?}@&<^A=
JaAD8E2mq$?fdK#j

diff --git a/__pycache__/Piece.cpython-36.pyc b/__pycache__/Piece.cpython-36.pyc
index bc198be1829e1b465f4c87e94de2a60d62b0fa56..8b7c34fc71bb2295e61485daec010de8badf2e74 100644
GIT binary patch
delta 167
zcmbQsJeQf%n3tC;W69i@w27RVfy@jL0HT=~7#N%x7#NBL7#J987;6~f8ETkn7~&aI
z7=jrz8T~YwZZQ|+7vEw_&d<p&Ez)GZ#ZsJ_lU4-MR|GO(B|{PG#KU!>><kPHMXaa<
f+vG4tMKyFm1_p*(95%W6DWy57c8nmqLCygHt7{)u

delta 167
zcmbQsJeQf%n3tF9>y{ZY$rCv<1DO~g07QeZGXn!du?PbLLk(jMLp(zbLl#3ih{c$~
z5X_*-=%>kai@6}bIEuY2vpBOPHAR!@7E5tzPFfL2^Gb#ymWhY!MA;Y^7>Za>3D(JB
cjEZXLf(#4{w>WHa^HWN5QtcQ)c7vP)00fF4BLDyZ

diff --git a/game.py b/game.py
index 918385e..a958bdc 100644
--- a/game.py
+++ b/game.py
@@ -1,46 +1,152 @@
 import sys
 import json
+import copy
 import Board
 import Piece
 import Block
 
 board = Board.Board()
+exit_tiles = {'red':[(3,-3),(3,-2),(3,-1),(3,0)]}
 
 def main():
     with open(sys.argv[1]) as file:
         data = json.load(file)
         bdict = {}
         for p in data['pieces']:
-            piece = Piece.Piece(tuple(p))
-            for row in board.tiles:
-                for tile in row:
-                    if tile is not None and tile.pos == piece.pos:
-                        tile.add_piece(piece)
-
+            piece = Piece.Piece(tuple(p), data['colour'])
+            board.tiles[piece.pos[1]+3][piece.pos[0]+3] = piece
+            board.pieces.append(piece)
+        
         for b in data['blocks']:
             block = Block.Block(tuple(b))
-            for row in board.tiles:
-                for tile in row:
-                    if tile is not None and tile.pos == block.pos:
-                        tile.add_block(block)
-
-        bdict = make_bdict()
-        print_board(bdict)
-        board.move((0,0),(0,1))
-        bdict = make_bdict()
-        print_board(bdict)
-        print(board.distance(board.tiles[3][3], board.tiles[2][6]))
-
-def make_bdict():
+            board.tiles[block.pos[1]+3][block.pos[0]+3] = block
+        
+        path = A_Star(board)
+        if path is None:
+            print("No path found")
+        else:
+            for node in path:
+                bdict = make_bdict(node)
+                print_board(bdict)
+
+
+def A_Star(start):
+    closedSet = []
+    openSet = [start]
+
+    start.g = 0
+
+    start.f = heuristic(start)
+    while openSet:
+        minF = 1000000
+        for node in openSet:
+            if node.f <= minF:
+                current = node
+                minF = current.f 
+
+        if checkGoal(current):
+            return retrace(current) 
+
+        openSet.remove(current)
+        closedSet.append(current)
+
+        neighbors = getNeighbors(current)
+
+        for neighbor in neighbors: 
+            """
+            inClosed = False
+            for node in closedSet:
+                if listCompare(neighbor.tiles, node.tiles):
+                    inClosed = True
+            if inClosed:
+                continue
+            """
+
+                #if neighbor.tiles == node.tiles:
+                 #   continue
+            tentative_gScore = current.g + 1
+            
+            inOpen = False
+            for node in openSet:
+                if listCompare(neighbor.tiles, node.tiles):
+                    inOpen = True
+
+            if not inOpen:
+                openSet.append(neighbor)
+                
+            elif tentative_gScore >= neighbor.g:
+                continue
+
+            neighbor.parent = current
+            neighbor.g = tentative_gScore
+            neighbor.f = neighbor.g + heuristic(neighbor)
+
+def listCompare(list1, list2):
+    for i in range(0,7):
+        for j in range(0,7):
+            if type(list1[i][j]) is not type(list2[i][j]):
+                return False
+
+    return True
+
+def heuristic(node):
+    h = 0
+    for piece in node.pieces:
+        min_dist = 10
+        for tile in exit_tiles['red']:
+            if board.distance(piece.pos, tile) <= min_dist:
+                min_dist = board.distance(piece.pos, tile)
+        h += (min_dist + 1) / 2
+    return h
+
+def checkGoal(state):
+    if not state.pieces:
+        return True
+    else:
+        return False
+
+def retrace(goal):
+    path = []
+    cur = goal
+    while cur.parent is not None:
+        path.insert(0,cur)
+        cur = cur.parent
+    path.insert(0,cur)
+    return path
+
+def getNeighbors(current):
+    neighbors = []
+    moves = current.getMoves()
+    
+    if isinstance(moves, Piece.Piece):
+        neighbor = copy.deepcopy(current)
+        
+        for piece in neighbor.pieces:
+            if piece.pos == moves.pos:
+                neighbor.pieces.remove(piece)
+                break
+
+        neighbor.tiles[moves.pos[1]+3][moves.pos[0]+3] = None
+        
+        neighbors.append(neighbor)
+        return neighbors
+
+    for move in moves:
+        neighbor = copy.deepcopy(current)
+        neighbor.move(move[0], move[1])
+        neighbors.append(neighbor)
+    return neighbors
+
+def make_bdict(state):
 
     bdict = {}
 
-    for row in board.tiles:
-        for tile in row:
-            if tile is not None and tile.piece is not None:
-                bdict[tile.piece.pos] = 'p'
-            elif tile is not None and tile.block is not None:
-                bdict[tile.block.pos] = 'b'
+    for row in state.tiles:
+        for col in row:
+            if isinstance(col, Piece.Piece):
+                bdict[col.pos] = 'p'
+            elif isinstance(col, Block.Block):
+                bdict[col.pos] = 'b'
 
     return bdict
 
diff --git a/input2.json b/input2.json
new file mode 100644
index 0000000..e27ab87
--- /dev/null
+++ b/input2.json
@@ -0,0 +1,5 @@
+
+	"colour": "red",
+	"pieces": [[1,1]],
+	"blocks": []
+}
diff --git a/input3.json b/input3.json
new file mode 100644
index 0000000..acb07c4
--- /dev/null
+++ b/input3.json
@@ -0,0 +1,5 @@
+{
+	"colour": "red",
+	"pieces": [[0,0],[0,-1]],
+	"blocks": [[-1,0],[-1,1],[1,1],[3,-1]]
+}
diff --git a/input4.json b/input4.json
new file mode 100644
index 0000000..d6986fa
--- /dev/null
+++ b/input4.json
@@ -0,0 +1,5 @@
+{
+	"colour": "red",
+	"pieces": [[0,0],[0,-1],[-2,1],[-3,0]],
+	"blocks": [[-1,0],[-1,1],[1,1],[3,-1]]
+}
diff --git a/input5.json b/input5.json
new file mode 100644
index 0000000..15ed7be
--- /dev/null
+++ b/input5.json
@@ -0,0 +1,7 @@
+{
+	"colour": "red",
+	"pieces": [[0,-3],[1,-3],[2,-3],[-3,0]],
+	"blocks": [[3,-3],[3,-2],[3,-1],[2,-1],[2,0],[1,0],[1,1],[0,1],[0,2],[-1,2]]
+}
+
+
diff --git a/out.txt b/out.txt
new file mode 100644
index 0000000..515c6b4
--- /dev/null
+++ b/out.txt
@@ -0,0 +1,80 @@
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |     | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |     |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |     |     |  p  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |     | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |     |     |     |  p  |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |     |     |     |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  p  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |     |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |     |     |     |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |     | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |     |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |     |     |     |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |     | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |     |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |     |     |     |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
diff --git a/out1.txt b/out1.txt
new file mode 100644
index 0000000..cc70f06
--- /dev/null
+++ b/out1.txt
@@ -0,0 +1,176 @@
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |  p  |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |  p  |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |  p  |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |  p  |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |  p  |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |  p  |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |  p  |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |  p  |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |  p  | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |  p  |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |  p  |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |  p  | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |  p  |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |  p  | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |  p  | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |  p  | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |  p  | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |  p  | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |  p  | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
diff --git a/out2.txt b/out2.txt
new file mode 100644
index 0000000..e69de29
diff --git a/out5.txt b/out5.txt
new file mode 100644
index 0000000..009d5a7
--- /dev/null
+++ b/out5.txt
@@ -0,0 +1,112 @@
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |  p  |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |  p  |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |  p  |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |  p  |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |  p  |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |  p  | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |  p  | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
diff --git a/out6.txt b/out6.txt
new file mode 100644
index 0000000..cc70f06
--- /dev/null
+++ b/out6.txt
@@ -0,0 +1,176 @@
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |  p  |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |  p  |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |  p  |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |  p  |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |  p  |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |  p  |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |  p  |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |  p  |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |  p  | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |  p  |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |  p  |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |  p  | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |  p  |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |  p  | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |  p  | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |  p  | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |  p  | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |  p  | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |  p  |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |  p  | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
+# 
+#           .-'-._.-'-._.-'-._.-'-.
+#          |     |     |     |     | 
+#        .-'-._.-'-._.-'-._.-'-._.-'-.
+#       |     |     |     |     |     | 
+#     .-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+#    |     |     |     |     |     |  b  | 
+#  .-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-.
+# |     |     |  b  |     |     |     |     | 
+# '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#    |     |     |  b  |     |  b  |     | 
+#    '-._.-'-._.-'-._.-'-._.-'-._.-'-._.-'
+#       |     |     |     |     |     | 
+#       '-._.-'-._.-'-._.-'-._.-'-._.-'
+#          |     |     |     |     |
+#          '-._.-'-._.-'-._.-'-._.-'
-- 
GitLab