Using generators in Python

Let's explore generators and the yield statement in the python language...

iterators

In [3]:
def countdown(n):
    print( "Counting down from", n)
    while n > 0:
        print('interim', n)
        yield n
        n -= 1

for i in countdown(5): 
    print('final', i)
Counting down from 5
interim 5
final 5
interim 4
final 4
interim 3
final 3
interim 2
final 2
interim 1
final 1
In [4]:
x = countdown(4)
x
Out[4]:
<generator object countdown at 0x110425e08>
In [5]:
help(x.send)
Help on built-in function send:

send(...) method of builtins.generator instance
    send(arg) -> send 'arg' into generator,
    return next yielded value or raise StopIteration.

In [6]:
x.send(None)
Counting down from 4
interim 4
Out[6]:
4
In [7]:
x.send(None)
interim 3
Out[7]:
3
In [8]:
x.send(None)
interim 2
Out[8]:
2
In [9]:
x.send(None)
interim 1
Out[9]:
1
In [10]:
try:
    x.send(None)
except StopIteration:
    print('finished')
finished

generators

In [11]:
def g(x):
    yield from range(x, 0, -1)
    yield from range(x)
print(g(5), list(g(5)), list(g(6)))
<generator object g at 0x110425f68> [5, 4, 3, 2, 1, 0, 1, 2, 3, 4] [6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5]
In [12]:
def accumulate():
    tally = 0
    while 1:
        next = yield
        if next is None:
            return tally
        tally += next

def gather_tallies(tallies):
    while 1:
        tally = yield from accumulate()
        tallies.append(tally)

tallies = []
acc = gather_tallies(tallies)
next(acc)  # Ensure the accumulator is ready to accept values

for i in range(4):
    acc.send(i)

acc.send(None)  # Finish the first tally
for i in range(5):
    acc.send(i)

acc.send(None)  # Finish the second tally
tallies
Out[12]:
[6, 10]

interacting with a generator

The following examples from http://www.python-course.eu/python3_generators.php

In [13]:
def abc():
    s = "abcdefg"
    count = 0
    while True:
        if count >= len(s):
            count = 0
        message = yield s[count]
        if message != None:
            count = 0 if message < 0 else message
        else:
            count += 1
            
            
x = abc()      
print(next(x))
print(next(x))
print(x.send(5))
print(next(x))
print(next(x))
a
b
f
g
a

as a function

In [15]:
def permutations(items):
    n = len(items)
    if n==0: yield []
    else:
        for i in range(len(items)):
            # break up the list in 2 parts
            for cc in permutations(items[:i]+items[i+1:]):
                yield [items[i]]+cc # append to the list

for p in permutations(['r','e','d']): print(''.join(p))
for p in permutations(list("game")): print(''.join(p) + ", ", end="")
for p in permutations(list("laurent")): print(''.join(p) + ", ", end="")
red
rde
erd
edr
dre
der
game, gaem, gmae, gmea, geam, gema, agme, agem, amge, ameg, aegm, aemg, mgae, mgea, mage, maeg, mega, meag, egam, egma, eagm, eamg, emga, emag, laurent, lauretn, laurnet, laurnte, laurten, laurtne, lauernt, lauertn, lauenrt, lauentr, lauetrn, lauetnr, launret, launrte, launert, launetr, launtre, launter, lautren, lautrne, lautern, lautenr, lautnre, lautner, laruent, laruetn, larunet, larunte, laruten, larutne, lareunt, lareutn, larenut, larentu, laretun, laretnu, larnuet, larnute, larneut, larnetu, larntue, larnteu, lartuen, lartune, larteun, lartenu, lartnue, lartneu, laeurnt, laeurtn, laeunrt, laeuntr, laeutrn, laeutnr, laerunt, laerutn, laernut, laerntu, laertun, laertnu, laenurt, laenutr, laenrut, laenrtu, laentur, laentru, laeturn, laetunr, laetrun, laetrnu, laetnur, laetnru, lanuret, lanurte, lanuert, lanuetr, lanutre, lanuter, lanruet, lanrute, lanreut, lanretu, lanrtue, lanrteu, laneurt, laneutr, lanerut, lanertu, lanetur, lanetru, lanture, lantuer, lantrue, lantreu, lanteur, lanteru, laturen, laturne, latuern, latuenr, latunre, latuner, latruen, latrune, latreun, latrenu, latrnue, latrneu, lateurn, lateunr, laterun, laternu, latenur, latenru, latnure, latnuer, latnrue, latnreu, latneur, latneru, luarent, luaretn, luarnet, luarnte, luarten, luartne, luaernt, luaertn, luaenrt, luaentr, luaetrn, luaetnr, luanret, luanrte, luanert, luanetr, luantre, luanter, luatren, luatrne, luatern, luatenr, luatnre, luatner, luraent, luraetn, luranet, lurante, luraten, luratne, lureant, lureatn, lurenat, lurenta, luretan, luretna, lurnaet, lurnate, lurneat, lurneta, lurntae, lurntea, lurtaen, lurtane, lurtean, lurtena, lurtnae, lurtnea, luearnt, lueartn, lueanrt, lueantr, lueatrn, lueatnr, luerant, lueratn, luernat, luernta, luertan, luertna, luenart, luenatr, luenrat, luenrta, luentar, luentra, luetarn, luetanr, luetran, luetrna, luetnar, luetnra, lunaret, lunarte, lunaert, lunaetr, lunatre, lunater, lunraet, lunrate, lunreat, lunreta, lunrtae, lunrtea, luneart, luneatr, lunerat, lunerta, lunetar, lunetra, luntare, luntaer, luntrae, luntrea, luntear, luntera, lutaren, lutarne, lutaern, lutaenr, lutanre, lutaner, lutraen, lutrane, lutrean, lutrena, lutrnae, lutrnea, lutearn, luteanr, luteran, luterna, lutenar, lutenra, lutnare, lutnaer, lutnrae, lutnrea, lutnear, lutnera, lrauent, lrauetn, lraunet, lraunte, lrauten, lrautne, lraeunt, lraeutn, lraenut, lraentu, lraetun, lraetnu, lranuet, lranute, lraneut, lranetu, lrantue, lranteu, lratuen, lratune, lrateun, lratenu, lratnue, lratneu, lruaent, lruaetn, lruanet, lruante, lruaten, lruatne, lrueant, lrueatn, lruenat, lruenta, lruetan, lruetna, lrunaet, lrunate, lruneat, lruneta, lruntae, lruntea, lrutaen, lrutane, lrutean, lrutena, lrutnae, lrutnea, lreaunt, lreautn, lreanut, lreantu, lreatun, lreatnu, lreuant, lreuatn, lreunat, lreunta, lreutan, lreutna, lrenaut, lrenatu, lrenuat, lrenuta, lrentau, lrentua, lretaun, lretanu, lretuan, lretuna, lretnau, lretnua, lrnauet, lrnaute, lrnaeut, lrnaetu, lrnatue, lrnateu, lrnuaet, lrnuate, lrnueat, lrnueta, lrnutae, lrnutea, lrneaut, lrneatu, lrneuat, lrneuta, lrnetau, lrnetua, lrntaue, lrntaeu, lrntuae, lrntuea, lrnteau, lrnteua, lrtauen, lrtaune, lrtaeun, lrtaenu, lrtanue, lrtaneu, lrtuaen, lrtuane, lrtuean, lrtuena, lrtunae, lrtunea, lrteaun, lrteanu, lrteuan, lrteuna, lrtenau, lrtenua, lrtnaue, lrtnaeu, lrtnuae, lrtnuea, lrtneau, lrtneua, leaurnt, leaurtn, leaunrt, leauntr, leautrn, leautnr, learunt, learutn, learnut, learntu, leartun, leartnu, leanurt, leanutr, leanrut, leanrtu, leantur, leantru, leaturn, leatunr, leatrun, leatrnu, leatnur, leatnru, leuarnt, leuartn, leuanrt, leuantr, leuatrn, leuatnr, leurant, leuratn, leurnat, leurnta, leurtan, leurtna, leunart, leunatr, leunrat, leunrta, leuntar, leuntra, leutarn, leutanr, leutran, leutrna, leutnar, leutnra, leraunt, lerautn, leranut, lerantu, leratun, leratnu, leruant, leruatn, lerunat, lerunta, lerutan, lerutna, lernaut, lernatu, lernuat, lernuta, lerntau, lerntua, lertaun, lertanu, lertuan, lertuna, lertnau, lertnua, lenaurt, lenautr, lenarut, lenartu, lenatur, lenatru, lenuart, lenuatr, lenurat, lenurta, lenutar, lenutra, lenraut, lenratu, lenruat, lenruta, lenrtau, lenrtua, lentaur, lentaru, lentuar, lentura, lentrau, lentrua, letaurn, letaunr, letarun, letarnu, letanur, letanru, letuarn, letuanr, leturan, leturna, letunar, letunra, letraun, letranu, letruan, letruna, letrnau, letrnua, letnaur, letnaru, letnuar, letnura, letnrau, letnrua, lnauret, lnaurte, lnauert, lnauetr, lnautre, lnauter, lnaruet, lnarute, lnareut, lnaretu, lnartue, lnarteu, lnaeurt, lnaeutr, lnaerut, lnaertu, lnaetur, lnaetru, lnature, lnatuer, lnatrue, lnatreu, lnateur, lnateru, lnuaret, lnuarte, lnuaert, lnuaetr, lnuatre, lnuater, lnuraet, lnurate, lnureat, lnureta, lnurtae, lnurtea, lnueart, lnueatr, lnuerat, lnuerta, lnuetar, lnuetra, lnutare, lnutaer, lnutrae, lnutrea, lnutear, lnutera, lnrauet, lnraute, lnraeut, lnraetu, lnratue, lnrateu, lnruaet, lnruate, lnrueat, lnrueta, lnrutae, lnrutea, lnreaut, lnreatu, lnreuat, lnreuta, lnretau, lnretua, lnrtaue, lnrtaeu, lnrtuae, lnrtuea, lnrteau, lnrteua, lneaurt, lneautr, lnearut, lneartu, lneatur, lneatru, lneuart, lneuatr, lneurat, lneurta, lneutar, lneutra, lneraut, lneratu, lneruat, lneruta, lnertau, lnertua, lnetaur, lnetaru, lnetuar, lnetura, lnetrau, lnetrua, lntaure, lntauer, lntarue, lntareu, lntaeur, lntaeru, lntuare, lntuaer, lnturae, lnturea, lntuear, lntuera, lntraue, lntraeu, lntruae, lntruea, lntreau, lntreua, lnteaur, lntearu, lnteuar, lnteura, lnterau, lnterua, ltauren, ltaurne, ltauern, ltauenr, ltaunre, ltauner, ltaruen, ltarune, ltareun, ltarenu, ltarnue, ltarneu, ltaeurn, ltaeunr, ltaerun, ltaernu, ltaenur, ltaenru, ltanure, ltanuer, ltanrue, ltanreu, ltaneur, ltaneru, ltuaren, ltuarne, ltuaern, ltuaenr, ltuanre, ltuaner, lturaen, lturane, lturean, lturena, lturnae, lturnea, ltuearn, ltueanr, ltueran, ltuerna, ltuenar, ltuenra, ltunare, ltunaer, ltunrae, ltunrea, ltunear, ltunera, ltrauen, ltraune, ltraeun, ltraenu, ltranue, ltraneu, ltruaen, ltruane, ltruean, ltruena, ltrunae, ltrunea, ltreaun, ltreanu, ltreuan, ltreuna, ltrenau, ltrenua, ltrnaue, ltrnaeu, ltrnuae, ltrnuea, ltrneau, ltrneua, lteaurn, lteaunr, ltearun, ltearnu, lteanur, lteanru, lteuarn, lteuanr, lteuran, lteurna, lteunar, lteunra, lteraun, lteranu, lteruan, lteruna, lternau, lternua, ltenaur, ltenaru, ltenuar, ltenura, ltenrau, ltenrua, ltnaure, ltnauer, ltnarue, ltnareu, ltnaeur, ltnaeru, ltnuare, ltnuaer, ltnurae, ltnurea, ltnuear, ltnuera, ltnraue, ltnraeu, ltnruae, ltnruea, ltnreau, ltnreua, ltneaur, ltnearu, ltneuar, ltneura, ltnerau, ltnerua, alurent, aluretn, alurnet, alurnte, alurten, alurtne, aluernt, aluertn, aluenrt, aluentr, aluetrn, aluetnr, alunret, alunrte, alunert, alunetr, aluntre, alunter, alutren, alutrne, alutern, alutenr, alutnre, alutner, alruent, alruetn, alrunet, alrunte, alruten, alrutne, alreunt, alreutn, alrenut, alrentu, alretun, alretnu, alrnuet, alrnute, alrneut, alrnetu, alrntue, alrnteu, alrtuen, alrtune, alrteun, alrtenu, alrtnue, alrtneu, aleurnt, aleurtn, aleunrt, aleuntr, aleutrn, aleutnr, alerunt, alerutn, alernut, alerntu, alertun, alertnu, alenurt, alenutr, alenrut, alenrtu, alentur, alentru, aleturn, aletunr, aletrun, aletrnu, aletnur, aletnru, alnuret, alnurte, alnuert, alnuetr, alnutre, alnuter, alnruet, alnrute, alnreut, alnretu, alnrtue, alnrteu, alneurt, alneutr, alnerut, alnertu, alnetur, alnetru, alnture, alntuer, alntrue, alntreu, alnteur, alnteru, alturen, alturne, altuern, altuenr, altunre, altuner, altruen, altrune, altreun, altrenu, altrnue, altrneu, alteurn, alteunr, alterun, alternu, altenur, altenru, altnure, altnuer, altnrue, altnreu, altneur, altneru, aulrent, aulretn, aulrnet, aulrnte, aulrten, aulrtne, aulernt, aulertn, aulenrt, aulentr, auletrn, auletnr, aulnret, aulnrte, aulnert, aulnetr, aulntre, aulnter, aultren, aultrne, aultern, aultenr, aultnre, aultner, aurlent, aurletn, aurlnet, aurlnte, aurlten, aurltne, aurelnt, aureltn, aurenlt, aurentl, auretln, auretnl, aurnlet, aurnlte, aurnelt, aurnetl, aurntle, aurntel, aurtlen, aurtlne, aurteln, aurtenl, aurtnle, aurtnel, auelrnt, auelrtn, auelnrt, auelntr, aueltrn, aueltnr, auerlnt, auerltn, auernlt, auerntl, auertln, auertnl, auenlrt, auenltr, auenrlt, auenrtl, auentlr, auentrl, auetlrn, auetlnr, auetrln, auetrnl, auetnlr, auetnrl, aunlret, aunlrte, aunlert, aunletr, aunltre, aunlter, aunrlet, aunrlte, aunrelt, aunretl, aunrtle, aunrtel, aunelrt, auneltr, aunerlt, aunertl, aunetlr, aunetrl, auntlre, auntler, auntrle, auntrel, auntelr, aunterl, autlren, autlrne, autlern, autlenr, autlnre, autlner, autrlen, autrlne, autreln, autrenl, autrnle, autrnel, autelrn, autelnr, auterln, auternl, autenlr, autenrl, autnlre, autnler, autnrle, autnrel, autnelr, autnerl, arluent, arluetn, arlunet, arlunte, arluten, arlutne, arleunt, arleutn, arlenut, arlentu, arletun, arletnu, arlnuet, arlnute, arlneut, arlnetu, arlntue, arlnteu, arltuen, arltune, arlteun, arltenu, arltnue, arltneu, arulent, aruletn, arulnet, arulnte, arulten, arultne, aruelnt, arueltn, aruenlt, aruentl, aruetln, aruetnl, arunlet, arunlte, arunelt, arunetl, aruntle, aruntel, arutlen, arutlne, aruteln, arutenl, arutnle, arutnel, arelunt, arelutn, arelnut, arelntu, areltun, areltnu, areulnt, areultn, areunlt, areuntl, areutln, areutnl, arenlut, arenltu, arenult, arenutl, arentlu, arentul, aretlun, aretlnu, aretuln, aretunl, aretnlu, aretnul, arnluet, arnlute, arnleut, arnletu, arnltue, arnlteu, arnulet, arnulte, arnuelt, arnuetl, arnutle, arnutel, arnelut, arneltu, arneult, arneutl, arnetlu, arnetul, arntlue, arntleu, arntule, arntuel, arntelu, arnteul, artluen, artlune, artleun, artlenu, artlnue, artlneu, artulen, artulne, artueln, artuenl, artunle, artunel, artelun, artelnu, arteuln, arteunl, artenlu, artenul, artnlue, artnleu, artnule, artnuel, artnelu, artneul, aelurnt, aelurtn, aelunrt, aeluntr, aelutrn, aelutnr, aelrunt, aelrutn, aelrnut, aelrntu, aelrtun, aelrtnu, aelnurt, aelnutr, aelnrut, aelnrtu, aelntur, aelntru, aelturn, aeltunr, aeltrun, aeltrnu, aeltnur, aeltnru, aeulrnt, aeulrtn, aeulnrt, aeulntr, aeultrn, aeultnr, aeurlnt, aeurltn, aeurnlt, aeurntl, aeurtln, aeurtnl, aeunlrt, aeunltr, aeunrlt, aeunrtl, aeuntlr, aeuntrl, aeutlrn, aeutlnr, aeutrln, aeutrnl, aeutnlr, aeutnrl, aerlunt, aerlutn, aerlnut, aerlntu, aerltun, aerltnu, aerulnt, aerultn, aerunlt, aeruntl, aerutln, aerutnl, aernlut, aernltu, aernult, aernutl, aerntlu, aerntul, aertlun, aertlnu, aertuln, aertunl, aertnlu, aertnul, aenlurt, aenlutr, aenlrut, aenlrtu, aenltur, aenltru, aenulrt, aenultr, aenurlt, aenurtl, aenutlr, aenutrl, aenrlut, aenrltu, aenrult, aenrutl, aenrtlu, aenrtul, aentlur, aentlru, aentulr, aenturl, aentrlu, aentrul, aetlurn, aetlunr, aetlrun, aetlrnu, aetlnur, aetlnru, aetulrn, aetulnr, aeturln, aeturnl, aetunlr, aetunrl, aetrlun, aetrlnu, aetruln, aetrunl, aetrnlu, aetrnul, aetnlur, aetnlru, aetnulr, aetnurl, aetnrlu, aetnrul, anluret, anlurte, anluert, anluetr, anlutre, anluter, anlruet, anlrute, anlreut, anlretu, anlrtue, anlrteu, anleurt, anleutr, anlerut, anlertu, anletur, anletru, anlture, anltuer, anltrue, anltreu, anlteur, anlteru, anulret, anulrte, anulert, anuletr, anultre, anulter, anurlet, anurlte, anurelt, anuretl, anurtle, anurtel, anuelrt, anueltr, anuerlt, anuertl, anuetlr, anuetrl, anutlre, anutler, anutrle, anutrel, anutelr, anuterl, anrluet, anrlute, anrleut, anrletu, anrltue, anrlteu, anrulet, anrulte, anruelt, anruetl, anrutle, anrutel, anrelut, anreltu, anreult, anreutl, anretlu, anretul, anrtlue, anrtleu, anrtule, anrtuel, anrtelu, anrteul, anelurt, anelutr, anelrut, anelrtu, aneltur, aneltru, aneulrt, aneultr, aneurlt, aneurtl, aneutlr, aneutrl, anerlut, anerltu, anerult, anerutl, anertlu, anertul, anetlur, anetlru, anetulr, aneturl, anetrlu, anetrul, antlure, antluer, antlrue, antlreu, antleur, antleru, antulre, antuler, anturle, anturel, antuelr, antuerl, antrlue, antrleu, antrule, antruel, antrelu, antreul, antelur, antelru, anteulr, anteurl, anterlu, anterul, atluren, atlurne, atluern, atluenr, atlunre, atluner, atlruen, atlrune, atlreun, atlrenu, atlrnue, atlrneu, atleurn, atleunr, atlerun, atlernu, atlenur, atlenru, atlnure, atlnuer, atlnrue, atlnreu, atlneur, atlneru, atulren, atulrne, atulern, atulenr, atulnre, atulner, aturlen, aturlne, atureln, aturenl, aturnle, aturnel, atuelrn, atuelnr, atuerln, atuernl, atuenlr, atuenrl, atunlre, atunler, atunrle, atunrel, atunelr, atunerl, atrluen, atrlune, atrleun, atrlenu, atrlnue, atrlneu, atrulen, atrulne, atrueln, atruenl, atrunle, atrunel, atrelun, atrelnu, atreuln, atreunl, atrenlu, atrenul, atrnlue, atrnleu, atrnule, atrnuel, atrnelu, atrneul, atelurn, atelunr, atelrun, atelrnu, atelnur, atelnru, ateulrn, ateulnr, ateurln, ateurnl, ateunlr, ateunrl, aterlun, aterlnu, ateruln, aterunl, aternlu, aternul, atenlur, atenlru, atenulr, atenurl, atenrlu, atenrul, atnlure, atnluer, atnlrue, atnlreu, atnleur, atnleru, atnulre, atnuler, atnurle, atnurel, atnuelr, atnuerl, atnrlue, atnrleu, atnrule, atnruel, atnrelu, atnreul, atnelur, atnelru, atneulr, atneurl, atnerlu, atnerul, ularent, ularetn, ularnet, ularnte, ularten, ulartne, ulaernt, ulaertn, ulaenrt, ulaentr, ulaetrn, ulaetnr, ulanret, ulanrte, ulanert, ulanetr, ulantre, ulanter, ulatren, ulatrne, ulatern, ulatenr, ulatnre, ulatner, ulraent, ulraetn, ulranet, ulrante, ulraten, ulratne, ulreant, ulreatn, ulrenat, ulrenta, ulretan, ulretna, ulrnaet, ulrnate, ulrneat, ulrneta, ulrntae, ulrntea, ulrtaen, ulrtane, ulrtean, ulrtena, ulrtnae, ulrtnea, ulearnt, uleartn, uleanrt, uleantr, uleatrn, uleatnr, ulerant, uleratn, ulernat, ulernta, ulertan, ulertna, ulenart, ulenatr, ulenrat, ulenrta, ulentar, ulentra, uletarn, uletanr, uletran, uletrna, uletnar, uletnra, ulnaret, ulnarte, ulnaert, ulnaetr, ulnatre, ulnater, ulnraet, ulnrate, ulnreat, ulnreta, ulnrtae, ulnrtea, ulneart, ulneatr, ulnerat, ulnerta, ulnetar, ulnetra, ulntare, ulntaer, ulntrae, ulntrea, ulntear, ulntera, ultaren, ultarne, ultaern, ultaenr, ultanre, ultaner, ultraen, ultrane, ultrean, ultrena, ultrnae, ultrnea, ultearn, ulteanr, ulteran, ulterna, ultenar, ultenra, ultnare, ultnaer, ultnrae, ultnrea, ultnear, ultnera, ualrent, ualretn, ualrnet, ualrnte, ualrten, ualrtne, ualernt, ualertn, ualenrt, ualentr, ualetrn, ualetnr, ualnret, ualnrte, ualnert, ualnetr, ualntre, ualnter, ualtren, ualtrne, ualtern, ualtenr, ualtnre, ualtner, uarlent, uarletn, uarlnet, uarlnte, uarlten, uarltne, uarelnt, uareltn, uarenlt, uarentl, uaretln, uaretnl, uarnlet, uarnlte, uarnelt, uarnetl, uarntle, uarntel, uartlen, uartlne, uarteln, uartenl, uartnle, uartnel, uaelrnt, uaelrtn, uaelnrt, uaelntr, uaeltrn, uaeltnr, uaerlnt, uaerltn, uaernlt, uaerntl, uaertln, uaertnl, uaenlrt, uaenltr, uaenrlt, uaenrtl, uaentlr, uaentrl, uaetlrn, uaetlnr, uaetrln, uaetrnl, uaetnlr, uaetnrl, uanlret, uanlrte, uanlert, uanletr, uanltre, uanlter, uanrlet, uanrlte, uanrelt, uanretl, uanrtle, uanrtel, uanelrt, uaneltr, uanerlt, uanertl, uanetlr, uanetrl, uantlre, uantler, uantrle, uantrel, uantelr, uanterl, uatlren, uatlrne, uatlern, uatlenr, uatlnre, uatlner, uatrlen, uatrlne, uatreln, uatrenl, uatrnle, uatrnel, uatelrn, uatelnr, uaterln, uaternl, uatenlr, uatenrl, uatnlre, uatnler, uatnrle, uatnrel, uatnelr, uatnerl, urlaent, urlaetn, urlanet, urlante, urlaten, urlatne, urleant, urleatn, urlenat, urlenta, urletan, urletna, urlnaet, urlnate, urlneat, urlneta, urlntae, urlntea, urltaen, urltane, urltean, urltena, urltnae, urltnea, uralent, uraletn, uralnet, uralnte, uralten, uraltne, uraelnt, uraeltn, uraenlt, uraentl, uraetln, uraetnl, uranlet, uranlte, uranelt, uranetl, urantle, urantel, uratlen, uratlne, urateln, uratenl, uratnle, uratnel, urelant, urelatn, urelnat, urelnta, ureltan, ureltna, urealnt, urealtn, ureanlt, ureantl, ureatln, ureatnl, urenlat, urenlta, urenalt, urenatl, urentla, urental, uretlan, uretlna, uretaln, uretanl, uretnla, uretnal, urnlaet, urnlate, urnleat, urnleta, urnltae, urnltea, urnalet, urnalte, urnaelt, urnaetl, urnatle, urnatel, urnelat, urnelta, urnealt, urneatl, urnetla, urnetal, urntlae, urntlea, urntale, urntael, urntela, urnteal, urtlaen, urtlane, urtlean, urtlena, urtlnae, urtlnea, urtalen, urtalne, urtaeln, urtaenl, urtanle, urtanel, urtelan, urtelna, urtealn, urteanl, urtenla, urtenal, urtnlae, urtnlea, urtnale, urtnael, urtnela, urtneal, uelarnt, uelartn, uelanrt, uelantr, uelatrn, uelatnr, uelrant, uelratn, uelrnat, uelrnta, uelrtan, uelrtna, uelnart, uelnatr, uelnrat, uelnrta, uelntar, uelntra, ueltarn, ueltanr, ueltran, ueltrna, ueltnar, ueltnra, uealrnt, uealrtn, uealnrt, uealntr, uealtrn, uealtnr, uearlnt, uearltn, uearnlt, uearntl, ueartln, ueartnl, ueanlrt, ueanltr, ueanrlt, ueanrtl, ueantlr, ueantrl, ueatlrn, ueatlnr, ueatrln, ueatrnl, ueatnlr, ueatnrl, uerlant, uerlatn, uerlnat, uerlnta, uerltan, uerltna, ueralnt, ueraltn, ueranlt, uerantl, ueratln, ueratnl, uernlat, uernlta, uernalt, uernatl, uerntla, uerntal, uertlan, uertlna, uertaln, uertanl, uertnla, uertnal, uenlart, uenlatr, uenlrat, uenlrta, uenltar, uenltra, uenalrt, uenaltr, uenarlt, uenartl, uenatlr, uenatrl, uenrlat, uenrlta, uenralt, uenratl, uenrtla, uenrtal, uentlar, uentlra, uentalr, uentarl, uentrla, uentral, uetlarn, uetlanr, uetlran, uetlrna, uetlnar, uetlnra, uetalrn, uetalnr, uetarln, uetarnl, uetanlr, uetanrl, uetrlan, uetrlna, uetraln, uetranl, uetrnla, uetrnal, uetnlar, uetnlra, uetnalr, uetnarl, uetnrla, uetnral, unlaret, unlarte, unlaert, unlaetr, unlatre, unlater, unlraet, unlrate, unlreat, unlreta, unlrtae, unlrtea, unleart, unleatr, unlerat, unlerta, unletar, unletra, unltare, unltaer, unltrae, unltrea, unltear, unltera, unalret, unalrte, unalert, unaletr, unaltre, unalter, unarlet, unarlte, unarelt, unaretl, unartle, unartel, unaelrt, unaeltr, unaerlt, unaertl, unaetlr, unaetrl, unatlre, unatler, unatrle, unatrel, unatelr, unaterl, unrlaet, unrlate, unrleat, unrleta, unrltae, unrltea, unralet, unralte, unraelt, unraetl, unratle, unratel, unrelat, unrelta, unrealt, unreatl, unretla, unretal, unrtlae, unrtlea, unrtale, unrtael, unrtela, unrteal, unelart, unelatr, unelrat, unelrta, uneltar, uneltra, unealrt, unealtr, unearlt, uneartl, uneatlr, uneatrl, unerlat, unerlta, uneralt, uneratl, unertla, unertal, unetlar, unetlra, unetalr, unetarl, unetrla, unetral, untlare, untlaer, untlrae, untlrea, untlear, untlera, untalre, untaler, untarle, untarel, untaelr, untaerl, untrlae, untrlea, untrale, untrael, untrela, untreal, untelar, untelra, untealr, untearl, unterla, unteral, utlaren, utlarne, utlaern, utlaenr, utlanre, utlaner, utlraen, utlrane, utlrean, utlrena, utlrnae, utlrnea, utlearn, utleanr, utleran, utlerna, utlenar, utlenra, utlnare, utlnaer, utlnrae, utlnrea, utlnear, utlnera, utalren, utalrne, utalern, utalenr, utalnre, utalner, utarlen, utarlne, utareln, utarenl, utarnle, utarnel, utaelrn, utaelnr, utaerln, utaernl, utaenlr, utaenrl, utanlre, utanler, utanrle, utanrel, utanelr, utanerl, utrlaen, utrlane, utrlean, utrlena, utrlnae, utrlnea, utralen, utralne, utraeln, utraenl, utranle, utranel, utrelan, utrelna, utrealn, utreanl, utrenla, utrenal, utrnlae, utrnlea, utrnale, utrnael, utrnela, utrneal, utelarn, utelanr, utelran, utelrna, utelnar, utelnra, utealrn, utealnr, utearln, utearnl, uteanlr, uteanrl, uterlan, uterlna, uteraln, uteranl, uternla, uternal, utenlar, utenlra, utenalr, utenarl, utenrla, utenral, utnlare, utnlaer, utnlrae, utnlrea, utnlear, utnlera, utnalre, utnaler, utnarle, utnarel, utnaelr, utnaerl, utnrlae, utnrlea, utnrale, utnrael, utnrela, utnreal, utnelar, utnelra, utnealr, utnearl, utnerla, utneral, rlauent, rlauetn, rlaunet, rlaunte, rlauten, rlautne, rlaeunt, rlaeutn, rlaenut, rlaentu, rlaetun, rlaetnu, rlanuet, rlanute, rlaneut, rlanetu, rlantue, rlanteu, rlatuen, rlatune, rlateun, rlatenu, rlatnue, rlatneu, rluaent, rluaetn, rluanet, rluante, rluaten, rluatne, rlueant, rlueatn, rluenat, rluenta, rluetan, rluetna, rlunaet, rlunate, rluneat, rluneta, rluntae, rluntea, rlutaen, rlutane, rlutean, rlutena, rlutnae, rlutnea, rleaunt, rleautn, rleanut, rleantu, rleatun, rleatnu, rleuant, rleuatn, rleunat, rleunta, rleutan, rleutna, rlenaut, rlenatu, rlenuat, rlenuta, rlentau, rlentua, rletaun, rletanu, rletuan, rletuna, rletnau, rletnua, rlnauet, rlnaute, rlnaeut, rlnaetu, rlnatue, rlnateu, rlnuaet, rlnuate, rlnueat, rlnueta, rlnutae, rlnutea, rlneaut, rlneatu, rlneuat, rlneuta, rlnetau, rlnetua, rlntaue, rlntaeu, rlntuae, rlntuea, rlnteau, rlnteua, rltauen, rltaune, rltaeun, rltaenu, rltanue, rltaneu, rltuaen, rltuane, rltuean, rltuena, rltunae, rltunea, rlteaun, rlteanu, rlteuan, rlteuna, rltenau, rltenua, rltnaue, rltnaeu, rltnuae, rltnuea, rltneau, rltneua, raluent, raluetn, ralunet, ralunte, raluten, ralutne, raleunt, raleutn, ralenut, ralentu, raletun, raletnu, ralnuet, ralnute, ralneut, ralnetu, ralntue, ralnteu, raltuen, raltune, ralteun, raltenu, raltnue, raltneu, raulent, rauletn, raulnet, raulnte, raulten, raultne, rauelnt, raueltn, rauenlt, rauentl, rauetln, rauetnl, raunlet, raunlte, raunelt, raunetl, rauntle, rauntel, rautlen, rautlne, rauteln, rautenl, rautnle, rautnel, raelunt, raelutn, raelnut, raelntu, raeltun, raeltnu, raeulnt, raeultn, raeunlt, raeuntl, raeutln, raeutnl, raenlut, raenltu, raenult, raenutl, raentlu, raentul, raetlun, raetlnu, raetuln, raetunl, raetnlu, raetnul, ranluet, ranlute, ranleut, ranletu, ranltue, ranlteu, ranulet, ranulte, ranuelt, ranuetl, ranutle, ranutel, ranelut, raneltu, raneult, raneutl, ranetlu, ranetul, rantlue, rantleu, rantule, rantuel, rantelu, ranteul, ratluen, ratlune, ratleun, ratlenu, ratlnue, ratlneu, ratulen, ratulne, ratueln, ratuenl, ratunle, ratunel, ratelun, ratelnu, rateuln, rateunl, ratenlu, ratenul, ratnlue, ratnleu, ratnule, ratnuel, ratnelu, ratneul, rulaent, rulaetn, rulanet, rulante, rulaten, rulatne, ruleant, ruleatn, rulenat, rulenta, ruletan, ruletna, rulnaet, rulnate, rulneat, rulneta, rulntae, rulntea, rultaen, rultane, rultean, rultena, rultnae, rultnea, rualent, rualetn, rualnet, rualnte, rualten, rualtne, ruaelnt, ruaeltn, ruaenlt, ruaentl, ruaetln, ruaetnl, ruanlet, ruanlte, ruanelt, ruanetl, ruantle, ruantel, ruatlen, ruatlne, ruateln, ruatenl, ruatnle, ruatnel, ruelant, ruelatn, ruelnat, ruelnta, rueltan, rueltna, ruealnt, ruealtn, rueanlt, rueantl, rueatln, rueatnl, ruenlat, ruenlta, ruenalt, ruenatl, ruentla, ruental, ruetlan, ruetlna, ruetaln, ruetanl, ruetnla, ruetnal, runlaet, runlate, runleat, runleta, runltae, runltea, runalet, runalte, runaelt, runaetl, runatle, runatel, runelat, runelta, runealt, runeatl, runetla, runetal, runtlae, runtlea, runtale, runtael, runtela, runteal, rutlaen, rutlane, rutlean, rutlena, rutlnae, rutlnea, rutalen, rutalne, rutaeln, rutaenl, rutanle, rutanel, rutelan, rutelna, rutealn, ruteanl, rutenla, rutenal, rutnlae, rutnlea, rutnale, rutnael, rutnela, rutneal, relaunt, relautn, relanut, relantu, relatun, relatnu, reluant, reluatn, relunat, relunta, relutan, relutna, relnaut, relnatu, relnuat, relnuta, relntau, relntua, reltaun, reltanu, reltuan, reltuna, reltnau, reltnua, realunt, realutn, realnut, realntu, realtun, realtnu, reaulnt, reaultn, reaunlt, reauntl, reautln, reautnl, reanlut, reanltu, reanult, reanutl, reantlu, reantul, reatlun, reatlnu, reatuln, reatunl, reatnlu, reatnul, reulant, reulatn, reulnat, reulnta, reultan, reultna, reualnt, reualtn, reuanlt, reuantl, reuatln, reuatnl, reunlat, reunlta, reunalt, reunatl, reuntla, reuntal, reutlan, reutlna, reutaln, reutanl, reutnla, reutnal, renlaut, renlatu, renluat, renluta, renltau, renltua, renalut, renaltu, renault, renautl, renatlu, renatul, renulat, renulta, renualt, renuatl, renutla, renutal, rentlau, rentlua, rentalu, rentaul, rentula, rentual, retlaun, retlanu, retluan, retluna, retlnau, retlnua, retalun, retalnu, retauln, retaunl, retanlu, retanul, retulan, retulna, retualn, retuanl, retunla, retunal, retnlau, retnlua, retnalu, retnaul, retnula, retnual, rnlauet, rnlaute, rnlaeut, rnlaetu, rnlatue, rnlateu, rnluaet, rnluate, rnlueat, rnlueta, rnlutae, rnlutea, rnleaut, rnleatu, rnleuat, rnleuta, rnletau, rnletua, rnltaue, rnltaeu, rnltuae, rnltuea, rnlteau, rnlteua, rnaluet, rnalute, rnaleut, rnaletu, rnaltue, rnalteu, rnaulet, rnaulte, rnauelt, rnauetl, rnautle, rnautel, rnaelut, rnaeltu, rnaeult, rnaeutl, rnaetlu, rnaetul, rnatlue, rnatleu, rnatule, rnatuel, rnatelu, rnateul, rnulaet, rnulate, rnuleat, rnuleta, rnultae, rnultea, rnualet, rnualte, rnuaelt, rnuaetl, rnuatle, rnuatel, rnuelat, rnuelta, rnuealt, rnueatl, rnuetla, rnuetal, rnutlae, rnutlea, rnutale, rnutael, rnutela, rnuteal, rnelaut, rnelatu, rneluat, rneluta, rneltau, rneltua, rnealut, rnealtu, rneault, rneautl, rneatlu, rneatul, rneulat, rneulta, rneualt, rneuatl, rneutla, rneutal, rnetlau, rnetlua, rnetalu, rnetaul, rnetula, rnetual, rntlaue, rntlaeu, rntluae, rntluea, rntleau, rntleua, rntalue, rntaleu, rntaule, rntauel, rntaelu, rntaeul, rntulae, rntulea, rntuale, rntuael, rntuela, rntueal, rntelau, rntelua, rntealu, rnteaul, rnteula, rnteual, rtlauen, rtlaune, rtlaeun, rtlaenu, rtlanue, rtlaneu, rtluaen, rtluane, rtluean, rtluena, rtlunae, rtlunea, rtleaun, rtleanu, rtleuan, rtleuna, rtlenau, rtlenua, rtlnaue, rtlnaeu, rtlnuae, rtlnuea, rtlneau, rtlneua, rtaluen, rtalune, rtaleun, rtalenu, rtalnue, rtalneu, rtaulen, rtaulne, rtaueln, rtauenl, rtaunle, rtaunel, rtaelun, rtaelnu, rtaeuln, rtaeunl, rtaenlu, rtaenul, rtanlue, rtanleu, rtanule, rtanuel, rtanelu, rtaneul, rtulaen, rtulane, rtulean, rtulena, rtulnae, rtulnea, rtualen, rtualne, rtuaeln, rtuaenl, rtuanle, rtuanel, rtuelan, rtuelna, rtuealn, rtueanl, rtuenla, rtuenal, rtunlae, rtunlea, rtunale, rtunael, rtunela, rtuneal, rtelaun, rtelanu, rteluan, rteluna, rtelnau, rtelnua, rtealun, rtealnu, rteauln, rteaunl, rteanlu, rteanul, rteulan, rteulna, rteualn, rteuanl, rteunla, rteunal, rtenlau, rtenlua, rtenalu, rtenaul, rtenula, rtenual, rtnlaue, rtnlaeu, rtnluae, rtnluea, rtnleau, rtnleua, rtnalue, rtnaleu, rtnaule, rtnauel, rtnaelu, rtnaeul, rtnulae, rtnulea, rtnuale, rtnuael, rtnuela, rtnueal, rtnelau, rtnelua, rtnealu, rtneaul, rtneula, rtneual, elaurnt, elaurtn, elaunrt, elauntr, elautrn, elautnr, elarunt, elarutn, elarnut, elarntu, elartun, elartnu, elanurt, elanutr, elanrut, elanrtu, elantur, elantru, elaturn, elatunr, elatrun, elatrnu, elatnur, elatnru, eluarnt, eluartn, eluanrt, eluantr, eluatrn, eluatnr, elurant, eluratn, elurnat, elurnta, elurtan, elurtna, elunart, elunatr, elunrat, elunrta, eluntar, eluntra, elutarn, elutanr, elutran, elutrna, elutnar, elutnra, elraunt, elrautn, elranut, elrantu, elratun, elratnu, elruant, elruatn, elrunat, elrunta, elrutan, elrutna, elrnaut, elrnatu, elrnuat, elrnuta, elrntau, elrntua, elrtaun, elrtanu, elrtuan, elrtuna, elrtnau, elrtnua, elnaurt, elnautr, elnarut, elnartu, elnatur, elnatru, elnuart, elnuatr, elnurat, elnurta, elnutar, elnutra, elnraut, elnratu, elnruat, elnruta, elnrtau, elnrtua, elntaur, elntaru, elntuar, elntura, elntrau, elntrua, eltaurn, eltaunr, eltarun, eltarnu, eltanur, eltanru, eltuarn, eltuanr, elturan, elturna, eltunar, eltunra, eltraun, eltranu, eltruan, eltruna, eltrnau, eltrnua, eltnaur, eltnaru, eltnuar, eltnura, eltnrau, eltnrua, ealurnt, ealurtn, ealunrt, ealuntr, ealutrn, ealutnr, ealrunt, ealrutn, ealrnut, ealrntu, ealrtun, ealrtnu, ealnurt, ealnutr, ealnrut, ealnrtu, ealntur, ealntru, ealturn, ealtunr, ealtrun, ealtrnu, ealtnur, ealtnru, eaulrnt, eaulrtn, eaulnrt, eaulntr, eaultrn, eaultnr, eaurlnt, eaurltn, eaurnlt, eaurntl, eaurtln, eaurtnl, eaunlrt, eaunltr, eaunrlt, eaunrtl, eauntlr, eauntrl, eautlrn, eautlnr, eautrln, eautrnl, eautnlr, eautnrl, earlunt, earlutn, earlnut, earlntu, earltun, earltnu, earulnt, earultn, earunlt, earuntl, earutln, earutnl, earnlut, earnltu, earnult, earnutl, earntlu, earntul, eartlun, eartlnu, eartuln, eartunl, eartnlu, eartnul, eanlurt, eanlutr, eanlrut, eanlrtu, eanltur, eanltru, eanulrt, eanultr, eanurlt, eanurtl, eanutlr, eanutrl, eanrlut, eanrltu, eanrult, eanrutl, eanrtlu, eanrtul, eantlur, eantlru, eantulr, eanturl, eantrlu, eantrul, eatlurn, eatlunr, eatlrun, eatlrnu, eatlnur, eatlnru, eatulrn, eatulnr, eaturln, eaturnl, eatunlr, eatunrl, eatrlun, eatrlnu, eatruln, eatrunl, eatrnlu, eatrnul, eatnlur, eatnlru, eatnulr, eatnurl, eatnrlu, eatnrul, eularnt, eulartn, eulanrt, eulantr, eulatrn, eulatnr, eulrant, eulratn, eulrnat, eulrnta, eulrtan, eulrtna, eulnart, eulnatr, eulnrat, eulnrta, eulntar, eulntra, eultarn, eultanr, eultran, eultrna, eultnar, eultnra, eualrnt, eualrtn, eualnrt, eualntr, eualtrn, eualtnr, euarlnt, euarltn, euarnlt, euarntl, euartln, euartnl, euanlrt, euanltr, euanrlt, euanrtl, euantlr, euantrl, euatlrn, euatlnr, euatrln, euatrnl, euatnlr, euatnrl, eurlant, eurlatn, eurlnat, eurlnta, eurltan, eurltna, euralnt, euraltn, euranlt, eurantl, euratln, euratnl, eurnlat, eurnlta, eurnalt, eurnatl, eurntla, eurntal, eurtlan, eurtlna, eurtaln, eurtanl, eurtnla, eurtnal, eunlart, eunlatr, eunlrat, eunlrta, eunltar, eunltra, eunalrt, eunaltr, eunarlt, eunartl, eunatlr, eunatrl, eunrlat, eunrlta, eunralt, eunratl, eunrtla, eunrtal, euntlar, euntlra, euntalr, euntarl, euntrla, euntral, eutlarn, eutlanr, eutlran, eutlrna, eutlnar, eutlnra, eutalrn, eutalnr, eutarln, eutarnl, eutanlr, eutanrl, eutrlan, eutrlna, eutraln, eutranl, eutrnla, eutrnal, eutnlar, eutnlra, eutnalr, eutnarl, eutnrla, eutnral, erlaunt, erlautn, erlanut, erlantu, erlatun, erlatnu, erluant, erluatn, erlunat, erlunta, erlutan, erlutna, erlnaut, erlnatu, erlnuat, erlnuta, erlntau, erlntua, erltaun, erltanu, erltuan, erltuna, erltnau, erltnua, eralunt, eralutn, eralnut, eralntu, eraltun, eraltnu, eraulnt, eraultn, eraunlt, erauntl, erautln, erautnl, eranlut, eranltu, eranult, eranutl, erantlu, erantul, eratlun, eratlnu, eratuln, eratunl, eratnlu, eratnul, erulant, erulatn, erulnat, erulnta, erultan, erultna, erualnt, erualtn, eruanlt, eruantl, eruatln, eruatnl, erunlat, erunlta, erunalt, erunatl, eruntla, eruntal, erutlan, erutlna, erutaln, erutanl, erutnla, erutnal, ernlaut, ernlatu, ernluat, ernluta, ernltau, ernltua, ernalut, ernaltu, ernault, ernautl, ernatlu, ernatul, ernulat, ernulta, ernualt, ernuatl, ernutla, ernutal, erntlau, erntlua, erntalu, erntaul, erntula, erntual, ertlaun, ertlanu, ertluan, ertluna, ertlnau, ertlnua, ertalun, ertalnu, ertauln, ertaunl, ertanlu, ertanul, ertulan, ertulna, ertualn, ertuanl, ertunla, ertunal, ertnlau, ertnlua, ertnalu, ertnaul, ertnula, ertnual, enlaurt, enlautr, enlarut, enlartu, enlatur, enlatru, enluart, enluatr, enlurat, enlurta, enlutar, enlutra, enlraut, enlratu, enlruat, enlruta, enlrtau, enlrtua, enltaur, enltaru, enltuar, enltura, enltrau, enltrua, enalurt, enalutr, enalrut, enalrtu, enaltur, enaltru, enaulrt, enaultr, enaurlt, enaurtl, enautlr, enautrl, enarlut, enarltu, enarult, enarutl, enartlu, enartul, enatlur, enatlru, enatulr, enaturl, enatrlu, enatrul, enulart, enulatr, enulrat, enulrta, enultar, enultra, enualrt, enualtr, enuarlt, enuartl, enuatlr, enuatrl, enurlat, enurlta, enuralt, enuratl, enurtla, enurtal, enutlar, enutlra, enutalr, enutarl, enutrla, enutral, enrlaut, enrlatu, enrluat, enrluta, enrltau, enrltua, enralut, enraltu, enrault, enrautl, enratlu, enratul, enrulat, enrulta, enrualt, enruatl, enrutla, enrutal, enrtlau, enrtlua, enrtalu, enrtaul, enrtula, enrtual, entlaur, entlaru, entluar, entlura, entlrau, entlrua, entalur, entalru, entaulr, entaurl, entarlu, entarul, entular, entulra, entualr, entuarl, enturla, entural, entrlau, entrlua, entralu, entraul, entrula, entrual, etlaurn, etlaunr, etlarun, etlarnu, etlanur, etlanru, etluarn, etluanr, etluran, etlurna, etlunar, etlunra, etlraun, etlranu, etlruan, etlruna, etlrnau, etlrnua, etlnaur, etlnaru, etlnuar, etlnura, etlnrau, etlnrua, etalurn, etalunr, etalrun, etalrnu, etalnur, etalnru, etaulrn, etaulnr, etaurln, etaurnl, etaunlr, etaunrl, etarlun, etarlnu, etaruln, etarunl, etarnlu, etarnul, etanlur, etanlru, etanulr, etanurl, etanrlu, etanrul, etularn, etulanr, etulran, etulrna, etulnar, etulnra, etualrn, etualnr, etuarln, etuarnl, etuanlr, etuanrl, eturlan, eturlna, eturaln, eturanl, eturnla, eturnal, etunlar, etunlra, etunalr, etunarl, etunrla, etunral, etrlaun, etrlanu, etrluan, etrluna, etrlnau, etrlnua, etralun, etralnu, etrauln, etraunl, etranlu, etranul, etrulan, etrulna, etrualn, etruanl, etrunla, etrunal, etrnlau, etrnlua, etrnalu, etrnaul, etrnula, etrnual, etnlaur, etnlaru, etnluar, etnlura, etnlrau, etnlrua, etnalur, etnalru, etnaulr, etnaurl, etnarlu, etnarul, etnular, etnulra, etnualr, etnuarl, etnurla, etnural, etnrlau, etnrlua, etnralu, etnraul, etnrula, etnrual, nlauret, nlaurte, nlauert, nlauetr, nlautre, nlauter, nlaruet, nlarute, nlareut, nlaretu, nlartue, nlarteu, nlaeurt, nlaeutr, nlaerut, nlaertu, nlaetur, nlaetru, nlature, nlatuer, nlatrue, nlatreu, nlateur, nlateru, nluaret, nluarte, nluaert, nluaetr, nluatre, nluater, nluraet, nlurate, nlureat, nlureta, nlurtae, nlurtea, nlueart, nlueatr, nluerat, nluerta, nluetar, nluetra, nlutare, nlutaer, nlutrae, nlutrea, nlutear, nlutera, nlrauet, nlraute, nlraeut, nlraetu, nlratue, nlrateu, nlruaet, nlruate, nlrueat, nlrueta, nlrutae, nlrutea, nlreaut, nlreatu, nlreuat, nlreuta, nlretau, nlretua, nlrtaue, nlrtaeu, nlrtuae, nlrtuea, nlrteau, nlrteua, nleaurt, nleautr, nlearut, nleartu, nleatur, nleatru, nleuart, nleuatr, nleurat, nleurta, nleutar, nleutra, nleraut, nleratu, nleruat, nleruta, nlertau, nlertua, nletaur, nletaru, nletuar, nletura, nletrau, nletrua, nltaure, nltauer, nltarue, nltareu, nltaeur, nltaeru, nltuare, nltuaer, nlturae, nlturea, nltuear, nltuera, nltraue, nltraeu, nltruae, nltruea, nltreau, nltreua, nlteaur, nltearu, nlteuar, nlteura, nlterau, nlterua, naluret, nalurte, naluert, naluetr, nalutre, naluter, nalruet, nalrute, nalreut, nalretu, nalrtue, nalrteu, naleurt, naleutr, nalerut, nalertu, naletur, naletru, nalture, naltuer, naltrue, naltreu, nalteur, nalteru, naulret, naulrte, naulert, nauletr, naultre, naulter, naurlet, naurlte, naurelt, nauretl, naurtle, naurtel, nauelrt, naueltr, nauerlt, nauertl, nauetlr, nauetrl, nautlre, nautler, nautrle, nautrel, nautelr, nauterl, narluet, narlute, narleut, narletu, narltue, narlteu, narulet, narulte, naruelt, naruetl, narutle, narutel, narelut, nareltu, nareult, nareutl, naretlu, naretul, nartlue, nartleu, nartule, nartuel, nartelu, narteul, naelurt, naelutr, naelrut, naelrtu, naeltur, naeltru, naeulrt, naeultr, naeurlt, naeurtl, naeutlr, naeutrl, naerlut, naerltu, naerult, naerutl, naertlu, naertul, naetlur, naetlru, naetulr, naeturl, naetrlu, naetrul, natlure, natluer, natlrue, natlreu, natleur, natleru, natulre, natuler, naturle, naturel, natuelr, natuerl, natrlue, natrleu, natrule, natruel, natrelu, natreul, natelur, natelru, nateulr, nateurl, naterlu, naterul, nularet, nularte, nulaert, nulaetr, nulatre, nulater, nulraet, nulrate, nulreat, nulreta, nulrtae, nulrtea, nuleart, nuleatr, nulerat, nulerta, nuletar, nuletra, nultare, nultaer, nultrae, nultrea, nultear, nultera, nualret, nualrte, nualert, nualetr, nualtre, nualter, nuarlet, nuarlte, nuarelt, nuaretl, nuartle, nuartel, nuaelrt, nuaeltr, nuaerlt, nuaertl, nuaetlr, nuaetrl, nuatlre, nuatler, nuatrle, nuatrel, nuatelr, nuaterl, nurlaet, nurlate, nurleat, nurleta, nurltae, nurltea, nuralet, nuralte, nuraelt, nuraetl, nuratle, nuratel, nurelat, nurelta, nurealt, nureatl, nuretla, nuretal, nurtlae, nurtlea, nurtale, nurtael, nurtela, nurteal, nuelart, nuelatr, nuelrat, nuelrta, nueltar, nueltra, nuealrt, nuealtr, nuearlt, nueartl, nueatlr, nueatrl, nuerlat, nuerlta, nueralt, nueratl, nuertla, nuertal, nuetlar, nuetlra, nuetalr, nuetarl, nuetrla, nuetral, nutlare, nutlaer, nutlrae, nutlrea, nutlear, nutlera, nutalre, nutaler, nutarle, nutarel, nutaelr, nutaerl, nutrlae, nutrlea, nutrale, nutrael, nutrela, nutreal, nutelar, nutelra, nutealr, nutearl, nuterla, nuteral, nrlauet, nrlaute, nrlaeut, nrlaetu, nrlatue, nrlateu, nrluaet, nrluate, nrlueat, nrlueta, nrlutae, nrlutea, nrleaut, nrleatu, nrleuat, nrleuta, nrletau, nrletua, nrltaue, nrltaeu, nrltuae, nrltuea, nrlteau, nrlteua, nraluet, nralute, nraleut, nraletu, nraltue, nralteu, nraulet, nraulte, nrauelt, nrauetl, nrautle, nrautel, nraelut, nraeltu, nraeult, nraeutl, nraetlu, nraetul, nratlue, nratleu, nratule, nratuel, nratelu, nrateul, nrulaet, nrulate, nruleat, nruleta, nrultae, nrultea, nrualet, nrualte, nruaelt, nruaetl, nruatle, nruatel, nruelat, nruelta, nruealt, nrueatl, nruetla, nruetal, nrutlae, nrutlea, nrutale, nrutael, nrutela, nruteal, nrelaut, nrelatu, nreluat, nreluta, nreltau, nreltua, nrealut, nrealtu, nreault, nreautl, nreatlu, nreatul, nreulat, nreulta, nreualt, nreuatl, nreutla, nreutal, nretlau, nretlua, nretalu, nretaul, nretula, nretual, nrtlaue, nrtlaeu, nrtluae, nrtluea, nrtleau, nrtleua, nrtalue, nrtaleu, nrtaule, nrtauel, nrtaelu, nrtaeul, nrtulae, nrtulea, nrtuale, nrtuael, nrtuela, nrtueal, nrtelau, nrtelua, nrtealu, nrteaul, nrteula, nrteual, nelaurt, nelautr, nelarut, nelartu, nelatur, nelatru, neluart, neluatr, nelurat, nelurta, nelutar, nelutra, nelraut, nelratu, nelruat, nelruta, nelrtau, nelrtua, neltaur, neltaru, neltuar, neltura, neltrau, neltrua, nealurt, nealutr, nealrut, nealrtu, nealtur, nealtru, neaulrt, neaultr, neaurlt, neaurtl, neautlr, neautrl, nearlut, nearltu, nearult, nearutl, neartlu, neartul, neatlur, neatlru, neatulr, neaturl, neatrlu, neatrul, neulart, neulatr, neulrat, neulrta, neultar, neultra, neualrt, neualtr, neuarlt, neuartl, neuatlr, neuatrl, neurlat, neurlta, neuralt, neuratl, neurtla, neurtal, neutlar, neutlra, neutalr, neutarl, neutrla, neutral, nerlaut, nerlatu, nerluat, nerluta, nerltau, nerltua, neralut, neraltu, nerault, nerautl, neratlu, neratul, nerulat, nerulta, nerualt, neruatl, nerutla, nerutal, nertlau, nertlua, nertalu, nertaul, nertula, nertual, netlaur, netlaru, netluar, netlura, netlrau, netlrua, netalur, netalru, netaulr, netaurl, netarlu, netarul, netular, netulra, netualr, netuarl, neturla, netural, netrlau, netrlua, netralu, netraul, netrula, netrual, ntlaure, ntlauer, ntlarue, ntlareu, ntlaeur, ntlaeru, ntluare, ntluaer, ntlurae, ntlurea, ntluear, ntluera, ntlraue, ntlraeu, ntlruae, ntlruea, ntlreau, ntlreua, ntleaur, ntlearu, ntleuar, ntleura, ntlerau, ntlerua, ntalure, ntaluer, ntalrue, ntalreu, ntaleur, ntaleru, ntaulre, ntauler, ntaurle, ntaurel, ntauelr, ntauerl, ntarlue, ntarleu, ntarule, ntaruel, ntarelu, ntareul, ntaelur, ntaelru, ntaeulr, ntaeurl, ntaerlu, ntaerul, ntulare, ntulaer, ntulrae, ntulrea, ntulear, ntulera, ntualre, ntualer, ntuarle, ntuarel, ntuaelr, ntuaerl, nturlae, nturlea, nturale, nturael, nturela, ntureal, ntuelar, ntuelra, ntuealr, ntuearl, ntuerla, ntueral, ntrlaue, ntrlaeu, ntrluae, ntrluea, ntrleau, ntrleua, ntralue, ntraleu, ntraule, ntrauel, ntraelu, ntraeul, ntrulae, ntrulea, ntruale, ntruael, ntruela, ntrueal, ntrelau, ntrelua, ntrealu, ntreaul, ntreula, ntreual, ntelaur, ntelaru, nteluar, ntelura, ntelrau, ntelrua, ntealur, ntealru, nteaulr, nteaurl, ntearlu, ntearul, nteular, nteulra, nteualr, nteuarl, nteurla, nteural, nterlau, nterlua, nteralu, nteraul, nterula, nterual, tlauren, tlaurne, tlauern, tlauenr, tlaunre, tlauner, tlaruen, tlarune, tlareun, tlarenu, tlarnue, tlarneu, tlaeurn, tlaeunr, tlaerun, tlaernu, tlaenur, tlaenru, tlanure, tlanuer, tlanrue, tlanreu, tlaneur, tlaneru, tluaren, tluarne, tluaern, tluaenr, tluanre, tluaner, tluraen, tlurane, tlurean, tlurena, tlurnae, tlurnea, tluearn, tlueanr, tlueran, tluerna, tluenar, tluenra, tlunare, tlunaer, tlunrae, tlunrea, tlunear, tlunera, tlrauen, tlraune, tlraeun, tlraenu, tlranue, tlraneu, tlruaen, tlruane, tlruean, tlruena, tlrunae, tlrunea, tlreaun, tlreanu, tlreuan, tlreuna, tlrenau, tlrenua, tlrnaue, tlrnaeu, tlrnuae, tlrnuea, tlrneau, tlrneua, tleaurn, tleaunr, tlearun, tlearnu, tleanur, tleanru, tleuarn, tleuanr, tleuran, tleurna, tleunar, tleunra, tleraun, tleranu, tleruan, tleruna, tlernau, tlernua, tlenaur, tlenaru, tlenuar, tlenura, tlenrau, tlenrua, tlnaure, tlnauer, tlnarue, tlnareu, tlnaeur, tlnaeru, tlnuare, tlnuaer, tlnurae, tlnurea, tlnuear, tlnuera, tlnraue, tlnraeu, tlnruae, tlnruea, tlnreau, tlnreua, tlneaur, tlnearu, tlneuar, tlneura, tlnerau, tlnerua, taluren, talurne, taluern, taluenr, talunre, taluner, talruen, talrune, talreun, talrenu, talrnue, talrneu, taleurn, taleunr, talerun, talernu, talenur, talenru, talnure, talnuer, talnrue, talnreu, talneur, talneru, taulren, taulrne, taulern, taulenr, taulnre, taulner, taurlen, taurlne, taureln, taurenl, taurnle, taurnel, tauelrn, tauelnr, tauerln, tauernl, tauenlr, tauenrl, taunlre, taunler, taunrle, taunrel, taunelr, taunerl, tarluen, tarlune, tarleun, tarlenu, tarlnue, tarlneu, tarulen, tarulne, tarueln, taruenl, tarunle, tarunel, tarelun, tarelnu, tareuln, tareunl, tarenlu, tarenul, tarnlue, tarnleu, tarnule, tarnuel, tarnelu, tarneul, taelurn, taelunr, taelrun, taelrnu, taelnur, taelnru, taeulrn, taeulnr, taeurln, taeurnl, taeunlr, taeunrl, taerlun, taerlnu, taeruln, taerunl, taernlu, taernul, taenlur, taenlru, taenulr, taenurl, taenrlu, taenrul, tanlure, tanluer, tanlrue, tanlreu, tanleur, tanleru, tanulre, tanuler, tanurle, tanurel, tanuelr, tanuerl, tanrlue, tanrleu, tanrule, tanruel, tanrelu, tanreul, tanelur, tanelru, taneulr, taneurl, tanerlu, tanerul, tularen, tularne, tulaern, tulaenr, tulanre, tulaner, tulraen, tulrane, tulrean, tulrena, tulrnae, tulrnea, tulearn, tuleanr, tuleran, tulerna, tulenar, tulenra, tulnare, tulnaer, tulnrae, tulnrea, tulnear, tulnera, tualren, tualrne, tualern, tualenr, tualnre, tualner, tuarlen, tuarlne, tuareln, tuarenl, tuarnle, tuarnel, tuaelrn, tuaelnr, tuaerln, tuaernl, tuaenlr, tuaenrl, tuanlre, tuanler, tuanrle, tuanrel, tuanelr, tuanerl, turlaen, turlane, turlean, turlena, turlnae, turlnea, turalen, turalne, turaeln, turaenl, turanle, turanel, turelan, turelna, turealn, tureanl, turenla, turenal, turnlae, turnlea, turnale, turnael, turnela, turneal, tuelarn, tuelanr, tuelran, tuelrna, tuelnar, tuelnra, tuealrn, tuealnr, tuearln, tuearnl, tueanlr, tueanrl, tuerlan, tuerlna, tueraln, tueranl, tuernla, tuernal, tuenlar, tuenlra, tuenalr, tuenarl, tuenrla, tuenral, tunlare, tunlaer, tunlrae, tunlrea, tunlear, tunlera, tunalre, tunaler, tunarle, tunarel, tunaelr, tunaerl, tunrlae, tunrlea, tunrale, tunrael, tunrela, tunreal, tunelar, tunelra, tunealr, tunearl, tunerla, tuneral, trlauen, trlaune, trlaeun, trlaenu, trlanue, trlaneu, trluaen, trluane, trluean, trluena, trlunae, trlunea, trleaun, trleanu, trleuan, trleuna, trlenau, trlenua, trlnaue, trlnaeu, trlnuae, trlnuea, trlneau, trlneua, traluen, tralune, traleun, tralenu, tralnue, tralneu, traulen, traulne, traueln, trauenl, traunle, traunel, traelun, traelnu, traeuln, traeunl, traenlu, traenul, tranlue, tranleu, tranule, tranuel, tranelu, traneul, trulaen, trulane, trulean, trulena, trulnae, trulnea, trualen, trualne, truaeln, truaenl, truanle, truanel, truelan, truelna, truealn, trueanl, truenla, truenal, trunlae, trunlea, trunale, trunael, trunela, truneal, trelaun, trelanu, treluan, treluna, trelnau, trelnua, trealun, trealnu, treauln, treaunl, treanlu, treanul, treulan, treulna, treualn, treuanl, treunla, treunal, trenlau, trenlua, trenalu, trenaul, trenula, trenual, trnlaue, trnlaeu, trnluae, trnluea, trnleau, trnleua, trnalue, trnaleu, trnaule, trnauel, trnaelu, trnaeul, trnulae, trnulea, trnuale, trnuael, trnuela, trnueal, trnelau, trnelua, trnealu, trneaul, trneula, trneual, telaurn, telaunr, telarun, telarnu, telanur, telanru, teluarn, teluanr, teluran, telurna, telunar, telunra, telraun, telranu, telruan, telruna, telrnau, telrnua, telnaur, telnaru, telnuar, telnura, telnrau, telnrua, tealurn, tealunr, tealrun, tealrnu, tealnur, tealnru, teaulrn, teaulnr, teaurln, teaurnl, teaunlr, teaunrl, tearlun, tearlnu, tearuln, tearunl, tearnlu, tearnul, teanlur, teanlru, teanulr, teanurl, teanrlu, teanrul, teularn, teulanr, teulran, teulrna, teulnar, teulnra, teualrn, teualnr, teuarln, teuarnl, teuanlr, teuanrl, teurlan, teurlna, teuraln, teuranl, teurnla, teurnal, teunlar, teunlra, teunalr, teunarl, teunrla, teunral, terlaun, terlanu, terluan, terluna, terlnau, terlnua, teralun, teralnu, terauln, teraunl, teranlu, teranul, terulan, terulna, terualn, teruanl, terunla, terunal, ternlau, ternlua, ternalu, ternaul, ternula, ternual, tenlaur, tenlaru, tenluar, tenlura, tenlrau, tenlrua, tenalur, tenalru, tenaulr, tenaurl, tenarlu, tenarul, tenular, tenulra, tenualr, tenuarl, tenurla, tenural, tenrlau, tenrlua, tenralu, tenraul, tenrula, tenrual, tnlaure, tnlauer, tnlarue, tnlareu, tnlaeur, tnlaeru, tnluare, tnluaer, tnlurae, tnlurea, tnluear, tnluera, tnlraue, tnlraeu, tnlruae, tnlruea, tnlreau, tnlreua, tnleaur, tnlearu, tnleuar, tnleura, tnlerau, tnlerua, tnalure, tnaluer, tnalrue, tnalreu, tnaleur, tnaleru, tnaulre, tnauler, tnaurle, tnaurel, tnauelr, tnauerl, tnarlue, tnarleu, tnarule, tnaruel, tnarelu, tnareul, tnaelur, tnaelru, tnaeulr, tnaeurl, tnaerlu, tnaerul, tnulare, tnulaer, tnulrae, tnulrea, tnulear, tnulera, tnualre, tnualer, tnuarle, tnuarel, tnuaelr, tnuaerl, tnurlae, tnurlea, tnurale, tnurael, tnurela, tnureal, tnuelar, tnuelra, tnuealr, tnuearl, tnuerla, tnueral, tnrlaue, tnrlaeu, tnrluae, tnrluea, tnrleau, tnrleua, tnralue, tnraleu, tnraule, tnrauel, tnraelu, tnraeul, tnrulae, tnrulea, tnruale, tnruael, tnruela, tnrueal, tnrelau, tnrelua, tnrealu, tnreaul, tnreula, tnreual, tnelaur, tnelaru, tneluar, tnelura, tnelrau, tnelrua, tnealur, tnealru, tneaulr, tneaurl, tnearlu, tnearul, tneular, tneulra, tneualr, tneuarl, tneurla, tneural, tnerlau, tnerlua, tneralu, tneraul, tnerula, tnerual, 
In [17]:
def fibonacci():
    """Ein Fibonacci-Zahlen-Generator"""
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

def firstn(g, n):
    for i in range(n):
        yield next(g)

print(list(firstn(fibonacci(), 30)))
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229]
In [ ]:
`