Enumeration Algorithms for€¦ ·  · 2014-09-02Enumeration Algorithms for Restricted and...

Post on 24-May-2018

228 views 0 download

transcript

Enumeration Algorithms for Restricted and Unrestricted Compositions and Words

Daniel PageApril 8, 2011

Enumeration?

Two different disciplines in computation but a generation solution is more powerful.

Typical interests:− Combinatorial Objects− Discrete Solution Spaces− Sequencing− Many more...

Two very different disciplines Counting

Generation

Enumeration?Primary Goals of an enumeration algorithm: Given properties of a finite set, exhaust all the

members of the set which fit the definition. Avoiding extra structure whenever possible. Understanding more about the structure of a

construction. Can solve counting problems. Eg) Combinatorial Objects, Word Problems...WARNING: These algorithms are highly

output sensitive.

Definition: A finite set Cs,n which contains all non-negative integer sequences л = л1 л2 ... лn

such that Σ (лi) = s, 1≤i≤n. This is called an unrestricted composition.

Combinatorial Composition

eg) C3,3= {(0,0,3),(0,3,0),(3,0,0),

(2,1,0),(1,2,0),(0,2,1),(0,1,2),(1,0,2),(2,0,1), (1,1,1)}

There is also a more general version:A finite set CR

s,n which contains all non-negative

integer sequences л = л1 л2 ... лn such that Σ (лi) = s, 1≤i≤n, where лi є R.

This is called an restricted composition. There are several types of restricted compositions...

Combinatorial Composition

eg) CR3,3= {(1,1,1)}, where R = {1}

HistoryCompositions play a vital role in the

foundations of Theoretical Computer Science and also are of interest in Combinatorics.

Generation of Compositions are a specific sub-type of Word Problems.

Word Problem – Given a semi-Thue System, rewrite a string given a set of 'rewriting'

axioms, to produce an outputting string in the string rewriting system in a language.

General Case: Problem is undecidable.

HistoryEarly Research:

Percy Alexander MacMahon (1854-1929)“Compositions are merely

partitions in which the order of occurrence of the parts

are important”

Credit: “Combinatorics of Compositions and Words”, Heubach,Mansour

Many of his conventions are still used today.

Earliest results. “Assemblage of objects”

HistoryEarly Research:

Axel Thue (1863-1922)“Zeichenreihen”

Credit: “Combinatorics of Compositions and Words”, Heubach,Mansour

First to systematically study words and compositions.

Extended to the infinite cases. The general word problem.

Thue and semi-Thue systems.

“Combinatorics on Words”

ProblemsProblem 1:

Given positive integers n,s (n =0 iff s = 0), enumerate the unrestricted composition

Cs,n . Some Results: C(s,n) = CHOOSE(s+n-1,n-1) Lower bound space-complexity: Ω(C(s,n)).

− Output sensitive− Tight bound (it's the output itself).

s+k−1 , n−1

ProblemsOutput Sensitivity Extremes:

s+k−1 , n−1

S(7,8)={@@@@@@H,@@@@@AG,@@@@@BF,@@@@@CE,@@@@@DD,@@@@@EC,@@@@@FB,@@@@@GA,@@@@@H@,@@@@A@G,@@@@AAF,@@@@ABE,@@@@ACD,@@@@ADC,@@@@AEB,@@@@AFA,@@@@AG@,@@@@B@F,@@@@BAE,@@@@BBD,@@@@BCC,@@@@BDB,@@@@BEA,@@@@BF@,@@@@C@E,@@@@CAD,@@@@CBC,@@@@CCB,@@@@CDA,@@@@CE@,@@@@D@D,@@@@DAC,@@@@DBB,@@@@DCA,@@@@DD@,@@@@E@C,@@@@EAB,@@@@EBA,@@@@EC@,@@@@F@B,@@@@FAA,@@@@FB@,@@@@G@A,@@@@GA@,@@@@H@@,@@@A@@G,@@@A@AF,@@@A@BE,@@@A@CD,@@@A@DC,@@@A@EB,@@@A@FA,@@@A@G@,@@@AA@F,@@@AAAE,@@@AABD,@@@AACC,@@@AADB,@@@AAEA,@@@AAF@,@@@AB@E,@@@ABAD,@@@ABBC,@@@ABCB,@@@ABDA,@@@ABE@,@@@AC@D,@@@ACAC,@@@ACBB,@@@ACCA,@@@ACD@,@@@AD@C,@@@ADAB,@@@ADBA,@@@ADC@,@@@AE@B,@@@AEAA,@@@AEB@,@@@AF@A,@@@AFA@,@@@AG@@,@@@B@@F,@@@B@AE,@@@B@BD,@@@B@CC,@@@B@DB,@@@B@EA,@@@B@F@,@@@BA@E,@@@BAAD,@@@BABC,@@@BACB,@@@BADA,@@@BAE@,@@@BB@D,@@@BBAC,@@@BBBB,@@@BBCA,@@@BBD@,@@@BC@C,@@@BCAB,@@@BCBA,@@@BCC@,@@@BD@B,@@@BDAA,@@@BDB@,@@@BE@A,@@@BEA@,@@@BF@@,@@@C@@E,@@@C@AD,@@@C@BC,@@@C@CB,@@@C@DA,@@@C@E@,@@@CA@D,@@@CAAC,@@@CABB,@@@CACA,@@@CAD@,@@@CB@C,@@@CBAB,@@@CBBA,@@@CBC@,@@@CC@B,@@@CCAA,@@@CCB@,@@@CD@A,@@@CDA@,@@@CE@@,@@@D@@D,@@@D@AC,@@@D@BB,@@@D@CA,@@@D@D@,@@@DA@C,@@@DAAB,@@@DABA,@@@DAC@,@@@DB@B,@@@DBAA,@@@DBB@,@@@DC@A,@@@DCA@,@@@DD@@,@@@E@@C,@@@E@AB,@@@E@BA,@@@E@C@,@@@EA@B,@@@EAAA,@@@EAB@,@@@EB@A,@@@EBA@,@@@EC@@,@@@F@@B,@@@F@AA,@@@F@B@,@@@FA@A,@@@FAA@,@@@FB@@,@@@G@@A,@@@G@A@,@@@GA@@,@@@H@@@,@@A@@@G,@@A@@AF,@@A@@BE,@@A@@CD,@@A@@DC,@@A@@EB,@@A@@FA,@@A@@G@,@@A@A@F,@@A@AAE,@@A@ABD,@@A@ACC,@@A@ADB,@@A@AEA,@@A@AF@,@@A@B@E,@@A@BAD,@@A@BBC,@@A@BCB,@@A@BDA,@@A@BE@,@@A@C@D,@@A@CAC,@@A@CBB,@@A@CCA,@@A@CD@,@@A@D@C,@@A@DAB,@@A@DBA,@@A@DC@,@@A@E@B,@@A@EAA,@@A@EB@,@@A@F@A,@@A@FA@,@@A@G@@,@@AA@@F,@@AA@AE,@@AA@BD,@@AA@CC,@@AA@DB,@@AA@EA,@@AA@F@,@@AAA@E,@@AAAAD,@@AAABC,@@AAACB,@@AAADA,@@AAAE@,@@AAB@D,@@AABAC,@@AABBB,@@AABCA,@@AABD@,@@AAC@C,@@AACAB,@@AACBA,@@AACC@,@@AAD@B,@@AADAA,@@AADB@,@@AAE@A,@@AAEA@,@@AAF@@,@@AB@@E,@@AB@AD,@@AB@BC,@@AB@CB,@@AB@DA,@@AB@E@,@@ABA@D,@@ABAAC,@@ABABB,@@ABACA,@@ABAD@,@@ABB@C,@@ABBAB,@@ABBBA,@@ABBC@,@@ABC@B,@@ABCAA,@@ABCB@,@@ABD@A,@@ABDA@,@@ABE@@,@@AC@@D,@@AC@AC,@@AC@BB,@@AC@CA,@@AC@D@,@@ACA@C,@@ACAAB,@@ACABA,@@ACAC@,@@ACB@B,@@ACBAA,@@ACBB@,@@ACC@A,@@ACCA@,@@ACD@@,@@AD@@C,@@AD@AB,@@AD@BA,@@AD@C@,@@ADA@B,@@ADAAA,@@ADAB@,@@ADB@A,@@ADBA@,@@ADC@@,@@AE@@B,@@AE@AA,@@AE@B@,@@AEA@A,@@AEAA@,@@AEB@@,@@AF@@A,@@AF@A@,@@AFA@@,@@AG@@@,@@B@@@F,@@B@@AE,@@B@@BD,@@B@@CC,@@B@@DB,@@B@@EA,@@B@@F@,@@B@A@E,@@B@AAD,@@B@ABC,@@B@ACB,@@B@ADA,@@B@AE@,@@B@B@D,@@B@BAC,@@B@BBB,@@B@BCA,@@B@BD@,@@B@C@C,@@B@CAB,@@B@CBA,@@B@CC@,@@B@D@B,@@B@DAA,@@B@DB@,@@B@E@A,@@B@EA@,@@B@F@@,@@BA@@E,@@BA@AD,@@BA@BC,@@BA@CB,@@BA@DA,@@BA@E@,@@BAA@D,@@BAAAC,@@BAABB,@@BAACA,@@BAAD@,@@BAB@C,@@BABAB,@@BABBA,@@BABC@,@@BAC@B,@@BACAA,@@BACB@,@@BAD@A,@@BADA@,@@BAE@@,@@BB@@D,@@BB@AC,@@BB@BB,@@BB@CA,@@BB@D@,@@BBA@C,@@BBAAB,@@BBABA,@@BBAC@,@@BBB@B,@@BBBAA,@@BBBB@,@@BBC@A,@@BBCA@,@@BBD@@,@@BC@@C,@@BC@AB,@@BC@BA,@@BC@C@,@@BCA@B,@@BCAAA,@@BCAB@,@@BCB@A,@@BCBA@,@@BCC@@,@@BD@@B,@@BD@AA,@@BD@B@,@@BDA@A,@@BDAA@,@@BDB@@,@@BE@@A,@@BE@A@,@@BEA@@,@@BF@@@,@@C@@@E,@@C@@AD,@@C@@BC,@@C@@CB,@@C@@DA,@@C@@E@,@@C@A@D,@@C@AAC,@@C@ABB,@@C@ACA,@@C@AD@,@@C@B@C,@@C@BAB,@@C@BBA,@@C@BC@,@@C@C@B,@@C@CAA,@@C@CB@,@@C@D@A,@@C@DA@,@@C@E@@,@@CA@@D,@@CA@AC,@@CA@BB,@@CA@CA,@@CA@D@,@@CAA@C,@@CAAAB,@@CAABA,@@CAAC@,@@CAB@B,@@CABAA,@@CABB@,@@CAC@A,@@CACA@,@@CAD@@,@@CB@@C,@@CB@AB,@@CB@BA,@@CB@C@,@@CBA@B,@@CBAAA,@@CBAB@,@@CBB@A,@@CBBA@,@@CBC@@,@@CC@@B,@@CC@AA,@@CC@B@,@@CCA@A,@@CCAA@,@@CCB@@,@@CD@@A,@@CD@A@,@@CDA@@,@@CE@@@,@@D@@@D,@@D@@AC,@@D@@BB,@@D@@CA,@@D@@D@,@@D@A@C,@@D@AAB,@@D@ABA,@@D@AC@,@@D@B@B,@@D@BAA,@@D@BB@,@@D@C@A,@@D@CA@,@@D@D@@,@@DA@@C,@@DA@AB,@@DA@BA,@@DA@C@,@@DAA@B,@@DAAAA,@@DAAB@,@@DAB@A,@@DABA@,@@DAC@@,@@DB@@B,@@DB@AA,@@DB@B@,@@DBA@A,@@DBAA@,@@DBB@@,@@DC@@A,@@DC@A@,@@DCA@@,@@DD@@@,@@E@@@C,@@E@@AB,@@E@@BA,@@E@@C@,@@E@A@B,@@E@AAA,@@E@AB@,@@E@B@A,@@E@BA@,@@E@C@@,@@EA@@B,@@EA@AA,@@EA@B@,@@EAA@A,@@EAAA@,@@EAB@@,@@EB@@A,@@EB@A@,@@EBA@@,@@EC@@@,@@F@@@B,@@F@@AA,@@F@@B@,@@F@A@A,@@F@AA@,@@F@B@@,@@FA@@A,@@FA@A@,@@FAA@@,@@FB@@@,@@G@@@A,@@G@@A@,@@G@A@@,@@GA@@@,@@H@@@@,@A@@@@G,@A@@@AF,@A@@@BE,@A@@@CD,@A@@@DC,@A@@@EB,@A@@@FA,@A@@@G@,@A@@A@F,@A@@AAE,@A@@ABD,@A@@ACC,@A@@ADB,@A@@AEA,@A@@AF@,@A@@B@E,@A@@BAD,@A@@BBC,@A@@BCB,@A@@BDA,@A@@BE@,@A@@C@D,@A@@CAC,@A@@CBB,@A@@CCA,@A@@CD@,@A@@D@C,@A@@DAB,@A@@DBA,@A@@DC@,@A@@E@B,@A@@EAA,@A@@EB@,@A@@F@A,@A@@FA@,@A@@G@@,@A@A@@F,@A@A@AE,@A@A@BD,@A@A@CC,@A@A@DB,@A@A@EA,@A@A@F@,@A@AA@E,@A@AAAD,@A@AABC,@A@AACB,@A@AADA,@A@AAE@,@A@AB@D,@A@ABAC,@A@ABBB,@A@ABCA,@A@ABD@,@A@AC@C,@A@ACAB,@A@ACBA,@A@ACC@,@A@AD@B,@A@ADAA,@A@ADB@,@A@AE@A,@A@AEA@,@A@AF@@,@A@B@@E,@A@B@AD,@A@B@BC,@A@B@CB,@A@B@DA,@A@B@E@,@A@BA@D,@A@BAAC,@A@BABB,@A@BACA,@A@BAD@,@A@BB@C,@A@BBAB,@A@BBBA,@A@BBC@,@A@BC@B,@A@BCAA,@A@BCB@,@A@BD@A,@A@BDA@,@A@BE@@,@A@C@@D,@A@C@AC,@A@C@BB,@A@C@CA,@A@C@D@,@A@CA@C,@A@CAAB,@A@CABA,@A@CAC@,@A@CB@B,@A@CBAA,@A@CBB@,@A@CC@A,@A@CCA@,@A@CD@@,@A@D@@C,@A@D@AB,@A@D@BA,@A@D@C@,@A@DA@B,@A@DAAA,@A@DAB@,@A@DB@A,@A@DBA@,@A@DC@@,@A@E@@B,@A@E@AA,@A@E@B@,@A@EA@A,@A@EAA@,@A@EB@@,@A@F@@A,@A@F@A@,@A@FA@@,@A@G@@@,@AA@@@F,@AA@@AE,@AA@@BD,@AA@@CC,@AA@@DB,@AA@@EA,@AA@@F@,@AA@A@E,@AA@AAD,@AA@ABC,@AA@ACB,@AA@ADA,@AA@AE@,@AA@B@D,@AA@BAC,@AA@BBB,@AA@BCA,@AA@BD@,@AA@C@C,@AA@CAB,@AA@CBA,@AA@CC@,@AA@D@B,@AA@DAA,@AA@DB@,@AA@E@A,@AA@EA@,@AA@F@@,@AAA@@E,@AAA@AD,@AAA@BC,@AAA@CB,@AAA@DA,@AAA@E@,@AAAA@D,@AAAAAC,@AAAABB,@AAAACA,@AAAAD@,@AAAB@C,@AAABAB,@AAABBA,@AAABC@,@AAAC@B,@AAACAA,@AAACB@,@AAAD@A,@AAADA@,@AAAE@@,@AAB@@D,@AAB@AC,@AAB@BB,@AAB@CA,@AAB@D@,@AABA@C,@AABAAB,@AABABA,@AABAC@,@AABB@B,@AABBAA,@AABBB@,@AABC@A,@AABCA@,@AABD@@,@AAC@@C,@AAC@AB,@AAC@BA,@AAC@C@,@AACA@B,@AACAAA,@AACAB@,@AACB@A,@AACBA@,@AACC@@,@AAD@@B,@AAD@AA,@AAD@B@,@AADA@A,@AADAA@,@AADB@@,@AAE@@A,@AAE@A@,@AAEA@@,@AAF@@@,@AB@@@E,@AB@@AD,@AB@@BC,@AB@@CB,@AB@@DA,@AB@@E@,@AB@A@D,@AB@AAC,@AB@ABB,@AB@ACA,@AB@AD@,@AB@B@C,@AB@BAB,@AB@BBA,@AB@BC@,@AB@C@B,@AB@CAA,@AB@CB@,@AB@D@A,@AB@DA@,@AB@E@@,@ABA@@D,@ABA@AC,@ABA@BB,@ABA@CA,@ABA@D@,@ABAA@C,@ABAAAB,@ABAABA,@ABAAC@,@ABAB@B,@ABABAA,@ABABB@,@ABAC@A,@ABACA@,@ABAD@@,@ABB@@C,@ABB@AB,@ABB@BA,@ABB@C@,@ABBA@B,@ABBAAA,@ABBAB@,@ABBB@A,@ABBBA@,@ABBC@@,@ABC@@B,@ABC@AA,@ABC@B@,@ABCA@A,@ABCAA@,@ABCB@@,@ABD@@A,@ABD@A@,@ABDA@@,@ABE@@@,@AC@@@D,@AC@@AC,@AC@@BB,@AC@@CA,@AC@@D@,@AC@A@C,@AC@AAB,@AC@ABA,@AC@AC@,@AC@B@B,@AC@BAA,@AC@BB@,@AC@C@A,@AC@CA@,@AC@D@@,@ACA@@C,@ACA@AB,@ACA@BA,@ACA@C@,@ACAA@B,@ACAAAA,@ACAAB@,@ACAB@A,@ACABA@,@ACAC@@,@ACB@@B,@ACB@AA,@ACB@B@,@ACBA@A,@ACBAA@,@ACBB@@,@ACC@@A,@ACC@A@,@ACCA@@,@ACD@@@,@AD@@@C,@AD@@AB,@AD@@BA,@AD@@C@,@AD@A@B,@AD@AAA,@AD@AB@,@AD@B@A,@AD@BA@,@AD@C@@,@ADA@@B,@ADA@AA,@ADA@B@,@ADAA@A,@ADAAA@,@ADAB@@,@ADB@@A,@ADB@A@,@ADBA@@,@ADC@@@,@AE@@@B,@AE@@AA,@AE@@B@,@AE@A@A,@AE@AA@,@AE@B@@,@AEA@@A,@AEA@A@,@AEAA@@,@AEB@@@,@AF@@@A,@AF@@A@,@AF@A@@,@AFA@@@,@AG@@@@,@B@@@@F,@B@@@AE,@B@@@BD,@B@@@CC,@B@@@DB,@B@@@EA,@B@@@F@,@B@@A@E,@B@@AAD,@B@@ABC,@B@@ACB,@B@@ADA,@B@@AE@,@B@@B@D,@B@@BAC,@B@@BBB,@B@@BCA,@B@@BD@,@B@@C@C,@B@@CAB,@B@@CBA,@B@@CC@,@B@@D@B,@B@@DAA,@B@@DB@,@B@@E@A,@B@@EA@,@B@@F@@,@B@A@@E,@B@A@AD,@B@A@BC,@B@A@CB,@B@A@DA,@B@A@E@,@B@AA@D,@B@AAAC,@B@AABB,@B@AACA,@B@AAD@,@B@AB@C,@B@ABAB,@B@ABBA,@B@ABC@,@B@AC@B,@B@ACAA,@B@ACB@,@B@AD@A,@B@ADA@,@B@AE@@,@B@B@@D,@B@B@AC,@B@B@BB,@B@B@CA,@B@B@D@,@B@BA@C,@B@BAAB,@B@BABA,@B@BAC@,@B@BB@B,@B@BBAA,@B@BBB@,@B@BC@A,@B@BCA@,@B@BD@@,@B@C@@C,@B@C@AB,@B@C@BA,@B@C@C@,@B@CA@B,@B@CAAA,@B@CAB@,@B@CB@A,@B@CBA@,@B@CC@@,@B@D@@B,@B@D@AA,@B@D@B@,@B@DA@A,@B@DAA@,@B@DB@@,@B@E@@A,@B@E@A@,@B@EA@@,@B@F@@@,@BA@@@E,@BA@@AD,@BA@@BC,@BA@@CB,@BA@@DA,@BA@@E@,@BA@A@D,@BA@AAC,@BA@ABB,@BA@ACA,@BA@AD@,@BA@B@C,@BA@BAB,@BA@BBA,@BA@BC@,@BA@C@B,@BA@CAA,@BA@CB@,@BA@D@A,@BA@DA@,@BA@E@@,@BAA@@D,@BAA@AC,@BAA@BB,@BAA@CA,@BAA@D@,@BAAA@C,@BAAAAB,@BAAABA,@BAAAC@,@BAAB@B,@BAABAA,@BAABB@,@BAAC@A,@BAACA@,@BAAD@@,@BAB@@C,@BAB@AB,@BAB@BA,@BAB@C@,@BABA@B,@BABAAA,@BABAB@,@BABB@A,@BABBA@,@BABC@@,@BAC@@B,@BAC@AA,@BAC@B@,@BACA@A,@BACAA@,@BACB@@,@BAD@@A,@BAD@A@,@BADA@@,@BAE@@@,@BB@@@D,@BB@@AC,@BB@@BB,@BB@@CA,@BB@@D@,@BB@A@C,@BB@AAB,@BB@ABA,@BB@AC@,@BB@B@B,@BB@BAA,@BB@BB@,@BB@C@A,@BB@CA@,@BB@D@@,@BBA@@C,@BBA@AB,@BBA@BA,@BBA@C@,@BBAA@B,@BBAAAA,@BBAAB@,@BBAB@A,@BBABA@,@BBAC@@,@BBB@@B,@BBB@AA,@BBB@B@,@BBBA@A,@BBBAA@,@BBBB@@,@BBC@@A,@BBC@A@,@BBCA@@,@BBD@@@,@BC@@@C,@BC@@AB,@BC@@BA,@BC@@C@,@BC@A@B,@BC@AAA,@BC@AB@,@BC@B@A,@BC@BA@,@BC@C@@,@BCA@@B,@BCA@AA,@BCA@B@,@BCAA@A,@BCAAA@,@BCAB@@,@BCB@@A,@BCB@A@,@BCBA@@,@BCC@@@,@BD@@@B,@BD@@AA,@BD@@B@,@BD@A@A,@BD@AA@,@BD@B@@,@BDA@@A,@BDA@A@,@BDAA@@,@BDB@@@,@BE@@@A,@BE@@A@,@BE@A@@,@BEA@@@,@BF@@@@,@C@@@@E,@C@@@AD,@C@@@BC,@C@@@CB,@C@@@DA,@C@@@E@,@C@@A@D,@C@@AAC,@C@@ABB,@C@@ACA,@C@@AD@,@C@@B@C,@C@@BAB,@C@@BBA,@C@@BC@,@C@@C@B,@C@@CAA,@C@@CB@,@C@@D@A,@C@@DA@,@C@@E@@,@C@A@@D,@C@A@AC,@C@A@BB,@C@A@CA,@C@A@D@,@C@AA@C,@C@AAAB,@C@AABA,@C@AAC@,@C@AB@B,@C@ABAA,@C@ABB@,@C@AC@A,@C@ACA@,@C@AD@@,@C@B@@C,@C@B@AB,@C@B@BA,@C@B@C@,@C@BA@B,@C@BAAA,@C@BAB@,@C@BB@A,@C@BBA@,@C@BC@@,@C@C@@B,@C@C@AA,@C@C@B@,@C@CA@A,@C@CAA@,@C@CB@@,@C@D@@A,@C@D@A@,@C@DA@@,@C@E@@@,@CA@@@D,@CA@@AC,@CA@@BB,@CA@@CA,@CA@@D@,@CA@A@C,@CA@AAB,@CA@ABA,@CA@AC@,@CA@B@B,@CA@BAA,@CA@BB@,@CA@C@A,@CA@CA@,@CA@D@@,@CAA@@C,@CAA@AB,@CAA@BA,@CAA@C@,@CAAA@B,@CAAAAA,@CAAAB@,@CAAB@A,@CAABA@,@CAAC@@,@CAB@@B,@CAB@AA,@CAB@B@,@CABA@A,@CABAA@,@CABB@@,@CAC@@A,@CAC@A@,@CACA@@,@CAD@@@,@CB@@@C,@CB@@AB,@CB@@BA,@CB@@C@,@CB@A@B,@CB@AAA,@CB@AB@,@CB@B@A,@CB@BA@,@CB@C@@,@CBA@@B,@CBA@AA,@CBA@B@,@CBAA@A,@CBAAA@,@CBAB@@,@CBB@@A,@CBB@A@,@CBBA@@,@CBC@@@,@CC@@@B,@CC@@AA,@CC@@B@,@CC@A@A,@CC@AA@,@CC@B@@,@CCA@@A,@CCA@A@,@CCAA@@,@CCB@@@,@CD@@@A,@CD@@A@,@CD@A@@,@CDA@@@,@CE@@@@,@D@@@@D,@D@@@AC,@D@@@BB,@D@@@CA,@D@@@D@,@D@@A@C,@D@@AAB,@D@@ABA,@D@@AC@,@D@@B@B,@D@@BAA,@D@@BB@,@D@@C@A,@D@@CA@,@D@@D@@,@D@A@@C,@D@A@AB,@D@A@BA,@D@A@C@,@D@AA@B,@D@AAAA,@D@AAB@,@D@AB@A,@D@ABA@,@D@AC@@,@D@B@@B,@D@B@AA,@D@B@B@,@D@BA@A,@D@BAA@,@D@BB@@,@D@C@@A,@D@C@A@,@D@CA@@,@D@D@@@,@DA@@@C,@DA@@AB,@DA@@BA,@DA@@C@,@DA@A@B,@DA@AAA,@DA@AB@,@DA@B@A,@DA@BA@,@DA@C@@,@DAA@@B,@DAA@AA,@DAA@B@,@DAAA@A,@DAAAA@,@DAAB@@,@DAB@@A,@DAB@A@,@DABA@@,@DAC@@@,@DB@@@B,@DB@@AA,@DB@@B@,@DB@A@A,@DB@AA@,@DB@B@@,@DBA@@A,@DBA@A@,@DBAA@@,@DBB@@@,@DC@@@A,@DC@@A@,@DC@A@@,@DCA@@@,@DD@@@@,@E@@@@C,@E@@@AB,@E@@@BA,@E@@@C@,@E@@A@B,@E@@AAA,@E@@AB@,@E@@B@A,@E@@BA@,@E@@C@@,@E@A@@B,@E@A@AA,@E@A@B@,@E@AA@A,@E@AAA@,@E@AB@@,@E@B@@A,@E@B@A@,@E@BA@@,@E@C@@@,@EA@@@B,@EA@@AA,@EA@@B@,@EA@A@A,@EA@AA@,@EA@B@@,@EAA@@A,@EAA@A@,@EAAA@@,@EAB@@@,@EB@@@A,@EB@@A@,@EB@A@@,@EBA@@@,@EC@@@@,@F@@@@B,@F@@@AA,@F@@@B@,@F@@A@A,@F@@AA@,@F@@B@@,@F@A@@A,@F@A@A@,@F@AA@@,@F@B@@@,@FA@@@A,@FA@@A@,@FA@A@@,@FAA@@@,@FB@@@@,@G@@@@A,@G@@@A@,@G@@A@@,@G@A@@@,@GA@@@@,@H@@@@@,A@@@@@G,A@@@@AF,A@@@@BE,A@@@@CD,A@@@@DC,A@@@@EB,A@@@@FA,A@@@@G@,A@@@A@F,A@@@AAE,A@@@ABD,A@@@ACC,A@@@ADB,A@@@AEA,A@@@AF@,A@@@B@E,A@@@BAD,A@@@BBC,A@@@BCB,A@@@BDA,A@@@BE@,A@@@C@D,A@@@CAC,A@@@CBB,A@@@CCA,A@@@CD@,A@@@D@C,A@@@DAB,A@@@DBA,A@@@DC@,A@@@E@B,A@@@EAA,A@@@EB@,A@@@F@A,A@@@FA@,A@@@G@@,A@@A@@F,A@@A@AE,A@@A@BD,A@@A@CC,A@@A@DB,A@@A@EA,A@@A@F@,A@@AA@E,A@@AAAD,A@@AABC,A@@AACB,A@@AADA,A@@AAE@,A@@AB@D,A@@ABAC,A@@ABBB,A@@ABCA,A@@ABD@,A@@AC@C,A@@ACAB,A@@ACBA,A@@ACC@,A@@AD@B,A@@ADAA,A@@ADB@,A@@AE@A,A@@AEA@,A@@AF@@,A@@B@@E,A@@B@AD,A@@B@BC,A@@B@CB,A@@B@DA,A@@B@E@,A@@BA@D,A@@BAAC,A@@BABB,A@@BACA,A@@BAD@,A@@BB@C,A@@BBAB,A@@BBBA,A@@BBC@,A@@BC@B,A@@BCAA,A@@BCB@,A@@BD@A,A@@BDA@,A@@BE@@,A@@C@@D,A@@C@AC,A@@C@BB,A@@C@CA,A@@C@D@,A@@CA@C,A@@CAAB,A@@CABA,A@@CAC@,A@@CB@B,A@@CBAA,A@@CBB@,A@@CC@A,A@@CCA@,A@@CD@@,A@@D@@C,A@@D@AB,A@@D@BA,A@@D@C@,A@@DA@B,A@@DAAA,A@@DAB@,A@@DB@A,A@@DBA@,A@@DC@@,A@@E@@B,A@@E@AA,A@@E@B@,A@@EA@A,A@@EAA@,A@@EB@@,A@@F@@A,A@@F@A@,A@@FA@@,A@@G@@@,A@A@@@F,A@A@@AE,A@A@@BD,A@A@@CC,A@A@@DB,A@A@@EA,A@A@@F@,A@A@A@E,A@A@AAD,A@A@ABC,A@A@ACB,A@A@ADA,A@A@AE@,A@A@B@D,A@A@BAC,A@A@BBB,A@A@BCA,A@A@BD@,A@A@C@C,A@A@CAB,A@A@CBA,A@A@CC@,A@A@D@B,A@A@DAA,A@A@DB@,A@A@E@A,A@A@EA@,A@A@F@@,A@AA@@E,A@AA@AD,A@AA@BC,A@AA@CB,A@AA@DA,A@AA@E@,A@AAA@D,A@AAAAC,A@AAABB,A@AAACA,A@AAAD@,A@AAB@C,A@AABAB,A@AABBA,A@AABC@,A@AAC@B,A@AACAA,A@AACB@,A@AAD@A,A@AADA@,A@AAE@@,A@AB@@D,A@AB@AC,A@AB@BB,A@AB@CA,A@AB@D@,A@ABA@C,A@ABAAB,A@ABABA,A@ABAC@,A@ABB@B,A@ABBAA,A@ABBB@,A@ABC@A,A@ABCA@,A@ABD@@,A@AC@@C,A@AC@AB,A@AC@BA,A@AC@C@,A@ACA@B,A@ACAAA,A@ACAB@,A@ACB@A,A@ACBA@,A@ACC@@,A@AD@@B,A@AD@AA,A@AD@B@,A@ADA@A,A@ADAA@,A@ADB@@,A@AE@@A,A@AE@A@,A@AEA@@,A@AF@@@,A@B@@@E,A@B@@AD,A@B@@BC,A@B@@CB,A@B@@DA,A@B@@E@,A@B@A@D,A@B@AAC,A@B@ABB,A@B@ACA,A@B@AD@,A@B@B@C,A@B@BAB,A@B@BBA,A@B@BC@,A@B@C@B,A@B@CAA,A@B@CB@,A@B@D@A,A@B@DA@,A@B@E@@,A@BA@@D,A@BA@AC,A@BA@BB,A@BA@CA,A@BA@D@,A@BAA@C,A@BAAAB,A@BAABA,A@BAAC@,A@BAB@B,A@BABAA,A@BABB@,A@BAC@A,A@BACA@,A@BAD@@,A@BB@@C,A@BB@AB,A@BB@BA,A@BB@C@,A@BBA@B,A@BBAAA,A@BBAB@,A@BBB@A,A@BBBA@,A@BBC@@,A@BC@@B,A@BC@AA,A@BC@B@,A@BCA@A,A@BCAA@,A@BCB@@,A@BD@@A,A@BD@A@,A@BDA@@,A@BE@@@,A@C@@@D,A@C@@AC,A@C@@BB,A@C@@CA,A@C@@D@,A@C@A@C,A@C@AAB,A@C@ABA,A@C@AC@,A@C@B@B,A@C@BAA,A@C@BB@,A@C@C@A,A@C@CA@,A@C@D@@,A@CA@@C,A@CA@AB,A@CA@BA,A@CA@C@,A@CAA@B,A@CAAAA,A@CAAB@,A@CAB@A,A@CABA@,A@CAC@@,A@CB@@B,A@CB@AA,A@CB@B@,A@CBA@A,A@CBAA@,A@CBB@@,A@CC@@A,A@CC@A@,A@CCA@@,A@CD@@@,A@D@@@C,A@D@@AB,A@D@@BA,A@D@@C@,A@D@A@B,A@D@AAA,A@D@AB@,A@D@B@A,A@D@BA@,A@D@C@@,A@DA@@B,A@DA@AA,A@DA@B@,A@DAA@A,A@DAAA@,A@DAB@@,A@DB@@A,A@DB@A@,A@DBA@@,A@DC@@@,A@E@@@B,A@E@@AA,A@E@@B@,A@E@A@A,A@E@AA@,A@E@B@@,A@EA@@A,A@EA@A@,A@EAA@@,A@EB@@@,A@F@@@A,A@F@@A@,A@F@A@@,A@FA@@@,A@G@@@@,AA@@@@F,AA@@@AE,AA@@@BD,AA@@@CC,AA@@@DB,AA@@@EA,AA@@@F@,AA@@A@E,AA@@AAD,AA@@ABC,AA@@ACB,AA@@ADA,AA@@AE@,AA@@B@D,AA@@BAC,AA@@BBB,AA@@BCA,AA@@BD@,AA@@C@C,AA@@CAB,AA@@CBA,AA@@CC@,AA@@D@B,AA@@DAA,AA@@DB@,AA@@E@A,AA@@EA@,AA@@F@@,AA@A@@E,AA@A@AD,AA@A@BC,AA@A@CB,AA@A@DA,AA@A@E@,AA@AA@D,AA@AAAC,AA@AABB,AA@AACA,AA@AAD@,AA@AB@C,AA@ABAB,AA@ABBA,AA@ABC@,AA@AC@B,AA@ACAA,AA@ACB@,AA@AD@A,AA@ADA@,AA@AE@@,AA@B@@D,AA@B@AC,AA@B@BB,AA@B@CA,AA@B@D@,AA@BA@C,AA@BAAB,AA@BABA,AA@BAC@,AA@BB@B,AA@BBAA,AA@BBB@,AA@BC@A,AA@BCA@,AA@BD@@,AA@C@@C,AA@C@AB,AA@C@BA,AA@C@C@,AA@CA@B,AA@CAAA,AA@CAB@,AA@CB@A,AA@CBA@,AA@CC@@,AA@D@@B,AA@D@AA,AA@D@B@,AA@DA@A,AA@DAA@,AA@DB@@,AA@E@@A,AA@E@A@,AA@EA@@,AA@F@@@,AAA@@@E,AAA@@AD,AAA@@BC,AAA@@CB,AAA@@DA,AAA@@E@,AAA@A@D,AAA@AAC,AAA@ABB,AAA@ACA,AAA@AD@,AAA@B@C,AAA@BAB,AAA@BBA,AAA@BC@,AAA@C@B,AAA@CAA,AAA@CB@,AAA@D@A,AAA@DA@,AAA@E@@,AAAA@@D,AAAA@AC,AAAA@BB,AAAA@CA,AAAA@D@,AAAAA@C,AAAAAAB,AAAAABA,AAAAAC@,AAAAB@B,AAAABAA,AAAABB@,AAAAC@A,AAAACA@,AAAAD@@,AAAB@@C,AAAB@AB,AAAB@BA,AAAB@C@,AAABA@B,AAABAAA,AAABAB@,AAABB@A,AAABBA@,AAABC@@,AAAC@@B,AAAC@AA,AAAC@B@,AAACA@A,AAACAA@,AAACB@@,AAAD@@A,AAAD@A@,AAADA@@,AAAE@@@,AAB@@@D,AAB@@AC,AAB@@BB,AAB@@CA,AAB@@D@,AAB@A@C,AAB@AAB,AAB@ABA,AAB@AC@,AAB@B@B,AAB@BAA,AAB@BB@,AAB@C@A,AAB@CA@,AAB@D@@,AABA@@C,AABA@AB,AABA@BA,AABA@C@,AABAA@B,AABAAAA,AABAAB@,AABAB@A,AABABA@,AABAC@@,AABB@@B,AABB@AA,AABB@B@,AABBA@A,AABBAA@,AABBB@@,AABC@@A,AABC@A@,AABCA@@,AABD@@@,AAC@@@C,AAC@@AB,AAC@@BA,AAC@@C@,AAC@A@B,AAC@AAA,AAC@AB@,AAC@B@A,AAC@BA@,AAC@C@@,AACA@@B,AACA@AA,AACA@B@,AACAA@A,AACAAA@,AACAB@@,AACB@@A,AACB@A@,AACBA@@,AACC@@@,AAD@@@B,AAD@@AA,AAD@@B@,AAD@A@A,AAD@AA@,AAD@B@@,AADA@@A,AADA@A@,AADAA@@,AADB@@@,AAE@@@A,AAE@@A@,AAE@A@@,AAEA@@@,AAF@@@@,AB@@@@E,AB@@@AD,AB@@@BC,AB@@@CB,AB@@@DA,AB@@@E@,AB@@A@D,AB@@AAC,AB@@ABB,AB@@ACA,AB@@AD@,AB@@B@C,AB@@BAB,AB@@BBA,AB@@BC@,AB@@C@B,AB@@CAA,AB@@CB@,AB@@D@A,AB@@DA@,AB@@E@@,AB@A@@D,AB@A@AC,AB@A@BB,AB@A@CA,AB@A@D@,AB@AA@C,AB@AAAB,AB@AABA,AB@AAC@,AB@AB@B,AB@ABAA,AB@ABB@,AB@AC@A,AB@ACA@,AB@AD@@,AB@B@@C,AB@B@AB,AB@B@BA,AB@B@C@,AB@BA@B,AB@BAAA,AB@BAB@,AB@BB@A,AB@BBA@,AB@BC@@,AB@C@@B,AB@C@AA,AB@C@B@,AB@CA@A,AB@CAA@,AB@CB@@,AB@D@@A,AB@D@A@,AB@DA@@,AB@E@@@,ABA@@@D,ABA@@AC,ABA@@BB,ABA@@CA,ABA@@D@,ABA@A@C,ABA@AAB,ABA@ABA,ABA@AC@,ABA@B@B,ABA@BAA,ABA@BB@,ABA@C@A,ABA@CA@,ABA@D@@,ABAA@@C,ABAA@AB,ABAA@BA,ABAA@C@,ABAAA@B,ABAAAAA,ABAAAB@,ABAAB@A,ABAABA@,ABAAC@@,ABAB@@B,ABAB@AA,ABAB@B@,ABABA@A,ABABAA@,ABABB@@,ABAC@@A,ABAC@A@,ABACA@@,ABAD@@@,ABB@@@C,ABB@@AB,ABB@@BA,ABB@@C@,ABB@A@B,ABB@AAA,ABB@AB@,ABB@B@A,ABB@BA@,ABB@C@@,ABBA@@B,ABBA@AA,ABBA@B@,ABBAA@A,ABBAAA@,ABBAB@@,ABBB@@A,ABBB@A@,ABBBA@@,ABBC@@@,ABC@@@B,ABC@@AA,ABC@@B@,ABC@A@A,ABC@AA@,ABC@B@@,ABCA@@A,ABCA@A@,ABCAA@@,ABCB@@@,ABD@@@A,ABD@@A@,ABD@A@@,ABDA@@@,ABE@@@@,AC@@@@D,AC@@@AC,AC@@@BB,AC@@@CA,AC@@@D@,AC@@A@C,AC@@AAB,AC@@ABA,AC@@AC@,AC@@B@B,AC@@BAA,AC@@BB@,AC@@C@A,AC@@CA@,AC@@D@@,AC@A@@C,AC@A@AB,AC@A@BA,AC@A@C@,AC@AA@B,AC@AAAA,AC@AAB@,AC@AB@A,AC@ABA@,AC@AC@@,AC@B@@B,AC@B@AA,AC@B@B@,AC@BA@A,AC@BAA@,AC@BB@@,AC@C@@A,AC@C@A@,AC@CA@@,AC@D@@@,ACA@@@C,ACA@@AB,ACA@@BA,ACA@@C@,ACA@A@B,ACA@AAA,ACA@AB@,ACA@B@A,ACA@BA@,ACA@C@@,ACAA@@B,ACAA@AA,ACAA@B@,ACAAA@A,ACAAAA@,ACAAB@@,ACAB@@A,ACAB@A@,ACABA@@,ACAC@@@,ACB@@@B,ACB@@AA,ACB@@B@,ACB@A@A,ACB@AA@,ACB@B@@,ACBA@@A,ACBA@A@,ACBAA@@,ACBB@@@,ACC@@@A,ACC@@A@,ACC@A@@,ACCA@@@,ACD@@@@,AD@@@@C,AD@@@AB,AD@@@BA,AD@@@C@,AD@@A@B,AD@@AAA,AD@@AB@,AD@@B@A,AD@@BA@,AD@@C@@,AD@A@@B,AD@A@AA,AD@A@B@,AD@AA@A,AD@AAA@,AD@AB@@,AD@B@@A,AD@B@A@,AD@BA@@,AD@C@@@,ADA@@@B,ADA@@AA,ADA@@B@,ADA@A@A,ADA@AA@,ADA@B@@,ADAA@@A,ADAA@A@,ADAAA@@,ADAB@@@,ADB@@@A,ADB@@A@,ADB@A@@,ADBA@@@,ADC@@@@,AE@@@@B,AE@@@AA,AE@@@B@,AE@@A@A,AE@@AA@,AE@@B@@,AE@A@@A,AE@A@A@,AE@AA@@,AE@B@@@,AEA@@@A,AEA@@A@,AEA@A@@,AEAA@@@,AEB@@@@,AF@@@@A,AF@@@A@,AF@@A@@,AF@A@@@,AFA@@@@,AG@@@@@,B@@@@@F,B@@@@AE,B@@@@BD,B@@@@CC,B@@@@DB,B@@@@EA,B@@@@F@,B@@@A@E,B@@@AAD,B@@@ABC,B@@@ACB,B@@@ADA,B@@@AE@,B@@@B@D,B@@@BAC,B@@@BBB,B@@@BCA,B@@@BD@,B@@@C@C,B@@@CAB,B@@@CBA,B@@@CC@,B@@@D@B,B@@@DAA,B@@@DB@,B@@@E@A,B@@@EA@,B@@@F@@,B@@A@@E,B@@A@AD,B@@A@BC,B@@A@CB,B@@A@DA,B@@A@E@,B@@AA@D,B@@AAAC,B@@AABB,B@@AACA,B@@AAD@,B@@AB@C,B@@ABAB,B@@ABBA,B@@ABC@,B@@AC@B,B@@ACAA,B@@ACB@,B@@AD@A,B@@ADA@,B@@AE@@,B@@B@@D,B@@B@AC,B@@B@BB,B@@B@CA,B@@B@D@,B@@BA@C,B@@BAAB,B@@BABA,B@@BAC@,B@@BB@B,B@@BBAA,B@@BBB@,B@@BC@A,B@@BCA@,B@@BD@@,B@@C@@C,B@@C@AB,B@@C@BA,B@@C@C@,B@@CA@B,B@@CAAA,B@@CAB@,B@@CB@A,B@@CBA@,B@@CC@@,B@@D@@B,B@@D@AA,B@@D@B@,B@@DA@A,B@@DAA@,B@@DB@@,B@@E@@A,B@@E@A@,B@@EA@@,B@@F@@@,B@A@@@E,B@A@@AD,B@A@@BC,B@A@@CB,B@A@@DA,B@A@@E@,B@A@A@D,B@A@AAC,B@A@ABB,B@A@ACA,B@A@AD@,B@A@B@C,B@A@BAB,B@A@BBA,B@A@BC@,B@A@C@B,B@A@CAA,B@A@CB@,B@A@D@A,B@A@DA@,B@A@E@@,B@AA@@D,B@AA@AC,B@AA@BB,B@AA@CA,B@AA@D@,B@AAA@C,B@AAAAB,B@AAABA,B@AAAC@,B@AAB@B,B@AABAA,B@AABB@,B@AAC@A,B@AACA@,B@AAD@@,B@AB@@C,B@AB@AB,B@AB@BA,B@AB@C@,B@ABA@B,B@ABAAA,B@ABAB@,B@ABB@A,B@ABBA@,B@ABC@@,B@AC@@B,B@AC@AA,B@AC@B@,B@ACA@A,B@ACAA@,B@ACB@@,B@AD@@A,B@AD@A@,B@ADA@@,B@AE@@@,B@B@@@D,B@B@@AC,B@B@@BB,B@B@@CA,B@B@@D@,B@B@A@C,B@B@AAB,B@B@ABA,B@B@AC@,B@B@B@B,B@B@BAA,B@B@BB@,B@B@C@A,B@B@CA@,B@B@D@@,B@BA@@C,B@BA@AB,B@BA@BA,B@BA@C@,B@BAA@B,B@BAAAA,B@BAAB@,B@BAB@A,B@BABA@,B@BAC@@,B@BB@@B,B@BB@AA,B@BB@B@,B@BBA@A,B@BBAA@,B@BBB@@,B@BC@@A,B@BC@A@,B@BCA@@,B@BD@@@,B@C@@@C,B@C@@AB,B@C@@BA,B@C@@C@,B@C@A@B,B@C@AAA,B@C@AB@,B@C@B@A,B@C@BA@,B@C@C@@,B@CA@@B,B@CA@AA,B@CA@B@,B@CAA@A,B@CAAA@,B@CAB@@,B@CB@@A,B@CB@A@,B@CBA@@,B@CC@@@,B@D@@@B,B@D@@AA,B@D@@B@,B@D@A@A,B@D@AA@,B@D@B@@,B@DA@@A,B@DA@A@,B@DAA@@,B@DB@@@,B@E@@@A,B@E@@A@,B@E@A@@,B@EA@@@,B@F@@@@,BA@@@@E,BA@@@AD,BA@@@BC,BA@@@CB,BA@@@DA,BA@@@E@,BA@@A@D,BA@@AAC,BA@@ABB,BA@@ACA,BA@@AD@,BA@@B@C,BA@@BAB,BA@@BBA,BA@@BC@,BA@@C@B,BA@@CAA,BA@@CB@,BA@@D@A,BA@@DA@,BA@@E@@,BA@A@@D,BA@A@AC,BA@A@BB,BA@A@CA,BA@A@D@,BA@AA@C,BA@AAAB,BA@AABA,BA@AAC@,BA@AB@B,BA@ABAA,BA@ABB@,BA@AC@A,BA@ACA@,BA@AD@@,BA@B@@C,BA@B@AB,BA@B@BA,BA@B@C@,BA@BA@B,BA@BAAA,BA@BAB@,BA@BB@A,BA@BBA@,BA@BC@@,BA@C@@B,BA@C@AA,BA@C@B@,BA@CA@A,BA@CAA@,BA@CB@@,BA@D@@A,BA@D@A@,BA@DA@@,BA@E@@@,BAA@@@D,BAA@@AC,BAA@@BB,BAA@@CA,BAA@@D@,BAA@A@C,BAA@AAB,BAA@ABA,BAA@AC@,BAA@B@B,BAA@BAA,BAA@BB@,BAA@C@A,BAA@CA@,BAA@D@@,BAAA@@C,BAAA@AB,BAAA@BA,BAAA@C@,BAAAA@B,BAAAAAA,BAAAAB@,BAAAB@A,BAAABA@,BAAAC@@,BAAB@@B,BAAB@AA,BAAB@B@,BAABA@A,BAABAA@,BAABB@@,BAAC@@A,BAAC@A@,BAACA@@,BAAD@@@,BAB@@@C,BAB@@AB,BAB@@BA,BAB@@C@,BAB@A@B,BAB@AAA,BAB@AB@,BAB@B@A,BAB@BA@,BAB@C@@,BABA@@B,BABA@AA,BABA@B@,BABAA@A,BABAAA@,BABAB@@,BABB@@A,BABB@A@,BABBA@@,BABC@@@,BAC@@@B,BAC@@AA,BAC@@B@,BAC@A@A,BAC@AA@,BAC@B@@,BACA@@A,BACA@A@,BACAA@@,BACB@@@,BAD@@@A,BAD@@A@,BAD@A@@,BADA@@@,BAE@@@@,BB@@@@D,BB@@@AC,BB@@@BB,BB@@@CA,BB@@@D@,BB@@A@C,BB@@AAB,BB@@ABA,BB@@AC@,BB@@B@B,BB@@BAA,BB@@BB@,BB@@C@A,BB@@CA@,BB@@D@@,BB@A@@C,BB@A@AB,BB@A@BA,BB@A@C@,BB@AA@B,BB@AAAA,BB@AAB@,BB@AB@A,BB@ABA@,BB@AC@@,BB@B@@B,BB@B@AA,BB@B@B@,BB@BA@A,BB@BAA@,BB@BB@@,BB@C@@A,BB@C@A@,BB@CA@@,BB@D@@@,BBA@@@C,BBA@@AB,BBA@@BA,BBA@@C@,BBA@A@B,BBA@AAA,BBA@AB@,BBA@B@A,BBA@BA@,BBA@C@@,BBAA@@B,BBAA@AA,BBAA@B@,BBAAA@A,BBAAAA@,BBAAB@@,BBAB@@A,BBAB@A@,BBABA@@,BBAC@@@,BBB@@@B,BBB@@AA,BBB@@B@,BBB@A@A,BBB@AA@,BBB@B@@,BBBA@@A,BBBA@A@,BBBAA@@,BBBB@@@,BBC@@@A,BBC@@A@,BBC@A@@,BBCA@@@,BBD@@@@,BC@@@@C,BC@@@AB,BC@@@BA,BC@@@C@,BC@@A@B,BC@@AAA,BC@@AB@,BC@@B@A,BC@@BA@,BC@@C@@,BC@A@@B,BC@A@AA,BC@A@B@,BC@AA@A,BC@AAA@,BC@AB@@,BC@B@@A,BC@B@A@,BC@BA@@,BC@C@@@,BCA@@@B,BCA@@AA,BCA@@B@,BCA@A@A,BCA@AA@,BCA@B@@,BCAA@@A,BCAA@A@,BCAAA@@,BCAB@@@,BCB@@@A,BCB@@A@,BCB@A@@,BCBA@@@,BCC@@@@,BD@@@@B,BD@@@AA,BD@@@B@,BD@@A@A,BD@@AA@,BD@@B@@,BD@A@@A,BD@A@A@,BD@AA@@,BD@B@@@,BDA@@@A,BDA@@A@,BDA@A@@,BDAA@@@,BDB@@@@,BE@@@@A,BE@@@A@,BE@@A@@,BE@A@@@,BEA@@@@,BF@@@@@,C@@@@@E,C@@@@AD,C@@@@BC,C@@@@CB,C@@@@DA,C@@@@E@,C@@@A@D,C@@@AAC,C@@@ABB,C@@@ACA,C@@@AD@,C@@@B@C,C@@@BAB,C@@@BBA,C@@@BC@,C@@@C@B,C@@@CAA,C@@@CB@,C@@@D@A,C@@@DA@,C@@@E@@,C@@A@@D,C@@A@AC,C@@A@BB,C@@A@CA,C@@A@D@,C@@AA@C,C@@AAAB,C@@AABA,C@@AAC@,C@@AB@B,C@@ABAA,C@@ABB@,C@@AC@A,C@@ACA@,C@@AD@@,C@@B@@C,C@@B@AB,C@@B@BA,C@@B@C@,C@@BA@B,C@@BAAA,C@@BAB@,C@@BB@A,C@@BBA@,C@@BC@@,C@@C@@B,C@@C@AA,C@@C@B@,C@@CA@A,C@@CAA@,C@@CB@@,C@@D@@A,C@@D@A@,C@@DA@@,C@@E@@@,C@A@@@D,C@A@@AC,C@A@@BB,C@A@@CA,C@A@@D@,C@A@A@C,C@A@AAB,C@A@ABA,C@A@AC@,C@A@B@B,C@A@BAA,C@A@BB@,C@A@C@A,C@A@CA@,C@A@D@@,C@AA@@C,C@AA@AB,C@AA@BA,C@AA@C@,C@AAA@B,C@AAAAA,C@AAAB@,C@AAB@A,C@AABA@,C@AAC@@,C@AB@@B,C@AB@AA,C@AB@B@,C@ABA@A,C@ABAA@,C@ABB@@,C@AC@@A,C@AC@A@,C@ACA@@,C@AD@@@,C@B@@@C,C@B@@AB,C@B@@BA,C@B@@C@,C@B@A@B,C@B@AAA,C@B@AB@,C@B@B@A,C@B@BA@,C@B@C@@,C@BA@@B,C@BA@AA,C@BA@B@,C@BAA@A,C@BAAA@,C@BAB@@,C@BB@@A,C@BB@A@,C@BBA@@,C@BC@@@,C@C@@@B,C@C@@AA,C@C@@B@,C@C@A@A,C@C@AA@,C@C@B@@,C@CA@@A,C@CA@A@,C@CAA@@,C@CB@@@,C@D@@@A,C@D@@A@,C@D@A@@,C@DA@@@,C@E@@@@,CA@@@@D,CA@@@AC,CA@@@BB,CA@@@CA,CA@@@D@,CA@@A@C,CA@@AAB,CA@@ABA,CA@@AC@,CA@@B@B,CA@@BAA,CA@@BB@,CA@@C@A,CA@@CA@,CA@@D@@,CA@A@@C,CA@A@AB,CA@A@BA,CA@A@C@,CA@AA@B,CA@AAAA,CA@AAB@,CA@AB@A,CA@ABA@,CA@AC@@,CA@B@@B,CA@B@AA,CA@B@B@,CA@BA@A,CA@BAA@,CA@BB@@,CA@C@@A,CA@C@A@,CA@CA@@,CA@D@@@,CAA@@@C,CAA@@AB,CAA@@BA,CAA@@C@,CAA@A@B,CAA@AAA,CAA@AB@,CAA@B@A,CAA@BA@,CAA@C@@,CAAA@@B,CAAA@AA,CAAA@B@,CAAAA@A,CAAAAA@,CAAAB@@,CAAB@@A,CAAB@A@,CAABA@@,CAAC@@@,CAB@@@B,CAB@@AA,CAB@@B@,CAB@A@A,CAB@AA@,CAB@B@@,CABA@@A,CABA@A@,CABAA@@,CABB@@@,CAC@@@A,CAC@@A@,CAC@A@@,CACA@@@,CAD@@@@,CB@@@@C,CB@@@AB,CB@@@BA,CB@@@C@,CB@@A@B,CB@@AAA,CB@@AB@,CB@@B@A,CB@@BA@,CB@@C@@,CB@A@@B,CB@A@AA,CB@A@B@,CB@AA@A,CB@AAA@,CB@AB@@,CB@B@@A,CB@B@A@,CB@BA@@,CB@C@@@,CBA@@@B,CBA@@AA,CBA@@B@,CBA@A@A,CBA@AA@,CBA@B@@,CBAA@@A,CBAA@A@,CBAAA@@,CBAB@@@,CBB@@@A,CBB@@A@,CBB@A@@,CBBA@@@,CBC@@@@,CC@@@@B,CC@@@AA,CC@@@B@,CC@@A@A,CC@@AA@,CC@@B@@,CC@A@@A,CC@A@A@,CC@AA@@,CC@B@@@,CCA@@@A,CCA@@A@,CCA@A@@,CCAA@@@,CCB@@@@,CD@@@@A,CD@@@A@,CD@@A@@,CD@A@@@,CDA@@@@,CE@@@@@,D@@@@@D,D@@@@AC,D@@@@BB,D@@@@CA,D@@@@D@,D@@@A@C,D@@@AAB,D@@@ABA,D@@@AC@,D@@@B@B,D@@@BAA,D@@@BB@,D@@@C@A,D@@@CA@,D@@@D@@,D@@A@@C,D@@A@AB,D@@A@BA,D@@A@C@,D@@AA@B,D@@AAAA,D@@AAB@,D@@AB@A,D@@ABA@,D@@AC@@,D@@B@@B,D@@B@AA,D@@B@B@,D@@BA@A,D@@BAA@,D@@BB@@,D@@C@@A,D@@C@A@,D@@CA@@,D@@D@@@,D@A@@@C,D@A@@AB,D@A@@BA,D@A@@C@,D@A@A@B,D@A@AAA,D@A@AB@,D@A@B@A,D@A@BA@,D@A@C@@,D@AA@@B,D@AA@AA,D@AA@B@,D@AAA@A,D@AAAA@,D@AAB@@,D@AB@@A,D@AB@A@,D@ABA@@,D@AC@@@,D@B@@@B,D@B@@AA,D@B@@B@,D@B@A@A,D@B@AA@,D@B@B@@,D@BA@@A,D@BA@A@,D@BAA@@,D@BB@@@,D@C@@@A,D@C@@A@,D@C@A@@,D@CA@@@,D@D@@@@,DA@@@@C,DA@@@AB,DA@@@BA,DA@@@C@,DA@@A@B,DA@@AAA,DA@@AB@,DA@@B@A,DA@@BA@,DA@@C@@,DA@A@@B,DA@A@AA,DA@A@B@,DA@AA@A,DA@AAA@,DA@AB@@,DA@B@@A,DA@B@A@,DA@BA@@,DA@C@@@,DAA@@@B,DAA@@AA,DAA@@B@,DAA@A@A,DAA@AA@,DAA@B@@,DAAA@@A,DAAA@A@,DAAAA@@,DAAB@@@,DAB@@@A,DAB@@A@,DAB@A@@,DABA@@@,DAC@@@@,DB@@@@B,DB@@@AA,DB@@@B@,DB@@A@A,DB@@AA@,DB@@B@@,DB@A@@A,DB@A@A@,DB@AA@@,DB@B@@@,DBA@@@A,DBA@@A@,DBA@A@@,DBAA@@@,DBB@@@@,DC@@@@A,DC@@@A@,DC@@A@@,DC@A@@@,DCA@@@@,DD@@@@@,E@@@@@C,E@@@@AB,E@@@@BA,E@@@@C@,E@@@A@B,E@@@AAA,E@@@AB@,E@@@B@A,E@@@BA@,E@@@C@@,E@@A@@B,E@@A@AA,E@@A@B@,E@@AA@A,E@@AAA@,E@@AB@@,E@@B@@A,E@@B@A@,E@@BA@@,E@@C@@@,E@A@@@B,E@A@@AA,E@A@@B@,E@A@A@A,E@A@AA@,E@A@B@@,E@AA@@A,E@AA@A@,E@AAA@@,E@AB@@@,E@B@@@A,E@B@@A@,E@B@A@@,E@BA@@@,E@C@@@@,EA@@@@B,EA@@@AA,EA@@@B@,EA@@A@A,EA@@AA@,EA@@B@@,EA@A@@A,EA@A@A@,EA@AA@@,EA@B@@@,EAA@@@A,EAA@@A@,EAA@A@@,EAAA@@@,EAB@@@@,EB@@@@A,EB@@@A@,EB@@A@@,EB@A@@@,EBA@@@@,EC@@@@@,F@@@@@B,F@@@@AA,F@@@@B@,F@@@A@A,F@@@AA@,F@@@B@@,F@@A@@A,F@@A@A@,F@@AA@@,F@@B@@@,F@A@@@A,F@A@@A@,F@A@A@@,F@AA@@@,F@B@@@@,FA@@@@A,FA@@@A@,FA@@A@@,FA@A@@@,FAA@@@@,FB@@@@@,G@@@@@A,G@@@@A@,G@@@A@@,G@@A@@@,G@A@@@@,GA@@@@@,H@@@@@@}

Keep this in mind! This is your solution space size that you output...

C(8,7)= 3003. C(9,9) = 24310. C(200,100) =

1.3860838210861882482611278421088 x 1081

ProblemsSome Solutions to Problem 1:

s+k−1 , n−1

Often solutions try to take one element and form the next from the previous to avoid consuming extra space.

Randomized Generation Idea: Keep generating unique sequences of

unique sum of s from a uniform distribution on [0,s] and test if it's currently in the set.

Hard to analyze, but often useful in parallel implementations.

ProblemsSome Solutions to Problem 1:

s+k−1 , n−1

K-bit Reflected Gray Code Generation: Idea: Generate all gray codes in

lexicographical order of length n integers in binary, then on the last iteration, remove all elements which don't sum to s if the last symbol is added.

Constructs elements from scratch but the trade off could be dependent on implementation. (moves to modern results)

Bitner-Ehrlich-Reingold (BER) method.

ProblemsSome Solutions to Problem 1:

s+k−1 , n−1

Brute Force: Idea: Similar to the previous technique

except working directly with integers. Based on the definition, this technique can

always take advantage of the fact we have a continuous interval of non-negative integers.

Simpler to implement but space can grow substantially more than the previous. Very small instances can be efficient.

ProblemsUpper Bounds/Lower Bounds:

s+k−1 , n−1

This problem has been attacked numerous times by many researchers since the 70's by the likes of Knuth, Lothaire, and many others.

Optimal solution: Combinatorial Gray Codes. For simplicity: let k be the output size of a given

composition.

ProblemsVital Result:

s+k−1 , n−1

Goal: Compute gray codes quickly, and perform the 2nd technique (with modification).

O(1) – Generating gray codes in O(1) worst-case time per word [Walsh,2003]

Map this problem to our unrestricted composition problem

Upper Bound – Ω(k) [evident from above] Optimal Time.

ProblemsProblem 2 (Definition): A finite set CL,U

s,n which contains all integer

sequences л = л1 л2 ... лn such that Σ (лi) = s, 1≤i≤n, where L ≤ лi ≤ U.

This is called an bounded composition. Specific type of restricted composition. Inherits problems from problem 1. New problems: unused space and decision

complexity increases.

s+k−1 , n−1

ProblemsProblem 2:

Given positive integers n,s (n =0 iff s = 0), and non-negative integers L,U, enumerate the

bounded composition CL,Us,n .

Why would we want this?− Many of the same reasons, but some of the

more modern research was for statistical analysis in computation.

Applying the last problems solutions can be tedious but are doable but can lead to space-issues in contrast to solution size.

s+k−1 , n−1

ProblemsProblem 2:

Using the same techniques as Problem 1 would cause a rise in time-complexity

using the optimal solution. When L=0 and U=s, we get the

unrestricted composition. Same lower bound holds since this is a

sub-instance of Problem 1.

s+k−1 , n−1

ProblemsSome Solutions to Problem 2:

s+k−1 , n−1

Another technique:Idea: Based on Fibonnaci Numbers and

Pascal's Triangle for counting.[Kimberling. 2002]

Inside pascal's triangle there exists a path from an interior node to the root that will diagonally reach the root of the triangle. Thus when reading off the coefficients of the triangle you obtain a composition sequence of elements for each off diagonal.

Picture... next here...

ProblemsSome Solutions to Problem 2:

s+k−1 , n−1

ProblemsSome Solutions to Problem 2:

s+k−1 , n−1

ProblemsSome Solutions to Problem 2:

s+k−1 , n−1

ProblemsSome Solutions to Problem 2:

s+k−1 , n−1

This solution was developed by J.D. Opdyke in 2010 from Kimberling's result.

time-complexity: ~O(k x RICs) Hard to bound the algorithm's run-time. Flaws: Recursive, and has loops. Is the best result in Bounded Compositions.

Future ProblemsProblem 3:

s+k−1 , n−1

Given positive integers n,s (n =0 iff s = 0), and set of non-negative integers R, enumerate

the restricted composition CRs,n .

Very tough problem. General 'first order'. Has reduction to Positive Integer Subset

Sum Problem 1 and Problem 2's solutions won't

work on this without a heavy cost. Discontinuity of values.

Work on counting has been done for this but, not generating.

Future ResearchResearch Interests:

s+k−1 , n−1

We had mentioned Problem 3 but what other interests hold in this discourse with

Compositions still? Pattern avoidance work, w-avoidance

Relationships between Integer Partitions and Integer Compositions

'2nd order' problems with compositions.

Questions?

s+k−1 , n−1

Thank you very much for your time!

Questions?

Have a beautiful day!