Strong array notation

Strong array notation is a notation for large numbers made by Wikia user Hyp cos.

The notation is currently composed of 12 parts, which is as follows:


 * Linear array notation (LAN)
 * Extended array notation (exAN)
 * Expanding array notation (EAN)
 * Multiple expanding array notation (mEAN)
 * Primary dropping array notation (pDAN)
 * Secondary dropping array notation (sDAN)
 * Dropping array notation (DAN)
 * Nested dropper array notation (NDAN)
 * Weak dropper-expanding notation (WDEN)
 * Multiple weak dropper-expanding notation (mWDEN)
 * Weak dropper-multiexpanding notation (WDmEN)
 * Primary dropper-dropping notation (pDDN)

In addition, there were five parts that didn't work:


 * Nested dropper array notation (NDAN)
 * Dropper-expanding notation (DEN)
 * Multiple dropper-expanding notation (mDEN)
 * Second-order dropper-expanding notation (soDEN)
 * Higher-order dropper-expanding notation (hoDEN)

Linear array notation
Linear array notation is the first part of strong array notation. It has the following rules:


 * Rule 1 (base rule): s(a,b) = a^b
 * Rule 2 (tailing rule) s(#,1) = s(#) (remove trailing 1s)
 * Rule 3 (recursion rule): s(a,b,c #) = s(a,s(a,b-1,c #),c-1 #)

If none of these applies, start the process, which is as follows:


 * Start from the third entry. If it is a one, skip to the next entry.
 * If it is greater than 1, decrease it by 1, change the previous entry into the current second entry, and change all the other entries before the current entry into the original first entry. This works even if the second entry is a 1.

Examples
s(3,2,3) = s(3,s(3,1,3),2) = s(3,s(3,1,2),2) = s(3,s(3,1,1),2)= s(3,s(3,1),2) = s(3,3^1,2) = s(3,3,2) = s(3,s(3,2,2),2) = s(3,s(3,s(3,1,2),1),1) = s(3,s(3,3,1),1) = s(3,s(3,3),1) = s(3,27,1) = s(3,27) = 3^27

s(3,2,2,2) = s(3,s(3,1,2,2),1,2) = s(3,s(3,1,1,2),1,2) = s(3,s(3,3,1,1),1,2) = s(3,s(3,3),1,2) = s(3,27,1,2) = s(3,3,27) = 3^^^...^^^3 (27 arrows)

s(3,2,2,1,2) = s(3,s(3,1,2,1,2),1,1,2) = s(3,s(3,1,1,1,2),1,1,2) = s(3,s(3,3,3,1,1),1,1,2) = s(3,s(3,3,3),1,1,2) = s(3,3^^^3,1,1,2) = s(3,3,3,3^^^3,1) = s(3,3,3,3^^^3) (the result is equal to a Conway chain of threes \(3\uparrow\uparrow\uparrow3+2\) numbers long)

Comparisons
For 3-entry arrays, s(a,b,c) = \(a \underbrace{\uparrow\cdots\uparrow}_c b\), or \(\{a, b, c\}\) in BEAF.

For 4-entry arrays, s(a,b,c,d) = \(\underbrace{a \rightarrow \cdots \rightarrow a}_d \rightarrow b \rightarrow c\) using chained arrow notation.

Extended array notation
Extended array notation is the second part of strong array notation. It adds separators between entries. The comma is a shorthand for {1}. It has the following rules:


 * Rule 1 (base rule): s(a,b) = a^b
 * Rule 2a (tailing rule) s(# A 1) = s(#) (A is any separator)
 * Rule 2b: {# A 1} = {#} (Again, A as a separator)
 * Rule 3 (recursion rule): s(a,b,c #) = s(a,s(a,b-1,c #),c-1 #)

If none of these applies, start the process, which is as follows:


 * Start from the third entry. If it is a one, skip to the next entry.
 * If it is greater than 1, look to your left:
 * If it has a comma before it, decrease it by 1, change the previous entry into the current second entry, and change all the other entries at the outermost layer before the current entry into the original first entry. This works even if the second entry is a 1.
 * If it has a separator not comma A before it, change the "A n" to "A 2 A n-1", and move to the first entry of the first A.
 * If it has a { before it, change the {n#} to Sb where b is the current second entry, S1 = "{n-1#}", and Sn+1 = "{n-1#} 1 Sn".

Examples
s(3,3{2}2) = s(3,3{2}2{2}1) = s(3,3,1,1,2{2}1) = s(3,3,1,1,2) = s(3,3,3,3)

s(3,2{2}1{2}2) = s(3,2{2}1,1,2) = s(3,3{2}3,2)

s(3,2{3}2) = s(3,2{2}1{2}2)

s(3,3{1,1,2}2) = s(3,3{1,1,2}2{1,1,2}1) = s(3,3{1,3}2) = s(3,3{3,2}2)