@0
MOV 999, DOWN
N: MOV RIGHT, ACC
SAV
SUB DOWN
JLZ U
MOV ACC, DOWN
SWP
SUB DOWN
MOV ACC, DOWN
JMP N
U: SWP
MOV ACC, DOWN
JMP N

@1
N: MOV UP, ACC
JEZ E
MOV ACC, RIGHT
MOV ACC, LEFT
SWP
ADD RIGHT
SAV
JMP N
E: SWP
MOV 0, RIGHT
MOV ACC, DOWN

@2
N: MOV LEFT, ACC
JEZ R
MOV ACC, LEFT
SWP
ADD 1
SAV
JMP N
R: SWP
NEG
MOV ACC, DOWN

@3
W: MOV UP, DOWN
MOV LEFT, ACC
MOV 999, LEFT
SAV
MOV RIGHT, ACC
MOV ACC, DOWN
SWP
L: MOV ACC, DOWN
SWP
ADD 1
JGZ W
SWP
ADD 1
JMP L

@5
SUB UP
SAV
MOV UP, ACC
SWP
A: ADD UP
SWP
ADD 1
JGZ D
SWP
JMP A
D: SWP
MOV ACC, DOWN
MOV 0, ACC
