Hexagonal maze time! Time for another maze challenge, but not as you know it.

The rules for this challenge are a little different than most maze challenges. The tile types are defined as follows:


S: The location on the maze you start at
E: The location you are trying to get to
0: Wall that you can't cross
+: Floor that you can cross


You can travel in one of six directions: up-left, up-right, left, right, down-left, or down-right.

\ /
-S-
/ \


The maze does not wrap. The goal is to find the shortest path string to get from S to E.

Input:

Input is space separated lines like the mazes shown. No trailing space will follow a line.

Output:

A string of R, L, and F where


R rotates you right (clockwise) 60 degrees 
L rotates you left (counter clockwise) 60 degrees 
F moves you one space in the direction you are pointing


You start pointing left-up

The shortest path is counted by the length of the string produced, not the number of positions visited. Your program must print the shortest path as the solution.

If the maze is unsolvable you should output Invalid maze!.

(&gt;&gt;&gt; is the output)

     0 0 0 0
    0 + 0 + 0
   0 0 0 + + 0
  0 + 0 + 0 + 0
 0 0 + + 0 0 + 0
0 0 + 0 + 0 0 + 0
 E 0 + 0 0 + + 0 
  + + 0 + 0 + 0
   0 0 0 0 0 +
    + 0 + + +
     0 S 0 0

&gt;&gt;&gt;RFRFFLFLFRFFLFFFLFLFFRFLFLFRFRFRF

  + 0 0 0 0 0 0
 0 0 0 0 0 + + 0
0 0 E 0 + 0 0 + 0
 0 0 0 0 0 0 0 +
  0 + 0 0 + + +
   0 0 + + 0 0
    S + 0 0 0

&gt;&gt;&gt;Invalid maze!

0 E S

&gt;&gt;&gt;LF


 E + 0
0 + + +
 0 0 S
  + +

&gt;&gt;&gt;FFLF

  E
 0 +
0 + +
 0 +
  S

&gt;&gt;&gt;RFFLFF

 0 E + 0 0
0 + 0 0 + +
 + 0 + + + 0
  + 0 + 0 + 0
   + + + 0 S

&gt;&gt;&gt;FFLFLFFRFRFFRFF

 E 0 + + 0
0 + 0 + + 0
 + + + 0 + 0
  + 0 0 0 0 0
   + + + + 0
    + 0 S 0

&gt;&gt;&gt;FLFFRFFRFLF


(Note that some of the mazes have other solutions that are the same length but are not listed here)
Hexagony, 2437 bytes

The long-awaited program is here:

(.=$&gt;({{{({}}{\&gt;6'%={}{?4=$/./\_&gt;&lt;./,{}}{&lt;$&lt;\?{&amp;P'_("'"#&lt;".&gt;........_..\&gt;&lt;/&lt;/(\.|/&lt;&gt;}{0/'$.}_.....&gt;&lt;&gt;)&lt;.$)).&gt;&lt;$./$\))'"&lt;$_.)&gt;&lt;.&gt;%'2{/_.&gt;(/)|_&gt;}{{}./..&gt;#/|}.'/$|\})'%.&lt;&gt;{=\$_.\&lt;$))&lt;&gt;(|\4?&lt;.{.%.|/&lt;/{=....$/&lt;&gt;/...'..._.&gt;'"'_/&lt;}....({{&gt;%'))}/.&gt;&lt;.$./{}{\&gt;$\|$(&lt;&gt;&lt;$?..\\&lt;.}_&gt;=&lt;._..\(/.//..\}\.)))))&lt;...2/|$\){}/{..&gt;&lt;&gt;).../_$..$_&gt;{0#{{((((/|#.}&gt;&lt;..&gt;.&lt;_.\(//$&gt;))&lt;(/.\.\})'"#4?#\_=_-..=.&gt;(&lt;...(..&gt;(/\")&lt;((.\=}}}\&gt;{}{?&lt;,|{&gt;/...(...&gt;($&gt;{)&lt;.&gt;{=P&amp;/(&gt;//(_.)\}=#=\4#|)__.&gt;"'()'\.'..".(\&amp;P'&amp;&lt;/'&amp;\$_&gt;&lt;/}{)&lt;\&lt;0|\&lt;.}.\"\.(.(.(/(\..{.&gt;}=P/|&gt;&lt;.(...(..."/&lt;.{"_{{=..)..&gt;})&lt;|&gt;&lt;$}}/\}}&amp;P&lt;\(/._...&gt;\$'/.&gt;}/{}}{)..|/(\'.&lt;(\''"")$/{{}})&lt;..'...}}&gt;3#./\$&lt;}|.}|..$.&gt;&lt;${{}/&gt;.}}{{&lt;&gt;(""''/..&gt;){&lt;}\?=}{\._=/$/=_&gt;)\{_\._..&gt;)&lt;/{\=._.....&gt;(($&gt;}}&lt;.&gt;5#.\/}&gt;)&lt;&gt;-/(.....{\&lt;&gt;}}{{/)\$&gt;=}}}))&lt;...=...(\?{{{?&lt;\&lt;._...}.&gt;&lt;..\}}/..&gt;'P&amp;//(\......(..\})"'/./&amp;P'&amp;P{}}&amp;P'&lt;{}\{{{({{{(.\&amp;P=&lt;.&gt;&lt;$"&amp;1}(./'"?&amp;'&amp;"\.|&gt;}{?&amp;"?&amp;'P&amp;/|{/&amp;P''&lt;/(\..&gt;P&amp;{/&amp;/}{}&amp;'&amp;},/"&amp;P'&amp;?&lt;.|\}{&amp;?"&amp;P'&amp;P'&lt;._.&gt;"&amp;}\(&gt;))&lt;\=}{}&lt;.{/}&amp;?"&amp;"&amp;/"&amp;"?&amp;}\.|&gt;?&amp;"?&amp;{{}}?&amp;//x'&amp;{((&lt;._\($|(}.\/}{/&gt;=&amp;'P&amp;"&amp;/".{3?&lt;.|\"&amp;P'&amp;P}{}&amp;P'&lt;.&gt;&amp;{}}?&amp;"&amp;'P&amp;\=}}&lt;.}/2?".?''5?"/?1{(}\."..../{},&lt;../&amp;//&amp;"&amp;P'&amp;P'&amp;"&amp;"&lt;/{}}{{/&gt;"?1''?.'({/}}{}&lt;..&gt;?&amp;"?&amp;}}$&gt;)|P/&lt;.&gt;"&amp;'P&amp;'P&amp;"&amp;"&amp;{/........._/"\$#1}/._.........|,($&lt;'"}'?/_$P#"$0'${)$})$)|........(&gt;/\.#1?&lt;$&lt;|.....&gt;?&amp;}$&gt;=?&amp;"?&amp;/1$..&gt;I;n;v;a;l;i;d;P0;m;a\|\"(}}({=/..$_...\"&amp;P=},}}&amp;P'&lt;.|&gt;&lt;....................;...&gt;1"(}}){=/_....&gt;'P&amp;'P&amp;}}_?&amp;/#.&gt;}?4'%\/&lt;...@;1P;e;z&lt;._&gt;&lt;&gt;"))'?=&lt;.$$=..\&amp;P}{&amp;&lt;/\"&gt;&lt;_'|/'&amp;=}&lt;.&gt;{{.&lt;.........|&gt;(/&gt;3")}}){=/=/_.&gt;}P&amp;"?/"&lt;).}_.&gt;?4{=:&lt;.|_...........\$\2$'&gt;4")}}({/."\{&amp;P'&amp;?/&gt;&lt;.?|&gt;P...."/=(&gt;(/./(}{{\..&gt;(&lt;&gt;(&lt;&gt;?5'"((..'/...#,&lt;/,}{{\.......;.F&gt;..\(...}....._.._..._..._........__..'$......\.&lt;R..$.&gt;))&lt;$}{{&amp;P'&amp;?}&lt;.\$$.\...................$\.&lt;&gt;L\.\(('_"\&gt;}P&amp;"?&amp;{/__/=(.(&lt;.&gt;_)..&lt;...&gt;....\..._.&lt;.....&amp;?=\}=&amp;?"&amp;&lt;.."'&gt;.\&gt;))&lt;.|&gt;))\.|$.&gt;&amp;"?&amp;{{}=P&amp;}?&amp;=}/{\.&gt;&amp;{{P/{"&gt;)&lt;|\{&lt;(|\(_(&lt;&gt;\_\?"&amp;P'&amp;P}{{{&amp;&lt;=_.&gt;\&amp;\?"&amp;?&lt;|'{/(/&gt;{{/_&gt;.{/=/\\.&gt;'P&amp;"?&amp;"?&amp;"?/._(\)\\&gt;?&amp;"/_|.&gt;/.$/|$..\\&gt;&lt;..\&amp;?}{{}&amp;P'&amp;&lt;}.._&gt;{&lt;|\{}&lt;._$&gt;-")&lt;.&gt;_)&lt;|{)$|..&gt;}=P&amp;"?&amp;"?/...{"./&gt;'P&amp;/=_\{?(/&gt;(&lt;&gt;\(|)__.\&amp;?}}{}&amp;P&lt;}.$.\&amp;P'&amp;P'&amp;&lt;\})))&amp;=&lt;\)&lt;'.'_,&gt;&lt;.&gt;"?&amp;'P&amp;'/.|&gt;?&amp;{{}?&amp;"?/&gt;&amp;"?&amp;"?&amp;}}&lt;.".(\\\&amp;?={&amp;P&lt;{..\"&amp;?"&amp;P'&amp;&lt;.?....|.$'\$/\"/.,.&gt;{}{}=/..&gt;&amp;'P&amp;}{{}P/\{}&amp;P{(&amp;?"&amp;?"&lt;'.(\&amp;?"&amp;&lt;}..\?"&amp;?"&amp;&lt;.&gt;P&amp;={}}?&amp;}}P&amp;'P&amp;/.'.&gt;&amp;"?/..&gt;P&amp;}}{{P/\}&amp;P'&amp;?={&amp;?&lt;$}=\"."\P'&lt;{..\'&amp;P'&amp;&lt;....&gt;'P&amp;{}P&amp;"?&amp;{{&lt;\\..&gt;&amp;/$.&gt;}{?&amp;"?/|'$&amp;.P&amp;$P\$'&amp;P={(/..\P\\.\{&amp;?"&amp;?\...\?{{}=&lt;$&amp;P'&amp;P&lt;.,./&lt;?\...{}=P\"&amp;&lt;.&gt;=P&amp;""'?&amp;'P&amp;'/$.#1.&gt;{?1#=$\&amp;'P/\}&amp;P'&amp;?={(,}&lt;._?_&amp;\&amp;?{=&amp;{*=}4&lt;.&gt;P&amp;"?&amp;"?&amp;'P&amp;/1_$&gt;}?&amp;}}=?&amp;){?/\{}&amp;P'&amp;?={&amp;?#&lt;$


Try it online!

"Readable" version:

                             ( . = $ &gt; ( { { { ( { } } { \ &gt; 6 ' % = { } { ? 4 = $ / .
                            / \ _ &gt; &lt; . / , { } } { &lt; $ &lt; \ ? { &amp; P ' _ ( " ' " # &lt; " .
                           &gt; . . . . . . . . _ . . \ &gt; &lt; / &lt; / ( \ . | / &lt; &gt; } { 0 / ' $
                          . } _ . . . . . &gt; &lt; &gt; ) &lt; . $ ) ) . &gt; &lt; $ . / $ \ ) ) ' " &lt; $ _
                         . ) &gt; &lt; . &gt; % ' 2 { / _ . &gt; ( / ) | _ &gt; } { { } . / . . &gt; # / | }
                        . ' / $ | \ } ) ' % . &lt; &gt; { = \ $ _ . \ &lt; $ ) ) &lt; &gt; ( | \ 4 ? &lt; . {
                       . % . | / &lt; / { = . . . . $ / &lt; &gt; / . . . ' . . . _ . &gt; ' " ' _ / &lt; }
                      . . . . ( { { &gt; % ' ) ) } / . &gt; &lt; . $ . / { } { \ &gt; $ \ | $ ( &lt; &gt; &lt; $ ?
                     . . \ \ &lt; . } _ &gt; = &lt; . _ . . \ ( / . / / . . \ } \ . ) ) ) ) ) &lt; . . . 2
                    / | $ \ ) { } / { . . &gt; &lt; &gt; ) . . . / _ $ . . $ _ &gt; { 0 # { { ( ( ( ( / | #
                   . } &gt; &lt; . . &gt; . &lt; _ . \ ( / / $ &gt; ) ) &lt; ( / . \ . \ } ) ' " # 4 ? # \ _ = _ -
                  . . = . &gt; ( &lt; . . . ( . . &gt; ( / \ " ) &lt; ( ( . \ = } } } \ &gt; { } { ? &lt; , | { &gt; /
                 . . . ( . . . &gt; ( $ &gt; { ) &lt; . &gt; { = P &amp; / ( &gt; / / ( _ . ) \ } = # = \ 4 # | ) _ _
                . &gt; " ' ( ) ' \ . ' . . " . ( \ &amp; P ' &amp; &lt; / ' &amp; \ $ _ &gt; &lt; / } { ) &lt; \ &lt; 0 | \ &lt; . }
               . \ " \ . ( . ( . ( / ( \ . . { . &gt; } = P / | &gt; &lt; . ( . . . ( . . . " / &lt; . { " _ { {
              = . . ) . . &gt; } ) &lt; | &gt; &lt; $ } } / \ } } &amp; P &lt; \ ( / . _ . . . &gt; \ $ ' / . &gt; } / { } } {
             ) . . | / ( \ ' . &lt; ( \ ' ' " " ) $ / { { } } ) &lt; . . ' . . . } } &gt; 3 # . / \ $ &lt; } | . }
            | . . $ . &gt; &lt; $ { { } / &gt; . } } { { &lt; &gt; ( " " ' ' / . . &gt; ) { &lt; } \ ? = } { \ . _ = / $ / =
           _ &gt; ) \ { _ \ . _ . . &gt; ) &lt; / { \ = . _ . . . . . &gt; ( ( $ &gt; } } &lt; . &gt; 5 # . \ / } &gt; ) &lt; &gt; - /
          ( . . . . . { \ &lt; &gt; } } { { / ) \ $ &gt; = } } } ) ) &lt; . . . = . . . ( \ ? { { { ? &lt; \ &lt; . _ . . .
         } . &gt; &lt; . . \ } } / . . &gt; ' P &amp; / / ( \ . . . . . . ( . . \ } ) " ' / . / &amp; P ' &amp; P { } } &amp; P ' &lt;
        { } \ { { { ( { { { ( . \ &amp; P = &lt; . &gt; &lt; $ " &amp; 1 } ( . / ' " ? &amp; ' &amp; " \ . | &gt; } { ? &amp; " ? &amp; ' P &amp; /
       | { / &amp; P ' ' &lt; / ( \ . . &gt; P &amp; { / &amp; / } { } &amp; ' &amp; } , / " &amp; P ' &amp; ? &lt; . | \ } { &amp; ? " &amp; P ' &amp; P ' &lt;
      . _ . &gt; " &amp; } \ ( &gt; ) ) &lt; \ = } { } &lt; . { / } &amp; ? " &amp; " &amp; / " &amp; " ? &amp; } \ . | &gt; ? &amp; " ? &amp; { { } } ? &amp; /
     / x ' &amp; { ( ( &lt; . _ \ ( $ | ( } . \ / } { / &gt; = &amp; ' P &amp; " &amp; / " . { 3 ? &lt; . | \ " &amp; P ' &amp; P } { } &amp; P ' &lt;
    . &gt; &amp; { } } ? &amp; " &amp; ' P &amp; \ = } } &lt; . } / 2 ? " . ? ' ' 5 ? " / ? 1 { ( } \ . " . . . . / { } , &lt; . . / &amp; /
   / &amp; " &amp; P ' &amp; P ' &amp; " &amp; " &lt; / { } } { { / &gt; " ? 1 ' ' ? . ' ( { / } } { } &lt; . . &gt; ? &amp; " ? &amp; } } $ &gt; ) | P / &lt;
  . &gt; " &amp; ' P &amp; ' P &amp; " &amp; " &amp; { / . . . . . . . . . _ / " \ $ # 1 } / . _ . . . . . . . . . | , ( $ &lt; ' " } ' ? /
 _ $ P # " $ 0 ' $ { ) $ } ) $ ) | . . . . . . . . ( &gt; / \ . # 1 ? &lt; $ &lt; | . . . . . &gt; ? &amp; } $ &gt; = ? &amp; " ? &amp; / 1 $
  . . &gt; I ; n ; v ; a ; l ; i ; d ; P 0 ; m ; a \ | \ " ( } } ( { = / . . $ _ . . . \ " &amp; P = } , } } &amp; P ' &lt; . |
   &gt; &lt; . . . . . . . . . . . . . . . . . . . . ; . . . &gt; 1 " ( } } ) { = / _ . . . . &gt; ' P &amp; ' P &amp; } } _ ? &amp; / #
    . &gt; } ? 4 ' % \ / &lt; . . . @ ; 1 P ; e ; z &lt; . _ &gt; &lt; &gt; " ) ) ' ? = &lt; . $ $ = . . \ &amp; P } { &amp; &lt; / \ " &gt; &lt; _ '
     | / ' &amp; = } &lt; . &gt; { { . &lt; . . . . . . . . . | &gt; ( / &gt; 3 " ) } } ) { = / = / _ . &gt; } P &amp; " ? / " &lt; ) . } _
      . &gt; ? 4 { = : &lt; . | _ . . . . . . . . . . . \ $ \ 2 $ ' &gt; 4 " ) } } ( { / . " \ { &amp; P ' &amp; ? / &gt; &lt; . ? |
       &gt; P . . . . " / = ( &gt; ( / . / ( } { { \ . . &gt; ( &lt; &gt; ( &lt; &gt; ? 5 ' " ( ( . . ' / . . . # , &lt; / , } { { \
        . . . . . . . ; . F &gt; . . \ ( . . . } . . . . . _ . . _ . . . _ . . . _ . . . . . . . . _ _ . . ' $
         . . . . . . \ . &lt; R . . $ . &gt; ) ) &lt; $ } { { &amp; P ' &amp; ? } &lt; . \ $ $ . \ . . . . . . . . . . . . . .
          . . . . . $ \ . &lt; &gt; L \ . \ ( ( ' _ " \ &gt; } P &amp; " ? &amp; { / _ _ / = ( . ( &lt; . &gt; _ ) . . &lt; . . . &gt;
           . . . . \ . . . _ . &lt; . . . . . &amp; ? = \ } = &amp; ? " &amp; &lt; . . " ' &gt; . \ &gt; ) ) &lt; . | &gt; ) ) \ . | $
            . &gt; &amp; " ? &amp; { { } = P &amp; } ? &amp; = } / { \ . &gt; &amp; { { P / { " &gt; ) &lt; | \ { &lt; ( | \ ( _ ( &lt; &gt; \ _
             \ ? " &amp; P ' &amp; P } { { { &amp; &lt; = _ . &gt; \ &amp; \ ? " &amp; ? &lt; | ' { / ( / &gt; { { / _ &gt; . { / = / \ \
              . &gt; ' P &amp; " ? &amp; " ? &amp; " ? / . _ ( \ ) \ \ &gt; ? &amp; " / _ | . &gt; / . $ / | $ . . \ \ &gt; &lt; . .
               \ &amp; ? } { { } &amp; P ' &amp; &lt; } . . _ &gt; { &lt; | \ { } &lt; . _ $ &gt; - " ) &lt; . &gt; _ ) &lt; | { ) $ | .
                . &gt; } = P &amp; " ? &amp; " ? / . . . { " . / &gt; ' P &amp; / = _ \ { ? ( / &gt; ( &lt; &gt; \ ( | ) _ _ .
                 \ &amp; ? } } { } &amp; P &lt; } . $ . \ &amp; P ' &amp; P ' &amp; &lt; \ } ) ) ) &amp; = &lt; \ ) &lt; ' . ' _ , &gt; &lt;
                  . &gt; " ? &amp; ' P &amp; ' / . | &gt; ? &amp; { { } ? &amp; " ? / &gt; &amp; " ? &amp; " ? &amp; } } &lt; . " . ( \ \
                   \ &amp; ? = { &amp; P &lt; { . . \ " &amp; ? " &amp; P ' &amp; &lt; . ? . . . . | . $ ' \ $ / \ " / . ,
                    . &gt; { } { } = / . . &gt; &amp; ' P &amp; } { { } P / \ { } &amp; P { ( &amp; ? " &amp; ? " &lt; ' . (
                     \ &amp; ? " &amp; &lt; } . . \ ? " &amp; ? " &amp; &lt; . &gt; P &amp; = { } } ? &amp; } } P &amp; ' P &amp; / . '
                      . &gt; &amp; " ? / . . &gt; P &amp; } } { { P / \ } &amp; P ' &amp; ? = { &amp; ? &lt; $ } = \ " . "
                       \ P ' &lt; { . . \ ' &amp; P ' &amp; &lt; . . . . &gt; ' P &amp; { } P &amp; " ? &amp; { { &lt; \ \ .
                        . &gt; &amp; / $ . &gt; } { ? &amp; " ? / | ' $ &amp; . P &amp; $ P \ $ ' &amp; P = { ( / . .
                         \ P \ \ . \ { &amp; ? " &amp; ? \ . . . \ ? { { } = &lt; $ &amp; P ' &amp; P &lt; . , .
                          / &lt; ? \ . . . { } = P \ " &amp; &lt; . &gt; = P &amp; " " ' ? &amp; ' P &amp; ' / $ .
                           # 1 . &gt; { ? 1 # = $ \ &amp; ' P / \ } &amp; P ' &amp; ? = { ( , } &lt; . _ ?
                            _ &amp; \ &amp; ? { = &amp; { * = } 4 &lt; . &gt; P &amp; " ? &amp; " ? &amp; ' P &amp; / 1 _
                             $ &gt; } ? &amp; } } = ? &amp; ) { ? / \ { } &amp; P ' &amp; ? = { &amp; ? # &lt; $


Tested on Esoteric IDE: TIO might time out on some of the larger test cases but all verified. Many thanks to Timwi, this wouldn't have been possible without the IDE.

There's quite a bit of empty space, so I might have been able to fit this onto a side-length 28 hexagon (instead of side-length 29) but that will be a massive task so I'm probably not going to attempt it.

Basic Explanation

Click the images for a larger and more detailed version.

Functions


Note: Divisions are generally correct but may occasionally be a rough guess.

This code is quite "functional" - as much as Hexagony allows it to be. There are eight main functions in this code labelled in the above diagram, named by the numbers with which they are called (so their instruction pointer numbers are that number mod 6). In (rough) order of calling, they are (quoted names are locations in memory which will be explained later):


S: The starting function - reads the input and sets up the "reference array", then starts the "path stack" with the three paths F, R and L ready for main processing. Instruction pointer 0 moves to function 0 while the execution moves to function 1.  
1 (-11): The main function - uses 2 to get a path, 3 to check its validity, and if valid goes to function -110/-10 twice and then 4 three times to copy the new paths across into the "path stack", finishing by returning to itself. May call function 5 if the path is at the end location.  
2: Gets the next path off the "path stack" ready for processing, calls function -1 if no paths left on the stack. Returns to function 1.  
3: Takes a pair of values as well as the move number and checks the "reference array" to see whether the current path has ended at a valid location. A valid location is either the start within the first 3 moves, or any + within 2 moves of it first being reached. Returns to function 1.  
-10/-110: Copies the current path. Returns to function 1.  
0: Helps function 1 to manage direction of movement with F. Returns to function 1.  
4: Takes a copy of the current path and interlinked with function 1 changes it into the same path with either F, R or L appended. Returns to function 1.  
5: Takes the path and prints out the correct path (e.g. FFLF), then terminates the program.  
-1: Prints Invalid maze! and terminates.
(Double arrows): Due to lack of space, function 1/-11 had to go off into the space above function -1.


Memory


Note: Thanks to Esoteric IDE again for the diagram

The memory consists of three main parts:


Reference array: The grid is stored columns 2 apart, with a value at each step:


0 represents either a  , 0 or a valid place that was accessed more moves ago than would be required to exit the place in any direction.
1 represents a + that hasn't yet been reached.
(higher number) represents the move number where there will have been enough moves to exit the place in any direction.
10 also represents a new-line: these are never reached assuming they immediately follow the last non-white-space character.

Rail: Consists of -1s with a single -2 on the left, allows memory pointer to quickly return to the core processing area.
Path stack: Stores each of the untested paths in order by path ID (which is directly related to move number so the shorter paths are tested first). The path is stored as follows:



Rot: the rotation at the end of the current path: 0 for up-left and increasing clockwise to 5
Move: the current move number (instructions - 1)
Path: the current path, stored in quaternary with F, R, L as 1, 2, 3 respectively
x/y: coordinates at the end of the current path: x+1 -1s right then y values up (though y=0 is processed as 1 anyway for the purposes of separating the rail from the reference data)



Other important memory locations:


The x/y of the E is stored here.
This space is used to transition paths in and out of memory.
This location is the centre of where each path is stored during processing.