Visitors   Views   Downloads


There are several different ways to tie a necktie (Fig. 1). Classically, knots such as the four-in-hand, the half windsor and the full windsor have commonly been taught to new tie-wearers. In a sequence of papers and a book, Fink & Mao (2001), Fink & Mao (2000) and Fink & Mao (1999) defined a formal language for describing tie-knots, encoding the topology and geometry of the knot tying process into the formal language, and then used this language to enumerate all tie-knots that could reasonably be tied with a normal-sized necktie.

The enumeration of Fink and Mao crucially depends on dictating a particular finishing sequence for tie-knots: a finishing sequence that forces the front of the knot—the façade—to be a flat stretch of fabric. With this assumption in place, Fink and Mao produce a list of 85 distinct tie-knots, and determine several novel knots that extend the previously commonly known list of tie-knots.

In recent years, however, interest has been growing for a new approach to tie-knots. In The matrix reloaded (Wachowski et al., 2003), the character of “The Merovingian” has a sequence of particularly fancy tie-knots. Attempts by fans of the movie to recreate the tie-knots from the Merovingian have led to a collection of new tie-knot inventions, all of which rely on tying the tie with the thin end of the tie—the thin blade. Doing this allows for a knot with textures or stylings of the front of the knot, producing symmetric and pleasing patterns.

Knorr (2010) gives the history of the development of novel tie-knots. It starts out in 2003 when the edeity knot is published as a PDF tutorial. Over the subsequent 7 years, more and more enthusiasts involve themselves, publish new approximations of the Merovingian tie-knot as PDF files or YouTube videos. By 2009, the new tie-knots are featured on the website Lifehacker and go viral.

In this paper, we present a radical simplification of the formal language proposed by Fink and Mao, together with an analysis of the asymptotic complexity class of the tie-knots language. We produce a novel enumeration of necktie-knots tied with the thin blade, and compare it to the results of Fink and Mao.

Formal languages

The work in this paper relies heavily on the language of formal languages, as used in theoretical computer science and in mathematical linguistics. For a comprehensive reference, we recommend the textbook by Sipser (2006).

Recall that given a finite set L called an alphabet, the set of all sequences of any length of items drawn (with replacement) from L is denoted by L. A formal language on the alphabet L is some subset A of L. The complexity of the automaton required to determine whether a sequence is an element of A places A in one of several complexity classes. Languages that are described by finite state automata are regular; languages that require a pushdown automaton are context free; languages that require a linear bounded automaton are context sensitive and languages that require a full Turing machine to determine are called recursively enumerable. This sequence builds an increasing hierarchy of expressibility and computational complexity for syntactic rules for strings of some arbitrary sort of tokens.

One way to describe a language is to give a grammar—a set of production rules that decompose some form of abstract tokens into sequences of abstract or concrete tokens, ending with a sequence of elements in some alphabet. The standard notation for such grammars is the Backus–Naur form, which uses : : = to denote the production rules and 〈some name〉 to denote the abstract tokens. Further common symbols are ∗, the Kleene star, that denotes an arbitrary number of repetitions of the previous token (or group in brackets), and |, denoting a choice of one of the adjoining options.

Some specific tie-knot examples.

Figure 1: Some specific tie-knot examples.

Top row from left: the Trinity (L-110.4), the Eldredge (L-373.2) and the Balthus (C-63.0, the largest knot listed by Fink and Mao). Bottom row randomly drawn knots. From left: L-81.0, L-625.0, R-353.0.

The Anatomy of a Necktie

In the following, we will often refer to various parts and constructions with a necktie. We call the ends of a necktie blades, and distinguish between the broad blade and the thin blade1—see Fig. 2 for these names. The tie-knot can be divided up into a body, consisting of all the twists and turns that are not directly visible in the final knot, and a façade, consisting of the parts of the tie actually visible in the end. In Fig. 3 we demonstrate this distinction. The body builds up the overall shape of the tie-knot, while the façade gives texture to the front of the knot. The enumeration of Fink and Mao only considers knots with trivial façades, while these later inventions all consider more interesting façades. As a knot is in place around a wearer, the Y-shape of the tie divides the torso into 3 regions: Left, Center and Right—as shown to the right in Fig. 2.


Figure 2: Left/Center/Right.

The parts of a necktie, and the division of the wearer’s torso with the regions (Left, Center Right) and the winding directions (Turnwise, Widdershins) marked out for reference.

A tie-knot has to be tied by winding and tucking one of the two blades around the other: if both blades are active, then the tie can no longer be adjusted in place for a comfortable fit. We shall refer to the blade used in tying the knot as the leading blade or the active blade. Each time the active blade is moved across the tie-knot—in front or in back—we call the part of the tie laid on top of the knot a bow.

Different examples of tie knots.

Figure 3: Different examples of tie knots.

Left, a 4-in-hand; middle, a double windsor; right a trinity. The 4-in-hand and double windsor share the flat façade but have different bodies producing different shapes. The trinity has a completely different façade, produced by a different wind and tuck pattern.

A Language for Tie-knots

Fink & Mao (2000) observe that once the first crossing has been made, the wrapping sequence of a classical tie-knot is completely decided by the sequence of regions into which the broad blade is moved. Adorning the region specifications with a direction—is the tie moving away from the wearer or towards the wearer—they establish a formal alphabet for describing tie-knots with 7 symbols. We reproduce their construction here, using U for the move to tuck the blade Under the tie itself.2 The notation proposed by Fink & Mao (2000) interprets repetitions Uk of U as tucking the blade k bows under the top. It turns out that the complexity analysis is far simpler if we instead write Uk for tucking the blade under the bow that was produced 2k windings ago. This produces a language on the alphabet: L,L,C,C,R,R,U

They then introduce relations and restrictions on these symbols:


No region (L, C, R) shall repeat: after an L only C or R are valid next regions. U moves do not influence this.


No direction (⊙—out of the paper, ⊗—in towards the paper) shall repeat: after an outwards move, the next one must go inwards. U moves do not influence this.


Tucks (U) are valid after an outward move.


A tie-knot can end only on one of C, C or U. In fact, almost all classical knots end on U.3


A k-fold tuck Uk is only valid after at least 2k preceding moves. Fink & Mao (2000) do not pay much attention to the conditions on k-fold tucks, since these show up in their enumeration as stylistic variations, exclusively at the end of a knot.

This collection of rules allow us to drastically shrink the tie language, both in alphabet and axioms. Fink & Mao are careful to annotate whether tie-knot moves go outwards or inwards at any given point. We note that the inwards/outwards distinction follows as a direct consequence of axioms Tie2, Tie3 and Tie4. Since non-tuck moves must alternate between inwards and outwards, and the last non-tuck move must be outwards, the orientation of any sequence of moves follows by backtracking from the end of the string.

Hence, when faced with a non-annotated string like RCLCRCLCRCLRURCLU we can immediately trace from the tail of the knot string: the last move before the final tuck must be outwards, so that L must be a L. So it must be preceded by RC. Tracing backwards, we can specify the entire string above to RCLCRCLCRCLRUCRCLU

Next, the axiom Tie1 means that a sequence will not contain either of LUL, CUC, RUR as subsequences.4 Hence, the listing of regions is less important than the direction of transition: any valid transition is going to go either clockwise or counterclockwise.5 Writing T for clockwise6 and W for counterclockwise,7 we can give a strongly reduced tie language on the alphabet T, W, U. To completely determine a tie-knot, the sequence needs a starting state: an annotation on whether the first crossing of a tie-knot goes across to the right or to the left. In such a sequence, a U instruction must be followed by either T or W dictating which direction the winding continues after the tuck, unless it is the last move of the tie: in this case, the blade is assumed to continue straight ahead—down in front for most broad-blade tie-knots, tucked in under the collar for most thin-blade knots.

The position of the leading blade after a sequence of W/T windings is a direct result of #W − #T(mod3). This observation allows us to gain control over several conditions determining whether a distribution of U symbols over a sequence of W/T produces a physically viable tie-knot.

Theorem 1.

A position in a winding sequence is valid for a k-fold tuck if the sub-sequence of the last 2k W or T symbols is such that either

  1. starts with W and satisfies #W − #T = 2 (mod3)

  2. starts with T and satisfies #T − #W = 2 (mod3).


The initial symbol produces the bow under which the tuck will go. If the initial symbol goes, say, from R to L, then the tuck move needs to come from C in order to go under the bow. In general, a tuck needs to come from the one region not involved in the covering bow. Every other bow goes in front of the knot, and the others go behind the knot. Hence, there are 2k − 1 additional winding symbols until the active blade returns to the right side of the knot. During these 2k − 1 symbols, we need to transition one more step around the sequence of regions. The transitions W and T are generator and inverse for the cyclic group of order 3, concluding the proof. □

It is worth noticing here that a particular point along a winding can be simultaneously valid for both a k-fold and an m-fold tuck for km. One example would be in the winding string TWTT: ending with TT, it is a valid site for a 1-fold tuck producing TWTTU, and since TWTT starts with T and has 2 more T than W, it is also a valid site for a 2-fold tuck producing TWTTUU. We will revisit this example below, in ‘Recursive tucks.’

We may notice that with the usual physical constraints on a tie—where we have experimentally established that broad blade ties tend to be bounded by 9 moves, and thin blade ties by 15 moves, we can expect that no meaningful tuck deeper than 7 will ever be relevant; 4 for the broad blade ties. The bound of 4 is achieved in the enumeration by Fink & Mao (1999).

In our enumeration, we will for the sake of comfort focus on ties up to 13 moves.

Language Complexity

In this section, we examine the complexity features of the tie-knot language. Due to the constraints we have already observed on the cardinality of W and T, we will define a grammar for this language. We will write this grammar with a Backus–Naur form. Although in practice it is only possible to realise finite strings in the tie-knot language due to the physical properties of fabric, we assume an arbitrarily long (but finite), infinitely thin tie.

Single-depth tucks

The classical Fink and Mao system has a regular grammar, given by tie::=LLlastR::=LlastL|ClastC|LCUlastL::=RlastR|ClastC|RCUlastC::=LlastL|RlastR

We use the symbol 〈lastR〉 to denote the rule that describes what can happen when the last move seen was an R. Hence, at any step in the grammar, some tie knot symbol is emitted, and the grammar continues from the state that symbol was the last symbol emitted.

The above grammar works well if the only tucks to appear are at the end. For intermediate tucks, and to avoid tucks to be placed at the back of the knot (obeying Tie3), we would need to keep track of winding parity: tucks are only valid an even number of winding steps from the end.

We can describe this with a regular grammar. For the full tie-knot language, the grammar will end up context-free, as we will see in ‘Recursive tucks.’ tie::=prefixpair|tucktuckprefix::=T|W|ϵpair::=T|WT|Wtuck::=TTU|WWU

The distribution of T and W varies by type of knot: for classical knots, #W − #T = 2 (mod3); for modern knots that tuck to the right, #W − #T = 1 (mod3); and for modern knots that tuck to the left, #W − #T = 0 (mod3). This grammar does not discriminate between these three sub-classes. In order to track these sub-classes, the RLC-notation is easier.

In order to rebuild this grammar to one based on the RLC-notation, note that from L a T takes us to C and a W takes us to R. So from a 〈lastT〉 residing at L, we have the options: W to R, T to C, or TU to C. In particular, there is a 〈lastT〉 at L if we arrived from R. Hence, the TU option can be seen as being a TTU option executing from the preceding R state.

There is thus, at any given position in the tie sequence, the options of proceeding with a T or a W, or to proceed with one of TTU or WWU. In the latter two cases, we can also accept the string. Starting at L, these options take us—in order—to C, to R, to CRU and to RCU respectively. This observation extends by symmetry to all stages, giving the grammar below. lastR::=LRlastR|CRlastR|LClastC|CLlastL|LCUlastC|CLUlastLlastL::=RLlastL|CLlastL|RClastC|CRlastR|RCUlastC|CRUlastRlastC::=LClastC|RClastC|LRlastR|RLlastL|LRUlastR|RLUlastLtie::=LlastL|RlastR|ClastC

By excluding some the exit rules, this allows us to enumerate novel tie-knots with a specific ending direction, which will be of interest later on.

Recursive tucks

We can write a context-free grammar for the arbitrary depth tuck tie-knots. tie::=prefixpair|tucktuckprefix::=T|W|ϵpair::=T|WT|Wtuck::=ttuck2|wtuck2ttuck2::=TTw0U|TWw1Uwtuck2::=WWw0U|WTw2Uw0::=WWw1U|WTw0U|TWw0U|TTw2U|ttuck2'w2U|wtuck2'w1U|ϵw1::=WWw2U|WTw1U|TWw1U|TTw0U|ttuck2'w0U|wtuck2'w2Uw2::=WWw0U|WTw2U|TWw2U|TTw1U|ttuck2'w1U|wtuck2'w0U

Note that the validity of a tuck depends only on the count of T and W in the entire sequence comprising the tuck, and not the validity of any tucks recursively embedded into it. For instance, TWTT is a valid depth-2-tuckable sequence, as is its embedded depth-1-tuckable sequence TT. However, TTWT is also a valid depth-2-tuckable sequence, even though WT is not a valid depth-1-tuckable sequence.

We introduce the symbol ' to delineate different tucks that may come in immediate sequence, such as happens in the tie knot TWTTU'UU.

Classification of the tie-knot language

If we limit our attention to only the single-depth tie-knots described in ‘Single-depth tucks,’ then the grammar is regular, proving that this tie language is a regular language and can be described by a finite automaton. In particular this implies that the tie-knot language proposed by Fink & Mao (1999) is regular. In fact, an automaton accepting these tie-knots is given by:

After the prefix, execution originates at the middle node, but has to go outside and return before the machine will accept input. This maintains the even length conditions required by Tie3.

As for the deeper tucked language in ‘Recursive tucks’, the grammar we gave shows it to be at most context-free. Whether it is exactly context-free requires us to exclude the existence of a regular grammar.

Theorem 2.

The deeper tucked language is context-free.


Our grammar in ‘Recursive tucks’ already shows that the language for deeper tucked tie-knots is either regular or context-free: it produces tie-knot strings with only single non-terminal symbols to the left of each production rule.

It remains to show that this language cannot be regular. To do this, we use the pumping lemma for regular languages. Recall that the pumping lemma states that for every regular language there is a constant p such that for any word w of length at least p, there is a decomposition w = xyz such that |xy| ≤ p, |y| ≥ 1 and xyiz is a valid string for all i > 0.

Since the reverse of any regular language is also regular, the pumping lemma has an alternative statement that requires |yz| ≤ p instead. We shall be using this next.

Suppose there is such a p. Consider the tie-knot TTW6q−2U3q for some q > p/3. Any decomposition such that |yz| ≤ p will be such that y and z consist of only U symbols. In particular y consists of only U symbols. Hence, for sufficiently large values of i, there are too few preceding T/W-symbols to admit that tuck depth.

Hence the language is not regular. □


We can cut down the enumeration work by using some apparent symmetries. Without loss of generality, we can assume that a tie-knot starts by putting the active blade in region R: any knot starting in the region L is the mirror image of a knot that starts in R and swaps all W to T and vice versa.

Generating functions

Generating functions have proven a powerful method for enumerative combinatorics. One very good overview of the field is provided by the textbooks by Stanley (1997) and Stanley (1999). Their relevance to formal languages is based on a paper by Chomsky & Schützenberger (1959) that studied context-free grammars using formal power series. More details will appear in the (yet unpublished) Handbook AutoMathA (Gruber, Lee & Shallit, 2012).

A generating function for a series an of numbers is a formal power series Az=j=0ajzj such that the coefficient of the degree k term is precisely ak. Where ak and bk are counts of “things of size k” of type a or b respectively, the sum of the corresponding generating functions is the count of “things of size k” across both categories. If gluing some thing of type a with size j to some thing of type b with size k produces a thing of size j + k, then the product of the generating functions measures the counts of things you get by gluing things together between the two types.

For our necktie-knot grammars, the sizes are the winding lengths of the ties, and it is clearly the case that adding a new symbol extends the size (thus is a multiplication action), and taking either one or another rule extends the items considered (thus is an additive action).

The Maple8 package combstruct has built-in functions for computing a generating function from a grammar specification. Using this, and the grammars we state in ‘Single-depth tucks,’ we are able to compute generating functions for both the winding counts and the necktie counts for both Fink and Mao’s setting and the single-depth tuck setting.

  • The generating function for Fink and Mao necktie-knots is z31+z12z=z3+z4+3z5+5z6+11z7+21z8+43z9+Oz10.

  • The generating function for single tuck necktie-knots is 2z32z+116z2=2z3+4z4+12z5+24z6+72z7+144z8+432z9+864z10+2,592z11+5,184z12+15,552z13+Oz14.

  • By removing final states from the BNF grammar, we can compute corresponding generating functions for each of the final tuck destinations.

    For an R-final tuck, we remove all final states except for CRU and LRU, making the non-terminal symbol mandatory for all other tuck sequences. For L, we remove all but CLU and RLU. For C, we remove all but RCU and LCU. This results in the following generating functions for R-final, L-final and C-final sequences, respectively. z32z32z2+z+116z2=z3+z4+4z5+8z6+24z7+48z8+144z9+288z10+864z11+1,728z12+5,184z13+Oz14 2z42z22z116z2=2z4+4z5+8z6+24z7+48z8+144z9+288z10+864z11+1,728z12+5,184z13+Oz14 z32z32z2+z+116z2=z3+z4+4z5+8z6+24z7+48z8+144z9+288z10+864z11+1,728z12+5,184z13+Oz14.

  • Removing the references to the tuck move, we recover generating functions for the number of windings available for each tie length. We give these for R-final, L-final and C-final respectively. Summed up, these simply enumerate all possible T/W-strings of the corresponding lengths, and so run through powers of 2. z31z2z2=z3+z4+3z5+5z6+11z7+21z8+43z9+85z10+171z11+341z12+683z13+Oz14 2z412z1+z=2z4+2z5+6z6+10z7+22z8+42z9+86z10+170z11+342z12+682z13+Oz14 z31z2z2=z3+z4+3z5+5z6+11z7+21z8+43z9+85z10+171z11+341z12+683z13+Oz14.

  • For the full grammar of arbitrary depth knots, we set w to be a root of (8z6 − 4z4) ζ3 + (−8z6 + 18z4 − 7z2) ζ2 + (−16z6 + 14z4 − 6z2 + 2) ζ − 12z4 + 9z2 − 2 = 0 solved for ζ. Then the generating function for this grammar is: 18z411z2+364w2z7128wz7+32w2z664wz648z5w2+216z5w24w2z496z5+108wz4+8w2z348z4110wz3+4w2z2+82z355z2w+41z2+16zw16z+8w8=2z2+4z3+20z4+40z5+192z6+384z7+1,896z8+3,792z9+19,320z10+38,640z11+202,392z12+404,784z13+2,169,784z14+Oz15.

Tables of counts

For ease of reading, we extract the results from the generating functions above to more easy-to-reference tables here. Winding length throughout refers to the number of R/L/C symbols occurring, and thus is 1 larger than the W/T count.

The cases enumerated by Fink & Mao (2000) are

Winding length 3 4 5 6 7 8 9 Total
# tie-knots 1 1 3 5 11 21 43 85

A knot with the thick blade active will cover up the entire knot with each new bow. As such, all thick blade active tie-knots will fall within the classification by Fink & Mao (2000).

The modern case, thus, deals with thin blade active knots. As evidenced by the Trinity and the Eldredge knots, thin blade knots have a wider range of interesting façades and of interesting tuck patterns. For thick blade knots, it was enough to assume that the tuck happens last, and from the C region, the thin blade knots have a far wider variety.

The case remains that unless the last move is a tuck—or possibly finishes in the C region—the knot will unravel from gravity. We can thus expect this to be a valid requirement for the enumeration. There are often more valid tuck sites than the final position in a knot, and the tuck need no longer come from the C region: R and L are at least as valid.

The computations in ‘Generating functions’ establish

Winding length 3 4 5 6 7 8 9 10 11 12 13 Total
# left windings 0 2 2 6 10 22 42 86 170 342 682 1,364
# right windings 1 1 3 5 11 21 43 85 171 341 683 1,365
# center windings 1 1 3 5 11 21 43 85 171 341 683 1,365
# left knots 0 2 4 8 24 48 144 288 864 1,728 5,184 8,294
# right knots 1 1 4 8 24 48 144 288 864 1,728 5,184 8,294
# center knots 1 1 4 8 24 48 144 288 864 1,728 5,184 8,294
# single tuck knots 2 4 12 24 72 144 432 864 2,592 4,146 15,552 24,882
total # knots 2 4 20 40 192 384 1,896 3,792 19,320 38,640 202,392 266,682

The first point where the singly tucked knots and the full range of knots deviate is at the knots with winding length 4; there are 12 singly tucked knots, and 8 knots that allow for a double tuck, namely:


The reason for the similarity between the right and the center counts is that the winding sequences can be mirrored. Left-directed knots are different since the direction corresponds to the starting direction. Hence, a winding sequence for a center tuck can be mirrored to a winding sequence for a right tuck.

In the preprint version of this paper, we claimed the total count of knots using only single-depth tucks to be 177,147. During the revision of the paper, we have discovered two errors in this claim:

  1. There is an off-by-one error in this count.

  2. This count was done for tie-knots that allow tucks that are hidden behind the knot. Adding this extra space to the generating grammar produces the generating function 2z3+6z4+18z5+54z6+162z7+486z8+1,458z9+4,374z10+13,122z11+39,366z12+118,098z13+Oz14 with a total of 177,146 tie-knots with up to 13 moves.


Fink & Mao (2000) propose several measures to quantify the aesthetic qualities of a necktie-knot; notably symmetry and balance, corresponding to the quantities #R − #L and the number of transitions from a streak of W to a streak of T or vice versa.

By considering the popular thin-blade neck tie-knots: the Eldredge and the Trinity, as described in Krasny (2012a) and Krasny (2012b), we can immediately note that balance no longer seems to be as important for the look of a tie-knot as is the shape of its façade. Symmetry still plays an important role in knots, and is easy to calculate using the CLR notation for tie-knots.

Knot TW-string CLR-string Balance Symmetry

We do not in this paper attempt to optimize any numeric measures of aesthetics, as this would require us to have a formal and quantifiable measure of the knot façades. This seems difficult with our currently available tools.


In this paper, we have extended the enumeration methods originally used by Fink & Mao (2000) to provide a larger enumeration of necktie-knots, including those knots tied with the thin blade of a necktie to produce ornate patterns in the knot façade.

We have found 4,094 winding patterns that take up to 13 moves to tie and are anchored by a final single depth tuck, and thus are reasonable candidates for use with a normal necktie. We chose the number of moves by examining popular thin-blade tie-knots—the Eldredge tie-knot uses 12 moves—and by experimentation with our own neckties. Most of these winding patterns allow several possible tuck patterns, and thus the 4,094 winding patterns give rise to 24,882 singly tucked tie-knots.

We have further shown that in the limit, the language describing neck tie-knots is context free, with a regular sub-language describing these 24,882 knots.

These counts, as well as the stated generating functions, are dependent on the correctness of the combstruct package in Maple, and the correctness of our encoding of these grammars as Maple code. We have checked the small counts and generated strings for each of the grammars against experiments with a necktie and with the results by Fink and Mao and our own catalogue.

Questions that remain open include:

  • Find a way to algorithmically divide a knot description string into a body/façade distinction.

  • Using such a distinction, classify all possible knot façades with reasonably short necktie lengths.

We have created a web-site that samples tie-knots from knots with at most 12 moves and displays tying instructions: The entire website has also been deposited with Figshare (Vejdemo-Johansson, 2015).

All the code we have used, as well as a table with assigned names for the 2,046 winding patterns for up to 12 moves are provided as Supplemental Information to this paper. Winding pattern names start with R, L or C depending on the direction of the final tuck, and then an index number within this direction. We suggest augmenting this with the bit-pattern describing which internal tucks have been added—so that e.g., the Eldredge would be L-373.4 (including only the 3rd potential tuck from the start) and the Trinity would be L-110.2 (including only the 2nd potential tuck). Thus, any single-depth tuck can be concisely addressed.

Supplemental Information

Maple code used in paper

DOI: 10.7717/peerj-cs.2/supp-1

Table over simple tie knots

DOI: 10.7717/peerj-cs.2/supp-2

Python code used in paper

DOI: 10.7717/peerj-cs.2/supp-3
There are neckties without a width difference between the ends. We ignore this distinction for this paper.
Fink and Mao used T for Tuck.
The exemption here being the Onassis style knot, favored by the eponymous shipping magnate, where after a classical knot the broad blade is brought up with a C move to fall in front of the knot, hiding the knot completely.
Recall that the Kleene star F is used to denote sequences of 0 or more repetitions of the string F.
Say, as seen on the mirror image. Changing this convention does not change the count, as long as the change is consequently done.
T for Turnwise.
W for Widdershins.
Maple is a trademark of Waterloo Maple Inc. The computations of generating functions in this paper were performed by using Maple.