@0
L: MOV UP, ACC
JEZ END
SUB 3
JNZ P
SWP
ADD 1
SWP
JMP L
END: MOV 0, DOWN
SWP
MOV ACC, DOWN
JMP L
P: MOV ACC, DOWN

@1
L: MOV RIGHT, ACC
JEZ END
ADD 1
JNZ P
SWP
ADD 1
SWP
JMP L
END: MOV 1, DOWN
SWP
MOV ACC, DOWN
MOV ACC, DOWN
JMP L
P: MOV -1, DOWN

@2
L: MOV UP, ACC
JGZ R
MOV ACC, LEFT
JEZ E
JMP L
R: MOV ACC, RIGHT
JMP L
E: MOV 0, RIGHT
MOV UP, ACC
MOV ACC, DOWN
SUB DOWN
MOV -10, DOWN
MOV ACC, DOWN
MOV DOWN, NIL
MOV 1, DOWN

@3
L: MOV LEFT, ACC
JEZ END
SUB 1
JNZ P
SWP
ADD 1
SWP
JMP L
END: MOV 1, DOWN
SWP
MOV ACC, DOWN
MOV ACC, DOWN
JMP L
P: MOV -1, DOWN

@4
S: MOV -1, ACC
L: ADD 1
JRO UP
SUB UP
JGZ W1
MOV UP, RIGHT
JLZ W2
MOV 0, RIGHT
JMP S
W2: MOV 2, RIGHT
JMP S
W1: ADD UP
MOV ACC, RIGHT
MOV 1, RIGHT

@5
MOV 3, ACC
SAV
L: MOV UP, ACC
SUB ANY
JLZ GT
MOV 0, UP
MOV LAST, NIL
JGZ LT
JMP S
GT: MOV ACC, UP
MOV LAST, ACC
S: SAV
LT: JRO UP
SWP
MOV ACC, DOWN

@6
S: MOV -1, ACC
L: ADD 1
JRO UP
SUB UP
JGZ W5
MOV UP, LEFT
JLZ W4
MOV 0, LEFT
JMP S
W4: MOV 4, LEFT
JMP S
W5: ADD UP
MOV ACC, LEFT
MOV 5, LEFT
