Haskell, 461 379 bytes
82 bytes saved by Ørjan Johansen
------_---------mpp-mppr--
----- ----------a -l--
-- rl=p i__ --
p _ ="left"-- n niam= --_
p _ ="right"m="left"-- === n==p--
main=putStr $p a="right"++ p"""" --
-- main =putStr urlrl --
-- - n +r tie =iep--
-- --$ +t Sgf pgf---
-- -" "S tht uht---
-- "tr "tt rt"tt" --
-- tht -thu "S"- --
-- fgS -fgp $-t+- --
-- eit pei= - r+ n--
-- lru lr rtStup= --niam
-- ""p "" $++"thgir"=a rtStup=niamp
-- ===p==n --"thgir"= _"tfel"=m p
-- _ =main n --"tfel"= _ p
-- __i --p=lr
---l a------------- --
---ppm---rppm----------_--
---ppm---rppm----------_--
---l a---------------
-- __i --
-- _ =main n --"tfel"=p _ pp=lr
-- ===p==n --"thgir"= _"tfel"=m p
-- ""p "" $++"thgir"=a rtStup=niamp
-- lru lr rtStup= --niam
-- eit pei= - r+ n--
-- fgS -fgp $-t+- --
-- tht -thu "S"- --
-- "tr "tt rt"tt" --
-- -" "S tht uht---
-- --$ +t Sgf pgf--
-
- - n +r tie =iep--
-- main =putStr urlrl --
main=putStr $p a="right"++ p"""" --
p _ ="right"m="left"-- === n==p--
prl=p _ ="left"p-- n niam= --_
-- i__ --
---------------a -l--
-----_----------mpp-mppr--