Crazy J/Sequential tag system
Jump to navigation
Jump to search
Crazy J examples
Sequential tag system
This is going to be a weak proof of Turing completeness of Crazy J. The stronger proof will follow.
Since the Sequential tag system page is not detailed enough (at least at the moment), let's formulate the pseudo-code for our program:
- Read initial content of "data" binary string from standard input. It consists of '0's and '1's and delimited with LF (ASCII 10). All other characters are ignored, and premature EOF aborts the program (exit code 1).
- If "data" string is empty, stop execution (exit code 0).
- Read "production rule" binary string ('0's and '1's, delimited with LF).
- If "data" binary string starts from '1' then append the content of current "production rule" string to the end of the "data" string.
- Drop first character of the "data" string.
- Go to step 2.
Here's the lambda calculus "source code" (with some comments):
# GBPS (garbage bin passing style) -capable list implementation
nil = λ ne e g . e (ne g)
cons = λ h t ne e g . ne h t (e g)
append = Y λ self what whereto . whereto (λ h t g1 ne e g2 . ne h (self what t) (g1 e g2)) (λ g1 ne e g2 . what ne e (g g2)) I
push_back = λ value . append (cons value nil)
# Print list of booleans as ASCII '0's and '1's with trailing LF
# Continuation (cont) is called with some garbage as a parameter
print = Y (λ self g1 list cont . list (λ h t g2 f . f (+ 48 (h 1 2)) (self g2 t cont)) (λ g2 f . f LF (cont g2)) g1) I
# Compare two Church numerals for equality
eq = λ n m then . (λ nT mT then' else . nT (mT then' (nT (Q1 else))) (mT else)) (n T) (m T) (Q1 then)
# Adapter to make input list provide not ASCII codes but already half-initialized comparators
input_adapter = Y λ self input f . input (λ ch tail . f (eq ch) (self tail))
# Takes data string already split into head and tail, rule string, and continuation.
# Calls the continuation with two parameters: new data string and some garbage
apply_rule = λ h t r cont . (λ f . h (f (append r t)) (f t)) (λ newdata g1 . print newdata (λ g2 . cont newdata (g1 g2)))
# Read rule string until LF is encountered and calls apply_rule. The execution is then returned (recursively) to this function
read_rule = Y λ self input data rule g1 . data (λ dh dt dg . input λ eqch itail . eqch '0' (λ g2 . self itail data (push_back false rule) (g2 dg))
(λ g2 . eqch '1' (λ g3 . self itail data (push_back true rule) (g3 g2))
(λ g2 . eqch LF (λ g3 . apply_rule dh dt rule (λ newdata g4 . self itail newdata nil (g3 g2 g4)))
(λ g2 . eqch EOF (λ g3 . V (+1 EOF) (g3 g2))
(λ g2 . self itail data rule g2))))) (V EOF) g1
# Read initial data string until LF, then read_rule is called
read_data = Y (λ self data g1 eqch itail . eqch '0' (λ g2 . itail (self (push_back false data) (g2 g1)))
(λ g1 . eqch '1' (λ g2 . itail (self (push_back true data) (g2 g1)))
(λ g1 . eqch LF (λ g2 . read_rule itail data nil (g2 g1))
(λ g1 . eqch EOF (lambda g2 . V (+1 EOF) (g2 g1))
(λ g1 . itail (self data g1)))))) nil I
# Entry point
sts = λ input . input_adapter input read_data
"Compiled" version:
`````j``jii`j``jii`j``jii``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii```j``jii`````j`j`j``jii```jiii`j`ji```jii``jii`````````j```jii`j`j`j`j``jii``jijiii`jj``````jj`j``jiiij```j``ji`jii`j`j``jii````j`j`j``jii```jiii`j`ji`ji`````j``ji``j`j``jiii`j``jii`jij`````j`j`j``jii```jiii`j`ji````````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij````j`j``jii`j``jii``ji`j``jii```````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j`j`j``jii```jiii`j`ji`ji``````j```jii`j`j`j`j``jii``jijiii`jj`````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij````j``ji``j`j``jiii`j``jii`jij```j``jii`j``jii`j``jii```jii``jii``````j```jj``j```jiiii`j``jiiiij`````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j`j``jii``ji``jii``ji`j`j``jii````j``jii`j`j``jii`j``jii``````j```jii`j`j`j`j``jii``jijiii`jj````````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii```````j`j````jjii`j`j``jiii`j```jjiijj```````j`j````jjii`j`j``jiii`j```jjiijj````````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii```ji``````j```jj``j```jiiii`j``jiiiij`````j`j````jjii`j`j``jiii`j```jjiijj`````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji`````````j```jii`j`j`j`j``jii``jijiii`jj``````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj`````````j```jii`j`j`j`j``jii``jijiii`jj````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii`````j``jii`j`j``jii`j``jii``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii```````j`j````jjii`j`j``jiii`j```jjiijj```````j`j````jjii`j`j``jiii`j```jjiijj```````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji```j``jii```j`j`j``jii```jiii`j`ji````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij```````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij````j`j`j``jii```jiii`j`ji```j``jii``ji``jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii````j```jj``j```jiiii`j``jiiiij````````j```jii`j`j`j`j``jii``jijiii`jj`````jj`j``jiiij```j``ji`jii`j`j``jii``j``jii````j``j```jii`j`j``jii``jiiij```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii```j``jii````j``ji``j`j``jiii`j``jii`jij`````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj``````j```jj``j```jiiii`j``jiiiij`````j`j````jjii`j`j``jiii`j```jjiijj``````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij`````j``jii`j`j``jii`j``jii``````j```jj``j```jiiii`j``jiiiij`````j`j````jjii`j`j``jiii`j```jjiijj`````j`j````jjii`j`j``jiii`j```jjiijj`````````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj````j``jii`j`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij`````j`j`j``jii```jiii`j`ji````````jj`j``jiiij```j``ji`jii`j`j``jii````j`j`j``jii```jiii`j`ji``jii````````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij````j``jii`j``jii`j``jii``````j```jj``j```jiiii`j``jiiiij``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j`j``jii``ji``jii``ji`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj````j`j``jii``ji``jii``ji`j`j``jii```````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji````````jj`j``jiiij```j``ji`jii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj```````j```jj``j```jiiii`j``jiiiij```j``jiii`j`j``jii```j``jii``ji``jii`j`j``jii````j``j```jii`j`j``jii``jiiij``````j``ji``j`j``jiii`j``jii`jij`````j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```j``ji``j``jiii``jii``jij```j```j`j``ji``j``jiiiiii``j`jj``jij```````jj`j``jiiij```j``ji`jii`j`j``jii````j`j`j``jii```jiii`j`ji``````j``jii`j`j``jii`j``jii`````j```jj``j```jiiii`j``jiiiij``````j`j`j``jii```jiii`j`ji```j```j`j``ji``j``jiiiiii``j`jj``jij``````j`j```j```jj`j``jiiii`jiiiji```j``ji``j``jiii``jii``jij``````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```j``ji``j``jiii``jii``jiji````````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```j``j```jii`j`j``jii``jiiij```j``jii`j`j``jii`j``jii```j``jii`j`j``jii`j``jiii`````j`j````jjii`j`j``jiii`j```jjiijj`````````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij`ji``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j`j`j``jii```jiii`j`ji```j``jii``````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii``````j``jii`j`j``jii`j``jii``````j```jii`j`j`j`j``jii``jijiii`jj``ji````j``j```jii`j`j``jii``jiiij```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii```jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii````````j```jii`j`j`j`j``jii``jijiii`jj`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii``ji``jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii``j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii````j``jii`ji`j``jii```j`j`j``jii```jiii`j`ji```j`j`j``jii```jiii`j`ji``````j```jii`j`j`j`j``jii``jijiii`jj```jii``````j``ji``j`j``jiii`j``jii`jij`````j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```j``ji``j``jiii``jii``jij```j```j`j``ji``j``jiiiiii``j`jj``jij`````jj`j``jiiij```j``ji`jii`j`j``jii````j`j``jii`j``jii``ji`j``jii```j``jii`j`j``jii`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii`ji```````j```jii`j`j`j`j``jii``jijiii`jj```````j```jii`j`j`j`j``jii``jijiii`jj``````j```jj``j```jiiii`j``jiiiij````````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii``ji``jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii`````j`j`j``jii```jiii`j`ji```j```j`j``ji``j``jiiiiii``j`jj``jij``````j`j```j```jj`j``jiiii`jiiiji```j``ji``j``jiii``jii``jij``````j```jii`j`j`j`j``jii``jijiii`jj````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii````j``jii```j`j`j``jii```jiii`j`ji``````j```jj``j```jiiii`j``jiiiij``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj```j`j``jii``ji``jii``ji`j`j``jiii``````j```jii`j`j`j`j``jii``jijiii`jj```j``jii`j`j``jii`j``jii`````j`j`j``jii```jiii`j`ji```j``jii`j`j``jii`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii``ji``jii`j`j``jii``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii````j```jj``j```jiiii`j``jiiiij`````jj`j``jiiij```j``ji`jii`j`j``jii``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jii`j`j`j`j``jii``jijiii`jj``j``jii```jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii`````j`j`j``jii```jiii`j`ji```j```j`j``ji``j``jiiiiii``j`jj``jij``````j`j```j```jj`j``jiiii`jiiiji```j``ji``j``jiii``jii``jij``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij`````j`j````jjii`j`j``jiii`j```jjiijj```j``jii`j`j``jii`j``jii``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii```j``jii`ji`j``jii``````jj`j``jiiij```j``ji`jii`j`j``jii``````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij```j``jii````j``jii```j`j`j``jii```jiii`j`ji``````j```jj``j```jiiii`j``jiiiij``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj```j`j``jii``ji``jii``ji`j`j``jii``jii``````j```jii`j`j`j`j``jii``jijiii`jj```j`j`j``jii```jiii`j`ji`ji```ji``````j```jii`j`j`j`j``jii``jijiii`jj``````j``ji``j`j``jiii`j``jii`jij`````j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```j``ji``j``jiii``jii``jij```j```j`j``ji``j``jiiiiii``j`jj``jij`````j`j````jjii`j`j``jiii`j```jjiijj`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii``ji``jii`j`j``jii``````jj`j``jiiij```j``ji`jii`j`j``jii`j``jii```````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii`j``jii`j``jii``````j```jj``j```jiiii`j``jiiiij`````j`j````jjii`j`j``jiii`j```jjiijj``````j``jii`j`j``jii`j``jii```````jj`j``jiiij```j``ji`jii`j`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jii`j`j`j`j``jii``jijiii`jj`ji```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii`````j`j`j``jii```jiii`j`ji```j```j`j``ji``j``jiiiiii``j`jj``jij``````j`j```j```jj`j``jiiii`jiiiji```j``ji``j``jiii``jii``jij````````j```jii`j`j`j`j``jii``jijiii`jj````j``jii`j`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij````j``jii```j`j`j``jii```jiii`j`ji``````j```jj``j```jiiii`j``jiiiij``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj```j`j``jii``ji``jii``ji`j`j``jiii````j``jii`j``jii`j``jii``````j```jj``j```jiiii`j``jiiiij````j`j`j``jii```jiii`j`ji```j``jii``ji````j``j```jii`j`j``jii``jiiij```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii```ji``````j```jii`j`j`j`j``jii``jijiii`jj```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii``````j```jj``j```jiiii`j``jiiiij```j`j`j``jii```jiii`j`ji````j``jii`j`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij`````j`j`j``jii```jiii`j`ji````````j```jii`j`j`j`j``jii``jijiii`jj````j``jii`j`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij````j``jii```j`j`j``jii```jiii`j`ji``````j```jj``j```jiiii`j``jiiiij``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj```j`j``jii``ji``jii``ji`j`j``jii``jii```````jj`j``jiiij```j``ji`jii`j`j``jii```````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj``j``jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii`````j`j`j``jii```jiii`j`ji```j```j`j``ji``j``jiiiiii``j`jj``jij``````j`j```j```jj`j``jiiii`jiiiji```j``ji``j``jiii``jii``jij``````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj```j`j`j``jii```jiii`j`ji```````j```jii`j`j`j`j``jii``jijiii`jj`ji```j`j`j``jii```jiii`j`jii